vcomply-workflow-engine 6.0.94 → 6.0.95
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/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +30 -7
- package/esm2022/lib/constants/api.constants.mjs +1 -6
- package/esm2022/lib/constants/policy.constant.mjs +6 -0
- package/esm2022/lib/constants/regix.constants.mjs +4 -0
- package/esm2022/lib/constants/responsibility.mjs +8 -0
- package/esm2022/lib/interfaces/policy.interface.mjs +2 -0
- package/esm2022/lib/interfaces/responsibilty.interface.mjs +1 -1
- package/esm2022/lib/more-option/more-option.component.mjs +193 -13
- package/esm2022/lib/report-a-case/services/report-a-case.service.mjs +2 -3
- package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +7 -4
- package/esm2022/lib/services/common.service.mjs +1 -40
- package/esm2022/lib/services/iframe.service.mjs +1 -14
- package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +6 -3
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +21 -10
- package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +1 -5
- package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -5
- package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +5 -5
- package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +2 -6
- package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +2 -3
- package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +1 -3
- package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -5
- package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +2 -9
- package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +2 -4
- package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +5 -267
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +16 -48
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.module.mjs +4 -8
- package/esm2022/lib/sharedComponents/pipes/risk-class.pipe.mjs +19 -0
- package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +17 -45
- package/esm2022/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +10 -13
- package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +35 -62
- package/esm2022/lib/workflow/shared/services/grc.service.mjs +2 -15
- package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +3 -8
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +453 -294
- package/esm2022/lib/workflow-engine-container/api-constants.mjs +2 -3
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +53 -32
- package/esm2022/lib/workflow-engine.module.mjs +7 -11
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +29 -46
- package/esm2022/lib/workflow-program/constants.mjs +3 -3
- package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +9 -13
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +365 -327
- package/esm2022/lib/workflow-services/policy.service.mjs +9 -8
- package/esm2022/lib/workflow-services/programs.service.mjs +114 -26
- package/esm2022/lib/workflow-services/responsibility.service.mjs +55 -60
- package/fesm2022/vcomply-workflow-engine.mjs +14037 -14469
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +3 -0
- package/lib/constants/api.constants.d.ts +0 -5
- package/lib/constants/policy.constant.d.ts +2 -0
- package/lib/constants/regix.constants.d.ts +3 -0
- package/lib/constants/responsibility.d.ts +7 -0
- package/lib/interfaces/policy.interface.d.ts +5 -0
- package/lib/interfaces/responsibilty.interface.d.ts +13 -13
- package/lib/services/common.service.d.ts +0 -28
- package/lib/services/iframe.service.d.ts +0 -6
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +6 -0
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +4 -1
- package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency.service.d.ts +2 -92
- package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +1 -2
- package/lib/sharedComponents/link-responsibility/link-responsibility.module.d.ts +1 -2
- package/lib/sharedComponents/pipes/risk-class.pipe.d.ts +7 -0
- package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +1 -5
- package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +1 -3
- package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +2 -6
- package/lib/workflow/shared/services/grc.service.d.ts +0 -1
- package/lib/workflow/shared/workflow-pipes/workflow-pipes.module.d.ts +2 -3
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +10 -32
- package/lib/workflow-engine-container/api-constants.d.ts +0 -1
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +2 -5
- package/lib/workflow-engine.module.d.ts +2 -3
- package/lib/workflow-policy/workflow-policy.component.d.ts +0 -9
- package/lib/workflow-program/workflow-program.component.d.ts +9 -9
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/lib/workflow-services/policy.service.d.ts +1 -1
- package/lib/workflow-services/programs.service.d.ts +54 -13
- package/lib/workflow-services/responsibility.service.d.ts +4 -17
- package/package.json +1 -1
- package/esm2022/lib/interfaces/frequency.interface.mjs +0 -2
- package/esm2022/lib/interfaces/iframe-type.mjs +0 -7
- package/esm2022/lib/sharedComponents/list-container/list-container.component.mjs +0 -52
- package/esm2022/lib/sharedComponents/program-list/constant.mjs +0 -27
- package/esm2022/lib/sharedComponents/program-list/interfaces/data-source.interface.mjs +0 -2
- package/esm2022/lib/sharedComponents/program-list/interfaces/list-item.interface.mjs +0 -2
- package/esm2022/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.mjs +0 -23
- package/esm2022/lib/sharedComponents/program-list/program-list/program-list.component.mjs +0 -273
- package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +0 -51
- package/esm2022/lib/sharedComponents/program-list/services/list-utils.service.mjs +0 -27
- package/esm2022/lib/sharedComponents/program-list/services/program-list-api.service.mjs +0 -32
- package/esm2022/lib/ui-kit/loaders/loaders.module.mjs +0 -24
- package/esm2022/lib/ui-kit/loaders/table-loader/table-loader.component.mjs +0 -19
- package/esm2022/lib/workflow/shared/workflow-pipes/get-user-details.pipe.mjs +0 -26
- package/lib/interfaces/frequency.interface.d.ts +0 -37
- package/lib/interfaces/iframe-type.d.ts +0 -5
- package/lib/sharedComponents/list-container/list-container.component.d.ts +0 -9
- package/lib/sharedComponents/program-list/constant.d.ts +0 -20
- package/lib/sharedComponents/program-list/interfaces/data-source.interface.d.ts +0 -4
- package/lib/sharedComponents/program-list/interfaces/list-item.interface.d.ts +0 -5
- package/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.d.ts +0 -7
- package/lib/sharedComponents/program-list/program-list/program-list.component.d.ts +0 -126
- package/lib/sharedComponents/program-list/program-list.module.d.ts +0 -15
- package/lib/sharedComponents/program-list/services/list-utils.service.d.ts +0 -7
- package/lib/sharedComponents/program-list/services/program-list-api.service.d.ts +0 -14
- package/lib/ui-kit/loaders/loaders.module.d.ts +0 -8
- package/lib/ui-kit/loaders/table-loader/table-loader.component.d.ts +0 -9
- package/lib/workflow/shared/workflow-pipes/get-user-details.pipe.d.ts +0 -7
|
@@ -160,9 +160,9 @@ export class MoreOptionComponent {
|
|
|
160
160
|
},
|
|
161
161
|
{
|
|
162
162
|
imageUrl: ASSETS.link_items,
|
|
163
|
-
name: 'LINK PROGRAMS',
|
|
164
|
-
tooltipTitle: 'LINK PROGRAMS',
|
|
165
|
-
tooltipMessage: `This option allows you to associate Programs from the Compliance module with a policy. These could be processes or procedures that might be linked to a policy.`,
|
|
163
|
+
name: 'LINK PROGRAMS & RESPONSIBILITIES',
|
|
164
|
+
tooltipTitle: 'LINK PROGRAMS & RESPONSIBILITIES',
|
|
165
|
+
tooltipMessage: `This option allows you to associate Programs & responsibilities from the Compliance module with a policy. These could be processes or procedures that might be linked to a policy.`,
|
|
166
166
|
checked: false,
|
|
167
167
|
hidden: false,
|
|
168
168
|
code: 'LINK_PROGRAM_RESPONSIBILITIES',
|
|
@@ -251,7 +251,30 @@ export class MoreOptionComponent {
|
|
|
251
251
|
disabledMessage: 'An assessment can be linked with a responsibility only after removing the associated checkpoints.',
|
|
252
252
|
},
|
|
253
253
|
{
|
|
254
|
-
imageUrl:
|
|
254
|
+
imageUrl: ASSETS.checkpoints,
|
|
255
|
+
// name: 'Checkpoints <span *ngIf="false" class="checkpoint-version">V2.0</span> <i class="icons depreciation-icon vx-fs-16 vx-ml-2" appTooltip="This is an out-of-date version of the Checkpoints feature. To add checkpoints that are only relevant to this responsibility you can use the new Checkpoints feature. Alternatively, you can use an existing questionnaire template using the Assessments feature." placement="bottom" delay="0" [tooltipMandatory]="true"></i>',
|
|
256
|
+
name: 'Checkpoints <i class="icons depreciation-icon vx-fs-16 vx-ml-2" appTooltip="This is an out-of-date version of the Checkpoints feature. To add checkpoints that are only relevant to this responsibility you can use the new Checkpoints feature. Alternatively, you can use an existing questionnaire template using the Assessments feature." placement="bottom" delay="0" [tooltipMandatory]="true"></i>',
|
|
257
|
+
code: 'CHECKPOINTS',
|
|
258
|
+
tooltipTitle: 'Checkpoints',
|
|
259
|
+
tooltipMessage: 'This is an out-of-date version of the Checkpoints feature. To add checkpoints that are only relevant to this responsibility you can use the new Checkpoints feature. Alternatively, you can use an existing questionnaire template using the Assessments feature.',
|
|
260
|
+
checked: false,
|
|
261
|
+
hidden: false,
|
|
262
|
+
isDisabled: false,
|
|
263
|
+
disabledMessage: 'The checkpoints feature is replaced with the new & enhanced assessment functionality. Select the <strong>Assessments</strong> option below to create interactive outcome-based or self-assessment questionnaires.',
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
imageUrl: ASSETS.checkpoints,
|
|
267
|
+
name: 'Checkpoints',
|
|
268
|
+
code: 'CHECKPOINTS_NEW',
|
|
269
|
+
tooltipTitle: 'Checkpoints',
|
|
270
|
+
tooltipMessage: 'Checkpoints allow you to specify multiple steps for a specific responsibility which need to be completed as part of completing the responsibility. Often checkpoints are used to replace instruction manuals.',
|
|
271
|
+
checked: false,
|
|
272
|
+
hidden: false,
|
|
273
|
+
isDisabled: false,
|
|
274
|
+
disabledMessage: 'New Checkpoints can be linked with a responsibility only after removing the out-of-date version of the Checkpoints.',
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
imageUrl: ASSETS.risks,
|
|
255
278
|
name: 'Risk Classification',
|
|
256
279
|
tooltipTitle: 'Risk Classification',
|
|
257
280
|
tooltipMessage: 'You can specify the level of risk that the organization will be exposed to if the responsibility is not completed.',
|
|
@@ -280,7 +303,27 @@ export class MoreOptionComponent {
|
|
|
280
303
|
code: 'OVERSEER',
|
|
281
304
|
},
|
|
282
305
|
{
|
|
283
|
-
imageUrl:
|
|
306
|
+
imageUrl: ASSETS.audit,
|
|
307
|
+
name: 'ASSURANCE',
|
|
308
|
+
tooltipTitle: 'ASSURANCE',
|
|
309
|
+
tooltipMessage: 'Select the test plan categories that you would like to add this responsibility to.',
|
|
310
|
+
checked: false,
|
|
311
|
+
hidden: false,
|
|
312
|
+
code: 'ASSURANCE',
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
imageUrl: ASSETS.audit,
|
|
316
|
+
name: 'REQUIRES AUDIT?',
|
|
317
|
+
tooltipTitle: 'REQUIRES AUDIT?',
|
|
318
|
+
tooltipMessage: 'Select the audit categories that you would like to add this responsibility to.',
|
|
319
|
+
checked: false,
|
|
320
|
+
hidden: false,
|
|
321
|
+
code: 'REQUIRES_AUDIT',
|
|
322
|
+
isDisabled: true,
|
|
323
|
+
disabledMessage: 'This responsibility can be scheduled for an audit only after the Responsibility Center is selected.',
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
imageUrl: ASSETS.link_items,
|
|
284
327
|
name: 'LINK GRC OBJECT(S)',
|
|
285
328
|
tooltipTitle: 'LINK OTHER GRC OBJECTS',
|
|
286
329
|
tooltipMessage: `This option lets you link a responsibility with related GRC Objects.`,
|
|
@@ -375,7 +418,16 @@ export class MoreOptionComponent {
|
|
|
375
418
|
],
|
|
376
419
|
CAPR: [
|
|
377
420
|
{
|
|
378
|
-
imageUrl:
|
|
421
|
+
imageUrl: ASSETS.roles,
|
|
422
|
+
name: 'Role(S)',
|
|
423
|
+
tooltipTitle: 'Role(s)',
|
|
424
|
+
tooltipMessage: `Role(s) let you specify the users that can be “Owners” of a Program.`,
|
|
425
|
+
checked: false,
|
|
426
|
+
hidden: false,
|
|
427
|
+
code: 'ROLES',
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
imageUrl: ASSETS.case_owners,
|
|
379
431
|
name: 'Owner(s)',
|
|
380
432
|
tooltipTitle: 'Owner(s)',
|
|
381
433
|
tooltipMessage: `Owners are responsible for managing a Program. Only Owners can make changes to a Program and the responsibilities that are linked with the Program.<br>
|
|
@@ -389,10 +441,100 @@ export class MoreOptionComponent {
|
|
|
389
441
|
imageUrl: 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/collaborator.svg',
|
|
390
442
|
name: 'Collaborators',
|
|
391
443
|
tooltipTitle: 'Collaborators',
|
|
392
|
-
tooltipMessage:
|
|
444
|
+
tooltipMessage: `<strong>Collaborators</strong> can only access responsibilities in this program where they are directly involved, such as creator, reviewer, assignor, oversight user, or collaborator.<br>
|
|
445
|
+
<br>
|
|
446
|
+
This role is ideal for users who need to work on specific tasks but shouldn't see the entire program’s contents.
|
|
447
|
+
<br>
|
|
448
|
+
<br>
|
|
449
|
+
<em>Example:</em> In an AML (Anti-Money Laundering) program, the Finance lead added as a collaborator will only see responsibilities related to financial reporting or audits they are linked to, not those owned by Legal or Compliance.`,
|
|
393
450
|
checked: false,
|
|
394
451
|
hidden: false,
|
|
395
|
-
code: '
|
|
452
|
+
code: 'COLLABORATOR',
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
imageUrl: ASSETS.approval,
|
|
456
|
+
name: 'Approver',
|
|
457
|
+
tooltipTitle: 'Approver',
|
|
458
|
+
tooltipMessage: `An Approver is responsible for approving a Program. Where an Approver is selected, the Program and all responsibilities linked with that Program will only commence once the Program has been approved.`,
|
|
459
|
+
checked: false,
|
|
460
|
+
hidden: true,
|
|
461
|
+
code: 'APPROVER',
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
imageUrl: ASSETS.recurring,
|
|
465
|
+
name: 'Program Duration',
|
|
466
|
+
tooltipTitle: 'Program Duration',
|
|
467
|
+
tooltipMessage: 'Program Duration refers to the duration of the Program. A Program can occur in perpetuity, or it can occur until the end of the current business cycle that has been specified in ' +
|
|
468
|
+
this.businessCycle?.selectedCycle?.business_cycle +
|
|
469
|
+
'. All responsibilities linked with that Program will also have the same Program Duration.',
|
|
470
|
+
checked: false,
|
|
471
|
+
hidden: true,
|
|
472
|
+
code: 'PROGRAM_FREQUENCY',
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
imageUrl: ASSETS.lock_scope,
|
|
476
|
+
name: 'Lock the Program Scope',
|
|
477
|
+
tooltipTitle: 'Lock the Program Scope',
|
|
478
|
+
tooltipMessage: `If the Program Scope is locked, neither the Program nor the responsibilities linked with the Program can be edited once the Program begins. In order to edit the Program or the linked responsibilities, the Program details will need to be edited.`,
|
|
479
|
+
checked: false,
|
|
480
|
+
hidden: true,
|
|
481
|
+
code: 'SCOPE_CHANGES',
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
imageUrl: ASSETS.responsibility_center,
|
|
485
|
+
name: 'Responsibility Center',
|
|
486
|
+
tooltipTitle: 'Responsibility Center',
|
|
487
|
+
tooltipMessage: `Responsibility Centers represent your organizational and operational infrastructure. Where Responsibility Centers are selected when creating a Program, only those Responsibilities Centers will be available for selection when creating a responsibility linked with the Program.`,
|
|
488
|
+
checked: false,
|
|
489
|
+
hidden: true,
|
|
490
|
+
code: 'RC',
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
imageUrl: ASSETS.case_assignees,
|
|
494
|
+
name: 'Assignees',
|
|
495
|
+
tooltipTitle: 'Assignees',
|
|
496
|
+
tooltipMessage: `Assignees are required to complete the responsibilities that have been assigned to them. Where Assignees are selected when creating a Program, only those Assignees will be available for selection when creating a responsibility linked with the Program.`,
|
|
497
|
+
checked: false,
|
|
498
|
+
hidden: true,
|
|
499
|
+
code: 'ASSIGNEES',
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
imageUrl: ASSETS.reviewer,
|
|
503
|
+
name: 'Reviewers',
|
|
504
|
+
tooltipTitle: 'Reviewers',
|
|
505
|
+
tooltipMessage: `Reviewers are required to review responsibilities after they have been completed. Where Reviewers are selected when creating a Program, only those Reviewers will be available for selection when creating a responsibility linked with the Program.`,
|
|
506
|
+
checked: false,
|
|
507
|
+
hidden: true,
|
|
508
|
+
code: 'REVIEWER',
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
imageUrl: ASSETS.oversight,
|
|
512
|
+
name: 'Oversights',
|
|
513
|
+
tooltipTitle: 'Oversights',
|
|
514
|
+
tooltipMessage: 'Oversights receive updates when a responsibility is completed, completed with delay or not completed. Where Oversights are selected when creating a Program, only those Oversights will be available for selection when creating a responsibility linked with the Program.',
|
|
515
|
+
checked: false,
|
|
516
|
+
hidden: true,
|
|
517
|
+
code: 'OVERSEER',
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
imageUrl: ASSETS.assessments,
|
|
521
|
+
name: 'Assessments',
|
|
522
|
+
code: 'ASSESSMENT',
|
|
523
|
+
tooltipTitle: ' Assessments',
|
|
524
|
+
tooltipMessage: 'Assessments are a digital form that are created in “Assessment” within the Compliance Module. Where Assessments are selected when creating a Program, only those Assessments will be available for selection when creating a responsibility linked with the Program.',
|
|
525
|
+
checked: false,
|
|
526
|
+
hidden: true,
|
|
527
|
+
isDisabled: false,
|
|
528
|
+
disabledMessage: 'An assessment can be linked with a responsibility only after removing the associated checkpoints.',
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
imageUrl: ASSETS.format_evidence,
|
|
532
|
+
name: 'Evidence',
|
|
533
|
+
code: 'FORMATE_EVIDENCE',
|
|
534
|
+
tooltipTitle: 'Evidence',
|
|
535
|
+
tooltipMessage: 'If selected, evidence of completion of a responsibility will be required for all responsibilities that are linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.',
|
|
536
|
+
checked: false,
|
|
537
|
+
hidden: true,
|
|
396
538
|
},
|
|
397
539
|
{
|
|
398
540
|
imageUrl: ASSETS.custom_fields,
|
|
@@ -582,7 +724,7 @@ export class MoreOptionComponent {
|
|
|
582
724
|
// if(ele.code === 'ASSURANCE') {
|
|
583
725
|
// ele.checked = false;
|
|
584
726
|
// }
|
|
585
|
-
if (['GRC_OBJECTS'].includes(ele.code)) {
|
|
727
|
+
if (['REQUIRES_AUDIT', 'GRC_OBJECTS'].includes(ele.code)) {
|
|
586
728
|
ele.checked = false;
|
|
587
729
|
}
|
|
588
730
|
});
|
|
@@ -604,7 +746,7 @@ export class MoreOptionComponent {
|
|
|
604
746
|
// if(ele.code === 'ASSURANCE') {
|
|
605
747
|
// ele.isDisabled = false;
|
|
606
748
|
// }
|
|
607
|
-
if (['GRC_OBJECTS'].includes(ele.code)) {
|
|
749
|
+
if (['REQUIRES_AUDIT', 'GRC_OBJECTS'].includes(ele.code)) {
|
|
608
750
|
ele.isDisabled = false;
|
|
609
751
|
}
|
|
610
752
|
});
|
|
@@ -635,6 +777,28 @@ export class MoreOptionComponent {
|
|
|
635
777
|
this.ff_rc_listing
|
|
636
778
|
? (this.permissionText = 'Permissions')
|
|
637
779
|
: (this.permissionText = 'Permission Group(S)');
|
|
780
|
+
this.moreOptionsList.CAPR[0].name = this.permissionText;
|
|
781
|
+
this.moreOptionsList.CAPR[0].tooltipTitle = this.permissionText;
|
|
782
|
+
this.moreOptionsList.CAPR[1].tooltipMessage = this.featureflagrole
|
|
783
|
+
? `Owners are responsible for managing a Program. Only Owners can make changes to a Program and the responsibilities that are linked with the Program.<br>
|
|
784
|
+
The <b>Key Power User </b> and all <b>Power Users</b> will be selected as the Owners of a Program by default.
|
|
785
|
+
`
|
|
786
|
+
: `Owners are responsible for managing a Program. Only Owners can make changes to a Program and the responsibilities that are linked with the Program.<br>
|
|
787
|
+
The <b>Key Admin</b> and all <b>Admin</b> users will be selected as the Owners of a Program by default.
|
|
788
|
+
`;
|
|
789
|
+
if (this.allowedFeature?.isFeatureEnabled('ff_program_simplify')) {
|
|
790
|
+
this.moreOptionsList.CAPR[0].tooltipMessage = `${this.permissionText} let you specify the users that can be “Owners” of a Program.`;
|
|
791
|
+
}
|
|
792
|
+
else {
|
|
793
|
+
this.moreOptionsList.CAPR[0].tooltipMessage = `${this.permissionText} let you specify the users that can be “Owners” and “Approvers” of a Program.`;
|
|
794
|
+
}
|
|
795
|
+
const index = this.moreOptionsList.CAR.findIndex((ele) => ele.code === 'CHECKPOINTS');
|
|
796
|
+
this.moreOptionsList.CAR[index].hidden =
|
|
797
|
+
this.isEditMode === false ? true : false;
|
|
798
|
+
const ProgramIndex = this.moreOptionsList.CAR.findIndex((ele) => ele.code === 'PROGRAM');
|
|
799
|
+
if (ProgramIndex > -1) {
|
|
800
|
+
this.moreOptionsList.CAR[ProgramIndex].isDisabled = this.isEditMode;
|
|
801
|
+
}
|
|
638
802
|
this.programSimplifyFlag =
|
|
639
803
|
this.allowedFeature?.isFeatureEnabled('ff_program_simplify') ?? true;
|
|
640
804
|
}
|
|
@@ -722,13 +886,29 @@ export class MoreOptionComponent {
|
|
|
722
886
|
'ASSESSMENT',
|
|
723
887
|
'FORMATE_EVIDENCE',
|
|
724
888
|
];
|
|
889
|
+
if (this.orgDetails?.hasProgramFullPermission &&
|
|
890
|
+
this.allowedFeature.isFeatureEnabled('ff_program_simplify')) {
|
|
891
|
+
this.moreOptionsList?.CAPR?.forEach((option) => {
|
|
892
|
+
if (code?.includes(option.code)) {
|
|
893
|
+
option.hidden = false;
|
|
894
|
+
}
|
|
895
|
+
});
|
|
896
|
+
}
|
|
897
|
+
if (!this.allowedFeature.isFeatureEnabled('ff_program_simplify')) {
|
|
898
|
+
code.push('APPROVER');
|
|
899
|
+
this.moreOptionsList?.CAPR?.forEach((option) => {
|
|
900
|
+
if (code?.includes(option.code)) {
|
|
901
|
+
option.hidden = false;
|
|
902
|
+
}
|
|
903
|
+
});
|
|
904
|
+
}
|
|
725
905
|
}
|
|
726
906
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MoreOptionComponent, deps: [{ token: i1.ReportACaseService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
727
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MoreOptionComponent, selector: "app-more-option", inputs: { currentWorkflow: "currentWorkflow", openedFrom: "openedFrom", isEditMode: "isEditMode", isRCSelected: "isRCSelected", isProgramSelected: "isProgramSelected", allowedFeature: "allowedFeature", getOrganizationDetails: ["orgDetailsData", "getOrganizationDetails"], isAttributesAvailable: "isAttributesAvailable" }, outputs: { selectedOption: "selectedOption" }, usesOnChanges: true, ngImport: i0, template: "<!-- <p>more-option works!</p> -->\n<div class=\"more-option\">\n <div class=\"message-container\">\n <img [src]=\"ASSETS.add_risk_more_option\" alt=\"\" />\n <p *ngIf=\"currentWorkflow\">{{ placeholderTexts[currentWorkflow] }}</p>\n </div>\n <div class=\"more-options\">\n <ul>\n <!-- <div class=\"more-options-heading\" *ngIf=\"currentWorkflow ==='CAPR'\">PROGRAM SCOPE OPTIONS</div> -->\n <ng-container\n *ngFor=\"let data of moreOptionsList[currentWorkflow]; let i = index\"\n >\n <!-- <li *ngIf=\"!data.hidden\" [appTooltip]=\"data.isDisabled && !isRcSelected? 'This responsibility can be scheduled for an audit only after the Responsibility Center is selected.' : ''\" placement=\"right\" delay=\"0\" [tooltipMandatory]=\"data.isDisabled && !isRcSelected\">\n <button [class.active]=\"data.checked\" [disabled]=\"data.code === 'RC' && openedFrom === 'RISK_TREATMENT' && currentWorkflow === 'CAR' || (data.isDisabled && !isRCSelected)\" [class.disabled]=\"data.isDisabled && !isRCSelected\" (click)=\"data.checked = !data.checked; selectMoreOption(data)\"> -->\n\n <li\n *ngIf=\"!data.hidden\"\n [appTooltip]=\"\n data.isDisabled ||\n (((data.code === 'RC' && !isRcSelected) ||\n data.code === 'ATTRIBUTES') &&\n data.isDisabled)\n ? data?.disabledMessage\n : ''\n \"\n placement=\"right\"\n delay=\"0\"\n [tooltipMandatory]=\"data.isDisabled\"\n id=\"listdata\"\n >\n <button\n [class.active]=\"data.checked\"\n [disabled]=\"\n (data.code === 'RC' &&\n openedFrom === 'RISK_TREATMENT' &&\n currentWorkflow === 'CAR') ||\n data.isDisabled ||\n (data.isDisabled && !isRCSelected)\n \"\n (click)=\"selectMoreOption(data, i)\"\n >\n <span *ngIf=\"!data.checked\" class=\"more-icon\">\n <img [src]=\"data.imageUrl\" alt=\"\" />\n </span>\n <svg\n *ngIf=\"data.checked\"\n class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"checkIcon__circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"checkIcon__check\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n <span\n class=\"value\"\n [innerHTML]=\"data?.name\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"false\"\n ></span>\n <!-- <span *ngIf=\"data.code ==='CHECKPOINTS_NEW'\" class=\"checkpoint-version\"> V2.0</span> -->\n </button>\n <span\n class=\"icon\"\n *ngIf=\"data.tooltipMessage !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\"></i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-head\"\n [innerHTML]=\"data.tooltipTitle\"\n ></div>\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"data.tooltipMessage\"\n ></div>\n </div>\n </popover-hover>\n </li>\n \n </ng-container>\n </ul>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";::ng-deep .more-option{align-items:center;position:relative;padding:0;display:block;height:auto}::ng-deep .more-option .message-container{text-align:center;position:static;padding:0 0 20px;top:0;left:0;right:0}::ng-deep .more-option .message-container img{width:163px;margin-bottom:13px;display:inline-block}@media screen and (max-height: 900px){::ng-deep .more-option .message-container img{width:120px;margin-bottom:8px}}::ng-deep .more-option .message-container p{font-size:12px;font-weight:300;font-style:italic;color:#707070;margin:0;padding:0;line-height:18px}::ng-deep .more-option .more-options{display:block;background:#fff;margin-left:-38px;padding:20px 0 20px 16px;position:relative;width:calc(100% + 60px);border-radius:16px 0 0 16px}::ng-deep .more-option .more-options:before{content:\"\";position:absolute;left:0;top:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-bottom:8px solid transparent;border-bottom-right-radius:46px}::ng-deep .more-option .more-options:after{content:\"\";position:absolute;left:0;bottom:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-top:8px solid transparent;border-top-right-radius:46px}@media screen and (max-width: 2550px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1920px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1600px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1440px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1366px){::ng-deep .more-option .more-options{margin-top:0}}::ng-deep .more-option .more-options ul{padding:0 32px 0 0;margin:0;overflow-y:auto}::ng-deep .more-option .more-options ul::-webkit-scrollbar{width:0;background-color:transparent}::ng-deep .more-option .more-options ul::-webkit-scrollbar-thumb{border-radius:1px;background-color:#dbdbdb}::ng-deep .more-option .more-options ul .more-options-heading{color:#747576;font-size:11px;font-weight:500;text-transform:uppercase;margin-bottom:8px}::ng-deep .more-option .more-options ul li{position:relative;list-style:none;display:flex;align-items:center}::ng-deep .more-option .more-options ul li button{display:flex;outline:none;background:transparent;cursor:pointer;align-items:center;justify-content:flex-start;margin:0;width:100%;border:none;padding:4px 11px 4px 4px;border:1px solid #f1f1f1;border-radius:4px}::ng-deep .more-option .more-options ul li button.active{background:#fbfbfb}::ng-deep .more-option .more-options ul li button span.more-icon{height:32px;width:32px;display:flex;margin-right:12px;align-items:center;justify-content:center}::ng-deep .more-option .more-options ul li button img{width:100%}::ng-deep .more-option .more-options ul li button .checkIcon{width:24px;height:24px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin:4px 16px 4px 4px}::ng-deep .more-option .more-options ul li button .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .more-option .more-options ul li button .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .more-option .more-options ul li button span.value{line-height:18px;color:#161b2f;font-size:11px;font-weight:500;text-transform:uppercase;width:calc(100% - 72px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;text-align:left}::ng-deep .more-option .more-options ul li button span.value i.depreciation-icon{color:#e4b700}::ng-deep .more-option .more-options ul li button .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .more-option .more-options ul li button:disabled{background:#f8f8f8;pointer-events:none}::ng-deep .more-option .more-options ul li button:disabled span{opacity:.3}::ng-deep .more-option .more-options ul li+li{margin-top:8px}::ng-deep .more-option .more-options ul li .vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block}::ng-deep .more-option .more-options ul li .vx-info-card-head{font-size:13px;border-bottom:1px solid #dcdcdc;padding:8px 12px;font-weight:500;text-transform:none;color:#161b2f}::ng-deep .more-option .more-options ul li .vx-info-card-body{font-size:11px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}::ng-deep .more-option .more-options ul li span.icon{color:#1e5dd3;font-size:12px;line-height:12px;cursor:pointer;position:absolute;top:calc(50% - 6px);right:12px;height:12px;width:12px}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes animate{0%{transform:translate(281px)}to{transform:translate(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i4.PopoverHoverComponent, selector: "popover-hover" }, { kind: "directive", type: i5.PopoverHoverDirective, selector: "[libPopoverHover]", inputs: ["placement"] }] }); }
|
|
907
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MoreOptionComponent, selector: "app-more-option", inputs: { currentWorkflow: "currentWorkflow", openedFrom: "openedFrom", isEditMode: "isEditMode", isRCSelected: "isRCSelected", isProgramSelected: "isProgramSelected", allowedFeature: "allowedFeature", getOrganizationDetails: ["orgDetailsData", "getOrganizationDetails"], isAttributesAvailable: "isAttributesAvailable" }, outputs: { selectedOption: "selectedOption" }, usesOnChanges: true, ngImport: i0, template: "<!-- <p>more-option works!</p> -->\n<div class=\"more-option\">\n <div class=\"message-container\">\n <img [src]=\"ASSETS.add_risk_more_option\" alt=\"\" />\n <p *ngIf=\"currentWorkflow\">{{ placeholderTexts[currentWorkflow] }}</p>\n </div>\n <div class=\"more-options\">\n <ul>\n <!-- <div class=\"more-options-heading\" *ngIf=\"currentWorkflow ==='CAPR'\">PROGRAM SCOPE OPTIONS</div> -->\n <ng-container\n *ngFor=\"let data of moreOptionsList[currentWorkflow]; let i = index\"\n >\n <!-- <li *ngIf=\"!data.hidden\" [appTooltip]=\"data.isDisabled && !isRcSelected? 'This responsibility can be scheduled for an audit only after the Responsibility Center is selected.' : ''\" placement=\"right\" delay=\"0\" [tooltipMandatory]=\"data.isDisabled && !isRcSelected\">\n <button [class.active]=\"data.checked\" [disabled]=\"data.code === 'RC' && openedFrom === 'RISK_TREATMENT' && currentWorkflow === 'CAR' || (data.isDisabled && !isRCSelected)\" [class.disabled]=\"data.isDisabled && !isRCSelected\" (click)=\"data.checked = !data.checked; selectMoreOption(data)\"> -->\n\n <li\n *ngIf=\"!data.hidden\"\n [appTooltip]=\"\n data.isDisabled ||\n (((data.code === 'RC' && !isRcSelected) ||\n data.code === 'ATTRIBUTES') &&\n data.isDisabled)\n ? data?.disabledMessage\n : ''\n \"\n placement=\"right\"\n delay=\"0\"\n [tooltipMandatory]=\"data.isDisabled\"\n id=\"listdata\"\n >\n <button\n [class.active]=\"data.checked\"\n [disabled]=\"\n (data.code === 'RC' &&\n openedFrom === 'RISK_TREATMENT' &&\n currentWorkflow === 'CAR') ||\n data.isDisabled ||\n (data.isDisabled && !isRCSelected)\n \"\n (click)=\"selectMoreOption(data, i)\"\n >\n <span *ngIf=\"!data.checked\" class=\"more-icon\">\n <img [src]=\"data.imageUrl\" alt=\"\" />\n </span>\n <svg\n *ngIf=\"data.checked\"\n class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"checkIcon__circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"checkIcon__check\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n <span\n class=\"value\"\n [innerHTML]=\"data?.name\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"false\"\n ></span>\n <!-- <span *ngIf=\"data.code ==='CHECKPOINTS_NEW'\" class=\"checkpoint-version\"> V2.0</span> -->\n </button>\n <span\n class=\"icon\"\n *ngIf=\"data.tooltipMessage !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\"></i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-head\"\n [innerHTML]=\"data.tooltipTitle\"\n ></div>\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"data.tooltipMessage\"\n ></div>\n </div>\n </popover-hover>\n </li>\n <div\n class=\"more-options-heading vx-mt-2\"\n *ngIf=\"currentWorkflow === 'CAPR' && i === 2\"\n >\n PROGRAM SCOPE OPTIONS\n </div>\n </ng-container>\n </ul>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";::ng-deep .more-option{align-items:center;position:relative;padding:0;display:block;height:auto}::ng-deep .more-option .message-container{text-align:center;position:static;padding:0 0 20px;top:0;left:0;right:0}::ng-deep .more-option .message-container img{width:163px;margin-bottom:13px;display:inline-block}@media screen and (max-height: 900px){::ng-deep .more-option .message-container img{width:120px;margin-bottom:8px}}::ng-deep .more-option .message-container p{font-size:12px;font-weight:300;font-style:italic;color:#707070;margin:0;padding:0;line-height:18px}::ng-deep .more-option .more-options{display:block;background:#fff;margin-left:-38px;padding:20px 0 20px 16px;position:relative;width:calc(100% + 60px);border-radius:16px 0 0 16px}::ng-deep .more-option .more-options:before{content:\"\";position:absolute;left:0;top:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-bottom:8px solid transparent;border-bottom-right-radius:46px}::ng-deep .more-option .more-options:after{content:\"\";position:absolute;left:0;bottom:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-top:8px solid transparent;border-top-right-radius:46px}@media screen and (max-width: 2550px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1920px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1600px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1440px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1366px){::ng-deep .more-option .more-options{margin-top:0}}::ng-deep .more-option .more-options ul{padding:0 32px 0 0;margin:0;overflow-y:auto}::ng-deep .more-option .more-options ul::-webkit-scrollbar{width:0;background-color:transparent}::ng-deep .more-option .more-options ul::-webkit-scrollbar-thumb{border-radius:1px;background-color:#dbdbdb}::ng-deep .more-option .more-options ul .more-options-heading{color:#747576;font-size:11px;font-weight:500;text-transform:uppercase;margin-bottom:8px}::ng-deep .more-option .more-options ul li{position:relative;list-style:none;display:flex;align-items:center}::ng-deep .more-option .more-options ul li button{display:flex;outline:none;background:transparent;cursor:pointer;align-items:center;justify-content:flex-start;margin:0;width:100%;border:none;padding:4px 11px 4px 4px;border:1px solid #f1f1f1;border-radius:4px}::ng-deep .more-option .more-options ul li button.active{background:#fbfbfb}::ng-deep .more-option .more-options ul li button span.more-icon{height:32px;width:32px;display:flex;margin-right:12px;align-items:center;justify-content:center}::ng-deep .more-option .more-options ul li button img{width:100%}::ng-deep .more-option .more-options ul li button .checkIcon{width:24px;height:24px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin:4px 16px 4px 4px}::ng-deep .more-option .more-options ul li button .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .more-option .more-options ul li button .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .more-option .more-options ul li button span.value{line-height:18px;color:#161b2f;font-size:11px;font-weight:500;text-transform:uppercase;width:calc(100% - 72px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;text-align:left}::ng-deep .more-option .more-options ul li button span.value i.depreciation-icon{color:#e4b700}::ng-deep .more-option .more-options ul li button .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .more-option .more-options ul li button:disabled{background:#f8f8f8;pointer-events:none}::ng-deep .more-option .more-options ul li button:disabled span{opacity:.3}::ng-deep .more-option .more-options ul li+li{margin-top:8px}::ng-deep .more-option .more-options ul li .vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block}::ng-deep .more-option .more-options ul li .vx-info-card-head{font-size:13px;border-bottom:1px solid #dcdcdc;padding:8px 12px;font-weight:500;text-transform:none;color:#161b2f}::ng-deep .more-option .more-options ul li .vx-info-card-body{font-size:11px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}::ng-deep .more-option .more-options ul li span.icon{color:#1e5dd3;font-size:12px;line-height:12px;cursor:pointer;position:absolute;top:calc(50% - 6px);right:12px;height:12px;width:12px}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes animate{0%{transform:translate(281px)}to{transform:translate(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i4.PopoverHoverComponent, selector: "popover-hover" }, { kind: "directive", type: i5.PopoverHoverDirective, selector: "[libPopoverHover]", inputs: ["placement"] }] }); }
|
|
728
908
|
}
|
|
729
909
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MoreOptionComponent, decorators: [{
|
|
730
910
|
type: Component,
|
|
731
|
-
args: [{ selector: 'app-more-option', template: "<!-- <p>more-option works!</p> -->\n<div class=\"more-option\">\n <div class=\"message-container\">\n <img [src]=\"ASSETS.add_risk_more_option\" alt=\"\" />\n <p *ngIf=\"currentWorkflow\">{{ placeholderTexts[currentWorkflow] }}</p>\n </div>\n <div class=\"more-options\">\n <ul>\n <!-- <div class=\"more-options-heading\" *ngIf=\"currentWorkflow ==='CAPR'\">PROGRAM SCOPE OPTIONS</div> -->\n <ng-container\n *ngFor=\"let data of moreOptionsList[currentWorkflow]; let i = index\"\n >\n <!-- <li *ngIf=\"!data.hidden\" [appTooltip]=\"data.isDisabled && !isRcSelected? 'This responsibility can be scheduled for an audit only after the Responsibility Center is selected.' : ''\" placement=\"right\" delay=\"0\" [tooltipMandatory]=\"data.isDisabled && !isRcSelected\">\n <button [class.active]=\"data.checked\" [disabled]=\"data.code === 'RC' && openedFrom === 'RISK_TREATMENT' && currentWorkflow === 'CAR' || (data.isDisabled && !isRCSelected)\" [class.disabled]=\"data.isDisabled && !isRCSelected\" (click)=\"data.checked = !data.checked; selectMoreOption(data)\"> -->\n\n <li\n *ngIf=\"!data.hidden\"\n [appTooltip]=\"\n data.isDisabled ||\n (((data.code === 'RC' && !isRcSelected) ||\n data.code === 'ATTRIBUTES') &&\n data.isDisabled)\n ? data?.disabledMessage\n : ''\n \"\n placement=\"right\"\n delay=\"0\"\n [tooltipMandatory]=\"data.isDisabled\"\n id=\"listdata\"\n >\n <button\n [class.active]=\"data.checked\"\n [disabled]=\"\n (data.code === 'RC' &&\n openedFrom === 'RISK_TREATMENT' &&\n currentWorkflow === 'CAR') ||\n data.isDisabled ||\n (data.isDisabled && !isRCSelected)\n \"\n (click)=\"selectMoreOption(data, i)\"\n >\n <span *ngIf=\"!data.checked\" class=\"more-icon\">\n <img [src]=\"data.imageUrl\" alt=\"\" />\n </span>\n <svg\n *ngIf=\"data.checked\"\n class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"checkIcon__circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"checkIcon__check\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n <span\n class=\"value\"\n [innerHTML]=\"data?.name\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"false\"\n ></span>\n <!-- <span *ngIf=\"data.code ==='CHECKPOINTS_NEW'\" class=\"checkpoint-version\"> V2.0</span> -->\n </button>\n <span\n class=\"icon\"\n *ngIf=\"data.tooltipMessage !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\"></i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-head\"\n [innerHTML]=\"data.tooltipTitle\"\n ></div>\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"data.tooltipMessage\"\n ></div>\n </div>\n </popover-hover>\n </li>\n
|
|
911
|
+
args: [{ selector: 'app-more-option', template: "<!-- <p>more-option works!</p> -->\n<div class=\"more-option\">\n <div class=\"message-container\">\n <img [src]=\"ASSETS.add_risk_more_option\" alt=\"\" />\n <p *ngIf=\"currentWorkflow\">{{ placeholderTexts[currentWorkflow] }}</p>\n </div>\n <div class=\"more-options\">\n <ul>\n <!-- <div class=\"more-options-heading\" *ngIf=\"currentWorkflow ==='CAPR'\">PROGRAM SCOPE OPTIONS</div> -->\n <ng-container\n *ngFor=\"let data of moreOptionsList[currentWorkflow]; let i = index\"\n >\n <!-- <li *ngIf=\"!data.hidden\" [appTooltip]=\"data.isDisabled && !isRcSelected? 'This responsibility can be scheduled for an audit only after the Responsibility Center is selected.' : ''\" placement=\"right\" delay=\"0\" [tooltipMandatory]=\"data.isDisabled && !isRcSelected\">\n <button [class.active]=\"data.checked\" [disabled]=\"data.code === 'RC' && openedFrom === 'RISK_TREATMENT' && currentWorkflow === 'CAR' || (data.isDisabled && !isRCSelected)\" [class.disabled]=\"data.isDisabled && !isRCSelected\" (click)=\"data.checked = !data.checked; selectMoreOption(data)\"> -->\n\n <li\n *ngIf=\"!data.hidden\"\n [appTooltip]=\"\n data.isDisabled ||\n (((data.code === 'RC' && !isRcSelected) ||\n data.code === 'ATTRIBUTES') &&\n data.isDisabled)\n ? data?.disabledMessage\n : ''\n \"\n placement=\"right\"\n delay=\"0\"\n [tooltipMandatory]=\"data.isDisabled\"\n id=\"listdata\"\n >\n <button\n [class.active]=\"data.checked\"\n [disabled]=\"\n (data.code === 'RC' &&\n openedFrom === 'RISK_TREATMENT' &&\n currentWorkflow === 'CAR') ||\n data.isDisabled ||\n (data.isDisabled && !isRCSelected)\n \"\n (click)=\"selectMoreOption(data, i)\"\n >\n <span *ngIf=\"!data.checked\" class=\"more-icon\">\n <img [src]=\"data.imageUrl\" alt=\"\" />\n </span>\n <svg\n *ngIf=\"data.checked\"\n class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"checkIcon__circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"checkIcon__check\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n <span\n class=\"value\"\n [innerHTML]=\"data?.name\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"false\"\n ></span>\n <!-- <span *ngIf=\"data.code ==='CHECKPOINTS_NEW'\" class=\"checkpoint-version\"> V2.0</span> -->\n </button>\n <span\n class=\"icon\"\n *ngIf=\"data.tooltipMessage !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\"></i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-head\"\n [innerHTML]=\"data.tooltipTitle\"\n ></div>\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"data.tooltipMessage\"\n ></div>\n </div>\n </popover-hover>\n </li>\n <div\n class=\"more-options-heading vx-mt-2\"\n *ngIf=\"currentWorkflow === 'CAPR' && i === 2\"\n >\n PROGRAM SCOPE OPTIONS\n </div>\n </ng-container>\n </ul>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";::ng-deep .more-option{align-items:center;position:relative;padding:0;display:block;height:auto}::ng-deep .more-option .message-container{text-align:center;position:static;padding:0 0 20px;top:0;left:0;right:0}::ng-deep .more-option .message-container img{width:163px;margin-bottom:13px;display:inline-block}@media screen and (max-height: 900px){::ng-deep .more-option .message-container img{width:120px;margin-bottom:8px}}::ng-deep .more-option .message-container p{font-size:12px;font-weight:300;font-style:italic;color:#707070;margin:0;padding:0;line-height:18px}::ng-deep .more-option .more-options{display:block;background:#fff;margin-left:-38px;padding:20px 0 20px 16px;position:relative;width:calc(100% + 60px);border-radius:16px 0 0 16px}::ng-deep .more-option .more-options:before{content:\"\";position:absolute;left:0;top:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-bottom:8px solid transparent;border-bottom-right-radius:46px}::ng-deep .more-option .more-options:after{content:\"\";position:absolute;left:0;bottom:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-top:8px solid transparent;border-top-right-radius:46px}@media screen and (max-width: 2550px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1920px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1600px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1440px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1366px){::ng-deep .more-option .more-options{margin-top:0}}::ng-deep .more-option .more-options ul{padding:0 32px 0 0;margin:0;overflow-y:auto}::ng-deep .more-option .more-options ul::-webkit-scrollbar{width:0;background-color:transparent}::ng-deep .more-option .more-options ul::-webkit-scrollbar-thumb{border-radius:1px;background-color:#dbdbdb}::ng-deep .more-option .more-options ul .more-options-heading{color:#747576;font-size:11px;font-weight:500;text-transform:uppercase;margin-bottom:8px}::ng-deep .more-option .more-options ul li{position:relative;list-style:none;display:flex;align-items:center}::ng-deep .more-option .more-options ul li button{display:flex;outline:none;background:transparent;cursor:pointer;align-items:center;justify-content:flex-start;margin:0;width:100%;border:none;padding:4px 11px 4px 4px;border:1px solid #f1f1f1;border-radius:4px}::ng-deep .more-option .more-options ul li button.active{background:#fbfbfb}::ng-deep .more-option .more-options ul li button span.more-icon{height:32px;width:32px;display:flex;margin-right:12px;align-items:center;justify-content:center}::ng-deep .more-option .more-options ul li button img{width:100%}::ng-deep .more-option .more-options ul li button .checkIcon{width:24px;height:24px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin:4px 16px 4px 4px}::ng-deep .more-option .more-options ul li button .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .more-option .more-options ul li button .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .more-option .more-options ul li button span.value{line-height:18px;color:#161b2f;font-size:11px;font-weight:500;text-transform:uppercase;width:calc(100% - 72px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;text-align:left}::ng-deep .more-option .more-options ul li button span.value i.depreciation-icon{color:#e4b700}::ng-deep .more-option .more-options ul li button .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .more-option .more-options ul li button:disabled{background:#f8f8f8;pointer-events:none}::ng-deep .more-option .more-options ul li button:disabled span{opacity:.3}::ng-deep .more-option .more-options ul li+li{margin-top:8px}::ng-deep .more-option .more-options ul li .vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block}::ng-deep .more-option .more-options ul li .vx-info-card-head{font-size:13px;border-bottom:1px solid #dcdcdc;padding:8px 12px;font-weight:500;text-transform:none;color:#161b2f}::ng-deep .more-option .more-options ul li .vx-info-card-body{font-size:11px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}::ng-deep .more-option .more-options ul li span.icon{color:#1e5dd3;font-size:12px;line-height:12px;cursor:pointer;position:absolute;top:calc(50% - 6px);right:12px;height:12px;width:12px}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes animate{0%{transform:translate(281px)}to{transform:translate(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
|
|
732
912
|
}], ctorParameters: function () { return [{ type: i1.ReportACaseService }]; }, propDecorators: { currentWorkflow: [{
|
|
733
913
|
type: Input
|
|
734
914
|
}], openedFrom: [{
|
|
@@ -749,4 +929,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
749
929
|
}], isAttributesAvailable: [{
|
|
750
930
|
type: Input
|
|
751
931
|
}] } });
|
|
752
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9yZS1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvbW9yZS1vcHRpb24vbW9yZS1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvbW9yZS1vcHRpb24vbW9yZS1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBT3ZELE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsSUFBNkIsc0JBQXNCLENBQUMsT0FBWTtRQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDbEMsSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUU7WUFDM0MsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBbWpCRCxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWprQjFELFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDUCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHNCQUFpQixHQUFHLEtBQUss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ZUFBZSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQzFELE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE1BQU0sSUFBSSxHQUFHO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixJQUFJO1lBQ0osV0FBVztZQUNYLFVBQVU7WUFDVixVQUFVO1lBQ1YsWUFBWTtZQUNaLGtCQUFrQjtTQUNuQixDQUFDO0lBRUosQ0FBQzsrR0F6dkJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDZiQ2xCaEMsdTBIQW9HQTs7NEZEbEZhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7eUdBTWxCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFdUIsc0JBQXNCO3NCQUFsRCxLQUFLO3VCQUFDLGdCQUFnQjtnQkFNZCxxQkFBcUI7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTElOS1MgfSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvY29uc3RhbnRzL2Nkbi1saW5rLmNvbnN0YW50JztcbmltcG9ydCB7IFJlcG9ydEFDYXNlU2VydmljZSB9IGZyb20gJy4uL3JlcG9ydC1hLWNhc2Uvc2VydmljZXMvcmVwb3J0LWEtY2FzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1vcmUtb3B0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vcmUtb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9yZS1vcHRpb24uY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9yZU9wdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBASW5wdXQoKSBjdXJyZW50V29ya2Zsb3cgPSAnJztcbiAgQElucHV0KCkgb3BlbmVkRnJvbSA9ICcnO1xuICBASW5wdXQoKSBpc0VkaXRNb2RlID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZE9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgaXNSQ1NlbGVjdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzUHJvZ3JhbVNlbGVjdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsbG93ZWRGZWF0dXJlOiBhbnk7XG4gIG9yZ0RldGFpbHM6IGFueTtcbiAgQElucHV0KCdvcmdEZXRhaWxzRGF0YScpIHNldCBnZXRPcmdhbml6YXRpb25EZXRhaWxzKGRldGFpbHM6IGFueSkge1xuICAgIHRoaXMub3JnRGV0YWlscyA9IGRldGFpbHMgPz8gJ3t9JztcbiAgICBpZiAoZGV0YWlscyAmJiBPYmplY3Qua2V5cyhkZXRhaWxzKT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb2dyYW1Nb3JlT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBpc0F0dHJpYnV0ZXNBdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBmZWF0dXJlZmxhZ3JvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvZ3JhbVNpbXBsaWZ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuICBmZl9yY19saXN0aW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHBlcm1pc3Npb25UZXh0OiBzdHJpbmcgPSAnUGVybWlzc2lvbnMnO1xuXG4gIHBsYWNlaG9sZGVyVGV4dHM6IGFueSA9IHtcbiAgICBBQVI6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIHJpc2suJyxcbiAgICBDQVA6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIHBvbGljeS4nLFxuICAgIENBUjogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgcmVzcG9uc2liaWxpdHkuJyxcbiAgICBDQVM6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIHN1cnZleS4nLFxuICAgIExBSTogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgaXNzdWUuJyxcbiAgICBDQVBSOiAnU2VsZWN0IHdoYXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIGluIHRoZSBzY29wZS4nLFxuICAgIEdSQzogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgR1JDIE9iamVjdC4nLFxuICAgIFJBQzogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgY2FzZS4nLFxuICAgIEFDVFc6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIGNhc2UuJyxcbiAgfTtcblxuICBidXNpbmVzc0N5Y2xlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NDeWNsZScpID8/ICd7fScpO1xuICBtb3JlT3B0aW9uc0xpc3Q6IGFueSA9IHtcbiAgICBBQVI6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5jYXNlX293bmVycyxcbiAgICAgICAgbmFtZTogJ1Jpc2sgT3duZXInLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSaXNrIE93bmVyJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgaXMgZWl0aGVyIGEgcGVyc29uLCBkZXBhcnRtZW50IG93bmVyIG9yIGEgZnVuY3Rpb25hbCByb2xlIHdpdGhpbiB0aGUgb3JnYW5pemF0aW9uIHRoYXQgb3ducyB0aGUgcmlzay4gRXhhbXBsZTogRm9yIElUIHJpc2ssIHRoZSBSaXNrIE93bmVyIGNvdWxkIGJlIHRoZSBcIkRpcmVjdG9yIG9mIElUICYgU2VjdXJpdHlcIi4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JJU0tfT1dORVInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vdmVyc2lnaHQsXG4gICAgICAgIG5hbWU6ICdSaXNrIE92ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jpc2sgT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ092ZXJzaWdodCBlbmFibGVzIHlvdSB0byBkZXNpZ25hdGUgcGVyc29ucyB0byBvdmVyc2VlIHRoZSByaXNrIG1hbmFnZW1lbnQgcHJvY2Vzcy4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09WRVJTRUVSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucHJpb3JpdHksXG4gICAgICAgIG5hbWU6ICdSaXNrIE1pdGlnYXRpb24gUHJpb3JpdHknLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSaXNrIE1pdGlnYXRpb24gUHJpb3JpdHknLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnVGhpcyBzZXRzIHRoZSBwcmlvcml0eSBsZXZlbCBmb3IgdGhlIG1pdGlnYXRpb24gb2YgZWFjaCByaXNrLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnTUlUSUdBVElPTicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxhYmxlcyxcbiAgICAgICAgbmFtZTogJ1Jpc2sgTGFiZWwnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSaXNrIExhYmVsJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgaWYgdGhpcyBpcyBhIG5ld2x5IGlkZW50aWZpZWQgcmlzayBvciBpdCBpcyBhIHJhcGlkbHkgY2hhbmdpbmcgcmlzay4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JJU0tfTEFCRUwnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5saW5rX2l0ZW1zLFxuICAgICAgICBuYW1lOiAnTElOSyBHUkMgT0JKRUNUKFMpJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBPVEhFUiBHUkMgT0JKRUNUUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3UgbGluayBhIHJpc2sgd2l0aCByZWxhdGVkIEdSQyBPYmplY3RzLmAsXG4gICAgICAgIGRpc2FibGVkTWVzc2FnZTogYFlvdSBjYW4gbGluayBhIEdSQyBPYmplY3Qgd2l0aCB0aGlzIHJpc2sgb25seSBhZnRlciB5b3UgaGF2ZSBzZWxlY3RlZCBhIFJlc3BvbnNpYmlsaXR5IENlbnRlci5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgaXNEaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgY29kZTogJ0dSQ19PQkpFQ1RTJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBDQVA6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yZXNwb25zaWJpbGl0eV9jZW50ZXIsXG4gICAgICAgIG5hbWU6ICdSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgcmVwcmVzZW50IHlvdXIgb3JnYW5pemF0aW9uYWwgYW5kXG4gICAgICAgICBvcGVyYXRpb25hbCBpbmZyYXN0cnVjdHVyZS4gWW91IGNhbiBhdHRyaWJ1dGUgYSBwb2xpY3kgdG8gb25lIG9yIG1vcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycy5cbiAgICAgICAgICBXaGVyZSB5b3UgYXR0cmlidXRlIGEgcG9saWN5IHRvIGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyLCB0aGF0IHBvbGljeSB3aWxsIGJlIHNob3duIGFzIGEgcG9saWN5XG4gICAgICAgICAgIHRoYXQgaXMgcmVxdWlyZWQgdG8gYmUgYXR0ZXN0ZWQgYnkgYWxsIHRoZSBwZXJzb25zIGFzc29jaWF0ZWQgd2l0aCB0aGF0IFJlc3BvbnNpYmlsaXR5IENlbnRlci5cbiAgICAgICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiBhIHBvbGljeSBhc3NpZ25lZCB0byBhIFJlc3BvbnNpYmlsaXR5IENlbnRlciB3aWxsIGFsc28gY29udHJpYnV0ZSB0byB0aGVcbiAgICAgICAgICAgIG92ZXJhbGwgcGVyZm9ybWFuY2Ugb2YgdGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlci5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JFU1BPTlNJQklMSVRZX0NFTlRFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmFzc29jaWF0ZWRfcmlza3MsXG4gICAgICAgIG5hbWU6ICdWRVJTSU9OJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnVmVyc2lvbicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSB0aGUgb2ZmbGluZSB2ZXJzaW9uIG51bWJlciBmb3IgYSBwb2xpY3kuIEhlbmNlLCB5b3UgY2FuIGlucHV0IHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgZGlnaXRhbCBvciBwaHlzaWNhbCBjb3B5IG9mIHRoZSBwb2xpY3kgZG9jdW1lbnQgZm9yIHJlY29yZC1rZWVwaW5nIHB1cnBvc2VzLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnVkVSU0lPTicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJldmlld2VyLFxuICAgICAgICBuYW1lOiAnUmV2aWV3ZXInLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZXZpZXdlcicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb25zIGxldHMgeW91IHNwZWNpZnkgYSByZXZpZXcgbGlmZWN5Y2xlIGZvciB0aGUgcG9saWN5IGRvY3VtZW50LlxuICAgICAgICAgWW91IGNhbiBzZWxlY3QgYSByZXZpZXdlciBhbmQgZGV0ZXJtaW5lIGhvdyBvZnRlbiB0aGUgcG9saWN5IG5lZWRzIHRvIGJlIHJldmlld2VkLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdSRVZJRVdFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmNoZWNrcG9pbnRzLFxuICAgICAgICBuYW1lOiAnQ2hlY2twb2ludHMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdDaGVja3BvaW50cycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgQ2hlY2twb2ludHMgZW5hYmxlIHlvdSB0byBjb25maXJtIGEgcGVyc29u4oCZcyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwb2xpY3kgZG9jdW1lbnQuXG4gICAgICAgICBZb3UgY2FuIGNyZWF0ZSBxdWVzdGlvbnMgYmFzZWQgb24gdGhlIHBvbGljeSBjb250ZW50IGFuZCByZXF1aXJlIHRoYXQgdGhlIHJlYWRlciBvZiB0aGUgcG9saWN5XG4gICAgICAgICBhbnN3ZXJzIHRoZXNlIHF1ZXN0aW9ucyBjb3JyZWN0bHkgYmVmb3JlIHByb2NlZWRpbmcgdG8gY29tcGxldGUgdGhlIGF0dGVzdGF0aW9uLlxuICAgICAgICBgLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBjb2RlOiAnQ0hFQ0tQT0lOVFMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vdmVyc2lnaHQsXG4gICAgICAgIG5hbWU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYE92ZXJzaWdodHMgYXJlIHBlcnNvbnMgd2hvIG92ZXJzZWUgdGhlIHBvbGljeS5cbiAgICAgICAgIFRoZXNlIHBlcnNvbnMgd2lsbCByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBwb2xpY3kuXG4gICAgICAgICBBcyB0aGUgcGVyc29uIGNyZWF0aW5nIHRoZSBwb2xpY3ksIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSBlbWFpbCBub3RpZmljYXRpb25zIGFib3V0IHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgcG9saWN5LlxuICAgICAgICBgLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09WRVJTRUVSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuZm9ybWF0X2V2aWRlbmNlLFxuICAgICAgICBuYW1lOiAnUmVsYXRlZCBEb2N1bWVudHMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZWxhdGVkIERvY3VtZW50cycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgUmVsYXRlZCBkb2N1bWVudHMgYXJlIGZpbGVzIHRoYXQgbWlnaHQgYmUgcmVsYXRlZCB0byB0aGUgcG9saWN5LiBUaGVzZSBjb3VsZCBiZSBkb2N1bWVudHMgd2hpY2ggYXJlIHJlbGF0ZWRcbiAgICAgICAgIHRvIHRoZSBwb2xpY3kgb3IgYXJlIGEgc3Vic2V0IG9mIHRoZSBwb2xpY3kgdGhhdCBpcyBiZWluZyBjcmVhdGVkLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUkVMQVRFRF9ET0NVTUVOVFMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5saW5rX2l0ZW1zLFxuICAgICAgICBuYW1lOiAnTElOSyBQUk9HUkFNUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgUFJPR1JBTVMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gYXNzb2NpYXRlIFByb2dyYW1zIGZyb20gdGhlIENvbXBsaWFuY2UgbW9kdWxlIHdpdGggYSBwb2xpY3kuIFRoZXNlIGNvdWxkIGJlIHByb2Nlc3NlcyBvciBwcm9jZWR1cmVzIHRoYXQgbWlnaHQgYmUgbGlua2VkIHRvIGEgcG9saWN5LmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnTElOS19QUk9HUkFNX1JFU1BPTlNJQklMSVRJRVMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hc3Nlc3NtZW50cyxcbiAgICAgICAgbmFtZTogJ0xJTksgQU4gQVNTRVNTTUVOVCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgQU4gQVNTRVNTTUVOVCcsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgQXNzZXNzbWVudHMgYWxsb3cgeW91IHRvIGFzc29jaWF0ZSBvdXRjb21lIGJhc2VkIHF1ZXN0aW9ubmFpcmVzIG9yIGNoZWNrbGlzdCBiYXNlZCBwcm9jZWR1cmVzIHdpdGggYSBwb2xpY3kuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdMSU5LX0FTU0VTU01FTlRTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMubGlua19pdGVtcyxcbiAgICAgICAgbmFtZTogJ0xJTksgUkVMQVRFRCBQT0xJQ0lFUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgUkVMQVRFRCBQT0xJQ0lFUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb25zIGxldHMgeW91IGFzc29jaWF0ZSByZWxhdGVkIHBvbGljaWVzIGZvciBxdWljayByZWZlcmVuY2UsIGVuYWJsaW5nIHVzZXJzIHRvIHZpZXcgcmVsZXZhbnQgZG9jdW1lbnRzIGluIG9uZSBwbGFjZSBhbmQgZW5zdXJpbmcgcG9saWN5IGFsaWdubWVudC5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0xJTktfUkVMQVRFRF9QT0xJQ0lFUycsXG4gICAgICB9LFxuICAgIF0sXG4gICAgQ0FSOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub2JqZWN0aXZlcyxcbiAgICAgICAgbmFtZTogJ09iamVjdGl2ZScsXG4gICAgICAgIGNvZGU6ICdPQkpFQ1RJVkUnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdPYmplY3RpdmUnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnVGhlIG9iamVjdGl2ZSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYW4gb2JqZWN0aXZlIGZvciB0aGUgcmVzcG9uc2liaWxpdHkuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuXG4gICAgICAvLyB7XG4gICAgICAvLyAgIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NhdGVnb3J5LnN2ZycsXG4gICAgICAvLyAgIG5hbWU6ICdQcm9ncmFtJyxcbiAgICAgIC8vICAgY29kZTogJ0NBVEVHT1JZJyxcbiAgICAgIC8vICAgdG9vbHRpcFRpdGxlOiAnUHJvZ3JhbScsXG4gICAgICAvLyAgIHRvb2x0aXBNZXNzYWdlOiBgUHJvZ3JhbXMgZW5hYmxlIHlvdSB0byBncm91cCBzaW1pbGFyIHJlc3BvbnNpYmlsaXRpZXMgdG9nZXRoZXIuXG4gICAgICAvLyAgICAgQWxsb2NhdGluZyBhIHJlc3BvbnNpYmlsaXR5IHRvIGEgUHJvZ3JhbSBhbGxvd3MgeW91IHRvIHZpZXcgYSBncm91cCBvciBzaW1pbGFyIHJlc3BvbnNpYmlsaXRpZXMgYXQgb25jZS5cbiAgICAgIC8vICAgICBJdCBhbHNvIGFsbG93cyB5b3UgdG8gdmlldyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhvc2UgY29sbGVjdGl2ZSByZXNwb25zaWJpbGl0aWVzLmAsXG4gICAgICAvLyAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgLy8gICBoaWRkZW46IGZhbHNlLFxuICAgICAgLy8gfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yZXNwb25zaWJpbGl0eV9jZW50ZXIsXG4gICAgICAgIG5hbWU6ICdSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxuICAgICAgICBjb2RlOiAnUkMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgcmVwcmVzZW50IHlvdXIgb3JnYW5pemF0aW9uYWwgYW5kIG9wZXJhdGlvbmFsIGluZnJhc3RydWN0dXJlLjxicj5cbiAgICAgICAgICBZb3UgY2FuIGFzc2lnbiBhIHJlc3BvbnNpYmlsaXR5IHRvIG9uZSBvciBtb3JlIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMuIFdoZXJlIHlvdSBhc3NpZ24gYSByZXNwb25zaWJpbGl0eSB0byBhIFJlc3BvbnNpYmlsaXR5IENlbnRlcixcbiAgICAgICAgICB0aGF0IHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2hvd24gYXMgYSByZXNwb25zaWJpbGl0eSB0aGF0IGlzIHJlcXVpcmVkIHRvIGJlIGNvbXBsZXRlZCBieSB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyLlxuICAgICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiBhIHJlc3BvbnNpYmlsaXR5IGFzc2lnbmVkIHRvIGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyIHdpbGwgYWxzbyBjb250cmlidXRlIHRvIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIG9mIHRoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmNhc2VfY2F0ZWdvcnksXG4gICAgICAgIG5hbWU6ICdQcm9ncmFtJyxcbiAgICAgICAgY29kZTogJ1BST0dSQU0nLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdQcm9ncmFtJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBQcm9ncmFtcyBlbmFibGUgeW91IHRvIGdyb3VwIHNpbWlsYXIgcmVzcG9uc2liaWxpdGllcyB0b2dldGhlci5cbiAgICAgICAgICBBbGxvY2F0aW5nIGEgcmVzcG9uc2liaWxpdHkgdG8gYSBQcm9ncmFtIGFsbG93cyB5b3UgdG8gdmlldyBhIGdyb3VwIG9yIHNpbWlsYXIgcmVzcG9uc2liaWxpdGllcyBhdCBvbmNlLlxuICAgICAgICAgIEl0IGFsc28gYWxsb3dzIHlvdSB0byB2aWV3IHRoZSBwZXJmb3JtYW5jZSBvZiB0aG9zZSBjb2xsZWN0aXZlIHJlc3BvbnNpYmlsaXRpZXMuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmZvcm1hdF9ldmlkZW5jZSxcbiAgICAgICAgbmFtZTogJ0Zvcm1hdCAmIEV2aWRlbmNlJyxcbiAgICAgICAgY29kZTogJ0ZPUk1BVEVfRVZJREVOQ0UnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcgRm9ybWF0ICYgRXZpZGVuY2UnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnWW91IGNhbiB1cGxvYWQgYSBmb3JtYXQgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkgYW5kIHlvdSBjYW4gYWxzbyByZXF1aXJlIGV2aWRlbmNlIG9mIGNvbXBsZXRpb24gb2YgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIGJlIHByb3ZpZGVkLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hc3Nlc3NtZW50cyxcbiAgICAgICAgbmFtZTogJ0Fzc2Vzc21lbnRzJyxcbiAgICAgICAgY29kZTogJ0FTU0VTU01FTlQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcgQXNzZXNzbWVudHMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnQXNzZXNzbWVudHMgYWxsb3cgeW91IHRvIGFzc29jaWF0ZSBvdXRjb21lIGJhc2VkLXF1ZXN0aW9ubmFpcmVzIG9yIHNlbGYtYXNzZXNzbWVudCBxdWVzdGlvbm5haXJlcyB3aXRoIGEgcmVzcG9uc2liaWxpdHkuIFRoZXNlIG5lZWQgdG8gYmUgY29tcGxldGVkIGJ5IHRoZSBhc3NpZ25lZSBhcyBhIHBhcnQgb2YgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdHkuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ0FuIGFzc2Vzc21lbnQgY2FuIGJlIGxpbmtlZCB3aXRoIGEgcmVzcG9uc2liaWxpdHkgb25seSBhZnRlciByZW1vdmluZyB0aGUgYXNzb2NpYXRlZCBjaGVja3BvaW50cy4nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6XG4gICAgICAgICAgJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yaXNrcy5zdmcnLFxuICAgICAgICBuYW1lOiAnUmlzayBDbGFzc2lmaWNhdGlvbicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jpc2sgQ2xhc3NpZmljYXRpb24nLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnWW91IGNhbiBzcGVjaWZ5IHRoZSBsZXZlbCBvZiByaXNrIHRoYXQgdGhlIG9yZ2FuaXphdGlvbiB3aWxsIGJlIGV4cG9zZWQgdG8gaWYgdGhlIHJlc3BvbnNpYmlsaXR5IGlzIG5vdCBjb21wbGV0ZWQuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSSVNLX0NMQVNTSUZJQ0FUSU9OJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmV2aWV3ZXIsXG4gICAgICAgIG5hbWU6ICdSZXZpZXdlcicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jldmlld2VyJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ0EgUmV2aWV3ZXIgaXMgYSBwZXJzb24gdGhhdCBpcyB0YXNrZWQgd2l0aCByZXZpZXdpbmcgdGhlIGNvbXBsZXRlZCByZXNwb25zaWJpbGl0eS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JFVklFV0VSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBPdmVyc2lnaHQgZW5hYmxlcyB5b3UgdG8gZGVzaWduYXRlIHBlcnNvbnMgdG8gb3ZlcnNlZSB0aGUgcmVzcG9uc2liaWxpdHkuXG4gICAgICAgICAgVGhlc2UgcGVyc29ucyB3aWxsIHJlY2VpdmUgZW1haWwgbm90aWZpY2F0aW9ucyBhYm91dCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHJlc3BvbnNpYmlsaXR5Ljxicj5cbiAgICAgICAgICBBcyB0aGUgcGVyc29uIGNyZWF0aW5nIHRoZSByZXNwb25zaWJpbGl0eSwgeW91IHdpbGwgYXV0b21hdGljYWxseSByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSByZXNwb25zaWJpbGl0eS5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09WRVJTRUVSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOlxuICAgICAgICAgICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvbGluay1pdGVtcy5zdmcnLFxuICAgICAgICBuYW1lOiAnTElOSyBHUkMgT0JKRUNUKFMpJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBPVEhFUiBHUkMgT0JKRUNUUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3UgbGluayBhIHJlc3BvbnNpYmlsaXR5IHdpdGggcmVsYXRlZCBHUkMgT2JqZWN0cy5gLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6IGBZb3UgY2FuIGxpbmsgYSBHUkMgT2JqZWN0IHdpdGggdGhpcyByZXNwb25zaWJpbGl0eSBvbmx5IGFmdGVyIHlvdSBoYXZlIHNlbGVjdGVkIGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBpc0Rpc2FibGVkOiB0cnVlLFxuICAgICAgICBjb2RlOiAnR1JDX09CSkVDVFMnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIENBUzogW1xuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlcixcbiAgICAgICAgbmFtZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmZvcm1hdF9ldmlkZW5jZSxcbiAgICAgICAgbmFtZTogJ0Zvcm1hdCAmYW1wOyBFdmlkZW5jZScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm92ZXJzaWdodCxcbiAgICAgICAgbmFtZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgIF0sXG5cbiAgICBMQUk6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5leGNlcHRpb25fdHlwZSxcbiAgICAgICAgbmFtZTogJ0V4Y2VwdGlvbiBUeXBlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnRXhjZXB0aW9uIFR5cGUnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnRXhjZXB0aW9uIHR5cGUgbGV0cyB5b3Ugc3BlY2lmeSB3aGV0aGVyIHRoZXJlIGlzIGEgZGVzaWduIG9yIGFuIG9wZXJhdGlvbmFsIGVmZmVjdGl2ZW5lc3MgcHJvYmxlbS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0VYQ0VQVElPTl9UWVBFJyxcbiAgICAgIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2lzc3VlLXR5cGUuc3ZnJyxcbiAgICAgIC8vICAgbmFtZTogJ0lzc3VlIHR5cGUnLFxuICAgICAgLy8gICB0b29sdGlwVGl0bGU6ICcnLFxuICAgICAgLy8gICB0b29sdGlwTWVzc2FnZTogJycsXG4gICAgICAvLyAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgLy8gICBoaWRkZW46IGZhbHNlLFxuICAgICAgLy8gICBjb2RlOiAnSVNTVUVfVFlQRSdcbiAgICAgIC8vIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucHJpb3JpdHksXG4gICAgICAgIG5hbWU6ICdQcmlvcml0eScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1ByaW9yaXR5JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgc2V0cyB0aGUgcHJpb3JpdHkgbGV2ZWwgZm9yIHJlc29sdmluZyBlYWNoIGlzc3VlLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUFJJT1JJVFknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hc3NvY2lhdGVkX3Jpc2tzLFxuICAgICAgICBuYW1lOiAnQXNzb2NpYXRlZCBSaXNrcycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0Fzc29jaWF0ZWQgUmlza3MnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnQXNzb2NpYXRlZCByaXNrcyBsZXRzIHlvdSBzcGVjaWZ5IHRoZSByaXNrcyB0aGF0IGFyZSByZWxhdGVkIHRvIHRoaXMgaXNzdWUuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdBU1NPQ0lBVEVEX1JJU0tTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ092ZXJzaWdodHMgYXJlIHRoZSBwZXJzb25zIHJlc3BvbnNpYmxlIGZvciBvdmVyc2VlaW5nIGFuIGlzc3VlLiBUaGVzZSBwZXJzb25zIHdpbGwgcmVjZWl2ZSBlbWFpbCBub3RpZmljYXRpb25zIGFib3V0IHRoZSBpc3N1ZSBzdGF0dXMuIEFzIHRoZSBwZXJzb24gcmVwb3J0aW5nIHRoaXMgaXNzdWUsIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSBzdWNoIGVtYWlsIG5vdGlmaWNhdGlvbnMuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVkVSU0lHSFQnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5mb3JtYXRfZXZpZGVuY2UsXG4gICAgICAgIG5hbWU6ICdFdmlkZW5jZScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0V2aWRlbmNlJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1lvdSBjYW4gcmVxdWlyZSB0aGF0IHRoZSBwZXJzb24gcmVzb2x2aW5nIHRoZSBpc3N1ZSB1cGxvYWRzIGV2aWRlbmNlIHRvIGNvbmZpcm0nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0VWSURFTkNFJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBDQVBSOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOlxuICAgICAgICAgICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvb3duZXIuc3ZnJyxcbiAgICAgICAgbmFtZTogJ093bmVyKHMpJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3duZXIocyknLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYE93bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5cbiAgICAgICAgVGhlIDxiPktleSBBZG1pbjwvYj4gYW5kIGFsbCA8Yj5BZG1pbjwvYj4gdXNlcnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0LlxuICAgICAgICBgLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09XTkVSUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDpcbiAgICAgICAgICAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NvbGxhYm9yYXRvci5zdmcnLFxuICAgICAgICBuYW1lOiAnQ29sbGFib3JhdG9ycycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0NvbGxhYm9yYXRvcnMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYENvbGxhYm9yYXRvcnMgYXJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHRoZW0uIFdoZXJlIENvbGxhYm9yYXRvcnMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIENvbGxhYm9yYXRvcnMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdDT0xMQUJPUkFUT1JTJyxcbiAgICAgIH0sXG4gIFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmN1c3RvbV9maWVsZHMsXG4gICAgICAgIG5hbWU6ICdDdXN0b20gRmllbGQnLFxuICAgICAgICBjb2RlOiAnQ1VTVE9NX0ZJRUxEUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJyBDdXN0b20gRmllbGQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnV2hlcmUgYSBjdXN0b20gZmllbGQgaXMgc3BlY2lmaWVkLCBhbGwgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCBhIFByb2dyYW0gd2lsbCBjb250YWluIHRoYXQgY3VzdG9tIGZpZWxkLiBDdXN0b20gZmllbGRzIGVuYWJsZSB0aGUgY29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIG1ldGEgZGF0YS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBHUkM6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5saW5rX2l0ZW1zLFxuICAgICAgICBuYW1lOiAnTElOSyBSRVNQT05TSUJJTElUSUVTJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBSRVNQT05TSUJJTElUSUVTJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBsZXRzIHlvdSBsaW5rIGEgR1JDIE9iamVjdCB3aXRoIHJlbGF0ZWQgcmVzcG9uc2liaWxpdGllcy5gLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ1lvdSBjYW4gbGluayBhIHJlc3BvbnNpYmlsaXR5IHdpdGggdGhpcyBHUkMgT2JqZWN0IG9ubHkgYWZ0ZXIgeW91IGhhdmUgc2VsZWN0ZWQgdGhlIHJlbGV2YW50IFJlc3BvbnNpYmlsaXR5IENlbnRlci4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0xJTktfUFJPR1JBTScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxpbmtfcmlza3MsXG4gICAgICAgIG5hbWU6ICdMSU5LIFJJU0tTJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBSSVNLUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3UgbGluayBhIEdSQyBPYmplY3Qgd2l0aCByZWxhdGVkIHJpc2tzLmAsXG4gICAgICAgIGRpc2FibGVkTWVzc2FnZTpcbiAgICAgICAgICAnWW91IGNhbiBsaW5rIGEgcmlzayB3aXRoIHRoaXMgR1JDIE9iamVjdCBvbmx5IGFmdGVyIHlvdSBoYXZlIHNlbGVjdGVkIHRoZSByZWxldmFudCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdMSU5LX1JJU0tfQ0FURUdPUklFU19SSVNLUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxpbmtfaXRlbXMsXG4gICAgICAgIG5hbWU6ICdMSU5LIE9USEVSIEdSQyBPQkpFQ1RTJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBPVEhFUiBHUkMgT0JKRUNUUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3UgbGluayBhIEdSQyBPYmplY3Qgd2l0aCBvdGhlciByZWxhdGVkIEdSQyBPYmplY3RzLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnT1RIRVJfR1JDX09CSkVDVFMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IExJTktTPy5jdXN0b21GaWVsZHMsXG4gICAgICAgIG5hbWU6ICdHUkMgT2JqZWN0IFR5cGUgQXR0cmlidXRlcycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0dSQyBPYmplY3QgVHlwZSBBdHRyaWJ1dGVzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBsZXRzIHlvdSBhZGQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGEgR1JDIE9iamVjdC5gLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoZXJlIGFyZSBubyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgbGlua2VkIHdpdGggdGhpcyBHUkMgT2JqZWN0IFR5cGUuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdBVFRSSUJVVEVTJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBSQUM6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vYmplY3RpdmVzLFxuICAgICAgICBuYW1lOiAnRXhjZXB0aW9uIFR5cGUnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdFeGNlcHRpb24gVHlwZScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdFeGNlcHRpb24gdHlwZSBsZXRzIHlvdSBzcGVjaWZ5IHdoZXRoZXIgdGhlcmUgaXMgYSBkZXNpZ24gb3IgYW4gb3BlcmF0aW9uYWwgZWZmZWN0aXZlbmVzcyBwcm9ibGVtLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnRVhDRVBUSU9OX1RZUEUnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hc3NvY2lhdGVkX3Jpc2tzLFxuICAgICAgICBuYW1lOiAnQXNzb2NpYXRlZCBSaXNrcycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0Fzc29jaWF0ZWQgUmlza3MnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnQXNzb2NpYXRlZCByaXNrcyBsZXRzIHlvdSBzcGVjaWZ5IHRoZSByaXNrcyB0aGF0IGFyZSByZWxhdGVkIHRvIHRoaXMgY2FzZS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0FTU09DSUFURURfUklTS1MnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vdmVyc2lnaHQsXG4gICAgICAgIG5hbWU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnT3ZlcnNpZ2h0IG9wdGlvbiBsZXRzIHlvdSBkZXNpZ25hdGUgdXNlcnMgdG8gb3ZlcnNlZSBhIGNhc2UuIFRoZXNlIHVzZXJzIHdpbGwgcmVjZWl2ZSBlbWFpbCBub3RpZmljYXRpb25zIGFib3V0IHRoZSBjYXNlIHN0YXR1cyAmIHJlbGF0ZWQgd29ya2Zsb3dzLiBBcyB0aGUgcGVyc29uIHJlcG9ydGluZyB0aGlzIGNhc2UsIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSBzdWNoIGVtYWlsIG5vdGlmaWNhdGlvbnMuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVkVSU0lHSFQnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5mb3JtYXRfZXZpZGVuY2UsXG4gICAgICAgIG5hbWU6ICdFdmlkZW5jZScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0V2aWRlbmNlJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1lvdSBjYW4gcmVxdWlyZSB0aGF0IHRoZSBwZXJzb24gcmVzb2x2aW5nIHRoZSBjYXNlIHVwbG9hZHMgZXZpZGVuY2UgdG8gY29uZmlybScsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdFVklERU5DRScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJlY29tbWVuZGVkX2FjdGlvbixcbiAgICAgICAgbmFtZTogJ1JlY29tbWVuZGVkIEFjdGlvbnMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogJycsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUkVDT01NRU5ERURfQUNUSU9OUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJpc2tzLFxuICAgICAgICBuYW1lOiAnUmlzayBDbGFzc2lmaWNhdGlvbicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSSVNLX0NMQVNTSUZJQ0FUSU9OJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBBQ1RXOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub2JqZWN0aXZlcyxcbiAgICAgICAgbmFtZTogJ0V4Y2VwdGlvbiBUeXBlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnRXhjZXB0aW9uIFR5cGUnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnRXhjZXB0aW9uIHR5cGUgbGV0cyB5b3Ugc3BlY2lmeSB3aGV0aGVyIHRoZXJlIGlzIGEgZGVzaWduIG9yIGFuIG9wZXJhdGlvbmFsIGVmZmVjdGl2ZW5lc3MgcHJvYmxlbS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0VYQ0VQVElPTl9UWVBFJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuYXNzb2NpYXRlZF9yaXNrcyxcbiAgICAgICAgbmFtZTogJ0Fzc29jaWF0ZWQgUmlza3MnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdBc3NvY2lhdGVkIFJpc2tzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ0Fzc29jaWF0ZWQgcmlza3MgbGV0cyB5b3Ugc3BlY2lmeSB0aGUgcmlza3MgdGhhdCBhcmUgcmVsYXRlZCB0byB0aGlzIGNhc2UuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdBU1NPQ0lBVEVEX1JJU0tTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ092ZXJzaWdodHMgYXJlIHRoZSBwZXJzb25zIHJlc3BvbnNpYmxlIGZvciBvdmVyc2VlaW5nIGFuIGNhc2UuIFRoZXNlIHBlcnNvbnMgd2lsbCByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIGNhc2Ugc3RhdHVzLiBBcyB0aGUgcGVyc29uIHJlcG9ydGluZyB0aGlzIGNhc2UsIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSBzdWNoIGVtYWlsIG5vdGlmaWNhdGlvbnMuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVkVSU0lHSFQnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yZWNvbW1lbmRlZF9hY3Rpb24sXG4gICAgICAgIG5hbWU6ICdSZWNvbW1lbmRlZCBBY3Rpb25zJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JFQ09NTUVOREVEX0FDVElPTlMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yaXNrcyxcbiAgICAgICAgbmFtZTogJ1Jpc2sgQ2xhc3NpZmljYXRpb24nLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogJycsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUklTS19DTEFTU0lGSUNBVElPTicsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXBvcnRBQ2FzZVNlcnZpY2U6IFJlcG9ydEFDYXNlU2VydmljZSkge1xuICAgIHRoaXMucmVzZXRSQUNNb3JlT3B0aW9ucygpO1xuICB9XG5cbiAgcmVzZXRSQUNNb3JlT3B0aW9ucygpIHtcbiAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5yZXNldE1vcmVPcHRpb24uc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuUkFDLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgZWxlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcz8uaXNQcm9ncmFtU2VsZWN0ZWQ/LmN1cnJlbnRWYWx1ZSAhPT1cbiAgICAgIGNoYW5nZXM/LmlzUHJvZ3JhbVNlbGVjdGVkPy5wcmV2aW91c1ZhbHVlXG4gICAgKSB7XG4gICAgICB0aGlzLmlzUHJvZ3JhbVNlbGVjdGVkID0gY2hhbmdlcy5pc1Byb2dyYW1TZWxlY3RlZC5jdXJyZW50VmFsdWU7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1JDU2VsZWN0ZWQpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9PT0gJ0FBUicpIHtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuQUFSLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gaWYoZWxlLmNvZGUgPT09ICdBU1NVUkFOQ0UnKSB7XG4gICAgICAgICAgLy8gICBlbGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICBpZiAoZWxlLmNvZGUgPT09ICdHUkNfT0JKRUNUUycpIHtcbiAgICAgICAgICAgIGVsZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICBlbGUuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkNBUi5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGlmKGVsZS5jb2RlID09PSAnQVNTVVJBTkNFJykge1xuICAgICAgICAgIC8vICAgZWxlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgaWYgKFsnR1JDX09CSkVDVFMnXS5pbmNsdWRlcyhlbGUuY29kZSkpIHtcbiAgICAgICAgICAgIGVsZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93ID09PSAnQUFSJykge1xuICAgICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5BQVIuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBpZihlbGUuY29kZSA9PT0gJ0FTU1VSQU5DRScpIHtcbiAgICAgICAgICAvLyAgIGVsZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGlmIChlbGUuY29kZSA9PT0gJ0dSQ19PQkpFQ1RTJykge1xuICAgICAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gaWYoZWxlLmNvZGUgPT09ICdBU1NVUkFOQ0UnKSB7XG4gICAgICAgICAgLy8gICBlbGUuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICBpZiAoWyAnR1JDX09CSkVDVFMnXS5pbmNsdWRlcyhlbGUuY29kZSkpIHtcbiAgICAgICAgICAgIGVsZS5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGVja0dSQ0F0dHJpYnV0ZXModGhpcy5pc0F0dHJpYnV0ZXNBdmFpbGFibGUpO1xuICB9XG5cbiAgY2hlY2tHUkNBdHRyaWJ1dGVzKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5HUkMuZm9yRWFjaCgoZWxlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChlbGUuY29kZSA9PT0gJ0FUVFJJQlVURVMnKSB7XG4gICAgICAgIGVsZS5pc0Rpc2FibGVkID0gIXZhbHVlO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgZWxlLmNoZWNrZWQgPSAhdmFsdWU7XG4gICAgICAgICAgdGhpcy5zZWxlY3RNb3JlT3B0aW9uKGVsZSwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZWxlLmNvZGUgPT09ICdMSU5LX1BST0dSQU0nKSB7XG4gICAgICAgIGVsZS5pc0Rpc2FibGVkID0gIXRoaXMuaXNSQ1NlbGVjdGVkO1xuICAgICAgfVxuICAgICAgaWYgKGVsZS5jb2RlID09PSAnTElOS19SSVNLX0NBVEVHT1JJRVNfUklTS1MnKSB7XG4gICAgICAgIGVsZS5pc0Rpc2FibGVkID0gIXRoaXMuaXNSQ1NlbGVjdGVkO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmVhdHVyZWZsYWdyb2xlID0gdGhpcy5hbGxvd2VkRmVhdHVyZT8uaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yb2xlX2ltcHJvdmVtZW50cydcbiAgICApO1xuICAgIHRoaXMuZmZfcmNfbGlzdGluZyA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcmNfbGlzdGluZycpO1xuICAgIHRoaXMuZmZfcmNfbGlzdGluZ1xuICAgICAgPyAodGhpcy5wZXJtaXNzaW9uVGV4dCA9ICdQZXJtaXNzaW9ucycpXG4gICAgICA6ICh0aGlzLnBlcm1pc3Npb25UZXh0ID0gJ1Blcm1pc3Npb24gR3JvdXAoUyknKTtcbiAgICB0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcgPVxuICAgICAgdGhpcy5hbGxvd2VkRmVhdHVyZT8uaXNGZWF0dXJlRW5hYmxlZCgnZmZfcHJvZ3JhbV9zaW1wbGlmeScpID8/IHRydWU7XG4gIH1cblxuICBzZWxlY3RNb3JlT3B0aW9uKGV2ZW50OiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9PT0gJ0NBUicgJiZcbiAgICAgIGV2ZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnICYmXG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdFt0aGlzLmN1cnJlbnRXb3JrZmxvd11baW5kZXhdPy5jaGVja2VkXG4gICAgKSB7XG4gICAgICBldmVudFsnY2hlY2twb2ludF9uZXcnXSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vcmVPcHRpb25zTGlzdFt0aGlzLmN1cnJlbnRXb3JrZmxvd10/Lmxlbmd0aCA+IGluZGV4KSB7XG4gICAgICBldmVudFsnY2hlY2twb2ludF9uZXcnXSA9IGZhbHNlO1xuICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3RbdGhpcy5jdXJyZW50V29ya2Zsb3ddW2luZGV4XVsnY2hlY2tlZCddID1cbiAgICAgICAgIWV2ZW50LmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHBvcHVsYXRlKGV2dDogYW55KSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93KSB7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdFt0aGlzLmN1cnJlbnRXb3JrZmxvd10uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChldnQuaW5jbHVkZXMoZWxlbWVudC5jb2RlKSkge1xuICAgICAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWxlbWVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2dC5pbmNsdWRlcygnQ0hFQ0tQT0lOVFNfTkVXJykpIHtcbiAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09PSAnQ0hFQ0tQT0lOVFMnKSB7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09PSAnQVNTRVNTTUVOVCcpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChldnQuaW5jbHVkZXMoJ0FTU0VTU01FTlQnKSkge1xuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnKSB7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09PSAnQ0hFQ0tQT0lOVFMnKSB7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2dC5pbmNsdWRlcygnQ0hFQ0tQT0lOVFMnKSkge1xuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnKSB7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09PSAnQVNTRVNTTUVOVCcpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChldnQuaW5jbHVkZXMoJ1BST0dSQU0nKSkge1xuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdQUk9HUkFNJyAmJiB0aGlzLmlzUHJvZ3JhbVNlbGVjdGVkKSB7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGhpZGVFbGVtZW50cyhoaWRkZW5MaXN0OiBhbnkpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cpIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0W3RoaXMuY3VycmVudFdvcmtmbG93XS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGhpZGRlbkxpc3QuaW5jbHVkZXMoZWxlbWVudC5jb2RlKSkge1xuICAgICAgICAgIGVsZW1lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50LmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXNldEFsbCh3b3JrZmxvd1R5cGU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm1vcmVPcHRpb25zTGlzdFt3b3JrZmxvd1R5cGVdKSB7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdFt3b3JrZmxvd1R5cGVdLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVByb2dyYW1Nb3JlT3B0aW9ucygpIHtcbiAgICBjb25zdCBjb2RlID0gW1xuICAgICAgJ1BST0dSQU1fRlJFUVVFTkNZJyxcbiAgICAgICdTQ09QRV9DSEFOR0VTJyxcbiAgICAgICdSQycsXG4gICAgICAnQVNTSUdORUVTJyxcbiAgICAgICdSRVZJRVdFUicsXG4gICAgICAnT1ZFUlNFRVInLFxuICAgICAgJ0FTU0VTU01FTlQnLFxuICAgICAgJ0ZPUk1BVEVfRVZJREVOQ0UnLFxuICAgIF07XG4gICBcbiAgfVxufVxuIiwiPCEtLSA8cD5tb3JlLW9wdGlvbiB3b3JrcyE8L3A+IC0tPlxuPGRpdiBjbGFzcz1cIm1vcmUtb3B0aW9uXCI+XG4gIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRhaW5lclwiPlxuICAgIDxpbWcgW3NyY109XCJBU1NFVFMuYWRkX3Jpc2tfbW9yZV9vcHRpb25cIiBhbHQ9XCJcIiAvPlxuICAgIDxwICpuZ0lmPVwiY3VycmVudFdvcmtmbG93XCI+e3sgcGxhY2Vob2xkZXJUZXh0c1tjdXJyZW50V29ya2Zsb3ddIH19PC9wPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vcmUtb3B0aW9uc1wiPlxuICAgIDx1bD5cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1vcmUtb3B0aW9ucy1oZWFkaW5nXCIgKm5nSWY9XCJjdXJyZW50V29ya2Zsb3cgPT09J0NBUFInXCI+UFJPR1JBTSBTQ09QRSBPUFRJT05TPC9kaXY+IC0tPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBtb3JlT3B0aW9uc0xpc3RbY3VycmVudFdvcmtmbG93XTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gPGxpICpuZ0lmPVwiIWRhdGEuaGlkZGVuXCIgW2FwcFRvb2x0aXBdPVwiZGF0YS5pc0Rpc2FibGVkICYmICFpc1JjU2VsZWN0ZWQ/ICdUaGlzIHJlc3BvbnNpYmlsaXR5IGNhbiBiZSBzY2hlZHVsZWQgZm9yIGFuIGF1ZGl0IG9ubHkgYWZ0ZXIgdGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlciBpcyBzZWxlY3RlZC4nIDogJydcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImRhdGEuaXNEaXNhYmxlZCAmJiAhaXNSY1NlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2NsYXNzLmFjdGl2ZV09XCJkYXRhLmNoZWNrZWRcIiBbZGlzYWJsZWRdPVwiZGF0YS5jb2RlID09PSAnUkMnICYmIG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiYgY3VycmVudFdvcmtmbG93ID09PSAnQ0FSJyB8fCAoZGF0YS5pc0Rpc2FibGVkICYmICFpc1JDU2VsZWN0ZWQpXCIgW2NsYXNzLmRpc2FibGVkXT1cImRhdGEuaXNEaXNhYmxlZCAmJiAhaXNSQ1NlbGVjdGVkXCIgKGNsaWNrKT1cImRhdGEuY2hlY2tlZCA9ICFkYXRhLmNoZWNrZWQ7IHNlbGVjdE1vcmVPcHRpb24oZGF0YSlcIj4gLS0+XG5cbiAgICAgICAgPGxpXG4gICAgICAgICAgKm5nSWY9XCIhZGF0YS5oaWRkZW5cIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgZGF0YS5pc0Rpc2FibGVkIHx8XG4gICAgICAgICAgICAoKChkYXRhLmNvZGUgPT09ICdSQycgJiYgIWlzUmNTZWxlY3RlZCkgfHxcbiAgICAgICAgICAgICAgZGF0YS5jb2RlID09PSAnQVRUUklCVVRFUycpICYmXG4gICAgICAgICAgICAgIGRhdGEuaXNEaXNhYmxlZClcbiAgICAgICAgICAgICAgPyBkYXRhPy5kaXNhYmxlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZGF0YS5pc0Rpc2FibGVkXCJcbiAgICAgICAgICBpZD1cImxpc3RkYXRhXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZGF0YS5jaGVja2VkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgKGRhdGEuY29kZSA9PT0gJ1JDJyAmJlxuICAgICAgICAgICAgICAgIG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcbiAgICAgICAgICAgICAgICBjdXJyZW50V29ya2Zsb3cgPT09ICdDQVInKSB8fFxuICAgICAgICAgICAgICBkYXRhLmlzRGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgKGRhdGEuaXNEaXNhYmxlZCAmJiAhaXNSQ1NlbGVjdGVkKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb3JlT3B0aW9uKGRhdGEsIGkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFkYXRhLmNoZWNrZWRcIiBjbGFzcz1cIm1vcmUtaWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZGF0YS5pbWFnZVVybFwiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImRhdGE/Lm5hbWVcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJkYXRhPy5uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cImRhdGEuY29kZSA9PT0nQ0hFQ0tQT0lOVFNfTkVXJ1wiIGNsYXNzPVwiY2hlY2twb2ludC12ZXJzaW9uXCI+IFYyLjA8L3NwYW4+IC0tPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImljb25cIlxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhLnRvb2x0aXBNZXNzYWdlICE9PSAnJ1wiXG4gICAgICAgICAgICBsaWJQb3BvdmVySG92ZXJcbiAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiZGF0YVRvb2x0aXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImRhdGFUb29sdGlwLmNsb3NlUG9wb3ZlcigpXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgID48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxZjs8L2k+PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxwb3BvdmVyLWhvdmVyICNkYXRhVG9vbHRpcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1pbmZvLWNhcmRcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtaW5mby1jYXJkLWhlYWRcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZGF0YS50b29sdGlwVGl0bGVcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImRhdGEudG9vbHRpcE1lc3NhZ2VcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3BvcG92ZXItaG92ZXI+XG4gICAgICAgIDwvbGk+XG4gICAgXG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
932
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9yZS1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvbW9yZS1vcHRpb24vbW9yZS1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvbW9yZS1vcHRpb24vbW9yZS1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBT3ZELE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsSUFBNkIsc0JBQXNCLENBQUMsT0FBWTtRQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDbEMsSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUU7WUFDM0MsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBeXNCRCxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXZ0QjFELFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDUCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHNCQUFpQixHQUFHLEtBQUss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Q0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ2xELElBQUksSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQy9CLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUN2QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOytHQTE3QlUsbUJBQW1CO21HQUFuQixtQkFBbUIsNmJDbEJoQyx3L0hBeUdBOzs0RkR2RmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjt5R0FNbEIsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUV1QixzQkFBc0I7c0JBQWxELEtBQUs7dUJBQUMsZ0JBQWdCO2dCQU1kLHFCQUFxQjtzQkFBN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMSU5LUyB9IGZyb20gJy4uL3dvcmtmbG93L3NoYXJlZC9jb25zdGFudHMvY2RuLWxpbmsuY29uc3RhbnQnO1xuaW1wb3J0IHsgUmVwb3J0QUNhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vcmVwb3J0LWEtY2FzZS9zZXJ2aWNlcy9yZXBvcnQtYS1jYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbW9yZS1vcHRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9yZS1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb3JlLW9wdGlvbi5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNb3JlT3B0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIEBJbnB1dCgpIGN1cnJlbnRXb3JrZmxvdyA9ICcnO1xuICBASW5wdXQoKSBvcGVuZWRGcm9tID0gJyc7XG4gIEBJbnB1dCgpIGlzRWRpdE1vZGUgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBpc1JDU2VsZWN0ZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaXNQcm9ncmFtU2VsZWN0ZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgYWxsb3dlZEZlYXR1cmU6IGFueTtcbiAgb3JnRGV0YWlsczogYW55O1xuICBASW5wdXQoJ29yZ0RldGFpbHNEYXRhJykgc2V0IGdldE9yZ2FuaXphdGlvbkRldGFpbHMoZGV0YWlsczogYW55KSB7XG4gICAgdGhpcy5vcmdEZXRhaWxzID0gZGV0YWlscyA/PyAne30nO1xuICAgIGlmIChkZXRhaWxzICYmIE9iamVjdC5rZXlzKGRldGFpbHMpPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudXBkYXRlUHJvZ3JhbU1vcmVPcHRpb25zKCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIGlzQXR0cmlidXRlc0F2YWlsYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIGZlYXR1cmVmbGFncm9sZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm9ncmFtU2ltcGxpZnlGbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIGZmX3JjX2xpc3Rpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGVybWlzc2lvblRleHQ6IHN0cmluZyA9ICdQZXJtaXNzaW9ucyc7XG5cbiAgcGxhY2Vob2xkZXJUZXh0czogYW55ID0ge1xuICAgIEFBUjogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgcmlzay4nLFxuICAgIENBUDogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgcG9saWN5LicsXG4gICAgQ0FSOiAnU2VsZWN0IHdoYXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIGluIHRoZSByZXNwb25zaWJpbGl0eS4nLFxuICAgIENBUzogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgc3VydmV5LicsXG4gICAgTEFJOiAnU2VsZWN0IHdoYXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIGluIHRoZSBpc3N1ZS4nLFxuICAgIENBUFI6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIHNjb3BlLicsXG4gICAgR1JDOiAnU2VsZWN0IHdoYXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIGluIHRoZSBHUkMgT2JqZWN0LicsXG4gICAgUkFDOiAnU2VsZWN0IHdoYXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIGluIHRoZSBjYXNlLicsXG4gICAgQUNUVzogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgY2FzZS4nLFxuICB9O1xuXG4gIGJ1c2luZXNzQ3ljbGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0N5Y2xlJykgPz8gJ3t9Jyk7XG4gIG1vcmVPcHRpb25zTGlzdDogYW55ID0ge1xuICAgIEFBUjogW1xuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmNhc2Vfb3duZXJzLFxuICAgICAgICBuYW1lOiAnUmlzayBPd25lcicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jpc2sgT3duZXInLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnVGhpcyBpcyBlaXRoZXIgYSBwZXJzb24sIGRlcGFydG1lbnQgb3duZXIgb3IgYSBmdW5jdGlvbmFsIHJvbGUgd2l0aGluIHRoZSBvcmdhbml6YXRpb24gdGhhdCBvd25zIHRoZSByaXNrLiBFeGFtcGxlOiBGb3IgSVQgcmlzaywgdGhlIFJpc2sgT3duZXIgY291bGQgYmUgdGhlIFwiRGlyZWN0b3Igb2YgSVQgJiBTZWN1cml0eVwiLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUklTS19PV05FUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm92ZXJzaWdodCxcbiAgICAgICAgbmFtZTogJ1Jpc2sgT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUmlzayBPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnT3ZlcnNpZ2h0IGVuYWJsZXMgeW91IHRvIGRlc2lnbmF0ZSBwZXJzb25zIHRvIG92ZXJzZWUgdGhlIHJpc2sgbWFuYWdlbWVudCBwcm9jZXNzLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnT1ZFUlNFRVInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5wcmlvcml0eSxcbiAgICAgICAgbmFtZTogJ1Jpc2sgTWl0aWdhdGlvbiBQcmlvcml0eScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jpc2sgTWl0aWdhdGlvbiBQcmlvcml0eScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdUaGlzIHNldHMgdGhlIHByaW9yaXR5IGxldmVsIGZvciB0aGUgbWl0aWdhdGlvbiBvZiBlYWNoIHJpc2suJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdNSVRJR0FUSU9OJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMubGFibGVzLFxuICAgICAgICBuYW1lOiAnUmlzayBMYWJlbCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jpc2sgTGFiZWwnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSBpZiB0aGlzIGlzIGEgbmV3bHkgaWRlbnRpZmllZCByaXNrIG9yIGl0IGlzIGEgcmFwaWRseSBjaGFuZ2luZyByaXNrLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUklTS19MQUJFTCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxpbmtfaXRlbXMsXG4gICAgICAgIG5hbWU6ICdMSU5LIEdSQyBPQkpFQ1QoUyknLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdMSU5LIE9USEVSIEdSQyBPQkpFQ1RTJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBsZXRzIHlvdSBsaW5rIGEgcmlzayB3aXRoIHJlbGF0ZWQgR1JDIE9iamVjdHMuYCxcbiAgICAgICAgZGlzYWJsZWRNZXNzYWdlOiBgWW91IGNhbiBsaW5rIGEgR1JDIE9iamVjdCB3aXRoIHRoaXMgcmlzayBvbmx5IGFmdGVyIHlvdSBoYXZlIHNlbGVjdGVkIGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBpc0Rpc2FibGVkOiB0cnVlLFxuICAgICAgICBjb2RlOiAnR1JDX09CSkVDVFMnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIENBUDogW1xuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlcixcbiAgICAgICAgbmFtZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgUmVzcG9uc2liaWxpdHkgQ2VudGVycyByZXByZXNlbnQgeW91ciBvcmdhbml6YXRpb25hbCBhbmRcbiAgICAgICAgIG9wZXJhdGlvbmFsIGluZnJhc3RydWN0dXJlLiBZb3UgY2FuIGF0dHJpYnV0ZSBhIHBvbGljeSB0byBvbmUgb3IgbW9yZSBSZXNwb25zaWJpbGl0eSBDZW50ZXJzLlxuICAgICAgICAgIFdoZXJlIHlvdSBhdHRyaWJ1dGUgYSBwb2xpY3kgdG8gYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIsIHRoYXQgcG9saWN5IHdpbGwgYmUgc2hvd24gYXMgYSBwb2xpY3lcbiAgICAgICAgICAgdGhhdCBpcyByZXF1aXJlZCB0byBiZSBhdHRlc3RlZCBieSBhbGwgdGhlIHBlcnNvbnMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgUmVzcG9uc2liaWxpdHkgQ2VudGVyLlxuICAgICAgICAgICAgVGhlIHBlcmZvcm1hbmNlIG9mIGEgcG9saWN5IGFzc2lnbmVkIHRvIGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyIHdpbGwgYWxzbyBjb250cmlidXRlIHRvIHRoZVxuICAgICAgICAgICAgb3ZlcmFsbCBwZXJmb3JtYW5jZSBvZiB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUkVTUE9OU0lCSUxJVFlfQ0VOVEVSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuYXNzb2NpYXRlZF9yaXNrcyxcbiAgICAgICAgbmFtZTogJ1ZFUlNJT04nLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdWZXJzaW9uJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBsZXRzIHlvdSBzcGVjaWZ5IHRoZSBvZmZsaW5lIHZlcnNpb24gbnVtYmVyIGZvciBhIHBvbGljeS4gSGVuY2UsIHlvdSBjYW4gaW5wdXQgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBkaWdpdGFsIG9yIHBoeXNpY2FsIGNvcHkgb2YgdGhlIHBvbGljeSBkb2N1bWVudCBmb3IgcmVjb3JkLWtlZXBpbmcgcHVycG9zZXMuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdWRVJTSU9OJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmV2aWV3ZXIsXG4gICAgICAgIG5hbWU6ICdSZXZpZXdlcicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jldmlld2VyJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbnMgbGV0cyB5b3Ugc3BlY2lmeSBhIHJldmlldyBsaWZlY3ljbGUgZm9yIHRoZSBwb2xpY3kgZG9jdW1lbnQuXG4gICAgICAgICBZb3UgY2FuIHNlbGVjdCBhIHJldmlld2VyIGFuZCBkZXRlcm1pbmUgaG93IG9mdGVuIHRoZSBwb2xpY3kgbmVlZHMgdG8gYmUgcmV2aWV3ZWQuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgY29kZTogJ1JFVklFV0VSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuY2hlY2twb2ludHMsXG4gICAgICAgIG5hbWU6ICdDaGVja3BvaW50cycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0NoZWNrcG9pbnRzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBDaGVja3BvaW50cyBlbmFibGUgeW91IHRvIGNvbmZpcm0gYSBwZXJzb27igJlzIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvbGljeSBkb2N1bWVudC5cbiAgICAgICAgIFlvdSBjYW4gY3JlYXRlIHF1ZXN0aW9ucyBiYXNlZCBvbiB0aGUgcG9saWN5IGNvbnRlbnQgYW5kIHJlcXVpcmUgdGhhdCB0aGUgcmVhZGVyIG9mIHRoZSBwb2xpY3lcbiAgICAgICAgIGFuc3dlcnMgdGhlc2UgcXVlc3Rpb25zIGNvcnJlY3RseSBiZWZvcmUgcHJvY2VlZGluZyB0byBjb21wbGV0ZSB0aGUgYXR0ZXN0YXRpb24uXG4gICAgICAgIGAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdDSEVDS1BPSU5UUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm92ZXJzaWdodCxcbiAgICAgICAgbmFtZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgT3ZlcnNpZ2h0cyBhcmUgcGVyc29ucyB3aG8gb3ZlcnNlZSB0aGUgcG9saWN5LlxuICAgICAgICAgVGhlc2UgcGVyc29ucyB3aWxsIHJlY2VpdmUgZW1haWwgbm90aWZpY2F0aW9ucyBhYm91dCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHBvbGljeS5cbiAgICAgICAgIEFzIHRoZSBwZXJzb24gY3JlYXRpbmcgdGhlIHBvbGljeSwgeW91IHdpbGwgYXV0b21hdGljYWxseSByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBwb2xpY3kuXG4gICAgICAgIGAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnT1ZFUlNFRVInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5mb3JtYXRfZXZpZGVuY2UsXG4gICAgICAgIG5hbWU6ICdSZWxhdGVkIERvY3VtZW50cycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1JlbGF0ZWQgRG9jdW1lbnRzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBSZWxhdGVkIGRvY3VtZW50cyBhcmUgZmlsZXMgdGhhdCBtaWdodCBiZSByZWxhdGVkIHRvIHRoZSBwb2xpY3kuIFRoZXNlIGNvdWxkIGJlIGRvY3VtZW50cyB3aGljaCBhcmUgcmVsYXRlZFxuICAgICAgICAgdG8gdGhlIHBvbGljeSBvciBhcmUgYSBzdWJzZXQgb2YgdGhlIHBvbGljeSB0aGF0IGlzIGJlaW5nIGNyZWF0ZWQuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSRUxBVEVEX0RPQ1VNRU5UUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxpbmtfaXRlbXMsXG4gICAgICAgIG5hbWU6ICdMSU5LIFBST0dSQU1TICYgUkVTUE9OU0lCSUxJVElFUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgUFJPR1JBTVMgJiBSRVNQT05TSUJJTElUSUVTJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGFzc29jaWF0ZSBQcm9ncmFtcyAmIHJlc3BvbnNpYmlsaXRpZXMgZnJvbSB0aGUgQ29tcGxpYW5jZSBtb2R1bGUgd2l0aCBhIHBvbGljeS4gVGhlc2UgY291bGQgYmUgcHJvY2Vzc2VzIG9yIHByb2NlZHVyZXMgdGhhdCBtaWdodCBiZSBsaW5rZWQgdG8gYSBwb2xpY3kuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdMSU5LX1BST0dSQU1fUkVTUE9OU0lCSUxJVElFUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmFzc2Vzc21lbnRzLFxuICAgICAgICBuYW1lOiAnTElOSyBBTiBBU1NFU1NNRU5UJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBBTiBBU1NFU1NNRU5UJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBBc3Nlc3NtZW50cyBhbGxvdyB5b3UgdG8gYXNzb2NpYXRlIG91dGNvbWUgYmFzZWQgcXVlc3Rpb25uYWlyZXMgb3IgY2hlY2tsaXN0IGJhc2VkIHByb2NlZHVyZXMgd2l0aCBhIHBvbGljeS5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0xJTktfQVNTRVNTTUVOVFMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5saW5rX2l0ZW1zLFxuICAgICAgICBuYW1lOiAnTElOSyBSRUxBVEVEIFBPTElDSUVTJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBSRUxBVEVEIFBPTElDSUVTJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbnMgbGV0cyB5b3UgYXNzb2NpYXRlIHJlbGF0ZWQgcG9saWNpZXMgZm9yIHF1aWNrIHJlZmVyZW5jZSwgZW5hYmxpbmcgdXNlcnMgdG8gdmlldyByZWxldmFudCBkb2N1bWVudHMgaW4gb25lIHBsYWNlIGFuZCBlbnN1cmluZyBwb2xpY3kgYWxpZ25tZW50LmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnTElOS19SRUxBVEVEX1BPTElDSUVTJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBDQVI6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vYmplY3RpdmVzLFxuICAgICAgICBuYW1lOiAnT2JqZWN0aXZlJyxcbiAgICAgICAgY29kZTogJ09CSkVDVElWRScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ09iamVjdGl2ZScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdUaGUgb2JqZWN0aXZlIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhbiBvYmplY3RpdmUgZm9yIHRoZSByZXNwb25zaWJpbGl0eS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG5cbiAgICAgIC8vIHtcbiAgICAgIC8vICAgaW1hZ2VVcmw6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnJyxcbiAgICAgIC8vICAgbmFtZTogJ1Byb2dyYW0nLFxuICAgICAgLy8gICBjb2RlOiAnQ0FURUdPUlknLFxuICAgICAgLy8gICB0b29sdGlwVGl0bGU6ICdQcm9ncmFtJyxcbiAgICAgIC8vICAgdG9vbHRpcE1lc3NhZ2U6IGBQcm9ncmFtcyBlbmFibGUgeW91IHRvIGdyb3VwIHNpbWlsYXIgcmVzcG9uc2liaWxpdGllcyB0b2dldGhlci5cbiAgICAgIC8vICAgICBBbGxvY2F0aW5nIGEgcmVzcG9uc2liaWxpdHkgdG8gYSBQcm9ncmFtIGFsbG93cyB5b3UgdG8gdmlldyBhIGdyb3VwIG9yIHNpbWlsYXIgcmVzcG9uc2liaWxpdGllcyBhdCBvbmNlLlxuICAgICAgLy8gICAgIEl0IGFsc28gYWxsb3dzIHlvdSB0byB2aWV3IHRoZSBwZXJmb3JtYW5jZSBvZiB0aG9zZSBjb2xsZWN0aXZlIHJlc3BvbnNpYmlsaXRpZXMuYCxcbiAgICAgIC8vICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAvLyAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAvLyB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlcixcbiAgICAgICAgbmFtZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgICAgIGNvZGU6ICdSQycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgUmVzcG9uc2liaWxpdHkgQ2VudGVycyByZXByZXNlbnQgeW91ciBvcmdhbml6YXRpb25hbCBhbmQgb3BlcmF0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUuPGJyPlxuICAgICAgICAgIFlvdSBjYW4gYXNzaWduIGEgcmVzcG9uc2liaWxpdHkgdG8gb25lIG9yIG1vcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycy4gV2hlcmUgeW91IGFzc2lnbiBhIHJlc3BvbnNpYmlsaXR5IHRvIGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyLFxuICAgICAgICAgIHRoYXQgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzaG93biBhcyBhIHJlc3BvbnNpYmlsaXR5IHRoYXQgaXMgcmVxdWlyZWQgdG8gYmUgY29tcGxldGVkIGJ5IHRoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIuXG4gICAgICAgICAgVGhlIHBlcmZvcm1hbmNlIG9mIGEgcmVzcG9uc2liaWxpdHkgYXNzaWduZWQgdG8gYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgd2lsbCBhbHNvIGNvbnRyaWJ1dGUgdG8gdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2Ugb2YgdGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlci5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuY2FzZV9jYXRlZ29yeSxcbiAgICAgICAgbmFtZTogJ1Byb2dyYW0nLFxuICAgICAgICBjb2RlOiAnUFJPR1JBTScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Byb2dyYW0nLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFByb2dyYW1zIGVuYWJsZSB5b3UgdG8gZ3JvdXAgc2ltaWxhciByZXNwb25zaWJpbGl0aWVzIHRvZ2V0aGVyLlxuICAgICAgICAgIEFsbG9jYXRpbmcgYSByZXNwb25zaWJpbGl0eSB0byBhIFByb2dyYW0gYWxsb3dzIHlvdSB0byB2aWV3IGEgZ3JvdXAgb3Igc2ltaWxhciByZXNwb25zaWJpbGl0aWVzIGF0IG9uY2UuXG4gICAgICAgICAgSXQgYWxzbyBhbGxvd3MgeW91IHRvIHZpZXcgdGhlIHBlcmZvcm1hbmNlIG9mIHRob3NlIGNvbGxlY3RpdmUgcmVzcG9uc2liaWxpdGllcy5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuZm9ybWF0X2V2aWRlbmNlLFxuICAgICAgICBuYW1lOiAnRm9ybWF0ICYgRXZpZGVuY2UnLFxuICAgICAgICBjb2RlOiAnRk9STUFURV9FVklERU5DRScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJyBGb3JtYXQgJiBFdmlkZW5jZScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdZb3UgY2FuIHVwbG9hZCBhIGZvcm1hdCBmb3IgdGhpcyByZXNwb25zaWJpbGl0eSBhbmQgeW91IGNhbiBhbHNvIHJlcXVpcmUgZXZpZGVuY2Ugb2YgY29tcGxldGlvbiBvZiB0aGUgcmVzcG9uc2liaWxpdHkgdG8gYmUgcHJvdmlkZWQuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmFzc2Vzc21lbnRzLFxuICAgICAgICBuYW1lOiAnQXNzZXNzbWVudHMnLFxuICAgICAgICBjb2RlOiAnQVNTRVNTTUVOVCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJyBBc3Nlc3NtZW50cycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdBc3Nlc3NtZW50cyBhbGxvdyB5b3UgdG8gYXNzb2NpYXRlIG91dGNvbWUgYmFzZWQtcXVlc3Rpb25uYWlyZXMgb3Igc2VsZi1hc3Nlc3NtZW50IHF1ZXN0aW9ubmFpcmVzIHdpdGggYSByZXNwb25zaWJpbGl0eS4gVGhlc2UgbmVlZCB0byBiZSBjb21wbGV0ZWQgYnkgdGhlIGFzc2lnbmVlIGFzIGEgcGFydCBvZiBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0eS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgaXNEaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIGRpc2FibGVkTWVzc2FnZTpcbiAgICAgICAgICAnQW4gYXNzZXNzbWVudCBjYW4gYmUgbGlua2VkIHdpdGggYSByZXNwb25zaWJpbGl0eSBvbmx5IGFmdGVyIHJlbW92aW5nIHRoZSBhc3NvY2lhdGVkIGNoZWNrcG9pbnRzLicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmNoZWNrcG9pbnRzLFxuICAgICAgICAvLyAgbmFtZTogJ0NoZWNrcG9pbnRzIDxzcGFuICpuZ0lmPVwiZmFsc2VcIiBjbGFzcz1cImNoZWNrcG9pbnQtdmVyc2lvblwiPlYyLjA8L3NwYW4+IDxpIGNsYXNzPVwiaWNvbnMgZGVwcmVjaWF0aW9uLWljb24gdngtZnMtMTYgdngtbWwtMlwiIGFwcFRvb2x0aXA9XCJUaGlzIGlzIGFuIG91dC1vZi1kYXRlIHZlcnNpb24gb2YgdGhlIENoZWNrcG9pbnRzIGZlYXR1cmUuIFRvIGFkZCBjaGVja3BvaW50cyB0aGF0IGFyZSBvbmx5IHJlbGV2YW50IHRvIHRoaXMgcmVzcG9uc2liaWxpdHkgeW91IGNhbiB1c2UgdGhlIG5ldyBDaGVja3BvaW50cyBmZWF0dXJlLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSBhbiBleGlzdGluZyBxdWVzdGlvbm5haXJlIHRlbXBsYXRlIHVzaW5nIHRoZSBBc3Nlc3NtZW50cyBmZWF0dXJlLlwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTMwOzwvaT4nLFxuICAgICAgICBuYW1lOiAnQ2hlY2twb2ludHMgPGkgY2xhc3M9XCJpY29ucyBkZXByZWNpYXRpb24taWNvbiB2eC1mcy0xNiB2eC1tbC0yXCIgYXBwVG9vbHRpcD1cIlRoaXMgaXMgYW4gb3V0LW9mLWRhdGUgdmVyc2lvbiBvZiB0aGUgQ2hlY2twb2ludHMgZmVhdHVyZS4gVG8gYWRkIGNoZWNrcG9pbnRzIHRoYXQgYXJlIG9ubHkgcmVsZXZhbnQgdG8gdGhpcyByZXNwb25zaWJpbGl0eSB5b3UgY2FuIHVzZSB0aGUgbmV3IENoZWNrcG9pbnRzIGZlYXR1cmUuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIGFuIGV4aXN0aW5nIHF1ZXN0aW9ubmFpcmUgdGVtcGxhdGUgdXNpbmcgdGhlIEFzc2Vzc21lbnRzIGZlYXR1cmUuXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MzA7PC9pPicsXG4gICAgICAgIGNvZGU6ICdDSEVDS1BPSU5UUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0NoZWNrcG9pbnRzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgaXMgYW4gb3V0LW9mLWRhdGUgdmVyc2lvbiBvZiB0aGUgQ2hlY2twb2ludHMgZmVhdHVyZS4gVG8gYWRkIGNoZWNrcG9pbnRzIHRoYXQgYXJlIG9ubHkgcmVsZXZhbnQgdG8gdGhpcyByZXNwb25zaWJpbGl0eSB5b3UgY2FuIHVzZSB0aGUgbmV3IENoZWNrcG9pbnRzIGZlYXR1cmUuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIGFuIGV4aXN0aW5nIHF1ZXN0aW9ubmFpcmUgdGVtcGxhdGUgdXNpbmcgdGhlIEFzc2Vzc21lbnRzIGZlYXR1cmUuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoZSBjaGVja3BvaW50cyBmZWF0dXJlIGlzIHJlcGxhY2VkIHdpdGggdGhlIG5ldyAmIGVuaGFuY2VkIGFzc2Vzc21lbnQgZnVuY3Rpb25hbGl0eS4gU2VsZWN0IHRoZSA8c3Ryb25nPkFzc2Vzc21lbnRzPC9zdHJvbmc+IG9wdGlvbiBiZWxvdyB0byBjcmVhdGUgaW50ZXJhY3RpdmUgb3V0Y29tZS1iYXNlZCBvciBzZWxmLWFzc2Vzc21lbnQgcXVlc3Rpb25uYWlyZXMuJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuY2hlY2twb2ludHMsXG4gICAgICAgIG5hbWU6ICdDaGVja3BvaW50cycsXG4gICAgICAgIGNvZGU6ICdDSEVDS1BPSU5UU19ORVcnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdDaGVja3BvaW50cycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdDaGVja3BvaW50cyBhbGxvdyB5b3UgdG8gc3BlY2lmeSBtdWx0aXBsZSBzdGVwcyBmb3IgYSBzcGVjaWZpYyByZXNwb25zaWJpbGl0eSB3aGljaCBuZWVkIHRvIGJlIGNvbXBsZXRlZCBhcyBwYXJ0IG9mIGNvbXBsZXRpbmcgdGhlIHJlc3BvbnNpYmlsaXR5LiBPZnRlbiBjaGVja3BvaW50cyBhcmUgdXNlZCB0byByZXBsYWNlIGluc3RydWN0aW9uIG1hbnVhbHMuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ05ldyBDaGVja3BvaW50cyBjYW4gYmUgbGlua2VkIHdpdGggYSByZXNwb25zaWJpbGl0eSBvbmx5IGFmdGVyIHJlbW92aW5nIHRoZSBvdXQtb2YtZGF0ZSB2ZXJzaW9uIG9mIHRoZSBDaGVja3BvaW50cy4nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yaXNrcyxcbiAgICAgICAgbmFtZTogJ1Jpc2sgQ2xhc3NpZmljYXRpb24nLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSaXNrIENsYXNzaWZpY2F0aW9uJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1lvdSBjYW4gc3BlY2lmeSB0aGUgbGV2ZWwgb2YgcmlzayB0aGF0IHRoZSBvcmdhbml6YXRpb24gd2lsbCBiZSBleHBvc2VkIHRvIGlmIHRoZSByZXNwb25zaWJpbGl0eSBpcyBub3QgY29tcGxldGVkLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUklTS19DTEFTU0lGSUNBVElPTicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJldmlld2VyLFxuICAgICAgICBuYW1lOiAnUmV2aWV3ZXInLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZXZpZXdlcicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdBIFJldmlld2VyIGlzIGEgcGVyc29uIHRoYXQgaXMgdGFza2VkIHdpdGggcmV2aWV3aW5nIHRoZSBjb21wbGV0ZWQgcmVzcG9uc2liaWxpdHkuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSRVZJRVdFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm92ZXJzaWdodCxcbiAgICAgICAgbmFtZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgT3ZlcnNpZ2h0IGVuYWJsZXMgeW91IHRvIGRlc2lnbmF0ZSBwZXJzb25zIHRvIG92ZXJzZWUgdGhlIHJlc3BvbnNpYmlsaXR5LlxuICAgICAgICAgIFRoZXNlIHBlcnNvbnMgd2lsbCByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSByZXNwb25zaWJpbGl0eS48YnI+XG4gICAgICAgICAgQXMgdGhlIHBlcnNvbiBjcmVhdGluZyB0aGUgcmVzcG9uc2liaWxpdHksIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSBlbWFpbCBub3RpZmljYXRpb25zIGFib3V0IHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgcmVzcG9uc2liaWxpdHkuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVkVSU0VFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmF1ZGl0LFxuICAgICAgICBuYW1lOiAnQVNTVVJBTkNFJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnQVNTVVJBTkNFJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1NlbGVjdCB0aGUgdGVzdCBwbGFuIGNhdGVnb3JpZXMgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBhZGQgdGhpcyByZXNwb25zaWJpbGl0eSB0by4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0FTU1VSQU5DRScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmF1ZGl0LFxuICAgICAgICBuYW1lOiAnUkVRVUlSRVMgQVVESVQ/JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUkVRVUlSRVMgQVVESVQ/JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1NlbGVjdCB0aGUgYXVkaXQgY2F0ZWdvcmllcyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGFkZCB0aGlzIHJlc3BvbnNpYmlsaXR5IHRvLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUkVRVUlSRVNfQVVESVQnLFxuICAgICAgICBpc0Rpc2FibGVkOiB0cnVlLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgcmVzcG9uc2liaWxpdHkgY2FuIGJlIHNjaGVkdWxlZCBmb3IgYW4gYXVkaXQgb25seSBhZnRlciB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyIGlzIHNlbGVjdGVkLicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxpbmtfaXRlbXMsXG4gICAgICAgIG5hbWU6ICdMSU5LIEdSQyBPQkpFQ1QoUyknLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdMSU5LIE9USEVSIEdSQyBPQkpFQ1RTJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBsZXRzIHlvdSBsaW5rIGEgcmVzcG9uc2liaWxpdHkgd2l0aCByZWxhdGVkIEdSQyBPYmplY3RzLmAsXG4gICAgICAgIGRpc2FibGVkTWVzc2FnZTogYFlvdSBjYW4gbGluayBhIEdSQyBPYmplY3Qgd2l0aCB0aGlzIHJlc3BvbnNpYmlsaXR5IG9ubHkgYWZ0ZXIgeW91IGhhdmUgc2VsZWN0ZWQgYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IHRydWUsXG4gICAgICAgIGNvZGU6ICdHUkNfT0JKRUNUUycsXG4gICAgICB9LFxuICAgIF0sXG4gICAgQ0FTOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmVzcG9uc2liaWxpdHlfY2VudGVyLFxuICAgICAgICBuYW1lOiAnUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuZm9ybWF0X2V2aWRlbmNlLFxuICAgICAgICBuYW1lOiAnRm9ybWF0ICZhbXA7IEV2aWRlbmNlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcblxuICAgIExBSTogW1xuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmV4Y2VwdGlvbl90eXBlLFxuICAgICAgICBuYW1lOiAnRXhjZXB0aW9uIFR5cGUnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdFeGNlcHRpb24gVHlwZScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdFeGNlcHRpb24gdHlwZSBsZXRzIHlvdSBzcGVjaWZ5IHdoZXRoZXIgdGhlcmUgaXMgYSBkZXNpZ24gb3IgYW4gb3BlcmF0aW9uYWwgZWZmZWN0aXZlbmVzcyBwcm9ibGVtLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnRVhDRVBUSU9OX1RZUEUnLFxuICAgICAgfSxcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgaW1hZ2VVcmw6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvaXNzdWUtdHlwZS5zdmcnLFxuICAgICAgLy8gICBuYW1lOiAnSXNzdWUgdHlwZScsXG4gICAgICAvLyAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAvLyAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgIC8vICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAvLyAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAvLyAgIGNvZGU6ICdJU1NVRV9UWVBFJ1xuICAgICAgLy8gfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5wcmlvcml0eSxcbiAgICAgICAgbmFtZTogJ1ByaW9yaXR5JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUHJpb3JpdHknLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnVGhpcyBzZXRzIHRoZSBwcmlvcml0eSBsZXZlbCBmb3IgcmVzb2x2aW5nIGVhY2ggaXNzdWUuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdQUklPUklUWScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmFzc29jaWF0ZWRfcmlza3MsXG4gICAgICAgIG5hbWU6ICdBc3NvY2lhdGVkIFJpc2tzJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnQXNzb2NpYXRlZCBSaXNrcycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdBc3NvY2lhdGVkIHJpc2tzIGxldHMgeW91IHNwZWNpZnkgdGhlIHJpc2tzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gdGhpcyBpc3N1ZS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0FTU09DSUFURURfUklTS1MnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vdmVyc2lnaHQsXG4gICAgICAgIG5hbWU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnT3ZlcnNpZ2h0cyBhcmUgdGhlIHBlcnNvbnMgcmVzcG9uc2libGUgZm9yIG92ZXJzZWVpbmcgYW4gaXNzdWUuIFRoZXNlIHBlcnNvbnMgd2lsbCByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIGlzc3VlIHN0YXR1cy4gQXMgdGhlIHBlcnNvbiByZXBvcnRpbmcgdGhpcyBpc3N1ZSwgeW91IHdpbGwgYXV0b21hdGljYWxseSByZWNlaXZlIHN1Y2ggZW1haWwgbm90aWZpY2F0aW9ucy4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09WRVJTSUdIVCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmZvcm1hdF9ldmlkZW5jZSxcbiAgICAgICAgbmFtZTogJ0V2aWRlbmNlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnRXZpZGVuY2UnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnWW91IGNhbiByZXF1aXJlIHRoYXQgdGhlIHBlcnNvbiByZXNvbHZpbmcgdGhlIGlzc3VlIHVwbG9hZHMgZXZpZGVuY2UgdG8gY29uZmlybScsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnRVZJREVOQ0UnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIENBUFI6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yb2xlcyxcbiAgICAgICAgbmFtZTogJ1JvbGUoUyknLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSb2xlKHMpJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBSb2xlKHMpIGxldCB5b3Ugc3BlY2lmeSB0aGUgdXNlcnMgdGhhdCBjYW4gYmUg4oCcT3duZXJz4oCdIG9mIGEgUHJvZ3JhbS5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JPTEVTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuY2FzZV9vd25lcnMsXG4gICAgICAgIG5hbWU6ICdPd25lcihzKScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ093bmVyKHMpJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+XG4gICAgICAgIFRoZSA8Yj5LZXkgQWRtaW48L2I+IGFuZCBhbGwgPGI+QWRtaW48L2I+IHVzZXJzIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC5cbiAgICAgICAgYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPV05FUlMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6XG4gICAgICAgICAgJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9jb2xsYWJvcmF0b3Iuc3ZnJyxcbiAgICAgICAgbmFtZTogJ0NvbGxhYm9yYXRvcnMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdDb2xsYWJvcmF0b3JzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGA8c3Ryb25nPkNvbGxhYm9yYXRvcnM8L3N0cm9uZz4gY2FuIG9ubHkgYWNjZXNzIHJlc3BvbnNpYmlsaXRpZXMgaW4gdGhpcyBwcm9ncmFtIHdoZXJlIHRoZXkgYXJlIGRpcmVjdGx5IGludm9sdmVkLCBzdWNoIGFzIGNyZWF0b3IsIHJldmlld2VyLCBhc3NpZ25vciwgb3ZlcnNpZ2h0IHVzZXIsIG9yIGNvbGxhYm9yYXRvci48YnI+XG4gICAgICAgIDxicj5cbiAgICAgICAgVGhpcyByb2xlIGlzIGlkZWFsIGZvciB1c2VycyB3aG8gbmVlZCB0byB3b3JrIG9uIHNwZWNpZmljIHRhc2tzIGJ1dCBzaG91bGRuJ3Qgc2VlIHRoZSBlbnRpcmUgcHJvZ3JhbeKAmXMgY29udGVudHMuXG4gICAgICAgIDxicj5cbiAgICAgICAgPGJyPlxuICAgICAgICA8ZW0+RXhhbXBsZTo8L2VtPiBJbiBhbiBBTUwgKEFudGktTW9uZXkgTGF1bmRlcmluZykgcHJvZ3JhbSwgdGhlIEZpbmFuY2UgbGVhZCBhZGRlZCBhcyBhIGNvbGxhYm9yYXRvciB3aWxsIG9ubHkgc2VlIHJlc3BvbnNpYmlsaXRpZXMgcmVsYXRlZCB0byBmaW5hbmNpYWwgcmVwb3J0aW5nIG9yIGF1ZGl0cyB0aGV5IGFyZSBsaW5rZWQgdG8sIG5vdCB0aG9zZSBvd25lZCBieSBMZWdhbCBvciBDb21wbGlhbmNlLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnQ09MTEFCT1JBVE9SJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuYXBwcm92YWwsXG4gICAgICAgIG5hbWU6ICdBcHByb3ZlcicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0FwcHJvdmVyJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBBbiBBcHByb3ZlciBpcyByZXNwb25zaWJsZSBmb3IgYXBwcm92aW5nIGEgUHJvZ3JhbS4gV2hlcmUgYW4gQXBwcm92ZXIgaXMgc2VsZWN0ZWQsIHRoZSBQcm9ncmFtIGFuZCBhbGwgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCB0aGF0IFByb2dyYW0gd2lsbCBvbmx5IGNvbW1lbmNlIG9uY2UgdGhlIFByb2dyYW0gaGFzIGJlZW4gYXBwcm92ZWQuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgY29kZTogJ0FQUFJPVkVSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmVjdXJyaW5nLFxuICAgICAgICBuYW1lOiAnUHJvZ3JhbSBEdXJhdGlvbicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Byb2dyYW0gRHVyYXRpb24nLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnUHJvZ3JhbSBEdXJhdGlvbiByZWZlcnMgdG8gdGhlIGR1cmF0aW9uIG9mIHRoZSBQcm9ncmFtLiBBIFByb2dyYW0gY2FuIG9jY3VyIGluIHBlcnBldHVpdHksIG9yIGl0IGNhbiBvY2N1ciB1bnRpbCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJ1c2luZXNzIGN5Y2xlIHRoYXQgaGFzIGJlZW4gc3BlY2lmaWVkIGluICcgK1xuICAgICAgICAgIHRoaXMuYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uYnVzaW5lc3NfY3ljbGUgK1xuICAgICAgICAgICcuICBBbGwgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCB0aGF0IFByb2dyYW0gd2lsbCBhbHNvIGhhdmUgdGhlIHNhbWUgUHJvZ3JhbSBEdXJhdGlvbi4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBjb2RlOiAnUFJPR1JBTV9GUkVRVUVOQ1knLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5sb2NrX3Njb3BlLFxuICAgICAgICBuYW1lOiAnTG9jayB0aGUgUHJvZ3JhbSBTY29wZScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xvY2sgdGhlIFByb2dyYW0gU2NvcGUnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYElmIHRoZSBQcm9ncmFtIFNjb3BlIGlzIGxvY2tlZCwgbmVpdGhlciB0aGUgUHJvZ3JhbSBub3IgdGhlIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggdGhlIFByb2dyYW0gY2FuIGJlIGVkaXRlZCBvbmNlIHRoZSBQcm9ncmFtIGJlZ2lucy4gSW4gb3JkZXIgdG8gZWRpdCB0aGUgUHJvZ3JhbSBvciB0aGUgbGlua2VkIHJlc3BvbnNpYmlsaXRpZXMsIHRoZSBQcm9ncmFtIGRldGFpbHMgd2lsbCBuZWVkIHRvIGJlIGVkaXRlZC5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBjb2RlOiAnU0NPUEVfQ0hBTkdFUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlcixcbiAgICAgICAgbmFtZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgUmVzcG9uc2liaWxpdHkgQ2VudGVycyByZXByZXNlbnQgeW91ciBvcmdhbml6YXRpb25hbCBhbmQgb3BlcmF0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUuIFdoZXJlIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIFJlc3BvbnNpYmlsaXRpZXMgQ2VudGVycyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBjb2RlOiAnUkMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5jYXNlX2Fzc2lnbmVlcyxcbiAgICAgICAgbmFtZTogJ0Fzc2lnbmVlcycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0Fzc2lnbmVlcycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgQXNzaWduZWVzIGFyZSByZXF1aXJlZCB0byBjb21wbGV0ZSB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byB0aGVtLiBXaGVyZSBBc3NpZ25lZXMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIEFzc2lnbmVlcyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBjb2RlOiAnQVNTSUdORUVTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmV2aWV3ZXIsXG4gICAgICAgIG5hbWU6ICdSZXZpZXdlcnMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZXZpZXdlcnMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFJldmlld2VycyBhcmUgcmVxdWlyZWQgdG8gcmV2aWV3IHJlc3BvbnNpYmlsaXRpZXMgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY29tcGxldGVkLiBXaGVyZSBSZXZpZXdlcnMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIFJldmlld2VycyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBjb2RlOiAnUkVWSUVXRVInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vdmVyc2lnaHQsXG4gICAgICAgIG5hbWU6ICdPdmVyc2lnaHRzJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3ZlcnNpZ2h0cycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdPdmVyc2lnaHRzIHJlY2VpdmUgdXBkYXRlcyB3aGVuIGEgcmVzcG9uc2liaWxpdHkgaXMgY29tcGxldGVkLCBjb21wbGV0ZWQgd2l0aCBkZWxheSBvciBub3QgY29tcGxldGVkLiBXaGVyZSBPdmVyc2lnaHRzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBPdmVyc2lnaHRzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdPVkVSU0VFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmFzc2Vzc21lbnRzLFxuICAgICAgICBuYW1lOiAnQXNzZXNzbWVudHMnLFxuICAgICAgICBjb2RlOiAnQVNTRVNTTUVOVCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJyBBc3Nlc3NtZW50cycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdBc3Nlc3NtZW50cyBhcmUgYSBkaWdpdGFsIGZvcm0gdGhhdCBhcmUgY3JlYXRlZCBpbiDigJxBc3Nlc3NtZW504oCdIHdpdGhpbiB0aGUgQ29tcGxpYW5jZSBNb2R1bGUuIFdoZXJlIEFzc2Vzc21lbnRzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBBc3Nlc3NtZW50cyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgZGlzYWJsZWRNZXNzYWdlOlxuICAgICAgICAgICdBbiBhc3Nlc3NtZW50IGNhbiBiZSBsaW5rZWQgd2l0aCBhIHJlc3BvbnNpYmlsaXR5IG9ubHkgYWZ0ZXIgcmVtb3ZpbmcgdGhlIGFzc29jaWF0ZWQgY2hlY2twb2ludHMuJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuZm9ybWF0X2V2aWRlbmNlLFxuICAgICAgICBuYW1lOiAnRXZpZGVuY2UnLFxuICAgICAgICBjb2RlOiAnRk9STUFURV9FVklERU5DRScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0V2aWRlbmNlJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ0lmIHNlbGVjdGVkLCBldmlkZW5jZSBvZiBjb21wbGV0aW9uIG9mIGEgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSByZXF1aXJlZCBmb3IgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uIEFuIEFzc2lnbm9yLCBiZWluZyB0aGUgcGVyc29uIHdobyBjcmVhdGVzIHRoZSByZXNwb25zaWJpbGl0eSwgY2FuIG92ZXJyaWRlIHRoaXMgb3B0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5jdXN0b21fZmllbGRzLFxuICAgICAgICBuYW1lOiAnQ3VzdG9tIEZpZWxkJyxcbiAgICAgICAgY29kZTogJ0NVU1RPTV9GSUVMRFMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcgQ3VzdG9tIEZpZWxkJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1doZXJlIGEgY3VzdG9tIGZpZWxkIGlzIHNwZWNpZmllZCwgYWxsIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggYSBQcm9ncmFtIHdpbGwgY29udGFpbiB0aGF0IGN1c3RvbSBmaWVsZC4gQ3VzdG9tIGZpZWxkcyBlbmFibGUgdGhlIGNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBtZXRhIGRhdGEuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgIF0sXG4gICAgR1JDOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMubGlua19pdGVtcyxcbiAgICAgICAgbmFtZTogJ0xJTksgUkVTUE9OU0lCSUxJVElFUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgUkVTUE9OU0lCSUxJVElFUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3UgbGluayBhIEdSQyBPYmplY3Qgd2l0aCByZWxhdGVkIHJlc3BvbnNpYmlsaXRpZXMuYCxcbiAgICAgICAgZGlzYWJsZWRNZXNzYWdlOlxuICAgICAgICAgICdZb3UgY2FuIGxpbmsgYSByZXNwb25zaWJpbGl0eSB3aXRoIHRoaXMgR1JDIE9iamVjdCBvbmx5IGFmdGVyIHlvdSBoYXZlIHNlbGVjdGVkIHRoZSByZWxldmFudCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdMSU5LX1BST0dSQU0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5saW5rX3Jpc2tzLFxuICAgICAgICBuYW1lOiAnTElOSyBSSVNLUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgUklTS1MnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9uIGxldHMgeW91IGxpbmsgYSBHUkMgT2JqZWN0IHdpdGggcmVsYXRlZCByaXNrcy5gLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ1lvdSBjYW4gbGluayBhIHJpc2sgd2l0aCB0aGlzIEdSQyBPYmplY3Qgb25seSBhZnRlciB5b3UgaGF2ZSBzZWxlY3RlZCB0aGUgcmVsZXZhbnQgUmVzcG9uc2liaWxpdHkgQ2VudGVyLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnTElOS19SSVNLX0NBVEVHT1JJRVNfUklTS1MnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5saW5rX2l0ZW1zLFxuICAgICAgICBuYW1lOiAnTElOSyBPVEhFUiBHUkMgT0JKRUNUUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgT1RIRVIgR1JDIE9CSkVDVFMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9uIGxldHMgeW91IGxpbmsgYSBHUkMgT2JqZWN0IHdpdGggb3RoZXIgcmVsYXRlZCBHUkMgT2JqZWN0cy5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09USEVSX0dSQ19PQkpFQ1RTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBMSU5LUz8uY3VzdG9tRmllbGRzLFxuICAgICAgICBuYW1lOiAnR1JDIE9iamVjdCBUeXBlIEF0dHJpYnV0ZXMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdHUkMgT2JqZWN0IFR5cGUgQXR0cmlidXRlcycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3UgYWRkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBhIEdSQyBPYmplY3QuYCxcbiAgICAgICAgZGlzYWJsZWRNZXNzYWdlOlxuICAgICAgICAgICdUaGVyZSBhcmUgbm8gYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGxpbmtlZCB3aXRoIHRoaXMgR1JDIE9iamVjdCBUeXBlLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnQVRUUklCVVRFUycsXG4gICAgICB9LFxuICAgIF0sXG4gICAgUkFDOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub2JqZWN0aXZlcyxcbiAgICAgICAgbmFtZTogJ0V4Y2VwdGlvbiBUeXBlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnRXhjZXB0aW9uIFR5cGUnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnRXhjZXB0aW9uIHR5cGUgbGV0cyB5b3Ugc3BlY2lmeSB3aGV0aGVyIHRoZXJlIGlzIGEgZGVzaWduIG9yIGFuIG9wZXJhdGlvbmFsIGVmZmVjdGl2ZW5lc3MgcHJvYmxlbS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0VYQ0VQVElPTl9UWVBFJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuYXNzb2NpYXRlZF9yaXNrcyxcbiAgICAgICAgbmFtZTogJ0Fzc29jaWF0ZWQgUmlza3MnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdBc3NvY2lhdGVkIFJpc2tzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ0Fzc29jaWF0ZWQgcmlza3MgbGV0cyB5b3Ugc3BlY2lmeSB0aGUgcmlza3MgdGhhdCBhcmUgcmVsYXRlZCB0byB0aGlzIGNhc2UuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdBU1NPQ0lBVEVEX1JJU0tTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ092ZXJzaWdodCBvcHRpb24gbGV0cyB5b3UgZGVzaWduYXRlIHVzZXJzIHRvIG92ZXJzZWUgYSBjYXNlLiBUaGVzZSB1c2VycyB3aWxsIHJlY2VpdmUgZW1haWwgbm90aWZpY2F0aW9ucyBhYm91dCB0aGUgY2FzZSBzdGF0dXMgJiByZWxhdGVkIHdvcmtmbG93cy4gQXMgdGhlIHBlcnNvbiByZXBvcnRpbmcgdGhpcyBjYXNlLCB5b3Ugd2lsbCBhdXRvbWF0aWNhbGx5IHJlY2VpdmUgc3VjaCBlbWFpbCBub3RpZmljYXRpb25zLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnT1ZFUlNJR0hUJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuZm9ybWF0X2V2aWRlbmNlLFxuICAgICAgICBuYW1lOiAnRXZpZGVuY2UnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdFdmlkZW5jZScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdZb3UgY2FuIHJlcXVpcmUgdGhhdCB0aGUgcGVyc29uIHJlc29sdmluZyB0aGUgY2FzZSB1cGxvYWRzIGV2aWRlbmNlIHRvIGNvbmZpcm0nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBjb2RlOiAnRVZJREVOQ0UnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yZWNvbW1lbmRlZF9hY3Rpb24sXG4gICAgICAgIG5hbWU6ICdSZWNvbW1lbmRlZCBBY3Rpb25zJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JFQ09NTUVOREVEX0FDVElPTlMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yaXNrcyxcbiAgICAgICAgbmFtZTogJ1Jpc2sgQ2xhc3NpZmljYXRpb24nLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogJycsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUklTS19DTEFTU0lGSUNBVElPTicsXG4gICAgICB9LFxuICAgIF0sXG4gICAgQUNUVzogW1xuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm9iamVjdGl2ZXMsXG4gICAgICAgIG5hbWU6ICdFeGNlcHRpb24gVHlwZScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0V4Y2VwdGlvbiBUeXBlJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ0V4Y2VwdGlvbiB0eXBlIGxldHMgeW91IHNwZWNpZnkgd2hldGhlciB0aGVyZSBpcyBhIGRlc2lnbiBvciBhbiBvcGVyYXRpb25hbCBlZmZlY3RpdmVuZXNzIHByb2JsZW0uJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdFWENFUFRJT05fVFlQRScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmFzc29jaWF0ZWRfcmlza3MsXG4gICAgICAgIG5hbWU6ICdBc3NvY2lhdGVkIFJpc2tzJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnQXNzb2NpYXRlZCBSaXNrcycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdBc3NvY2lhdGVkIHJpc2tzIGxldHMgeW91IHNwZWNpZnkgdGhlIHJpc2tzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gdGhpcyBjYXNlLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnQVNTT0NJQVRFRF9SSVNLUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm92ZXJzaWdodCxcbiAgICAgICAgbmFtZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdPdmVyc2lnaHRzIGFyZSB0aGUgcGVyc29ucyByZXNwb25zaWJsZSBmb3Igb3ZlcnNlZWluZyBhbiBjYXNlLiBUaGVzZSBwZXJzb25zIHdpbGwgcmVjZWl2ZSBlbWFpbCBub3RpZmljYXRpb25zIGFib3V0IHRoZSBjYXNlIHN0YXR1cy4gQXMgdGhlIHBlcnNvbiByZXBvcnRpbmcgdGhpcyBjYXNlLCB5b3Ugd2lsbCBhdXRvbWF0aWNhbGx5IHJlY2VpdmUgc3VjaCBlbWFpbCBub3RpZmljYXRpb25zLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnT1ZFUlNJR0hUJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmVjb21tZW5kZWRfYWN0aW9uLFxuICAgICAgICBuYW1lOiAnUmVjb21tZW5kZWQgQWN0aW9ucycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSRUNPTU1FTkRFRF9BQ1RJT05TJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmlza3MsXG4gICAgICAgIG5hbWU6ICdSaXNrIENsYXNzaWZpY2F0aW9uJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JJU0tfQ0xBU1NJRklDQVRJT04nLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVwb3J0QUNhc2VTZXJ2aWNlOiBSZXBvcnRBQ2FzZVNlcnZpY2UpIHtcbiAgICB0aGlzLnJlc2V0UkFDTW9yZU9wdGlvbnMoKTtcbiAgfVxuXG4gIHJlc2V0UkFDTW9yZU9wdGlvbnMoKSB7XG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UucmVzZXRNb3JlT3B0aW9uLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LlJBQy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgIGVsZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXM/LmlzUHJvZ3JhbVNlbGVjdGVkPy5jdXJyZW50VmFsdWUgIT09XG4gICAgICBjaGFuZ2VzPy5pc1Byb2dyYW1TZWxlY3RlZD8ucHJldmlvdXNWYWx1ZVxuICAgICkge1xuICAgICAgdGhpcy5pc1Byb2dyYW1TZWxlY3RlZCA9IGNoYW5nZXMuaXNQcm9ncmFtU2VsZWN0ZWQuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNSQ1NlbGVjdGVkKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgPT09ICdBQVInKSB7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkFBUi5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGlmKGVsZS5jb2RlID09PSAnQVNTVVJBTkNFJykge1xuICAgICAgICAgIC8vICAgZWxlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgaWYgKGVsZS5jb2RlID09PSAnR1JDX09CSkVDVFMnKSB7XG4gICAgICAgICAgICBlbGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5DQVIuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBpZihlbGUuY29kZSA9PT0gJ0FTU1VSQU5DRScpIHtcbiAgICAgICAgICAvLyAgIGVsZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGlmIChbJ1JFUVVJUkVTX0FVRElUJywgJ0dSQ19PQkpFQ1RTJ10uaW5jbHVkZXMoZWxlLmNvZGUpKSB7XG4gICAgICAgICAgICBlbGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9PT0gJ0FBUicpIHtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuQUFSLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gaWYoZWxlLmNvZGUgPT09ICdBU1NVUkFOQ0UnKSB7XG4gICAgICAgICAgLy8gICBlbGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICBpZiAoZWxlLmNvZGUgPT09ICdHUkNfT0JKRUNUUycpIHtcbiAgICAgICAgICAgIGVsZS5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkNBUi5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGlmKGVsZS5jb2RlID09PSAnQVNTVVJBTkNFJykge1xuICAgICAgICAgIC8vICAgZWxlLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgaWYgKFsnUkVRVUlSRVNfQVVESVQnLCAnR1JDX09CSkVDVFMnXS5pbmNsdWRlcyhlbGUuY29kZSkpIHtcbiAgICAgICAgICAgIGVsZS5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGVja0dSQ0F0dHJpYnV0ZXModGhpcy5pc0F0dHJpYnV0ZXNBdmFpbGFibGUpO1xuICB9XG5cbiAgY2hlY2tHUkNBdHRyaWJ1dGVzKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5HUkMuZm9yRWFjaCgoZWxlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChlbGUuY29kZSA9PT0gJ0FUVFJJQlVURVMnKSB7XG4gICAgICAgIGVsZS5pc0Rpc2FibGVkID0gIXZhbHVlO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgZWxlLmNoZWNrZWQgPSAhdmFsdWU7XG4gICAgICAgICAgdGhpcy5zZWxlY3RNb3JlT3B0aW9uKGVsZSwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZWxlLmNvZGUgPT09ICdMSU5LX1BST0dSQU0nKSB7XG4gICAgICAgIGVsZS5pc0Rpc2FibGVkID0gIXRoaXMuaXNSQ1NlbGVjdGVkO1xuICAgICAgfVxuICAgICAgaWYgKGVsZS5jb2RlID09PSAnTElOS19SSVNLX0NBVEVHT1JJRVNfUklTS1MnKSB7XG4gICAgICAgIGVsZS5pc0Rpc2FibGVkID0gIXRoaXMuaXNSQ1NlbGVjdGVkO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmVhdHVyZWZsYWdyb2xlID0gdGhpcy5hbGxvd2VkRmVhdHVyZT8uaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yb2xlX2ltcHJvdmVtZW50cydcbiAgICApO1xuICAgIHRoaXMuZmZfcmNfbGlzdGluZyA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcmNfbGlzdGluZycpO1xuICAgIHRoaXMuZmZfcmNfbGlzdGluZ1xuICAgICAgPyAodGhpcy5wZXJtaXNzaW9uVGV4dCA9ICdQZXJtaXNzaW9ucycpXG4gICAgICA6ICh0aGlzLnBlcm1pc3Npb25UZXh0ID0gJ1Blcm1pc3Npb24gR3JvdXAoUyknKTtcbiAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5DQVBSWzBdLm5hbWUgPSB0aGlzLnBlcm1pc3Npb25UZXh0O1xuICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkNBUFJbMF0udG9vbHRpcFRpdGxlID0gdGhpcy5wZXJtaXNzaW9uVGV4dDtcbiAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5DQVBSWzFdLnRvb2x0aXBNZXNzYWdlID0gdGhpcy5mZWF0dXJlZmxhZ3JvbGVcbiAgICAgID8gYE93bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5cbiAgICBUaGUgPGI+S2V5IFBvd2VyIFVzZXIgPC9iPiBhbmQgYWxsIDxiPlBvd2VyIFVzZXJzPC9iPiAgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0LlxuICAgIGBcbiAgICAgIDogYE93bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5cbiAgICBUaGUgPGI+S2V5IEFkbWluPC9iPiBhbmQgYWxsIDxiPkFkbWluPC9iPiB1c2VycyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBPd25lcnMgb2YgYSBQcm9ncmFtIGJ5IGRlZmF1bHQuXG4gICAgYDtcbiAgICBpZiAodGhpcy5hbGxvd2VkRmVhdHVyZT8uaXNGZWF0dXJlRW5hYmxlZCgnZmZfcHJvZ3JhbV9zaW1wbGlmeScpKSB7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5DQVBSWzBdLnRvb2x0aXBNZXNzYWdlID0gYCR7dGhpcy5wZXJtaXNzaW9uVGV4dH0gbGV0IHlvdSBzcGVjaWZ5IHRoZSB1c2VycyB0aGF0IGNhbiBiZSDigJxPd25lcnPigJ0gb2YgYSBQcm9ncmFtLmA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkNBUFJbMF0udG9vbHRpcE1lc3NhZ2UgPSBgJHt0aGlzLnBlcm1pc3Npb25UZXh0fSBsZXQgeW91IHNwZWNpZnkgdGhlIHVzZXJzIHRoYXQgY2FuIGJlIOKAnE93bmVyc+KAnSBhbmQg4oCcQXBwcm92ZXJz4oCdIG9mIGEgUHJvZ3JhbS5gO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZpbmRJbmRleChcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLmNvZGUgPT09ICdDSEVDS1BPSU5UUydcbiAgICApO1xuICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkNBUltpbmRleF0uaGlkZGVuID1cbiAgICAgIHRoaXMuaXNFZGl0TW9kZSA9PT0gZmFsc2UgPyB0cnVlIDogZmFsc2U7XG4gICAgY29uc3QgUHJvZ3JhbUluZGV4ID0gdGhpcy5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZpbmRJbmRleChcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLmNvZGUgPT09ICdQUk9HUkFNJ1xuICAgICk7XG4gICAgaWYgKFByb2dyYW1JbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5DQVJbUHJvZ3JhbUluZGV4XS5pc0Rpc2FibGVkID0gdGhpcy5pc0VkaXRNb2RlO1xuICAgIH1cbiAgICB0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcgPVxuICAgICAgdGhpcy5hbGxvd2VkRmVhdHVyZT8uaXNGZWF0dXJlRW5hYmxlZCgnZmZfcHJvZ3JhbV9zaW1wbGlmeScpID8/IHRydWU7XG4gIH1cblxuICBzZWxlY3RNb3JlT3B0aW9uKGV2ZW50OiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9PT0gJ0NBUicgJiZcbiAgICAgIGV2ZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnICYmXG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdFt0aGlzLmN1cnJlbnRXb3JrZmxvd11baW5kZXhdPy5jaGVja2VkXG4gICAgKSB7XG4gICAgICBldmVudFsnY2hlY2twb2ludF9uZXcnXSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vcmVPcHRpb25zTGlzdFt0aGlzLmN1cnJlbnRXb3JrZmxvd10/Lmxlbmd0aCA+IGluZGV4KSB7XG4gICAgICBldmVudFsnY2hlY2twb2ludF9uZXcnXSA9IGZhbHNlO1xuICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3RbdGhpcy5jdXJyZW50V29ya2Zsb3ddW2luZGV4XVsnY2hlY2tlZCddID1cbiAgICAgICAgIWV2ZW50LmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHBvcHVsYXRlKGV2dDogYW55KSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93KSB7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdFt0aGlzLmN1cnJlbnRXb3JrZmxvd10uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChldnQuaW5jbHVkZXMoZWxlbWVudC5jb2RlKSkge1xuICAgICAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWxlbWVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2dC5pbmNsdWRlcygnQ0hFQ0tQT0lOVFNfTkVXJykpIHtcbiAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09PSAnQ0hFQ0tQT0lOVFMnKSB7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09PSAnQVNTRVNTTUVOVCcpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChldnQuaW5jbHVkZXMoJ0FTU0VTU01FTlQnKSkge1xuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnKSB7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09PSAnQ0hFQ0tQT0lOVFMnKSB7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2dC5pbmNsdWRlcygnQ0hFQ0tQT0lOVFMnKSkge1xuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnKSB7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09PSAnQVNTRVNTTUVOVCcpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChldnQuaW5jbHVkZXMoJ1BST0dSQU0nKSkge1xuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdQUk9HUkFNJyAmJiB0aGlzLmlzUHJvZ3JhbVNlbGVjdGVkKSB7XG4gICAgICAgICAgICBlbGVtZW50LmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGhpZGVFbGVtZW50cyhoaWRkZW5MaXN0OiBhbnkpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cpIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0W3RoaXMuY3VycmVudFdvcmtmbG93XS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGhpZGRlbkxpc3QuaW5jbHVkZXMoZWxlbWVudC5jb2RlKSkge1xuICAgICAgICAgIGVsZW1lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50LmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXNldEFsbCh3b3JrZmxvd1R5cGU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm1vcmVPcHRpb25zTGlzdFt3b3JrZmxvd1R5cGVdKSB7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdFt3b3JrZmxvd1R5cGVdLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVByb2dyYW1Nb3JlT3B0aW9ucygpIHtcbiAgICBjb25zdCBjb2RlID0gW1xuICAgICAgJ1BST0dSQU1fRlJFUVVFTkNZJyxcbiAgICAgICdTQ09QRV9DSEFOR0VTJyxcbiAgICAgICdSQycsXG4gICAgICAnQVNTSUdORUVTJyxcbiAgICAgICdSRVZJRVdFUicsXG4gICAgICAnT1ZFUlNFRVInLFxuICAgICAgJ0FTU0VTU01FTlQnLFxuICAgICAgJ0ZPUk1BVEVfRVZJREVOQ0UnLFxuICAgIF07XG4gICAgaWYgKFxuICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gJiZcbiAgICAgIHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcHJvZ3JhbV9zaW1wbGlmeScpXG4gICAgKSB7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdD8uQ0FQUj8uZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNvZGU/LmluY2x1ZGVzKG9wdGlvbi5jb2RlKSkge1xuICAgICAgICAgIG9wdGlvbi5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JykpIHtcbiAgICAgIGNvZGUucHVzaCgnQVBQUk9WRVInKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0Py5DQVBSPy5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICBpZiAoY29kZT8uaW5jbHVkZXMob3B0aW9uLmNvZGUpKSB7XG4gICAgICAgICAgb3B0aW9uLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS0gPHA+bW9yZS1vcHRpb24gd29ya3MhPC9wPiAtLT5cbjxkaXYgY2xhc3M9XCJtb3JlLW9wdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1jb250YWluZXJcIj5cbiAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLmFkZF9yaXNrX21vcmVfb3B0aW9uXCIgYWx0PVwiXCIgLz5cbiAgICA8cCAqbmdJZj1cImN1cnJlbnRXb3JrZmxvd1wiPnt7IHBsYWNlaG9sZGVyVGV4dHNbY3VycmVudFdvcmtmbG93XSB9fTwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb3JlLW9wdGlvbnNcIj5cbiAgICA8dWw+XG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtb3JlLW9wdGlvbnMtaGVhZGluZ1wiICpuZ0lmPVwiY3VycmVudFdvcmtmbG93ID09PSdDQVBSJ1wiPlBST0dSQU0gU0NPUEUgT1BUSU9OUzwvZGl2PiAtLT5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgbW9yZU9wdGlvbnNMaXN0W2N1cnJlbnRXb3JrZmxvd107IGxldCBpID0gaW5kZXhcIlxuICAgICAgPlxuICAgICAgICA8IS0tIDxsaSAqbmdJZj1cIiFkYXRhLmhpZGRlblwiIFthcHBUb29sdGlwXT1cImRhdGEuaXNEaXNhYmxlZCAmJiAhaXNSY1NlbGVjdGVkPyAnVGhpcyByZXNwb25zaWJpbGl0eSBjYW4gYmUgc2NoZWR1bGVkIGZvciBhbiBhdWRpdCBvbmx5IGFmdGVyIHRoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgaXMgc2VsZWN0ZWQuJyA6ICcnXCIgcGxhY2VtZW50PVwicmlnaHRcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJkYXRhLmlzRGlzYWJsZWQgJiYgIWlzUmNTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5hY3RpdmVdPVwiZGF0YS5jaGVja2VkXCIgW2Rpc2FibGVkXT1cImRhdGEuY29kZSA9PT0gJ1JDJyAmJiBvcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnICYmIGN1cnJlbnRXb3JrZmxvdyA9PT0gJ0NBUicgfHwgKGRhdGEuaXNEaXNhYmxlZCAmJiAhaXNSQ1NlbGVjdGVkKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJkYXRhLmlzRGlzYWJsZWQgJiYgIWlzUkNTZWxlY3RlZFwiIChjbGljayk9XCJkYXRhLmNoZWNrZWQgPSAhZGF0YS5jaGVja2VkOyBzZWxlY3RNb3JlT3B0aW9uKGRhdGEpXCI+IC0tPlxuXG4gICAgICAgIDxsaVxuICAgICAgICAgICpuZ0lmPVwiIWRhdGEuaGlkZGVuXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgIGRhdGEuaXNEaXNhYmxlZCB8fFxuICAgICAgICAgICAgKCgoZGF0YS5jb2RlID09PSAnUkMnICYmICFpc1JjU2VsZWN0ZWQpIHx8XG4gICAgICAgICAgICAgIGRhdGEuY29kZSA9PT0gJ0FUVFJJQlVURVMnKSAmJlxuICAgICAgICAgICAgICBkYXRhLmlzRGlzYWJsZWQpXG4gICAgICAgICAgICAgID8gZGF0YT8uZGlzYWJsZWRNZXNzYWdlXG4gICAgICAgICAgICAgIDogJydcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImRhdGEuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgaWQ9XCJsaXN0ZGF0YVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImRhdGEuY2hlY2tlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgIChkYXRhLmNvZGUgPT09ICdSQycgJiZcbiAgICAgICAgICAgICAgICBvcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnICYmXG4gICAgICAgICAgICAgICAgY3VycmVudFdvcmtmbG93ID09PSAnQ0FSJykgfHxcbiAgICAgICAgICAgICAgZGF0YS5pc0Rpc2FibGVkIHx8XG4gICAgICAgICAgICAgIChkYXRhLmlzRGlzYWJsZWQgJiYgIWlzUkNTZWxlY3RlZClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9yZU9wdGlvbihkYXRhLCBpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZGF0YS5jaGVja2VkXCIgY2xhc3M9XCJtb3JlLWljb25cIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImRhdGEuaW1hZ2VVcmxcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuY2hlY2tlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJkYXRhPy5uYW1lXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZGF0YT8ubmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJkYXRhLmNvZGUgPT09J0NIRUNLUE9JTlRTX05FVydcIiBjbGFzcz1cImNoZWNrcG9pbnQtdmVyc2lvblwiPiBWMi4wPC9zcGFuPiAtLT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJpY29uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YS50b29sdGlwTWVzc2FnZSAhPT0gJydcIlxuICAgICAgICAgICAgbGliUG9wb3ZlckhvdmVyXG4gICAgICAgICAgICAobW91c2VvdmVyKT1cImRhdGFUb29sdGlwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJkYXRhVG9vbHRpcC5jbG9zZVBvcG92ZXIoKVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICA+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWY7PC9pPjwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8cG9wb3Zlci1ob3ZlciAjZGF0YVRvb2x0aXA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtaW5mby1jYXJkXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWluZm8tY2FyZC1oZWFkXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImRhdGEudG9vbHRpcFRpdGxlXCJcbiAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1pbmZvLWNhcmQtYm9keVwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJkYXRhLnRvb2x0aXBNZXNzYWdlXCJcbiAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9wb3BvdmVyLWhvdmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJtb3JlLW9wdGlvbnMtaGVhZGluZyB2eC1tdC0yXCJcbiAgICAgICAgICAqbmdJZj1cImN1cnJlbnRXb3JrZmxvdyA9PT0gJ0NBUFInICYmIGkgPT09IDJcIlxuICAgICAgICA+XG4gICAgICAgICAgUFJPR1JBTSBTQ09QRSBPUFRJT05TXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|