@wbce/projen-d9 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -151,7 +151,7 @@
151
151
  },
152
152
  "locationInModule": {
153
153
  "filename": "src/index.ts",
154
- "line": 86
154
+ "line": 87
155
155
  },
156
156
  "parameters": [
157
157
  {
@@ -174,7 +174,7 @@
174
174
  },
175
175
  "locationInModule": {
176
176
  "filename": "src/index.ts",
177
- "line": 201
177
+ "line": 202
178
178
  },
179
179
  "name": "addExtension",
180
180
  "parameters": [
@@ -215,7 +215,7 @@
215
215
  },
216
216
  "locationInModule": {
217
217
  "filename": "src/index.ts",
218
- "line": 205
218
+ "line": 206
219
219
  },
220
220
  "name": "configurePlumbing",
221
221
  "parameters": [
@@ -264,7 +264,7 @@
264
264
  },
265
265
  "locationInModule": {
266
266
  "filename": "src/index.ts",
267
- "line": 83
267
+ "line": 84
268
268
  },
269
269
  "name": "cacheService",
270
270
  "type": {
@@ -277,7 +277,7 @@
277
277
  },
278
278
  "locationInModule": {
279
279
  "filename": "src/index.ts",
280
- "line": 81
280
+ "line": 82
281
281
  },
282
282
  "name": "d9Service",
283
283
  "type": {
@@ -290,7 +290,7 @@
290
290
  },
291
291
  "locationInModule": {
292
292
  "filename": "src/index.ts",
293
- "line": 82
293
+ "line": 83
294
294
  },
295
295
  "name": "databaseService",
296
296
  "type": {
@@ -303,7 +303,7 @@
303
303
  },
304
304
  "locationInModule": {
305
305
  "filename": "src/index.ts",
306
- "line": 80
306
+ "line": 81
307
307
  },
308
308
  "name": "dockerComposeFile",
309
309
  "type": {
@@ -323,6 +323,19 @@
323
323
  "fqn": "@wbce/projen-shared.Dockerfile"
324
324
  }
325
325
  },
326
+ {
327
+ "docs": {
328
+ "stability": "stable"
329
+ },
330
+ "locationInModule": {
331
+ "filename": "src/index.ts",
332
+ "line": 80
333
+ },
334
+ "name": "dockerignore",
335
+ "type": {
336
+ "fqn": "projen.IgnoreFile"
337
+ }
338
+ },
326
339
  {
327
340
  "docs": {
328
341
  "stability": "stable"
@@ -355,7 +368,7 @@
355
368
  },
356
369
  "locationInModule": {
357
370
  "filename": "src/index.ts",
358
- "line": 86
371
+ "line": 87
359
372
  },
360
373
  "name": "options",
361
374
  "protected": true,
@@ -462,7 +475,7 @@
462
475
  },
463
476
  "locationInModule": {
464
477
  "filename": "src/index.ts",
465
- "line": 86
478
+ "line": 87
466
479
  },
467
480
  "parameters": [
468
481
  {
@@ -476,7 +489,7 @@
476
489
  "kind": "class",
477
490
  "locationInModule": {
478
491
  "filename": "src/index.ts",
479
- "line": 438
492
+ "line": 455
480
493
  },
481
494
  "name": "DirectusProject",
482
495
  "symbolId": "src/index:DirectusProject"
@@ -495,7 +508,7 @@
495
508
  "kind": "interface",
496
509
  "locationInModule": {
497
510
  "filename": "src/index.ts",
498
- "line": 433
511
+ "line": 450
499
512
  },
500
513
  "name": "DirectusProjectOptions",
501
514
  "symbolId": "src/index:DirectusProjectOptions"
@@ -704,6 +717,6 @@
704
717
  "symbolId": "src/index:PlumbingOptions"
705
718
  }
706
719
  },
707
- "version": "0.1.1",
708
- "fingerprint": "UdroE5xwdxC/OxkjwYVkl7p1fO64s0rn2AAAgOVDgPU="
720
+ "version": "0.1.3",
721
+ "fingerprint": "CKTyHl56O9j4boeAW5wxpLaIG4YbjNWtk8FQYS6AhPU="
709
722
  }
package/API.md CHANGED
@@ -778,6 +778,7 @@ When given a project, this it the project itself.
778
778
  | <code><a href="#@wbce/projen-d9.D9Project.property.databaseService">databaseService</a></code> | <code>projen.DockerComposeService</code> | *No description.* |
779
779
  | <code><a href="#@wbce/projen-d9.D9Project.property.dockerComposeFile">dockerComposeFile</a></code> | <code>projen.DockerCompose</code> | *No description.* |
780
780
  | <code><a href="#@wbce/projen-d9.D9Project.property.dockerfile">dockerfile</a></code> | <code>@wbce/projen-shared.Dockerfile</code> | *No description.* |
781
+ | <code><a href="#@wbce/projen-d9.D9Project.property.dockerignore">dockerignore</a></code> | <code>projen.IgnoreFile</code> | *No description.* |
781
782
  | <code><a href="#@wbce/projen-d9.D9Project.property.extensionFolder">extensionFolder</a></code> | <code>string</code> | *No description.* |
782
783
  | <code><a href="#@wbce/projen-d9.D9Project.property.extensions">extensions</a></code> | <code>@wbce/projen-d9-extension.ExtensionFolder</code> | *No description.* |
783
784
 
@@ -1503,6 +1504,16 @@ public readonly dockerfile: Dockerfile;
1503
1504
 
1504
1505
  ---
1505
1506
 
1507
+ ##### `dockerignore`<sup>Required</sup> <a name="dockerignore" id="@wbce/projen-d9.D9Project.property.dockerignore"></a>
1508
+
1509
+ ```typescript
1510
+ public readonly dockerignore: IgnoreFile;
1511
+ ```
1512
+
1513
+ - *Type:* projen.IgnoreFile
1514
+
1515
+ ---
1516
+
1506
1517
  ##### `extensionFolder`<sup>Required</sup> <a name="extensionFolder" id="@wbce/projen-d9.D9Project.property.extensionFolder"></a>
1507
1518
 
