projen 0.103.16 → 0.103.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +348 -187
- package/lib/ai-instructions.js +2 -2
- package/lib/awscdk/auto-discover.js +6 -6
- package/lib/awscdk/awscdk-app-java.js +1 -1
- package/lib/awscdk/awscdk-app-py.js +1 -1
- package/lib/awscdk/awscdk-app-ts.js +1 -1
- package/lib/awscdk/awscdk-construct.js +1 -1
- package/lib/awscdk/awscdk-deps-java.js +1 -1
- package/lib/awscdk/awscdk-deps-js.js +1 -1
- package/lib/awscdk/awscdk-deps-py.js +1 -1
- package/lib/awscdk/awscdk-deps.js +1 -1
- package/lib/awscdk/cdk-config.js +3 -3
- package/lib/awscdk/cdk-tasks.js +1 -1
- package/lib/awscdk/integration-test.js +1 -1
- package/lib/awscdk/lambda-extension.js +1 -1
- package/lib/awscdk/lambda-function.js +2 -2
- package/lib/build/build-workflow.js +1 -1
- package/lib/cdk/auto-discover-base.js +2 -2
- package/lib/cdk/construct-lib.js +1 -1
- package/lib/cdk/integration-test-base.js +1 -1
- package/lib/cdk/jsii-build.js +1 -1
- package/lib/cdk/jsii-docgen.js +1 -1
- package/lib/cdk/jsii-project.js +1 -1
- package/lib/cdk8s/auto-discover.js +2 -2
- package/lib/cdk8s/cdk8s-app-py.js +1 -1
- package/lib/cdk8s/cdk8s-app-ts.js +1 -1
- package/lib/cdk8s/cdk8s-construct.js +1 -1
- package/lib/cdk8s/cdk8s-deps-py.js +1 -1
- package/lib/cdk8s/cdk8s-deps.js +1 -1
- package/lib/cdk8s/integration-test.js +1 -1
- package/lib/cdktf/cdktf-construct.js +1 -1
- package/lib/cdktn/cdktn-app-ts.js +1 -1
- package/lib/cdktn/cdktn-config.js +1 -1
- package/lib/cdktn/cdktn-construct.js +1 -1
- package/lib/cdktn/cdktn-deps.js +1 -1
- package/lib/cdktn/cdktn-tasks.js +1 -1
- package/lib/circleci/circleci.js +1 -1
- package/lib/component.js +2 -2
- package/lib/dependencies.js +1 -1
- package/lib/dev-env.js +1 -1
- package/lib/docker-compose/docker-compose-service.js +1 -1
- package/lib/docker-compose/docker-compose.js +1 -1
- package/lib/file.js +1 -1
- package/lib/gitattributes.js +1 -1
- package/lib/github/actions-provider.js +1 -1
- package/lib/github/auto-approve.js +1 -1
- package/lib/github/auto-merge.js +1 -1
- package/lib/github/auto-queue.js +1 -1
- package/lib/github/dependabot.js +1 -1
- package/lib/github/dependency-review.js +1 -1
- package/lib/github/github-credentials.js +1 -1
- package/lib/github/github-project.js +1 -1
- package/lib/github/github.js +1 -1
- package/lib/github/merge-queue.js +1 -1
- package/lib/github/mergify.js +1 -1
- package/lib/github/pr-template.js +1 -1
- package/lib/github/pull-request-backport.js +1 -1
- package/lib/github/pull-request-lint.js +1 -1
- package/lib/github/stale.js +1 -1
- package/lib/github/task-workflow-job.js +1 -1
- package/lib/github/task-workflow.js +1 -1
- package/lib/github/workflow-actions.js +1 -1
- package/lib/github/workflow-jobs.js +1 -1
- package/lib/github/workflow-steps.js +1 -1
- package/lib/github/workflows.js +1 -1
- package/lib/gitlab/configuration.js +1 -1
- package/lib/gitlab/gitlab-configuration.js +1 -1
- package/lib/gitlab/nested-configuration.js +1 -1
- package/lib/gitpod.js +1 -1
- package/lib/ignore-file.js +1 -1
- package/lib/ini.js +1 -1
- package/lib/java/java-project.js +1 -1
- package/lib/java/junit.js +1 -1
- package/lib/java/maven-compile.js +1 -1
- package/lib/java/maven-packaging.js +1 -1
- package/lib/java/maven-sample.js +1 -1
- package/lib/java/pom.js +2 -2
- package/lib/java/projenrc.js +1 -1
- package/lib/javascript/biome/biome.js +1 -1
- package/lib/javascript/bundler.js +1 -1
- package/lib/javascript/eslint.js +1 -1
- package/lib/javascript/jest.js +4 -4
- package/lib/javascript/license-checker.js +1 -1
- package/lib/javascript/node-config-file.js +1 -1
- package/lib/javascript/node-package.js +1 -1
- package/lib/javascript/node-project.js +1 -1
- package/lib/javascript/npm-config.js +1 -1
- package/lib/javascript/pnpm-workspace-config.d.ts +49 -2
- package/lib/javascript/pnpm-workspace-config.js +24 -6
- package/lib/javascript/pnpm-workspace.js +1 -1
- package/lib/javascript/prettier.js +1 -1
- package/lib/javascript/projenrc.js +1 -1
- package/lib/javascript/typescript-config.js +2 -2
- package/lib/javascript/upgrade-dependencies.js +2 -2
- package/lib/javascript/yarnrc.js +1 -1
- package/lib/json-patch.js +1 -1
- package/lib/json.js +1 -1
- package/lib/license.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/makefile.js +1 -1
- package/lib/object-file.js +1 -1
- package/lib/polaris/coverity-go.js +1 -1
- package/lib/polaris/coverity-java.js +1 -1
- package/lib/polaris/coverity-javascript.js +1 -1
- package/lib/polaris/coverity.js +1 -1
- package/lib/project-build.js +1 -1
- package/lib/project-tree.js +1 -1
- package/lib/project.js +1 -1
- package/lib/projects.js +1 -1
- package/lib/projenrc-json.js +1 -1
- package/lib/projenrc.js +1 -1
- package/lib/properties-file.js +1 -1
- package/lib/python/pip.js +1 -1
- package/lib/python/poetry.js +2 -2
- package/lib/python/projenrc.js +1 -1
- package/lib/python/pyproject-toml-file.js +1 -1
- package/lib/python/pytest-sample.js +1 -1
- package/lib/python/pytest.js +1 -1
- package/lib/python/python-project.js +1 -1
- package/lib/python/python-sample.js +1 -1
- package/lib/python/requirements-file.js +1 -1
- package/lib/python/setuppy.js +1 -1
- package/lib/python/setuptools.js +1 -1
- package/lib/python/uv-config.js +1 -1
- package/lib/python/uv.js +1 -1
- package/lib/python/venv.js +1 -1
- package/lib/readme.js +1 -1
- package/lib/release/publisher.js +1 -1
- package/lib/release/release-trigger.js +1 -1
- package/lib/release/release.js +1 -1
- package/lib/renovatebot.js +1 -1
- package/lib/run-task.cjs +1 -1
- package/lib/sample-file.js +2 -2
- package/lib/script-runner.js +1 -1
- package/lib/sonarqube/javascript.js +1 -1
- package/lib/sonarqube/rust.js +1 -1
- package/lib/sonarqube/sonarqube.js +1 -1
- package/lib/sonarqube/typescript.js +1 -1
- package/lib/source-code.js +1 -1
- package/lib/task-shell.js +1 -1
- package/lib/task.js +1 -1
- package/lib/tasks.js +1 -1
- package/lib/testing.js +1 -1
- package/lib/textfile.js +1 -1
- package/lib/toml.js +1 -1
- package/lib/typescript/projenrc-ts.js +1 -1
- package/lib/typescript/projenrc.js +1 -1
- package/lib/typescript/typescript-runner.js +1 -1
- package/lib/typescript/typescript-typedoc.js +1 -1
- package/lib/typescript/typescript.js +5 -5
- package/lib/version.js +2 -2
- package/lib/vscode/devcontainer.js +1 -1
- package/lib/vscode/extensions.js +1 -1
- package/lib/vscode/launch-config.js +1 -1
- package/lib/vscode/settings.js +1 -1
- package/lib/vscode/vscode.js +1 -1
- package/lib/web/next.js +3 -3
- package/lib/web/postcss.js +1 -1
- package/lib/web/react.js +3 -3
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PnpmWorkspaceYamlSchemaVersioningChangelogStorage = exports.PnpmWorkspaceYamlSchemaVersioningMaxBump = exports.PnpmWorkspaceYamlSchemaHoistingLimits = exports.PnpmWorkspaceYamlSchemaRuntimeOnFail = exports.PnpmWorkspaceYamlSchemaPmOnFail = exports.PnpmWorkspaceYamlSchemaAuditLevel = exports.PnpmWorkspaceYamlSchemaTrustPolicy = exports.PnpmWorkspaceYamlSchemaResolutionMode = exports.PnpmWorkspaceYamlSchemaSavePrefix = exports.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol = exports.PnpmWorkspaceYamlSchemaLinkWorkspacePackages = exports.PnpmWorkspaceYamlSchemaReporter = exports.PnpmWorkspaceYamlSchemaLoglevel = exports.PnpmWorkspaceYamlSchemaColor = exports.PnpmWorkspaceYamlSchemaPackageImportMethod = exports.PnpmWorkspaceYamlSchemaNodePackageMapType = exports.PnpmWorkspaceYamlSchemaNodeLinker = exports.PnpmWorkspaceYamlSchemaCatalogMode = void 0;
|
|
3
|
+
exports.PnpmWorkspaceYamlSchemaVersioningChangelogStorage = exports.PnpmWorkspaceYamlSchemaVersioningMaxBump = exports.PnpmWorkspaceYamlSchemaHoistingLimits = exports.PnpmWorkspaceYamlSchemaRuntimeOnFail = exports.PnpmWorkspaceYamlSchemaPmOnFail = exports.PnpmWorkspaceYamlSchemaAuditLevel = exports.PnpmWorkspaceYamlSchemaTrustPolicy = exports.PnpmWorkspaceYamlSchemaResolutionMode = exports.PnpmWorkspaceYamlSchemaSavePrefix = exports.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol = exports.PnpmWorkspaceYamlSchemaLinkWorkspacePackages = exports.PnpmWorkspaceYamlSchemaReporter = exports.PnpmWorkspaceYamlSchemaLoglevel = exports.PnpmWorkspaceYamlSchemaColor = exports.PnpmWorkspaceYamlSchemaPackageImportMethod = exports.PnpmWorkspaceYamlSchemaVirtualStoreType = exports.PnpmWorkspaceYamlSchemaNodePackageMapType = exports.PnpmWorkspaceYamlSchemaNodeLinker = exports.PnpmWorkspaceYamlSchemaCatalogMode = void 0;
|
|
4
4
|
exports.toJson_PnpmWorkspaceYamlSchema = toJson_PnpmWorkspaceYamlSchema;
|
|
5
5
|
exports.toJson_PnpmWorkspaceYamlSchemaPeerDependencyRules = toJson_PnpmWorkspaceYamlSchemaPeerDependencyRules;
|
|
6
6
|
exports.toJson_PnpmWorkspaceYamlSchemaUpdate = toJson_PnpmWorkspaceYamlSchemaUpdate;
|
|
@@ -65,11 +65,14 @@ function toJson_PnpmWorkspaceYamlSchema(obj) {
|
|
|
65
65
|
'enableModulesDir': obj.enableModulesDir,
|
|
66
66
|
'virtualStoreDir': obj.virtualStoreDir,
|
|
67
67
|
'virtualStoreDirMaxLength': obj.virtualStoreDirMaxLength,
|
|
68
|
+
'virtualStoreType': obj.virtualStoreType,
|
|
68
69
|
'packageImportMethod': obj.packageImportMethod,
|
|
69
70
|
'modulesCacheMaxAge': obj.modulesCacheMaxAge,
|
|
70
71
|
'dlxCacheMaxAge': obj.dlxCacheMaxAge,
|
|
71
72
|
'storeDir': obj.storeDir,
|
|
72
73
|
'verifyStoreIntegrity': obj.verifyStoreIntegrity,
|
|
74
|
+
'useRunningStoreServer': obj.useRunningStoreServer,
|
|
75
|
+
'frozenStore': obj.frozenStore,
|
|
73
76
|
'strictStorePkgContentCheck': obj.strictStorePkgContentCheck,
|
|
74
77
|
'enableGlobalVirtualStore': obj.enableGlobalVirtualStore,
|
|
75
78
|
'lockfile': obj.lockfile,
|
|
@@ -141,10 +144,12 @@ function toJson_PnpmWorkspaceYamlSchema(obj) {
|
|
|
141
144
|
'tag': obj.tag,
|
|
142
145
|
'globalDir': obj.globalDir,
|
|
143
146
|
'globalBinDir': obj.globalBinDir,
|
|
147
|
+
'globalShims': obj.globalShims,
|
|
144
148
|
'stateDir': obj.stateDir,
|
|
145
149
|
'cacheDir': obj.cacheDir,
|
|
146
150
|
'useStderr': obj.useStderr,
|
|
147
151
|
'updateNotifier': obj.updateNotifier,
|
|
152
|
+
'ci': obj.ci,
|
|
148
153
|
'preferSymlinkedExecutables': obj.preferSymlinkedExecutables,
|
|
149
154
|
'ignoreCompatibilityDb': obj.ignoreCompatibilityDb,
|
|
150
155
|
'resolutionMode': obj.resolutionMode,
|
|
@@ -270,6 +275,7 @@ function toJson_PnpmWorkspaceYamlSchemaAudit(obj) {
|
|
|
270
275
|
const result = {
|
|
271
276
|
'level': obj.level,
|
|
272
277
|
'ignore': obj.ignore?.map(y => y),
|
|
278
|
+
'ignorePrune': obj.ignorePrune,
|
|
273
279
|
};
|
|
274
280
|
// filter undefined values
|
|
275
281
|
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
@@ -349,6 +355,18 @@ var PnpmWorkspaceYamlSchemaNodePackageMapType;
|
|
|
349
355
|
/** loose */
|
|
350
356
|
PnpmWorkspaceYamlSchemaNodePackageMapType["LOOSE"] = "loose";
|
|
351
357
|
})(PnpmWorkspaceYamlSchemaNodePackageMapType || (exports.PnpmWorkspaceYamlSchemaNodePackageMapType = PnpmWorkspaceYamlSchemaNodePackageMapType = {}));
|
|
358
|
+
/**
|
|
359
|
+
* Determines where the virtual store is located. When set to project, a separate virtual store is created in each project's node_modules/.pnpm. When set to global, a single store is shared by every project on the machine, with each project's node_modules holding only symlinks into it. Added in pnpm v11.23.0.
|
|
360
|
+
*
|
|
361
|
+
* @schema PnpmWorkspaceYamlSchemaVirtualStoreType
|
|
362
|
+
*/
|
|
363
|
+
var PnpmWorkspaceYamlSchemaVirtualStoreType;
|
|
364
|
+
(function (PnpmWorkspaceYamlSchemaVirtualStoreType) {
|
|
365
|
+
/** project */
|
|
366
|
+
PnpmWorkspaceYamlSchemaVirtualStoreType["PROJECT"] = "project";
|
|
367
|
+
/** global */
|
|
368
|
+
PnpmWorkspaceYamlSchemaVirtualStoreType["GLOBAL"] = "global";
|
|
369
|
+
})(PnpmWorkspaceYamlSchemaVirtualStoreType || (exports.PnpmWorkspaceYamlSchemaVirtualStoreType = PnpmWorkspaceYamlSchemaVirtualStoreType = {}));
|
|
352
370
|
/**
|
|
353
371
|
* Controls the way packages are imported from the store (if you want to disable symlinks inside node_modules, then you need to change the nodeLinker setting, not this one).
|
|
354
372
|
*
|
|
@@ -421,7 +439,7 @@ var PnpmWorkspaceYamlSchemaReporter;
|
|
|
421
439
|
*/
|
|
422
440
|
class PnpmWorkspaceYamlSchemaLinkWorkspacePackages {
|
|
423
441
|
value;
|
|
424
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaLinkWorkspacePackages", version: "0.103.
|
|
442
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaLinkWorkspacePackages", version: "0.103.17" };
|
|
425
443
|
static fromBoolean(value) {
|
|
426
444
|
return new PnpmWorkspaceYamlSchemaLinkWorkspacePackages(value);
|
|
427
445
|
}
|
|
@@ -440,7 +458,7 @@ exports.PnpmWorkspaceYamlSchemaLinkWorkspacePackages = PnpmWorkspaceYamlSchemaLi
|
|
|
440
458
|
*/
|
|
441
459
|
class PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol {
|
|
442
460
|
value;
|
|
443
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol", version: "0.103.
|
|
461
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol", version: "0.103.17" };
|
|
444
462
|
static fromBoolean(value) {
|
|
445
463
|
return new PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol(value);
|
|
446
464
|
}
|
|
@@ -568,8 +586,8 @@ var PnpmWorkspaceYamlSchemaRuntimeOnFail;
|
|
|
568
586
|
*/
|
|
569
587
|
var PnpmWorkspaceYamlSchemaHoistingLimits;
|
|
570
588
|
(function (PnpmWorkspaceYamlSchemaHoistingLimits) {
|
|
571
|
-
/**
|
|
572
|
-
PnpmWorkspaceYamlSchemaHoistingLimits["
|
|
589
|
+
/** none */
|
|
590
|
+
PnpmWorkspaceYamlSchemaHoistingLimits["NONE"] = "none";
|
|
573
591
|
/** workspaces */
|
|
574
592
|
PnpmWorkspaceYamlSchemaHoistingLimits["WORKSPACES"] = "workspaces";
|
|
575
593
|
/** dependencies */
|
|
@@ -633,4 +651,4 @@ var PnpmWorkspaceYamlSchemaVersioningChangelogStorage;
|
|
|
633
651
|
/** repository */
|
|
634
652
|
PnpmWorkspaceYamlSchemaVersioningChangelogStorage["REPOSITORY"] = "repository";
|
|
635
653
|
})(PnpmWorkspaceYamlSchemaVersioningChangelogStorage || (exports.PnpmWorkspaceYamlSchemaVersioningChangelogStorage = PnpmWorkspaceYamlSchemaVersioningChangelogStorage = {}));
|
|
636
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvcG5wbS13b3Jrc3BhY2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlwQ0Esd0VBNEtDO0FBZ0RELDhHQVNDO0FBeUNELG9GQVVDO0FBb0JELGdHQU9DO0FBMkJELGtGQVFDO0FBMkJELDhGQVFDO0FBOEJELG9IQVNDO0FBb0JELGdHQU9DO0FBZ05ELDRGQVlDO0FBbUhELHNHQVFDO0FBc0JELDhHQU9DOztBQXB6QkQ7OztHQUdHO0FBQ0gscUZBQXFGO0FBQ3JGLFNBQWdCLDhCQUE4QixDQUFDLEdBQXdDO0lBQ3JGLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLFNBQVMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5SixVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsUyxhQUFhLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDOUIsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtRQUNsRCxjQUFjLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDaEMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRCxXQUFXLEVBQUUsR0FB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QUMxRyxDQUFDO0FBaUJEOzs7R0FHRztBQUNILHFGQUFxRjtBQUNyRixTQUFnQixpREFBaUQsQ0FBQyxHQUEyRDtJQUMzSCxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLFNBQVMsRUFBRSxHQUFHLENBQUMsT0FBTztLQUN2QixDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFDRCxvRkFBb0Y7QUFFcEY7Ozs7R0FJRztBQUNILElBQVksaURBS1g7QUFMRCxXQUFZLGlEQUFpRDtJQUMzRCxlQUFlO0lBQ2YsMEVBQXFCLENBQUE7SUFDckIsaUJBQWlCO0lBQ2pCLDhFQUF5QixDQUFBO0FBQzNCLENBQUMsRUFMVyxpREFBaUQsaUVBQWpELGlEQUFpRCxRQUs1RCIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5vZGUgLi9wcm9qZW4uanNcIi5cbi8qKlxuICogSlNPTiBzY2hlbWEgZm9yIHBucG0td29ya3NwYWNlLnlhbWwgZmlsZXNcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEge1xuICAvKipcbiAgICogV29ya3NwYWNlIHBhY2thZ2UgcGF0aHMuIEdsb2IgcGF0dGVybnMgYXJlIHN1cHBvcnRlZFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgZGVwZW5kZW5jeSB2ZXJzaW9uIHJhbmdlcyBhcyByZXVzYWJsZSBjb25zdGFudHMsXG4gICAqIGZvciBsYXRlciByZWZlcmVuY2UgaW4gcGFja2FnZS5qc29uIGZpbGVzLlxuICAgKiBUaGlzIChzaW5ndWxhcikgZmllbGQgY3JlYXRlcyBhIGNhdGFsb2cgbmFtZWQgZGVmYXVsdC5cbiAgICpcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9nPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRGVmaW5lIGFyYml0cmFyaWx5IG5hbWVkIGNhdGFsb2dzXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dzPzogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH07XG5cbiAgLyoqXG4gICAqIENvbnRyb2xsaW5nIGlmIGFuZCBob3cgZGVwZW5kZW5jaWVzIGFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjYXRhbG9nXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ01vZGVcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dNb2RlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDYXRhbG9nTW9kZTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBwbnBtIHdpbGwgcmVtb3ZlIHVudXNlZCBjYXRhbG9nIGVudHJpZXMgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjbGVhbnVwVW51c2VkQ2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFudXBVbnVzZWRDYXRhbG9ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHBucG0gd2lsbCByZW1vdmUgdW51c2VkIGNhdGFsb2cgZW50cmllcyBkdXJpbmcgaW5zdGFsbGF0aW9uLiBgY2xlYW51cFVudXNlZENhdGFsb2dzYCBpcyB0aGUgZGVwcmVjYXRlZCBzcGVsbGluZyBvZiB0aGlzIHNldHRpbmcgYW5kIGNvbnRpbnVlcyB0byB3b3JrOyB3aGVuIGJvdGggYXJlIHNldCwgYGNhdGFsb2dQcnVuZWAgd2lucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nUHJ1bmVcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dQcnVuZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgZXhlY3V0ZWQgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNvbmx5QnVpbHREZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IG9ubHlCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG92ZXJyaWRlIGFueSBkZXBlbmRlbmN5IGluIHRoZSBkZXBlbmRlbmN5IGdyYXBoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI292ZXJyaWRlc1xuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogYW55O1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGV4dGVuZCB0aGUgZXhpc3RpbmcgcGFja2FnZSBkZWZpbml0aW9ucyB3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZUV4dGVuc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VFeHRlbnNpb25zPzogYW55O1xuXG4gIC8qKlxuICAgKiBQZXItd29ya3NwYWNlLXByb2plY3QgcG5wbSBzZXR0aW5ncyB0aGF0IHJlcGxhY2UgcHJvamVjdC1zcGVjaWZpYyAubnBtcmMgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZUNvbmZpZ3NcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VDb25maWdzPzogYW55O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BlZXJEZXBlbmRlbmN5UnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IHBlZXJEZXBlbmRlbmN5UnVsZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXM7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdG8gcnVuIGJ1aWxkcyBmb3IuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbmV2ZXJCdWlsdERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgbmV2ZXJCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYWxsIGJ1aWxkIHNjcmlwdHMgKGUuZy4gcHJlaW5zdGFsbCwgaW5zdGFsbCwgcG9zdGluc3RhbGwpIGZyb20gZGVwZW5kZW5jaWVzIHdpbGwgcnVuIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgcmVxdWlyaW5nIGFwcHJvdmFsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Rhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IGRhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBKU09OIGZpbGUgdGhhdCBsaXN0cyB0aGUgb25seSBwYWNrYWdlcyBwZXJtaXR0ZWQgdG8gcnVuIGluc3RhbGxhdGlvbiBzY3JpcHRzIGR1cmluZyB0aGUgcG5wbSBpbnN0YWxsIHByb2Nlc3MuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBzaG91bGQgbm90IGJlIGJ1aWx0IGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcHJlY2F0ZWQgdmVyc2lvbnMgdGhhdCB0aGUgd2FybmluZ3MgYXJlIHN1cHByZXNzZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgcGF0Y2hlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYXRjaGVkRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBwYXRjaGVkRGVwZW5kZW5jaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBpbnN0YWxsYXRpb24gd29uJ3QgZmFpbCBpZiBzb21lIG9mIHRoZSBwYXRjaGVzIGZyb20gdGhlIFwicGF0Y2hlZERlcGVuZGVuY2llc1wiIGZpZWxkIHdlcmUgbm90IGFwcGxpZWQuIChQcmV2aW91c2x5IG5hbWVkIFwiYWxsb3dOb25BcHBsaWVkUGF0Y2hlc1wiKVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2FsbG93VW51c2VkUGF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnVzZWRQYXRjaGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBpbnN0YWxsYXRpb24gd29uJ3QgZmFpbCBpZiBzb21lIG9mIHRoZSBwYXRjaGVzIGZyb20gdGhlIFwicGF0Y2hlZERlcGVuZGVuY2llc1wiIGZpZWxkIHdlcmUgbm90IGFwcGxpZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dOb25BcHBsaWVkUGF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dOb25BcHBsaWVkUGF0Y2hlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaXMgdW5kZWZpbmVkLiBFcnJvcnMgb3V0IHdoZW4gYSBwYXRjaCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSBmYWlscy4gSWdub3JlcyBmYWlsdXJlcyBmcm9tIG5hbWUtb25seSBwYXRjaGVzLiBXaGVuIHRydWUsIHByaW50cyBhIHdhcm5pbmcgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4gYW55IHBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkLiBXaGVuIGZhbHNlLCBlcnJvcnMgb3V0IGZvciBhbnkgcGF0Y2ggZmFpbHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkLiBFcnJvcnMgb3V0IHdoZW4gYSBwYXRjaCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSBmYWlscy4gSWdub3JlcyBmYWlsdXJlcyBmcm9tIG5hbWUtb25seSBwYXRjaGVzLiBXaGVuIHRydWUsIHByaW50cyBhIHdhcm5pbmcgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4gYW55IHBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkLiBXaGVuIGZhbHNlLCBlcnJvcnMgb3V0IGZvciBhbnkgcGF0Y2ggZmFpbHVyZS5cbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVQYXRjaEZhaWx1cmVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQYXRjaEZhaWx1cmVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1cGRhdGVcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VwZGF0ZUNvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlQ29uZmlnPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWc7XG5cbiAgLyoqXG4gICAqIENvbmZpZyBkZXBlbmRlbmNpZXMgYWxsb3cgeW91IHRvIHNoYXJlIGFuZCBjZW50cmFsaXplIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHNldHRpbmdzLCBhbmQgaG9va3MgYWNyb3NzIG11bHRpcGxlIHByb2plY3RzLiBUaGV5IGFyZSBpbnN0YWxsZWQgYmVmb3JlIGFsbCByZWd1bGFyIGRlcGVuZGVuY2llcyAoJ2RlcGVuZGVuY2llcycsICdkZXZEZXBlbmRlbmNpZXMnLCAnb3B0aW9uYWxEZXBlbmRlbmNpZXMnKSwgbWFraW5nIHRoZW0gaWRlYWwgZm9yIHNldHRpbmcgdXAgY3VzdG9tIGhvb2tzLCBwYXRjaGVzLCBhbmQgY2F0YWxvZyBlbnRyaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NvbmZpZ0RlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnRGVwZW5kZW5jaWVzPzogYW55O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2F1ZGl0XG4gICAqL1xuICByZWFkb25seSBhdWRpdD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXVkaXRDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0Q29uZmlnPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHNjcmlwdHMgdGhhdCBtdXN0IGV4aXN0IGluIGVhY2ggcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXF1aXJlZFNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkU2NyaXB0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggeW91J2QgbGlrZSB0byBpbnN0YWxsIG9wdGlvbmFsIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5IGRvbid0IG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIHN5c3RlbSBydW5uaW5nIHRoZSBpbnN0YWxsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N1cHBvcnRlZEFyY2hpdGVjdHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IHN1cHBvcnRlZEFyY2hpdGVjdHVyZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXM7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBvcHRpb25hbCBkZXBlbmRlbmNpZXMgdGhhdCB0aGUgaW5zdGFsbCBzaG91bGQgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVkT3B0aW9uYWxEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2V4ZWN1dGlvbkVudlxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uRW52PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnY7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgYWxsIGRlcGVuZGVuY2llcyBhcmUgaG9pc3RlZCB0byBub2RlX21vZHVsZXMvLnBucG0vbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2hvaXN0XG4gICAqL1xuICByZWFkb25seSBob2lzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlcyBhcmUgc3ltbGlua2VkIHRvIGVpdGhlciA8d29ya3NwYWNlX3Jvb3Q+L25vZGVfbW9kdWxlcy8ucG5wbS9ub2RlX21vZHVsZXMgb3IgdG8gPHdvcmtzcGFjZV9yb290Pi9ub2RlX21vZHVsZXMgZGVwZW5kaW5nIG9uIG90aGVyIGhvaXN0aW5nIHNldHRpbmdzIChob2lzdFBhdHRlcm4gYW5kIHB1YmxpY0hvaXN0UGF0dGVybikuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RXb3Jrc3BhY2VQYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RXb3Jrc3BhY2VQYWNrYWdlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRlbGxzIHBucG0gd2hpY2ggcGFja2FnZXMgc2hvdWxkIGJlIGhvaXN0ZWQgdG8gbm9kZV9tb2R1bGVzLy5wbnBtL25vZGVfbW9kdWxlc1xuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2hvaXN0UGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFVubGlrZSBob2lzdFBhdHRlcm4sIHdoaWNoIGhvaXN0cyBkZXBlbmRlbmNpZXMgdG8gYSBoaWRkZW4gbW9kdWxlcyBkaXJlY3RvcnkgaW5zaWRlIHRoZSB2aXJ0dWFsIHN0b3JlLCBwdWJsaWNIb2lzdFBhdHRlcm4gaG9pc3RzIGRlcGVuZGVuY2llcyBtYXRjaGluZyB0aGUgcGF0dGVybiB0byB0aGUgcm9vdCBtb2R1bGVzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwdWJsaWNIb2lzdFBhdHRlcm5cbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0hvaXN0UGF0dGVybj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBwbnBtIGNyZWF0ZXMgYSBzZW1pc3RyaWN0IG5vZGVfbW9kdWxlcywgbWVhbmluZyBkZXBlbmRlbmNpZXMgaGF2ZSBhY2Nlc3MgdG8gdW5kZWNsYXJlZCBkZXBlbmRlbmNpZXMgYnV0IG1vZHVsZXMgb3V0c2lkZSBvZiBub2RlX21vZHVsZXMgZG8gbm90LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NoYW1lZnVsbHlIb2lzdFxuICAgKi9cbiAgcmVhZG9ubHkgc2hhbWVmdWxseUhvaXN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBpbnN0YWxsZWQgKGluc3RlYWQgb2Ygbm9kZV9tb2R1bGVzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtb2R1bGVzRGlyXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVzRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoYXQgbGlua2VyIHNob3VsZCBiZSB1c2VkIGZvciBpbnN0YWxsaW5nIE5vZGUgcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZUxpbmtlclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZUxpbmtlcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlcjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIGluamVjdHMgdGhlIGdlbmVyYXRlZCBub2RlX21vZHVsZXMvLnBhY2thZ2UtbWFwLmpzb24gaW50byBwbnBtLW1hbmFnZWQgTm9kZS5qcyBzY3JpcHQgZW52aXJvbm1lbnRzIGJ5IGFkZGluZyBOb2RlJ3MgLS1leHBlcmltZW50YWwtcGFja2FnZS1tYXAgb3B0aW9uIHRvIE5PREVfT1BUSU9OUy4gc2VlIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncy9ub2RlLW1vZHVsZXMjbm9kZWV4cGVyaW1lbnRhbHBhY2thZ2VtYXBcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlRXhwZXJpbWVudGFsUGFja2FnZU1hcFxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZUV4cGVyaW1lbnRhbFBhY2thZ2VNYXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgbm9kZV9tb2R1bGVzLy5wYWNrYWdlLW1hcC5qc29uIGlzIGdlbmVyYXRlZC4gc3RhbmRhcmQgLSBvbmx5IGRlY2xhcmVkIGRlcGVuZGVuY2llcyBhcmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHBhY2thZ2UgbWFwLiBsb29zZSAtIGFsc28gbWFwcyBwYWNrYWdlcyB0aGF0IGFyZSByZWFjaGFibGUgdGhyb3VnaCB0aGUgaW5zdGFsbGVkIG5vZGVfbW9kdWxlcyBsYXlvdXQsIHdoaWNoIGNhbiBhbGxvdyB1bmRlY2xhcmVkIGhvaXN0ZWQgZGVwZW5kZW5jaWVzIHRvIHJlc29sdmUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZVBhY2thZ2VNYXBUeXBlXG4gICAqL1xuICByZWFkb25seSBub2RlUGFja2FnZU1hcFR5cGU/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVQYWNrYWdlTWFwVHlwZTtcblxuICAvKipcbiAgICogV2hlbiBzeW1saW5rIGlzIHNldCB0byBmYWxzZSwgcG5wbSBjcmVhdGVzIGEgdmlydHVhbCBzdG9yZSBkaXJlY3Rvcnkgd2l0aG91dCBhbnkgc3ltbGlua3MuIEl0IGlzIGEgdXNlZnVsIHNldHRpbmcgdG9nZXRoZXIgd2l0aCBub2RlTGlua2VyPXBucC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzeW1saW5rXG4gICAqL1xuICByZWFkb25seSBzeW1saW5rPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBmYWxzZSwgcG5wbSB3aWxsIG5vdCB3cml0ZSBhbnkgZmlsZXMgdG8gdGhlIG1vZHVsZXMgZGlyZWN0b3J5IChub2RlX21vZHVsZXMpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZU1vZHVsZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZU1vZHVsZXNEaXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdpdGggbGlua3MgdG8gdGhlIHN0b3JlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZURpclxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbFN0b3JlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIG9mIGRpcmVjdG9yeSBuYW1lcyBpbnNpZGUgdGhlIHZpcnR1YWwgc3RvcmUgZGlyZWN0b3J5IChub2RlX21vZHVsZXMvLnBucG0pLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZURpck1heExlbmd0aFxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgd2F5IHBhY2thZ2VzIGFyZSBpbXBvcnRlZCBmcm9tIHRoZSBzdG9yZSAoaWYgeW91IHdhbnQgdG8gZGlzYWJsZSBzeW1saW5rcyBpbnNpZGUgbm9kZV9tb2R1bGVzLCB0aGVuIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgbm9kZUxpbmtlciBzZXR0aW5nLCBub3QgdGhpcyBvbmUpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VJbXBvcnRNZXRob2RcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VJbXBvcnRNZXRob2Q/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2Q7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggb3JwaGFuIHBhY2thZ2VzIGZyb20gdGhlIG1vZHVsZXMgZGlyZWN0b3J5IHNob3VsZCBiZSByZW1vdmVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21vZHVsZXNDYWNoZU1heEFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc0NhY2hlTWF4QWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpbiBtaW51dGVzIGFmdGVyIHdoaWNoIGRseCBjYWNoZSBleHBpcmVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RseENhY2hlTWF4QWdlXG4gICAqL1xuICByZWFkb25seSBkbHhDYWNoZU1heEFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIGFsbCB0aGUgcGFja2FnZXMgYXJlIHNhdmVkIG9uIHRoZSBkaXNrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0b3JlRGlyXG4gICAqL1xuICByZWFkb25seSBzdG9yZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgaWYgYSBmaWxlIGluIHRoZSBzdG9yZSBoYXMgYmVlbiBtb2RpZmllZCwgdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGlzIGNoZWNrZWQgYmVmb3JlIGxpbmtpbmcgaXQgdG8gYSBwcm9qZWN0J3Mgbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZlcmlmeVN0b3JlSW50ZWdyaXR5XG4gICAqL1xuICByZWFkb25seSB2ZXJpZnlTdG9yZUludGVncml0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNvbWUgcmVnaXN0cmllcyBhbGxvdyB0aGUgZXhhY3Qgc2FtZSBjb250ZW50IHRvIGJlIHB1Ymxpc2hlZCB1bmRlciBkaWZmZXJlbnQgcGFja2FnZSBuYW1lcyBhbmQvb3IgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0U3RvcmVQa2dDb250ZW50Q2hlY2tcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFN0b3JlUGtnQ29udGVudENoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBub2RlX21vZHVsZXMgY29udGFpbnMgb25seSBzeW1saW5rcyB0byBhIGNlbnRyYWwgdmlydHVhbCBzdG9yZSwgcmF0aGVyIHRoYW4gdG8gbm9kZV9tb2R1bGVzLy5wbnBtLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZUdsb2JhbFZpcnR1YWxTdG9yZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHBucG0gd29uJ3QgcmVhZCBvciBnZW5lcmF0ZSBhIHBucG0tbG9jay55YW1sIGZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSBhbmQgdGhlIGF2YWlsYWJsZSBwbnBtLWxvY2sueWFtbCBzYXRpc2ZpZXMgdGhlIHBhY2thZ2UuanNvbiBkZXBlbmRlbmNpZXMgZGlyZWN0aXZlLCBhIGhlYWRsZXNzIGluc3RhbGxhdGlvbiBpcyBwZXJmb3JtZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyRnJvemVuTG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlckZyb3plbkxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHRoZSBmdWxsIFVSTCB0byB0aGUgcGFja2FnZSdzIHRhcmJhbGwgdG8gZXZlcnkgZW50cnkgaW4gcG5wbS1sb2NrLnlhbWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybFxuICAgKi9cbiAgcmVhZG9ubHkgbG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHRoZSBnZW5lcmF0ZWQgbG9ja2ZpbGUgbmFtZSBhZnRlciBpbnN0YWxsYXRpb24gd2lsbCBiZSBuYW1lZCBiYXNlZCBvbiB0aGUgY3VycmVudCBicmFuY2ggbmFtZSB0byBjb21wbGV0ZWx5IGF2b2lkIG1lcmdlIGNvbmZsaWN0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnaXRCcmFuY2hMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoTG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIGNvbmZpZ3VyYXRpb24gbWF0Y2hlcyB0aGUgY3VycmVudCBicmFuY2ggbmFtZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byBtZXJnZSBhbGwgZ2l0IGJyYW5jaCBsb2NrZmlsZSBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm5cbiAgICovXG4gIHJlYWRvbmx5IG1lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVybj86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBNYXggbGVuZ3RoIG9mIHRoZSBwZWVyIElEcyBzdWZmaXggYWRkZWQgdG8gZGVwZW5kZW5jeSBrZXlzIGluIHRoZSBsb2NrZmlsZS4gSWYgdGhlIHN1ZmZpeCBpcyBsb25nZXIsIGl0IGlzIHJlcGxhY2VkIHdpdGggYSBoYXNoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BlZXJzU3VmZml4TWF4TGVuZ3RoXG4gICAqL1xuICByZWFkb25seSBwZWVyc1N1ZmZpeE1heExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJhc2UgVVJMIG9mIHRoZSBucG0gcGFja2FnZSByZWdpc3RyeSAodHJhaWxpbmcgc2xhc2ggaW5jbHVkZWQpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSByZWdpc3RyeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENlcnRpZmljYXRlIEF1dGhvcml0eSBzaWduaW5nIGNlcnRpZmljYXRlIHRoYXQgaXMgdHJ1c3RlZCBmb3IgU1NMIGNvbm5lY3Rpb25zIHRvIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYVxuICAgKi9cbiAgcmVhZG9ubHkgY2E/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyBvbmUgb3IgbXVsdGlwbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IHNpZ25pbmcgY2VydGlmaWNhdGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FmaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCBjZXJ0aWZpY2F0ZSB0byBwYXNzIHdoZW4gYWNjZXNzaW5nIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjZXJ0XG4gICAqL1xuICByZWFkb25seSBjZXJ0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCBrZXkgdG8gcGFzcyB3aGVuIGFjY2Vzc2luZyB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZmV0Y2hpbmcgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIEdpdCByZXBvc2l0b3JpZXMsIGlmIHRoZSBob3N0IGlzIGxpc3RlZCBpbiB0aGlzIHNldHRpbmcsIHBucG0gd2lsbCB1c2Ugc2hhbGxvdyBjbG9uaW5nIHRvIGZldGNoIG9ubHkgdGhlIG5lZWRlZCBjb21taXQsIG5vdCBhbGwgdGhlIGhpc3RvcnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2l0U2hhbGxvd0hvc3RzXG4gICAqL1xuICByZWFkb25seSBnaXRTaGFsbG93SG9zdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBwcm94eSB0byB1c2UgZm9yIG91dGdvaW5nIEhUVFBTIHJlcXVlc3RzLiBJZiB0aGUgSFRUUFNfUFJPWFksIGh0dHBzX3Byb3h5LCBIVFRQX1BST1hZIG9yIGh0dHBfcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBzZXQsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHVzZWQgaW5zdGVhZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNodHRwc1Byb3h5XG4gICAqL1xuICByZWFkb25seSBodHRwc1Byb3h5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHByb3h5IHRvIHVzZSBmb3Igb3V0Z29pbmcgSFRUUCByZXF1ZXN0cy4gSWYgdGhlIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgcHJveHkgc2V0dGluZ3Mgd2lsbCBiZSBob25vcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHJlcXVlc3QgbGlicmFyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNodHRwUHJveHlcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBQcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogbnBtJ3MgbGVnYWN5IHByb3h5IHNldHRpbmcsIHVzZWQgYXMgdGhlIGZhbGxiYWNrIGZvciBib3RoIGh0dHBzUHJveHkgYW5kIGh0dHBQcm94eS4gSWYgdGhlIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgcHJveHkgc2V0dGluZ3Mgd2lsbCBiZSBob25vcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHJlcXVlc3QgbGlicmFyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUCBhZGRyZXNzIG9mIHRoZSBsb2NhbCBpbnRlcmZhY2UgdG8gdXNlIHdoZW4gbWFraW5nIGNvbm5lY3Rpb25zIHRvIHRoZSBucG0gcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9jYWxBZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBsb2NhbEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byB1c2UgcGVyIG9yaWdpbiAocHJvdG9jb2wvaG9zdC9wb3J0IGNvbWJpbmF0aW9uKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtYXhzb2NrZXRzXG4gICAqL1xuICByZWFkb25seSBtYXhzb2NrZXRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2YgZG9tYWluIGV4dGVuc2lvbnMgdGhhdCBhIHByb3h5IHNob3VsZCBub3QgYmUgdXNlZCBmb3IuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9Qcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgbm9Qcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZG8gU1NMIGtleSB2YWxpZGF0aW9uIHdoZW4gbWFraW5nIHJlcXVlc3RzIHRvIHRoZSByZWdpc3RyeSB2aWEgSFRUUFMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0U3NsXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RTc2w/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YgSFRUUChTKSByZXF1ZXN0cyB0byBwcm9jZXNzIHNpbXVsdGFuZW91c2x5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25ldHdvcmtDb25jdXJyZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0NvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgbWFueSB0aW1lcyB0byByZXRyeSBpZiBwbnBtIGZhaWxzIHRvIGZldGNoIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyaWVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwb25lbnRpYWwgZmFjdG9yIGZvciByZXRyeSBiYWNrb2ZmLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cnlGYWN0b3JcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoUmV0cnlGYWN0b3I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIChiYXNlKSB0aW1lb3V0IGZvciByZXRyeWluZyByZXF1ZXN0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5TWludGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeU1pbnRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGZhbGxiYWNrIHRpbWVvdXQgdG8gZW5zdXJlIHRoZSByZXRyeSBmYWN0b3IgZG9lcyBub3QgbWFrZSByZXF1ZXN0cyB0b28gbG9uZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5TWF4dGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeU1heHRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgZm9yIEhUVFAgcmVxdWVzdHMgdG8gY29tcGxldGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hUaW1lb3V0XG4gICAqL1xuICByZWFkb25seSBmZXRjaFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgd2FybmluZyBtZXNzYWdlIGlzIGRpc3BsYXllZCBpZiBhIG1ldGFkYXRhIHJlcXVlc3QgdG8gdGhlIHJlZ2lzdHJ5IHRha2VzIGxvbmdlciB0aGFuIHRoZSBzcGVjaWZpZWQgdGhyZXNob2xkIChpbiBtaWxsaXNlY29uZHMpLiBBZGRlZCBpbiBwbnBtIHYxMC4xOC4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoV2FyblRpbWVvdXRNc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hXYXJuVGltZW91dE1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHdhcm5pbmcgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgaWYgdGhlIGRvd25sb2FkIHNwZWVkIG9mIGEgdGFyYmFsbCBmcm9tIHRoZSByZWdpc3RyeSBmYWxscyBiZWxvdyB0aGUgc3BlY2lmaWVkIHRocmVzaG9sZCAoaW4gS2lCL3MpLiBBZGRlZCBpbiBwbnBtIHYxMC4xOC4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoTWluU3BlZWRLaUJwc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hNaW5TcGVlZEtpQnBzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGFueSBtaXNzaW5nIG5vbi1vcHRpb25hbCBwZWVyIGRlcGVuZGVuY2llcyBhcmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXV0b0luc3RhbGxQZWVyc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0luc3RhbGxQZWVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBzZXR0aW5nIGlzIHNldCB0byB0cnVlLCBwYWNrYWdlcyB3aXRoIHBlZXIgZGVwZW5kZW5jaWVzIHdpbGwgYmUgZGVkdXBsaWNhdGVkIGFmdGVyIHBlZXJzIHJlc29sdXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlUGVlckRlcGVuZGVudHNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZVBlZXJEZXBlbmRlbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBjb21tYW5kcyB3aWxsIGZhaWwgaWYgdGhlcmUgaXMgYSBtaXNzaW5nIG9yIGludmFsaWQgcGVlciBkZXBlbmRlbmN5IGluIHRoZSB0cmVlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0cmljdFBlZXJEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFBlZXJEZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGRlcGVuZGVuY2llcyBvZiB0aGUgcm9vdCB3b3Jrc3BhY2UgcHJvamVjdCBhcmUgdXNlZCB0byByZXNvbHZlIHBlZXIgZGVwZW5kZW5jaWVzIG9mIGFueSBwcm9qZWN0cyBpbiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Jlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290XG4gICAqL1xuICByZWFkb25seSByZXNvbHZlUGVlcnNGcm9tV29ya3NwYWNlUm9vdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGNvbG9ycyBpbiB0aGUgb3V0cHV0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NvbG9yXG4gICAqL1xuICByZWFkb25seSBjb2xvcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ29sb3I7XG5cbiAgLyoqXG4gICAqIEFueSBsb2dzIGF0IG9yIGhpZ2hlciB0aGFuIHRoZSBnaXZlbiBsZXZlbCB3aWxsIGJlIHNob3duLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2xvZ2xldmVsXG4gICAqL1xuICByZWFkb25seSBsb2dsZXZlbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWw7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gY3VzdG9taXplIHRoZSBvdXRwdXQgc3R5bGUgb2YgdGhlIGxvZ3MuXG4gICAqIGh0dHBzOi8vcG5wbS5pby9jbGkvaW5zdGFsbCMtLXJlcG9ydGVybmFtZVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlcG9ydGVyXG4gICAqL1xuICByZWFkb25seSByZXBvcnRlcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVwb3J0ZXI7XG5cbiAgLyoqXG4gICAqIEV4cGVyaW1lbnRhbCBvcHRpb24gdGhhdCBlbmFibGVzIGJldGEgZmVhdHVyZXMgb2YgdGhlIENMSS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VCZXRhQ2xpXG4gICAqL1xuICByZWFkb25seSB1c2VCZXRhQ2xpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCB0aGUgcHJpbWFyeSBiZWhhdmlvdXIgb2YgcG5wbSBpbnN0YWxsIGJlY29tZXMgdGhhdCBvZiBwbnBtIGluc3RhbGwgLXIsIG1lYW5pbmcgdGhlIGluc3RhbGwgaXMgcGVyZm9ybWVkIG9uIGFsbCB3b3Jrc3BhY2Ugb3Igc3ViZGlyZWN0b3J5IHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlY3Vyc2l2ZUluc3RhbGxcbiAgICovXG4gIHJlYWRvbmx5IHJlY3Vyc2l2ZUluc3RhbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGVuYWJsZWQsIHBucG0gd2lsbCBub3QgaW5zdGFsbCBhbnkgcGFja2FnZSB0aGF0IGNsYWltcyB0byBub3QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IE5vZGUgdmVyc2lvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbmdpbmVTdHJpY3RcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZVN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgbnBtIGJpbmFyeSB0aGF0IHBucG0gdXNlcyBmb3Igc29tZSBhY3Rpb25zLCBsaWtlIHB1Ymxpc2hpbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbnBtUGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgbnBtUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBzZXR0aW5nIGlzIGRpc2FibGVkLCBwbnBtIHdpbGwgbm90IGZhaWwgaWYgYSBkaWZmZXJlbnQgcGFja2FnZSBtYW5hZ2VyIGlzIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLiBXaGVuIGVuYWJsZWQsIG9ubHkgdGhlIHBhY2thZ2UgbmFtZSBpcyBjaGVja2VkIChzaW5jZSBwbnBtIHY5LjIuMCksIHNvIHlvdSBjYW4gc3RpbGwgcnVuIGFueSB2ZXJzaW9uIG9mIHBucG0gcmVnYXJkbGVzcyBvZiB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VNYW5hZ2VyU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlclN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgcG5wbSB3aWxsIGZhaWwgaWYgaXRzIHZlcnNpb24gZG9lc24ndCBleGFjdGx5IG1hdGNoIHRoZSB2ZXJzaW9uIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBwbnBtIHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCBhbmQgcnVuIHRoZSB2ZXJzaW9uIG9mIHBucG0gc3BlY2lmaWVkIGluIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZCBvZiBwYWNrYWdlLmpzb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBleGVjdXRlIGFueSBzY3JpcHRzIGRlZmluZWQgaW4gdGhlIHByb2plY3QgcGFja2FnZS5qc29uIGFuZCBpdHMgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZXhlY3V0ZSBhbnkgc2NyaXB0cyBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLiBTY3JpcHRzIG9mIHRoZSBwcm9qZWN0cyBhcmUgZXhlY3V0ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlRGVwU2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlRGVwU2NyaXB0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGlsZCBwcm9jZXNzZXMgdG8gYWxsb2NhdGUgc2ltdWx0YW5lb3VzbHkgdG8gYnVpbGQgbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NoaWxkQ29uY3VycmVuY3lcbiAgICovXG4gIHJlYWRvbmx5IGNoaWxkQ29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFVzZSBhbmQgY2FjaGUgdGhlIHJlc3VsdHMgb2YgKHByZS9wb3N0KWluc3RhbGwgaG9va3MuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2lkZUVmZmVjdHNDYWNoZVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZUVmZmVjdHNDYWNoZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9ubHkgdXNlIHRoZSBzaWRlIGVmZmVjdHMgY2FjaGUgaWYgcHJlc2VudCwgZG8gbm90IGNyZWF0ZSBpdCBmb3IgbmV3IHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NpZGVFZmZlY3RzQ2FjaGVSZWFkb25seVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZUVmZmVjdHNDYWNoZVJlYWRvbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gZW5hYmxlIFVJRC9HSUQgc3dpdGNoaW5nIHdoZW4gcnVubmluZyBwYWNrYWdlIHNjcmlwdHMuIElmIHNldCBleHBsaWNpdGx5IHRvIGZhbHNlLCB0aGVuIGluc3RhbGxpbmcgYXMgYSBub24tcm9vdCB1c2VyIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1bnNhZmVQZXJtXG4gICAqL1xuICByZWFkb25seSB1bnNhZmVQZXJtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyB0byBwYXNzIHRocm91Z2ggdG8gTm9kZS5qcyB2aWEgdGhlIE5PREVfT1BUSU9OUyBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlT3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZU9wdGlvbnM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBhbGxvd3MgdGhlIGNoZWNraW5nIG9mIHRoZSBzdGF0ZSBvZiBkZXBlbmRlbmNpZXMgYmVmb3JlIHJ1bm5pbmcgc2NyaXB0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2ZXJpZnlEZXBzQmVmb3JlUnVuXG4gICAqL1xuICByZWFkb25seSB2ZXJpZnlEZXBzQmVmb3JlUnVuPzogYW55O1xuXG4gIC8qKlxuICAgKiBXaGVuIHN0cmljdERlcEJ1aWxkcyBpcyBlbmFibGVkLCB0aGUgaW5zdGFsbGF0aW9uIHdpbGwgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGlmIGFueSBkZXBlbmRlbmNpZXMgaGF2ZSB1bnJldmlld2VkIGJ1aWxkIHNjcmlwdHMgKGFrYSBwb3N0aW5zdGFsbCBzY3JpcHRzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3REZXBCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdERlcEJ1aWxkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGljaCBleGFjdCBOb2RlLmpzIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBwcm9qZWN0J3MgcnVudGltZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VOb2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdXNlTm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlLmpzIHZlcnNpb24gdG8gdXNlIHdoZW4gY2hlY2tpbmcgYSBwYWNrYWdlJ3MgZW5naW5lcyBzZXR0aW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbGx5IGF2YWlsYWJsZSBwYWNrYWdlcyBhcmUgbGlua2VkIHRvIG5vZGVfbW9kdWxlcyBpbnN0ZWFkIG9mIGJlaW5nIGRvd25sb2FkZWQgZnJvbSB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbGlua1dvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBsaW5rV29ya3NwYWNlUGFja2FnZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcztcblxuICAvKipcbiAgICogRW5hYmxlcyBoYXJkLWxpbmtpbmcgb2YgYWxsIGxvY2FsIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMgaW5zdGVhZCBvZiBzeW1saW5raW5nIHRoZW0uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaW5qZWN0V29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IGluamVjdFdvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5qZWN0ZWQgd29ya3NwYWNlIGRlcGVuZGVuY2llcyBhcmUgY29sbGVjdGlvbnMgb2YgaGFyZGxpbmtzLCB3aGljaCBkb24ndCBhZGQgb3IgcmVtb3ZlIHRoZSBmaWxlcyB3aGVuIHRoZWlyIHNvdXJjZXMgY2hhbmdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IHN5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbCBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIHByZWZlcnJlZCBvdmVyIHBhY2thZ2VzIGZyb20gdGhlIHJlZ2lzdHJ5LCBldmVuIGlmIHRoZXJlIGlzIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSBpbiB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyV29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlcldvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBwbnBtIGNyZWF0ZXMgYSBzaW5nbGUgcG5wbS1sb2NrLnlhbWwgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NoYXJlZFdvcmtzcGFjZUxvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIGFkZGVkIHRvIHBhY2thZ2UuanNvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlV29ya3NwYWNlUHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IHNhdmVXb3Jrc3BhY2VQcm90b2NvbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBXaGVuIGV4ZWN1dGluZyBjb21tYW5kcyByZWN1cnNpdmVseSBpbiBhIHdvcmtzcGFjZSwgZXhlY3V0ZSB0aGVtIG9uIHRoZSByb290IHdvcmtzcGFjZSBwcm9qZWN0IGFzIHdlbGwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaW5jbHVkZVdvcmtzcGFjZVJvb3RcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVXb3Jrc3BhY2VSb290PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgbm8gd29ya3NwYWNlIGN5Y2xlIHdhcm5pbmdzIHdpbGwgYmUgcHJpbnRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVXb3Jrc3BhY2VDeWNsZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVdvcmtzcGFjZUN5Y2xlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGluZyBhIG5ldyBkZXBlbmRlbmN5IHRvIHRoZSByb290IHdvcmtzcGFjZSBwYWNrYWdlIGZhaWxzLCB1bmxlc3MgdGhlIC0taWdub3JlLXdvcmtzcGFjZS1yb290LWNoZWNrIG9yIC13IGZsYWcgaXMgdXNlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2tcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVdvcmtzcGFjZVJvb3RDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwgaWYgdGhlIHdvcmtzcGFjZSBoYXMgY3ljbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Rpc2FsbG93V29ya3NwYWNlQ3ljbGVzXG4gICAqL1xuICByZWFkb25seSBkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFza3MgdG8gcnVuIHNpbXVsdGFuZW91c2x5LiBGb3IgdW5saW1pdGVkIGNvbmN1cnJlbmN5IHVzZSBJbmZpbml0eS4gWW91IGNhbiBzZXQgdGhlIHZhbHVlIHRvIDw9IDAgYW5kIGl0IHdpbGwgdXNlIGFtb3VudCBvZiBDUFUgY29yZXMgb2YgdGhlIGhvc3QgbWludXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBwcm92aWRlZCBudW1iZXIgYXM6IG1heCgxLCAobnVtYmVyIG9mIGNvcmVzKSAtIGFicyh3b3Jrc3BhY2VDb25jdXJyZW5jeSkpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3dvcmtzcGFjZUNvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VDb25jdXJyZW5jeT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgcG5wbSB3aWxsIGZhaWwgaWYgbm8gcGFja2FnZXMgbWF0Y2ggdGhlIGZpbHRlclxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZhaWxJZk5vTWF0Y2hcbiAgICovXG4gIHJlYWRvbmx5IGZhaWxJZk5vTWF0Y2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBwbnBtIGRlcGxveSB3aWxsIHRyeSBjcmVhdGluZyBhIGRlZGljYXRlZCBsb2NrZmlsZSBmcm9tIGEgc2hhcmVkIGxvY2tmaWxlIGZvciBkZXBsb3ltZW50LiBJZiB0aGlzIHNldHRpbmcgaXMgc2V0IHRvIHRydWUsIHRoZSBsZWdhY3kgZGVwbG95IGJlaGF2aW9yIHdpbGwgYmUgdXNlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmb3JjZUxlZ2FjeURlcGxveVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VMZWdhY3lEZXBsb3k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgaG93IHZlcnNpb25zIG9mIHBhY2thZ2VzIGluc3RhbGxlZCB0byBhIHBhY2thZ2UuanNvbiBmaWxlIGdldCBwcmVmaXhlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlUHJlZml4XG4gICAqL1xuICByZWFkb25seSBzYXZlUHJlZml4PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4O1xuXG4gIC8qKlxuICAgKiBJZiB5b3UgcG5wbSBhZGQgYSBwYWNrYWdlIGFuZCB5b3UgZG9uJ3QgcHJvdmlkZSBhIHNwZWNpZmljIHZlcnNpb24sIHRoZW4gaXQgd2lsbCBpbnN0YWxsIHRoZSBwYWNrYWdlIGF0IHRoZSB2ZXJzaW9uIHJlZ2lzdGVyZWQgdW5kZXIgdGhlIHRhZyBmcm9tIHRoaXMgc2V0dGluZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0YWdcbiAgICovXG4gIHJlYWRvbmx5IHRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmeSBhIGN1c3RvbSBkaXJlY3RvcnkgdG8gc3RvcmUgZ2xvYmFsIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbERpclxuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2V0IHRoZSB0YXJnZXQgZGlyZWN0b3J5IGZvciB0aGUgYmluIGZpbGVzIG9mIGdsb2JhbGx5IGluc3RhbGxlZCBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnbG9iYWxCaW5EaXJcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbEJpbkRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIGFsbCB0aGUgcGFja2FnZXMgYXJlIHNhdmVkIG9uIHRoZSBkaXNrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0YXRlRGlyXG4gICAqL1xuICByZWFkb25seSBzdGF0ZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBjYWNoZSAocGFja2FnZSBtZXRhZGF0YSBhbmQgZGx4KS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYWNoZURpclxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgYWxsIHRoZSBvdXRwdXQgaXMgd3JpdHRlbiB0byBzdGRlcnIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXNlU3RkZXJyXG4gICAqL1xuICByZWFkb25seSB1c2VTdGRlcnI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCBjaGVjayBmb3IgdXBkYXRlcyB0byB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIGFuZCBub3RpZnkgdGhlIHVzZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXBkYXRlTm90aWZpZXJcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZU5vdGlmaWVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3JlYXRlIHN5bWxpbmtzIHRvIGV4ZWN1dGFibGVzIGluIG5vZGVfbW9kdWxlcy8uYmluIGluc3RlYWQgb2YgY29tbWFuZCBzaGltcy4gVGhpcyBzZXR0aW5nIGlzIGlnbm9yZWQgb24gV2luZG93cywgd2hlcmUgb25seSBjb21tYW5kIHNoaW1zIHdvcmsuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlclN5bWxpbmtlZEV4ZWN1dGFibGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRHVyaW5nIGluc3RhbGxhdGlvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIHNvbWUgcGFja2FnZXMgYXJlIGF1dG9tYXRpY2FsbHkgcGF0Y2hlZC4gSWYgeW91IHdhbnQgdG8gZGlzYWJsZSB0aGlzLCBzZXQgdGhpcyBjb25maWcgdG8gZmFsc2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlQ29tcGF0aWJpbGl0eURiXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVDb21wYXRpYmlsaXR5RGI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGhvdyBwbnBtIHJlc29sdmVzIGRlcGVuZGVuY2llcywgU2VlIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNyZXNvbHV0aW9ubW9kZVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Jlc29sdXRpb25Nb2RlXG4gICAqL1xuICByZWFkb25seSByZXNvbHV0aW9uTW9kZT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVzb2x1dGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUgaWYgdGhlIHJlZ2lzdHJ5IHRoYXQgeW91IGFyZSB1c2luZyByZXR1cm5zIHRoZSBcInRpbWVcIiBmaWVsZCBpbiB0aGUgYWJicmV2aWF0ZWQgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVnaXN0cnlTdXBwb3J0c1RpbWVGaWVsZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cnlTdXBwb3J0c1RpbWVGaWVsZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZmFsc2UsIHRoZSBOT0RFX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCBpbiB0aGUgY29tbWFuZCBzaGltcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNleHRlbmROb2RlUGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5kTm9kZVBhdGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGRlcGxveWluZyBhIHBhY2thZ2Ugb3IgaW5zdGFsbGluZyBhIGxvY2FsIHBhY2thZ2UsIGFsbCBmaWxlcyBvZiB0aGUgcGFja2FnZSBhcmUgY29waWVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlcGxveUFsbEZpbGVzXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lBbGxGaWxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBhbHJlYWR5IHN5bWxpbmtlZCB0byB0aGUgcm9vdCBub2RlX21vZHVsZXMgZGlyZWN0b3J5IG9mIHRoZSB3b3Jrc3BhY2Ugd2lsbCBub3QgYmUgc3ltbGlua2VkIHRvIHN1YnByb2plY3Qgbm9kZV9tb2R1bGVzIGRpcmVjdG9yaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZURpcmVjdERlcHNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZURpcmVjdERlcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgc2V0dGluZyBpcyBlbmFibGVkLCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgaW5qZWN0ZWQgd2lsbCBiZSBzeW1saW5rZWQgZnJvbSB0aGUgd29ya3NwYWNlIHdoZW5ldmVyIHBvc3NpYmxlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZUluamVjdGVkRGVwc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlSW5qZWN0ZWREZXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBhIGZhc3QgY2hlY2sgd2lsbCBiZSBwZXJmb3JtZWQgYmVmb3JlIHByb2NlZWRpbmcgdG8gaW5zdGFsbGF0aW9uLiBUaGlzIHdheSBhIHJlcGVhdCBpbnN0YWxsIG9yIGFuIGluc3RhbGwgb24gYSBwcm9qZWN0IHdpdGggZXZlcnl0aGluZyB1cC10by1kYXRlIGJlY29tZXMgYSBsb3QgZmFzdGVyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI29wdGltaXN0aWNSZXBlYXRJbnN0YWxsXG4gICAqL1xuICByZWFkb25seSBvcHRpbWlzdGljUmVwZWF0SW5zdGFsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGN1cnJlbnQgYnJhbmNoIGlzIHlvdXIgcHVibGlzaCBicmFuY2gsIGNsZWFuLCBhbmQgdXAtdG8tZGF0ZSB3aXRoIHJlbW90ZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnaXRDaGVja3NcbiAgICovXG4gIHJlYWRvbmx5IGdpdENoZWNrcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVORE9DVU1FTlRFRC4gV2hlbiBgdHJ1ZWAsIGBwbnBtIHB1Ymxpc2hgIHdyaXRlcyB0aGUgUkVBRE1FIGZpbGUncyBjb250ZW50IGludG8gdGhlIHB1Ymxpc2hlZCBwYWNrYWdlLmpzb24gKHRoZSBgcmVhZG1lYCBmaWVsZCksIHNvIHJlZ2lzdHJpZXMgc3VjaCBhcyBucG1qcy5jb20gcmVuZGVyIHRoZSBwYWNrYWdlJ3MgUkVBRE1FLiBBZGRlZCBpbiBwbnBtIDYuMjguMDsgcG5wbSBkb2VzIG5vdCBlbWJlZCB0aGUgUkVBRE1FIHVubGVzcyB0aGlzIGlzIGVuYWJsZWQuIEl0IGFsc28gd29uJ3Qgb3ZlcnJpZGUgYSBgcmVhZG1lYCBmaWVsZCBhbHJlYWR5IHNldCBpbiB0aGUgcGFja2FnZS5qc29uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW1iZWRSZWFkbWVcbiAgICovXG4gIHJlYWRvbmx5IGVtYmVkUmVhZG1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgYnJhbmNoIG9mIHRoZSByZXBvc2l0b3J5IHdoaWNoIGlzIHVzZWQgZm9yIHB1Ymxpc2hpbmcgdGhlIGxhdGVzdCBjaGFuZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3B1Ymxpc2hCcmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZlcnNpb25pbmcgc2V0dGluZ3MgZm9yIHBucG0ncyBuYXRpdmUgd29ya3NwYWNlIHJlbGVhc2UgbWFuYWdlbWVudCwgdXNlZCBieSBgcG5wbSBjaGFuZ2VgIGFuZCByZWN1cnNpdmUgYHBucG0gdmVyc2lvbmAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmVyc2lvbmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbmluZz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZztcblxuICAvKipcbiAgICogV2hlbiBwdWJsaXNoaW5nIGZyb20gYSBzdXBwb3J0ZWQgY2xvdWQgQ0kvQ0Qgc3lzdGVtLCB0aGUgcGFja2FnZSB3aWxsIGJlIHB1YmxpY2x5IGxpbmtlZCB0byB3aGVyZSBpdCB3YXMgYnVpbHQgYW5kIHB1Ymxpc2hlZCBmcm9tLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Byb3ZlbmFuY2VcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZlbmFuY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGxvY2FsIHBucG1maWxlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BucG1maWxlXG4gICAqL1xuICByZWFkb25seSBwbnBtZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIGEgZ2xvYmFsIHBucG1maWxlLiBBIGdsb2JhbCBwbnBtZmlsZSBpcyB1c2VkIGJ5IGFsbCBwcm9qZWN0cyBkdXJpbmcgaW5zdGFsbGF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbFBucG1maWxlXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxQbnBtZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogLnBucG1maWxlLmNqcyB3aWxsIGJlIGlnbm9yZWQuIFVzZWZ1bCB0b2dldGhlciB3aXRoIC0taWdub3JlLXNjcmlwdHMgd2hlbiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBubyBzY3JpcHQgZ2V0cyBleGVjdXRlZCBkdXJpbmcgaW5zdGFsbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVQbnBtZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlUG5wbWZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2VuZXJhdGVkIHBhdGNoIGZpbGUgd2lsbCBiZSBzYXZlZCB0byB0aGlzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYXRjaGVzRGlyXG4gICAqL1xuICByZWFkb25seSBwYXRjaGVzRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCBydW4gYW55IHByZS9wb3N0IHNjcmlwdHMgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbmFibGVQcmVQb3N0U2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUHJlUG9zdFNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2hlbGwgdG8gdXNlIGZvciBzY3JpcHRzIHJ1biB3aXRoIHRoZSBwbnBtIHJ1biBjb21tYW5kLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NjcmlwdFNoZWxsXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRTaGVsbD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHdpbGwgdXNlIGEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBhIGJhc2gtbGlrZSBzaGVsbCB0byBleGVjdXRlIHNjcmlwdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2hlbGxFbXVsYXRvclxuICAgKi9cbiAgcmVhZG9ubHkgc2hlbGxFbXVsYXRvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNhdmVkIGRlcGVuZGVuY2llcyB3aWxsIGJlIGNvbmZpZ3VyZWQgd2l0aCBhbiBleGFjdCB2ZXJzaW9uIHJhdGhlciB0aGFuIHVzaW5nIHBucG0ncyBkZWZhdWx0IHNlbXZlciByYW5nZSBvcGVyYXRvci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlRXhhY3RcbiAgICovXG4gIHJlYWRvbmx5IHNhdmVFeGFjdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG1pbmltdW1SZWxlYXNlQWdlIGRlZmluZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgdGhhdCBtdXN0IHBhc3MgYWZ0ZXIgYSB2ZXJzaW9uIGlzIHB1Ymxpc2hlZCBiZWZvcmUgcG5wbSB3aWxsIGluc3RhbGwgaXQuIFRoaXMgYXBwbGllcyB0byBhbGwgZGVwZW5kZW5jaWVzLCBpbmNsdWRpbmcgdHJhbnNpdGl2ZSBvbmVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgeW91IHNldCBgbWluaW11bVJlbGVhc2VBZ2VgIGJ1dCBuZWVkIGNlcnRhaW4gZGVwZW5kZW5jaWVzIHRvIGFsd2F5cyBpbnN0YWxsIHRoZSBuZXdlc3QgdmVyc2lvbiBpbW1lZGlhdGVseSwgeW91IGNhbiBsaXN0IHRoZW0gdW5kZXIgYG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZWAuIFRoZSBleGNsdXNpb24gd29ya3MgYnkgYHBhY2thZ2UgbmFtZWAgYW5kIGFwcGxpZXMgdG8gYWxsIHZlcnNpb25zIG9mIHRoYXQgcGFja2FnZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgcG5wbSBiZWhhdmVzIHdoZW4gbm8gdmVyc2lvbiBvZiBhIGRlcGVuZGVuY3kgc2F0aXNmaWVzIHRoZSBtaW5pbXVtUmVsZWFzZUFnZSBjb25zdHJhaW50IHdpdGhpbiB0aGUgcmVxdWVzdGVkIHJhbmdlLlxuICAgKiBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjbWluaW11bXJlbGVhc2VhZ2VzdHJpY3RcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZVN0cmljdFxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBwbnBtIGFkZCwgcG5wbSB1cGRhdGUsIGFuZCBwbnBtIHJlbW92ZSBwcnVuZSB0aGUgZW50cmllcyBvZiBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUgaW4gcG5wbS13b3Jrc3BhY2UueWFtbCB0aGF0IHRoZSBmcmVzaGx5IHdyaXR0ZW4gbG9ja2ZpbGUgbm8gbG9uZ2VyIHJlc29sdmVzOiBhIHZlcnNpb24gdGhhdCBpcyBnb25lIGlzIGRyb3BwZWQgKGFuIGVudHJ5IGlzIHJlbW92ZWQgb25jZSBub25lIG9mIGl0cyB2ZXJzaW9ucyByZW1haW4pLCBhbmQgYW4gZW50cnkgZm9yIGEgcGFja2FnZSB0aGF0IGlzIG5vIGxvbmdlciBpbiB0aGUgbG9ja2ZpbGUgaXMgcmVtb3ZlZCB0b28uIE5hbWUgcGF0dGVybnMgKEBteW9yZy8qKSBhcmUgYWx3YXlzIGtlcHQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlUHJ1bmVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVBydW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQnlwYXNzIHN0YWxlbmVzcyBjaGVja3MgZm9yIGNhY2hlZCBkYXRhLiBNaXNzaW5nIGRhdGEgd2lsbCBzdGlsbCBiZSByZXF1ZXN0ZWQgZnJvbSB0aGUgc2VydmVyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ByZWZlck9mZmxpbmVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlck9mZmxpbmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBuby1kb3duZ3JhZGUsIHBucG0gd2lsbCBmYWlsIGlmIGEgcGFja2FnZSdzIHRydXN0IGxldmVsIGhhcyBkZWNyZWFzZWQgY29tcGFyZWQgdG8gcHJldmlvdXMgcmVsZWFzZXMuIEZvciBleGFtcGxlLCBpZiBhIHBhY2thZ2Ugd2FzIHByZXZpb3VzbHkgcHVibGlzaGVkIGJ5IGEgdHJ1c3RlZCBwdWJsaXNoZXIgYnV0IG5vdyBvbmx5IGhhcyBwcm92ZW5hbmNlIG9yIG5vIHRydXN0IGV2aWRlbmNlLCBpbnN0YWxsYXRpb24gd2lsbCBmYWlsLiBUaGlzIGhlbHBzIHByZXZlbnQgaW5zdGFsbGluZyBwb3RlbnRpYWxseSBjb21wcm9taXNlZCB2ZXJzaW9ucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdFBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RQb2xpY3k/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5O1xuXG4gIC8qKlxuICAgKiBZb3UgY2FuIG5vdyBsaXN0IG9uZSBvciBtb3JlIHNwZWNpZmljIHBhY2thZ2VzIG9yIHZlcnNpb25zIHRoYXQgcG5wbSBzaG91bGQgYWxsb3cgdG8gaW5zdGFsbCwgZXZlbiBpZiB0aG9zZSBwYWNrYWdlcyBkb24ndCBzYXRpc2Z5IHRoZSB0cnVzdCBwb2xpY3kgcmVxdWlyZW1lbnQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RQb2xpY3lFeGNsdWRlXG4gICAqL1xuICByZWFkb25seSB0cnVzdFBvbGljeUV4Y2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBtYXAgb2YgcGFja2FnZSBtYXRjaGVycyB0byBleHBsaWNpdGx5IGFsbG93IChgdHJ1ZWApIG9yIGRpc2FsbG93IChgZmFsc2VgKSBzY3JpcHQgZXhlY3V0aW9uLiBUaGlzIGZpZWxkIHJlcGxhY2VzIGBvbmx5QnVpbHREZXBlbmRlbmNpZXNgIGFuZCBgaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzYCAod2hpY2ggYXJlIGFsc28gZGVwcmVjYXRlZCBieSB0aGlzIG5ldyBzZXR0aW5nKSwgcHJvdmlkaW5nIGEgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhbGxvd0J1aWxkc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dCdWlsZHM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGl0IHByZXZlbnRzIHRoZSByZXNvbHV0aW9uIG9mIGV4b3RpYyBwcm90b2NvbHMgKGxpa2UgZ2l0K3NzaDogb3IgZGlyZWN0IGh0dHBzOiB0YXJiYWxscykgaW4gdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMuIE9ubHkgZGlyZWN0IGRlcGVuZGVuY2llcyBhcmUgYWxsb3dlZCB0byB1c2UgZXhvdGljIHNvdXJjZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYmxvY2tFeG90aWNTdWJkZXBzXG4gICAqL1xuICByZWFkb25seSBibG9ja0V4b3RpY1N1YmRlcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgaWdub3JpbmcgdGhlIHRydXN0IHBvbGljeSBjaGVjayBmb3IgcGFja2FnZXMgcHVibGlzaGVkIG1vcmUgdGhhbiB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIGFnby4gVGhpcyBpcyB1c2VmdWwgd2hlbiBlbmFibGluZyBzdHJpY3QgdHJ1c3QgcG9saWNpZXMsIGFzIGl0IGFsbG93cyBvbGRlciB2ZXJzaW9ucyBvZiBwYWNrYWdlcyAod2hpY2ggbWF5IGxhY2sgYSBwcm9jZXNzIGZvciBwdWJsaXNoaW5nIHdpdGggc2lnbmF0dXJlcyBvciBwcm92ZW5hbmNlKSB0byBiZSBpbnN0YWxsZWQgd2l0aG91dCBtYW51YWwgZXhjbHVzaW9uLCBhc3N1bWluZyB0aGV5IGFyZSBzYWZlIGR1ZSB0byB0aGVpciBhZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RQb2xpY3lJZ25vcmVBZnRlclxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RQb2xpY3lJZ25vcmVBZnRlcj86IG51bWJlcjtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIGxldmVsIG9mIGlzc3VlcyByZXBvcnRlZCBieSBgcG5wbSBhdWRpdGAuIFdoZW4gc2V0IHRvICdsb3cnLCBhbGwgdnVsbmVyYWJpbGl0aWVzIGFyZSByZXBvcnRlZC4gV2hlbiBzZXQgdG8gJ21vZGVyYXRlJywgJ2hpZ2gnLCBvciAnY3JpdGljYWwnLCBvbmx5IHZ1bG5lcmFiaWxpdGllcyB3aXRoIHRoYXQgc2V2ZXJpdHkgb3IgaGlnaGVyIGFyZSByZXBvcnRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhdWRpdExldmVsXG4gICAqL1xuICByZWFkb25seSBhdWRpdExldmVsPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHBlZXIgZGVwZW5kZW5jeSBzdWZmaXhlcyB1c2UgdmVyc2lvbi1vbmx5IGlkZW50aWZpZXJzIChgbmFtZUB2ZXJzaW9uYCkgaW5zdGVhZCBvZiBmdWxsIGRlcCBwYXRocywgZWxpbWluYXRpbmcgbmVzdGVkIHN1ZmZpeGVzIGxpa2UgYChmb29AMS4wLjAoYmFyQDIuMC4wKSlgLiBUaGlzIGRyYW1hdGljYWxseSByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcGFja2FnZSBpbnN0YW5jZXMgaW4gcHJvamVjdHMgd2l0aCBtYW55IHJlY3Vyc2l2ZSBwZWVyIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkZWR1cGVQZWVyc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlUGVlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyByZWdpc3RyeSBhdXRoZW50aWNhdGlvbiB0b2tlbnMuIEJ5IGRlZmF1bHQsIHBucG0gcmVhZHMgYXV0aCB0b2tlbnMgZnJvbSB+Ly5ucG1yYyBhcyBhIGZhbGxiYWNrIGZvciByZWdpc3RyeSBhdXRoZW50aWNhdGlvbi4gVXNlIHRoaXMgc2V0dGluZyB0byBwb2ludCB0byBhIGRpZmZlcmVudCBmaWxlIGluc3RlYWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbnBtcmNBdXRoRmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgbnBtcmNBdXRoRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHBucG0gc2tpcHMgdGhlIGBtaW5pbXVtUmVsZWFzZUFnZWAgY2hlY2sgZm9yIGEgcGFja2FnZSB3aG9zZSByZWdpc3RyeSBtZXRhZGF0YSBkb2VzIG5vdCBpbmNsdWRlIHRoZSB0aW1lIGZpZWxkIChzb21lIHByaXZhdGUgcmVnaXN0cmllcyBhbmQgbWlycm9ycyBvbWl0IGl0KS4gU2V0IHRvIGBmYWxzZWAgdG8gZmFpbCByZXNvbHV0aW9uIGluIHRoYXQgY2FzZSBpbnN0ZWFkIG9mIGluc3RhbGxpbmcgdGhlIHBhY2thZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWluaW11bVJlbGVhc2VBZ2VJZ25vcmVNaXNzaW5nVGltZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VJZ25vcmVNaXNzaW5nVGltZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSByZWdpc3RyaWVzIGZvciBzY29wZWQgcGFja2FnZXMgaW4gYHBucG0td29ya3NwYWNlLnlhbWxgLiBUaGUgYGRlZmF1bHRgIGtleSBzZXRzIHRoZSBtYWluIHJlZ2lzdHJ5IChlcXVpdmFsZW50IHRvIHRoZSBgcmVnaXN0cnlgIGAubnBtcmNgIHNldHRpbmcpLiBTY29wZWQga2V5cyBjb25maWd1cmUgcmVnaXN0cmllcyBmb3Igc3BlY2lmaWMgcGFja2FnZSBzY29wZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVnaXN0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cmllcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIERlZmluZXMgbmFtZWQgcmVnaXN0cnkgYWxpYXNlcyB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgcHJlZml4IHdoZW4gaW5zdGFsbGluZyBwYWNrYWdlcywgZS5nLiBgcG5wbSBhZGQgd29yazpAY29ycC9saWJAXjIuMC4wYCByZXNvbHZlcyBgQGNvcnAvbGliQF4yLjAuMGAgYWdhaW5zdCB0aGUgY29uZmlndXJlZCBVUkwuIEJ1aWx0LWluIGFsaWFzZXMgYGdoOmAgKGh0dHBzOi8vbnBtLnBrZy5naXRodWIuY29tLykgYW5kIGBucG1qczpgIChodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8pIHdvcmsgd2l0aG91dCBhbnkgY29uZmlndXJhdGlvbiBhbmQgY2FuIGJlIG92ZXJyaWRkZW4uIEFuIGFsaWFzIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY29udGFpbiBvbmx5IGxldHRlcnMsIGRpZ2l0cywgYC5gLCBgX2AsIGFuZCBgLWAuIEFkZGVkIGluIHBucG0gMTEuMS4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25hbWVkUmVnaXN0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZWRSZWdpc3RyaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgcG5wbSBwb3B1bGF0ZXMgdGhlIHZpcnR1YWwgc3RvcmUgd2l0aG91dCBjcmVhdGluZyBpbXBvcnRlciBzeW1saW5rcywgaG9pc3RpbmcsIGJpbiBsaW5rcywgb3IgcnVubmluZyBsaWZlY3ljbGUgc2NyaXB0cy4gVGhpcyBpcyB1c2VmdWwgZm9yIHByZS1wb3B1bGF0aW5nIGEgc3RvcmUgKGUuZy4sIGluIE5peCBidWlsZHMpIHdpdGhvdXQgY3JlYXRpbmcgdW5uZWNlc3NhcnkgcHJvamVjdC1sZXZlbCBhcnRpZmFjdHMuIHBucG0gZmV0Y2ggdXNlcyB0aGlzIG1vZGUgaW50ZXJuYWxseS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2aXJ0dWFsU3RvcmVPbmx5XG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVPbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIHRoZSBgb25GYWlsYCBiZWhhdmlvciBvZiBib3RoIHRoZSBgcGFja2FnZU1hbmFnZXJgIGZpZWxkIGFuZCBgZGV2RW5naW5lcy5wYWNrYWdlTWFuYWdlcmAgd2hlbiB0aGUgcnVubmluZyBwbnBtIHZlcnNpb24gZG9lcyBub3QgbWF0Y2ggdGhlIGRlY2xhcmVkIG9uZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwbU9uRmFpbFxuICAgKi9cbiAgcmVhZG9ubHkgcG1PbkZhaWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGZpZWxkIG9mIGBkZXZFbmdpbmVzLnJ1bnRpbWVgIChhbmQgYGVuZ2luZXMucnVudGltZWApIGluIHRoZSByb290IHByb2plY3QncyBgcGFja2FnZS5qc29uYC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCBhIGRpZmZlcmVudCBsb2NhbCBiZWhhdmlvciB0aGFuIHdoYXQgaXMgd3JpdHRlbiBpbiB0aGUgbWFuaWZlc3Qg4oCUIGZvciBpbnN0YW5jZSwgZm9yY2luZyBwbnBtIHRvIGRvd25sb2FkIHRoZSBkZWNsYXJlZCBydW50aW1lIGV2ZW4gd2hlbiB0aGUgbWFuaWZlc3Qgc2V0cyBgb25GYWlsOiBcIndhcm5cImAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcnVudGltZU9uRmFpbFxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZU9uRmFpbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbDtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGN1c3RvbSBOb2RlLmpzIGRvd25sb2FkIG1pcnJvcnMgaW4gYHBucG0td29ya3NwYWNlLnlhbWxgLiBUaGUga2V5cyBhcmUgcmVsZWFzZSBjaGFubmVscyAoYHJlbGVhc2VgLCBgcmNgLCBgbmlnaHRseWAsIGB2OC1jYW5hcnlgLCBldGMuKSBhbmQgdGhlIHZhbHVlcyBhcmUgYmFzZSBVUkxzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVEb3dubG9hZE1pcnJvcnNcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVEb3dubG9hZE1pcnJvcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBIG5ldyB0cnVzdExvY2tmaWxlIHNldHRpbmcgY29udHJvbHMgd2hldGhlciBwbnBtIGluc3RhbGwgcmUtYXBwbGllcyB0aGUgYG1pbmltdW1SZWxlYXNlQWdlYCAvIGB0cnVzdFBvbGljeTogJ25vLWRvd25ncmFkZSdgIGNoZWNrcyB0byBldmVyeSBlbnRyeSBpbiB0aGUgbG9hZGVkIGxvY2tmaWxlLiBXaGVuIHRydWUsIHRoZSBpbnN0YWxsIHRyZWF0cyB0aGUgbG9ja2ZpbGUgYXMgYWxyZWFkeS10cnVzdGVkIGFuZCBza2lwcyB0aGUgdmVyaWZpY2F0aW9uIHBhc3Mg4oCUIHVzZWZ1bCBmb3IgY2xvc2VkLXNvdXJjZSBwcm9qZWN0cyB3aGVyZSBldmVyeSBjb21taXQgY29tZXMgZnJvbSBhIHRydXN0ZWQgYXV0aG9yLiBUaGUgZGVmYXVsdCBpcyBmYWxzZSwgc28gdmVyaWZpY2F0aW9uIHN0YXlzIG9uIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGVkIGEgbmV3IGhvaXN0aW5nTGltaXRzIHNldHRpbmcgZm9yIGBub2RlTGlua2VyOiBob2lzdGVkYCBpbnN0YWxscywgbWlycm9yaW5nIHlhcm4ncyBgbm1Ib2lzdGluZ0xpbWl0c2AuIEl0IGFjY2VwdHMgYG5vbmVgICh0aGUgZGVmYXVsdCDigJQgaG9pc3QgYXMgZmFyIGFzIHBvc3NpYmxlKSwgd29ya3NwYWNlcyAoaG9pc3Qgb25seSBhcyBmYXIgYXMgZWFjaCB3b3Jrc3BhY2UgcGFja2FnZSksIG9yIGRlcGVuZGVuY2llcyAoaG9pc3Qgb25seSB1cCB0byBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlJ3MgZGlyZWN0IGRlcGVuZGVuY2llcykuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RpbmdMaW1pdHNcbiAgICovXG4gIHJlYWRvbmx5IGhvaXN0aW5nTGltaXRzPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0cztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYShvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncGFja2FnZXMnOiBvYmoucGFja2FnZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdjYXRhbG9nJzogKChvYmouY2F0YWxvZykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLmNhdGFsb2cpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdjYXRhbG9ncyc6ICgob2JqLmNhdGFsb2dzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouY2F0YWxvZ3MpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiAoKGlbMV0pID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKGlbMV0pLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpIH0pLCB7fSkpLFxuICAgICdjYXRhbG9nTW9kZSc6IG9iai5jYXRhbG9nTW9kZSxcbiAgICAnY2xlYW51cFVudXNlZENhdGFsb2dzJzogb2JqLmNsZWFudXBVbnVzZWRDYXRhbG9ncyxcbiAgICAnY2F0YWxvZ1BydW5lJzogb2JqLmNhdGFsb2dQcnVuZSxcbiAgICAnb25seUJ1aWx0RGVwZW5kZW5jaWVzJzogb2JqLm9ubHlCdWlsdERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ292ZXJyaWRlcyc6IG9iai5vdmVycmlkZXMsXG4gICAgJ3BhY2thZ2VFeHRlbnNpb25zJzogb2JqLnBhY2thZ2VFeHRlbnNpb25zLFxuICAgICdwYWNrYWdlQ29uZmlncyc6IG9iai5wYWNrYWdlQ29uZmlncyxcbiAgICAncGVlckRlcGVuZGVuY3lSdWxlcyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMob2JqLnBlZXJEZXBlbmRlbmN5UnVsZXMpLFxuICAgICduZXZlckJ1aWx0RGVwZW5kZW5jaWVzJzogb2JqLm5ldmVyQnVpbHREZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdkYW5nZXJvdXNseUFsbG93QWxsQnVpbGRzJzogb2JqLmRhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHMsXG4gICAgJ29ubHlCdWlsdERlcGVuZGVuY2llc0ZpbGUnOiBvYmoub25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZSxcbiAgICAnaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzJzogb2JqLmlnbm9yZWRCdWlsdERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93ZWREZXByZWNhdGVkVmVyc2lvbnMnOiAoKG9iai5hbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3BhdGNoZWREZXBlbmRlbmNpZXMnOiAoKG9iai5wYXRjaGVkRGVwZW5kZW5jaWVzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoucGF0Y2hlZERlcGVuZGVuY2llcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2FsbG93VW51c2VkUGF0Y2hlcyc6IG9iai5hbGxvd1VudXNlZFBhdGNoZXMsXG4gICAgJ2FsbG93Tm9uQXBwbGllZFBhdGNoZXMnOiBvYmouYWxsb3dOb25BcHBsaWVkUGF0Y2hlcyxcbiAgICAnaWdub3JlUGF0Y2hGYWlsdXJlcyc6IG9iai5pZ25vcmVQYXRjaEZhaWx1cmVzLFxuICAgICd1cGRhdGUnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUob2JqLnVwZGF0ZSksXG4gICAgJ3VwZGF0ZUNvbmZpZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyhvYmoudXBkYXRlQ29uZmlnKSxcbiAgICAnY29uZmlnRGVwZW5kZW5jaWVzJzogb2JqLmNvbmZpZ0RlcGVuZGVuY2llcyxcbiAgICAnYXVkaXQnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdChvYmouYXVkaXQpLFxuICAgICdhdWRpdENvbmZpZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnKG9iai5hdWRpdENvbmZpZyksXG4gICAgJ3JlcXVpcmVkU2NyaXB0cyc6IG9iai5yZXF1aXJlZFNjcmlwdHM/Lm1hcCh5ID0+IHkpLFxuICAgICdzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyhvYmouc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyksXG4gICAgJ2lnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcyc6IG9iai5pZ25vcmVkT3B0aW9uYWxEZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdleGVjdXRpb25FbnYnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYob2JqLmV4ZWN1dGlvbkVudiksXG4gICAgJ2hvaXN0Jzogb2JqLmhvaXN0LFxuICAgICdob2lzdFdvcmtzcGFjZVBhY2thZ2VzJzogb2JqLmhvaXN0V29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ2hvaXN0UGF0dGVybic6IG9iai5ob2lzdFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdwdWJsaWNIb2lzdFBhdHRlcm4nOiBvYmoucHVibGljSG9pc3RQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAnc2hhbWVmdWxseUhvaXN0Jzogb2JqLnNoYW1lZnVsbHlIb2lzdCxcbiAgICAnbW9kdWxlc0Rpcic6IG9iai5tb2R1bGVzRGlyLFxuICAgICdub2RlTGlua2VyJzogb2JqLm5vZGVMaW5rZXIsXG4gICAgJ25vZGVFeHBlcmltZW50YWxQYWNrYWdlTWFwJzogb2JqLm5vZGVFeHBlcmltZW50YWxQYWNrYWdlTWFwLFxuICAgICdub2RlUGFja2FnZU1hcFR5cGUnOiBvYmoubm9kZVBhY2thZ2VNYXBUeXBlLFxuICAgICdzeW1saW5rJzogb2JqLnN5bWxpbmssXG4gICAgJ2VuYWJsZU1vZHVsZXNEaXInOiBvYmouZW5hYmxlTW9kdWxlc0RpcixcbiAgICAndmlydHVhbFN0b3JlRGlyJzogb2JqLnZpcnR1YWxTdG9yZURpcixcbiAgICAndmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoJzogb2JqLnZpcnR1YWxTdG9yZURpck1heExlbmd0aCxcbiAgICAncGFja2FnZUltcG9ydE1ldGhvZCc6IG9iai5wYWNrYWdlSW1wb3J0TWV0aG9kLFxuICAgICdtb2R1bGVzQ2FjaGVNYXhBZ2UnOiBvYmoubW9kdWxlc0NhY2hlTWF4QWdlLFxuICAgICdkbHhDYWNoZU1heEFnZSc6IG9iai5kbHhDYWNoZU1heEFnZSxcbiAgICAnc3RvcmVEaXInOiBvYmouc3RvcmVEaXIsXG4gICAgJ3ZlcmlmeVN0b3JlSW50ZWdyaXR5Jzogb2JqLnZlcmlmeVN0b3JlSW50ZWdyaXR5LFxuICAgICdzdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVjayc6IG9iai5zdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVjayxcbiAgICAnZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlJzogb2JqLmVuYWJsZUdsb2JhbFZpcnR1YWxTdG9yZSxcbiAgICAnbG9ja2ZpbGUnOiBvYmoubG9ja2ZpbGUsXG4gICAgJ3ByZWZlckZyb3plbkxvY2tmaWxlJzogb2JqLnByZWZlckZyb3plbkxvY2tmaWxlLFxuICAgICdsb2NrZmlsZUluY2x1ZGVUYXJiYWxsVXJsJzogb2JqLmxvY2tmaWxlSW5jbHVkZVRhcmJhbGxVcmwsXG4gICAgJ2dpdEJyYW5jaExvY2tmaWxlJzogb2JqLmdpdEJyYW5jaExvY2tmaWxlLFxuICAgICdtZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm4nOiBvYmoubWVyZ2VHaXRCcmFuY2hMb2NrZmlsZXNCcmFuY2hQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAncGVlcnNTdWZmaXhNYXhMZW5ndGgnOiBvYmoucGVlcnNTdWZmaXhNYXhMZW5ndGgsXG4gICAgJ3JlZ2lzdHJ5Jzogb2JqLnJlZ2lzdHJ5LFxuICAgICdjYSc6IG9iai5jYSxcbiAgICAnY2FmaWxlJzogb2JqLmNhZmlsZSxcbiAgICAnY2VydCc6IG9iai5jZXJ0LFxuICAgICdrZXknOiBvYmoua2V5LFxuICAgICdnaXRTaGFsbG93SG9zdHMnOiBvYmouZ2l0U2hhbGxvd0hvc3RzPy5tYXAoeSA9PiB5KSxcbiAgICAnaHR0cHNQcm94eSc6IG9iai5odHRwc1Byb3h5LFxuICAgICdodHRwUHJveHknOiBvYmouaHR0cFByb3h5LFxuICAgICdwcm94eSc6IG9iai5wcm94eSxcbiAgICAnbG9jYWxBZGRyZXNzJzogb2JqLmxvY2FsQWRkcmVzcyxcbiAgICAnbWF4c29ja2V0cyc6IG9iai5tYXhzb2NrZXRzLFxuICAgICdub1Byb3h5Jzogb2JqLm5vUHJveHksXG4gICAgJ3N0cmljdFNzbCc6IG9iai5zdHJpY3RTc2wsXG4gICAgJ25ldHdvcmtDb25jdXJyZW5jeSc6IG9iai5uZXR3b3JrQ29uY3VycmVuY3ksXG4gICAgJ2ZldGNoUmV0cmllcyc6IG9iai5mZXRjaFJldHJpZXMsXG4gICAgJ2ZldGNoUmV0cnlGYWN0b3InOiBvYmouZmV0Y2hSZXRyeUZhY3RvcixcbiAgICAnZmV0Y2hSZXRyeU1pbnRpbWVvdXQnOiBvYmouZmV0Y2hSZXRyeU1pbnRpbWVvdXQsXG4gICAgJ2ZldGNoUmV0cnlNYXh0aW1lb3V0Jzogb2JqLmZldGNoUmV0cnlNYXh0aW1lb3V0LFxuICAgICdmZXRjaFRpbWVvdXQnOiBvYmouZmV0Y2hUaW1lb3V0LFxuICAgICdmZXRjaFdhcm5UaW1lb3V0TXMnOiBvYmouZmV0Y2hXYXJuVGltZW91dE1zLFxuICAgICdmZXRjaE1pblNwZWVkS2lCcHMnOiBvYmouZmV0Y2hNaW5TcGVlZEtpQnBzLFxuICAgICdhdXRvSW5zdGFsbFBlZXJzJzogb2JqLmF1dG9JbnN0YWxsUGVlcnMsXG4gICAgJ2RlZHVwZVBlZXJEZXBlbmRlbnRzJzogb2JqLmRlZHVwZVBlZXJEZXBlbmRlbnRzLFxuICAgICdzdHJpY3RQZWVyRGVwZW5kZW5jaWVzJzogb2JqLnN0cmljdFBlZXJEZXBlbmRlbmNpZXMsXG4gICAgJ3Jlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290Jzogb2JqLnJlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290LFxuICAgICdjb2xvcic6IG9iai5jb2xvcixcbiAgICAnbG9nbGV2ZWwnOiBvYmoubG9nbGV2ZWwsXG4gICAgJ3JlcG9ydGVyJzogb2JqLnJlcG9ydGVyLFxuICAgICd1c2VCZXRhQ2xpJzogb2JqLnVzZUJldGFDbGksXG4gICAgJ3JlY3Vyc2l2ZUluc3RhbGwnOiBvYmoucmVjdXJzaXZlSW5zdGFsbCxcbiAgICAnZW5naW5lU3RyaWN0Jzogb2JqLmVuZ2luZVN0cmljdCxcbiAgICAnbnBtUGF0aCc6IG9iai5ucG1QYXRoLFxuICAgICdwYWNrYWdlTWFuYWdlclN0cmljdCc6IG9iai5wYWNrYWdlTWFuYWdlclN0cmljdCxcbiAgICAncGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uJzogb2JqLnBhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvbixcbiAgICAnbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9ucyc6IG9iai5tYW5hZ2VQYWNrYWdlTWFuYWdlclZlcnNpb25zLFxuICAgICdpZ25vcmVTY3JpcHRzJzogb2JqLmlnbm9yZVNjcmlwdHMsXG4gICAgJ2lnbm9yZURlcFNjcmlwdHMnOiBvYmouaWdub3JlRGVwU2NyaXB0cyxcbiAgICAnY2hpbGRDb25jdXJyZW5jeSc6IG9iai5jaGlsZENvbmN1cnJlbmN5LFxuICAgICdzaWRlRWZmZWN0c0NhY2hlJzogb2JqLnNpZGVFZmZlY3RzQ2FjaGUsXG4gICAgJ3NpZGVFZmZlY3RzQ2FjaGVSZWFkb25seSc6IG9iai5zaWRlRWZmZWN0c0NhY2hlUmVhZG9ubHksXG4gICAgJ3Vuc2FmZVBlcm0nOiBvYmoudW5zYWZlUGVybSxcbiAgICAnbm9kZU9wdGlvbnMnOiBvYmoubm9kZU9wdGlvbnMsXG4gICAgJ3ZlcmlmeURlcHNCZWZvcmVSdW4nOiBvYmoudmVyaWZ5RGVwc0JlZm9yZVJ1bixcbiAgICAnc3RyaWN0RGVwQnVpbGRzJzogb2JqLnN0cmljdERlcEJ1aWxkcyxcbiAgICAndXNlTm9kZVZlcnNpb24nOiBvYmoudXNlTm9kZVZlcnNpb24sXG4gICAgJ25vZGVWZXJzaW9uJzogb2JqLm5vZGVWZXJzaW9uLFxuICAgICdsaW5rV29ya3NwYWNlUGFja2FnZXMnOiBvYmoubGlua1dvcmtzcGFjZVBhY2thZ2VzPy52YWx1ZSxcbiAgICAnaW5qZWN0V29ya3NwYWNlUGFja2FnZXMnOiBvYmouaW5qZWN0V29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ3N5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHMnOiBvYmouc3luY0luamVjdGVkRGVwc0FmdGVyU2NyaXB0cz8ubWFwKHkgPT4geSksXG4gICAgJ3ByZWZlcldvcmtzcGFjZVBhY2thZ2VzJzogb2JqLnByZWZlcldvcmtzcGFjZVBhY2thZ2VzLFxuICAgICdzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZSc6IG9iai5zaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZSxcbiAgICAnc2F2ZVdvcmtzcGFjZVByb3RvY29sJzogb2JqLnNhdmVXb3Jrc3BhY2VQcm90b2NvbD8udmFsdWUsXG4gICAgJ2luY2x1ZGVXb3Jrc3BhY2VSb290Jzogb2JqLmluY2x1ZGVXb3Jrc3BhY2VSb290LFxuICAgICdpZ25vcmVXb3Jrc3BhY2VDeWNsZXMnOiBvYmouaWdub3JlV29ya3NwYWNlQ3ljbGVzLFxuICAgICdpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2snOiBvYmouaWdub3JlV29ya3NwYWNlUm9vdENoZWNrLFxuICAgICdkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcyc6IG9iai5kaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcyxcbiAgICAnd29ya3NwYWNlQ29uY3VycmVuY3knOiBvYmoud29ya3NwYWNlQ29uY3VycmVuY3ksXG4gICAgJ2ZhaWxJZk5vTWF0Y2gnOiBvYmouZmFpbElmTm9NYXRjaCxcbiAgICAnZm9yY2VMZWdhY3lEZXBsb3knOiBvYmouZm9yY2VMZWdhY3lEZXBsb3ksXG4gICAgJ3NhdmVQcmVmaXgnOiBvYmouc2F2ZVByZWZpeCxcbiAgICAndGFnJzogb2JqLnRhZyxcbiAgICAnZ2xvYmFsRGlyJzogb2JqLmdsb2JhbERpcixcbiAgICAnZ2xvYmFsQmluRGlyJzogb2JqLmdsb2JhbEJpbkRpcixcbiAgICAnc3RhdGVEaXInOiBvYmouc3RhdGVEaXIsXG4gICAgJ2NhY2hlRGlyJzogb2JqLmNhY2hlRGlyLFxuICAgICd1c2VTdGRlcnInOiBvYmoudXNlU3RkZXJyLFxuICAgICd1cGRhdGVOb3RpZmllcic6IG9iai51cGRhdGVOb3RpZmllcixcbiAgICAncHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXMnOiBvYmoucHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXMsXG4gICAgJ2lnbm9yZUNvbXBhdGliaWxpdHlEYic6IG9iai5pZ25vcmVDb21wYXRpYmlsaXR5RGIsXG4gICAgJ3Jlc29sdXRpb25Nb2RlJzogb2JqLnJlc29sdXRpb25Nb2RlLFxuICAgICdyZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkJzogb2JqLnJlZ2lzdHJ5U3VwcG9ydHNUaW1lRmllbGQsXG4gICAgJ2V4dGVuZE5vZGVQYXRoJzogb2JqLmV4dGVuZE5vZGVQYXRoLFxuICAgICdkZXBsb3lBbGxGaWxlcyc6IG9iai5kZXBsb3lBbGxGaWxlcyxcbiAgICAnZGVkdXBlRGlyZWN0RGVwcyc6IG9iai5kZWR1cGVEaXJlY3REZXBzLFxuICAgICdkZWR1cGVJbmplY3RlZERlcHMnOiBvYmouZGVkdXBlSW5qZWN0ZWREZXBzLFxuICAgICdvcHRpbWlzdGljUmVwZWF0SW5zdGFsbCc6IG9iai5vcHRpbWlzdGljUmVwZWF0SW5zdGFsbCxcbiAgICAnZ2l0Q2hlY2tzJzogb2JqLmdpdENoZWNrcyxcbiAgICAnZW1iZWRSZWFkbWUnOiBvYmouZW1iZWRSZWFkbWUsXG4gICAgJ3B1Ymxpc2hCcmFuY2gnOiBvYmoucHVibGlzaEJyYW5jaCxcbiAgICAndmVyc2lvbmluZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcob2JqLnZlcnNpb25pbmcpLFxuICAgICdwcm92ZW5hbmNlJzogb2JqLnByb3ZlbmFuY2UsXG4gICAgJ3BucG1maWxlJzogb2JqLnBucG1maWxlLFxuICAgICdnbG9iYWxQbnBtZmlsZSc6IG9iai5nbG9iYWxQbnBtZmlsZSxcbiAgICAnaWdub3JlUG5wbWZpbGUnOiBvYmouaWdub3JlUG5wbWZpbGUsXG4gICAgJ3BhdGNoZXNEaXInOiBvYmoucGF0Y2hlc0RpcixcbiAgICAnZW5hYmxlUHJlUG9zdFNjcmlwdHMnOiBvYmouZW5hYmxlUHJlUG9zdFNjcmlwdHMsXG4gICAgJ3NjcmlwdFNoZWxsJzogb2JqLnNjcmlwdFNoZWxsLFxuICAgICdzaGVsbEVtdWxhdG9yJzogb2JqLnNoZWxsRW11bGF0b3IsXG4gICAgJ3NhdmVFeGFjdCc6IG9iai5zYXZlRXhhY3QsXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlLFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAnbWluaW11bVJlbGVhc2VBZ2VTdHJpY3QnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VTdHJpY3QsXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVBydW5lJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVBydW5lLFxuICAgICdwcmVmZXJPZmZsaW5lJzogb2JqLnByZWZlck9mZmxpbmUsXG4gICAgJ3RydXN0UG9saWN5Jzogb2JqLnRydXN0UG9saWN5LFxuICAgICd0cnVzdFBvbGljeUV4Y2x1ZGUnOiBvYmoudHJ1c3RQb2xpY3lFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3dCdWlsZHMnOiBvYmouYWxsb3dCdWlsZHMsXG4gICAgJ2Jsb2NrRXhvdGljU3ViZGVwcyc6IG9iai5ibG9ja0V4b3RpY1N1YmRlcHMsXG4gICAgJ3RydXN0UG9saWN5SWdub3JlQWZ0ZXInOiBvYmoudHJ1c3RQb2xpY3lJZ25vcmVBZnRlcixcbiAgICAnYXVkaXRMZXZlbCc6IG9iai5hdWRpdExldmVsLFxuICAgICdkZWR1cGVQZWVycyc6IG9iai5kZWR1cGVQZWVycyxcbiAgICAnbnBtcmNBdXRoRmlsZSc6IG9iai5ucG1yY0F1dGhGaWxlLFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlSWdub3JlTWlzc2luZ1RpbWUsXG4gICAgJ3JlZ2lzdHJpZXMnOiAoKG9iai5yZWdpc3RyaWVzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoucmVnaXN0cmllcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ25hbWVkUmVnaXN0cmllcyc6ICgob2JqLm5hbWVkUmVnaXN0cmllcykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLm5hbWVkUmVnaXN0cmllcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3ZpcnR1YWxTdG9yZU9ubHknOiBvYmoudmlydHVhbFN0b3JlT25seSxcbiAgICAncG1PbkZhaWwnOiBvYmoucG1PbkZhaWwsXG4gICAgJ3J1bnRpbWVPbkZhaWwnOiBvYmoucnVudGltZU9uRmFpbCxcbiAgICAnbm9kZURvd25sb2FkTWlycm9ycyc6ICgob2JqLm5vZGVEb3dubG9hZE1pcnJvcnMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5ub2RlRG93bmxvYWRNaXJyb3JzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAndHJ1c3RMb2NrZmlsZSc6IG9iai50cnVzdExvY2tmaWxlLFxuICAgICdob2lzdGluZ0xpbWl0cyc6IG9iai5ob2lzdGluZ0xpbWl0cyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIENvbnRyb2xsaW5nIGlmIGFuZCBob3cgZGVwZW5kZW5jaWVzIGFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjYXRhbG9nXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNhdGFsb2dNb2RlXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ2F0YWxvZ01vZGUge1xuICAvKiogc3RyaWN0ICovXG4gIFNUUklDVCA9IFwic3RyaWN0XCIsXG4gIC8qKiBwcmVmZXIgKi9cbiAgUFJFRkVSID0gXCJwcmVmZXJcIixcbiAgLyoqIG1hbnVhbCAqL1xuICBNQU5VQUwgPSBcIm1hbnVhbFwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzIHtcbiAgLyoqXG4gICAqIHBucG0gd2lsbCBub3QgcHJpbnQgd2FybmluZ3MgYWJvdXQgbWlzc2luZyBwZWVyIGRlcGVuZGVuY2llcyBmcm9tIHRoaXMgbGlzdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMjaWdub3JlTWlzc2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlTWlzc2luZz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBVbm1ldCBwZWVyIGRlcGVuZGVuY3kgd2FybmluZ3Mgd2lsbCBub3QgYmUgcHJpbnRlZCBmb3IgcGVlciBkZXBlbmRlbmNpZXMgb2YgdGhlIHNwZWNpZmllZCByYW5nZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMjYWxsb3dlZFZlcnNpb25zXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkVmVyc2lvbnM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEFueSBwZWVyIGRlcGVuZGVuY3kgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gd2lsbCBiZSByZXNvbHZlZCBmcm9tIGFueSB2ZXJzaW9uLCByZWdhcmRsZXNzIG9mIHRoZSByYW5nZSBzcGVjaWZpZWQgaW4gXCJwZWVyRGVwZW5kZW5jaWVzXCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzI2FsbG93QW55XG4gICAqL1xuICByZWFkb25seSBhbGxvd0FueT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVNaXNzaW5nJzogb2JqLmlnbm9yZU1pc3Npbmc/Lm1hcCh5ID0+IHkpLFxuICAgICdhbGxvd2VkVmVyc2lvbnMnOiBvYmouYWxsb3dlZFZlcnNpb25zLFxuICAgICdhbGxvd0FueSc6IG9iai5hbGxvd0FueT8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUge1xuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcGVuZGVuY3kgbmFtZSBwYXR0ZXJucyB0aGF0IHBucG0gdXBkYXRlIGFuZCBwbnBtIG91dGRhdGVkIHNob3VsZCBza2lwLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlI2lnbm9yZURlcHNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHVwZGF0ZSB3cml0ZXMgYSBjaGFuZ2UgaW50ZW50IGFmdGVyIHVwZGF0aW5nIHdvcmtzcGFjZSBtYW5pZmVzdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUjY2hhbmdlc2V0XG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gdXBkYXRlIGFuZCBwbnBtIG91dGRhdGVkIGFsc28gY2hlY2sgdGhlIEdpdEh1YiBBY3Rpb25zIHJlZmVyZW5jZWQgYnkgdGhlIHJlcG9zaXRvcnkncyB3b3JrZmxvdyBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZSNnaXRodWJBY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBnaXRodWJBY3Rpb25zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGJhc2UgVVJMIG9mIHRoZSBHaXRIdWIgc2VydmVyIHRoYXQgaG9zdHMgdGhlIHJlcG9zaXRvcmllcyBvZiB0aGUgR2l0SHViIEFjdGlvbnMgcmVmZXJlbmNlZCBieSB0aGUgd29ya2Zsb3cgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUjZ2l0aHViQWN0aW9uc1NlcnZlclxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViQWN0aW9uc1NlcnZlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZShvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlRGVwcyc6IG9iai5pZ25vcmVEZXBzPy5tYXAoeSA9PiB5KSxcbiAgICAnY2hhbmdlc2V0Jzogb2JqLmNoYW5nZXNldCxcbiAgICAnZ2l0aHViQWN0aW9ucyc6IG9iai5naXRodWJBY3Rpb25zLFxuICAgICdnaXRodWJBY3Rpb25zU2VydmVyJzogb2JqLmdpdGh1YkFjdGlvbnNTZXJ2ZXIsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcge1xuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBydW5uaW5nIFwicG5wbSBvdXRkYXRlZFwiIG9yIFwicG5wbSB1cGRhdGUgLS1sYXRlc3RcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyNpZ25vcmVEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVEZXBlbmRlbmNpZXMnOiBvYmouaWdub3JlRGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQge1xuICAvKipcbiAgICogT25seSBwcmludCBhZHZpc29yaWVzIHdpdGggc2V2ZXJpdHkgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoaXMgbGV2ZWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdCNsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgbGV2ZWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWw7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBHSFNBIGNvZGVzIHRoYXQgd2lsbCBiZSBpZ25vcmVkIGJ5IHBucG0gYXVkaXQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdCNpZ25vcmVcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdChvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdsZXZlbCc6IG9iai5sZXZlbCxcbiAgICAnaWdub3JlJzogb2JqLmlnbm9yZT8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBDVkUgSURzIHRoYXQgd2lsbCBiZSBpZ25vcmVkIGJ5IFwicG5wbSBhdWRpdFwiLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcjaWdub3JlQ3Zlc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ3Zlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgR0hTQSBDb2RlcyB0aGF0IHdpbGwgYmUgaWdub3JlZCBieSBcInBucG0gYXVkaXRcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnI2lnbm9yZUdoc2FzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVHaHNhcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVDdmVzJzogb2JqLmlnbm9yZUN2ZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdpZ25vcmVHaHNhcyc6IG9iai5pZ25vcmVHaHNhcz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggeW91J2QgbGlrZSB0byBpbnN0YWxsIG9wdGlvbmFsIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5IGRvbid0IG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIHN5c3RlbSBydW5uaW5nIHRoZSBpbnN0YWxsLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzI29zXG4gICAqL1xuICByZWFkb25seSBvcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyNjcHVcbiAgICovXG4gIHJlYWRvbmx5IGNwdT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyNsaWJjXG4gICAqL1xuICByZWFkb25seSBsaWJjPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ29zJzogb2JqLm9zPy5tYXAoeSA9PiB5KSxcbiAgICAnY3B1Jzogb2JqLmNwdT8ubWFwKHkgPT4geSksXG4gICAgJ2xpYmMnOiBvYmoubGliYz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoaWNoIGV4YWN0IE5vZGUuanMgdmVyc2lvbiBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHByb2plY3QncyBydW50aW1lLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52I25vZGVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudihvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbm9kZVZlcnNpb24nOiBvYmoubm9kZVZlcnNpb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBEZWZpbmVzIHdoYXQgbGlua2VyIHNob3VsZCBiZSB1c2VkIGZvciBpbnN0YWxsaW5nIE5vZGUgcGFja2FnZXMuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVMaW5rZXJcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyIHtcbiAgLyoqIGlzb2xhdGVkICovXG4gIElTT0xBVEVEID0gXCJpc29sYXRlZFwiLFxuICAvKiogaG9pc3RlZCAqL1xuICBIT0lTVEVEID0gXCJob2lzdGVkXCIsXG4gIC8qKiBwbnAgKi9cbiAgUE5QID0gXCJwbnBcIixcbn1cblxuLyoqXG4gKiBDb250cm9scyBob3cgbm9kZV9tb2R1bGVzLy5wYWNrYWdlLW1hcC5qc29uIGlzIGdlbmVyYXRlZC4gc3RhbmRhcmQgLSBvbmx5IGRlY2xhcmVkIGRlcGVuZGVuY2llcyBhcmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHBhY2thZ2UgbWFwLiBsb29zZSAtIGFsc28gbWFwcyBwYWNrYWdlcyB0aGF0IGFyZSByZWFjaGFibGUgdGhyb3VnaCB0aGUgaW5zdGFsbGVkIG5vZGVfbW9kdWxlcyBsYXlvdXQsIHdoaWNoIGNhbiBhbGxvdyB1bmRlY2xhcmVkIGhvaXN0ZWQgZGVwZW5kZW5jaWVzIHRvIHJlc29sdmUuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVQYWNrYWdlTWFwVHlwZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVQYWNrYWdlTWFwVHlwZSB7XG4gIC8qKiBzdGFuZGFyZCAqL1xuICBTVEFOREFSRCA9IFwic3RhbmRhcmRcIixcbiAgLyoqIGxvb3NlICovXG4gIExPT1NFID0gXCJsb29zZVwiLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIHRoZSB3YXkgcGFja2FnZXMgYXJlIGltcG9ydGVkIGZyb20gdGhlIHN0b3JlIChpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHN5bWxpbmtzIGluc2lkZSBub2RlX21vZHVsZXMsIHRoZW4geW91IG5lZWQgdG8gY2hhbmdlIHRoZSBub2RlTGlua2VyIHNldHRpbmcsIG5vdCB0aGlzIG9uZSkuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2RcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQYWNrYWdlSW1wb3J0TWV0aG9kIHtcbiAgLyoqIGF1dG8gKi9cbiAgQVVUTyA9IFwiYXV0b1wiLFxuICAvKiogaGFyZGxpbmsgKi9cbiAgSEFSRExJTksgPSBcImhhcmRsaW5rXCIsXG4gIC8qKiBjb3B5ICovXG4gIENPUFkgPSBcImNvcHlcIixcbiAgLyoqIGNsb25lICovXG4gIENMT05FID0gXCJjbG9uZVwiLFxuICAvKiogY2xvbmUtb3ItY29weSAqL1xuICBDTE9ORV9IWVBIRU5fT1JfSFlQSEVOX0NPUFkgPSBcImNsb25lLW9yLWNvcHlcIixcbn1cblxuLyoqXG4gKiBDb250cm9scyBjb2xvcnMgaW4gdGhlIG91dHB1dC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ29sb3JcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDb2xvciB7XG4gIC8qKiBhbHdheXMgKi9cbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgLyoqIGF1dG8gKi9cbiAgQVVUTyA9IFwiYXV0b1wiLFxuICAvKiogbmV2ZXIgKi9cbiAgTkVWRVIgPSBcIm5ldmVyXCIsXG59XG5cbi8qKlxuICogQW55IGxvZ3MgYXQgb3IgaGlnaGVyIHRoYW4gdGhlIGdpdmVuIGxldmVsIHdpbGwgYmUgc2hvd24uXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxvZ2xldmVsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWwge1xuICAvKiogZGVidWcgKi9cbiAgREVCVUcgPSBcImRlYnVnXCIsXG4gIC8qKiBpbmZvICovXG4gIElORk8gPSBcImluZm9cIixcbiAgLyoqIHdhcm4gKi9cbiAgV0FSTiA9IFwid2FyblwiLFxuICAvKiogZXJyb3IgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG59XG5cbi8qKlxuICogQWxsb3dzIHlvdSB0byBjdXN0b21pemUgdGhlIG91dHB1dCBzdHlsZSBvZiB0aGUgbG9ncy5cbiAqIGh0dHBzOi8vcG5wbS5pby9jbGkvaW5zdGFsbCMtLXJlcG9ydGVybmFtZVxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXBvcnRlclxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlcG9ydGVyIHtcbiAgLyoqIHNpbGVudCAqL1xuICBTSUxFTlQgPSBcInNpbGVudFwiLFxuICAvKiogZGVmYXVsdCAqL1xuICBERUZBVUxUID0gXCJkZWZhdWx0XCIsXG4gIC8qKiBhcHBlbmQtb25seSAqL1xuICBBUFBFTkRfSFlQSEVOX09OTFkgPSBcImFwcGVuZC1vbmx5XCIsXG4gIC8qKiBuZGpzb24gKi9cbiAgTkRKU09OID0gXCJuZGpzb25cIixcbn1cblxuLyoqXG4gKiBJZiB0aGlzIGlzIGVuYWJsZWQsIGxvY2FsbHkgYXZhaWxhYmxlIHBhY2thZ2VzIGFyZSBsaW5rZWQgdG8gbm9kZV9tb2R1bGVzIGluc3RlYWQgb2YgYmVpbmcgZG93bmxvYWRlZCBmcm9tIHRoZSByZWdpc3RyeS5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJvb2xlYW4odmFsdWU6IGJvb2xlYW4pOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIGFkZGVkIHRvIHBhY2thZ2UuanNvbi5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sXG4gKi9cbmV4cG9ydCBjbGFzcyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJvb2xlYW4odmFsdWU6IGJvb2xlYW4pOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyZSBob3cgdmVyc2lvbnMgb2YgcGFja2FnZXMgaW5zdGFsbGVkIHRvIGEgcGFja2FnZS5qc29uIGZpbGUgZ2V0IHByZWZpeGVkLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4XG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVByZWZpeCB7XG4gIC8qKiBeICovXG4gIFZBTFVFX0NBUkFUID0gXCJeXCIsXG4gIC8qKiB+ICovXG4gIFZBTFVFX1RJTERFID0gXCJ+XCIsXG4gIC8qKiA9ICovXG4gIFZBTFVFX0VRVUFMUyA9IFwiPVwiLFxufVxuXG4vKipcbiAqIERldGVybWluZXMgaG93IHBucG0gcmVzb2x2ZXMgZGVwZW5kZW5jaWVzLCBTZWUgaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI3Jlc29sdXRpb25tb2RlXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlc29sdXRpb25Nb2RlXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVzb2x1dGlvbk1vZGUge1xuICAvKiogaGlnaGVzdCAqL1xuICBISUdIRVNUID0gXCJoaWdoZXN0XCIsXG4gIC8qKiB0aW1lLWJhc2VkICovXG4gIFRJTUVfSFlQSEVOX0JBU0VEID0gXCJ0aW1lLWJhc2VkXCIsXG4gIC8qKiBsb3dlc3QtZGlyZWN0ICovXG4gIExPV0VTVF9IWVBIRU5fRElSRUNUID0gXCJsb3dlc3QtZGlyZWN0XCIsXG59XG5cbi8qKlxuICogVmVyc2lvbmluZyBzZXR0aW5ncyBmb3IgcG5wbSdzIG5hdGl2ZSB3b3Jrc3BhY2UgcmVsZWFzZSBtYW5hZ2VtZW50LCB1c2VkIGJ5IGBwbnBtIGNoYW5nZWAgYW5kIHJlY3Vyc2l2ZSBgcG5wbSB2ZXJzaW9uYC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyB7XG4gIC8qKlxuICAgKiBHcm91cHMgb2Ygd29ya3NwYWNlIHByb2plY3RzIHRoYXQgYWx3YXlzIHJlbGVhc2UgdG9nZXRoZXIgYXQgb25lIHNoYXJlZCB2ZXJzaW9uLiBUaGUgc2hhcmVkIHZlcnNpb24gaXMgdGhlIGhpZ2hlc3QgY3VycmVudCB2ZXJzaW9uIGluIHRoZSBncm91cCwgYnVtcGVkIGJ5IHRoZSBsYXJnZXN0IGJ1bXAgYW55IG1lbWJlciBuZWVkcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcjZml4ZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpeGVkPzogc3RyaW5nW11bXTtcblxuICAvKipcbiAgICogV29ya3NwYWNlIHByb2plY3RzIHBlcm1hbmVudGx5IGV4Y2x1ZGVkIGZyb20gdmVyc2lvbmluZyBhbmQgZGVwZW5kZW50IHByb3BhZ2F0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyNpZ25vcmVcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDYXBzIHRoZSBidW1wIHRoYXQgYSByZWxlYXNlIGZyb20gdGhlIGN1cnJlbnQgY2hlY2tvdXQgbWF5IGFwcGx5LCBhZnRlciBkZXBlbmRlbnQgcHJvcGFnYXRpb24gYW5kIGZpeGVkLWdyb3VwIHJlc29sdXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nI21heEJ1bXBcbiAgICovXG4gIHJlYWRvbmx5IG1heEJ1bXA/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdNYXhCdW1wO1xuXG4gIC8qKlxuICAgKiBNYXBzIGEgd29ya3NwYWNlIHByb2plY3QgdG8gYSByZWxlYXNlIGxhbmUuIFVubGlzdGVkIHByb2plY3RzIGFyZSBvbiB0aGUgcmVzZXJ2ZWQgYG1haW5gIGxhbmUgYW5kIHJlbGVhc2Ugc3RhYmxlIHZlcnNpb25zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyNsYW5lc1xuICAgKi9cbiAgcmVhZG9ubHkgbGFuZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaWVzIG1lbWJlciBwcm9qZWN0cyB0byBhIGxlYWQgcHJvamVjdCBhbmQgY29uc3RyYWlucyB0aGVpciBtYWpvciB2ZXJzaW9ucyB0byB0aGUgbGVhZCdzIG1ham9yLXZlcnNpb24gYmFuZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcjZXBpY3NcbiAgICovXG4gIHJlYWRvbmx5IGVwaWNzPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3NbXTtcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hlcmUgcmVsZWFzZSBjaGFuZ2Vsb2cgY29udGVudCBpcyBzdG9yZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nI2NoYW5nZWxvZ1xuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlbG9nPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdmaXhlZCc6IG9iai5maXhlZD8ubWFwKHkgPT4geT8ubWFwKHkgPT4geSkpLFxuICAgICdpZ25vcmUnOiBvYmouaWdub3JlPy5tYXAoeSA9PiB5KSxcbiAgICAnbWF4QnVtcCc6IG9iai5tYXhCdW1wLFxuICAgICdsYW5lcyc6ICgob2JqLmxhbmVzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoubGFuZXMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdlcGljcyc6IG9iai5lcGljcz8ubWFwKHkgPT4gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzKHkpKSxcbiAgICAnY2hhbmdlbG9nJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0NoYW5nZWxvZyhvYmouY2hhbmdlbG9nKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFdoZW4gc2V0IHRvIG5vLWRvd25ncmFkZSwgcG5wbSB3aWxsIGZhaWwgaWYgYSBwYWNrYWdlJ3MgdHJ1c3QgbGV2ZWwgaGFzIGRlY3JlYXNlZCBjb21wYXJlZCB0byBwcmV2aW91cyByZWxlYXNlcy4gRm9yIGV4YW1wbGUsIGlmIGEgcGFja2FnZSB3YXMgcHJldmlvdXNseSBwdWJsaXNoZWQgYnkgYSB0cnVzdGVkIHB1Ymxpc2hlciBidXQgbm93IG9ubHkgaGFzIHByb3ZlbmFuY2Ugb3Igbm8gdHJ1c3QgZXZpZGVuY2UsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwuIFRoaXMgaGVscHMgcHJldmVudCBpbnN0YWxsaW5nIHBvdGVudGlhbGx5IGNvbXByb21pc2VkIHZlcnNpb25zLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFUcnVzdFBvbGljeVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5IHtcbiAgLyoqIG9mZiAqL1xuICBPRkYgPSBcIm9mZlwiLFxuICAvKiogbm8tZG93bmdyYWRlICovXG4gIE5PX0hZUEhFTl9ET1dOR1JBREUgPSBcIm5vLWRvd25ncmFkZVwiLFxufVxuXG4vKipcbiAqIE9ubHkgcHJpbnQgYWR2aXNvcmllcyB3aXRoIHNldmVyaXR5IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGlzIGxldmVsLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRMZXZlbCB7XG4gIC8qKiBsb3cgKi9cbiAgTE9XID0gXCJsb3dcIixcbiAgLyoqIG1vZGVyYXRlICovXG4gIE1PREVSQVRFID0gXCJtb2RlcmF0ZVwiLFxuICAvKiogaGlnaCAqL1xuICBISUdIID0gXCJoaWdoXCIsXG4gIC8qKiBjcml0aWNhbCAqL1xuICBDUklUSUNBTCA9IFwiY3JpdGljYWxcIixcbn1cblxuLyoqXG4gKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGJlaGF2aW9yIG9mIGJvdGggdGhlIGBwYWNrYWdlTWFuYWdlcmAgZmllbGQgYW5kIGBkZXZFbmdpbmVzLnBhY2thZ2VNYW5hZ2VyYCB3aGVuIHRoZSBydW5uaW5nIHBucG0gdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgZGVjbGFyZWQgb25lLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQbU9uRmFpbFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsIHtcbiAgLyoqIGRvd25sb2FkICovXG4gIERPV05MT0FEID0gXCJkb3dubG9hZFwiLFxuICAvKiogZXJyb3IgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG4gIC8qKiB3YXJuICovXG4gIFdBUk4gPSBcIndhcm5cIixcbiAgLyoqIGlnbm9yZSAqL1xuICBJR05PUkUgPSBcImlnbm9yZVwiLFxufVxuXG4vKipcbiAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgZmllbGQgb2YgYGRldkVuZ2luZXMucnVudGltZWAgKGFuZCBgZW5naW5lcy5ydW50aW1lYCkgaW4gdGhlIHJvb3QgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IGEgZGlmZmVyZW50IGxvY2FsIGJlaGF2aW9yIHRoYW4gd2hhdCBpcyB3cml0dGVuIGluIHRoZSBtYW5pZmVzdCDigJQgZm9yIGluc3RhbmNlLCBmb3JjaW5nIHBucG0gdG8gZG93bmxvYWQgdGhlIGRlY2xhcmVkIHJ1bnRpbWUgZXZlbiB3aGVuIHRoZSBtYW5pZmVzdCBzZXRzIGBvbkZhaWw6IFwid2FyblwiYC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJ1bnRpbWVPbkZhaWwge1xuICAvKiogZG93bmxvYWQgKi9cbiAgRE9XTkxPQUQgPSBcImRvd25sb2FkXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgLyoqIHdhcm4gKi9cbiAgV0FSTiA9IFwid2FyblwiLFxuICAvKiogaWdub3JlICovXG4gIElHTk9SRSA9IFwiaWdub3JlXCIsXG59XG5cbi8qKlxuICogQWRkZWQgYSBuZXcgaG9pc3RpbmdMaW1pdHMgc2V0dGluZyBmb3IgYG5vZGVMaW5rZXI6IGhvaXN0ZWRgIGluc3RhbGxzLCBtaXJyb3JpbmcgeWFybidzIGBubUhvaXN0aW5nTGltaXRzYC4gSXQgYWNjZXB0cyBgbm9uZWAgKHRoZSBkZWZhdWx0IOKAlCBob2lzdCBhcyBmYXIgYXMgcG9zc2libGUpLCB3b3Jrc3BhY2VzIChob2lzdCBvbmx5IGFzIGZhciBhcyBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlKSwgb3IgZGVwZW5kZW5jaWVzIChob2lzdCBvbmx5IHVwIHRvIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UncyBkaXJlY3QgZGVwZW5kZW5jaWVzKS5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hSG9pc3RpbmdMaW1pdHNcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0cyB7XG4gIC8qKiBub2RlICovXG4gIE5PREUgPSBcIm5vZGVcIixcbiAgLyoqIHdvcmtzcGFjZXMgKi9cbiAgV09SS1NQQUNFUyA9IFwid29ya3NwYWNlc1wiLFxuICAvKiogZGVwZW5kZW5jaWVzICovXG4gIERFUEVOREVOQ0lFUyA9IFwiZGVwZW5kZW5jaWVzXCIsXG59XG5cbi8qKlxuICogQ2FwcyB0aGUgYnVtcCB0aGF0IGEgcmVsZWFzZSBmcm9tIHRoZSBjdXJyZW50IGNoZWNrb3V0IG1heSBhcHBseSwgYWZ0ZXIgZGVwZW5kZW50IHByb3BhZ2F0aW9uIGFuZCBmaXhlZC1ncm91cCByZXNvbHV0aW9uLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nTWF4QnVtcFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdNYXhCdW1wIHtcbiAgLyoqIHBhdGNoICovXG4gIFBBVENIID0gXCJwYXRjaFwiLFxuICAvKiogbWlub3IgKi9cbiAgTUlOT1IgPSBcIm1pbm9yXCIsXG4gIC8qKiBtYWpvciAqL1xuICBNQUpPUiA9IFwibWFqb3JcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3Mge1xuICAvKipcbiAgICogTGVhZCB3b3Jrc3BhY2UgcHJvamVjdCBuYW1lIG9yIGEgYC4vYC1wcmVmaXhlZCB3b3Jrc3BhY2UtcmVsYXRpdmUgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzI2xlYWRcbiAgICovXG4gIHJlYWRvbmx5IGxlYWQ6IHN0cmluZztcblxuICAvKipcbiAgICogUHJvamVjdCBzZWxlY3RvcnMgbWF0Y2hlZCBpbiBvcmRlciwgc3VwcG9ydGluZyBuYW1lIGdsb2JzLCBgLi9gLXByZWZpeGVkIGRpcmVjdG9yeSBnbG9icywgYW5kIGAhYC1wcmVmaXhlZCBuZWdhdGlvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MjcGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbGVhZCc6IG9iai5sZWFkLFxuICAgICdwYWNrYWdlcyc6IG9iai5wYWNrYWdlcz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBDb250cm9scyB3aGVyZSByZWxlYXNlIGNoYW5nZWxvZyBjb250ZW50IGlzIHN0b3JlZC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0NoYW5nZWxvZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0NoYW5nZWxvZyB7XG4gIC8qKlxuICAgKiBDaGFuZ2Vsb2cgc3RvcmFnZSBtb2RlLiBgcmVnaXN0cnlgIGNvbXBvc2VzIGNoYW5nZWxvZyBlbnRyaWVzIGF0IHB1Ymxpc2ggdGltZSwgd2hpbGUgYHJlcG9zaXRvcnlgIGNvbW1pdHMgQ0hBTkdFTE9HLm1kIGZpbGVzIGluIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0NoYW5nZWxvZyNzdG9yYWdlXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nU3RvcmFnZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnc3RvcmFnZSc6IG9iai5zdG9yYWdlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQ2hhbmdlbG9nIHN0b3JhZ2UgbW9kZS4gYHJlZ2lzdHJ5YCBjb21wb3NlcyBjaGFuZ2Vsb2cgZW50cmllcyBhdCBwdWJsaXNoIHRpbWUsIHdoaWxlIGByZXBvc2l0b3J5YCBjb21taXRzIENIQU5HRUxPRy5tZCBmaWxlcyBpbiBwYWNrYWdlcy5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0NoYW5nZWxvZ1N0b3JhZ2VcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nU3RvcmFnZSB7XG4gIC8qKiByZWdpc3RyeSAqL1xuICBSRUdJU1RSWSA9IFwicmVnaXN0cnlcIixcbiAgLyoqIHJlcG9zaXRvcnkgKi9cbiAgUkVQT1NJVE9SWSA9IFwicmVwb3NpdG9yeVwiLFxufVxuIl19
|
|
654
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvcG5wbS13b3Jrc3BhY2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW9yQ0Esd0VBaUxDO0FBZ0RELDhHQVNDO0FBeUNELG9GQVVDO0FBb0JELGdHQU9DO0FBa0NELGtGQVNDO0FBMkJELDhGQVFDO0FBOEJELG9IQVNDO0FBb0JELGdHQU9DO0FBNE5ELDRGQVlDO0FBbUhELHNHQVFDO0FBc0JELDhHQU9DOztBQTcwQkQ7OztHQUdHO0FBQ0gscUZBQXFGO0FBQ3JGLFNBQWdCLDhCQUE4QixDQUFDLEdBQXdDO0lBQ3JGLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLFNBQVMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5SixVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsUyxhQUFhLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDOUIsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtRQUNsRCxjQUFjLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDaEMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRCxXQUFXLEVBQUUsR0FB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SUFDZiwwRUFBcUIsQ0FBQTtJQUNyQixpQkFBaUI7SUFDakIsOEVBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUxXLGlEQUFpRCxpRUFBakQsaURBQWlELFFBSzVEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibm9kZSAuL3Byb2plbi5qc1wiLlxuLyoqXG4gKiBKU09OIHNjaGVtYSBmb3IgcG5wbS13b3Jrc3BhY2UueWFtbCBmaWxlc1xuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSB7XG4gIC8qKlxuICAgKiBXb3Jrc3BhY2UgcGFja2FnZSBwYXRocy4gR2xvYiBwYXR0ZXJucyBhcmUgc3VwcG9ydGVkXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIERlZmluZSBkZXBlbmRlbmN5IHZlcnNpb24gcmFuZ2VzIGFzIHJldXNhYmxlIGNvbnN0YW50cyxcbiAgICogZm9yIGxhdGVyIHJlZmVyZW5jZSBpbiBwYWNrYWdlLmpzb24gZmlsZXMuXG4gICAqIFRoaXMgKHNpbmd1bGFyKSBmaWVsZCBjcmVhdGVzIGEgY2F0YWxvZyBuYW1lZCBkZWZhdWx0LlxuICAgKlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhdGFsb2dcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2c/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgYXJiaXRyYXJpbHkgbmFtZWQgY2F0YWxvZ3NcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nc1xuICAgKi9cbiAgcmVhZG9ubHkgY2F0YWxvZ3M/OiB7IFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfTtcblxuICAvKipcbiAgICogQ29udHJvbGxpbmcgaWYgYW5kIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGFkZGVkIHRvIHRoZSBkZWZhdWx0IGNhdGFsb2dcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nTW9kZVxuICAgKi9cbiAgcmVhZG9ubHkgY2F0YWxvZ01vZGU/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNhdGFsb2dNb2RlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHBucG0gd2lsbCByZW1vdmUgdW51c2VkIGNhdGFsb2cgZW50cmllcyBkdXJpbmcgaW5zdGFsbGF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NsZWFudXBVbnVzZWRDYXRhbG9nc1xuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW51cFVudXNlZENhdGFsb2dzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgcG5wbSB3aWxsIHJlbW92ZSB1bnVzZWQgY2F0YWxvZyBlbnRyaWVzIGR1cmluZyBpbnN0YWxsYXRpb24uIGBjbGVhbnVwVW51c2VkQ2F0YWxvZ3NgIGlzIHRoZSBkZXByZWNhdGVkIHNwZWxsaW5nIG9mIHRoaXMgc2V0dGluZyBhbmQgY29udGludWVzIHRvIHdvcms7IHdoZW4gYm90aCBhcmUgc2V0LCBgY2F0YWxvZ1BydW5lYCB3aW5zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhdGFsb2dQcnVuZVxuICAgKi9cbiAgcmVhZG9ubHkgY2F0YWxvZ1BydW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBleGVjdXRlZCBkdXJpbmcgaW5zdGFsbGF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI29ubHlCdWlsdERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgb25seUJ1aWx0RGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gb3ZlcnJpZGUgYW55IGRlcGVuZGVuY3kgaW4gdGhlIGRlcGVuZGVuY3kgZ3JhcGguXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb3ZlcnJpZGVzXG4gICAqL1xuICByZWFkb25seSBvdmVycmlkZXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZXh0ZW5kIHRoZSBleGlzdGluZyBwYWNrYWdlIGRlZmluaXRpb25zIHdpdGggYWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlRXh0ZW5zaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUV4dGVuc2lvbnM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFBlci13b3Jrc3BhY2UtcHJvamVjdCBwbnBtIHNldHRpbmdzIHRoYXQgcmVwbGFjZSBwcm9qZWN0LXNwZWNpZmljIC5ucG1yYyBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlQ29uZmlnc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUNvbmZpZ3M/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGVlckRlcGVuZGVuY3lSdWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGVlckRlcGVuZGVuY3lSdWxlcz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcGVuZGVuY2llcyB0byBydW4gYnVpbGRzIGZvci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNuZXZlckJ1aWx0RGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBuZXZlckJ1aWx0RGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byB0cnVlLCBhbGwgYnVpbGQgc2NyaXB0cyAoZS5nLiBwcmVpbnN0YWxsLCBpbnN0YWxsLCBwb3N0aW5zdGFsbCkgZnJvbSBkZXBlbmRlbmNpZXMgd2lsbCBydW4gYXV0b21hdGljYWxseSwgd2l0aG91dCByZXF1aXJpbmcgYXBwcm92YWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGFuZ2Vyb3VzbHlBbGxvd0FsbEJ1aWxkc1xuICAgKi9cbiAgcmVhZG9ubHkgZGFuZ2Vyb3VzbHlBbGxvd0FsbEJ1aWxkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIEpTT04gZmlsZSB0aGF0IGxpc3RzIHRoZSBvbmx5IHBhY2thZ2VzIHBlcm1pdHRlZCB0byBydW4gaW5zdGFsbGF0aW9uIHNjcmlwdHMgZHVyaW5nIHRoZSBwbnBtIGluc3RhbGwgcHJvY2Vzcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNvbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlXG4gICAqL1xuICByZWFkb25seSBvbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGFja2FnZSBuYW1lcyB0aGF0IHNob3VsZCBub3QgYmUgYnVpbHQgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZWRCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZGVwcmVjYXRlZCB2ZXJzaW9ucyB0aGF0IHRoZSB3YXJuaW5ncyBhcmUgc3VwcHJlc3NlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBwYXRjaGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhdGNoZWREZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoZWREZXBlbmRlbmNpZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGluc3RhbGxhdGlvbiB3b24ndCBmYWlsIGlmIHNvbWUgb2YgdGhlIHBhdGNoZXMgZnJvbSB0aGUgXCJwYXRjaGVkRGVwZW5kZW5jaWVzXCIgZmllbGQgd2VyZSBub3QgYXBwbGllZC4gKFByZXZpb3VzbHkgbmFtZWQgXCJhbGxvd05vbkFwcGxpZWRQYXRjaGVzXCIpXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dVbnVzZWRQYXRjaGVzXG4gICAqL1xuICByZWFkb25seSBhbGxvd1VudXNlZFBhdGNoZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGluc3RhbGxhdGlvbiB3b24ndCBmYWlsIGlmIHNvbWUgb2YgdGhlIHBhdGNoZXMgZnJvbSB0aGUgXCJwYXRjaGVkRGVwZW5kZW5jaWVzXCIgZmllbGQgd2VyZSBub3QgYXBwbGllZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhbGxvd05vbkFwcGxpZWRQYXRjaGVzXG4gICAqL1xuICByZWFkb25seSBhbGxvd05vbkFwcGxpZWRQYXRjaGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmYXVsdCBpcyB1bmRlZmluZWQuIEVycm9ycyBvdXQgd2hlbiBhIHBhdGNoIHdpdGggYW4gZXhhY3QgdmVyc2lvbiBvciB2ZXJzaW9uIHJhbmdlIGZhaWxzLiBJZ25vcmVzIGZhaWx1cmVzIGZyb20gbmFtZS1vbmx5IHBhdGNoZXMuIFdoZW4gdHJ1ZSwgcHJpbnRzIGEgd2FybmluZyBpbnN0ZWFkIG9mIGZhaWxpbmcgd2hlbiBhbnkgcGF0Y2ggY2Fubm90IGJlIGFwcGxpZWQuIFdoZW4gZmFsc2UsIGVycm9ycyBvdXQgZm9yIGFueSBwYXRjaCBmYWlsdXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQuIEVycm9ycyBvdXQgd2hlbiBhIHBhdGNoIHdpdGggYW4gZXhhY3QgdmVyc2lvbiBvciB2ZXJzaW9uIHJhbmdlIGZhaWxzLiBJZ25vcmVzIGZhaWx1cmVzIGZyb20gbmFtZS1vbmx5IHBhdGNoZXMuIFdoZW4gdHJ1ZSwgcHJpbnRzIGEgd2FybmluZyBpbnN0ZWFkIG9mIGZhaWxpbmcgd2hlbiBhbnkgcGF0Y2ggY2Fubm90IGJlIGFwcGxpZWQuIFdoZW4gZmFsc2UsIGVycm9ycyBvdXQgZm9yIGFueSBwYXRjaCBmYWlsdXJlLlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVBhdGNoRmFpbHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVBhdGNoRmFpbHVyZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VwZGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGU7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXBkYXRlQ29uZmlnXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVDb25maWc/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZztcblxuICAvKipcbiAgICogQ29uZmlnIGRlcGVuZGVuY2llcyBhbGxvdyB5b3UgdG8gc2hhcmUgYW5kIGNlbnRyYWxpemUgY29uZmlndXJhdGlvbiBmaWxlcywgc2V0dGluZ3MsIGFuZCBob29rcyBhY3Jvc3MgbXVsdGlwbGUgcHJvamVjdHMuIFRoZXkgYXJlIGluc3RhbGxlZCBiZWZvcmUgYWxsIHJlZ3VsYXIgZGVwZW5kZW5jaWVzICgnZGVwZW5kZW5jaWVzJywgJ2RldkRlcGVuZGVuY2llcycsICdvcHRpb25hbERlcGVuZGVuY2llcycpLCBtYWtpbmcgdGhlbSBpZGVhbCBmb3Igc2V0dGluZyB1cCBjdXN0b20gaG9va3MsIHBhdGNoZXMsIGFuZCBjYXRhbG9nIGVudHJpZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY29uZmlnRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBjb25maWdEZXBlbmRlbmNpZXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXVkaXRcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdDtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhdWRpdENvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgYXVkaXRDb25maWc/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2Ygc2NyaXB0cyB0aGF0IG11c3QgZXhpc3QgaW4gZWFjaCBwcm9qZWN0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlcXVpcmVkU2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWRTY3JpcHRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhcmNoaXRlY3R1cmVzIGZvciB3aGljaCB5b3UnZCBsaWtlIHRvIGluc3RhbGwgb3B0aW9uYWwgZGVwZW5kZW5jaWVzLCBldmVuIGlmIHRoZXkgZG9uJ3QgbWF0Y2ggdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgc3lzdGVtIHJ1bm5pbmcgdGhlIGluc3RhbGwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3VwcG9ydGVkQXJjaGl0ZWN0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG9wdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IHRoZSBpbnN0YWxsIHNob3VsZCBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlZE9wdGlvbmFsRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZXhlY3V0aW9uRW52XG4gICAqL1xuICByZWFkb25seSBleGVjdXRpb25FbnY/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBhbGwgZGVwZW5kZW5jaWVzIGFyZSBob2lzdGVkIHRvIG5vZGVfbW9kdWxlcy8ucG5wbS9ub2RlX21vZHVsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RcbiAgICovXG4gIHJlYWRvbmx5IGhvaXN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2VzIGFyZSBzeW1saW5rZWQgdG8gZWl0aGVyIDx3b3Jrc3BhY2Vfcm9vdD4vbm9kZV9tb2R1bGVzLy5wbnBtL25vZGVfbW9kdWxlcyBvciB0byA8d29ya3NwYWNlX3Jvb3Q+L25vZGVfbW9kdWxlcyBkZXBlbmRpbmcgb24gb3RoZXIgaG9pc3Rpbmcgc2V0dGluZ3MgKGhvaXN0UGF0dGVybiBhbmQgcHVibGljSG9pc3RQYXR0ZXJuKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNob2lzdFdvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBob2lzdFdvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGVsbHMgcG5wbSB3aGljaCBwYWNrYWdlcyBzaG91bGQgYmUgaG9pc3RlZCB0byBub2RlX21vZHVsZXMvLnBucG0vbm9kZV9tb2R1bGVzXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RQYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSBob2lzdFBhdHRlcm4/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVW5saWtlIGhvaXN0UGF0dGVybiwgd2hpY2ggaG9pc3RzIGRlcGVuZGVuY2llcyB0byBhIGhpZGRlbiBtb2R1bGVzIGRpcmVjdG9yeSBpbnNpZGUgdGhlIHZpcnR1YWwgc3RvcmUsIHB1YmxpY0hvaXN0UGF0dGVybiBob2lzdHMgZGVwZW5kZW5jaWVzIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIHRvIHRoZSByb290IG1vZHVsZXMgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3B1YmxpY0hvaXN0UGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSG9pc3RQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIHBucG0gY3JlYXRlcyBhIHNlbWlzdHJpY3Qgbm9kZV9tb2R1bGVzLCBtZWFuaW5nIGRlcGVuZGVuY2llcyBoYXZlIGFjY2VzcyB0byB1bmRlY2xhcmVkIGRlcGVuZGVuY2llcyBidXQgbW9kdWxlcyBvdXRzaWRlIG9mIG5vZGVfbW9kdWxlcyBkbyBub3QuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2hhbWVmdWxseUhvaXN0XG4gICAqL1xuICByZWFkb25seSBzaGFtZWZ1bGx5SG9pc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGRlcGVuZGVuY2llcyB3aWxsIGJlIGluc3RhbGxlZCAoaW5zdGVhZCBvZiBub2RlX21vZHVsZXMpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21vZHVsZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZXNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hhdCBsaW5rZXIgc2hvdWxkIGJlIHVzZWQgZm9yIGluc3RhbGxpbmcgTm9kZSBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlTGlua2VyXG4gICAqL1xuICByZWFkb25seSBub2RlTGlua2VyPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gaW5qZWN0cyB0aGUgZ2VuZXJhdGVkIG5vZGVfbW9kdWxlcy8ucGFja2FnZS1tYXAuanNvbiBpbnRvIHBucG0tbWFuYWdlZCBOb2RlLmpzIHNjcmlwdCBlbnZpcm9ubWVudHMgYnkgYWRkaW5nIE5vZGUncyAtLWV4cGVyaW1lbnRhbC1wYWNrYWdlLW1hcCBvcHRpb24gdG8gTk9ERV9PUFRJT05TLiBzZWUgaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzL25vZGUtbW9kdWxlcyNub2RlZXhwZXJpbWVudGFscGFja2FnZW1hcFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVFeHBlcmltZW50YWxQYWNrYWdlTWFwXG4gICAqL1xuICByZWFkb25seSBub2RlRXhwZXJpbWVudGFsUGFja2FnZU1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGhvdyBub2RlX21vZHVsZXMvLnBhY2thZ2UtbWFwLmpzb24gaXMgZ2VuZXJhdGVkLiBzdGFuZGFyZCAtIG9ubHkgZGVjbGFyZWQgZGVwZW5kZW5jaWVzIGFyZSBhdmFpbGFibGUgdGhyb3VnaCB0aGUgcGFja2FnZSBtYXAuIGxvb3NlIC0gYWxzbyBtYXBzIHBhY2thZ2VzIHRoYXQgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBpbnN0YWxsZWQgbm9kZV9tb2R1bGVzIGxheW91dCwgd2hpY2ggY2FuIGFsbG93IHVuZGVjbGFyZWQgaG9pc3RlZCBkZXBlbmRlbmNpZXMgdG8gcmVzb2x2ZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlUGFja2FnZU1hcFR5cGVcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVQYWNrYWdlTWFwVHlwZT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZVBhY2thZ2VNYXBUeXBlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHN5bWxpbmsgaXMgc2V0IHRvIGZhbHNlLCBwbnBtIGNyZWF0ZXMgYSB2aXJ0dWFsIHN0b3JlIGRpcmVjdG9yeSB3aXRob3V0IGFueSBzeW1saW5rcy4gSXQgaXMgYSB1c2VmdWwgc2V0dGluZyB0b2dldGhlciB3aXRoIG5vZGVMaW5rZXI9cG5wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N5bWxpbmtcbiAgICovXG4gIHJlYWRvbmx5IHN5bWxpbms/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGZhbHNlLCBwbnBtIHdpbGwgbm90IHdyaXRlIGFueSBmaWxlcyB0byB0aGUgbW9kdWxlcyBkaXJlY3RvcnkgKG5vZGVfbW9kdWxlcykuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW5hYmxlTW9kdWxlc0RpclxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlTW9kdWxlc0Rpcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2l0aCBsaW5rcyB0byB0aGUgc3RvcmUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmlydHVhbFN0b3JlRGlyXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1heGltdW0gYWxsb3dlZCBsZW5ndGggb2YgZGlyZWN0b3J5IG5hbWVzIGluc2lkZSB0aGUgdmlydHVhbCBzdG9yZSBkaXJlY3RvcnkgKG5vZGVfbW9kdWxlcy8ucG5wbSkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVEaXJNYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hlcmUgdGhlIHZpcnR1YWwgc3RvcmUgaXMgbG9jYXRlZC4gV2hlbiBzZXQgdG8gcHJvamVjdCwgYSBzZXBhcmF0ZSB2aXJ0dWFsIHN0b3JlIGlzIGNyZWF0ZWQgaW4gZWFjaCBwcm9qZWN0J3Mgbm9kZV9tb2R1bGVzLy5wbnBtLiBXaGVuIHNldCB0byBnbG9iYWwsIGEgc2luZ2xlIHN0b3JlIGlzIHNoYXJlZCBieSBldmVyeSBwcm9qZWN0IG9uIHRoZSBtYWNoaW5lLCB3aXRoIGVhY2ggcHJvamVjdCdzIG5vZGVfbW9kdWxlcyBob2xkaW5nIG9ubHkgc3ltbGlua3MgaW50byBpdC4gQWRkZWQgaW4gcG5wbSB2MTEuMjMuMC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2aXJ0dWFsU3RvcmVUeXBlXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVUeXBlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWaXJ0dWFsU3RvcmVUeXBlO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgd2F5IHBhY2thZ2VzIGFyZSBpbXBvcnRlZCBmcm9tIHRoZSBzdG9yZSAoaWYgeW91IHdhbnQgdG8gZGlzYWJsZSBzeW1saW5rcyBpbnNpZGUgbm9kZV9tb2R1bGVzLCB0aGVuIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgbm9kZUxpbmtlciBzZXR0aW5nLCBub3QgdGhpcyBvbmUpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VJbXBvcnRNZXRob2RcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VJbXBvcnRNZXRob2Q/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2Q7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggb3JwaGFuIHBhY2thZ2VzIGZyb20gdGhlIG1vZHVsZXMgZGlyZWN0b3J5IHNob3VsZCBiZSByZW1vdmVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21vZHVsZXNDYWNoZU1heEFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc0NhY2hlTWF4QWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpbiBtaW51dGVzIGFmdGVyIHdoaWNoIGRseCBjYWNoZSBleHBpcmVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RseENhY2hlTWF4QWdlXG4gICAqL1xuICByZWFkb25seSBkbHhDYWNoZU1heEFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIGFsbCB0aGUgcGFja2FnZXMgYXJlIHNhdmVkIG9uIHRoZSBkaXNrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0b3JlRGlyXG4gICAqL1xuICByZWFkb25seSBzdG9yZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgaWYgYSBmaWxlIGluIHRoZSBzdG9yZSBoYXMgYmVlbiBtb2RpZmllZCwgdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGlzIGNoZWNrZWQgYmVmb3JlIGxpbmtpbmcgaXQgdG8gYSBwcm9qZWN0J3Mgbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZlcmlmeVN0b3JlSW50ZWdyaXR5XG4gICAqL1xuICByZWFkb25seSB2ZXJpZnlTdG9yZUludGVncml0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQuIE9ubHkgYWxsb3dzIGluc3RhbGxhdGlvbiB3aXRoIGEgc3RvcmUgc2VydmVyLiBJZiBubyBzdG9yZSBzZXJ2ZXIgaXMgcnVubmluZywgaW5zdGFsbGF0aW9uIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VSdW5uaW5nU3RvcmVTZXJ2ZXJcbiAgICovXG4gIHJlYWRvbmx5IHVzZVJ1bm5pbmdTdG9yZVNlcnZlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1ha2VzIHBucG0gaW5zdGFsbCB3b3JrIGFnYWluc3QgYSByZWFkLW9ubHkgcGFja2FnZSBzdG9yZSAoc3VjaCBhcyBhIE5peCBzdG9yZSBvciBPQ0kgaW1hZ2UgbGF5ZXIpLiBXaGVuIGVuYWJsZWQsIHBucG0gb3BlbnMgdGhlIHN0b3JlJ3MgU1FMaXRlIGRhdGFiYXNlIGluIGltbXV0YWJsZSBtb2RlIGFuZCBuZXZlciB3cml0ZXMgdG8gdGhlIHN0b3JlLiBXb3JrcyBiZXN0IHRvZ2V0aGVyIHdpdGggLS1vZmZsaW5lIGFuZCAtLWZyb3plbi1sb2NrZmlsZTsgaW5jb21wYXRpYmxlIHdpdGggLS1mb3JjZS4gQWRkZWQgaW4gcG5wbSB2MTEuNy4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Zyb3plblN0b3JlXG4gICAqL1xuICByZWFkb25seSBmcm96ZW5TdG9yZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNvbWUgcmVnaXN0cmllcyBhbGxvdyB0aGUgZXhhY3Qgc2FtZSBjb250ZW50IHRvIGJlIHB1Ymxpc2hlZCB1bmRlciBkaWZmZXJlbnQgcGFja2FnZSBuYW1lcyBhbmQvb3IgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0U3RvcmVQa2dDb250ZW50Q2hlY2tcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFN0b3JlUGtnQ29udGVudENoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBub2RlX21vZHVsZXMgY29udGFpbnMgb25seSBzeW1saW5rcyB0byBhIGNlbnRyYWwgdmlydHVhbCBzdG9yZSwgcmF0aGVyIHRoYW4gdG8gbm9kZV9tb2R1bGVzLy5wbnBtLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZUdsb2JhbFZpcnR1YWxTdG9yZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHBucG0gd29uJ3QgcmVhZCBvciBnZW5lcmF0ZSBhIHBucG0tbG9jay55YW1sIGZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSBhbmQgdGhlIGF2YWlsYWJsZSBwbnBtLWxvY2sueWFtbCBzYXRpc2ZpZXMgdGhlIHBhY2thZ2UuanNvbiBkZXBlbmRlbmNpZXMgZGlyZWN0aXZlLCBhIGhlYWRsZXNzIGluc3RhbGxhdGlvbiBpcyBwZXJmb3JtZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyRnJvemVuTG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlckZyb3plbkxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHRoZSBmdWxsIFVSTCB0byB0aGUgcGFja2FnZSdzIHRhcmJhbGwgdG8gZXZlcnkgZW50cnkgaW4gcG5wbS1sb2NrLnlhbWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybFxuICAgKi9cbiAgcmVhZG9ubHkgbG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHRoZSBnZW5lcmF0ZWQgbG9ja2ZpbGUgbmFtZSBhZnRlciBpbnN0YWxsYXRpb24gd2lsbCBiZSBuYW1lZCBiYXNlZCBvbiB0aGUgY3VycmVudCBicmFuY2ggbmFtZSB0byBjb21wbGV0ZWx5IGF2b2lkIG1lcmdlIGNvbmZsaWN0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnaXRCcmFuY2hMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoTG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIGNvbmZpZ3VyYXRpb24gbWF0Y2hlcyB0aGUgY3VycmVudCBicmFuY2ggbmFtZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byBtZXJnZSBhbGwgZ2l0IGJyYW5jaCBsb2NrZmlsZSBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm5cbiAgICovXG4gIHJlYWRvbmx5IG1lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVybj86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBNYXggbGVuZ3RoIG9mIHRoZSBwZWVyIElEcyBzdWZmaXggYWRkZWQgdG8gZGVwZW5kZW5jeSBrZXlzIGluIHRoZSBsb2NrZmlsZS4gSWYgdGhlIHN1ZmZpeCBpcyBsb25nZXIsIGl0IGlzIHJlcGxhY2VkIHdpdGggYSBoYXNoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BlZXJzU3VmZml4TWF4TGVuZ3RoXG4gICAqL1xuICByZWFkb25seSBwZWVyc1N1ZmZpeE1heExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJhc2UgVVJMIG9mIHRoZSBucG0gcGFja2FnZSByZWdpc3RyeSAodHJhaWxpbmcgc2xhc2ggaW5jbHVkZWQpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSByZWdpc3RyeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENlcnRpZmljYXRlIEF1dGhvcml0eSBzaWduaW5nIGNlcnRpZmljYXRlIHRoYXQgaXMgdHJ1c3RlZCBmb3IgU1NMIGNvbm5lY3Rpb25zIHRvIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYVxuICAgKi9cbiAgcmVhZG9ubHkgY2E/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyBvbmUgb3IgbXVsdGlwbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IHNpZ25pbmcgY2VydGlmaWNhdGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FmaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCBjZXJ0aWZpY2F0ZSB0byBwYXNzIHdoZW4gYWNjZXNzaW5nIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjZXJ0XG4gICAqL1xuICByZWFkb25seSBjZXJ0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCBrZXkgdG8gcGFzcyB3aGVuIGFjY2Vzc2luZyB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZmV0Y2hpbmcgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIEdpdCByZXBvc2l0b3JpZXMsIGlmIHRoZSBob3N0IGlzIGxpc3RlZCBpbiB0aGlzIHNldHRpbmcsIHBucG0gd2lsbCB1c2Ugc2hhbGxvdyBjbG9uaW5nIHRvIGZldGNoIG9ubHkgdGhlIG5lZWRlZCBjb21taXQsIG5vdCBhbGwgdGhlIGhpc3RvcnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2l0U2hhbGxvd0hvc3RzXG4gICAqL1xuICByZWFkb25seSBnaXRTaGFsbG93SG9zdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBwcm94eSB0byB1c2UgZm9yIG91dGdvaW5nIEhUVFBTIHJlcXVlc3RzLiBJZiB0aGUgSFRUUFNfUFJPWFksIGh0dHBzX3Byb3h5LCBIVFRQX1BST1hZIG9yIGh0dHBfcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBzZXQsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHVzZWQgaW5zdGVhZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNodHRwc1Byb3h5XG4gICAqL1xuICByZWFkb25seSBodHRwc1Byb3h5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHByb3h5IHRvIHVzZSBmb3Igb3V0Z29pbmcgSFRUUCByZXF1ZXN0cy4gSWYgdGhlIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgcHJveHkgc2V0dGluZ3Mgd2lsbCBiZSBob25vcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHJlcXVlc3QgbGlicmFyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNodHRwUHJveHlcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBQcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogbnBtJ3MgbGVnYWN5IHByb3h5IHNldHRpbmcsIHVzZWQgYXMgdGhlIGZhbGxiYWNrIGZvciBib3RoIGh0dHBzUHJveHkgYW5kIGh0dHBQcm94eS4gSWYgdGhlIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgcHJveHkgc2V0dGluZ3Mgd2lsbCBiZSBob25vcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHJlcXVlc3QgbGlicmFyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUCBhZGRyZXNzIG9mIHRoZSBsb2NhbCBpbnRlcmZhY2UgdG8gdXNlIHdoZW4gbWFraW5nIGNvbm5lY3Rpb25zIHRvIHRoZSBucG0gcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9jYWxBZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBsb2NhbEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byB1c2UgcGVyIG9yaWdpbiAocHJvdG9jb2wvaG9zdC9wb3J0IGNvbWJpbmF0aW9uKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtYXhzb2NrZXRzXG4gICAqL1xuICByZWFkb25seSBtYXhzb2NrZXRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2YgZG9tYWluIGV4dGVuc2lvbnMgdGhhdCBhIHByb3h5IHNob3VsZCBub3QgYmUgdXNlZCBmb3IuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9Qcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgbm9Qcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZG8gU1NMIGtleSB2YWxpZGF0aW9uIHdoZW4gbWFraW5nIHJlcXVlc3RzIHRvIHRoZSByZWdpc3RyeSB2aWEgSFRUUFMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0U3NsXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RTc2w/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YgSFRUUChTKSByZXF1ZXN0cyB0byBwcm9jZXNzIHNpbXVsdGFuZW91c2x5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25ldHdvcmtDb25jdXJyZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0NvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgbWFueSB0aW1lcyB0byByZXRyeSBpZiBwbnBtIGZhaWxzIHRvIGZldGNoIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyaWVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwb25lbnRpYWwgZmFjdG9yIGZvciByZXRyeSBiYWNrb2ZmLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cnlGYWN0b3JcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoUmV0cnlGYWN0b3I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIChiYXNlKSB0aW1lb3V0IGZvciByZXRyeWluZyByZXF1ZXN0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5TWludGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeU1pbnRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGZhbGxiYWNrIHRpbWVvdXQgdG8gZW5zdXJlIHRoZSByZXRyeSBmYWN0b3IgZG9lcyBub3QgbWFrZSByZXF1ZXN0cyB0b28gbG9uZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5TWF4dGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeU1heHRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgZm9yIEhUVFAgcmVxdWVzdHMgdG8gY29tcGxldGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hUaW1lb3V0XG4gICAqL1xuICByZWFkb25seSBmZXRjaFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgd2FybmluZyBtZXNzYWdlIGlzIGRpc3BsYXllZCBpZiBhIG1ldGFkYXRhIHJlcXVlc3QgdG8gdGhlIHJlZ2lzdHJ5IHRha2VzIGxvbmdlciB0aGFuIHRoZSBzcGVjaWZpZWQgdGhyZXNob2xkIChpbiBtaWxsaXNlY29uZHMpLiBBZGRlZCBpbiBwbnBtIHYxMC4xOC4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoV2FyblRpbWVvdXRNc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hXYXJuVGltZW91dE1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHdhcm5pbmcgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgaWYgdGhlIGRvd25sb2FkIHNwZWVkIG9mIGEgdGFyYmFsbCBmcm9tIHRoZSByZWdpc3RyeSBmYWxscyBiZWxvdyB0aGUgc3BlY2lmaWVkIHRocmVzaG9sZCAoaW4gS2lCL3MpLiBBZGRlZCBpbiBwbnBtIHYxMC4xOC4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoTWluU3BlZWRLaUJwc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hNaW5TcGVlZEtpQnBzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGFueSBtaXNzaW5nIG5vbi1vcHRpb25hbCBwZWVyIGRlcGVuZGVuY2llcyBhcmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXV0b0luc3RhbGxQZWVyc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0luc3RhbGxQZWVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBzZXR0aW5nIGlzIHNldCB0byB0cnVlLCBwYWNrYWdlcyB3aXRoIHBlZXIgZGVwZW5kZW5jaWVzIHdpbGwgYmUgZGVkdXBsaWNhdGVkIGFmdGVyIHBlZXJzIHJlc29sdXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlUGVlckRlcGVuZGVudHNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZVBlZXJEZXBlbmRlbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBjb21tYW5kcyB3aWxsIGZhaWwgaWYgdGhlcmUgaXMgYSBtaXNzaW5nIG9yIGludmFsaWQgcGVlciBkZXBlbmRlbmN5IGluIHRoZSB0cmVlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0cmljdFBlZXJEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFBlZXJEZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGRlcGVuZGVuY2llcyBvZiB0aGUgcm9vdCB3b3Jrc3BhY2UgcHJvamVjdCBhcmUgdXNlZCB0byByZXNvbHZlIHBlZXIgZGVwZW5kZW5jaWVzIG9mIGFueSBwcm9qZWN0cyBpbiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Jlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290XG4gICAqL1xuICByZWFkb25seSByZXNvbHZlUGVlcnNGcm9tV29ya3NwYWNlUm9vdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGNvbG9ycyBpbiB0aGUgb3V0cHV0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NvbG9yXG4gICAqL1xuICByZWFkb25seSBjb2xvcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ29sb3I7XG5cbiAgLyoqXG4gICAqIEFueSBsb2dzIGF0IG9yIGhpZ2hlciB0aGFuIHRoZSBnaXZlbiBsZXZlbCB3aWxsIGJlIHNob3duLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2xvZ2xldmVsXG4gICAqL1xuICByZWFkb25seSBsb2dsZXZlbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWw7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gY3VzdG9taXplIHRoZSBvdXRwdXQgc3R5bGUgb2YgdGhlIGxvZ3MuXG4gICAqIGh0dHBzOi8vcG5wbS5pby9jbGkvaW5zdGFsbCMtLXJlcG9ydGVybmFtZVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlcG9ydGVyXG4gICAqL1xuICByZWFkb25seSByZXBvcnRlcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVwb3J0ZXI7XG5cbiAgLyoqXG4gICAqIEV4cGVyaW1lbnRhbCBvcHRpb24gdGhhdCBlbmFibGVzIGJldGEgZmVhdHVyZXMgb2YgdGhlIENMSS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VCZXRhQ2xpXG4gICAqL1xuICByZWFkb25seSB1c2VCZXRhQ2xpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCB0aGUgcHJpbWFyeSBiZWhhdmlvdXIgb2YgcG5wbSBpbnN0YWxsIGJlY29tZXMgdGhhdCBvZiBwbnBtIGluc3RhbGwgLXIsIG1lYW5pbmcgdGhlIGluc3RhbGwgaXMgcGVyZm9ybWVkIG9uIGFsbCB3b3Jrc3BhY2Ugb3Igc3ViZGlyZWN0b3J5IHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlY3Vyc2l2ZUluc3RhbGxcbiAgICovXG4gIHJlYWRvbmx5IHJlY3Vyc2l2ZUluc3RhbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGVuYWJsZWQsIHBucG0gd2lsbCBub3QgaW5zdGFsbCBhbnkgcGFja2FnZSB0aGF0IGNsYWltcyB0byBub3QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IE5vZGUgdmVyc2lvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbmdpbmVTdHJpY3RcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZVN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgbnBtIGJpbmFyeSB0aGF0IHBucG0gdXNlcyBmb3Igc29tZSBhY3Rpb25zLCBsaWtlIHB1Ymxpc2hpbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbnBtUGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgbnBtUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBzZXR0aW5nIGlzIGRpc2FibGVkLCBwbnBtIHdpbGwgbm90IGZhaWwgaWYgYSBkaWZmZXJlbnQgcGFja2FnZSBtYW5hZ2VyIGlzIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLiBXaGVuIGVuYWJsZWQsIG9ubHkgdGhlIHBhY2thZ2UgbmFtZSBpcyBjaGVja2VkIChzaW5jZSBwbnBtIHY5LjIuMCksIHNvIHlvdSBjYW4gc3RpbGwgcnVuIGFueSB2ZXJzaW9uIG9mIHBucG0gcmVnYXJkbGVzcyBvZiB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VNYW5hZ2VyU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlclN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgcG5wbSB3aWxsIGZhaWwgaWYgaXRzIHZlcnNpb24gZG9lc24ndCBleGFjdGx5IG1hdGNoIHRoZSB2ZXJzaW9uIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBwbnBtIHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCBhbmQgcnVuIHRoZSB2ZXJzaW9uIG9mIHBucG0gc3BlY2lmaWVkIGluIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZCBvZiBwYWNrYWdlLmpzb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBleGVjdXRlIGFueSBzY3JpcHRzIGRlZmluZWQgaW4gdGhlIHByb2plY3QgcGFja2FnZS5qc29uIGFuZCBpdHMgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZXhlY3V0ZSBhbnkgc2NyaXB0cyBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLiBTY3JpcHRzIG9mIHRoZSBwcm9qZWN0cyBhcmUgZXhlY3V0ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlRGVwU2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlRGVwU2NyaXB0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGlsZCBwcm9jZXNzZXMgdG8gYWxsb2NhdGUgc2ltdWx0YW5lb3VzbHkgdG8gYnVpbGQgbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NoaWxkQ29uY3VycmVuY3lcbiAgICovXG4gIHJlYWRvbmx5IGNoaWxkQ29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFVzZSBhbmQgY2FjaGUgdGhlIHJlc3VsdHMgb2YgKHByZS9wb3N0KWluc3RhbGwgaG9va3MuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2lkZUVmZmVjdHNDYWNoZVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZUVmZmVjdHNDYWNoZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9ubHkgdXNlIHRoZSBzaWRlIGVmZmVjdHMgY2FjaGUgaWYgcHJlc2VudCwgZG8gbm90IGNyZWF0ZSBpdCBmb3IgbmV3IHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NpZGVFZmZlY3RzQ2FjaGVSZWFkb25seVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZUVmZmVjdHNDYWNoZVJlYWRvbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gZW5hYmxlIFVJRC9HSUQgc3dpdGNoaW5nIHdoZW4gcnVubmluZyBwYWNrYWdlIHNjcmlwdHMuIElmIHNldCBleHBsaWNpdGx5IHRvIGZhbHNlLCB0aGVuIGluc3RhbGxpbmcgYXMgYSBub24tcm9vdCB1c2VyIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1bnNhZmVQZXJtXG4gICAqL1xuICByZWFkb25seSB1bnNhZmVQZXJtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyB0byBwYXNzIHRocm91Z2ggdG8gTm9kZS5qcyB2aWEgdGhlIE5PREVfT1BUSU9OUyBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlT3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZU9wdGlvbnM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBhbGxvd3MgdGhlIGNoZWNraW5nIG9mIHRoZSBzdGF0ZSBvZiBkZXBlbmRlbmNpZXMgYmVmb3JlIHJ1bm5pbmcgc2NyaXB0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2ZXJpZnlEZXBzQmVmb3JlUnVuXG4gICAqL1xuICByZWFkb25seSB2ZXJpZnlEZXBzQmVmb3JlUnVuPzogYW55O1xuXG4gIC8qKlxuICAgKiBXaGVuIHN0cmljdERlcEJ1aWxkcyBpcyBlbmFibGVkLCB0aGUgaW5zdGFsbGF0aW9uIHdpbGwgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGlmIGFueSBkZXBlbmRlbmNpZXMgaGF2ZSB1bnJldmlld2VkIGJ1aWxkIHNjcmlwdHMgKGFrYSBwb3N0aW5zdGFsbCBzY3JpcHRzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3REZXBCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdERlcEJ1aWxkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGljaCBleGFjdCBOb2RlLmpzIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBwcm9qZWN0J3MgcnVudGltZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VOb2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdXNlTm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlLmpzIHZlcnNpb24gdG8gdXNlIHdoZW4gY2hlY2tpbmcgYSBwYWNrYWdlJ3MgZW5naW5lcyBzZXR0aW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbGx5IGF2YWlsYWJsZSBwYWNrYWdlcyBhcmUgbGlua2VkIHRvIG5vZGVfbW9kdWxlcyBpbnN0ZWFkIG9mIGJlaW5nIGRvd25sb2FkZWQgZnJvbSB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbGlua1dvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBsaW5rV29ya3NwYWNlUGFja2FnZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcztcblxuICAvKipcbiAgICogRW5hYmxlcyBoYXJkLWxpbmtpbmcgb2YgYWxsIGxvY2FsIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMgaW5zdGVhZCBvZiBzeW1saW5raW5nIHRoZW0uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaW5qZWN0V29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IGluamVjdFdvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5qZWN0ZWQgd29ya3NwYWNlIGRlcGVuZGVuY2llcyBhcmUgY29sbGVjdGlvbnMgb2YgaGFyZGxpbmtzLCB3aGljaCBkb24ndCBhZGQgb3IgcmVtb3ZlIHRoZSBmaWxlcyB3aGVuIHRoZWlyIHNvdXJjZXMgY2hhbmdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IHN5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbCBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIHByZWZlcnJlZCBvdmVyIHBhY2thZ2VzIGZyb20gdGhlIHJlZ2lzdHJ5LCBldmVuIGlmIHRoZXJlIGlzIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSBpbiB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyV29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlcldvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBwbnBtIGNyZWF0ZXMgYSBzaW5nbGUgcG5wbS1sb2NrLnlhbWwgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NoYXJlZFdvcmtzcGFjZUxvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIGFkZGVkIHRvIHBhY2thZ2UuanNvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlV29ya3NwYWNlUHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IHNhdmVXb3Jrc3BhY2VQcm90b2NvbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBXaGVuIGV4ZWN1dGluZyBjb21tYW5kcyByZWN1cnNpdmVseSBpbiBhIHdvcmtzcGFjZSwgZXhlY3V0ZSB0aGVtIG9uIHRoZSByb290IHdvcmtzcGFjZSBwcm9qZWN0IGFzIHdlbGwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaW5jbHVkZVdvcmtzcGFjZVJvb3RcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVXb3Jrc3BhY2VSb290PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgbm8gd29ya3NwYWNlIGN5Y2xlIHdhcm5pbmdzIHdpbGwgYmUgcHJpbnRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVXb3Jrc3BhY2VDeWNsZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVdvcmtzcGFjZUN5Y2xlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGluZyBhIG5ldyBkZXBlbmRlbmN5IHRvIHRoZSByb290IHdvcmtzcGFjZSBwYWNrYWdlIGZhaWxzLCB1bmxlc3MgdGhlIC0taWdub3JlLXdvcmtzcGFjZS1yb290LWNoZWNrIG9yIC13IGZsYWcgaXMgdXNlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2tcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVdvcmtzcGFjZVJvb3RDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwgaWYgdGhlIHdvcmtzcGFjZSBoYXMgY3ljbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Rpc2FsbG93V29ya3NwYWNlQ3ljbGVzXG4gICAqL1xuICByZWFkb25seSBkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFza3MgdG8gcnVuIHNpbXVsdGFuZW91c2x5LiBGb3IgdW5saW1pdGVkIGNvbmN1cnJlbmN5IHVzZSBJbmZpbml0eS4gWW91IGNhbiBzZXQgdGhlIHZhbHVlIHRvIDw9IDAgYW5kIGl0IHdpbGwgdXNlIGFtb3VudCBvZiBDUFUgY29yZXMgb2YgdGhlIGhvc3QgbWludXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBwcm92aWRlZCBudW1iZXIgYXM6IG1heCgxLCAobnVtYmVyIG9mIGNvcmVzKSAtIGFicyh3b3Jrc3BhY2VDb25jdXJyZW5jeSkpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3dvcmtzcGFjZUNvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VDb25jdXJyZW5jeT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgcG5wbSB3aWxsIGZhaWwgaWYgbm8gcGFja2FnZXMgbWF0Y2ggdGhlIGZpbHRlclxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZhaWxJZk5vTWF0Y2hcbiAgICovXG4gIHJlYWRvbmx5IGZhaWxJZk5vTWF0Y2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBwbnBtIGRlcGxveSB3aWxsIHRyeSBjcmVhdGluZyBhIGRlZGljYXRlZCBsb2NrZmlsZSBmcm9tIGEgc2hhcmVkIGxvY2tmaWxlIGZvciBkZXBsb3ltZW50LiBJZiB0aGlzIHNldHRpbmcgaXMgc2V0IHRvIHRydWUsIHRoZSBsZWdhY3kgZGVwbG95IGJlaGF2aW9yIHdpbGwgYmUgdXNlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmb3JjZUxlZ2FjeURlcGxveVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VMZWdhY3lEZXBsb3k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgaG93IHZlcnNpb25zIG9mIHBhY2thZ2VzIGluc3RhbGxlZCB0byBhIHBhY2thZ2UuanNvbiBmaWxlIGdldCBwcmVmaXhlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlUHJlZml4XG4gICAqL1xuICByZWFkb25seSBzYXZlUHJlZml4PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4O1xuXG4gIC8qKlxuICAgKiBJZiB5b3UgcG5wbSBhZGQgYSBwYWNrYWdlIGFuZCB5b3UgZG9uJ3QgcHJvdmlkZSBhIHNwZWNpZmljIHZlcnNpb24sIHRoZW4gaXQgd2lsbCBpbnN0YWxsIHRoZSBwYWNrYWdlIGF0IHRoZSB2ZXJzaW9uIHJlZ2lzdGVyZWQgdW5kZXIgdGhlIHRhZyBmcm9tIHRoaXMgc2V0dGluZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0YWdcbiAgICovXG4gIHJlYWRvbmx5IHRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmeSBhIGN1c3RvbSBkaXJlY3RvcnkgdG8gc3RvcmUgZ2xvYmFsIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbERpclxuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2V0IHRoZSB0YXJnZXQgZGlyZWN0b3J5IGZvciB0aGUgYmluIGZpbGVzIG9mIGdsb2JhbGx5IGluc3RhbGxlZCBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnbG9iYWxCaW5EaXJcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbEJpbkRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hpY2ggZ2xvYmFsbHkgaW5zdGFsbGVkIHBhY2thZ2VzIGdldCBwcm9qZWN0LWF3YXJlIHNoaW1zLCB3aGljaCBhcmUgZ2xvYmFsIGNvbW1hbmRzIHRoYXQgcnVuIHRoZSB2ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCBwcm9qZWN0IGluc3RlYWQgb2YgdGhlIGdsb2JhbGx5IGluc3RhbGxlZCBvbmUuIEEgYm9vbGVhbiBkaXNhYmxlcyAoZmFsc2UpIG9yIHJlc2V0cyB0byB0aGUgZGVmYXVsdHMgKHRydWUpLCB3aGlsZSBhbiBvYmplY3QgbWFwcyBwYWNrYWdlIG5hbWVzIHRvIGEgcG9saWN5OiBcImF1dG9cIiAob3IgdHJ1ZSkgdG8gc3dpdGNoIGF1dG9tYXRpY2FsbHkgd2hlbiBwdWJsaXNoZXItYXV0aGVudGljYXRlZCwgXCJwcm9tcHRcIiB0byBjb25maXJtIG9uIGVhY2ggdXNlLCBcImFsd2F5c1wiIHRvIHN3aXRjaCB1bmNvbmRpdGlvbmFsbHksIG9yIGZhbHNlIHRvIGRpc2FibGUuIE9iamVjdCBlbnRyaWVzIG1lcmdlIHdpdGggdGhlIGJ1aWx0LWluIGRlZmF1bHRzICh7XCJub2RlXCI6IFwiYXV0b1wiLCBcImRlbm9cIjogXCJhdXRvXCIsIFwiYnVuXCI6IFwiYXV0b1wifSkuIEFkZGVkIGluIHBucG0gdjEyLjAuMC1yYy4yLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbFNoaW1zXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxTaGltcz86IGFueTtcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIGFsbCB0aGUgcGFja2FnZXMgYXJlIHNhdmVkIG9uIHRoZSBkaXNrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0YXRlRGlyXG4gICAqL1xuICByZWFkb25seSBzdGF0ZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBjYWNoZSAocGFja2FnZSBtZXRhZGF0YSBhbmQgZGx4KS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYWNoZURpclxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgYWxsIHRoZSBvdXRwdXQgaXMgd3JpdHRlbiB0byBzdGRlcnIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXNlU3RkZXJyXG4gICAqL1xuICByZWFkb25seSB1c2VTdGRlcnI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCBjaGVjayBmb3IgdXBkYXRlcyB0byB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIGFuZCBub3RpZnkgdGhlIHVzZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXBkYXRlTm90aWZpZXJcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZU5vdGlmaWVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXhwbGljaXRseSB0ZWxscyBwbnBtIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBDb250aW51b3VzIEludGVncmF0aW9uIHN5c3RlbSwgb3ZlcnJpZGluZyBwbnBtJ3MgYXV0b21hdGljIENJIGRldGVjdGlvbi4gQWRkZWQgaW4gcG5wbSB2MTAuMTIuMS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjaVxuICAgKi9cbiAgcmVhZG9ubHkgY2k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgc3ltbGlua3MgdG8gZXhlY3V0YWJsZXMgaW4gbm9kZV9tb2R1bGVzLy5iaW4gaW5zdGVhZCBvZiBjb21tYW5kIHNoaW1zLiBUaGlzIHNldHRpbmcgaXMgaWdub3JlZCBvbiBXaW5kb3dzLCB3aGVyZSBvbmx5IGNvbW1hbmQgc2hpbXMgd29yay5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcmVmZXJTeW1saW5rZWRFeGVjdXRhYmxlc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEdXJpbmcgaW5zdGFsbGF0aW9uIHRoZSBkZXBlbmRlbmNpZXMgb2Ygc29tZSBwYWNrYWdlcyBhcmUgYXV0b21hdGljYWxseSBwYXRjaGVkLiBJZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoaXMsIHNldCB0aGlzIGNvbmZpZyB0byBmYWxzZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVDb21wYXRpYmlsaXR5RGJcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNvbXBhdGliaWxpdHlEYj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IHBucG0gcmVzb2x2ZXMgZGVwZW5kZW5jaWVzLCBTZWUgaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI3Jlc29sdXRpb25tb2RlXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVzb2x1dGlvbk1vZGVcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdXRpb25Nb2RlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXNvbHV0aW9uTW9kZTtcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSBpZiB0aGUgcmVnaXN0cnkgdGhhdCB5b3UgYXJlIHVzaW5nIHJldHVybnMgdGhlIFwidGltZVwiIGZpZWxkIGluIHRoZSBhYmJyZXZpYXRlZCBtZXRhZGF0YS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkXG4gICAqL1xuICByZWFkb25seSByZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBmYWxzZSwgdGhlIE5PREVfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0IGluIHRoZSBjb21tYW5kIHNoaW1zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2V4dGVuZE5vZGVQYXRoXG4gICAqL1xuICByZWFkb25seSBleHRlbmROb2RlUGF0aD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZGVwbG95aW5nIGEgcGFja2FnZSBvciBpbnN0YWxsaW5nIGEgbG9jYWwgcGFja2FnZSwgYWxsIGZpbGVzIG9mIHRoZSBwYWNrYWdlIGFyZSBjb3BpZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVwbG95QWxsRmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveUFsbEZpbGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGFscmVhZHkgc3ltbGlua2VkIHRvIHRoZSByb290IG5vZGVfbW9kdWxlcyBkaXJlY3Rvcnkgb2YgdGhlIHdvcmtzcGFjZSB3aWxsIG5vdCBiZSBzeW1saW5rZWQgdG8gc3VicHJvamVjdCBub2RlX21vZHVsZXMgZGlyZWN0b3JpZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlRGlyZWN0RGVwc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlRGlyZWN0RGVwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBzZXR0aW5nIGlzIGVuYWJsZWQsIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBpbmplY3RlZCB3aWxsIGJlIHN5bWxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2Ugd2hlbmV2ZXIgcG9zc2libGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlSW5qZWN0ZWREZXBzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVJbmplY3RlZERlcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgZmFzdCBjaGVjayB3aWxsIGJlIHBlcmZvcm1lZCBiZWZvcmUgcHJvY2VlZGluZyB0byBpbnN0YWxsYXRpb24uIFRoaXMgd2F5IGEgcmVwZWF0IGluc3RhbGwgb3IgYW4gaW5zdGFsbCBvbiBhIHByb2plY3Qgd2l0aCBldmVyeXRoaW5nIHVwLXRvLWRhdGUgYmVjb21lcyBhIGxvdCBmYXN0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb3B0aW1pc3RpY1JlcGVhdEluc3RhbGxcbiAgICovXG4gIHJlYWRvbmx5IG9wdGltaXN0aWNSZXBlYXRJbnN0YWxsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgY3VycmVudCBicmFuY2ggaXMgeW91ciBwdWJsaXNoIGJyYW5jaCwgY2xlYW4sIGFuZCB1cC10by1kYXRlIHdpdGggcmVtb3RlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dpdENoZWNrc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0Q2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVU5ET0NVTUVOVEVELiBXaGVuIGB0cnVlYCwgYHBucG0gcHVibGlzaGAgd3JpdGVzIHRoZSBSRUFETUUgZmlsZSdzIGNvbnRlbnQgaW50byB0aGUgcHVibGlzaGVkIHBhY2thZ2UuanNvbiAodGhlIGByZWFkbWVgIGZpZWxkKSwgc28gcmVnaXN0cmllcyBzdWNoIGFzIG5wbWpzLmNvbSByZW5kZXIgdGhlIHBhY2thZ2UncyBSRUFETUUuIEFkZGVkIGluIHBucG0gNi4yOC4wOyBwbnBtIGRvZXMgbm90IGVtYmVkIHRoZSBSRUFETUUgdW5sZXNzIHRoaXMgaXMgZW5hYmxlZC4gSXQgYWxzbyB3b24ndCBvdmVycmlkZSBhIGByZWFkbWVgIGZpZWxkIGFscmVhZHkgc2V0IGluIHRoZSBwYWNrYWdlLmpzb25cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbWJlZFJlYWRtZVxuICAgKi9cbiAgcmVhZG9ubHkgZW1iZWRSZWFkbWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSBicmFuY2ggb2YgdGhlIHJlcG9zaXRvcnkgd2hpY2ggaXMgdXNlZCBmb3IgcHVibGlzaGluZyB0aGUgbGF0ZXN0IGNoYW5nZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHVibGlzaEJyYW5jaFxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaEJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbmluZyBzZXR0aW5ncyBmb3IgcG5wbSdzIG5hdGl2ZSB3b3Jrc3BhY2UgcmVsZWFzZSBtYW5hZ2VtZW50LCB1c2VkIGJ5IGBwbnBtIGNoYW5nZWAgYW5kIHJlY3Vyc2l2ZSBgcG5wbSB2ZXJzaW9uYC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2ZXJzaW9uaW5nXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uaW5nPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHB1Ymxpc2hpbmcgZnJvbSBhIHN1cHBvcnRlZCBjbG91ZCBDSS9DRCBzeXN0ZW0sIHRoZSBwYWNrYWdlIHdpbGwgYmUgcHVibGljbHkgbGlua2VkIHRvIHdoZXJlIGl0IHdhcyBidWlsdCBhbmQgcHVibGlzaGVkIGZyb20uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJvdmVuYW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmVuYW5jZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgbG9jYWwgcG5wbWZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcG5wbWZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHBucG1maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgYSBnbG9iYWwgcG5wbWZpbGUuIEEgZ2xvYmFsIHBucG1maWxlIGlzIHVzZWQgYnkgYWxsIHByb2plY3RzIGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2xvYmFsUG5wbWZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbFBucG1maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAucG5wbWZpbGUuY2pzIHdpbGwgYmUgaWdub3JlZC4gVXNlZnVsIHRvZ2V0aGVyIHdpdGggLS1pZ25vcmUtc2NyaXB0cyB3aGVuIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IG5vIHNjcmlwdCBnZXRzIGV4ZWN1dGVkIGR1cmluZyBpbnN0YWxsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVBucG1maWxlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQbnBtZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBnZW5lcmF0ZWQgcGF0Y2ggZmlsZSB3aWxsIGJlIHNhdmVkIHRvIHRoaXMgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhdGNoZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoZXNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcG5wbSB3aWxsIHJ1biBhbnkgcHJlL3Bvc3Qgc2NyaXB0cyBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZVByZVBvc3RTY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQcmVQb3N0U2NyaXB0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzaGVsbCB0byB1c2UgZm9yIHNjcmlwdHMgcnVuIHdpdGggdGhlIHBucG0gcnVuIGNvbW1hbmQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2NyaXB0U2hlbGxcbiAgICovXG4gIHJlYWRvbmx5IHNjcmlwdFNoZWxsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCB1c2UgYSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGEgYmFzaC1saWtlIHNoZWxsIHRvIGV4ZWN1dGUgc2NyaXB0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzaGVsbEVtdWxhdG9yXG4gICAqL1xuICByZWFkb25seSBzaGVsbEVtdWxhdG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2F2ZWQgZGVwZW5kZW5jaWVzIHdpbGwgYmUgY29uZmlndXJlZCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gcmF0aGVyIHRoYW4gdXNpbmcgcG5wbSdzIGRlZmF1bHQgc2VtdmVyIHJhbmdlIG9wZXJhdG9yLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NhdmVFeGFjdFxuICAgKi9cbiAgcmVhZG9ubHkgc2F2ZUV4YWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogbWluaW11bVJlbGVhc2VBZ2UgZGVmaW5lcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWludXRlcyB0aGF0IG11c3QgcGFzcyBhZnRlciBhIHZlcnNpb24gaXMgcHVibGlzaGVkIGJlZm9yZSBwbnBtIHdpbGwgaW5zdGFsbCBpdC4gVGhpcyBhcHBsaWVzIHRvIGFsbCBkZXBlbmRlbmNpZXMsIGluY2x1ZGluZyB0cmFuc2l0aXZlIG9uZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWluaW11bVJlbGVhc2VBZ2VcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IGBtaW5pbXVtUmVsZWFzZUFnZWAgYnV0IG5lZWQgY2VydGFpbiBkZXBlbmRlbmNpZXMgdG8gYWx3YXlzIGluc3RhbGwgdGhlIG5ld2VzdCB2ZXJzaW9uIGltbWVkaWF0ZWx5LCB5b3UgY2FuIGxpc3QgdGhlbSB1bmRlciBgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlYC4gVGhlIGV4Y2x1c2lvbiB3b3JrcyBieSBgcGFja2FnZSBuYW1lYCBhbmQgYXBwbGllcyB0byBhbGwgdmVyc2lvbnMgb2YgdGhhdCBwYWNrYWdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGhvdyBwbnBtIGJlaGF2ZXMgd2hlbiBubyB2ZXJzaW9uIG9mIGEgZGVwZW5kZW5jeSBzYXRpc2ZpZXMgdGhlIG1pbmltdW1SZWxlYXNlQWdlIGNvbnN0cmFpbnQgd2l0aGluIHRoZSByZXF1ZXN0ZWQgcmFuZ2UuXG4gICAqIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNtaW5pbXVtcmVsZWFzZWFnZXN0cmljdFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZVN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHBucG0gYWRkLCBwbnBtIHVwZGF0ZSwgYW5kIHBucG0gcmVtb3ZlIHBydW5lIHRoZSBlbnRyaWVzIG9mIG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZSBpbiBwbnBtLXdvcmtzcGFjZS55YW1sIHRoYXQgdGhlIGZyZXNobHkgd3JpdHRlbiBsb2NrZmlsZSBubyBsb25nZXIgcmVzb2x2ZXM6IGEgdmVyc2lvbiB0aGF0IGlzIGdvbmUgaXMgZHJvcHBlZCAoYW4gZW50cnkgaXMgcmVtb3ZlZCBvbmNlIG5vbmUgb2YgaXRzIHZlcnNpb25zIHJlbWFpbiksIGFuZCBhbiBlbnRyeSBmb3IgYSBwYWNrYWdlIHRoYXQgaXMgbm8gbG9uZ2VyIGluIHRoZSBsb2NrZmlsZSBpcyByZW1vdmVkIHRvby4gTmFtZSBwYXR0ZXJucyAoQG15b3JnLyopIGFyZSBhbHdheXMga2VwdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVQcnVuZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlUHJ1bmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCeXBhc3Mgc3RhbGVuZXNzIGNoZWNrcyBmb3IgY2FjaGVkIGRhdGEuIE1pc3NpbmcgZGF0YSB3aWxsIHN0aWxsIGJlIHJlcXVlc3RlZCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyT2ZmbGluZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyT2ZmbGluZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIG5vLWRvd25ncmFkZSwgcG5wbSB3aWxsIGZhaWwgaWYgYSBwYWNrYWdlJ3MgdHJ1c3QgbGV2ZWwgaGFzIGRlY3JlYXNlZCBjb21wYXJlZCB0byBwcmV2aW91cyByZWxlYXNlcy4gRm9yIGV4YW1wbGUsIGlmIGEgcGFja2FnZSB3YXMgcHJldmlvdXNseSBwdWJsaXNoZWQgYnkgYSB0cnVzdGVkIHB1Ymxpc2hlciBidXQgbm93IG9ubHkgaGFzIHByb3ZlbmFuY2Ugb3Igbm8gdHJ1c3QgZXZpZGVuY2UsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwuIFRoaXMgaGVscHMgcHJldmVudCBpbnN0YWxsaW5nIHBvdGVudGlhbGx5IGNvbXByb21pc2VkIHZlcnNpb25zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3RydXN0UG9saWN5XG4gICAqL1xuICByZWFkb25seSB0cnVzdFBvbGljeT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVHJ1c3RQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gbm93IGxpc3Qgb25lIG9yIG1vcmUgc3BlY2lmaWMgcGFja2FnZXMgb3IgdmVyc2lvbnMgdGhhdCBwbnBtIHNob3VsZCBhbGxvdyB0byBpbnN0YWxsLCBldmVuIGlmIHRob3NlIHBhY2thZ2VzIGRvbid0IHNhdGlzZnkgdGhlIHRydXN0IHBvbGljeSByZXF1aXJlbWVudC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdFBvbGljeUV4Y2x1ZGVcbiAgICovXG4gIHJlYWRvbmx5IHRydXN0UG9saWN5RXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBwYWNrYWdlIG1hdGNoZXJzIHRvIGV4cGxpY2l0bHkgYWxsb3cgKGB0cnVlYCkgb3IgZGlzYWxsb3cgKGBmYWxzZWApIHNjcmlwdCBleGVjdXRpb24uIFRoaXMgZmllbGQgcmVwbGFjZXMgYG9ubHlCdWlsdERlcGVuZGVuY2llc2AgYW5kIGBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXNgICh3aGljaCBhcmUgYWxzbyBkZXByZWNhdGVkIGJ5IHRoaXMgbmV3IHNldHRpbmcpLCBwcm92aWRpbmcgYSBzaW5nbGUgc291cmNlIG9mIHRydXRoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2FsbG93QnVpbGRzXG4gICAqL1xuICByZWFkb25seSBhbGxvd0J1aWxkcz86IGFueTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgaXQgcHJldmVudHMgdGhlIHJlc29sdXRpb24gb2YgZXhvdGljIHByb3RvY29scyAobGlrZSBnaXQrc3NoOiBvciBkaXJlY3QgaHR0cHM6IHRhcmJhbGxzKSBpbiB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcy4gT25seSBkaXJlY3QgZGVwZW5kZW5jaWVzIGFyZSBhbGxvd2VkIHRvIHVzZSBleG90aWMgc291cmNlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNibG9ja0V4b3RpY1N1YmRlcHNcbiAgICovXG4gIHJlYWRvbmx5IGJsb2NrRXhvdGljU3ViZGVwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBpZ25vcmluZyB0aGUgdHJ1c3QgcG9saWN5IGNoZWNrIGZvciBwYWNrYWdlcyBwdWJsaXNoZWQgbW9yZSB0aGFuIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgYWdvLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGVuYWJsaW5nIHN0cmljdCB0cnVzdCBwb2xpY2llcywgYXMgaXQgYWxsb3dzIG9sZGVyIHZlcnNpb25zIG9mIHBhY2thZ2VzICh3aGljaCBtYXkgbGFjayBhIHByb2Nlc3MgZm9yIHB1Ymxpc2hpbmcgd2l0aCBzaWduYXR1cmVzIG9yIHByb3ZlbmFuY2UpIHRvIGJlIGluc3RhbGxlZCB3aXRob3V0IG1hbnVhbCBleGNsdXNpb24sIGFzc3VtaW5nIHRoZXkgYXJlIHNhZmUgZHVlIHRvIHRoZWlyIGFnZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdFBvbGljeUlnbm9yZUFmdGVyXG4gICAqL1xuICByZWFkb25seSB0cnVzdFBvbGljeUlnbm9yZUFmdGVyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgbGV2ZWwgb2YgaXNzdWVzIHJlcG9ydGVkIGJ5IGBwbnBtIGF1ZGl0YC4gV2hlbiBzZXQgdG8gJ2xvdycsIGFsbCB2dWxuZXJhYmlsaXRpZXMgYXJlIHJlcG9ydGVkLiBXaGVuIHNldCB0byAnbW9kZXJhdGUnLCAnaGlnaCcsIG9yICdjcml0aWNhbCcsIG9ubHkgdnVsbmVyYWJpbGl0aWVzIHdpdGggdGhhdCBzZXZlcml0eSBvciBoaWdoZXIgYXJlIHJlcG9ydGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2F1ZGl0TGV2ZWxcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0TGV2ZWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWw7XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgcGVlciBkZXBlbmRlbmN5IHN1ZmZpeGVzIHVzZSB2ZXJzaW9uLW9ubHkgaWRlbnRpZmllcnMgKGBuYW1lQHZlcnNpb25gKSBpbnN0ZWFkIG9mIGZ1bGwgZGVwIHBhdGhzLCBlbGltaW5hdGluZyBuZXN0ZWQgc3VmZml4ZXMgbGlrZSBgKGZvb0AxLjAuMChiYXJAMi4wLjApKWAuIFRoaXMgZHJhbWF0aWNhbGx5IHJlZHVjZXMgdGhlIG51bWJlciBvZiBwYWNrYWdlIGluc3RhbmNlcyBpbiBwcm9qZWN0cyB3aXRoIG1hbnkgcmVjdXJzaXZlIHBlZXIgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZVBlZXJzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVQZWVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHJlZ2lzdHJ5IGF1dGhlbnRpY2F0aW9uIHRva2Vucy4gQnkgZGVmYXVsdCwgcG5wbSByZWFkcyBhdXRoIHRva2VucyBmcm9tIH4vLm5wbXJjIGFzIGEgZmFsbGJhY2sgZm9yIHJlZ2lzdHJ5IGF1dGhlbnRpY2F0aW9uLiBVc2UgdGhpcyBzZXR0aW5nIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IGZpbGUgaW5zdGVhZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNucG1yY0F1dGhGaWxlXG4gICAqL1xuICByZWFkb25seSBucG1yY0F1dGhGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgcG5wbSBza2lwcyB0aGUgYG1pbmltdW1SZWxlYXNlQWdlYCBjaGVjayBmb3IgYSBwYWNrYWdlIHdob3NlIHJlZ2lzdHJ5IG1ldGFkYXRhIGRvZXMgbm90IGluY2x1ZGUgdGhlIHRpbWUgZmllbGQgKHNvbWUgcHJpdmF0ZSByZWdpc3RyaWVzIGFuZCBtaXJyb3JzIG9taXQgaXQpLiBTZXQgdG8gYGZhbHNlYCB0byBmYWlsIHJlc29sdXRpb24gaW4gdGhhdCBjYXNlIGluc3RlYWQgb2YgaW5zdGFsbGluZyB0aGUgcGFja2FnZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIHJlZ2lzdHJpZXMgZm9yIHNjb3BlZCBwYWNrYWdlcyBpbiBgcG5wbS13b3Jrc3BhY2UueWFtbGAuIFRoZSBgZGVmYXVsdGAga2V5IHNldHMgdGhlIG1haW4gcmVnaXN0cnkgKGVxdWl2YWxlbnQgdG8gdGhlIGByZWdpc3RyeWAgYC5ucG1yY2Agc2V0dGluZykuIFNjb3BlZCBrZXlzIGNvbmZpZ3VyZSByZWdpc3RyaWVzIGZvciBzcGVjaWZpYyBwYWNrYWdlIHNjb3Blcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZWdpc3RyaWVzXG4gICAqL1xuICByZWFkb25seSByZWdpc3RyaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRGVmaW5lcyBuYW1lZCByZWdpc3RyeSBhbGlhc2VzIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBwcmVmaXggd2hlbiBpbnN0YWxsaW5nIHBhY2thZ2VzLCBlLmcuIGBwbnBtIGFkZCB3b3JrOkBjb3JwL2xpYkBeMi4wLjBgIHJlc29sdmVzIGBAY29ycC9saWJAXjIuMC4wYCBhZ2FpbnN0IHRoZSBjb25maWd1cmVkIFVSTC4gQnVpbHQtaW4gYWxpYXNlcyBgZ2g6YCAoaHR0cHM6Ly9ucG0ucGtnLmdpdGh1Yi5jb20vKSBhbmQgYG5wbWpzOmAgKGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLykgd29yayB3aXRob3V0IGFueSBjb25maWd1cmF0aW9uIGFuZCBjYW4gYmUgb3ZlcnJpZGRlbi4gQW4gYWxpYXMgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjb250YWluIG9ubHkgbGV0dGVycywgZGlnaXRzLCBgLmAsIGBfYCwgYW5kIGAtYC4gQWRkZWQgaW4gcG5wbSAxMS4xLjAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbmFtZWRSZWdpc3RyaWVzXG4gICAqL1xuICByZWFkb25seSBuYW1lZFJlZ2lzdHJpZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBwbnBtIHBvcHVsYXRlcyB0aGUgdmlydHVhbCBzdG9yZSB3aXRob3V0IGNyZWF0aW5nIGltcG9ydGVyIHN5bWxpbmtzLCBob2lzdGluZywgYmluIGxpbmtzLCBvciBydW5uaW5nIGxpZmVjeWNsZSBzY3JpcHRzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJlLXBvcHVsYXRpbmcgYSBzdG9yZSAoZS5nLiwgaW4gTml4IGJ1aWxkcykgd2l0aG91dCBjcmVhdGluZyB1bm5lY2Vzc2FyeSBwcm9qZWN0LWxldmVsIGFydGlmYWN0cy4gcG5wbSBmZXRjaCB1c2VzIHRoaXMgbW9kZSBpbnRlcm5hbGx5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZU9ubHlcbiAgICovXG4gIHJlYWRvbmx5IHZpcnR1YWxTdG9yZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGJlaGF2aW9yIG9mIGJvdGggdGhlIGBwYWNrYWdlTWFuYWdlcmAgZmllbGQgYW5kIGBkZXZFbmdpbmVzLnBhY2thZ2VNYW5hZ2VyYCB3aGVuIHRoZSBydW5uaW5nIHBucG0gdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgZGVjbGFyZWQgb25lLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BtT25GYWlsXG4gICAqL1xuICByZWFkb25seSBwbU9uRmFpbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUG1PbkZhaWw7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgZmllbGQgb2YgYGRldkVuZ2luZXMucnVudGltZWAgKGFuZCBgZW5naW5lcy5ydW50aW1lYCkgaW4gdGhlIHJvb3QgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IGEgZGlmZmVyZW50IGxvY2FsIGJlaGF2aW9yIHRoYW4gd2hhdCBpcyB3cml0dGVuIGluIHRoZSBtYW5pZmVzdCDigJQgZm9yIGluc3RhbmNlLCBmb3JjaW5nIHBucG0gdG8gZG93bmxvYWQgdGhlIGRlY2xhcmVkIHJ1bnRpbWUgZXZlbiB3aGVuIHRoZSBtYW5pZmVzdCBzZXRzIGBvbkZhaWw6IFwid2FyblwiYC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNydW50aW1lT25GYWlsXG4gICAqL1xuICByZWFkb25seSBydW50aW1lT25GYWlsPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSdW50aW1lT25GYWlsO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgY3VzdG9tIE5vZGUuanMgZG93bmxvYWQgbWlycm9ycyBpbiBgcG5wbS13b3Jrc3BhY2UueWFtbGAuIFRoZSBrZXlzIGFyZSByZWxlYXNlIGNoYW5uZWxzIChgcmVsZWFzZWAsIGByY2AsIGBuaWdodGx5YCwgYHY4LWNhbmFyeWAsIGV0Yy4pIGFuZCB0aGUgdmFsdWVzIGFyZSBiYXNlIFVSTHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZURvd25sb2FkTWlycm9yc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZURvd25sb2FkTWlycm9ycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgbmV3IHRydXN0TG9ja2ZpbGUgc2V0dGluZyBjb250cm9scyB3aGV0aGVyIHBucG0gaW5zdGFsbCByZS1hcHBsaWVzIHRoZSBgbWluaW11bVJlbGVhc2VBZ2VgIC8gYHRydXN0UG9saWN5OiAnbm8tZG93bmdyYWRlJ2AgY2hlY2tzIHRvIGV2ZXJ5IGVudHJ5IGluIHRoZSBsb2FkZWQgbG9ja2ZpbGUuIFdoZW4gdHJ1ZSwgdGhlIGluc3RhbGwgdHJlYXRzIHRoZSBsb2NrZmlsZSBhcyBhbHJlYWR5LXRydXN0ZWQgYW5kIHNraXBzIHRoZSB2ZXJpZmljYXRpb24gcGFzcyDigJQgdXNlZnVsIGZvciBjbG9zZWQtc291cmNlIHByb2plY3RzIHdoZXJlIGV2ZXJ5IGNvbW1pdCBjb21lcyBmcm9tIGEgdHJ1c3RlZCBhdXRob3IuIFRoZSBkZWZhdWx0IGlzIGZhbHNlLCBzbyB2ZXJpZmljYXRpb24gc3RheXMgb24gYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdExvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSB0cnVzdExvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkZWQgYSBuZXcgaG9pc3RpbmdMaW1pdHMgc2V0dGluZyBmb3IgYG5vZGVMaW5rZXI6IGhvaXN0ZWRgIGluc3RhbGxzLCBtaXJyb3JpbmcgeWFybidzIGBubUhvaXN0aW5nTGltaXRzYC4gSXQgYWNjZXB0cyBgbm9uZWAgKHRoZSBkZWZhdWx0IOKAlCBob2lzdCBhcyBmYXIgYXMgcG9zc2libGUpLCB3b3Jrc3BhY2VzIChob2lzdCBvbmx5IGFzIGZhciBhcyBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlKSwgb3IgZGVwZW5kZW5jaWVzIChob2lzdCBvbmx5IHVwIHRvIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UncyBkaXJlY3QgZGVwZW5kZW5jaWVzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNob2lzdGluZ0xpbWl0c1xuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RpbmdMaW1pdHM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUhvaXN0aW5nTGltaXRzO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdwYWNrYWdlcyc6IG9iai5wYWNrYWdlcz8ubWFwKHkgPT4geSksXG4gICAgJ2NhdGFsb2cnOiAoKG9iai5jYXRhbG9nKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouY2F0YWxvZykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2NhdGFsb2dzJzogKChvYmouY2F0YWxvZ3MpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5jYXRhbG9ncykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06ICgoaVsxXSkgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMoaVsxXSkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSkgfSksIHt9KSksXG4gICAgJ2NhdGFsb2dNb2RlJzogb2JqLmNhdGFsb2dNb2RlLFxuICAgICdjbGVhbnVwVW51c2VkQ2F0YWxvZ3MnOiBvYmouY2xlYW51cFVudXNlZENhdGFsb2dzLFxuICAgICdjYXRhbG9nUHJ1bmUnOiBvYmouY2F0YWxvZ1BydW5lLFxuICAgICdvbmx5QnVpbHREZXBlbmRlbmNpZXMnOiBvYmoub25seUJ1aWx0RGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgICAnb3ZlcnJpZGVzJzogb2JqLm92ZXJyaWRlcyxcbiAgICAncGFja2FnZUV4dGVuc2lvbnMnOiBvYmoucGFja2FnZUV4dGVuc2lvbnMsXG4gICAgJ3BhY2thZ2VDb25maWdzJzogb2JqLnBhY2thZ2VDb25maWdzLFxuICAgICdwZWVyRGVwZW5kZW5jeVJ1bGVzJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyhvYmoucGVlckRlcGVuZGVuY3lSdWxlcyksXG4gICAgJ25ldmVyQnVpbHREZXBlbmRlbmNpZXMnOiBvYmoubmV2ZXJCdWlsdERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ2Rhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHMnOiBvYmouZGFuZ2Vyb3VzbHlBbGxvd0FsbEJ1aWxkcyxcbiAgICAnb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZSc6IG9iai5vbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlLFxuICAgICdpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXMnOiBvYmouaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucyc6ICgob2JqLmFsbG93ZWREZXByZWNhdGVkVmVyc2lvbnMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5hbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAncGF0Y2hlZERlcGVuZGVuY2llcyc6ICgob2JqLnBhdGNoZWREZXBlbmRlbmNpZXMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5wYXRjaGVkRGVwZW5kZW5jaWVzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAnYWxsb3dVbnVzZWRQYXRjaGVzJzogb2JqLmFsbG93VW51c2VkUGF0Y2hlcyxcbiAgICAnYWxsb3dOb25BcHBsaWVkUGF0Y2hlcyc6IG9iai5hbGxvd05vbkFwcGxpZWRQYXRjaGVzLFxuICAgICdpZ25vcmVQYXRjaEZhaWx1cmVzJzogb2JqLmlnbm9yZVBhdGNoRmFpbHVyZXMsXG4gICAgJ3VwZGF0ZSc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZShvYmoudXBkYXRlKSxcbiAgICAndXBkYXRlQ29uZmlnJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnKG9iai51cGRhdGVDb25maWcpLFxuICAgICdjb25maWdEZXBlbmRlbmNpZXMnOiBvYmouY29uZmlnRGVwZW5kZW5jaWVzLFxuICAgICdhdWRpdCc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0KG9iai5hdWRpdCksXG4gICAgJ2F1ZGl0Q29uZmlnJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcob2JqLmF1ZGl0Q29uZmlnKSxcbiAgICAncmVxdWlyZWRTY3JpcHRzJzogb2JqLnJlcXVpcmVkU2NyaXB0cz8ubWFwKHkgPT4geSksXG4gICAgJ3N1cHBvcnRlZEFyY2hpdGVjdHVyZXMnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzKG9iai5zdXBwb3J0ZWRBcmNoaXRlY3R1cmVzKSxcbiAgICAnaWdub3JlZE9wdGlvbmFsRGVwZW5kZW5jaWVzJzogb2JqLmlnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ2V4ZWN1dGlvbkVudic6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudihvYmouZXhlY3V0aW9uRW52KSxcbiAgICAnaG9pc3QnOiBvYmouaG9pc3QsXG4gICAgJ2hvaXN0V29ya3NwYWNlUGFja2FnZXMnOiBvYmouaG9pc3RXb3Jrc3BhY2VQYWNrYWdlcyxcbiAgICAnaG9pc3RQYXR0ZXJuJzogb2JqLmhvaXN0UGF0dGVybj8ubWFwKHkgPT4geSksXG4gICAgJ3B1YmxpY0hvaXN0UGF0dGVybic6IG9iai5wdWJsaWNIb2lzdFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdzaGFtZWZ1bGx5SG9pc3QnOiBvYmouc2hhbWVmdWxseUhvaXN0LFxuICAgICdtb2R1bGVzRGlyJzogb2JqLm1vZHVsZXNEaXIsXG4gICAgJ25vZGVMaW5rZXInOiBvYmoubm9kZUxpbmtlcixcbiAgICAnbm9kZUV4cGVyaW1lbnRhbFBhY2thZ2VNYXAnOiBvYmoubm9kZUV4cGVyaW1lbnRhbFBhY2thZ2VNYXAsXG4gICAgJ25vZGVQYWNrYWdlTWFwVHlwZSc6IG9iai5ub2RlUGFja2FnZU1hcFR5cGUsXG4gICAgJ3N5bWxpbmsnOiBvYmouc3ltbGluayxcbiAgICAnZW5hYmxlTW9kdWxlc0Rpcic6IG9iai5lbmFibGVNb2R1bGVzRGlyLFxuICAgICd2aXJ0dWFsU3RvcmVEaXInOiBvYmoudmlydHVhbFN0b3JlRGlyLFxuICAgICd2aXJ0dWFsU3RvcmVEaXJNYXhMZW5ndGgnOiBvYmoudmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoLFxuICAgICd2aXJ0dWFsU3RvcmVUeXBlJzogb2JqLnZpcnR1YWxTdG9yZVR5cGUsXG4gICAgJ3BhY2thZ2VJbXBvcnRNZXRob2QnOiBvYmoucGFja2FnZUltcG9ydE1ldGhvZCxcbiAgICAnbW9kdWxlc0NhY2hlTWF4QWdlJzogb2JqLm1vZHVsZXNDYWNoZU1heEFnZSxcbiAgICAnZGx4Q2FjaGVNYXhBZ2UnOiBvYmouZGx4Q2FjaGVNYXhBZ2UsXG4gICAgJ3N0b3JlRGlyJzogb2JqLnN0b3JlRGlyLFxuICAgICd2ZXJpZnlTdG9yZUludGVncml0eSc6IG9iai52ZXJpZnlTdG9yZUludGVncml0eSxcbiAgICAndXNlUnVubmluZ1N0b3JlU2VydmVyJzogb2JqLnVzZVJ1bm5pbmdTdG9yZVNlcnZlcixcbiAgICAnZnJvemVuU3RvcmUnOiBvYmouZnJvemVuU3RvcmUsXG4gICAgJ3N0cmljdFN0b3JlUGtnQ29udGVudENoZWNrJzogb2JqLnN0cmljdFN0b3JlUGtnQ29udGVudENoZWNrLFxuICAgICdlbmFibGVHbG9iYWxWaXJ0dWFsU3RvcmUnOiBvYmouZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlLFxuICAgICdsb2NrZmlsZSc6IG9iai5sb2NrZmlsZSxcbiAgICAncHJlZmVyRnJvemVuTG9ja2ZpbGUnOiBvYmoucHJlZmVyRnJvemVuTG9ja2ZpbGUsXG4gICAgJ2xvY2tmaWxlSW5jbHVkZVRhcmJhbGxVcmwnOiBvYmoubG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybCxcbiAgICAnZ2l0QnJhbmNoTG9ja2ZpbGUnOiBvYmouZ2l0QnJhbmNoTG9ja2ZpbGUsXG4gICAgJ21lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVybic6IG9iai5tZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdwZWVyc1N1ZmZpeE1heExlbmd0aCc6IG9iai5wZWVyc1N1ZmZpeE1heExlbmd0aCxcbiAgICAncmVnaXN0cnknOiBvYmoucmVnaXN0cnksXG4gICAgJ2NhJzogb2JqLmNhLFxuICAgICdjYWZpbGUnOiBvYmouY2FmaWxlLFxuICAgICdjZXJ0Jzogb2JqLmNlcnQsXG4gICAgJ2tleSc6IG9iai5rZXksXG4gICAgJ2dpdFNoYWxsb3dIb3N0cyc6IG9iai5naXRTaGFsbG93SG9zdHM/Lm1hcCh5ID0+IHkpLFxuICAgICdodHRwc1Byb3h5Jzogb2JqLmh0dHBzUHJveHksXG4gICAgJ2h0dHBQcm94eSc6IG9iai5odHRwUHJveHksXG4gICAgJ3Byb3h5Jzogb2JqLnByb3h5LFxuICAgICdsb2NhbEFkZHJlc3MnOiBvYmoubG9jYWxBZGRyZXNzLFxuICAgICdtYXhzb2NrZXRzJzogb2JqLm1heHNvY2tldHMsXG4gICAgJ25vUHJveHknOiBvYmoubm9Qcm94eSxcbiAgICAnc3RyaWN0U3NsJzogb2JqLnN0cmljdFNzbCxcbiAgICAnbmV0d29ya0NvbmN1cnJlbmN5Jzogb2JqLm5ldHdvcmtDb25jdXJyZW5jeSxcbiAgICAnZmV0Y2hSZXRyaWVzJzogb2JqLmZldGNoUmV0cmllcyxcbiAgICAnZmV0Y2hSZXRyeUZhY3Rvcic6IG9iai5mZXRjaFJldHJ5RmFjdG9yLFxuICAgICdmZXRjaFJldHJ5TWludGltZW91dCc6IG9iai5mZXRjaFJldHJ5TWludGltZW91dCxcbiAgICAnZmV0Y2hSZXRyeU1heHRpbWVvdXQnOiBvYmouZmV0Y2hSZXRyeU1heHRpbWVvdXQsXG4gICAgJ2ZldGNoVGltZW91dCc6IG9iai5mZXRjaFRpbWVvdXQsXG4gICAgJ2ZldGNoV2FyblRpbWVvdXRNcyc6IG9iai5mZXRjaFdhcm5UaW1lb3V0TXMsXG4gICAgJ2ZldGNoTWluU3BlZWRLaUJwcyc6IG9iai5mZXRjaE1pblNwZWVkS2lCcHMsXG4gICAgJ2F1dG9JbnN0YWxsUGVlcnMnOiBvYmouYXV0b0luc3RhbGxQZWVycyxcbiAgICAnZGVkdXBlUGVlckRlcGVuZGVudHMnOiBvYmouZGVkdXBlUGVlckRlcGVuZGVudHMsXG4gICAgJ3N0cmljdFBlZXJEZXBlbmRlbmNpZXMnOiBvYmouc3RyaWN0UGVlckRlcGVuZGVuY2llcyxcbiAgICAncmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3QnOiBvYmoucmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3QsXG4gICAgJ2NvbG9yJzogb2JqLmNvbG9yLFxuICAgICdsb2dsZXZlbCc6IG9iai5sb2dsZXZlbCxcbiAgICAncmVwb3J0ZXInOiBvYmoucmVwb3J0ZXIsXG4gICAgJ3VzZUJldGFDbGknOiBvYmoudXNlQmV0YUNsaSxcbiAgICAncmVjdXJzaXZlSW5zdGFsbCc6IG9iai5yZWN1cnNpdmVJbnN0YWxsLFxuICAgICdlbmdpbmVTdHJpY3QnOiBvYmouZW5naW5lU3RyaWN0LFxuICAgICducG1QYXRoJzogb2JqLm5wbVBhdGgsXG4gICAgJ3BhY2thZ2VNYW5hZ2VyU3RyaWN0Jzogb2JqLnBhY2thZ2VNYW5hZ2VyU3RyaWN0LFxuICAgICdwYWNrYWdlTWFuYWdlclN0cmljdFZlcnNpb24nOiBvYmoucGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uLFxuICAgICdtYW5hZ2VQYWNrYWdlTWFuYWdlclZlcnNpb25zJzogb2JqLm1hbmFnZVBhY2thZ2VNYW5hZ2VyVmVyc2lvbnMsXG4gICAgJ2lnbm9yZVNjcmlwdHMnOiBvYmouaWdub3JlU2NyaXB0cyxcbiAgICAnaWdub3JlRGVwU2NyaXB0cyc6IG9iai5pZ25vcmVEZXBTY3JpcHRzLFxuICAgICdjaGlsZENvbmN1cnJlbmN5Jzogb2JqLmNoaWxkQ29uY3VycmVuY3ksXG4gICAgJ3NpZGVFZmZlY3RzQ2FjaGUnOiBvYmouc2lkZUVmZmVjdHNDYWNoZSxcbiAgICAnc2lkZUVmZmVjdHNDYWNoZVJlYWRvbmx5Jzogb2JqLnNpZGVFZmZlY3RzQ2FjaGVSZWFkb25seSxcbiAgICAndW5zYWZlUGVybSc6IG9iai51bnNhZmVQZXJtLFxuICAgICdub2RlT3B0aW9ucyc6IG9iai5ub2RlT3B0aW9ucyxcbiAgICAndmVyaWZ5RGVwc0JlZm9yZVJ1bic6IG9iai52ZXJpZnlEZXBzQmVmb3JlUnVuLFxuICAgICdzdHJpY3REZXBCdWlsZHMnOiBvYmouc3RyaWN0RGVwQnVpbGRzLFxuICAgICd1c2VOb2RlVmVyc2lvbic6IG9iai51c2VOb2RlVmVyc2lvbixcbiAgICAnbm9kZVZlcnNpb24nOiBvYmoubm9kZVZlcnNpb24sXG4gICAgJ2xpbmtXb3Jrc3BhY2VQYWNrYWdlcyc6IG9iai5saW5rV29ya3NwYWNlUGFja2FnZXM/LnZhbHVlLFxuICAgICdpbmplY3RXb3Jrc3BhY2VQYWNrYWdlcyc6IG9iai5pbmplY3RXb3Jrc3BhY2VQYWNrYWdlcyxcbiAgICAnc3luY0luamVjdGVkRGVwc0FmdGVyU2NyaXB0cyc6IG9iai5zeW5jSW5qZWN0ZWREZXBzQWZ0ZXJTY3JpcHRzPy5tYXAoeSA9PiB5KSxcbiAgICAncHJlZmVyV29ya3NwYWNlUGFja2FnZXMnOiBvYmoucHJlZmVyV29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ3NoYXJlZFdvcmtzcGFjZUxvY2tmaWxlJzogb2JqLnNoYXJlZFdvcmtzcGFjZUxvY2tmaWxlLFxuICAgICdzYXZlV29ya3NwYWNlUHJvdG9jb2wnOiBvYmouc2F2ZVdvcmtzcGFjZVByb3RvY29sPy52YWx1ZSxcbiAgICAnaW5jbHVkZVdvcmtzcGFjZVJvb3QnOiBvYmouaW5jbHVkZVdvcmtzcGFjZVJvb3QsXG4gICAgJ2lnbm9yZVdvcmtzcGFjZUN5Y2xlcyc6IG9iai5pZ25vcmVXb3Jrc3BhY2VDeWNsZXMsXG4gICAgJ2lnbm9yZVdvcmtzcGFjZVJvb3RDaGVjayc6IG9iai5pZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2ssXG4gICAgJ2Rpc2FsbG93V29ya3NwYWNlQ3ljbGVzJzogb2JqLmRpc2FsbG93V29ya3NwYWNlQ3ljbGVzLFxuICAgICd3b3Jrc3BhY2VDb25jdXJyZW5jeSc6IG9iai53b3Jrc3BhY2VDb25jdXJyZW5jeSxcbiAgICAnZmFpbElmTm9NYXRjaCc6IG9iai5mYWlsSWZOb01hdGNoLFxuICAgICdmb3JjZUxlZ2FjeURlcGxveSc6IG9iai5mb3JjZUxlZ2FjeURlcGxveSxcbiAgICAnc2F2ZVByZWZpeCc6IG9iai5zYXZlUHJlZml4LFxuICAgICd0YWcnOiBvYmoudGFnLFxuICAgICdnbG9iYWxEaXInOiBvYmouZ2xvYmFsRGlyLFxuICAgICdnbG9iYWxCaW5EaXInOiBvYmouZ2xvYmFsQmluRGlyLFxuICAgICdnbG9iYWxTaGltcyc6IG9iai5nbG9iYWxTaGltcyxcbiAgICAnc3RhdGVEaXInOiBvYmouc3RhdGVEaXIsXG4gICAgJ2NhY2hlRGlyJzogb2JqLmNhY2hlRGlyLFxuICAgICd1c2VTdGRlcnInOiBvYmoudXNlU3RkZXJyLFxuICAgICd1cGRhdGVOb3RpZmllcic6IG9iai51cGRhdGVOb3RpZmllcixcbiAgICAnY2knOiBvYmouY2ksXG4gICAgJ3ByZWZlclN5bWxpbmtlZEV4ZWN1dGFibGVzJzogb2JqLnByZWZlclN5bWxpbmtlZEV4ZWN1dGFibGVzLFxuICAgICdpZ25vcmVDb21wYXRpYmlsaXR5RGInOiBvYmouaWdub3JlQ29tcGF0aWJpbGl0eURiLFxuICAgICdyZXNvbHV0aW9uTW9kZSc6IG9iai5yZXNvbHV0aW9uTW9kZSxcbiAgICAncmVnaXN0cnlTdXBwb3J0c1RpbWVGaWVsZCc6IG9iai5yZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkLFxuICAgICdleHRlbmROb2RlUGF0aCc6IG9iai5leHRlbmROb2RlUGF0aCxcbiAgICAnZGVwbG95QWxsRmlsZXMnOiBvYmouZGVwbG95QWxsRmlsZXMsXG4gICAgJ2RlZHVwZURpcmVjdERlcHMnOiBvYmouZGVkdXBlRGlyZWN0RGVwcyxcbiAgICAnZGVkdXBlSW5qZWN0ZWREZXBzJzogb2JqLmRlZHVwZUluamVjdGVkRGVwcyxcbiAgICAnb3B0aW1pc3RpY1JlcGVhdEluc3RhbGwnOiBvYmoub3B0aW1pc3RpY1JlcGVhdEluc3RhbGwsXG4gICAgJ2dpdENoZWNrcyc6IG9iai5naXRDaGVja3MsXG4gICAgJ2VtYmVkUmVhZG1lJzogb2JqLmVtYmVkUmVhZG1lLFxuICAgICdwdWJsaXNoQnJhbmNoJzogb2JqLnB1Ymxpc2hCcmFuY2gsXG4gICAgJ3ZlcnNpb25pbmcnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nKG9iai52ZXJzaW9uaW5nKSxcbiAgICAncHJvdmVuYW5jZSc6IG9iai5wcm92ZW5hbmNlLFxuICAgICdwbnBtZmlsZSc6IG9iai5wbnBtZmlsZSxcbiAgICAnZ2xvYmFsUG5wbWZpbGUnOiBvYmouZ2xvYmFsUG5wbWZpbGUsXG4gICAgJ2lnbm9yZVBucG1maWxlJzogb2JqLmlnbm9yZVBucG1maWxlLFxuICAgICdwYXRjaGVzRGlyJzogb2JqLnBhdGNoZXNEaXIsXG4gICAgJ2VuYWJsZVByZVBvc3RTY3JpcHRzJzogb2JqLmVuYWJsZVByZVBvc3RTY3JpcHRzLFxuICAgICdzY3JpcHRTaGVsbCc6IG9iai5zY3JpcHRTaGVsbCxcbiAgICAnc2hlbGxFbXVsYXRvcic6IG9iai5zaGVsbEVtdWxhdG9yLFxuICAgICdzYXZlRXhhY3QnOiBvYmouc2F2ZUV4YWN0LFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZSc6IG9iai5taW5pbXVtUmVsZWFzZUFnZSxcbiAgICAnbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZT8ubWFwKHkgPT4geSksXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlU3RyaWN0Jzogb2JqLm1pbmltdW1SZWxlYXNlQWdlU3RyaWN0LFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVQcnVuZSc6IG9iai5taW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVQcnVuZSxcbiAgICAncHJlZmVyT2ZmbGluZSc6IG9iai5wcmVmZXJPZmZsaW5lLFxuICAgICd0cnVzdFBvbGljeSc6IG9iai50cnVzdFBvbGljeSxcbiAgICAndHJ1c3RQb2xpY3lFeGNsdWRlJzogb2JqLnRydXN0UG9saWN5RXhjbHVkZT8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93QnVpbGRzJzogb2JqLmFsbG93QnVpbGRzLFxuICAgICdibG9ja0V4b3RpY1N1YmRlcHMnOiBvYmouYmxvY2tFeG90aWNTdWJkZXBzLFxuICAgICd0cnVzdFBvbGljeUlnbm9yZUFmdGVyJzogb2JqLnRydXN0UG9saWN5SWdub3JlQWZ0ZXIsXG4gICAgJ2F1ZGl0TGV2ZWwnOiBvYmouYXVkaXRMZXZlbCxcbiAgICAnZGVkdXBlUGVlcnMnOiBvYmouZGVkdXBlUGVlcnMsXG4gICAgJ25wbXJjQXV0aEZpbGUnOiBvYmoubnBtcmNBdXRoRmlsZSxcbiAgICAnbWluaW11bVJlbGVhc2VBZ2VJZ25vcmVNaXNzaW5nVGltZSc6IG9iai5taW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lLFxuICAgICdyZWdpc3RyaWVzJzogKChvYmoucmVnaXN0cmllcykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLnJlZ2lzdHJpZXMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICduYW1lZFJlZ2lzdHJpZXMnOiAoKG9iai5uYW1lZFJlZ2lzdHJpZXMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5uYW1lZFJlZ2lzdHJpZXMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICd2aXJ0dWFsU3RvcmVPbmx5Jzogb2JqLnZpcnR1YWxTdG9yZU9ubHksXG4gICAgJ3BtT25GYWlsJzogb2JqLnBtT25GYWlsLFxuICAgICdydW50aW1lT25GYWlsJzogb2JqLnJ1bnRpbWVPbkZhaWwsXG4gICAgJ25vZGVEb3dubG9hZE1pcnJvcnMnOiAoKG9iai5ub2RlRG93bmxvYWRNaXJyb3JzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoubm9kZURvd25sb2FkTWlycm9ycykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3RydXN0TG9ja2ZpbGUnOiBvYmoudHJ1c3RMb2NrZmlsZSxcbiAgICAnaG9pc3RpbmdMaW1pdHMnOiBvYmouaG9pc3RpbmdMaW1pdHMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBDb250cm9sbGluZyBpZiBhbmQgaG93IGRlcGVuZGVuY2llcyBhcmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQgY2F0YWxvZ1xuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDYXRhbG9nTW9kZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNhdGFsb2dNb2RlIHtcbiAgLyoqIHN0cmljdCAqL1xuICBTVFJJQ1QgPSBcInN0cmljdFwiLFxuICAvKiogcHJlZmVyICovXG4gIFBSRUZFUiA9IFwicHJlZmVyXCIsXG4gIC8qKiBtYW51YWwgKi9cbiAgTUFOVUFMID0gXCJtYW51YWxcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyB7XG4gIC8qKlxuICAgKiBwbnBtIHdpbGwgbm90IHByaW50IHdhcm5pbmdzIGFib3V0IG1pc3NpbmcgcGVlciBkZXBlbmRlbmNpZXMgZnJvbSB0aGlzIGxpc3QuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzI2lnbm9yZU1pc3NpbmdcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZU1pc3Npbmc/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVW5tZXQgcGVlciBkZXBlbmRlbmN5IHdhcm5pbmdzIHdpbGwgbm90IGJlIHByaW50ZWQgZm9yIHBlZXIgZGVwZW5kZW5jaWVzIG9mIHRoZSBzcGVjaWZpZWQgcmFuZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzI2FsbG93ZWRWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZFZlcnNpb25zPzogYW55O1xuXG4gIC8qKlxuICAgKiBBbnkgcGVlciBkZXBlbmRlbmN5IG1hdGNoaW5nIHRoZSBwYXR0ZXJuIHdpbGwgYmUgcmVzb2x2ZWQgZnJvbSBhbnkgdmVyc2lvbiwgcmVnYXJkbGVzcyBvZiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGluIFwicGVlckRlcGVuZGVuY2llc1wiLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyNhbGxvd0FueVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dBbnk/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlTWlzc2luZyc6IG9iai5pZ25vcmVNaXNzaW5nPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3dlZFZlcnNpb25zJzogb2JqLmFsbG93ZWRWZXJzaW9ucyxcbiAgICAnYWxsb3dBbnknOiBvYmouYWxsb3dBbnk/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmN5IG5hbWUgcGF0dGVybnMgdGhhdCBwbnBtIHVwZGF0ZSBhbmQgcG5wbSBvdXRkYXRlZCBzaG91bGQgc2tpcC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZSNpZ25vcmVEZXBzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVEZXBzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcG5wbSB1cGRhdGUgd3JpdGVzIGEgY2hhbmdlIGludGVudCBhZnRlciB1cGRhdGluZyB3b3Jrc3BhY2UgbWFuaWZlc3RzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlI2NoYW5nZXNldFxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc2V0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHVwZGF0ZSBhbmQgcG5wbSBvdXRkYXRlZCBhbHNvIGNoZWNrIHRoZSBHaXRIdWIgQWN0aW9ucyByZWZlcmVuY2VkIGJ5IHRoZSByZXBvc2l0b3J5J3Mgd29ya2Zsb3cgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUjZ2l0aHViQWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViQWN0aW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIFVSTCBvZiB0aGUgR2l0SHViIHNlcnZlciB0aGF0IGhvc3RzIHRoZSByZXBvc2l0b3JpZXMgb2YgdGhlIEdpdEh1YiBBY3Rpb25zIHJlZmVyZW5jZWQgYnkgdGhlIHdvcmtmbG93IGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlI2dpdGh1YkFjdGlvbnNTZXJ2ZXJcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YkFjdGlvbnNTZXJ2ZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2lnbm9yZURlcHMnOiBvYmouaWdub3JlRGVwcz8ubWFwKHkgPT4geSksXG4gICAgJ2NoYW5nZXNldCc6IG9iai5jaGFuZ2VzZXQsXG4gICAgJ2dpdGh1YkFjdGlvbnMnOiBvYmouZ2l0aHViQWN0aW9ucyxcbiAgICAnZ2l0aHViQWN0aW9uc1NlcnZlcic6IG9iai5naXRodWJBY3Rpb25zU2VydmVyLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gcnVubmluZyBcInBucG0gb3V0ZGF0ZWRcIiBvciBcInBucG0gdXBkYXRlIC0tbGF0ZXN0XCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcjaWdub3JlRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVEZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlRGVwZW5kZW5jaWVzJzogb2JqLmlnbm9yZURlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0IHtcbiAgLyoqXG4gICAqIE9ubHkgcHJpbnQgYWR2aXNvcmllcyB3aXRoIHNldmVyaXR5IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGlzIGxldmVsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQjbGV2ZWxcbiAgICovXG4gIHJlYWRvbmx5IGxldmVsPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgR0hTQSBjb2RlcyB0aGF0IHdpbGwgYmUgaWdub3JlZCBieSBwbnBtIGF1ZGl0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQjaWdub3JlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIGBwbnBtIGF1ZGl0IC0tZml4YCByZW1vdmVzIHRoZSBgYXVkaXQuaWdub3JlYCBlbnRyaWVzIHdob3NlIEdIU0Egbm8gbG9uZ2VyIGFwcGVhcnMgaW4gdGhlIGF1ZGl0IHJlcG9ydCwgc28gYSBsaXN0IG9mIHRvbGVyYXRlZCBhZHZpc29yaWVzIGRvZXNuJ3QgYWNjdW11bGF0ZSBlbnRyaWVzIGZvciBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgbG9uZyBnb25lLiBBZGRlZCBpbjogdjExLjI1LjAgYW5kIHYxMi4wLjAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdCNpZ25vcmVQcnVuZVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlUHJ1bmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdChvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdsZXZlbCc6IG9iai5sZXZlbCxcbiAgICAnaWdub3JlJzogb2JqLmlnbm9yZT8ubWFwKHkgPT4geSksXG4gICAgJ2lnbm9yZVBydW5lJzogb2JqLmlnbm9yZVBydW5lLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgQ1ZFIElEcyB0aGF0IHdpbGwgYmUgaWdub3JlZCBieSBcInBucG0gYXVkaXRcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnI2lnbm9yZUN2ZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUN2ZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIEdIU0EgQ29kZXMgdGhhdCB3aWxsIGJlIGlnbm9yZWQgYnkgXCJwbnBtIGF1ZGl0XCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyNpZ25vcmVHaHNhc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlR2hzYXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlQ3Zlcyc6IG9iai5pZ25vcmVDdmVzPy5tYXAoeSA9PiB5KSxcbiAgICAnaWdub3JlR2hzYXMnOiBvYmouaWdub3JlR2hzYXM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogU3BlY2lmaWVzIGFyY2hpdGVjdHVyZXMgZm9yIHdoaWNoIHlvdSdkIGxpa2UgdG8gaW5zdGFsbCBvcHRpb25hbCBkZXBlbmRlbmNpZXMsIGV2ZW4gaWYgdGhleSBkb24ndCBtYXRjaCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBzeXN0ZW0gcnVubmluZyB0aGUgaW5zdGFsbC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyNvc1xuICAgKi9cbiAgcmVhZG9ubHkgb3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMjY3B1XG4gICAqL1xuICByZWFkb25seSBjcHU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMjbGliY1xuICAgKi9cbiAgcmVhZG9ubHkgbGliYz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvcyc6IG9iai5vcz8ubWFwKHkgPT4geSksXG4gICAgJ2NwdSc6IG9iai5jcHU/Lm1hcCh5ID0+IHkpLFxuICAgICdsaWJjJzogb2JqLmxpYmM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGljaCBleGFjdCBOb2RlLmpzIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBwcm9qZWN0J3MgcnVudGltZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudiNub2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25vZGVWZXJzaW9uJzogb2JqLm5vZGVWZXJzaW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogRGVmaW5lcyB3aGF0IGxpbmtlciBzaG91bGQgYmUgdXNlZCBmb3IgaW5zdGFsbGluZyBOb2RlIHBhY2thZ2VzLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlciB7XG4gIC8qKiBpc29sYXRlZCAqL1xuICBJU09MQVRFRCA9IFwiaXNvbGF0ZWRcIixcbiAgLyoqIGhvaXN0ZWQgKi9cbiAgSE9JU1RFRCA9IFwiaG9pc3RlZFwiLFxuICAvKiogcG5wICovXG4gIFBOUCA9IFwicG5wXCIsXG59XG5cbi8qKlxuICogQ29udHJvbHMgaG93IG5vZGVfbW9kdWxlcy8ucGFja2FnZS1tYXAuanNvbiBpcyBnZW5lcmF0ZWQuIHN0YW5kYXJkIC0gb25seSBkZWNsYXJlZCBkZXBlbmRlbmNpZXMgYXJlIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBwYWNrYWdlIG1hcC4gbG9vc2UgLSBhbHNvIG1hcHMgcGFja2FnZXMgdGhhdCBhcmUgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGluc3RhbGxlZCBub2RlX21vZHVsZXMgbGF5b3V0LCB3aGljaCBjYW4gYWxsb3cgdW5kZWNsYXJlZCBob2lzdGVkIGRlcGVuZGVuY2llcyB0byByZXNvbHZlLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlUGFja2FnZU1hcFR5cGVcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlUGFja2FnZU1hcFR5cGUge1xuICAvKiogc3RhbmRhcmQgKi9cbiAgU1RBTkRBUkQgPSBcInN0YW5kYXJkXCIsXG4gIC8qKiBsb29zZSAqL1xuICBMT09TRSA9IFwibG9vc2VcIixcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXJlIHRoZSB2aXJ0dWFsIHN0b3JlIGlzIGxvY2F0ZWQuIFdoZW4gc2V0IHRvIHByb2plY3QsIGEgc2VwYXJhdGUgdmlydHVhbCBzdG9yZSBpcyBjcmVhdGVkIGluIGVhY2ggcHJvamVjdCdzIG5vZGVfbW9kdWxlcy8ucG5wbS4gV2hlbiBzZXQgdG8gZ2xvYmFsLCBhIHNpbmdsZSBzdG9yZSBpcyBzaGFyZWQgYnkgZXZlcnkgcHJvamVjdCBvbiB0aGUgbWFjaGluZSwgd2l0aCBlYWNoIHByb2plY3QncyBub2RlX21vZHVsZXMgaG9sZGluZyBvbmx5IHN5bWxpbmtzIGludG8gaXQuIEFkZGVkIGluIHBucG0gdjExLjIzLjAuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZpcnR1YWxTdG9yZVR5cGVcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWaXJ0dWFsU3RvcmVUeXBlIHtcbiAgLyoqIHByb2plY3QgKi9cbiAgUFJPSkVDVCA9IFwicHJvamVjdFwiLFxuICAvKiogZ2xvYmFsICovXG4gIEdMT0JBTCA9IFwiZ2xvYmFsXCIsXG59XG5cbi8qKlxuICogQ29udHJvbHMgdGhlIHdheSBwYWNrYWdlcyBhcmUgaW1wb3J0ZWQgZnJvbSB0aGUgc3RvcmUgKGlmIHlvdSB3YW50IHRvIGRpc2FibGUgc3ltbGlua3MgaW5zaWRlIG5vZGVfbW9kdWxlcywgdGhlbiB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIG5vZGVMaW5rZXIgc2V0dGluZywgbm90IHRoaXMgb25lKS5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGFja2FnZUltcG9ydE1ldGhvZFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2Qge1xuICAvKiogYXV0byAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG4gIC8qKiBoYXJkbGluayAqL1xuICBIQVJETElOSyA9IFwiaGFyZGxpbmtcIixcbiAgLyoqIGNvcHkgKi9cbiAgQ09QWSA9IFwiY29weVwiLFxuICAvKiogY2xvbmUgKi9cbiAgQ0xPTkUgPSBcImNsb25lXCIsXG4gIC8qKiBjbG9uZS1vci1jb3B5ICovXG4gIENMT05FX0hZUEhFTl9PUl9IWVBIRU5fQ09QWSA9IFwiY2xvbmUtb3ItY29weVwiLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIGNvbG9ycyBpbiB0aGUgb3V0cHV0LlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDb2xvclxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNvbG9yIHtcbiAgLyoqIGFsd2F5cyAqL1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxuICAvKiogYXV0byAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG4gIC8qKiBuZXZlciAqL1xuICBORVZFUiA9IFwibmV2ZXJcIixcbn1cblxuLyoqXG4gKiBBbnkgbG9ncyBhdCBvciBoaWdoZXIgdGhhbiB0aGUgZ2l2ZW4gbGV2ZWwgd2lsbCBiZSBzaG93bi5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMb2dsZXZlbCB7XG4gIC8qKiBkZWJ1ZyAqL1xuICBERUJVRyA9IFwiZGVidWdcIixcbiAgLyoqIGluZm8gKi9cbiAgSU5GTyA9IFwiaW5mb1wiLFxuICAvKiogd2FybiAqL1xuICBXQVJOID0gXCJ3YXJuXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbn1cblxuLyoqXG4gKiBBbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0IHN0eWxlIG9mIHRoZSBsb2dzLlxuICogaHR0cHM6Ly9wbnBtLmlvL2NsaS9pbnN0YWxsIy0tcmVwb3J0ZXJuYW1lXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlcG9ydGVyXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVwb3J0ZXIge1xuICAvKiogc2lsZW50ICovXG4gIFNJTEVOVCA9IFwic2lsZW50XCIsXG4gIC8qKiBkZWZhdWx0ICovXG4gIERFRkFVTFQgPSBcImRlZmF1bHRcIixcbiAgLyoqIGFwcGVuZC1vbmx5ICovXG4gIEFQUEVORF9IWVBIRU5fT05MWSA9IFwiYXBwZW5kLW9ubHlcIixcbiAgLyoqIG5kanNvbiAqL1xuICBOREpTT04gPSBcIm5kanNvblwiLFxufVxuXG4vKipcbiAqIElmIHRoaXMgaXMgZW5hYmxlZCwgbG9jYWxseSBhdmFpbGFibGUgcGFja2FnZXMgYXJlIGxpbmtlZCB0byBub2RlX21vZHVsZXMgaW5zdGVhZCBvZiBiZWluZyBkb3dubG9hZGVkIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQm9vbGVhbih2YWx1ZTogYm9vbGVhbik6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzKHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgbGlua2VkIGZyb20gdGhlIHdvcmtzcGFjZSBhcmUgYWRkZWQgdG8gcGFja2FnZS5qc29uLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlV29ya3NwYWNlUHJvdG9jb2xcbiAqL1xuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQm9vbGVhbih2YWx1ZTogYm9vbGVhbik6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sKHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICB9XG59XG5cbi8qKlxuICogQ29uZmlndXJlIGhvdyB2ZXJzaW9ucyBvZiBwYWNrYWdlcyBpbnN0YWxsZWQgdG8gYSBwYWNrYWdlLmpzb24gZmlsZSBnZXQgcHJlZml4ZWQuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVQcmVmaXhcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4IHtcbiAgLyoqIF4gKi9cbiAgVkFMVUVfQ0FSQVQgPSBcIl5cIixcbiAgLyoqIH4gKi9cbiAgVkFMVUVfVElMREUgPSBcIn5cIixcbiAgLyoqID0gKi9cbiAgVkFMVUVfRVFVQUxTID0gXCI9XCIsXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgcG5wbSByZXNvbHZlcyBkZXBlbmRlbmNpZXMsIFNlZSBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjcmVzb2x1dGlvbm1vZGVcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVzb2x1dGlvbk1vZGVcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXNvbHV0aW9uTW9kZSB7XG4gIC8qKiBoaWdoZXN0ICovXG4gIEhJR0hFU1QgPSBcImhpZ2hlc3RcIixcbiAgLyoqIHRpbWUtYmFzZWQgKi9cbiAgVElNRV9IWVBIRU5fQkFTRUQgPSBcInRpbWUtYmFzZWRcIixcbiAgLyoqIGxvd2VzdC1kaXJlY3QgKi9cbiAgTE9XRVNUX0hZUEhFTl9ESVJFQ1QgPSBcImxvd2VzdC1kaXJlY3RcIixcbn1cblxuLyoqXG4gKiBWZXJzaW9uaW5nIHNldHRpbmdzIGZvciBwbnBtJ3MgbmF0aXZlIHdvcmtzcGFjZSByZWxlYXNlIG1hbmFnZW1lbnQsIHVzZWQgYnkgYHBucG0gY2hhbmdlYCBhbmQgcmVjdXJzaXZlIGBwbnBtIHZlcnNpb25gLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nIHtcbiAgLyoqXG4gICAqIEdyb3VwcyBvZiB3b3Jrc3BhY2UgcHJvamVjdHMgdGhhdCBhbHdheXMgcmVsZWFzZSB0b2dldGhlciBhdCBvbmUgc2hhcmVkIHZlcnNpb24uIFRoZSBzaGFyZWQgdmVyc2lvbiBpcyB0aGUgaGlnaGVzdCBjdXJyZW50IHZlcnNpb24gaW4gdGhlIGdyb3VwLCBidW1wZWQgYnkgdGhlIGxhcmdlc3QgYnVtcCBhbnkgbWVtYmVyIG5lZWRzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyNmaXhlZFxuICAgKi9cbiAgcmVhZG9ubHkgZml4ZWQ/OiBzdHJpbmdbXVtdO1xuXG4gIC8qKlxuICAgKiBXb3Jrc3BhY2UgcHJvamVjdHMgcGVybWFuZW50bHkgZXhjbHVkZWQgZnJvbSB2ZXJzaW9uaW5nIGFuZCBkZXBlbmRlbnQgcHJvcGFnYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nI2lnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENhcHMgdGhlIGJ1bXAgdGhhdCBhIHJlbGVhc2UgZnJvbSB0aGUgY3VycmVudCBjaGVja291dCBtYXkgYXBwbHksIGFmdGVyIGRlcGVuZGVudCBwcm9wYWdhdGlvbiBhbmQgZml4ZWQtZ3JvdXAgcmVzb2x1dGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcjbWF4QnVtcFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4QnVtcD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ01heEJ1bXA7XG5cbiAgLyoqXG4gICAqIE1hcHMgYSB3b3Jrc3BhY2UgcHJvamVjdCB0byBhIHJlbGVhc2UgbGFuZS4gVW5saXN0ZWQgcHJvamVjdHMgYXJlIG9uIHRoZSByZXNlcnZlZCBgbWFpbmAgbGFuZSBhbmQgcmVsZWFzZSBzdGFibGUgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nI2xhbmVzXG4gICAqL1xuICByZWFkb25seSBsYW5lcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRpZXMgbWVtYmVyIHByb2plY3RzIHRvIGEgbGVhZCBwcm9qZWN0IGFuZCBjb25zdHJhaW5zIHRoZWlyIG1ham9yIHZlcnNpb25zIHRvIHRoZSBsZWFkJ3MgbWFqb3ItdmVyc2lvbiBiYW5kLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyNlcGljc1xuICAgKi9cbiAgcmVhZG9ubHkgZXBpY3M/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljc1tdO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGVyZSByZWxlYXNlIGNoYW5nZWxvZyBjb250ZW50IGlzIHN0b3JlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcjY2hhbmdlbG9nXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2Vsb2c/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2c7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2ZpeGVkJzogb2JqLmZpeGVkPy5tYXAoeSA9PiB5Py5tYXAoeSA9PiB5KSksXG4gICAgJ2lnbm9yZSc6IG9iai5pZ25vcmU/Lm1hcCh5ID0+IHkpLFxuICAgICdtYXhCdW1wJzogb2JqLm1heEJ1bXAsXG4gICAgJ2xhbmVzJzogKChvYmoubGFuZXMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5sYW5lcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2VwaWNzJzogb2JqLmVwaWNzPy5tYXAoeSA9PiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MoeSkpLFxuICAgICdjaGFuZ2Vsb2cnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nKG9iai5jaGFuZ2Vsb2cpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogV2hlbiBzZXQgdG8gbm8tZG93bmdyYWRlLCBwbnBtIHdpbGwgZmFpbCBpZiBhIHBhY2thZ2UncyB0cnVzdCBsZXZlbCBoYXMgZGVjcmVhc2VkIGNvbXBhcmVkIHRvIHByZXZpb3VzIHJlbGVhc2VzLiBGb3IgZXhhbXBsZSwgaWYgYSBwYWNrYWdlIHdhcyBwcmV2aW91c2x5IHB1Ymxpc2hlZCBieSBhIHRydXN0ZWQgcHVibGlzaGVyIGJ1dCBub3cgb25seSBoYXMgcHJvdmVuYW5jZSBvciBubyB0cnVzdCBldmlkZW5jZSwgaW5zdGFsbGF0aW9uIHdpbGwgZmFpbC4gVGhpcyBoZWxwcyBwcmV2ZW50IGluc3RhbGxpbmcgcG90ZW50aWFsbHkgY29tcHJvbWlzZWQgdmVyc2lvbnMuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5XG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVHJ1c3RQb2xpY3kge1xuICAvKiogb2ZmICovXG4gIE9GRiA9IFwib2ZmXCIsXG4gIC8qKiBuby1kb3duZ3JhZGUgKi9cbiAgTk9fSFlQSEVOX0RPV05HUkFERSA9IFwibm8tZG93bmdyYWRlXCIsXG59XG5cbi8qKlxuICogT25seSBwcmludCBhZHZpc29yaWVzIHdpdGggc2V2ZXJpdHkgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoaXMgbGV2ZWwuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsIHtcbiAgLyoqIGxvdyAqL1xuICBMT1cgPSBcImxvd1wiLFxuICAvKiogbW9kZXJhdGUgKi9cbiAgTU9ERVJBVEUgPSBcIm1vZGVyYXRlXCIsXG4gIC8qKiBoaWdoICovXG4gIEhJR0ggPSBcImhpZ2hcIixcbiAgLyoqIGNyaXRpY2FsICovXG4gIENSSVRJQ0FMID0gXCJjcml0aWNhbFwiLFxufVxuXG4vKipcbiAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgYmVoYXZpb3Igb2YgYm90aCB0aGUgYHBhY2thZ2VNYW5hZ2VyYCBmaWVsZCBhbmQgYGRldkVuZ2luZXMucGFja2FnZU1hbmFnZXJgIHdoZW4gdGhlIHJ1bm5pbmcgcG5wbSB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHRoZSBkZWNsYXJlZCBvbmUuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUG1PbkZhaWwge1xuICAvKiogZG93bmxvYWQgKi9cbiAgRE9XTkxPQUQgPSBcImRvd25sb2FkXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgLyoqIHdhcm4gKi9cbiAgV0FSTiA9IFwid2FyblwiLFxuICAvKiogaWdub3JlICovXG4gIElHTk9SRSA9IFwiaWdub3JlXCIsXG59XG5cbi8qKlxuICogT3ZlcnJpZGVzIHRoZSBgb25GYWlsYCBmaWVsZCBvZiBgZGV2RW5naW5lcy5ydW50aW1lYCAoYW5kIGBlbmdpbmVzLnJ1bnRpbWVgKSBpbiB0aGUgcm9vdCBwcm9qZWN0J3MgYHBhY2thZ2UuanNvbmAuIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgYSBkaWZmZXJlbnQgbG9jYWwgYmVoYXZpb3IgdGhhbiB3aGF0IGlzIHdyaXR0ZW4gaW4gdGhlIG1hbmlmZXN0IOKAlCBmb3IgaW5zdGFuY2UsIGZvcmNpbmcgcG5wbSB0byBkb3dubG9hZCB0aGUgZGVjbGFyZWQgcnVudGltZSBldmVuIHdoZW4gdGhlIG1hbmlmZXN0IHNldHMgYG9uRmFpbDogXCJ3YXJuXCJgLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSdW50aW1lT25GYWlsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbCB7XG4gIC8qKiBkb3dubG9hZCAqL1xuICBET1dOTE9BRCA9IFwiZG93bmxvYWRcIixcbiAgLyoqIGVycm9yICovXG4gIEVSUk9SID0gXCJlcnJvclwiLFxuICAvKiogd2FybiAqL1xuICBXQVJOID0gXCJ3YXJuXCIsXG4gIC8qKiBpZ25vcmUgKi9cbiAgSUdOT1JFID0gXCJpZ25vcmVcIixcbn1cblxuLyoqXG4gKiBBZGRlZCBhIG5ldyBob2lzdGluZ0xpbWl0cyBzZXR0aW5nIGZvciBgbm9kZUxpbmtlcjogaG9pc3RlZGAgaW5zdGFsbHMsIG1pcnJvcmluZyB5YXJuJ3MgYG5tSG9pc3RpbmdMaW1pdHNgLiBJdCBhY2NlcHRzIGBub25lYCAodGhlIGRlZmF1bHQg4oCUIGhvaXN0IGFzIGZhciBhcyBwb3NzaWJsZSksIHdvcmtzcGFjZXMgKGhvaXN0IG9ubHkgYXMgZmFyIGFzIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UpLCBvciBkZXBlbmRlbmNpZXMgKGhvaXN0IG9ubHkgdXAgdG8gZWFjaCB3b3Jrc3BhY2UgcGFja2FnZSdzIGRpcmVjdCBkZXBlbmRlbmNpZXMpLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0c1xuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUhvaXN0aW5nTGltaXRzIHtcbiAgLyoqIG5vbmUgKi9cbiAgTk9ORSA9IFwibm9uZVwiLFxuICAvKiogd29ya3NwYWNlcyAqL1xuICBXT1JLU1BBQ0VTID0gXCJ3b3Jrc3BhY2VzXCIsXG4gIC8qKiBkZXBlbmRlbmNpZXMgKi9cbiAgREVQRU5ERU5DSUVTID0gXCJkZXBlbmRlbmNpZXNcIixcbn1cblxuLyoqXG4gKiBDYXBzIHRoZSBidW1wIHRoYXQgYSByZWxlYXNlIGZyb20gdGhlIGN1cnJlbnQgY2hlY2tvdXQgbWF5IGFwcGx5LCBhZnRlciBkZXBlbmRlbnQgcHJvcGFnYXRpb24gYW5kIGZpeGVkLWdyb3VwIHJlc29sdXRpb24uXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdNYXhCdW1wXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ01heEJ1bXAge1xuICAvKiogcGF0Y2ggKi9cbiAgUEFUQ0ggPSBcInBhdGNoXCIsXG4gIC8qKiBtaW5vciAqL1xuICBNSU5PUiA9IFwibWlub3JcIixcbiAgLyoqIG1ham9yICovXG4gIE1BSk9SID0gXCJtYWpvclwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcyB7XG4gIC8qKlxuICAgKiBMZWFkIHdvcmtzcGFjZSBwcm9qZWN0IG5hbWUgb3IgYSBgLi9gLXByZWZpeGVkIHdvcmtzcGFjZS1yZWxhdGl2ZSBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MjbGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgbGVhZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcm9qZWN0IHNlbGVjdG9ycyBtYXRjaGVkIGluIG9yZGVyLCBzdXBwb3J0aW5nIG5hbWUgZ2xvYnMsIGAuL2AtcHJlZml4ZWQgZGlyZWN0b3J5IGdsb2JzLCBhbmQgYCFgLXByZWZpeGVkIG5lZ2F0aW9ucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcyNwYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdsZWFkJzogb2JqLmxlYWQsXG4gICAgJ3BhY2thZ2VzJzogb2JqLnBhY2thZ2VzPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIENvbnRyb2xzIHdoZXJlIHJlbGVhc2UgY2hhbmdlbG9nIGNvbnRlbnQgaXMgc3RvcmVkLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nIHtcbiAgLyoqXG4gICAqIENoYW5nZWxvZyBzdG9yYWdlIG1vZGUuIGByZWdpc3RyeWAgY29tcG9zZXMgY2hhbmdlbG9nIGVudHJpZXMgYXQgcHVibGlzaCB0aW1lLCB3aGlsZSBgcmVwb3NpdG9yeWAgY29tbWl0cyBDSEFOR0VMT0cubWQgZmlsZXMgaW4gcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nI3N0b3JhZ2VcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2U/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2dTdG9yYWdlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2cnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2cob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2cgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdzdG9yYWdlJzogb2JqLnN0b3JhZ2UsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBDaGFuZ2Vsb2cgc3RvcmFnZSBtb2RlLiBgcmVnaXN0cnlgIGNvbXBvc2VzIGNoYW5nZWxvZyBlbnRyaWVzIGF0IHB1Ymxpc2ggdGltZSwgd2hpbGUgYHJlcG9zaXRvcnlgIGNvbW1pdHMgQ0hBTkdFTE9HLm1kIGZpbGVzIGluIHBhY2thZ2VzLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nU3RvcmFnZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdDaGFuZ2Vsb2dTdG9yYWdlIHtcbiAgLyoqIHJlZ2lzdHJ5ICovXG4gIFJFR0lTVFJZID0gXCJyZWdpc3RyeVwiLFxuICAvKiogcmVwb3NpdG9yeSAqL1xuICBSRVBPU0lUT1JZID0gXCJyZXBvc2l0b3J5XCIsXG59XG4iXX0=
|