lerna-projen 0.1.855 → 0.1.857

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/.jsii +28 -28
  2. package/API.md +120 -6
  3. package/lib/index.js +22 -10
  4. package/package.json +3 -3
package/.jsii CHANGED
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "constructs": "^10.6.0",
18
- "projen": "^0.101.4"
18
+ "projen": "^0.101.11"
19
19
  },
20
20
  "dependencyClosure": {
21
21
  "constructs": {
@@ -119,7 +119,7 @@
119
119
  "lerna-projen.utils": {
120
120
  "locationInModule": {
121
121
  "filename": "src/index.ts",
122
- "line": 6
122
+ "line": 7
123
123
  },
124
124
  "symbolId": "src/utils:"
125
125
  }
@@ -276,7 +276,7 @@
276
276
  },
277
277
  "locationInModule": {
278
278
  "filename": "src/index.ts",
279
- "line": 83
279
+ "line": 98
280
280
  },
281
281
  "parameters": [
282
282
  {
@@ -290,7 +290,7 @@
290
290
  "kind": "class",
291
291
  "locationInModule": {
292
292
  "filename": "src/index.ts",
293
- "line": 67
293
+ "line": 82
294
294
  },
295
295
  "methods": [
296
296
  {
@@ -300,7 +300,7 @@
300
300
  },
301
301
  "locationInModule": {
302
302
  "filename": "src/index.ts",
303
- "line": 108
303
+ "line": 123
304
304
  },
305
305
  "name": "customizeTask",
306
306
  "parameters": [
@@ -331,7 +331,7 @@
331
331
  },
332
332
  "locationInModule": {
333
333
  "filename": "src/index.ts",
334
- "line": 112
334
+ "line": 127
335
335
  },
336
336
  "name": "preSynthesize",
337
337
  "overrides": "projen.Project"
@@ -346,7 +346,7 @@
346
346
  "immutable": true,
347
347
  "locationInModule": {
348
348
  "filename": "src/index.ts",
349
- "line": 72
349
+ "line": 87
350
350
  },
351
351
  "name": "docgen",
352
352
  "type": {
@@ -360,7 +360,7 @@
360
360
  "immutable": true,
361
361
  "locationInModule": {
362
362
  "filename": "src/index.ts",
363
- "line": 71
363
+ "line": 86
364
364
  },
365
365
  "name": "docsDirectory",
366
366
  "type": {
@@ -374,7 +374,7 @@
374
374
  "immutable": true,
375
375
  "locationInModule": {
376
376
  "filename": "src/index.ts",
377
- "line": 75
377
+ "line": 90
378
378
  },
379
379
  "name": "independentMode",
380
380
  "type": {
@@ -388,7 +388,7 @@
388
388
  "immutable": true,
389
389
  "locationInModule": {
390
390
  "filename": "src/index.ts",
391
- "line": 73
391
+ "line": 88
392
392
  },
393
393
  "name": "sinceLastRelease",
394
394
  "type": {
@@ -402,7 +402,7 @@
402
402
  "immutable": true,
403
403
  "locationInModule": {
404
404
  "filename": "src/index.ts",
405
- "line": 77
405
+ "line": 92
406
406
  },
407
407
  "name": "taskCustomizations",
408
408
  "type": {
@@ -421,7 +421,7 @@
421
421
  "immutable": true,
422
422
  "locationInModule": {
423
423
  "filename": "src/index.ts",
424
- "line": 74
424
+ "line": 89
425
425
  },
426
426
  "name": "useNx",
427
427
  "type": {
@@ -435,7 +435,7 @@
435
435
  "immutable": true,
436
436
  "locationInModule": {
437
437
  "filename": "src/index.ts",
438
- "line": 76
438
+ "line": 91
439
439
  },
440
440
  "name": "useWorkspaces",
441
441
  "type": {
@@ -449,7 +449,7 @@
449
449
  "immutable": true,
450
450
  "locationInModule": {
451
451
  "filename": "src/index.ts",
452
- "line": 78
452
+ "line": 93
453
453
  },
454
454
  "name": "pnpmVersion",
455
455
  "optional": true,
@@ -464,7 +464,7 @@
464
464
  "immutable": true,
465
465
  "locationInModule": {
466
466
  "filename": "src/index.ts",
467
- "line": 79
467
+ "line": 94
468
468
  },
469
469
  "name": "sinceGitReferenceEnvironmentVariableName",
470
470
  "optional": true,
@@ -566,7 +566,7 @@
566
566
  },
567
567
  "locationInModule": {
568
568
  "filename": "src/index.ts",
569
- "line": 137
569
+ "line": 152
570
570
  },
571
571
  "parameters": [
572
572
  {
@@ -580,7 +580,7 @@
580
580
  "kind": "class",
581
581
  "locationInModule": {
582
582
  "filename": "src/index.ts",
583
- "line": 126
583
+ "line": 141
584
584
  },
585
585
  "methods": [
586
586
  {
@@ -590,7 +590,7 @@
590
590
  },
591
591
  "locationInModule": {
592
592
  "filename": "src/index.ts",
593
- "line": 161
593
+ "line": 176
594
594
  },
595
595
  "name": "customizeTask",
596
596
  "parameters": [
@@ -621,7 +621,7 @@
621
621
  },
622
622
  "locationInModule": {
623
623
  "filename": "src/index.ts",
624
- "line": 165
624
+ "line": 180
625
625
  },
626
626
  "name": "preSynthesize",
627
627
  "overrides": "projen.Project"
@@ -636,7 +636,7 @@
636
636
  "immutable": true,
637
637
  "locationInModule": {
638
638
  "filename": "src/index.ts",
639
- "line": 129
639
+ "line": 144
640
640
  },
641
641
  "name": "independentMode",
642
642
  "type": {
@@ -650,7 +650,7 @@
650
650
  "immutable": true,
651
651
  "locationInModule": {
652
652
  "filename": "src/index.ts",
653
- "line": 127
653
+ "line": 142
654
654
  },
655
655
  "name": "sinceLastRelease",
656
656
  "type": {
@@ -664,7 +664,7 @@
664
664
  "immutable": true,
665
665
  "locationInModule": {
666
666
  "filename": "src/index.ts",
667
- "line": 131
667
+ "line": 146
668
668
  },
669
669
  "name": "taskCustomizations",
670
670
  "type": {
@@ -683,7 +683,7 @@
683
683
  "immutable": true,
684
684
  "locationInModule": {
685
685
  "filename": "src/index.ts",
686
- "line": 128
686
+ "line": 143
687
687
  },
688
688
  "name": "useNx",
689
689
  "type": {
@@ -697,7 +697,7 @@
697
697
  "immutable": true,
698
698
  "locationInModule": {
699
699
  "filename": "src/index.ts",
700
- "line": 130
700
+ "line": 145
701
701
  },
702
702
  "name": "useWorkspaces",
703
703
  "type": {
@@ -711,7 +711,7 @@
711
711
  "immutable": true,
712
712
  "locationInModule": {
713
713
  "filename": "src/index.ts",
714
- "line": 132
714
+ "line": 147
715
715
  },
716
716
  "name": "pnpmVersion",
717
717
  "optional": true,
@@ -726,7 +726,7 @@
726
726
  "immutable": true,
727
727
  "locationInModule": {
728
728
  "filename": "src/index.ts",
729
- "line": 133
729
+ "line": 148
730
730
  },
731
731
  "name": "sinceGitReferenceEnvironmentVariableName",
732
732
  "optional": true,
@@ -1125,6 +1125,6 @@
1125
1125
  "symbolId": "src/utils:AddNxTaskDependencyOptions"
1126
1126
  }
1127
1127
  },
1128
- "version": "0.1.855",
1129
- "fingerprint": "6IN8AlDsD/5LmXZFPgNxU7oNGawSPVypGetdGdAobM4="
1128
+ "version": "0.1.857",
1129
+ "fingerprint": "kNqhNiIVYwhlt6P/UmV5KY4hZwrysZ5o1FWWmj+0h/g="
1130
1130
  }
package/API.md CHANGED
@@ -252,8 +252,10 @@ Synthesize all project files into `outdir`.
252
252
  2. Delete all generated files
253
253
  3. Synthesize all subprojects
254
254
  4. Synthesize all components of this project
255
- 5. Call "postSynthesize()" for all components of this project
256
- 6. Call "this.postSynthesize()"
255
+ 5. Call "projectCreation()" for all components, only if the project is being created for the first time
256
+ 6. Call "postSynthesize()" for all components of this project
257
+ 7. Call "this.postSynthesize()"
258
+ 8. Call "postProjectCreation()" for all components, only if the project is being created for the first time
257
259
 
258
260
  ##### `tryFindFile` <a name="tryFindFile" id="lerna-projen.LernaProject.tryFindFile"></a>
259
261
 
@@ -950,7 +952,9 @@ the project is being ejected.
950
952
 
951
953
  ---
952
954
 
953
- ##### `initProject`<sup>Optional</sup> <a name="initProject" id="lerna-projen.LernaProject.property.initProject"></a>
955
+ ##### ~~`initProject`~~<sup>Optional</sup> <a name="initProject" id="lerna-projen.LernaProject.property.initProject"></a>
956
+
957
+ - *Deprecated:* use the `initProject` argument passed to `Component.projectCreation()` instead.
954
958
 
955
959
  ```typescript
956
960
  public readonly initProject: InitProject;
@@ -1619,8 +1623,10 @@ Synthesize all project files into `outdir`.
1619
1623
  2. Delete all generated files
1620
1624
  3. Synthesize all subprojects
1621
1625
  4. Synthesize all components of this project
1622
- 5. Call "postSynthesize()" for all components of this project
1623
- 6. Call "this.postSynthesize()"
1626
+ 5. Call "projectCreation()" for all components, only if the project is being created for the first time
1627
+ 6. Call "postSynthesize()" for all components of this project
1628
+ 7. Call "this.postSynthesize()"
1629
+ 8. Call "postProjectCreation()" for all components, only if the project is being created for the first time
1624
1630
 
1625
1631
  ##### `tryFindFile` <a name="tryFindFile" id="lerna-projen.LernaTypescriptProject.tryFindFile"></a>
1626
1632
 
@@ -2326,7 +2332,9 @@ the project is being ejected.
2326
2332
 
2327
2333
  ---
2328
2334
 
2329
- ##### `initProject`<sup>Optional</sup> <a name="initProject" id="lerna-projen.LernaTypescriptProject.property.initProject"></a>
2335
+ ##### ~~`initProject`~~<sup>Optional</sup> <a name="initProject" id="lerna-projen.LernaTypescriptProject.property.initProject"></a>
2336
+
2337
+ - *Deprecated:* use the `initProject` argument passed to `Component.projectCreation()` instead.
2330
2338
 
2331
2339
  ```typescript
2332
2340
  public readonly initProject: InitProject;
@@ -3190,6 +3198,7 @@ const lernaProjectOptions: LernaProjectOptions = { ... }
3190
3198
  | <code><a href="#lerna-projen.LernaProjectOptions.property.vscode">vscode</a></code> | <code>boolean</code> | Enable VSCode integration. |
3191
3199
  | <code><a href="#lerna-projen.LernaProjectOptions.property.addPackageManagerToDevEngines">addPackageManagerToDevEngines</a></code> | <code>boolean</code> | Automatically add the resolved `packageManager` to `devEngines.packageManager` in `package.json`, setting `onFail` to `ignore`. |
3192
3200
  | <code><a href="#lerna-projen.LernaProjectOptions.property.allowLibraryDependencies">allowLibraryDependencies</a></code> | <code>boolean</code> | Allow the project to include `peerDependencies` and `bundledDependencies`. |
3201
+ | <code><a href="#lerna-projen.LernaProjectOptions.property.allowScripts">allowScripts</a></code> | <code>string[]</code> | List of dependency (package) names that are allowed to run lifecycle install scripts (`preinstall`, `install`, `postinstall`, `prepare`) during dependency installation. |
3193
3202
  | <code><a href="#lerna-projen.LernaProjectOptions.property.authorEmail">authorEmail</a></code> | <code>string</code> | Author's e-mail. |
3194
3203
  | <code><a href="#lerna-projen.LernaProjectOptions.property.authorName">authorName</a></code> | <code>string</code> | Author's name. |
3195
3204
  | <code><a href="#lerna-projen.LernaProjectOptions.property.authorOrganization">authorOrganization</a></code> | <code>boolean</code> | Is the author an organization. |
@@ -3222,6 +3231,7 @@ const lernaProjectOptions: LernaProjectOptions = { ... }
3222
3231
  | <code><a href="#lerna-projen.LernaProjectOptions.property.packageName">packageName</a></code> | <code>string</code> | The "name" in package.json. |
3223
3232
  | <code><a href="#lerna-projen.LernaProjectOptions.property.peerDependencyOptions">peerDependencyOptions</a></code> | <code>projen.javascript.PeerDependencyOptions</code> | Options for `peerDeps`. |
3224
3233
  | <code><a href="#lerna-projen.LernaProjectOptions.property.peerDeps">peerDeps</a></code> | <code>string[]</code> | Peer dependencies for this module. |
3234
+ | <code><a href="#lerna-projen.LernaProjectOptions.property.pnpmOptions">pnpmOptions</a></code> | <code>projen.javascript.PnpmOptions</code> | Options for pnpm. |
3225
3235
  | <code><a href="#lerna-projen.LernaProjectOptions.property.pnpmVersion">pnpmVersion</a></code> | <code>string</code> | The version of PNPM to use if using PNPM as a package manager. |
3226
3236
  | <code><a href="#lerna-projen.LernaProjectOptions.property.repository">repository</a></code> | <code>string</code> | The repository is the location where the actual code for your package lives. |
3227
3237
  | <code><a href="#lerna-projen.LernaProjectOptions.property.repositoryDirectory">repositoryDirectory</a></code> | <code>string</code> | If the package.json for your package is not in the root directory (for example if it is part of a monorepo), you can specify the directory in which it lives. |
@@ -3696,6 +3706,44 @@ for specifying these.
3696
3706
 
3697
3707
  ---
3698
3708
 
3709
+ ##### `allowScripts`<sup>Optional</sup> <a name="allowScripts" id="lerna-projen.LernaProjectOptions.property.allowScripts"></a>
3710
+
3711
+ ```typescript
3712
+ public readonly allowScripts: string[];
3713
+ ```
3714
+
3715
+ - *Type:* string[]
3716
+ - *Default:* all install scripts are allowed to run (package manager default)
3717
+
3718
+ List of dependency (package) names that are allowed to run lifecycle install scripts (`preinstall`, `install`, `postinstall`, `prepare`) during dependency installation.
3719
+
3720
+ These scripts can execute arbitrary code, making them a common
3721
+ supply-chain attack vector. Package managers are moving toward
3722
+ blocking them by default and requiring an explicit allowlist.
3723
+ Configuring `allowScripts` sets up that allowlist so scripts only run
3724
+ for the packages you have explicitly reviewed and trust.
3725
+
3726
+ Support for this setting depends on the configured `packageManager`:
3727
+
3728
+ - `NPM`: written to the native `allowScripts` field in `package.json`
3729
+ (requires npm >= 11.16; see https://docs.npmjs.com/cli/v11/commands/npm-approve-scripts).
3730
+ - `BUN`: written to the native `trustedDependencies` field in
3731
+ `package.json` (see https://bun.com/docs/pm/lifecycle).
3732
+ - `PNPM`: written to the `onlyBuiltDependencies` setting in
3733
+ `pnpm-workspace.yaml` (see https://pnpm.io/settings#onlybuiltdependencies).
3734
+ - `YARN2`, `YARN_BERRY`: written to the native
3735
+ `dependenciesMeta.<pkg>.built` allowlist in `package.json`, combined
3736
+ with `enableScripts: false` in `.yarnrc.yml` (see
3737
+ https://yarnpkg.com/features/security#postinstalls). If you set
3738
+ `yarnBerryOptions.yarnRcOptions.enableScripts` explicitly, that value
3739
+ is respected instead of being overridden.
3740
+ - `YARN`, `YARN_CLASSIC`: not supported. Yarn Classic has no native
3741
+ mechanism to allowlist install scripts for specific dependencies.
3742
+ Setting this option with one of these package managers throws an
3743
+ error at synthesis time.
3744
+
3745
+ ---
3746
+
3699
3747
  ##### `authorEmail`<sup>Optional</sup> <a name="authorEmail" id="lerna-projen.LernaProjectOptions.property.authorEmail"></a>
3700
3748
 
3701
3749
  ```typescript
@@ -4207,6 +4255,19 @@ test your module against the lowest peer version required.
4207
4255
 
4208
4256
  ---
4209
4257
 
4258
+ ##### `pnpmOptions`<sup>Optional</sup> <a name="pnpmOptions" id="lerna-projen.LernaProjectOptions.property.pnpmOptions"></a>
4259
+
4260
+ ```typescript
4261
+ public readonly pnpmOptions: PnpmOptions;
4262
+ ```
4263
+
4264
+ - *Type:* projen.javascript.PnpmOptions
4265
+ - *Default:* all default options
4266
+
4267
+ Options for pnpm.
4268
+
4269
+ ---
4270
+
4210
4271
  ##### `pnpmVersion`<sup>Optional</sup> <a name="pnpmVersion" id="lerna-projen.LernaProjectOptions.property.pnpmVersion"></a>
4211
4272
 
4212
4273
  ```typescript
@@ -5330,6 +5391,7 @@ const lernaTypescriptProjectOptions: LernaTypescriptProjectOptions = { ... }
5330
5391
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.vscode">vscode</a></code> | <code>boolean</code> | Enable VSCode integration. |
5331
5392
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.addPackageManagerToDevEngines">addPackageManagerToDevEngines</a></code> | <code>boolean</code> | Automatically add the resolved `packageManager` to `devEngines.packageManager` in `package.json`, setting `onFail` to `ignore`. |
5332
5393
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.allowLibraryDependencies">allowLibraryDependencies</a></code> | <code>boolean</code> | Allow the project to include `peerDependencies` and `bundledDependencies`. |
5394
+ | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.allowScripts">allowScripts</a></code> | <code>string[]</code> | List of dependency (package) names that are allowed to run lifecycle install scripts (`preinstall`, `install`, `postinstall`, `prepare`) during dependency installation. |
5333
5395
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.authorEmail">authorEmail</a></code> | <code>string</code> | Author's e-mail. |
5334
5396
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.authorName">authorName</a></code> | <code>string</code> | Author's name. |
5335
5397
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.authorOrganization">authorOrganization</a></code> | <code>boolean</code> | Is the author an organization. |
@@ -5362,6 +5424,7 @@ const lernaTypescriptProjectOptions: LernaTypescriptProjectOptions = { ... }
5362
5424
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.packageName">packageName</a></code> | <code>string</code> | The "name" in package.json. |
5363
5425
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.peerDependencyOptions">peerDependencyOptions</a></code> | <code>projen.javascript.PeerDependencyOptions</code> | Options for `peerDeps`. |
5364
5426
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.peerDeps">peerDeps</a></code> | <code>string[]</code> | Peer dependencies for this module. |
5427
+ | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.pnpmOptions">pnpmOptions</a></code> | <code>projen.javascript.PnpmOptions</code> | Options for pnpm. |
5365
5428
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.pnpmVersion">pnpmVersion</a></code> | <code>string</code> | The version of PNPM to use if using PNPM as a package manager. |
5366
5429
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.repository">repository</a></code> | <code>string</code> | The repository is the location where the actual code for your package lives. |
5367
5430
  | <code><a href="#lerna-projen.LernaTypescriptProjectOptions.property.repositoryDirectory">repositoryDirectory</a></code> | <code>string</code> | If the package.json for your package is not in the root directory (for example if it is part of a monorepo), you can specify the directory in which it lives. |
@@ -5853,6 +5916,44 @@ for specifying these.
5853
5916
 
5854
5917
  ---
5855
5918
 
5919
+ ##### `allowScripts`<sup>Optional</sup> <a name="allowScripts" id="lerna-projen.LernaTypescriptProjectOptions.property.allowScripts"></a>
5920
+
5921
+ ```typescript
5922
+ public readonly allowScripts: string[];
5923
+ ```
5924
+
5925
+ - *Type:* string[]
5926
+ - *Default:* all install scripts are allowed to run (package manager default)
5927
+
5928
+ List of dependency (package) names that are allowed to run lifecycle install scripts (`preinstall`, `install`, `postinstall`, `prepare`) during dependency installation.
5929
+
5930
+ These scripts can execute arbitrary code, making them a common
5931
+ supply-chain attack vector. Package managers are moving toward
5932
+ blocking them by default and requiring an explicit allowlist.
5933
+ Configuring `allowScripts` sets up that allowlist so scripts only run
5934
+ for the packages you have explicitly reviewed and trust.
5935
+
5936
+ Support for this setting depends on the configured `packageManager`:
5937
+
5938
+ - `NPM`: written to the native `allowScripts` field in `package.json`
5939
+ (requires npm >= 11.16; see https://docs.npmjs.com/cli/v11/commands/npm-approve-scripts).
5940
+ - `BUN`: written to the native `trustedDependencies` field in
5941
+ `package.json` (see https://bun.com/docs/pm/lifecycle).
5942
+ - `PNPM`: written to the `onlyBuiltDependencies` setting in
5943
+ `pnpm-workspace.yaml` (see https://pnpm.io/settings#onlybuiltdependencies).
5944
+ - `YARN2`, `YARN_BERRY`: written to the native
5945
+ `dependenciesMeta.<pkg>.built` allowlist in `package.json`, combined
5946
+ with `enableScripts: false` in `.yarnrc.yml` (see
5947
+ https://yarnpkg.com/features/security#postinstalls). If you set
5948
+ `yarnBerryOptions.yarnRcOptions.enableScripts` explicitly, that value
5949
+ is respected instead of being overridden.
5950
+ - `YARN`, `YARN_CLASSIC`: not supported. Yarn Classic has no native
5951
+ mechanism to allowlist install scripts for specific dependencies.
5952
+ Setting this option with one of these package managers throws an
5953
+ error at synthesis time.
5954
+
5955
+ ---
5956
+
5856
5957
  ##### `authorEmail`<sup>Optional</sup> <a name="authorEmail" id="lerna-projen.LernaTypescriptProjectOptions.property.authorEmail"></a>
5857
5958
 
5858
5959
  ```typescript
@@ -6364,6 +6465,19 @@ test your module against the lowest peer version required.
6364
6465
 
6365
6466
  ---
6366
6467
 
6468
+ ##### `pnpmOptions`<sup>Optional</sup> <a name="pnpmOptions" id="lerna-projen.LernaTypescriptProjectOptions.property.pnpmOptions"></a>
6469
+
6470
+ ```typescript
6471
+ public readonly pnpmOptions: PnpmOptions;
6472
+ ```
6473
+
6474
+ - *Type:* projen.javascript.PnpmOptions
6475
+ - *Default:* all default options
6476
+
6477
+ Options for pnpm.
6478
+
6479
+ ---
6480
+
6367
6481
  ##### `pnpmVersion`<sup>Optional</sup> <a name="pnpmVersion" id="lerna-projen.LernaTypescriptProjectOptions.property.pnpmVersion"></a>
6368
6482
 
6369
6483
  ```typescript
package/lib/index.js CHANGED
@@ -40,6 +40,7 @@ exports.LernaTypescriptProject = exports.LernaProject = exports.utils = void 0;
40
40
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
41
41
  const path = __importStar(require("path"));
42
42
  const projen_1 = require("projen");
43
+ const javascript_1 = require("projen/lib/javascript");
43
44
  __exportStar(require("./types"), exports);
44
45
  exports.utils = __importStar(require("./utils"));
45
46
  function getDocsDirectory(project) {
@@ -70,6 +71,19 @@ function appendWorkflowBootstrapSteps(options) {
70
71
  ],
71
72
  };
72
73
  }
74
+ function parseOptions(options) {
75
+ if (options.packageManager !== javascript_1.NodePackageManager.PNPM) {
76
+ return options;
77
+ }
78
+ return {
79
+ ...options,
80
+ pnpmOptions: {
81
+ workspaceYamlOptions: {
82
+ sharedWorkspaceLockfile: true,
83
+ },
84
+ },
85
+ };
86
+ }
73
87
  function parseTsOptions(options) {
74
88
  return {
75
89
  ...options,
@@ -81,7 +95,7 @@ const lockedTaskNames = ['build', 'upgrade', 'upgrade-projen', 'clobber', 'post-
81
95
  * @pjid lerna-project
82
96
  */
83
97
  class LernaProject extends projen_1.javascript.NodeProject {
84
- static [JSII_RTTI_SYMBOL_1] = { fqn: "lerna-projen.LernaProject", version: "0.1.855" };
98
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "lerna-projen.LernaProject", version: "0.1.857" };
85
99
  projenrcTs;
86
100
  docsDirectory;
87
101
  docgen;
@@ -94,7 +108,7 @@ class LernaProject extends projen_1.javascript.NodeProject {
94
108
  sinceGitReferenceEnvironmentVariableName;
95
109
  factory;
96
110
  constructor(options) {
97
- super(appendWorkflowBootstrapSteps(options));
111
+ super(appendWorkflowBootstrapSteps(parseOptions(options)));
98
112
  if (options.projenrcTs) {
99
113
  this.addDevDeps('ts-node', 'typescript');
100
114
  }
@@ -135,7 +149,7 @@ exports.LernaProject = LernaProject;
135
149
  * @pjid lerna-ts-project
136
150
  */
137
151
  class LernaTypescriptProject extends projen_1.typescript.TypeScriptProject {
138
- static [JSII_RTTI_SYMBOL_1] = { fqn: "lerna-projen.LernaTypescriptProject", version: "0.1.855" };
152
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "lerna-projen.LernaTypescriptProject", version: "0.1.857" };
139
153
  sinceLastRelease;
140
154
  useNx;
141
155
  independentMode;
@@ -145,7 +159,7 @@ class LernaTypescriptProject extends projen_1.typescript.TypeScriptProject {
145
159
  sinceGitReferenceEnvironmentVariableName;
146
160
  factory;
147
161
  constructor(options) {
148
- super(appendWorkflowBootstrapSteps(parseTsOptions(options)));
162
+ super(appendWorkflowBootstrapSteps(parseTsOptions(parseOptions(options))));
149
163
  this.sinceLastRelease = options.sinceLastRelease ?? false;
150
164
  this.useNx = options.useNx ?? false;
151
165
  this.independentMode = options.independentMode ?? false;
@@ -199,11 +213,9 @@ class LernaProjectFactory {
199
213
  const packages = this.project.subprojects.map(subProject => this.getSubProjectPath(subProject));
200
214
  if (this.project.useWorkspaces) {
201
215
  if (this.project.package.packageManager === projen_1.javascript.NodePackageManager.PNPM) {
202
- new projen_1.YamlFile(this.project, 'pnpm-workspace.yaml', {
203
- obj: {
204
- packages,
205
- },
206
- });
216
+ const workspaceFileName = 'pnpm-workspace.yaml';
217
+ const file = this.project.tryFindObjectFile(workspaceFileName) ?? new projen_1.YamlFile(this.project, workspaceFileName, {});
218
+ file.patch(projen_1.JsonPatch.add('/packages', packages));
207
219
  }
208
220
  this.project.package.addField('workspaces', packages);
209
221
  }
@@ -332,4 +344,4 @@ class LernaProjectFactory {
332
344
  this.project.gitattributes.addAttributes(`/${this.project.docsDirectory}/**`, 'linguist-generated');
333
345
  }
334
346
  }
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QixtQ0FBMkc7QUFHM0csMENBQXdCO0FBQ3hCLGlEQUFpQztBQUVqQyxTQUFTLGdCQUFnQixDQUFDLE9BQWdCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLGVBQWUsQ0FBQyxDQUFDO0lBQ2hGLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxPQUFnQjtJQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUdELFNBQVMscUJBQXFCLENBQUMsS0FBWTtJQUN6QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBRXhHLE9BQU8sV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUFnRSxP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SSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUMzRCxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxRQUFRLElBQUksQ0FBQyxDQUFDO1lBQ3pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxLQUFLLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN0RyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSnNvbkZpbGUsIGphdmFzY3JpcHQsIFByb2plY3QsIFRhc2tzLCBTb3VyY2VDb2RlLCB0eXBlc2NyaXB0LCBZYW1sRmlsZSwgVGFza1NoZWxsIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IExlcm5hUHJvamVjdE9wdGlvbnMsIExlcm5hVHlwZXNjcmlwdFByb2plY3RPcHRpb25zLCBUYXNrQ3VzdG9taXphdGlvbiwgVGFza0N1c3RvbWl6YXRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIGdldERvY3NEaXJlY3RvcnkocHJvamVjdDogUHJvamVjdCkge1xuICBjb25zdCByZXN1bHQgPSBPYmplY3QuZW50cmllcyhwcm9qZWN0KS5maW5kKChba2V5XSkgPT4ga2V5ID09PSAnZG9jc0RpcmVjdG9yeScpO1xuICByZXR1cm4gcmVzdWx0Py5bMV0ucmVwbGFjZSgvXFwvJC8sICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0QXJ0aWZhY3RzRGlyZWN0b3J5KHByb2plY3Q6IFByb2plY3QpIHtcbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMocHJvamVjdCkuZmluZCgoW2tleV0pID0+IGtleSA9PT0gJ2FydGlmYWN0c0RpcmVjdG9yeScpO1xuICByZXR1cm4gcmVzdWx0Py5bMV07XG59XG5cblxuZnVuY3Rpb24gZXh0cmFjdEpzaWlEb2NzT3V0cHV0KHRhc2tzOiBUYXNrcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGpzaWlEb2NTdGVwID0gdGFza3MudHJ5RmluZCgnZG9jZ2VuJyk/LnN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmV4ZWNBcmdzPy5pbmNsdWRlcygnanNpaS1kb2NnZW4nKSk7XG5cbiAgcmV0dXJuIGpzaWlEb2NTdGVwPy5leGVjQXJncz8uWzJdO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRXb3JrZmxvd0Jvb3RzdHJhcFN0ZXBzPFQgZXh0ZW5kcyBMZXJuYVByb2plY3RPcHRpb25zIHwgTGVybmFUeXBlc2NyaXB0UHJvamVjdE9wdGlvbnM+KG9wdGlvbnM6IFQpOiBUIHtcbiAgaWYgKCFvcHRpb25zLnNpbmNlTGFzdFJlbGVhc2UpIHtyZXR1cm4gb3B0aW9uczt9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ0ZldGNoIHRhZ3MnLFxuICAgICAgICBydW46ICdpZiBbICQoZ2l0IHJldi1wYXJzZSAtLWlzLXNoYWxsb3ctcmVwb3NpdG9yeSkgIT0gXCJmYWxzZVwiIF0gOyB0aGVuIGdpdCBmZXRjaCBvcmlnaW4gbWFpbiAtLXRhZ3MgLS11bnNoYWxsb3c7IGZpJyxcbiAgICAgICAgaWY6ICcke3sgZ2l0aHViLndvcmtmbG93ID09IFxcJ2J1aWxkXFwnIH19JyxcbiAgICAgIH0sXG4gICAgICAuLi5vcHRpb25zLndvcmtmbG93Qm9vdHN0cmFwU3RlcHMgPz8gW10sXG4gICAgXSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUc09wdGlvbnMob3B0aW9uczogTGVybmFUeXBlc2NyaXB0UHJvamVjdE9wdGlvbnMpOiBMZXJuYVR5cGVzY3JpcHRQcm9qZWN0T3B0aW9ucyB7XG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBzcmNkaXI6IG9wdGlvbnMuc3JjZGlyID8/ICdwcm9qZW5yYycsXG4gIH07XG59XG5cbmNvbnN0IGxvY2tlZFRhc2tOYW1lcyA9IFsnYnVpbGQnLCAndXBncmFkZScsICd1cGdyYWRlLXByb2plbicsICdjbG9iYmVyJywgJ3Bvc3QtdXBncmFkZSddO1xuXG5pbnRlcmZhY2UgSUxlcm5hUHJvamVjdCB7XG4gIHJlYWRvbmx5IHNpbmNlTGFzdFJlbGVhc2U6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZU54OiBib29sZWFuO1xuICByZWFkb25seSBpbmRlcGVuZGVudE1vZGU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZVdvcmtzcGFjZXM6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgZG9jZ2VuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFza0N1c3RvbWl6YXRpb25zOiBUYXNrQ3VzdG9taXphdGlvbnM7XG4gIHJlYWRvbmx5IHBucG1WZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSBzaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lPzogc3RyaW5nO1xuXG4gIGN1c3RvbWl6ZVRhc2sodGFza05hbWU6IHN0cmluZywgY3VzdG9taXphdGlvbjogVGFza0N1c3RvbWl6YXRpb24pOiB2b2lkO1xufVxuXG4vKipcbiAqIEBwamlkIGxlcm5hLXByb2plY3RcbiAqL1xuZXhwb3J0IGNsYXNzIExlcm5hUHJvamVjdCBleHRlbmRzIGphdmFzY3JpcHQuTm9kZVByb2plY3QgaW1wbGVtZW50cyBJTGVybmFQcm9qZWN0IHtcblxuICBwcml2YXRlIHByb2plbnJjVHM6IGJvb2xlYW47XG5cbiAgcmVhZG9ubHkgZG9jc0RpcmVjdG9yeTogc3RyaW5nO1xuICByZWFkb25seSBkb2NnZW46IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNpbmNlTGFzdFJlbGVhc2U6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZU54OiBib29sZWFuO1xuICByZWFkb25seSBpbmRlcGVuZGVudE1vZGU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZVdvcmtzcGFjZXM6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRhc2tDdXN0b21pemF0aW9uczogVGFza0N1c3RvbWl6YXRpb25zO1xuICByZWFkb25seSBwbnBtVmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgc2luY2VHaXRSZWZlcmVuY2VFbnZpcm9ubWVudFZhcmlhYmxlTmFtZT86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGZhY3Rvcnk6IExlcm5hUHJvamVjdEZhY3Rvcnk7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogTGVybmFQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKGFwcGVuZFdvcmtmbG93Qm9vdHN0cmFwU3RlcHMob3B0aW9ucykpO1xuXG4gICAgaWYgKG9wdGlvbnMucHJvamVucmNUcykge3RoaXMuYWRkRGV2RGVwcygndHMtbm9kZScsICd0eXBlc2NyaXB0Jyk7fVxuXG4gICAgdGhpcy5kb2NzRGlyZWN0b3J5ID0gb3B0aW9ucy5kb2NzRGlyZWN0b3J5ID8/ICdkb2NzJztcbiAgICB0aGlzLmRvY2dlbiA9IG9wdGlvbnMuZG9jZ2VuID8/IGZhbHNlO1xuICAgIHRoaXMuc2luY2VMYXN0UmVsZWFzZSA9IG9wdGlvbnMuc2luY2VMYXN0UmVsZWFzZSA/PyBmYWxzZTtcbiAgICB0aGlzLnVzZU54ID0gb3B0aW9ucy51c2VOeCA/PyBmYWxzZTtcbiAgICB0aGlzLnByb2plbnJjVHMgPSBvcHRpb25zLnByb2plbnJjVHMgPz8gZmFsc2U7XG4gICAgdGhpcy5pbmRlcGVuZGVudE1vZGUgPSBvcHRpb25zLmluZGVwZW5kZW50TW9kZSA/PyBmYWxzZTtcbiAgICB0aGlzLnVzZVdvcmtzcGFjZXMgPSBvcHRpb25zLnVzZVdvcmtzcGFjZXMgPz8gZmFsc2U7XG4gICAgdGhpcy50YXNrQ3VzdG9taXphdGlvbnMgPSBvcHRpb25zLnRhc2tDdXN0b21pemF0aW9ucyA/PyB7fTtcbiAgICB0aGlzLnBucG1WZXJzaW9uID0gb3B0aW9ucy5wbnBtVmVyc2lvbjtcbiAgICB0aGlzLnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUgPSBvcHRpb25zLnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU7XG5cbiAgICB0aGlzLmZhY3RvcnkgPSBuZXcgTGVybmFQcm9qZWN0RmFjdG9yeSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY3VzdG9taXphdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB0YXNrXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrTmFtZSBOYW1lIG9mIHRoZSB0YXNrIHRvIGN1c3RvbWl6ZVxuICAgKiBAcGFyYW0gY3VzdG9taXphdGlvbiBUYXNrQ3VzdG9taXphdGlvbiBvcHRpb25zXG4gICAqL1xuICBjdXN0b21pemVUYXNrKHRhc2tOYW1lOiBzdHJpbmcsIGN1c3RvbWl6YXRpb246IFRhc2tDdXN0b21pemF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy50YXNrQ3VzdG9taXphdGlvbnNbdGFza05hbWVdID0gY3VzdG9taXphdGlvbjtcbiAgfVxuXG4gIHByZVN5bnRoZXNpemUoKSB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuICAgIGNvbnN0IHByb2plbkNvbW1hbmQgPSB0aGlzLnByb2plbnJjVHMgPyAndHMtbm9kZSAtLXNraXAtcHJvamVjdCAucHJvamVucmMudHMnIDogJ25vZGUgLnByb2plbnJjLmpzJztcbiAgICBjb25zdCB7IGRlZmF1bHRUYXNrIH0gPSB0aGlzO1xuICAgIGlmICghZGVmYXVsdFRhc2spIHt0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGRlZmF1bHQgdGFzaycpO31cbiAgICBkZWZhdWx0VGFzay5yZXNldChwcm9qZW5Db21tYW5kKTtcblxuICAgIHRoaXMuZmFjdG9yeS5idWlsZCgpO1xuICB9XG59XG5cbi8qKlxuICogQHBqaWQgbGVybmEtdHMtcHJvamVjdFxuICovXG5leHBvcnQgY2xhc3MgTGVybmFUeXBlc2NyaXB0UHJvamVjdCBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3QgaW1wbGVtZW50cyBJTGVybmFQcm9qZWN0IHtcbiAgcmVhZG9ubHkgc2luY2VMYXN0UmVsZWFzZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlTng6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGluZGVwZW5kZW50TW9kZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlV29ya3NwYWNlczogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFza0N1c3RvbWl6YXRpb25zOiBUYXNrQ3VzdG9taXphdGlvbnM7XG4gIHJlYWRvbmx5IHBucG1WZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSBzaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZmFjdG9yeTogTGVybmFQcm9qZWN0RmFjdG9yeTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBMZXJuYVR5cGVzY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKGFwcGVuZFdvcmtmbG93Qm9vdHN0cmFwU3RlcHMocGFyc2VUc09wdGlvbnMob3B0aW9ucykpKTtcblxuICAgIHRoaXMuc2luY2VMYXN0UmVsZWFzZSA9IG9wdGlvbnMuc2luY2VMYXN0UmVsZWFzZSA/PyBmYWxzZTtcbiAgICB0aGlzLnVzZU54ID0gb3B0aW9ucy51c2VOeCA/PyBmYWxzZTtcbiAgICB0aGlzLmluZGVwZW5kZW50TW9kZSA9IG9wdGlvbnMuaW5kZXBlbmRlbnRNb2RlID8/IGZhbHNlO1xuICAgIHRoaXMudXNlV29ya3NwYWNlcyA9IG9wdGlvbnMudXNlV29ya3NwYWNlcyA/PyBmYWxzZTtcbiAgICB0aGlzLnRhc2tDdXN0b21pemF0aW9ucyA9IG9wdGlvbnMudGFza0N1c3RvbWl6YXRpb25zID8/IHt9O1xuICAgIHRoaXMucG5wbVZlcnNpb24gPSBvcHRpb25zLnBucG1WZXJzaW9uO1xuICAgIHRoaXMuc2luY2VHaXRSZWZlcmVuY2VFbnZpcm9ubWVudFZhcmlhYmxlTmFtZSA9IG9wdGlvbnMuc2luY2VHaXRSZWZlcmVuY2VFbnZpcm9ubWVudFZhcmlhYmxlTmFtZTtcblxuICAgIGlmICghKG9wdGlvbnMuaGFzUm9vdFNvdXJjZUNvZGUgPz8gZmFsc2UpKSB7dGhpcy50YXNrcy50cnlGaW5kKCdjb21waWxlJyk/LnJlc2V0KCk7fVxuXG4gICAgdGhpcy50YXNrcy50cnlGaW5kKCdkb2NnZW4nKT8ucmVzZXQoKTtcblxuICAgIHRoaXMuZmFjdG9yeSA9IG5ldyBMZXJuYVByb2plY3RGYWN0b3J5KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjdXN0b21pemF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHRhc2tcbiAgICpcbiAgICogQHBhcmFtIHRhc2tOYW1lIE5hbWUgb2YgdGhlIHRhc2sgdG8gY3VzdG9taXplXG4gICAqIEBwYXJhbSBjdXN0b21pemF0aW9uIFRhc2tDdXN0b21pemF0aW9uIG9wdGlvbnNcbiAgICovXG4gIGN1c3RvbWl6ZVRhc2sodGFza05hbWU6IHN0cmluZywgY3VzdG9taXphdGlvbjogVGFza0N1c3RvbWl6YXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tDdXN0b21pemF0aW9uc1t0YXNrTmFtZV0gPSBjdXN0b21pemF0aW9uO1xuICB9XG5cbiAgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG4gICAgdGhpcy5mYWN0b3J5LmJ1aWxkKCk7XG4gIH1cbn1cblxuY2xhc3MgTGVybmFQcm9qZWN0RmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdDogSUxlcm5hUHJvamVjdCAmIGphdmFzY3JpcHQuTm9kZVByb2plY3QpIHtcbiAgICBwcm9qZWN0LmFkZERldkRlcHMoJ2xlcm5hLXByb2plbicsICdsZXJuYScpO1xuICB9XG5cbiAgYnVpbGQoKSB7XG4gICAgdGhpcy5wcm9qZWN0LnBhY2thZ2VUYXNrLnJlc2V0KGBta2RpciAtcCAke3RoaXMucHJvamVjdC5hcnRpZmFjdHNKYXZhc2NyaXB0RGlyZWN0b3J5fWApO1xuICAgIHRoaXMucHJvamVjdC5wcmVDb21waWxlVGFzay5leGVjKGBsZXJuYS1wcm9qZW4gY2xlYW4tZGlzdCAke3RoaXMucHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9YCk7XG4gICAgdGhpcy5hcHBlbmRMZXJuYUNvbW1hbmRzKCk7XG4gICAgdGhpcy5hZGRDcm9zc0xpbmtzKCk7XG4gICAgdGhpcy51cGRhdGVTdWJQcm9qZWN0cygpO1xuICAgIHRoaXMuYWRkRG9jdW1lbnRzSW5kZXgoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3ViUHJvamVjdFBhdGgoc3ViUHJvamVjdDogUHJvamVjdCkge1xuICAgIHJldHVybiBwYXRoLnJlbGF0aXZlKHRoaXMucHJvamVjdC5vdXRkaXIsIHN1YlByb2plY3Qub3V0ZGlyKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ3Jvc3NMaW5rcygpIHtcblxuICAgIGNvbnN0IGxlcm5hQ29uZmlnOiBhbnkgPSB7XG4gICAgICB1c2VOeDogdGhpcy5wcm9qZWN0LnVzZU54LFxuICAgICAgdmVyc2lvbjogdGhpcy5wcm9qZWN0LmluZGVwZW5kZW50TW9kZSA/ICdpbmRlcGVuZGVudCcgOiAnMC4wLjAnLFxuICAgIH07XG5cbiAgICBjb25zdCBwYWNrYWdlcyA9IHRoaXMucHJvamVjdC5zdWJwcm9qZWN0cy5tYXAoc3ViUHJvamVjdCA9PiB0aGlzLmdldFN1YlByb2plY3RQYXRoKHN1YlByb2plY3QpKTtcblxuICAgIGlmICh0aGlzLnByb2plY3QudXNlV29ya3NwYWNlcykge1xuICAgICAgaWYgKHRoaXMucHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyID09PSBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5QTlBNKSB7XG4gICAgICAgIG5ldyBZYW1sRmlsZSh0aGlzLnByb2plY3QsICdwbnBtLXdvcmtzcGFjZS55YW1sJywge1xuICAgICAgICAgIG9iajoge1xuICAgICAgICAgICAgcGFja2FnZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnByb2plY3QucGFja2FnZS5hZGRGaWVsZCgnd29ya3NwYWNlcycsIHBhY2thZ2VzKTtcbiAgICB9IGVsc2Uge2xlcm5hQ29uZmlnLnBhY2thZ2VzID0gcGFja2FnZXM7fVxuXG5cbiAgICBuZXcgSnNvbkZpbGUodGhpcy5wcm9qZWN0LCAnbGVybmEuanNvbicsIHtcbiAgICAgIG9iajogbGVybmFDb25maWcsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGVuZExlcm5hQ29tbWFuZHMoKSB7XG4gICAgY29uc3QgdXBncmFkZVRhc2tOYW1lID0gJ3VwZ3JhZGUnO1xuICAgIGNvbnN0IHBvc3RVcGdyYWRlVGFza05hbWUgPSAncG9zdC11cGdyYWRlJztcbiAgICBjb25zdCBwb3N0VXBncmFkZVRhc2sgPSB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZChwb3N0VXBncmFkZVRhc2tOYW1lKTtcbiAgICBjb25zdCB1cGdyYWRlTGVybmFDb21tYW5kID0gdGhpcy5nZXRMZXJuYUNvbW1hbmQodXBncmFkZVRhc2tOYW1lLCB7IHNpbmNlTGFzdFJlbGVhc2U6IGZhbHNlIH0pO1xuICAgIHBvc3RVcGdyYWRlVGFzaz8ucHJlcGVuZEV4ZWModXBncmFkZUxlcm5hQ29tbWFuZC5jb21tYW5kLCB7IHNoZWxsOiB1cGdyYWRlTGVybmFDb21tYW5kLnNoZWxsIH0pO1xuICAgIHBvc3RVcGdyYWRlVGFzaz8uZXhlYygnbnB4IHByb2plbicpO1xuXG4gICAgdGhpcy5wcm9qZWN0LnRhc2tzLmFsbFxuICAgICAgLmZvckVhY2godGFzayA9PiB7XG4gICAgICAgIGNvbnN0IGN1c3RvbWl6YXRpb24gPSB0aGlzLnByb2plY3QudGFza0N1c3RvbWl6YXRpb25zW3Rhc2submFtZV07XG4gICAgICAgIGNvbnN0IGFkZExlcm5hU3RlcCA9IGN1c3RvbWl6YXRpb24/LmFkZExlcm5hU3RlcCA/PyB0cnVlO1xuXG4gICAgICAgIGlmIChsb2NrZWRUYXNrTmFtZXMuaW5jbHVkZXModGFzay5uYW1lKSB8fCAhYWRkTGVybmFTdGVwKSB7cmV0dXJuO31cblxuICAgICAgICBjb25zdCBsZXJuYUNvbW1hbmQgPSB0aGlzLmdldExlcm5hQ29tbWFuZCh0YXNrLm5hbWUsIGN1c3RvbWl6YXRpb24pO1xuICAgICAgICB0YXNrLmV4ZWMobGVybmFDb21tYW5kLmNvbW1hbmQsIHsgc2hlbGw6IGxlcm5hQ29tbWFuZC5zaGVsbCB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMZXJuYUNvbW1hbmQodGFza05hbWU6IHN0cmluZywgY3VzdG9taXphdGlvbj86IFRhc2tDdXN0b21pemF0aW9uKSB7XG4gICAgY29uc3QgbWFpbkNvbW1hbmQgPSBgbGVybmEgcnVuICR7dGFza05hbWV9IC0tc3RyZWFtYDtcbiAgICBjb25zdCB1c2VTaW5jZUZsYWcgPSBjdXN0b21pemF0aW9uPy5zaW5jZUxhc3RSZWxlYXNlID8/IHRoaXMucHJvamVjdC5zaW5jZUxhc3RSZWxlYXNlO1xuXG4gICAgY29uc3QgaW5jbHVkZVBhdHRlcm5zID0gY3VzdG9taXphdGlvbj8uaW5jbHVkZSA/PyBbXTtcbiAgICBjb25zdCBleGNsdWRlUGF0dGVybnMgPSBjdXN0b21pemF0aW9uPy5leGNsdWRlID8/IFtdO1xuXG4gICAgY29uc3Qgc2NvcGVGbGFncyA9IGluY2x1ZGVQYXR0ZXJucy5tYXAoKGdsb2IpID0+IGAgLS1zY29wZSAke2dsb2J9YCkuam9pbignJyk7XG4gICAgY29uc3QgaWdub3JlRmxhZ3MgPSBleGNsdWRlUGF0dGVybnMubWFwKChnbG9iKSA9PiBgIC0taWdub3JlICR7Z2xvYn1gKS5qb2luKCcnKTtcblxuXG4gICAgY29uc3QgcG9zdENvbW1hbmQgPSB1c2VTaW5jZUZsYWcgPyBgIC0tc2luY2UgJHt0aGlzLmdldFNpbmNlQ29tbWFuZCgpfWAgOiAnJztcbiAgICBjb25zdCBjb21tYW5kID0gYCR7bWFpbkNvbW1hbmR9JHtwb3N0Q29tbWFuZH0ke3Njb3BlRmxhZ3N9JHtpZ25vcmVGbGFnc31gO1xuICAgIHJldHVybiB7XG4gICAgICBjb21tYW5kLFxuICAgICAgc2hlbGw6IHVzZVNpbmNlRmxhZz8gVGFza1NoZWxsLmJhc2goKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaW5jZUNvbW1hbmQoKSB7XG4gICAgaWYgKHRoaXMucHJvamVjdC5zaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lKSB7XG4gICAgICByZXR1cm4gYFxcJHske3RoaXMucHJvamVjdC5zaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lfTotJChnaXQgZGVzY3JpYmUgLS1hYmJyZXY9MCAtLXRhZ3MgLS1tYXRjaCBcInYqXCIgSEVBRF4pfWA7XG4gICAgfVxuICAgIHJldHVybiAnJChnaXQgZGVzY3JpYmUgLS1hYmJyZXY9MCAtLXRhZ3MgLS1tYXRjaCBcInYqXCIgSEVBRF4pJztcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3ViUHJvamVjdHMoKSB7XG4gICAgY29uc3QgYnVtcFRhc2sgPSB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZCgnYnVtcCcpO1xuICAgIGNvbnN0IHVuYnVtcFRhc2sgPSB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZCgndW5idW1wJyk7XG5cbiAgICB0aGlzLnByb2plY3Quc3VicHJvamVjdHMuZm9yRWFjaCgoc3ViUHJvamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3ViUHJvamVjdERvY3NEaXJlY3RvcnkgPSBnZXREb2NzRGlyZWN0b3J5KHN1YlByb2plY3QpO1xuICAgICAgY29uc3Qgc3ViUHJvamVjdFBhdGggPSB0aGlzLmdldFN1YlByb2plY3RQYXRoKHN1YlByb2plY3QpO1xuICAgICAgaWYgKHRoaXMucHJvamVjdC5kb2NnZW4gJiYgc3ViUHJvamVjdERvY3NEaXJlY3RvcnkpIHt0aGlzLnByb2plY3QucG9zdENvbXBpbGVUYXNrLmV4ZWMoYGxlcm5hLXByb2plbiBtb3ZlLWRvY3MgJHt0aGlzLnByb2plY3QuZG9jc0RpcmVjdG9yeX0gJHtzdWJQcm9qZWN0UGF0aH0gJHtzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeX1gKTt9XG5cbiAgICAgIGNvbnN0IGFydGlmYWN0c0RpcmVjdG9yeSA9IGdldEFydGlmYWN0c0RpcmVjdG9yeShzdWJQcm9qZWN0KTtcblxuICAgICAgdGhpcy5wcm9qZWN0LnBhY2thZ2VUYXNrLmV4ZWMoYGxlcm5hLXByb2plbiBjb3B5LWRpc3QgJHtzdWJQcm9qZWN0UGF0aH0vJHthcnRpZmFjdHNEaXJlY3Rvcnl9ICR7dGhpcy5wcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeX1gKTtcblxuICAgICAgc3ViUHJvamVjdC5kZWZhdWx0VGFzaz8ucmVzZXQoKTtcblxuICAgICAgY29uc3QgYnVtcEVudnMgPSB7XG4gICAgICAgIE9VVEZJTEU6ICdwYWNrYWdlLmpzb24nLFxuICAgICAgICBDSEFOR0VMT0c6IGAke2FydGlmYWN0c0RpcmVjdG9yeX0vY2hhbmdlbG9nLm1kYCxcbiAgICAgICAgQlVNUEZJTEU6IGAke2FydGlmYWN0c0RpcmVjdG9yeX0vdmVyc2lvbi50eHRgLFxuICAgICAgICBSRUxFQVNFVEFHOiBgJHthcnRpZmFjdHNEaXJlY3Rvcnl9L3JlbGVhc2V0YWcudHh0YCxcbiAgICAgICAgUkVMRUFTRV9UQUdfUFJFRklYOiAnJyxcbiAgICAgIH07XG5cbiAgICAgIGlmIChidW1wVGFzayAmJiAhc3ViUHJvamVjdC50YXNrcy50cnlGaW5kKCdidW1wJykpIHtcbiAgICAgICAgY29uc3Qgc3ViQnVtcFRhc2sgPSBzdWJQcm9qZWN0LmFkZFRhc2soYnVtcFRhc2submFtZSwge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBidW1wVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgICBjb25kaXRpb246IGJ1bXBUYXNrLmNvbmRpdGlvbixcbiAgICAgICAgICBlbnY6IGJ1bXBFbnZzLFxuICAgICAgICB9KTtcbiAgICAgICAgc3ViQnVtcFRhc2suYnVpbHRpbigncmVsZWFzZS9idW1wLXZlcnNpb24nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHVuYnVtcFRhc2sgJiYgIXN1YlByb2plY3QudGFza3MudHJ5RmluZCgndW5idW1wJykpIHtcbiAgICAgICAgY29uc3Qgc3ViQnVtcFRhc2sgPSBzdWJQcm9qZWN0LmFkZFRhc2sodW5idW1wVGFzay5uYW1lLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IHVuYnVtcFRhc2suZGVzY3JpcHRpb24sXG4gICAgICAgICAgY29uZGl0aW9uOiB1bmJ1bXBUYXNrLmNvbmRpdGlvbixcbiAgICAgICAgICBlbnY6IGJ1bXBFbnZzLFxuICAgICAgICB9KTtcbiAgICAgICAgc3ViQnVtcFRhc2suYnVpbHRpbigncmVsZWFzZS9yZXNldC12ZXJzaW9uJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZERvY3VtZW50c0luZGV4KCkge1xuICAgIGlmICghdGhpcy5wcm9qZWN0LmRvY2dlbikge3JldHVybjt9XG5cbiAgICBjb25zdCBzdWJQcm9qZWN0c0RvY3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgIGNvbnN0IGluZGV4TWFya2Rvd24gPSBuZXcgU291cmNlQ29kZSh0aGlzLnByb2plY3QsIGAke3RoaXMucHJvamVjdC5kb2NzRGlyZWN0b3J5fS9pbmRleC5tZGApO1xuICAgIGNvbnN0IHJlYWRtZU1hcmtkb3duID0gbmV3IFNvdXJjZUNvZGUodGhpcy5wcm9qZWN0LCBgJHt0aGlzLnByb2plY3QuZG9jc0RpcmVjdG9yeX0vUkVBRE1FLm1kYCk7XG5cbiAgICB0aGlzLnByb2plY3Quc3VicHJvamVjdHMuZm9yRWFjaCgoc3ViUHJvamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3ViUHJvamVjdERvY3NEaXJlY3RvcnkgPSBnZXREb2NzRGlyZWN0b3J5KHN1YlByb2plY3QpO1xuICAgICAgaWYgKCFzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSkge3JldHVybjt9XG5cbiAgICAgIGNvbnN0IHN1YlByb2plY3RQYXRoID0gdGhpcy5nZXRTdWJQcm9qZWN0UGF0aChzdWJQcm9qZWN0KTtcbiAgICAgIGNvbnN0IGpzaWlEb2NzT3V0cHV0ID0gZXh0cmFjdEpzaWlEb2NzT3V0cHV0KHN1YlByb2plY3QudGFza3MpO1xuICAgICAgaWYgKGpzaWlEb2NzT3V0cHV0KSB7XG4gICAgICAgIGNvbnN0IGRvY3NQYXRoID0gYCR7c3ViUHJvamVjdFBhdGh9LyR7anNpaURvY3NPdXRwdXR9YDtcbiAgICAgICAgaW5kZXhNYXJrZG93bi5saW5lKGAtICMjIFske3N1YlByb2plY3QubmFtZX1dKCR7ZG9jc1BhdGh9KWApO1xuICAgICAgICBzdWJQcm9qZWN0c0RvY3Nbc3ViUHJvamVjdC5uYW1lXSA9IGRvY3NQYXRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3ViUHJvamVjdHNEb2NzW3N1YlByb2plY3QubmFtZV0gPSBgJHtzdWJQcm9qZWN0UGF0aH0vaW5kZXguaHRtbGA7XG4gICAgICB9XG4gICAgICByZWFkbWVNYXJrZG93bi5saW5lKGAtICMjIFske3N1YlByb2plY3QubmFtZX1dKC4uLyR7c3ViUHJvamVjdFBhdGh9L1JFQURNRS5tZClgKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGluZGV4SHRtbCA9IG5ldyBTb3VyY2VDb2RlKHRoaXMucHJvamVjdCwgYCR7dGhpcy5wcm9qZWN0LmRvY3NEaXJlY3Rvcnl9L2luZGV4Lmh0bWxgKTtcbiAgICBpbmRleEh0bWwubGluZSgnPCFET0NUWVBFIGh0bWw+Jyk7XG4gICAgaW5kZXhIdG1sLmxpbmUoJzxodG1sPicpO1xuICAgIGluZGV4SHRtbC5vcGVuKCc8Ym9keT4nKTtcbiAgICBpbmRleEh0bWwub3BlbignPHVsPicpO1xuICAgIE9iamVjdC5lbnRyaWVzKHN1YlByb2plY3RzRG9jcykuZm9yRWFjaCgoW25hbWUsIGRvY3NQYXRoXSkgPT4ge1xuICAgICAgaW5kZXhIdG1sLm9wZW4oJzxsaT4nKTtcbiAgICAgIGluZGV4SHRtbC5vcGVuKGA8YSBocmVmPVwiJHtkb2NzUGF0aH1cIj5gKTtcbiAgICAgIGluZGV4SHRtbC5saW5lKG5hbWUpO1xuICAgICAgaW5kZXhIdG1sLmNsb3NlKCc8L2E+Jyk7XG4gICAgICBpbmRleEh0bWwuY2xvc2UoJzwvbGk+Jyk7XG4gICAgfSk7XG4gICAgaW5kZXhIdG1sLmNsb3NlKCc8L3VsPicpO1xuICAgIGluZGV4SHRtbC5jbG9zZSgnPC9ib2R5PicpO1xuICAgIGluZGV4SHRtbC5saW5lKCc8L2h0bWw+Jyk7XG4gICAgaW5kZXhIdG1sLmxpbmUoKTtcblxuICAgIHRoaXMucHJvamVjdC5naXRhdHRyaWJ1dGVzLmFkZEF0dHJpYnV0ZXMoYC8ke3RoaXMucHJvamVjdC5kb2NzRGlyZWN0b3J5fS8qKmAsICdsaW5ndWlzdC1nZW5lcmF0ZWQnKTtcbiAgfVxufSJdfQ==
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QixtQ0FBc0g7QUFDdEgsc0RBQTJEO0FBRzNELDBDQUF3QjtBQUN4QixpREFBaUM7QUFFakMsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFnQjtJQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxlQUFlLENBQUMsQ0FBQztJQUNoRixPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsT0FBZ0I7SUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssb0JBQW9CLENBQUMsQ0FBQztJQUNyRixPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFHRCxTQUFTLHFCQUFxQixDQUFDLEtBQVk7SUFDekMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUV4RyxPQUFPLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyw0QkFBNEIsQ0FBZ0UsT0FBVTtJQUM3RyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFBQSxPQUFPLE9BQU8sQ0FBQztJQUFBLENBQUM7SUFFaEQsT0FBTztRQUNMLEdBQUcsT0FBTztRQUNWLHNCQUFzQixFQUFFO1lBQ3RCO2dCQUNFLElBQUksRUFBRSxZQUFZO2dCQUNsQixHQUFHLEVBQUUsZ0hBQWdIO2dCQUNySCxFQUFFLEVBQUUscUNBQXFDO2FBQzFDO1lBQ0QsR0FBRyxPQUFPLENBQUMsc0JBQXNCLElBQUksRUFBRTtTQUN4QztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQWdFLE9BQVU7SUFDN0YsSUFBSSxPQUFPLENBQUMsY0FBYyxLQUFLLCtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxPQUFPO1FBQ0wsR0FBRyxPQUFPO1FBQ1YsV0FBVyxFQUFFO1lBQ1gsb0JBQW9CLEVBQUU7Z0JBQ3BCLHVCQUF1QixFQUFFLElBQUk7YUFDOUI7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsT0FBc0M7SUFDNUQsT0FBTztRQUNMLEdBQUcsT0FBTztRQUNWLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLFVBQVU7S0FDckMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBZ0IxRjs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLG1CQUFVLENBQUMsV0FBVzs7SUFFOUMsVUFBVSxDQUFVO0lBRW5CLGFBQWEsQ0FBUztJQUN0QixNQUFNLENBQVU7SUFDaEIsZ0JBQWdCLENBQVU7SUFDMUIsS0FBSyxDQUFVO0lBQ2YsZUFBZSxDQUFVO0lBQ3pCLGFBQWEsQ0FBVTtJQUN2QixrQkFBa0IsQ0FBcUI7SUFDdkMsV0FBVyxDQUFVO0lBQ3JCLHdDQUF3QyxDQUFVO0lBRTFDLE9BQU8sQ0FBc0I7SUFFOUMsWUFBWSxPQUE0QjtRQUN0QyxLQUFLLENBQUMsNEJBQTRCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUzRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQUEsQ0FBQztRQUVuRSxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUM7UUFDeEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztRQUNwRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDdkMsSUFBSSxDQUFDLHdDQUF3QyxHQUFHLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQztRQUVqRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLFFBQWdCLEVBQUUsYUFBZ0M7UUFDOUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLGFBQWEsQ0FBQztJQUNwRCxDQUFDO0lBRUQsYUFBYTtRQUNYLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7UUFDcEcsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFBQSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFBQSxDQUFDO1FBQ25FLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDOztBQXJESCxvQ0FzREM7QUFFRDs7R0FFRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsbUJBQVUsQ0FBQyxpQkFBaUI7O0lBQzdELGdCQUFnQixDQUFVO0lBQzFCLEtBQUssQ0FBVTtJQUNmLGVBQWUsQ0FBVTtJQUN6QixhQUFhLENBQVU7SUFDdkIsa0JBQWtCLENBQXFCO0lBQ3ZDLFdBQVcsQ0FBVTtJQUNyQix3Q0FBd0MsQ0FBVTtJQUUxQyxPQUFPLENBQXNCO0lBRTlDLFlBQVksT0FBc0M7UUFDaEQsS0FBSyxDQUFDLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0UsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyx3Q0FBd0MsR0FBRyxPQUFPLENBQUMsd0NBQXdDLENBQUM7UUFFakcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUFBLENBQUM7UUFFcEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxRQUFnQixFQUFFLGFBQWdDO1FBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxhQUFhLENBQUM7SUFDcEQsQ0FBQztJQUVELGFBQWE7UUFDWCxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDOztBQTFDSCx3REEyQ0M7QUFFRCxNQUFNLG1CQUFtQjtJQUNNO0lBQTdCLFlBQTZCLE9BQStDO1FBQS9DLFlBQU8sR0FBUCxPQUFPLENBQXdDO1FBQzFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLDJCQUEyQixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFVBQW1CO1FBQzNDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLGFBQWE7UUFFbkIsTUFBTSxXQUFXLEdBQVE7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTztTQUNoRSxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFaEcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxLQUFLLG1CQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQy9FLE1BQU0saUJBQWlCLEdBQUcscUJBQXFCLENBQUM7Z0JBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLGlCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDcEgsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4RCxDQUFDO2FBQU0sQ0FBQztZQUFBLFdBQVcsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQUEsQ0FBQztRQUd6QyxJQUFJLGlCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUU7WUFDdkMsR0FBRyxFQUFFLFdBQVc7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDbEMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7UUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDeEUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0YsZUFBZSxFQUFFLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoRyxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUc7YUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakUsTUFBTSxZQUFZLEdBQUcsYUFBYSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUM7WUFFekQsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUFBLE9BQU87WUFBQSxDQUFDO1lBRW5FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sZUFBZSxDQUFDLFFBQWdCLEVBQUUsYUFBaUM7UUFDekUsTUFBTSxXQUFXLEdBQUcsYUFBYSxRQUFRLFdBQVcsQ0FBQztRQUNyRCxNQUFNLFlBQVksR0FBRyxhQUFhLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztRQUV0RixNQUFNLGVBQWUsR0FBRyxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNyRCxNQUFNLGVBQWUsR0FBRyxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUVyRCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFHaEYsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0UsTUFBTSxPQUFPLEdBQUcsR0FBRyxXQUFXLEdBQUcsV0FBVyxHQUFHLFVBQVUsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUMxRSxPQUFPO1lBQ0wsT0FBTztZQUNQLEtBQUssRUFBRSxZQUFZLENBQUEsQ0FBQyxDQUFDLGtCQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDbEQsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsRUFBRSxDQUFDO1lBQzFELE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLHdDQUF3Qyx5REFBeUQsQ0FBQztRQUM5SCxDQUFDO1FBQ0QsT0FBTyxzREFBc0QsQ0FBQztJQUNoRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDOUMsTUFBTSx1QkFBdUIsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO2dCQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQywwQkFBMEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksY0FBYyxJQUFJLHVCQUF1QixFQUFFLENBQUMsQ0FBQztZQUFBLENBQUM7WUFFN0wsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUU3RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLGNBQWMsSUFBSSxrQkFBa0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUVuSSxVQUFVLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBRWhDLE1BQU0sUUFBUSxHQUFHO2dCQUNmLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixTQUFTLEVBQUUsR0FBRyxrQkFBa0IsZUFBZTtnQkFDL0MsUUFBUSxFQUFFLEdBQUcsa0JBQWtCLGNBQWM7Z0JBQzdDLFVBQVUsRUFBRSxHQUFHLGtCQUFrQixpQkFBaUI7Z0JBQ2xELGtCQUFrQixFQUFFLEVBQUU7YUFDdkIsQ0FBQztZQUVGLElBQUksUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDbEQsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO29CQUNwRCxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7b0JBQ2pDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztvQkFDN0IsR0FBRyxFQUFFLFFBQVE7aUJBQ2QsQ0FBQyxDQUFDO2dCQUNILFdBQVcsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBRUQsSUFBSSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7b0JBQ3RELFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVztvQkFDbkMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO29CQUMvQixHQUFHLEVBQUUsUUFBUTtpQkFDZCxDQUFDLENBQUM7Z0JBQ0gsV0FBVyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFBQSxPQUFPO1FBQUEsQ0FBQztRQUVuQyxNQUFNLGVBQWUsR0FBMkIsRUFBRSxDQUFDO1FBRW5ELE1BQU0sYUFBYSxHQUFHLElBQUksbUJBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLFdBQVcsQ0FBQyxDQUFDO1FBQzdGLE1BQU0sY0FBYyxHQUFHLElBQUksbUJBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLFlBQVksQ0FBQyxDQUFDO1FBRS9GLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzlDLE1BQU0sdUJBQXVCLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQUEsT0FBTztZQUFBLENBQUM7WUFFdkMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFELE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixNQUFNLFFBQVEsR0FBRyxHQUFHLGNBQWMsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDdkQsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDN0QsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDOUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLGFBQWEsQ0FBQztZQUNwRSxDQUFDO1lBQ0QsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLFVBQVUsQ0FBQyxJQUFJLFFBQVEsY0FBYyxhQUFhLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLElBQUksbUJBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLGFBQWEsQ0FBQyxDQUFDO1FBQzNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekIsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDM0QsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksUUFBUSxJQUFJLENBQUMsQ0FBQztZQUN6QyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JCLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEIsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsS0FBSyxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDdEcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEpzb25GaWxlLCBqYXZhc2NyaXB0LCBQcm9qZWN0LCBUYXNrcywgU291cmNlQ29kZSwgdHlwZXNjcmlwdCwgWWFtbEZpbGUsIFRhc2tTaGVsbCwgSnNvblBhdGNoIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IE5vZGVQYWNrYWdlTWFuYWdlciB9IGZyb20gJ3Byb2plbi9saWIvamF2YXNjcmlwdCc7XG5pbXBvcnQgeyBMZXJuYVByb2plY3RPcHRpb25zLCBMZXJuYVR5cGVzY3JpcHRQcm9qZWN0T3B0aW9ucywgVGFza0N1c3RvbWl6YXRpb24sIFRhc2tDdXN0b21pemF0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5mdW5jdGlvbiBnZXREb2NzRGlyZWN0b3J5KHByb2plY3Q6IFByb2plY3QpIHtcbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMocHJvamVjdCkuZmluZCgoW2tleV0pID0+IGtleSA9PT0gJ2RvY3NEaXJlY3RvcnknKTtcbiAgcmV0dXJuIHJlc3VsdD8uWzFdLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG59XG5cbmZ1bmN0aW9uIGdldEFydGlmYWN0c0RpcmVjdG9yeShwcm9qZWN0OiBQcm9qZWN0KSB7XG4gIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5lbnRyaWVzKHByb2plY3QpLmZpbmQoKFtrZXldKSA9PiBrZXkgPT09ICdhcnRpZmFjdHNEaXJlY3RvcnknKTtcbiAgcmV0dXJuIHJlc3VsdD8uWzFdO1xufVxuXG5cbmZ1bmN0aW9uIGV4dHJhY3RKc2lpRG9jc091dHB1dCh0YXNrczogVGFza3MpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBqc2lpRG9jU3RlcCA9IHRhc2tzLnRyeUZpbmQoJ2RvY2dlbicpPy5zdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5leGVjQXJncz8uaW5jbHVkZXMoJ2pzaWktZG9jZ2VuJykpO1xuXG4gIHJldHVybiBqc2lpRG9jU3RlcD8uZXhlY0FyZ3M/LlsyXTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kV29ya2Zsb3dCb290c3RyYXBTdGVwczxUIGV4dGVuZHMgTGVybmFQcm9qZWN0T3B0aW9ucyB8IExlcm5hVHlwZXNjcmlwdFByb2plY3RPcHRpb25zPihvcHRpb25zOiBUKTogVCB7XG4gIGlmICghb3B0aW9ucy5zaW5jZUxhc3RSZWxlYXNlKSB7cmV0dXJuIG9wdGlvbnM7fVxuXG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICB3b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdGZXRjaCB0YWdzJyxcbiAgICAgICAgcnVuOiAnaWYgWyAkKGdpdCByZXYtcGFyc2UgLS1pcy1zaGFsbG93LXJlcG9zaXRvcnkpICE9IFwiZmFsc2VcIiBdIDsgdGhlbiBnaXQgZmV0Y2ggb3JpZ2luIG1haW4gLS10YWdzIC0tdW5zaGFsbG93OyBmaScsXG4gICAgICAgIGlmOiAnJHt7IGdpdGh1Yi53b3JrZmxvdyA9PSBcXCdidWlsZFxcJyB9fScsXG4gICAgICB9LFxuICAgICAgLi4ub3B0aW9ucy53b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzID8/IFtdLFxuICAgIF0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlT3B0aW9uczxUIGV4dGVuZHMgTGVybmFQcm9qZWN0T3B0aW9ucyB8IExlcm5hVHlwZXNjcmlwdFByb2plY3RPcHRpb25zPihvcHRpb25zOiBUKTogVCB7XG4gIGlmIChvcHRpb25zLnBhY2thZ2VNYW5hZ2VyICE9PSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTSkge1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBwbnBtT3B0aW9uczoge1xuICAgICAgd29ya3NwYWNlWWFtbE9wdGlvbnM6IHtcbiAgICAgICAgc2hhcmVkV29ya3NwYWNlTG9ja2ZpbGU6IHRydWUsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHNPcHRpb25zKG9wdGlvbnM6IExlcm5hVHlwZXNjcmlwdFByb2plY3RPcHRpb25zKTogTGVybmFUeXBlc2NyaXB0UHJvamVjdE9wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgc3JjZGlyOiBvcHRpb25zLnNyY2RpciA/PyAncHJvamVucmMnLFxuICB9O1xufVxuXG5jb25zdCBsb2NrZWRUYXNrTmFtZXMgPSBbJ2J1aWxkJywgJ3VwZ3JhZGUnLCAndXBncmFkZS1wcm9qZW4nLCAnY2xvYmJlcicsICdwb3N0LXVwZ3JhZGUnXTtcblxuaW50ZXJmYWNlIElMZXJuYVByb2plY3Qge1xuICByZWFkb25seSBzaW5jZUxhc3RSZWxlYXNlOiBib29sZWFuO1xuICByZWFkb25seSB1c2VOeDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaW5kZXBlbmRlbnRNb2RlOiBib29sZWFuO1xuICByZWFkb25seSB1c2VXb3Jrc3BhY2VzOiBib29sZWFuO1xuICByZWFkb25seSBkb2NzRGlyZWN0b3J5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRvY2dlbj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRhc2tDdXN0b21pemF0aW9uczogVGFza0N1c3RvbWl6YXRpb25zO1xuICByZWFkb25seSBwbnBtVmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgc2luY2VHaXRSZWZlcmVuY2VFbnZpcm9ubWVudFZhcmlhYmxlTmFtZT86IHN0cmluZztcblxuICBjdXN0b21pemVUYXNrKHRhc2tOYW1lOiBzdHJpbmcsIGN1c3RvbWl6YXRpb246IFRhc2tDdXN0b21pemF0aW9uKTogdm9pZDtcbn1cblxuLyoqXG4gKiBAcGppZCBsZXJuYS1wcm9qZWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBMZXJuYVByb2plY3QgZXh0ZW5kcyBqYXZhc2NyaXB0Lk5vZGVQcm9qZWN0IGltcGxlbWVudHMgSUxlcm5hUHJvamVjdCB7XG5cbiAgcHJpdmF0ZSBwcm9qZW5yY1RzOiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgZG9jZ2VuOiBib29sZWFuO1xuICByZWFkb25seSBzaW5jZUxhc3RSZWxlYXNlOiBib29sZWFuO1xuICByZWFkb25seSB1c2VOeDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaW5kZXBlbmRlbnRNb2RlOiBib29sZWFuO1xuICByZWFkb25seSB1c2VXb3Jrc3BhY2VzOiBib29sZWFuO1xuICByZWFkb25seSB0YXNrQ3VzdG9taXphdGlvbnM6IFRhc2tDdXN0b21pemF0aW9ucztcbiAgcmVhZG9ubHkgcG5wbVZlcnNpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBmYWN0b3J5OiBMZXJuYVByb2plY3RGYWN0b3J5O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IExlcm5hUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihhcHBlbmRXb3JrZmxvd0Jvb3RzdHJhcFN0ZXBzKHBhcnNlT3B0aW9ucyhvcHRpb25zKSkpO1xuXG4gICAgaWYgKG9wdGlvbnMucHJvamVucmNUcykge3RoaXMuYWRkRGV2RGVwcygndHMtbm9kZScsICd0eXBlc2NyaXB0Jyk7fVxuXG4gICAgdGhpcy5kb2NzRGlyZWN0b3J5ID0gb3B0aW9ucy5kb2NzRGlyZWN0b3J5ID8/ICdkb2NzJztcbiAgICB0aGlzLmRvY2dlbiA9IG9wdGlvbnMuZG9jZ2VuID8/IGZhbHNlO1xuICAgIHRoaXMuc2luY2VMYXN0UmVsZWFzZSA9IG9wdGlvbnMuc2luY2VMYXN0UmVsZWFzZSA/PyBmYWxzZTtcbiAgICB0aGlzLnVzZU54ID0gb3B0aW9ucy51c2VOeCA/PyBmYWxzZTtcbiAgICB0aGlzLnByb2plbnJjVHMgPSBvcHRpb25zLnByb2plbnJjVHMgPz8gZmFsc2U7XG4gICAgdGhpcy5pbmRlcGVuZGVudE1vZGUgPSBvcHRpb25zLmluZGVwZW5kZW50TW9kZSA/PyBmYWxzZTtcbiAgICB0aGlzLnVzZVdvcmtzcGFjZXMgPSBvcHRpb25zLnVzZVdvcmtzcGFjZXMgPz8gZmFsc2U7XG4gICAgdGhpcy50YXNrQ3VzdG9taXphdGlvbnMgPSBvcHRpb25zLnRhc2tDdXN0b21pemF0aW9ucyA/PyB7fTtcbiAgICB0aGlzLnBucG1WZXJzaW9uID0gb3B0aW9ucy5wbnBtVmVyc2lvbjtcbiAgICB0aGlzLnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUgPSBvcHRpb25zLnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWU7XG5cbiAgICB0aGlzLmZhY3RvcnkgPSBuZXcgTGVybmFQcm9qZWN0RmFjdG9yeSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY3VzdG9taXphdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB0YXNrXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrTmFtZSBOYW1lIG9mIHRoZSB0YXNrIHRvIGN1c3RvbWl6ZVxuICAgKiBAcGFyYW0gY3VzdG9taXphdGlvbiBUYXNrQ3VzdG9taXphdGlvbiBvcHRpb25zXG4gICAqL1xuICBjdXN0b21pemVUYXNrKHRhc2tOYW1lOiBzdHJpbmcsIGN1c3RvbWl6YXRpb246IFRhc2tDdXN0b21pemF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy50YXNrQ3VzdG9taXphdGlvbnNbdGFza05hbWVdID0gY3VzdG9taXphdGlvbjtcbiAgfVxuXG4gIHByZVN5bnRoZXNpemUoKSB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuICAgIGNvbnN0IHByb2plbkNvbW1hbmQgPSB0aGlzLnByb2plbnJjVHMgPyAndHMtbm9kZSAtLXNraXAtcHJvamVjdCAucHJvamVucmMudHMnIDogJ25vZGUgLnByb2plbnJjLmpzJztcbiAgICBjb25zdCB7IGRlZmF1bHRUYXNrIH0gPSB0aGlzO1xuICAgIGlmICghZGVmYXVsdFRhc2spIHt0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGRlZmF1bHQgdGFzaycpO31cbiAgICBkZWZhdWx0VGFzay5yZXNldChwcm9qZW5Db21tYW5kKTtcblxuICAgIHRoaXMuZmFjdG9yeS5idWlsZCgpO1xuICB9XG59XG5cbi8qKlxuICogQHBqaWQgbGVybmEtdHMtcHJvamVjdFxuICovXG5leHBvcnQgY2xhc3MgTGVybmFUeXBlc2NyaXB0UHJvamVjdCBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3QgaW1wbGVtZW50cyBJTGVybmFQcm9qZWN0IHtcbiAgcmVhZG9ubHkgc2luY2VMYXN0UmVsZWFzZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlTng6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGluZGVwZW5kZW50TW9kZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlV29ya3NwYWNlczogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFza0N1c3RvbWl6YXRpb25zOiBUYXNrQ3VzdG9taXphdGlvbnM7XG4gIHJlYWRvbmx5IHBucG1WZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSBzaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZmFjdG9yeTogTGVybmFQcm9qZWN0RmFjdG9yeTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBMZXJuYVR5cGVzY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKGFwcGVuZFdvcmtmbG93Qm9vdHN0cmFwU3RlcHMocGFyc2VUc09wdGlvbnMocGFyc2VPcHRpb25zKG9wdGlvbnMpKSkpO1xuXG4gICAgdGhpcy5zaW5jZUxhc3RSZWxlYXNlID0gb3B0aW9ucy5zaW5jZUxhc3RSZWxlYXNlID8/IGZhbHNlO1xuICAgIHRoaXMudXNlTnggPSBvcHRpb25zLnVzZU54ID8/IGZhbHNlO1xuICAgIHRoaXMuaW5kZXBlbmRlbnRNb2RlID0gb3B0aW9ucy5pbmRlcGVuZGVudE1vZGUgPz8gZmFsc2U7XG4gICAgdGhpcy51c2VXb3Jrc3BhY2VzID0gb3B0aW9ucy51c2VXb3Jrc3BhY2VzID8/IGZhbHNlO1xuICAgIHRoaXMudGFza0N1c3RvbWl6YXRpb25zID0gb3B0aW9ucy50YXNrQ3VzdG9taXphdGlvbnMgPz8ge307XG4gICAgdGhpcy5wbnBtVmVyc2lvbiA9IG9wdGlvbnMucG5wbVZlcnNpb247XG4gICAgdGhpcy5zaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lID0gb3B0aW9ucy5zaW5jZUdpdFJlZmVyZW5jZUVudmlyb25tZW50VmFyaWFibGVOYW1lO1xuXG4gICAgaWYgKCEob3B0aW9ucy5oYXNSb290U291cmNlQ29kZSA/PyBmYWxzZSkpIHt0aGlzLnRhc2tzLnRyeUZpbmQoJ2NvbXBpbGUnKT8ucmVzZXQoKTt9XG5cbiAgICB0aGlzLnRhc2tzLnRyeUZpbmQoJ2RvY2dlbicpPy5yZXNldCgpO1xuXG4gICAgdGhpcy5mYWN0b3J5ID0gbmV3IExlcm5hUHJvamVjdEZhY3RvcnkodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGN1c3RvbWl6YXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdGFza1xuICAgKlxuICAgKiBAcGFyYW0gdGFza05hbWUgTmFtZSBvZiB0aGUgdGFzayB0byBjdXN0b21pemVcbiAgICogQHBhcmFtIGN1c3RvbWl6YXRpb24gVGFza0N1c3RvbWl6YXRpb24gb3B0aW9uc1xuICAgKi9cbiAgY3VzdG9taXplVGFzayh0YXNrTmFtZTogc3RyaW5nLCBjdXN0b21pemF0aW9uOiBUYXNrQ3VzdG9taXphdGlvbik6IHZvaWQge1xuICAgIHRoaXMudGFza0N1c3RvbWl6YXRpb25zW3Rhc2tOYW1lXSA9IGN1c3RvbWl6YXRpb247XG4gIH1cblxuICBwcmVTeW50aGVzaXplKCkge1xuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcbiAgICB0aGlzLmZhY3RvcnkuYnVpbGQoKTtcbiAgfVxufVxuXG5jbGFzcyBMZXJuYVByb2plY3RGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9qZWN0OiBJTGVybmFQcm9qZWN0ICYgamF2YXNjcmlwdC5Ob2RlUHJvamVjdCkge1xuICAgIHByb2plY3QuYWRkRGV2RGVwcygnbGVybmEtcHJvamVuJywgJ2xlcm5hJyk7XG4gIH1cblxuICBidWlsZCgpIHtcbiAgICB0aGlzLnByb2plY3QucGFja2FnZVRhc2sucmVzZXQoYG1rZGlyIC1wICR7dGhpcy5wcm9qZWN0LmFydGlmYWN0c0phdmFzY3JpcHREaXJlY3Rvcnl9YCk7XG4gICAgdGhpcy5wcm9qZWN0LnByZUNvbXBpbGVUYXNrLmV4ZWMoYGxlcm5hLXByb2plbiBjbGVhbi1kaXN0ICR7dGhpcy5wcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeX1gKTtcbiAgICB0aGlzLmFwcGVuZExlcm5hQ29tbWFuZHMoKTtcbiAgICB0aGlzLmFkZENyb3NzTGlua3MoKTtcbiAgICB0aGlzLnVwZGF0ZVN1YlByb2plY3RzKCk7XG4gICAgdGhpcy5hZGREb2N1bWVudHNJbmRleCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWJQcm9qZWN0UGF0aChzdWJQcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgcmV0dXJuIHBhdGgucmVsYXRpdmUodGhpcy5wcm9qZWN0Lm91dGRpciwgc3ViUHJvamVjdC5vdXRkaXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDcm9zc0xpbmtzKCkge1xuXG4gICAgY29uc3QgbGVybmFDb25maWc6IGFueSA9IHtcbiAgICAgIHVzZU54OiB0aGlzLnByb2plY3QudXNlTngsXG4gICAgICB2ZXJzaW9uOiB0aGlzLnByb2plY3QuaW5kZXBlbmRlbnRNb2RlID8gJ2luZGVwZW5kZW50JyA6ICcwLjAuMCcsXG4gICAgfTtcblxuICAgIGNvbnN0IHBhY2thZ2VzID0gdGhpcy5wcm9qZWN0LnN1YnByb2plY3RzLm1hcChzdWJQcm9qZWN0ID0+IHRoaXMuZ2V0U3ViUHJvamVjdFBhdGgoc3ViUHJvamVjdCkpO1xuXG4gICAgaWYgKHRoaXMucHJvamVjdC51c2VXb3Jrc3BhY2VzKSB7XG4gICAgICBpZiAodGhpcy5wcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0pIHtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlRmlsZU5hbWUgPSAncG5wbS13b3Jrc3BhY2UueWFtbCc7XG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnByb2plY3QudHJ5RmluZE9iamVjdEZpbGUod29ya3NwYWNlRmlsZU5hbWUpID8/IG5ldyBZYW1sRmlsZSh0aGlzLnByb2plY3QsIHdvcmtzcGFjZUZpbGVOYW1lLCB7fSk7XG4gICAgICAgIGZpbGUucGF0Y2goSnNvblBhdGNoLmFkZCgnL3BhY2thZ2VzJywgcGFja2FnZXMpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKCd3b3Jrc3BhY2VzJywgcGFja2FnZXMpO1xuICAgIH0gZWxzZSB7bGVybmFDb25maWcucGFja2FnZXMgPSBwYWNrYWdlczt9XG5cblxuICAgIG5ldyBKc29uRmlsZSh0aGlzLnByb2plY3QsICdsZXJuYS5qc29uJywge1xuICAgICAgb2JqOiBsZXJuYUNvbmZpZyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kTGVybmFDb21tYW5kcygpIHtcbiAgICBjb25zdCB1cGdyYWRlVGFza05hbWUgPSAndXBncmFkZSc7XG4gICAgY29uc3QgcG9zdFVwZ3JhZGVUYXNrTmFtZSA9ICdwb3N0LXVwZ3JhZGUnO1xuICAgIGNvbnN0IHBvc3RVcGdyYWRlVGFzayA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKHBvc3RVcGdyYWRlVGFza05hbWUpO1xuICAgIGNvbnN0IHVwZ3JhZGVMZXJuYUNvbW1hbmQgPSB0aGlzLmdldExlcm5hQ29tbWFuZCh1cGdyYWRlVGFza05hbWUsIHsgc2luY2VMYXN0UmVsZWFzZTogZmFsc2UgfSk7XG4gICAgcG9zdFVwZ3JhZGVUYXNrPy5wcmVwZW5kRXhlYyh1cGdyYWRlTGVybmFDb21tYW5kLmNvbW1hbmQsIHsgc2hlbGw6IHVwZ3JhZGVMZXJuYUNvbW1hbmQuc2hlbGwgfSk7XG4gICAgcG9zdFVwZ3JhZGVUYXNrPy5leGVjKCducHggcHJvamVuJyk7XG5cbiAgICB0aGlzLnByb2plY3QudGFza3MuYWxsXG4gICAgICAuZm9yRWFjaCh0YXNrID0+IHtcbiAgICAgICAgY29uc3QgY3VzdG9taXphdGlvbiA9IHRoaXMucHJvamVjdC50YXNrQ3VzdG9taXphdGlvbnNbdGFzay5uYW1lXTtcbiAgICAgICAgY29uc3QgYWRkTGVybmFTdGVwID0gY3VzdG9taXphdGlvbj8uYWRkTGVybmFTdGVwID8/IHRydWU7XG5cbiAgICAgICAgaWYgKGxvY2tlZFRhc2tOYW1lcy5pbmNsdWRlcyh0YXNrLm5hbWUpIHx8ICFhZGRMZXJuYVN0ZXApIHtyZXR1cm47fVxuXG4gICAgICAgIGNvbnN0IGxlcm5hQ29tbWFuZCA9IHRoaXMuZ2V0TGVybmFDb21tYW5kKHRhc2submFtZSwgY3VzdG9taXphdGlvbik7XG4gICAgICAgIHRhc2suZXhlYyhsZXJuYUNvbW1hbmQuY29tbWFuZCwgeyBzaGVsbDogbGVybmFDb21tYW5kLnNoZWxsIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldExlcm5hQ29tbWFuZCh0YXNrTmFtZTogc3RyaW5nLCBjdXN0b21pemF0aW9uPzogVGFza0N1c3RvbWl6YXRpb24pIHtcbiAgICBjb25zdCBtYWluQ29tbWFuZCA9IGBsZXJuYSBydW4gJHt0YXNrTmFtZX0gLS1zdHJlYW1gO1xuICAgIGNvbnN0IHVzZVNpbmNlRmxhZyA9IGN1c3RvbWl6YXRpb24/LnNpbmNlTGFzdFJlbGVhc2UgPz8gdGhpcy5wcm9qZWN0LnNpbmNlTGFzdFJlbGVhc2U7XG5cbiAgICBjb25zdCBpbmNsdWRlUGF0dGVybnMgPSBjdXN0b21pemF0aW9uPy5pbmNsdWRlID8/IFtdO1xuICAgIGNvbnN0IGV4Y2x1ZGVQYXR0ZXJucyA9IGN1c3RvbWl6YXRpb24/LmV4Y2x1ZGUgPz8gW107XG5cbiAgICBjb25zdCBzY29wZUZsYWdzID0gaW5jbHVkZVBhdHRlcm5zLm1hcCgoZ2xvYikgPT4gYCAtLXNjb3BlICR7Z2xvYn1gKS5qb2luKCcnKTtcbiAgICBjb25zdCBpZ25vcmVGbGFncyA9IGV4Y2x1ZGVQYXR0ZXJucy5tYXAoKGdsb2IpID0+IGAgLS1pZ25vcmUgJHtnbG9ifWApLmpvaW4oJycpO1xuXG5cbiAgICBjb25zdCBwb3N0Q29tbWFuZCA9IHVzZVNpbmNlRmxhZyA/IGAgLS1zaW5jZSAke3RoaXMuZ2V0U2luY2VDb21tYW5kKCl9YCA6ICcnO1xuICAgIGNvbnN0IGNvbW1hbmQgPSBgJHttYWluQ29tbWFuZH0ke3Bvc3RDb21tYW5kfSR7c2NvcGVGbGFnc30ke2lnbm9yZUZsYWdzfWA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbW1hbmQsXG4gICAgICBzaGVsbDogdXNlU2luY2VGbGFnPyBUYXNrU2hlbGwuYmFzaCgpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFNpbmNlQ29tbWFuZCgpIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0LnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWUpIHtcbiAgICAgIHJldHVybiBgXFwkeyR7dGhpcy5wcm9qZWN0LnNpbmNlR2l0UmVmZXJlbmNlRW52aXJvbm1lbnRWYXJpYWJsZU5hbWV9Oi0kKGdpdCBkZXNjcmliZSAtLWFiYnJldj0wIC0tdGFncyAtLW1hdGNoIFwidipcIiBIRUFEXil9YDtcbiAgICB9XG4gICAgcmV0dXJuICckKGdpdCBkZXNjcmliZSAtLWFiYnJldj0wIC0tdGFncyAtLW1hdGNoIFwidipcIiBIRUFEXiknO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdWJQcm9qZWN0cygpIHtcbiAgICBjb25zdCBidW1wVGFzayA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKCdidW1wJyk7XG4gICAgY29uc3QgdW5idW1wVGFzayA9IHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKCd1bmJ1bXAnKTtcblxuICAgIHRoaXMucHJvamVjdC5zdWJwcm9qZWN0cy5mb3JFYWNoKChzdWJQcm9qZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSA9IGdldERvY3NEaXJlY3Rvcnkoc3ViUHJvamVjdCk7XG4gICAgICBjb25zdCBzdWJQcm9qZWN0UGF0aCA9IHRoaXMuZ2V0U3ViUHJvamVjdFBhdGgoc3ViUHJvamVjdCk7XG4gICAgICBpZiAodGhpcy5wcm9qZWN0LmRvY2dlbiAmJiBzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSkge3RoaXMucHJvamVjdC5wb3N0Q29tcGlsZVRhc2suZXhlYyhgbGVybmEtcHJvamVuIG1vdmUtZG9jcyAke3RoaXMucHJvamVjdC5kb2NzRGlyZWN0b3J5fSAke3N1YlByb2plY3RQYXRofSAke3N1YlByb2plY3REb2NzRGlyZWN0b3J5fWApO31cblxuICAgICAgY29uc3QgYXJ0aWZhY3RzRGlyZWN0b3J5ID0gZ2V0QXJ0aWZhY3RzRGlyZWN0b3J5KHN1YlByb2plY3QpO1xuXG4gICAgICB0aGlzLnByb2plY3QucGFja2FnZVRhc2suZXhlYyhgbGVybmEtcHJvamVuIGNvcHktZGlzdCAke3N1YlByb2plY3RQYXRofS8ke2FydGlmYWN0c0RpcmVjdG9yeX0gJHt0aGlzLnByb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5fWApO1xuXG4gICAgICBzdWJQcm9qZWN0LmRlZmF1bHRUYXNrPy5yZXNldCgpO1xuXG4gICAgICBjb25zdCBidW1wRW52cyA9IHtcbiAgICAgICAgT1VURklMRTogJ3BhY2thZ2UuanNvbicsXG4gICAgICAgIENIQU5HRUxPRzogYCR7YXJ0aWZhY3RzRGlyZWN0b3J5fS9jaGFuZ2Vsb2cubWRgLFxuICAgICAgICBCVU1QRklMRTogYCR7YXJ0aWZhY3RzRGlyZWN0b3J5fS92ZXJzaW9uLnR4dGAsXG4gICAgICAgIFJFTEVBU0VUQUc6IGAke2FydGlmYWN0c0RpcmVjdG9yeX0vcmVsZWFzZXRhZy50eHRgLFxuICAgICAgICBSRUxFQVNFX1RBR19QUkVGSVg6ICcnLFxuICAgICAgfTtcblxuICAgICAgaWYgKGJ1bXBUYXNrICYmICFzdWJQcm9qZWN0LnRhc2tzLnRyeUZpbmQoJ2J1bXAnKSkge1xuICAgICAgICBjb25zdCBzdWJCdW1wVGFzayA9IHN1YlByb2plY3QuYWRkVGFzayhidW1wVGFzay5uYW1lLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGJ1bXBUYXNrLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGNvbmRpdGlvbjogYnVtcFRhc2suY29uZGl0aW9uLFxuICAgICAgICAgIGVudjogYnVtcEVudnMsXG4gICAgICAgIH0pO1xuICAgICAgICBzdWJCdW1wVGFzay5idWlsdGluKCdyZWxlYXNlL2J1bXAtdmVyc2lvbicpO1xuICAgICAgfVxuXG4gICAgICBpZiAodW5idW1wVGFzayAmJiAhc3ViUHJvamVjdC50YXNrcy50cnlGaW5kKCd1bmJ1bXAnKSkge1xuICAgICAgICBjb25zdCBzdWJCdW1wVGFzayA9IHN1YlByb2plY3QuYWRkVGFzayh1bmJ1bXBUYXNrLm5hbWUsIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdW5idW1wVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgICBjb25kaXRpb246IHVuYnVtcFRhc2suY29uZGl0aW9uLFxuICAgICAgICAgIGVudjogYnVtcEVudnMsXG4gICAgICAgIH0pO1xuICAgICAgICBzdWJCdW1wVGFzay5idWlsdGluKCdyZWxlYXNlL3Jlc2V0LXZlcnNpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRG9jdW1lbnRzSW5kZXgoKSB7XG4gICAgaWYgKCF0aGlzLnByb2plY3QuZG9jZ2VuKSB7cmV0dXJuO31cblxuICAgIGNvbnN0IHN1YlByb2plY3RzRG9jczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgY29uc3QgaW5kZXhNYXJrZG93biA9IG5ldyBTb3VyY2VDb2RlKHRoaXMucHJvamVjdCwgYCR7dGhpcy5wcm9qZWN0LmRvY3NEaXJlY3Rvcnl9L2luZGV4Lm1kYCk7XG4gICAgY29uc3QgcmVhZG1lTWFya2Rvd24gPSBuZXcgU291cmNlQ29kZSh0aGlzLnByb2plY3QsIGAke3RoaXMucHJvamVjdC5kb2NzRGlyZWN0b3J5fS9SRUFETUUubWRgKTtcblxuICAgIHRoaXMucHJvamVjdC5zdWJwcm9qZWN0cy5mb3JFYWNoKChzdWJQcm9qZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSA9IGdldERvY3NEaXJlY3Rvcnkoc3ViUHJvamVjdCk7XG4gICAgICBpZiAoIXN1YlByb2plY3REb2NzRGlyZWN0b3J5KSB7cmV0dXJuO31cblxuICAgICAgY29uc3Qgc3ViUHJvamVjdFBhdGggPSB0aGlzLmdldFN1YlByb2plY3RQYXRoKHN1YlByb2plY3QpO1xuICAgICAgY29uc3QganNpaURvY3NPdXRwdXQgPSBleHRyYWN0SnNpaURvY3NPdXRwdXQoc3ViUHJvamVjdC50YXNrcyk7XG4gICAgICBpZiAoanNpaURvY3NPdXRwdXQpIHtcbiAgICAgICAgY29uc3QgZG9jc1BhdGggPSBgJHtzdWJQcm9qZWN0UGF0aH0vJHtqc2lpRG9jc091dHB1dH1gO1xuICAgICAgICBpbmRleE1hcmtkb3duLmxpbmUoYC0gIyMgWyR7c3ViUHJvamVjdC5uYW1lfV0oJHtkb2NzUGF0aH0pYCk7XG4gICAgICAgIHN1YlByb2plY3RzRG9jc1tzdWJQcm9qZWN0Lm5hbWVdID0gZG9jc1BhdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJQcm9qZWN0c0RvY3Nbc3ViUHJvamVjdC5uYW1lXSA9IGAke3N1YlByb2plY3RQYXRofS9pbmRleC5odG1sYDtcbiAgICAgIH1cbiAgICAgIHJlYWRtZU1hcmtkb3duLmxpbmUoYC0gIyMgWyR7c3ViUHJvamVjdC5uYW1lfV0oLi4vJHtzdWJQcm9qZWN0UGF0aH0vUkVBRE1FLm1kKWApO1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW5kZXhIdG1sID0gbmV3IFNvdXJjZUNvZGUodGhpcy5wcm9qZWN0LCBgJHt0aGlzLnByb2plY3QuZG9jc0RpcmVjdG9yeX0vaW5kZXguaHRtbGApO1xuICAgIGluZGV4SHRtbC5saW5lKCc8IURPQ1RZUEUgaHRtbD4nKTtcbiAgICBpbmRleEh0bWwubGluZSgnPGh0bWw+Jyk7XG4gICAgaW5kZXhIdG1sLm9wZW4oJzxib2R5PicpO1xuICAgIGluZGV4SHRtbC5vcGVuKCc8dWw+Jyk7XG4gICAgT2JqZWN0LmVudHJpZXMoc3ViUHJvamVjdHNEb2NzKS5mb3JFYWNoKChbbmFtZSwgZG9jc1BhdGhdKSA9PiB7XG4gICAgICBpbmRleEh0bWwub3BlbignPGxpPicpO1xuICAgICAgaW5kZXhIdG1sLm9wZW4oYDxhIGhyZWY9XCIke2RvY3NQYXRofVwiPmApO1xuICAgICAgaW5kZXhIdG1sLmxpbmUobmFtZSk7XG4gICAgICBpbmRleEh0bWwuY2xvc2UoJzwvYT4nKTtcbiAgICAgIGluZGV4SHRtbC5jbG9zZSgnPC9saT4nKTtcbiAgICB9KTtcbiAgICBpbmRleEh0bWwuY2xvc2UoJzwvdWw+Jyk7XG4gICAgaW5kZXhIdG1sLmNsb3NlKCc8L2JvZHk+Jyk7XG4gICAgaW5kZXhIdG1sLmxpbmUoJzwvaHRtbD4nKTtcbiAgICBpbmRleEh0bWwubGluZSgpO1xuXG4gICAgdGhpcy5wcm9qZWN0LmdpdGF0dHJpYnV0ZXMuYWRkQXR0cmlidXRlcyhgLyR7dGhpcy5wcm9qZWN0LmRvY3NEaXJlY3Rvcnl9LyoqYCwgJ2xpbmd1aXN0LWdlbmVyYXRlZCcpO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -33,14 +33,14 @@
33
33
  "jsii-docgen": "^10.5.0",
34
34
  "jsii-pacmak": "^1.138.0",
35
35
  "jsii-rosetta": "5.9.x",
36
- "projen": "^0.101.4",
36
+ "projen": "^0.101.11",
37
37
  "ts-jest": "^29.4.11",
38
38
  "ts-node": "^10.9.2",
39
39
  "typescript": "^5.9.3"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "constructs": "^10.6.0",
43
- "projen": "^0.101.4"
43
+ "projen": "^0.101.11"
44
44
  },
45
45
  "dependencies": {
46
46
  "commander": "^11.1.0",
@@ -72,7 +72,7 @@
72
72
  "publishConfig": {
73
73
  "access": "public"
74
74
  },
75
- "version": "0.1.855",
75
+ "version": "0.1.857",
76
76
  "jest": {
77
77
  "coverageProvider": "v8",
78
78
  "testMatch": [