barsa-novin-ray-core 2.0.69 → 2.0.70

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.
@@ -65,38 +65,35 @@ export class ReportViewBaseComponent extends BaseComponent {
65
65
  this.fieldDict = fieldDict;
66
66
  }
67
67
  }
68
+ onActionListClick(mo, index, itemId) {
69
+ if (itemId === 'Show') {
70
+ this.onRowClick({ mo, index });
71
+ return;
72
+ }
73
+ this.onRowCheck({ mo, index });
74
+ const editBtn = this.toolbarButtons.find((tb) => tb?.itemId === itemId);
75
+ if (editBtn) {
76
+ editBtn.handler(editBtn);
77
+ }
78
+ }
68
79
  _createActionButtons() {
69
80
  const buttons = [];
70
81
  if (this.hasInlineEditButton) {
71
82
  buttons.push({
72
83
  glyph: 'edit',
84
+ itemId: 'Edit',
73
85
  navigation: false,
74
86
  role: 'presentation',
75
- closeOnClick: true,
76
- handler: (e) => {
77
- const { mo, index } = e;
78
- this.onRowCheck({ mo, index });
79
- const editBtn = this.toolbarButtons.find((tb) => tb?.itemId === 'Edit');
80
- if (editBtn) {
81
- editBtn.handler(editBtn);
82
- }
83
- }
87
+ closeOnClick: true
84
88
  });
85
89
  }
86
90
  if (this.hasInlineDeleteButton) {
87
91
  buttons.push({
88
92
  glyph: 'delete',
89
93
  navigation: false,
94
+ itemId: 'Delete',
90
95
  role: 'presentation',
91
- closeOnClick: true,
92
- handler: (e) => {
93
- const { mo, index } = e;
94
- this.onRowCheck({ mo, index });
95
- const deleteBtn = this.toolbarButtons.find((tb) => tb?.itemId === 'Delete');
96
- if (deleteBtn) {
97
- deleteBtn.handler(deleteBtn);
98
- }
99
- }
96
+ closeOnClick: true
100
97
  });
101
98
  }
102
99
  if (this.showViewButton) {
@@ -104,11 +101,8 @@ export class ReportViewBaseComponent extends BaseComponent {
104
101
  glyph: this.navigationArrow,
105
102
  navigation: true,
106
103
  role: 'presentation',
107
- closeOnClick: true,
108
- handler: (e) => {
109
- const { mo, index } = e;
110
- this.onRowClick({ mo, index });
111
- }
104
+ itemId: 'Show',
105
+ closeOnClick: true
112
106
  });
113
107
  }
114
108
  return buttons;
@@ -410,4 +404,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
410
404
  }], containerWidth: [{
411
405
  type: Input
412
406
  }] } });
