@codedrifters/configulator 0.0.77 → 0.0.79

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/lib/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export * from "./git/";
3
3
  export * from "./jsii/";
4
4
  export * from "./pnpm/";
5
5
  export * from "./projects/";
6
+ export * from "./tasks/";
6
7
  export * from "./turbo/";
7
8
  export * from "./typescript/";
8
9
  export * from "./vscode/";
package/lib/index.js CHANGED
@@ -19,8 +19,9 @@ __exportStar(require("./git/"), exports);
19
19
  __exportStar(require("./jsii/"), exports);
20
20
  __exportStar(require("./pnpm/"), exports);
21
21
  __exportStar(require("./projects/"), exports);
22
+ __exportStar(require("./tasks/"), exports);
22
23
  __exportStar(require("./turbo/"), exports);
23
24
  __exportStar(require("./typescript/"), exports);
24
25
  __exportStar(require("./vscode/"), exports);
25
26
  __exportStar(require("./workflows/"), exports);
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2Qix5Q0FBdUI7QUFDdkIsMENBQXdCO0FBQ3hCLDBDQUF3QjtBQUN4Qiw4Q0FBNEI7QUFDNUIsMkNBQXlCO0FBQ3pCLGdEQUE4QjtBQUM5Qiw0Q0FBMEI7QUFDMUIsK0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYXdzL1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2l0L1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vanNpaS9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BucG0vXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm9qZWN0cy9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R1cmJvL1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNjcmlwdC9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZzY29kZS9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dvcmtmbG93cy9cIjtcbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2Qix5Q0FBdUI7QUFDdkIsMENBQXdCO0FBQ3hCLDBDQUF3QjtBQUN4Qiw4Q0FBNEI7QUFDNUIsMkNBQXlCO0FBQ3pCLDJDQUF5QjtBQUN6QixnREFBOEI7QUFDOUIsNENBQTBCO0FBQzFCLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2F3cy9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2dpdC9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2pzaWkvXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbnBtL1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJvamVjdHMvXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90YXNrcy9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R1cmJvL1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNjcmlwdC9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZzY29kZS9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dvcmtmbG93cy9cIjtcbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  import { TypeScriptAppProject, TypeScriptProjectOptions } from "projen/lib/typescript";
2
2
  import { PnpmWorkspaceOptions } from "../pnpm/pnpm-workspace";
3
+ import { ResetTaskOptions } from "../tasks/reset-task";
3
4
  import { TurboRepoOptions } from "../turbo/turbo-repo";
4
5
  /*******************************************************************************
5
6
  *
@@ -25,6 +26,16 @@ export interface MonorepoProjectOptions extends Omit<TypeScriptProjectOptions, "
25
26
  * Optionsal options for turborepo config
26
27
  */
27
28
  turboOptions?: TurboRepoOptions;
29
+ /**
30
+ * Enable the reset task that deletes all build artifacts.
31
+ *
32
+ * @default true
33
+ */
34
+ resetTask?: boolean;
35
+ /**
36
+ * Options for the reset task.
37
+ */
38
+ resetTaskOptions?: ResetTaskOptions;
28
39
  /**
29
40
  * PNPM options for the monorepo.
30
41
  */
@@ -5,6 +5,7 @@ const javascript_1 = require("projen/lib/javascript");
5
5
  const typescript_1 = require("projen/lib/typescript");
6
6
  const ts_deepmerge_1 = require("ts-deepmerge");
7
7
  const pnpm_workspace_1 = require("../pnpm/pnpm-workspace");
8
+ const reset_task_1 = require("../tasks/reset-task");
8
9
  const turbo_repo_1 = require("../turbo/turbo-repo");
9
10
  const versions_1 = require("../versions");
10
11
  const vscode_1 = require("../vscode/vscode");
