pkg-pr-new 0.0.21 → 0.0.23

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.
Files changed (3) hide show
  1. package/dist/index.js +24 -11
  2. package/index.ts +49 -28
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -2973,7 +2973,7 @@ import ignore from "ignore";
2973
2973
  // package.json
2974
2974
  var package_default = {
2975
2975
  name: "pkg-pr-new",
2976
- version: "0.0.21",
2976
+ version: "0.0.23",
2977
2977
  description: "",
2978
2978
  main: "index.js",
2979
2979
  type: "module",
@@ -3113,8 +3113,18 @@ var main = defineCommand({
3113
3113
  }
3114
3114
  },
3115
3115
  run: async ({ args }) => {
3116
- const paths = (args._.length ? args._ : ["."]).flatMap((p2) => globSync([p2], { expandDirectories: false, onlyDirectories: true })).map((p2) => path.resolve(p2.trim()));
3117
- const templates = (typeof args.template === "string" ? [args.template] : [...args.template || []]).flatMap((p2) => globSync([p2], { expandDirectories: false, onlyDirectories: true })).map((p2) => path.resolve(p2.trim()));
3116
+ const paths = (args._.length ? args._.flatMap(
3117
+ (p2) => globSync([p2], {
3118
+ expandDirectories: false,
3119
+ onlyDirectories: true
3120
+ })
3121
+ ) : ["."]).map((p2) => path.resolve(p2.trim()));
3122
+ const templates = (typeof args.template === "string" ? [args.template] : [...args.template || []]).flatMap(
3123
+ (p2) => globSync([p2], {
3124
+ expandDirectories: false,
3125
+ onlyDirectories: true
3126
+ })
3127
+ ).map((p2) => path.resolve(p2.trim()));
3118
3128
  const formData = new FormData();
3119
3129
  const isCompact = !!args.compact;
3120
3130
  const isPnpm = !!args.pnpm;
@@ -3184,14 +3194,13 @@ var main = defineCommand({
3184
3194
  `/${owner}/${repo}/${pJson.name}@${abbreviatedSha}`,
3185
3195
  apiUrl
3186
3196
  ).href;
3187
- deps.set(
3188
- pJson.name,
3189
- depUrl
3190
- );
3197
+ deps.set(pJson.name, depUrl);
3191
3198
  realDeps?.set(pJson.name, pJson.version ?? depUrl);
3192
3199
  const resource = await fetch(depUrl);
3193
3200
  if (resource.ok) {
3194
- console.warn(`${pJson.name}@${abbreviatedSha} was already published on ${depUrl}`);
3201
+ console.warn(
3202
+ `${pJson.name}@${abbreviatedSha} was already published on ${depUrl}`
3203
+ );
3195
3204
  }
3196
3205
  outputMetadata.packages.push({
3197
3206
  name: pJson.name,
@@ -3276,7 +3285,9 @@ var main = defineCommand({
3276
3285
  const shasums = {};
3277
3286
  for (const p2 of paths) {
3278
3287
  if (!await hasPackageJson(p2)) {
3279
- console.warn(`skipping ${p2} because there's no package.json file`);
3288
+ console.warn(
3289
+ `skipping ${p2} because there's no package.json file`
3290
+ );
3280
3291
  continue;
3281
3292
  }
3282
3293
  const pJsonPath = path.resolve(p2, "package.json");
@@ -3297,7 +3308,9 @@ var main = defineCommand({
3297
3308
  );
3298
3309
  shasums[pJson.name] = shasum;
3299
3310
  console.warn(`shasum for ${pJson.name}(${filename}): ${shasum}`);
3300
- const outputPkg = outputMetadata.packages.find((p3) => p3.name === pJson.name);
3311
+ const outputPkg = outputMetadata.packages.find(
3312
+ (p3) => p3.name === pJson.name
3313
+ );
3301
3314
  outputPkg.shasum = shasum;
3302
3315
  const file = await fs.readFile(path.resolve(p2, filename));
3303
3316
  const blob = new Blob([file], {
@@ -3424,4 +3437,4 @@ async function hasPackageJson(p2) {
3424
3437
  return false;
3425
3438
  }
3426
3439
  }
3427
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4yLjMvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9jb3JlLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLjA2YWQ4YTY0Lm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3V0aWxzLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L2NodW5rcy9wcm9tcHQubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMi4zL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3Qvc2hhcmVkL2NvbnNvbGEuMzZjMDAzNGYubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMi4zL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3QvaW5kZXgubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaXR0eUAwLjEuNi9ub2RlX21vZHVsZXMvY2l0dHkvZGlzdC9pbmRleC5tanMiLCAiLi4vaW5kZXgudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL29oYXNoQDEuMS4zL25vZGVfbW9kdWxlcy9vaGFzaC9kaXN0L2luZGV4Lm1qcyIsICIuLi8uLi91dGlscy9pbmRleC50cyIsICIuLi9wYWNrYWdlLmpzb24iLCAiLi4vdGVtcGxhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IExvZ0xldmVscyA9IHtcbiAgc2lsZW50OiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gIGZhdGFsOiAwLFxuICBlcnJvcjogMCxcbiAgd2FybjogMSxcbiAgbG9nOiAyLFxuICBpbmZvOiAzLFxuICBzdWNjZXNzOiAzLFxuICBmYWlsOiAzLFxuICByZWFkeTogMyxcbiAgc3RhcnQ6IDMsXG4gIGJveDogMyxcbiAgZGVidWc6IDQsXG4gIHRyYWNlOiA1LFxuICB2ZXJib3NlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbn07XG5jb25zdCBMb2dUeXBlcyA9IHtcbiAgLy8gU2lsZW50XG4gIHNpbGVudDoge1xuICAgIGxldmVsOiAtMVxuICB9LFxuICAvLyBMZXZlbCAwXG4gIGZhdGFsOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5mYXRhbFxuICB9LFxuICBlcnJvcjoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZXJyb3JcbiAgfSxcbiAgLy8gTGV2ZWwgMVxuICB3YXJuOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy53YXJuXG4gIH0sXG4gIC8vIExldmVsIDJcbiAgbG9nOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5sb2dcbiAgfSxcbiAgLy8gTGV2ZWwgM1xuICBpbmZvOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5pbmZvXG4gIH0sXG4gIHN1Y2Nlc3M6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLnN1Y2Nlc3NcbiAgfSxcbiAgZmFpbDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZmFpbFxuICB9LFxuICByZWFkeToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBzdGFydDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBib3g6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLmluZm9cbiAgfSxcbiAgLy8gTGV2ZWwgNFxuICBkZWJ1Zzoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZGVidWdcbiAgfSxcbiAgLy8gTGV2ZWwgNVxuICB0cmFjZToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMudHJhY2VcbiAgfSxcbiAgLy8gVmVyYm9zZVxuICB2ZXJib3NlOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy52ZXJib3NlXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBfZGVmdShiYXNlT2JqZWN0LCBkZWZhdWx0cywgbmFtZXNwYWNlID0gXCIuXCIsIG1lcmdlcikge1xuICBpZiAoIWlzT2JqZWN0KGRlZmF1bHRzKSkge1xuICAgIHJldHVybiBfZGVmdShiYXNlT2JqZWN0LCB7fSwgbmFtZXNwYWNlLCBtZXJnZXIpO1xuICB9XG4gIGNvbnN0IG9iamVjdCA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzKTtcbiAgZm9yIChjb25zdCBrZXkgaW4gYmFzZU9iamVjdCkge1xuICAgIGlmIChrZXkgPT09IFwiX19wcm90b19fXCIgfHwga2V5ID09PSBcImNvbnN0cnVjdG9yXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGJhc2VPYmplY3Rba2V5XTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChtZXJnZXIgJiYgbWVyZ2VyKG9iamVjdCwga2V5LCB2YWx1ZSwgbmFtZXNwYWNlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KG9iamVjdFtrZXldKSkge1xuICAgICAgb2JqZWN0W2tleV0gPSBbLi4udmFsdWUsIC4uLm9iamVjdFtrZXldXTtcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSAmJiBpc09iamVjdChvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gX2RlZnUoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvYmplY3Rba2V5XSxcbiAgICAgICAgKG5hbWVzcGFjZSA/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/IGF3YWl0IGNtZC5tZXRhKCkgOiBhd2FpdCBjbWQubWV0YTtcbiAgICAgIGlmICghbWV0YT8udmVyc2lvbikge1xuICAgICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoXCJObyB2ZXJzaW9uIHNwZWNpZmllZFwiLCBcIkVfTk9fVkVSU0lPTlwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGEubG9nKG1ldGEudmVyc2lvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoY21kLCB7IHJhd0FyZ3MgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGlzQ0xJRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIENMSUVycm9yO1xuICAgIGlmICghaXNDTElFcnJvcikge1xuICAgICAgY29uc29sYS5lcnJvcihlcnJvciwgXCJcXG5cIik7XG4gICAgfVxuICAgIGlmIChpc0NMSUVycm9yKSB7XG4gICAgICBhd2FpdCBzaG93VXNhZ2UkMSguLi5hd2FpdCByZXNvbHZlU3ViQ29tbWFuZChjbWQsIHJhd0FyZ3MpKTtcbiAgICB9XG4gICAgY29uc29sYS5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZU1haW4oY21kKSB7XG4gIHJldHVybiAob3B0cyA9IHt9KSA9PiBydW5NYWluKGNtZCwgb3B0cyk7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZU1haW4sIGRlZmluZUNvbW1hbmQsIHBhcnNlQXJncywgcmVuZGVyVXNhZ2UsIHJ1bkNvbW1hbmQsIHJ1bk1haW4sIHNob3dVc2FnZSB9O1xuIiwgImltcG9ydCB7IGRlZmluZUNvbW1hbmQsIHJ1bk1haW4gfSBmcm9tIFwiY2l0dHlcIjtcbmltcG9ydCBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0XCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGV6U3Bhd24gZnJvbSBcIkBqc2RldnRvb2xzL2V6LXNwYXduXCI7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSBcIm9oYXNoXCI7XG5pbXBvcnQgZnNTeW5jIGZyb20gXCJmc1wiO1xuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgZGV0ZWN0IH0gZnJvbSBcInBhY2thZ2UtbWFuYWdlci1kZXRlY3RvclwiO1xuaW1wb3J0IHsgZ2V0UGFja2FnZU1hbmlmZXN0LCB0eXBlIFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gXCJxdWVyeS1yZWdpc3RyeVwiO1xuaW1wb3J0IHR5cGUgeyBDb21tZW50IH0gZnJvbSBcIkBwa2ctcHItbmV3L3V0aWxzXCI7XG5pbXBvcnQge1xuICBhYmJyZXZpYXRlQ29tbWl0SGFzaCxcbiAgZXh0cmFjdE93bmVyQW5kUmVwbyxcbiAgZXh0cmFjdFJlcG9zaXRvcnksXG59IGZyb20gXCJAcGtnLXByLW5ldy91dGlsc1wiO1xuaW1wb3J0IHsgZ2xvYiwgZ2xvYlN5bmMgfSBmcm9tIFwidGlueWdsb2JieVwiO1xuaW1wb3J0IGlnbm9yZSBmcm9tIFwiaWdub3JlXCI7XG5pbXBvcnQgXCIuL2Vudmlyb25tZW50c1wiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi9wYWNrYWdlLmpzb25cIiB3aXRoIHsgdHlwZTogXCJqc29uXCIgfTtcbmltcG9ydCB7IGlzQmluYXJ5RmlsZSB9IGZyb20gXCJpc2JpbmFyeWZpbGVcIjtcbmltcG9ydCB7IHJlYWRQYWNrYWdlSlNPTiwgd3JpdGVQYWNrYWdlSlNPTiB9IGZyb20gXCJwa2ctdHlwZXNcIjtcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRUZW1wbGF0ZSB9IGZyb20gXCIuL3RlbXBsYXRlXCI7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgdmFyIEFQSV9VUkw6IHN0cmluZztcbn1cblxudHlwZSBPdXRwdXRNZXRhZGF0YSA9IHtcbiAgcGFja2FnZXM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgc2hhc3VtOiBzdHJpbmc7XG4gIH1bXTtcbiAgdGVtcGxhdGVzOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICB9W107XG59O1xuXG5jb25zdCBhcGlVcmwgPSBwcm9jZXNzLmVudi5BUElfVVJMID8/IEFQSV9VUkw7XG5jb25zdCBwdWJsaXNoVXJsID0gbmV3IFVSTChcIi9wdWJsaXNoXCIsIGFwaVVybCk7XG5cbmNvbnN0IG1haW4gPSBkZWZpbmVDb21tYW5kKHtcbiAgbWV0YToge1xuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5hbWU6IFwic3RhY2tibGl0elwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgQ0xJIGZvciBwa2cucHIubmV3IChDb250aW51b3VzIFJlbGVhc2VzKVwiLFxuICB9LFxuICBzdWJDb21tYW5kczoge1xuICAgIHB1Ymxpc2g6ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBjb21wYWN0OiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImNvbXBhY3QgdXJscy4gVGhlIHNob3J0ZXN0IGZvcm0gb2YgdXJscyBsaWtlIHBrZy5wci5uZXcvdGlueWJlbmNoQGE4MzJhNTUpXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwZWVyRGVwczoge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJoYW5kbGUgcGVlckRlcGVuZGVuY2llcyBieSBzZXR0aW5nIHRoZSB3b3Jrc3BhY2UgdmVyc2lvbiBpbnN0ZWFkIG9mIHdoYXQgaGFzIGJlZW4gc2V0IGluIHRoZSBwZWVyRGVwcyBpdHNlbGYuIC0tcGVlckRlcHMgbm90IGJlaW5nIHRydWUgd291bGQgbGVhdmUgcGVlckRlcGVuZGVuY2llcyB0byB0aGUgcGFja2FnZSBtYW5hZ2VyIGl0c2VsZiAobnBtLCBwbnBtKVwiLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwbnBtOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcInVzZSBgcG5wbSBwYWNrYCBpbnN0ZWFkIG9mIGBucG0gcGFjayAtLWpzb25gXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0ZW1wbGF0ZToge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImdlbmVyYXRlIHN0YWNrYmxpdHogdGVtcGxhdGVzIG91dCBvZiBkaXJlY3RvcmllcyBpbiB0aGUgY3VycmVudCByZXBvIHdpdGggdGhlIG5ldyBidWlsdCBwYWNrYWdlc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tbWVudDoge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIiwgLy8gXCJvZmZcIiwgXCJjcmVhdGVcIiwgXCJ1cGRhdGVcIiAoZGVmYXVsdClcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgXCJvZmZcIiBmb3Igbm8gY29tbWVudHMgKHNpbGVudCBtb2RlKS4gXCJjcmVhdGVcIiBmb3IgY29tbWVudCBvbiBlYWNoIHB1Ymxpc2guIFwidXBkYXRlXCIgZm9yIG9uZSBjb21tZW50IGFjcm9zcyB0aGUgcHVsbCByZXF1ZXN0IHdpdGggZWRpdHMgb24gZWFjaCBwdWJsaXNoIChkZWZhdWx0KWAsXG4gICAgICAgICAgICBkZWZhdWx0OiBcInVwZGF0ZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvbmx5LXRlbXBsYXRlc1wiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgZ2VuZXJhdGUgb25seSBzdGFja2JsaXR6IHRlbXBsYXRlc2AsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGpzb246IHtcbiAgICAgICAgICAgIHR5cGU6IFwibWl4ZWRcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgU2F2ZSBtZXRhZGF0YSB0byBhIEpTT04gZmlsZS4gSWYgdHJ1ZSwgbG9nIHRoZSBvdXRwdXQgZm9yIHBpcGluZy4gSWYgYSBzdHJpbmcsIHNhdmUgdGhlIG91dHB1dCB0byB0aGUgc3BlY2lmaWVkIGZpbGUgcGF0aC5gLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJ1bjogYXN5bmMgKHsgYXJncyB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aHMgPSAoYXJncy5fLmxlbmd0aCA/IGFyZ3MuXyA6IFtcIi5cIl0pXG4gICAgICAgICAgICAuZmxhdE1hcCgocCkgPT4gZ2xvYlN5bmMoW3BdLCB7IGV4cGFuZERpcmVjdG9yaWVzOiBmYWxzZSwgb25seURpcmVjdG9yaWVzOiB0cnVlIH0pKVxuICAgICAgICAgICAgLm1hcCgocCkgPT4gcGF0aC5yZXNvbHZlKHAudHJpbSgpKSk7XG5cbiAgICAgICAgICBjb25zdCB0ZW1wbGF0ZXMgPSAoXG4gICAgICAgICAgICB0eXBlb2YgYXJncy50ZW1wbGF0ZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgICAgICA/IFthcmdzLnRlbXBsYXRlXVxuICAgICAgICAgICAgICA6IChbLi4uKGFyZ3MudGVtcGxhdGUgfHwgW10pXSBhcyBzdHJpbmdbXSlcbiAgICAgICAgICApXG4gICAgICAgICAgICAuZmxhdE1hcCgocCkgPT4gZ2xvYlN5bmMoW3BdLCB7IGV4cGFuZERpcmVjdG9yaWVzOiBmYWxzZSwgb25seURpcmVjdG9yaWVzOiB0cnVlIH0pKVxuICAgICAgICAgICAgLm1hcCgocCkgPT4gcGF0aC5yZXNvbHZlKHAudHJpbSgpKSk7XG5cbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgY29uc3QgaXNDb21wYWN0ID0gISFhcmdzLmNvbXBhY3Q7XG4gICAgICAgICAgY29uc3QgaXNQbnBtID0gISFhcmdzLnBucG07XG4gICAgICAgICAgY29uc3QgaXNQZWVyRGVwc0VuYWJsZWQgPSAhIWFyZ3MucGVlckRlcHNcbiAgICAgICAgICBjb25zdCBpc09ubHlUZW1wbGF0ZXMgPSAhIWFyZ3NbJ29ubHktdGVtcGxhdGVzJ11cblxuICAgICAgICAgIGNvbnN0IGNvbW1lbnQ6IENvbW1lbnQgPSBhcmdzLmNvbW1lbnQgYXMgQ29tbWVudDtcblxuICAgICAgICAgIGlmICghcHJvY2Vzcy5lbnYuVEVTVCAmJiBwcm9jZXNzLmVudi5HSVRIVUJfQUNUSU9OUyAhPT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiQ29udGludW91cyBSZWxlYXNlcyBhcmUgb25seSBhdmFpbGFibGUgaW4gR2l0aHViIEFjdGlvbnMuXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIEdJVEhVQl9SRVBPU0lUT1JZLFxuICAgICAgICAgICAgR0lUSFVCX1JVTl9JRCxcbiAgICAgICAgICAgIEdJVEhVQl9SVU5fQVRURU1QVCxcbiAgICAgICAgICAgIEdJVEhVQl9BQ1RPUl9JRCxcbiAgICAgICAgICB9ID0gcHJvY2Vzcy5lbnY7XG5cbiAgICAgICAgICBjb25zdCBbb3duZXIsIHJlcG9dID0gR0lUSFVCX1JFUE9TSVRPUlkuc3BsaXQoXCIvXCIpO1xuXG4gICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICBvd25lcixcbiAgICAgICAgICAgIHJlcG8sXG4gICAgICAgICAgICBydW46IE51bWJlcihHSVRIVUJfUlVOX0lEKSxcbiAgICAgICAgICAgIGF0dGVtcHQ6IE51bWJlcihHSVRIVUJfUlVOX0FUVEVNUFQpLFxuICAgICAgICAgICAgYWN0b3I6IE51bWJlcihHSVRIVUJfQUNUT1JfSUQpLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBrZXkgPSBoYXNoKG1ldGFkYXRhKTtcblxuICAgICAgICAgIGNvbnN0IGNoZWNrUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChuZXcgVVJMKFwiL2NoZWNrXCIsIGFwaVVybCksIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgIG93bmVyLFxuICAgICAgICAgICAgICByZXBvLFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmICghY2hlY2tSZXNwb25zZS5vaykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihhd2FpdCBjaGVja1Jlc3BvbnNlLnRleHQoKSk7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBzaGEgfSA9IGF3YWl0IGNoZWNrUmVzcG9uc2UuanNvbigpO1xuICAgICAgICAgIGNvbnN0IGFiYnJldmlhdGVkU2hhID0gYWJicmV2aWF0ZUNvbW1pdEhhc2goc2hhKTtcblxuICAgICAgICAgIGNvbnN0IGRlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7IC8vIHBrZy5wci5uZXcgdmVyc2lvbnMgb2YgdGhlIHBhY2thZ2VcbiAgICAgICAgICBjb25zdCByZWFsRGVwczogTWFwPHN0cmluZywgc3RyaW5nPiB8IG51bGwgPSBpc1BlZXJEZXBzRW5hYmxlZCA/IG5ldyBNYXAoKSA6IG51bGwgLy8gcmVhbCB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSwgdXNlZnVsIGZvciBwZWVyRGVwZW5kZW5jaWVzXG5cbiAgICAgICAgICBjb25zdCBwcmludEpzb24gPSB0eXBlb2YgYXJncy5qc29uID09PSAnYm9vbGVhbic7XG4gICAgICAgICAgY29uc3Qgc2F2ZUpzb24gPSB0eXBlb2YgYXJncy5qc29uID09PSAnc3RyaW5nJztcbiAgICAgICAgICBjb25zdCBqc29uRmlsZVBhdGggPSBzYXZlSnNvbiA/IGFyZ3MuanNvbiA6ICcnO1xuICAgICAgICAgIGNvbnN0IG91dHB1dE1ldGFkYXRhOiBPdXRwdXRNZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHBhY2thZ2VzOiBbXSxcbiAgICAgICAgICAgIHRlbXBsYXRlczogW10sXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgaWYgKCEoYXdhaXQgaGFzUGFja2FnZUpzb24ocCkpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpTT04ocEpzb25QYXRoKTtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbi5uYW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJuYW1lXCIgZmllbGQgaW4gJHtwSnNvblBhdGh9IHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocEpzb24ucHJpdmF0ZSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzQ29tcGFjdCkge1xuICAgICAgICAgICAgICBhd2FpdCB2ZXJpZnlDb21wYWN0TW9kZShwSnNvbi5uYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGVwVXJsID0gbmV3IFVSTChcbiAgICAgICAgICAgICAgYC8ke293bmVyfS8ke3JlcG99LyR7cEpzb24ubmFtZX1AJHthYmJyZXZpYXRlZFNoYX1gLFxuICAgICAgICAgICAgICBhcGlVcmwsXG4gICAgICAgICAgICApLmhyZWZcbiAgICAgICAgICAgIGRlcHMuc2V0KFxuICAgICAgICAgICAgICBwSnNvbi5uYW1lLFxuICAgICAgICAgICAgICBkZXBVcmwsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVhbERlcHM/LnNldChwSnNvbi5uYW1lLCBwSnNvbi52ZXJzaW9uID8/IGRlcFVybClcblxuICAgICAgICAgICAgY29uc3QgcmVzb3VyY2UgPSBhd2FpdCBmZXRjaChkZXBVcmwpXG4gICAgICAgICAgICBpZiAocmVzb3VyY2Uub2spIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGAke3BKc29uLm5hbWV9QCR7YWJicmV2aWF0ZWRTaGF9IHdhcyBhbHJlYWR5IHB1Ymxpc2hlZCBvbiAke2RlcFVybH1gKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDb2xsZWN0IHBhY2thZ2UgbWV0YWRhdGFcbiAgICAgICAgICAgIG91dHB1dE1ldGFkYXRhLnBhY2thZ2VzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBwSnNvbi5uYW1lLFxuICAgICAgICAgICAgICB1cmw6IGRlcFVybCxcbiAgICAgICAgICAgICAgc2hhc3VtOiBcIlwiLCAvLyB3aWxsIGJlIGZpbGxlZCBsYXRlclxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChjb25zdCB0ZW1wbGF0ZURpciBvZiB0ZW1wbGF0ZXMpIHtcbiAgICAgICAgICAgIGlmICghKGF3YWl0IGhhc1BhY2thZ2VKc29uKHRlbXBsYXRlRGlyKSkpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBza2lwcGluZyAke3RlbXBsYXRlRGlyfSBiZWNhdXNlIHRoZXJlJ3Mgbm8gcGFja2FnZS5qc29uIGZpbGVgLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBKc29uUGF0aCA9IHBhdGgucmVzb2x2ZSh0ZW1wbGF0ZURpciwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSlNPTihwSnNvblBhdGgpO1xuXG4gICAgICAgICAgICBpZiAoIXBKc29uLm5hbWUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIm5hbWVcIiBmaWVsZCBpbiAke3BKc29uUGF0aH0gc2hvdWxkIGJlIGRlZmluZWRgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwicHJlcGFyaW5nIHRlbXBsYXRlOlwiLCBwSnNvbi5uYW1lKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdG9yZSA9IGF3YWl0IHdyaXRlRGVwcyh0ZW1wbGF0ZURpciwgZGVwcywgcmVhbERlcHMpO1xuXG4gICAgICAgICAgICBjb25zdCBnaXRpZ25vcmVQYXRoID0gcGF0aC5qb2luKHRlbXBsYXRlRGlyLCBcIi5naXRpZ25vcmVcIik7XG4gICAgICAgICAgICBjb25zdCBpZyA9IGlnbm9yZSgpXG4gICAgICAgICAgICAgIC5hZGQoXCJub2RlX21vZHVsZXNcIilcbiAgICAgICAgICAgICAgLmFkZChcIi5naXRcIik7XG5cbiAgICAgICAgICAgIGlmIChmc1N5bmMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgICAgICAgICAgICBjb25zdCBnaXRpZ25vcmVDb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZ2l0aWdub3JlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICBpZy5hZGQoZ2l0aWdub3JlQ29udGVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYihbXCIqKi8qXCJdLCB7XG4gICAgICAgICAgICAgIGN3ZDogdGVtcGxhdGVEaXIsXG4gICAgICAgICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgICAgICAgb25seUZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzJywgJy5naXQnXSwgLy8gYWx3YXlzIGlnbm9yZSBub2RlX21vZHVsZXMgYW5kIC5naXRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEZpbGVzID0gZmlsZXMuZmlsdGVyKChmaWxlKSA9PiAhaWcuaWdub3JlcyhmaWxlKSk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgZmlsdGVyZWRGaWxlcykge1xuICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKHRlbXBsYXRlRGlyLCBmaWxlUGF0aCkpO1xuICAgICAgICAgICAgICBjb25zdCBpc0JpbmFyeSA9IGF3YWl0IGlzQmluYXJ5RmlsZShmaWxlKTtcbiAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaWxlLmJ1ZmZlcl0sIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgICAgICAgIGB0ZW1wbGF0ZToke3BKc29uLm5hbWV9OiR7ZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVQYXRoKX1gLFxuICAgICAgICAgICAgICAgIGlzQmluYXJ5ID8gYmxvYiA6IGF3YWl0IGJsb2IudGV4dCgpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgcmVzdG9yZSgpO1xuXG4gICAgICAgICAgICAvLyBDb2xsZWN0IHRlbXBsYXRlIG1ldGFkYXRhXG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZVVybCA9IG5ldyBVUkwoXG4gICAgICAgICAgICAgIGAvJHtvd25lcn0vJHtyZXBvfS90ZW1wbGF0ZS8ke3BKc29uLm5hbWV9YCxcbiAgICAgICAgICAgICAgYXBpVXJsLFxuICAgICAgICAgICAgKS5ocmVmO1xuICAgICAgICAgICAgb3V0cHV0TWV0YWRhdGEudGVtcGxhdGVzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBwSnNvbi5uYW1lLFxuICAgICAgICAgICAgICB1cmw6IHRlbXBsYXRlVXJsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgbm9EZWZhdWx0VGVtcGxhdGUgPSBhcmdzLnRlbXBsYXRlID09PSBmYWxzZTtcblxuICAgICAgICAgIGlmICghbm9EZWZhdWx0VGVtcGxhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2plY3QgPSBjcmVhdGVEZWZhdWx0VGVtcGxhdGUoXG4gICAgICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhkZXBzLmVudHJpZXMoKSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIE9iamVjdC5rZXlzKHByb2plY3QpKSB7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICAgICAgICBgdGVtcGxhdGU6ZGVmYXVsdDoke2VuY29kZVVSSUNvbXBvbmVudChmaWxlUGF0aCl9YCxcbiAgICAgICAgICAgICAgICBwcm9qZWN0W2ZpbGVQYXRoXSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCByZXN0b3JlTWFwID0gbmV3IE1hcDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2Ygd3JpdGVEZXBzPj5cbiAgICAgICAgICA+KCk7XG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBoYXNQYWNrYWdlSnNvbihwKSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSlNPTihwSnNvblBhdGgpO1xuXG4gICAgICAgICAgICBpZiAocEpzb24ucHJpdmF0ZSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdG9yZU1hcC5zZXQocCwgYXdhaXQgd3JpdGVEZXBzKHAsIGRlcHMsIHJlYWxEZXBzKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2hhc3VtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgaWYgKCEoYXdhaXQgaGFzUGFja2FnZUpzb24ocCkpKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2tpcHBpbmcgJHtwfSBiZWNhdXNlIHRoZXJlJ3Mgbm8gcGFja2FnZS5qc29uIGZpbGVgKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSlNPTihwSnNvblBhdGgpO1xuXG4gICAgICAgICAgICAgIGlmICghcEpzb24ubmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBcIm5hbWVcIiBmaWVsZCBpbiAke3BKc29uUGF0aH0gc2hvdWxkIGJlIGRlZmluZWRgLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHBKc29uLnByaXZhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYHNraXBwaW5nICR7cH0gYmVjYXVzZSB0aGUgcGFja2FnZSBpcyBwcml2YXRlYCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCB7IGZpbGVuYW1lLCBzaGFzdW0gfSA9IGF3YWl0IHJlc29sdmVUYXJiYWxsKFxuICAgICAgICAgICAgICAgIGlzUG5wbSA/IFwicG5wbVwiIDogXCJucG1cIixcbiAgICAgICAgICAgICAgICBwLFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHNoYXN1bXNbcEpzb24ubmFtZV0gPSBzaGFzdW07XG4gICAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2hhc3VtIGZvciAke3BKc29uLm5hbWV9KCR7ZmlsZW5hbWV9KTogJHtzaGFzdW19YCk7XG5cbiAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0UGtnID0gb3V0cHV0TWV0YWRhdGEucGFja2FnZXMuZmluZChwID0+IHAubmFtZSA9PT0gcEpzb24ubmFtZSkhO1xuICAgICAgICAgICAgICBvdXRwdXRQa2cuc2hhc3VtID0gc2hhc3VtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLnJlc29sdmUocCwgZmlsZW5hbWUpKTtcblxuICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbGVdLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChgcGFja2FnZToke3BKc29uLm5hbWV9YCwgYmxvYiwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgYXdhaXQgcmVzdG9yZU1hcC5nZXQocCk/LigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHBhY2thZ2VNYW5hZ2VyID0gYXdhaXQgZGV0ZWN0KCk7XG4gICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocHVibGlzaFVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgXCJzYi1jb21tZW50XCI6IGNvbW1lbnQsXG4gICAgICAgICAgICAgIFwic2ItY29tcGFjdFwiOiBgJHtpc0NvbXBhY3R9YCxcbiAgICAgICAgICAgICAgXCJzYi1rZXlcIjoga2V5LFxuICAgICAgICAgICAgICBcInNiLXNoYXN1bXNcIjogSlNPTi5zdHJpbmdpZnkoc2hhc3VtcyksXG4gICAgICAgICAgICAgIFwic2ItcnVuLWlkXCI6IEdJVEhVQl9SVU5fSUQsXG4gICAgICAgICAgICAgIFwic2ItcGFja2FnZS1tYW5hZ2VyXCI6IHBhY2thZ2VNYW5hZ2VyLmFnZW50ID8/IFwibnBtXCIsXG4gICAgICAgICAgICAgIFwic2Itb25seS10ZW1wbGF0ZXNcIjogYCR7aXNPbmx5VGVtcGxhdGVzfWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBsYXRlclJlcyA9IGF3YWl0IHJlcy5jbG9uZSgpLmpzb24oKTtcbiAgICAgICAgICBhc3NlcnQuZXF1YWwoXG4gICAgICAgICAgICByZXMuc3RhdHVzLFxuICAgICAgICAgICAgMjAwLFxuICAgICAgICAgICAgYHB1Ymxpc2hpbmcgZmFpbGVkOiAke2F3YWl0IHJlcy50ZXh0KCl9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc29sZS53YXJuKFwiXFxuXCIpO1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBcdTI2QTFcdUZFMEYgWW91ciBucG0gcGFja2FnZXMgYXJlIHB1Ymxpc2hlZC5cXG4ke1suLi5mb3JtRGF0YS5rZXlzKCldXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGspID0+IGsuc3RhcnRzV2l0aChcInBhY2thZ2U6XCIpKVxuICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgIChuYW1lLCBpKSA9PlxuICAgICAgICAgICAgICAgICAgYCR7bmFtZS5zbGljZShcInBhY2thZ2U6XCIubGVuZ3RoKX06IG5wbSBpICR7bGF0ZXJSZXMudXJsc1tpXX1gLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpfWAsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IG91dHB1dCA9IEpTT04uc3RyaW5naWZ5KG91dHB1dE1ldGFkYXRhLCBudWxsLCAyKTtcbiAgICAgICAgICBpZiAocHJpbnRKc29uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhvdXRwdXQpOyAvLyBMb2cgb3V0cHV0IGZvciBwaXBpbmdcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNhdmVKc29uKSB7XG4gICAgICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUoanNvbkZpbGVQYXRoLCBvdXRwdXQpO1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBtZXRhZGF0YSB3cml0dGVuIHRvICR7anNvbkZpbGVQYXRofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBsaW5rOiAoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXRhOiB7fSxcbiAgICAgICAgcnVuOiAoKSA9PiB7IH0sXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG59KTtcblxucnVuTWFpbihtYWluKS50aGVuKCgpID0+IHByb2Nlc3MuZXhpdCgwKSkuY2F0Y2goKCkgPT4gcHJvY2Vzcy5leGl0KDEpKTtcblxuLy8gVE9ETzogd2UnbGwgYWRkIHN1cHBvcnQgZm9yIHlhcm4gaWYgdXNlcnMgaGl0IGlzc3VlcyB3aXRoIG5wbVxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVRhcmJhbGwocG06IFwibnBtXCIgfCBcInBucG1cIiwgcDogc3RyaW5nKSB7XG4gIGNvbnN0IHsgc3Rkb3V0IH0gPSBhd2FpdCBlelNwYXduLmFzeW5jKGAke3BtfSBwYWNrYCwge1xuICAgIHN0ZGlvOiBcIm92ZXJsYXBwZWRcIixcbiAgICBjd2Q6IHAsXG4gIH0pO1xuICBjb25zdCBsaW5lcyA9IHN0ZG91dC5zcGxpdChcIlxcblwiKS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IGZpbGVuYW1lID0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0udHJpbSgpO1xuXG4gIGNvbnN0IHNoYXN1bSA9IGNyZWF0ZUhhc2goXCJzaGExXCIpXG4gICAgLnVwZGF0ZShhd2FpdCBmcy5yZWFkRmlsZShwYXRoLnJlc29sdmUocCwgZmlsZW5hbWUpKSlcbiAgICAuZGlnZXN0KFwiaGV4XCIpO1xuXG4gIHJldHVybiB7IGZpbGVuYW1lLCBzaGFzdW0gfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVEZXBzKHA6IHN0cmluZywgZGVwczogTWFwPHN0cmluZywgc3RyaW5nPiwgcmVhbERlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gfCBudWxsKSB7XG4gIGNvbnN0IHBKc29uUGF0aCA9IHBhdGgucmVzb2x2ZShwLCBcInBhY2thZ2UuanNvblwiKTtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKHBKc29uUGF0aCwgXCJ1dGYtOFwiKTtcblxuICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSlNPTihwSnNvblBhdGgpO1xuXG4gIGhpamFja0RlcHMoZGVwcywgcEpzb24uZGVwZW5kZW5jaWVzKTtcbiAgaGlqYWNrRGVwcyhkZXBzLCBwSnNvbi5kZXZEZXBlbmRlbmNpZXMpO1xuICBoaWphY2tEZXBzKGRlcHMsIHBKc29uLm9wdGlvbmFsRGVwZW5kZW5jaWVzKTtcblxuICBpZiAocmVhbERlcHMpIHtcbiAgICBoaWphY2tEZXBzKHJlYWxEZXBzLCBwSnNvbi5wZWVyRGVwZW5kZW5jaWVzKTtcbiAgfVxuXG4gIGF3YWl0IHdyaXRlUGFja2FnZUpTT04ocEpzb25QYXRoLCBwSnNvbik7XG5cbiAgcmV0dXJuICgpID0+IGZzLndyaXRlRmlsZShwSnNvblBhdGgsIGNvbnRlbnQpO1xufVxuXG5mdW5jdGlvbiBoaWphY2tEZXBzKFxuICBuZXdEZXBzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LFxuICBvbGREZXBzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbikge1xuICBpZiAoIW9sZERlcHMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yIChjb25zdCBbbmV3RGVwLCB1cmxdIG9mIG5ld0RlcHMpIHtcbiAgICBpZiAobmV3RGVwIGluIG9sZERlcHMpIHtcbiAgICAgIG9sZERlcHNbbmV3RGVwXSA9IHVybDtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q29tcGFjdE1vZGUocGFja2FnZU5hbWU6IHN0cmluZykge1xuICBsZXQgbWFuaWZlc3Q6IFBhY2thZ2VNYW5pZmVzdDtcblxuICB0cnkge1xuICAgIG1hbmlmZXN0ID0gYXdhaXQgZ2V0UGFja2FnZU1hbmlmZXN0KHBhY2thZ2VOYW1lKTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYHBrZy1wci1uZXcgY2Fubm90IHJlc29sdmUgJHtwYWNrYWdlTmFtZX0gZnJvbSBucG0uIC0tY29tcGFjdCBmbGFnIGRlcGVuZHMgb24gdGhlIHBhY2thZ2UgYmVpbmcgYXZhaWxhYmxlIGluIG5wbS5cbk1ha2Ugc3VyZSB0byBoYXZlIHlvdXIgcGFja2FnZSBvbiBucG0gZmlyc3QuYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBgTWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSB0aGUgJ3JlcG9zaXRvcnknIC8gJ3JlcG9zaXRvcnkudXJsJyBmaWVsZCBpbiBpdHMgcGFja2FnZS5qc29uIHByb3Blcmx5LlxuU2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpL3YxMC9jb25maWd1cmluZy1ucG0vcGFja2FnZS1qc29uI3JlcG9zaXRvcnkgZm9yIGRldGFpbHMuYDtcblxuICBjb25zdCByZXBvc2l0b3J5ID0gZXh0cmFjdFJlcG9zaXRvcnkobWFuaWZlc3QpO1xuICBpZiAoIXJlcG9zaXRvcnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgcGtnLXByLW5ldyBjYW5ub3QgZXh0cmFjdCB0aGUgcmVwb3NpdG9yeSBsaW5rIGZyb20gdGhlICR7cGFja2FnZU5hbWV9IG1hbmlmZXN0LiAtLWNvbXBhY3QgZmxhZyByZXF1aXJlcyB0aGUgbGluayB0byBiZSBwcmVzZW50LlxuJHtpbnN0cnVjdGlvbn1gLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBtYXRjaCA9IGV4dHJhY3RPd25lckFuZFJlcG8ocmVwb3NpdG9yeSk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgcGtnLXByLW5ldyBjYW5ub3QgZXh0cmFjdCB0aGUgb3duZXIgYW5kIHJlcG8gbmFtZXMgZnJvbSB0aGUgJHtwYWNrYWdlTmFtZX0gcmVwb3NpdG9yeSBsaW5rOiAke3JlcG9zaXRvcnl9LiAtLWNvbXBhY3QgZmxhZyByZXF1aXJlcyB0aGVzZSBuYW1lcy5cbiR7aW5zdHJ1Y3Rpb259YCxcbiAgICApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhc1BhY2thZ2VKc29uKHA6IHN0cmluZykge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLmFjY2VzcyhwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIiksIGZzLmNvbnN0YW50cy5GX09LKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCAiY29uc3QgZGVmYXVsdHMgPSBPYmplY3QuZnJlZXplKHtcbiAgaWdub3JlVW5rbm93bjogZmFsc2UsXG4gIHJlc3BlY3RUeXBlOiBmYWxzZSxcbiAgcmVzcGVjdEZ1bmN0aW9uTmFtZXM6IGZhbHNlLFxuICByZXNwZWN0RnVuY3Rpb25Qcm9wZXJ0aWVzOiBmYWxzZSxcbiAgdW5vcmRlcmVkT2JqZWN0czogdHJ1ZSxcbiAgdW5vcmRlcmVkQXJyYXlzOiBmYWxzZSxcbiAgdW5vcmRlcmVkU2V0czogZmFsc2UsXG4gIGV4Y2x1ZGVLZXlzOiB2b2lkIDAsXG4gIGV4Y2x1ZGVWYWx1ZXM6IHZvaWQgMCxcbiAgcmVwbGFjZXI6IHZvaWQgMFxufSk7XG5mdW5jdGlvbiBvYmplY3RIYXNoKG9iamVjdCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRzLCAuLi5vcHRpb25zIH07XG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucyA9IGRlZmF1bHRzO1xuICB9XG4gIGNvbnN0IGhhc2hlciA9IGNyZWF0ZUhhc2hlcihvcHRpb25zKTtcbiAgaGFzaGVyLmRpc3BhdGNoKG9iamVjdCk7XG4gIHJldHVybiBoYXNoZXIudG9TdHJpbmcoKTtcbn1cbmNvbnN0IGRlZmF1bHRQcm90b3R5cGVzS2V5cyA9IE9iamVjdC5mcmVlemUoW1xuICBcInByb3RvdHlwZVwiLFxuICBcIl9fcHJvdG9fX1wiLFxuICBcImNvbnN0cnVjdG9yXCJcbl0pO1xuZnVuY3Rpb24gY3JlYXRlSGFzaGVyKG9wdGlvbnMpIHtcbiAgbGV0IGJ1ZmYgPSBcIlwiO1xuICBsZXQgY29udGV4dCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGNvbnN0IHdyaXRlID0gKHN0cikgPT4ge1xuICAgIGJ1ZmYgKz0gc3RyO1xuICB9O1xuICByZXR1cm4ge1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfSxcbiAgICBnZXRDb250ZXh0KCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfSxcbiAgICBkaXNwYXRjaCh2YWx1ZSkge1xuICAgICAgaWYgKG9wdGlvbnMucmVwbGFjZXIpIHtcbiAgICAgICAgdmFsdWUgPSBvcHRpb25zLnJlcGxhY2VyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHR5cGUgPSB2YWx1ZSA9PT0gbnVsbCA/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/IGAke2tleX0uJHtfa2V5fWAgOiBfa2V5XG4gICAgKTtcbiAgICBoYXNoZXMucHVzaChwcm9wc1tfa2V5XS5oYXNoKTtcbiAgfVxuICByZXR1cm4gbmV3IERpZmZIYXNoZWRPYmplY3Qoa2V5LCBvYmosIGB7JHtoYXNoZXMuam9pbihcIjpcIil9fWAsIHByb3BzKTtcbn1cbmNsYXNzIERpZmZFbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKGtleSwgdHlwZSwgbmV3VmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnRvSlNPTigpO1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBcImFkZGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBBZGRlZCAgIFxcYCR7dGhpcy5rZXl9XFxgYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJyZW1vdmVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBSZW1vdmVkIFxcYCR7dGhpcy5rZXl9XFxgYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjaGFuZ2VkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBDaGFuZ2VkIFxcYCR7dGhpcy5rZXl9XFxgIGZyb20gXFxgJHt0aGlzLm9sZFZhbHVlPy50b1N0cmluZygpIHx8IFwiLVwifVxcYCB0byBcXGAke3RoaXMubmV3VmFsdWUudG9TdHJpbmcoKX1cXGBgO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY2xhc3MgRGlmZkhhc2hlZE9iamVjdCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUsIGhhc2gsIHByb3BzKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuaGFzaCA9IGhhc2g7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIGlmICh0aGlzLnByb3BzKSB7XG4gICAgICByZXR1cm4gYHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oXCIsXCIpfX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBrID0gdGhpcy5rZXkgfHwgXCIuXCI7XG4gICAgaWYgKHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiBgJHtrfSh7JHtPYmplY3Qua2V5cyh0aGlzLnByb3BzKS5qb2luKFwiLFwiKX19KWA7XG4gICAgfVxuICAgIHJldHVybiBgJHtrfSgke3RoaXMudmFsdWV9KWA7XG4gIH1cbn1cblxuZXhwb3J0IHsgZGlmZiwgaGFzaCwgaXNFcXVhbCwgbXVybXVySGFzaCwgb2JqZWN0SGFzaCwgc2hhMjU2LCBzaGEyNTZiYXNlNjQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gXCJxdWVyeS1yZWdpc3RyeVwiO1xuXG5jb25zdCBnaXRodWJVcmxSZWdleCA9XG4gIC8oPzpnaXRcXCspP2h0dHBzPzpcXC9cXC9naXRodWJcXC5jb21cXC8oW15cXC9dKylcXC8oW15cXC9dKylcXC5naXQvOyAvLyBUT0RPOiBEb24ndCB0cnVzdCB0aGlzLCBpdCdzIGNoYXRnYmQgOilcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPd25lckFuZFJlcG8oXG4gIHJlcG9zaXRvcnlVcmw6IHN0cmluZyxcbik6IFtzdHJpbmcsIHN0cmluZ10gfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSByZXBvc2l0b3J5VXJsLm1hdGNoKGdpdGh1YlVybFJlZ2V4KTtcblxuICBpZiAobWF0Y2gpIHtcbiAgICByZXR1cm4gW21hdGNoWzFdLCBtYXRjaFsyXV07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSZXBvc2l0b3J5KG1hbmlmZXN0OiBQYWNrYWdlTWFuaWZlc3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYW5pZmVzdC5yZXBvc2l0b3J5ID09PSBcInN0cmluZ1wiXG4gICAgPyBtYW5pZmVzdC5yZXBvc2l0b3J5XG4gICAgOiBtYW5pZmVzdC5yZXBvc2l0b3J5Py51cmw7XG59XG5cbmNvbnN0IGNvbW1pdExlbmd0aCA9IDc7XG5cbi8qXG4gKiBcIjA5ZWZkMDU1MzM3NGZmN2QzZTYyYjc5Mzc4ZTMxODRmNWViNTc1NzFcIiA9PiBcIjA5ZWZkMDVcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJicmV2aWF0ZUNvbW1pdEhhc2goZnVsbEhhc2g6IHN0cmluZykge1xuICByZXR1cm4gZnVsbEhhc2guc3Vic3RyaW5nKDAsIGNvbW1pdExlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1B1bGxSZXF1ZXN0KHJlZjogc3RyaW5nKSB7XG4gIHJldHVybiAhTnVtYmVyLmlzTmFOKE51bWJlcihyZWYpKTtcbn1cblxuZXhwb3J0IHR5cGUgQ29tbWVudCA9IFwib2ZmXCIgfCBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIjtcbmV4cG9ydCB0eXBlIFBhY2thZ2VNYW5hZ2VyID0gXCJucG1cIiB8IFwicG5wbVwiIHwgXCJ5YXJuXCIgfCBcImJ1blwiO1xuIiwgIntcbiAgXCJuYW1lXCI6IFwicGtnLXByLW5ld1wiLFxuICBcInZlcnNpb25cIjogXCIwLjAuMjFcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIlwiLFxuICBcIm1haW5cIjogXCJpbmRleC5qc1wiLFxuICBcInR5cGVcIjogXCJtb2R1bGVcIixcbiAgXCJiaW5cIjoge1xuICAgIFwicGtnLXByLW5ld1wiOiBcImJpbi9jbGkuanNcIlxuICB9LFxuICBcInJlcG9zaXRvcnlcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdFwiLFxuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrYmxpdHotbGFicy9wa2cucHIubmV3XCIsXG4gICAgXCJkaXJlY3RvcnlcIjogXCJwYWNrYWdlcy9jbGlcIlxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiZGV2XCI6IFwidHN1cCAtLXdhdGNoXCIsXG4gICAgXCJidWlsZFwiOiBcInRzdXBcIixcbiAgICBcImJ1aWxkOnB1Ymxpc2hcIjogXCJBUElfVVJMPWh0dHBzOi8vcGtnLnByLm5ldy8gdHN1cFwiXG4gIH0sXG4gIFwia2V5d29yZHNcIjogW10sXG4gIFwiYXV0aG9yXCI6IFwiXCIsXG4gIFwibGljZW5zZVwiOiBcIklTQ1wiLFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAanNkZXZ0b29scy9lei1zcGF3blwiOiBcIl4zLjAuNFwiLFxuICAgIFwiQG9jdG9raXQvYWN0aW9uXCI6IFwiXjYuMS4wXCIsXG4gICAgXCJpZ25vcmVcIjogXCJeNS4zLjFcIixcbiAgICBcImlzYmluYXJ5ZmlsZVwiOiBcIl41LjAuMlwiLFxuICAgIFwicGFja2FnZS1tYW5hZ2VyLWRldGVjdG9yXCI6IFwiXjAuMS4yXCIsXG4gICAgXCJwa2ctdHlwZXNcIjogXCJeMS4xLjFcIixcbiAgICBcInF1ZXJ5LXJlZ2lzdHJ5XCI6IFwiXjMuMC4xXCIsXG4gICAgXCJ0aW55Z2xvYmJ5XCI6IFwiXjAuMi4yXCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQHBrZy1wci1uZXcvdXRpbHNcIjogXCJ3b3Jrc3BhY2U6XlwiLFxuICAgIFwiY2l0dHlcIjogXCJeMC4xLjZcIixcbiAgICBcInRzdXBcIjogXCJeOC4wLjJcIlxuICB9XG59XG4iLCAiZXhwb3J0IGNvbnN0IGNyZWF0ZURlZmF1bHRUZW1wbGF0ZSA9IChcbiAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKSA9PiAoe1xuICBcImluZGV4LmpzXCI6IFwiXCIsXG4gIFwiUkVBRE1FLm1kXCI6IGBcbiMgRGVmYXVsdCBUZW1wbGF0ZVxuXG5UaGlzIGlzIGEgdGVtcGxhdGUgdGhhdCBsZXZlcmFnZXMgdGhlIGV4cGVyaW1lbnRhbCB0ZW1wbGF0ZXMgZmVhdHVyZSBpbiB0aGUgXFxgcGtnLnByLm5ld1xcYCB0b29sLlxuXG4jIyBPdmVydmlld1xuXG5UZW1wbGF0ZXMgYXJlIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGNyZWF0aW5nIGxpdmUsIGludGVyYWN0aXZlIGV4YW1wbGVzIG9mIHlvdXIgcGFja2FnZXMsIHdoaWNoIGNhbiBiZSB2ZXJ5IGJlbmVmaWNpYWwgZm9yIGJvdGggZGV2ZWxvcG1lbnQgYW5kIGRvY3VtZW50YXRpb24gcHVycG9zZXMuXG5cbkFzIGEgdXNlciwgeW91IGNhbiBjaGVjayB0aGUgcGFja2FnZS5qc29uIGZpbGUgYW5kIHNlZSB0aGUgbmV3IGdlbmVyYXRlZCBwYWNrYWdlcyEgWW91IGNhbiBqdXN0IGNvcHkgdGhvc2UgYW5kIHB1dCB0aGVtIGluIHlvdXIgcGFja2FnZS5qc29uIG9yIGluc3RhbGwgdGhlbSB3aXRoIHlvdXIgZmF2b3JpdGUgcGFja2FnZSBtYW5hZ2VyLlxuXG4ke09iamVjdC52YWx1ZXMoZGVwZW5kZW5jaWVzKVxuICAubWFwKFxuICAgICh1cmwpID0+IGBcblxcYFxcYFxcYHNoXG5ucG0gaSAke3VybH1cblxcYFxcYFxcYFxuYCxcbiAgKVxuICAuam9pbihcIlwiKX1cblxuIyMgVXNhZ2VcblxuVG8gdXNlIHRoaXMgZmVhdHVyZSBhcyBhIG1haW50YWluZXIsIHlvdSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDpcblxuXFxgXFxgXFxgc2hcbm5weCBwa2ctcHItbmV3IHB1Ymxpc2ggJy4vcGFja2FnZXMvQScgLS10ZW1wbGF0ZSAnLi9leGFtcGxlcy8qJ1xuXFxgXFxgXFxgXG5cbiMjIEJlbmVmaXRzXG5cbi0gSW50ZXJhY3RpdmUgRGVtb3M6IEF1dG9tYXRpY2FsbHkgY3JlYXRlIGxpdmUgZGVtb3MgdGhhdCB1c2VycyBjYW4gaW50ZXJhY3Qgd2l0aCBkaXJlY3RseSBpbiB0aGVpciBicm93c2VyLlxuLSBFbmhhbmNlZCBUZXN0aW5nOiBRdWlja2x5IHNwaW4gdXAgZW52aXJvbm1lbnRzIHRvIHRlc3QgeW91ciBwYWNrYWdlIGluIGRpZmZlcmVudCBzY2VuYXJpb3MuXG4tIEltcHJvdmVkIFNoYXJpbmc6IEVhc2lseSBzaGFyZSB3b3JraW5nIGV4YW1wbGVzIG9mIHlvdXIgcGFja2FnZSB3aXRoIGNvbGxhYm9yYXRvcnMgb3IgdXNlcnMgd2l0aG91dCBuZWVkaW5nIHRoZW0gdG8gc2V0IHVwIHRoZWlyIGVudmlyb25tZW50LlxuYCxcbiAgXCJwYWNrYWdlLmpzb25cIjogSlNPTi5zdHJpbmdpZnkoXG4gICAge1xuICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJnZW5lcmF0ZWQgYnkgcGtnLnByLm5ld1wiLFxuICAgICAgbWFpbjogXCJpbmRleC5qc1wiLFxuICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAga2V5d29yZHM6IFtdLFxuICAgICAgYXV0aG9yOiBcInBrZy5wci5uZXdcIixcbiAgICAgIGxpY2Vuc2U6IFwiSVNDXCIsXG4gICAgfSxcbiAgICBudWxsLFxuICAgIDIsXG4gICksXG59KTtc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TyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFNBQU8sTUFBSSxNQUFJLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsUUFBTSxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFNBQU8sS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxLQUFHLFNBQU8sVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFdBQVMsV0FBUyxLQUFHLEtBQUcsVUFBUSxNQUFJO0FBQUEsTUFBRyxHQUFFLEVBQUUsa0JBQWdCLFNBQVMsR0FBRTtBQUFDLFlBQUlBLEtBQUUsS0FBSyxlQUFlLENBQUM7QUFBRSxlQUFPQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxNQUFJLElBQUU7QUFBQSxNQUFDO0FBQUUsZUFBUyxFQUFFLEdBQUU7QUFBQyxlQUFPLEVBQUUsTUFBTSxrREFBa0QsS0FBRyxDQUFDO0FBQUEsTUFBQztBQUFDLFFBQUUsU0FBTyxTQUFTLEdBQUU7QUFBQyxpQkFBUUEsS0FBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFLElBQUVBLEdBQUUsUUFBTztBQUFJLGNBQUUsSUFBRSxLQUFLLGdCQUFnQkEsR0FBRSxDQUFDLENBQUM7QUFBRSxlQUFPO0FBQUEsTUFBQyxHQUFFLEVBQUUsUUFBTSxTQUFTLEdBQUVBLElBQUUsR0FBRTtBQUFDLGtCQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUVBLEtBQUVBLE1BQUcsR0FBRSxJQUFFLEtBQUcsR0FBRUEsS0FBRSxNQUFJQSxLQUFFLFVBQVFBLEtBQUcsSUFBRSxNQUFJLElBQUUsVUFBUTtBQUFHLGlCQUFRLElBQUUsSUFBRyxJQUFFLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLGNBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsT0FBTyxDQUFDO0FBQUUsY0FBRyxLQUFHQSxNQUFHLEtBQUcsSUFBRSxJQUFFO0FBQUcsZ0JBQUcsSUFBRSxLQUFHO0FBQUUsbUJBQUc7QUFBQTtBQUFPO0FBQU0sZUFBRztBQUFBLFFBQUU7QUFBQyxlQUFPO0FBQUEsTUFBQztBQUFBLElBQUUsR0FBRyxDQUFDO0FBQUUsSUFBTSxJQUFFO0FBQUUsSUFBSSxJQUFFLFdBQVU7QUFBQyxhQUFPO0FBQUEsSUFBZ3llO0FBQW9YLElBQU0sSUFBRTtBQUFSLElBQVcsSUFBRSxDQUFDLElBQUUsTUFBSSxPQUFHLFFBQVEsSUFBRSxDQUFDO0FBQWxDLElBQXNDLElBQUUsQ0FBQyxJQUFFLE1BQUksT0FBRyxRQUFRLEtBQUcsQ0FBQyxNQUFNLENBQUM7QUFBckUsSUFBeUUsSUFBRSxDQUFDLElBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxNQUFJLFFBQVEsS0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQXhILElBQTRILElBQUUsRUFBQyxVQUFTLEVBQUMsT0FBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUssQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxHQUFFLFdBQVUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxVQUFTLENBQUMsSUFBRyxFQUFFLEdBQUUsU0FBUSxDQUFDLEdBQUUsRUFBRSxHQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsR0FBRSxlQUFjLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxPQUFNLEVBQUMsT0FBTSxDQUFDLElBQUcsRUFBRSxHQUFFLEtBQUksQ0FBQyxJQUFHLEVBQUUsR0FBRSxPQUFNLENBQUMsSUFBRyxFQUFFLEdBQUUsUUFBTyxDQUFDLElBQUcsRUFBRSxHQUFFLE1BQUssQ0FBQyxJQUFHLEVBQUUsR0FBRSxTQUFRLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLE9BQU0sQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLE1BQUssQ0FBQyxJQUFHLEVBQUUsR0FBRSxXQUFVLENBQUMsSUFBRyxFQUFFLEdBQUUsYUFBWSxDQUFDLElBQUcsRUFBRSxHQUFFLGNBQWEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxZQUFXLENBQUMsSUFBRyxFQUFFLEdBQUUsZUFBYyxDQUFDLElBQUcsRUFBRSxHQUFFLFlBQVcsQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEVBQUMsR0FBRSxTQUFRLEVBQUMsU0FBUSxDQUFDLElBQUcsRUFBRSxHQUFFLE9BQU0sQ0FBQyxJQUFHLEVBQUUsR0FBRSxTQUFRLENBQUMsSUFBRyxFQUFFLEdBQUUsVUFBUyxDQUFDLElBQUcsRUFBRSxHQUFFLFFBQU8sQ0FBQyxJQUFHLEVBQUUsR0FBRSxXQUFVLENBQUMsSUFBRyxFQUFFLEdBQUUsUUFBTyxDQUFDLElBQUcsRUFBRSxHQUFFLFNBQVEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxlQUFjLENBQUMsS0FBSSxFQUFFLEdBQUUsUUFBTyxDQUFDLEtBQUksRUFBRSxHQUFFLFFBQU8sQ0FBQyxLQUFJLEVBQUUsR0FBRSxhQUFZ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QUFFO0FBQUUsaUJBQVMsQ0FBQyxHQUFFLENBQUMsS0FBSSxFQUFFLE1BQU0sR0FBRyxFQUFFLFFBQVEsR0FBRTtBQUFDLFVBQUUsU0FBTyxVQUFLLEVBQUUsRUFBRSxTQUFPLENBQUMsSUFBRSxFQUFFLEVBQUUsU0FBTyxDQUFDLEVBQUUsVUFBVTtBQUFHLFlBQUksSUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFPLENBQUMsQ0FBQztBQUFFLFlBQUcsTUFBSSxNQUFJLEtBQUcsTUFBSSxFQUFFLGFBQVcsU0FBSSxFQUFFLFNBQU8sV0FBTSxFQUFFLEtBQUssRUFBRSxHQUFFLElBQUUsS0FBSSxJQUFFLEtBQUcsRUFBRSxTQUFPLFdBQU0sRUFBRSxFQUFFLFNBQU8sQ0FBQyxLQUFHLEtBQUksT0FBTSxFQUFFLFFBQU0sRUFBRSxDQUFDLElBQUUsR0FBRTtBQUFDLGdCQUFNLElBQUUsSUFBRSxHQUFFLElBQUUsSUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDLElBQUUsSUFBRSxLQUFHLENBQUM7QUFBRSxlQUFLLE9BQU8sRUFBRSxDQUFDLElBQUUsS0FBRyxDQUFDLElBQUUsS0FBRyxFQUFFLEtBQUssRUFBRSxHQUFFLEVBQUUsR0FBRSxHQUFFLENBQUM7QUFBRTtBQUFBLFFBQVE7QUFBQyxZQUFHLElBQUUsRUFBRSxDQUFDLElBQUUsS0FBRyxJQUFFLEtBQUcsRUFBRSxDQUFDLElBQUUsR0FBRTtBQUFDLGNBQUcsRUFBRSxhQUFXLFNBQUksSUFBRSxHQUFFO0FBQUMsY0FBRSxHQUFFLEdBQUUsQ0FBQztBQUFFO0FBQUEsVUFBUTtBQUFDLFlBQUUsS0FBSyxFQUFFO0FBQUEsUUFBRTtBQUFDLFlBQUcsSUFBRSxFQUFFLENBQUMsSUFBRSxLQUFHLEVBQUUsYUFBVyxPQUFHO0FBQUMsWUFBRSxHQUFFLEdBQUUsQ0FBQztBQUFFO0FBQUEsUUFBUTtBQUFDLFVBQUUsRUFBRSxTQUFPLENBQUMsS0FBRztBQUFBLE1BQUU7QUFBQyxRQUFFLFNBQU8sVUFBSyxJQUFFLEVBQUUsSUFBSSxPQUFHLEdBQUcsQ0FBQyxDQUFD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QUFVLEdBQUUsRUFBRSxLQUFLLE9BQU0sSUFBRSxHQUFFLEtBQUssT0FBTyxHQUFHLFVBQVMsS0FBSyxNQUFNLEdBQUUsS0FBSyxPQUFPLEdBQUUsSUFBSSxRQUFRLENBQUMsR0FBRSxNQUFJO0FBQUMsZUFBSyxLQUFLLFVBQVMsTUFBSTtBQUFDLGlCQUFLLE9BQU8sTUFBTSxJQUFJLE9BQU8sSUFBSSxHQUFFLEtBQUssT0FBTyxJQUFJLFVBQVMsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLE9BQU0sS0FBRSxHQUFFLEVBQUUsS0FBSyxLQUFLO0FBQUEsVUFBRSxDQUFDLEdBQUUsS0FBSyxLQUFLLFVBQVMsTUFBSTtBQUFDLGlCQUFLLE9BQU8sTUFBTSxJQUFJLE9BQU8sSUFBSSxHQUFFLEtBQUssT0FBTyxJQUFJLFVBQVMsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLE9BQU0sS0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLFVBQUUsQ0FBQztBQUFBLFFBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQSxNQUFDLEdBQUcsR0FBRSxHQUFFO0FBQUMsY0FBTSxJQUFFLEtBQUssWUFBWSxJQUFJLENBQUMsS0FBRyxDQUFDO0FBQUUsVUFBRSxLQUFLLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxLQUFLLFlBQVksSUFBSSxHQUFFLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFLLEdBQUUsR0FBRTtBQUFDLGNBQU0sSUFBRSxLQUFLLFlBQVksSUFBSSxDQUFDLEtBQUcsQ0FBQztBQUFFLFVBQUUsS0FBSyxFQUFDLElBQUcsR0FBRSxNQUFLLEtBQUUsQ0FBQyxHQUFFLEtBQUssWUFBWSxJQUFJLEdBQUUsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUssTUFBSyxHQUFFO0FBQUMsY0FBTSxJQUFFLEtBQUssWUFBWSxJQUFJLENBQUMsS0FBRyxDQUFDLEdBQUVBLEtBQUUsQ0FBQztBQUFFLG1CQUFVLEtBQUs7QUFBRSxZQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxRQUFNQSxHQUFFLEtBQUssTUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBRSxtQkFBVSxLQUFLQTtBQUFFLFlBQUU7QUFBQSxNQUFFO0FBQUEsTUFBQyxjQUFhO0FBQUMsYUFBSyxZQUFZLE1BQU07QUFBQSxNQUFFO0FBQUEsTUFBQyxXQUFXLEdBQUUsR0FBRTtBQUFDLFlBQUcsS0FBSyxVQUFRLFlBQVUsS0FBSyxRQUFNLFdBQVUsR0FBRyxRQUFNLENBQUMsS0FBSyxVQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksS0FBRyxLQUFLLEtBQUssVUFBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRSxHQUFHLFFBQU0sR0FBRyxJQUFJLEVBQUUsSUFBSSxLQUFHLEtBQUssS0FBSyxVQUFTLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxZQUFZLE1BQUksT0FBSyxFQUFFLFlBQVksTUFBSSxRQUFNLEtBQUssS0FBSyxXQUFVLEVBQUUsWUFBWSxNQUFJLEdBQUcsR0FBRSxLQUFHLEtBQUssS0FBSyxPQUFNLEVBQUUsWUFBWSxDQUFDLEdBQUUsR0FBRyxTQUFPLFVBQVM7QUFBQyxjQUFHLEtBQUssS0FBSyxVQUFTO0FBQUMsa0JBQU0sSUFBRSxLQUFLLEtBQUssU0FBUyxLQUFLLEtBQUs7QUFBRSxrQkFBSSxLQUFLLFFBQU0sR0FBRSxLQUFLLFFBQU0sU0FBUSxLQUFLLEdBQUcsTUFBTSxLQUFLLEtBQUs7QUFBQSxVQUFHO0FBQUMsZUFBSyxVQUFRLFlBQVUsS0FBSyxRQUFNO0FBQUEsUUFBVTtBQUFDLGNBQUksUUFBTSxLQUFLLFFBQU0sWUFBVyxLQUFLLFVBQVEsWUFBVSxLQUFLLFVBQVEsYUFBVyxLQUFLLEtBQUssVUFBVSxHQUFFLEtBQUssT0FBTyxJQUFHLEtBQUssVUFBUSxZQUFVLEtBQUssVUFBUSxhQUFXLEtBQUssTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLFFBQU87QUFBQyxhQUFLLE1BQU0sT0FBTyxHQUFFLEtBQUssTUFBTSxlQUFlLFlBQVcsS0FBSyxVQUFVLEdBQUUsS0FBSyxPQUFPLE1B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QSxNQUFDLFlBQVksR0FBRTtBQUFDLGNBQU0sR0FBRSxLQUFFLEdBQUUsS0FBSyxTQUFPLEdBQUUsS0FBSyxVQUFRLEVBQUUsU0FBUSxLQUFLLFFBQU0sQ0FBQyxHQUFHLEVBQUUsaUJBQWUsQ0FBQyxDQUFDLEdBQUUsS0FBSyxTQUFPLEtBQUssSUFBSSxLQUFLLFFBQVEsVUFBVSxDQUFDLEVBQUMsT0FBTSxFQUFDLE1BQUksTUFBSSxFQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsS0FBSyxHQUFHLE9BQU0sT0FBRztBQUFDLGdCQUFJLE9BQUssS0FBSyxVQUFVO0FBQUEsUUFBRSxDQUFDLEdBQUUsS0FBSyxHQUFHLFVBQVMsT0FBRztBQUFDLGtCQUFPLEdBQUU7QUFBQSxZQUFDLEtBQUk7QUFBQSxZQUFPLEtBQUk7QUFBSyxtQkFBSyxTQUFPLEtBQUssV0FBUyxJQUFFLEtBQUssUUFBUSxTQUFPLElBQUUsS0FBSyxTQUFPO0FBQUU7QUFBQSxZQUFNLEtBQUk7QUFBQSxZQUFPLEtBQUk7QUFBUSxtQkFBSyxTQUFPLEtBQUssV0FBUyxLQUFLLFFBQVEsU0FBTyxJQUFFLElBQUUsS0FBSyxTQUFPO0FBQUU7QUFBQSxZQUFNLEtBQUk7QUFBUSxtQkFBSyxZQUFZO0FBQUU7QUFBQSxVQUFLO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsSUFBSSxTQUFRO0FBQUMsZUFBTyxLQUFLLFFBQVEsS0FBSyxNQUFNLEVBQUU7QUFBQSxNQUFLO0FBQUEsTUFBQyxZQUFXO0FBQUMsY0FBTSxJQUFFLEtBQUssTUFBTSxXQUFTLEtBQUssUUFBUTtBQUFPLGFBQUssUUFBTSxJQUFFLENBQUMsSUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFHLEVBQUUsS0FBSztBQUFBLE1BQUU7QUFBQSxNQUFDLGNBQWE7QUFBQyxjQUFNLElBQUUsS0FBSyxNQUFNLFNBQVMsS0FBSyxNQUFNO0FBQUUsYUFBSyxRQUFNLElBQUUsS0FBSyxNQUFNLE9BQU8sT0FBRyxNQUFJLEtBQUssTUFBTSxJQUFFLENBQUMsR0FBRyxLQUFLLE9B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LGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsUUFBVTtBQUNsRCxpQkFBTztBQUFBLFFBQ1Q7QUFDQSxZQUFLLE1BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQ1YsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsT0FBUztBQUNoRCxpQkFBTztBQUFBLFFBQ1Q7QUFDQSxZQUFLLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFNBQVUsYUFDVixTQUFVLGFBQ1YsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUNWLFVBQVcsYUFBYSxhQUFhLFVBQ3JDLFVBQVcsYUFBYSxhQUFhLFVBQ3JDLFVBQVcsYUFBYSxhQUFhLFVBQ3JDLFVBQVcsYUFBYSxhQUFhLFVBQ3JDLFVBQVcsYUFBYSxhQUFhLFVBQ3JDLFVBQVcsYUFBYSxhQUFhLFdBQ3JDLFdBQVksYUFBYSxhQUFhLFNBQVc7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RCxRQUFRO0FBQ04sVUFBTSxJQUFJO0FBQUEsTUFDUiw2QkFBNkIsV0FBVztBQUFBO0FBQUEsSUFFMUM7QUFBQSxFQUNGO0FBRUEsUUFBTSxjQUFjO0FBQUE7QUFHcEIsUUFBTSxhQUFhLGtCQUFrQixRQUFRO0FBQzdDLE1BQUksQ0FBQyxZQUFZO0FBQ2YsVUFBTSxJQUFJO0FBQUEsTUFDUiwwREFBMEQsV0FBVztBQUFBLEVBQ3pFLFdBQVc7QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFFBQU0sUUFBUSxvQkFBb0IsVUFBVTtBQUM1QyxNQUFJLENBQUMsT0FBTztBQUNWLFVBQU0sSUFBSTtBQUFBLE1BQ1IsK0RBQStELFdBQVcscUJBQXFCLFVBQVU7QUFBQSxFQUM3RyxXQUFXO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLGVBQWUsZUFBZUEsSUFBVztBQUN2QyxNQUFJO0FBQ0YsVUFBTSxHQUFHLE9BQU8sS0FBSyxRQUFRQSxJQUFHLGNBQWMsR0FBRyxHQUFHLFVBQVUsSUFBSTtBQUNsRSxXQUFPO0FBQUEsRUFDVCxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjsiLAogICJuYW1lcyI6IFsiZGVmYXVsdHMiLCAicCIsICJjIiwgImwiLCAidGV4dCIsICJzIiwgInR0eSIsICJpc0NvbG9yU3VwcG9ydGVkIiwgInJlcGxhY2VDbG9zZSIsICJjcmVhdGVDb2xvcnMiLCAiYyIsICJlbnYiLCAiYW5zaVJlZ2V4IiwgInN0cmlwQW5zaSIsICJfIiwgIm0iLCAiZ2V0Q29sb3IiLCAiY3JlYXRlQ29uc29sYSIsICJpc0NJIiwgInVuaWNvZGUiLCAicyIsICJ0ZXh0IiwgImMiLCAibCIsICJjIiwgInAiLCAiaiIsICJkZWZhdWx0cyIsICJyZWdleCIsICJmIiwgImoiLCAiSCIsICJLIiwgIlciLCAiTSIsICJIMiIsICJiIiwgImMiLCAiZyIsICJoIiwgInAiLCAic3Rkb3V0Il0KfQo=
3440
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4yLjMvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9jb3JlLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLjA2YWQ4YTY0Lm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3V0aWxzLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L2NodW5rcy9wcm9tcHQubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMi4zL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3Qvc2hhcmVkL2NvbnNvbGEuMzZjMDAzNGYubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMi4zL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3QvaW5kZXgubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaXR0eUAwLjEuNi9ub2RlX21vZHVsZXMvY2l0dHkvZGlzdC9pbmRleC5tanMiLCAiLi4vaW5kZXgudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL29oYXNoQDEuMS4zL25vZGVfbW9kdWxlcy9vaGFzaC9kaXN0L2luZGV4Lm1qcyIsICIuLi8uLi91dGlscy9pbmRleC50cyIsICIuLi9wYWNrYWdlLmpzb24iLCAiLi4vdGVtcGxhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IExvZ0xldmVscyA9IHtcbiAgc2lsZW50OiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gIGZhdGFsOiAwLFxuICBlcnJvcjogMCxcbiAgd2FybjogMSxcbiAgbG9nOiAyLFxuICBpbmZvOiAzLFxuICBzdWNjZXNzOiAzLFxuICBmYWlsOiAzLFxuICByZWFkeTogMyxcbiAgc3RhcnQ6IDMsXG4gIGJveDogMyxcbiAgZGVidWc6IDQsXG4gIHRyYWNlOiA1LFxuICB2ZXJib3NlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbn07XG5jb25zdCBMb2dUeXBlcyA9IHtcbiAgLy8gU2lsZW50XG4gIHNpbGVudDoge1xuICAgIGxldmVsOiAtMVxuICB9LFxuICAvLyBMZXZlbCAwXG4gIGZhdGFsOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5mYXRhbFxuICB9LFxuICBlcnJvcjoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZXJyb3JcbiAgfSxcbiAgLy8gTGV2ZWwgMVxuICB3YXJuOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy53YXJuXG4gIH0sXG4gIC8vIExldmVsIDJcbiAgbG9nOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5sb2dcbiAgfSxcbiAgLy8gTGV2ZWwgM1xuICBpbmZvOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5pbmZvXG4gIH0sXG4gIHN1Y2Nlc3M6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLnN1Y2Nlc3NcbiAgfSxcbiAgZmFpbDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZmFpbFxuICB9LFxuICByZWFkeToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBzdGFydDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBib3g6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLmluZm9cbiAgfSxcbiAgLy8gTGV2ZWwgNFxuICBkZWJ1Zzoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZGVidWdcbiAgfSxcbiAgLy8gTGV2ZWwgNVxuICB0cmFjZToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMudHJhY2VcbiAgfSxcbiAgLy8gVmVyYm9zZVxuICB2ZXJib3NlOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy52ZXJib3NlXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBfZGVmdShiYXNlT2JqZWN0LCBkZWZhdWx0cywgbmFtZXNwYWNlID0gXCIuXCIsIG1lcmdlcikge1xuICBpZiAoIWlzT2JqZWN0KGRlZmF1bHRzKSkge1xuICAgIHJldHVybiBfZGVmdShiYXNlT2JqZWN0LCB7fSwgbmFtZXNwYWNlLCBtZXJnZXIpO1xuICB9XG4gIGNvbnN0IG9iamVjdCA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzKTtcbiAgZm9yIChjb25zdCBrZXkgaW4gYmFzZU9iamVjdCkge1xuICAgIGlmIChrZXkgPT09IFwiX19wcm90b19fXCIgfHwga2V5ID09PSBcImNvbnN0cnVjdG9yXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGJhc2VPYmplY3Rba2V5XTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChtZXJnZXIgJiYgbWVyZ2VyKG9iamVjdCwga2V5LCB2YWx1ZSwgbmFtZXNwYWNlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KG9iamVjdFtrZXldKSkge1xuICAgICAgb2JqZWN0W2tleV0gPSBbLi4udmFsdWUsIC4uLm9iamVjdFtrZXldXTtcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSAmJiBpc09iamVjdChvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gX2RlZnUoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvYmplY3Rba2V5XSxcbiAgICAgICAgKG5hbWVzcGFjZSA/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/IGF3YWl0IGNtZC5tZXRhKCkgOiBhd2FpdCBjbWQubWV0YTtcbiAgICAgIGlmICghbWV0YT8udmVyc2lvbikge1xuICAgICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoXCJObyB2ZXJzaW9uIHNwZWNpZmllZFwiLCBcIkVfTk9fVkVSU0lPTlwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGEubG9nKG1ldGEudmVyc2lvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoY21kLCB7IHJhd0FyZ3MgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGlzQ0xJRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIENMSUVycm9yO1xuICAgIGlmICghaXNDTElFcnJvcikge1xuICAgICAgY29uc29sYS5lcnJvcihlcnJvciwgXCJcXG5cIik7XG4gICAgfVxuICAgIGlmIChpc0NMSUVycm9yKSB7XG4gICAgICBhd2FpdCBzaG93VXNhZ2UkMSguLi5hd2FpdCByZXNvbHZlU3ViQ29tbWFuZChjbWQsIHJhd0FyZ3MpKTtcbiAgICB9XG4gICAgY29uc29sYS5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZU1haW4oY21kKSB7XG4gIHJldHVybiAob3B0cyA9IHt9KSA9PiBydW5NYWluKGNtZCwgb3B0cyk7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZU1haW4sIGRlZmluZUNvbW1hbmQsIHBhcnNlQXJncywgcmVuZGVyVXNhZ2UsIHJ1bkNvbW1hbmQsIHJ1bk1haW4sIHNob3dVc2FnZSB9O1xuIiwgImltcG9ydCB7IGRlZmluZUNvbW1hbmQsIHJ1bk1haW4gfSBmcm9tIFwiY2l0dHlcIjtcbmltcG9ydCBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0XCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGV6U3Bhd24gZnJvbSBcIkBqc2RldnRvb2xzL2V6LXNwYXduXCI7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSBcIm9oYXNoXCI7XG5pbXBvcnQgZnNTeW5jIGZyb20gXCJmc1wiO1xuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgZGV0ZWN0IH0gZnJvbSBcInBhY2thZ2UtbWFuYWdlci1kZXRlY3RvclwiO1xuaW1wb3J0IHsgZ2V0UGFja2FnZU1hbmlmZXN0LCB0eXBlIFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gXCJxdWVyeS1yZWdpc3RyeVwiO1xuaW1wb3J0IHR5cGUgeyBDb21tZW50IH0gZnJvbSBcIkBwa2ctcHItbmV3L3V0aWxzXCI7XG5pbXBvcnQge1xuICBhYmJyZXZpYXRlQ29tbWl0SGFzaCxcbiAgZXh0cmFjdE93bmVyQW5kUmVwbyxcbiAgZXh0cmFjdFJlcG9zaXRvcnksXG59IGZyb20gXCJAcGtnLXByLW5ldy91dGlsc1wiO1xuaW1wb3J0IHsgZ2xvYiwgZ2xvYlN5bmMgfSBmcm9tIFwidGlueWdsb2JieVwiO1xuaW1wb3J0IGlnbm9yZSBmcm9tIFwiaWdub3JlXCI7XG5pbXBvcnQgXCIuL2Vudmlyb25tZW50c1wiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi9wYWNrYWdlLmpzb25cIiB3aXRoIHsgdHlwZTogXCJqc29uXCIgfTtcbmltcG9ydCB7IGlzQmluYXJ5RmlsZSB9IGZyb20gXCJpc2JpbmFyeWZpbGVcIjtcbmltcG9ydCB7IHJlYWRQYWNrYWdlSlNPTiwgd3JpdGVQYWNrYWdlSlNPTiB9IGZyb20gXCJwa2ctdHlwZXNcIjtcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRUZW1wbGF0ZSB9IGZyb20gXCIuL3RlbXBsYXRlXCI7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgdmFyIEFQSV9VUkw6IHN0cmluZztcbn1cblxudHlwZSBPdXRwdXRNZXRhZGF0YSA9IHtcbiAgcGFja2FnZXM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgc2hhc3VtOiBzdHJpbmc7XG4gIH1bXTtcbiAgdGVtcGxhdGVzOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICB9W107XG59O1xuXG5jb25zdCBhcGlVcmwgPSBwcm9jZXNzLmVudi5BUElfVVJMID8/IEFQSV9VUkw7XG5jb25zdCBwdWJsaXNoVXJsID0gbmV3IFVSTChcIi9wdWJsaXNoXCIsIGFwaVVybCk7XG5cbmNvbnN0IG1haW4gPSBkZWZpbmVDb21tYW5kKHtcbiAgbWV0YToge1xuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5hbWU6IFwic3RhY2tibGl0elwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgQ0xJIGZvciBwa2cucHIubmV3IChDb250aW51b3VzIFJlbGVhc2VzKVwiLFxuICB9LFxuICBzdWJDb21tYW5kczoge1xuICAgIHB1Ymxpc2g6ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBjb21wYWN0OiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImNvbXBhY3QgdXJscy4gVGhlIHNob3J0ZXN0IGZvcm0gb2YgdXJscyBsaWtlIHBrZy5wci5uZXcvdGlueWJlbmNoQGE4MzJhNTUpXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwZWVyRGVwczoge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJoYW5kbGUgcGVlckRlcGVuZGVuY2llcyBieSBzZXR0aW5nIHRoZSB3b3Jrc3BhY2UgdmVyc2lvbiBpbnN0ZWFkIG9mIHdoYXQgaGFzIGJlZW4gc2V0IGluIHRoZSBwZWVyRGVwcyBpdHNlbGYuIC0tcGVlckRlcHMgbm90IGJlaW5nIHRydWUgd291bGQgbGVhdmUgcGVlckRlcGVuZGVuY2llcyB0byB0aGUgcGFja2FnZSBtYW5hZ2VyIGl0c2VsZiAobnBtLCBwbnBtKVwiLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwbnBtOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcInVzZSBgcG5wbSBwYWNrYCBpbnN0ZWFkIG9mIGBucG0gcGFjayAtLWpzb25gXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0ZW1wbGF0ZToge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImdlbmVyYXRlIHN0YWNrYmxpdHogdGVtcGxhdGVzIG91dCBvZiBkaXJlY3RvcmllcyBpbiB0aGUgY3VycmVudCByZXBvIHdpdGggdGhlIG5ldyBidWlsdCBwYWNrYWdlc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tbWVudDoge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIiwgLy8gXCJvZmZcIiwgXCJjcmVhdGVcIiwgXCJ1cGRhdGVcIiAoZGVmYXVsdClcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgXCJvZmZcIiBmb3Igbm8gY29tbWVudHMgKHNpbGVudCBtb2RlKS4gXCJjcmVhdGVcIiBmb3IgY29tbWVudCBvbiBlYWNoIHB1Ymxpc2guIFwidXBkYXRlXCIgZm9yIG9uZSBjb21tZW50IGFjcm9zcyB0aGUgcHVsbCByZXF1ZXN0IHdpdGggZWRpdHMgb24gZWFjaCBwdWJsaXNoIChkZWZhdWx0KWAsXG4gICAgICAgICAgICBkZWZhdWx0OiBcInVwZGF0ZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvbmx5LXRlbXBsYXRlc1wiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgZ2VuZXJhdGUgb25seSBzdGFja2JsaXR6IHRlbXBsYXRlc2AsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGpzb246IHtcbiAgICAgICAgICAgIHR5cGU6IFwibWl4ZWRcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgU2F2ZSBtZXRhZGF0YSB0byBhIEpTT04gZmlsZS4gSWYgdHJ1ZSwgbG9nIHRoZSBvdXRwdXQgZm9yIHBpcGluZy4gSWYgYSBzdHJpbmcsIHNhdmUgdGhlIG91dHB1dCB0byB0aGUgc3BlY2lmaWVkIGZpbGUgcGF0aC5gLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJ1bjogYXN5bmMgKHsgYXJncyB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aHMgPSAoXG4gICAgICAgICAgICBhcmdzLl8ubGVuZ3RoXG4gICAgICAgICAgICAgID8gYXJncy5fLmZsYXRNYXAoKHApID0+XG4gICAgICAgICAgICAgICAgICBnbG9iU3luYyhbcF0sIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kRGlyZWN0b3JpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBvbmx5RGlyZWN0b3JpZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogW1wiLlwiXVxuICAgICAgICAgICkubWFwKChwKSA9PiBwYXRoLnJlc29sdmUocC50cmltKCkpKTtcblxuICAgICAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IChcbiAgICAgICAgICAgIHR5cGVvZiBhcmdzLnRlbXBsYXRlID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgID8gW2FyZ3MudGVtcGxhdGVdXG4gICAgICAgICAgICAgIDogKFsuLi4oYXJncy50ZW1wbGF0ZSB8fCBbXSldIGFzIHN0cmluZ1tdKVxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5mbGF0TWFwKChwKSA9PlxuICAgICAgICAgICAgICBnbG9iU3luYyhbcF0sIHtcbiAgICAgICAgICAgICAgICBleHBhbmREaXJlY3RvcmllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgb25seURpcmVjdG9yaWVzOiB0cnVlLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5tYXAoKHApID0+IHBhdGgucmVzb2x2ZShwLnRyaW0oKSkpO1xuXG4gICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICAgIGNvbnN0IGlzQ29tcGFjdCA9ICEhYXJncy5jb21wYWN0O1xuICAgICAgICAgIGNvbnN0IGlzUG5wbSA9ICEhYXJncy5wbnBtO1xuICAgICAgICAgIGNvbnN0IGlzUGVlckRlcHNFbmFibGVkID0gISFhcmdzLnBlZXJEZXBzO1xuICAgICAgICAgIGNvbnN0IGlzT25seVRlbXBsYXRlcyA9ICEhYXJnc1tcIm9ubHktdGVtcGxhdGVzXCJdO1xuXG4gICAgICAgICAgY29uc3QgY29tbWVudDogQ29tbWVudCA9IGFyZ3MuY29tbWVudCBhcyBDb21tZW50O1xuXG4gICAgICAgICAgaWYgKCFwcm9jZXNzLmVudi5URVNUICYmIHByb2Nlc3MuZW52LkdJVEhVQl9BQ1RJT05TICE9PSBcInRydWVcIikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJDb250aW51b3VzIFJlbGVhc2VzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBHaXRodWIgQWN0aW9ucy5cIixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgR0lUSFVCX1JFUE9TSVRPUlksXG4gICAgICAgICAgICBHSVRIVUJfUlVOX0lELFxuICAgICAgICAgICAgR0lUSFVCX1JVTl9BVFRFTVBULFxuICAgICAgICAgICAgR0lUSFVCX0FDVE9SX0lELFxuICAgICAgICAgIH0gPSBwcm9jZXNzLmVudjtcblxuICAgICAgICAgIGNvbnN0IFtvd25lciwgcmVwb10gPSBHSVRIVUJfUkVQT1NJVE9SWS5zcGxpdChcIi9cIik7XG5cbiAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIG93bmVyLFxuICAgICAgICAgICAgcmVwbyxcbiAgICAgICAgICAgIHJ1bjogTnVtYmVyKEdJVEhVQl9SVU5fSUQpLFxuICAgICAgICAgICAgYXR0ZW1wdDogTnVtYmVyKEdJVEhVQl9SVU5fQVRURU1QVCksXG4gICAgICAgICAgICBhY3RvcjogTnVtYmVyKEdJVEhVQl9BQ1RPUl9JRCksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGtleSA9IGhhc2gobWV0YWRhdGEpO1xuXG4gICAgICAgICAgY29uc3QgY2hlY2tSZXNwb25zZSA9IGF3YWl0IGZldGNoKG5ldyBVUkwoXCIvY2hlY2tcIiwgYXBpVXJsKSwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgIHJlcG8sXG4gICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKCFjaGVja1Jlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGF3YWl0IGNoZWNrUmVzcG9uc2UudGV4dCgpKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IHNoYSB9ID0gYXdhaXQgY2hlY2tSZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgY29uc3QgYWJicmV2aWF0ZWRTaGEgPSBhYmJyZXZpYXRlQ29tbWl0SGFzaChzaGEpO1xuXG4gICAgICAgICAgY29uc3QgZGVwczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTsgLy8gcGtnLnByLm5ldyB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZVxuICAgICAgICAgIGNvbnN0IHJlYWxEZXBzOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9IGlzUGVlckRlcHNFbmFibGVkXG4gICAgICAgICAgICA/IG5ldyBNYXAoKVxuICAgICAgICAgICAgOiBudWxsOyAvLyByZWFsIHZlcnNpb25zIG9mIHRoZSBwYWNrYWdlLCB1c2VmdWwgZm9yIHBlZXJEZXBlbmRlbmNpZXNcblxuICAgICAgICAgIGNvbnN0IHByaW50SnNvbiA9IHR5cGVvZiBhcmdzLmpzb24gPT09IFwiYm9vbGVhblwiO1xuICAgICAgICAgIGNvbnN0IHNhdmVKc29uID0gdHlwZW9mIGFyZ3MuanNvbiA9PT0gXCJzdHJpbmdcIjtcbiAgICAgICAgICBjb25zdCBqc29uRmlsZVBhdGggPSBzYXZlSnNvbiA/IGFyZ3MuanNvbiA6IFwiXCI7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0TWV0YWRhdGE6IE91dHB1dE1ldGFkYXRhID0ge1xuICAgICAgICAgICAgcGFja2FnZXM6IFtdLFxuICAgICAgICAgICAgdGVtcGxhdGVzOiBbXSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBoYXNQYWNrYWdlSnNvbihwKSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSlNPTihwSnNvblBhdGgpO1xuXG4gICAgICAgICAgICBpZiAoIXBKc29uLm5hbWUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIm5hbWVcIiBmaWVsZCBpbiAke3BKc29uUGF0aH0gc2hvdWxkIGJlIGRlZmluZWRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwSnNvbi5wcml2YXRlKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNDb21wYWN0KSB7XG4gICAgICAgICAgICAgIGF3YWl0IHZlcmlmeUNvbXBhY3RNb2RlKHBKc29uLm5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBkZXBVcmwgPSBuZXcgVVJMKFxuICAgICAgICAgICAgICBgLyR7b3duZXJ9LyR7cmVwb30vJHtwSnNvbi5uYW1lfUAke2FiYnJldmlhdGVkU2hhfWAsXG4gICAgICAgICAgICAgIGFwaVVybCxcbiAgICAgICAgICAgICkuaHJlZjtcbiAgICAgICAgICAgIGRlcHMuc2V0KHBKc29uLm5hbWUsIGRlcFVybCk7XG4gICAgICAgICAgICByZWFsRGVwcz8uc2V0KHBKc29uLm5hbWUsIHBKc29uLnZlcnNpb24gPz8gZGVwVXJsKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzb3VyY2UgPSBhd2FpdCBmZXRjaChkZXBVcmwpO1xuICAgICAgICAgICAgaWYgKHJlc291cmNlLm9rKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgJHtwSnNvbi5uYW1lfUAke2FiYnJldmlhdGVkU2hhfSB3YXMgYWxyZWFkeSBwdWJsaXNoZWQgb24gJHtkZXBVcmx9YCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ29sbGVjdCBwYWNrYWdlIG1ldGFkYXRhXG4gICAgICAgICAgICBvdXRwdXRNZXRhZGF0YS5wYWNrYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogcEpzb24ubmFtZSxcbiAgICAgICAgICAgICAgdXJsOiBkZXBVcmwsXG4gICAgICAgICAgICAgIHNoYXN1bTogXCJcIiwgLy8gd2lsbCBiZSBmaWxsZWQgbGF0ZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgdGVtcGxhdGVEaXIgb2YgdGVtcGxhdGVzKSB7XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBoYXNQYWNrYWdlSnNvbih0ZW1wbGF0ZURpcikpKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgc2tpcHBpbmcgJHt0ZW1wbGF0ZURpcn0gYmVjYXVzZSB0aGVyZSdzIG5vIHBhY2thZ2UuanNvbiBmaWxlYCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUodGVtcGxhdGVEaXIsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpTT04ocEpzb25QYXRoKTtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbi5uYW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJuYW1lXCIgZmllbGQgaW4gJHtwSnNvblBhdGh9IHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcInByZXBhcmluZyB0ZW1wbGF0ZTpcIiwgcEpzb24ubmFtZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3RvcmUgPSBhd2FpdCB3cml0ZURlcHModGVtcGxhdGVEaXIsIGRlcHMsIHJlYWxEZXBzKTtcblxuICAgICAgICAgICAgY29uc3QgZ2l0aWdub3JlUGF0aCA9IHBhdGguam9pbih0ZW1wbGF0ZURpciwgXCIuZ2l0aWdub3JlXCIpO1xuICAgICAgICAgICAgY29uc3QgaWcgPSBpZ25vcmUoKS5hZGQoXCJub2RlX21vZHVsZXNcIikuYWRkKFwiLmdpdFwiKTtcblxuICAgICAgICAgICAgaWYgKGZzU3luYy5leGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGdpdGlnbm9yZUNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShnaXRpZ25vcmVQYXRoLCBcInV0ZjhcIik7XG4gICAgICAgICAgICAgIGlnLmFkZChnaXRpZ25vcmVDb250ZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iKFtcIioqLypcIl0sIHtcbiAgICAgICAgICAgICAgY3dkOiB0ZW1wbGF0ZURpcixcbiAgICAgICAgICAgICAgZG90OiB0cnVlLFxuICAgICAgICAgICAgICBvbmx5RmlsZXM6IHRydWUsXG4gICAgICAgICAgICAgIGlnbm9yZTogW1wiKiovbm9kZV9tb2R1bGVzXCIsIFwiLmdpdFwiXSwgLy8gYWx3YXlzIGlnbm9yZSBub2RlX21vZHVsZXMgYW5kIC5naXRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEZpbGVzID0gZmlsZXMuZmlsdGVyKChmaWxlKSA9PiAhaWcuaWdub3JlcyhmaWxlKSk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgZmlsdGVyZWRGaWxlcykge1xuICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKHRlbXBsYXRlRGlyLCBmaWxlUGF0aCkpO1xuICAgICAgICAgICAgICBjb25zdCBpc0JpbmFyeSA9IGF3YWl0IGlzQmluYXJ5RmlsZShmaWxlKTtcbiAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaWxlLmJ1ZmZlcl0sIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgICAgICAgIGB0ZW1wbGF0ZToke3BKc29uLm5hbWV9OiR7ZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVQYXRoKX1gLFxuICAgICAgICAgICAgICAgIGlzQmluYXJ5ID8gYmxvYiA6IGF3YWl0IGJsb2IudGV4dCgpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgcmVzdG9yZSgpO1xuXG4gICAgICAgICAgICAvLyBDb2xsZWN0IHRlbXBsYXRlIG1ldGFkYXRhXG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZVVybCA9IG5ldyBVUkwoXG4gICAgICAgICAgICAgIGAvJHtvd25lcn0vJHtyZXBvfS90ZW1wbGF0ZS8ke3BKc29uLm5hbWV9YCxcbiAgICAgICAgICAgICAgYXBpVXJsLFxuICAgICAgICAgICAgKS5ocmVmO1xuICAgICAgICAgICAgb3V0cHV0TWV0YWRhdGEudGVtcGxhdGVzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBwSnNvbi5uYW1lLFxuICAgICAgICAgICAgICB1cmw6IHRlbXBsYXRlVXJsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgbm9EZWZhdWx0VGVtcGxhdGUgPSBhcmdzLnRlbXBsYXRlID09PSBmYWxzZTtcblxuICAgICAgICAgIGlmICghbm9EZWZhdWx0VGVtcGxhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2plY3QgPSBjcmVhdGVEZWZhdWx0VGVtcGxhdGUoXG4gICAgICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhkZXBzLmVudHJpZXMoKSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIE9iamVjdC5rZXlzKHByb2plY3QpKSB7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICAgICAgICBgdGVtcGxhdGU6ZGVmYXVsdDoke2VuY29kZVVSSUNvbXBvbmVudChmaWxlUGF0aCl9YCxcbiAgICAgICAgICAgICAgICBwcm9qZWN0W2ZpbGVQYXRoXSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCByZXN0b3JlTWFwID0gbmV3IE1hcDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2Ygd3JpdGVEZXBzPj5cbiAgICAgICAgICA+KCk7XG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBoYXNQYWNrYWdlSnNvbihwKSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSlNPTihwSnNvblBhdGgpO1xuXG4gICAgICAgICAgICBpZiAocEpzb24ucHJpdmF0ZSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdG9yZU1hcC5zZXQocCwgYXdhaXQgd3JpdGVEZXBzKHAsIGRlcHMsIHJlYWxEZXBzKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2hhc3VtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgaWYgKCEoYXdhaXQgaGFzUGFja2FnZUpzb24ocCkpKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgc2tpcHBpbmcgJHtwfSBiZWNhdXNlIHRoZXJlJ3Mgbm8gcGFja2FnZS5qc29uIGZpbGVgLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBKc29uUGF0aCA9IHBhdGgucmVzb2x2ZShwLCBcInBhY2thZ2UuanNvblwiKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKU09OKHBKc29uUGF0aCk7XG5cbiAgICAgICAgICAgICAgaWYgKCFwSnNvbi5uYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgYFwibmFtZVwiIGZpZWxkIGluICR7cEpzb25QYXRofSBzaG91bGQgYmUgZGVmaW5lZGAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocEpzb24ucHJpdmF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2tpcHBpbmcgJHtwfSBiZWNhdXNlIHRoZSBwYWNrYWdlIGlzIHByaXZhdGVgKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHsgZmlsZW5hbWUsIHNoYXN1bSB9ID0gYXdhaXQgcmVzb2x2ZVRhcmJhbGwoXG4gICAgICAgICAgICAgICAgaXNQbnBtID8gXCJwbnBtXCIgOiBcIm5wbVwiLFxuICAgICAgICAgICAgICAgIHAsXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgc2hhc3Vtc1twSnNvbi5uYW1lXSA9IHNoYXN1bTtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBzaGFzdW0gZm9yICR7cEpzb24ubmFtZX0oJHtmaWxlbmFtZX0pOiAke3NoYXN1bX1gKTtcblxuICAgICAgICAgICAgICBjb25zdCBvdXRwdXRQa2cgPSBvdXRwdXRNZXRhZGF0YS5wYWNrYWdlcy5maW5kKFxuICAgICAgICAgICAgICAgIChwKSA9PiBwLm5hbWUgPT09IHBKc29uLm5hbWUsXG4gICAgICAgICAgICAgICkhO1xuICAgICAgICAgICAgICBvdXRwdXRQa2cuc2hhc3VtID0gc2hhc3VtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLnJlc29sdmUocCwgZmlsZW5hbWUpKTtcblxuICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbGVdLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChgcGFja2FnZToke3BKc29uLm5hbWV9YCwgYmxvYiwgZmlsZW5hbWUpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgYXdhaXQgcmVzdG9yZU1hcC5nZXQocCk/LigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHBhY2thZ2VNYW5hZ2VyID0gYXdhaXQgZGV0ZWN0KCk7XG4gICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocHVibGlzaFVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgXCJzYi1jb21tZW50XCI6IGNvbW1lbnQsXG4gICAgICAgICAgICAgIFwic2ItY29tcGFjdFwiOiBgJHtpc0NvbXBhY3R9YCxcbiAgICAgICAgICAgICAgXCJzYi1rZXlcIjoga2V5LFxuICAgICAgICAgICAgICBcInNiLXNoYXN1bXNcIjogSlNPTi5zdHJpbmdpZnkoc2hhc3VtcyksXG4gICAgICAgICAgICAgIFwic2ItcnVuLWlkXCI6IEdJVEhVQl9SVU5fSUQsXG4gICAgICAgICAgICAgIFwic2ItcGFja2FnZS1tYW5hZ2VyXCI6IHBhY2thZ2VNYW5hZ2VyLmFnZW50ID8/IFwibnBtXCIsXG4gICAgICAgICAgICAgIFwic2Itb25seS10ZW1wbGF0ZXNcIjogYCR7aXNPbmx5VGVtcGxhdGVzfWAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgbGF0ZXJSZXMgPSBhd2FpdCByZXMuY2xvbmUoKS5qc29uKCk7XG4gICAgICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICAgICAgcmVzLnN0YXR1cyxcbiAgICAgICAgICAgIDIwMCxcbiAgICAgICAgICAgIGBwdWJsaXNoaW5nIGZhaWxlZDogJHthd2FpdCByZXMudGV4dCgpfWAsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnNvbGUud2FybihcIlxcblwiKTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgXHUyNkExXHVGRTBGIFlvdXIgbnBtIHBhY2thZ2VzIGFyZSBwdWJsaXNoZWQuXFxuJHtbLi4uZm9ybURhdGEua2V5cygpXVxuICAgICAgICAgICAgICAuZmlsdGVyKChrKSA9PiBrLnN0YXJ0c1dpdGgoXCJwYWNrYWdlOlwiKSlcbiAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAobmFtZSwgaSkgPT5cbiAgICAgICAgICAgICAgICAgIGAke25hbWUuc2xpY2UoXCJwYWNrYWdlOlwiLmxlbmd0aCl9OiBucG0gaSAke2xhdGVyUmVzLnVybHNbaV19YCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuam9pbihcIlxcblwiKX1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBvdXRwdXQgPSBKU09OLnN0cmluZ2lmeShvdXRwdXRNZXRhZGF0YSwgbnVsbCwgMik7XG4gICAgICAgICAgaWYgKHByaW50SnNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2cob3V0cHV0KTsgLy8gTG9nIG91dHB1dCBmb3IgcGlwaW5nXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzYXZlSnNvbikge1xuICAgICAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKGpzb25GaWxlUGF0aCwgb3V0cHV0KTtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgbWV0YWRhdGEgd3JpdHRlbiB0byAke2pzb25GaWxlUGF0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0sXG4gICAgbGluazogKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWV0YToge30sXG4gICAgICAgIHJ1bjogKCkgPT4ge30sXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG59KTtcblxucnVuTWFpbihtYWluKVxuICAudGhlbigoKSA9PiBwcm9jZXNzLmV4aXQoMCkpXG4gIC5jYXRjaCgoKSA9PiBwcm9jZXNzLmV4aXQoMSkpO1xuXG4vLyBUT0RPOiB3ZSdsbCBhZGQgc3VwcG9ydCBmb3IgeWFybiBpZiB1c2VycyBoaXQgaXNzdWVzIHdpdGggbnBtXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlVGFyYmFsbChwbTogXCJucG1cIiB8IFwicG5wbVwiLCBwOiBzdHJpbmcpIHtcbiAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IGV6U3Bhd24uYXN5bmMoYCR7cG19IHBhY2tgLCB7XG4gICAgc3RkaW86IFwib3ZlcmxhcHBlZFwiLFxuICAgIGN3ZDogcCxcbiAgfSk7XG4gIGNvbnN0IGxpbmVzID0gc3Rkb3V0LnNwbGl0KFwiXFxuXCIpLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3QgZmlsZW5hbWUgPSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS50cmltKCk7XG5cbiAgY29uc3Qgc2hhc3VtID0gY3JlYXRlSGFzaChcInNoYTFcIilcbiAgICAudXBkYXRlKGF3YWl0IGZzLnJlYWRGaWxlKHBhdGgucmVzb2x2ZShwLCBmaWxlbmFtZSkpKVxuICAgIC5kaWdlc3QoXCJoZXhcIik7XG5cbiAgcmV0dXJuIHsgZmlsZW5hbWUsIHNoYXN1bSB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZURlcHMoXG4gIHA6IHN0cmluZyxcbiAgZGVwczogTWFwPHN0cmluZywgc3RyaW5nPixcbiAgcmVhbERlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gfCBudWxsLFxuKSB7XG4gIGNvbnN0IHBKc29uUGF0aCA9IHBhdGgucmVzb2x2ZShwLCBcInBhY2thZ2UuanNvblwiKTtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKHBKc29uUGF0aCwgXCJ1dGYtOFwiKTtcblxuICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSlNPTihwSnNvblBhdGgpO1xuXG4gIGhpamFja0RlcHMoZGVwcywgcEpzb24uZGVwZW5kZW5jaWVzKTtcbiAgaGlqYWNrRGVwcyhkZXBzLCBwSnNvbi5kZXZEZXBlbmRlbmNpZXMpO1xuICBoaWphY2tEZXBzKGRlcHMsIHBKc29uLm9wdGlvbmFsRGVwZW5kZW5jaWVzKTtcblxuICBpZiAocmVhbERlcHMpIHtcbiAgICBoaWphY2tEZXBzKHJlYWxEZXBzLCBwSnNvbi5wZWVyRGVwZW5kZW5jaWVzKTtcbiAgfVxuXG4gIGF3YWl0IHdyaXRlUGFja2FnZUpTT04ocEpzb25QYXRoLCBwSnNvbik7XG5cbiAgcmV0dXJuICgpID0+IGZzLndyaXRlRmlsZShwSnNvblBhdGgsIGNvbnRlbnQpO1xufVxuXG5mdW5jdGlvbiBoaWphY2tEZXBzKFxuICBuZXdEZXBzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LFxuICBvbGREZXBzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbikge1xuICBpZiAoIW9sZERlcHMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yIChjb25zdCBbbmV3RGVwLCB1cmxdIG9mIG5ld0RlcHMpIHtcbiAgICBpZiAobmV3RGVwIGluIG9sZERlcHMpIHtcbiAgICAgIG9sZERlcHNbbmV3RGVwXSA9IHVybDtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q29tcGFjdE1vZGUocGFja2FnZU5hbWU6IHN0cmluZykge1xuICBsZXQgbWFuaWZlc3Q6IFBhY2thZ2VNYW5pZmVzdDtcblxuICB0cnkge1xuICAgIG1hbmlmZXN0ID0gYXdhaXQgZ2V0UGFja2FnZU1hbmlmZXN0KHBhY2thZ2VOYW1lKTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYHBrZy1wci1uZXcgY2Fubm90IHJlc29sdmUgJHtwYWNrYWdlTmFtZX0gZnJvbSBucG0uIC0tY29tcGFjdCBmbGFnIGRlcGVuZHMgb24gdGhlIHBhY2thZ2UgYmVpbmcgYXZhaWxhYmxlIGluIG5wbS5cbk1ha2Ugc3VyZSB0byBoYXZlIHlvdXIgcGFja2FnZSBvbiBucG0gZmlyc3QuYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBgTWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSB0aGUgJ3JlcG9zaXRvcnknIC8gJ3JlcG9zaXRvcnkudXJsJyBmaWVsZCBpbiBpdHMgcGFja2FnZS5qc29uIHByb3Blcmx5LlxuU2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpL3YxMC9jb25maWd1cmluZy1ucG0vcGFja2FnZS1qc29uI3JlcG9zaXRvcnkgZm9yIGRldGFpbHMuYDtcblxuICBjb25zdCByZXBvc2l0b3J5ID0gZXh0cmFjdFJlcG9zaXRvcnkobWFuaWZlc3QpO1xuICBpZiAoIXJlcG9zaXRvcnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgcGtnLXByLW5ldyBjYW5ub3QgZXh0cmFjdCB0aGUgcmVwb3NpdG9yeSBsaW5rIGZyb20gdGhlICR7cGFja2FnZU5hbWV9IG1hbmlmZXN0LiAtLWNvbXBhY3QgZmxhZyByZXF1aXJlcyB0aGUgbGluayB0byBiZSBwcmVzZW50LlxuJHtpbnN0cnVjdGlvbn1gLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBtYXRjaCA9IGV4dHJhY3RPd25lckFuZFJlcG8ocmVwb3NpdG9yeSk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgcGtnLXByLW5ldyBjYW5ub3QgZXh0cmFjdCB0aGUgb3duZXIgYW5kIHJlcG8gbmFtZXMgZnJvbSB0aGUgJHtwYWNrYWdlTmFtZX0gcmVwb3NpdG9yeSBsaW5rOiAke3JlcG9zaXRvcnl9LiAtLWNvbXBhY3QgZmxhZyByZXF1aXJlcyB0aGVzZSBuYW1lcy5cbiR7aW5zdHJ1Y3Rpb259YCxcbiAgICApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhc1BhY2thZ2VKc29uKHA6IHN0cmluZykge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLmFjY2VzcyhwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIiksIGZzLmNvbnN0YW50cy5GX09LKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCAiY29uc3QgZGVmYXVsdHMgPSBPYmplY3QuZnJlZXplKHtcbiAgaWdub3JlVW5rbm93bjogZmFsc2UsXG4gIHJlc3BlY3RUeXBlOiBmYWxzZSxcbiAgcmVzcGVjdEZ1bmN0aW9uTmFtZXM6IGZhbHNlLFxuICByZXNwZWN0RnVuY3Rpb25Qcm9wZXJ0aWVzOiBmYWxzZSxcbiAgdW5vcmRlcmVkT2JqZWN0czogdHJ1ZSxcbiAgdW5vcmRlcmVkQXJyYXlzOiBmYWxzZSxcbiAgdW5vcmRlcmVkU2V0czogZmFsc2UsXG4gIGV4Y2x1ZGVLZXlzOiB2b2lkIDAsXG4gIGV4Y2x1ZGVWYWx1ZXM6IHZvaWQgMCxcbiAgcmVwbGFjZXI6IHZvaWQgMFxufSk7XG5mdW5jdGlvbiBvYmplY3RIYXNoKG9iamVjdCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRzLCAuLi5vcHRpb25zIH07XG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucyA9IGRlZmF1bHRzO1xuICB9XG4gIGNvbnN0IGhhc2hlciA9IGNyZWF0ZUhhc2hlcihvcHRpb25zKTtcbiAgaGFzaGVyLmRpc3BhdGNoKG9iamVjdCk7XG4gIHJldHVybiBoYXNoZXIudG9TdHJpbmcoKTtcbn1cbmNvbnN0IGRlZmF1bHRQcm90b3R5cGVzS2V5cyA9IE9iamVjdC5mcmVlemUoW1xuICBcInByb3RvdHlwZVwiLFxuICBcIl9fcHJvdG9fX1wiLFxuICBcImNvbnN0cnVjdG9yXCJcbl0pO1xuZnVuY3Rpb24gY3JlYXRlSGFzaGVyKG9wdGlvbnMpIHtcbiAgbGV0IGJ1ZmYgPSBcIlwiO1xuICBsZXQgY29udGV4dCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGNvbnN0IHdyaXRlID0gKHN0cikgPT4ge1xuICAgIGJ1ZmYgKz0gc3RyO1xuICB9O1xuICByZXR1cm4ge1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfSxcbiAgICBnZXRDb250ZXh0KCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfSxcbiAgICBkaXNwYXRjaCh2YWx1ZSkge1xuICAgICAgaWYgKG9wdGlvbnMucmVwbGFjZXIpIHtcbiAgICAgICAgdmFsdWUgPSBvcHRpb25zLnJlcGxhY2VyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHR5cGUgPSB2YWx1ZSA9PT0gbnVsbCA/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/IGAke2tleX0uJHtfa2V5fWAgOiBfa2V5XG4gICAgKTtcbiAgICBoYXNoZXMucHVzaChwcm9wc1tfa2V5XS5oYXNoKTtcbiAgfVxuICByZXR1cm4gbmV3IERpZmZIYXNoZWRPYmplY3Qoa2V5LCBvYmosIGB7JHtoYXNoZXMuam9pbihcIjpcIil9fWAsIHByb3BzKTtcbn1cbmNsYXNzIERpZmZFbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKGtleSwgdHlwZSwgbmV3VmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnRvSlNPTigpO1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBcImFkZGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBBZGRlZCAgIFxcYCR7dGhpcy5rZXl9XFxgYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJyZW1vdmVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBSZW1vdmVkIFxcYCR7dGhpcy5rZXl9XFxgYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjaGFuZ2VkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBDaGFuZ2VkIFxcYCR7dGhpcy5rZXl9XFxgIGZyb20gXFxgJHt0aGlzLm9sZFZhbHVlPy50b1N0cmluZygpIHx8IFwiLVwifVxcYCB0byBcXGAke3RoaXMubmV3VmFsdWUudG9TdHJpbmcoKX1cXGBgO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY2xhc3MgRGlmZkhhc2hlZE9iamVjdCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUsIGhhc2gsIHByb3BzKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuaGFzaCA9IGhhc2g7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIGlmICh0aGlzLnByb3BzKSB7XG4gICAgICByZXR1cm4gYHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oXCIsXCIpfX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBrID0gdGhpcy5rZXkgfHwgXCIuXCI7XG4gICAgaWYgKHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiBgJHtrfSh7JHtPYmplY3Qua2V5cyh0aGlzLnByb3BzKS5qb2luKFwiLFwiKX19KWA7XG4gICAgfVxuICAgIHJldHVybiBgJHtrfSgke3RoaXMudmFsdWV9KWA7XG4gIH1cbn1cblxuZXhwb3J0IHsgZGlmZiwgaGFzaCwgaXNFcXVhbCwgbXVybXVySGFzaCwgb2JqZWN0SGFzaCwgc2hhMjU2LCBzaGEyNTZiYXNlNjQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gXCJxdWVyeS1yZWdpc3RyeVwiO1xuXG5jb25zdCBnaXRodWJVcmxSZWdleCA9XG4gIC8oPzpnaXRcXCspP2h0dHBzPzpcXC9cXC9naXRodWJcXC5jb21cXC8oW15cXC9dKylcXC8oW15cXC9dKylcXC5naXQvOyAvLyBUT0RPOiBEb24ndCB0cnVzdCB0aGlzLCBpdCdzIGNoYXRnYmQgOilcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPd25lckFuZFJlcG8oXG4gIHJlcG9zaXRvcnlVcmw6IHN0cmluZyxcbik6IFtzdHJpbmcsIHN0cmluZ10gfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSByZXBvc2l0b3J5VXJsLm1hdGNoKGdpdGh1YlVybFJlZ2V4KTtcblxuICBpZiAobWF0Y2gpIHtcbiAgICByZXR1cm4gW21hdGNoWzFdLCBtYXRjaFsyXV07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSZXBvc2l0b3J5KG1hbmlmZXN0OiBQYWNrYWdlTWFuaWZlc3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYW5pZmVzdC5yZXBvc2l0b3J5ID09PSBcInN0cmluZ1wiXG4gICAgPyBtYW5pZmVzdC5yZXBvc2l0b3J5XG4gICAgOiBtYW5pZmVzdC5yZXBvc2l0b3J5Py51cmw7XG59XG5cbmNvbnN0IGNvbW1pdExlbmd0aCA9IDc7XG5cbi8qXG4gKiBcIjA5ZWZkMDU1MzM3NGZmN2QzZTYyYjc5Mzc4ZTMxODRmNWViNTc1NzFcIiA9PiBcIjA5ZWZkMDVcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJicmV2aWF0ZUNvbW1pdEhhc2goZnVsbEhhc2g6IHN0cmluZykge1xuICByZXR1cm4gZnVsbEhhc2guc3Vic3RyaW5nKDAsIGNvbW1pdExlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1B1bGxSZXF1ZXN0KHJlZjogc3RyaW5nKSB7XG4gIHJldHVybiAhTnVtYmVyLmlzTmFOKE51bWJlcihyZWYpKTtcbn1cblxuZXhwb3J0IHR5cGUgQ29tbWVudCA9IFwib2ZmXCIgfCBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIjtcbmV4cG9ydCB0eXBlIFBhY2thZ2VNYW5hZ2VyID0gXCJucG1cIiB8IFwicG5wbVwiIHwgXCJ5YXJuXCIgfCBcImJ1blwiO1xuIiwgIntcbiAgXCJuYW1lXCI6IFwicGtnLXByLW5ld1wiLFxuICBcInZlcnNpb25cIjogXCIwLjAuMjNcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIlwiLFxuICBcIm1haW5cIjogXCJpbmRleC5qc1wiLFxuICBcInR5cGVcIjogXCJtb2R1bGVcIixcbiAgXCJiaW5cIjoge1xuICAgIFwicGtnLXByLW5ld1wiOiBcImJpbi9jbGkuanNcIlxuICB9LFxuICBcInJlcG9zaXRvcnlcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdFwiLFxuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrYmxpdHotbGFicy9wa2cucHIubmV3XCIsXG4gICAgXCJkaXJlY3RvcnlcIjogXCJwYWNrYWdlcy9jbGlcIlxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiZGV2XCI6IFwidHN1cCAtLXdhdGNoXCIsXG4gICAgXCJidWlsZFwiOiBcInRzdXBcIixcbiAgICBcImJ1aWxkOnB1Ymxpc2hcIjogXCJBUElfVVJMPWh0dHBzOi8vcGtnLnByLm5ldy8gdHN1cFwiXG4gIH0sXG4gIFwia2V5d29yZHNcIjogW10sXG4gIFwiYXV0aG9yXCI6IFwiXCIsXG4gIFwibGljZW5zZVwiOiBcIklTQ1wiLFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAanNkZXZ0b29scy9lei1zcGF3blwiOiBcIl4zLjAuNFwiLFxuICAgIFwiQG9jdG9raXQvYWN0aW9uXCI6IFwiXjYuMS4wXCIsXG4gICAgXCJpZ25vcmVcIjogXCJeNS4zLjFcIixcbiAgICBcImlzYmluYXJ5ZmlsZVwiOiBcIl41LjAuMlwiLFxuICAgIFwicGFja2FnZS1tYW5hZ2VyLWRldGVjdG9yXCI6IFwiXjAuMS4yXCIsXG4gICAgXCJwa2ctdHlwZXNcIjogXCJeMS4xLjFcIixcbiAgICBcInF1ZXJ5LXJlZ2lzdHJ5XCI6IFwiXjMuMC4xXCIsXG4gICAgXCJ0aW55Z2xvYmJ5XCI6IFwiXjAuMi4yXCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQHBrZy1wci1uZXcvdXRpbHNcIjogXCJ3b3Jrc3BhY2U6XlwiLFxuICAgIFwiY2l0dHlcIjogXCJeMC4xLjZcIixcbiAgICBcInRzdXBcIjogXCJeOC4wLjJcIlxuICB9XG59XG4iLCAiZXhwb3J0IGNvbnN0IGNyZWF0ZURlZmF1bHRUZW1wbGF0ZSA9IChcbiAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKSA9PiAoe1xuICBcImluZGV4LmpzXCI6IFwiXCIsXG4gIFwiUkVBRE1FLm1kXCI6IGBcbiMgRGVmYXVsdCBUZW1wbGF0ZVxuXG5UaGlzIGlzIGEgdGVtcGxhdGUgdGhhdCBsZXZlcmFnZXMgdGhlIGV4cGVyaW1lbnRhbCB0ZW1wbGF0ZXMgZmVhdHVyZSBpbiB0aGUgXFxgcGtnLnByLm5ld1xcYCB0b29sLlxuXG4jIyBPdmVydmlld1xuXG5UZW1wbGF0ZXMgYXJlIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGNyZWF0aW5nIGxpdmUsIGludGVyYWN0aXZlIGV4YW1wbGVzIG9mIHlvdXIgcGFja2FnZXMsIHdoaWNoIGNhbiBiZSB2ZXJ5IGJlbmVmaWNpYWwgZm9yIGJvdGggZGV2ZWxvcG1lbnQgYW5kIGRvY3VtZW50YXRpb24gcHVycG9zZXMuXG5cbkFzIGEgdXNlciwgeW91IGNhbiBjaGVjayB0aGUgcGFja2FnZS5qc29uIGZpbGUgYW5kIHNlZSB0aGUgbmV3IGdlbmVyYXRlZCBwYWNrYWdlcyEgWW91IGNhbiBqdXN0IGNvcHkgdGhvc2UgYW5kIHB1dCB0aGVtIGluIHlvdXIgcGFja2FnZS5qc29uIG9yIGluc3RhbGwgdGhlbSB3aXRoIHlvdXIgZmF2b3JpdGUgcGFja2FnZSBtYW5hZ2VyLlxuXG4ke09iamVjdC52YWx1ZXMoZGVwZW5kZW5jaWVzKVxuICAubWFwKFxuICAgICh1cmwpID0+IGBcblxcYFxcYFxcYHNoXG5ucG0gaSAke3VybH1cblxcYFxcYFxcYFxuYCxcbiAgKVxuICAuam9pbihcIlwiKX1cblxuIyMgVXNhZ2VcblxuVG8gdXNlIHRoaXMgZmVhdHVyZSBhcyBhIG1haW50YWluZXIsIHlvdSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDpcblxuXFxgXFxgXFxgc2hcbm5weCBwa2ctcHItbmV3IHB1Ymxpc2ggJy4vcGFja2FnZXMvQScgLS10ZW1wbGF0ZSAnLi9leGFtcGxlcy8qJ1xuXFxgXFxgXFxgXG5cbiMjIEJlbmVmaXRzXG5cbi0gSW50ZXJhY3RpdmUgRGVtb3M6IEF1dG9tYXRpY2FsbHkgY3JlYXRlIGxpdmUgZGVtb3MgdGhhdCB1c2VycyBjYW4gaW50ZXJhY3Qgd2l0aCBkaXJlY3RseSBpbiB0aGVpciBicm93c2VyLlxuLSBFbmhhbmNlZCBUZXN0aW5nOiBRdWlja2x5IHNwaW4gdXAgZW52aXJvbm1lbnRzIHRvIHRlc3QgeW91ciBwYWNrYWdlIGluIGRpZmZlcmVudCBzY2VuYXJpb3MuXG4tIEltcHJvdmVkIFNoYXJpbmc6IEVhc2lseSBzaGFyZSB3b3JraW5nIGV4YW1wbGVzIG9mIHlvdXIgcGFja2FnZSB3aXRoIGNvbGxhYm9yYXRvcnMgb3IgdXNlcnMgd2l0aG91dCBuZWVkaW5nIHRoZW0gdG8gc2V0IHVwIHRoZWlyIGVudmlyb25tZW50LlxuYCxcbiAgXCJwYWNrYWdlLmpzb25cIjogSlNPTi5zdHJpbmdpZnkoXG4gICAge1xuICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJnZW5lcmF0ZWQgYnkgcGtnLnByLm5ld1wiLFxuICAgICAgbWFpbjogXCJpbmRleC5qc1wiLFxuICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAga2V5d29yZHM6IFtdLFxuICAgICAgYXV0aG9yOiBcInBrZy5wci5uZXdcIixcbiAgICAgIGxpY2Vuc2U6IFwiSVNDXCIsXG4gICAgfSxcbiAgICBudWxsLFxuICAgIDIsXG4gICksXG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7O0FBcUVBLFNBQVMsU0FBUyxPQUFPO0FBQ3ZCLFNBQU8sVUFBVSxRQUFRLE9BQU8sVUFBVTtBQUM1QztBQUNBLFNBQVMsTUFBTSxZQUFZQSxXQUFVLFlBQVksS0FBSyxRQUFRO0FBQzVELE1BQUksQ0FBQyxTQUFTQSxTQUFRLEdBQUc7QUFDdkIsV0FBTyxNQUFNLFlBQVksQ0FBQyxHQUFHLFdBQVcsTUFBTTtBQUFBLEVBQ2hEO0FBQ0EsUUFBTSxTQUFTLE9BQU8sT0FBTyxDQUFDLEdBQUdBLFNBQVE7QUFDekMsYUFBVyxPQUFPLFlBQVk7QUFDNUIsUUFBSSxRQUFRLGVBQWUsUUFBUSxlQUFlO0FBQ2hEO0FBQUEsSUFDRjtBQUNBLFVBQU0sUUFBUSxXQUFXLEdBQUc7QUFDNUIsUUFBSSxVQUFVLFFBQVEsVUFBVSxRQUFRO0FBQ3RDO0FBQUEsSUFDRjtBQUNBLFFBQUksVUFBVSxPQUFPLFFBQVEsS0FBSyxPQUFPLFNBQVMsR0FBRztBQUNuRDtBQUFBLElBQ0Y7QUFDQSxRQUFJLE1BQU0sUUFBUSxLQUFLLEtBQUssTUFBTSxRQUFRLE9BQU8sR0FBRyxDQUFDLEdBQUc7QUFDdEQsYUFBTyxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxPQUFPLEdBQUcsQ0FBQztBQUFBLElBQ3pDLFdBQVcsU0FBUyxLQUFLLEtBQUssU0FBUyxPQUFPLEdBQUcsQ0FBQyxHQUFHO0FBQ25ELGFBQU8sR0FBRyxJQUFJO0FBQUEsUUFDWjtBQUFBLFFBQ0EsT0FBTyxHQUFHO0FBQUEsU0FDVCxZQUFZLEdBQUcsU0FBUyxNQUFNLE1BQU0sSUFBSSxTQUFTO0FBQUEsUUFDbEQ7QUFBQSxNQUNGO0FBQUEsSUFDRixPQUFPO0FBQ0wsYUFBTyxHQUFHLElBQUk7QUFBQSxJQUNoQjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFDQSxTQUFTLFdBQVcsUUFBUTtBQUMxQixTQUFPLElBQUk7QUFBQTtBQUFBLElBRVQsV0FBVyxPQUFPLENBQUNDLElBQUdDLE9BQU0sTUFBTUQsSUFBR0MsSUFBRyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFBQTtBQUUzRDtBQUdBLFNBQVMsY0FBYyxLQUFLO0FBQzFCLFNBQU8sT0FBTyxVQUFVLFNBQVMsS0FBSyxHQUFHLE1BQU07QUFDakQ7QUFDQSxTQUFTLFNBQVMsS0FBSztBQUNyQixNQUFJLENBQUMsY0FBYyxHQUFHLEdBQUc7QUFDdkIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxNQUFNO0FBQzdCLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSxJQUFJLE9BQU87QUFDYixXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU87QUFDVDtBQXFRQSxTQUFTLG1CQUFtQixPQUFPLFFBQVEsQ0FBQyxHQUFHLGVBQWUsR0FBRztBQUMvRCxNQUFJLFVBQVUsUUFBUTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUksT0FBTyxVQUFVLFVBQVU7QUFDN0IsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLE1BQU0sS0FBSyxLQUFLLE1BQU0sS0FBSyxFQUFFLFVBQVUsUUFBUTtBQUNqRCxXQUFPLE1BQU0sS0FBSyxFQUFFO0FBQUEsRUFDdEI7QUFDQSxTQUFPO0FBQ1Q7QUFRQSxTQUFTLGNBQWMsVUFBVSxDQUFDLEdBQUc7QUFDbkMsU0FBTyxJQUFJLFFBQVEsT0FBTztBQUM1QjtBQXZaQSxJQUFNLFdBZ0JBLFVBNkZBLE1Ba0JGLFFBQ0UsT0FDQTtBQWpJTjtBQUFBO0FBQUE7QUFBQSxJQUFNLFlBQVk7QUFBQSxNQUNoQixRQUFRLE9BQU87QUFBQSxNQUNmLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxNQUNQLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxNQUNQLEtBQUs7QUFBQSxNQUNMLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxNQUNQLFNBQVMsT0FBTztBQUFBLElBQ2xCO0FBQ0EsSUFBTSxXQUFXO0FBQUE7QUFBQSxNQUVmLFFBQVE7QUFBQSxRQUNOLE9BQU87QUFBQSxNQUNUO0FBQUE7QUFBQSxNQUVBLE9BQU87QUFBQSxRQUNMLE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUEsTUFDQSxPQUFPO0FBQUEsUUFDTCxPQUFPLFVBQVU7QUFBQSxNQUNuQjtBQUFBO0FBQUEsTUFFQSxNQUFNO0FBQUEsUUFDSixPQUFPLFVBQVU7QUFBQSxNQUNuQjtBQUFBO0FBQUEsTUFFQSxLQUFLO0FBQUEsUUFDSCxPQUFPLFVBQVU7QUFBQSxNQUNuQjtBQUFBO0FBQUEsTUFFQSxNQUFNO0FBQUEsUUFDSixPQUFPLFVBQVU7QUFBQSxNQUNuQjtBQUFBLE1BQ0EsU0FBUztBQUFBLFFBQ1AsT0FBTyxVQUFVO0FBQUEsTUFDbkI7QUFBQSxNQUNBLE1BQU07QUFBQSxRQUNKLE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUEsTUFDQSxPQUFPO0FBQUEsUUFDTCxPQUFPLFVBQVU7QUFBQSxNQUNuQjtBQUFBLE1BQ0EsT0FBTztBQUFBLFFBQ0wsT0FBTyxVQUFVO0FBQUEsTUFDbkI7QUFBQSxNQUNBLEtBQUs7QUFBQSxRQUNILE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUE7QUFBQSxNQUVBLE9BQU87QUFBQSxRQUNMLE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUE7QUFBQSxNQUVBLE9BQU87QUFBQSxRQUNMLE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUE7QUFBQSxNQUVBLFNBQVM7QUFBQSxRQUNQLE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUEsSUFDRjtBQTBDQSxJQUFNLE9BQU8sV0FBVztBQWtCeEIsSUFBSSxTQUFTO0FBQ2IsSUFBTSxRQUFRLENBQUM7QUFDZixJQUFNLFVBQU4sTUFBTSxTQUFRO0FBQUEsTUFDWixZQUFZLFVBQVUsQ0FBQyxHQUFHO0FBQ3hCLGNBQU0sUUFBUSxRQUFRLFNBQVM7QUFDL0IsYUFBSyxVQUFVO0FBQUEsVUFDYjtBQUFBLFlBQ0UsR0FBRztBQUFBLFlBQ0gsVUFBVSxFQUFFLEdBQUcsUUFBUSxTQUFTO0FBQUEsWUFDaEMsT0FBTyxtQkFBbUIsUUFBUSxPQUFPLEtBQUs7QUFBQSxZQUM5QyxXQUFXLENBQUMsR0FBRyxRQUFRLGFBQWEsQ0FBQyxDQUFDO0FBQUEsVUFDeEM7QUFBQSxVQUNBO0FBQUEsWUFDRSxPQUFPO0FBQUEsWUFDUCxVQUFVO0FBQUEsWUFDVixhQUFhO0FBQUEsWUFDYixlQUFlO0FBQUEsY0FDYixNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUEsY0FDUixTQUFTO0FBQUEsWUFDWDtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQ0EsbUJBQVcsUUFBUSxPQUFPO0FBQ3hCLGdCQUFNRixZQUFXO0FBQUEsWUFDZjtBQUFBLFlBQ0EsR0FBRyxLQUFLLFFBQVE7QUFBQSxZQUNoQixHQUFHLE1BQU0sSUFBSTtBQUFBLFVBQ2Y7QUFDQSxlQUFLLElBQUksSUFBSSxLQUFLLFdBQVdBLFNBQVE7QUFDckMsZUFBSyxJQUFJLEVBQUUsTUFBTSxLQUFLO0FBQUEsWUFDcEJBO0FBQUEsWUFDQTtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQ0EsWUFBSSxLQUFLLFFBQVEsUUFBUTtBQUN2QixlQUFLLFVBQVU7QUFBQSxRQUNqQjtBQUNBLGFBQUssV0FBVyxDQUFDO0FBQUEsTUFDbkI7QUFBQSxNQUNBLElBQUksUUFBUTtBQUNWLGVBQU8sS0FBSyxRQUFRO0FBQUEsTUFDdEI7QUFBQSxNQUNBLElBQUksTUFBTSxPQUFPO0FBQ2YsYUFBSyxRQUFRLFFBQVE7QUFBQSxVQUNuQjtBQUFBLFVBQ0EsS0FBSyxRQUFRO0FBQUEsVUFDYixLQUFLLFFBQVE7QUFBQSxRQUNmO0FBQUEsTUFDRjtBQUFBLE1BQ0EsT0FBTyxTQUFTLE1BQU07QUFDcEIsWUFBSSxDQUFDLEtBQUssUUFBUSxRQUFRO0FBQ3hCLGdCQUFNLElBQUksTUFBTSwwQkFBMEI7QUFBQSxRQUM1QztBQUNBLGVBQU8sS0FBSyxRQUFRLE9BQU8sU0FBUyxJQUFJO0FBQUEsTUFDMUM7QUFBQSxNQUNBLE9BQU8sU0FBUztBQUNkLGNBQU0sV0FBVyxJQUFJLFNBQVE7QUFBQSxVQUMzQixHQUFHLEtBQUs7QUFBQSxVQUNSLEdBQUc7QUFBQSxRQUNMLENBQUM7QUFDRCxZQUFJLEtBQUssU0FBUztBQUNoQixtQkFBUyxVQUFVLEtBQUssT0FBTztBQUFBLFFBQ2pDO0FBQ0EsZUFBTztBQUFBLE1BQ1Q7QUFBQSxNQUNBLGFBQWFBLFdBQVU7QUFDckIsZUFBTyxLQUFLLE9BQU87QUFBQSxVQUNqQixHQUFHLEtBQUs7QUFBQSxVQUNSLFVBQVU7QUFBQSxZQUNSLEdBQUcsS0FBSyxRQUFRO0FBQUEsWUFDaEIsR0FBR0E7QUFBQSxVQUNMO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0EsUUFBUSxLQUFLO0FBQ1gsZUFBTyxLQUFLLGFBQWE7QUFBQSxVQUN2QixLQUFLLEtBQUssUUFBUSxTQUFTLE1BQU0sS0FBSyxRQUFRLFNBQVMsTUFBTSxNQUFNLE1BQU07QUFBQSxRQUMzRSxDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0EsWUFBWSxVQUFVO0FBQ3BCLGFBQUssUUFBUSxVQUFVLEtBQUssUUFBUTtBQUNwQyxlQUFPO0FBQUEsTUFDVDtBQUFBLE1BQ0EsZUFBZSxVQUFVO0FBQ3ZCLFlBQUksVUFBVTtBQUNaLGdCQUFNLElBQUksS0FBSyxRQUFRLFVBQVUsUUFBUSxRQUFRO0FBQ2pELGNBQUksS0FBSyxHQUFHO0FBQ1YsbUJBQU8sS0FBSyxRQUFRLFVBQVUsT0FBTyxHQUFHLENBQUM7QUFBQSxVQUMzQztBQUFBLFFBQ0YsT0FBTztBQUNMLGVBQUssUUFBUSxVQUFVLE9BQU8sQ0FBQztBQUFBLFFBQ2pDO0FBQ0EsZUFBTztBQUFBLE1BQ1Q7QUFBQSxNQUNBLGFBQWEsV0FBVztBQUN0QixhQUFLLFFBQVEsWUFBWSxNQUFNLFFBQVEsU0FBUyxJQUFJLFlBQVksQ0FBQyxTQUFTO0FBQzFFLGVBQU87QUFBQSxNQUNUO0FBQUEsTUFDQSxVQUFVO0FBQ1IsYUFBSyxZQUFZO0FBQ2pCLGFBQUssUUFBUTtBQUFBLE1BQ2Y7QUFBQSxNQUNBLGFBQWE7QUFDWCxhQUFLLGVBQWU7QUFDcEIsYUFBSyxXQUFXO0FBQUEsTUFDbEI7QUFBQSxNQUNBLGNBQWM7QUFDWixtQkFBVyxRQUFRLEtBQUssUUFBUSxPQUFPO0FBQ3JDLGNBQUksQ0FBQyxRQUFRLE9BQU8sSUFBSSxHQUFHO0FBQ3pCLG9CQUFRLE9BQU8sSUFBSSxJQUFJLFFBQVEsSUFBSTtBQUFBLFVBQ3JDO0FBQ0Esa0JBQVEsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQUEsUUFDN0I7QUFBQSxNQUNGO0FBQUEsTUFDQSxpQkFBaUI7QUFDZixtQkFBVyxRQUFRLEtBQUssUUFBUSxPQUFPO0FBQ3JDLGNBQUksUUFBUSxPQUFPLElBQUksR0FBRztBQUN4QixvQkFBUSxJQUFJLElBQUksUUFBUSxPQUFPLElBQUk7QUFDbkMsbUJBQU8sUUFBUSxPQUFPLElBQUk7QUFBQSxVQUM1QjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsTUFDQSxVQUFVO0FBQ1IsYUFBSyxZQUFZLEtBQUssUUFBUSxRQUFRLEtBQUs7QUFDM0MsYUFBSyxZQUFZLEtBQUssUUFBUSxRQUFRLEtBQUs7QUFBQSxNQUM3QztBQUFBLE1BQ0EsWUFBWSxRQUFRLE1BQU07QUFDeEIsWUFBSSxDQUFDLFFBQVE7QUFDWDtBQUFBLFFBQ0Y7QUFDQSxZQUFJLENBQUMsT0FBTyxTQUFTO0FBQ25CLGlCQUFPLFVBQVUsT0FBTztBQUFBLFFBQzFCO0FBQ0EsZUFBTyxRQUFRLENBQUMsU0FBUztBQUN2QixlQUFLLElBQUksRUFBRSxJQUFJLE9BQU8sSUFBSSxFQUFFLEtBQUssQ0FBQztBQUFBLFFBQ3BDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsYUFBYTtBQUNYLGFBQUssZUFBZSxLQUFLLFFBQVEsTUFBTTtBQUN2QyxhQUFLLGVBQWUsS0FBSyxRQUFRLE1BQU07QUFBQSxNQUN6QztBQUFBLE1BQ0EsZUFBZSxRQUFRO0FBQ3JCLFlBQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxRQUNGO0FBQ0EsWUFBSSxPQUFPLFNBQVM7QUFDbEIsaUJBQU8sUUFBUSxPQUFPO0FBQ3RCLGlCQUFPLE9BQU87QUFBQSxRQUNoQjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLFlBQVk7QUFDVixpQkFBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLGFBQWE7QUFDWCxpQkFBUztBQUNULGNBQU0sU0FBUyxNQUFNLE9BQU8sQ0FBQztBQUM3QixtQkFBVyxRQUFRLFFBQVE7QUFDekIsZUFBSyxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUFBLFFBQ2pDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsVUFBVSxRQUFRO0FBQ2hCLGNBQU0sVUFBVSxVQUFVLEtBQUssUUFBUTtBQUN2QyxhQUFLLFVBQVU7QUFDZixZQUFJLE9BQU8sWUFBWSxZQUFZO0FBQ2pDO0FBQUEsUUFDRjtBQUNBLG1CQUFXLFFBQVEsS0FBSyxRQUFRLE9BQU87QUFDckMsZUFBSyxJQUFJLElBQUksUUFBUSxNQUFNLEtBQUssUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtBQUNqRSxlQUFLLElBQUksRUFBRSxNQUFNLEtBQUssSUFBSTtBQUFBLFFBQzVCO0FBQUEsTUFDRjtBQUFBLE1BQ0EsV0FBV0EsV0FBVSxPQUFPO0FBQzFCLGVBQU8sSUFBSSxTQUFTO0FBQ2xCLGNBQUksUUFBUTtBQUNWLGtCQUFNLEtBQUssQ0FBQyxNQUFNQSxXQUFVLE1BQU0sS0FBSyxDQUFDO0FBQ3hDO0FBQUEsVUFDRjtBQUNBLGlCQUFPLEtBQUssT0FBT0EsV0FBVSxNQUFNLEtBQUs7QUFBQSxRQUMxQztBQUFBLE1BQ0Y7QUFBQSxNQUNBLE9BQU9BLFdBQVUsTUFBTSxPQUFPO0FBQzVCLGFBQUtBLFVBQVMsU0FBUyxLQUFLLEtBQUssT0FBTztBQUN0QyxpQkFBTztBQUFBLFFBQ1Q7QUFDQSxjQUFNLFNBQVM7QUFBQSxVQUNiLE1BQXNCLG9CQUFJLEtBQUs7QUFBQSxVQUMvQixNQUFNLENBQUM7QUFBQSxVQUNQLEdBQUdBO0FBQUEsVUFDSCxPQUFPLG1CQUFtQkEsVUFBUyxPQUFPLEtBQUssUUFBUSxLQUFLO0FBQUEsUUFDOUQ7QUFDQSxZQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsS0FBSyxTQUFTLEtBQUssQ0FBQyxDQUFDLEdBQUc7QUFDcEQsaUJBQU8sT0FBTyxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQUEsUUFDL0IsT0FBTztBQUNMLGlCQUFPLE9BQU8sQ0FBQyxHQUFHLElBQUk7QUFBQSxRQUN4QjtBQUNBLFlBQUksT0FBTyxTQUFTO0FBQ2xCLGlCQUFPLEtBQUssUUFBUSxPQUFPLE9BQU87QUFDbEMsaUJBQU8sT0FBTztBQUFBLFFBQ2hCO0FBQ0EsWUFBSSxPQUFPLFlBQVk7QUFDckIsY0FBSSxDQUFDLE1BQU0sUUFBUSxPQUFPLFVBQVUsR0FBRztBQUNyQyxtQkFBTyxhQUFhLE9BQU8sV0FBVyxNQUFNLElBQUk7QUFBQSxVQUNsRDtBQUNBLGlCQUFPLEtBQUssS0FBSyxPQUFPLE9BQU8sV0FBVyxLQUFLLElBQUksQ0FBQztBQUNwRCxpQkFBTyxPQUFPO0FBQUEsUUFDaEI7QUFDQSxlQUFPLE9BQU8sT0FBTyxPQUFPLFNBQVMsV0FBVyxPQUFPLEtBQUssWUFBWSxJQUFJO0FBQzVFLGVBQU8sTUFBTSxPQUFPLE9BQU8sUUFBUSxXQUFXLE9BQU8sTUFBTTtBQUMzRCxjQUFNLGFBQWEsQ0FBQyxTQUFTLFVBQVU7QUFDckMsZ0JBQU0sWUFBWSxLQUFLLFNBQVMsU0FBUyxLQUFLLEtBQUssUUFBUTtBQUMzRCxjQUFJLEtBQUssU0FBUyxVQUFVLFdBQVcsR0FBRztBQUN4QyxrQkFBTSxRQUFRLENBQUMsR0FBRyxLQUFLLFNBQVMsT0FBTyxJQUFJO0FBQzNDLGdCQUFJLFdBQVcsR0FBRztBQUNoQixvQkFBTSxLQUFLLGFBQWEsUUFBUSxTQUFTO0FBQUEsWUFDM0M7QUFDQSxpQkFBSyxLQUFLLEVBQUUsR0FBRyxLQUFLLFNBQVMsUUFBUSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxpQkFBSyxTQUFTLFFBQVE7QUFBQSxVQUN4QjtBQUNBLGNBQUksUUFBUTtBQUNWLGlCQUFLLFNBQVMsU0FBUztBQUN2QixpQkFBSyxLQUFLLE1BQU07QUFBQSxVQUNsQjtBQUFBLFFBQ0Y7QUFDQSxxQkFBYSxLQUFLLFNBQVMsT0FBTztBQUNsQyxjQUFNLFdBQVcsS0FBSyxTQUFTLFFBQVEsT0FBTyxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksS0FBSyxTQUFTLEtBQUssUUFBUSxJQUFJO0FBQzVHLGFBQUssU0FBUyxPQUFPLE9BQU87QUFDNUIsWUFBSSxXQUFXLEtBQUssUUFBUSxVQUFVO0FBQ3BDLGNBQUk7QUFDRixrQkFBTSxnQkFBZ0IsS0FBSyxVQUFVO0FBQUEsY0FDbkMsT0FBTztBQUFBLGNBQ1AsT0FBTztBQUFBLGNBQ1AsT0FBTztBQUFBLFlBQ1QsQ0FBQztBQUNELGtCQUFNLFlBQVksS0FBSyxTQUFTLGVBQWU7QUFDL0MsaUJBQUssU0FBUyxhQUFhO0FBQzNCLGdCQUFJLFdBQVc7QUFDYixtQkFBSyxTQUFTLFNBQVMsS0FBSyxTQUFTLFNBQVMsS0FBSztBQUNuRCxrQkFBSSxLQUFLLFNBQVMsUUFBUSxLQUFLLFFBQVEsYUFBYTtBQUNsRCxxQkFBSyxTQUFTLFVBQVU7QUFBQSxrQkFDdEI7QUFBQSxrQkFDQSxLQUFLLFFBQVE7QUFBQSxnQkFDZjtBQUNBO0FBQUEsY0FDRjtBQUFBLFlBQ0Y7QUFBQSxVQUNGLFFBQVE7QUFBQSxVQUNSO0FBQUEsUUFDRjtBQUNBLG1CQUFXLElBQUk7QUFBQSxNQUNqQjtBQUFBLE1BQ0EsS0FBSyxRQUFRO0FBQ1gsbUJBQVcsWUFBWSxLQUFLLFFBQVEsV0FBVztBQUM3QyxtQkFBUyxJQUFJLFFBQVE7QUFBQSxZQUNuQixTQUFTLEtBQUs7QUFBQSxVQUNoQixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBYUEsWUFBUSxVQUFVLE1BQU0sUUFBUSxVQUFVO0FBQzFDLFlBQVEsVUFBVSxTQUFTLFFBQVEsVUFBVTtBQUM3QyxZQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVU7QUFDNUMsWUFBUSxVQUFVLFlBQVksUUFBUSxVQUFVO0FBQ2hELFlBQVEsVUFBVSxPQUFPLFFBQVEsVUFBVTtBQUMzQyxZQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVU7QUFDNUMsWUFBUSxVQUFVLFNBQVMsUUFBUSxVQUFVO0FBQUE7QUFBQTs7O0FDcFo3QyxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLFdBQVc7QUFFcEIsU0FBUyxXQUFXLE9BQU87QUFDekIsUUFBTSxNQUFNLFFBQVEsSUFBSSxJQUFJO0FBQzVCLFFBQU0sUUFBUSxNQUFNLE1BQU0sSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQ0csT0FBTUEsR0FBRSxLQUFLLEVBQUUsUUFBUSxXQUFXLEVBQUUsRUFBRSxRQUFRLEtBQUssRUFBRSxDQUFDO0FBQ3JHLFNBQU87QUFDVDtBQUVBLFNBQVMsWUFBWSxNQUFNLFFBQVE7QUFDakMsUUFBTSxRQUFRLE9BQU8sV0FBVyxPQUFPO0FBQ3ZDLFNBQU8sTUFBTSxLQUFLLFFBQVEsSUFBSTtBQUNoQztBQVpBLElBY00sU0FDQTtBQWZOO0FBQUE7QUFBQTtBQWNBLElBQU0sVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTTtBQUN0QyxJQUFNLGdCQUFOLE1BQW9CO0FBQUEsTUFDbEIsWUFBWSxPQUFPLE1BQU07QUFDdkIsZUFBTyxPQUFPLFdBQVcsS0FBSyxFQUFFLEtBQUssTUFBTTtBQUFBLE1BQzdDO0FBQUEsTUFDQSxXQUFXLE1BQU0sTUFBTTtBQUNyQixjQUFNLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUTtBQUM5QixjQUFJLE9BQU8sT0FBTyxJQUFJLFVBQVUsVUFBVTtBQUN4QyxtQkFBTyxJQUFJLFVBQVUsT0FBTyxLQUFLLFlBQVksSUFBSSxPQUFPLElBQUk7QUFBQSxVQUM5RDtBQUNBLGlCQUFPO0FBQUEsUUFDVCxDQUFDO0FBQ0QsZUFBTyxrQkFBa0IsTUFBTSxHQUFHLEtBQUs7QUFBQSxNQUN6QztBQUFBLE1BQ0EsV0FBVyxNQUFNLE1BQU07QUFDckIsZUFBTyxLQUFLLE9BQU8sS0FBSyxtQkFBbUIsSUFBSTtBQUFBLE1BQ2pEO0FBQUEsTUFDQSxjQUFjLEtBQUs7QUFDakIsZUFBTyxJQUFJLE9BQU8sT0FBTyxFQUFFLEtBQUssR0FBRztBQUFBLE1BQ3JDO0FBQUEsTUFDQSxhQUFhLFFBQVEsTUFBTTtBQUN6QixjQUFNLFVBQVUsS0FBSyxXQUFXLE9BQU8sTUFBTSxJQUFJO0FBQ2pELFlBQUksT0FBTyxTQUFTLE9BQU87QUFDekIsaUJBQU8sT0FBTztBQUFBLFlBQ1osUUFBUSxPQUFPLEdBQUc7QUFBQSxZQUNsQixPQUFPLFNBQVMsT0FBTztBQUFBLFlBQ3ZCLEdBQUcsUUFBUSxNQUFNLElBQUk7QUFBQSxVQUN2QixFQUFFLE9BQU8sT0FBTyxFQUFFLElBQUksQ0FBQ0EsT0FBTSxRQUFRQSxFQUFDLEVBQUUsS0FBSyxJQUFJLElBQUk7QUFBQSxRQUN2RDtBQUNBLGVBQU8sS0FBSyxjQUFjO0FBQUEsVUFDeEIsUUFBUSxPQUFPLElBQUk7QUFBQSxVQUNuQixRQUFRLE9BQU8sR0FBRztBQUFBLFVBQ2xCO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0EsSUFBSSxRQUFRLEtBQUs7QUFDZixjQUFNLE9BQU8sS0FBSyxhQUFhLFFBQVE7QUFBQSxVQUNyQyxTQUFTLElBQUksUUFBUSxPQUFPLFdBQVc7QUFBQSxVQUN2QyxHQUFHLElBQUksUUFBUTtBQUFBLFFBQ2pCLENBQUM7QUFDRCxlQUFPO0FBQUEsVUFDTCxPQUFPO0FBQUEsVUFDUCxPQUFPLFFBQVEsSUFBSSxJQUFJLFFBQVEsVUFBVSxRQUFRLFNBQVMsSUFBSSxRQUFRLFVBQVUsUUFBUTtBQUFBLFFBQzFGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUMzREEsWUFBWSxTQUFTO0FBY3JCLFNBQVMsYUFBYSxPQUFPLFFBQVEsT0FBTyxTQUFTLE9BQU8sT0FBTyxNQUFNLEdBQUcsS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksU0FBUyxPQUFPLE9BQU8sTUFBTSxLQUFLLElBQUksR0FBRyxRQUFRLE1BQU0sTUFBTSxDQUFDLEdBQUcsT0FBTyxLQUFLLFFBQVEsS0FBSyxHQUFHO0FBQzdMLFNBQU8sUUFBUSxPQUFPLElBQUksT0FBTyxhQUFhLE1BQU0sTUFBTSxPQUFPLE9BQU87QUFDMUU7QUFDQSxTQUFTLFdBQVcsT0FBTyxRQUFRLE1BQU0sT0FBTyxTQUFTO0FBQ3ZELFNBQU8sUUFBUSxJQUFJLE9BQU8sU0FBUyxRQUFRLE9BQU8sYUFBYSxPQUFPLFFBQVEsT0FBTyxPQUFPLElBQUk7QUFDbEc7QUFDQSxTQUFTLFlBQVksTUFBTSxPQUFPLFVBQVUsTUFBTSxLQUFLLEtBQUssU0FBUyxHQUFHO0FBQ3RFLFNBQU8sQ0FBQyxXQUFXLFVBQVUsRUFBRSxXQUFXLE1BQU0sV0FBVyxVQUFVO0FBQUEsS0FDbEUsS0FBSyxRQUFRLFFBQVEsT0FBTyxFQUFFO0FBQUEsSUFDL0I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDTjtBQUNBLFNBQVMsS0FBSyxNQUFNLE9BQU8sU0FBUztBQUNsQyxTQUFPLFlBQVksUUFBUSxJQUFJLEtBQUssUUFBUSxLQUFLLEtBQUssT0FBTztBQUMvRDtBQTRDQSxTQUFTLGFBQWEsV0FBVyxrQkFBa0I7QUFDakQsU0FBTyxXQUFXLFlBQVksT0FBTyxZQUFZLE9BQU8sS0FBSyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0FBQ3JHO0FBRUEsU0FBUyxTQUFTLE9BQU8sV0FBVyxTQUFTO0FBQzNDLFNBQU8sT0FBTyxLQUFLLEtBQUssT0FBTyxRQUFRO0FBQ3pDO0FBU0EsU0FBUyxVQUFVQyxPQUFNO0FBQ3ZCLFNBQU9BLE1BQUssUUFBUSxJQUFJLE9BQU8sV0FBVyxHQUFHLEdBQUcsRUFBRTtBQUNwRDtBQTJIQSxTQUFTLElBQUlBLE9BQU0sUUFBUSxDQUFDLEdBQUc7QUFDN0IsUUFBTSxPQUFPO0FBQUEsSUFDWCxHQUFHO0FBQUEsSUFDSCxPQUFPO0FBQUEsTUFDTCxHQUFHO0FBQUEsTUFDSCxHQUFHLE1BQU07QUFBQSxJQUNYO0FBQUEsRUFDRjtBQUNBLFFBQU0sWUFBWUEsTUFBSyxNQUFNLElBQUk7QUFDakMsUUFBTSxXQUFXLENBQUM7QUFDbEIsUUFBTSxTQUFTLFNBQVMsS0FBSyxNQUFNLFdBQVc7QUFDOUMsUUFBTSxjQUFjO0FBQUEsSUFDbEIsR0FBRyxPQUFPLEtBQUssTUFBTSxnQkFBZ0IsV0FBVyxnQkFBZ0IsS0FBSyxNQUFNLFdBQVcsS0FBSyxnQkFBZ0IsUUFBUSxLQUFLLE1BQU07QUFBQSxFQUNoSTtBQUNBLE1BQUksUUFBUTtBQUNWLGVBQVcsT0FBTyxhQUFhO0FBQzdCLGtCQUFZLEdBQUcsSUFBSTtBQUFBLFFBQ2pCLFlBQVksR0FBRztBQUFBLE1BQ2pCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxRQUFNLGdCQUFnQixLQUFLLE1BQU0sVUFBVSxNQUFNLElBQUksS0FBSyxNQUFNLFVBQVUsS0FBSyxNQUFNLFVBQVU7QUFDL0YsUUFBTSxTQUFTLFVBQVUsU0FBUztBQUNsQyxRQUFNLFFBQVEsS0FBSyxJQUFJLEdBQUcsVUFBVSxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxJQUFJO0FBQ2xFLFFBQU0sY0FBYyxRQUFRO0FBQzVCLFFBQU0sWUFBWSxLQUFLLE1BQU0sYUFBYSxJQUFJLElBQUksT0FBTyxLQUFLLE1BQU0sVUFBVSxJQUFJO0FBQ2xGLE1BQUksS0FBSyxNQUFNLFlBQVksR0FBRztBQUM1QixhQUFTLEtBQUssR0FBRyxPQUFPLEtBQUssTUFBTSxTQUFTLENBQUM7QUFBQSxFQUMvQztBQUNBLE1BQUksS0FBSyxPQUFPO0FBQ2QsVUFBTSxPQUFPLFlBQVksRUFBRTtBQUFBLE1BQ3pCLEtBQUssT0FBTyxRQUFRLFVBQVUsS0FBSyxLQUFLLEVBQUUsVUFBVSxDQUFDO0FBQUEsSUFDdkQ7QUFDQSxVQUFNLFFBQVEsWUFBWSxFQUFFO0FBQUEsTUFDMUIsUUFBUSxVQUFVLEtBQUssS0FBSyxFQUFFLFNBQVMsVUFBVSxJQUFJLEVBQUUsU0FBUztBQUFBLElBQ2xFO0FBQ0EsYUFBUztBQUFBLE1BQ1AsR0FBRyxTQUFTLEdBQUcsWUFBWSxFQUFFLEdBQUcsSUFBSSxHQUFHLEtBQUssS0FBSyxHQUFHLEtBQUssR0FBRyxZQUFZLEVBQUU7QUFBQSxJQUM1RTtBQUFBLEVBQ0YsT0FBTztBQUNMLGFBQVM7QUFBQSxNQUNQLEdBQUcsU0FBUyxHQUFHLFlBQVksRUFBRSxHQUFHLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxHQUFHLFlBQVksRUFBRTtBQUFBLElBQ3BGO0FBQUEsRUFDRjtBQUNBLFFBQU0sZUFBZSxLQUFLLE1BQU0sV0FBVyxXQUFXLEtBQUssT0FBTyxTQUFTLFVBQVUsVUFBVSxDQUFDLElBQUksS0FBSyxNQUFNLFdBQVcsUUFBUSxTQUFTLFVBQVUsU0FBUyxnQkFBZ0IsU0FBUyxVQUFVO0FBQ2pNLFdBQVMsSUFBSSxHQUFHLElBQUksUUFBUSxLQUFLO0FBQy9CLFFBQUksSUFBSSxnQkFBZ0IsS0FBSyxlQUFlLFVBQVUsUUFBUTtBQUM1RCxlQUFTO0FBQUEsUUFDUCxHQUFHLFNBQVMsR0FBRyxZQUFZLENBQUMsR0FBRyxJQUFJLE9BQU8sV0FBVyxDQUFDLEdBQUcsWUFBWSxDQUFDO0FBQUEsTUFDeEU7QUFBQSxJQUNGLE9BQU87QUFDTCxZQUFNLE9BQU8sVUFBVSxJQUFJLFlBQVk7QUFDdkMsWUFBTSxPQUFPLElBQUksT0FBTyxhQUFhO0FBQ3JDLFlBQU0sUUFBUSxJQUFJLE9BQU8sUUFBUSxVQUFVLElBQUksRUFBRSxNQUFNO0FBQ3ZELGVBQVM7QUFBQSxRQUNQLEdBQUcsU0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLFlBQVksQ0FBQztBQUFBLE1BQ3BFO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxXQUFTO0FBQUEsSUFDUCxHQUFHLFNBQVMsR0FBRyxZQUFZLEVBQUUsR0FBRyxZQUFZLEVBQUUsT0FBTyxXQUFXLENBQUMsR0FBRyxZQUFZLEVBQUU7QUFBQSxFQUNwRjtBQUNBLE1BQUksS0FBSyxNQUFNLGVBQWUsR0FBRztBQUMvQixhQUFTLEtBQUssR0FBRyxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFBQSxFQUNsRDtBQUNBLFNBQU8sU0FBUyxLQUFLLElBQUk7QUFDM0I7QUF6UkEsSUFHRSxLQUNBLE1BQ0EsVUFFSSxZQUNBLFVBQ0EsV0FDQSxnQkFDQSxzQkFDQSxNQUNBLGtCQW1CQSxXQThDQSxRQVFBLFdBc0RBLGlCQWtFQTtBQTlNTjtBQUFBO0FBQUE7QUFFQSxLQUFNO0FBQUEsTUFDSixNQUFNLENBQUM7QUFBQSxNQUNQLE9BQU8sQ0FBQztBQUFBLE1BQ1IsV0FBVztBQUFBLFFBQ1QsT0FBTyxZQUFZLGNBQWMsQ0FBQyxJQUFJO0FBQzFDLElBQU0sYUFBYSxjQUFjLE9BQU8sS0FBSyxTQUFTLFlBQVk7QUFDbEUsSUFBTSxXQUFXLGlCQUFpQixPQUFPLEtBQUssU0FBUyxTQUFTO0FBQ2hFLElBQU0sWUFBWSxhQUFhO0FBQy9CLElBQU0saUJBQWlCLElBQUksU0FBUztBQUNwQyxJQUFNLHVCQUF1QixPQUFXLGNBQWMsV0FBTyxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUM7QUFDaEYsSUFBTSxPQUFPLFFBQVEsUUFBUSxvQkFBb0IsT0FBTyxlQUFlLE9BQU8sY0FBYztBQUM1RixJQUFNLG1CQUFtQixDQUFDLGVBQWUsWUFBWSxhQUFhLENBQUMsa0JBQWtCLHdCQUF3QjtBQW1CN0csSUFBTSxZQUFZO0FBQUEsTUFDaEIsT0FBTyxLQUFLLEdBQUcsQ0FBQztBQUFBLE1BQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksaUJBQWlCO0FBQUEsTUFDbkMsS0FBSyxLQUFLLEdBQUcsSUFBSSxpQkFBaUI7QUFBQSxNQUNsQyxRQUFRLEtBQUssR0FBRyxFQUFFO0FBQUEsTUFDbEIsV0FBVyxLQUFLLEdBQUcsRUFBRTtBQUFBLE1BQ3JCLFNBQVMsS0FBSyxHQUFHLEVBQUU7QUFBQSxNQUNuQixRQUFRLEtBQUssR0FBRyxFQUFFO0FBQUEsTUFDbEIsZUFBZSxLQUFLLEdBQUcsRUFBRTtBQUFBLE1BQ3pCLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNsQixLQUFLLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDaEIsT0FBTyxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ2xCLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNuQixNQUFNLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDakIsU0FBUyxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3BCLE1BQU0sS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNqQixPQUFPLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDbEIsTUFBTSxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ2pCLFNBQVMsS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNwQixPQUFPLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDbEIsU0FBUyxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3BCLFVBQVUsS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNyQixRQUFRLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDbkIsV0FBVyxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3RCLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNuQixTQUFTLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDcEIsYUFBYSxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3hCLFdBQVcsS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUN0QixhQUFhLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDeEIsY0FBYyxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3pCLFlBQVksS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUN2QixlQUFlLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDMUIsWUFBWSxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3ZCLGFBQWEsS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUN4QixlQUFlLEtBQUssS0FBSyxFQUFFO0FBQUEsTUFDM0IsYUFBYSxLQUFLLEtBQUssRUFBRTtBQUFBLE1BQ3pCLGVBQWUsS0FBSyxLQUFLLEVBQUU7QUFBQSxNQUMzQixnQkFBZ0IsS0FBSyxLQUFLLEVBQUU7QUFBQSxNQUM1QixjQUFjLEtBQUssS0FBSyxFQUFFO0FBQUEsTUFDMUIsaUJBQWlCLEtBQUssS0FBSyxFQUFFO0FBQUEsTUFDN0IsY0FBYyxLQUFLLEtBQUssRUFBRTtBQUFBLE1BQzFCLGVBQWUsS0FBSyxLQUFLLEVBQUU7QUFBQSxJQUM3QjtBQUlBLElBQU0sU0FBUyxhQUFhO0FBUTVCLElBQU0sWUFBWTtBQUFBLE1BQ2hCO0FBQUEsTUFDQTtBQUFBLElBQ0YsRUFBRSxLQUFLLEdBQUc7QUFtRFYsSUFBTSxrQkFBa0I7QUFBQSxNQUN0QixPQUFPO0FBQUEsUUFDTCxJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixHQUFHO0FBQUEsUUFDSCxHQUFHO0FBQUEsTUFDTDtBQUFBLE1BQ0EsUUFBUTtBQUFBLFFBQ04sSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osR0FBRztBQUFBLFFBQ0gsR0FBRztBQUFBLE1BQ0w7QUFBQSxNQUNBLGNBQWM7QUFBQSxRQUNaLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLEdBQUc7QUFBQSxRQUNILEdBQUc7QUFBQSxNQUNMO0FBQUEsTUFDQSxxQkFBcUI7QUFBQSxRQUNuQixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixHQUFHO0FBQUEsUUFDSCxHQUFHO0FBQUEsTUFDTDtBQUFBLE1BQ0EsYUFBYTtBQUFBLFFBQ1gsSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osR0FBRztBQUFBLFFBQ0gsR0FBRztBQUFBLE1BQ0w7QUFBQSxNQUNBLGNBQWM7QUFBQSxRQUNaLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLEdBQUc7QUFBQSxRQUNILEdBQUc7QUFBQSxNQUNMO0FBQUEsTUFDQSxxQkFBcUI7QUFBQSxRQUNuQixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixHQUFHO0FBQUEsUUFDSCxHQUFHO0FBQUEsTUFDTDtBQUFBLE1BQ0EsU0FBUztBQUFBLFFBQ1AsSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osR0FBRztBQUFBLFFBQ0gsR0FBRztBQUFBLE1BQ0w7QUFBQSxJQUNGO0FBQ0EsSUFBTSxlQUFlO0FBQUEsTUFDbkIsYUFBYTtBQUFBLE1BQ2IsYUFBYTtBQUFBLE1BQ2IsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsWUFBWTtBQUFBLE1BQ1osV0FBVztBQUFBLE1BQ1gsY0FBYztBQUFBLElBQ2hCO0FBQUE7QUFBQTs7O0FDdE5BO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBUyxPQUFPLGNBQWM7QUFDOUIsT0FBTyxPQUFPO0FBQ2QsU0FBUyxtQkFBbUI7QUFFNUIsT0FBTyxnQkFBZ0I7QUFnSXZCLFNBQVMsRUFBRSxFQUFDLFdBQVUsSUFBRSxNQUFFLElBQUUsQ0FBQyxHQUFFO0FBQUMsUUFBTSxJQUFFLENBQUMsZ0lBQStILDBEQUEwRCxFQUFFLEtBQUssR0FBRztBQUFFLFNBQU8sSUFBSSxPQUFPLEdBQUUsSUFBRSxTQUFPLEdBQUc7QUFBQztBQUFDLFNBQVMsRUFBRSxHQUFFO0FBQUMsTUFBRyxPQUFPLEtBQUc7QUFBUyxVQUFNLElBQUksVUFBVSxnQ0FBZ0MsT0FBTyxDQUFDLElBQUk7QUFBRSxTQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUUsRUFBRTtBQUFDO0FBQTA0bUIsU0FBUyxFQUFFLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBQyxNQUFHLE9BQU8sS0FBRyxZQUFVLEVBQUUsV0FBUyxNQUFJLElBQUUsRUFBQyxtQkFBa0IsTUFBRyxHQUFHLEVBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsV0FBUztBQUFHLFdBQU87QUFBRSxNQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUUsSUFBSTtBQUFFLFFBQU0sSUFBRSxFQUFFLG9CQUFrQixJQUFFO0FBQUUsTUFBSSxJQUFFO0FBQUUsYUFBVUMsTUFBSyxHQUFFO0FBQUMsVUFBTSxJQUFFQSxHQUFFLFlBQVksQ0FBQztBQUFFLFFBQUcsS0FBRyxNQUFJLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUc7QUFBSTtBQUFTLFlBQU8sRUFBRSxlQUFlQSxFQUFDLEdBQUU7QUFBQSxNQUFDLEtBQUk7QUFBQSxNQUFJLEtBQUk7QUFBSSxhQUFHO0FBQUU7QUFBQSxNQUFNLEtBQUk7QUFBSSxhQUFHO0FBQUU7QUFBQSxNQUFNO0FBQVEsYUFBRztBQUFBLElBQUU7QUFBQSxFQUFDO0FBQUMsU0FBTztBQUFDO0FBQTIvQixTQUFTLElBQUc7QUFBQyxRQUFNLElBQUUsb0JBQUk7QUFBSSxhQUFTLENBQUMsR0FBRSxDQUFDLEtBQUksT0FBTyxRQUFRLENBQUMsR0FBRTtBQUFDLGVBQVMsQ0FBQyxHQUFFQSxFQUFDLEtBQUksT0FBTyxRQUFRLENBQUM7QUFBRSxRQUFFLENBQUMsSUFBRSxFQUFDLE1BQUssUUFBUUEsR0FBRSxDQUFDLENBQUMsS0FBSSxPQUFNLFFBQVFBLEdBQUUsQ0FBQyxDQUFDLElBQUcsR0FBRSxFQUFFLENBQUMsSUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFLElBQUlBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsQ0FBQztBQUFFLFdBQU8sZUFBZSxHQUFFLEdBQUUsRUFBQyxPQUFNLEdBQUUsWUFBVyxNQUFFLENBQUM7QUFBQSxFQUFFO0FBQUMsU0FBTyxPQUFPLGVBQWUsR0FBRSxTQUFRLEVBQUMsT0FBTSxHQUFFLFlBQVcsTUFBRSxDQUFDLEdBQUUsRUFBRSxNQUFNLFFBQU0sWUFBVyxFQUFFLFFBQVEsUUFBTSxZQUFXLEVBQUUsTUFBTSxPQUFLLEVBQUUsR0FBRSxFQUFFLE1BQU0sVUFBUSxFQUFFLEdBQUUsRUFBRSxNQUFNLFVBQVEsRUFBRSxHQUFFLEVBQUUsUUFBUSxPQUFLLEVBQUUsQ0FBQyxHQUFFLEVBQUUsUUFBUSxVQUFRLEVBQUUsQ0FBQyxHQUFFLEVBQUUsUUFBUSxVQUFRLEVBQUUsQ0FBQyxHQUFFLE9BQU8saUJBQWlCLEdBQUUsRUFBQyxjQUFhLEVBQUMsT0FBTSxDQUFDLEdBQUUsR0FBRSxNQUFJLE1BQUksS0FBRyxNQUFJLElBQUUsSUFBRSxJQUFFLEtBQUcsSUFBRSxNQUFJLE1BQUksS0FBSyxPQUFPLElBQUUsS0FBRyxNQUFJLEVBQUUsSUFBRSxNQUFJLEtBQUcsS0FBRyxLQUFLLE1BQU0sSUFBRSxNQUFJLENBQUMsSUFBRSxJQUFFLEtBQUssTUFBTSxJQUFFLE1BQUksQ0FBQyxJQUFFLEtBQUssTUFBTSxJQUFFLE1BQUksQ0FBQyxHQUFFLFlBQVcsTUFBRSxHQUFFLFVBQVMsRUFBQyxPQUFNLE9BQUc7QUFBQyxVQUFNLElBQUUseUJBQXlCLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUFFLFFBQUcsQ0FBQztBQUFFLGFBQU8sQ0FBQyxHQUFFLEdBQUUsQ0FBQztBQUFFLFFBQUcsQ0FBQyxDQUFDLElBQUU7QUFBRSxNQUFFLFdBQVMsTUFBSSxJQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxPQUFHLElBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRTtBQUFHLFVBQU1BLEtBQUUsT0FBTyxTQUFTLEdBQUUsRUFBRTtBQUFFLFdBQU8sQ0FBQ0EsTUFBRyxLQUFHLEtBQUlBLE1BQUcsSUFBRSxLQUFJQSxLQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUUsWUFBVyxNQUFFLEdBQUUsY0FBYSxFQUFDLE9BQU0sT0FBRyxFQUFFLGFBQWEsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUUsWUFBVyxNQUFFLEdBQUUsZUFBYyxFQUFDLE9BQU0sT0FBRztBQUFDLFFBQUcsSUFBRTtBQUFFLGFBQU8sS0FBRztBQUFFLFFBQUcsSUFBRTtBQUFHLGFBQU8sTUFBSSxJQUFFO0FBQUcsUUFBSSxHQUFFLEdBQUVBO0FBQUUsUUFBRyxLQUFHO0FBQUksWUFBSSxJQUFFLE9BQUssS0FBRyxLQUFHLEtBQUksSUFBRSxHQUFFQSxLQUFFO0FBQUEsU0FBTztBQUFDLFdBQUc7QUFBRyxZQUFNLElBQUUsSUFBRTtBQUFHLFVBQUUsS0FBSyxNQUFNLElBQUUsRUFBRSxJQUFFLEdBQUUsSUFBRSxLQUFLLE1BQU0sSUFBRSxDQUFDLElBQUUsR0FBRUEsS0FBRSxJQUFFLElBQUU7QUFBQSxJQUFFO0FBQUMsVUFBTSxJQUFFLEtBQUssSUFBSSxHQUFFLEdBQUVBLEVBQUMsSUFBRTtBQUFFLFFBQUcsTUFBSTtBQUFFLGFBQU87QUFBRyxRQUFJLElBQUUsTUFBSSxLQUFLLE1BQU1BLEVBQUMsS0FBRyxJQUFFLEtBQUssTUFBTSxDQUFDLEtBQUcsSUFBRSxLQUFLLE1BQU0sQ0FBQztBQUFHLFdBQU8sTUFBSSxNQUFJLEtBQUcsS0FBSTtBQUFBLEVBQUMsR0FBRSxZQUFXLE1BQUUsR0FBRSxXQUFVLEVBQUMsT0FBTSxDQUFDLEdBQUUsR0FBRSxNQUFJLEVBQUUsY0FBYyxFQUFFLGFBQWEsR0FBRSxHQUFFLENBQUMsQ0FBQyxHQUFFLFlBQVcsTUFBRSxHQUFFLFdBQVUsRUFBQyxPQUFNLE9BQUcsRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUMsR0FBRSxZQUFXLE1BQUUsRUFBQyxDQUFDLEdBQUU7QUFBQztBQUd2Z3RCLFNBQVMsRUFBRSxHQUFFLEdBQUUsR0FBRTtBQUFDLFNBQU8sT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsU0FBUTtBQUFBLENBQzNHLEVBQUUsTUFBTTtBQUFBLENBQ1IsRUFBRSxJQUFJLE9BQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSztBQUFBLENBQ3pCO0FBQUM7QUFBQyxTQUFTLEdBQUcsR0FBRSxHQUFFO0FBQUMsTUFBRyxNQUFJO0FBQUU7QUFBTyxRQUFNLElBQUUsRUFBRSxNQUFNO0FBQUEsQ0FDbkQsR0FBRSxJQUFFLEVBQUUsTUFBTTtBQUFBLENBQ1osR0FBRUEsS0FBRSxDQUFDO0FBQUUsV0FBUSxJQUFFLEdBQUUsSUFBRSxLQUFLLElBQUksRUFBRSxRQUFPLEVBQUUsTUFBTSxHQUFFO0FBQUksTUFBRSxDQUFDLE1BQUksRUFBRSxDQUFDLEtBQUdBLEdBQUUsS0FBSyxDQUFDO0FBQUUsU0FBT0E7QUFBQztBQUFnQyxTQUFTLEVBQUUsR0FBRSxHQUFFO0FBQUMsSUFBRSxTQUFPLEVBQUUsV0FBVyxDQUFDO0FBQUU7QUE2UDlKLGVBQWUsT0FBTyxTQUFTLE9BQU8sQ0FBQyxHQUFHO0FBQ3hDLE1BQUksQ0FBQyxLQUFLLFFBQVEsS0FBSyxTQUFTLFFBQVE7QUFDdEMsV0FBTyxNQUFNLEtBQUs7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsY0FBYyxLQUFLO0FBQUEsTUFDbkIsYUFBYSxLQUFLO0FBQUEsTUFDbEIsY0FBYyxLQUFLO0FBQUEsSUFDckIsQ0FBQztBQUFBLEVBQ0g7QUFDQSxNQUFJLEtBQUssU0FBUyxXQUFXO0FBQzNCLFdBQU8sTUFBTSxRQUFRO0FBQUEsTUFDbkI7QUFBQSxNQUNBLGNBQWMsS0FBSztBQUFBLElBQ3JCLENBQUM7QUFBQSxFQUNIO0FBQ0EsTUFBSSxLQUFLLFNBQVMsVUFBVTtBQUMxQixXQUFPLE1BQU0sT0FBTztBQUFBLE1BQ2xCO0FBQUEsTUFDQSxTQUFTLEtBQUssUUFBUTtBQUFBLFFBQ3BCLENBQUMsTUFBTSxPQUFPLE1BQU0sV0FBVyxFQUFFLE9BQU8sR0FBRyxPQUFPLEVBQUUsSUFBSTtBQUFBLE1BQzFEO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUNBLE1BQUksS0FBSyxTQUFTLGVBQWU7QUFDL0IsV0FBTyxNQUFNLFlBQVk7QUFBQSxNQUN2QjtBQUFBLE1BQ0EsU0FBUyxLQUFLLFFBQVE7QUFBQSxRQUNwQixDQUFDLE1BQU0sT0FBTyxNQUFNLFdBQVcsRUFBRSxPQUFPLEdBQUcsT0FBTyxFQUFFLElBQUk7QUFBQSxNQUMxRDtBQUFBLE1BQ0EsVUFBVSxLQUFLO0FBQUEsSUFDakIsQ0FBQztBQUFBLEVBQ0g7QUFDQSxRQUFNLElBQUksTUFBTSx3QkFBd0IsS0FBSyxJQUFJLEVBQUU7QUFDckQ7QUExYUEsSUFXTSxLQUNBLEtBQ0EsTUFFQSxRQTZCQSxRQUtBLE9BaUJGLEtBRUEsWUFFQUMsTUFFQUMsbUJBUUEsV0FVQUMsZUFPQUMsZUFnQ0EsbUJBQ0UsR0FFNlksR0FBSyxHQUFra0ksR0FBUSxHQUE4cWYsR0FBSyxHQUEyQixHQUFtQyxHQUFtRCxHQUFrMEIsR0FBdUIsR0FBNDlDLEdBQU0sR0FBMkIsR0FBSyxHQUFTLEdBQU0sR0FBTSxHQUFNLEdBQVksR0FBOEMsR0FBOEMsR0FBK0IsR0FBMFcsSUFBMkksSUFRNXB1QixHQUF5RSxHQUFnRSxJQUErRCxHQUtwSSxJQUFrVyxJQUF1eEIsSUFBb2hCLElBRXZ5RCxTQUNBLEdBQ0EsZUFDQSxlQUNBLGNBQ0EsZUFDQSxPQUNBLFdBQ0EsZ0JBQ0Esa0JBQ0EsbUJBQ0EscUJBQ0EscUJBQ0EsUUFpQkEsTUE0Q0EsU0ErQkEsUUFpREE7QUE3U047QUFBQTtBQUFBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFJQSxJQUFNLE1BQU07QUFDWixJQUFNLE1BQU0sR0FBRyxHQUFHO0FBQ2xCLElBQU0sT0FBTztBQUViLElBQU0sU0FBUztBQUFBLE1BQ2IsR0FBRyxHQUFHLEdBQUc7QUFDUCxZQUFJLENBQUM7QUFBRyxpQkFBTyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDN0IsZUFBTyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7QUFBQSxNQUNoQztBQUFBLE1BQ0EsS0FBSyxHQUFHLEdBQUc7QUFDVCxZQUFJLE1BQU07QUFFVixZQUFJLElBQUk7QUFBRyxpQkFBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBQSxpQkFDcEIsSUFBSTtBQUFHLGlCQUFPLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFFakMsWUFBSSxJQUFJO0FBQUcsaUJBQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUEsaUJBQ3BCLElBQUk7QUFBRyxpQkFBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBRWpDLGVBQU87QUFBQSxNQUNUO0FBQUEsTUFDQSxJQUFJLENBQUMsUUFBUSxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUs7QUFBQSxNQUNqQyxNQUFNLENBQUMsUUFBUSxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUs7QUFBQSxNQUNuQyxTQUFTLENBQUMsUUFBUSxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUs7QUFBQSxNQUN0QyxVQUFVLENBQUMsUUFBUSxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUs7QUFBQSxNQUN2QyxVQUFVLENBQUMsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sS0FBSztBQUFBLE1BQy9DLFVBQVUsQ0FBQyxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxLQUFLO0FBQUEsTUFDL0MsTUFBTSxHQUFHLEdBQUc7QUFBQSxNQUNaLE1BQU0sR0FBRyxHQUFHO0FBQUEsTUFDWixNQUFNLEdBQUcsR0FBRztBQUFBLE1BQ1osTUFBTSxHQUFHLEdBQUc7QUFBQSxNQUNaLFNBQVMsR0FBRyxHQUFHO0FBQUEsSUFDakI7QUFFQSxJQUFNLFNBQVM7QUFBQSxNQUNiLElBQUksQ0FBQyxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxLQUFLO0FBQUEsTUFDekMsTUFBTSxDQUFDLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEtBQUs7QUFBQSxJQUM3QztBQUVBLElBQU0sUUFBUTtBQUFBLE1BQ1osUUFBUSxHQUFHLEdBQUc7QUFBQSxNQUNkLElBQUksQ0FBQyxRQUFRLE1BQU0sR0FBRyxHQUFHLEtBQUssT0FBTyxLQUFLO0FBQUEsTUFDMUMsTUFBTSxDQUFDLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEtBQUs7QUFBQSxNQUMzQyxNQUFNLEdBQUcsR0FBRztBQUFBLE1BQ1osU0FBUyxHQUFHLEdBQUc7QUFBQSxNQUNmLFdBQVcsR0FBRyxHQUFHO0FBQUEsTUFDakIsTUFBTSxPQUFPO0FBQ1gsWUFBSSxRQUFRO0FBQ1osaUJBQVMsSUFBSSxHQUFHLElBQUksT0FBTztBQUN6QixtQkFBUyxLQUFLLFFBQVEsSUFBSSxRQUFRLElBQUksT0FBTyxHQUFHLElBQUk7QUFDdEQsWUFBSTtBQUNGLG1CQUFTLE9BQU87QUFDbEIsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBRUEsSUFBSSxNQUFNLEVBQUUsUUFBUSxRQUFRLE9BQU8sS0FBSztBQUV4QyxJQUFJLGFBQWEsRUFBQyxTQUFTLENBQUMsRUFBQztBQUU3QixJQUFJSCxPQUFNO0FBRVYsSUFBSUMsb0JBQ0gsRUFBRSxjQUFjLFFBQVEsT0FBTyxRQUFRLEtBQUssU0FBUyxZQUFZLE9BQ2hFLGlCQUFpQixRQUFRLE9BQ3pCLFFBQVEsS0FBSyxTQUFTLFNBQVMsS0FDL0IsUUFBUSxhQUFhLFdBQ3BCRCxLQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxTQUFTLFVBQ3ZDLFFBQVEsUUFBUTtBQUVsQixJQUFJLFlBQ0gsQ0FBQyxNQUFNLE9BQU8sVUFBVSxTQUN4QixXQUFTO0FBQ1IsVUFBSSxTQUFTLEtBQUs7QUFDbEIsVUFBSSxRQUFRLE9BQU8sUUFBUSxPQUFPLEtBQUssTUFBTTtBQUM3QyxhQUFPLENBQUMsUUFDTCxPQUFPRSxjQUFhLFFBQVEsT0FBTyxTQUFTLEtBQUssSUFBSSxRQUNyRCxPQUFPLFNBQVM7QUFBQSxJQUNwQjtBQUVELElBQUlBLGdCQUFlLENBQUMsUUFBUSxPQUFPLFNBQVMsVUFBVTtBQUNyRCxVQUFJLFFBQVEsT0FBTyxVQUFVLEdBQUcsS0FBSyxJQUFJO0FBQ3pDLFVBQUksTUFBTSxPQUFPLFVBQVUsUUFBUSxNQUFNLE1BQU07QUFDL0MsVUFBSSxZQUFZLElBQUksUUFBUSxLQUFLO0FBQ2pDLGFBQU8sQ0FBQyxZQUFZLFFBQVFBLGNBQWEsS0FBSyxPQUFPLFNBQVMsU0FBUyxJQUFJLFFBQVE7QUFBQSxJQUNwRjtBQUVBLElBQUlDLGdCQUFlLENBQUMsVUFBVUYsdUJBQXNCO0FBQUEsTUFDbkQsa0JBQWtCO0FBQUEsTUFDbEIsT0FBTyxVQUFVLENBQUFGLE9BQUssVUFBVUEsRUFBQyxZQUFZO0FBQUEsTUFDN0MsTUFBTSxVQUFVLFVBQVUsV0FBVyxZQUFZLGlCQUFpQixJQUFJO0FBQUEsTUFDdEUsS0FBSyxVQUFVLFVBQVUsV0FBVyxZQUFZLGlCQUFpQixJQUFJO0FBQUEsTUFDckUsUUFBUSxVQUFVLFVBQVUsV0FBVyxVQUFVLElBQUk7QUFBQSxNQUNyRCxXQUFXLFVBQVUsVUFBVSxXQUFXLFVBQVUsSUFBSTtBQUFBLE1BQ3hELFNBQVMsVUFBVSxVQUFVLFdBQVcsVUFBVSxJQUFJO0FBQUEsTUFDdEQsUUFBUSxVQUFVLFVBQVUsV0FBVyxVQUFVLElBQUk7QUFBQSxNQUNyRCxlQUFlLFVBQVUsVUFBVSxXQUFXLFVBQVUsSUFBSTtBQUFBLE1BQzVELE9BQU8sVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDckQsS0FBSyxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUNuRCxPQUFPLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLE1BQ3JELFFBQVEsVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDdEQsTUFBTSxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUNwRCxTQUFTLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLE1BQ3ZELE1BQU0sVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDcEQsT0FBTyxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUNyRCxNQUFNLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLE1BQ3BELFNBQVMsVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDdkQsT0FBTyxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUNyRCxTQUFTLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLE1BQ3ZELFVBQVUsVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDeEQsUUFBUSxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUN0RCxXQUFXLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLE1BQ3pELFFBQVEsVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDdEQsU0FBUyxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxJQUN4RDtBQUVBLGVBQVcsVUFBVUksY0FBYTtBQUNsQyxlQUFXLFFBQVEsZUFBZUE7QUFFbEMsSUFBSSxvQkFBb0IsV0FBVztBQUNuQyxJQUFNLElBQWlCLHdDQUF3QixpQkFBaUI7QUFFK1UsSUFBSSxJQUFFLENBQUM7QUFBUCxJQUFTLElBQUUsRUFBQyxJQUFJLFVBQVM7QUFBQyxhQUFPO0FBQUEsSUFBQyxHQUFFLElBQUksUUFBUSxHQUFFO0FBQUMsVUFBRTtBQUFBLElBQUUsRUFBQztBQUFFLEtBQUMsU0FBUyxHQUFFO0FBQUMsVUFBSSxJQUFFLENBQUM7QUFBRSxRQUFFLFVBQVEsR0FBRSxFQUFFLGlCQUFlLFNBQVMsR0FBRTtBQUFDLFlBQUlKLEtBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxJQUFFLEVBQUUsVUFBUSxJQUFFLEVBQUUsV0FBVyxDQUFDLElBQUUsR0FBRSxJQUFFQTtBQUFFLGVBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFVBQVFBLE1BQUcsTUFBSyxLQUFHLE1BQUssSUFBRUEsTUFBRyxLQUFHLEdBQUUsS0FBRyxRQUFPLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFFBQU0sTUFBSSxLQUFHLFFBQU0sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFFBQU0sTUFBSSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFNBQU8sTUFBSSxNQUFJLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsUUFBTSxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFNBQU8sS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxLQUFHLFNBQU8sVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFdBQVMsV0FBUyxLQUFHLEtBQUcsVUFBUSxNQUFJO0FBQUEsTUFBRyxHQUFFLEVBQUUsa0JBQWdCLFNBQVMsR0FBRTtBQUFDLFlBQUlBLEtBQUUsS0FBSyxlQUFlLENBQUM7QUFBRSxlQUFPQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxNQUFJLElBQUU7QUFBQSxNQUFDO0FBQUUsZUFBUyxFQUFFLEdBQUU7QUFBQyxlQUFPLEVBQUUsTUFBTSxrREFBa0QsS0FBRyxDQUFDO0FBQUEsTUFBQztBQUFDLFFBQUUsU0FBTyxTQUFTLEdBQUU7QUFBQyxpQkFBUUEsS0FBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxHQUFFLElBQUVBLEdBQUUsUUFBTztBQUFJLGNBQUUsSUFBRSxLQUFLLGdCQUFnQkEsR0FBRSxDQUFDLENBQUM7QUFBRSxlQUFPO0FBQUEsTUFBQyxHQUFFLEVBQUUsUUFBTSxTQUFTLEdBQUVBLElBQUUsR0FBRTtBQUFDLGtCQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUVBLEtBQUVBLE1BQUcsR0FBRSxJQUFFLEtBQUcsR0FBRUEsS0FBRSxNQUFJQSxLQUFFLFVBQVFBLEtBQUcsSUFBRSxNQUFJLElBQUUsVUFBUTtBQUFHLGlCQUFRLElBQUUsSUFBRyxJQUFFLEdBQUUsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLFFBQU8sS0FBSTtBQUFDLGNBQUksSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEVBQUUsT0FBTyxDQUFDO0FBQUUsY0FBRyxLQUFHQSxNQUFHLEtBQUcsSUFBRSxJQUFFO0FBQUcsZ0JBQUcsSUFBRSxLQUFHO0FBQUUsbUJBQUc7QUFBQTtBQUFPO0FBQU0sZUFBRztBQUFBLFFBQUU7QUFBQyxlQUFPO0FBQUEsTUFBQztBQUFBLElBQUUsR0FBRyxDQUFDO0FBQUUsSUFBTSxJQUFFO0FBQUUsSUFBSSxJQUFFLFdBQVU7QUFBQyxhQUFPO0FBQUEsSUFBZ3llO0FBQW9YLElBQU0sSUFBRTtBQUFSLElBQVcsSUFBRSxDQUFDLElBQUUsTUFBSSxPQUFHLFFBQVEsSUFBRSxDQUFDO0FBQWxDLElBQXNDLElBQUUsQ0FBQyxJQUFFLE1BQUksT0FBRyxRQUFRLEtBQUcsQ0FBQyxNQUFNLENBQUM7QUFBckUsSUFBeUUsSUFBRSxDQUFDLElBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxNQUFJLFFBQVEsS0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQXhILElBQTRILElBQUUsRUFBQyxVQUFTLEVBQUMsT0FBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUssQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxHQUFFLFdBQVUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxVQUFTLENBQUMsSUFBRyxFQUFFLEdBQUUsU0FBUSxDQUFDLEdBQUUsRUFBRSxHQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsR0FBRSxlQUFjLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxPQUFNLEVBQUMsT0FBTSxDQUFDLElBQUcsRUFBRSxHQUFFLEtBQUksQ0FBQyxJQUFHLEVBQUUsR0FBRSxPQUFNLENBQUMsSUFBRyxFQUFFLEdBQUUsUUFBTyxDQUFDLElBQUcsRUFBRSxHQUFFLE1BQUssQ0FBQyxJQUFHLEVBQUUsR0FBRSxTQUFRLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLE9BQU0sQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLE1BQUssQ0FBQyxJQUFHLEVBQUUsR0FBRSxXQUFVLENBQUMsSUFBRyxFQUFFLEdBQUUsYUFBWSxDQUFDLElBQUcsRUFBRSxHQUFFLGNBQWEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxZQUFXLENBQUMsSUFBRyxFQUFFLEdBQUUsZUFBYyxDQUFDLElBQUcsRUFBRSxHQUFFLFlBQVcsQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEVBQUMsR0FBRSxTQUFRLEVBQUMsU0FBUSxDQUFDLElBQUcsRUFBRSxHQUFFLE9BQU0sQ0FBQyxJQUFHLEVBQUUsR0FBRSxTQUFRLENBQUMsSUFBRyxFQUFFLEdBQUUsVUFBUyxDQUFDLElBQUcsRUFBRSxHQUFFLFFBQU8sQ0FBQyxJQUFHLEVBQUUsR0FBRSxXQUFVLENBQUMsSUFBRyxFQUFFLEdBQUUsUUFBTyxDQUFDLElBQUcsRUFBRSxHQUFFLFNBQVEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxlQUFjLENBQUMsS0FBSSxFQUFFLEdBQUUsUUFBTyxDQUFDLEtBQUksRUFBRSxHQUFFLFFBQU8sQ0FBQyxLQUFJLEVBQUUsR0FBRSxhQUFZLENBQUMsS0FBSSxFQUFFLEdBQUUsZUFBYyxDQUFDLEtBQUksRUFBRSxHQUFFLGdCQUFlLENBQUMsS0FBSSxFQUFFLEdBQUUsY0FBYSxDQUFDLEtBQUksRUFBRSxHQUFFLGlCQUFnQixDQUFDLEtBQUksRUFBRSxHQUFFLGNBQWEsQ0FBQyxLQUFJLEVBQUUsR0FBRSxlQUFjLENBQUMsS0FBSSxFQUFFLEVBQUMsRUFBQztBQUFFLFdBQU8sS0FBSyxFQUFFLFFBQVE7QUFBRSxJQUFNLElBQUUsT0FBTyxLQUFLLEVBQUUsS0FBSztBQUEzQixJQUE2QixJQUFFLE9BQU8sS0FBSyxFQUFFLE9BQU87QUFBRSxLQUFDLEdBQUcsR0FBRSxHQUFHLENBQUM7QUFBbTdDLElBQU0sSUFBRSxFQUFFO0FBQVYsSUFBWSxJQUFFLG9CQUFJLElBQUksQ0FBQyxRQUFPLE1BQU0sQ0FBQztBQUFyQyxJQUF1QyxJQUFFO0FBQXpDLElBQTRDLElBQUU7QUFBOUMsSUFBcUQsSUFBRTtBQUF2RCxJQUEyRCxJQUFFO0FBQTdELElBQWlFLElBQUU7QUFBbkUsSUFBdUUsSUFBRSxHQUFHLENBQUM7QUFBN0UsSUFBbUYsSUFBRSxPQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFBOUgsSUFBaUksSUFBRSxPQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFBNUssSUFBK0ssSUFBRSxPQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxPQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQTVNLElBQThNLElBQUUsQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFDLFlBQU0sSUFBRSxDQUFDLEdBQUcsQ0FBQztBQUFFLFVBQUlBLEtBQUUsT0FBRyxJQUFFLE9BQUcsSUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQU8sQ0FBQyxDQUFDLENBQUM7QUFBRSxpQkFBUyxDQUFDLEdBQUUsQ0FBQyxLQUFJLEVBQUUsUUFBUSxHQUFFO0FBQUMsY0FBTSxJQUFFLEVBQUUsQ0FBQztBQUFFLFlBQUcsSUFBRSxLQUFHLElBQUUsRUFBRSxFQUFFLFNBQU8sQ0FBQyxLQUFHLEtBQUcsRUFBRSxLQUFLLENBQUMsR0FBRSxJQUFFLElBQUcsRUFBRSxJQUFJLENBQUMsTUFBSUEsS0FBRSxNQUFHLElBQUUsRUFBRSxNQUFNLElBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLFdBQVcsQ0FBQyxJQUFHQSxJQUFFO0FBQUMsY0FBRSxNQUFJLE1BQUlBLEtBQUUsT0FBRyxJQUFFLFNBQUksTUFBSSxNQUFJQSxLQUFFO0FBQUk7QUFBQSxRQUFRO0FBQUMsYUFBRyxHQUFFLE1BQUksS0FBRyxJQUFFLEVBQUUsU0FBTyxNQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUUsSUFBRTtBQUFBLE1BQUc7QUFBQyxPQUFDLEtBQUcsRUFBRSxFQUFFLFNBQU8sQ0FBQyxFQUFFLFNBQU8sS0FBRyxFQUFFLFNBQU8sTUFBSSxFQUFFLEVBQUUsU0FBTyxDQUFDLEtBQUcsRUFBRSxJQUFJO0FBQUEsSUFBRztBQUF0akIsSUFBd2pCLEtBQUcsT0FBRztBQUFDLFlBQU0sSUFBRSxFQUFFLE1BQU0sR0FBRztBQUFFLFVBQUksSUFBRSxFQUFFO0FBQU8sYUFBSyxJQUFFLEtBQUcsRUFBRSxFQUFFLEVBQUUsSUFBRSxDQUFDLENBQUMsSUFBRTtBQUFJO0FBQUksYUFBTyxNQUFJLEVBQUUsU0FBTyxJQUFFLEVBQUUsTUFBTSxHQUFFLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRTtBQUFBLElBQUM7QUFBanNCLElBQW1zQixLQUFHLENBQUMsR0FBRSxHQUFFLElBQUUsQ0FBQyxNQUFJO0FBQUMsVUFBRyxFQUFFLFNBQU8sU0FBSSxFQUFFLEtBQUssTUFBSTtBQUFHLGVBQU87QUFBRyxVQUFJLElBQUUsSUFBR0EsSUFBRTtBQUFFLFlBQU0sSUFBRSxFQUFFLENBQUM7QUFBRSxVQUFJLElBQUUsQ0FBQyxFQUFFO0FBQUUsaUJBQVMsQ0FBQyxHQUFFLENBQUMsS0FBSSxFQUFFLE1BQU0sR0FBRyxFQUFFLFFBQVEsR0FBRTtBQUFDLFVBQUUsU0FBTyxVQUFLLEVBQUUsRUFBRSxTQUFPLENBQUMsSUFBRSxFQUFFLEVBQUUsU0FBTyxDQUFDLEVBQUUsVUFBVTtBQUFHLFlBQUksSUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFPLENBQUMsQ0FBQztBQUFFLFlBQUcsTUFBSSxNQUFJLEtBQUcsTUFBSSxFQUFFLGFBQVcsU0FBSSxFQUFFLFNBQU8sV0FBTSxFQUFFLEtBQUssRUFBRSxHQUFFLElBQUUsS0FBSSxJQUFFLEtBQUcsRUFBRSxTQUFPLFdBQU0sRUFBRSxFQUFFLFNBQU8sQ0FBQyxLQUFHLEtBQUksT0FBTSxFQUFFLFFBQU0sRUFBRSxDQUFDLElBQUUsR0FBRTtBQUFDLGdCQUFNLElBQUUsSUFBRSxHQUFFLElBQUUsSUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDLElBQUUsSUFBRSxLQUFHLENBQUM7QUFBRSxlQUFLLE9BQU8sRUFBRSxDQUFDLElBQUUsS0FBRyxDQUFDLElBQUUsS0FBRyxFQUFFLEtBQUssRUFBRSxHQUFFLEVBQUUsR0FBRSxHQUFFLENBQUM7QUFBRTtBQUFBLFFBQVE7QUFBQyxZQUFHLElBQUUsRUFBRSxDQUFDLElBQUUsS0FBRyxJQUFFLEtBQUcsRUFBRSxD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QUFLLEtBQUssSUFBR0EsR0FBRTtBQUFBLFFBQUUsR0FBRSxLQUFLLE1BQU0sS0FBSyxDQUFDLEdBQUUsS0FBSyxLQUFHLEVBQUUsZ0JBQWdCLEVBQUMsT0FBTSxLQUFLLE9BQU0sUUFBTyxHQUFFLFNBQVEsR0FBRSxRQUFPLElBQUcsbUJBQWtCLEdBQUUsQ0FBQyxHQUFFLEVBQUUsbUJBQW1CLEtBQUssT0FBTSxLQUFLLEVBQUUsR0FBRSxLQUFLLEdBQUcsT0FBTyxHQUFFLEtBQUssS0FBSyxpQkFBZSxVQUFRLEtBQUssVUFBUSxLQUFLLEdBQUcsTUFBTSxLQUFLLEtBQUssWUFBWSxHQUFFLEtBQUssTUFBTSxHQUFHLFlBQVcsS0FBSyxVQUFVLEdBQUUsRUFBRSxLQUFLLE9BQU0sSUFBRSxHQUFFLEtBQUssT0FBTyxHQUFHLFVBQVMsS0FBSyxNQUFNLEdBQUUsS0FBSyxPQUFPLEdBQUUsSUFBSSxRQUFRLENBQUMsR0FBRSxNQUFJO0FBQUMsZUFBSyxLQUFLLFVBQVMsTUFBSTtBQUFDLGlCQUFLLE9BQU8sTUFBTSxJQUFJLE9BQU8sSUFBSSxHQUFFLEtBQUssT0FBTyxJQUFJLFVBQVMsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLE9BQU0sS0FBRSxHQUFFLEVBQUUsS0FBSyxLQUFLO0FBQUEsVUFBRSxDQUFDLEdBQUUsS0FBSyxLQUFLLFVBQVMsTUFBSTtBQUFDLGlCQUFLLE9BQU8sTUFBTSxJQUFJLE9BQU8sSUFBSSxHQUFFLEtBQUssT0FBTyxJQUFJLFVBQVMsS0FBSyxNQUFNLEdBQUUsRUFBRSxLQUFLLE9BQU0sS0FBRSxHQUFFLEVBQUUsQ0FBQztBQUFBLFVBQUUsQ0FBQztBQUFBLFFBQUUsQ0FBQztBQUFBLE1BQUM7QUFBQSxNQUFDLEdBQUcsR0FBRSxHQUFFO0FBQUMsY0FBTSxJQUFFLEtBQUssWUFBWSxJQUFJLENBQUMsS0FBRyxDQUFDO0FBQUUsVUFBRSxLQUFLLEVBQUMsSUFBRyxFQUFDLENBQUMsR0FBRSxLQUFLLFlBQVksSUFBSSxHQUFFLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxLQUFLLEdBQUUsR0FBRTtBQUFDLGNBQU0sSUFBRSxLQUFLLFlBQVksSUFBSSxDQUFDLEtBQUcsQ0FBQztBQUFFLFVBQUUsS0FBSyxFQUFDLElBQUcsR0FBRSxNQUFLLEtBQUUsQ0FBQyxHQUFFLEtBQUssWUFBWSxJQUFJLEdBQUUsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUssTUFBSyxHQUFFO0FBQUMsY0FBTSxJQUFFLEtBQUssWUFBWSxJQUFJLENBQUMsS0FBRyxDQUFDLEdBQUVBLEtBQUUsQ0FBQztBQUFFLG1CQUFVLEtBQUs7QUFBRSxZQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxRQUFNQSxHQUFFLEtBQUssTUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRSxDQUFDLENBQUM7QUFBRSxtQkFBVSxLQUFLQTtBQUFFLFlBQUU7QUFBQSxNQUFFO0FBQUEsTUFBQyxjQUFhO0FBQUMsYUFBSyxZQUFZLE1BQU07QUFBQSxNQUFFO0FBQUEsTUFBQyxXQUFXLEdBQUUsR0FBRTtBQUFDLFlBQUcsS0FBSyxVQUFRLFlBQVUsS0FBSyxRQUFNLFdBQVUsR0FBRyxRQUFNLENBQUMsS0FBSyxVQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksS0FBRyxLQUFLLEtBQUssVUFBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRSxHQUFHLFFBQU0sR0FBRyxJQUFJLEVBQUUsSUFBSSxLQUFHLEtBQUssS0FBSyxVQUFTLEVBQUUsSUFBSSxHQUFFLE1BQUksRUFBRSxZQUFZLE1BQUksT0FBSyxFQUFFLFlBQVksTUFBSSxRQUFNLEtBQUssS0FBSyxXQUFVLEVBQUUsWUFBWSxNQUFJLEdBQUcsR0FBRSxLQUFHLEtBQUssS0FBSyxPQUFNLEVBQUUsWUFBWSxDQUFDLEdBQUUsR0FBRyxTQUFPLFVBQVM7QUFBQyxjQUFHLEtBQUssS0FBSyxVQUFTO0FBQUMsa0JBQU0sSUFBRSxLQUFLLEtBQUssU0FBUyxLQUFLLEtBQUs7QUFBRSxrQkFBSSxLQUFLLFFBQU0sR0FBRSxLQUFLLFFBQU0sU0FBUSxLQUFLLEdBQUcsTUFBTSxLQUFLLEtBQUs7QUFBQSxVQUFHO0FBQUMsZUFBSyxVQUFRLFlBQVUsS0FBSyxRQUFNO0FBQUEsUUFBVTtBQUFDLGNBQUksUUFBTSxLQUFLLFFBQU0sWUFBVyxLQUFLLFVBQVEsWUFBVSxLQUFLLFVBQVEsYUFBVyxLQUFLLEtBQUssVUFBVSxHQUFFLEtBQUssT0FBTyxJQUFHLEtBQUssVUFBUSxZQUFVLEtBQUssVUFBUSxhQUFXLEtBQUssTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLFFBQU87QUFBQyxhQUFLLE1BQU0sT0FBTyxHQUFFLEtBQUssTUFBTSxlQUFlLFlBQVcsS0FBSyxVQUFVLEdBQUUsS0FBSyxPQUFPLE1BQU07QUFBQSxDQUMva0YsR0FBRSxFQUFFLEtBQUssT0FBTSxLQUFFLEdBQUUsS0FBSyxHQUFHLE1BQU0sR0FBRSxLQUFLLEtBQUssR0FBRyxLQUFLLEtBQUssSUFBRyxLQUFLLEtBQUssR0FBRSxLQUFLLFlBQVk7QUFBQSxNQUFFO0FBQUEsTUFBQyxnQkFBZTtBQUFDLGNBQU0sSUFBRSxFQUFFLEtBQUssWUFBVyxRQUFRLE9BQU8sU0FBUSxFQUFDLE1BQUssS0FBRSxDQUFDLEVBQUUsTUFBTTtBQUFBLENBQy9LLEVBQUUsU0FBTztBQUFFLGFBQUssT0FBTyxNQUFNLElBQUksT0FBTyxLQUFLLE1BQUssSUFBRSxFQUFFLENBQUM7QUFBQSxNQUFFO0FBQUEsTUFBQyxTQUFRO0FBQUMsY0FBTSxJQUFFLEVBQUUsS0FBSyxRQUFRLElBQUksS0FBRyxJQUFHLFFBQVEsT0FBTyxTQUFRLEVBQUMsTUFBSyxLQUFFLENBQUM7QUFBRSxZQUFHLE1BQUksS0FBSyxZQUFXO0FBQUMsY0FBRyxLQUFLLFVBQVE7QUFBVSxpQkFBSyxPQUFPLE1BQU0sSUFBSSxPQUFPLElBQUk7QUFBQSxlQUFPO0FBQUMsa0JBQU0sSUFBRSxHQUFHLEtBQUssWUFBVyxDQUFDO0FBQUUsZ0JBQUcsS0FBSyxjQUFjLEdBQUUsS0FBRyxHQUFHLFdBQVMsR0FBRTtBQUFDLG9CQUFNLElBQUUsRUFBRSxDQUFDO0FBQUUsbUJBQUssT0FBTyxNQUFNLElBQUksT0FBTyxLQUFLLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBSyxPQUFPLE1BQU0sSUFBSSxNQUFNLE1BQU0sQ0FBQyxDQUFDO0FBQUUsb0JBQU1BLEtBQUUsRUFBRSxNQUFNO0FBQUEsQ0FDcFo7QUFBRSxtQkFBSyxPQUFPLE1BQU1BLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBSyxhQUFXLEdBQUUsS0FBSyxPQUFPLE1BQU0sSUFBSSxPQUFPLEtBQUssR0FBRUEsR0FBRSxTQUFPLElBQUUsQ0FBQyxDQUFDO0FBQUU7QUFBQSxZQUFNLFdBQVMsS0FBRyxHQUFHLFNBQU8sR0FBRTtBQUFDLG9CQUFNLElBQUUsRUFBRSxDQUFDO0FBQUUsbUJBQUssT0FBTyxNQUFNLElBQUksT0FBTyxLQUFLLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBSyxPQUFPLE1BQU0sSUFBSSxNQUFNLEtBQUssQ0FBQztBQUFFLG9CQUFNLElBQUUsRUFBRSxNQUFNO0FBQUEsQ0FDdk8sRUFBRSxNQUFNLENBQUM7QUFBRSxtQkFBSyxPQUFPLE1BQU0sRUFBRSxLQUFLO0FBQUEsQ0FDcEMsQ0FBQyxHQUFFLEtBQUssYUFBVztBQUFFO0FBQUEsWUFBTTtBQUFDLGlCQUFLLE9BQU8sTUFBTSxJQUFJLE1BQU0sS0FBSyxDQUFDO0FBQUEsVUFBRTtBQUFDLGVBQUssT0FBTyxNQUFNLENBQUMsR0FBRSxLQUFLLFVBQVEsY0FBWSxLQUFLLFFBQU0sV0FBVSxLQUFLLGFBQVc7QUFBQSxRQUFFO0FBQUEsTUFBQztBQUFBLElBQUM7QUFBQyxJQUFNLEtBQU4sY0FBaUIsRUFBQztBQUFBLE1BQUMsSUFBSSxTQUFRO0FBQUMsZUFBTyxLQUFLLFFBQU0sSUFBRTtBQUFBLE1BQUM7QUFBQSxNQUFDLElBQUksU0FBUTtBQUFDLGVBQU8sS0FBSyxXQUFTO0FBQUEsTUFBQztBQUFBLE1BQUMsWUFBWSxHQUFFO0FBQUMsY0FBTSxHQUFFLEtBQUUsR0FBRSxLQUFLLFFBQU0sQ0FBQyxDQUFDLEVBQUUsY0FBYSxLQUFLLEdBQUcsU0FBUSxNQUFJO0FBQUMsZUFBSyxRQUFNLEtBQUs7QUFBQSxRQUFPLENBQUMsR0FBRSxLQUFLLEdBQUcsV0FBVSxPQUFHO0FBQUMsZUFBSyxPQUFPLE1BQU0sSUFBSSxPQUFPLEtBQUssR0FBRSxFQUFFLENBQUMsR0FBRSxLQUFLLFFBQU0sR0FBRSxLQUFLLFFBQU0sVUFBUyxLQUFLLE1BQU07QUFBQSxRQUFFLENBQUMsR0FBRSxLQUFLLEdBQUcsVUFBUyxNQUFJO0FBQUMsZUFBSyxRQUFNLENBQUMsS0FBSztBQUFBLFFBQU0sQ0FBQztBQUFBLE1BQUU7QUFBQSxJQUFDO0FBQUMsSUFBTSxLQUFOLGNBQWlCLEVBQUM7QUFBQSxNQUFDLFlBQVksR0FBRTtBQUFDLGNBQU0sR0FBRSxLQUFFLEdBQUUsS0FBSyxTQUFPLEdBQUUsS0FBSyxVQUFRLEVBQUUsU0FBUSxLQUFLLFFBQU0sQ0FBQyxHQUFHLEVBQUUsaUJBQWUsQ0FBQyxDQUFDLEdBQUUsS0FBSyxTQUFPLEtBQUssSUFBSSxLQUFLLFFBQVEsVUFBVSxDQUFDLEVBQUMsT0FBTSxFQUFDLE1BQUksTUFBSSxFQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsS0FBSyxHQUFHLE9BQU0sT0FBRztBQUFDLGdCQUFJLE9BQUssS0FBSyxVQUFVO0FBQUEsUUFBRSxDQUFDLEdBQUUsS0FBSyxHQUFHLFVBQVMsT0FBRztBQUFDLGtCQUFPLEdBQUU7QUFBQSxZQUFDLEtBQUk7QUFBQSxZQUFPLEtBQUk7QUFBSyxtQkFBSyxTQUFPLEtBQUssV0FBUyxJQUFFLEtBQUssUUFBUSxTQUFPLElBQUUsS0FBSyxTQUFPO0FBQUU7QUFBQSxZQUFNLEtBQUk7QUFBQSxZQUFPLEtBQUk7QUFBUSxtQkFBSyxTQUFPLEtBQUssV0FBUyxLQUFLLFFBQVEsU0FBTyxJQUFFLElBQUUsS0FBSyxTQUFPO0FBQUU7QUFBQSxZQUFNLEtBQUk7QUFBUSxtQkFBSyxZQUFZO0FBQUU7QUFBQSxVQUFLO0FBQUEsUUFBQyxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsSUFBSSxTQUFR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LGFBQWEsT0FBUztBQUNoRCxpQkFBTztBQUFBLFFBQ1Q7QUFDQSxZQUFLLFFBQVUsYUFDVixTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxPQUFTO0FBQ2hELGlCQUFPO0FBQUEsUUFDVDtBQUNBLFlBQUssUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsU0FDcEMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsVUFDckMsVUFBVyxhQUFhLGFBQWEsUUFBVTtBQUNsRCxpQkFBTztBQUFBLFFBQ1Q7QUFDQSxZQUFLLE1BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQ1YsU0FBVSxhQUFhLGFBQWEsU0FDcEMsU0FBVSxhQUFhLGFBQWEsT0FBUztBQUNoRCxpQkFBTztBQUFBLFFBQ1Q7QUFDQSxZQUFLLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNW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SUFBSSxDQUFDLEVBQUUsWUFBWSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUk7QUFDckQ7QUFDQSxTQUFTLFdBQVcsS0FBSyxNQUFNO0FBQzdCLFNBQU8sT0FBTyxNQUFNLFFBQVEsR0FBRyxJQUFJLE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDQyxPQUFNLFdBQVcsTUFBTSxZQUFZQSxHQUFFLFlBQVksSUFBSUEsRUFBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUk7QUFDdEk7QUFDQSxTQUFTLFVBQVUsS0FBSyxNQUFNO0FBQzVCLFNBQU8sV0FBVyxXQUFXLE9BQU8sSUFBSSxJQUFJLENBQUM7QUFDL0M7QUFDQSxTQUFTLFVBQVUsS0FBSyxRQUFRO0FBQzlCLFNBQU8sT0FBTyxNQUFNLFFBQVEsR0FBRyxJQUFJLE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDQSxPQUFNQSxHQUFFLFlBQVksQ0FBQyxFQUFFLEtBQUssVUFBVSxHQUFHLElBQUk7QUFDL0c7QUFFQSxTQUFTLE1BQU0sS0FBSztBQUNsQixTQUFPLE9BQU8sU0FBUyxDQUFDLElBQUksTUFBTSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRztBQUM3RDtBQUNBLFNBQVMsTUFBTSxLQUFLLEtBQUssS0FBSyxNQUFNO0FBQ2xDLE1BQUk7QUFDSixRQUFNLE1BQU0sSUFBSSxHQUFHO0FBQ25CLFFBQU0sTUFBTSxDQUFDLEtBQUssT0FBTyxRQUFRLEdBQUcsSUFBSSxPQUFPLFVBQVUsUUFBUSxPQUFPLEtBQUssT0FBTyxHQUFHLElBQUksT0FBTyxRQUFRLFlBQVksTUFBTSxDQUFDLEtBQUssUUFBUSxRQUFRLEdBQUcsSUFBSSxRQUFRLFVBQVUsUUFBUSxRQUFRLFdBQVcsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLEtBQUssSUFBSSxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssSUFBSSxNQUFNLEtBQUssSUFBSTtBQUM1UixNQUFJLEdBQUcsSUFBSSxPQUFPLFNBQVMsTUFB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RUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Y7QUFDQSxJQUFNQyxLQUFJLENBQUM7QUFDWCxJQUFNLFNBQU4sY0FBcUIsT0FBTztBQUFBLEVBQzFCLGNBQWM7QUFDWixVQUFNLEdBQUcsU0FBUztBQUNsQixTQUFLLFFBQVEsSUFBSSxVQUFVLENBQUMsR0FBR0YsRUFBQyxDQUFDO0FBQUEsRUFDbkM7QUFBQSxFQUNBLFFBQVE7QUFDTixVQUFNLE1BQU07QUFDWixTQUFLLFFBQVEsSUFBSSxVQUFVLENBQUMsR0FBR0EsRUFBQyxDQUFDO0FBQUEsRUFDbkM7QUFBQSxFQUNBLGdCQUFnQkcsSUFBRyxRQUFRO0FBQ3pCLFVBQU1DLE1BQUssS0FBSyxNQUFNO0FBQ3RCLFFBQUksSUFBSUEsSUFBRyxDQUFDO0FBQ1osUUFBSUMsS0FBSUQsSUFBRyxDQUFDO0FBQ1osUUFBSUUsS0FBSUYsSUFBRyxDQUFDO0FBQ1osUUFBSSxJQUFJQSxJQUFHLENBQUM7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QjtBQUUzQyxNQUFJLFVBQVU7QUFDWixlQUFXLFVBQVUsTUFBTSxnQkFBZ0I7QUFBQSxFQUM3QztBQUVBLFFBQU0saUJBQWlCLFdBQVcsS0FBSztBQUV2QyxTQUFPLE1BQU0sR0FBRyxVQUFVLFdBQVcsT0FBTztBQUM5QztBQUVBLFNBQVMsV0FDUCxTQUNBLFNBQ0E7QUFDQSxNQUFJLENBQUMsU0FBUztBQUNaO0FBQUEsRUFDRjtBQUNBLGFBQVcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxTQUFTO0FBQ25DLFFBQUksVUFBVSxTQUFTO0FBQ3JCLGNBQVEsTUFBTSxJQUFJO0FBQUEsSUFDcEI7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxlQUFlLGtCQUFrQixhQUFxQjtBQUNwRCxNQUFJO0FBRUosTUFBSTtBQUNGLGVBQVcsTUFBTSxtQkFBbUIsV0FBVztBQUFBLEVBQ2pELFFBQVE7QUFDTixVQUFNLElBQUk7QUFBQSxNQUNSLDZCQUE2QixXQUFXO0FBQUE7QUFBQSxJQUUxQztBQUFBLEVBQ0Y7QUFFQSxRQUFNLGNBQWM7QUFBQTtBQUdwQixRQUFNLGFBQWEsa0JBQWtCLFFBQVE7QUFDN0MsTUFBSSxDQUFDLFlBQVk7QUFDZixVQUFNLElBQUk7QUFBQSxNQUNSLDBEQUEwRCxXQUFXO0FBQUEsRUFDekUsV0FBVztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsUUFBTSxRQUFRLG9CQUFvQixVQUFVO0FBQzVDLE1BQUksQ0FBQyxPQUFPO0FBQ1YsVUFBTSxJQUFJO0FBQUEsTUFDUiwrREFBK0QsV0FBVyxxQkFBcUIsVUFBVTtBQUFBLEVBQzdHLFdBQVc7QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNGO0FBRUEsZUFBZSxlQUFlQSxJQUFXO0FBQ3ZDLE1BQUk7QUFDRixVQUFNLEdBQUcsT0FBTyxLQUFLLFFBQVFBLElBQUcsY0FBYyxHQUFHLEdBQUcsVUFBVSxJQUFJO0FBQ2xFLFdBQU87QUFBQSxFQUNULFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogWyJkZWZhdWx0cyIsICJwIiwgImMiLCAibCIsICJ0ZXh0IiwgInMiLCAidHR5IiwgImlzQ29sb3JTdXBwb3J0ZWQiLCAicmVwbGFjZUNsb3NlIiwgImNyZWF0ZUNvbG9ycyIsICJjIiwgImVudiIsICJhbnNpUmVnZXgiLCAic3RyaXBBbnNpIiwgIl8iLCAibSIsICJnZXRDb2xvciIsICJjcmVhdGVDb25zb2xhIiwgImlzQ0kiLCAidW5pY29kZSIsICJzIiwgInRleHQiLCAiYyIsICJsIiwgImMiLCAicCIsICJqIiwgImRlZmF1bHRzIiwgInJlZ2V4IiwgImYiLCAiaiIsICJIIiwgIksiLCAiVyIsICJNIiwgIkgyIiwgImIiLCAiYyIsICJnIiwgImgiLCAicCIsICJzdGRvdXQiXQp9Cg==