413
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXctYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2Fic3RyYWN0LWNsYXNzZXMvcmVwb3J0LXZpZXctYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUlULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQXlCakQsTUFBTSxPQUFPLHVCQUEyRCxTQUFRLGFBQWE7SUEyRnpGLElBQWEsY0FBYyxDQUFDLEdBQVc7UUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7UUFDM0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFXRCxZQUNjLEdBQWUsRUFDZixJQUF1QixFQUN2QixVQUFxQixFQUNyQixtQkFBMkMsRUFDM0MsZUFBK0IsRUFDL0IsY0FBNkIsRUFDakIsY0FBOEI7UUFFcEQsS0FBSyxFQUFFLENBQUM7UUFSRSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUNyQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUNqQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUE1RC9DLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBYW5CLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDdEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FB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QkFBakMsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDTSxjQUFjO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBUZW1wbGF0ZVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmluZENvbHVtbkJ5RGJOYW1lUGlwZSB9IGZyb20gJy4uL3BpcGVzJztcclxuaW1wb3J0IHsgUG9ydGFsU2VydmljZSwgVWx2TWFpblNlcnZpY2UsIFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXHJcbiAgICBjb2x1bW5zUmVzaXplZEV2ZW50QXJncyxcclxuICAgIERlZmF1bHRDb21tYW5kc0FjY2VzcyxcclxuICAgIERldmljZVNpemUsXHJcbiAgICBGb3JtU2V0dGluZyxcclxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXHJcbiAgICBSZWxhdGlvbkl0ZW1UeXBlLFxyXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcclxuICAgIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nLFxyXG4gICAgU2hhcmVCdXR0b25zQ2hvaWNlRGVmLFxyXG4gICAgVHlwZVVsdk1haW5DdHJscixcclxuICAgIFBhZ2luZ1NldHRpbmcsXHJcbiAgICBNZW51SXRlbSxcclxuICAgIENvbHVtblN1bW1hcnlUeXBlXHJcbn0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JucmMtcmVwb3J0LXZpZXctYmFzZScsXHJcbiAgICB0ZW1wbGF0ZTogJycsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQ8VCBleHRlbmRzIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPiBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgY29udGV4dFZpZXc6IGFueTtcclxuICAgIEBJbnB1dCgpIHZpZXdTZXR0aW5nOiBUO1xyXG4gICAgQElucHV0KCkgYWxsQ29sdW1uczogYW55O1xyXG4gICAgQElucHV0KCkgaXNDaGVja0xpc3Q6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzaW1wbGVJbmxpbmVFZGl0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGlkZVRvb2xiYXI6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSB0b29sYmFyQnV0dG9uczogTWVudUl0ZW1bXTtcclxuICAgIEBJbnB1dCgpIGFsbENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0OiBhbnk7XHJcbiAgICBASW5wdXQoKSBVbHZNYWluQ3RybHI6IFR5cGVVbHZNYWluQ3RybHI7XHJcbiAgICBASW5wdXQoKSBhY2Nlc3M6IERlZmF1bHRDb21tYW5kc0FjY2VzcztcclxuICAgIEBJbnB1dCgpIGdyb3VwYnk6IGFueTtcclxuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ291bnQ6IGFueTtcclxuICAgIEBJbnB1dCgpIGNvbmRpdGlvbmFsRm9ybWF0czogYW55O1xyXG4gICAgQElucHV0KCkgcGFyZW50SGVpZ2h0OiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBkZXZpY2VOYW1lOiBEZXZpY2VTaXplO1xyXG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xyXG4gICAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogYW55W107XHJcbiAgICBASW5wdXQoKSBjb2x1bW5zOiBhbnk7XHJcbiAgICBASW5wdXQoKSBhbGxvd0lubGluZUVkaXQ6IGFueTtcclxuICAgIEBJbnB1dCgpIHNlY29uZGFyeUNvbHVtbnM6IGFueTtcclxuICAgIEBJbnB1dCgpIHBvcGluOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY3VzdG9tRmllbGRJbmZvOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgYW55O1xyXG4gICAgQElucHV0KCkgaGFzU3VtbWFyeTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGhhc1NlbGVjdGVkOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGlkZUljb246IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBjb2x1bW5zQ291bnQ6IGFueTtcclxuICAgIEBJbnB1dCgpIGhpZGVPcGVuSWNvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIG9wZW5PbkNsaWNrOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgdHlwZURlZklkOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSByZXBvcnRJZDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgbGlzdEVkaXRWaWV3SWQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHR5cGVWaWV3SWQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGV4dHJhUmVsYXRpb246IGFueTtcclxuICAgIEBJbnB1dCgpIHJlbGF0aW9uTGlzdDogQXJyYXk8UmVsYXRpb25JdGVtVHlwZT47XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlUmVzcG9uc2l2ZTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHJvd0l0ZW06IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBASW5wdXQoKSBtb2JpbGVPclRhYmxldDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGluRGlhbG9nOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGZ1bGxzY3JlZW46IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoaWRlU2VhcmNocGFuZWw6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBuZXdJbmxpbmVFZGl0TW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsO1xyXG4gICAgQElucHV0KCkgc2VsZWN0ZWRNbzogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgIEBJbnB1dCgpIGlubGluZUVkaXRNb2RlOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgb25seUlubGluZUVkaXQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSByb3dIb3ZlcmFibGU6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBncm91cFN1bW1hcnk6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSB0bGJCdXR0b25zOiBhbnlbXTtcclxuICAgIEBJbnB1dCgpIGZvcm1TZXR0aW5nOiBGb3JtU2V0dGluZztcclxuICAgIEBJbnB1dCgpIGRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcm93QWN0aXZhYmxlID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eTtcclxuICAgIEBJbnB1dCgpIHJ0bDtcclxuICAgIEBJbnB1dCgpIHNob3dPa0NhbmNlbEJ1dHRvbnM7XHJcbiAgICBASW5wdXQoKSB0aXRsZTtcclxuICAgIEBJbnB1dCgpIGhhc0lubGluZURlbGV0ZUJ1dHRvbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGhhc0lubGluZUVkaXRCdXR0b246IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBjb250ZXh0U2V0dGluZztcclxuICAgIEBJbnB1dCgpIGdyaWRGcmVlQ29sdW1uU2l6aW5nOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbmF2aWdhdGlvbkFycm93OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBjYXJ0YWJsZVRlbXBsYXRlczogeyBba2V5OiBzdHJpbmddOiBGb3JtU2V0dGluZyB9O1xyXG4gICAgQElucHV0KCkgY2FydGFibGVDaGlsZHNNbzogeyBba2V5OiBzdHJpbmddOiBNZXRhb2JqZWN0RGF0YU1vZGVsIH07XHJcbiAgICBASW5wdXQoKSBwYWdpbmdTZXR0aW5nOiBQYWdpbmdTZXR0aW5nO1xyXG4gICAgQE91dHB1dCgpIGNvbHVtblN1bW1hcnkgPSBuZXcgRXZlbnRFbWl0dGVyPENvbHVtblN1bW1hcnlUeXBlPigpO1xyXG4gICAgQE91dHB1dCgpIGVzY2FwZUtleSA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIEBPdXRwdXQoKSByZXNldFdvcmtmbG93U3RhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgZGVzZWxlY3RBbGwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgZWRpdEZvcm1QYW5lbENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIEBPdXRwdXQoKSBlZGl0Rm9ybVBhbmVsU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3ROZXh0SW5saW5lUmVjb3JkID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xyXG4gICAgQE91dHB1dCgpIGVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtbzogTWV0YW9iamVjdERhdGFNb2RlbDsgZmllbGREYk5hbWU/OiBzdHJpbmcgfT4oKTtcclxuICAgIEBPdXRwdXQoKSB1bHZDb21tYW5kQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzb3J0QXNjZW5kaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgd29ya2Zsb3dTaGFyZUJ1dHRvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPFNoYXJlQnV0dG9uc0Nob2ljZURlZj4oKTtcclxuICAgIEBPdXRwdXQoKSBzb3J0RGVzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIGZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIGV4ZWN1dGVUb29sYmFyQnV0dG9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IGl0ZW1JZDogc3RyaW5nOyBvcHRpb25zPzogYW55IH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgcmVzZXRHcmlkU2V0dGluZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgcm93Q2hlY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbW87IGluZGV4OyBjYXVzZT8gfT4oKTtcclxuICAgIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtbzsgaW5kZXggfT4oKTtcclxuICAgIEBPdXRwdXQoKSBjYXJ0YWJsZUZvcm1DbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbW87IGluZGV4IH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgY3JlYXRlTmV3TW8gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgdXBkYXRlTW8gPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgZXhwYW5kQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgdHJhY2tCeVNlbGVjdGVkRm4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg7IHJlY29yZCB9PigpO1xyXG4gICAgQE91dHB1dCgpIGFsbENoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gICAgQE91dHB1dCgpIG1hbmRhdG9yeSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIEBPdXRwdXQoKSBjb2x1bW5SZXNpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxjb2x1bW5zUmVzaXplZEV2ZW50QXJncz4oKTtcclxuICAgIEBPdXRwdXQoKSBoYXNEZXRhaWxzSW5Sb3cgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgICBASW5wdXQoKSBzZXQgY29udGFpbmVyV2lkdGgodmFsOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9jb250YWluZXJXaWR0aCA9IHZhbDtcclxuICAgICAgICB0aGlzLl9jb250YWluZXJXaWR0aENoYW5nZWQodmFsKTtcclxuICAgIH1cclxuICAgIHJlc2l6ZWRCeVVzZXI6IGJvb2xlYW47XHJcbiAgICBlbFdpZHRoOiBudW1iZXI7XHJcbiAgICBjYW5WaWV3ID0gZmFsc2U7XHJcbiAgICBmaXRXaWR0aDogYm9vbGVhbjtcclxuICAgIGZpcnN0U2VsZWN0ZWRNZXRhb2JqZWN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgY29udGV4dE1lbnVXaWR0aCA9IDA7XHJcbiAgICBmaWVsZERpY3Q6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgICBhY3Rpb25MaXN0OiBhbnlbXTtcclxuICAgIHByaXZhdGUgX3NpbmdsZUNsaWNrZWQ6IGJvb2xlYW47XHJcbiAgICBwcm90ZWN0ZWQgX2NvbnRhaW5lcldpZHRoID0gMDtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBfcmVuZGVyZXIyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9maW5kQ29sdW1uQnlEYk5hbWU6IEZpbmRDb2x1bW5CeURiTmFtZVBpcGUsXHJcbiAgICAgICAgcHJvdGVjdGVkIF91bHZNYWluU2VydmljZTogVWx2TWFpblNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfdXBsb2FkU2VydmljZT86IFVwbG9hZFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcbiAgICBnZXQgc2hvd1ZpZXdCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FuVmlldyAmJiAhdGhpcy5pbmxpbmVFZGl0TW9kZSAmJiAhdGhpcy5oaWRlT3Blbkljb247XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmFjY2Vzcy5WaWV3ICYmICF0aGlzLnNob3dPa0NhbmNlbEJ1dHRvbnMpIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5WaWV3ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hY3Rpb25MaXN0ID0gdGhpcy5fY3JlYXRlQWN0aW9uQnV0dG9ucygpO1xyXG4gICAgICAgIHRoaXMuZWxXaWR0aCA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgICAgICAgdGhpcy5maXRXaWR0aCA9IHRoaXMudmlld1NldHRpbmc/LkZpdFdpZHRoID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgZmllbGREaWN0ID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjKSA9PiAoZmllbGREaWN0W2MuQ2FwdGlvbl0gPSBjLk5hbWUpKTtcclxuICAgICAgICAgICAgdGhpcy5maWVsZERpY3QgPSBmaWVsZERpY3Q7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfY3JlYXRlQWN0aW9uQnV0dG9ucygpOiBhbnlbXSB7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uczogYW55W10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5oYXNJbmxpbmVFZGl0QnV0dG9uKSB7XHJcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBnbHlwaDogJ2VkaXQnLFxyXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICByb2xlOiAncHJlc2VudGF0aW9uJyxcclxuICAgICAgICAgICAgICAgIGNsb3NlT25DbGljazogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IChlOiB7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBpbmRleDogbnVtYmVyIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IG1vLCBpbmRleCB9ID0gZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soeyBtbywgaW5kZXggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWRpdEJ0biA9IHRoaXMudG9vbGJhckJ1dHRvbnMuZmluZCgodGIpID0+IHRiPy5pdGVtSWQgPT09ICdFZGl0Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVkaXRCdG4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRCdG4gYXMgYW55KS5oYW5kbGVyKGVkaXRCdG4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmhhc0lubGluZURlbGV0ZUJ1dHRvbikge1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZ2x5cGg6ICdkZWxldGUnLFxyXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICByb2xlOiAncHJlc2VudGF0aW9uJyxcclxuICAgICAgICAgICAgICAgIGNsb3NlT25DbGljazogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IChlOiB7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBpbmRleDogbnVtYmVyIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IG1vLCBpbmRleCB9ID0gZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soeyBtbywgaW5kZXggfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsZXRlQnRuID0gdGhpcy50b29sYmFyQnV0dG9ucy5maW5kKCh0YikgPT4gdGI/Lml0ZW1JZCA9PT0gJ0RlbGV0ZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWxldGVCdG4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUJ0biBhcyBhbnkpLmhhbmRsZXIoZGVsZXRlQnRuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zaG93Vmlld0J1dHRvbikge1xyXG4gICAgICAgICAgICBidXR0b25zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZ2x5cGg6IHRoaXMubmF2aWdhdGlvbkFycm93LFxyXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nLFxyXG4gICAgICAgICAgICAgICAgY2xvc2VPbkNsaWNrOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogKGU6IHsgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7IGluZGV4OiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbW8sIGluZGV4IH0gPSBlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Sb3dDbGljayh7IG1vLCBpbmRleCB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBidXR0b25zO1xyXG4gICAgfVxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gICAgICAgIGxldCBkZXRlY3RDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoY2hhbmdlcykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBjaGFuZ2VzW2tleV0uY3VycmVudFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgZGV0ZWN0Q2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xyXG4gICAgICAgICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkRlc2VsZWN0QWxsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGwuZW1pdCgpO1xyXG4gICAgfVxyXG4gICAgb25Sb3dDaGVjayh7IG1vLCBpbmRleCB9KTogdm9pZCB7XHJcbiAgICAgICAgLy8gdGhpcy5fc2luZ2xlQ2xpY2tlZCA9IHRydWU7XHJcbiAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICBpZiAodGhpcy5fc2luZ2xlQ2xpY2tlZCkge1xyXG4gICAgICAgIC8vICAgICB0aGlzLnJvd0NoZWNrLmVtaXQoeyBtbywgaW5kZXggfSk7XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfSwgMzApO1xyXG4gICAgICAgIC8vIHRoaXMucm93Q2hlY2suZW1pdCh7IG1vLCBpbmRleCwgY2F1c2UgfSk7XHJcbiAgICAgICAgdGhpcy5yb3dDaGVjay5lbWl0KHsgbW8sIGluZGV4IH0pO1xyXG4gICAgfVxyXG4gICAgb25Xb3JrZmxvd1NoYXJlQnV0dG9ucyhlOiBTaGFyZUJ1dHRvbnNDaG9pY2VEZWYpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLndvcmtmbG93U2hhcmVCdXR0b25zLmVtaXQoZSk7XHJcbiAgICB9XHJcbiAgICBvbk9sZ29FdmVudHMoZTogeyB0aXRsZTogc3RyaW5nOyBkYXRhPzogYW55IH0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzW2UudGl0bGVdLmVtaXQoZS5kYXRhKTtcclxuICAgIH1cclxuICAgIG9uUm93Q2xpY2soeyBtbywgaW5kZXggfSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NpbmdsZUNsaWNrZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJvd0NsaWNrLmVtaXQoeyBtbywgaW5kZXggfSk7XHJcbiAgICB9XHJcbiAgICBvbkNhcnRhYmxlRm9ybUNsb3NlZCh7IG1vLCBpbmRleCB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYXJ0YWJsZUZvcm1DbG9zZWQuZW1pdCh7IG1vLCBpbmRleCB9KTtcclxuICAgIH1cclxuICAgIG9uRXhwYW5kQ2xpY2sobW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmV4cGFuZENsaWNrLmVtaXQobW8pO1xyXG4gICAgfVxyXG4gICAgb25BbGxDaGVja2JveChjaGVja2VkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbGxDaGVja2JveC5lbWl0KGNoZWNrZWQpO1xyXG4gICAgfVxyXG4gICAgb25DbGVhckNoZWNrYm94KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYWxsQ2hlY2tib3guZW1pdChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBvblNlbGVjdE5leHRJbmxpbmVSZWNvcmQobW8pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdE5leHRJbmxpbmVSZWNvcmQuZW1pdChtbyk7XHJcbiAgICB9XHJcbiAgICBvbkVkaXRGb3JtUGFuZWxTYXZlKG1vKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsU2F2ZS5lbWl0KG1vKTtcclxuICAgIH1cclxuICAgIG9uRWRpdEZvcm1QYW5lbENhbmNlbChtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbENhbmNlbC5lbWl0KG1vKTtcclxuICAgIH1cclxuICAgIG9uRXNjYXBlS2V5KG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lc2NhcGVLZXkuZW1pdChtbyk7XHJcbiAgICB9XHJcbiAgICBvbkVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZShlOiB7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBmaWVsZERiTmFtZT86IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdChlKTtcclxuICAgIH1cclxuICAgIG9uVWx2Q29tbWFuZCh7IG1vLCBpbmRleCB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51bHZDb21tYW5kQ2xpY2suZW1pdCh7IG1vLCBpbmRleCB9KTtcclxuICAgIH1cclxuICAgIG9uU29ydEFzY2VuZGluZyhjb2x1bW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNvcnRBc2NlbmRpbmcuZW1pdChjb2x1bW4pO1xyXG4gICAgfVxyXG4gICAgb25Tb3J0RGVzY2VuZGluZyhjb2x1bW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNvcnREZXNjZW5kaW5nLmVtaXQoY29sdW1uKTtcclxuICAgIH1cclxuICAgIG9uRmlsdGVyKGNvbHVtbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLmVtaXQoY29sdW1uKTtcclxuICAgIH1cclxuICAgIG9uRHluYW1pY0NvbXBvbmVudEV2ZW50cyhlOiB7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfSwgbW86IE1ldGFvYmplY3REYXRhTW9kZWwsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBzd2l0Y2ggKGUudGl0bGUpIHtcclxuICAgICAgICAgICAgY2FzZSAncm93Q2hlY2snOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKHsgbW8sIGluZGV4IH0pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NsaWNrJzpcclxuICAgICAgICAgICAgICAgIHRoaXMub25Sb3dDbGljayh7IG1vLCBpbmRleCB9KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd1bHZDb21tYW5kJzpcclxuICAgICAgICAgICAgICAgIHRoaXMub25VbHZDb21tYW5kKHsgbW8sIGluZGV4IH0pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgX3RyYWNrQnlTZWxlY3RlZEZuKGluZGV4LCByZWNvcmQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyYWNrQnlTZWxlY3RlZEZuPy5lbWl0KHsgaW5kZXgsIHJlY29yZCB9KTtcclxuICAgIH1cclxuICAgIF90cmFja0J5Q29sdW1uKGluZGV4OiBudW1iZXIsIGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcclxuICAgIH1cclxuICAgIF90cmFja0J5Um93KGluZGV4OiBudW1iZXIsIHJvdzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGAke3Jvdy4kR3JvdXAgPyByb3cuJEdyb3VwIDogcm93LklkfSR7aW5kZXh9YDtcclxuICAgIH1cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgIHByb3RlY3RlZCBfY29udGFpbmVyV2lkdGhDaGFuZ2VkKF86IG51bWJlcik6IHZvaWQge31cclxufVxyXG4iXX0=
407
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXctYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2Fic3RyYWN0LWNsYXNzZXMvcmVwb3J0LXZpZXctYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUlULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQXlCakQsTUFBTSxPQUFPLHVCQUEyRCxTQUFRLGFBQWE7SUEyRnpGLElBQWEsY0FBYyxDQUFDLEdBQVc7UUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7UUFDM0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFXRCxZQUNjLEdBQWUsRUFDZixJQUF1QixFQUN2QixVQUFxQixFQUNyQixtQkFBMkMsRUFDM0MsZUFBK0IsRUFDL0IsY0FBNkIsRUFDakIsY0FBOEI7UUFFcEQsS0FBSyxFQUFFLENBQUM7UUFSRSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUNyQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUNqQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUE1RC9DLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBYW5CLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDdEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FB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QkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ00sY0FBYztzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaW5kQ29sdW1uQnlEYk5hbWVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xuaW1wb3J0IHsgUG9ydGFsU2VydmljZSwgVWx2TWFpblNlcnZpY2UsIFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBjb2x1bW5zUmVzaXplZEV2ZW50QXJncyxcbiAgICBEZWZhdWx0Q29tbWFuZHNBY2Nlc3MsXG4gICAgRGV2aWNlU2l6ZSxcbiAgICBGb3JtU2V0dGluZyxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFJlbGF0aW9uSXRlbVR5cGUsXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcbiAgICBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZyxcbiAgICBTaGFyZUJ1dHRvbnNDaG9pY2VEZWYsXG4gICAgVHlwZVVsdk1haW5DdHJscixcbiAgICBQYWdpbmdTZXR0aW5nLFxuICAgIE1lbnVJdGVtLFxuICAgIENvbHVtblN1bW1hcnlUeXBlXG59IGZyb20gJy4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdibnJjLXJlcG9ydC12aWV3LWJhc2UnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudDxUIGV4dGVuZHMgVWlSZXBvcnRWaWV3QmFzZVNldHRpbmc+IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgY29udGV4dFZpZXc6IGFueTtcbiAgICBASW5wdXQoKSB2aWV3U2V0dGluZzogVDtcbiAgICBASW5wdXQoKSBhbGxDb2x1bW5zOiBhbnk7XG4gICAgQElucHV0KCkgaXNDaGVja0xpc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2ltcGxlSW5saW5lRWRpdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlVG9vbGJhcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB0b29sYmFyQnV0dG9uczogTWVudUl0ZW1bXTtcbiAgICBASW5wdXQoKSBhbGxDaGVja2VkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG1vRGF0YUxpc3Q6IGFueTtcbiAgICBASW5wdXQoKSBVbHZNYWluQ3RybHI6IFR5cGVVbHZNYWluQ3RybHI7XG4gICAgQElucHV0KCkgYWNjZXNzOiBEZWZhdWx0Q29tbWFuZHNBY2Nlc3M7XG4gICAgQElucHV0KCkgZ3JvdXBieTogYW55O1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ291bnQ6IGFueTtcbiAgICBASW5wdXQoKSBjb25kaXRpb25hbEZvcm1hdHM6IGFueTtcbiAgICBASW5wdXQoKSBwYXJlbnRIZWlnaHQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBkZXZpY2VOYW1lOiBEZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBjb250ZXh0TWVudUl0ZW1zOiBhbnlbXTtcbiAgICBASW5wdXQoKSBjb2x1bW5zOiBhbnk7XG4gICAgQElucHV0KCkgYWxsb3dJbmxpbmVFZGl0OiBhbnk7XG4gICAgQElucHV0KCkgc2Vjb25kYXJ5Q29sdW1uczogYW55O1xuICAgIEBJbnB1dCgpIHBvcGluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGN1c3RvbUZpZWxkSW5mbzogTWV0YW9iamVjdERhdGFNb2RlbCB8IGFueTtcbiAgICBASW5wdXQoKSBoYXNTdW1tYXJ5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVJY29uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNvbHVtbnNDb3VudDogYW55O1xuICAgIEBJbnB1dCgpIGhpZGVPcGVuSWNvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBvcGVuT25DbGljazogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB0eXBlRGVmSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSByZXBvcnRJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxpc3RFZGl0Vmlld0lkOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdHlwZVZpZXdJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGV4dHJhUmVsYXRpb246IGFueTtcbiAgICBASW5wdXQoKSByZWxhdGlvbkxpc3Q6IEFycmF5PFJlbGF0aW9uSXRlbVR5cGU+O1xuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNwb25zaXZlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJvd0l0ZW06IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgbW9iaWxlT3JUYWJsZXQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBmdWxsc2NyZWVuOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVTZWFyY2hwYW5lbDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBuZXdJbmxpbmVFZGl0TW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkTW86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgQElucHV0KCkgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgb25seUlubGluZUVkaXQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm93SG92ZXJhYmxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGdyb3VwU3VtbWFyeTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB0bGJCdXR0b25zOiBhbnlbXTtcbiAgICBASW5wdXQoKSBmb3JtU2V0dGluZzogRm9ybVNldHRpbmc7XG4gICAgQElucHV0KCkgZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm93QWN0aXZhYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XG4gICAgQElucHV0KCkgcnRsO1xuICAgIEBJbnB1dCgpIHNob3dPa0NhbmNlbEJ1dHRvbnM7XG4gICAgQElucHV0KCkgdGl0bGU7XG4gICAgQElucHV0KCkgaGFzSW5saW5lRGVsZXRlQnV0dG9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc0lubGluZUVkaXRCdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29udGV4dFNldHRpbmc7XG4gICAgQElucHV0KCkgZ3JpZEZyZWVDb2x1bW5TaXppbmc6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbmF2aWdhdGlvbkFycm93OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY2FydGFibGVUZW1wbGF0ZXM6IHsgW2tleTogc3RyaW5nXTogRm9ybVNldHRpbmcgfTtcbiAgICBASW5wdXQoKSBjYXJ0YWJsZUNoaWxkc01vOiB7IFtrZXk6IHN0cmluZ106IE1ldGFvYmplY3REYXRhTW9kZWwgfTtcbiAgICBASW5wdXQoKSBwYWdpbmdTZXR0aW5nOiBQYWdpbmdTZXR0aW5nO1xuICAgIEBPdXRwdXQoKSBjb2x1bW5TdW1tYXJ5ID0gbmV3IEV2ZW50RW1pdHRlcjxDb2x1bW5TdW1tYXJ5VHlwZT4oKTtcbiAgICBAT3V0cHV0KCkgZXNjYXBlS2V5ID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSByZXNldFdvcmtmbG93U3RhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGRlc2VsZWN0QWxsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBlZGl0Rm9ybVBhbmVsQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBlZGl0Rm9ybVBhbmVsU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0TmV4dElubGluZVJlY29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBmaWVsZERiTmFtZT86IHN0cmluZyB9PigpO1xuICAgIEBPdXRwdXQoKSB1bHZDb21tYW5kQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc29ydEFzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSB3b3JrZmxvd1NoYXJlQnV0dG9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8U2hhcmVCdXR0b25zQ2hvaWNlRGVmPigpO1xuICAgIEBPdXRwdXQoKSBzb3J0RGVzY2VuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZXhlY3V0ZVRvb2xiYXJCdXR0b24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbUlkOiBzdHJpbmc7IG9wdGlvbnM/OiBhbnkgfT4oKTtcbiAgICBAT3V0cHV0KCkgcmVzZXRHcmlkU2V0dGluZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHJvd0NoZWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOyBpbmRleDsgY2F1c2U/IH0+KCk7XG4gICAgQE91dHB1dCgpIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOyBpbmRleCB9PigpO1xuICAgIEBPdXRwdXQoKSBjYXJ0YWJsZUZvcm1DbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbW87IGluZGV4IH0+KCk7XG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ld01vID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSB1cGRhdGVNbyA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgZXhwYW5kQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHRyYWNrQnlTZWxlY3RlZEZuID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OyByZWNvcmQgfT4oKTtcbiAgICBAT3V0cHV0KCkgYWxsQ2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIG1hbmRhdG9yeSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgY29sdW1uUmVzaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8Y29sdW1uc1Jlc2l6ZWRFdmVudEFyZ3M+KCk7XG4gICAgQE91dHB1dCgpIGhhc0RldGFpbHNJblJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBASW5wdXQoKSBzZXQgY29udGFpbmVyV2lkdGgodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY29udGFpbmVyV2lkdGggPSB2YWw7XG4gICAgICAgIHRoaXMuX2NvbnRhaW5lcldpZHRoQ2hhbmdlZCh2YWwpO1xuICAgIH1cbiAgICByZXNpemVkQnlVc2VyOiBib29sZWFuO1xuICAgIGVsV2lkdGg6IG51bWJlcjtcbiAgICBjYW5WaWV3ID0gZmFsc2U7XG4gICAgZml0V2lkdGg6IGJvb2xlYW47XG4gICAgZmlyc3RTZWxlY3RlZE1ldGFvYmplY3Q6IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgY29udGV4dE1lbnVXaWR0aCA9IDA7XG4gICAgZmllbGREaWN0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGFjdGlvbkxpc3Q6IGFueVtdO1xuICAgIHByaXZhdGUgX3NpbmdsZUNsaWNrZWQ6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9jb250YWluZXJXaWR0aCA9IDA7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9yZW5kZXJlcjI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJvdGVjdGVkIF9maW5kQ29sdW1uQnlEYk5hbWU6IEZpbmRDb2x1bW5CeURiTmFtZVBpcGUsXG4gICAgICAgIHByb3RlY3RlZCBfdWx2TWFpblNlcnZpY2U6IFVsdk1haW5TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfdXBsb2FkU2VydmljZT86IFVwbG9hZFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgZ2V0IHNob3dWaWV3QnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYW5WaWV3ICYmICF0aGlzLmlubGluZUVkaXRNb2RlICYmICF0aGlzLmhpZGVPcGVuSWNvbjtcbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICh0aGlzLmFjY2Vzcy5WaWV3ICYmICF0aGlzLnNob3dPa0NhbmNlbEJ1dHRvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuVmlldyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3Rpb25MaXN0ID0gdGhpcy5fY3JlYXRlQWN0aW9uQnV0dG9ucygpO1xuICAgICAgICB0aGlzLmVsV2lkdGggPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICB0aGlzLmZpdFdpZHRoID0gdGhpcy52aWV3U2V0dGluZz8uRml0V2lkdGggPT09IHRydWUgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkRGljdCA9IHt9O1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGMpID0+IChmaWVsZERpY3RbYy5DYXB0aW9uXSA9IGMuTmFtZSkpO1xuICAgICAgICAgICAgdGhpcy5maWVsZERpY3QgPSBmaWVsZERpY3Q7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIG9uQWN0aW9uTGlzdENsaWNrKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBpbmRleDogbnVtYmVyLCBpdGVtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbUlkID09PSAnU2hvdycpIHtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDbGljayh7IG1vLCBpbmRleCB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uUm93Q2hlY2soeyBtbywgaW5kZXggfSk7XG4gICAgICAgIGNvbnN0IGVkaXRCdG4gPSB0aGlzLnRvb2xiYXJCdXR0b25zLmZpbmQoKHRiKSA9PiB0Yj8uaXRlbUlkID09PSBpdGVtSWQpO1xuICAgICAgICBpZiAoZWRpdEJ0bikge1xuICAgICAgICAgICAgKGVkaXRCdG4gYXMgYW55KS5oYW5kbGVyKGVkaXRCdG4pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY3JlYXRlQWN0aW9uQnV0dG9ucygpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbnM6IGFueVtdID0gW107XG4gICAgICAgIGlmICh0aGlzLmhhc0lubGluZUVkaXRCdXR0b24pIHtcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgZ2x5cGg6ICdlZGl0JyxcbiAgICAgICAgICAgICAgICBpdGVtSWQ6ICdFZGl0JyxcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByb2xlOiAncHJlc2VudGF0aW9uJyxcbiAgICAgICAgICAgICAgICBjbG9zZU9uQ2xpY2s6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhhc0lubGluZURlbGV0ZUJ1dHRvbikge1xuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBnbHlwaDogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXRlbUlkOiAnRGVsZXRlJyxcbiAgICAgICAgICAgICAgICByb2xlOiAncHJlc2VudGF0aW9uJyxcbiAgICAgICAgICAgICAgICBjbG9zZU9uQ2xpY2s6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNob3dWaWV3QnV0dG9uKSB7XG4gICAgICAgICAgICBidXR0b25zLnB1c2goe1xuICAgICAgICAgICAgICAgIGdseXBoOiB0aGlzLm5hdmlnYXRpb25BcnJvdyxcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nLFxuICAgICAgICAgICAgICAgIGl0ZW1JZDogJ1Nob3cnLFxuICAgICAgICAgICAgICAgIGNsb3NlT25DbGljazogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1dHRvbnM7XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIGxldCBkZXRlY3RDaGFuZ2VzID0gZmFsc2U7XG4gICAgICAgIE9iamVjdC5rZXlzKGNoYW5nZXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFjaGFuZ2VzW2tleV0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBjaGFuZ2VzW2tleV0uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgICAgIGRldGVjdENoYW5nZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uRGVzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGwuZW1pdCgpO1xuICAgIH1cbiAgICBvblJvd0NoZWNrKHsgbW8sIGluZGV4IH0pOiB2b2lkIHtcbiAgICAgICAgLy8gdGhpcy5fc2luZ2xlQ2xpY2tlZCA9IHRydWU7XG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyAgIGlmICh0aGlzLl9zaW5nbGVDbGlja2VkKSB7XG4gICAgICAgIC8vICAgICB0aGlzLnJvd0NoZWNrLmVtaXQoeyBtbywgaW5kZXggfSk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9LCAzMCk7XG4gICAgICAgIC8vIHRoaXMucm93Q2hlY2suZW1pdCh7IG1vLCBpbmRleCwgY2F1c2UgfSk7XG4gICAgICAgIHRoaXMucm93Q2hlY2suZW1pdCh7IG1vLCBpbmRleCB9KTtcbiAgICB9XG4gICAgb25Xb3JrZmxvd1NoYXJlQnV0dG9ucyhlOiBTaGFyZUJ1dHRvbnNDaG9pY2VEZWYpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53b3JrZmxvd1NoYXJlQnV0dG9ucy5lbWl0KGUpO1xuICAgIH1cbiAgICBvbk9sZ29FdmVudHMoZTogeyB0aXRsZTogc3RyaW5nOyBkYXRhPzogYW55IH0pOiB2b2lkIHtcbiAgICAgICAgdGhpc1tlLnRpdGxlXS5lbWl0KGUuZGF0YSk7XG4gICAgfVxuICAgIG9uUm93Q2xpY2soeyBtbywgaW5kZXggfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zaW5nbGVDbGlja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucm93Q2xpY2suZW1pdCh7IG1vLCBpbmRleCB9KTtcbiAgICB9XG4gICAgb25DYXJ0YWJsZUZvcm1DbG9zZWQoeyBtbywgaW5kZXggfSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcnRhYmxlRm9ybUNsb3NlZC5lbWl0KHsgbW8sIGluZGV4IH0pO1xuICAgIH1cbiAgICBvbkV4cGFuZENsaWNrKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhwYW5kQ2xpY2suZW1pdChtbyk7XG4gICAgfVxuICAgIG9uQWxsQ2hlY2tib3goY2hlY2tlZCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFsbENoZWNrYm94LmVtaXQoY2hlY2tlZCk7XG4gICAgfVxuICAgIG9uQ2xlYXJDaGVja2JveCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hbGxDaGVja2JveC5lbWl0KGZhbHNlKTtcbiAgICB9XG4gICAgb25TZWxlY3ROZXh0SW5saW5lUmVjb3JkKG1vKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0TmV4dElubGluZVJlY29yZC5lbWl0KG1vKTtcbiAgICB9XG4gICAgb25FZGl0Rm9ybVBhbmVsU2F2ZShtbyk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxTYXZlLmVtaXQobW8pO1xuICAgIH1cbiAgICBvbkVkaXRGb3JtUGFuZWxDYW5jZWwobW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsQ2FuY2VsLmVtaXQobW8pO1xuICAgIH1cbiAgICBvbkVzY2FwZUtleShtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVzY2FwZUtleS5lbWl0KG1vKTtcbiAgICB9XG4gICAgb25FZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UoZTogeyBtbzogTWV0YW9iamVjdERhdGFNb2RlbDsgZmllbGREYk5hbWU/OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZS5lbWl0KGUpO1xuICAgIH1cbiAgICBvblVsdkNvbW1hbmQoeyBtbywgaW5kZXggfSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVsdkNvbW1hbmRDbGljay5lbWl0KHsgbW8sIGluZGV4IH0pO1xuICAgIH1cbiAgICBvblNvcnRBc2NlbmRpbmcoY29sdW1uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc29ydEFzY2VuZGluZy5lbWl0KGNvbHVtbik7XG4gICAgfVxuICAgIG9uU29ydERlc2NlbmRpbmcoY29sdW1uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc29ydERlc2NlbmRpbmcuZW1pdChjb2x1bW4pO1xuICAgIH1cbiAgICBvbkZpbHRlcihjb2x1bW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXIuZW1pdChjb2x1bW4pO1xuICAgIH1cbiAgICBvbkR5bmFtaWNDb21wb25lbnRFdmVudHMoZTogeyB0aXRsZTogc3RyaW5nOyBkYXRhPzogYW55IH0sIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZS50aXRsZSkge1xuICAgICAgICAgICAgY2FzZSAncm93Q2hlY2snOlxuICAgICAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjayh7IG1vLCBpbmRleCB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NsaWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2xpY2soeyBtbywgaW5kZXggfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1bHZDb21tYW5kJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uVWx2Q29tbWFuZCh7IG1vLCBpbmRleCB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICBfdHJhY2tCeVNlbGVjdGVkRm4oaW5kZXgsIHJlY29yZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRyYWNrQnlTZWxlY3RlZEZuPy5lbWl0KHsgaW5kZXgsIHJlY29yZCB9KTtcbiAgICB9XG4gICAgX3RyYWNrQnlDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcbiAgICB9XG4gICAgX3RyYWNrQnlSb3coaW5kZXg6IG51bWJlciwgcm93OiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3Jvdy4kR3JvdXAgPyByb3cuJEdyb3VwIDogcm93LklkfSR7aW5kZXh9YDtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBfY29udGFpbmVyV2lkdGhDaGFuZ2VkKF86IG51bWJlcik6IHZvaWQge31cbn1cbiJdfQ==
@@ -35,6 +35,7 @@ export class BaseViewItemPropsComponent extends BaseViewPropsComponent {
35
35
  this._parentFormPanelService = _parentFormPanelService;
36
36
  this._formPanelService = _formPanelService;
37
37
  this._ulvMainService = _ulvMainService;
38
+ this.actionListClick = new EventEmitter();
38
39
  this.events = new EventEmitter();
39
40
  // @HostListener('document:mousedown', ['$event'])
40
41
  // onMouseDown(e): void {
@@ -429,7 +430,7 @@ export class BaseViewItemPropsComponent extends BaseViewPropsComponent {
429
430
  });