@@ -36,7 +37,7 @@ class MonorepoProject extends typescript_1.TypeScriptAppProject {
36
37
  /**
37
38
  * Projen version should be pinned to the local specified version.
38
39
  */
39
- projenVersion: versions_1.VERSION.PROJEN_VERSION,
40
+ projenVersion: "catalog:",
40
41
  /**
41
42
  * Use Prettier for code formatting.
42
43
  */
@@ -91,13 +92,14 @@ class MonorepoProject extends typescript_1.TypeScriptAppProject {
91
92
  * Enable turborepo by default.
92
93
  */
93
94
  turbo: true,
95
+ /**
96
+ * Enable reset task by default.
97
+ */
98
+ resetTask: true,
94
99
  /**
95
100
  * Include self as a devDep
96
101
  */
97
- devDeps: [
98
- "@codedrifters/configulator",
99
- `constructs@${versions_1.VERSION.AWS_CONSTRUCTS_VERSION}`,
100
- ],
102
+ devDeps: ["@codedrifters/configulator"],
101
103
  pnpmOptions: {
102
104
  pnpmWorkspaceOptions: {
103
105
  defaultCatalog: {
@@ -188,6 +190,23 @@ class MonorepoProject extends typescript_1.TypeScriptAppProject {
188
190
  run: `npx projen ${turbo_repo_1.ROOT_CI_TASK_NAME}`,
189
191
  });
190
192
  }
193
+ /**
194
+ * Add reset task if enabled.
195
+ */
196
+ if (options.resetTask !== false) {
197
+ const defaultResetTaskOptions = {
198
+ pathsToRemove: ["node_modules", ".turbo", "dist", "lib"],
199
+ };
200
+ const userResetTaskOptions = options.resetTaskOptions ?? {};
201
+ const resetTaskOptions = (0, ts_deepmerge_1.merge)(defaultResetTaskOptions, {
202
+ ...userResetTaskOptions,
203
+ pathsToRemove: [
204
+ ...(defaultResetTaskOptions.pathsToRemove ?? []),
205
+ ...(userResetTaskOptions.pathsToRemove ?? []),
206
+ ],
207
+ });
208
+ new reset_task_1.ResetTask(this, resetTaskOptions);
209
+ }
191
210
  /**
192
211
  * Specify package manager
193
212
  */
@@ -197,7 +216,11 @@ class MonorepoProject extends typescript_1.TypeScriptAppProject {
197
216
  * Add some silly things to the gitignore.
198
217
  */
199
218
  this.gitignore?.addPatterns(".DS_Store");
219
+ /**
220
+ * Use catalog version for constructs version
221
+ */
222
+ this.addDevDeps("constructs@catalog:");
200
223
  }
201
224
  }
202
225
  exports.MonorepoProject = MonorepoProject;
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9tb25vcmVwby1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNEQUEyRDtBQUMzRCxzREFHK0I7QUFDL0IsK0NBQXFDO0FBQ3JDLDJEQUE2RTtBQUM3RSxvREFJNkI7QUFDN0IsMENBQXNDO0FBQ3RDLDZDQUFnRDtBQXFEaEQsTUFBYSxlQUFnQixTQUFRLGlDQUFvQjtJQU12RCxZQUFZLFdBQW1DO1FBQzdDOzs7Ozs7b0ZBTTRFO1FBRTVFLE1BQU0sb0JBQW9CLEdBQWtDLFdBQVc7YUFDcEUsWUFBWSxFQUFFLGtCQUFrQjtZQUNqQyxDQUFDLENBQUMsc0JBQVMsQ0FBQyxvQkFBb0IsQ0FDNUIsV0FBVyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FDNUM7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVA7Ozs7OztvRkFNNEU7UUFFNUUsTUFBTSxjQUFjLEdBR2hCO1lBQ0Y7O2VBRUc7WUFDSCxVQUFVLEVBQUUsSUFBSTtZQUVoQjs7ZUFFRztZQUNILGFBQWEsRUFBRSxrQkFBTyxDQUFDLGNBQWM7WUFFckM7O2VBRUc7WUFDSCxRQUFRLEVBQUUsSUFBSTtZQUVkOztlQUVHO1lBQ0gsUUFBUSxFQUFFLEtBQUs7WUFFZjs7O2VBR0c7WUFDSCxhQUFhLEVBQUU7Z0JBQ2IsT0FBTyxFQUFFLEtBQUs7YUFDZjtZQUVEOztlQUVHO1lBQ0gsV0FBVyxFQUFFLGtCQUFPLENBQUMsWUFBWTtZQUVqQzs7ZUFFRztZQUNILFVBQVUsRUFBRSxLQUFLO1lBRWpCOztlQUVHO1lBQ0gsSUFBSSxFQUFFLEtBQUs7WUFFWDs7ZUFFRztZQUNILE9BQU8sRUFBRSxLQUFLO1lBRWQ7O2VBRUc7WUFDSCxXQUFXLEVBQUUsS0FBSztZQUVsQjs7OztlQUlHO1lBQ0gsa0JBQWtCLEVBQUUsSUFBSTtZQUV4Qjs7ZUFFRztZQUNILFFBQVEsRUFBRTtnQkFDUixlQUFlLEVBQUU7b0JBQ2YsT0FBTyxFQUFFLFNBQVM7aUJBQ25CO2dCQUNELE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUMxQjtZQUVEOztlQUVHO1lBQ0gsS0FBSyxFQUFFLElBQUk7WUFFWDs7ZUFFRztZQUNILE9BQU8sRUFBRTtnQkFDUCw0QkFBNEI7Z0JBQzVCLGNBQWMsa0JBQU8sQ0FBQyxzQkFBc0IsRUFBRTthQUMvQztZQUVELFdBQVcsRUFBRTtnQkFDWCxvQkFBb0IsRUFBRTtvQkFDcEIsY0FBYyxFQUFFO3dCQUNkLENBQUMsU0FBUyxDQUFDLEVBQUUsa0JBQU8sQ0FBQyxtQkFBbUI7d0JBQ3hDLENBQUMsYUFBYSxDQUFDLEVBQUUsa0JBQU8sQ0FBQyxtQkFBbUI7d0JBQzVDLENBQUMsUUFBUSxDQUFDLEVBQUUsa0JBQU8sQ0FBQyxjQUFjO3dCQUNsQyxDQUFDLFlBQVksQ0FBQyxFQUFFLGtCQUFPLENBQUMsc0JBQXNCO3dCQUM5QyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFPLENBQUMsYUFBYTtxQkFDakM7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRjs7Ozs7O29GQU00RTtRQUU1RSxNQUFNLGVBQWUsR0FBMkM7WUFDOUQ7OztlQUdHO1lBQ0gsb0JBQW9CLEVBQUUsTUFBTTtZQUU1Qjs7O2VBR0c7WUFDSCxjQUFjLEVBQUUsK0JBQWtCLENBQUMsSUFBSTtZQUV2Qzs7ZUFFRztZQUNILG9CQUFvQixFQUFFO2dCQUNwQixXQUFXLEVBQUU7b0JBQ1gsR0FBRyxvQkFBb0IsRUFBRSxXQUFXO29CQUNwQyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXO2lCQUNqRDtnQkFDRCxhQUFhLEVBQUU7b0JBQ2IsR0FBRyxDQUFDLG9CQUFvQixFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUM7b0JBQzlDLEdBQUcsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQztpQkFDM0Q7YUFDRjtTQUNGLENBQUM7UUFFRjs7Ozs7Ozs7b0ZBUTRFO1FBRTVFLE1BQU0sT0FBTyxHQUFtQixJQUFBLG9CQUFLLEVBQ25DLGNBQWMsRUFDZCxXQUFXLEVBQ1gsZUFBZSxDQUNoQixDQUFDO1FBRUYsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRXRCOzs7Ozs7O29GQU80RTtRQUU1RSxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFZLENBQUM7UUFFeEM7Ozs7Ozs7b0ZBTzRFO1FBRTVFOztXQUVHO1FBQ0gsSUFBSSxxQkFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZCOztXQUVHO1FBQ0gsSUFBSSw4QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFFbkU7O1dBRUc7UUFDSCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixJQUFJLHNCQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUUxQyxJQUFJLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDO2dCQUNwQyxJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixHQUFHLEVBQUUsY0FBYyw4QkFBaUIsRUFBRTthQUN2QyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUMzQixnQkFBZ0IsRUFDaEIsUUFBUSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQzlCLENBQUM7UUFFRjs7V0FFRztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQWhQRCwwQ0FnUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFdvcmtmbG93T3B0aW9ucyB9IGZyb20gXCJwcm9qZW4vbGliL2J1aWxkXCI7XG5pbXBvcnQgeyBOb2RlUGFja2FnZU1hbmFnZXIgfSBmcm9tIFwicHJvamVuL2xpYi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQge1xuICBUeXBlU2NyaXB0QXBwUHJvamVjdCxcbiAgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLFxufSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJ0cy1kZWVwbWVyZ2VcIjtcbmltcG9ydCB7IFBucG1Xb3Jrc3BhY2UsIFBucG1Xb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSBcIi4uL3BucG0vcG5wbS13b3Jrc3BhY2VcIjtcbmltcG9ydCB7XG4gIFJPT1RfQ0lfVEFTS19OQU1FLFxuICBUdXJib1JlcG8sXG4gIFR1cmJvUmVwb09wdGlvbnMsXG59IGZyb20gXCIuLi90dXJiby90dXJiby1yZXBvXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5pbXBvcnQgeyBWU0NvZGVDb25maWcgfSBmcm9tIFwiLi4vdnNjb2RlL3ZzY29kZVwiO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqIE1vbm9yZXBvIFJvb3QgUHJvamVjdFxuICpcbiAqIFRoaXMgcHJvamVjdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgYmFzZSBwcm9qZWN0IGZvciBvdGhlciBwcm9qZWN0cyBpbiBhXG4gKiBtb25vcmVwby4gVGhlIE1vbm9yZXBvIHJvb3QgcHJvamVjdCBnZW5lcmFsbHkgd29uJ3QgY29udGFpbiBhbnkgY29kZSwgYnV0IGl0XG4gKiB3aWxsIGNvbnRhaW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIG1vbm9yZXBvLCBzdWNoIGFzIHBhY2thZ2UgbWFuYWdlbWVudCxcbiAqIGxpbnRpbmcsIHRlc3RpbmcsIGFuZCBvdGhlciBwcm9qZWN0LXdpZGUgc2V0dGluZ3MuXG4gKlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBtb25vcmVwby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25vcmVwb1Byb2plY3RPcHRpb25zIGV4dGVuZHMgT21pdDxcbiAgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLFxuICBcImRlZmF1bHRSZWxlYXNlQnJhbmNoXCJcbj4ge1xuICAvKipcbiAgICogVHVybiBvbiBUdXJib3JlcG8gc3VwcG9ydC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgdHVyYm8/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zYWwgb3B0aW9ucyBmb3IgdHVyYm9yZXBvIGNvbmZpZ1xuICAgKi9cbiAgdHVyYm9PcHRpb25zPzogVHVyYm9SZXBvT3B0aW9ucztcblxuICAvKipcbiAgICogUE5QTSBvcHRpb25zIGZvciB0aGUgbW9ub3JlcG8uXG4gICAqL1xuICBwbnBtT3B0aW9ucz86IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdmVyc2lvbiBvZiBQTlBNIHRvIHVzZSBpbiB0aGUgbW9ub3JlcG8uXG4gICAgICogQGRlZmF1bHQgVkVSU0lPTi5QTlBNX1ZFUlNJT05cbiAgICAgKiBAc2VlIHtAbGluayBzcmMvdmVyc2lvbnMudHN9XG4gICAgICovXG4gICAgdmVyc2lvbj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIHBucG0gb3B0aW9ucyBmb3IgdGhlIG1vbm9yZXBvIHdvcmtzcGFjZSBmaWxlLlxuICAgICAqL1xuICAgIHBucG1Xb3Jrc3BhY2VPcHRpb25zPzogUG5wbVdvcmtzcGFjZU9wdGlvbnM7XG4gIH07XG59XG5cbmludGVyZmFjZSBBcHBsaWVkT3B0aW9uc1xuICBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucywgTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucyB7fVxuXG5leHBvcnQgY2xhc3MgTW9ub3JlcG9Qcm9qZWN0IGV4dGVuZHMgVHlwZVNjcmlwdEFwcFByb2plY3Qge1xuICAvKipcbiAgICogVmVyc2lvbiBvZiBQTlBNIHdoaWNoIHRoZSB3aG9sZSBtb25vcmVwbyBzaG91bGQgdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcG5wbVZlcnNpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih1c2VyT3B0aW9uczogTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucykge1xuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEJVSUxEIFdPUktGTE9XIE9QVElPTlNcbiAgICAgKlxuICAgICAqIGRpc2NvdmVyIHNvbWUgdHVyYm8gb3B0aW9ucyBmb3IgYnVpbGQgd29ya2Zsb3csIGlmIG5lZWRlZC5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IGJ1aWxkV29ya2Zsb3dPcHRpb25zOiBQYXJ0aWFsPEJ1aWxkV29ya2Zsb3dPcHRpb25zPiA9IHVzZXJPcHRpb25zXG4gICAgICAudHVyYm9PcHRpb25zPy5yZW1vdGVDYWNoZU9wdGlvbnNcbiAgICAgID8gVHVyYm9SZXBvLmJ1aWxkV29ya2Zsb3dPcHRpb25zKFxuICAgICAgICAgIHVzZXJPcHRpb25zLnR1cmJvT3B0aW9ucy5yZW1vdGVDYWNoZU9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgIDoge307XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBERUZBVUxUIE9QVElPTlNcbiAgICAgKlxuICAgICAqIFRoZXNlIGFyZSB0aGUgZGVmYXVsdCBvcHRpb25zIHVubGVzcyB5b3Ugb3ZlcnJpZGUgd2l0aCBvcHRpb24gaW5wdXRzLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgZGVmYXVsdE9wdGlvbnM6IE9taXQ8XG4gICAgICBNb25vcmVwb1Byb2plY3RPcHRpb25zLFxuICAgICAgXCJuYW1lXCIgfCBcImRlZmF1bHRSZWxlYXNlQnJhbmNoXCJcbiAgICA+ID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBVc2UgdHlwZXNjcmlwdCBiYXNlZCBjb25maWcgZmlsZS5cbiAgICAgICAqL1xuICAgICAgcHJvamVucmNUczogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBQcm9qZW4gdmVyc2lvbiBzaG91bGQgYmUgcGlubmVkIHRvIHRoZSBsb2NhbCBzcGVjaWZpZWQgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgcHJvamVuVmVyc2lvbjogVkVSU0lPTi5QUk9KRU5fVkVSU0lPTixcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2UgUHJldHRpZXIgZm9yIGNvZGUgZm9ybWF0dGluZy5cbiAgICAgICAqL1xuICAgICAgcHJldHRpZXI6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogTm90IGxpY2Vuc2VkIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIGxpY2Vuc2VkOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBHaXRIdWIgb3B0aW9ucyBmb3IgdGhlIG1vbm9yZXBvLlxuICAgICAgICogRG9uJ3QgZW5hYmxlIG1lcmdpZnkgYnkgZGVmYXVsdC5cbiAgICAgICAqL1xuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBtZXJnaWZ5OiBmYWxzZSxcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogRGVmYXVsdCBQTlBNIHZlcnNpb24gdG8gdXNlIGluIHRoZSBtb25vcmVwby5cbiAgICAgICAqL1xuICAgICAgcG5wbVZlcnNpb246IFZFUlNJT04uUE5QTV9WRVJTSU9OLFxuXG4gICAgICAvKipcbiAgICAgICAqIFdlIGRvbid0IHdhbnQgc2FtcGxlIGNvZGUgZ2VuZXJhdGVkIGZvciB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICovXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBKZXN0IGlzIG5vdCByZXF1aXJlZCBpbiB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICovXG4gICAgICBqZXN0OiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCByZWxlYXNlIHRoZSByb290IHByb2plY3QuXG4gICAgICAgKi9cbiAgICAgIHJlbGVhc2U6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIERvbid0IHVwZ3JhZGUgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkuXG4gICAgICAgKi9cbiAgICAgIGRlcHNVcGdyYWRlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEaXNhYmxlIHRzY29uZmlnLmRldi5qc29uIGluIHRoZSByb290IHNpbmNlIHdlIGFyZW4ndCBnb2luZyB0byBiZVxuICAgICAgICogZGV2ZWxvcGluZyBhbnkgY29kZSBoZXJlLiBJdCdzIGp1c3QgYSB0YXNrIHJ1bm5lciBhbmQgY29uZmlndXJhdGlvblxuICAgICAgICogdG9vbCBmb3Igc3ViLXByb2plY3RzLlxuICAgICAgICovXG4gICAgICBkaXNhYmxlVHNjb25maWdEZXY6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogS2lsbCB0aGUgc3JjZGlyIGluIHRoZSByb290IHNpbmNlIHdlIGFyZW4ndCB1c2luZyBvbmUuXG4gICAgICAgKi9cbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHJvb3REaXI6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgZXhjbHVkZTogW1wibm9kZV9tb2R1bGVzXCJdLFxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBFbmFibGUgdHVyYm9yZXBvIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIHR1cmJvOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEluY2x1ZGUgc2VsZiBhcyBhIGRldkRlcFxuICAgICAgICovXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgIFwiQGNvZGVkcmlmdGVycy9jb25maWd1bGF0b3JcIixcbiAgICAgICAgYGNvbnN0cnVjdHNAJHtWRVJTSU9OLkFXU19DT05TVFJVQ1RTX1ZFUlNJT059YCxcbiAgICAgIF0sXG5cbiAgICAgIHBucG1PcHRpb25zOiB7XG4gICAgICAgIHBucG1Xb3Jrc3BhY2VPcHRpb25zOiB7XG4gICAgICAgICAgZGVmYXVsdENhdGFsb2c6IHtcbiAgICAgICAgICAgIFtcImF3cy1jZGtcIl06IFZFUlNJT04uQVdTX0NES19DTElfVkVSU0lPTixcbiAgICAgICAgICAgIFtcImF3cy1jZGstbGliXCJdOiBWRVJTSU9OLkFXU19DREtfTElCX1ZFUlNJT04sXG4gICAgICAgICAgICBbXCJwcm9qZW5cIl06IFZFUlNJT04uUFJPSkVOX1ZFUlNJT04sXG4gICAgICAgICAgICBbXCJjb25zdHJ1Y3RzXCJdOiBWRVJTSU9OLkFXU19DT05TVFJVQ1RTX1ZFUlNJT04sXG4gICAgICAgICAgICBbXCJ0dXJib1wiXTogVkVSU0lPTi5UVVJCT19WRVJTSU9OLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBSRVFVSVJFRCBPUFRJT05TXG4gICAgICpcbiAgICAgKiBUaGVzZSBvcHRpb25zIGNhbm5vdCBiZSBjaGFuZ2VkIGJ5IHRoZSB1c2VyLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgcmVxdWlyZWRPcHRpb25zOiBPbWl0PFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucywgXCJuYW1lXCI+ID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgaXQncyBzdGFuZGFyZCBwcmFjdGljZSBhbmQgYWxzbyB0byBzaW1wbGlmeVxuICAgICAgICogc29tZSB3b3JrZmxvdyBkZXNpZ24uXG4gICAgICAgKi9cbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiBcIm1haW5cIixcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2UgUE5QTSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IChZYXJuKS4gTXVjaCBvZiB0aGUgZWNvc3lzdGVtIGRlcGVuZHNcbiAgICAgICAqIG9uIFBOUE0gYW5kIG1ha2luZyBtb25vcmVwb3MgUE5QTSBvbmx5IHNpbXBsaWZpZXMgbWFueSBjb25maWd1cmF0aW9ucy5cbiAgICAgICAqL1xuICAgICAgcGFja2FnZU1hbmFnZXI6IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNLFxuXG4gICAgICAvKipcbiAgICAgICAqIFNvbWUgYWRkaXRpb25hbCBwcmUtYnVpbGQgc3RlcHMgaWYgd2UncmUgdXNpbmcgdHVyYm8ncyByZW1vdGUgY2FjaGUuXG4gICAgICAgKi9cbiAgICAgIGJ1aWxkV29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgLi4uYnVpbGRXb3JrZmxvd09wdGlvbnM/LnBlcm1pc3Npb25zLFxuICAgICAgICAgIC4uLnVzZXJPcHRpb25zLmJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wZXJtaXNzaW9ucyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlQnVpbGRTdGVwczogW1xuICAgICAgICAgIC4uLihidWlsZFdvcmtmbG93T3B0aW9ucz8ucHJlQnVpbGRTdGVwcyA/PyBbXSksXG4gICAgICAgICAgLi4uKHVzZXJPcHRpb25zLmJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wcmVCdWlsZFN0ZXBzID8/IFtdKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIENPTlNUUlVDVE9SXG4gICAgICpcbiAgICAgKiBDb21iaW5lcyBkZWZhdWx0IG9wdGlvbnMgd2l0aCB1c2VyIHByb3ZpZGVkIG9wdGlvbnMgYW5kIHJlcXVpcmVkIG9wdGlvbnMuXG4gICAgICogU3RvcmUgdGhlIG9wdGlvbnMgaW4gYSBjb25zdCBzbyB3ZSBjYW4gdXNlIHRoZW0gYWZ0ZXIgc3VwZXIoKSwgZmFydGhlclxuICAgICAqIGludG8gdGhlIGNvbnN0cnVjdG9yIGZvciBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCBvcHRpb25zOiBBcHBsaWVkT3B0aW9ucyA9IG1lcmdlKFxuICAgICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgICB1c2VyT3B0aW9ucyxcbiAgICAgIHJlcXVpcmVkT3B0aW9ucyxcbiAgICApO1xuXG4gICAgc3VwZXIoeyAuLi5vcHRpb25zIH0pO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogUFVCTElDIFBST1BTXG4gICAgICpcbiAgICAgKiBTb21lIHByb3BzIGFyZSBoaWRkZW4gYnkgUHJvamVuIGFuZCB3ZSBuZWVkIHRvIGV4cG9zZSB0aGVtIGZvciB0aGVcbiAgICAgKiBtb25vcmVwbyB0byB3b3JrIHByb3Blcmx5LiBUaGlzIGlzIHdoZXJlIHdlIHN0b3JlIHRoZW0uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICB0aGlzLnBucG1WZXJzaW9uID0gb3B0aW9ucy5wbnBtVmVyc2lvbiE7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBDVVNUT00gQ09ORklHU1xuICAgICAqXG4gICAgICogV2UgYWRkIHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9ucyB0byB0aGUgbW9ub3JlcG8gcm9vdCBwcm9qZWN0IGJlbG93XG4gICAgICogc3VjaCBhcyBUdXJib3JlcG8sIFZTIENvZGUgY29uZmlnLCBhbmQgdGhlIFBOUE0gd29ya3NwYWNlIGZpbGUuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBBZGQgVlNDb2RlIGNvbmZpZ3VyYXRpb25cbiAgICAgKi9cbiAgICBuZXcgVlNDb2RlQ29uZmlnKHRoaXMpO1xuXG4gICAgLyoqXG4gICAgICogQWRkIHdvcmtzcGFjZSBkZWZpbml0aW9uIHRvIFBOUE0gcm9vdFxuICAgICAqL1xuICAgIG5ldyBQbnBtV29ya3NwYWNlKHRoaXMsIG9wdGlvbnMucG5wbU9wdGlvbnM/LnBucG1Xb3Jrc3BhY2VPcHRpb25zKTtcblxuICAgIC8qKlxuICAgICAqIFR1cm4gb24gdHVyYm9yZXBvIHN1cHBvcnQgaWYgcmVxdWVzdGVkLlxuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnR1cmJvKSB7XG4gICAgICBuZXcgVHVyYm9SZXBvKHRoaXMsIG9wdGlvbnMudHVyYm9PcHRpb25zKTtcblxuICAgICAgdGhpcy5idWlsZFdvcmtmbG93Py5hZGRQb3N0QnVpbGRTdGVwcyh7XG4gICAgICAgIG5hbWU6IFwiQnVpbGQgU3ViIFByb2plY3RzXCIsXG4gICAgICAgIHJ1bjogYG5weCBwcm9qZW4gJHtST09UX0NJX1RBU0tfTkFNRX1gLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3BlY2lmeSBwYWNrYWdlIG1hbmFnZXJcbiAgICAgKi9cbiAgICAvLyBjb25zdCBwbnBtVmVyc2lvbiA9IG9wdGlvbnMucG5wbVZlcnNpb24gPz8gVkVSU0lPTi5QTlBNX1ZFUlNJT047XG4gICAgdGhpcy5wYWNrYWdlLmZpbGUuYWRkT3ZlcnJpZGUoXG4gICAgICBcInBhY2thZ2VNYW5hZ2VyXCIsXG4gICAgICBgcG5wbUAke29wdGlvbnMucG5wbVZlcnNpb259YCxcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogQWRkIHNvbWUgc2lsbHkgdGhpbmdzIHRvIHRoZSBnaXRpZ25vcmUuXG4gICAgICovXG4gICAgdGhpcy5naXRpZ25vcmU/LmFkZFBhdHRlcm5zKFwiLkRTX1N0b3JlXCIpO1xuICB9XG59XG4iXX0=
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9tb25vcmVwby1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNEQUEyRDtBQUMzRCxzREFHK0I7QUFDL0IsK0NBQXFDO0FBQ3JDLDJEQUE2RTtBQUM3RSxvREFBa0U7QUFDbEUsb0RBSTZCO0FBQzdCLDBDQUFzQztBQUN0Qyw2Q0FBZ0Q7QUFpRWhELE1BQWEsZUFBZ0IsU0FBUSxpQ0FBb0I7SUFNdkQsWUFBWSxXQUFtQztRQUM3Qzs7Ozs7O29GQU00RTtRQUU1RSxNQUFNLG9CQUFvQixHQUFrQyxXQUFXO2FBQ3BFLFlBQVksRUFBRSxrQkFBa0I7WUFDakMsQ0FBQyxDQUFDLHNCQUFTLENBQUMsb0JBQW9CLENBQzVCLFdBQVcsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQzVDO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQOzs7Ozs7b0ZBTTRFO1FBRTVFLE1BQU0sY0FBYyxHQUdoQjtZQUNGOztlQUVHO1lBQ0gsVUFBVSxFQUFFLElBQUk7WUFFaEI7O2VBRUc7WUFDSCxhQUFhLEVBQUUsVUFBVTtZQUV6Qjs7ZUFFRztZQUNILFFBQVEsRUFBRSxJQUFJO1lBRWQ7O2VBRUc7WUFDSCxRQUFRLEVBQUUsS0FBSztZQUVmOzs7ZUFHRztZQUNILGFBQWEsRUFBRTtnQkFDYixPQUFPLEVBQUUsS0FBSzthQUNmO1lBRUQ7O2VBRUc7WUFDSCxXQUFXLEVBQUUsa0JBQU8sQ0FBQyxZQUFZO1lBRWpDOztlQUVHO1lBQ0gsVUFBVSxFQUFFLEtBQUs7WUFFakI7O2VBRUc7WUFDSCxJQUFJLEVBQUUsS0FBSztZQUVYOztlQUVHO1lBQ0gsT0FBTyxFQUFFLEtBQUs7WUFFZDs7ZUFFRztZQUNILFdBQVcsRUFBRSxLQUFLO1lBRWxCOzs7O2VBSUc7WUFDSCxrQkFBa0IsRUFBRSxJQUFJO1lBRXhCOztlQUVHO1lBQ0gsUUFBUSxF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LEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO2lCQUM5QzthQUNGLENBQ0YsQ0FBQztZQUNGLElBQUksc0JBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUMzQixnQkFBZ0IsRUFDaEIsUUFBUSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQzlCLENBQUM7UUFFRjs7V0FFRztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXpDOztXQUVHO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQTVRRCwwQ0E0UUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFdvcmtmbG93T3B0aW9ucyB9IGZyb20gXCJwcm9qZW4vbGliL2J1aWxkXCI7XG5pbXBvcnQgeyBOb2RlUGFja2FnZU1hbmFnZXIgfSBmcm9tIFwicHJvamVuL2xpYi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQge1xuICBUeXBlU2NyaXB0QXBwUHJvamVjdCxcbiAgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLFxufSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJ0cy1kZWVwbWVyZ2VcIjtcbmltcG9ydCB7IFBucG1Xb3Jrc3BhY2UsIFBucG1Xb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSBcIi4uL3BucG0vcG5wbS13b3Jrc3BhY2VcIjtcbmltcG9ydCB7IFJlc2V0VGFzaywgUmVzZXRUYXNrT3B0aW9ucyB9IGZyb20gXCIuLi90YXNrcy9yZXNldC10YXNrXCI7XG5pbXBvcnQge1xuICBST09UX0NJX1RBU0tfTkFNRSxcbiAgVHVyYm9SZXBvLFxuICBUdXJib1JlcG9PcHRpb25zLFxufSBmcm9tIFwiLi4vdHVyYm8vdHVyYm8tcmVwb1wiO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gXCIuLi92ZXJzaW9uc1wiO1xuaW1wb3J0IHsgVlNDb2RlQ29uZmlnIH0gZnJvbSBcIi4uL3ZzY29kZS92c2NvZGVcIjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiBNb25vcmVwbyBSb290IFByb2plY3RcbiAqXG4gKiBUaGlzIHByb2plY3Qgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGJhc2UgcHJvamVjdCBmb3Igb3RoZXIgcHJvamVjdHMgaW4gYVxuICogbW9ub3JlcG8uIFRoZSBNb25vcmVwbyByb290IHByb2plY3QgZ2VuZXJhbGx5IHdvbid0IGNvbnRhaW4gYW55IGNvZGUsIGJ1dCBpdFxuICogd2lsbCBjb250YWluIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBtb25vcmVwbywgc3VjaCBhcyBwYWNrYWdlIG1hbmFnZW1lbnQsXG4gKiBsaW50aW5nLCB0ZXN0aW5nLCBhbmQgb3RoZXIgcHJvamVjdC13aWRlIHNldHRpbmdzLlxuICpcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgbW9ub3JlcG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucyBleHRlbmRzIE9taXQ8XG4gIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbiAgXCJkZWZhdWx0UmVsZWFzZUJyYW5jaFwiXG4+IHtcbiAgLyoqXG4gICAqIFR1cm4gb24gVHVyYm9yZXBvIHN1cHBvcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHR1cmJvPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uc2FsIG9wdGlvbnMgZm9yIHR1cmJvcmVwbyBjb25maWdcbiAgICovXG4gIHR1cmJvT3B0aW9ucz86IFR1cmJvUmVwb09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgcmVzZXQgdGFzayB0aGF0IGRlbGV0ZXMgYWxsIGJ1aWxkIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVzZXRUYXNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIHJlc2V0IHRhc2suXG4gICAqL1xuICByZXNldFRhc2tPcHRpb25zPzogUmVzZXRUYXNrT3B0aW9ucztcblxuICAvKipcbiAgICogUE5QTSBvcHRpb25zIGZvciB0aGUgbW9ub3JlcG8uXG4gICAqL1xuICBwbnBtT3B0aW9ucz86IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdmVyc2lvbiBvZiBQTlBNIHRvIHVzZSBpbiB0aGUgbW9ub3JlcG8uXG4gICAgICogQGRlZmF1bHQgVkVSU0lPTi5QTlBNX1ZFUlNJT05cbiAgICAgKiBAc2VlIHtAbGluayBzcmMvdmVyc2lvbnMudHN9XG4gICAgICovXG4gICAgdmVyc2lvbj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIHBucG0gb3B0aW9ucyBmb3IgdGhlIG1vbm9yZXBvIHdvcmtzcGFjZSBmaWxlLlxuICAgICAqL1xuICAgIHBucG1Xb3Jrc3BhY2VPcHRpb25zPzogUG5wbVdvcmtzcGFjZU9wdGlvbnM7XG4gIH07XG59XG5cbmludGVyZmFjZSBBcHBsaWVkT3B0aW9uc1xuICBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucywgTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucyB7fVxuXG5leHBvcnQgY2xhc3MgTW9ub3JlcG9Qcm9qZWN0IGV4dGVuZHMgVHlwZVNjcmlwdEFwcFByb2plY3Qge1xuICAvKipcbiAgICogVmVyc2lvbiBvZiBQTlBNIHdoaWNoIHRoZSB3aG9sZSBtb25vcmVwbyBzaG91bGQgdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcG5wbVZlcnNpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih1c2VyT3B0aW9uczogTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucykge1xuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEJVSUxEIFdPUktGTE9XIE9QVElPTlNcbiAgICAgKlxuICAgICAqIGRpc2NvdmVyIHNvbWUgdHVyYm8gb3B0aW9ucyBmb3IgYnVpbGQgd29ya2Zsb3csIGlmIG5lZWRlZC5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IGJ1aWxkV29ya2Zsb3dPcHRpb25zOiBQYXJ0aWFsPEJ1aWxkV29ya2Zsb3dPcHRpb25zPiA9IHVzZXJPcHRpb25zXG4gICAgICAudHVyYm9PcHRpb25zPy5yZW1vdGVDYWNoZU9wdGlvbnNcbiAgICAgID8gVHVyYm9SZXBvLmJ1aWxkV29ya2Zsb3dPcHRpb25zKFxuICAgICAgICAgIHVzZXJPcHRpb25zLnR1cmJvT3B0aW9ucy5yZW1vdGVDYWNoZU9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgIDoge307XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBERUZBVUxUIE9QVElPTlNcbiAgICAgKlxuICAgICAqIFRoZXNlIGFyZSB0aGUgZGVmYXVsdCBvcHRpb25zIHVubGVzcyB5b3Ugb3ZlcnJpZGUgd2l0aCBvcHRpb24gaW5wdXRzLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgZGVmYXVsdE9wdGlvbnM6IE9taXQ8XG4gICAgICBNb25vcmVwb1Byb2plY3RPcHRpb25zLFxuICAgICAgXCJuYW1lXCIgfCBcImRlZmF1bHRSZWxlYXNlQnJhbmNoXCJcbiAgICA+ID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBVc2UgdHlwZXNjcmlwdCBiYXNlZCBjb25maWcgZmlsZS5cbiAgICAgICAqL1xuICAgICAgcHJvamVucmNUczogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBQcm9qZW4gdmVyc2lvbiBzaG91bGQgYmUgcGlubmVkIHRvIHRoZSBsb2NhbCBzcGVjaWZpZWQgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgcHJvamVuVmVyc2lvbjogXCJjYXRhbG9nOlwiLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZSBQcmV0dGllciBmb3IgY29kZSBmb3JtYXR0aW5nLlxuICAgICAgICovXG4gICAgICBwcmV0dGllcjogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBOb3QgbGljZW5zZWQgYnkgZGVmYXVsdC5cbiAgICAgICAqL1xuICAgICAgbGljZW5zZWQ6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEdpdEh1YiBvcHRpb25zIGZvciB0aGUgbW9ub3JlcG8uXG4gICAgICAgKiBEb24ndCBlbmFibGUgbWVyZ2lmeSBieSBkZWZhdWx0LlxuICAgICAgICovXG4gICAgICBnaXRodWJPcHRpb25zOiB7XG4gICAgICAgIG1lcmdpZnk6IGZhbHNlLFxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEZWZhdWx0IFBOUE0gdmVyc2lvbiB0byB1c2UgaW4gdGhlIG1vbm9yZXBvLlxuICAgICAgICovXG4gICAgICBwbnBtVmVyc2lvbjogVkVSU0lPTi5QTlBNX1ZFUlNJT04sXG5cbiAgICAgIC8qKlxuICAgICAgICogV2UgZG9uJ3Qgd2FudCBzYW1wbGUgY29kZSBnZW5lcmF0ZWQgZm9yIHRoZSByb290IHByb2plY3QuXG4gICAgICAgKi9cbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEplc3QgaXMgbm90IHJlcXVpcmVkIGluIHRoZSByb290IHByb2plY3QuXG4gICAgICAgKi9cbiAgICAgIGplc3Q6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIERvbid0IHJlbGVhc2UgdGhlIHJvb3QgcHJvamVjdC5cbiAgICAgICAqL1xuICAgICAgcmVsZWFzZTogZmFsc2UsXG5cbiAgICAgIC8qKlxuICAgICAgICogRG9uJ3QgdXBncmFkZSBkZXBlbmRlbmNpZXMgYXV0b21hdGljYWxseS5cbiAgICAgICAqL1xuICAgICAgZGVwc1VwZ3JhZGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIERpc2FibGUgdHNjb25maWcuZGV2Lmpzb24gaW4gdGhlIHJvb3Qgc2luY2Ugd2UgYXJlbid0IGdvaW5nIHRvIGJlXG4gICAgICAgKiBkZXZlbG9waW5nIGFueSBjb2RlIGhlcmUuIEl0J3MganVzdCBhIHRhc2sgcnVubmVyIGFuZCBjb25maWd1cmF0aW9uXG4gICAgICAgKiB0b29sIGZvciBzdWItcHJvamVjdHMuXG4gICAgICAgKi9cbiAgICAgIGRpc2FibGVUc2NvbmZpZ0RldjogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBLaWxsIHRoZSBzcmNkaXIgaW4gdGhlIHJvb3Qgc2luY2Ugd2UgYXJlbid0IHVzaW5nIG9uZS5cbiAgICAgICAqL1xuICAgICAgdHNjb25maWc6IHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgcm9vdERpcjogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgICBleGNsdWRlOiBbXCJub2RlX21vZHVsZXNcIl0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEVuYWJsZSB0dXJib3JlcG8gYnkgZGVmYXVsdC5cbiAgICAgICAqL1xuICAgICAgdHVyYm86IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogRW5hYmxlIHJlc2V0IHRhc2sgYnkgZGVmYXVsdC5cbiAgICAgICAqL1xuICAgICAgcmVzZXRUYXNrOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEluY2x1ZGUgc2VsZiBhcyBhIGRldkRlcFxuICAgICAgICovXG4gICAgICBkZXZEZXBzOiBbXCJAY29kZWRyaWZ0ZXJzL2NvbmZpZ3VsYXRvclwiXSxcblxuICAgICAgcG5wbU9wdGlvbnM6IHtcbiAgICAgICAgcG5wbVdvcmtzcGFjZU9wdGlvbnM6IHtcbiAgICAgICAgICBkZWZhdWx0Q2F0YWxvZzoge1xuICAgICAgICAgICAgW1wiYXdzLWNka1wiXTogVkVSU0lPTi5BV1NfQ0RLX0NMSV9WRVJTSU9OLFxuICAgICAgICAgICAgW1wiYXdzLWNkay1saWJcIl06IFZFUlNJT04uQVdTX0NES19MSUJfVkVSU0lPTixcbiAgICAgICAgICAgIFtcInByb2plblwiXTogVkVSU0lPTi5QUk9KRU5fVkVSU0lPTixcbiAgICAgICAgICAgIFtcImNvbnN0cnVjdHNcIl06IFZFUlNJT04uQVdTX0NPTlNUUlVDVFNfVkVSU0lPTixcbiAgICAgICAgICAgIFtcInR1cmJvXCJdOiBWRVJTSU9OLlRVUkJPX1ZFUlNJT04sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFJFUVVJUkVEIE9QVElPTlNcbiAgICAgKlxuICAgICAqIFRoZXNlIG9wdGlvbnMgY2Fubm90IGJlIGNoYW5nZWQgYnkgdGhlIHVzZXIuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCByZXF1aXJlZE9wdGlvbnM6IE9taXQ8VHlwZVNjcmlwdFByb2plY3RPcHRpb25zLCBcIm5hbWVcIj4gPSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBpdCdzIHN0YW5kYXJkIHByYWN0aWNlIGFuZCBhbHNvIHRvIHNpbXBsaWZ5XG4gICAgICAgKiBzb21lIHdvcmtmbG93IGRlc2lnbi5cbiAgICAgICAqL1xuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZSBQTlBNIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgKFlhcm4pLiBNdWNoIG9mIHRoZSBlY29zeXN0ZW0gZGVwZW5kc1xuICAgICAgICogb24gUE5QTSBhbmQgbWFraW5nIG1vbm9yZXBvcyBQTlBNIG9ubHkgc2ltcGxpZmllcyBtYW55IGNvbmZpZ3VyYXRpb25zLlxuICAgICAgICovXG4gICAgICBwYWNrYWdlTWFuYWdlcjogTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0sXG5cbiAgICAgIC8qKlxuICAgICAgICogU29tZSBhZGRpdGlvbmFsIHByZS1idWlsZCBzdGVwcyBpZiB3ZSdyZSB1c2luZyB0dXJibydzIHJlbW90ZSBjYWNoZS5cbiAgICAgICAqL1xuICAgICAgYnVpbGRXb3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICAuLi5idWlsZFdvcmtmbG93T3B0aW9ucz8ucGVybWlzc2lvbnMsXG4gICAgICAgICAgLi4udXNlck9wdGlvbnMuYnVpbGRXb3JrZmxvd09wdGlvbnM/LnBlcm1pc3Npb25zLFxuICAgICAgICB9LFxuICAgICAgICBwcmVCdWlsZFN0ZXBzOiBbXG4gICAgICAgICAgLi4uKGJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wcmVCdWlsZFN0ZXBzID8/IFtdKSxcbiAgICAgICAgICAuLi4odXNlck9wdGlvbnMuYnVpbGRXb3JrZmxvd09wdGlvbnM/LnByZUJ1aWxkU3RlcHMgPz8gW10pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQ09OU1RSVUNUT1JcbiAgICAgKlxuICAgICAqIENvbWJpbmVzIGRlZmF1bHQgb3B0aW9ucyB3aXRoIHVzZXIgcHJvdmlkZWQgb3B0aW9ucyBhbmQgcmVxdWlyZWQgb3B0aW9ucy5cbiAgICAgKiBTdG9yZSB0aGUgb3B0aW9ucyBpbiBhIGNvbnN0IHNvIHdlIGNhbiB1c2UgdGhlbSBhZnRlciBzdXBlcigpLCBmYXJ0aGVyXG4gICAgICogaW50byB0aGUgY29uc3RydWN0b3IgZm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IG9wdGlvbnM6IEFwcGxpZWRPcHRpb25zID0gbWVyZ2UoXG4gICAgICBkZWZhdWx0T3B0aW9ucyxcbiAgICAgIHVzZXJPcHRpb25zLFxuICAgICAgcmVxdWlyZWRPcHRpb25zLFxuICAgICk7XG5cbiAgICBzdXBlcih7IC4uLm9wdGlvbnMgfSk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBQVUJMSUMgUFJPUFNcbiAgICAgKlxuICAgICAqIFNvbWUgcHJvcHMgYXJlIGhpZGRlbiBieSBQcm9qZW4gYW5kIHdlIG5lZWQgdG8gZXhwb3NlIHRoZW0gZm9yIHRoZVxuICAgICAqIG1vbm9yZXBvIHRvIHdvcmsgcHJvcGVybHkuIFRoaXMgaXMgd2hlcmUgd2Ugc3RvcmUgdGhlbS5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIHRoaXMucG5wbVZlcnNpb24gPSBvcHRpb25zLnBucG1WZXJzaW9uITtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIENVU1RPTSBDT05GSUdTXG4gICAgICpcbiAgICAgKiBXZSBhZGQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zIHRvIHRoZSBtb25vcmVwbyByb290IHByb2plY3QgYmVsb3dcbiAgICAgKiBzdWNoIGFzIFR1cmJvcmVwbywgVlMgQ29kZSBjb25maWcsIGFuZCB0aGUgUE5QTSB3b3Jrc3BhY2UgZmlsZS5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qKlxuICAgICAqIEFkZCBWU0NvZGUgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIG5ldyBWU0NvZGVDb25maWcodGhpcyk7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgd29ya3NwYWNlIGRlZmluaXRpb24gdG8gUE5QTSByb290XG4gICAgICovXG4gICAgbmV3IFBucG1Xb3Jrc3BhY2UodGhpcywgb3B0aW9ucy5wbnBtT3B0aW9ucz8ucG5wbVdvcmtzcGFjZU9wdGlvbnMpO1xuXG4gICAgLyoqXG4gICAgICogVHVybiBvbiB0dXJib3JlcG8gc3VwcG9ydCBpZiByZXF1ZXN0ZWQuXG4gICAgICovXG4gICAgaWYgKG9wdGlvbnMudHVyYm8pIHtcbiAgICAgIG5ldyBUdXJib1JlcG8odGhpcywgb3B0aW9ucy50dXJib09wdGlvbnMpO1xuXG4gICAgICB0aGlzLmJ1aWxkV29ya2Zsb3c/LmFkZFBvc3RCdWlsZFN0ZXBzKHtcbiAgICAgICAgbmFtZTogXCJCdWlsZCBTdWIgUHJvamVjdHNcIixcbiAgICAgICAgcnVuOiBgbnB4IHByb2plbiAke1JPT1RfQ0lfVEFTS19OQU1FfWAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgcmVzZXQgdGFzayBpZiBlbmFibGVkLlxuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnJlc2V0VGFzayAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRSZXNldFRhc2tPcHRpb25zOiBSZXNldFRhc2tPcHRpb25zID0ge1xuICAgICAgICBwYXRoc1RvUmVtb3ZlOiBbXCJub2RlX21vZHVsZXNcIiwgXCIudHVyYm9cIiwgXCJkaXN0XCIsIFwibGliXCJdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHVzZXJSZXNldFRhc2tPcHRpb25zID0gb3B0aW9ucy5yZXNldFRhc2tPcHRpb25zID8/IHt9O1xuICAgICAgY29uc3QgcmVzZXRUYXNrT3B0aW9uczogUmVzZXRUYXNrT3B0aW9ucyA9IG1lcmdlKFxuICAgICAgICBkZWZhdWx0UmVzZXRUYXNrT3B0aW9ucyxcbiAgICAgICAge1xuICAgICAgICAgIC4uLnVzZXJSZXNldFRhc2tPcHRpb25zLFxuICAgICAgICAgIHBhdGhzVG9SZW1vdmU6IFtcbiAgICAgICAgICAgIC4uLihkZWZhdWx0UmVzZXRUYXNrT3B0aW9ucy5wYXRoc1RvUmVtb3ZlID8/IFtdKSxcbiAgICAgICAgICAgIC4uLih1c2VyUmVzZXRUYXNrT3B0aW9ucy5wYXRoc1RvUmVtb3ZlID8/IFtdKSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIG5ldyBSZXNldFRhc2sodGhpcywgcmVzZXRUYXNrT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3BlY2lmeSBwYWNrYWdlIG1hbmFnZXJcbiAgICAgKi9cbiAgICAvLyBjb25zdCBwbnBtVmVyc2lvbiA9IG9wdGlvbnMucG5wbVZlcnNpb24gPz8gVkVSU0lPTi5QTlBNX1ZFUlNJT047XG4gICAgdGhpcy5wYWNrYWdlLmZpbGUuYWRkT3ZlcnJpZGUoXG4gICAgICBcInBhY2thZ2VNYW5hZ2VyXCIsXG4gICAgICBgcG5wbUAke29wdGlvbnMucG5wbVZlcnNpb259YCxcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogQWRkIHNvbWUgc2lsbHkgdGhpbmdzIHRvIHRoZSBnaXRpZ25vcmUuXG4gICAgICovXG4gICAgdGhpcy5naXRpZ25vcmU/LmFkZFBhdHRlcm5zKFwiLkRTX1N0b3JlXCIpO1xuXG4gICAgLyoqXG4gICAgICogVXNlIGNhdGFsb2cgdmVyc2lvbiBmb3IgY29uc3RydWN0cyB2ZXJzaW9uXG4gICAgICovXG4gICAgdGhpcy5hZGREZXZEZXBzKFwiY29uc3RydWN0c0BjYXRhbG9nOlwiKTtcbiAgfVxufVxuIl19
@@ -1,4 +1,20 @@
1
1
  import { typescript } from "projen";
2
+ import { ResetTaskOptions } from "../tasks/reset-task";
3
+ /**
4
+ * Configuration options for TypeScriptProject.
5
+ */
6
+ export interface TypeScriptProjectOptions extends Omit<typescript.TypeScriptProjectOptions, "defaultReleaseBranch"> {
7
+ /**
8
+ * Enable the reset task that deletes all build artifacts.
9
+ *
10
+ * @default true
11
+ */
12
+ readonly resetTask?: boolean;
13
+ /**
14
+ * Options for the reset task.
15
+ */
16
+ readonly resetTaskOptions?: ResetTaskOptions;
17
+ }
2
18
  export declare class TypeScriptProject extends typescript.TypeScriptProject {
3
- constructor(userOptions: Omit<typescript.TypeScriptProjectOptions, "defaultReleaseBranch">);
19
+ constructor(userOptions: TypeScriptProjectOptions);
4
20
  }
@@ -7,6 +7,7 @@ const release_1 = require("projen/lib/release");
7
7
  const ts_deepmerge_1 = require("ts-deepmerge");
8
8
  const monorepo_project_1 = require("./monorepo-project");
9
9
  const pnpm_1 = require("../pnpm");
10
+ const reset_task_1 = require("../tasks/reset-task");
10
11
  const turbo_1 = require("../turbo");
11
12
  const versions_1 = require("../versions");
12
13
  class TypeScriptProject extends projen_1.typescript.TypeScriptProject {
@@ -35,6 +36,10 @@ class TypeScriptProject extends projen_1.typescript.TypeScriptProject {
35
36
  * This is a standard, so don't require it to passed in everywhere.
36
37
  */
37
38
  defaultReleaseBranch: "main",
39
+ /**
40
+ * Enable reset task by default.
41
+ */
42
+ resetTask: true,
38
43
  /**
39
44
  * Packaging options
40
45
  */
@@ -144,7 +149,33 @@ class TypeScriptProject extends projen_1.typescript.TypeScriptProject {
144
149
  turbo.compileTask?.outputs.push("lib/**");
145
150
  //turbo.testTask?.inputs.push("src/**");
146
151
  }
152
+ /**
153
+ * Add reset task if enabled.
154
+ */
155
+ if (options.resetTask !== false) {
156
+ const defaultResetTaskOptions = {
157
+ pathsToRemove: [
158
+ "node_modules",
159
+ "dist",
160
+ "lib",
161
+ "coverage",
162
+ "test-reports",
163
+ ".turbo",
164
+ "tsconfig.tsbuildinfo",
165
+ this.artifactsDirectory,
166
+ ],
167
+ };
168
+ const userResetTaskOptions = options.resetTaskOptions ?? {};
169
+ const resetTaskOptions = (0, ts_deepmerge_1.merge)(defaultResetTaskOptions, {
170
+ ...userResetTaskOptions,
171
+ pathsToRemove: [
172
+ ...(defaultResetTaskOptions.pathsToRemove ?? []),
173
+ ...(userResetTaskOptions.pathsToRemove ?? []),
174
+ ],
175
+ });
176
+ new reset_task_1.ResetTask(this, resetTaskOptions);
177
+ }
147
178
  }
148
179
  }
149
180
  exports.TypeScriptProject = TypeScriptProject;
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plY3RzL3R5cGVzY3JpcHQtcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0M7QUFDcEMsc0RBSStCO0FBQy9CLGdEQUFvRDtBQUVwRCwrQ0FBcUM7QUFDckMseURBQXFEO0FBQ3JELGtDQUF3QztBQUN4QyxvQ0FBcUM7QUFDckMsMENBQXNDO0FBRXRDLE1BQWEsaUJBQWtCLFNBQVEsbUJBQVUsQ0FBQyxpQkFBaUI7SUFDakUsWUFDRSxXQUdDO1FBRUQ7Ozs7V0FJRztRQUNILE1BQU0sV0FBVyxHQUNmLFdBQVcsQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sWUFBWSxrQ0FBZTtZQUNqRSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXO1lBQ2hDLENBQUMsQ0FBQyxrQkFBTyxDQUFDLFlBQVksQ0FBQztRQUUzQjs7V0FFRztRQUNILE1BQU0sYUFBYSxHQUNqQixXQUFXLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLFlBQVksa0NBQWU7WUFDakUsQ0FBQyxDQUFDLG9CQUFhLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUF5QixDQUFDO1lBQ3pELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFaEI7Ozs7a0ZBSTBFO1FBRTFFLE1BQU0sY0FBYyxHQUEyQztZQUM3RDs7ZUFFRztZQUNILG9CQUFvQixFQUFFLE1BQU07WUFFNUI7O2VBRUc7WUFDSCxjQUFjLEVBQUUsK0JBQWtCLENBQUMsSUFBSTtZQUN2QyxXQUFXLEVBQUUsV0FBVztZQUN4QixRQUFRLEVBQUUsV0FBVyxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksS0FBSztZQUNwRCxjQUFjLEVBQUUsY0FBYztZQUM5QixPQUFPLEVBQUUsS0FBSztZQUVkOztlQUVHO1lBQ0gsVUFBVSxFQUFFLEtBQUs7WUFFakI7O2VBRUc7WUFDSCxXQUFXLEVBQUU7Z0JBQ1gsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDeEIsU0FBUyxFQUFFO3dCQUNULENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxzQkFBUyxDQUFDLFdBQVcsQ0FBQztxQkFDOUM7b0JBQ0Qsb0JBQW9CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO2lCQUNuQzthQUNGO1lBRUQ7O2VBRUc7WUFDSCxRQUFRLEVBQUUsSUFBSTtZQUVkOztlQUVHO1lBQ0gsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztZQUVuQzs7ZUFFRztZQUNILGdCQUFnQixFQUFFO2dCQUNoQixjQUFjLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO2FBQ3pDO1lBRUQ7Ozs7O2VBS0c7WUFDSCxrQkFBa0IsRUFBRTtnQkFDbEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGNBQWMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pELEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLFlBQVksa0NBQWU7b0JBQ3JFLENBQUMsQ0FBQzt3QkFDRSxlQUFlLEVBQUU7NEJBQ2YsUUFBUSxFQUFFLHdDQUEyQixDQUFDLE1BQU07eUJBQzdDO3dCQUNELFFBQVEsRUFBRSxDQUFDO3FCQUNaO29CQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDUjtZQUVEOztlQUVHO1lBQ0gsY0FBYyxFQUFFLHdCQUFjLENBQUMsVUFBVSxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQzthQUNwQyxDQUFDO1NBQ0gsQ0FBQztRQUVGOzs7O2tGQUkwRTtRQUUxRSxNQUFNLE9BQU8sR0FBNkIsSUFBQSxvQkFBSyxFQUM3QyxjQUFjLEVBQ2QsV0FBVyxDQUNaLENBQUM7UUFFRixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZjs7V0FFRztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEM7O1dBRUc7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQzNCLGdCQUFnQixFQUNoQixRQUFRLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FDOUIsQ0FBQztRQUVGOzs7Ozs7Ozs7V0FTRztRQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUM7WUFDckMsS0FBSyxFQUFFO2dCQUNMLG1DQUFtQyxFQUFFLEtBQUs7YUFDM0M7U0FDRixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFcEU7O1dBRUc7UUFDSCxNQUFNLFdBQVcsR0FDZixXQUFXLENBQUMsTUFBTSxJQUFJLGlCQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxTQUFTLENBQUM7UUFDdkUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLEtBQUssR0FBRyxJQUFJLGlCQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNDLEtBQUssQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyx3Q0FBd0M7UUFDMUMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXpLRCw4Q0F5S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlc2NyaXB0IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHtcbiAgTm9kZVBhY2thZ2VNYW5hZ2VyLFxuICBUcmFuc2Zvcm0sXG4gIFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZSxcbn0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgUmVsZWFzZVRyaWdnZXIgfSBmcm9tIFwicHJvamVuL2xpYi9yZWxlYXNlXCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJ0cy1kZWVwbWVyZ2VcIjtcbmltcG9ydCB7IE1vbm9yZXBvUHJvamVjdCB9IGZyb20gXCIuL21vbm9yZXBvLXByb2plY3RcIjtcbmltcG9ydCB7IFBucG1Xb3Jrc3BhY2UgfSBmcm9tIFwiLi4vcG5wbVwiO1xuaW1wb3J0IHsgVHVyYm9SZXBvIH0gZnJvbSBcIi4uL3R1cmJvXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0UHJvamVjdCBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICB1c2VyT3B0aW9uczogT21pdDxcbiAgICAgIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLFxuICAgICAgXCJkZWZhdWx0UmVsZWFzZUJyYW5jaFwiXG4gICAgPixcbiAgKSB7XG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBQTlBNIHZlcnNpb24gdG8gdXNlLiBUaGlzIHdpbGwgZWl0aGVyIGNvbWUgZnJvbSB0aGUgTW9ub1JlcG9cbiAgICAgKiByb290IG9yIGZyb20gdGhlIGRlZmF1bHQgc3BlY2lmaWVkIGluIGNvbmZpZ3VsYXRvci4gSWYgdGhlIHVzZXIgcGFzc2VzXG4gICAgICogaW4gYSBkaWZmZXJlbnQgcG5wbVZlcnNpb24gaXQgd2lsbCBhbHNvIG92ZXJyaWRlIHRoaXMuXG4gICAgICovXG4gICAgY29uc3QgcG5wbVZlcnNpb24gPVxuICAgICAgdXNlck9wdGlvbnMucGFyZW50ICYmIHVzZXJPcHRpb25zLnBhcmVudCBpbnN0YW5jZW9mIE1vbm9yZXBvUHJvamVjdFxuICAgICAgICA/IHVzZXJPcHRpb25zLnBhcmVudC5wbnBtVmVyc2lvblxuICAgICAgICA6IFZFUlNJT04uUE5QTV9WRVJTSU9OO1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwbnBtIHdvcmtzcGFjZSBmcm9tIHRoZSBwYXJlbnQgcHJvamVjdC5cbiAgICAgKi9cbiAgICBjb25zdCBwbnBtV29ya3NwYWNlID1cbiAgICAgIHVzZXJPcHRpb25zLnBhcmVudCAmJiB1c2VyT3B0aW9ucy5wYXJlbnQgaW5zdGFuY2VvZiBNb25vcmVwb1Byb2plY3RcbiAgICAgICAgPyBQbnBtV29ya3NwYWNlLm9mKHVzZXJPcHRpb25zLnBhcmVudCBhcyBNb25vcmVwb1Byb2plY3QpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIERlZmF1bHQgT3B0aW9uc1xuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBPbWl0PFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucywgXCJuYW1lXCI+ID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIGlzIGEgc3RhbmRhcmQsIHNvIGRvbid0IHJlcXVpcmUgaXQgdG8gcGFzc2VkIGluIGV2ZXJ5d2hlcmUuXG4gICAgICAgKi9cbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiBcIm1haW5cIixcblxuICAgICAgLyoqXG4gICAgICAgKiBQYWNrYWdpbmcgb3B0aW9uc1xuICAgICAgICovXG4gICAgICBwYWNrYWdlTWFuYWdlcjogTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0sXG4gICAgICBwbnBtVmVyc2lvbjogcG5wbVZlcnNpb24sXG4gICAgICBsaWNlbnNlZDogdXNlck9wdGlvbnMubGljZW5zZSAhPT0gdW5kZWZpbmVkIHx8IGZhbHNlLFxuICAgICAgY29weXJpZ2h0T3duZXI6IFwiQ29kZURyaWZ0ZXJzXCIsXG4gICAgICByZWxlYXNlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCBhZGQgc2FtcGxlIGNvZGUuXG4gICAgICAgKi9cbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIE1ha2Ugc3VyZSBqZXN0IGNvbmZpZyBpcyBzdG9yZWQgb3V0c2lkZSBvZiBwYWNrYWdlLmpzb25cbiAgICAgICAqL1xuICAgICAgamVzdE9wdGlvbnM6IHtcbiAgICAgICAgY29uZmlnRmlsZVBhdGg6IFwiamVzdC5jb25maWcuanNvblwiLFxuICAgICAgICBqZXN0Q29uZmlnOiB7XG4gICAgICAgICAgcm9vdHM6IFtgPHJvb3REaXI+L3NyY2BdLFxuICAgICAgICAgIHRyYW5zZm9ybToge1xuICAgICAgICAgICAgW1wiXi4rXFxcXC5bdF1zeD8kXCJdOiBuZXcgVHJhbnNmb3JtKFwiQHN3Yy9qZXN0XCIpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW9kdWxlRmlsZUV4dGVuc2lvbnM6IFtcImpzXCIsIFwidHNcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFR1cm4gb24gcHJldHRpZXIgZm9ybWF0dGluZ1xuICAgICAgICovXG4gICAgICBwcmV0dGllcjogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBTV0MgZm9yIGZhc3RlciB0ZXN0aW5nXG4gICAgICAgKi9cbiAgICAgIGRldkRlcHM6IFtcIkBzd2MvamVzdFwiLCBcIkBzd2MvY29yZVwiXSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCBwYWNrYWdlIHRlc3QgZmlsZXMuXG4gICAgICAgKi9cbiAgICAgIG5wbUlnbm9yZU9wdGlvbnM6IHtcbiAgICAgICAgaWdub3JlUGF0dGVybnM6IFtcIiouc3BlYy4qXCIsIFwiKi50ZXN0LipcIl0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIE9wdGlvbnMgZm9yIHRoZSBhdXRvbWF0ZWQgZGVwZW5kZW5jeSB1cGdyYWRlIHRhc2sgLyB3b3JrZmxvd1xuICAgICAgICogQXV0b21hdGljYWxseSBleGNsdWRlIGFueSBwYWNrYWdlcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5IHRoZSByb290XG4gICAgICAgKiBwcm9qZWN0IGFzIGRlZmF1bHQgY2F0YWxvZyBkZXBlbmRlbmNpZXMgc2luY2Ugd2Ugd2FudCB0byBsZXQgdGhlXG4gICAgICAgKiBjYXRhbG9nIG1hbmFnZSB0aG9zZSBkZXBlbmRlbmNpZXMuXG4gICAgICAgKi9cbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICBleGNsdWRlOiBPYmplY3Qua2V5cyhwbnBtV29ya3NwYWNlPy5kZWZhdWx0Q2F0YWxvZyB8fCB7fSksXG4gICAgICAgIC4uLih1c2VyT3B0aW9ucy5wYXJlbnQgJiYgdXNlck9wdGlvbnMucGFyZW50IGluc3RhbmNlb2YgTW9ub3JlcG9Qcm9qZWN0XG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHNjaGVkdWxlOiBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuV0VFS0xZLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjb29sZG93bjogMSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogT25seSByZWxlYXNlIHdoZW4gdGhlIHBhY2thZ2UgZm9sZGVyIGNvbnRlbnQgY2hhbmdlc1xuICAgICAgICovXG4gICAgICByZWxlYXNlVHJpZ2dlcjogUmVsZWFzZVRyaWdnZXIuY29udGludW91cyh7XG4gICAgICAgIHBhdGhzOiBbYCR7dXNlck9wdGlvbnMub3V0ZGlyfS8qKmBdLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBNZXJnZSBkZWZhdWx0cyBpbnRvIHVzZXIgb3B0aW9uc1xuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IG9wdGlvbnM6IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyA9IG1lcmdlKFxuICAgICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgICB1c2VyT3B0aW9ucyxcbiAgICApO1xuXG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgamVzdCBzaW5jZSB3ZSd2ZSBzd2FwcGVkIGluIEBzd2MvamVzdCBpbnN0ZWFkIG9mIHRzLWplc3QuXG4gICAgICovXG4gICAgdGhpcy5kZXBzLnJlbW92ZURlcGVuZGVuY3koXCJ0cy1qZXN0XCIpO1xuXG4gICAgLyoqXG4gICAgICogU3BlY2lmeSBwYWNrYWdlIG1hbmFnZXJcbiAgICAgKi9cbiAgICB0aGlzLnBhY2thZ2UuZmlsZS5hZGRPdmVycmlkZShcbiAgICAgIFwicGFja2FnZU1hbmFnZXJcIixcbiAgICAgIGBwbnBtQCR7b3B0aW9ucy5wbnBtVmVyc2lvbn1gLFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIERpc2FibGUgdGhpcyBydWxlIGZvciBhbGwgdGVzdCBmaWxlcy5cbiAgICAgKlxuICAgICAqIFVubGVzcyB3ZSB0dXJuIHRoaXMgb2ZmLCBFU0xpbnQgd2lsbCBzdWdnZXN0IHRoYXQgYW55dGhpbmcgZm91bmQgaW4gYSB0ZXN0XG4gICAgICogbmVlZHMgdG8gYmUgYSBkZXAgaW5zdGVhZCBvZiBhIGRldkRlcC4gUHJvamVuIGFjdHVhbGx5IGFscmVhZHkgdHVybnMgb2ZmXG4gICAgICogdGhlIHJ1bGUgZm9yIGZpbGVzIGluIHRoZSB0ZXN0cy8qIGZvbGRlciBidXQgc2luY2Ugd2UgY29tbW9ubHkgcHV0IHRlc3RzXG4gICAgICogbmV4dCB0byB0aGUgY29kZSBpdCdzIHRlc3RpbmcsIHdlIG5lZWQgdG8gZG8gdGhpcyBvdXJzZWx2ZXMuXG4gICAgICpcbiAgICAgKi9cbiAgICB0aGlzLmVzbGludD8uYWRkT3ZlcnJpZGUoe1xuICAgICAgZmlsZXM6IFtcIioqLyoudGVzdC4qXCIsIFwiKiovKi5zcGVjLipcIl0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcImltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1wiOiBcIm9mZlwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFNvbWUgc3RhbmRhcmQgaWdub3JlcyBmb3IgYWxsIHByb2plY3RzLlxuICAgICAqL1xuICAgIHRoaXMuZ2l0aWdub3JlPy5hZGRQYXR0ZXJucyhcIi5EU19TdG9yZVwiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uYWRkUGF0dGVybnMoXCIqLnNwZWMuKlwiLCBcIioudGVzdC4qXCIsIFwiX19maXh0dXJlc19fXCIpO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHVyYm8gaXMgYWN0aXZlIGluIHRoZSBwYXJlbnQgcHJvamVjdCwgY29uZmlndXJlIGl0IGhlcmUuXG4gICAgICovXG4gICAgY29uc3QgdHVyYm9BY3RpdmUgPVxuICAgICAgdXNlck9wdGlvbnMucGFyZW50ICYmIFR1cmJvUmVwby5vZih1c2VyT3B0aW9ucy5wYXJlbnQpICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKHR1cmJvQWN0aXZlKSB7XG4gICAgICBjb25zdCB0dXJibyA9IG5ldyBUdXJib1JlcG8odGhpcyk7XG4gICAgICB0dXJiby5jb21waWxlVGFzaz8ub3V0cHV0cy5wdXNoKFwiZGlzdC8qKlwiKTtcbiAgICAgIHR1cmJvLmNvbXBpbGVUYXNrPy5vdXRwdXRzLnB1c2goXCJsaWIvKipcIik7XG4gICAgICAvL3R1cmJvLnRlc3RUYXNrPy5pbnB1dHMucHVzaChcInNyYy8qKlwiKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plY3RzL3R5cGVzY3JpcHQtcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0M7QUFDcEMsc0RBSStCO0FBQy9CLGdEQUFvRDtBQUNwRCwrQ0FBcUM7QUFDckMseURBQXFEO0FBQ3JELGtDQUF3QztBQUN4QyxvREFBa0U7QUFDbEUsb0NBQXFDO0FBQ3JDLDBDQUFzQztBQXNCdEMsTUFBYSxpQkFBa0IsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQUNqRSxZQUFZLFdBQXFDO1FBQy9DOzs7O1dBSUc7UUFDSCxNQUFNLFdBQVcsR0FDZixXQUFXLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLFlBQVksa0NBQWU7WUFDakUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVztZQUNoQyxDQUFDLENBQUMsa0JBQU8sQ0FBQyxZQUFZLENBQUM7UUFFM0I7O1dBRUc7UUFDSCxNQUFNLGFBQWEsR0FDakIsV0FBVyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxZQUFZLGtDQUFlO1lBQ2pFLENBQUMsQ0FBQyxvQkFBYSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBeUIsQ0FBQztZQUN6RCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWhCOzs7O2tGQUkwRTtRQUUxRSxNQUFNLGNBQWMsR0FFaEI7WUFDRjs7ZUFFRztZQUNILG9CQUFvQixFQUFFLE1BQU07WUFFNUI7O2VBRUc7WUFDSCxTQUFTLEVBQUUsSUFBSTtZQUVmOztlQUVHO1lBQ0gsY0FBYyxFQUFFLCtCQUFrQixDQUFDLElBQUk7WUFDdkMsV0FBVyxFQUFFLFdBQVc7WUFDeEIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLEtBQUs7WUFDcEQsY0FBYyxFQUFFLGNBQWM7WUFDOUIsT0FBTyxFQUFFLEtBQUs7WUFF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QUFxQjtnQkFDaEQsYUFBYSxFQUFFO29CQUNiLGNBQWM7b0JBQ2QsTUFBTTtvQkFDTixLQUFLO29CQUNMLFVBQVU7b0JBQ1YsY0FBYztvQkFDZCxRQUFRO29CQUNSLHNCQUFzQjtvQkFDdEIsSUFBSSxDQUFDLGtCQUFrQjtpQkFDeEI7YUFDRixDQUFDO1lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1lBQzVELE1BQU0sZ0JBQWdCLEdBQXFCLElBQUEsb0JBQUssRUFDOUMsdUJBQXVCLEVBQ3ZCO2dCQUNFLEdBQUcsb0JBQW9CO2dCQUN2QixhQUFhLEVBQUU7b0JBQ2IsR0FBRyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7b0JBQ2hELEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO2lCQUM5QzthQUNGLENBQ0YsQ0FBQztZQUNGLElBQUksc0JBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdk1ELDhDQXVNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGVzY3JpcHQgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQge1xuICBOb2RlUGFja2FnZU1hbmFnZXIsXG4gIFRyYW5zZm9ybSxcbiAgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlLFxufSBmcm9tIFwicHJvamVuL2xpYi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBSZWxlYXNlVHJpZ2dlciB9IGZyb20gXCJwcm9qZW4vbGliL3JlbGVhc2VcIjtcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcInRzLWRlZXBtZXJnZVwiO1xuaW1wb3J0IHsgTW9ub3JlcG9Qcm9qZWN0IH0gZnJvbSBcIi4vbW9ub3JlcG8tcHJvamVjdFwiO1xuaW1wb3J0IHsgUG5wbVdvcmtzcGFjZSB9IGZyb20gXCIuLi9wbnBtXCI7XG5pbXBvcnQgeyBSZXNldFRhc2ssIFJlc2V0VGFza09wdGlvbnMgfSBmcm9tIFwiLi4vdGFza3MvcmVzZXQtdGFza1wiO1xuaW1wb3J0IHsgVHVyYm9SZXBvIH0gZnJvbSBcIi4uL3R1cmJvXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBUeXBlU2NyaXB0UHJvamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBPbWl0PFxuICB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbiAgXCJkZWZhdWx0UmVsZWFzZUJyYW5jaFwiXG4+IHtcbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgcmVzZXQgdGFzayB0aGF0IGRlbGV0ZXMgYWxsIGJ1aWxkIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzZXRUYXNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIHJlc2V0IHRhc2suXG4gICAqL1xuICByZWFkb25seSByZXNldFRhc2tPcHRpb25zPzogUmVzZXRUYXNrT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRQcm9qZWN0IGV4dGVuZHMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKHVzZXJPcHRpb25zOiBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IFBOUE0gdmVyc2lvbiB0byB1c2UuIFRoaXMgd2lsbCBlaXRoZXIgY29tZSBmcm9tIHRoZSBNb25vUmVwb1xuICAgICAqIHJvb3Qgb3IgZnJvbSB0aGUgZGVmYXVsdCBzcGVjaWZpZWQgaW4gY29uZmlndWxhdG9yLiBJZiB0aGUgdXNlciBwYXNzZXNcbiAgICAgKiBpbiBhIGRpZmZlcmVudCBwbnBtVmVyc2lvbiBpdCB3aWxsIGFsc28gb3ZlcnJpZGUgdGhpcy5cbiAgICAgKi9cbiAgICBjb25zdCBwbnBtVmVyc2lvbiA9XG4gICAgICB1c2VyT3B0aW9ucy5wYXJlbnQgJiYgdXNlck9wdGlvbnMucGFyZW50IGluc3RhbmNlb2YgTW9ub3JlcG9Qcm9qZWN0XG4gICAgICAgID8gdXNlck9wdGlvbnMucGFyZW50LnBucG1WZXJzaW9uXG4gICAgICAgIDogVkVSU0lPTi5QTlBNX1ZFUlNJT047XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHBucG0gd29ya3NwYWNlIGZyb20gdGhlIHBhcmVudCBwcm9qZWN0LlxuICAgICAqL1xuICAgIGNvbnN0IHBucG1Xb3Jrc3BhY2UgPVxuICAgICAgdXNlck9wdGlvbnMucGFyZW50ICYmIHVzZXJPcHRpb25zLnBhcmVudCBpbnN0YW5jZW9mIE1vbm9yZXBvUHJvamVjdFxuICAgICAgICA/IFBucG1Xb3Jrc3BhY2Uub2YodXNlck9wdGlvbnMucGFyZW50IGFzIE1vbm9yZXBvUHJvamVjdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogRGVmYXVsdCBPcHRpb25zXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgZGVmYXVsdE9wdGlvbnM6IE9taXQ8VHlwZVNjcmlwdFByb2plY3RPcHRpb25zLCBcIm5hbWVcIj4gJiB7XG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogc3RyaW5nO1xuICAgIH0gPSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoaXMgaXMgYSBzdGFuZGFyZCwgc28gZG9uJ3QgcmVxdWlyZSBpdCB0byBwYXNzZWQgaW4gZXZlcnl3aGVyZS5cbiAgICAgICAqL1xuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxuXG4gICAgICAvKipcbiAgICAgICAqIEVuYWJsZSByZXNldCB0YXNrIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIHJlc2V0VGFzazogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBQYWNrYWdpbmcgb3B0aW9uc1xuICAgICAgICovXG4gICAgICBwYWNrYWdlTWFuYWdlcjogTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0sXG4gICAgICBwbnBtVmVyc2lvbjogcG5wbVZlcnNpb24sXG4gICAgICBsaWNlbnNlZDogdXNlck9wdGlvbnMubGljZW5zZSAhPT0gdW5kZWZpbmVkIHx8IGZhbHNlLFxuICAgICAgY29weXJpZ2h0T3duZXI6IFwiQ29kZURyaWZ0ZXJzXCIsXG4gICAgICByZWxlYXNlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCBhZGQgc2FtcGxlIGNvZGUuXG4gICAgICAgKi9cbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIE1ha2Ugc3VyZSBqZXN0IGNvbmZpZyBpcyBzdG9yZWQgb3V0c2lkZSBvZiBwYWNrYWdlLmpzb25cbiAgICAgICAqL1xuICAgICAgamVzdE9wdGlvbnM6IHtcbiAgICAgICAgY29uZmlnRmlsZVBhdGg6IFwiamVzdC5jb25maWcuanNvblwiLFxuICAgICAgICBqZXN0Q29uZmlnOiB7XG4gICAgICAgICAgcm9vdHM6IFtgPHJvb3REaXI+L3NyY2BdLFxuICAgICAgICAgIHRyYW5zZm9ybToge1xuICAgICAgICAgICAgW1wiXi4rXFxcXC5bdF1zeD8kXCJdOiBuZXcgVHJhbnNmb3JtKFwiQHN3Yy9qZXN0XCIpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW9kdWxlRmlsZUV4dGVuc2lvbnM6IFtcImpzXCIsIFwidHNcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFR1cm4gb24gcHJldHRpZXIgZm9ybWF0dGluZ1xuICAgICAgICovXG4gICAgICBwcmV0dGllcjogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBTV0MgZm9yIGZhc3RlciB0ZXN0aW5nXG4gICAgICAgKi9cbiAgICAgIGRldkRlcHM6IFtcIkBzd2MvamVzdFwiLCBcIkBzd2MvY29yZVwiXSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCBwYWNrYWdlIHRlc3QgZmlsZXMuXG4gICAgICAgKi9cbiAgICAgIG5wbUlnbm9yZU9wdGlvbnM6IHtcbiAgICAgICAgaWdub3JlUGF0dGVybnM6IFtcIiouc3BlYy4qXCIsIFwiKi50ZXN0LipcIl0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIE9wdGlvbnMgZm9yIHRoZSBhdXRvbWF0ZWQgZGVwZW5kZW5jeSB1cGdyYWRlIHRhc2sgLyB3b3JrZmxvd1xuICAgICAgICogQXV0b21hdGljYWxseSBleGNsdWRlIGFueSBwYWNrYWdlcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5IHRoZSByb290XG4gICAgICAgKiBwcm9qZWN0IGFzIGRlZmF1bHQgY2F0YWxvZyBkZXBlbmRlbmNpZXMgc2luY2Ugd2Ugd2FudCB0byBsZXQgdGhlXG4gICAgICAgKiBjYXRhbG9nIG1hbmFnZSB0aG9zZSBkZXBlbmRlbmNpZXMuXG4gICAgICAgKi9cbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICBleGNsdWRlOiBPYmplY3Qua2V5cyhwbnBtV29ya3NwYWNlPy5kZWZhdWx0Q2F0YWxvZyB8fCB7fSksXG4gICAgICAgIC4uLih1c2VyT3B0aW9ucy5wYXJlbnQgJiYgdXNlck9wdGlvbnMucGFyZW50IGluc3RhbmNlb2YgTW9ub3JlcG9Qcm9qZWN0XG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHNjaGVkdWxlOiBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuV0VFS0xZLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjb29sZG93bjogMSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogT25seSByZWxlYXNlIHdoZW4gdGhlIHBhY2thZ2UgZm9sZGVyIGNvbnRlbnQgY2hhbmdlc1xuICAgICAgICovXG4gICAgICByZWxlYXNlVHJpZ2dlcjogUmVsZWFzZVRyaWdnZXIuY29udGludW91cyh7XG4gICAgICAgIHBhdGhzOiBbYCR7dXNlck9wdGlvbnMub3V0ZGlyfS8qKmBdLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBNZXJnZSBkZWZhdWx0cyBpbnRvIHVzZXIgb3B0aW9uc1xuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IG9wdGlvbnM6IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyAmXG4gICAgICB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyA9IG1lcmdlKGRlZmF1bHRPcHRpb25zLCB1c2VyT3B0aW9ucyk7XG5cbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBqZXN0IHNpbmNlIHdlJ3ZlIHN3YXBwZWQgaW4gQHN3Yy9qZXN0IGluc3RlYWQgb2YgdHMtamVzdC5cbiAgICAgKi9cbiAgICB0aGlzLmRlcHMucmVtb3ZlRGVwZW5kZW5jeShcInRzLWplc3RcIik7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZ5IHBhY2thZ2UgbWFuYWdlclxuICAgICAqL1xuICAgIHRoaXMucGFja2FnZS5maWxlLmFkZE92ZXJyaWRlKFxuICAgICAgXCJwYWNrYWdlTWFuYWdlclwiLFxuICAgICAgYHBucG1AJHtvcHRpb25zLnBucG1WZXJzaW9ufWAsXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogRGlzYWJsZSB0aGlzIHJ1bGUgZm9yIGFsbCB0ZXN0IGZpbGVzLlxuICAgICAqXG4gICAgICogVW5sZXNzIHdlIHR1cm4gdGhpcyBvZmYsIEVTTGludCB3aWxsIHN1Z2dlc3QgdGhhdCBhbnl0aGluZyBmb3VuZCBpbiBhIHRlc3RcbiAgICAgKiBuZWVkcyB0byBiZSBhIGRlcCBpbnN0ZWFkIG9mIGEgZGV2RGVwLiBQcm9qZW4gYWN0dWFsbHkgYWxyZWFkeSB0dXJucyBvZmZcbiAgICAgKiB0aGUgcnVsZSBmb3IgZmlsZXMgaW4gdGhlIHRlc3RzLyogZm9sZGVyIGJ1dCBzaW5jZSB3ZSBjb21tb25seSBwdXQgdGVzdHNcbiAgICAgKiBuZXh0IHRvIHRoZSBjb2RlIGl0J3MgdGVzdGluZywgd2UgbmVlZCB0byBkbyB0aGlzIG91cnNlbHZlcy5cbiAgICAgKlxuICAgICAqL1xuICAgIHRoaXMuZXNsaW50Py5hZGRPdmVycmlkZSh7XG4gICAgICBmaWxlczogW1wiKiovKi50ZXN0LipcIiwgXCIqKi8qLnNwZWMuKlwiXSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIFwiaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXCI6IFwib2ZmXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogU29tZSBzdGFuZGFyZCBpZ25vcmVzIGZvciBhbGwgcHJvamVjdHMuXG4gICAgICovXG4gICAgdGhpcy5naXRpZ25vcmU/LmFkZFBhdHRlcm5zKFwiLkRTX1N0b3JlXCIpO1xuICAgIHRoaXMubnBtaWdub3JlPy5hZGRQYXR0ZXJucyhcIiouc3BlYy4qXCIsIFwiKi50ZXN0LipcIiwgXCJfX2ZpeHR1cmVzX19cIik7XG5cbiAgICAvKipcbiAgICAgKiBJZiB0dXJibyBpcyBhY3RpdmUgaW4gdGhlIHBhcmVudCBwcm9qZWN0LCBjb25maWd1cmUgaXQgaGVyZS5cbiAgICAgKi9cbiAgICBjb25zdCB0dXJib0FjdGl2ZSA9XG4gICAgICB1c2VyT3B0aW9ucy5wYXJlbnQgJiYgVHVyYm9SZXBvLm9mKHVzZXJPcHRpb25zLnBhcmVudCkgIT09IHVuZGVmaW5lZDtcbiAgICBpZiAodHVyYm9BY3RpdmUpIHtcbiAgICAgIGNvbnN0IHR1cmJvID0gbmV3IFR1cmJvUmVwbyh0aGlzKTtcbiAgICAgIHR1cmJvLmNvbXBpbGVUYXNrPy5vdXRwdXRzLnB1c2goXCJkaXN0LyoqXCIpO1xuICAgICAgdHVyYm8uY29tcGlsZVRhc2s/Lm91dHB1dHMucHVzaChcImxpYi8qKlwiKTtcbiAgICAgIC8vdHVyYm8udGVzdFRhc2s/LmlucHV0cy5wdXNoKFwic3JjLyoqXCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCByZXNldCB0YXNrIGlmIGVuYWJsZWQuXG4gICAgICovXG4gICAgaWYgKG9wdGlvbnMucmVzZXRUYXNrICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgZGVmYXVsdFJlc2V0VGFza09wdGlvbnM6IFJlc2V0VGFza09wdGlvbnMgPSB7XG4gICAgICAgIHBhdGhzVG9SZW1vdmU6IFtcbiAgICAgICAgICBcIm5vZGVfbW9kdWxlc1wiLFxuICAgICAgICAgIFwiZGlzdFwiLFxuICAgICAgICAgIFwibGliXCIsXG4gICAgICAgICAgXCJjb3ZlcmFnZVwiLFxuICAgICAgICAgIFwidGVzdC1yZXBvcnRzXCIsXG4gICAgICAgICAgXCIudHVyYm9cIixcbiAgICAgICAgICBcInRzY29uZmlnLnRzYnVpbGRpbmZvXCIsXG4gICAgICAgICAgdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdXNlclJlc2V0VGFza09wdGlvbnMgPSBvcHRpb25zLnJlc2V0VGFza09wdGlvbnMgPz8ge307XG4gICAgICBjb25zdCByZXNldFRhc2tPcHRpb25zOiBSZXNldFRhc2tPcHRpb25zID0gbWVyZ2UoXG4gICAgICAgIGRlZmF1bHRSZXNldFRhc2tPcHRpb25zLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udXNlclJlc2V0VGFza09wdGlvbnMsXG4gICAgICAgICAgcGF0aHNUb1JlbW92ZTogW1xuICAgICAgICAgICAgLi4uKGRlZmF1bHRSZXNldFRhc2tPcHRpb25zLnBhdGhzVG9SZW1vdmUgPz8gW10pLFxuICAgICAgICAgICAgLi4uKHVzZXJSZXNldFRhc2tPcHRpb25zLnBhdGhzVG9SZW1vdmUgPz8gW10pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgbmV3IFJlc2V0VGFzayh0aGlzLCByZXNldFRhc2tPcHRpb25zKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ export * from "./reset-task";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./reset-task"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFza3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3Jlc2V0LXRhc2tcIjtcbiJdfQ==
@@ -0,0 +1,51 @@
1
+ import { Component, Project } from "projen";
2
+ /*******************************************************************************
3
+ *
4
+ * Reset Task Component
5
+ *
6
+ * Adds a "reset" task that deletes all build artifacts produced by the build
7
+ * process. This includes node_modules, lib, dist, coverage, test-reports,
8
+ * .turbo, and tsconfig.tsbuildinfo.
9
+ *
10
+ ******************************************************************************/
11
+ export interface ResetTaskOptions {
12
+ /**
13
+ * Custom output directory to delete (overrides tsconfig artifactsDirectory detection).
14
+ *
15
+ * @default - detected from typescript project.artifactsDirectory or "lib"
16
+ */
17
+ readonly artifactsDirectory?: string;
18
+ /**
19
+ * Array of glob patterns for paths to remove.
20
+ * If empty, the artifactsDirectory will be added automatically.
21
+ *
22
+ * @default []
23
+ */
24
+ readonly pathsToRemove?: string[];
25
+ /**
26
+ * Name of the task to create.
27
+ *
28
+ * @default "reset"
29
+ */
30
+ readonly taskName?: string;
31
+ }
32
+ export declare class ResetTask extends Component {
33
+ readonly project: Project;
34
+ /**
35
+ * Static method to discover reset task in a project.
36
+ */
37
+ static of(project: Project): ResetTask | undefined;
38
+ /**
39
+ * The output directory to delete (from tsconfig or custom).
40
+ */
41
+ readonly artifactsDirectory: string;
42
+ /**
43
+ * The final array of paths that will be removed by the reset task.
44
+ */
45
+ readonly pathsToRemove: string[];
46
+ /**
47
+ * The name of the task that was created.
48
+ */
49
+ readonly taskName: string;
50
+ constructor(project: Project, options?: ResetTaskOptions);
51
+ }
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResetTask = void 0;
4
+ const projen_1 = require("projen");
5
+ const typescript_project_1 = require("../projects/typescript-project");
6
+ const turbo_repo_1 = require("../turbo/turbo-repo");
7
+ const turbo_repo_task_1 = require("../turbo/turbo-repo-task");
8
+ class ResetTask extends projen_1.Component {
9
+ /**
10
+ * Static method to discover reset task in a project.
11
+ */
12
+ static of(project) {
13
+ const isDefined = (c) => c instanceof ResetTask;
14
+ return project.components.find(isDefined);
15
+ }
16
+ constructor(project, options = {}) {
17
+ super(project);
18
+ this.project = project;
19
+ /**
20
+ * Determine the output directory.
21
+ * 1. Use custom artifactsDirectory if provided
22
+ * 2. Use the artifacts directory if project is TypeScriptProject
23
+ * 3. Default to "lib"
24
+ */
25
+ this.artifactsDirectory = options.artifactsDirectory
26
+ ? options.artifactsDirectory
27
+ : project instanceof typescript_project_1.TypeScriptProject
28
+ ? project.artifactsDirectory
29
+ : "lib";
30
+ /**
31
+ * Build the paths array to remove.
32
+ * If pathsToRemove is empty, add artifactsDirectory.
33
+ * If pathsToRemove is not empty, use it as-is (artifactsDirectory is not automatically added).
34
+ * Remove duplicate entries from the array.
35
+ */
36
+ const pathsToRemove = options.pathsToRemove ?? [];
37
+ const finalPaths = pathsToRemove.length === 0 ? [this.artifactsDirectory] : pathsToRemove;
38
+ /**
39
+ * Remove duplicate paths from the array.
40
+ */
41
+ this.pathsToRemove = Array.from(new Set(finalPaths));
42
+ /**
43
+ * Determine the task name.
44
+ */
45
+ this.taskName = options.taskName ?? "reset";
46
+ /**
47
+ * Create the reset task.
48
+ */
49
+ const resetTask = this.project.tasks.addTask(this.taskName, {
50
+ description: "Delete build artifacts specified by pathsToRemove option, or artifactsDirectory if pathsToRemove is empty",
51
+ });
52
+ /**
53
+ * Delete build artifacts with existence checks.
54
+ * Using shell conditionals to only delete if paths exist.
55
+ * Using -e to check existence (works for both files and directories).
56
+ */
57
+ this.pathsToRemove.forEach((path) => {
58
+ resetTask.exec(`[ -e "${path}" ] && rm -rf ${path} || true`);
59
+ });
60
+ /**
61
+ * Turbo tasks are added after all components are created.
62
+ * This assumes turbo is built first so that it's available to be
63
+ * referenced. This could introduce problems in future but works for now.
64
+ */
65
+ /**
66
+ * Check if turborepo is active.
67
+ */
68
+ const rootHasTurbo = turbo_repo_1.TurboRepo.of(this.project.root) !== undefined;
69
+ const isSubproject = this.project !== this.project.root;
70
+ const isRootProject = this.project === this.project.root;
71
+ /**
72
+ * If turborepo is active for the subproject, add turbo tasks.
73
+ */
74
+ if (isSubproject && rootHasTurbo) {
75
+ /**
76
+ * Get TurboRepo instance for this subproject.
77
+ * It should exist by now since preSynthesize runs after all components are created.
78
+ */
79
+ const turbo = turbo_repo_1.TurboRepo.of(this.project);
80
+ if (turbo && !turbo.isRootProject) {
81
+ /**
82
+ * Create turbo:reset task (or turbo:${taskName}).
83
+ */
84
+ const turboResetTask = new turbo_repo_task_1.TurboRepoTask(this.project, {
85
+ name: `turbo:${this.taskName}`,
86
+ cache: false,
87
+ });
88
+ turbo.tasks.push(turboResetTask);
89
+ /**
90
+ * Create a turbo task with the same name as the reset task.
91
+ */
92
+ const turboTaskWithSameName = new turbo_repo_task_1.TurboRepoTask(this.project, {
93
+ name: this.taskName,
94
+ cache: false,
95
+ });
96
+ turbo.tasks.push(turboTaskWithSameName);
97
+ /**
98
+ * turboResetTask depends on turboTaskWithSameName so that the reset task
99
+ * can be run across all suprojects using turbo:reset as the entry point.
100
+ */
101
+ turboResetTask.dependsOn.push(turboTaskWithSameName.name);
102
+ }
103
+ }
104
+ /**
105
+ * If reset-task is in the root project, add a turbo task that will trigger
106
+ * all the subtasks using dependsOn of "^turbo:reset".
107
+ */
108
+ if (isRootProject && rootHasTurbo) {
109
+ const turbo = turbo_repo_1.TurboRepo.of(this.project);
110
+ if (turbo && turbo.isRootProject) {
111
+ /**
112
+ * Create turbo:reset task (or turbo:${taskName}) in the root project.
113
+ * The ^ prefix means "run this task in all dependencies first".
114
+ */
115
+ const rootTurboResetTask = new turbo_repo_task_1.TurboRepoTask(this.project, {
116
+ name: `turbo:${this.taskName}`,
117
+ dependsOn: [`^turbo:${this.taskName}`],
118
+ cache: false,
119
+ });
120
+ turbo.tasks.push(rootTurboResetTask);
121
+ /**
122
+ * Create a turbo task with the same name as the reset task.
123
+ */
124
+ const turboTaskWithSameName = new turbo_repo_task_1.TurboRepoTask(this.project, {
125
+ name: this.taskName,
126
+ cache: false,
127
+ });
128
+ turbo.tasks.push(turboTaskWithSameName);
129
+ /**
130
+ * rootTurboResetTask depends on turboTaskWithSameName so that the reset task
131
+ * can be run across all suprojects using turbo:reset as the entry point.
132
+ */
133
+ rootTurboResetTask.dependsOn.push(turboTaskWithSameName.name);
134
+ /**
135
+ * Create reset:all task - a projen task that calls the turbo task.
136
+ * This is similar to build:all in turbo-repo.ts.
137
+ */
138
+ const resetAllTask = this.project.tasks.addTask(`${this.taskName}:all`, {
139
+ description: `Reset all build artifacts across the monorepo by running turbo:${this.taskName} in all subprojects.`,
140
+ });
141
+ resetAllTask.exec("turbo telemetry disable");
142
+ resetAllTask.exec(`turbo turbo:${this.taskName} --summarize --concurrency=10`);
143
+ resetAllTask.exec(`pnpm ${this.taskName}`);
144
+ }
145
+ }
146
+ }
147
+ }
148
+ exports.ResetTask = ResetTask;
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQtdGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrcy9yZXNldC10YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUE0QztBQUM1Qyx1RUFBbUU7QUFDbkUsb0RBQWdEO0FBQ2hELDhEQUF5RDtBQW9DekQsTUFBYSxTQUFVLFNBQVEsa0JBQVM7SUFDdEM7O09BRUc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQWdCO1FBQy9CLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUFrQixFQUFFLENBQUMsQ0FBQyxZQUFZLFNBQVMsQ0FBQztRQUMzRSxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFpQkQsWUFDa0IsT0FBZ0IsRUFDaEMsVUFBNEIsRUFBRTtRQUU5QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFIQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBS2hDOzs7OztXQUtHO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0I7WUFDbEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0I7WUFDNUIsQ0FBQyxDQUFDLE9BQU8sWUFBWSxzQ0FBaUI7Z0JBQ3BDLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCO2dCQUM1QixDQUFDLENBQUMsS0FBSyxDQUFDO1FBRVo7Ozs7O1dBS0c7UUFDSCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUNsRCxNQUFNLFVBQVUsR0FDZCxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBRXpFOztXQUVHO1FBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxD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QUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ25CLEtBQUssRUFBRSxLQUFLO2lCQUNiLENBQUMsQ0FBQztnQkFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUV4Qzs7O21CQUdHO2dCQUNILGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTlEOzs7bUJBR0c7Z0JBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUM3QyxHQUFHLElBQUksQ0FBQyxRQUFRLE1BQU0sRUFDdEI7b0JBQ0UsV0FBVyxFQUFFLGtFQUFrRSxJQUFJLENBQUMsUUFBUSxzQkFBc0I7aUJBQ25ILENBQ0YsQ0FBQztnQkFDRixZQUFZLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBQzdDLFlBQVksQ0FBQyxJQUFJLENBQ2YsZUFBZSxJQUFJLENBQUMsUUFBUSwrQkFBK0IsQ0FDNUQsQ0FBQztnQkFDRixZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFuTEQsOEJBbUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBQcm9qZWN0IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdHMvdHlwZXNjcmlwdC1wcm9qZWN0XCI7XG5pbXBvcnQgeyBUdXJib1JlcG8gfSBmcm9tIFwiLi4vdHVyYm8vdHVyYm8tcmVwb1wiO1xuaW1wb3J0IHsgVHVyYm9SZXBvVGFzayB9IGZyb20gXCIuLi90dXJiby90dXJiby1yZXBvLXRhc2tcIjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiBSZXNldCBUYXNrIENvbXBvbmVudFxuICpcbiAqIEFkZHMgYSBcInJlc2V0XCIgdGFzayB0aGF0IGRlbGV0ZXMgYWxsIGJ1aWxkIGFydGlmYWN0cyBwcm9kdWNlZCBieSB0aGUgYnVpbGRcbiAqIHByb2Nlc3MuIFRoaXMgaW5jbHVkZXMgbm9kZV9tb2R1bGVzLCBsaWIsIGRpc3QsIGNvdmVyYWdlLCB0ZXN0LXJlcG9ydHMsXG4gKiAudHVyYm8sIGFuZCB0c2NvbmZpZy50c2J1aWxkaW5mby5cbiAqXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2V0VGFza09wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIG91dHB1dCBkaXJlY3RvcnkgdG8gZGVsZXRlIChvdmVycmlkZXMgdHNjb25maWcgYXJ0aWZhY3RzRGlyZWN0b3J5IGRldGVjdGlvbikuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGV0ZWN0ZWQgZnJvbSB0eXBlc2NyaXB0IHByb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5IG9yIFwibGliXCJcbiAgICovXG4gIHJlYWRvbmx5IGFydGlmYWN0c0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogQXJyYXkgb2YgZ2xvYiBwYXR0ZXJucyBmb3IgcGF0aHMgdG8gcmVtb3ZlLlxuICAgKiBJZiBlbXB0eSwgdGhlIGFydGlmYWN0c0RpcmVjdG9yeSB3aWxsIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBwYXRoc1RvUmVtb3ZlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHRhc2sgdG8gY3JlYXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInJlc2V0XCJcbiAgICovXG4gIHJlYWRvbmx5IHRhc2tOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUmVzZXRUYXNrIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2QgdG8gZGlzY292ZXIgcmVzZXQgdGFzayBpbiBhIHByb2plY3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBSZXNldFRhc2sgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzRGVmaW5lZCA9IChjOiBDb21wb25lbnQpOiBjIGlzIFJlc2V0VGFzayA9PiBjIGluc3RhbmNlb2YgUmVzZXRUYXNrO1xuICAgIHJldHVybiBwcm9qZWN0LmNvbXBvbmVudHMuZmluZChpc0RlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGRlbGV0ZSAoZnJvbSB0c2NvbmZpZyBvciBjdXN0b20pLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFydGlmYWN0c0RpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZmluYWwgYXJyYXkgb2YgcGF0aHMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIHJlc2V0IHRhc2suXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGF0aHNUb1JlbW92ZTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YXNrIHRoYXQgd2FzIGNyZWF0ZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFza05hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogUHJvamVjdCxcbiAgICBvcHRpb25zOiBSZXNldFRhc2tPcHRpb25zID0ge30sXG4gICkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHRoZSBvdXRwdXQgZGlyZWN0b3J5LlxuICAgICAqIDEuIFVzZSBjdXN0b20gYXJ0aWZhY3RzRGlyZWN0b3J5IGlmIHByb3ZpZGVkXG4gICAgICogMi4gVXNlIHRoZSBhcnRpZmFjdHMgZGlyZWN0b3J5IGlmIHByb2plY3QgaXMgVHlwZVNjcmlwdFByb2plY3RcbiAgICAgKiAzLiBEZWZhdWx0IHRvIFwibGliXCJcbiAgICAgKi9cbiAgICB0aGlzLmFydGlmYWN0c0RpcmVjdG9yeSA9IG9wdGlvbnMuYXJ0aWZhY3RzRGlyZWN0b3J5XG4gICAgICA/IG9wdGlvbnMuYXJ0aWZhY3RzRGlyZWN0b3J5XG4gICAgICA6IHByb2plY3QgaW5zdGFuY2VvZiBUeXBlU2NyaXB0UHJvamVjdFxuICAgICAgICA/IHByb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5XG4gICAgICAgIDogXCJsaWJcIjtcblxuICAgIC8qKlxuICAgICAqIEJ1aWxkIHRoZSBwYXRocyBhcnJheSB0byByZW1vdmUuXG4gICAgICogSWYgcGF0aHNUb1JlbW92ZSBpcyBlbXB0eSwgYWRkIGFydGlmYWN0c0RpcmVjdG9yeS5cbiAgICAgKiBJZiBwYXRoc1RvUmVtb3ZlIGlzIG5vdCBlbXB0eSwgdXNlIGl0IGFzLWlzIChhcnRpZmFjdHNEaXJlY3RvcnkgaXMgbm90IGF1dG9tYXRpY2FsbHkgYWRkZWQpLlxuICAgICAqIFJlbW92ZSBkdXBsaWNhdGUgZW50cmllcyBmcm9tIHRoZSBhcnJheS5cbiAgICAgKi9cbiAgICBjb25zdCBwYXRoc1RvUmVtb3ZlID0gb3B0aW9ucy5wYXRoc1RvUmVtb3ZlID8/IFtdO1xuICAgIGNvbnN0IGZpbmFsUGF0aHMgPVxuICAgICAgcGF0aHNUb1JlbW92ZS5sZW5ndGggPT09IDAgPyBbdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnldIDogcGF0aHNUb1JlbW92ZTtcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBkdXBsaWNhdGUgcGF0aHMgZnJvbSB0aGUgYXJyYXkuXG4gICAgICovXG4gICAgdGhpcy5wYXRoc1RvUmVtb3ZlID0gQXJyYXkuZnJvbShuZXcgU2V0KGZpbmFsUGF0aHMpKTtcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSB0aGUgdGFzayBuYW1lLlxuICAgICAqL1xuICAgIHRoaXMudGFza05hbWUgPSBvcHRpb25zLnRhc2tOYW1lID8/IFwicmVzZXRcIjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSB0aGUgcmVzZXQgdGFzay5cbiAgICAgKi9cbiAgICBjb25zdCByZXNldFRhc2sgPSB0aGlzLnByb2plY3QudGFza3MuYWRkVGFzayh0aGlzLnRhc2tOYW1lLCB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJEZWxldGUgYnVpbGQgYXJ0aWZhY3RzIHNwZWNpZmllZCBieSBwYXRoc1RvUmVtb3ZlIG9wdGlvbiwgb3IgYXJ0aWZhY3RzRGlyZWN0b3J5IGlmIHBhdGhzVG9SZW1vdmUgaXMgZW1wdHlcIixcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBidWlsZCBhcnRpZmFjdHMgd2l0aCBleGlzdGVuY2UgY2hlY2tzLlxuICAgICAqIFVzaW5nIHNoZWxsIGNvbmRpdGlvbmFscyB0byBvbmx5IGRlbGV0ZSBpZiBwYXRocyBleGlzdC5cbiAgICAgKiBVc2luZyAtZSB0byBjaGVjayBleGlzdGVuY2UgKHdvcmtzIGZvciBib3RoIGZpbGVzIGFuZCBkaXJlY3RvcmllcykuXG4gICAgICovXG4gICAgdGhpcy5wYXRoc1RvUmVtb3ZlLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgIHJlc2V0VGFzay5leGVjKGBbIC1lIFwiJHtwYXRofVwiIF0gJiYgcm0gLXJmICR7cGF0aH0gfHwgdHJ1ZWApO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVHVyYm8gdGFza3MgYXJlIGFkZGVkIGFmdGVyIGFsbCBjb21wb25lbnRzIGFyZSBjcmVhdGVkLlxuICAgICAqIFRoaXMgYXNzdW1lcyB0dXJibyBpcyBidWlsdCBmaXJzdCBzbyB0aGF0IGl0J3MgYXZhaWxhYmxlIHRvIGJlXG4gICAgICogcmVmZXJlbmNlZC4gVGhpcyBjb3VsZCBpbnRyb2R1Y2UgcHJvYmxlbXMgaW4gZnV0dXJlIGJ1dCB3b3JrcyBmb3Igbm93LlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdHVyYm9yZXBvIGlzIGFjdGl2ZS5cbiAgICAgKi9cbiAgICBjb25zdCByb290SGFzVHVyYm8gPSBUdXJib1JlcG8ub2YodGhpcy5wcm9qZWN0LnJvb3QpICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgaXNTdWJwcm9qZWN0ID0gdGhpcy5wcm9qZWN0ICE9PSB0aGlzLnByb2plY3Qucm9vdDtcbiAgICBjb25zdCBpc1Jvb3RQcm9qZWN0ID0gdGhpcy5wcm9qZWN0ID09PSB0aGlzLnByb2plY3Qucm9vdDtcblxuICAgIC8qKlxuICAgICAqIElmIHR1cmJvcmVwbyBpcyBhY3RpdmUgZm9yIHRoZSBzdWJwcm9qZWN0LCBhZGQgdHVyYm8gdGFza3MuXG4gICAgICovXG4gICAgaWYgKGlzU3VicHJvamVjdCAmJiByb290SGFzVHVyYm8pIHtcbiAgICAgIC8qKlxuICAgICAgICogR2V0IFR1cmJvUmVwbyBpbnN0YW5jZSBmb3IgdGhpcyBzdWJwcm9qZWN0LlxuICAgICAgICogSXQgc2hvdWxkIGV4aXN0IGJ5IG5vdyBzaW5jZSBwcmVTeW50aGVzaXplIHJ1bnMgYWZ0ZXIgYWxsIGNvbXBvbmVudHMgYXJlIGNyZWF0ZWQuXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHR1cmJvID0gVHVyYm9SZXBvLm9mKHRoaXMucHJvamVjdCk7XG4gICAgICBpZiAodHVyYm8gJiYgIXR1cmJvLmlzUm9vdFByb2plY3QpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSB0dXJibzpyZXNldCB0YXNrIChvciB0dXJibzoke3Rhc2tOYW1lfSkuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCB0dXJib1Jlc2V0VGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHRoaXMucHJvamVjdCwge1xuICAgICAgICAgIG5hbWU6IGB0dXJibzoke3RoaXMudGFza05hbWV9YCxcbiAgICAgICAgICBjYWNoZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB0dXJiby50YXNrcy5wdXNoKHR1cmJvUmVzZXRUYXNrKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlIGEgdHVyYm8gdGFzayB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHJlc2V0IHRhc2suXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCB0dXJib1Rhc2tXaXRoU2FtZU5hbWUgPSBuZXcgVHVyYm9SZXBvVGFzayh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgICBuYW1lOiB0aGlzLnRhc2tOYW1lLFxuICAgICAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHR1cmJvLnRhc2tzLnB1c2godHVyYm9UYXNrV2l0aFNhbWVOYW1lKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogdHVyYm9SZXNldFRhc2sgZGVwZW5kcyBvbiB0dXJib1Rhc2tXaXRoU2FtZU5hbWUgc28gdGhhdCB0aGUgcmVzZXQgdGFza1xuICAgICAgICAgKiBjYW4gYmUgcnVuIGFjcm9zcyBhbGwgc3Vwcm9qZWN0cyB1c2luZyB0dXJibzpyZXNldCBhcyB0aGUgZW50cnkgcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICB0dXJib1Jlc2V0VGFzay5kZXBlbmRzT24ucHVzaCh0dXJib1Rhc2tXaXRoU2FtZU5hbWUubmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgcmVzZXQtdGFzayBpcyBpbiB0aGUgcm9vdCBwcm9qZWN0LCBhZGQgYSB0dXJibyB0YXNrIHRoYXQgd2lsbCB0cmlnZ2VyXG4gICAgICogYWxsIHRoZSBzdWJ0YXNrcyB1c2luZyBkZXBlbmRzT24gb2YgXCJedHVyYm86cmVzZXRcIi5cbiAgICAgKi9cbiAgICBpZiAoaXNSb290UHJvamVjdCAmJiByb290SGFzVHVyYm8pIHtcbiAgICAgIGNvbnN0IHR1cmJvID0gVHVyYm9SZXBvLm9mKHRoaXMucHJvamVjdCk7XG4gICAgICBpZiAodHVyYm8gJiYgdHVyYm8uaXNSb290UHJvamVjdCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlIHR1cmJvOnJlc2V0IHRhc2sgKG9yIHR1cmJvOiR7dGFza05hbWV9KSBpbiB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICAgKiBUaGUgXiBwcmVmaXggbWVhbnMgXCJydW4gdGhpcyB0YXNrIGluIGFsbCBkZXBlbmRlbmNpZXMgZmlyc3RcIi5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IHJvb3RUdXJib1Jlc2V0VGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHRoaXMucHJvamVjdCwge1xuICAgICAgICAgIG5hbWU6IGB0dXJibzoke3RoaXMudGFza05hbWV9YCxcbiAgICAgICAgICBkZXBlbmRzT246IFtgXnR1cmJvOiR7dGhpcy50YXNrTmFtZX1gXSxcbiAgICAgICAgICBjYWNoZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB0dXJiby50YXNrcy5wdXNoKHJvb3RUdXJib1Jlc2V0VGFzayk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhIHR1cmJvIHRhc2sgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSByZXNldCB0YXNrLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgdHVyYm9UYXNrV2l0aFNhbWVOYW1lID0gbmV3IFR1cmJvUmVwb1Rhc2sodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgICAgbmFtZTogdGhpcy50YXNrTmFtZSxcbiAgICAgICAgICBjYWNoZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB0dXJiby50YXNrcy5wdXNoKHR1cmJvVGFza1dpdGhTYW1lTmFtZSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHJvb3RUdXJib1Jlc2V0VGFzayBkZXBlbmRzIG9uIHR1cmJvVGFza1dpdGhTYW1lTmFtZSBzbyB0aGF0IHRoZSByZXNldCB0YXNrXG4gICAgICAgICAqIGNhbiBiZSBydW4gYWNyb3NzIGFsbCBzdXByb2plY3RzIHVzaW5nIHR1cmJvOnJlc2V0IGFzIHRoZSBlbnRyeSBwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIHJvb3RUdXJib1Jlc2V0VGFzay5kZXBlbmRzT24ucHVzaCh0dXJib1Rhc2tXaXRoU2FtZU5hbWUubmFtZSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSByZXNldDphbGwgdGFzayAtIGEgcHJvamVuIHRhc2sgdGhhdCBjYWxscyB0aGUgdHVyYm8gdGFzay5cbiAgICAgICAgICogVGhpcyBpcyBzaW1pbGFyIHRvIGJ1aWxkOmFsbCBpbiB0dXJiby1yZXBvLnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgcmVzZXRBbGxUYXNrID0gdGhpcy5wcm9qZWN0LnRhc2tzLmFkZFRhc2soXG4gICAgICAgICAgYCR7dGhpcy50YXNrTmFtZX06YWxsYCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYFJlc2V0IGFsbCBidWlsZCBhcnRpZmFjdHMgYWNyb3NzIHRoZSBtb25vcmVwbyBieSBydW5uaW5nIHR1cmJvOiR7dGhpcy50YXNrTmFtZX0gaW4gYWxsIHN1YnByb2plY3RzLmAsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgcmVzZXRBbGxUYXNrLmV4ZWMoXCJ0dXJibyB0ZWxlbWV0cnkgZGlzYWJsZVwiKTtcbiAgICAgICAgcmVzZXRBbGxUYXNrLmV4ZWMoXG4gICAgICAgICAgYHR1cmJvIHR1cmJvOiR7dGhpcy50YXNrTmFtZX0gLS1zdW1tYXJpemUgLS1jb25jdXJyZW5jeT0xMGAsXG4gICAgICAgICk7XG4gICAgICAgIHJlc2V0QWxsVGFzay5leGVjKGBwbnBtICR7dGhpcy50YXNrTmFtZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -4,7 +4,6 @@ exports.TurboRepo = exports.ROOT_CI_TASK_NAME = exports.ROOT_TURBO_TASK_NAME = v
4
4
  const lib_1 = require("projen/lib");
5
5
  const workflows_model_1 = require("projen/lib/github/workflows-model");
6
6
  const turbo_repo_task_1 = require("./turbo-repo-task");
7
- const versions_1 = require("../versions");
8
7
  /*******************************************************************************
9
8
  *
10
9
  * Turbo Repo Config
@@ -27,7 +26,7 @@ class TurboRepo extends lib_1.Component {
27
26
  * Sub-Tasks to run
28
27
  */
29
28
  this.tasks = [];
30
- this.turboVersion = options.turboVersion ?? versions_1.VERSION.TURBO_VERSION;
29
+ this.turboVersion = options.turboVersion ?? "catalog:";
31
30
  this.isRootProject = project === project.root;
32
31
  /**
33
32
  * Add turborepo package to root project.
@@ -297,4 +296,4 @@ TurboRepo.buildWorkflowOptions = (remoteCacheOptions) => {
297
296
  ],
298
297
  };
299
298
  };
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVyYm8tcmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90dXJiby90dXJiby1yZXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9DQUEwRTtBQUUxRSx1RUFBa0U7QUFFbEUsdURBQWtEO0FBQ2xELDBDQUFzQztBQUV0Qzs7OztnRkFJZ0Y7QUFFbkUsUUFBQSxvQkFBb0IsR0FBRyxhQUFhLENBQUM7QUFDckMsUUFBQSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7QUFvTjdDLE1BQWEsU0FBVSxTQUFRLGVBQVM7SUFDdEM7O09BRUc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQWdCO1FBQy9CLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUFrQixFQUFFLENBQUMsQ0FBQyxZQUFZLFNBQVMsQ0FBQztRQUMzRSxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFnTkQsWUFDa0IsT0FBb0IsRUFDcEMsVUFBNEIsRUFBRTtRQUU5QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFIQyxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBWHRDOztXQUVHO1FBQ2EsVUFBSyxHQUF5QixFQUFFLENBQUM7UUFhL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLGtCQUFPLENBQUMsYUFBYSxDQUFDO1FBQ2xFLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFOUM7O1dBRUc7UUFDSCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVEOztXQUVHO1FBQ0gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0M7Ozs7b0ZBSTRFO1FBRTVFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUM7UUFDL0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMscUNBQXFDO1lBQ3hDLE9BQU8sQ0FBQyxxQ0FBcUMsSUFBSSxLQUFLLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUM7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQztRQUU3RDs7Ozs7O29GQU00RTtRQUU1RTs7OztXQUlHO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLCtCQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQyxJQUFJLEVBQUUsNEJBQW9CO1lBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksNEJBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ2xFLENBQUMsQ0FBQztRQUVIOzs7Ozs7Ozs7O29GQVU0RTtRQUU1RSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2Qjs7ZUFFRztZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHlCQUFpQixFQUFFO2dCQUNoRSxXQUFXLEVBQ1QscUZBQXFGO2FBQ3hGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFFbEQ7O2VBRUc7WUFDSCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7b0JBQ2pFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRDs7O2VBR0c7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixTQUFTLDRCQUFvQiwrQkFBK0IsQ0FDN0QsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTjs7O21CQUdHO2dCQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixzSEFBc0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxFQUN4SjtvQkFDRSxTQUFTLEVBQUUsZ0JBQWdCO29CQUMzQixHQUFHLEVBQUU7d0JBQ0gsY0FBYyxFQUFFLGtDQUFrQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLG9EQUFvRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxHQUFHO3dCQUNyTCxXQUFXLEVBQUUsa0NBQWtDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLG9EQUFvRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxHQUFHO3FCQUNoTDtpQkFDRixDQUNGLENBQUM7Z0JBQ0YsNENBQTRDO2dCQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDcEIsc0hBQXNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsRUFDeEo7b0JBQ0UsU0FBUyxFQUFFLGNBQWM7b0JBQ3pCLEdBQUcsRUFBRTt3QkFDSCxjQUFjLEVBQUUsa0NBQWtDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIseUNBQXlDO3dCQUNwSSxXQUFXLEVBQUUsa0NBQWtDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLHlDQUF5QztxQkFDL0g7aUJBQ0YsQ0FDRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRDs7OztXQUlHO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4Qjs7O2VBR0c7WUFDSCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVU7aUJBQzNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBaUIsRUFBRSxDQUFDLENBQUMsWUFBWSxjQUFRLENBQUM7aUJBQ25ELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXRCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSwrQkFBYSxDQUFDLE9BQU8sRUFBRTtnQkFDL0MsSUFBSSxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLGFBQWE7Z0JBQ25ELE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLGNBQWMsQ0FBQzthQUN0QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksK0JBQWEsQ0FBQyxPQUFPLEVBQUU7Z0JBQzVDLElBQUksRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxTQUFTO2dCQUM1QyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxjQUFjLENBQUM7YUFDdEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLCtCQUFhLENBQUMsT0FBTyxFQUFFO2dCQUNoRCxJQUFJLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRSxJQUFJLElBQUksY0FBYztnQkFDckQsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsY0FBYyxDQUFDO2FBQ3RDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSwrQkFBYSxDQUFDLE9BQU8sRUFBRTtnQkFDekMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLE1BQU07YUFDdkMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLCtCQUFhLENBQUMsT0FBTyxFQUFFO2dCQUM1QyxJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksU0FBUztnQkFDNUMsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3ZCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZUFBZSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ2hEOztXQUVHO1FBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBDOztXQUVHO1FBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsb0NBQW9DLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsYUFBYTtRQUNYOzs7Ozs7V0FNRztRQUNILElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUc7YUFDdEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLGFBQWEsQ0FBQzthQUMxQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSw0QkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXhEOzs7O1dBSUc7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRXRCO2dCQUNFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFDbEQsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUM1QyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQ3BELENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDdEMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO2FBRS9DLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRTtnQkFDaEM7O21CQUVHO2dCQUNILElBQUksTUFBTSxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUM3QixTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO29CQUM3QyxDQUFDO29CQUNELGFBQWEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFakM7O3VCQUVHO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDTixTQUFTLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUg7O2VBRUc7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxNQUFNLFFBQVEsR0FBVyxZQUFZLENBQUM7UUFFdEM7O1dBRUc7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhDOzs7V0FHRztRQUNILElBQUksY0FBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFO1lBQ25DLEdBQUcsRUFBRTtnQkFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3ZELGtCQUFrQixFQUNoQixJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO29CQUNsRCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtvQkFDekIsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2YsU0FBUyxFQUNQLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO29CQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVM7b0JBQ2hCLENBQUMsQ0FBQyxTQUFTO2dCQUNmLG9CQUFvQixFQUNsQixJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNO29CQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQjtvQkFDM0IsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2YsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzVDLHFDQUFxQyxFQUFFLElBQUksQ0FBQyxhQUFhO29CQUN2RCxDQUFDLENBQUMsSUFBSSxDQUFDLHFDQUFxQztvQkFDNUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3hELE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNwRCxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDdEQ7O21CQUVHO2dCQUNILEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztxQkFDZCxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7cUJBQy9CLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtvQkFDWixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO3dCQUNmLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtxQkFDckIsQ0FBQztvQkFDRixPQUFPLEdBQUcsQ0FBQztnQkFDYixDQUFDLEVBQ0Q7b0JBQ0UsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFO2lCQUNuQyxDQUN6QjthQUNKO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hCLENBQUM7O0FBamdCSCw4QkFrZ0JDO0FBemZlLDhCQUFvQixHQUFHLENBQ25DLGtCQUFzQyxFQUNQLEVBQUU7SUFDakMsT0FBTztRQUNMLFdBQVcsRUFBRTtZQUNYLFFBQVEsRUFBRSwrQkFBYSxDQUFDLEtBQUs7WUFDN0IsT0FBTyxFQUFFLCtCQUFhLENBQUMsS0FBSztTQUM3QjtRQUNELGFBQWEsRUFBRTtZQUNiO2dCQUNFLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLElBQUksRUFBRSwwQ0FBMEM7Z0JBQ2hELElBQUksRUFBRTtvQkFDSixDQUFDLGdCQUFnQixDQUFDLEVBQUUsa0JBQWtCLENBQUMsUUFBUTtvQkFDL0MsQ0FBQyxZQUFZLENBQUMsRUFBRSxXQUFXO29CQUMzQixDQUFDLHVCQUF1QixDQUFDLEVBQUUsS0FBSztpQkFDakM7YUFDRjtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMsQUFwQmlDLENBb0JoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRmlsZUJhc2UsIEpzb25GaWxlLCBQcm9qZWN0LCBUYXNrIH0gZnJvbSBcInByb2plbi9saWJcIjtcbmltcG9ydCB7IEJ1aWxkV29ya2Zsb3dPcHRpb25zIH0gZnJvbSBcInByb2plbi9saWIvYnVpbGRcIjtcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tIFwicHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gXCJwcm9qZW4vbGliL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IFR1cmJvUmVwb1Rhc2sgfSBmcm9tIFwiLi90dXJiby1yZXBvLXRhc2tcIjtcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tIFwiLi4vdmVyc2lvbnNcIjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiBUdXJibyBSZXBvIENvbmZpZ1xuICpcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmV4cG9ydCBjb25zdCBST09UX1RVUkJPX1RBU0tfTkFNRSA9IFwidHVyYm86YnVpbGRcIjtcbmV4cG9ydCBjb25zdCBST09UX0NJX1RBU0tfTkFNRSA9IFwiYnVpbGQ6YWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlQ2FjaGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIExvY2FsIHByb2ZpbGUgbmFtZSB0byB1c2Ugd2hlbiBmZXRjaGluZyB0aGUgY2FjaGUgZW5kcG9pbnQgYW5kIHRva2VuLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogT0lEQyByb2xlIHRvIGFzc3VtZSB3aGVuIGZldGNoaW5nIHRoZSBjYWNoZSBlbmRwb2ludCBhbmQgdG9rZW4uXG4gICAqL1xuICByZWFkb25seSBvaWRjUm9sZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIGZvciB0aGUgcGFyYW1zIHVzZWQgdG8gc3RvcmUgdGhlIGNhY2hlIGVuZHBvaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnRQYXJhbU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBmb3IgdGhlIHBhcmFtcyB1c2VkIHRvIHN0b3JlIHRoZSBjYWNoZSdzIEFQSSB0b2tlbi5cbiAgICovXG4gIHJlYWRvbmx5IHRva2VuUGFyYW1OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHRlYW0gbmFtZSB1c2VkIGluIHJlbW90ZSBjYWNoZSBjb21tYW5kc1xuICAgKi9cbiAgcmVhZG9ubHkgdGVhbU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUdXJib1JlcG9PcHRpb25zIHtcbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdHVyYm9yZXBvIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQ6IHNwZWNpZmllZCBpbiB2ZXJzaW9ucyBmaWxlXG4gICAqL1xuICByZWFkb25seSB0dXJib1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBmcm9tIHRoZSByb290IHR1cmJvLmpzb24gdG8gY3JlYXRlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGEgcGFja2FnZSB1c2luZyBQYWNrYWdlIENvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBUaGUgb25seSB2YWxpZCB2YWx1ZSBmb3IgZXh0ZW5kcyBpcyBbXCIvL1wiXSB0byBpbmhlcml0IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgcm9vdCB0dXJiby5qc29uLlxuICAgKiBJZiBleHRlbmRzIGlzIHVzZWQgaW4gdGhlIHJvb3QgdHVyYm8uanNvbiwgaXQgd2lsbCBiZSBpZ25vcmVkLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNleHRlbmRzXG4gICAqL1xuICByZWFkb25seSBleHRlbmRzPzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGdsb2JzIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSBpbiBhbGwgdGFzayBoYXNoZXMuIElmIGFueSBmaWxlIG1hdGNoaW5nIHRoZXNlIGdsb2JzIGNoYW5nZXMsIGFsbCB0YXNrcyB3aWxsIG1pc3MgY2FjaGUuIEdsb2JzIGFyZSByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gb2YgdHVyYm8uanNvbi5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYWxsIGZpbGVzIGluIHNvdXJjZSBjb250cm9sIGluIHRoZSBXb3Jrc3BhY2Ugcm9vdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGdsb2JhbCBoYXNoLlxuICAgKlxuICAgKiBHbG9icyBtdXN0IGJlIGluIHRoZSByZXBvc2l0b3J5J3Mgc291cmNlIGNvbnRyb2wgcm9vdC4gR2xvYnMgb3V0c2lkZSBvZiB0aGUgcmVwb3NpdG9yeSBhcmVuJ3Qgc3VwcG9ydGVkLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxkZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbERlcGVuZGVuY2llcz86IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB5b3Ugd2FudCB0byBpbXBhY3QgdGhlIGhhc2ggb2YgYWxsIHRhc2tzLiBBbnkgY2hhbmdlIHRvIHRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIGNhdXNlIGFsbCB0YXNrcyB0byBtaXNzIGNhY2hlLlxuICAgKlxuICAgKiBGb3IgbW9yZSBvbiB3aWxkY2FyZCBhbmQgbmVnYXRpb24gc3ludGF4LCBzZWUgdGhlIGVudiBzZWN0aW9uLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxlbnZcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbEVudj86IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB5b3Ugd2FudCB0byBtYWtlIGF2YWlsYWJsZSB0byB0YXNrcy5cbiAgICogVXNpbmcgdGhpcyBrZXkgb3B0cyBhbGwgdGFza3MgaW50byBTdHJpY3RcbiAgICogRW52aXJvbm1lbnQgVmFyaWFibGUgTW9kZS5cbiAgICpcbiAgICogQWRkaXRpb25hbGx5LCBUdXJib3JlcG8gaGFzIGEgYnVpbHQtaW4gc2V0IG9mIGdsb2JhbCBwYXNzdGhyb3VnaCB2YXJpYWJsZXNcbiAgICogZm9yIGNvbW1vbiBjYXNlcywgbGlrZSBvcGVyYXRpbmcgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhpc1xuICAgKiBpbmNsdWRlcyB2YXJpYWJsZXMgbGlrZSBIT01FLCBQQVRILCBBUFBEQVRBLCBTSEVMTCwgUFdELCBhbmQgbW9yZS4gVGhlIGZ1bGxcbiAgICogbGlzdCBjYW4gYmUgZm91bmQgaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgKlxuICAgKiBQYXNzdGhyb3VnaCB2YWx1ZXMgZG8gbm90IGNvbnRyaWJ1dGUgdG8gaGFzaGVzIGZvciBjYWNoaW5nXG4gICAqXG4gICAqIElmIHlvdSB3YW50IGNoYW5nZXMgaW4gdGhlc2UgdmFyaWFibGVzIHRvIGNhdXNlIGNhY2hlIG1pc3NlcywgeW91IHdpbGwgbmVlZFxuICAgKiB0byBpbmNsdWRlIHRoZW0gaW4gZW52IG9yIGdsb2JhbEVudi5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZ2xvYmFscGFzc3Rocm91Z2hlbnZcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbFBhc3NUaHJvdWdoRW52PzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IFwic3RyZWFtXCJcbiAgICpcbiAgICogU2VsZWN0IGEgdGVybWluYWwgVUkgZm9yIHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBcInR1aVwiIGFsbG93cyBmb3Igdmlld2luZyBlYWNoIGxvZyBhdCBvbmNlIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSB0YXNrLlxuICAgKiBcInN0cmVhbVwiIG91dHB1dHMgbG9ncyBhcyB0aGV5IGNvbWUgaW4gYW5kIGlzIG5vdCBpbnRlcmFjdGl2ZS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jdWlcbiAgICovXG4gIHJlYWRvbmx5IHVpPzogXCJ0dWlcIiB8IFwic3RyZWFtXCI7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBmYWxzZVxuICAgKlxuICAgKiBUdXJib3JlcG8gdXNlcyB5b3VyIHJlcG9zaXRvcnkncyBsb2NrZmlsZSB0byBkZXRlcm1pbmUgY2FjaGluZyBiZWhhdmlvcixcbiAgICogUGFja2FnZSBHcmFwaHMsIGFuZCBtb3JlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIHVzZSB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGRcbiAgICogdG8gaGVscCB5b3Ugc3RhYmlsaXplIHlvdXIgVHVyYm9yZXBvLlxuICAgKlxuICAgKiBUbyBoZWxwIHdpdGggaW5jcmVtZW50YWwgbWlncmF0aW9uIG9yIGluIHNpdHVhdGlvbnMgd2hlcmUgeW91IGNhbid0IHVzZVxuICAgKiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQsIHlvdSBtYXkgdXNlXG4gICAqIC0tZGFuZ2Vyb3VzbHktZGlzYWJsZS1wYWNrYWdlLW1hbmFnZXItY2hlY2sgdG8gb3B0IG91dCBvZiB0aGlzIGNoZWNrIGFuZFxuICAgKiBhc3N1bWUgdGhlIHJpc2tzIG9mIHVuc3RhYmxlIGxvY2tmaWxlcyBwcm9kdWNpbmcgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci5cbiAgICogV2hlbiBkaXNhYmxlZCwgVHVyYm9yZXBvIHdpbGwgYXR0ZW1wdCBhIGJlc3QtZWZmb3J0IGRpc2NvdmVyeSBvZiB0aGVcbiAgICogaW50ZW5kZWQgcGFja2FnZSBtYW5hZ2VyIG1lYW50IGZvciB0aGUgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZGFuZ2Vyb3VzbHlkaXNhYmxlcGFja2FnZW1hbmFnZXJjaGVja1xuICAgKi9cbiAgcmVhZG9ubHkgZGFuZ2Vyb3VzbHlEaXNhYmxlUGFja2FnZU1hbmFnZXJDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBcIi50dXJiby9jYWNoZVwiXG4gICAqXG4gICAqIFNwZWNpZnkgdGhlIGZpbGVzeXN0ZW0gY2FjaGUgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNjYWNoZWRpclxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiB0cnVlXG4gICAqXG4gICAqIFR1cmJvcmVwbyBydW5zIGEgYmFja2dyb3VuZCBwcm9jZXNzIHRvIHByZS1jYWxjdWxhdGUgc29tZSBleHBlbnNpdmVcbiAgICogb3BlcmF0aW9ucy4gVGhpcyBzdGFuZGFsb25lIHByb2Nlc3MgKGRhZW1vbikgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sXG4gICAqIGFuZCBub3QgcmVxdWlyZWQgZm9yIHByb3BlciBmdW5jdGlvbmluZyBvZiB0dXJiby5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZGFlbW9uXG4gICAqL1xuICByZWFkb25seSBkYWVtb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdDogXCJzdHJpY3RcIlxuICAgKlxuICAgKiBUdXJib3JlcG8ncyBFbnZpcm9ubWVudCBNb2RlcyBhbGxvdyB5b3UgdG8gY29udHJvbCB3aGljaCBlbnZpcm9ubWVudFxuICAgKiB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSB0byBhIHRhc2sgYXQgcnVudGltZTpcbiAgICpcbiAgICpcInN0cmljdFwiOiBGaWx0ZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIG9ubHkgdGhvc2UgdGhhdCBhcmUgc3BlY2lmaWVkXG4gICAqIGluIHRoZSBlbnYgYW5kIGdsb2JhbEVudiBrZXlzIGluIHR1cmJvLmpzb24uXG4gICAqXG4gICAqIFwibG9vc2VcIjogQWxsb3cgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIHByb2Nlc3MgdG8gYmUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNlbnZtb2RlXG4gICAqL1xuICByZWFkb25seSBlbnZNb2RlPzogc3RyaW5nO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKlxuICAgKiBDYWNoZSBTZXR0aW5nc1xuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQ2FjaGUgc2V0dGluZ3MsIGlmIHVzaW5nIHJlbW90ZSBjYWNoZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW90ZUNhY2hlT3B0aW9ucz86IFJlbW90ZUNhY2hlT3B0aW9ucztcblxuICAvKipcbiAgICogRW52IEFyZ3MgdGhhdCB3aWxsIGJyZSBhZGRlZCB0byB0dXJibydzIGJ1aWxkOmFsbCB0YXNrXG4gICAqXG4gICAqIEBkZWZhdWx0OiB7fVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRBbGxUYXNrRW52VmFycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqXG4gICAqIFRhc2tzIC0gT3B0aW9uYWxseSBkZWZpbmUgYSBkaWZmZXJlbnQgcHJvamVuIHRhc2sgZm9yIG9uZSBvZiB0aGUgbGlmZWN5Y2xlXG4gICAqIHN0ZXBzLlxuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogUHJlIGNvbXBpbGUgdGFza1xuICAgKlxuICAgKiBAZGVmYXVsdDogXCJwcmUtY29tcGlsZVwiXG4gICAqL1xuICByZWFkb25seSBwcmVDb21waWxlVGFzaz86IFRhc2s7XG5cbiAgLyoqXG4gICAqIENvbXBpbGUgdGFza1xuICAgKlxuICAgKiBAZGVmYXVsdDogXCJjb21waWxlXCJcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBpbGVUYXNrPzogVGFzaztcblxuICAvKipcbiAgICogUG9zdCBjb21waWxlIHRhc2tcbiAgICpcbiAgICogQGRlZmF1bHQ6IFwicG9zdC1jb21waWxlXCJcbiAgICovXG4gIHJlYWRvbmx5IHBvc3RDb21waWxlVGFzaz86IFRhc2s7XG5cbiAgLyoqXG4gICAqIFRlc3QgdGFza1xuICAgKlxuICAgKiBAZGVmYXVsdDogXCJ0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RUYXNrPzogVGFzaztcblxuICAvKipcbiAgICogUGFja2FnZSB0YXNrXG4gICAqXG4gICAqIEBkZWZhdWx0OiBcInBhY2thZ2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZVRhc2s/OiBUYXNrO1xufVxuXG5leHBvcnQgY2xhc3MgVHVyYm9SZXBvIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2QgdG8gZGlzY292ZXJ0IHR1cmJvIGluIGEgcHJvamVjdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YocHJvamVjdDogUHJvamVjdCk6IFR1cmJvUmVwbyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNEZWZpbmVkID0gKGM6IENvbXBvbmVudCk6IGMgaXMgVHVyYm9SZXBvID0+IGMgaW5zdGFuY2VvZiBUdXJib1JlcG87XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzRGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGJ1aWxkV29ya2Zsb3dPcHRpb25zID0gKFxuICAgIHJlbW90ZUNhY2hlT3B0aW9uczogUmVtb3RlQ2FjaGVPcHRpb25zLFxuICApOiBQYXJ0aWFsPEJ1aWxkV29ya2Zsb3dPcHRpb25zPiA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSxcbiAgICAgIHByZUJ1aWxkU3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiQVdTIENyZWRzIGZvciBTU01cIixcbiAgICAgICAgICB1c2VzOiBcImF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAdjRcIixcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBbXCJyb2xlLXRvLWFzc3VtZVwiXTogcmVtb3RlQ2FjaGVPcHRpb25zLm9pZGNSb2xlLFxuICAgICAgICAgICAgW1wiYXdzLXJlZ2lvblwiXTogXCJ1cy1lYXN0LTFcIixcbiAgICAgICAgICAgIFtcInJvbGUtZHVyYXRpb24tc2Vjb25kc1wiXTogXCI5MDBcIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHR1cmJvcmVwbyB0byB1c2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHVyYm9WZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBmcm9tIHRoZSByb290IHR1cmJvLmpzb24gdG8gY3JlYXRlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGEgcGFja2FnZSB1c2luZyBQYWNrYWdlIENvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBUaGUgb25seSB2YWxpZCB2YWx1ZSBmb3IgZXh0ZW5kcyBpcyBbXCIvL1wiXSB0byBpbmhlcml0IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgcm9vdCB0dXJiby5qc29uLlxuICAgKiBJZiBleHRlbmRzIGlzIHVzZWQgaW4gdGhlIHJvb3QgdHVyYm8uanNvbiwgaXQgd2lsbCBiZSBpZ25vcmVkLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNleHRlbmRzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXh0ZW5kczogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGdsb2JzIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSBpbiBhbGwgdGFzayBoYXNoZXMuIElmIGFueSBmaWxlIG1hdGNoaW5nIHRoZXNlIGdsb2JzIGNoYW5nZXMsIGFsbCB0YXNrcyB3aWxsIG1pc3MgY2FjaGUuIEdsb2JzIGFyZSByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gb2YgdHVyYm8uanNvbi5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYWxsIGZpbGVzIGluIHNvdXJjZSBjb250cm9sIGluIHRoZSBXb3Jrc3BhY2Ugcm9vdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGdsb2JhbCBoYXNoLlxuICAgKlxuICAgKiBHbG9icyBtdXN0IGJlIGluIHRoZSByZXBvc2l0b3J5J3Mgc291cmNlIGNvbnRyb2wgcm9vdC4gR2xvYnMgb3V0c2lkZSBvZiB0aGUgcmVwb3NpdG9yeSBhcmVuJ3Qgc3VwcG9ydGVkLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxkZXBlbmRlbmNpZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnbG9iYWxEZXBlbmRlbmNpZXM6IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB5b3Ugd2FudCB0byBpbXBhY3QgdGhlIGhhc2ggb2YgYWxsIHRhc2tzLiBBbnkgY2hhbmdlIHRvIHRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIGNhdXNlIGFsbCB0YXNrcyB0byBtaXNzIGNhY2hlLlxuICAgKlxuICAgKiBGb3IgbW9yZSBvbiB3aWxkY2FyZCBhbmQgbmVnYXRpb24gc3ludGF4LCBzZWUgdGhlIGVudiBzZWN0aW9uLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxlbnZcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnbG9iYWxFbnY6IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB5b3Ugd2FudCB0byBtYWtlIGF2YWlsYWJsZSB0byB0YXNrcy5cbiAgICogVXNpbmcgdGhpcyBrZXkgb3B0cyBhbGwgdGFza3MgaW50byBTdHJpY3RcbiAgICogRW52aXJvbm1lbnQgVmFyaWFibGUgTW9kZS5cbiAgICpcbiAgICogQWRkaXRpb25hbGx5LCBUdXJib3JlcG8gaGFzIGEgYnVpbHQtaW4gc2V0IG9mIGdsb2JhbCBwYXNzdGhyb3VnaCB2YXJpYWJsZXNcbiAgICogZm9yIGNvbW1vbiBjYXNlcywgbGlrZSBvcGVyYXRpbmcgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhpc1xuICAgKiBpbmNsdWRlcyB2YXJpYWJsZXMgbGlrZSBIT01FLCBQQVRILCBBUFBEQVRBLCBTSEVMTCwgUFdELCBhbmQgbW9yZS4gVGhlIGZ1bGxcbiAgICogbGlzdCBjYW4gYmUgZm91bmQgaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgKlxuICAgKiBQYXNzdGhyb3VnaCB2YWx1ZXMgZG8gbm90IGNvbnRyaWJ1dGUgdG8gaGFzaGVzIGZvciBjYWNoaW5nXG4gICAqXG4gICAqIElmIHlvdSB3YW50IGNoYW5nZXMgaW4gdGhlc2UgdmFyaWFibGVzIHRvIGNhdXNlIGNhY2hlIG1pc3NlcywgeW91IHdpbGwgbmVlZFxuICAgKiB0byBpbmNsdWRlIHRoZW0gaW4gZW52IG9yIGdsb2JhbEVudi5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZ2xvYmFscGFzc3Rocm91Z2hlbnZcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnbG9iYWxQYXNzVGhyb3VnaEVudjogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IFwic3RyZWFtXCJcbiAgICpcbiAgICogU2VsZWN0IGEgdGVybWluYWwgVUkgZm9yIHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBcInR1aVwiIGFsbG93cyBmb3Igdmlld2luZyBlYWNoIGxvZyBhdCBvbmNlIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSB0YXNrLlxuICAgKiBcInN0cmVhbVwiIG91dHB1dHMgbG9ncyBhcyB0aGV5IGNvbWUgaW4gYW5kIGlzIG5vdCBpbnRlcmFjdGl2ZS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jdWlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1aTogXCJ0dWlcIiB8IFwic3RyZWFtXCI7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBmYWxzZVxuICAgKlxuICAgKiBUdXJib3JlcG8gdXNlcyB5b3VyIHJlcG9zaXRvcnkncyBsb2NrZmlsZSB0byBkZXRlcm1pbmUgY2FjaGluZyBiZWhhdmlvcixcbiAgICogUGFja2FnZSBHcmFwaHMsIGFuZCBtb3JlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIHVzZSB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGRcbiAgICogdG8gaGVscCB5b3Ugc3RhYmlsaXplIHlvdXIgVHVyYm9yZXBvLlxuICAgKlxuICAgKiBUbyBoZWxwIHdpdGggaW5jcmVtZW50YWwgbWlncmF0aW9uIG9yIGluIHNpdHVhdGlvbnMgd2hlcmUgeW91IGNhbid0IHVzZVxuICAgKiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQsIHlvdSBtYXkgdXNlXG4gICAqIC0tZGFuZ2Vyb3VzbHktZGlzYWJsZS1wYWNrYWdlLW1hbmFnZXItY2hlY2sgdG8gb3B0IG91dCBvZiB0aGlzIGNoZWNrIGFuZFxuICAgKiBhc3N1bWUgdGhlIHJpc2tzIG9mIHVuc3RhYmxlIGxvY2tmaWxlcyBwcm9kdWNpbmcgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci5cbiAgICogV2hlbiBkaXNhYmxlZCwgVHVyYm9yZXBvIHdpbGwgYXR0ZW1wdCBhIGJlc3QtZWZmb3J0IGRpc2NvdmVyeSBvZiB0aGVcbiAgICogaW50ZW5kZWQgcGFja2FnZSBtYW5hZ2VyIG1lYW50IGZvciB0aGUgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZGFuZ2Vyb3VzbHlkaXNhYmxlcGFja2FnZW1hbmFnZXJjaGVja1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhbmdlcm91c2x5RGlzYWJsZVBhY2thZ2VNYW5hZ2VyQ2hlY2s6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBcIi50dXJiby9jYWNoZVwiXG4gICAqXG4gICAqIFNwZWNpZnkgdGhlIGZpbGVzeXN0ZW0gY2FjaGUgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNjYWNoZWRpclxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNhY2hlRGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiB0cnVlXG4gICAqXG4gICAqIFR1cmJvcmVwbyBydW5zIGEgYmFja2dyb3VuZCBwcm9jZXNzIHRvIHByZS1jYWxjdWxhdGUgc29tZSBleHBlbnNpdmVcbiAgICogb3BlcmF0aW9ucy4gVGhpcyBzdGFuZGFsb25lIHByb2Nlc3MgKGRhZW1vbikgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sXG4gICAqIGFuZCBub3QgcmVxdWlyZWQgZm9yIHByb3BlciBmdW5jdGlvbmluZyBvZiB0dXJiby5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZGFlbW9uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGFlbW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdDogXCJzdHJpY3RcIlxuICAgKlxuICAgKiBUdXJib3JlcG8ncyBFbnZpcm9ubWVudCBNb2RlcyBhbGxvdyB5b3UgdG8gY29udHJvbCB3aGljaCBlbnZpcm9ubWVudFxuICAgKiB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSB0byBhIHRhc2sgYXQgcnVudGltZTpcbiAgICpcbiAgICpcInN0cmljdFwiOiBGaWx0ZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIG9ubHkgdGhvc2UgdGhhdCBhcmUgc3BlY2lmaWVkXG4gICAqIGluIHRoZSBlbnYgYW5kIGdsb2JhbEVudiBrZXlzIGluIHR1cmJvLmpzb24uXG4gICAqXG4gICAqIFwibG9vc2VcIjogQWxsb3cgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIHByb2Nlc3MgdG8gYmUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNlbnZtb2RlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW52TW9kZTogc3RyaW5nO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKlxuICAgKiBDYWNoZSBTZXR0aW5nc1xuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQ2FjaGUgc2V0dGluZ3MsIGlmIHVzaW5nIHJlbW90ZSBjYWNoZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZW1vdGVDYWNoZU9wdGlvbnM/OiBSZW1vdGVDYWNoZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIGlzIHRoaXMgdGhlIHJvb3QgcHJvamVjdD9cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1Jvb3RQcm9qZWN0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUdXJibydzIGJ1aWxkOmFsbCB0YXNrIGF0IHRoZSByb290IG9mIHRoZSBtb25vcmVwby5cbiAgICpcbiAgICogVGhpcyBpcyBhIG5vcm1hbCBwcm9qZW4gdGFzayB0aGF0IHJ1bnMgdGhlIHJvb3QgdHVyYm8gdGFzay5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWlsZEFsbFRhc2s/OiBUYXNrO1xuXG4gIC8qKlxuICAgKiBNYWluIHR1cmJvOmJ1aWxkIHRhc2tcbiAgICpcbiAgICogVGhpcyBpcyBhIHNwZWNpYWwgVHVyYm8gdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkVGFzazogVHVyYm9SZXBvVGFzaztcblxuICAvKipcbiAgICogcHJlIGNvbXBpbGUgdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByZUNvbXBpbGVUYXNrPzogVHVyYm9SZXBvVGFzaztcblxuICAvKipcbiAgICogY29tcGlsZSB0YXNrXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcGlsZVRhc2s/OiBUdXJib1JlcG9UYXNrO1xuXG4gIC8qKlxuICAgKiBwb3N0IGNvbXBpbGUgdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvc3RDb21waWxlVGFzaz86IFR1cmJvUmVwb1Rhc2s7XG5cbiAgLyoqXG4gICAqIFRlc3QgdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRlc3RUYXNrPzogVHVyYm9SZXBvVGFzaztcblxuICAvKipcbiAgICogUGFja2FnZSB0YXNrXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFja2FnZVRhc2s/OiBUdXJib1JlcG9UYXNrO1xuXG4gIC8qKlxuICAgKiBTdWItVGFza3MgdG8gcnVuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFza3M6IEFycmF5PFR1cmJvUmVwb1Rhc2s+ID0gW107XG5cbiAgLyoqXG4gICAqIEVudiBBcmdzIHRoYXQgd2lsbCBicmUgYWRkZWQgdG8gdHVyYm8ncyBidWlsZDphbGwgdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkQWxsVGFza0VudlZhcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IE5vZGVQcm9qZWN0LFxuICAgIG9wdGlvbnM6IFR1cmJvUmVwb09wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLnR1cmJvVmVyc2lvbiA9IG9wdGlvbnMudHVyYm9WZXJzaW9uID8/IFZFUlNJT04uVFVSQk9fVkVSU0lPTjtcbiAgICB0aGlzLmlzUm9vdFByb2plY3QgPSBwcm9qZWN0ID09PSBwcm9qZWN0LnJvb3Q7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdHVyYm9yZXBvIHBhY2thZ2UgdG8gcm9vdCBwcm9qZWN0LlxuICAgICAqL1xuICAgIGlmICh0aGlzLmlzUm9vdFByb2plY3QpIHtcbiAgICAgIHByb2plY3QuYWRkRGV2RGVwcyhgdHVyYm9AJHt0aGlzLnR1cmJvVmVyc2lvbn1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZ25vcmUgdGhlIHdvcmtpbmcgY2FjaGUgZm9yIHR1cmJvLlxuICAgICAqL1xuICAgIHByb2plY3QuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKFwiLy50dXJib1wiKTtcbiAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uYWRkUGF0dGVybnMoXCIvLnR1cmJvL1wiKTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFNldCBzb21lIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgdGhpcy5leHRlbmRzID0gb3B0aW9ucy5leHRlbmRzID8/ICh0aGlzLmlzUm9vdFByb2plY3QgPyBbXSA6IFtcIi8vXCJdKTtcbiAgICB0aGlzLmdsb2JhbERlcGVuZGVuY2llcyA9IG9wdGlvbnMuZ2xvYmFsRGVwZW5kZW5jaWVzID8/IFtdO1xuICAgIHRoaXMuZ2xvYmFsRW52ID0gb3B0aW9ucy5nbG9iYWxFbnYgPz8gW107XG4gICAgdGhpcy5nbG9iYWxQYXNzVGhyb3VnaEVudiA9IG9wdGlvbnMuZ2xvYmFsUGFzc1Rocm91Z2hFbnYgPz8gW107XG4gICAgdGhpcy51aSA9IG9wdGlvbnMudWkgPz8gXCJzdHJlYW1cIjtcbiAgICB0aGlzLmRhbmdlcm91c2x5RGlzYWJsZVBhY2thZ2VNYW5hZ2VyQ2hlY2sgPVxuICAgICAgb3B0aW9ucy5kYW5nZXJvdXNseURpc2FibGVQYWNrYWdlTWFuYWdlckNoZWNrID8/IGZhbHNlO1xuICAgIHRoaXMuY2FjaGVEaXIgPSBvcHRpb25zLmNhY2hlRGlyID8/IFwiLnR1cmJvL2NhY2hlXCI7XG4gICAgdGhpcy5kYWVtb24gPSBvcHRpb25zLmRhZW1vbiA/PyB0cnVlO1xuICAgIHRoaXMuZW52TW9kZSA9IG9wdGlvbnMuZW52TW9kZSA/PyBcInN0cmljdFwiO1xuICAgIHRoaXMucmVtb3RlQ2FjaGVPcHRpb25zID0gb3B0aW9ucy5yZW1vdGVDYWNoZU9wdGlvbnM7XG4gICAgdGhpcy5idWlsZEFsbFRhc2tFbnZWYXJzID0gb3B0aW9ucy5idWlsZEFsbFRhc2tFbnZWYXJzID8/IHt9O1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogVHVyYm8gQnVpbGQgVGFza1xuICAgICAqXG4gICAgICogQWxsIHR1cmJvIGNvbmZpZ3MgY29udGFpbiBhIHR1cmJvIGJ1aWxkIHRhc2suXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBUaGUgdHVyYm8gZW50cnkgcG9pbnQgZGVmaW5pdGlvbiBmb3IgdGhlIHR1cmJvOmJ1aWxkIHRhc2suIFRoaXMgZXhpc3RzXG4gICAgICogaW4gZWFjaCBwcm9qZWN0IGFuZCBpcyB3cml0dGVuIHRvdCBoZSB0dXJiby5qc29uIGZpbGUuIFRoaXMgdGFzayBpcyBub3RcbiAgICAgKiBhIHByb2plbiB0YXNrIG9yIGEgTm9kZSB0YXNrLlxuICAgICAqL1xuICAgIHRoaXMuYnVpbGRUYXNrID0gbmV3IFR1cmJvUmVwb1Rhc2sodGhpcy5wcm9qZWN0LCB7XG4gICAgICBuYW1lOiBST09UX1RVUkJPX1RBU0tfTkFNRSxcbiAgICAgIGRlcGVuZHNPbjogdGhpcy5pc1Jvb3RQcm9qZWN0ID8gW2BeJHtST09UX1RVUkJPX1RBU0tfTkFNRX1gXSA6IFtdLFxuICAgIH0pO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogVHVyYm8gQnVpbGQgQWxsIFRhc2tcbiAgICAgKlxuICAgICAqIFRoZSBQcm9qZW4gZW50cnkgcG9pbnQuIFRoaXMgb25seSBleGlzdHMgaW4gdGhlIHJvb3QgYW5kIGlzIGEgcHJvamVuXG4gICAgICogdGFzayB0aGF0IGNhbiBiZSBydW4gdXNpbmcgcG5wbS5cbiAgICAgKlxuICAgICAqIC0gVHVybnMgb2ZmIHRlbGVtZXRyeVxuICAgICAqIC0gUnVucyByb290IHR1cmJvIHRhc2sgdG8gYnVpbGQgYWxsIHN1Yi1wcm9qZWN0cy5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGlmICh0aGlzLmlzUm9vdFByb2plY3QpIHtcbiAgICAgIC8qKlxuICAgICAgICogQ3JlYXRlIGFuZCBjb25maWd1cmUgdGhlIGJ1aWxkIGFsbCB0YXNrLlxuICAgICAgICovXG4gICAgICB0aGlzLmJ1aWxkQWxsVGFzayA9IHRoaXMucHJvamVjdC50YXNrcy5hZGRUYXNrKFJPT1RfQ0lfVEFTS19OQU1FLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgIFwiUm9vdCBidWlsZCBmb2xsb3dlZCBieSBzdWItcHJvamVjdCBidWlsZHMuIE1pbWljcyB0aGUgQ0kgYnVpbGQgcHJvY2VzcyBpbiBvbmUgc3RlcC5cIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5idWlsZEFsbFRhc2suZXhlYyhcInR1cmJvIHRlbGVtZXRyeSBkaXNhYmxlXCIpO1xuXG4gICAgICAvKipcbiAgICAgICAqIEFueSBlbnYgdmFycyB0aGF0IG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSBidWlsZCBhbGwgdGFzay5cbiAgICAgICAqL1xuICAgICAgaWYgKHRoaXMuYnVpbGRBbGxUYXNrRW52VmFycykge1xuICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLmJ1aWxkQWxsVGFza0VudlZhcnMpLmZvckVhY2goKFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICB0aGlzLmFkZEdsb2JhbEVudlZhcihuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIE5vIHJlbW90ZSBjYWNoZSBpbiB1c2UsIHNvIHJ1biB0aGUgcm9vdCB0dXJibyB0YXNrIHRvIGJ1aWxkIGFsbFxuICAgICAgICogc3ViLXByb2plY3RzIGxvY2FsbHkuXG4gICAgICAgKi9cbiAgICAgIGlmICghdGhpcy5yZW1vdGVDYWNoZU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5idWlsZEFsbFRhc2suZXhlYyhcbiAgICAgICAgICBgdHVyYm8gJHtST09UX1RVUkJPX1RBU0tfTkFNRX0gLS1zdW1tYXJpemUgLS1jb25jdXJyZW5jeT0xMGAsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKipcbiAgICAgICAgICogUmVtb3RlIGNhY2hlIGluIHVzZSwgc28gcnVuIHRoZSByb290IHR1cmJvIHRhc2sgdG8gYnVpbGQgYWxsXG4gICAgICAgICAqIHN1Yi1wcm9qZWN0cyB1c2luZyB0aGUgcmVtb3RlIGNhY2hlLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5idWlsZEFsbFRhc2suZXhlYyhcbiAgICAgICAgICBgdHVyYm8gdHVyYm86YnVpbGQgLS1zdW1tYXJpemUgLS1jb25jdXJyZW5jeT0xMCAtLWNhY2hlPXJlbW90ZTpydyAtLWFwaT0kVFVSQk9fRU5EUE9JTlQgLS10b2tlbj0kVFVSQk9fVE9LRU4gLS10ZWFtPSR7dGhpcy5yZW1vdGVDYWNoZU9wdGlvbnMudGVhbU5hbWV9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25kaXRpb246ICdbICEgLW4gXCIkQ0lcIiBdJyxcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICBUVVJCT19FTkRQT0lOVDogYCQoYXdzIHNzbSBnZXQtcGFyYW1ldGVyIC0tbmFtZSAke3RoaXMucmVtb3RlQ2FjaGVPcHRpb25zLmVuZHBvaW50UGFyYW1OYW1lfSAtLXF1ZXJ5IFBhcmFtZXRlci5WYWx1ZSAtLW91dHB1dCB0ZXh0IC0tcHJvZmlsZSAke3RoaXMucmVtb3RlQ2FjaGVPcHRpb25zLnByb2ZpbGVOYW1lfSlgLFxuICAgICAgICAgICAgICBUVVJCT19UT0tFTjogYCQoYXdzIHNzbSBnZXQtcGFyYW1ldGVyIC0tbmFtZSAke3RoaXMucmVtb3RlQ2FjaGVPcHRpb25zLnRva2VuUGFyYW1OYW1lfSAtLXF1ZXJ5IFBhcmFtZXRlci5WYWx1ZSAtLW91dHB1dCB0ZXh0IC0tcHJvZmlsZSAke3RoaXMucmVtb3RlQ2FjaGVPcHRpb25zLnByb2ZpbGVOYW1lfSlgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICAvLyBydW5uaW5nIGluIENJLCBXZSdsbCBkZXBlbmQgb24gT0lEQyBhdXRoLlxuICAgICAgICB0aGlzLmJ1aWxkQWxsVGFzay5leGVjKFxuICAgICAgICAgIGB0dXJibyB0dXJibzpidWlsZCAtLXN1bW1hcml6ZSAtLWNvbmN1cnJlbmN5PTEwIC0tY2FjaGU9cmVtb3RlOnJ3IC0tYXBpPSRUVVJCT19FTkRQT0lOVCAtLXRva2VuPSRUVVJCT19UT0tFTiAtLXRlYW09JHt0aGlzLnJlbW90ZUNhY2hlT3B0aW9ucy50ZWFtTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJ1sgLW4gXCIkQ0lcIiBdJyxcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICBUVVJCT19FTkRQT0lOVDogYCQoYXdzIHNzbSBnZXQtcGFyYW1ldGVyIC0tbmFtZSAke3RoaXMucmVtb3RlQ2FjaGVPcHRpb25zLmVuZHBvaW50UGFyYW1OYW1lfSAtLXF1ZXJ5IFBhcmFtZXRlci5WYWx1ZSAtLW91dHB1dCB0ZXh0KWAsXG4gICAgICAgICAgICAgIFRVUkJPX1RPS0VOOiBgJChhd3Mgc3NtIGdldC1wYXJhbWV0ZXIgLS1uYW1lICR7dGhpcy5yZW1vdGVDYWNoZU9wdGlvbnMudG9rZW5QYXJhbU5hbWV9IC0tcXVlcnkgUGFyYW1ldGVyLlZhbHVlIC0tb3V0cHV0IHRleHQpYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTVUItUFJPSkVDVFxuICAgICAqXG4gICAgICogQ3JlYXRlcyB0YXNrcyBmb3IgdGhlIHR5cGljYWwgbGlmZWN5Y2xlIGZvciBhbGwgcHJvamVjdCBwcm9qZWN0cy5cbiAgICAgKi9cbiAgICBpZiAoIXRoaXMuaXNSb290UHJvamVjdCkge1xuICAgICAgLyoqXG4gICAgICAgKiBBbGwgZ2VuZXJhdGVkIGZpbGVzIGluIHRoZSBwcm9qZWN0LiBJbmNsdWRlIHRoZXNlIGFzIGlucHV0cyB0byB0aGVcbiAgICAgICAqIGNvbXBpbGUgcmVsYXRlZCB0YXNrcy5cbiAgICAgICAqL1xuICAgICAgY29uc3QgZ2VuZXJhdGVkRmlsZXMgPSB0aGlzLnByb2plY3QuY29tcG9uZW50c1xuICAgICAgICAuZmlsdGVyKChjKTogYyBpcyBGaWxlQmFzZSA9PiBjIGluc3RhbmNlb2YgRmlsZUJhc2UpXG4gICAgICAgIC5tYXAoKGMpID0+IGMucGF0aCk7XG5cbiAgICAgIHRoaXMucHJlQ29tcGlsZVRhc2sgPSBuZXcgVHVyYm9SZXBvVGFzayhwcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMucHJlQ29tcGlsZVRhc2s/Lm5hbWUgPz8gXCJwcmUtY29tcGlsZVwiLFxuICAgICAgICBpbnB1dHM6IFtcInNyYy8qKlwiLCAuLi5nZW5lcmF0ZWRGaWxlc10sXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29tcGlsZVRhc2sgPSBuZXcgVHVyYm9SZXBvVGFzayhwcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMuY29tcGlsZVRhc2s/Lm5hbWUgPz8gXCJjb21waWxlXCIsXG4gICAgICAgIGlucHV0czogW1wic3JjLyoqXCIsIC4uLmdlbmVyYXRlZEZpbGVzXSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wb3N0Q29tcGlsZVRhc2sgPSBuZXcgVHVyYm9SZXBvVGFzayhwcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMucG9zdENvbXBpbGVUYXNrPy5uYW1lID8/IFwicG9zdC1jb21waWxlXCIsXG4gICAgICAgIGlucHV0czogW1wic3JjLyoqXCIsIC4uLmdlbmVyYXRlZEZpbGVzXSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZXN0VGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHByb2plY3QsIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy50ZXN0VGFzaz8ubmFtZSA/PyBcInRlc3RcIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wYWNrYWdlVGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHByb2plY3QsIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5wYWNrYWdlVGFzaz8ubmFtZSA/PyBcInBhY2thZ2VcIixcbiAgICAgICAgaW5wdXRzOiBbXCIubnBtaWdub3JlXCJdLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRhc2tzLnB1c2goXG4gICAgICAgIHRoaXMucHJlQ29tcGlsZVRhc2ssXG4gICAgICAgIHRoaXMuY29tcGlsZVRhc2ssXG4gICAgICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLFxuICAgICAgICB0aGlzLnRlc3RUYXNrLFxuICAgICAgICB0aGlzLnBhY2thZ2VUYXNrLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGVudiB2YXIgdG8gdGhlIGdsb2JhbCBlbnYgdmFycyBmb3IgYWxsIHRhc2tzLlxuICAgKiBUaGlzIHdpbGwgYWxzbyBiZWNvbWUgYW4gaW5wdXQgZm9yIHRoZSBidWlsZDphbGwgdGFzayBjYWNoZSBhdCB0aGUgcm9vdC5cbiAgICovXG4gIHB1YmxpYyBhZGRHbG9iYWxFbnZWYXIobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgLyoqXG4gICAgICogQWRkIGVudiB2YXIgdG8gZ2xvYmFsIHRhc2sgZW52XG4gICAgICovXG4gICAgdGhpcy5idWlsZEFsbFRhc2s/LmVudihuYW1lLCB2YWx1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdG8gZ2xvYmFsIGVudiB2YXJzIGZvciBhbGwgdGFza3MuXG4gICAgICovXG4gICAgaWYgKHRoaXMuaXNSb290UHJvamVjdCkge1xuICAgICAgdGhpcy5nbG9iYWxFbnYucHVzaChuYW1lKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGVCcmFuY2hOYW1lRW52VmFyKCkge1xuICAgIHRoaXMuYWRkR2xvYmFsRW52VmFyKFwiQlJBTkNIX05BTUVcIiwgXCIkKGdpdCByZXYtcGFyc2UgLS1hYmJyZXYtcmVmIEhFQUQpXCIpO1xuICB9XG5cbiAgcHJlU3ludGhlc2l6ZSgpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBBZGQgYW55IGxvY2FsIHdvcmtzcGFjZSBzcGVjaWZpYyBkZXBzIHRvIGRlcGVuZHNPbiBzbyB0aGF0IHdlIGtub3dcbiAgICAgKiBjb21waWxlIGhhcyBmaW5pc2hlZCBiZWZvcmUgYXR0ZW1wdGluZyB0byB1c2UgYW55IGRpc3RyaWJ1dGlvbiBhcnRpZmFjdHMuXG4gICAgICpcbiAgICAgKiBEbyB0aGlzIGluIHByZXN5bnRoIHNvIHRoYXQgd2UgY2FuIGJlIHN1cmUgYWxsIHByb2plY3QgZGVwZW5kZW5jaWVzIGhhdmVcbiAgICAgKiBiZWVuIGRlZmluZWQgZmlyc3QuXG4gICAgICovXG4gICAgbGV0IG5leHREZXBlbmRzT24gPSB0aGlzLnByb2plY3QuZGVwcy5hbGxcbiAgICAgIC5maWx0ZXIoKGQpID0+IGQudmVyc2lvbiA9PT0gXCJ3b3Jrc3BhY2U6KlwiKVxuICAgICAgLm1hcCgoZCkgPT4gW2QubmFtZSwgUk9PVF9UVVJCT19UQVNLX05BTUVdLmpvaW4oXCIjXCIpKTtcblxuICAgIC8qKlxuICAgICAqIExvb3Agb3ZlciBhbGwgcHJvamVuIHRhc2tzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIHR1cmJvIHRhc2tcbiAgICAgKiBkZWZpbml0aW9ucy4gQ2hhaW4gdGhlbSB0b2dldGhlciB1c2luZyBkZXBlbmRzT24sIGFsb25nIHdpdGggYW55IG91dHNpZGVcbiAgICAgKiBwYWNrYWdlIGRlcGVuZGVuY2llcy5cbiAgICAgKi9cbiAgICBpZiAoIXRoaXMuaXNSb290UHJvamVjdCkge1xuICAgICAgKFxuICAgICAgICBbXG4gICAgICAgICAgW3RoaXMucHJvamVjdC5wcmVDb21waWxlVGFzaywgdGhpcy5wcmVDb21waWxlVGFza10sXG4gICAgICAgICAgW3RoaXMucHJvamVjdC5jb21waWxlVGFzaywgdGhpcy5jb21waWxlVGFza10sXG4gICAgICAgICAgW3RoaXMucHJvamVjdC5wb3N0Q29tcGlsZVRhc2ssIHRoaXMucG9zdENvbXBpbGVUYXNrXSxcbiAgICAgICAgICBbdGhpcy5wcm9qZWN0LnRlc3RUYXNrLCB0aGlzLnRlc3RUYXNrXSxcbiAgICAgICAgICBbdGhpcy5wcm9qZWN0LnBhY2thZ2VUYXNrLCB0aGlzLnBhY2thZ2VUYXNrXSxcbiAgICAgICAgXSBhcyBBcnJheTxbVGFzaywgVHVyYm9SZXBvVGFza10+XG4gICAgICApLmZvckVhY2goKFtwalRhc2ssIHR1cmJvVGFza10pID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHN0ZXBzIGV4aXN0IGNoYWluIHVzaW5nIGRlcGVuZHNPblxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHBqVGFzayAmJiB0dXJib1Rhc2sgJiYgcGpUYXNrLnN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpZiAobmV4dERlcGVuZHNPbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0dXJib1Rhc2suZGVwZW5kc09uLnB1c2goLi4ubmV4dERlcGVuZHNPbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHREZXBlbmRzT24gPSBbdHVyYm9UYXNrLm5hbWVdO1xuXG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogT3RoZXJ3aXNlLCBpZiBhIHRhc2sgZG9lc24ndCBkbyBhbnl0aGluZywgZGVhY3RpdmF0ZSBpdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0dXJib1Rhc2suaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8qKlxuICAgICAgICogTWFpbiBidWlsZCBlbnRyeSBwb2ludCBkZXBlbmRzIG9uIHdoYXRldmVyIHdhcyBsYXN0LlxuICAgICAgICovXG4gICAgICB0aGlzLmJ1aWxkVGFzay5kZXBlbmRzT24ucHVzaCguLi5uZXh0RGVwZW5kc09uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBmb3IgdGhlIHR1cmJvIGNvbmZpZyBmaWxlLlxuICAgICAqL1xuICAgIGNvbnN0IGZpbGVOYW1lOiBzdHJpbmcgPSBcInR1cmJvLmpzb25cIjtcblxuICAgIC8qKlxuICAgICAqIEVuc3VyZSB0aGF0IHR1cmJvIGNvbmZpZyBkb2Vzbid0IGVuZCB1cCBpbiBhbnkgcGFja2FnZSBkaXN0cmlidXRpb25zLlxuICAgICAqL1xuICAgIHRoaXMucHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGZpbGVOYW1lKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjb250ZW50IG9mIHRoaXMgWUFNTCBmaWxlIHdpbGwgYmUgcmVzb2x2ZWQgYXQgc3ludGggdGltZS4gQnkgdGhlbixcbiAgICAgKiBhbnkgc3ViLXByb2plY3RzIHdpbGwgYmUgZGVmaW5lZCBhbmQgdGhpcyB3aWxsIGJlIGEgY29tcGxldGUgbGlzdC5cbiAgICAgKi9cbiAgICBuZXcgSnNvbkZpbGUodGhpcy5wcm9qZWN0LCBmaWxlTmFtZSwge1xuICAgICAgb2JqOiB7XG4gICAgICAgIGV4dGVuZHM6IHRoaXMuZXh0ZW5kcy5sZW5ndGggPyB0aGlzLmV4dGVuZHMgOiB1bmRlZmluZWQsXG4gICAgICAgIGdsb2JhbERlcGVuZGVuY2llczpcbiAgICAgICAgICB0aGlzLmlzUm9vdFByb2plY3QgJiYgdGhpcy5nbG9iYWxEZXBlbmRlbmNpZXMubGVuZ3RoXG4gICAgICAgICAgICA/IHRoaXMuZ2xvYmFsRGVwZW5kZW5jaWVzXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2xvYmFsRW52OlxuICAgICAgICAgIHRoaXMuaXNSb290UHJvamVjdCAmJiB0aGlzLmdsb2JhbEVudi5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy5nbG9iYWxFbnZcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBnbG9iYWxQYXNzVGhyb3VnaEVudjpcbiAgICAgICAgICB0aGlzLmlzUm9vdFByb2plY3QgJiYgdGhpcy5nbG9iYWxQYXNzVGhyb3VnaEVudi5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy5nbG9iYWxQYXNzVGhyb3VnaEVudlxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIHVpOiB0aGlzLmlzUm9vdFByb2plY3QgPyB0aGlzLnVpIDogdW5kZWZpbmVkLFxuICAgICAgICBkYW5nZXJvdXNseURpc2FibGVQYWNrYWdlTWFuYWdlckNoZWNrOiB0aGlzLmlzUm9vdFByb2plY3RcbiAgICAgICAgICA/IHRoaXMuZGFuZ2Vyb3VzbHlEaXNhYmxlUGFja2FnZU1hbmFnZXJDaGVja1xuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBjYWNoZURpcjogdGhpcy5pc1Jvb3RQcm9qZWN0ID8gdGhpcy5jYWNoZURpciA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGFlbW9uOiB0aGlzLmlzUm9vdFByb2plY3QgPyB0aGlzLmRhZW1vbiA6IHVuZGVmaW5lZCxcbiAgICAgICAgZW52TW9kZTogdGhpcy5pc1Jvb3RQcm9qZWN0ID8gdGhpcy5lbnZNb2RlIDogdW5kZWZpbmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWxsIHRhc2tzXG4gICAgICAgICAqL1xuICAgICAgICB0YXNrczogdGhpcy50YXNrc1xuICAgICAgICAgIC5maWx0ZXIoKHRhc2spID0+IHRhc2suaXNBY3RpdmUpXG4gICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgIChhY2MsIHRhc2spID0+IHtcbiAgICAgICAgICAgICAgYWNjW3Rhc2submFtZV0gPSB7XG4gICAgICAgICAgICAgICAgLi4udGFzay50YXNrQ29uZmlnKCksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBbdGhpcy5idWlsZFRhc2submFtZV06IHsgLi4udGhpcy5idWlsZFRhc2sudGFza0NvbmZpZygpIH0sXG4gICAgICAgICAgICB9IGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG4gIH1cbn1cbiJdfQ==
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVyYm8tcmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90dXJiby90dXJiby1yZXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9DQUEwRTtBQUUxRSx1RUFBa0U7QUFFbEUsdURBQWtEO0FBRWxEOzs7O2dGQUlnRjtBQUVuRSxRQUFBLG9CQUFvQixHQUFHLGFBQWEsQ0FBQztBQUNyQyxRQUFBLGlCQUFpQixHQUFHLFdBQVcsQ0FBQztBQW9ON0MsTUFBYSxTQUFVLFNBQVEsZUFBUztJQUN0Qzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVBQWtCLEVBQUUsQ0FBQyxDQUFDLFlBQVksU0FBUyxDQUFDO1FBQzNFLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQWdORCxZQUNrQixPQUFvQixFQUNwQyxVQUE0QixFQUFFO1FBRTlCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhDLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFYdEM7O1dBRUc7UUFDYSxVQUFLLEdBQXlCLEVBQUUsQ0FBQztRQWEvQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFOUM7O1dBRUc7UUFDSCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVEOztXQUVHO1FBQ0gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0M7Ozs7b0ZBSTRFO1FBRTVFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUM7UUFDL0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMscUNBQXFDO1lBQ3hDLE9BQU8sQ0FBQyxxQ0FBcUMsSUFBSSxLQUFLLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUM7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQztRQUU3RDs7Ozs7O29GQU00RTtRQUU1RTs7OztXQUlHO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLCtCQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQyxJQUFJLEVBQUUsNEJBQW9CO1lBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksNEJBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ2xFLENBQUMsQ0FBQztRQUVIOzs7Ozs7Ozs7O29GQVU0RTtRQUU1RSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2Qjs7ZUFFRztZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHlCQUFpQixFQUFFO2dCQUNoRSxXQUFXLEVBQ1QscUZBQXFGO2FBQ3hGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFFbEQ7O2VBRUc7WUFDSCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7b0JBQ2pFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRDs7O2VBR0c7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixTQUFTLDRCQUFvQiwrQkFBK0IsQ0FDN0QsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTjs7O21CQUdHO2dCQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixzSEFBc0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxFQUN4SjtvQkFDRSxTQUFTLEVBQUUsZ0JBQWdCO29CQUMzQixHQUFHLEVBQUU7d0JBQ0gsY0FBYyxFQUFFLGtDQUFrQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLG9EQUFvRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxHQUFHO3dCQUNyTCxXQUFXLEVBQUUsa0NBQWtDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLG9EQUFvRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxHQUFHO3FCQUNoTDtpQkFDRixDQUNGLENBQUM7Z0JBQ0YsNENBQTRDO2dCQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDcEIsc0hBQXNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsRUFDeEo7b0JBQ0UsU0FBUyxFQUFFLGNBQWM7b0JBQ3pCLEdBQUcsRUFBRTt3QkFDSCxjQUFjLEVBQUUsa0NBQWtDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIseUNBQXlDO3dCQUNwSSxXQUFXLEVBQUUsa0NBQWtDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLHlDQUF5QztxQkFDL0g7aUJBQ0YsQ0FDRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRDs7OztXQUlHO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4Qjs7O2VBR0c7WUFDSCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVU7aUJBQzNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBaUIsRUFBRSxDQUFDLENBQUMsWUFBWSxjQUFRLENBQUM7aUJBQ25ELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXRCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSwrQkFBYSxDQUFDLE9BQU8sRUFBRTtnQkFDL0MsSUFBSSxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLGFBQWE7Z0JBQ25ELE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLGNBQWMsQ0FBQzthQUN0QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksK0JBQWEsQ0FBQyxPQUFPLEVBQUU7Z0JBQzVDLElBQUksRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxTQUFTO2dCQUM1QyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxjQUFjLENBQUM7YUFDdEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLCtCQUFhLENBQUMsT0FBTyxFQUFFO2dCQUNoRCxJQUFJLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRSxJQUFJLElBQUksY0FBYztnQkFDckQsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsY0FBYyxDQUFDO2FBQ3RDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSwrQkFBYSxDQUFDLE9BQU8sRUFBRTtnQkFDekMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLE1BQU07YUFDdkMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLCtCQUFhLENBQUMsT0FBTyxFQUFFO2dCQUM1QyxJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksU0FBUztnQkFDNUMsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3ZCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZUFBZSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ2hEOztXQUVHO1FBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBDOztXQUVHO1FBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsb0NBQW9DLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsYUFBYTtRQUNYOzs7Ozs7V0FNRztRQUNILElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUc7YUFDdEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLGFBQWEsQ0FBQzthQUMxQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSw0QkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXhEOzs7O1dBSUc7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRXRCO2dCQUNFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFDbEQsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUM1QyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQ3BELENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDdEMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO2FBRS9DLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRTtnQkFDaEM7O21CQUVHO2dCQUNILElBQUksTUFBTSxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUM3QixTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO29CQUM3QyxDQUFDO29CQUNELGFBQWEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFakM7O3VCQUVHO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDTixTQUFTLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUg7O2VBRUc7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxNQUFNLFFBQVEsR0FBVyxZQUFZLENBQUM7UUFFdEM7O1dBRUc7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhDOzs7V0FHRztRQUNILElBQUksY0FBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFO1lBQ25DLEdBQUcsRUFBRTtnQkFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3ZELGtCQUFrQixFQUNoQixJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO29CQUNsRCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtvQkFDekIsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2YsU0FBUyxFQUNQLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO29CQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVM7b0JBQ2hCLENBQUMsQ0FBQyxTQUFTO2dCQUNmLG9CQUFvQixFQUNsQixJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNO29CQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQjtvQkFDM0IsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2YsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzVDLHFDQUFxQyxFQUFFLElBQUksQ0FBQyxhQUFhO29CQUN2RCxDQUFDLENBQUMsSUFBSSxDQUFDLHFDQUFxQztvQkFDNUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3hELE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNwRCxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDdEQ7O21CQUVHO2dCQUNILEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztxQkFDZCxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7cUJBQy9CLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtvQkFDWixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO3dCQUNmLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtxQkFDckIsQ0FBQztvQkFDRixPQUFPLEdBQUcsQ0FBQztnQkFDYixDQUFDLEVBQ0Q7b0JBQ0UsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFO2lCQUNuQyxDQUN6QjthQUNKO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hCLENBQUM7O0FBamdCSCw4QkFrZ0JDO0FBemZlLDhCQUFvQixHQUFHLENBQ25DLGtCQUFzQyxFQUNQLEVBQUU7SUFDakMsT0FBTztRQUNMLFdBQVcsRUFBRTtZQUNYLFFBQVEsRUFBRSwrQkFBYSxDQUFDLEtBQUs7WUFDN0IsT0FBTyxFQUFFLCtCQUFhLENBQUMsS0FBSztTQUM3QjtRQUNELGFBQWEsRUFBRTtZQUNiO2dCQUNFLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLElBQUksRUFBRSwwQ0FBMEM7Z0JBQ2hELElBQUksRUFBRTtvQkFDSixDQUFDLGdCQUFnQixDQUFDLEVBQUUsa0JBQWtCLENBQUMsUUFBUTtvQkFDL0MsQ0FBQyxZQUFZLENBQUMsRUFBRSxXQUFXO29CQUMzQixDQUFDLHVCQUF1QixDQUFDLEVBQUUsS0FBSztpQkFDakM7YUFDRjtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMsQUFwQmlDLENBb0JoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRmlsZUJhc2UsIEpzb25GaWxlLCBQcm9qZWN0LCBUYXNrIH0gZnJvbSBcInByb2plbi9saWJcIjtcbmltcG9ydCB7IEJ1aWxkV29ya2Zsb3dPcHRpb25zIH0gZnJvbSBcInByb2plbi9saWIvYnVpbGRcIjtcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tIFwicHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gXCJwcm9qZW4vbGliL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IFR1cmJvUmVwb1Rhc2sgfSBmcm9tIFwiLi90dXJiby1yZXBvLXRhc2tcIjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiBUdXJibyBSZXBvIENvbmZpZ1xuICpcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmV4cG9ydCBjb25zdCBST09UX1RVUkJPX1RBU0tfTkFNRSA9IFwidHVyYm86YnVpbGRcIjtcbmV4cG9ydCBjb25zdCBST09UX0NJX1RBU0tfTkFNRSA9IFwiYnVpbGQ6YWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlQ2FjaGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIExvY2FsIHByb2ZpbGUgbmFtZSB0byB1c2Ugd2hlbiBmZXRjaGluZyB0aGUgY2FjaGUgZW5kcG9pbnQgYW5kIHRva2VuLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogT0lEQyByb2xlIHRvIGFzc3VtZSB3aGVuIGZldGNoaW5nIHRoZSBjYWNoZSBlbmRwb2ludCBhbmQgdG9rZW4uXG4gICAqL1xuICByZWFkb25seSBvaWRjUm9sZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIGZvciB0aGUgcGFyYW1zIHVzZWQgdG8gc3RvcmUgdGhlIGNhY2hlIGVuZHBvaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnRQYXJhbU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBmb3IgdGhlIHBhcmFtcyB1c2VkIHRvIHN0b3JlIHRoZSBjYWNoZSdzIEFQSSB0b2tlbi5cbiAgICovXG4gIHJlYWRvbmx5IHRva2VuUGFyYW1OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHRlYW0gbmFtZSB1c2VkIGluIHJlbW90ZSBjYWNoZSBjb21tYW5kc1xuICAgKi9cbiAgcmVhZG9ubHkgdGVhbU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUdXJib1JlcG9PcHRpb25zIHtcbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdHVyYm9yZXBvIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQ6IHNwZWNpZmllZCBpbiB2ZXJzaW9ucyBmaWxlXG4gICAqL1xuICByZWFkb25seSB0dXJib1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBmcm9tIHRoZSByb290IHR1cmJvLmpzb24gdG8gY3JlYXRlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGEgcGFja2FnZSB1c2luZyBQYWNrYWdlIENvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBUaGUgb25seSB2YWxpZCB2YWx1ZSBmb3IgZXh0ZW5kcyBpcyBbXCIvL1wiXSB0byBpbmhlcml0IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgcm9vdCB0dXJiby5qc29uLlxuICAgKiBJZiBleHRlbmRzIGlzIHVzZWQgaW4gdGhlIHJvb3QgdHVyYm8uanNvbiwgaXQgd2lsbCBiZSBpZ25vcmVkLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNleHRlbmRzXG4gICAqL1xuICByZWFkb25seSBleHRlbmRzPzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGdsb2JzIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSBpbiBhbGwgdGFzayBoYXNoZXMuIElmIGFueSBmaWxlIG1hdGNoaW5nIHRoZXNlIGdsb2JzIGNoYW5nZXMsIGFsbCB0YXNrcyB3aWxsIG1pc3MgY2FjaGUuIEdsb2JzIGFyZSByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gb2YgdHVyYm8uanNvbi5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYWxsIGZpbGVzIGluIHNvdXJjZSBjb250cm9sIGluIHRoZSBXb3Jrc3BhY2Ugcm9vdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGdsb2JhbCBoYXNoLlxuICAgKlxuICAgKiBHbG9icyBtdXN0IGJlIGluIHRoZSByZXBvc2l0b3J5J3Mgc291cmNlIGNvbnRyb2wgcm9vdC4gR2xvYnMgb3V0c2lkZSBvZiB0aGUgcmVwb3NpdG9yeSBhcmVuJ3Qgc3VwcG9ydGVkLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxkZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbERlcGVuZGVuY2llcz86IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB5b3Ugd2FudCB0byBpbXBhY3QgdGhlIGhhc2ggb2YgYWxsIHRhc2tzLiBBbnkgY2hhbmdlIHRvIHRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIGNhdXNlIGFsbCB0YXNrcyB0byBtaXNzIGNhY2hlLlxuICAgKlxuICAgKiBGb3IgbW9yZSBvbiB3aWxkY2FyZCBhbmQgbmVnYXRpb24gc3ludGF4LCBzZWUgdGhlIGVudiBzZWN0aW9uLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxlbnZcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbEVudj86IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB5b3Ugd2FudCB0byBtYWtlIGF2YWlsYWJsZSB0byB0YXNrcy5cbiAgICogVXNpbmcgdGhpcyBrZXkgb3B0cyBhbGwgdGFza3MgaW50byBTdHJpY3RcbiAgICogRW52aXJvbm1lbnQgVmFyaWFibGUgTW9kZS5cbiAgICpcbiAgICogQWRkaXRpb25hbGx5LCBUdXJib3JlcG8gaGFzIGEgYnVpbHQtaW4gc2V0IG9mIGdsb2JhbCBwYXNzdGhyb3VnaCB2YXJpYWJsZXNcbiAgICogZm9yIGNvbW1vbiBjYXNlcywgbGlrZSBvcGVyYXRpbmcgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhpc1xuICAgKiBpbmNsdWRlcyB2YXJpYWJsZXMgbGlrZSBIT01FLCBQQVRILCBBUFBEQVRBLCBTSEVMTCwgUFdELCBhbmQgbW9yZS4gVGhlIGZ1bGxcbiAgICogbGlzdCBjYW4gYmUgZm91bmQgaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgKlxuICAgKiBQYXNzdGhyb3VnaCB2YWx1ZXMgZG8gbm90IGNvbnRyaWJ1dGUgdG8gaGFzaGVzIGZvciBjYWNoaW5nXG4gICAqXG4gICAqIElmIHlvdSB3YW50IGNoYW5nZXMgaW4gdGhlc2UgdmFyaWFibGVzIHRvIGNhdXNlIGNhY2hlIG1pc3NlcywgeW91IHdpbGwgbmVlZFxuICAgKiB0byBpbmNsdWRlIHRoZW0gaW4gZW52IG9yIGdsb2JhbEVudi5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZ2xvYmFscGFzc3Rocm91Z2hlbnZcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbFBhc3NUaHJvdWdoRW52PzogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IFwic3RyZWFtXCJcbiAgICpcbiAgICogU2VsZWN0IGEgdGVybWluYWwgVUkgZm9yIHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBcInR1aVwiIGFsbG93cyBmb3Igdmlld2luZyBlYWNoIGxvZyBhdCBvbmNlIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSB0YXNrLlxuICAgKiBcInN0cmVhbVwiIG91dHB1dHMgbG9ncyBhcyB0aGV5IGNvbWUgaW4gYW5kIGlzIG5vdCBpbnRlcmFjdGl2ZS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jdWlcbiAgICovXG4gIHJlYWRvbmx5IHVpPzogXCJ0dWlcIiB8IFwic3RyZWFtXCI7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBmYWxzZVxuICAgKlxuICAgKiBUdXJib3JlcG8gdXNlcyB5b3VyIHJlcG9zaXRvcnkncyBsb2NrZmlsZSB0byBkZXRlcm1pbmUgY2FjaGluZyBiZWhhdmlvcixcbiAgICogUGFja2FnZSBHcmFwaHMsIGFuZCBtb3JlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIHVzZSB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGRcbiAgICogdG8gaGVscCB5b3Ugc3RhYmlsaXplIHlvdXIgVHVyYm9yZXBvLlxuICAgKlxuICAgKiBUbyBoZWxwIHdpdGggaW5jcmVtZW50YWwgbWlncmF0aW9uIG9yIGluIHNpdHVhdGlvbnMgd2hlcmUgeW91IGNhbid0IHVzZVxuICAgKiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQsIHlvdSBtYXkgdXNlXG4gICAqIC0tZGFuZ2Vyb3VzbHktZGlzYWJsZS1wYWNrYWdlLW1hbmFnZXItY2hlY2sgdG8gb3B0IG91dCBvZiB0aGlzIGNoZWNrIGFuZFxuICAgKiBhc3N1bWUgdGhlIHJpc2tzIG9mIHVuc3RhYmxlIGxvY2tmaWxlcyBwcm9kdWNpbmcgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci5cbiAgICogV2hlbiBkaXNhYmxlZCwgVHVyYm9yZXBvIHdpbGwgYXR0ZW1wdCBhIGJlc3QtZWZmb3J0IGRpc2NvdmVyeSBvZiB0aGVcbiAgICogaW50ZW5kZWQgcGFja2FnZSBtYW5hZ2VyIG1lYW50IGZvciB0aGUgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZGFuZ2Vyb3VzbHlkaXNhYmxlcGFja2FnZW1hbmFnZXJjaGVja1xuICAgKi9cbiAgcmVhZG9ubHkgZGFuZ2Vyb3VzbHlEaXNhYmxlUGFja2FnZU1hbmFnZXJDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBcIi50dXJiby9jYWNoZVwiXG4gICAqXG4gICAqIFNwZWNpZnkgdGhlIGZpbGVzeXN0ZW0gY2FjaGUgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNjYWNoZWRpclxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiB0cnVlXG4gICAqXG4gICAqIFR1cmJvcmVwbyBydW5zIGEgYmFja2dyb3VuZCBwcm9jZXNzIHRvIHByZS1jYWxjdWxhdGUgc29tZSBleHBlbnNpdmVcbiAgICogb3BlcmF0aW9ucy4gVGhpcyBzdGFuZGFsb25lIHByb2Nlc3MgKGRhZW1vbikgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sXG4gICAqIGFuZCBub3QgcmVxdWlyZWQgZm9yIHByb3BlciBmdW5jdGlvbmluZyBvZiB0dXJiby5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZGFlbW9uXG4gICAqL1xuICByZWFkb25seSBkYWVtb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdDogXCJzdHJpY3RcIlxuICAgKlxuICAgKiBUdXJib3JlcG8ncyBFbnZpcm9ubWVudCBNb2RlcyBhbGxvdyB5b3UgdG8gY29udHJvbCB3aGljaCBlbnZpcm9ubWVudFxuICAgKiB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSB0byBhIHRhc2sgYXQgcnVudGltZTpcbiAgICpcbiAgICpcInN0cmljdFwiOiBGaWx0ZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIG9ubHkgdGhvc2UgdGhhdCBhcmUgc3BlY2lmaWVkXG4gICAqIGluIHRoZSBlbnYgYW5kIGdsb2JhbEVudiBrZXlzIGluIHR1cmJvLmpzb24uXG4gICAqXG4gICAqIFwibG9vc2VcIjogQWxsb3cgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIHByb2Nlc3MgdG8gYmUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNlbnZtb2RlXG4gICAqL1xuICByZWFkb25seSBlbnZNb2RlPzogc3RyaW5nO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKlxuICAgKiBDYWNoZSBTZXR0aW5nc1xuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQ2FjaGUgc2V0dGluZ3MsIGlmIHVzaW5nIHJlbW90ZSBjYWNoZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW90ZUNhY2hlT3B0aW9ucz86IFJlbW90ZUNhY2hlT3B0aW9ucztcblxuICAvKipcbiAgICogRW52IEFyZ3MgdGhhdCB3aWxsIGJyZSBhZGRlZCB0byB0dXJibydzIGJ1aWxkOmFsbCB0YXNrXG4gICAqXG4gICAqIEBkZWZhdWx0OiB7fVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRBbGxUYXNrRW52VmFycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqXG4gICAqIFRhc2tzIC0gT3B0aW9uYWxseSBkZWZpbmUgYSBkaWZmZXJlbnQgcHJvamVuIHRhc2sgZm9yIG9uZSBvZiB0aGUgbGlmZWN5Y2xlXG4gICAqIHN0ZXBzLlxuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogUHJlIGNvbXBpbGUgdGFza1xuICAgKlxuICAgKiBAZGVmYXVsdDogXCJwcmUtY29tcGlsZVwiXG4gICAqL1xuICByZWFkb25seSBwcmVDb21waWxlVGFzaz86IFRhc2s7XG5cbiAgLyoqXG4gICAqIENvbXBpbGUgdGFza1xuICAgKlxuICAgKiBAZGVmYXVsdDogXCJjb21waWxlXCJcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBpbGVUYXNrPzogVGFzaztcblxuICAvKipcbiAgICogUG9zdCBjb21waWxlIHRhc2tcbiAgICpcbiAgICogQGRlZmF1bHQ6IFwicG9zdC1jb21waWxlXCJcbiAgICovXG4gIHJlYWRvbmx5IHBvc3RDb21waWxlVGFzaz86IFRhc2s7XG5cbiAgLyoqXG4gICAqIFRlc3QgdGFza1xuICAgKlxuICAgKiBAZGVmYXVsdDogXCJ0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RUYXNrPzogVGFzaztcblxuICAvKipcbiAgICogUGFja2FnZSB0YXNrXG4gICAqXG4gICAqIEBkZWZhdWx0OiBcInBhY2thZ2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZVRhc2s/OiBUYXNrO1xufVxuXG5leHBvcnQgY2xhc3MgVHVyYm9SZXBvIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2QgdG8gZGlzY292ZXJ0IHR1cmJvIGluIGEgcHJvamVjdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YocHJvamVjdDogUHJvamVjdCk6IFR1cmJvUmVwbyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNEZWZpbmVkID0gKGM6IENvbXBvbmVudCk6IGMgaXMgVHVyYm9SZXBvID0+IGMgaW5zdGFuY2VvZiBUdXJib1JlcG87XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzRGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGJ1aWxkV29ya2Zsb3dPcHRpb25zID0gKFxuICAgIHJlbW90ZUNhY2hlT3B0aW9uczogUmVtb3RlQ2FjaGVPcHRpb25zLFxuICApOiBQYXJ0aWFsPEJ1aWxkV29ya2Zsb3dPcHRpb25zPiA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSxcbiAgICAgIHByZUJ1aWxkU3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiQVdTIENyZWRzIGZvciBTU01cIixcbiAgICAgICAgICB1c2VzOiBcImF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAdjRcIixcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBbXCJyb2xlLXRvLWFzc3VtZVwiXTogcmVtb3RlQ2FjaGVPcHRpb25zLm9pZGNSb2xlLFxuICAgICAgICAgICAgW1wiYXdzLXJlZ2lvblwiXTogXCJ1cy1lYXN0LTFcIixcbiAgICAgICAgICAgIFtcInJvbGUtZHVyYXRpb24tc2Vjb25kc1wiXTogXCI5MDBcIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHR1cmJvcmVwbyB0byB1c2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHVyYm9WZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBmcm9tIHRoZSByb290IHR1cmJvLmpzb24gdG8gY3JlYXRlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGEgcGFja2FnZSB1c2luZyBQYWNrYWdlIENvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBUaGUgb25seSB2YWxpZCB2YWx1ZSBmb3IgZXh0ZW5kcyBpcyBbXCIvL1wiXSB0byBpbmhlcml0IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgcm9vdCB0dXJiby5qc29uLlxuICAgKiBJZiBleHRlbmRzIGlzIHVzZWQgaW4gdGhlIHJvb3QgdHVyYm8uanNvbiwgaXQgd2lsbCBiZSBpZ25vcmVkLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNleHRlbmRzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXh0ZW5kczogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGdsb2JzIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSBpbiBhbGwgdGFzayBoYXNoZXMuIElmIGFueSBmaWxlIG1hdGNoaW5nIHRoZXNlIGdsb2JzIGNoYW5nZXMsIGFsbCB0YXNrcyB3aWxsIG1pc3MgY2FjaGUuIEdsb2JzIGFyZSByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gb2YgdHVyYm8uanNvbi5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYWxsIGZpbGVzIGluIHNvdXJjZSBjb250cm9sIGluIHRoZSBXb3Jrc3BhY2Ugcm9vdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGdsb2JhbCBoYXNoLlxuICAgKlxuICAgKiBHbG9icyBtdXN0IGJlIGluIHRoZSByZXBvc2l0b3J5J3Mgc291cmNlIGNvbnRyb2wgcm9vdC4gR2xvYnMgb3V0c2lkZSBvZiB0aGUgcmVwb3NpdG9yeSBhcmVuJ3Qgc3VwcG9ydGVkLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxkZXBlbmRlbmNpZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnbG9iYWxEZXBlbmRlbmNpZXM6IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB5b3Ugd2FudCB0byBpbXBhY3QgdGhlIGhhc2ggb2YgYWxsIHRhc2tzLiBBbnkgY2hhbmdlIHRvIHRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIGNhdXNlIGFsbCB0YXNrcyB0byBtaXNzIGNhY2hlLlxuICAgKlxuICAgKiBGb3IgbW9yZSBvbiB3aWxkY2FyZCBhbmQgbmVnYXRpb24gc3ludGF4LCBzZWUgdGhlIGVudiBzZWN0aW9uLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNnbG9iYWxlbnZcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnbG9iYWxFbnY6IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB5b3Ugd2FudCB0byBtYWtlIGF2YWlsYWJsZSB0byB0YXNrcy5cbiAgICogVXNpbmcgdGhpcyBrZXkgb3B0cyBhbGwgdGFza3MgaW50byBTdHJpY3RcbiAgICogRW52aXJvbm1lbnQgVmFyaWFibGUgTW9kZS5cbiAgICpcbiAgICogQWRkaXRpb25hbGx5LCBUdXJib3JlcG8gaGFzIGEgYnVpbHQtaW4gc2V0IG9mIGdsb2JhbCBwYXNzdGhyb3VnaCB2YXJpYWJsZXNcbiAgICogZm9yIGNvbW1vbiBjYXNlcywgbGlrZSBvcGVyYXRpbmcgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhpc1xuICAgKiBpbmNsdWRlcyB2YXJpYWJsZXMgbGlrZSBIT01FLCBQQVRILCBBUFBEQVRBLCBTSEVMTCwgUFdELCBhbmQgbW9yZS4gVGhlIGZ1bGxcbiAgICogbGlzdCBjYW4gYmUgZm91bmQgaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgKlxuICAgKiBQYXNzdGhyb3VnaCB2YWx1ZXMgZG8gbm90IGNvbnRyaWJ1dGUgdG8gaGFzaGVzIGZvciBjYWNoaW5nXG4gICAqXG4gICAqIElmIHlvdSB3YW50IGNoYW5nZXMgaW4gdGhlc2UgdmFyaWFibGVzIHRvIGNhdXNlIGNhY2hlIG1pc3NlcywgeW91IHdpbGwgbmVlZFxuICAgKiB0byBpbmNsdWRlIHRoZW0gaW4gZW52IG9yIGdsb2JhbEVudi5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZ2xvYmFscGFzc3Rocm91Z2hlbnZcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnbG9iYWxQYXNzVGhyb3VnaEVudjogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlZmF1bHQ6IFwic3RyZWFtXCJcbiAgICpcbiAgICogU2VsZWN0IGEgdGVybWluYWwgVUkgZm9yIHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBcInR1aVwiIGFsbG93cyBmb3Igdmlld2luZyBlYWNoIGxvZyBhdCBvbmNlIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSB0YXNrLlxuICAgKiBcInN0cmVhbVwiIG91dHB1dHMgbG9ncyBhcyB0aGV5IGNvbWUgaW4gYW5kIGlzIG5vdCBpbnRlcmFjdGl2ZS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jdWlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1aTogXCJ0dWlcIiB8IFwic3RyZWFtXCI7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBmYWxzZVxuICAgKlxuICAgKiBUdXJib3JlcG8gdXNlcyB5b3VyIHJlcG9zaXRvcnkncyBsb2NrZmlsZSB0byBkZXRlcm1pbmUgY2FjaGluZyBiZWhhdmlvcixcbiAgICogUGFja2FnZSBHcmFwaHMsIGFuZCBtb3JlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIHVzZSB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGRcbiAgICogdG8gaGVscCB5b3Ugc3RhYmlsaXplIHlvdXIgVHVyYm9yZXBvLlxuICAgKlxuICAgKiBUbyBoZWxwIHdpdGggaW5jcmVtZW50YWwgbWlncmF0aW9uIG9yIGluIHNpdHVhdGlvbnMgd2hlcmUgeW91IGNhbid0IHVzZVxuICAgKiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQsIHlvdSBtYXkgdXNlXG4gICAqIC0tZGFuZ2Vyb3VzbHktZGlzYWJsZS1wYWNrYWdlLW1hbmFnZXItY2hlY2sgdG8gb3B0IG91dCBvZiB0aGlzIGNoZWNrIGFuZFxuICAgKiBhc3N1bWUgdGhlIHJpc2tzIG9mIHVuc3RhYmxlIGxvY2tmaWxlcyBwcm9kdWNpbmcgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci5cbiAgICogV2hlbiBkaXNhYmxlZCwgVHVyYm9yZXBvIHdpbGwgYXR0ZW1wdCBhIGJlc3QtZWZmb3J0IGRpc2NvdmVyeSBvZiB0aGVcbiAgICogaW50ZW5kZWQgcGFja2FnZSBtYW5hZ2VyIG1lYW50IGZvciB0aGUgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZGFuZ2Vyb3VzbHlkaXNhYmxlcGFja2FnZW1hbmFnZXJjaGVja1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhbmdlcm91c2x5RGlzYWJsZVBhY2thZ2VNYW5hZ2VyQ2hlY2s6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiBcIi50dXJiby9jYWNoZVwiXG4gICAqXG4gICAqIFNwZWNpZnkgdGhlIGZpbGVzeXN0ZW0gY2FjaGUgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNjYWNoZWRpclxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNhY2hlRGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0OiB0cnVlXG4gICAqXG4gICAqIFR1cmJvcmVwbyBydW5zIGEgYmFja2dyb3VuZCBwcm9jZXNzIHRvIHByZS1jYWxjdWxhdGUgc29tZSBleHBlbnNpdmVcbiAgICogb3BlcmF0aW9ucy4gVGhpcyBzdGFuZGFsb25lIHByb2Nlc3MgKGRhZW1vbikgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sXG4gICAqIGFuZCBub3QgcmVxdWlyZWQgZm9yIHByb3BlciBmdW5jdGlvbmluZyBvZiB0dXJiby5cbiAgICpcbiAgICogaHR0cHM6Ly90dXJiby5idWlsZC9yZXBvL2RvY3MvcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jZGFlbW9uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGFlbW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdDogXCJzdHJpY3RcIlxuICAgKlxuICAgKiBUdXJib3JlcG8ncyBFbnZpcm9ubWVudCBNb2RlcyBhbGxvdyB5b3UgdG8gY29udHJvbCB3aGljaCBlbnZpcm9ubWVudFxuICAgKiB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSB0byBhIHRhc2sgYXQgcnVudGltZTpcbiAgICpcbiAgICpcInN0cmljdFwiOiBGaWx0ZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIG9ubHkgdGhvc2UgdGhhdCBhcmUgc3BlY2lmaWVkXG4gICAqIGluIHRoZSBlbnYgYW5kIGdsb2JhbEVudiBrZXlzIGluIHR1cmJvLmpzb24uXG4gICAqXG4gICAqIFwibG9vc2VcIjogQWxsb3cgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIHByb2Nlc3MgdG8gYmUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBodHRwczovL3R1cmJvLmJ1aWxkL3JlcG8vZG9jcy9yZWZlcmVuY2UvY29uZmlndXJhdGlvbiNlbnZtb2RlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW52TW9kZTogc3RyaW5nO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKlxuICAgKiBDYWNoZSBTZXR0aW5nc1xuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQ2FjaGUgc2V0dGluZ3MsIGlmIHVzaW5nIHJlbW90ZSBjYWNoZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZW1vdGVDYWNoZU9wdGlvbnM/OiBSZW1vdGVDYWNoZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIGlzIHRoaXMgdGhlIHJvb3QgcHJvamVjdD9cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1Jvb3RQcm9qZWN0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUdXJibydzIGJ1aWxkOmFsbCB0YXNrIGF0IHRoZSByb290IG9mIHRoZSBtb25vcmVwby5cbiAgICpcbiAgICogVGhpcyBpcyBhIG5vcm1hbCBwcm9qZW4gdGFzayB0aGF0IHJ1bnMgdGhlIHJvb3QgdHVyYm8gdGFzay5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWlsZEFsbFRhc2s/OiBUYXNrO1xuXG4gIC8qKlxuICAgKiBNYWluIHR1cmJvOmJ1aWxkIHRhc2tcbiAgICpcbiAgICogVGhpcyBpcyBhIHNwZWNpYWwgVHVyYm8gdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkVGFzazogVHVyYm9SZXBvVGFzaztcblxuICAvKipcbiAgICogcHJlIGNvbXBpbGUgdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByZUNvbXBpbGVUYXNrPzogVHVyYm9SZXBvVGFzaztcblxuICAvKipcbiAgICogY29tcGlsZSB0YXNrXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcGlsZVRhc2s/OiBUdXJib1JlcG9UYXNrO1xuXG4gIC8qKlxuICAgKiBwb3N0IGNvbXBpbGUgdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvc3RDb21waWxlVGFzaz86IFR1cmJvUmVwb1Rhc2s7XG5cbiAgLyoqXG4gICAqIFRlc3QgdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRlc3RUYXNrPzogVHVyYm9SZXBvVGFzaztcblxuICAvKipcbiAgICogUGFja2FnZSB0YXNrXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFja2FnZVRhc2s/OiBUdXJib1JlcG9UYXNrO1xuXG4gIC8qKlxuICAgKiBTdWItVGFza3MgdG8gcnVuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFza3M6IEFycmF5PFR1cmJvUmVwb1Rhc2s+ID0gW107XG5cbiAgLyoqXG4gICAqIEVudiBBcmdzIHRoYXQgd2lsbCBicmUgYWRkZWQgdG8gdHVyYm8ncyBidWlsZDphbGwgdGFza1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkQWxsVGFza0VudlZhcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IE5vZGVQcm9qZWN0LFxuICAgIG9wdGlvbnM6IFR1cmJvUmVwb09wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLnR1cmJvVmVyc2lvbiA9IG9wdGlvbnMudHVyYm9WZXJzaW9uID8/IFwiY2F0YWxvZzpcIjtcbiAgICB0aGlzLmlzUm9vdFByb2plY3QgPSBwcm9qZWN0ID09PSBwcm9qZWN0LnJvb3Q7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdHVyYm9yZXBvIHBhY2thZ2UgdG8gcm9vdCBwcm9qZWN0LlxuICAgICAqL1xuICAgIGlmICh0aGlzLmlzUm9vdFByb2plY3QpIHtcbiAgICAgIHByb2plY3QuYWRkRGV2RGVwcyhgdHVyYm9AJHt0aGlzLnR1cmJvVmVyc2lvbn1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZ25vcmUgdGhlIHdvcmtpbmcgY2FjaGUgZm9yIHR1cmJvLlxuICAgICAqL1xuICAgIHByb2plY3QuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKFwiLy50dXJib1wiKTtcbiAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uYWRkUGF0dGVybnMoXCIvLnR1cmJvL1wiKTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFNldCBzb21lIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgdGhpcy5leHRlbmRzID0gb3B0aW9ucy5leHRlbmRzID8/ICh0aGlzLmlzUm9vdFByb2plY3QgPyBbXSA6IFtcIi8vXCJdKTtcbiAgICB0aGlzLmdsb2JhbERlcGVuZGVuY2llcyA9IG9wdGlvbnMuZ2xvYmFsRGVwZW5kZW5jaWVzID8/IFtdO1xuICAgIHRoaXMuZ2xvYmFsRW52ID0gb3B0aW9ucy5nbG9iYWxFbnYgPz8gW107XG4gICAgdGhpcy5nbG9iYWxQYXNzVGhyb3VnaEVudiA9IG9wdGlvbnMuZ2xvYmFsUGFzc1Rocm91Z2hFbnYgPz8gW107XG4gICAgdGhpcy51aSA9IG9wdGlvbnMudWkgPz8gXCJzdHJlYW1cIjtcbiAgICB0aGlzLmRhbmdlcm91c2x5RGlzYWJsZVBhY2thZ2VNYW5hZ2VyQ2hlY2sgPVxuICAgICAgb3B0aW9ucy5kYW5nZXJvdXNseURpc2FibGVQYWNrYWdlTWFuYWdlckNoZWNrID8/IGZhbHNlO1xuICAgIHRoaXMuY2FjaGVEaXIgPSBvcHRpb25zLmNhY2hlRGlyID8/IFwiLnR1cmJvL2NhY2hlXCI7XG4gICAgdGhpcy5kYWVtb24gPSBvcHRpb25zLmRhZW1vbiA/PyB0cnVlO1xuICAgIHRoaXMuZW52TW9kZSA9IG9wdGlvbnMuZW52TW9kZSA/PyBcInN0cmljdFwiO1xuICAgIHRoaXMucmVtb3RlQ2FjaGVPcHRpb25zID0gb3B0aW9ucy5yZW1vdGVDYWNoZU9wdGlvbnM7XG4gICAgdGhpcy5idWlsZEFsbFRhc2tFbnZWYXJzID0gb3B0aW9ucy5idWlsZEFsbFRhc2tFbnZWYXJzID8/IHt9O1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogVHVyYm8gQnVpbGQgVGFza1xuICAgICAqXG4gICAgICogQWxsIHR1cmJvIGNvbmZpZ3MgY29udGFpbiBhIHR1cmJvIGJ1aWxkIHRhc2suXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBUaGUgdHVyYm8gZW50cnkgcG9pbnQgZGVmaW5pdGlvbiBmb3IgdGhlIHR1cmJvOmJ1aWxkIHRhc2suIFRoaXMgZXhpc3RzXG4gICAgICogaW4gZWFjaCBwcm9qZWN0IGFuZCBpcyB3cml0dGVuIHRvdCBoZSB0dXJiby5qc29uIGZpbGUuIFRoaXMgdGFzayBpcyBub3RcbiAgICAgKiBhIHByb2plbiB0YXNrIG9yIGEgTm9kZSB0YXNrLlxuICAgICAqL1xuICAgIHRoaXMuYnVpbGRUYXNrID0gbmV3IFR1cmJvUmVwb1Rhc2sodGhpcy5wcm9qZWN0LCB7XG4gICAgICBuYW1lOiBST09UX1RVUkJPX1RBU0tfTkFNRSxcbiAgICAgIGRlcGVuZHNPbjogdGhpcy5pc1Jvb3RQcm9qZWN0ID8gW2BeJHtST09UX1RVUkJPX1RBU0tfTkFNRX1gXSA6IFtdLFxuICAgIH0pO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogVHVyYm8gQnVpbGQgQWxsIFRhc2tcbiAgICAgKlxuICAgICAqIFRoZSBQcm9qZW4gZW50cnkgcG9pbnQuIFRoaXMgb25seSBleGlzdHMgaW4gdGhlIHJvb3QgYW5kIGlzIGEgcHJvamVuXG4gICAgICogdGFzayB0aGF0IGNhbiBiZSBydW4gdXNpbmcgcG5wbS5cbiAgICAgKlxuICAgICAqIC0gVHVybnMgb2ZmIHRlbGVtZXRyeVxuICAgICAqIC0gUnVucyByb290IHR1cmJvIHRhc2sgdG8gYnVpbGQgYWxsIHN1Yi1wcm9qZWN0cy5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGlmICh0aGlzLmlzUm9vdFByb2plY3QpIHtcbiAgICAgIC8qKlxuICAgICAgICogQ3JlYXRlIGFuZCBjb25maWd1cmUgdGhlIGJ1aWxkIGFsbCB0YXNrLlxuICAgICAgICovXG4gICAgICB0aGlzLmJ1aWxkQWxsVGFzayA9IHRoaXMucHJvamVjdC50YXNrcy5hZGRUYXNrKFJPT1RfQ0lfVEFTS19OQU1FLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgIFwiUm9vdCBidWlsZCBmb2xsb3dlZCBieSBzdWItcHJvamVjdCBidWlsZHMuIE1pbWljcyB0aGUgQ0kgYnVpbGQgcHJvY2VzcyBpbiBvbmUgc3RlcC5cIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5idWlsZEFsbFRhc2suZXhlYyhcInR1cmJvIHRlbGVtZXRyeSBkaXNhYmxlXCIpO1xuXG4gICAgICAvKipcbiAgICAgICAqIEFueSBlbnYgdmFycyB0aGF0IG1heSBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSBidWlsZCBhbGwgdGFzay5cbiAgICAgICAqL1xuICAgICAgaWYgKHRoaXMuYnVpbGRBbGxUYXNrRW52VmFycykge1xuICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLmJ1aWxkQWxsVGFza0VudlZhcnMpLmZvckVhY2goKFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICB0aGlzLmFkZEdsb2JhbEVudlZhcihuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIE5vIHJlbW90ZSBjYWNoZSBpbiB1c2UsIHNvIHJ1biB0aGUgcm9vdCB0dXJibyB0YXNrIHRvIGJ1aWxkIGFsbFxuICAgICAgICogc3ViLXByb2plY3RzIGxvY2FsbHkuXG4gICAgICAgKi9cbiAgICAgIGlmICghdGhpcy5yZW1vdGVDYWNoZU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5idWlsZEFsbFRhc2suZXhlYyhcbiAgICAgICAgICBgdHVyYm8gJHtST09UX1RVUkJPX1RBU0tfTkFNRX0gLS1zdW1tYXJpemUgLS1jb25jdXJyZW5jeT0xMGAsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKipcbiAgICAgICAgICogUmVtb3RlIGNhY2hlIGluIHVzZSwgc28gcnVuIHRoZSByb290IHR1cmJvIHRhc2sgdG8gYnVpbGQgYWxsXG4gICAgICAgICAqIHN1Yi1wcm9qZWN0cyB1c2luZyB0aGUgcmVtb3RlIGNhY2hlLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5idWlsZEFsbFRhc2suZXhlYyhcbiAgICAgICAgICBgdHVyYm8gdHVyYm86YnVpbGQgLS1zdW1tYXJpemUgLS1jb25jdXJyZW5jeT0xMCAtLWNhY2hlPXJlbW90ZTpydyAtLWFwaT0kVFVSQk9fRU5EUE9JTlQgLS10b2tlbj0kVFVSQk9fVE9LRU4gLS10ZWFtPSR7dGhpcy5yZW1vdGVDYWNoZU9wdGlvbnMudGVhbU5hbWV9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25kaXRpb246ICdbICEgLW4gXCIkQ0lcIiBdJyxcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICBUVVJCT19FTkRQT0lOVDogYCQoYXdzIHNzbSBnZXQtcGFyYW1ldGVyIC0tbmFtZSAke3RoaXMucmVtb3RlQ2FjaGVPcHRpb25zLmVuZHBvaW50UGFyYW1OYW1lfSAtLXF1ZXJ5IFBhcmFtZXRlci5WYWx1ZSAtLW91dHB1dCB0ZXh0IC0tcHJvZmlsZSAke3RoaXMucmVtb3RlQ2FjaGVPcHRpb25zLnByb2ZpbGVOYW1lfSlgLFxuICAgICAgICAgICAgICBUVVJCT19UT0tFTjogYCQoYXdzIHNzbSBnZXQtcGFyYW1ldGVyIC0tbmFtZSAke3RoaXMucmVtb3RlQ2FjaGVPcHRpb25zLnRva2VuUGFyYW1OYW1lfSAtLXF1ZXJ5IFBhcmFtZXRlci5WYWx1ZSAtLW91dHB1dCB0ZXh0IC0tcHJvZmlsZSAke3RoaXMucmVtb3RlQ2FjaGVPcHRpb25zLnByb2ZpbGVOYW1lfSlgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICAvLyBydW5uaW5nIGluIENJLCBXZSdsbCBkZXBlbmQgb24gT0lEQyBhdXRoLlxuICAgICAgICB0aGlzLmJ1aWxkQWxsVGFzay5leGVjKFxuICAgICAgICAgIGB0dXJibyB0dXJibzpidWlsZCAtLXN1bW1hcml6ZSAtLWNvbmN1cnJlbmN5PTEwIC0tY2FjaGU9cmVtb3RlOnJ3IC0tYXBpPSRUVVJCT19FTkRQT0lOVCAtLXRva2VuPSRUVVJCT19UT0tFTiAtLXRlYW09JHt0aGlzLnJlbW90ZUNhY2hlT3B0aW9ucy50ZWFtTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJ1sgLW4gXCIkQ0lcIiBdJyxcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICBUVVJCT19FTkRQT0lOVDogYCQoYXdzIHNzbSBnZXQtcGFyYW1ldGVyIC0tbmFtZSAke3RoaXMucmVtb3RlQ2FjaGVPcHRpb25zLmVuZHBvaW50UGFyYW1OYW1lfSAtLXF1ZXJ5IFBhcmFtZXRlci5WYWx1ZSAtLW91dHB1dCB0ZXh0KWAsXG4gICAgICAgICAgICAgIFRVUkJPX1RPS0VOOiBgJChhd3Mgc3NtIGdldC1wYXJhbWV0ZXIgLS1uYW1lICR7dGhpcy5yZW1vdGVDYWNoZU9wdGlvbnMudG9rZW5QYXJhbU5hbWV9IC0tcXVlcnkgUGFyYW1ldGVyLlZhbHVlIC0tb3V0cHV0IHRleHQpYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTVUItUFJPSkVDVFxuICAgICAqXG4gICAgICogQ3JlYXRlcyB0YXNrcyBmb3IgdGhlIHR5cGljYWwgbGlmZWN5Y2xlIGZvciBhbGwgcHJvamVjdCBwcm9qZWN0cy5cbiAgICAgKi9cbiAgICBpZiAoIXRoaXMuaXNSb290UHJvamVjdCkge1xuICAgICAgLyoqXG4gICAgICAgKiBBbGwgZ2VuZXJhdGVkIGZpbGVzIGluIHRoZSBwcm9qZWN0LiBJbmNsdWRlIHRoZXNlIGFzIGlucHV0cyB0byB0aGVcbiAgICAgICAqIGNvbXBpbGUgcmVsYXRlZCB0YXNrcy5cbiAgICAgICAqL1xuICAgICAgY29uc3QgZ2VuZXJhdGVkRmlsZXMgPSB0aGlzLnByb2plY3QuY29tcG9uZW50c1xuICAgICAgICAuZmlsdGVyKChjKTogYyBpcyBGaWxlQmFzZSA9PiBjIGluc3RhbmNlb2YgRmlsZUJhc2UpXG4gICAgICAgIC5tYXAoKGMpID0+IGMucGF0aCk7XG5cbiAgICAgIHRoaXMucHJlQ29tcGlsZVRhc2sgPSBuZXcgVHVyYm9SZXBvVGFzayhwcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMucHJlQ29tcGlsZVRhc2s/Lm5hbWUgPz8gXCJwcmUtY29tcGlsZVwiLFxuICAgICAgICBpbnB1dHM6IFtcInNyYy8qKlwiLCAuLi5nZW5lcmF0ZWRGaWxlc10sXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29tcGlsZVRhc2sgPSBuZXcgVHVyYm9SZXBvVGFzayhwcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMuY29tcGlsZVRhc2s/Lm5hbWUgPz8gXCJjb21waWxlXCIsXG4gICAgICAgIGlucHV0czogW1wic3JjLyoqXCIsIC4uLmdlbmVyYXRlZEZpbGVzXSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wb3N0Q29tcGlsZVRhc2sgPSBuZXcgVHVyYm9SZXBvVGFzayhwcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMucG9zdENvbXBpbGVUYXNrPy5uYW1lID8/IFwicG9zdC1jb21waWxlXCIsXG4gICAgICAgIGlucHV0czogW1wic3JjLyoqXCIsIC4uLmdlbmVyYXRlZEZpbGVzXSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZXN0VGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHByb2plY3QsIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy50ZXN0VGFzaz8ubmFtZSA/PyBcInRlc3RcIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wYWNrYWdlVGFzayA9IG5ldyBUdXJib1JlcG9UYXNrKHByb2plY3QsIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5wYWNrYWdlVGFzaz8ubmFtZSA/PyBcInBhY2thZ2VcIixcbiAgICAgICAgaW5wdXRzOiBbXCIubnBtaWdub3JlXCJdLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRhc2tzLnB1c2goXG4gICAgICAgIHRoaXMucHJlQ29tcGlsZVRhc2ssXG4gICAgICAgIHRoaXMuY29tcGlsZVRhc2ssXG4gICAgICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLFxuICAgICAgICB0aGlzLnRlc3RUYXNrLFxuICAgICAgICB0aGlzLnBhY2thZ2VUYXNrLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGVudiB2YXIgdG8gdGhlIGdsb2JhbCBlbnYgdmFycyBmb3IgYWxsIHRhc2tzLlxuICAgKiBUaGlzIHdpbGwgYWxzbyBiZWNvbWUgYW4gaW5wdXQgZm9yIHRoZSBidWlsZDphbGwgdGFzayBjYWNoZSBhdCB0aGUgcm9vdC5cbiAgICovXG4gIHB1YmxpYyBhZGRHbG9iYWxFbnZWYXIobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgLyoqXG4gICAgICogQWRkIGVudiB2YXIgdG8gZ2xvYmFsIHRhc2sgZW52XG4gICAgICovXG4gICAgdGhpcy5idWlsZEFsbFRhc2s/LmVudihuYW1lLCB2YWx1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdG8gZ2xvYmFsIGVudiB2YXJzIGZvciBhbGwgdGFza3MuXG4gICAgICovXG4gICAgaWYgKHRoaXMuaXNSb290UHJvamVjdCkge1xuICAgICAgdGhpcy5nbG9iYWxFbnYucHVzaChuYW1lKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGVCcmFuY2hOYW1lRW52VmFyKCkge1xuICAgIHRoaXMuYWRkR2xvYmFsRW52VmFyKFwiQlJBTkNIX05BTUVcIiwgXCIkKGdpdCByZXYtcGFyc2UgLS1hYmJyZXYtcmVmIEhFQUQpXCIpO1xuICB9XG5cbiAgcHJlU3ludGhlc2l6ZSgpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBBZGQgYW55IGxvY2FsIHdvcmtzcGFjZSBzcGVjaWZpYyBkZXBzIHRvIGRlcGVuZHNPbiBzbyB0aGF0IHdlIGtub3dcbiAgICAgKiBjb21waWxlIGhhcyBmaW5pc2hlZCBiZWZvcmUgYXR0ZW1wdGluZyB0byB1c2UgYW55IGRpc3RyaWJ1dGlvbiBhcnRpZmFjdHMuXG4gICAgICpcbiAgICAgKiBEbyB0aGlzIGluIHByZXN5bnRoIHNvIHRoYXQgd2UgY2FuIGJlIHN1cmUgYWxsIHByb2plY3QgZGVwZW5kZW5jaWVzIGhhdmVcbiAgICAgKiBiZWVuIGRlZmluZWQgZmlyc3QuXG4gICAgICovXG4gICAgbGV0IG5leHREZXBlbmRzT24gPSB0aGlzLnByb2plY3QuZGVwcy5hbGxcbiAgICAgIC5maWx0ZXIoKGQpID0+IGQudmVyc2lvbiA9PT0gXCJ3b3Jrc3BhY2U6KlwiKVxuICAgICAgLm1hcCgoZCkgPT4gW2QubmFtZSwgUk9PVF9UVVJCT19UQVNLX05BTUVdLmpvaW4oXCIjXCIpKTtcblxuICAgIC8qKlxuICAgICAqIExvb3Agb3ZlciBhbGwgcHJvamVuIHRhc2tzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIHR1cmJvIHRhc2tcbiAgICAgKiBkZWZpbml0aW9ucy4gQ2hhaW4gdGhlbSB0b2dldGhlciB1c2luZyBkZXBlbmRzT24sIGFsb25nIHdpdGggYW55IG91dHNpZGVcbiAgICAgKiBwYWNrYWdlIGRlcGVuZGVuY2llcy5cbiAgICAgKi9cbiAgICBpZiAoIXRoaXMuaXNSb290UHJvamVjdCkge1xuICAgICAgKFxuICAgICAgICBbXG4gICAgICAgICAgW3RoaXMucHJvamVjdC5wcmVDb21waWxlVGFzaywgdGhpcy5wcmVDb21waWxlVGFza10sXG4gICAgICAgICAgW3RoaXMucHJvamVjdC5jb21waWxlVGFzaywgdGhpcy5jb21waWxlVGFza10sXG4gICAgICAgICAgW3RoaXMucHJvamVjdC5wb3N0Q29tcGlsZVRhc2ssIHRoaXMucG9zdENvbXBpbGVUYXNrXSxcbiAgICAgICAgICBbdGhpcy5wcm9qZWN0LnRlc3RUYXNrLCB0aGlzLnRlc3RUYXNrXSxcbiAgICAgICAgICBbdGhpcy5wcm9qZWN0LnBhY2thZ2VUYXNrLCB0aGlzLnBhY2thZ2VUYXNrXSxcbiAgICAgICAgXSBhcyBBcnJheTxbVGFzaywgVHVyYm9SZXBvVGFza10+XG4gICAgICApLmZvckVhY2goKFtwalRhc2ssIHR1cmJvVGFza10pID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHN0ZXBzIGV4aXN0IGNoYWluIHVzaW5nIGRlcGVuZHNPblxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHBqVGFzayAmJiB0dXJib1Rhc2sgJiYgcGpUYXNrLnN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpZiAobmV4dERlcGVuZHNPbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0dXJib1Rhc2suZGVwZW5kc09uLnB1c2goLi4ubmV4dERlcGVuZHNPbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHREZXBlbmRzT24gPSBbdHVyYm9UYXNrLm5hbWVdO1xuXG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogT3RoZXJ3aXNlLCBpZiBhIHRhc2sgZG9lc24ndCBkbyBhbnl0aGluZywgZGVhY3RpdmF0ZSBpdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0dXJib1Rhc2suaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8qKlxuICAgICAgICogTWFpbiBidWlsZCBlbnRyeSBwb2ludCBkZXBlbmRzIG9uIHdoYXRldmVyIHdhcyBsYXN0LlxuICAgICAgICovXG4gICAgICB0aGlzLmJ1aWxkVGFzay5kZXBlbmRzT24ucHVzaCguLi5uZXh0RGVwZW5kc09uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBmb3IgdGhlIHR1cmJvIGNvbmZpZyBmaWxlLlxuICAgICAqL1xuICAgIGNvbnN0IGZpbGVOYW1lOiBzdHJpbmcgPSBcInR1cmJvLmpzb25cIjtcblxuICAgIC8qKlxuICAgICAqIEVuc3VyZSB0aGF0IHR1cmJvIGNvbmZpZyBkb2Vzbid0IGVuZCB1cCBpbiBhbnkgcGFja2FnZSBkaXN0cmlidXRpb25zLlxuICAgICAqL1xuICAgIHRoaXMucHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGZpbGVOYW1lKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjb250ZW50IG9mIHRoaXMgWUFNTCBmaWxlIHdpbGwgYmUgcmVzb2x2ZWQgYXQgc3ludGggdGltZS4gQnkgdGhlbixcbiAgICAgKiBhbnkgc3ViLXByb2plY3RzIHdpbGwgYmUgZGVmaW5lZCBhbmQgdGhpcyB3aWxsIGJlIGEgY29tcGxldGUgbGlzdC5cbiAgICAgKi9cbiAgICBuZXcgSnNvbkZpbGUodGhpcy5wcm9qZWN0LCBmaWxlTmFtZSwge1xuICAgICAgb2JqOiB7XG4gICAgICAgIGV4dGVuZHM6IHRoaXMuZXh0ZW5kcy5sZW5ndGggPyB0aGlzLmV4dGVuZHMgOiB1bmRlZmluZWQsXG4gICAgICAgIGdsb2JhbERlcGVuZGVuY2llczpcbiAgICAgICAgICB0aGlzLmlzUm9vdFByb2plY3QgJiYgdGhpcy5nbG9iYWxEZXBlbmRlbmNpZXMubGVuZ3RoXG4gICAgICAgICAgICA/IHRoaXMuZ2xvYmFsRGVwZW5kZW5jaWVzXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2xvYmFsRW52OlxuICAgICAgICAgIHRoaXMuaXNSb290UHJvamVjdCAmJiB0aGlzLmdsb2JhbEVudi5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy5nbG9iYWxFbnZcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBnbG9iYWxQYXNzVGhyb3VnaEVudjpcbiAgICAgICAgICB0aGlzLmlzUm9vdFByb2plY3QgJiYgdGhpcy5nbG9iYWxQYXNzVGhyb3VnaEVudi5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy5nbG9iYWxQYXNzVGhyb3VnaEVudlxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIHVpOiB0aGlzLmlzUm9vdFByb2plY3QgPyB0aGlzLnVpIDogdW5kZWZpbmVkLFxuICAgICAgICBkYW5nZXJvdXNseURpc2FibGVQYWNrYWdlTWFuYWdlckNoZWNrOiB0aGlzLmlzUm9vdFByb2plY3RcbiAgICAgICAgICA/IHRoaXMuZGFuZ2Vyb3VzbHlEaXNhYmxlUGFja2FnZU1hbmFnZXJDaGVja1xuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBjYWNoZURpcjogdGhpcy5pc1Jvb3RQcm9qZWN0ID8gdGhpcy5jYWNoZURpciA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGFlbW9uOiB0aGlzLmlzUm9vdFByb2plY3QgPyB0aGlzLmRhZW1vbiA6IHVuZGVmaW5lZCxcbiAgICAgICAgZW52TW9kZTogdGhpcy5pc1Jvb3RQcm9qZWN0ID8gdGhpcy5lbnZNb2RlIDogdW5kZWZpbmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWxsIHRhc2tzXG4gICAgICAgICAqL1xuICAgICAgICB0YXNrczogdGhpcy50YXNrc1xuICAgICAgICAgIC5maWx0ZXIoKHRhc2spID0+IHRhc2suaXNBY3RpdmUpXG4gICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgIChhY2MsIHRhc2spID0+IHtcbiAgICAgICAgICAgICAgYWNjW3Rhc2submFtZV0gPSB7XG4gICAgICAgICAgICAgICAgLi4udGFzay50YXNrQ29uZmlnKCksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBbdGhpcy5idWlsZFRhc2submFtZV06IHsgLi4udGhpcy5idWlsZFRhc2sudGFza0NvbmZpZygpIH0sXG4gICAgICAgICAgICB9IGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "main": "lib/index.js",
43
43
  "license": "MIT",
44
- "version": "0.0.77",
44
+ "version": "0.0.79",
45
45
  "types": "lib/index.d.ts",
46
46
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".",
47
47
  "scripts": {
@@ -55,6 +55,7 @@
55
55
  "post-upgrade": "npx projen post-upgrade",
56
56
  "pre-compile": "npx projen pre-compile",
57
57
  "release": "npx projen release",
58
+ "reset": "npx projen reset",
58
59
  "test": "npx projen test",
59
60
  "test:watch": "npx projen test:watch",
60
61
  "unbump": "npx projen unbump",