1508
1519
  ```typescript
@@ -2322,6 +2333,7 @@ When given a project, this it the project itself.
2322
2333
  | <code><a href="#@wbce/projen-d9.DirectusProject.property.databaseService">databaseService</a></code> | <code>projen.DockerComposeService</code> | *No description.* |
2323
2334
  | <code><a href="#@wbce/projen-d9.DirectusProject.property.dockerComposeFile">dockerComposeFile</a></code> | <code>projen.DockerCompose</code> | *No description.* |
2324
2335
  | <code><a href="#@wbce/projen-d9.DirectusProject.property.dockerfile">dockerfile</a></code> | <code>@wbce/projen-shared.Dockerfile</code> | *No description.* |
2336
+ | <code><a href="#@wbce/projen-d9.DirectusProject.property.dockerignore">dockerignore</a></code> | <code>projen.IgnoreFile</code> | *No description.* |
2325
2337
  | <code><a href="#@wbce/projen-d9.DirectusProject.property.extensionFolder">extensionFolder</a></code> | <code>string</code> | *No description.* |
2326
2338
  | <code><a href="#@wbce/projen-d9.DirectusProject.property.extensions">extensions</a></code> | <code>@wbce/projen-d9-extension.ExtensionFolder</code> | *No description.* |
2327
2339
 
@@ -3157,6 +3169,18 @@ public readonly dockerfile: Dockerfile;
3157
3169
 
3158
3170
  ---
3159
3171
 
3172
+ ##### ~~`dockerignore`~~<sup>Required</sup> <a name="dockerignore" id="@wbce/projen-d9.DirectusProject.property.dockerignore"></a>
3173
+
3174
+ - *Deprecated:* Use {@link D9Project } instead. The package was renamed to `@wbce/projen-d9` to reflect that it targets the d9 fork, not upstream Directus.
3175
+
3176
+ ```typescript
3177
+ public readonly dockerignore: IgnoreFile;
3178
+ ```
3179
+
3180
+ - *Type:* projen.IgnoreFile
3181
+
3182
+ ---
3183
+
3160
3184
  ##### ~~`extensionFolder`~~<sup>Required</sup> <a name="extensionFolder" id="@wbce/projen-d9.DirectusProject.property.extensionFolder"></a>
3161
3185
 
3162
3186
  - *Deprecated:* Use {@link D9Project } instead. The package was renamed to `@wbce/projen-d9` to reflect that it targets the d9 fork, not upstream Directus.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @wbce/projen-directus
2
2
 
3
+ ## 0.1.3
4
+
5
+ ### Patch Changes
6
+
7
+ - d998abb: Use `npm install` instead of `npm ci` in the Dockerfile builder stage, which failed with `Missing: sonic-boom@5.0.2 from lock file`.
8
+
9
+ ## 0.1.2
10
+
11
+ ### Patch Changes
12
+
13
+ - 1700a54: Build extensions in a multi-stage Dockerfile with the locked projen version, and generate a `.dockerignore`.
14
+
3
15
  ## 0.1.1
4
16
 
5
17
  ### Patch Changes
package/lib/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { AddExtensionOptions, D9ExtensionType, ExtensionFolder } from '@wbce/projen-d9-extension';
2
2
  import { GitHubConfig, GitHubConfigOptions, Dockerfile } from '@wbce/projen-shared';
3
- import { DockerCompose, DockerComposeService, javascript, Task, typescript } from 'projen';
3
+ import { DockerCompose, DockerComposeService, IgnoreFile, javascript, Task, typescript } from 'projen';
4
4
  export interface PackageVersions {
5
5
  readonly d9?: string;
6
6
  /**
@@ -73,6 +73,7 @@ export declare class D9Project extends javascript.NodeProject {
73
73
  extensionFolder: string;
74
74
  buildExtensionTask: Task;
75
75
  dockerfile: Dockerfile;
76
+ dockerignore: IgnoreFile;
76
77
  dockerComposeFile: DockerCompose;
77
78
  d9Service: DockerComposeService;
78
79
  databaseService: DockerComposeService;
package/lib/index.js CHANGED
@@ -299,11 +299,26 @@ class D9Project extends projen_1.javascript.NodeProject {
299
299
  }
300
300
  addDockerfile() {
301
301
  this.dockerfile = new projen_shared_1.Dockerfile(this)
302
+ // builder stage: dev dependencies are installed so `npx projen` runs the version locked in package-lock.json
303
+ .fromAs('node', '22-bookworm-slim', 'builder')
304
+ .step('builder-update-npm', 'Update npm to fix dependencies')
305
+ .run('npm install -g npm@11.8.0')
306
+ .step('builder-install-pnpm', 'install pnpm')
307
+ .run('npm install -g pnpm@10.33.0')
308
+ .step('builder-copy-package', 'Copy package.json and package-lock.json first to leverage Docker layer caching')
309
+ .copy('package*.json', '/app/')
310
+ .step('builder-workdir', 'Set working directory')
311
+ .workdir('/app')
312
+ .step('builder-install-deps', 'Install dependencies - with dev dependencies, for projen')
313
+ .run('npm install')
314
+ .step('builder-copy-source', 'Copy the rest of the application code')
315
+ .copy('.', '.')
316
+ .step('build-extension', 'build extensions')
317
+ .run('npx projen build-extensions')
318
+ // final stage
302
319
  .from('node', '22-bookworm-slim')
303
320
  .step('update-npm', 'Update npm to fix dependencies')
304
321
  .run('npm install -g npm@11.8.0')
305
- .step('install-pnpm', 'install pnpm')
306
- .run('npm install -g pnpm@10.33.0')
307
322
  .step('copy-package', 'Copy package.json and package-lock.json first to leverage Docker layer caching')
308
323
  .copy('package*.json', '/app/')
309
324
  .step('workdir', 'Set working directory')
@@ -314,16 +329,17 @@ class D9Project extends projen_1.javascript.NodeProject {
314
329
  .run('rm -rf node_modules/tedious/benchmarks')
315
330
  .step('copy-source', 'Copy the rest of the application code')
316
331
  .copy('.', '.')
317
- .step('build-extension', 'build extensions')
318
- .run('npx projen build-extensions')
332
+ .step('copy-extensions', 'Copy the built extensions from the builder stage')
333
+ .copy('/app/extensions', './extensions', { from: 'builder' })
319
334
  .step('start', 'Start d9 server')
320
335
  .cmdExec(['npx', 'directus', 'start']);
336
+ this.dockerignore = new projen_1.IgnoreFile(this, '.dockerignore', { ignorePatterns: ['**/node_modules', '.git'] });
321
337
  return this.dockerfile;
322
338
  }
323
339
  }
324
340
  exports.D9Project = D9Project;
325
341
  _a = JSII_RTTI_SYMBOL_1;
326
- D9Project[_a] = { fqn: "@wbce/projen-d9.D9Project", version: "0.1.1" };
342
+ D9Project[_a] = { fqn: "@wbce/projen-d9.D9Project", version: "0.1.3" };
327
343
  /**
328
344
  * @deprecated Use {@link D9Project} instead. The package was renamed to `@wbce/projen-d9` to reflect that it targets the d9 fork, not upstream Directus.
329
345
  */
@@ -331,5 +347,5 @@ class DirectusProject extends D9Project {
331
347
  }
332
348
  exports.DirectusProject = DirectusProject;
333
349
  _b = JSII_RTTI_SYMBOL_1;
334
- DirectusProject[_b] = { fqn: "@wbce/projen-d9.DirectusProject", version: "0.1.1" };
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtRUFBa0c7QUFDbEcsdURBQW9GO0FBQ3BGLG1DQUEwSTtBQUMxSSx1RUFBa0U7QUFDbEUsc0RBQW9FO0FBb0VwRSxNQUFhLFNBQVUsU0FBUSxtQkFBVSxDQUFDLFdBQVc7SUFhbkQsWUFBc0IsT0FBeUI7UUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLE9BQU8sQ0FBQztRQUMvRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDM0UsTUFBTSxFQUFFLEtBQUssRUFBRSxzQ0FBc0M7WUFDckQsV0FBVyxFQUFFLElBQUk7WUFDakIsa0JBQWtCLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRTtvQkFDZixRQUFRLEVBQUUsd0NBQTJCLENBQUMsS0FBSztpQkFDNUM7YUFDRjtZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUk7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDUixLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ25CLEVBQUU7b0JBQ0YsZ1BBQWdQO29CQUNoUCxFQUFFO29CQUNGLHNCQUFzQjtvQkFDdEIsRUFBRTtvQkFDRixPQUFPO29CQUNQLGdEQUFnRDtvQkFDaEQsOERBQThEO29CQUM5RCxLQUFLO29CQUNMLEVBQUU7b0JBQ0YscUlBQXFJO29CQUNySSxFQUFFO29CQUNGLFdBQVc7b0JBQ1gsRUFBRTtvQkFDRixtRkFBbUY7b0JBQ25GLEVBQUU7b0JBQ0YsT0FBTztvQkFDUCw0Q0FBNEM7b0JBQzVDLHNDQUFzQztvQkFDdEMsS0FBSztvQkFDTCxFQUFFO29CQUNGLDBHQUEwRztvQkFDMUcsRUFBRTtvQkFDRixpQkFBaUI7b0JBQ2pCLEVBQUU7b0JBQ0Ysd0JBQXdCO29CQUN4QixlQUFlO29CQUNmLDBEQUEwRDtvQkFDMUQsOEZBQThGO29CQUM5RixrRUFBa0U7b0JBQ2xFLEVBQUU7b0JBQ0YsNkNBQTZDO29CQUM3QyxFQUFFO29CQUNGLGtCQUFrQjtvQkFDbEIsRUFBRTtvQkFDRix1SEFBdUg7b0JBQ3ZILEVBQUU7b0JBQ0YsZUFBZTtvQkFDZixFQUFFO29CQUNGLHFFQUFxRTtvQkFDckUsRUFBRTtvQkFDRixPQUFPO29CQUNQLDhEQUE4RDtvQkFDOUQsRUFBRTtvQkFDRiwwREFBMEQ7b0JBQzFELEtBQUs7b0JBQ0wsRUFBRTtvQkFDRixtREFBbUQ7aUJBQ3BELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNiO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLGlCQUFpQjtnQkFDakIsMkJBQTJCO2dCQUMzQixHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7YUFDM0I7WUFDRCxJQUFJLEVBQUUsQ0FBQyxzQkFBc0IsU0FBUyxFQUFFLENBQUM7U0FDMUMsQ0FBQyxDQUFDO1FBekVpQixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQTJFN0MsOENBQThDO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQzNELEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRTtTQUN0QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUU5QixJQUFJLHVCQUFjLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxDQUFDLGdCQUFPLENBQUMsTUFBTSxDQUFDO1NBQ3pCLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksNEJBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV6QyxzRkFBc0Y7UUFDdEYsSUFBSSxtQkFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxTQUFTLENBQUM7UUFDbEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHFDQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFZLEVBQUUsY0FBaUMsRUFBRSxPQUE2QjtRQUNoRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLGlCQUFpQixDQUFDLE9BQXdCO1FBQy9DLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUNyQyxXQUFXLEVBQUUsMENBQTBDO1NBQ3hELENBQUMsQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLE1BQU0sc0JBQXNCLEdBQUcsMEdBQTBHLFVBQVUsb0JBQW9CLENBQUM7UUFDeEssTUFBTSxzQkFBc0IsR0FBRyw0SkFBNEosQ0FBQztRQUM1TCxJQUFJLENBQUMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxxRkFBcUYsRUFBRTtZQUMvRixTQUFTLEVBQUUsZUFBZTtTQUMzQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxFQUFFO1lBQzdELFNBQVMsRUFBRSxzQkFBc0Isc0JBQXNCLEVBQUU7U0FDMUQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyx5TUFBeU0sVUFBVSw4Q0FBOEMsRUFBRTtZQUMzUSxTQUFTLEVBQUUsc0JBQXNCO1NBQ2xDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxVQUFVLDBDQUEwQyxFQUFFO1lBQ3JFLFNBQVMsRUFBRSxzQkFBc0I7U0FDbEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLFVBQVUsb0NBQW9DLEVBQUU7WUFDL0QsU0FBUyxFQUFFLEtBQUssc0JBQXNCLEVBQUU7U0FDekMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQyxXQUFXLEVBQUUsc0JBQXNCO1NBQ3BDLENBQUMsQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLE1BQU0sc0JBQXNCLEdBQUcsMEdBQTBHLFVBQVUsb0JBQW9CLENBQUM7UUFDeEssSUFBSSxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMseU1BQXlNLFVBQVUsOENBQThDLEVBQUU7WUFDM1EsU0FBUyxFQUFFLHNCQUFzQjtTQUNsQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsVUFBVSwwQ0FBMEMsRUFBRTtZQUNyRSxTQUFTLEVBQUUsc0JBQXNCO1NBQ2xDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxVQUFVLG9DQUFvQyxFQUFFO1lBQy9ELFNBQVMsRUFBRSxLQUFLLHNCQUFzQixFQUFFO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQy9CLFdBQVcsRUFBRSx1QkFBdUI7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDdkMsV0FBVyxFQUFFLG9HQUFvRztTQUNsSCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUU7WUFDekQsV0FBVyxFQUFFLHlCQUF5QjtTQUN2QyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsa0JBQWtCLENBQUMsQ0FBQztRQUMzRSxtRkFBbUY7UUFDbkYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDMUIsTUFBTSxJQUFJLENBQUMsZUFBZSwwSEFBMEgsRUFDcEosRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQ3RCLENBQUM7SUFDSixDQUFDO0lBR08sZ0JBQWdCO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLElBQUksc0JBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFO1lBQy9DLEtBQUssRUFBRSwyQkFBMkI7WUFDbEMsT0FBTyxFQUFFO2dCQUNQLHNCQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSwwQkFBMEIsQ0FBQzthQUNoRTtZQUNELEtBQUssRUFBRTtnQkFDTCxzQkFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO2FBQ3RDO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixpQkFBaUIsRUFBRSxJQUFJO2dCQUN2QixXQUFXLEVBQUUsSUFBSTthQUNsQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUU7WUFDekMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsT0FBTyxFQUFFO2dCQUNQLHNCQUFhLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUM7YUFDcEQ7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsc0JBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQzthQUN0QztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDbkMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUM1QixLQUFLLEVBQUU7Z0JBQ0wsc0JBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQzthQUN0QztZQUNELE9BQU8sRUFBRTtnQkFDUCxzQkFBYSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDO2dCQUNyRCxzQkFBYSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUM7YUFDNUQ7WUFDRCx5RUFBeUU7WUFDekUsV0FBVyxFQUFFO2dCQUNYLEdBQUcsRUFBRSxpQkFBaUI7Z0JBQ3RCLE1BQU0sRUFBRSxvQkFBb0I7Z0JBQzVCLFdBQVcsRUFBRSxZQUFZO2dCQUN6QixTQUFTLEVBQUUsSUFBSTtnQkFDZixPQUFPLEVBQUUsVUFBVTtnQkFDbkIsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixhQUFhLEVBQUUsT0FBTztnQkFDdEIsV0FBVyxFQUFFLE9BQU87Z0JBQ3BCLGdCQUFnQixFQUFFLE9BQU87Z0JBQ3pCLGVBQWUsRUFBRSxPQUFPO2dCQUN4QixlQUFlLEVBQUUsb0JBQW9CO2dCQUNyQyxtQkFBbUIsRUFBRSxXQUFXO2dCQUNoQyxZQUFZLEVBQUUsTUFBTTtnQkFDcEIsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLFNBQVMsRUFBRSxNQUFNO2dCQUNqQixXQUFXLEVBQUUsbUJBQW1CO2dCQUNoQyxjQUFjLEVBQUUsVUFBVTtnQkFDMUIsc0JBQXNCLEVBQUUsTUFBTTtnQkFDOUIsZ0NBQWdDLEVBQUUsTUFBTTtnQkFDeEMsY0FBYyxFQUFFLE1BQU07YUFDdkI7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixDQUFDO1NBQzVDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLHNCQUFhLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFFdEYsZ0ZBQWdGO1FBQ2hGLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLCtCQUErQixFQUFFO1lBQ25ELElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxDQUFDO1lBQ2hFLFFBQVEsRUFBRSxLQUFLO1lBQ2YsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsQ0FBQztZQUNWLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztRQUVILDRCQUE0QjtRQUM1QixFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyw0QkFBNEIsRUFBRTtZQUNoRCxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsa0NBQWtDLENBQUM7WUFDdkQsUUFBUSxFQUFFLEtBQUs7WUFDZixPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxDQUFDO1lBQ1YsY0FBYyxFQUFFLElBQUk7WUFDcEIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsOENBQThDO1FBQzlDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFO1lBQzVDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRTtZQUN2QyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUU7U0FDM0MsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUU1QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQWEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0QsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQzNCLElBQUksRUFBRSxxQkFBcUI7WUFDM0IsTUFBTSxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQ3pCLFdBQVcsRUFBRTtnQkFDWCxRQUFRLEVBQUUsK0JBQWEsQ0FBQyxJQUFJO2dCQUM1QixZQUFZLEVBQUUsK0JBQWEsQ0FBQyxLQUFLO2FBQ2xDO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUU7Z0JBQ2pEO29CQUNFLElBQUksRUFBRSxxQkFBcUI7b0JBQzNCLEdBQUcsRUFBRSwyTEFBMkw7b0JBQ2hNLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSw2QkFBNkIsRUFBRTtpQkFDakQ7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSwwQkFBVSxDQUFDLElBQUksQ0FBQzthQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDO2FBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUUsZ0NBQWdDLENBQUM7YUFDcEQsR0FBRyxDQUFDLDJCQUEyQixDQUFDO2FBQ2hDLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDO2FBQ3BDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQzthQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLGdGQUFnRixDQUFDO2FBQ3RHLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDO2FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLENBQUM7YUFDeEMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNmLElBQUksQ0FBQyxjQUFjLEVBQUUsaURBQWlELENBQUM7YUFDdkUsR0FBRyxDQUFDLGlDQUFpQyxDQUFDO2FBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUUsMkRBQTJELENBQUM7YUFDNUUsR0FBRyxDQUFDLHdDQUF3QyxDQUFDO2FBQzdDLElBQUksQ0FBQyxhQUFhLEVBQUUsdUNBQXVDLENBQUM7YUFDNUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7YUFDZCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7YUFDM0MsR0FBRyxDQUFDLDZCQUE2QixDQUFDO2FBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7YUFDaEMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOztBQWhXSCw4QkFrV0M7OztBQVFEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLFNBQVM7O0FBQTlDLDBDQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkZEV4dGVuc2lvbk9wdGlvbnMsIEQ5RXh0ZW5zaW9uVHlwZSwgRXh0ZW5zaW9uRm9sZGVyIH0gZnJvbSAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbic7XG5pbXBvcnQgeyBHaXRIdWJDb25maWcsIEdpdEh1YkNvbmZpZ09wdGlvbnMsIERvY2tlcmZpbGUgfSBmcm9tICdAd2JjZS9wcm9qZW4tc2hhcmVkJztcbmltcG9ydCB7IEFpQWdlbnQsIEFpSW5zdHJ1Y3Rpb25zLCBEb2NrZXJDb21wb3NlLCBEb2NrZXJDb21wb3NlU2VydmljZSwgamF2YXNjcmlwdCwgSnNvbkZpbGUsIFNhbXBsZUZpbGUsIFRhc2ssIHR5cGVzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VWZXJzaW9ucyB7XG4gIHJlYWRvbmx5IGQ5Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIEF0bGFzIGJpbmFyeSBkb3dubG9hZGVkIGJ5IGQ5LXBsdW1iaW5nLlxuICAgKiBAZGVmYXVsdCBcIjEuMy4zXCJcbiAgICovXG4gIHJlYWRvbmx5IGF0bGFzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0b3JhZ2Ugc2hhcmVkIGJldHdlZW4gZW52aXJvbm1lbnRzLCB1c2VkIGJ5IGBkOS1wbHVtYmluZyBzYXZlYCBhbmQgYGQ5LXBsdW1iaW5nIGFwcGx5LXNjaGVtYWAgdG8gdHJhbnNmZXIgZmlsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJtZWRpYXRlU3RvcmFnZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHN0b3JhZ2UgZHJpdmVyOiBzMywgZ2NzLCBhenVyZSwgbG9jYWwgb3IgY2xvdWRpbmFyeS5cbiAgICovXG4gIHJlYWRvbmx5IGRyaXZlcjogc3RyaW5nO1xuICAvKipcbiAgICogTm9uLXNlY3JldCBkcml2ZXIgb3B0aW9ucyAocm9vdCwgYnVja2V0LCByZWdpb24sIGVuZHBvaW50Li4uKS5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogU2VjcmV0IGRyaXZlciBvcHRpb25zLCBtYXBwaW5nIGVhY2ggb3B0aW9uIG5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGhvbGRpbmcgaXRzIHZhbHVlLlxuICAgKiBPbmx5IHRoZSB2YXJpYWJsZSBuYW1lIGlzIHdyaXR0ZW4gdG8gYGQ5LXBsdW1iaW5nLmpzb25gLCBuZXZlciB0aGUgdmFsdWU6IGl0IGlzIHJlYWQgZnJvbSB0aGUgZW52aXJvbm1lbnQgKG9yIGAuZW52YCkgYXQgcnVudGltZS5cbiAgICogQGV4YW1wbGUgeyBrZXk6ICdTM19BQ0NFU1NfS0VZX0lEX0VOVl9WQVInLCBzZWNyZXQ6ICdTM19TRUNSRVRfQUNDRVNTX0tFWV9FTlZfVkFSJyB9IC8vIHRoZSBgc2VjcmV0YCBvcHRpb24gaXMgcmVhZCBmcm9tICRTM19TRUNSRVRfQUNDRVNTX0tFWV9FTlZfVkFSXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRFbnY/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb2YgdGhlIGQ5LXBsdW1iaW5nIENMSSwgd3JpdHRlbiB0byBgZDktcGx1bWJpbmcuanNvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1bWJpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFN0b3JhZ2Ugc2hhcmVkIGJldHdlZW4gZW52aXJvbm1lbnRzLlxuICAgKiBAZGVmYXVsdCAtIG5vbmUsIHRoZSBpbnRlcm1lZGlhdGUgc3RvcmFnZSBpcyBjb25maWd1cmVkIHdpdGggSU5URVJNRURJQVRFX1NUT1JBR0VfKiB2YXJpYWJsZXMgb3IgZmxhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGludGVybWVkaWF0ZVN0b3JhZ2U/OiBJbnRlcm1lZGlhdGVTdG9yYWdlT3B0aW9ucztcbiAgLyoqXG4gICAqIERlZmF1bHQgbG9nIGxldmVsIG9mIHRoZSBDTEksIG92ZXJyaWRkZW4gYnkgdGhlIExPR19MRVZFTCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQGRlZmF1bHQgXCJkZWJ1Z1wiXG4gICAqL1xuICByZWFkb25seSBsb2dMZXZlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGQ5IGZvbGRlciBrZXB0IGluIHRoZSBzbmFwc2hvdCwgb3ZlcnJpZGRlbiBieSB0aGUgQ09NTU9OX0ZPTERFUl9OQU1FIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAZGVmYXVsdCBcImQ5LXBsdW1iaW5nLWNvbW1vblwiXG4gICAqL1xuICByZWFkb25seSBjb21tb25Gb2xkZXJOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEQ5UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgR2l0SHViIGNvbmZpZ3VyYXRpb24uXG4gICAqIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIEdpdEh1YiBjb25maWcgZW50aXJlbHkuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBHaXRIdWJDb25maWcgd2l0aCBwcm9qZWN0IGRlZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBnaXRodWJDb25maWc/OiBHaXRIdWJDb25maWdPcHRpb25zIHwgZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb25zIGZvbGRlci5cbiAgICogQGRlZmF1bHQgXCJleHRlbnNpb24tcGFja2FnZXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uc0ZvbGRlck5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VWZXJzaW9ucz86IFBhY2thZ2VWZXJzaW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIEQ5UHJvamVjdCBleHRlbmRzIGphdmFzY3JpcHQuTm9kZVByb2plY3Qge1xuXG4gIHB1YmxpYyByZWFkb25seSBnaXRodWJDb25maWc/OiBHaXRIdWJDb25maWc7XG4gIHB1YmxpYyBleHRlbnNpb25zITogRXh0ZW5zaW9uRm9sZGVyO1xuICBwdWJsaWMgZXh0ZW5zaW9uRm9sZGVyITogc3RyaW5nO1xuICBwdWJsaWMgYnVpbGRFeHRlbnNpb25UYXNrITogVGFzaztcbiAgcHVibGljIGRvY2tlcmZpbGUhOiBEb2NrZXJmaWxlO1xuICBwdWJsaWMgZG9ja2VyQ29tcG9zZUZpbGUhOiBEb2NrZXJDb21wb3NlO1xuICBwdWJsaWMgZDlTZXJ2aWNlITogRG9ja2VyQ29tcG9zZVNlcnZpY2U7XG4gIHB1YmxpYyBkYXRhYmFzZVNlcnZpY2UhOiBEb2NrZXJDb21wb3NlU2VydmljZTtcbiAgcHVibGljIGNhY2hlU2VydmljZSE6IERvY2tlckNvbXBvc2VTZXJ2aWNlO1xuICBwcml2YXRlIHBsdW1iaW5nQ29uZmlnITogSnNvbkZpbGU7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9wdGlvbnM6IEQ5UHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkOVZlcnNpb24gPSBvcHRpb25zLnBhY2thZ2VWZXJzaW9ucz8uZDkgfHwgJzEyLjAuMTUnO1xuICAgIGNvbnN0IGF0bGFzVmVyc2lvbiA9IG9wdGlvbnMucGFja2FnZVZlcnNpb25zPy5hdGxhcyB8fCAnMS4zLjMnO1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBwYWNrYWdlTWFuYWdlcjogb3B0aW9ucy5wYWNrYWdlTWFuYWdlciA/PyBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5OUE0sXG4gICAgICBnaXRodWI6IGZhbHNlLCAvLyBXZSB1c2Ugb3VyIG93biBHaXRIdWJDb25maWcgaW5zdGVhZFxuICAgICAgZGVwc1VwZ3JhZGU6IHRydWUsXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHtcbiAgICAgICAgd29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgICAgc2NoZWR1bGU6IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZS5EQUlMWSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsaWNlbnNlZDogZmFsc2UsXG4gICAgICByZWFkbWU6IG9wdGlvbnMucmVhZG1lID8/IHtcbiAgICAgICAgY29udGVudHM6IFtcbiAgICAgICAgICBgIyAke29wdGlvbnMubmFtZX1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdBIFtkOV0oaHR0cHM6Ly9naXRodWIuY29tL0xhV2ViY2Fwc3VsZS9kOSkgKERpcmVjdHVzIDkgZm9yaykgcHJvamVjdCBzY2FmZm9sZGVkIHdpdGggW2BAd2JjZS9wcm9qZW4tZDlgXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ad2JjZS9wcm9qZW4tZDkpLiBEZXZlbG9wIGxvY2FsbHkgYWdhaW5zdCBEb2NrZXIgQ29tcG9zZSwgdGhlbiBidWlsZCBhIERvY2tlciBpbWFnZSB0byBkZXBsb3kgYW55d2hlcmUuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgTG9jYWwgZGV2ZWxvcG1lbnQnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdgYGBzaCcsXG4gICAgICAgICAgJ25weCBwcm9qZW4gaW5zdGFsbCAgICAgICMgaW5zdGFsbCBkZXBlbmRlbmNpZXMnLFxuICAgICAgICAgICducHggcHJvamVuIGZpcnN0LXJ1biAgICAjIGJvb3Qgc3RhY2ssIGNyZWF0ZSBhZG1pbiwgc3RhcnQgZDknLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdPcGVuIGh0dHA6Ly9sb2NhbGhvc3Q6ODA1NSBhbmQgc2lnbiBpbiBhcyBgYWRtaW5AZXhhbXBsZS5jb21gIC8gYHRvdG90b3RvYC4gRXh0ZW5zaW9ucyBhdXRvLXJlbG9hZCAoYEVYVEVOU0lPTlNfQVVUT19SRUxPQUQ9dHJ1ZWApLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIERlcGxveScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0EgYERvY2tlcmZpbGVgIGlzIGluY2x1ZGVkLiBCdWlsZCBhbmQgcHVzaCB0aGUgaW1hZ2UgZm9yIHlvdXIgdGFyZ2V0IGVudmlyb25tZW50OicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2BgYHNoJyxcbiAgICAgICAgICAnZG9ja2VyIGJ1aWxkIC10IDxyZWdpc3RyeT4vPGltYWdlPjo8dGFnPiAuJyxcbiAgICAgICAgICAnZG9ja2VyIHB1c2ggPHJlZ2lzdHJ5Pi88aW1hZ2U+Ojx0YWc+JyxcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnQ29uZmlndXJlIHRoZSBkZXBsb3llZCBpbnN0YW5jZSB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZGF0YWJhc2UsIGNhY2hlLCBzZWNyZXRzKSDigJQgc2VlIHRoZSBkOSBkb2NzLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIENvbW1vbiB0YXNrcycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ3wgVGFzayB8IERlc2NyaXB0aW9uIHwnLFxuICAgICAgICAgICd8IC0tLSB8IC0tLSB8JyxcbiAgICAgICAgICAnfCBgbnB4IHByb2plbiBydW5gIHwgU3RhcnQgZDkgKGBkb2NrZXIgY29tcG9zZSB1cCBkOWApIHwnLFxuICAgICAgICAgICd8IGBucHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnMgW25hbWVdYCB8IEluc3RhbGwgYW5kIGJ1aWxkIGFsbCBleHRlbnNpb25zIChvciBvbmx5IGBuYW1lYCkgfCcsXG4gICAgICAgICAgJ3wgYG5weCBwcm9qZW4gY3JlYXRlLWFuLWFkbWluYCB8IENyZWF0ZSB0aGUgZGVmYXVsdCBhZG1pbiB1c2VyIHwnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdTZWUgYC5wcm9qZW4vdGFza3MuanNvbmAgZm9yIHRoZSBmdWxsIGxpc3QuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgQ29uZmlndXJhdGlvbicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0VkaXQgYC5wcm9qZW5yYy5qc2AgYW5kIHJ1biBgbnB4IHByb2plbmAgdG8gcmVnZW5lcmF0ZSBwcm9qZWN0IGZpbGVzLiBMb2NhbCBlbnZpcm9ubWVudCBvdmVycmlkZXMgZ28gaW4gYC5lbnYubG9jYWxgLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIEV4dGVuc2lvbnMnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdFeHRlbnNpb25zIGxpdmUgdW5kZXIgYC4vcGx1Z2lucy9gLiBBZGQgbmV3IG9uZXMgaW4gYC5wcm9qZW5yYy5qc2A6JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnYGBganMnLFxuICAgICAgICAgIFwiaW1wb3J0IHsgRDlFeHRlbnNpb25UeXBlIH0gZnJvbSAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbic7XCIsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgXCJwcm9qZWN0LmFkZEV4dGVuc2lvbignbXktaG9vaycsIFtEOUV4dGVuc2lvblR5cGUuSE9PS10pO1wiLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdUaGVuIGBucHggcHJvamVuICYmIG5weCBwcm9qZW4gYnVpbGQtZXh0ZW5zaW9uc2AuJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgICdAd2JjZS9wcm9qZW4tZDknLFxuICAgICAgICAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbicsXG4gICAgICAgIC4uLihvcHRpb25zLmRldkRlcHMgPz8gW10pLFxuICAgICAgXSxcbiAgICAgIGRlcHM6IFtgQHdiY2UtZDkvZGlyZWN0dXM5QCR7ZDlWZXJzaW9ufWBdLFxuICAgIH0pO1xuXG4gICAgLy8gTm8gdHNjb25maWcgbWVhbnMgbm8gdHNjIC0tYnVpbGQgaW4gY29tcGlsZVxuICAgIHRoaXMuY29tcGlsZVRhc2sucmVzZXQoKTtcblxuICAgIHRoaXMucGx1bWJpbmdDb25maWcgPSBuZXcgSnNvbkZpbGUodGhpcywgJ2Q5LXBsdW1iaW5nLmpzb24nLCB7XG4gICAgICBvYmo6IHsgYXRsYXNWZXJzaW9uIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV4dGVuc2lvbkZvbGRlcigpO1xuICAgIHRoaXMuYWRkRG9ja2VyQ29tcG9zZSgpO1xuICAgIHRoaXMuYWRkRmlyc3RSdW5UYXNrKCk7XG4gICAgdGhpcy5hZGRCdWlsZEV4dGVuc2lvblRhc2soKTtcbiAgICB0aGlzLmFkZFJ1blRhc2soKTtcbiAgICB0aGlzLmFkZEQ5UGx1bWJpbmdUYXNrKCk7XG4gICAgdGhpcy5hZGREb2NrZXJmaWxlKCk7XG4gICAgdGhpcy5hZGRDcmVhdGVBZG1pblVzZXJUYXNrKCk7XG5cbiAgICBuZXcgQWlJbnN0cnVjdGlvbnModGhpcywge1xuICAgICAgYWdlbnRzOiBbQWlBZ2VudC5DTEFVREVdLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMuZ2l0aHViQ29uZmlnICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5naXRodWJDb25maWcgPSBuZXcgR2l0SHViQ29uZmlnKHRoaXMsIG9wdGlvbnMuZ2l0aHViQ29uZmlnKTtcbiAgICAgIHRoaXMuYWRkU2F2ZUJyYW5jaFdvcmtmbG93KCk7XG4gICAgfVxuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKCd1cGxvYWRzJyk7XG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoJyoqLy5EU19TdG9yZScpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKCcuZW52LmxvY2FsJyk7XG5cbiAgICAvLyBDcmVhdGUgYW4gZW1wdHkgLmVudi5sb2NhbCBpZiBpdCBkb2Vzbid0IGV4aXN0LCBzbyBEb2NrZXIgZG9lc24ndCBtb3VudCBhIGRpcmVjdG9yeVxuICAgIG5ldyBTYW1wbGVGaWxlKHRoaXMsICcuZW52LmxvY2FsJywgeyBjb250ZW50czogJyMgTG9jYWwgZW52aXJvbm1lbnQgb3ZlcnJpZGVzIGZvciBkOScgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEV4dGVuc2lvbkZvbGRlcigpIHtcbiAgICBjb25zdCBmb2xkZXJOYW1lID0gdGhpcy5vcHRpb25zLmV4dGVuc2lvbnNGb2xkZXJOYW1lID8/ICdwbHVnaW5zJztcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBuZXcgRXh0ZW5zaW9uRm9sZGVyKHsgcGFyZW50OiB0aGlzLCBuYW1lOiBmb2xkZXJOYW1lIH0pO1xuICAgIHRoaXMuZXh0ZW5zaW9uRm9sZGVyID0gZm9sZGVyTmFtZTtcbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCdleHRlbnNpb25zLyonKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5pbmNsdWRlKCdleHRlbnNpb25zL3RlbXBsYXRlcy8nKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRFeHRlbnNpb24obmFtZTogc3RyaW5nLCBleHRlbnNpb25UeXBlczogRDlFeHRlbnNpb25UeXBlW10sIG9wdGlvbnM/OiBBZGRFeHRlbnNpb25PcHRpb25zICkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuYWRkKG5hbWUsIGV4dGVuc2lvblR5cGVzLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVQbHVtYmluZyhvcHRpb25zOiBQbHVtYmluZ09wdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zKSkge1xuICAgICAgdGhpcy5wbHVtYmluZ0NvbmZpZy5hZGRPdmVycmlkZShrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZpcnN0UnVuVGFzaygpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRUYXNrKCdmaXJzdC1ydW4nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0luaXRpYWxpemUgYW5kIHN0YXJ0IGEgZnJlc2ggZDkgaW5zdGFuY2UnLFxuICAgIH0pO1xuICAgIGNvbnN0IGFkbWluRW1haWwgPSAnYWRtaW5AZXhhbXBsZS5jb20nO1xuICAgIGNvbnN0IHVzZXJOb3RFeGlzdHNDb25kaXRpb24gPSBgZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgY291bnQoKikgRlJPTSBkaXJlY3R1c191c2VycyBXSEVSRSBlbWFpbCA9ICcke2FkbWluRW1haWx9J1wiIHwgZ3JlcCAtcSAnXjAkJ2A7XG4gICAgY29uc3QgZW1wdHlEYXRhYmFzZUNvbmRpdGlvbiA9ICdkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBjb3VudCgqKSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgV0hFUkUgdGFibGVfbmFtZSBMSUtFIFxcJ2RpcmVjdHVzXyVcXCdcIiB8IGdyZXAgLXEgXFwnXjAkXFwnJztcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIC1kIC0td2FpdCBkYXRhYmFzZSBjYWNoZScpO1xuICAgIHRhc2suZXhlYygnbnB4IGQ5LXBsdW1iaW5nIGZpcnN0LWltcG9ydCAtLWhvc3QgbG9jYWxob3N0IC0tdXNlciBkOSAtLXBhc3N3b3JkIGQ5IC0tZGF0YWJhc2UgZDknLCB7XG4gICAgICBjb25kaXRpb246ICd0ZXN0IC1kIC4vc3FsJyxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHJ1biAtLXJtIGQ5IG5weCBkaXJlY3R1cyBib290c3RyYXAnLCB7XG4gICAgICBjb25kaXRpb246IGB0ZXN0ICEgLWQgLi9zcWwgJiYgJHtlbXB0eURhdGFiYXNlQ29uZGl0aW9ufWAsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKGBBRE1JTl9ST0xFX0lEPSQoZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgaWQgRlJPTSBkaXJlY3R1c19yb2xlcyBXSEVSRSBhZG1pbl9hY2Nlc3MgPSB0cnVlIExJTUlUIDFcIikgJiYgZG9ja2VyIGNvbXBvc2UgcnVuIC0tcm0gZDkgbnB4IGRpcmVjdHVzIHVzZXJzIGNyZWF0ZSAtLWVtYWlsICR7YWRtaW5FbWFpbH0gLS1wYXNzd29yZCB0b3RvdG90byAtLXJvbGUgXCIkQURNSU5fUk9MRV9JRFwiYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHBhc3N3b3JkIHRvdG90b3RvYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIGNyZWF0aW9uYCwge1xuICAgICAgY29uZGl0aW9uOiBgISAke3VzZXJOb3RFeGlzdHNDb25kaXRpb259YCxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIGQ5Jyk7XG4gIH1cblxuICBwcml2YXRlIGFkZENyZWF0ZUFkbWluVXNlclRhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygnY3JlYXRlLWFuLWFkbWluJywge1xuICAgICAgZGVzY3JpcHRpb246ICdDcmVhdGUgYW4gYWRtaW4gdXNlcicsXG4gICAgfSk7XG4gICAgY29uc3QgYWRtaW5FbWFpbCA9ICdhZG1pbkBleGFtcGxlLmNvbSc7XG4gICAgY29uc3QgdXNlck5vdEV4aXN0c0NvbmRpdGlvbiA9IGBkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBjb3VudCgqKSBGUk9NIGRpcmVjdHVzX3VzZXJzIFdIRVJFIGVtYWlsID0gJyR7YWRtaW5FbWFpbH0nXCIgfCBncmVwIC1xICdeMCQnYDtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIC1kIC0td2FpdCBkYXRhYmFzZSBjYWNoZScpO1xuICAgIHRhc2suZXhlYyhgQURNSU5fUk9MRV9JRD0kKGRvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGlkIEZST00gZGlyZWN0dXNfcm9sZXMgV0hFUkUgYWRtaW5fYWNjZXNzID0gdHJ1ZSBMSU1JVCAxXCIpICYmIGRvY2tlciBjb21wb3NlIHJ1biAtLXJtIGQ5IG5weCBkaXJlY3R1cyB1c2VycyBjcmVhdGUgLS1lbWFpbCAke2FkbWluRW1haWx9IC0tcGFzc3dvcmQgdG90b3RvdG8gLS1yb2xlIFwiJEFETUlOX1JPTEVfSURcImAsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBwYXNzd29yZCB0b3RvdG90b2AsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyBjcmVhdGlvbmAsIHtcbiAgICAgIGNvbmRpdGlvbjogYCEgJHt1c2VyTm90RXhpc3RzQ29uZGl0aW9ufWAsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJ1blRhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygncnVuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdzdGFydCB0aGUgZDkgaW5zdGFuY2UnLFxuICAgIH0pO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgdXAgZDknKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRDlQbHVtYmluZ1Rhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygnZDktcGx1bWJpbmcnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1J1biB0aGUgZDktcGx1bWJpbmcgQ0xJIChzYXZlLCBhcHBseS1zY2hlbWEsIGZpcnN0LWltcG9ydC4uLikuIFVzZSAtLWhlbHAgdG8gbGlzdCBhbGwgc3ViY29tbWFuZHMuJyxcbiAgICB9KTtcbiAgICB0YXNrLnNheSgnVGlwOiB5b3UgY2FuIGFsc28gY2FsbCBpdCBkaXJlY3RseSB3aXRoIGBucHggZDktcGx1bWJpbmcgPGNvbW1hbmQ+YCcpO1xuICAgIHRhc2suZXhlYygnbnB4IGQ5LXBsdW1iaW5nIFwiJEBcIicsIHsgcmVjZWl2ZUFyZ3M6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEJ1aWxkRXh0ZW5zaW9uVGFzaygpIHtcbiAgICB0aGlzLmJ1aWxkRXh0ZW5zaW9uVGFzayA9IHRoaXMuYWRkVGFzaygnYnVpbGQtZXh0ZW5zaW9ucycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgdGhlIGQ5IGV4dGVuc2lvbnMnLFxuICAgIH0pO1xuICAgIHRoaXMuYnVpbGRFeHRlbnNpb25UYXNrLmV4ZWMoYGNkICR7dGhpcy5leHRlbnNpb25Gb2xkZXJ9ICYmIHBucG0gaW5zdGFsbGApO1xuICAgIC8vIHByb2plbiByZXBsYWNlcyBcIiRAXCIgd2l0aCB0aGUgcXVvdGVkIHRhc2sgYXJnczsgYHNldCAtLWAgdHVybnMgdGhlbSBiYWNrIGludG8gJDFcbiAgICB0aGlzLmJ1aWxkRXh0ZW5zaW9uVGFzay5leGVjKFxuICAgICAgYGNkICR7dGhpcy5leHRlbnNpb25Gb2xkZXJ9ICYmIHNldCAtLSBcIiRAXCIgJiYgaWYgWyAtbiBcIiQxXCIgXTsgdGhlbiBwbnBtIC0tcmVjdXJzaXZlIC0tZmlsdGVyIFwiJDEuLi5cIiBydW4gYnVpbGQ7IGVsc2UgcG5wbSBydW4gLS1yZWN1cnNpdmUgYnVpbGQ7IGZpYCxcbiAgICAgIHsgcmVjZWl2ZUFyZ3M6IHRydWUgfSxcbiAgICApO1xuICB9XG5cblxuICBwcml2YXRlIGFkZERvY2tlckNvbXBvc2UoKSB7XG4gICAgY29uc3QgZGMgPSBuZXcgRG9ja2VyQ29tcG9zZSh0aGlzKTtcblxuICAgIHRoaXMuZGF0YWJhc2VTZXJ2aWNlID0gZGMuYWRkU2VydmljZSgnZGF0YWJhc2UnLCB7XG4gICAgICBpbWFnZTogJ3Bvc3RnaXMvcG9zdGdpczoxMy1tYXN0ZXInLFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLm5hbWVkVm9sdW1lKCdwZ2RhdGEnLCAnL3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJyksXG4gICAgICBdLFxuICAgICAgcG9ydHM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyg1NDMyLCA1NDMyKSxcbiAgICAgIF0sXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQT1NUR1JFU19VU0VSOiAnZDknLFxuICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogJ2Q5JyxcbiAgICAgICAgUE9TVEdSRVNfREI6ICdkOScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYWNoZVNlcnZpY2UgPSBkYy5hZGRTZXJ2aWNlKCdjYWNoZScsIHtcbiAgICAgIGltYWdlOiAncmVkaXM6NicsXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UubmFtZWRWb2x1bWUoJ3JlZGlzX3N0b3JhZ2UnLCAnL2RhdGEnKSxcbiAgICAgIF0sXG4gICAgICBwb3J0czogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLnBvcnRNYXBwaW5nKDYzNzksIDYzNzkpLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMuZDlTZXJ2aWNlID0gZGMuYWRkU2VydmljZSgnZDknLCB7XG4gICAgICBpbWFnZUJ1aWxkOiB7IGNvbnRleHQ6ICcuJyB9LFxuICAgICAgcG9ydHM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyg4MDU1LCA4MDU1KSxcbiAgICAgIF0sXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgnLi91cGxvYWRzJywgJy9hcHAvdXBsb2FkcycpLFxuICAgICAgICBEb2NrZXJDb21wb3NlLmJpbmRWb2x1bWUoJy4vZXh0ZW5zaW9ucycsICcvYXBwL2V4dGVuc2lvbnMnKSxcbiAgICAgIF0sXG4gICAgICAvLyBkZXBlbmRzT24gaXMgc2V0IHZpYSBhZGRPdmVycmlkZSBiZWxvdyB3aXRoIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBLRVk6ICdzb21lLXJhbmRvbS1rZXknLFxuICAgICAgICBTRUNSRVQ6ICdhbm90aGVyLXJhbmRvbS1rZXknLFxuICAgICAgICBDT05GSUdfUEFUSDogJy5lbnYubG9jYWwnLFxuICAgICAgICBEQl9DTElFTlQ6ICdwZycsXG4gICAgICAgIERCX0hPU1Q6ICdkYXRhYmFzZScsXG4gICAgICAgIERCX1BPUlQ6ICc1NDMyJyxcbiAgICAgICAgREJfREFUQUJBU0U6ICdkOScsXG4gICAgICAgIERCX1VTRVI6ICdkOScsXG4gICAgICAgIERCX1BBU1NXT1JEOiAnZDknLFxuICAgICAgICBDQUNIRV9FTkFCTEVEOiAnZmFsc2UnLFxuICAgICAgICBDQUNIRV9TVE9SRTogJ3JlZGlzJyxcbiAgICAgICAgQ0FDSEVfUkVESVNfSE9TVDogJ2NhY2hlJyxcbiAgICAgICAgTUVTU0VOR0VSX1NUT1JFOiAncmVkaXMnLFxuICAgICAgICBNRVNTRU5HRVJfUkVESVM6ICdyZWRpczovL2NhY2hlOjYzNzknLFxuICAgICAgICBDQUNIRV9TVEFUVVNfSEVBREVSOiAnY2FjaGUtaGl0JyxcbiAgICAgICAgQ09SU19FTkFCTEVEOiAndHJ1ZScsXG4gICAgICAgIENPUlNfT1JJR0lOOiAndHJ1ZScsXG4gICAgICAgIExPR19MRVZFTDogJ2luZm8nLFxuICAgICAgICBBRE1JTl9FTUFJTDogJ2FkbWluQGV4YW1wbGUuY29tJyxcbiAgICAgICAgQURNSU5fUEFTU1dPUkQ6ICd0b3RvdG90bycsXG4gICAgICAgIEVYVEVOU0lPTlNfQVVUT19SRUxPQUQ6ICd0cnVlJyxcbiAgICAgICAgVkFMSURBVEVfRU5USVRJRVNfVE9LRU5TX0FQSV9LRVk6ICd0b3RvJyxcbiAgICAgICAgQVdTX0tNU19LRVlfSUQ6ICd0dXR1JyxcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBbJ3NoJywgJy1jJywgJ25weCBkaXJlY3R1cyBzdGFydCddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kOVNlcnZpY2UuYWRkVm9sdW1lKERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgnLi8uZW52LmxvY2FsJywgJy9hcHAvLmVudi5sb2NhbCcpKTtcblxuICAgIC8vIEFkZCBoZWFsdGhjaGVjayBmb3IgZGF0YWJhc2UgKG5vdCBuYXRpdmVseSBzdXBwb3J0ZWQgYnkgcHJvamVuIERvY2tlckNvbXBvc2UpXG4gICAgZGMuZmlsZS5hZGRPdmVycmlkZSgnc2VydmljZXMuZGF0YWJhc2UuaGVhbHRoY2hlY2snLCB7XG4gICAgICB0ZXN0OiBbJ0NNRCcsICdwZ19pc3JlYWR5JywgJy0taG9zdD1sb2NhbGhvc3QnLCAnLS11c2VybmFtZT1kOSddLFxuICAgICAgaW50ZXJ2YWw6ICcxMHMnLFxuICAgICAgdGltZW91dDogJzVzJyxcbiAgICAgIHJldHJpZXM6IDUsXG4gICAgICBzdGFydF9pbnRlcnZhbDogJzVzJyxcbiAgICAgIHN0YXJ0X3BlcmlvZDogJzMwcycsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgaGVhbHRoY2hlY2sgZm9yIGNhY2hlXG4gICAgZGMuZmlsZS5hZGRPdmVycmlkZSgnc2VydmljZXMuY2FjaGUuaGVhbHRoY2hlY2snLCB7XG4gICAgICB0ZXN0OiBbJ0NNRC1TSEVMTCcsICdbICQocmVkaXMtY2xpIHBpbmcpID0gXFwnUE9OR1xcJyBdJ10sXG4gICAgICBpbnRlcnZhbDogJzEwcycsXG4gICAgICB0aW1lb3V0OiAnNXMnLFxuICAgICAgcmV0cmllczogNSxcbiAgICAgIHN0YXJ0X2ludGVydmFsOiAnNXMnLFxuICAgICAgc3RhcnRfcGVyaW9kOiAnMzBzJyxcbiAgICB9KTtcblxuICAgIC8vIE92ZXJyaWRlIGRlcGVuZHNfb24gdG8gdXNlIGNvbmRpdGlvbiBzeW50YXhcbiAgICBkYy5maWxlLmFkZE92ZXJyaWRlKCdzZXJ2aWNlcy5kOS5kZXBlbmRzX29uJywge1xuICAgICAgY2FjaGU6IHsgY29uZGl0aW9uOiAnc2VydmljZV9oZWFsdGh5JyB9LFxuICAgICAgZGF0YWJhc2U6IHsgY29uZGl0aW9uOiAnc2VydmljZV9oZWFsdGh5JyB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5kb2NrZXJDb21wb3NlRmlsZSA9IGRjO1xuXG4gICAgcmV0dXJuIGRjO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTYXZlQnJhbmNoV29ya2Zsb3coKSB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLmdpdGh1YkNvbmZpZyEuYWRkV29ya2Zsb3coJ3NhdmUtYnJhbmNoJyk7XG4gICAgd29ya2Zsb3cub24oeyBwdXNoOiB7IGJyYW5jaGVzOiBbJyotc2F2ZSddIH0gfSk7XG4gICAgd29ya2Zsb3cuYWRkSm9iKCdjcmVhdGUtcHInLCB7XG4gICAgICBuYW1lOiAnQ3JlYXRlIFB1bGwgUmVxdWVzdCcsXG4gICAgICBydW5zT246IFsndWJ1bnR1LWxhdGVzdCddLFxuICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgcHVsbFJlcXVlc3RzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHsgbmFtZTogJ0NoZWNrb3V0JywgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ3JlYXRlIFB1bGwgUmVxdWVzdCcsXG4gICAgICAgICAgcnVuOiAnZ2ggcHIgY3JlYXRlIC0tdGl0bGUgXCJTYXZlOiAke0dJVEhVQl9SRUZfTkFNRSUtc2F2ZX1cIiAtLWJvZHkgXCJBdXRvLWdlbmVyYXRlZCBQUiBmcm9tIGJyYW5jaCBcXFxcYCR7R0lUSFVCX1JFRl9OQU1FJS1zYXZlfVxcXFxgXCIgLS1iYXNlIFwiJHtHSVRIVUJfUkVGX05BTUUlLXNhdmV9XCIgfHwgZWNobyBcIlBSIGFscmVhZHkgZXhpc3RzXCInLFxuICAgICAgICAgIGVudjogeyBHSF9UT0tFTjogJyR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fScgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZERvY2tlcmZpbGUoKSB7XG4gICAgdGhpcy5kb2NrZXJmaWxlID0gbmV3IERvY2tlcmZpbGUodGhpcylcbiAgICAgIC5mcm9tKCdub2RlJywgJzIyLWJvb2t3b3JtLXNsaW0nKVxuICAgICAgLnN0ZXAoJ3VwZGF0ZS1ucG0nLCAnVXBkYXRlIG5wbSB0byBmaXggZGVwZW5kZW5jaWVzJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIG5wbUAxMS44LjAnKVxuICAgICAgLnN0ZXAoJ2luc3RhbGwtcG5wbScsICdpbnN0YWxsIHBucG0nKVxuICAgICAgLnJ1bignbnBtIGluc3RhbGwgLWcgcG5wbUAxMC4zMy4wJylcbiAgICAgIC5zdGVwKCdjb3B5LXBhY2thZ2UnLCAnQ29weSBwYWNrYWdlLmpzb24gYW5kIHBhY2thZ2UtbG9jay5qc29uIGZpcnN0IHRvIGxldmVyYWdlIERvY2tlciBsYXllciBjYWNoaW5nJylcbiAgICAgIC5jb3B5KCdwYWNrYWdlKi5qc29uJywgJy9hcHAvJylcbiAgICAgIC5zdGVwKCd3b3JrZGlyJywgJ1NldCB3b3JraW5nIGRpcmVjdG9yeScpXG4gICAgICAud29ya2RpcignL2FwcCcpXG4gICAgICAuc3RlcCgnaW5zdGFsbC1kZXBzJywgJ0luc3RhbGwgZGVwZW5kZW5jaWVzIC0gd2l0aG91dCBkZXYgZGVwZW5kZW5jaWVzJylcbiAgICAgIC5ydW4oJ05PREVfRU5WPXByb2R1Y3Rpb24gbnBtIGluc3RhbGwnKVxuICAgICAgLnN0ZXAoJ2NsZWFudXAnLCAnQ2xlYW5pbmcgYmVuY2htYXJrcyBmb2xkZXIgaW4gdGVkaW91cyBtb2R1bGUgZm9yIHNlY3VyaXR5JylcbiAgICAgIC5ydW4oJ3JtIC1yZiBub2RlX21vZHVsZXMvdGVkaW91cy9iZW5jaG1hcmtzJylcbiAgICAgIC5zdGVwKCdjb3B5LXNvdXJjZScsICdDb3B5IHRoZSByZXN0IG9mIHRoZSBhcHBsaWNhdGlvbiBjb2RlJylcbiAgICAgIC5jb3B5KCcuJywgJy4nKVxuICAgICAgLnN0ZXAoJ2J1aWxkLWV4dGVuc2lvbicsICdidWlsZCBleHRlbnNpb25zJylcbiAgICAgIC5ydW4oJ25weCBwcm9qZW4gYnVpbGQtZXh0ZW5zaW9ucycpXG4gICAgICAuc3RlcCgnc3RhcnQnLCAnU3RhcnQgZDkgc2VydmVyJylcbiAgICAgIC5jbWRFeGVjKFsnbnB4JywgJ2RpcmVjdHVzJywgJ3N0YXJ0J10pO1xuICAgIHJldHVybiB0aGlzLmRvY2tlcmZpbGU7XG4gIH1cblxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgRDlQcm9qZWN0T3B0aW9uc30gaW5zdGVhZC4gVGhlIHBhY2thZ2Ugd2FzIHJlbmFtZWQgdG8gYEB3YmNlL3Byb2plbi1kOWAgdG8gcmVmbGVjdCB0aGF0IGl0IHRhcmdldHMgdGhlIGQ5IGZvcmssIG5vdCB1cHN0cmVhbSBEaXJlY3R1cy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3R1c1Byb2plY3RPcHRpb25zIGV4dGVuZHMgRDlQcm9qZWN0T3B0aW9ucyB7fVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgRDlQcm9qZWN0fSBpbnN0ZWFkLiBUaGUgcGFja2FnZSB3YXMgcmVuYW1lZCB0byBgQHdiY2UvcHJvamVuLWQ5YCB0byByZWZsZWN0IHRoYXQgaXQgdGFyZ2V0cyB0aGUgZDkgZm9yaywgbm90IHVwc3RyZWFtIERpcmVjdHVzLlxuICovXG5leHBvcnQgY2xhc3MgRGlyZWN0dXNQcm9qZWN0IGV4dGVuZHMgRDlQcm9qZWN0IHt9XG4iXX0=
350
+ DirectusProject[_b] = { fqn: "@wbce/projen-d9.DirectusProject", version: "0.1.3" };
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtRUFBa0c7QUFDbEcsdURBQW9GO0FBQ3BGLG1DQUFzSjtBQUN0Six1RUFBa0U7QUFDbEUsc0RBQW9FO0FBb0VwRSxNQUFhLFNBQVUsU0FBUSxtQkFBVSxDQUFDLFdBQVc7SUFjbkQsWUFBc0IsT0FBeUI7UUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLE9BQU8sQ0FBQztRQUMvRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDM0UsTUFBTSxFQUFFLEtBQUssRUFBRSxzQ0FBc0M7WUFDckQsV0FBVyxFQUFFLElBQUk7WUFDakIsa0JBQWtCLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRTtvQkFDZixRQUFRLEVBQUUsd0NBQTJCLENBQUMsS0FBSztpQkFDNUM7YUFDRjtZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUk7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDUixLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ25CLEVBQUU7b0JBQ0YsZ1BBQWdQO29CQUNoUCxFQUFFO29CQUNGLHNCQUFzQjtvQkFDdEIsRUFBRTtvQkFDRixPQUFPO29CQUNQLGdEQUFnRDtvQkFDaEQsOERBQThEO29CQUM5RCxLQUFLO29CQUNMLEVBQUU7b0JBQ0YscUlBQXFJO29CQUNySSxFQUFFO29CQUNGLFdBQVc7b0JBQ1gsRUFBRTtvQkFDRixtRkFBbUY7b0JBQ25GLEVBQUU7b0JBQ0YsT0FBTztvQkFDUCw0Q0FBNEM7b0JB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QUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO2FBQzVELElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7YUFDaEMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxtQkFBVSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0csT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7O0FBalhILDhCQW1YQzs7O0FBUUQ7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsU0FBUzs7QUFBOUMsMENBQWlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkRXh0ZW5zaW9uT3B0aW9ucywgRDlFeHRlbnNpb25UeXBlLCBFeHRlbnNpb25Gb2xkZXIgfSBmcm9tICdAd2JjZS9wcm9qZW4tZDktZXh0ZW5zaW9uJztcbmltcG9ydCB7IEdpdEh1YkNvbmZpZywgR2l0SHViQ29uZmlnT3B0aW9ucywgRG9ja2VyZmlsZSB9IGZyb20gJ0B3YmNlL3Byb2plbi1zaGFyZWQnO1xuaW1wb3J0IHsgQWlBZ2VudCwgQWlJbnN0cnVjdGlvbnMsIERvY2tlckNvbXBvc2UsIERvY2tlckNvbXBvc2VTZXJ2aWNlLCBJZ25vcmVGaWxlLCBqYXZhc2NyaXB0LCBKc29uRmlsZSwgU2FtcGxlRmlsZSwgVGFzaywgdHlwZXNjcmlwdCB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsJztcbmltcG9ydCB7IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZSB9IGZyb20gJ3Byb2plbi9saWIvamF2YXNjcmlwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVZlcnNpb25zIHtcbiAgcmVhZG9ubHkgZDk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgQXRsYXMgYmluYXJ5IGRvd25sb2FkZWQgYnkgZDktcGx1bWJpbmcuXG4gICAqIEBkZWZhdWx0IFwiMS4zLjNcIlxuICAgKi9cbiAgcmVhZG9ubHkgYXRsYXM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3RvcmFnZSBzaGFyZWQgYmV0d2VlbiBlbnZpcm9ubWVudHMsIHVzZWQgYnkgYGQ5LXBsdW1iaW5nIHNhdmVgIGFuZCBgZDktcGx1bWJpbmcgYXBwbHktc2NoZW1hYCB0byB0cmFuc2ZlciBmaWxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm1lZGlhdGVTdG9yYWdlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc3RvcmFnZSBkcml2ZXI6IHMzLCBnY3MsIGF6dXJlLCBsb2NhbCBvciBjbG91ZGluYXJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgZHJpdmVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOb24tc2VjcmV0IGRyaXZlciBvcHRpb25zIChyb290LCBidWNrZXQsIHJlZ2lvbiwgZW5kcG9pbnQuLi4pLlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBTZWNyZXQgZHJpdmVyIG9wdGlvbnMsIG1hcHBpbmcgZWFjaCBvcHRpb24gbmFtZSB0byB0aGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaG9sZGluZyBpdHMgdmFsdWUuXG4gICAqIE9ubHkgdGhlIHZhcmlhYmxlIG5hbWUgaXMgd3JpdHRlbiB0byBgZDktcGx1bWJpbmcuanNvbmAsIG5ldmVyIHRoZSB2YWx1ZTogaXQgaXMgcmVhZCBmcm9tIHRoZSBlbnZpcm9ubWVudCAob3IgYC5lbnZgKSBhdCBydW50aW1lLlxuICAgKiBAZXhhbXBsZSB7IGtleTogJ1MzX0FDQ0VTU19LRVlfSURfRU5WX1ZBUicsIHNlY3JldDogJ1MzX1NFQ1JFVF9BQ0NFU1NfS0VZX0VOVl9WQVInIH0gLy8gdGhlIGBzZWNyZXRgIG9wdGlvbiBpcyByZWFkIGZyb20gJFMzX1NFQ1JFVF9BQ0NFU1NfS0VZX0VOVl9WQVJcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldEVudj86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvZiB0aGUgZDktcGx1bWJpbmcgQ0xJLCB3cml0dGVuIHRvIGBkOS1wbHVtYmluZy5qc29uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVtYmluZ09wdGlvbnMge1xuICAvKipcbiAgICogU3RvcmFnZSBzaGFyZWQgYmV0d2VlbiBlbnZpcm9ubWVudHMuXG4gICAqIEBkZWZhdWx0IC0gbm9uZSwgdGhlIGludGVybWVkaWF0ZSBzdG9yYWdlIGlzIGNvbmZpZ3VyZWQgd2l0aCBJTlRFUk1FRElBVEVfU1RPUkFHRV8qIHZhcmlhYmxlcyBvciBmbGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJtZWRpYXRlU3RvcmFnZT86IEludGVybWVkaWF0ZVN0b3JhZ2VPcHRpb25zO1xuICAvKipcbiAgICogRGVmYXVsdCBsb2cgbGV2ZWwgb2YgdGhlIENMSSwgb3ZlcnJpZGRlbiBieSB0aGUgTE9HX0xFVkVMIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAZGVmYXVsdCBcImRlYnVnXCJcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0xldmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZDkgZm9sZGVyIGtlcHQgaW4gdGhlIHNuYXBzaG90LCBvdmVycmlkZGVuIGJ5IHRoZSBDT01NT05fRk9MREVSX05BTUUgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqIEBkZWZhdWx0IFwiZDktcGx1bWJpbmctY29tbW9uXCJcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1vbkZvbGRlck5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRDlQcm9qZWN0T3B0aW9ucyBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHRoZSBHaXRIdWIgY29uZmlndXJhdGlvbi5cbiAgICogU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgR2l0SHViIGNvbmZpZyBlbnRpcmVseS5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IEdpdEh1YkNvbmZpZyB3aXRoIHByb2plY3QgZGVmYXVsdHNcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YkNvbmZpZz86IEdpdEh1YkNvbmZpZ09wdGlvbnMgfCBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbnMgZm9sZGVyLlxuICAgKiBAZGVmYXVsdCBcImV4dGVuc2lvbi1wYWNrYWdlc1wiXG4gICAqL1xuICByZWFkb25seSBleHRlbnNpb25zRm9sZGVyTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcGFja2FnZVZlcnNpb25zPzogUGFja2FnZVZlcnNpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgRDlQcm9qZWN0IGV4dGVuZHMgamF2YXNjcmlwdC5Ob2RlUHJvamVjdCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGdpdGh1YkNvbmZpZz86IEdpdEh1YkNvbmZpZztcbiAgcHVibGljIGV4dGVuc2lvbnMhOiBFeHRlbnNpb25Gb2xkZXI7XG4gIHB1YmxpYyBleHRlbnNpb25Gb2xkZXIhOiBzdHJpbmc7XG4gIHB1YmxpYyBidWlsZEV4dGVuc2lvblRhc2shOiBUYXNrO1xuICBwdWJsaWMgZG9ja2VyZmlsZSE6IERvY2tlcmZpbGU7XG4gIHB1YmxpYyBkb2NrZXJpZ25vcmUhOiBJZ25vcmVGaWxlO1xuICBwdWJsaWMgZG9ja2VyQ29tcG9zZUZpbGUhOiBEb2NrZXJDb21wb3NlO1xuICBwdWJsaWMgZDlTZXJ2aWNlITogRG9ja2VyQ29tcG9zZVNlcnZpY2U7XG4gIHB1YmxpYyBkYXRhYmFzZVNlcnZpY2UhOiBEb2NrZXJDb21wb3NlU2VydmljZTtcbiAgcHVibGljIGNhY2hlU2VydmljZSE6IERvY2tlckNvbXBvc2VTZXJ2aWNlO1xuICBwcml2YXRlIHBsdW1iaW5nQ29uZmlnITogSnNvbkZpbGU7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9wdGlvbnM6IEQ5UHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkOVZlcnNpb24gPSBvcHRpb25zLnBhY2thZ2VWZXJzaW9ucz8uZDkgfHwgJzEyLjAuMTUnO1xuICAgIGNvbnN0IGF0bGFzVmVyc2lvbiA9IG9wdGlvbnMucGFja2FnZVZlcnNpb25zPy5hdGxhcyB8fCAnMS4zLjMnO1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBwYWNrYWdlTWFuYWdlcjogb3B0aW9ucy5wYWNrYWdlTWFuYWdlciA/PyBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5OUE0sXG4gICAgICBnaXRodWI6IGZhbHNlLCAvLyBXZSB1c2Ugb3VyIG93biBHaXRIdWJDb25maWcgaW5zdGVhZFxuICAgICAgZGVwc1VwZ3JhZGU6IHRydWUsXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHtcbiAgICAgICAgd29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgICAgc2NoZWR1bGU6IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZS5EQUlMWSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsaWNlbnNlZDogZmFsc2UsXG4gICAgICByZWFkbWU6IG9wdGlvbnMucmVhZG1lID8/IHtcbiAgICAgICAgY29udGVudHM6IFtcbiAgICAgICAgICBgIyAke29wdGlvbnMubmFtZX1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdBIFtkOV0oaHR0cHM6Ly9naXRodWIuY29tL0xhV2ViY2Fwc3VsZS9kOSkgKERpcmVjdHVzIDkgZm9yaykgcHJvamVjdCBzY2FmZm9sZGVkIHdpdGggW2BAd2JjZS9wcm9qZW4tZDlgXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ad2JjZS9wcm9qZW4tZDkpLiBEZXZlbG9wIGxvY2FsbHkgYWdhaW5zdCBEb2NrZXIgQ29tcG9zZSwgdGhlbiBidWlsZCBhIERvY2tlciBpbWFnZSB0byBkZXBsb3kgYW55d2hlcmUuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgTG9jYWwgZGV2ZWxvcG1lbnQnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdgYGBzaCcsXG4gICAgICAgICAgJ25weCBwcm9qZW4gaW5zdGFsbCAgICAgICMgaW5zdGFsbCBkZXBlbmRlbmNpZXMnLFxuICAgICAgICAgICducHggcHJvamVuIGZpcnN0LXJ1biAgICAjIGJvb3Qgc3RhY2ssIGNyZWF0ZSBhZG1pbiwgc3RhcnQgZDknLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdPcGVuIGh0dHA6Ly9sb2NhbGhvc3Q6ODA1NSBhbmQgc2lnbiBpbiBhcyBgYWRtaW5AZXhhbXBsZS5jb21gIC8gYHRvdG90b3RvYC4gRXh0ZW5zaW9ucyBhdXRvLXJlbG9hZCAoYEVYVEVOU0lPTlNfQVVUT19SRUxPQUQ9dHJ1ZWApLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIERlcGxveScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0EgYERvY2tlcmZpbGVgIGlzIGluY2x1ZGVkLiBCdWlsZCBhbmQgcHVzaCB0aGUgaW1hZ2UgZm9yIHlvdXIgdGFyZ2V0IGVudmlyb25tZW50OicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2BgYHNoJyxcbiAgICAgICAgICAnZG9ja2VyIGJ1aWxkIC10IDxyZWdpc3RyeT4vPGltYWdlPjo8dGFnPiAuJyxcbiAgICAgICAgICAnZG9ja2VyIHB1c2ggPHJlZ2lzdHJ5Pi88aW1hZ2U+Ojx0YWc+JyxcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnQ29uZmlndXJlIHRoZSBkZXBsb3llZCBpbnN0YW5jZSB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZGF0YWJhc2UsIGNhY2hlLCBzZWNyZXRzKSDigJQgc2VlIHRoZSBkOSBkb2NzLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIENvbW1vbiB0YXNrcycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ3wgVGFzayB8IERlc2NyaXB0aW9uIHwnLFxuICAgICAgICAgICd8IC0tLSB8IC0tLSB8JyxcbiAgICAgICAgICAnfCBgbnB4IHByb2plbiBydW5gIHwgU3RhcnQgZDkgKGBkb2NrZXIgY29tcG9zZSB1cCBkOWApIHwnLFxuICAgICAgICAgICd8IGBucHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnMgW25hbWVdYCB8IEluc3RhbGwgYW5kIGJ1aWxkIGFsbCBleHRlbnNpb25zIChvciBvbmx5IGBuYW1lYCkgfCcsXG4gICAgICAgICAgJ3wgYG5weCBwcm9qZW4gY3JlYXRlLWFuLWFkbWluYCB8IENyZWF0ZSB0aGUgZGVmYXVsdCBhZG1pbiB1c2VyIHwnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdTZWUgYC5wcm9qZW4vdGFza3MuanNvbmAgZm9yIHRoZSBmdWxsIGxpc3QuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgQ29uZmlndXJhdGlvbicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0VkaXQgYC5wcm9qZW5yYy5qc2AgYW5kIHJ1biBgbnB4IHByb2plbmAgdG8gcmVnZW5lcmF0ZSBwcm9qZWN0IGZpbGVzLiBMb2NhbCBlbnZpcm9ubWVudCBvdmVycmlkZXMgZ28gaW4gYC5lbnYubG9jYWxgLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIEV4dGVuc2lvbnMnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdFeHRlbnNpb25zIGxpdmUgdW5kZXIgYC4vcGx1Z2lucy9gLiBBZGQgbmV3IG9uZXMgaW4gYC5wcm9qZW5yYy5qc2A6JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnYGBganMnLFxuICAgICAgICAgIFwiaW1wb3J0IHsgRDlFeHRlbnNpb25UeXBlIH0gZnJvbSAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbic7XCIsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgXCJwcm9qZWN0LmFkZEV4dGVuc2lvbignbXktaG9vaycsIFtEOUV4dGVuc2lvblR5cGUuSE9PS10pO1wiLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdUaGVuIGBucHggcHJvamVuICYmIG5weCBwcm9qZW4gYnVpbGQtZXh0ZW5zaW9uc2AuJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgICdAd2JjZS9wcm9qZW4tZDknLFxuICAgICAgICAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbicsXG4gICAgICAgIC4uLihvcHRpb25zLmRldkRlcHMgPz8gW10pLFxuICAgICAgXSxcbiAgICAgIGRlcHM6IFtgQHdiY2UtZDkvZGlyZWN0dXM5QCR7ZDlWZXJzaW9ufWBdLFxuICAgIH0pO1xuXG4gICAgLy8gTm8gdHNjb25maWcgbWVhbnMgbm8gdHNjIC0tYnVpbGQgaW4gY29tcGlsZVxuICAgIHRoaXMuY29tcGlsZVRhc2sucmVzZXQoKTtcblxuICAgIHRoaXMucGx1bWJpbmdDb25maWcgPSBuZXcgSnNvbkZpbGUodGhpcywgJ2Q5LXBsdW1iaW5nLmpzb24nLCB7XG4gICAgICBvYmo6IHsgYXRsYXNWZXJzaW9uIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV4dGVuc2lvbkZvbGRlcigpO1xuICAgIHRoaXMuYWRkRG9ja2VyQ29tcG9zZSgpO1xuICAgIHRoaXMuYWRkRmlyc3RSdW5UYXNrKCk7XG4gICAgdGhpcy5hZGRCdWlsZEV4dGVuc2lvblRhc2soKTtcbiAgICB0aGlzLmFkZFJ1blRhc2soKTtcbiAgICB0aGlzLmFkZEQ5UGx1bWJpbmdUYXNrKCk7XG4gICAgdGhpcy5hZGREb2NrZXJmaWxlKCk7XG4gICAgdGhpcy5hZGRDcmVhdGVBZG1pblVzZXJUYXNrKCk7XG5cbiAgICBuZXcgQWlJbnN0cnVjdGlvbnModGhpcywge1xuICAgICAgYWdlbnRzOiBbQWlBZ2VudC5DTEFVREVdLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMuZ2l0aHViQ29uZmlnICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5naXRodWJDb25maWcgPSBuZXcgR2l0SHViQ29uZmlnKHRoaXMsIG9wdGlvbnMuZ2l0aHViQ29uZmlnKTtcbiAgICAgIHRoaXMuYWRkU2F2ZUJyYW5jaFdvcmtmbG93KCk7XG4gICAgfVxuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKCd1cGxvYWRzJyk7XG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoJyoqLy5EU19TdG9yZScpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKCcuZW52LmxvY2FsJyk7XG5cbiAgICAvLyBDcmVhdGUgYW4gZW1wdHkgLmVudi5sb2NhbCBpZiBpdCBkb2Vzbid0IGV4aXN0LCBzbyBEb2NrZXIgZG9lc24ndCBtb3VudCBhIGRpcmVjdG9yeVxuICAgIG5ldyBTYW1wbGVGaWxlKHRoaXMsICcuZW52LmxvY2FsJywgeyBjb250ZW50czogJyMgTG9jYWwgZW52aXJvbm1lbnQgb3ZlcnJpZGVzIGZvciBkOScgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEV4dGVuc2lvbkZvbGRlcigpIHtcbiAgICBjb25zdCBmb2xkZXJOYW1lID0gdGhpcy5vcHRpb25zLmV4dGVuc2lvbnNGb2xkZXJOYW1lID8/ICdwbHVnaW5zJztcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBuZXcgRXh0ZW5zaW9uRm9sZGVyKHsgcGFyZW50OiB0aGlzLCBuYW1lOiBmb2xkZXJOYW1lIH0pO1xuICAgIHRoaXMuZXh0ZW5zaW9uRm9sZGVyID0gZm9sZGVyTmFtZTtcbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCdleHRlbnNpb25zLyonKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5pbmNsdWRlKCdleHRlbnNpb25zL3RlbXBsYXRlcy8nKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRFeHRlbnNpb24obmFtZTogc3RyaW5nLCBleHRlbnNpb25UeXBlczogRDlFeHRlbnNpb25UeXBlW10sIG9wdGlvbnM/OiBBZGRFeHRlbnNpb25PcHRpb25zICkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuYWRkKG5hbWUsIGV4dGVuc2lvblR5cGVzLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVQbHVtYmluZyhvcHRpb25zOiBQbHVtYmluZ09wdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zKSkge1xuICAgICAgdGhpcy5wbHVtYmluZ0NvbmZpZy5hZGRPdmVycmlkZShrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZpcnN0UnVuVGFzaygpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRUYXNrKCdmaXJzdC1ydW4nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0luaXRpYWxpemUgYW5kIHN0YXJ0IGEgZnJlc2ggZDkgaW5zdGFuY2UnLFxuICAgIH0pO1xuICAgIGNvbnN0IGFkbWluRW1haWwgPSAnYWRtaW5AZXhhbXBsZS5jb20nO1xuICAgIGNvbnN0IHVzZXJOb3RFeGlzdHNDb25kaXRpb24gPSBgZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgY291bnQoKikgRlJPTSBkaXJlY3R1c191c2VycyBXSEVSRSBlbWFpbCA9ICcke2FkbWluRW1haWx9J1wiIHwgZ3JlcCAtcSAnXjAkJ2A7XG4gICAgY29uc3QgZW1wdHlEYXRhYmFzZUNvbmRpdGlvbiA9ICdkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBjb3VudCgqKSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgV0hFUkUgdGFibGVfbmFtZSBMSUtFIFxcJ2RpcmVjdHVzXyVcXCdcIiB8IGdyZXAgLXEgXFwnXjAkXFwnJztcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIC1kIC0td2FpdCBkYXRhYmFzZSBjYWNoZScpO1xuICAgIHRhc2suZXhlYygnbnB4IGQ5LXBsdW1iaW5nIGZpcnN0LWltcG9ydCAtLWhvc3QgbG9jYWxob3N0IC0tdXNlciBkOSAtLXBhc3N3b3JkIGQ5IC0tZGF0YWJhc2UgZDknLCB7XG4gICAgICBjb25kaXRpb246ICd0ZXN0IC1kIC4vc3FsJyxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHJ1biAtLXJtIGQ5IG5weCBkaXJlY3R1cyBib290c3RyYXAnLCB7XG4gICAgICBjb25kaXRpb246IGB0ZXN0ICEgLWQgLi9zcWwgJiYgJHtlbXB0eURhdGFiYXNlQ29uZGl0aW9ufWAsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKGBBRE1JTl9ST0xFX0lEPSQoZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgaWQgRlJPTSBkaXJlY3R1c19yb2xlcyBXSEVSRSBhZG1pbl9hY2Nlc3MgPSB0cnVlIExJTUlUIDFcIikgJiYgZG9ja2VyIGNvbXBvc2UgcnVuIC0tcm0gZDkgbnB4IGRpcmVjdHVzIHVzZXJzIGNyZWF0ZSAtLWVtYWlsICR7YWRtaW5FbWFpbH0gLS1wYXNzd29yZCB0b3RvdG90byAtLXJvbGUgXCIkQURNSU5fUk9MRV9JRFwiYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHBhc3N3b3JkIHRvdG90b3RvYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIGNyZWF0aW9uYCwge1xuICAgICAgY29uZGl0aW9uOiBgISAke3VzZXJOb3RFeGlzdHNDb25kaXRpb259YCxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIGQ5Jyk7XG4gIH1cblxuICBwcml2YXRlIGFkZENyZWF0ZUFkbWluVXNlclRhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygnY3JlYXRlLWFuLWFkbWluJywge1xuICAgICAgZGVzY3JpcHRpb246ICdDcmVhdGUgYW4gYWRtaW4gdXNlcicsXG4gICAgfSk7XG4gICAgY29uc3QgYWRtaW5FbWFpbCA9ICdhZG1pbkBleGFtcGxlLmNvbSc7XG4gICAgY29uc3QgdXNlck5vdEV4aXN0c0NvbmRpdGlvbiA9IGBkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBjb3VudCgqKSBGUk9NIGRpcmVjdHVzX3VzZXJzIFdIRVJFIGVtYWlsID0gJyR7YWRtaW5FbWFpbH0nXCIgfCBncmVwIC1xICdeMCQnYDtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIC1kIC0td2FpdCBkYXRhYmFzZSBjYWNoZScpO1xuICAgIHRhc2suZXhlYyhgQURNSU5fUk9MRV9JRD0kKGRvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGlkIEZST00gZGlyZWN0dXNfcm9sZXMgV0hFUkUgYWRtaW5fYWNjZXNzID0gdHJ1ZSBMSU1JVCAxXCIpICYmIGRvY2tlciBjb21wb3NlIHJ1biAtLXJtIGQ5IG5weCBkaXJlY3R1cyB1c2VycyBjcmVhdGUgLS1lbWFpbCAke2FkbWluRW1haWx9IC0tcGFzc3dvcmQgdG90b3RvdG8gLS1yb2xlIFwiJEFETUlOX1JPTEVfSURcImAsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBwYXNzd29yZCB0b3RvdG90b2AsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyBjcmVhdGlvbmAsIHtcbiAgICAgIGNvbmRpdGlvbjogYCEgJHt1c2VyTm90RXhpc3RzQ29uZGl0aW9ufWAsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJ1blRhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygncnVuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdzdGFydCB0aGUgZDkgaW5zdGFuY2UnLFxuICAgIH0pO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgdXAgZDknKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRDlQbHVtYmluZ1Rhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygnZDktcGx1bWJpbmcnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1J1biB0aGUgZDktcGx1bWJpbmcgQ0xJIChzYXZlLCBhcHBseS1zY2hlbWEsIGZpcnN0LWltcG9ydC4uLikuIFVzZSAtLWhlbHAgdG8gbGlzdCBhbGwgc3ViY29tbWFuZHMuJyxcbiAgICB9KTtcbiAgICB0YXNrLnNheSgnVGlwOiB5b3UgY2FuIGFsc28gY2FsbCBpdCBkaXJlY3RseSB3aXRoIGBucHggZDktcGx1bWJpbmcgPGNvbW1hbmQ+YCcpO1xuICAgIHRhc2suZXhlYygnbnB4IGQ5LXBsdW1iaW5nIFwiJEBcIicsIHsgcmVjZWl2ZUFyZ3M6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEJ1aWxkRXh0ZW5zaW9uVGFzaygpIHtcbiAgICB0aGlzLmJ1aWxkRXh0ZW5zaW9uVGFzayA9IHRoaXMuYWRkVGFzaygnYnVpbGQtZXh0ZW5zaW9ucycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgdGhlIGQ5IGV4dGVuc2lvbnMnLFxuICAgIH0pO1xuICAgIHRoaXMuYnVpbGRFeHRlbnNpb25UYXNrLmV4ZWMoYGNkICR7dGhpcy5leHRlbnNpb25Gb2xkZXJ9ICYmIHBucG0gaW5zdGFsbGApO1xuICAgIC8vIHByb2plbiByZXBsYWNlcyBcIiRAXCIgd2l0aCB0aGUgcXVvdGVkIHRhc2sgYXJnczsgYHNldCAtLWAgdHVybnMgdGhlbSBiYWNrIGludG8gJDFcbiAgICB0aGlzLmJ1aWxkRXh0ZW5zaW9uVGFzay5leGVjKFxuICAgICAgYGNkICR7dGhpcy5leHRlbnNpb25Gb2xkZXJ9ICYmIHNldCAtLSBcIiRAXCIgJiYgaWYgWyAtbiBcIiQxXCIgXTsgdGhlbiBwbnBtIC0tcmVjdXJzaXZlIC0tZmlsdGVyIFwiJDEuLi5cIiBydW4gYnVpbGQ7IGVsc2UgcG5wbSBydW4gLS1yZWN1cnNpdmUgYnVpbGQ7IGZpYCxcbiAgICAgIHsgcmVjZWl2ZUFyZ3M6IHRydWUgfSxcbiAgICApO1xuICB9XG5cblxuICBwcml2YXRlIGFkZERvY2tlckNvbXBvc2UoKSB7XG4gICAgY29uc3QgZGMgPSBuZXcgRG9ja2VyQ29tcG9zZSh0aGlzKTtcblxuICAgIHRoaXMuZGF0YWJhc2VTZXJ2aWNlID0gZGMuYWRkU2VydmljZSgnZGF0YWJhc2UnLCB7XG4gICAgICBpbWFnZTogJ3Bvc3RnaXMvcG9zdGdpczoxMy1tYXN0ZXInLFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLm5hbWVkVm9sdW1lKCdwZ2RhdGEnLCAnL3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJyksXG4gICAgICBdLFxuICAgICAgcG9ydHM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyg1NDMyLCA1NDMyKSxcbiAgICAgIF0sXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQT1NUR1JFU19VU0VSOiAnZDknLFxuICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogJ2Q5JyxcbiAgICAgICAgUE9TVEdSRVNfREI6ICdkOScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYWNoZVNlcnZpY2UgPSBkYy5hZGRTZXJ2aWNlKCdjYWNoZScsIHtcbiAgICAgIGltYWdlOiAncmVkaXM6NicsXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UubmFtZWRWb2x1bWUoJ3JlZGlzX3N0b3JhZ2UnLCAnL2RhdGEnKSxcbiAgICAgIF0sXG4gICAgICBwb3J0czogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLnBvcnRNYXBwaW5nKDYzNzksIDYzNzkpLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMuZDlTZXJ2aWNlID0gZGMuYWRkU2VydmljZSgnZDknLCB7XG4gICAgICBpbWFnZUJ1aWxkOiB7IGNvbnRleHQ6ICcuJyB9LFxuICAgICAgcG9ydHM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyg4MDU1LCA4MDU1KSxcbiAgICAgIF0sXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgnLi91cGxvYWRzJywgJy9hcHAvdXBsb2FkcycpLFxuICAgICAgICBEb2NrZXJDb21wb3NlLmJpbmRWb2x1bWUoJy4vZXh0ZW5zaW9ucycsICcvYXBwL2V4dGVuc2lvbnMnKSxcbiAgICAgIF0sXG4gICAgICAvLyBkZXBlbmRzT24gaXMgc2V0IHZpYSBhZGRPdmVycmlkZSBiZWxvdyB3aXRoIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBLRVk6ICdzb21lLXJhbmRvbS1rZXknLFxuICAgICAgICBTRUNSRVQ6ICdhbm90aGVyLXJhbmRvbS1rZXknLFxuICAgICAgICBDT05GSUdfUEFUSDogJy5lbnYubG9jYWwnLFxuICAgICAgICBEQl9DTElFTlQ6ICdwZycsXG4gICAgICAgIERCX0hPU1Q6ICdkYXRhYmFzZScsXG4gICAgICAgIERCX1BPUlQ6ICc1NDMyJyxcbiAgICAgICAgREJfREFUQUJBU0U6ICdkOScsXG4gICAgICAgIERCX1VTRVI6ICdkOScsXG4gICAgICAgIERCX1BBU1NXT1JEOiAnZDknLFxuICAgICAgICBDQUNIRV9FTkFCTEVEOiAnZmFsc2UnLFxuICAgICAgICBDQUNIRV9TVE9SRTogJ3JlZGlzJyxcbiAgICAgICAgQ0FDSEVfUkVESVNfSE9TVDogJ2NhY2hlJyxcbiAgICAgICAgTUVTU0VOR0VSX1NUT1JFOiAncmVkaXMnLFxuICAgICAgICBNRVNTRU5HRVJfUkVESVM6ICdyZWRpczovL2NhY2hlOjYzNzknLFxuICAgICAgICBDQUNIRV9TVEFUVVNfSEVBREVSOiAnY2FjaGUtaGl0JyxcbiAgICAgICAgQ09SU19FTkFCTEVEOiAndHJ1ZScsXG4gICAgICAgIENPUlNfT1JJR0lOOiAndHJ1ZScsXG4gICAgICAgIExPR19MRVZFTDogJ2luZm8nLFxuICAgICAgICBBRE1JTl9FTUFJTDogJ2FkbWluQGV4YW1wbGUuY29tJyxcbiAgICAgICAgQURNSU5fUEFTU1dPUkQ6ICd0b3RvdG90bycsXG4gICAgICAgIEVYVEVOU0lPTlNfQVVUT19SRUxPQUQ6ICd0cnVlJyxcbiAgICAgICAgVkFMSURBVEVfRU5USVRJRVNfVE9LRU5TX0FQSV9LRVk6ICd0b3RvJyxcbiAgICAgICAgQVdTX0tNU19LRVlfSUQ6ICd0dXR1JyxcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBbJ3NoJywgJy1jJywgJ25weCBkaXJlY3R1cyBzdGFydCddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kOVNlcnZpY2UuYWRkVm9sdW1lKERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgnLi8uZW52LmxvY2FsJywgJy9hcHAvLmVudi5sb2NhbCcpKTtcblxuICAgIC8vIEFkZCBoZWFsdGhjaGVjayBmb3IgZGF0YWJhc2UgKG5vdCBuYXRpdmVseSBzdXBwb3J0ZWQgYnkgcHJvamVuIERvY2tlckNvbXBvc2UpXG4gICAgZGMuZmlsZS5hZGRPdmVycmlkZSgnc2VydmljZXMuZGF0YWJhc2UuaGVhbHRoY2hlY2snLCB7XG4gICAgICB0ZXN0OiBbJ0NNRCcsICdwZ19pc3JlYWR5JywgJy0taG9zdD1sb2NhbGhvc3QnLCAnLS11c2VybmFtZT1kOSddLFxuICAgICAgaW50ZXJ2YWw6ICcxMHMnLFxuICAgICAgdGltZW91dDogJzVzJyxcbiAgICAgIHJldHJpZXM6IDUsXG4gICAgICBzdGFydF9pbnRlcnZhbDogJzVzJyxcbiAgICAgIHN0YXJ0X3BlcmlvZDogJzMwcycsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgaGVhbHRoY2hlY2sgZm9yIGNhY2hlXG4gICAgZGMuZmlsZS5hZGRPdmVycmlkZSgnc2VydmljZXMuY2FjaGUuaGVhbHRoY2hlY2snLCB7XG4gICAgICB0ZXN0OiBbJ0NNRC1TSEVMTCcsICdbICQocmVkaXMtY2xpIHBpbmcpID0gXFwnUE9OR1xcJyBdJ10sXG4gICAgICBpbnRlcnZhbDogJzEwcycsXG4gICAgICB0aW1lb3V0OiAnNXMnLFxuICAgICAgcmV0cmllczogNSxcbiAgICAgIHN0YXJ0X2ludGVydmFsOiAnNXMnLFxuICAgICAgc3RhcnRfcGVyaW9kOiAnMzBzJyxcbiAgICB9KTtcblxuICAgIC8vIE92ZXJyaWRlIGRlcGVuZHNfb24gdG8gdXNlIGNvbmRpdGlvbiBzeW50YXhcbiAgICBkYy5maWxlLmFkZE92ZXJyaWRlKCdzZXJ2aWNlcy5kOS5kZXBlbmRzX29uJywge1xuICAgICAgY2FjaGU6IHsgY29uZGl0aW9uOiAnc2VydmljZV9oZWFsdGh5JyB9LFxuICAgICAgZGF0YWJhc2U6IHsgY29uZGl0aW9uOiAnc2VydmljZV9oZWFsdGh5JyB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5kb2NrZXJDb21wb3NlRmlsZSA9IGRjO1xuXG4gICAgcmV0dXJuIGRjO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTYXZlQnJhbmNoV29ya2Zsb3coKSB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLmdpdGh1YkNvbmZpZyEuYWRkV29ya2Zsb3coJ3NhdmUtYnJhbmNoJyk7XG4gICAgd29ya2Zsb3cub24oeyBwdXNoOiB7IGJyYW5jaGVzOiBbJyotc2F2ZSddIH0gfSk7XG4gICAgd29ya2Zsb3cuYWRkSm9iKCdjcmVhdGUtcHInLCB7XG4gICAgICBuYW1lOiAnQ3JlYXRlIFB1bGwgUmVxdWVzdCcsXG4gICAgICBydW5zT246IFsndWJ1bnR1LWxhdGVzdCddLFxuICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgcHVsbFJlcXVlc3RzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHsgbmFtZTogJ0NoZWNrb3V0JywgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ3JlYXRlIFB1bGwgUmVxdWVzdCcsXG4gICAgICAgICAgcnVuOiAnZ2ggcHIgY3JlYXRlIC0tdGl0bGUgXCJTYXZlOiAke0dJVEhVQl9SRUZfTkFNRSUtc2F2ZX1cIiAtLWJvZHkgXCJBdXRvLWdlbmVyYXRlZCBQUiBmcm9tIGJyYW5jaCBcXFxcYCR7R0lUSFVCX1JFRl9OQU1FJS1zYXZlfVxcXFxgXCIgLS1iYXNlIFwiJHtHSVRIVUJfUkVGX05BTUUlLXNhdmV9XCIgfHwgZWNobyBcIlBSIGFscmVhZHkgZXhpc3RzXCInLFxuICAgICAgICAgIGVudjogeyBHSF9UT0tFTjogJyR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fScgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZERvY2tlcmZpbGUoKSB7XG4gICAgdGhpcy5kb2NrZXJmaWxlID0gbmV3IERvY2tlcmZpbGUodGhpcylcbiAgICAgIC8vIGJ1aWxkZXIgc3RhZ2U6IGRldiBkZXBlbmRlbmNpZXMgYXJlIGluc3RhbGxlZCBzbyBgbnB4IHByb2plbmAgcnVucyB0aGUgdmVyc2lvbiBsb2NrZWQgaW4gcGFja2FnZS1sb2NrLmpzb25cbiAgICAgIC5mcm9tQXMoJ25vZGUnLCAnMjItYm9va3dvcm0tc2xpbScsICdidWlsZGVyJylcbiAgICAgIC5zdGVwKCdidWlsZGVyLXVwZGF0ZS1ucG0nLCAnVXBkYXRlIG5wbSB0byBmaXggZGVwZW5kZW5jaWVzJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIG5wbUAxMS44LjAnKVxuICAgICAgLnN0ZXAoJ2J1aWxkZXItaW5zdGFsbC1wbnBtJywgJ2luc3RhbGwgcG5wbScpXG4gICAgICAucnVuKCducG0gaW5zdGFsbCAtZyBwbnBtQDEwLjMzLjAnKVxuICAgICAgLnN0ZXAoJ2J1aWxkZXItY29weS1wYWNrYWdlJywgJ0NvcHkgcGFja2FnZS5qc29uIGFuZCBwYWNrYWdlLWxvY2suanNvbiBmaXJzdCB0byBsZXZlcmFnZSBEb2NrZXIgbGF5ZXIgY2FjaGluZycpXG4gICAgICAuY29weSgncGFja2FnZSouanNvbicsICcvYXBwLycpXG4gICAgICAuc3RlcCgnYnVpbGRlci13b3JrZGlyJywgJ1NldCB3b3JraW5nIGRpcmVjdG9yeScpXG4gICAgICAud29ya2RpcignL2FwcCcpXG4gICAgICAuc3RlcCgnYnVpbGRlci1pbnN0YWxsLWRlcHMnLCAnSW5zdGFsbCBkZXBlbmRlbmNpZXMgLSB3aXRoIGRldiBkZXBlbmRlbmNpZXMsIGZvciBwcm9qZW4nKVxuICAgICAgLnJ1bignbnBtIGluc3RhbGwnKVxuICAgICAgLnN0ZXAoJ2J1aWxkZXItY29weS1zb3VyY2UnLCAnQ29weSB0aGUgcmVzdCBvZiB0aGUgYXBwbGljYXRpb24gY29kZScpXG4gICAgICAuY29weSgnLicsICcuJylcbiAgICAgIC5zdGVwKCdidWlsZC1leHRlbnNpb24nLCAnYnVpbGQgZXh0ZW5zaW9ucycpXG4gICAgICAucnVuKCducHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnMnKVxuICAgICAgLy8gZmluYWwgc3RhZ2VcbiAgICAgIC5mcm9tKCdub2RlJywgJzIyLWJvb2t3b3JtLXNsaW0nKVxuICAgICAgLnN0ZXAoJ3VwZGF0ZS1ucG0nLCAnVXBkYXRlIG5wbSB0byBmaXggZGVwZW5kZW5jaWVzJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIG5wbUAxMS44LjAnKVxuICAgICAgLnN0ZXAoJ2NvcHktcGFja2FnZScsICdDb3B5IHBhY2thZ2UuanNvbiBhbmQgcGFja2FnZS1sb2NrLmpzb24gZmlyc3QgdG8gbGV2ZXJhZ2UgRG9ja2VyIGxheWVyIGNhY2hpbmcnKVxuICAgICAgLmNvcHkoJ3BhY2thZ2UqLmpzb24nLCAnL2FwcC8nKVxuICAgICAgLnN0ZXAoJ3dvcmtkaXInLCAnU2V0IHdvcmtpbmcgZGlyZWN0b3J5JylcbiAgICAgIC53b3JrZGlyKCcvYXBwJylcbiAgICAgIC5zdGVwKCdpbnN0YWxsLWRlcHMnLCAnSW5zdGFsbCBkZXBlbmRlbmNpZXMgLSB3aXRob3V0IGRldiBkZXBlbmRlbmNpZXMnKVxuICAgICAgLnJ1bignTk9ERV9FTlY9cHJvZHVjdGlvbiBucG0gaW5zdGFsbCcpXG4gICAgICAuc3RlcCgnY2xlYW51cCcsICdDbGVhbmluZyBiZW5jaG1hcmtzIGZvbGRlciBpbiB0ZWRpb3VzIG1vZHVsZSBmb3Igc2VjdXJpdHknKVxuICAgICAgLnJ1bigncm0gLXJmIG5vZGVfbW9kdWxlcy90ZWRpb3VzL2JlbmNobWFya3MnKVxuICAgICAgLnN0ZXAoJ2NvcHktc291cmNlJywgJ0NvcHkgdGhlIHJlc3Qgb2YgdGhlIGFwcGxpY2F0aW9uIGNvZGUnKVxuICAgICAgLmNvcHkoJy4nLCAnLicpXG4gICAgICAuc3RlcCgnY29weS1leHRlbnNpb25zJywgJ0NvcHkgdGhlIGJ1aWx0IGV4dGVuc2lvbnMgZnJvbSB0aGUgYnVpbGRlciBzdGFnZScpXG4gICAgICAuY29weSgnL2FwcC9leHRlbnNpb25zJywgJy4vZXh0ZW5zaW9ucycsIHsgZnJvbTogJ2J1aWxkZXInIH0pXG4gICAgICAuc3RlcCgnc3RhcnQnLCAnU3RhcnQgZDkgc2VydmVyJylcbiAgICAgIC5jbWRFeGVjKFsnbnB4JywgJ2RpcmVjdHVzJywgJ3N0YXJ0J10pO1xuICAgIHRoaXMuZG9ja2VyaWdub3JlID0gbmV3IElnbm9yZUZpbGUodGhpcywgJy5kb2NrZXJpZ25vcmUnLCB7IGlnbm9yZVBhdHRlcm5zOiBbJyoqL25vZGVfbW9kdWxlcycsICcuZ2l0J10gfSk7XG4gICAgcmV0dXJuIHRoaXMuZG9ja2VyZmlsZTtcbiAgfVxuXG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBEOVByb2plY3RPcHRpb25zfSBpbnN0ZWFkLiBUaGUgcGFja2FnZSB3YXMgcmVuYW1lZCB0byBgQHdiY2UvcHJvamVuLWQ5YCB0byByZWZsZWN0IHRoYXQgaXQgdGFyZ2V0cyB0aGUgZDkgZm9yaywgbm90IHVwc3RyZWFtIERpcmVjdHVzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdHVzUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBEOVByb2plY3RPcHRpb25zIHt9XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBEOVByb2plY3R9IGluc3RlYWQuIFRoZSBwYWNrYWdlIHdhcyByZW5hbWVkIHRvIGBAd2JjZS9wcm9qZW4tZDlgIHRvIHJlZmxlY3QgdGhhdCBpdCB0YXJnZXRzIHRoZSBkOSBmb3JrLCBub3QgdXBzdHJlYW0gRGlyZWN0dXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaXJlY3R1c1Byb2plY3QgZXh0ZW5kcyBEOVByb2plY3Qge31cbiJdfQ==
package/package.json CHANGED
@@ -68,7 +68,7 @@
68
68
  "publishConfig": {
69
69
  "access": "public"
70
70
  },
71
- "version": "0.1.1",
71
+ "version": "0.1.3",
72
72
  "jest": {
73
73
  "coverageProvider": "v8",
74
74
  "testMatch": [