430
431
  }
431
432
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BaseViewItemPropsComponent, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i2.MoReportValuePipe }, { token: i3.FormPanelService, optional: true, skipSelf: true }, { token: i3.FormPanelService, optional: true, self: true }, { token: i3.UlvMainService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
432
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: BaseViewItemPropsComponent, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isdirty: "isdirty", isChecked: "isChecked", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inDialog: "inDialog", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
433
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: BaseViewItemPropsComponent, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isdirty: "isdirty", isChecked: "isChecked", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inDialog: "inDialog", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", actionList: "actionList", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { actionListClick: "actionListClick", events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
433
434
  }
434
435
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BaseViewItemPropsComponent, decorators: [{
435
436
  type: Component,
@@ -448,7 +449,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
448
449
  type: Self
449
450
  }] }, { type: i3.UlvMainService, decorators: [{
450
451
  type: Optional
451
- }] }], propDecorators: { events: [{
452
+ }] }], propDecorators: { actionListClick: [{
453
+ type: Output
454
+ }], events: [{
452
455
  type: Output
453
456
  }], _cartableFormRef: [{
454
457
  type: ViewChild,
@@ -499,6 +502,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
499
502
  type: Input
500
503
  }], fieldDict: [{
501
504
  type: Input
505
+ }], actionList: [{
506
+ type: Input
502
507
  }], serializedRelatedMo: [{
503
508
  type: Input
504
509
  }], cartableTemplate: [{
@@ -508,4 +513,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
508
513
  }], cartableWorkflowData: [{
509
514
  type: Input
510
515
  }] } });
511
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aWV3LWl0ZW0tcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2R5bmFtaWMtY29tcG9uZW50L2Jhc2Utdmlldy1pdGVtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsSCxPQUFPLEVBSUgsUUFBUSxFQUtYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQVMzRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBMkJsRSxJQUFhLG1CQUFtQixDQUFDLEdBQVc7UUFDeEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELElBQWEsZ0JBQWdCLENBQUMsR0FBZ0I7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsR0FBd0I7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MEJBNkZRLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTt5Q0E3RkgsTUFBTTtzQkFBZixNQUFNO2dCQUMwQyxnQkFBZ0I7c0JBQWhFLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUN0QyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVPLG1CQUFtQjtzQkFBL0IsS0FBSztnQkFLTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFNTyxvQkFBb0I7c0JBQWhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgU2tpcFNlbGYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmcm9tLCB0YXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0aHJvd0Vycm9yLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgRm9ybVNldHRpbmcsXG4gICAgQmFyc2FBcGksXG4gICAgQ2hvaWNlRGVmLFxuICAgIFR5cGVVbHZNYWluQ3RybHIsXG4gICAgQnJ1bGVBY3Rpb25NZXNzYWdlLFxuICAgIEVqcmF5T2xnb1xufSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzJztcbmltcG9ydCB7IFByZXZlbnREZWZhdWxFdmVudCwgY3JlYXRlR3JpZEVkaXRvckZvcm1QYW5lbCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBGb3JtUGFuZWxTZXJ2aWNlLCBVbHZNYWluU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEJhc2VWaWV3UHJvcHNDb21wb25lbnQgfSBmcm9tICcuL2Jhc2Utdmlldy1wcm9wcyc7XG5pbXBvcnQgeyBNb1JlcG9ydFZhbHVlUGlwZSB9IGZyb20gJy4uL3BpcGVzJztcbmltcG9ydCB7IEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcbnR5cGUgUmVhc29uVG9TYXZlID0gJ1RBQicgfCAnQ1RSTCtFTlRFUicgfCAnQ0hFQ0tfQ0hBTkdFRCcgfCAnRVNDJyB8ICdNT1VTRURPV05fT1VUU0lERSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JucmMtYmFzZS12aWV3LWl0ZW0tcHJvcHMnLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCBleHRlbmRzIEJhc2VWaWV3UHJvcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQE91dHB1dCgpIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0aXRsZTogc3RyaW5nOyBkYXRhPzogYW55IH0+KCk7XG4gICAgQFZpZXdDaGlsZCgnY2FydGFibGVGb3JtUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIF9jYXJ0YWJsZUZvcm1SZWY6IEZvcm1Db21wb25lbnQ7XG4gICAgQElucHV0KCkgY2hlY2tib3hDb21wb25lbnQ6IEVqcmF5T2xnbztcbiAgICBASW5wdXQoKSBtbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0Q291bnQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGxhc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNkaXJ0eTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0NoZWNrZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd1ZpZXdCdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNOZXdJbmxpbmVNbzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBleHRyYVJlbGF0aW9uOiBhbnk7XG4gICAgQElucHV0KCkgaGlkZU9wZW5JY29uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGluRGlhbG9nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm93SW5kaWNhdG9yOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGdyb3VwU3VtbWFyeTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0xhc3RDaGlsZEdyb3VwOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dSb3dOdW1iZXI6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm93TnVtYmVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29sb3JpbmdSb3c6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbm9TYXZlSW5saW5lRWRpdEluU2VydmVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJvd0luZGljYXRvckNvbG9yOiBzdHJpbmc7XG4gICAgQElucHV0KCkgVWx2TWFpbkN0cmxyOiBUeXBlVWx2TWFpbkN0cmxyO1xuICAgIEBJbnB1dCgpIGZpZWxkRGljdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAgIEBJbnB1dCgpIHNldCBzZXJpYWxpemVkUmVsYXRlZE1vKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NlcmlhbGl6ZWRSZWxhdGVkTW8gPSB2YWw7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhcnRhYmxlTW8odmFsKTtcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGNhcnRhYmxlVGVtcGxhdGUodmFsOiBGb3JtU2V0dGluZykge1xuICAgICAgICB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlID0gdmFsO1xuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVNbyh2YWw6IE1ldGFvYmplY3REYXRhTW9kZWwpIHtcbiAgICAgICAgdGhpcy5fY2FydGFibGVNbyA9IHZhbDtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ2FydGFibGVNbyh0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vKTtcblxuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVXb3JrZmxvd0RhdGEodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fY2FydGFibGVXb3JrZmxvd0RhdGEgPSB2YWw7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XG4gICAgfVxuICAgIC8vIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgLy8gb25Nb3VzZURvd24oZSk6IHZvaWQge1xuICAgIC8vICAgICAvLyB3ZSBtYWtlIHN1cmUgb25seSBkcmFnZ2FibGVzIG9uIHRoZSBkb2N1bWVudCBlbGVtZW50cyBhcmUgc2VsZWN0ZWRcbiAgICAvLyAgICAgaWYgKFxuICAgIC8vICAgICAgICAgIXRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgLy8gICAgICAgICB0aGlzLmlubGluZUVkaXRNb2RlICYmXG4gICAgLy8gICAgICAgICB0aGlzLmFsbG93SW5saW5lRWRpdCAmJlxuICAgIC8vICAgICAgICAgdGhpcy5pc0NoZWNrZWQgJiZcbiAgICAvLyAgICAgICAgIGUudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2J1dHRvbidcbiAgICAvLyAgICAgKSB7XG4gICAgLy8gICAgICAgICB0aGlzLmRlc2VsZWN0QWxsLmVtaXQoKTtcbiAgICAvLyAgICAgICAgIC8vIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnTU9VU0VET1dOX09VVFNJREUnKTtcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cbiAgICBoYXNFcnJvciA9IGZhbHNlO1xuICAgIF9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbiA9IGZhbHNlO1xuICAgIF9sYXN0RWRpdGFibGVDb2x1bW5JbmRleDogbnVtYmVyO1xuICAgIGlubGluZUVkaXRJblJlcG9ydCA9IHRydWU7XG4gICAgbGF5b3V0JDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XG4gICAgc2F2aW5nOiBib29sZWFuO1xuICAgIHNhdmVkOiBib29sZWFuO1xuICAgIGluUm93ID0gdHJ1ZTtcbiAgICBoYXNDYXJ0YWJsZVRlbXBsYXRlID0gZmFsc2U7XG4gICAgY2FydGFibGVQYXJhbXM6IHtcbiAgICAgICAgZm9ybVNldHRpbmc6IEZvcm1TZXR0aW5nO1xuICAgICAgICBtb0lkOiBzdHJpbmc7XG4gICAgICAgIHR5cGVEZWZJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB2aWV3SWQ6IGFueTtcbiAgICAgICAgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgICAgIGxvYWRBY3Rpdml0eVZpZXc6IGJvb2xlYW47XG4gICAgfTtcbiAgICB3b3JrZmxvd1N0YXRlOiB7IGVycm9yOiBhbnk7IHN0YXRlOiAnUGVuZGluZycgfCAnRmluaXNoJyB8ICcnIH07XG4gICAgYnJ1bGVBY3Rpb25NZXNzYWdlOiBCcnVsZUFjdGlvbk1lc3NhZ2UgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9zYXZlRWRpdGVkTW8kID0gbmV3IFN1YmplY3Q8UmVhc29uVG9TYXZlPigpO1xuICAgIHByaXZhdGUgX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBfZm9ybVBhbmVsTG9hZGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2NhcnRhYmxlTW86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgcHJpdmF0ZSBfY2FydGFibGVUZW1wbGF0ZTogRm9ybVNldHRpbmc7XG4gICAgcHJpdmF0ZSBfY2FydGFibGVXb3JrZmxvd0RhdGE6IHN0cmluZztcbiAgICBwcml2YXRlIF9zZXJpYWxpemVkUmVsYXRlZE1vOiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9yZXBvcnRWYWx1ZVBpcGU6IE1vUmVwb3J0VmFsdWVQaXBlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcm90ZWN0ZWQgX3BhcmVudEZvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJvdGVjdGVkIF9mb3JtUGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX3Vsdk1haW5TZXJ2aWNlOiBVbHZNYWluU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlYXNvbjogUmVhc29uVG9TYXZlKSA9PiB0aGlzLl9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChyZWFzb24pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHRocm93RXJyb3IoKCkgPT4gZXJyKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogeyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc2F2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tby4kSXNDaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dCgnJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZWFzb24gPT09ICdUQUInIHx8IHJlcy5yZWFzb24gPT09ICdDVFJMK0VOVEVSJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdE5leHRJbmxpbmVSZWNvcmQuZW1pdCh0aGlzLm1vKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5yZWFzb24gPT09ICdFU0MnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbENhbmNlbC5lbWl0KHRoaXMubW8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICAvLyBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fc3luY01vKCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoYykgPT4gdGhpcy5fc3luY01vKCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlLmVtaXQoeyBtbzogdGhpcy5tbywgZmllbGREYk5hbWU6IGMgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXQgX2hhc0Zvcm1QYW5lbFNlcnZpY2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlICE9PSBudWxsICYmIHRoaXMuZm9ybVNldHRpbmc7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2hhc0Zvcm1QYW5lbFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UuY29udGV4dCQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS52aWV3JC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmxheW91dCQgPSB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmxheW91dCQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgY29uc3QgeyBpc0NoZWNrZWQsIGlubGluZUVkaXRNb2RlIH0gPSBjaGFuZ2VzO1xuICAgICAgICBsZXQgbmVlZFRvTG9hZEZvcm0gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzQ2hlY2tlZC5jdXJyZW50VmFsdWUgJiYgaXNDaGVja2VkLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRUb1NhdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdDSEVDS19DSEFOR0VEJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2hlY2tlZC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbmVlZFRvTG9hZEZvcm0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDaGVja2VkICYmICFpc0NoZWNrZWQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3JhaXNlV29ya2Zsb3dTaGFyZUJ1dHRvbnMoaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgIWlubGluZUVkaXRNb2RlPy5wcmV2aW91c1ZhbHVlICYmIHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICBuZWVkVG9Mb2FkRm9ybSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgaW5saW5lRWRpdE1vZGU/LnByZXZpb3VzVmFsdWUgJiYgdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnRVNDJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5lZWRUb0xvYWRGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5tbyAmJiAhY2hhbmdlcy5tby5maXJzdENoYW5nZSAmJiB0aGlzLmlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZm9ybVBhbmVsTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKG1vICYmICFtby5maXJzdENoYW5nZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlICYmIHRoaXMuaXNDaGVja2VkICYmIHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgLy8gICAgIC8vdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm1QYW5lbEN0cmxyKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLnVuKCdicnVsZVNob3dNZXNzYWdlQWN0aW9uJywgdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgT25DYXJ0YWJsZUZvcm1DbGljayhlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUm93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jvd0NoZWNrKCk7XG4gICAgfVxuXG4gICAgb25Sb3dDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cbiAgICBvbkNvbHVtbkNoYW5nZVRvRWRpdE1vZGUoZWxEb206IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZXMgPSBlbERvbS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgYGJ1dHRvbixidXR0b246bm90KFtkaXNhYmxlZF0pLFtocmVmXSxpbnB1dDpub3QoW2Rpc2FibGVkXSksaW5wdXQsXG4gICAgICAgICAgICAgICAgc2VsZWN0LHNlbGVjdDpub3QoW2Rpc2FibGVkXSksdGV4dGFyZWEsdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKWBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSBpbmRleDtcbiAgICAgICAgaWYgKCFmb2N1c2FibGVzLmxlbmd0aCB8fCB0aGlzLl9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZSA9IGZvY3VzYWJsZXNbMF07XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKGxhc3RGb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpPy5mb2N1cygpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG4gICAgb25UYWJLZXlEb3duKGUsIGluZGV4KTogdm9pZCB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5fbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXgpIHtcbiAgICAgICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25FZGl0Rm9ybVBhbmVsU2F2ZShlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnQ1RSTCtFTlRFUicpO1xuICAgIH1cbiAgICBvbkVkaXRGb3JtUGFuZWxDYW5jZWwoZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmVzY2FwZUtleS5lbWl0KHRoaXMubW8pO1xuICAgIH1cbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudWx2Q29tbWFuZC5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cbiAgICBvbkFjdGlvbihjb21tYW5kQm9keTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uLmVtaXQoY29tbWFuZEJvZHkpO1xuICAgIH1cbiAgICBvbkV4cGFuZENsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGFuZENsaWNrLmVtaXQodGhpcy5tbyk7XG4gICAgfVxuICAgIG9uRHluYW1pY0NvbXBvbmVudEV2ZW50cyhlOiB7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfSk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGUudGl0bGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NoZWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NsaWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2xpY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VsdkNvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25VbHZDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNhcnRhYmxlRm9ybUNsb3NlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJ0YWJsZUZvcm1DbG9zZWQuZW1pdCh7IG1vOiB0aGlzLm1vLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICB9XG5cbiAgICBvbkNhcnRhYmxlQnJ1bGVBY3Rpb24oYnJ1bGVBY3Rpb246IEJydWxlQWN0aW9uTWVzc2FnZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKGJydWxlQWN0aW9uKTtcbiAgICB9XG4gICAgb25DYXJ0YWJsZUFmdGVyVGFuc2l0aW9uKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0ge1xuICAgICAgICAgICAgZXJyb3I6IHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID8gdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgOiBlLmVycm9yLFxuICAgICAgICAgICAgc3RhdGU6ICdGaW5pc2gnXG4gICAgICAgIH07XG4gICAgfVxuICAgIG9uQ2FydGFibGVCZWZvcmVUYW5zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMud29ya2Zsb3dTdGF0ZSA9IHsgc3RhdGU6ICdQZW5kaW5nJywgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgLy8gdGhpcy53b3JrZmxvd1N0YXRlQ2hhbmdlZC5lbWl0KHRoaXMud29ya2Zsb3dTdGF0ZSk7XG4gICAgfVxuICAgIG9uUmVzZXRXb3JrZmxvd1N0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYW5kbGVSZXNldFdvcmtmbG93U3RhdGUoKTtcbiAgICB9XG4gICAgX3RyYWNrQnlDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9oYW5kbGVSZXNldFdvcmtmbG93U3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0geyBzdGF0ZTogJycsIGVycm9yOiBudWxsIH07XG4gICAgfVxuICAgIHByb3RlY3RlZCBfdXBkYXRlQ2FydGFibGVNbyhzZXJpYWxpemVNbzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChzZXJpYWxpemVNbyAmJiB0aGlzLl9jYXJ0YWJsZU1vKSB7XG4gICAgICAgICAgICBzZXJpYWxpemVNbyA9IGAke3NlcmlhbGl6ZU1vfWA7XG4gICAgICAgICAgICBjb25zdCBtbyA9IEJhcnNhQXBpLkV4dC5kZWNvZGUoc2VyaWFsaXplTW8pO1xuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVNbyA9IHsgLi4udGhpcy5fY2FydGFibGVNbywgLi4ubW8gfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk6IHZvaWQge1xuICAgICAgICBsZXQgY2FydGFibGVUZW1wbGF0ZSA9IHRoaXMuX2NhcnRhYmxlVGVtcGxhdGU7XG4gICAgICAgIGNvbnN0IGNhcnRhYmxlTW8gPSB0aGlzLl9jYXJ0YWJsZU1vO1xuICAgICAgICBjb25zdCBjYXJ0YWJsZVdvcmtmbG93RGF0YSA9IHRoaXMuX2NhcnRhYmxlV29ya2Zsb3dEYXRhO1xuICAgICAgICBpZiAodGhpcy5oYXNDYXJ0YWJsZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAvLyBUT0RPIHVwZGF0ZSBjYXJ0YWJsZSBtbztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlICYmXG4gICAgICAgICAgICBjYXJ0YWJsZU1vICYmXG4gICAgICAgICAgICB0eXBlb2YgY2FydGFibGVXb3JrZmxvd0RhdGEgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICB0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vXG4gICAgICAgICkge1xuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY2FydGFibGVUZW1wbGF0ZSkpO1xuICAgICAgICAgICAgY29uc3QgdmlldyA9IGNhcnRhYmxlVGVtcGxhdGUuVmlldztcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUuRGF0YSA9IHsgTW86IHsgLi4uY2FydGFibGVNbyB9IH07XG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlLldvcmtmbG93ID0gY2FydGFibGVXb3JrZmxvd0RhdGEgPT09ICcnID8gbnVsbCA6IEpTT04ucGFyc2UoY2FydGFibGVXb3JrZmxvd0RhdGEpO1xuICAgICAgICAgICAgaWYgKCF2aWV3LkV4dHJhSnNvblByb3ApIHtcbiAgICAgICAgICAgICAgICB2aWV3LkV4dHJhSnNvblByb3AgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZpZXcuRXh0cmFKc29uUHJvcC5Jc1NpbXBsZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuY2FydGFibGVQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgZm9ybVNldHRpbmc6IGNhcnRhYmxlVGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgbW9JZDogY2FydGFibGVNby5JZCxcbiAgICAgICAgICAgICAgICB0eXBlRGVmSWQ6IGNhcnRhYmxlTW8uJFR5cGVEZWZJZCxcbiAgICAgICAgICAgICAgICB2aWV3SWQ6IHZpZXcuVHlwZVZpZXdJZCxcbiAgICAgICAgICAgICAgICBpbkRpYWxvZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgbG9hZEFjdGl2aXR5VmlldzogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaGFzQ2FydGFibGVUZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9uZWVkVG9TYXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gY29uc3QgaXNDaGlsZE5vZGUgPSAodGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoZS50YXJnZXQpO1xuICAgICAgICAvLyBpZiAoaXNDaGlsZE5vZGUpIHtcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gfVxuICAgICAgICBjb25zdCB0ID0gdGhpcy5pbmxpbmVFZGl0TW9kZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlO1xuICAgICAgICBpZiAoIXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1QYW5lbEN0cmxyICYmIHRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrZm9jdXNPdXRGcm9tUm93KHRhcmdldCk6IHZvaWQge1xuICAgICAgICAvLyBjb25zdCBmb2N1c2FibGU6IE5vZGVMaXN0ID0gdGhpcy5fZm9jdXNhYmxlQ29udHJvbHM7XG4gICAgICAgIC8vIGxldCBmb3VuZEluRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgICAgIC8vIGZvY3VzYWJsZS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAoYyA9PT0gdGFyZ2V0KSB7XG4gICAgICAgIC8vICAgICAgICAgZm91bmRJbkZvY3VzYWJsZSA9IHRydWU7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAvLyBpZiAoIWZvdW5kSW5Gb2N1c2FibGUpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9yb3dDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgIC8vICAgICByZXR1cm47XG4gICAgICAgIC8vIH1cblxuICAgICAgICB0aGlzLnJvd0NoZWNrLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWlzZVdvcmtmbG93U2hhcmVCdXR0b25zKGlzQ2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jYXJ0YWJsZVBhcmFtcykge1xuICAgICAgICAgICAgY29uc3QgY2hvaWNlTGlzdDogQ2hvaWNlRGVmW10gPSB0aGlzLmNhcnRhYmxlUGFyYW1zLmZvcm1TZXR0aW5nPy5Xb3JrZmxvdz8uQ2hvaWNlTGlzdDtcbiAgICAgICAgICAgIGlmIChjaG9pY2VMaXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NoYXJlQnV0dG9ucy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYW5lbEN0cmxyOiB0aGlzLl9jYXJ0YWJsZUZvcm1SZWYuZm9ybVBhbmVsQ3RybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vOiB0aGlzLm1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZDogaXNDaGVja2VkXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9oYW5kbGVWYWx1ZUNoYW5nZShmb3JtUGFuZWxDdHJsLCBmaWVsZEN0cmxyKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dChmaWVsZEN0cmxyPy5TZXR0aW5nPy5Db250cm9sTmFtZSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc3luY01vKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBzeW5jV2l0aEZvcm1wYW5lbE1vID0gdGhpcy5tbztcbiAgICAgICAgY29uc3QgX2lzQ2hlY2tlZCA9IHRoaXMubW8uJElzQ2hlY2tlZDtcbiAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHJNbyA9IHRoaXMuZm9ybVBhbmVsQ3RybHIuTW87XG4gICAgICAgIHRoaXMuX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhmb3JtUGFuZWxDdHJsck1vLCBzeW5jV2l0aEZvcm1wYW5lbE1vKTtcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJE9yaWdpbmFsVmFsdWVzJ10gPSBmb3JtUGFuZWxDdHJsck1vWyckT3JpZ2luYWxWYWx1ZXMnXTtcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJEZpZWxkRGljdCddID0gZm9ybVBhbmVsQ3RybHJNb1snJEZpZWxkRGljdCddO1xuICAgICAgICBzeW5jV2l0aEZvcm1wYW5lbE1vWyckU3RhdGUnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRTdGF0ZSddOyAvLyB0aGlzIGFkZCBiZWNhdXNlIGlmIHdlIGVkaXQgdW5jaGFuZ2VkIG1vIGl0IGRvZXMgbm90IHJlZmxlY3QgdG8gbW8gb2YgdWx2LlxuICAgICAgICB0aGlzLm1vID0geyAuLi5zeW5jV2l0aEZvcm1wYW5lbE1vIH07XG4gICAgICAgIHRoaXMubW8uJElzQ2hlY2tlZCA9IF9pc0NoZWNrZWQ7XG4gICAgICAgIHJldHVybiBmcm9tKFByb21pc2UucmVzb2x2ZSgpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhzb3VyY2U6IE1ldGFvYmplY3REYXRhTW9kZWwsIGRlc3Q6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXMoc291cmNlLiRPcmlnaW5hbFZhbHVlcykuZm9yRWFjaCgoYzogYW55KSA9PiB7XG4gICAgICAgICAgICBkZXN0W2NdID0gc291cmNlW2NdO1xuICAgICAgICAgICAgaWYgKHNvdXJjZVtjICsgJyRDYXB0aW9uJ10pIHtcbiAgICAgICAgICAgICAgICBkZXN0W2MgKyAnJENhcHRpb24nXSA9IHNvdXJjZVtjICsgJyRDYXB0aW9uJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc291cmNlW2MgKyAnJEljb24nXSkge1xuICAgICAgICAgICAgICAgIGRlc3RbYyArICckSWNvbiddID0gc291cmNlW2MgKyAnJEljb24nXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWlzZUZvcm1QYW5lbFZhbHVlQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdCh7IG1vOiB0aGlzLm1vIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbihhY3Rpb246IEJydWxlQWN0aW9uTWVzc2FnZSk6IHZvaWQge1xuICAgICAgICBhY3Rpb24uTWVzc2FnZUV4cHJlc3Npb25IdG1sID0gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGFjdGlvbi5NZXNzYWdlRXhwcmVzc2lvbik7XG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID0gYWN0aW9uO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUZvcm1QYW5lbEN0cmxyKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCB0eXBlRGVmSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtUGFuZWxDdHJscikge1xuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsciA9IGNyZWF0ZUdyaWRFZGl0b3JGb3JtUGFuZWwoXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtU2V0dGluZyxcbiAgICAgICAgICAgICAgICB7IC4uLm1vIH0sXG4gICAgICAgICAgICAgICAgdHlwZURlZklkLFxuICAgICAgICAgICAgICAgIHRoaXMuZXh0cmFSZWxhdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLmluUm93LFxuICAgICAgICAgICAgICAgIHRoaXMuVWx2TWFpbkN0cmxyXG4gICAgICAgICAgICAgICAgLy8gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcy5jb250ZXh0LlNldHRpbmcsICdFeHRyYS5SZWxhdGlvbicpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuSW5saW5lRWRpdEluUmVwb3J0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5vbih7XG4gICAgICAgICAgICBicnVsZVNob3dNZXNzYWdlQWN0aW9uOiB0aGlzLl9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWx1ZUNoYW5nZTogdGhpcy5faGFuZGxlVmFsdWVDaGFuZ2UuYmluZCh0aGlzKVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtUGFuZWxDdHJscjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2xvYWRBbmRDcmVhdGVGb3JtUGFuZWxDdHJscigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybVNldHRpbmdEYXRhID0gdGhpcy5mb3JtU2V0dGluZy5EYXRhO1xuICAgICAgICBjb25zdCBmb3JtTW8gPSB7XG4gICAgICAgICAgICAuLi50aGlzLm1vLFxuICAgICAgICAgICAgJEZpZWxkRGljdDogZm9ybVNldHRpbmdEYXRhLk1vLiRGaWVsZERpY3QsXG4gICAgICAgICAgICAkVHlwZURlZklkOiBmb3JtU2V0dGluZ0RhdGEuTW8uJFR5cGVEZWZJZCxcbiAgICAgICAgICAgICRPcmlnaW5hbFZhbHVlczoge31cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuX2Zvcm1QYW5lbExvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShmb3JtTW8pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY3JlYXRlRm9ybVBhbmVsQ3RybHIoZm9ybU1vLCB0aGlzLnR5cGVEZWZJZCk7XG4gICAgICAgIHRoaXMuX2Zvcm1QYW5lbExvYWRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyID0gdGhpcy5mb3JtUGFuZWxDdHJscjtcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5VbHZNb0RhdGFMaXN0Q291bnQgPSB0aGlzLm1vRGF0YUxpc3RDb3VudCAtIDE7XG4gICAgICAgIGZvcm1QYW5lbEN0cmxyLkxvYWRBbmRDcmVhdGUobnVsbCwgZmFsc2UsIGZhbHNlLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21Gb3JtUGFuZWxVaSA9IGZvcm1QYW5lbEN0cmxyLkFkYXB0ZXIuQ29udHJvbDtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE1vID0gdGhpcy5fcGFyZW50Rm9ybVBhbmVsU2VydmljZSA/IHRoaXMuX3BhcmVudEZvcm1QYW5lbFNlcnZpY2UubW8gOiBudWxsO1xuICAgICAgICAgICAgaWYgKHRoaXMuZXh0cmFSZWxhdGlvbiAmJiBwYXJlbnRNbyAmJiB0aGlzLmV4dHJhUmVsYXRpb24uUmVsYXRpb25UeXBlID09PSAnQ29tcG9zaXRpb24nKSB7XG4gICAgICAgICAgICAgICAgZm9ybVBhbmVsQ3RybHIuTW8uU2V0RlZhbHVlKHRoaXMuZXh0cmFSZWxhdGlvbi5QYXJlbnRGZE5hbWUsIHBhcmVudE1vKTtcbiAgICAgICAgICAgICAgICAvLyBuZXdGb3JtU2V0dGluZ3MuRGF0YS5Nb1tyZWxhdGlvbi5QYXJlbnRGZE5hbWVdID0gcGFyZW50TW8uR2V0Q2hhbmdlZE9iamVjdCgpO1xuICAgICAgICAgICAgICAgIC8vIG5ld0Zvcm1TZXR0aW5ncy5EYXRhLk1vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0uJFN0YXRlID0gcGFyZW50TW8uJFN0YXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VzdG9tRm9ybVBhbmVsVWkuUmVmcmVzaCA9ICgpID0+IHt9O1xuICAgICAgICAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS5jb250ZXh0ID0gZm9ybVBhbmVsQ3RybHIuQWRhcHRlci5Db250cm9sO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9yZXNldFNhdmluZ1N0YXRlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2F2ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldFNhdmluZ1N0YXRlKGVycik6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2F2ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKHJlYXNvbik6IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx7IHJlYXNvbjogUmVhc29uVG9TYXZlOyBzdWNjZWVkOiBib29sZWFuOyBzYXZlZDogYm9vbGVhbiB9PigocmVzb2x2ZSwgXykgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZvcm1QYW5lbEN0cmxyLklzTW9DaGFuZ2VkKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBzdGF0ZSBvZiBtbyBpcyBuZXcgb3IgbW9kaWRmaWVkIHRoZW4gaXQgbmVlZHMgdG8gdXBkYXRlXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHJlYXNvbiwgc3VjY2VlZDogdHJ1ZSwgc2F2ZWQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHJNbyA9IHRoaXMuZm9ybVBhbmVsQ3RybHIuTW87XG4gICAgICAgICAgICBkZWxldGUgZm9ybVBhbmVsQ3RybHJNby5qc29uO1xuICAgICAgICAgICAgLy8gdGhpcy5zYXZpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLm1vLiRJbmxpbmVNb0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFNhdmUuZW1pdCh0aGlzLm1vKTtcbiAgICAgICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID0gbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLm5vU2F2ZUlubGluZUVkaXRJblNlcnZlcikge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZWFzb24sIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2F2ZShmYWxzZSwgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRJc0NoYW5nZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldFNhdmluZ1N0YXRlKGVycik7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHJlYXNvbiwgc3VjY2VlZDogdHJ1ZSwgc2F2ZWQ6IHRydWUgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
516
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aWV3LWl0ZW0tcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2R5bmFtaWMtY29tcG9uZW50L2Jhc2Utdmlldy1pdGVtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsSCxPQUFPLEVBSUgsUUFBUSxFQUtYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQVMzRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBNkJsRSxJQUFhLG1CQUFtQixDQUFDLEdBQVc7UUFDeEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELElBQWEsZ0JBQWdCLENBQUMsR0FBZ0I7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsR0FBd0I7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ICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBTa2lwU2VsZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZyb20sIHRhcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRocm93RXJyb3IsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcbiAgICBGb3JtU2V0dGluZyxcbiAgICBCYXJzYUFwaSxcbiAgICBDaG9pY2VEZWYsXG4gICAgVHlwZVVsdk1haW5DdHJscixcbiAgICBCcnVsZUFjdGlvbk1lc3NhZ2UsXG4gICAgRWpyYXlPbGdvXG59IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMnO1xuaW1wb3J0IHsgUHJldmVudERlZmF1bEV2ZW50LCBjcmVhdGVHcmlkRWRpdG9yRm9ybVBhbmVsIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1QYW5lbFNlcnZpY2UsIFVsdk1haW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQmFzZVZpZXdQcm9wc0NvbXBvbmVudCB9IGZyb20gJy4vYmFzZS12aWV3LXByb3BzJztcbmltcG9ydCB7IE1vUmVwb3J0VmFsdWVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xudHlwZSBSZWFzb25Ub1NhdmUgPSAnVEFCJyB8ICdDVFJMK0VOVEVSJyB8ICdDSEVDS19DSEFOR0VEJyB8ICdFU0MnIHwgJ01PVVNFRE9XTl9PVVRTSURFJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYm5yYy1iYXNlLXZpZXctaXRlbS1wcm9wcycsXG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdQcm9wc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBAT3V0cHV0KCkgYWN0aW9uTGlzdENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0aXRsZTogc3RyaW5nOyBkYXRhPzogYW55IH0+KCk7XG4gICAgQFZpZXdDaGlsZCgnY2FydGFibGVGb3JtUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIF9jYXJ0YWJsZUZvcm1SZWY6IEZvcm1Db21wb25lbnQ7XG4gICAgQElucHV0KCkgY2hlY2tib3hDb21wb25lbnQ6IEVqcmF5T2xnbztcbiAgICBASW5wdXQoKSBtbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0Q291bnQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGxhc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNkaXJ0eTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0NoZWNrZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd1ZpZXdCdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNOZXdJbmxpbmVNbzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBleHRyYVJlbGF0aW9uOiBhbnk7XG4gICAgQElucHV0KCkgaGlkZU9wZW5JY29uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGluRGlhbG9nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm93SW5kaWNhdG9yOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGdyb3VwU3VtbWFyeTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0xhc3RDaGlsZEdyb3VwOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dSb3dOdW1iZXI6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm93TnVtYmVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29sb3JpbmdSb3c6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbm9TYXZlSW5saW5lRWRpdEluU2VydmVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJvd0luZGljYXRvckNvbG9yOiBzdHJpbmc7XG4gICAgQElucHV0KCkgVWx2TWFpbkN0cmxyOiBUeXBlVWx2TWFpbkN0cmxyO1xuICAgIEBJbnB1dCgpIGZpZWxkRGljdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBASW5wdXQoKSBhY3Rpb25MaXN0OiBhbnlbXTtcblxuICAgIEBJbnB1dCgpIHNldCBzZXJpYWxpemVkUmVsYXRlZE1vKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NlcmlhbGl6ZWRSZWxhdGVkTW8gPSB2YWw7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhcnRhYmxlTW8odmFsKTtcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FydGFibGVQYXJhbXMoKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGNhcnRhYmxlVGVtcGxhdGUodmFsOiBGb3JtU2V0dGluZykge1xuICAgICAgICB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlID0gdmFsO1xuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVNbyh2YWw6IE1ldGFvYmplY3REYXRhTW9kZWwpIHtcbiAgICAgICAgdGhpcy5fY2FydGFibGVNbyA9IHZhbDtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ2FydGFibGVNbyh0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vKTtcblxuICAgICAgICB0aGlzLl9jcmVhdGVDYXJ0YWJsZVBhcmFtcygpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgY2FydGFibGVXb3JrZmxvd0RhdGEodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fY2FydGFibGVXb3JrZmxvd0RhdGEgPSB2YWw7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk7XG4gICAgfVxuICAgIC8vIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgLy8gb25Nb3VzZURvd24oZSk6IHZvaWQge1xuICAgIC8vICAgICAvLyB3ZSBtYWtlIHN1cmUgb25seSBkcmFnZ2FibGVzIG9uIHRoZSBkb2N1bWVudCBlbGVtZW50cyBhcmUgc2VsZWN0ZWRcbiAgICAvLyAgICAgaWYgKFxuICAgIC8vICAgICAgICAgIXRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgLy8gICAgICAgICB0aGlzLmlubGluZUVkaXRNb2RlICYmXG4gICAgLy8gICAgICAgICB0aGlzLmFsbG93SW5saW5lRWRpdCAmJlxuICAgIC8vICAgICAgICAgdGhpcy5pc0NoZWNrZWQgJiZcbiAgICAvLyAgICAgICAgIGUudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2J1dHRvbidcbiAgICAvLyAgICAgKSB7XG4gICAgLy8gICAgICAgICB0aGlzLmRlc2VsZWN0QWxsLmVtaXQoKTtcbiAgICAvLyAgICAgICAgIC8vIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnTU9VU0VET1dOX09VVFNJREUnKTtcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cbiAgICBoYXNFcnJvciA9IGZhbHNlO1xuICAgIF9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbiA9IGZhbHNlO1xuICAgIF9sYXN0RWRpdGFibGVDb2x1bW5JbmRleDogbnVtYmVyO1xuICAgIGlubGluZUVkaXRJblJlcG9ydCA9IHRydWU7XG4gICAgbGF5b3V0JDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGZvcm1QYW5lbEN0cmxyOiBhbnk7XG4gICAgc2F2aW5nOiBib29sZWFuO1xuICAgIHNhdmVkOiBib29sZWFuO1xuICAgIGluUm93ID0gdHJ1ZTtcbiAgICBoYXNDYXJ0YWJsZVRlbXBsYXRlID0gZmFsc2U7XG4gICAgY2FydGFibGVQYXJhbXM6IHtcbiAgICAgICAgZm9ybVNldHRpbmc6IEZvcm1TZXR0aW5nO1xuICAgICAgICBtb0lkOiBzdHJpbmc7XG4gICAgICAgIHR5cGVEZWZJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB2aWV3SWQ6IGFueTtcbiAgICAgICAgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgICAgIGxvYWRBY3Rpdml0eVZpZXc6IGJvb2xlYW47XG4gICAgfTtcbiAgICB3b3JrZmxvd1N0YXRlOiB7IGVycm9yOiBhbnk7IHN0YXRlOiAnUGVuZGluZycgfCAnRmluaXNoJyB8ICcnIH07XG4gICAgYnJ1bGVBY3Rpb25NZXNzYWdlOiBCcnVsZUFjdGlvbk1lc3NhZ2UgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9zYXZlRWRpdGVkTW8kID0gbmV3IFN1YmplY3Q8UmVhc29uVG9TYXZlPigpO1xuICAgIHByaXZhdGUgX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBfZm9ybVBhbmVsTG9hZGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2NhcnRhYmxlTW86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgcHJpdmF0ZSBfY2FydGFibGVUZW1wbGF0ZTogRm9ybVNldHRpbmc7XG4gICAgcHJpdmF0ZSBfY2FydGFibGVXb3JrZmxvd0RhdGE6IHN0cmluZztcbiAgICBwcml2YXRlIF9zZXJpYWxpemVkUmVsYXRlZE1vOiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9yZXBvcnRWYWx1ZVBpcGU6IE1vUmVwb3J0VmFsdWVQaXBlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcm90ZWN0ZWQgX3BhcmVudEZvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJvdGVjdGVkIF9mb3JtUGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX3Vsdk1haW5TZXJ2aWNlOiBVbHZNYWluU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9zYXZlRWRpdGVkTW8kXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlYXNvbjogUmVhc29uVG9TYXZlKSA9PiB0aGlzLl9pbmxpbmVFZGl0U2F2ZUZvcm1QYW5lbChyZWFzb24pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHRocm93RXJyb3IoKCkgPT4gZXJyKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogeyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc2F2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tby4kSXNDaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dCgnJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZWFzb24gPT09ICdUQUInIHx8IHJlcy5yZWFzb24gPT09ICdDVFJMK0VOVEVSJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdE5leHRJbmxpbmVSZWNvcmQuZW1pdCh0aGlzLm1vKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5yZWFzb24gPT09ICdFU0MnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbENhbmNlbC5lbWl0KHRoaXMubW8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9mb3JtcGFuZWxWYWx1ZUNoYW5nZWQkXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICAvLyBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fc3luY01vKCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoYykgPT4gdGhpcy5fc3luY01vKCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW8uJElubGluZU1vQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlLmVtaXQoeyBtbzogdGhpcy5tbywgZmllbGREYk5hbWU6IGMgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXQgX2hhc0Zvcm1QYW5lbFNlcnZpY2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlICE9PSBudWxsICYmIHRoaXMuZm9ybVNldHRpbmc7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2hhc0Zvcm1QYW5lbFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1QYW5lbFNlcnZpY2UuY29udGV4dCQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS52aWV3JC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmxheW91dCQgPSB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLmxheW91dCQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgY29uc3QgeyBpc0NoZWNrZWQsIGlubGluZUVkaXRNb2RlIH0gPSBjaGFuZ2VzO1xuICAgICAgICBsZXQgbmVlZFRvTG9hZEZvcm0gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzQ2hlY2tlZC5jdXJyZW50VmFsdWUgJiYgaXNDaGVja2VkLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRUb1NhdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZUVkaXRlZE1vJC5uZXh0KCdDSEVDS19DSEFOR0VEJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2hlY2tlZC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbmVlZFRvTG9hZEZvcm0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDaGVja2VkICYmICFpc0NoZWNrZWQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3JhaXNlV29ya2Zsb3dTaGFyZUJ1dHRvbnMoaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgIWlubGluZUVkaXRNb2RlPy5wcmV2aW91c1ZhbHVlICYmIHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICBuZWVkVG9Mb2FkRm9ybSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlubGluZUVkaXRNb2RlPy5jdXJyZW50VmFsdWUgJiYgaW5saW5lRWRpdE1vZGU/LnByZXZpb3VzVmFsdWUgJiYgdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnRVNDJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5lZWRUb0xvYWRGb3JtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkQW5kQ3JlYXRlRm9ybVBhbmVsQ3RybHIoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5tbyAmJiAhY2hhbmdlcy5tby5maXJzdENoYW5nZSAmJiB0aGlzLmlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZm9ybVBhbmVsTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKG1vICYmICFtby5maXJzdENoYW5nZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlICYmIHRoaXMuaXNDaGVja2VkICYmIHRoaXMuaW5saW5lRWRpdE1vZGUpIHtcbiAgICAgICAgLy8gICAgIC8vdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShjaGFuZ2VzLm1vLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm1QYW5lbEN0cmxyKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1QYW5lbEN0cmxyLnVuKCdicnVsZVNob3dNZXNzYWdlQWN0aW9uJywgdGhpcy5faGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgT25DYXJ0YWJsZUZvcm1DbGljayhlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUm93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jvd0NoZWNrKCk7XG4gICAgfVxuXG4gICAgb25Sb3dDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cbiAgICBvbkNvbHVtbkNoYW5nZVRvRWRpdE1vZGUoZWxEb206IEhUTUxFbGVtZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZXMgPSBlbERvbS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgYGJ1dHRvbixidXR0b246bm90KFtkaXNhYmxlZF0pLFtocmVmXSxpbnB1dDpub3QoW2Rpc2FibGVkXSksaW5wdXQsXG4gICAgICAgICAgICAgICAgc2VsZWN0LHNlbGVjdDpub3QoW2Rpc2FibGVkXSksdGV4dGFyZWEsdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKWBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSBpbmRleDtcbiAgICAgICAgaWYgKCFmb2N1c2FibGVzLmxlbmd0aCB8fCB0aGlzLl9mb2N1c1RvRmlyc3RFaWR0YWJsZUNvbHVtbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZvY3VzVG9GaXJzdEVpZHRhYmxlQ29sdW1uID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZSA9IGZvY3VzYWJsZXNbMF07XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKGxhc3RGb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpPy5mb2N1cygpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG4gICAgb25UYWJLZXlEb3duKGUsIGluZGV4KTogdm9pZCB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5fbGFzdEVkaXRhYmxlQ29sdW1uSW5kZXgpIHtcbiAgICAgICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcbiAgICAgICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25FZGl0Rm9ybVBhbmVsU2F2ZShlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnQ1RSTCtFTlRFUicpO1xuICAgIH1cbiAgICBvbkVkaXRGb3JtUGFuZWxDYW5jZWwoZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmVzY2FwZUtleS5lbWl0KHRoaXMubW8pO1xuICAgIH1cbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudWx2Q29tbWFuZC5lbWl0KHsgbW86IHRoaXMubW8sIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cbiAgICBvbkFjdGlvbihjb21tYW5kQm9keTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uLmVtaXQoY29tbWFuZEJvZHkpO1xuICAgIH1cbiAgICBvbkV4cGFuZENsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGFuZENsaWNrLmVtaXQodGhpcy5tbyk7XG4gICAgfVxuICAgIG9uRHluYW1pY0NvbXBvbmVudEV2ZW50cyhlOiB7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfSk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGUudGl0bGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NoZWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Jvd0NsaWNrJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm93Q2xpY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VsdkNvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25VbHZDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNhcnRhYmxlRm9ybUNsb3NlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJ0YWJsZUZvcm1DbG9zZWQuZW1pdCh7IG1vOiB0aGlzLm1vLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICB9XG5cbiAgICBvbkNhcnRhYmxlQnJ1bGVBY3Rpb24oYnJ1bGVBY3Rpb246IEJydWxlQWN0aW9uTWVzc2FnZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uKGJydWxlQWN0aW9uKTtcbiAgICB9XG4gICAgb25DYXJ0YWJsZUFmdGVyVGFuc2l0aW9uKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0ge1xuICAgICAgICAgICAgZXJyb3I6IHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID8gdGhpcy5icnVsZUFjdGlvbk1lc3NhZ2UgOiBlLmVycm9yLFxuICAgICAgICAgICAgc3RhdGU6ICdGaW5pc2gnXG4gICAgICAgIH07XG4gICAgfVxuICAgIG9uQ2FydGFibGVCZWZvcmVUYW5zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMud29ya2Zsb3dTdGF0ZSA9IHsgc3RhdGU6ICdQZW5kaW5nJywgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgLy8gdGhpcy53b3JrZmxvd1N0YXRlQ2hhbmdlZC5lbWl0KHRoaXMud29ya2Zsb3dTdGF0ZSk7XG4gICAgfVxuICAgIG9uUmVzZXRXb3JrZmxvd1N0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYW5kbGVSZXNldFdvcmtmbG93U3RhdGUoKTtcbiAgICB9XG4gICAgX3RyYWNrQnlDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2NvbHVtbi5OYW1lfSR7aW5kZXh9YDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9oYW5kbGVSZXNldFdvcmtmbG93U3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy53b3JrZmxvd1N0YXRlID0geyBzdGF0ZTogJycsIGVycm9yOiBudWxsIH07XG4gICAgfVxuICAgIHByb3RlY3RlZCBfdXBkYXRlQ2FydGFibGVNbyhzZXJpYWxpemVNbzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChzZXJpYWxpemVNbyAmJiB0aGlzLl9jYXJ0YWJsZU1vKSB7XG4gICAgICAgICAgICBzZXJpYWxpemVNbyA9IGAke3NlcmlhbGl6ZU1vfWA7XG4gICAgICAgICAgICBjb25zdCBtbyA9IEJhcnNhQXBpLkV4dC5kZWNvZGUoc2VyaWFsaXplTW8pO1xuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVNbyA9IHsgLi4udGhpcy5fY2FydGFibGVNbywgLi4ubW8gfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUNhcnRhYmxlUGFyYW1zKCk6IHZvaWQge1xuICAgICAgICBsZXQgY2FydGFibGVUZW1wbGF0ZSA9IHRoaXMuX2NhcnRhYmxlVGVtcGxhdGU7XG4gICAgICAgIGNvbnN0IGNhcnRhYmxlTW8gPSB0aGlzLl9jYXJ0YWJsZU1vO1xuICAgICAgICBjb25zdCBjYXJ0YWJsZVdvcmtmbG93RGF0YSA9IHRoaXMuX2NhcnRhYmxlV29ya2Zsb3dEYXRhO1xuICAgICAgICBpZiAodGhpcy5oYXNDYXJ0YWJsZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAvLyBUT0RPIHVwZGF0ZSBjYXJ0YWJsZSBtbztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlICYmXG4gICAgICAgICAgICBjYXJ0YWJsZU1vICYmXG4gICAgICAgICAgICB0eXBlb2YgY2FydGFibGVXb3JrZmxvd0RhdGEgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICB0aGlzLl9zZXJpYWxpemVkUmVsYXRlZE1vXG4gICAgICAgICkge1xuICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY2FydGFibGVUZW1wbGF0ZSkpO1xuICAgICAgICAgICAgY29uc3QgdmlldyA9IGNhcnRhYmxlVGVtcGxhdGUuVmlldztcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGUuRGF0YSA9IHsgTW86IHsgLi4uY2FydGFibGVNbyB9IH07XG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlLldvcmtmbG93ID0gY2FydGFibGVXb3JrZmxvd0RhdGEgPT09ICcnID8gbnVsbCA6IEpTT04ucGFyc2UoY2FydGFibGVXb3JrZmxvd0RhdGEpO1xuICAgICAgICAgICAgaWYgKCF2aWV3LkV4dHJhSnNvblByb3ApIHtcbiAgICAgICAgICAgICAgICB2aWV3LkV4dHJhSnNvblByb3AgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZpZXcuRXh0cmFKc29uUHJvcC5Jc1NpbXBsZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuY2FydGFibGVQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgZm9ybVNldHRpbmc6IGNhcnRhYmxlVGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgbW9JZDogY2FydGFibGVNby5JZCxcbiAgICAgICAgICAgICAgICB0eXBlRGVmSWQ6IGNhcnRhYmxlTW8uJFR5cGVEZWZJZCxcbiAgICAgICAgICAgICAgICB2aWV3SWQ6IHZpZXcuVHlwZVZpZXdJZCxcbiAgICAgICAgICAgICAgICBpbkRpYWxvZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgbG9hZEFjdGl2aXR5VmlldzogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaGFzQ2FydGFibGVUZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9uZWVkVG9TYXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gY29uc3QgaXNDaGlsZE5vZGUgPSAodGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoZS50YXJnZXQpO1xuICAgICAgICAvLyBpZiAoaXNDaGlsZE5vZGUpIHtcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gfVxuICAgICAgICBjb25zdCB0ID0gdGhpcy5pbmxpbmVFZGl0TW9kZSAmJiB0aGlzLl9oYXNGb3JtUGFuZWxTZXJ2aWNlO1xuICAgICAgICBpZiAoIXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1QYW5lbEN0cmxyICYmIHRoaXMuZm9ybVBhbmVsQ3RybHIuSXNNb0NoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NoZWNrZm9jdXNPdXRGcm9tUm93KHRhcmdldCk6IHZvaWQge1xuICAgICAgICAvLyBjb25zdCBmb2N1c2FibGU6IE5vZGVMaXN0ID0gdGhpcy5fZm9jdXNhYmxlQ29udHJvbHM7XG4gICAgICAgIC8vIGxldCBmb3VuZEluRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgICAgIC8vIGZvY3VzYWJsZS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAoYyA9PT0gdGFyZ2V0KSB7XG4gICAgICAgIC8vICAgICAgICAgZm91bmRJbkZvY3VzYWJsZSA9IHRydWU7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAvLyBpZiAoIWZvdW5kSW5Gb2N1c2FibGUpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuX3NhdmVFZGl0ZWRNbyQubmV4dCgnVEFCJyk7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9yb3dDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgIC8vICAgICByZXR1cm47XG4gICAgICAgIC8vIH1cblxuICAgICAgICB0aGlzLnJvd0NoZWNrLmVtaXQoeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWlzZVdvcmtmbG93U2hhcmVCdXR0b25zKGlzQ2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jYXJ0YWJsZVBhcmFtcykge1xuICAgICAgICAgICAgY29uc3QgY2hvaWNlTGlzdDogQ2hvaWNlRGVmW10gPSB0aGlzLmNhcnRhYmxlUGFyYW1zLmZvcm1TZXR0aW5nPy5Xb3JrZmxvdz8uQ2hvaWNlTGlzdDtcbiAgICAgICAgICAgIGlmIChjaG9pY2VMaXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NoYXJlQnV0dG9ucy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYW5lbEN0cmxyOiB0aGlzLl9jYXJ0YWJsZUZvcm1SZWYuZm9ybVBhbmVsQ3RybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vOiB0aGlzLm1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZDogaXNDaGVja2VkXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9oYW5kbGVWYWx1ZUNoYW5nZShmb3JtUGFuZWxDdHJsLCBmaWVsZEN0cmxyKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Zvcm1wYW5lbFZhbHVlQ2hhbmdlZCQubmV4dChmaWVsZEN0cmxyPy5TZXR0aW5nPy5Db250cm9sTmFtZSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc3luY01vKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBzeW5jV2l0aEZvcm1wYW5lbE1vID0gdGhpcy5tbztcbiAgICAgICAgY29uc3QgX2lzQ2hlY2tlZCA9IHRoaXMubW8uJElzQ2hlY2tlZDtcbiAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHJNbyA9IHRoaXMuZm9ybVBhbmVsQ3RybHIuTW87XG4gICAgICAgIHRoaXMuX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhmb3JtUGFuZWxDdHJsck1vLCBzeW5jV2l0aEZvcm1wYW5lbE1vKTtcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJE9yaWdpbmFsVmFsdWVzJ10gPSBmb3JtUGFuZWxDdHJsck1vWyckT3JpZ2luYWxWYWx1ZXMnXTtcbiAgICAgICAgc3luY1dpdGhGb3JtcGFuZWxNb1snJEZpZWxkRGljdCddID0gZm9ybVBhbmVsQ3RybHJNb1snJEZpZWxkRGljdCddO1xuICAgICAgICBzeW5jV2l0aEZvcm1wYW5lbE1vWyckU3RhdGUnXSA9IGZvcm1QYW5lbEN0cmxyTW9bJyRTdGF0ZSddOyAvLyB0aGlzIGFkZCBiZWNhdXNlIGlmIHdlIGVkaXQgdW5jaGFuZ2VkIG1vIGl0IGRvZXMgbm90IHJlZmxlY3QgdG8gbW8gb2YgdWx2LlxuICAgICAgICB0aGlzLm1vID0geyAuLi5zeW5jV2l0aEZvcm1wYW5lbE1vIH07XG4gICAgICAgIHRoaXMubW8uJElzQ2hlY2tlZCA9IF9pc0NoZWNrZWQ7XG4gICAgICAgIHJldHVybiBmcm9tKFByb21pc2UucmVzb2x2ZSgpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZVdpdGhPcmlnaW5hbFZhbHVlcyhzb3VyY2U6IE1ldGFvYmplY3REYXRhTW9kZWwsIGRlc3Q6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXMoc291cmNlLiRPcmlnaW5hbFZhbHVlcykuZm9yRWFjaCgoYzogYW55KSA9PiB7XG4gICAgICAgICAgICBkZXN0W2NdID0gc291cmNlW2NdO1xuICAgICAgICAgICAgaWYgKHNvdXJjZVtjICsgJyRDYXB0aW9uJ10pIHtcbiAgICAgICAgICAgICAgICBkZXN0W2MgKyAnJENhcHRpb24nXSA9IHNvdXJjZVtjICsgJyRDYXB0aW9uJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc291cmNlW2MgKyAnJEljb24nXSkge1xuICAgICAgICAgICAgICAgIGRlc3RbYyArICckSWNvbiddID0gc291cmNlW2MgKyAnJEljb24nXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWlzZUZvcm1QYW5lbFZhbHVlQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UuZW1pdCh7IG1vOiB0aGlzLm1vIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaGFuZGxlQnJ1bGVTaG93TWVzc2FnZUFjdGlvbihhY3Rpb246IEJydWxlQWN0aW9uTWVzc2FnZSk6IHZvaWQge1xuICAgICAgICBhY3Rpb24uTWVzc2FnZUV4cHJlc3Npb25IdG1sID0gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGFjdGlvbi5NZXNzYWdlRXhwcmVzc2lvbik7XG4gICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID0gYWN0aW9uO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUZvcm1QYW5lbEN0cmxyKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCB0eXBlRGVmSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtUGFuZWxDdHJscikge1xuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsciA9IGNyZWF0ZUdyaWRFZGl0b3JGb3JtUGFuZWwoXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtU2V0dGluZyxcbiAgICAgICAgICAgICAgICB7IC4uLm1vIH0sXG4gICAgICAgICAgICAgICAgdHlwZURlZklkLFxuICAgICAgICAgICAgICAgIHRoaXMuZXh0cmFSZWxhdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLmluUm93LFxuICAgICAgICAgICAgICAgIHRoaXMuVWx2TWFpbkN0cmxyXG4gICAgICAgICAgICAgICAgLy8gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcy5jb250ZXh0LlNldHRpbmcsICdFeHRyYS5SZWxhdGlvbicpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuSW5saW5lRWRpdEluUmVwb3J0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5vbih7XG4gICAgICAgICAgICBicnVsZVNob3dNZXNzYWdlQWN0aW9uOiB0aGlzLl9oYW5kbGVCcnVsZVNob3dNZXNzYWdlQWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWx1ZUNoYW5nZTogdGhpcy5faGFuZGxlVmFsdWVDaGFuZ2UuYmluZCh0aGlzKVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtUGFuZWxDdHJscjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2xvYWRBbmRDcmVhdGVGb3JtUGFuZWxDdHJscigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybVNldHRpbmdEYXRhID0gdGhpcy5mb3JtU2V0dGluZy5EYXRhO1xuICAgICAgICBjb25zdCBmb3JtTW8gPSB7XG4gICAgICAgICAgICAuLi50aGlzLm1vLFxuICAgICAgICAgICAgJEZpZWxkRGljdDogZm9ybVNldHRpbmdEYXRhLk1vLiRGaWVsZERpY3QsXG4gICAgICAgICAgICAkVHlwZURlZklkOiBmb3JtU2V0dGluZ0RhdGEuTW8uJFR5cGVEZWZJZCxcbiAgICAgICAgICAgICRPcmlnaW5hbFZhbHVlczoge31cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuX2Zvcm1QYW5lbExvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRWYWx1ZShmb3JtTW8pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY3JlYXRlRm9ybVBhbmVsQ3RybHIoZm9ybU1vLCB0aGlzLnR5cGVEZWZJZCk7XG4gICAgICAgIHRoaXMuX2Zvcm1QYW5lbExvYWRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyID0gdGhpcy5mb3JtUGFuZWxDdHJscjtcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5VbHZNb0RhdGFMaXN0Q291bnQgPSB0aGlzLm1vRGF0YUxpc3RDb3VudCAtIDE7XG4gICAgICAgIGZvcm1QYW5lbEN0cmxyLkxvYWRBbmRDcmVhdGUobnVsbCwgZmFsc2UsIGZhbHNlLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21Gb3JtUGFuZWxVaSA9IGZvcm1QYW5lbEN0cmxyLkFkYXB0ZXIuQ29udHJvbDtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE1vID0gdGhpcy5fcGFyZW50Rm9ybVBhbmVsU2VydmljZSA/IHRoaXMuX3BhcmVudEZvcm1QYW5lbFNlcnZpY2UubW8gOiBudWxsO1xuICAgICAgICAgICAgaWYgKHRoaXMuZXh0cmFSZWxhdGlvbiAmJiBwYXJlbnRNbyAmJiB0aGlzLmV4dHJhUmVsYXRpb24uUmVsYXRpb25UeXBlID09PSAnQ29tcG9zaXRpb24nKSB7XG4gICAgICAgICAgICAgICAgZm9ybVBhbmVsQ3RybHIuTW8uU2V0RlZhbHVlKHRoaXMuZXh0cmFSZWxhdGlvbi5QYXJlbnRGZE5hbWUsIHBhcmVudE1vKTtcbiAgICAgICAgICAgICAgICAvLyBuZXdGb3JtU2V0dGluZ3MuRGF0YS5Nb1tyZWxhdGlvbi5QYXJlbnRGZE5hbWVdID0gcGFyZW50TW8uR2V0Q2hhbmdlZE9iamVjdCgpO1xuICAgICAgICAgICAgICAgIC8vIG5ld0Zvcm1TZXR0aW5ncy5EYXRhLk1vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0uJFN0YXRlID0gcGFyZW50TW8uJFN0YXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VzdG9tRm9ybVBhbmVsVWkuUmVmcmVzaCA9ICgpID0+IHt9O1xuICAgICAgICAgICAgdGhpcy5fZm9ybVBhbmVsU2VydmljZS5jb250ZXh0ID0gZm9ybVBhbmVsQ3RybHIuQWRhcHRlci5Db250cm9sO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9yZXNldFNhdmluZ1N0YXRlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJydWxlQWN0aW9uTWVzc2FnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2F2ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldFNhdmluZ1N0YXRlKGVycik6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2F2ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2lubGluZUVkaXRTYXZlRm9ybVBhbmVsKHJlYXNvbik6IFByb21pc2U8eyByZWFzb246IFJlYXNvblRvU2F2ZTsgc3VjY2VlZDogYm9vbGVhbjsgc2F2ZWQ6IGJvb2xlYW4gfT4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx7IHJlYXNvbjogUmVhc29uVG9TYXZlOyBzdWNjZWVkOiBib29sZWFuOyBzYXZlZDogYm9vbGVhbiB9PigocmVzb2x2ZSwgXykgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZvcm1QYW5lbEN0cmxyLklzTW9DaGFuZ2VkKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBzdGF0ZSBvZiBtbyBpcyBuZXcgb3IgbW9kaWRmaWVkIHRoZW4gaXQgbmVlZHMgdG8gdXBkYXRlXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHJlYXNvbiwgc3VjY2VlZDogdHJ1ZSwgc2F2ZWQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHJNbyA9IHRoaXMuZm9ybVBhbmVsQ3RybHIuTW87XG4gICAgICAgICAgICBkZWxldGUgZm9ybVBhbmVsQ3RybHJNby5qc29uO1xuICAgICAgICAgICAgLy8gdGhpcy5zYXZpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLm1vLiRJbmxpbmVNb0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZWRpdEZvcm1QYW5lbFNhdmUuZW1pdCh0aGlzLm1vKTtcbiAgICAgICAgICAgIHRoaXMuYnJ1bGVBY3Rpb25NZXNzYWdlID0gbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLm5vU2F2ZUlubGluZUVkaXRJblNlcnZlcikge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZWFzb24sIHN1Y2NlZWQ6IHRydWUsIHNhdmVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9ybVBhbmVsQ3RybHIuU2F2ZShmYWxzZSwgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsci5TZXRJc0NoYW5nZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldFNhdmluZ1N0YXRlKGVycik7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHJlYXNvbiwgc3VjY2VlZDogdHJ1ZSwgc2F2ZWQ6IHRydWUgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -8721,38 +8721,35 @@ class ReportViewBaseComponent extends BaseComponent {
8721
8721
  this.fieldDict = fieldDict;
8722
8722
  }
8723
8723
  }
8724
+ onActionListClick(mo, index, itemId) {
8725
+ if (itemId === 'Show') {
8726
+ this.onRowClick({ mo, index });
8727
+ return;
8728
+ }
8729
+ this.onRowCheck({ mo, index });
8730
+ const editBtn = this.toolbarButtons.find((tb) => tb?.itemId === itemId);
8731
+ if (editBtn) {
8732
+ editBtn.handler(editBtn);
8733
+ }
8734
+ }
8724
8735
  _createActionButtons() {
8725
8736
  const buttons = [];
8726
8737
  if (this.hasInlineEditButton) {
8727
8738
  buttons.push({
8728
8739
  glyph: 'edit',
8740
+ itemId: 'Edit',
8729
8741
  navigation: false,
8730
8742
  role: 'presentation',
8731
- closeOnClick: true,
8732
- handler: (e) => {
8733
- const { mo, index } = e;
8734
- this.onRowCheck({ mo, index });
8735
- const editBtn = this.toolbarButtons.find((tb) => tb?.itemId === 'Edit');
8736
- if (editBtn) {
8737
- editBtn.handler(editBtn);
8738
- }
8739
- }
8743
+ closeOnClick: true
8740
8744
  });
8741
8745
  }
8742
8746
  if (this.hasInlineDeleteButton) {
8743
8747
  buttons.push({
8744
8748
  glyph: 'delete',
8745
8749
  navigation: false,
8750
+ itemId: 'Delete',
8746
8751
  role: 'presentation',
8747
- closeOnClick: true,
8748
- handler: (e) => {
8749
- const { mo, index } = e;
8750
- this.onRowCheck({ mo, index });
8751
- const deleteBtn = this.toolbarButtons.find((tb) => tb?.itemId === 'Delete');
8752
- if (deleteBtn) {
8753
- deleteBtn.handler(deleteBtn);
8754
- }
8755
- }
8752
+ closeOnClick: true
8756
8753
  });
8757
8754
  }
8758
8755
  if (this.showViewButton) {
@@ -8760,11 +8757,8 @@ class ReportViewBaseComponent extends BaseComponent {
8760
8757
  glyph: this.navigationArrow,
8761
8758
  navigation: true,
8762
8759
  role: 'presentation',
8763
- closeOnClick: true,
8764
- handler: (e) => {
8765
- const { mo, index } = e;
8766
- this.onRowClick({ mo, index });
8767
- }
8760
+ itemId: 'Show',
8761
+ closeOnClick: true
8768
8762
  });
8769
8763
  }
8770
8764
  return buttons;
@@ -10510,6 +10504,7 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
10510
10504
  this._parentFormPanelService = _parentFormPanelService;
10511
10505
  this._formPanelService = _formPanelService;
10512
10506
  this._ulvMainService = _ulvMainService;
10507
+ this.actionListClick = new EventEmitter();
10513
10508
  this.events = new EventEmitter();
10514
10509
  // @HostListener('document:mousedown', ['$event'])
10515
10510
  // onMouseDown(e): void {
@@ -10904,7 +10899,7 @@ class BaseViewItemPropsComponent extends BaseViewPropsComponent {
10904
10899
  });
10905
10900
  }
10906
10901
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BaseViewItemPropsComponent, deps: [{ token: i0.ElementRef }, { token: i4.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: MoReportValuePipe }, { token: FormPanelService, optional: true, skipSelf: true }, { token: FormPanelService, optional: true, self: true }, { token: UlvMainService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
10907
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: BaseViewItemPropsComponent, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isdirty: "isdirty", isChecked: "isChecked", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inDialog: "inDialog", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10902
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: BaseViewItemPropsComponent, selector: "bnrc-base-view-item-props", inputs: { checkboxComponent: "checkboxComponent", mo: "mo", moDataListCount: "moDataListCount", index: "index", last: "last", isdirty: "isdirty", isChecked: "isChecked", showViewButton: "showViewButton", isNewInlineMo: "isNewInlineMo", extraRelation: "extraRelation", hideOpenIcon: "hideOpenIcon", inDialog: "inDialog", isMultiSelect: "isMultiSelect", rowIndicator: "rowIndicator", groupSummary: "groupSummary", isLastChildGroup: "isLastChildGroup", showRowNumber: "showRowNumber", rowNumber: "rowNumber", coloringRow: "coloringRow", noSaveInlineEditInServer: "noSaveInlineEditInServer", rowIndicatorColor: "rowIndicatorColor", UlvMainCtrlr: "UlvMainCtrlr", fieldDict: "fieldDict", actionList: "actionList", serializedRelatedMo: "serializedRelatedMo", cartableTemplate: "cartableTemplate", cartableMo: "cartableMo", cartableWorkflowData: "cartableWorkflowData" }, outputs: { actionListClick: "actionListClick", events: "events" }, viewQueries: [{ propertyName: "_cartableFormRef", first: true, predicate: ["cartableFormRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10908
10903
  }
10909
10904
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BaseViewItemPropsComponent, decorators: [{
10910
10905
  type: Component,
@@ -10923,7 +10918,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
10923
10918
  type: Self
10924
10919
  }] }, { type: UlvMainService, decorators: [{
10925
10920
  type: Optional
10926
- }] }], propDecorators: { events: [{
10921
+ }] }], propDecorators: { actionListClick: [{
10922
+ type: Output
10923
+ }], events: [{
10927
10924
  type: Output
10928
10925
  }], _cartableFormRef: [{
10929
10926
  type: ViewChild,
@@ -10974,6 +10971,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
10974
10971
  type: Input
10975
10972
  }], fieldDict: [{
10976
10973
  type: Input
10974
+ }], actionList: [{
10975
+ type: Input
10977
10976
  }], serializedRelatedMo: [{
10978
10977
  type: Input
10979
10978
  }], cartableTemplate: [{