tnx-shared 5.3.188 → 5.3.190
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/tnx-shared.umd.js +123 -59
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/list-base.d.ts +3 -0
- package/classes/base/list-base.d.ts.map +1 -1
- package/classes/base/list-component-base.d.ts +1 -1
- package/classes/base/list-component-base.d.ts.map +1 -1
- package/classes/form-schema.d.ts +1 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/components/common-search-form/common-search-form.component.d.ts +1 -0
- package/components/common-search-form/common-search-form.component.d.ts.map +1 -1
- package/components/settings/settings-authorize-button/settings-authorize-button.component.d.ts.map +1 -1
- package/esm2015/classes/base/list-base.js +35 -3
- package/esm2015/classes/base/list-component-base.js +9 -6
- package/esm2015/classes/form-schema.js +2 -1
- package/esm2015/components/common-search-form/common-search-form.component.js +31 -28
- package/esm2015/components/equation-editor/equation-editor.component.js +1 -1
- package/esm2015/components/settings/settings-authorize-button/settings-authorize-button.component.js +4 -2
- package/fesm2015/tnx-shared.js +75 -34
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/tnx-shared.metadata.json +1 -1
|
@@ -52,34 +52,8 @@ export class CommonSearchFormComponent extends DataFormBase {
|
|
|
52
52
|
this.searchBoxTooltip += `${(lstTextSearchControl.map(x => x.label)).join(', ')}`;
|
|
53
53
|
this._index = 2;
|
|
54
54
|
}
|
|
55
|
-
const totalControlPerRow = 12 / this.mdWidth;
|
|
56
55
|
if (this.isCustomGenerateSearch) {
|
|
57
|
-
this.
|
|
58
|
-
column.showLabel = false;
|
|
59
|
-
column.mdWidth = this.mdWidth;
|
|
60
|
-
column['placeholder'] = column.label;
|
|
61
|
-
if (!(column instanceof TextControlSchema) || column instanceof NumberRangeControlSchema || column instanceof DropdownControlSchema) {
|
|
62
|
-
column.onAfterChanged = (evt) => {
|
|
63
|
-
this.handleSearch(null, evt.control.field);
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
if (column instanceof NumberRangeControlSchema) {
|
|
67
|
-
this.lstNumberRangeControl.push(column.field);
|
|
68
|
-
}
|
|
69
|
-
if (column.hasOwnProperty('defaultValue') && (column instanceof DropdownControlSchema || column instanceof DateTimeControlSchema)) {
|
|
70
|
-
this.defaultValues[column.field] = column.defaultValue;
|
|
71
|
-
}
|
|
72
|
-
if (column.addToGridInfo) {
|
|
73
|
-
this.lstControlAddToGridInfo.push(column.field);
|
|
74
|
-
}
|
|
75
|
-
column.isLazyLoad = !this.parentSetting.disableLazyLoadCommonSearch && this._index > totalControlPerRow
|
|
76
|
-
&& column instanceof DropdownControlSchema && !!column.baseService && !(column.baseService instanceof MasterDataService);
|
|
77
|
-
if (column.isLazyLoad) {
|
|
78
|
-
this.lstControlLazyLoad.push(column.field);
|
|
79
|
-
}
|
|
80
|
-
this._index++;
|
|
81
|
-
});
|
|
82
|
-
this.setting.schema = this.addSearchBox(this.parentSetting.commonSchemas.sort((prev, next) => prev.order - next.order));
|
|
56
|
+
this.getFormSchemaCustom();
|
|
83
57
|
}
|
|
84
58
|
else {
|
|
85
59
|
this.setting.schema = this.genFormSchema(columnFilters);
|
|
@@ -90,6 +64,35 @@ export class CommonSearchFormComponent extends DataFormBase {
|
|
|
90
64
|
this.handleSearch();
|
|
91
65
|
}
|
|
92
66
|
}
|
|
67
|
+
getFormSchemaCustom() {
|
|
68
|
+
const totalControlPerRow = 12 / this.mdWidth;
|
|
69
|
+
this.parentSetting.commonSchemas.forEach(column => {
|
|
70
|
+
column.showLabel = false;
|
|
71
|
+
column.mdWidth = this.mdWidth;
|
|
72
|
+
column['placeholder'] = column.label;
|
|
73
|
+
if (!(column instanceof TextControlSchema) || column instanceof NumberRangeControlSchema || column instanceof DropdownControlSchema) {
|
|
74
|
+
column.onAfterChanged = (evt) => {
|
|
75
|
+
this.handleSearch(null, evt.control.field);
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (column instanceof NumberRangeControlSchema) {
|
|
79
|
+
this.lstNumberRangeControl.push(column.field);
|
|
80
|
+
}
|
|
81
|
+
if (column.hasOwnProperty('defaultValue') && (column instanceof DropdownControlSchema || column instanceof DateTimeControlSchema)) {
|
|
82
|
+
this.defaultValues[column.field] = column.defaultValue;
|
|
83
|
+
}
|
|
84
|
+
if (column.addToGridInfo) {
|
|
85
|
+
this.lstControlAddToGridInfo.push(column.field);
|
|
86
|
+
}
|
|
87
|
+
column.isLazyLoad = !this.parentSetting.disableLazyLoadCommonSearch && this._index > totalControlPerRow
|
|
88
|
+
&& column instanceof DropdownControlSchema && !!column.baseService && !(column.baseService instanceof MasterDataService);
|
|
89
|
+
if (column.isLazyLoad) {
|
|
90
|
+
this.lstControlLazyLoad.push(column.field);
|
|
91
|
+
}
|
|
92
|
+
this._index++;
|
|
93
|
+
});
|
|
94
|
+
this.setting.schema = this.addSearchBox(this.parentSetting.commonSchemas.sort((prev, next) => prev.order - next.order));
|
|
95
|
+
}
|
|
93
96
|
genFormSchema(columns) {
|
|
94
97
|
const result = [];
|
|
95
98
|
const totalControlPerRow = 12 / this.mdWidth;
|
|
@@ -328,4 +331,4 @@ CommonSearchFormComponent.propDecorators = {
|
|
|
328
331
|
onClickSearch: [{ type: Output }],
|
|
329
332
|
onAfterToggleMenuSearch: [{ type: Output }]
|
|
330
333
|
};
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXlCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBekJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxF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LENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsSCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0tBQUE7SUFHSyxpQkFBaUIsQ0FBQyxTQUFvQjs7WUFDeEMsK0VBQStFO1FBRW5GLENBQUM7S0FBQTtJQUVLLGdCQUFnQixDQUFDLElBQUk7O1lBQ3ZCLHFDQUFxQztRQUN6QyxDQUFDO0tBQUE7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEVBQUU7WUFDN0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLGtDQUFrQyxDQUFDLENBQUM7U0FDckc7SUFDTCxDQUFDOzs7WUFsVkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLDI2REFBa0Q7Z0JBRWxELFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDOzthQUN2Qzs7O1lBWjZDLFFBQVE7WUFLN0MsYUFBYTs7O21DQVNqQixTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOzZCQUN0RCxLQUFLOytCQUNMLEtBQUs7NEJBQ0wsTUFBTTtzQ0FDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFGb3JtQmFzZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWZvcm0tYmFzZSc7XG5pbXBvcnQgeyBDb250cm9sVHlwZSwgQ3VzdG9tQ29udHJvbFNjaGVtYSwgRGF0YVR5cGUsIERhdGVUaW1lQ29udHJvbFNjaGVtYSwgRGF0ZVRpbWVSYW5nZUNvbnRyb2xTY2hlbWEsIERyb3Bkb3duQ29udHJvbFNjaGVtYSwgRXZlbnREYXRhLCBGb3JtU2NoZW1hQmFzZSwgTnVtYmVyUmFuZ2VDb250cm9sU2NoZW1hLCBPcGVyYXRvciwgVGV4dENvbnRyb2xTY2hlbWEgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWluZm8nO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1hc3RlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFzdGVyLWRhdGEuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NvbW1vbi1zZWFyY2gtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbW1vbi1zZWFyY2gtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21tb25TZWFyY2hGb3JtQ29tcG9uZW50IGV4dGVuZHMgRGF0YUZvcm1CYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdjb21tb25TZWFyY2hUZW1wbGF0ZScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb21tb25TZWFyY2hUZW1wbGF0ZTogRWxlbWVudFJlZjtcbiAgICBASW5wdXQoKSB0ZW1wbGF0ZUZpbHRlcjogYW55ID0gW107XG4gICAgQElucHV0KCkgc2VhcmNoQm94VG9vbHRpcCA9ICdUw6xtIGtp4bq/bSB0aGVvIGPDoWMgdHLGsOG7nW5nOiAnO1xuICAgIEBPdXRwdXQoKSBvbkNsaWNrU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIG9uQWZ0ZXJUb2dnbGVNZW51U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBtZFdpZHRoID0gMztcbiAgICBsc3REcm9wZG93bkNvbnRyb2wgPSBbXTtcbiAgICBsc3REYXRldGltZUNvbnRyb2wgPSBbXTtcbiAgICBsc3ROdW1iZXJSYW5nZUNvbnRyb2wgPSBbXTtcbiAgICBsc3RUZXh0Q29udHJvbCA9IFtdO1xuICAgIGxzdEJvb2xDb250cm9sID0gW107XG4gICAgbHN0Q29udHJvbE5vdEluID0gW107XG4gICAgbHN0Q29udHJvbEFkZFRvR3JpZEluZm8gPSBbXTtcbiAgICBsc3RDb250cm9sTGF6eUxvYWQgPSBbXTtcbiAgICBkZWZhdWx0VmFsdWVzID0ge307XG4gICAgaXNBZGREZWZhdWx0VmFsdWVzID0gZmFsc2U7XG4gICAgbWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIgPSBuZXcgTWFwKCk7XG4gICAga2V5d29yZHMgPSAnJztcbiAgICBpc09wZW5GdWxsID0gZmFsc2U7XG4gICAgaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCA9IGZhbHNlO1xuICAgIGlzRGlzYWJsZU9wZW5GdWxsID0gZmFsc2U7XG4gICAgX2luZGV4ID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJvdGVjdGVkIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm1kV2lkdGggPSB0aGlzLnBhcmVudFNldHRpbmcubWRXaWR0aENvbW1vblNlYXJjaDtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5wYXJlbnRTZXR0aW5nLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmlsdGVyKHAgPT4gcC5hbGxvd0ZpbHRlciAmJiAhcC5maWVsZC5zdGFydHNXaXRoKCdzdHInKSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEub3JkZXIgPCBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGEub3JkZXIgPiBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGxzdFRleHRTZWFyY2hDb250cm9sID0gY29sdW1uRmlsdGVycy5maWx0ZXIocCA9PiBwLmZ1bGxUZXh0U2VhcmNoKTtcbiAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wgPSBsc3RUZXh0U2VhcmNoQ29udHJvbC5tYXAocCA9PiBwLmZpZWxkKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94VG9vbHRpcCArPSBgJHsobHN0VGV4dFNlYXJjaENvbnRyb2wubWFwKHggPT4geC5sYWJlbCkpLmpvaW4oJywgJyl9YDtcbiAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0b3RhbENvbnRyb2xQZXJSb3cgPSAxMiAvIHRoaXMubWRXaWR0aDtcbiAgICAgICAgaWYgKHRoaXMuaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRTZXR0aW5nLmNvbW1vblNjaGVtYXMuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5zaG93TGFiZWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb2x1bW4ubWRXaWR0aCA9IHRoaXMubWRXaWR0aDtcbiAgICAgICAgICAgICAgICBjb2x1bW5bJ3BsYWNlaG9sZGVyJ10gPSBjb2x1bW4ubGFiZWw7XG4gICAgICAgICAgICAgICAgaWYgKCEoY29sdW1uIGluc3RhbmNlb2YgVGV4dENvbnRyb2xTY2hlbWEpIHx8IGNvbHVtbiBpbnN0YW5jZW9mIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLm9uQWZ0ZXJDaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaChudWxsLCBldnQuY29udHJvbC5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3ROdW1iZXJSYW5nZUNvbnRyb2wucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJiAoY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERhdGVUaW1lQ29udHJvbFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWVzW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4uZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmFkZFRvR3JpZEluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RDb250cm9sQWRkVG9HcmlkSW5mby5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbHVtbi5pc0xhenlMb2FkID0gIXRoaXMucGFyZW50U2V0dGluZy5kaXNhYmxlTGF6eUxvYWRDb21tb25TZWFyY2ggJiYgdGhpcy5faW5kZXggPiB0b3RhbENvbnRyb2xQZXJSb3dcbiAgICAgICAgICAgICAgICAgICAgJiYgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hICYmICEhY29sdW1uLmJhc2VTZXJ2aWNlICYmICEoY29sdW1uLmJhc2VTZXJ2aWNlIGluc3RhbmNlb2YgTWFzdGVyRGF0YVNlcnZpY2UpO1xuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uaXNMYXp5TG9hZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSB0aGlzLmFkZFNlYXJjaEJveCh0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5zb3J0KChwcmV2LCBuZXh0KSA9PiBwcmV2Lm9yZGVyIC0gbmV4dC5vcmRlcikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYSA9IHRoaXMuZ2VuRm9ybVNjaGVtYShjb2x1bW5GaWx0ZXJzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzRGlzYWJsZU9wZW5GdWxsID0gdGhpcy5zZXR0aW5nLnNjaGVtYS5sZW5ndGggPD0gNCAmJiAhdGhpcy5fY29tbW9uU2VydmljZS5pc01vYmlsZSgpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRWYWx1ZXMpLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZ2VuRm9ybVNjaGVtYShjb2x1bW5zOiBhbnkpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSBbXTtcbiAgICAgICAgY29uc3QgdG90YWxDb250cm9sUGVyUm93ID0gMTIgLyB0aGlzLm1kV2lkdGg7XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgICAgICAgaWYgKCFjb2x1bW4uaXNJblRhYmxlIHx8ICFjb2x1bW4uaW5jbHVkZVNlbGVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbE5vdEluLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzQm9vbCA9IGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5ib29sZWFuO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5jb250cm9sVHlwZSA9PSBDb250cm9sVHlwZS5kcm9wZG93biB8fCBpc0Jvb2wgfHwgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sc3REcm9wZG93bkNvbnRyb2wucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlID0gY29sdW1uLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICAgICAgaWYgKGlzQm9vbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdEJvb2xDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IFt7IGlkOiB0cnVlLCB0ZW46ICdDw7MnIH0sIHsgaWQ6IGZhbHNlLCB0ZW46ICdLaMO0bmcnIH1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJpbmRpbmdGaWx0ZXJzICYmIGNvbHVtbi5iaW5kaW5nRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5iaW5kaW5nRmlsdGVycy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBDb250cm9sQmluZGluZ0ZpbHRlci5zZXQoaXRlbS5maWVsZCwgY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uYmFzZVNlcnZpY2UgfHwgKGRhdGFTb3VyY2UgJiYgZGF0YVNvdXJjZS5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xhenlMb2FkID0gIXRoaXMucGFyZW50U2V0dGluZy5kaXNhYmxlTGF6eUxvYWRDb21tb25TZWFyY2ggJiYgdGhpcy5faW5kZXggPiB0b3RhbENvbnRyb2xQZXJSb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICYmICEhY29sdW1uLmJhc2VTZXJ2aWNlICYmICEoY29sdW1uLmJhc2VTZXJ2aWNlIGluc3RhbmNlb2YgTWFzdGVyRGF0YVNlcnZpY2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNMYXp5TG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RDb250cm9sTGF6eUxvYWQucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGNvbHVtbi5wbGFjZWhvbGRlciA/PyBgQ2jhu41uICR7Y29sdW1uLmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogIWNvbHVtbi5zaW5nbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWRXaWR0aDogdGhpcy5tZFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMYXp5TG9hZDogaXNMYXp5TG9hZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWQ6IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuYm9vbGVhbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucGFyZW50TW9kZWxbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5zaW5nbGUgPyBldnQudmFsdWUuaWQgPz8gZXZ0LnZhbHVlIDogZXZ0LnZhbHVlLm1hcChwID0+IHAuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiaW5kaW5nRmlsdGVyVmFsID0gdGhpcy5tYXBDb250cm9sQmluZGluZ0ZpbHRlci5nZXQoY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmluZGluZ0ZpbHRlclZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2dC52YWx1ZSB8fCBldnQudmFsdWUubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbHNbYmluZGluZ0ZpbHRlclZhbF0uX2NvbXBvbmVudC5maWx0ZXJGcm9tUGFyZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbHNbYmluZGluZ0ZpbHRlclZhbF0uX2NvbXBvbmVudC5fZ2V0RGF0YVNvdXJjZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoIWNvbHVtbi5pbmNsdWRlU2VsZWN0IHx8ICFjb2x1bW4uaXNJblRhYmxlKSAmJiAhY29sdW1uLmZvcmNlTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRDb2x1bW46IGFueSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogY29sdW1uLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFt1bmRlZmluZWQsIHVuZGVmaW5lZF0sXG4gICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29sdW1uLmRhdGFUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kYXRldGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93SWNvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ub25DaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBldnQuc291cmNlRXZlbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goZXZ0LnBhcmVudE1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uc2hvd1RpbWUgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuZGF0ZXRpbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRGF0ZVRpbWVSYW5nZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdERhdGV0aW1lQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5pbnQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuaW50V2l0aG91dE1hc2s6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGVjaW1hbDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5jdXJyZW5jeTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5tYXNrVHlwZSA9IGNvbHVtbi5kYXRhVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5tYXggPSA5OTk5OTk5OTk5OTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5wdXNoKGFkZENvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFNlYXJjaEJveChyZXN1bHQuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICB9XG5cbiAgICBhZGRTZWFyY2hCb3goY29sdW1ucykge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgcmV0dXJuIDxGb3JtU2NoZW1hQmFzZVtdPmNvbHVtbnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VhcmNoQm94ID0gbmV3IEN1c3RvbUNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgZmllbGQ6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGxhYmVsOiAnVOG7qyBraMOzYScsXG4gICAgICAgICAgICBmdWxsTGFiZWw6ICdU4burIGtow7NhJyxcbiAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGgsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpbmRleCA9IE51bWJlcigxMiAvIHRoaXMubWRXaWR0aCkgLSAxO1xuICAgICAgICBpZiAodGhpcy5fY29tbW9uU2VydmljZS5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICBjb2x1bW5zLnNwbGljZSgwLCAwLCBzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbHVtbnMubGVuZ3RoIDwgaW5kZXgpIHtcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29sdW1ucy5zcGxpY2UoaW5kZXgsIDAsIHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDxGb3JtU2NoZW1hQmFzZVtdPmNvbHVtbnM7XG4gICAgfVxuXG4gICAgaGFuZGxlU2VhcmNoKGRhdGE/OiBhbnksIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckZ1bGxUZXh0U2VhcmNoID0gW107XG4gICAgICAgIGlmICh0aGlzLmtleXdvcmRzICYmIHRoaXMubHN0VGV4dENvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVyVGV4dCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5sc3RUZXh0Q29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGxzdEZpbHRlclRleHQucHVzaCh0aGlzLm5ld0ZpbHRlcihpdGVtLCBPcGVyYXRvci5jb250YWluLCB0aGlzLmtleXdvcmRzKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpbHRlckZ1bGxUZXh0U2VhcmNoLnB1c2gobmV3IEZpbHRlcih7IGxvZ2ljOiAnb3InLCBmaWx0ZXJzOiBsc3RGaWx0ZXJUZXh0IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLm1vZGVsLmRhdGE7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNBZGREZWZhdWx0VmFsdWVzICYmIE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IE9iamVjdC5hc3NpZ24oZGF0YSwgdGhpcy5kZWZhdWx0VmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWRkRGVmYXVsdFZhbHVlcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJzID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRoaXMudGVtcGxhdGVGaWx0ZXIsIGRhdGEpO1xuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVyQWRkQ3VzdG9tID0gbHN0RmlsdGVycy5maWx0ZXIocCA9PiB0aGlzLmxzdENvbnRyb2xBZGRUb0dyaWRJbmZvLmluY2x1ZGVzKHAuZmllbGQpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByczogYW55ID0ge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maWx0ZXJGdWxsVGV4dFNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmxzdEZpbHRlckFkZEN1c3RvbV0sXG4gICAgICAgICAgICAgICAgICAgIGRhdGFGb3JtOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHM6IHRoaXMua2V5d29yZHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJzLmZpZWxkQWN0aW9uID0gZmllbGQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25DbGlja1NlYXJjaC5lbWl0KHJzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5sc3REcm9wZG93bkNvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sc3REcm9wZG93bkNvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkoaXRlbSkgfHwgKCFkYXRhW2l0ZW1dIHx8IGRhdGFbaXRlbV0ubGVuZ3RoIDwgMSkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmluZChwID0+IHAuZmllbGQgPT09IGl0ZW0pPy52YWx1ZUZpZWxkIHx8ICdpZCc7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFbaXRlbV0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV0gPSBkYXRhW2l0ZW1dLm1hcChwID0+IHBbdmFsdWVGaWVsZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXSA9IGRhdGFbaXRlbV1bdmFsdWVGaWVsZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sc3RCb29sQ29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmxzdEJvb2xDb250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGl0ZW0pIHx8ICFBcnJheS5pc0FycmF5KGRhdGFbaXRlbV0pKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhW2l0ZW1dLmluZGV4T2YodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dW2luZGV4XSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsc3RGaWx0ZXJzID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRoaXMudGVtcGxhdGVGaWx0ZXIsIGRhdGEpO1xuICAgICAgICBsc3RGaWx0ZXJzID0gWy4uLmxzdEZpbHRlcnMsIC4uLmZpbHRlckZ1bGxUZXh0U2VhcmNoXTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBsc3RGaWx0ZXJzLmZpbHRlcihwID0+ICF0aGlzLmxzdENvbnRyb2xOb3RJbi5pbmNsdWRlcyhwLmZpZWxkKSksXG4gICAgICAgICAgICBkYXRhRm9ybToge1xuICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAga2V5d29yZHM6IHRoaXMua2V5d29yZHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICByZXN1bHQuZmllbGRBY3Rpb24gPSBmaWVsZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2xpY2tTZWFyY2guZW1pdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGNsZWFyRmlsdGVyKCkge1xuICAgICAgICBmb3IgKGNvbnN0IHAgaW4gdGhpcy5mb3JtQ29udHJvbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZvcm1Db250cm9sc1twXTtcbiAgICAgICAgICAgIGxldCByZXNldFZhbHVlOiBhbnk7XG4gICAgICAgICAgICBpZiAodGhpcy5sc3REcm9wZG93bkNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkgJiYgaXRlbS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHJlc2V0VmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpIHx8IHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRWYWx1ZSA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zZXRNb2RlbFZhbHVlKGl0ZW0uZmllbGQsIHJlc2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtY2FsZW5kYXInKSkuZm9yRWFjaChlbCA9PiBlbFsndmFsdWUnXSA9ICcnKTtcbiAgICAgICAgdGhpcy5rZXl3b3JkcyA9IG51bGw7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlTWVudVNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5pc09wZW5GdWxsID0gIXRoaXMuaXNPcGVuRnVsbDtcbiAgICAgICAgaWYgKHRoaXMubHN0Q29udHJvbExhenlMb2FkLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyTGF6eUxvYWREcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25BZnRlclRvZ2dsZU1lbnVTZWFyY2guZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBhc3luYyB0cmlnZ2VyTGF6eUxvYWREcm9wZG93bigpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5mb3JFYWNoKGNvbnRyb2wgPT4gcHJvbWlzZXMucHVzaCh0aGlzLmZvcm1Db250cm9sc1tjb250cm9sXS5fY29tcG9uZW50Ll9nZXREYXRhU291cmNlKCkpKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIH1cblxuXG4gICAgYXN5bmMgb25Gb3JtSW5pdGlhbGl6ZWQoZm9ybUV2ZW50OiBFdmVudERhdGEpIHtcbiAgICAgICAgLy8gdGnhu4FuIHjhu60gbMO9IGThu68gbGnhu4d1ICh2w60gZOG7pSB04buVbmcgaOG7o3AgZGF0YXNvdXJjZSksIHRyxrDhu5tjIGtoaSBn4buNaSBhcGkgZ2V0IGRldGFpbFxuXG4gICAgfVxuXG4gICAgYXN5bmMgbW9kaWZ5RGV0YWlsRGF0YShkYXRhKSB7XG4gICAgICAgIC8vIHjhu60gbMO9IGThu68gbGnhu4d1IGzhuqV5IHThu6sgZ2V0IGRldGFpbCB24buBXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5jb21tb25TZWFyY2hUZW1wbGF0ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0OjEwMCU7bWFyZ2luLWJvdHRvbTogLTlweDsnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXlCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBekJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxF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LENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEgsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDakMsQ0FBQztLQUFBO0lBR0ssaUJBQWlCLENBQUMsU0FBb0I7O1lBQ3hDLCtFQUErRTtRQUVuRixDQUFDO0tBQUE7SUFFSyxnQkFBZ0IsQ0FBQyxJQUFJOztZQUN2QixxQ0FBcUM7UUFDekMsQ0FBQztLQUFBO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixFQUFFO1lBQzdDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO1NBQ3JHO0lBQ0wsQ0FBQzs7O1lBclZKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QiwyNkRBQWtEO2dCQUVsRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQVo2QyxRQUFRO1lBSzdDLGFBQWE7OzttQ0FTakIsU0FBUyxTQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs2QkFDdEQsS0FBSzsrQkFDTCxLQUFLOzRCQUNMLE1BQU07c0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhRm9ybUJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1mb3JtLWJhc2UnO1xuaW1wb3J0IHsgQ29udHJvbFR5cGUsIEN1c3RvbUNvbnRyb2xTY2hlbWEsIERhdGFUeXBlLCBEYXRlVGltZUNvbnRyb2xTY2hlbWEsIERhdGVUaW1lUmFuZ2VDb250cm9sU2NoZW1hLCBEcm9wZG93bkNvbnRyb2xTY2hlbWEsIEV2ZW50RGF0YSwgRm9ybVNjaGVtYUJhc2UsIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSwgT3BlcmF0b3IsIFRleHRDb250cm9sU2NoZW1hIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBNYXN0ZXJEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21hc3Rlci1kYXRhLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjb21tb24tc2VhcmNoLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbW1vbi1zZWFyY2gtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VhcmNoRm9ybUNvbXBvbmVudCBleHRlbmRzIERhdGFGb3JtQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnY29tbW9uU2VhcmNoVGVtcGxhdGUnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY29tbW9uU2VhcmNoVGVtcGxhdGU6IEVsZW1lbnRSZWY7XG4gICAgQElucHV0KCkgdGVtcGxhdGVGaWx0ZXI6IGFueSA9IFtdO1xuICAgIEBJbnB1dCgpIHNlYXJjaEJveFRvb2x0aXAgPSAnVMOsbSBraeG6v20gdGhlbyBjw6FjIHRyxrDhu51uZzogJztcbiAgICBAT3V0cHV0KCkgb25DbGlja1NlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvbkFmdGVyVG9nZ2xlTWVudVNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgbWRXaWR0aCA9IDM7XG4gICAgbHN0RHJvcGRvd25Db250cm9sID0gW107XG4gICAgbHN0RGF0ZXRpbWVDb250cm9sID0gW107XG4gICAgbHN0TnVtYmVyUmFuZ2VDb250cm9sID0gW107XG4gICAgbHN0VGV4dENvbnRyb2wgPSBbXTtcbiAgICBsc3RCb29sQ29udHJvbCA9IFtdO1xuICAgIGxzdENvbnRyb2xOb3RJbiA9IFtdO1xuICAgIGxzdENvbnRyb2xBZGRUb0dyaWRJbmZvID0gW107XG4gICAgbHN0Q29udHJvbExhenlMb2FkID0gW107XG4gICAgZGVmYXVsdFZhbHVlcyA9IHt9O1xuICAgIGlzQWRkRGVmYXVsdFZhbHVlcyA9IGZhbHNlO1xuICAgIG1hcENvbnRyb2xCaW5kaW5nRmlsdGVyID0gbmV3IE1hcCgpO1xuICAgIGtleXdvcmRzID0gJyc7XG4gICAgaXNPcGVuRnVsbCA9IGZhbHNlO1xuICAgIGlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSBmYWxzZTtcbiAgICBpc0Rpc2FibGVPcGVuRnVsbCA9IGZhbHNlO1xuICAgIF9pbmRleCA9IDE7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5tZFdpZHRoID0gdGhpcy5wYXJlbnRTZXR0aW5nLm1kV2lkdGhDb21tb25TZWFyY2g7XG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMucGFyZW50U2V0dGluZy5iYXNlU2VydmljZTtcbiAgICAgICAgdGhpcy5pc0N1c3RvbUdlbmVyYXRlU2VhcmNoID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbW1vblNjaGVtYXMubGVuZ3RoID4gMDtcbiAgICAgICAgY29uc3QgY29sdW1uRmlsdGVycyA9IHRoaXMucGFyZW50U2V0dGluZy5jb2xzLmZpbHRlcihwID0+IHAuYWxsb3dGaWx0ZXIgJiYgIXAuZmllbGQuc3RhcnRzV2l0aCgnc3RyJykpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGlmIChhLm9yZGVyIDwgYi5vcmRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhLm9yZGVyID4gYi5vcmRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICBjb25zdCBsc3RUZXh0U2VhcmNoQ29udHJvbCA9IGNvbHVtbkZpbHRlcnMuZmlsdGVyKHAgPT4gcC5mdWxsVGV4dFNlYXJjaCk7XG4gICAgICAgICAgICB0aGlzLmxzdFRleHRDb250cm9sID0gbHN0VGV4dFNlYXJjaENvbnRyb2wubWFwKHAgPT4gcC5maWVsZCk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEJveFRvb2x0aXAgKz0gYCR7KGxzdFRleHRTZWFyY2hDb250cm9sLm1hcCh4ID0+IHgubGFiZWwpKS5qb2luKCcsICcpfWA7XG4gICAgICAgICAgICB0aGlzLl9pbmRleCA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5nZXRGb3JtU2NoZW1hQ3VzdG9tKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gdGhpcy5nZW5Gb3JtU2NoZW1hKGNvbHVtbkZpbHRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlT3BlbkZ1bGwgPSB0aGlzLnNldHRpbmcuc2NoZW1hLmxlbmd0aCA8PSA0ICYmICF0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldEZvcm1TY2hlbWFDdXN0b20oKSB7XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uc2hvd0xhYmVsID0gZmFsc2U7XG4gICAgICAgICAgICBjb2x1bW4ubWRXaWR0aCA9IHRoaXMubWRXaWR0aDtcbiAgICAgICAgICAgIGNvbHVtblsncGxhY2Vob2xkZXInXSA9IGNvbHVtbi5sYWJlbDtcbiAgICAgICAgICAgIGlmICghKGNvbHVtbiBpbnN0YW5jZW9mIFRleHRDb250cm9sU2NoZW1hKSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLm9uQWZ0ZXJDaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKG51bGwsIGV2dC5jb250cm9sLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRWYWx1ZScpICYmIChjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlc1tjb2x1bW4uZmllbGRdID0gY29sdW1uLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4uYWRkVG9HcmlkSW5mbykge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbEFkZFRvR3JpZEluZm8ucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sdW1uLmlzTGF6eUxvYWQgPSAhdGhpcy5wYXJlbnRTZXR0aW5nLmRpc2FibGVMYXp5TG9hZENvbW1vblNlYXJjaCAmJiB0aGlzLl9pbmRleCA+IHRvdGFsQ29udHJvbFBlclJvd1xuICAgICAgICAgICAgICAgICYmIGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uaXNMYXp5TG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gdGhpcy5hZGRTZWFyY2hCb3godGhpcy5wYXJlbnRTZXR0aW5nLmNvbW1vblNjaGVtYXMuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICB9XG5cblxuICAgIGdlbkZvcm1TY2hlbWEoY29sdW1uczogYW55KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gW107XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIGlmICghY29sdW1uLmlzSW5UYWJsZSB8fCAhY29sdW1uLmluY2x1ZGVTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xOb3RJbi5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2wgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuYm9vbGVhbjtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbFR5cGUgPT0gQ29udHJvbFR5cGUuZHJvcGRvd24gfHwgaXNCb29sIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IGNvbHVtbi5kYXRhU291cmNlO1xuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBbeyBpZDogdHJ1ZSwgdGVuOiAnQ8OzJyB9LCB7IGlkOiBmYWxzZSwgdGVuOiAnS2jDtG5nJyB9XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5iaW5kaW5nRmlsdGVycyAmJiBjb2x1bW4uYmluZGluZ0ZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYmluZGluZ0ZpbHRlcnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuc2V0KGl0ZW0uZmllbGQsIGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJhc2VTZXJ2aWNlIHx8IChkYXRhU291cmNlICYmIGRhdGFTb3VyY2UubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXp5TG9hZCA9ICF0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoICYmIHRoaXMuX2luZGV4ID4gdG90YWxDb250cm9sUGVyUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ucGxhY2Vob2xkZXIgPz8gYENo4buNbiAke2NvbHVtbi5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6ICFjb2x1bW4uc2luZ2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGF6eUxvYWQ6IGlzTGF6eUxvYWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VkOiAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09IERhdGFUeXBlLmJvb2xlYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4uc2luZ2xlID8gZXZ0LnZhbHVlLmlkID8/IGV2dC52YWx1ZSA6IGV2dC52YWx1ZS5tYXAocCA9PiBwLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmluZGluZ0ZpbHRlclZhbCA9IHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuZ2V0KGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRpbmdGaWx0ZXJWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldnQudmFsdWUgfHwgZXZ0LnZhbHVlLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzW2JpbmRpbmdGaWx0ZXJWYWxdLl9jb21wb25lbnQuZmlsdGVyRnJvbVBhcmVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2xzW2JpbmRpbmdGaWx0ZXJWYWxdLl9jb21wb25lbnQuX2dldERhdGFTb3VyY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFjb2x1bW4uaW5jbHVkZVNlbGVjdCB8fCAhY29sdW1uLmlzSW5UYWJsZSkgJiYgIWNvbHVtbi5mb3JjZUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkQ29sdW1uOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGNvbHVtbi5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdLFxuICAgICAgICAgICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGgsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi5kYXRhVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRhdGU6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGF0ZXRpbWU6XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uc2hvd0ljb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wYXJlbnRNb2RlbFtjb2x1bW4uZmllbGRdID0gZXZ0LnNvdXJjZUV2ZW50LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKGV2dC5wYXJlbnRNb2RlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnNob3dUaW1lID0gY29sdW1uLmRhdGFUeXBlID09IERhdGFUeXBlLmRhdGV0aW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IERhdGVUaW1lUmFuZ2VDb250cm9sU2NoZW1hKGFkZENvbHVtbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3REYXRldGltZUNvbnRyb2wucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuaW50OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmludFdpdGhvdXRNYXNrOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRlY2ltYWw6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuY3VycmVuY3k6XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ubWFza1R5cGUgPSBjb2x1bW4uZGF0YVR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ubWF4ID0gOTk5OTk5OTk5OTk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ub25DaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgTnVtYmVyUmFuZ2VDb250cm9sU2NoZW1hKGFkZENvbHVtbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3ROdW1iZXJSYW5nZUNvbnRyb2wucHVzaChhZGRDb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRTZWFyY2hCb3gocmVzdWx0LnNvcnQoKHByZXYsIG5leHQpID0+IHByZXYub3JkZXIgLSBuZXh0Lm9yZGVyKSk7XG4gICAgfVxuXG4gICAgYWRkU2VhcmNoQm94KGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIHJldHVybiA8Rm9ybVNjaGVtYUJhc2VbXT5jb2x1bW5zO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlYXJjaEJveCA9IG5ldyBDdXN0b21Db250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgIGZpZWxkOiAna2V5d29yZCcsXG4gICAgICAgICAgICBsYWJlbDogJ1Thu6sga2jDs2EnLFxuICAgICAgICAgICAgZnVsbExhYmVsOiAnVOG7qyBraMOzYScsXG4gICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgbWRXaWR0aDogdGhpcy5tZFdpZHRoLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBOdW1iZXIoMTIgLyB0aGlzLm1kV2lkdGgpIC0gMTtcbiAgICAgICAgaWYgKHRoaXMuX2NvbW1vblNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgY29sdW1ucy5zcGxpY2UoMCwgMCwgc2VhcmNoQm94KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb2x1bW5zLmxlbmd0aCA8IGluZGV4KSB7XG4gICAgICAgICAgICBjb2x1bW5zLnB1c2goc2VhcmNoQm94KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKGluZGV4LCAwLCBzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiA8Rm9ybVNjaGVtYUJhc2VbXT5jb2x1bW5zO1xuICAgIH1cblxuICAgIGhhbmRsZVNlYXJjaChkYXRhPzogYW55LCBmaWVsZD86IHN0cmluZykge1xuICAgICAgICBjb25zdCBmaWx0ZXJGdWxsVGV4dFNlYXJjaCA9IFtdO1xuICAgICAgICBpZiAodGhpcy5rZXl3b3JkcyAmJiB0aGlzLmxzdFRleHRDb250cm9sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxzdEZpbHRlclRleHQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBsc3RGaWx0ZXJUZXh0LnB1c2godGhpcy5uZXdGaWx0ZXIoaXRlbSwgT3BlcmF0b3IuY29udGFpbiwgdGhpcy5rZXl3b3JkcykpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmaWx0ZXJGdWxsVGV4dFNlYXJjaC5wdXNoKG5ldyBGaWx0ZXIoeyBsb2dpYzogJ29yJywgZmlsdGVyczogbHN0RmlsdGVyVGV4dCB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5tb2RlbC5kYXRhO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWRkRGVmYXVsdFZhbHVlcyAmJiBPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRWYWx1ZXMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBPYmplY3QuYXNzaWduKGRhdGEsIHRoaXMuZGVmYXVsdFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0FkZERlZmF1bHRWYWx1ZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVycyA9IHRoaXMuX2NydWRTZXJ2aWNlLmdldEZpbHRlckZyb21UZW1wbGF0ZSh0aGlzLnRlbXBsYXRlRmlsdGVyLCBkYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IGxzdEZpbHRlckFkZEN1c3RvbSA9IGxzdEZpbHRlcnMuZmlsdGVyKHAgPT4gdGhpcy5sc3RDb250cm9sQWRkVG9HcmlkSW5mby5pbmNsdWRlcyhwLmZpZWxkKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0N1c3RvbUdlbmVyYXRlU2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcnM6IGFueSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmlsdGVyRnVsbFRleHRTZWFyY2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5sc3RGaWx0ZXJBZGRDdXN0b21dLFxuICAgICAgICAgICAgICAgICAgICBkYXRhRm9ybToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiB0aGlzLmtleXdvcmRzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBycy5maWVsZEFjdGlvbiA9IGZpZWxkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xpY2tTZWFyY2guZW1pdChycyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMubHN0RHJvcGRvd25Db250cm9sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGl0ZW0pIHx8ICghZGF0YVtpdGVtXSB8fCBkYXRhW2l0ZW1dLmxlbmd0aCA8IDEpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVGaWVsZCA9IHRoaXMucGFyZW50U2V0dGluZy5jb2xzLmZpbmQocCA9PiBwLmZpZWxkID09PSBpdGVtKT8udmFsdWVGaWVsZCB8fCAnaWQnO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhW2l0ZW1dLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dID0gZGF0YVtpdGVtXS5tYXAocCA9PiBwW3ZhbHVlRmllbGRdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV0gPSBkYXRhW2l0ZW1dW3ZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubHN0Qm9vbENvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtKSB8fCAhQXJyYXkuaXNBcnJheShkYXRhW2l0ZW1dKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YVtpdGVtXS5pbmRleE9mKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXVtpbmRleF0gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbHN0RmlsdGVycyA9IHRoaXMuX2NydWRTZXJ2aWNlLmdldEZpbHRlckZyb21UZW1wbGF0ZSh0aGlzLnRlbXBsYXRlRmlsdGVyLCBkYXRhKTtcbiAgICAgICAgbHN0RmlsdGVycyA9IFsuLi5sc3RGaWx0ZXJzLCAuLi5maWx0ZXJGdWxsVGV4dFNlYXJjaF07XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge1xuICAgICAgICAgICAgZmlsdGVyczogbHN0RmlsdGVycy5maWx0ZXIocCA9PiAhdGhpcy5sc3RDb250cm9sTm90SW4uaW5jbHVkZXMocC5maWVsZCkpLFxuICAgICAgICAgICAgZGF0YUZvcm06IHtcbiAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiB0aGlzLmtleXdvcmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgcmVzdWx0LmZpZWxkQWN0aW9uID0gZmllbGQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNsaWNrU2VhcmNoLmVtaXQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcigpIHtcbiAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMuZm9ybUNvbnRyb2xzKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5mb3JtQ29udHJvbHNbcF07XG4gICAgICAgICAgICBsZXQgcmVzZXRWYWx1ZTogYW55O1xuICAgICAgICAgICAgaWYgKHRoaXMubHN0RHJvcGRvd25Db250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpICYmIGl0ZW0ubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICByZXNldFZhbHVlID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmxzdERhdGV0aW1lQ29udHJvbC5pbmNsdWRlcyhpdGVtLmZpZWxkKSB8fCB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5pbmNsdWRlcyhpdGVtLmZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHJlc2V0VmFsdWUgPSBbdW5kZWZpbmVkLCB1bmRlZmluZWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fc2V0TW9kZWxWYWx1ZShpdGVtLmZpZWxkLCByZXNldFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LWNhbGVuZGFyJykpLmZvckVhY2goZWwgPT4gZWxbJ3ZhbHVlJ10gPSAnJyk7XG4gICAgICAgIHRoaXMua2V5d29yZHMgPSBudWxsO1xuICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgIH1cblxuICAgIHRvZ2dsZU1lbnVTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuRnVsbCA9ICF0aGlzLmlzT3BlbkZ1bGw7XG4gICAgICAgIGlmICh0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckxhenlMb2FkRHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQWZ0ZXJUb2dnbGVNZW51U2VhcmNoLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgdHJpZ2dlckxhenlMb2FkRHJvcGRvd24oKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgICAgICAgdGhpcy5sc3RDb250cm9sTGF6eUxvYWQuZm9yRWFjaChjb250cm9sID0+IHByb21pc2VzLnB1c2godGhpcy5mb3JtQ29udHJvbHNbY29udHJvbF0uX2NvbXBvbmVudC5fZ2V0RGF0YVNvdXJjZSgpKSk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgdGhpcy5sc3RDb250cm9sTGF6eUxvYWQgPSBbXTtcbiAgICB9XG5cblxuICAgIGFzeW5jIG9uRm9ybUluaXRpYWxpemVkKGZvcm1FdmVudDogRXZlbnREYXRhKSB7XG4gICAgICAgIC8vIHRp4buBbiB44butIGzDvSBk4buvIGxp4buHdSAodsOtIGThu6UgdOG7lW5nIGjhu6NwIGRhdGFzb3VyY2UpLCB0csaw4bubYyBraGkgZ+G7jWkgYXBpIGdldCBkZXRhaWxcblxuICAgIH1cblxuICAgIGFzeW5jIG1vZGlmeURldGFpbERhdGEoZGF0YSkge1xuICAgICAgICAvLyB44butIGzDvSBk4buvIGxp4buHdSBs4bqleSB04burIGdldCBkZXRhaWwgduG7gVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VhcmNoVGVtcGxhdGUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDoxMDAlO21hcmdpbi1ib3R0b206IC05cHg7Jyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -117,7 +117,7 @@ EquationEditorComponent.decorators = [
|
|
|
117
117
|
selector: 'equation-editor',
|
|
118
118
|
template: "<div class=\"ui-fluid\">\n <textarea #textarea class=\"latexContent\" placeholder=\"G\u00F5 c\u00F4ng th\u1EE9c to\u00E1n h\u1ECDc t\u1EA1i \u0111\u00E2y...\" rows=\"6\" pInputTextarea\n (ngModelChange)=\"onModelChange($event)\" [(ngModel)]=\"equationLatex\"></textarea>\n</div>\n<div class=\"preview\">\n <img #preview latex=\"true\" *ngIf=\"imageSrc\" [attr.height]=\"data.height != 0 ? data.height : null\"\n class=\"latex\" [style]=\"data.style | safeStyle\" [src]=\"imageSrc\" [alt]=\"equationLatex\" />\n</div>",
|
|
119
119
|
providers: [ComponentContextService],
|
|
120
|
-
styles: [".btn-equation{width:
|
|
120
|
+
styles: [".btn-equation{width:30px;height:30px;cursor:pointer}.preview{text-align:center;margin-top:10px;padding:0 10px}.latexContent{resize:none;border-radius:0}"]
|
|
121
121
|
},] }
|
|
122
122
|
];
|
|
123
123
|
EquationEditorComponent.ctorParameters = () => [
|
package/esm2015/components/settings/settings-authorize-button/settings-authorize-button.component.js
CHANGED
|
@@ -47,7 +47,7 @@ export class SettingAuthorizeButtonComponent extends DataListBase {
|
|
|
47
47
|
];
|
|
48
48
|
this.setting.cols = [
|
|
49
49
|
new ColumnSchemaBase({ field: 'permissionCode', sort: false, showEditLink: false }),
|
|
50
|
-
new ColumnSchemaBase({ field: 'rawText', width: '
|
|
50
|
+
new ColumnSchemaBase({ field: 'rawText', width: '300px', sort: false }),
|
|
51
51
|
new ColumnSchemaBase({ field: 'isAuthorize', dataType: DataType.boolean, width: '100px', sort: false }),
|
|
52
52
|
];
|
|
53
53
|
super.ngOnInit();
|
|
@@ -105,7 +105,9 @@ export class SettingAuthorizeButtonComponent extends DataListBase {
|
|
|
105
105
|
});
|
|
106
106
|
}
|
|
107
107
|
ngOnDestroy() {
|
|
108
|
+
var _a;
|
|
108
109
|
const buttonSetting = JSON.parse(sessionStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.BUTTON_AUTHORIZE) || '{}');
|
|
110
|
+
buttonSetting[_a = this.authorizeButtonKey] || (buttonSetting[_a] = []);
|
|
109
111
|
this.model.dataSource.forEach(rowData => {
|
|
110
112
|
var _a;
|
|
111
113
|
const buttonItem = (_a = buttonSetting[this.authorizeButtonKey]) === null || _a === void 0 ? void 0 : _a.find(p => p.code == rowData.code);
|
|
@@ -140,4 +142,4 @@ SettingAuthorizeButtonComponent.propDecorators = {
|
|
|
140
142
|
authorizeButtonKey: [{ type: Input }],
|
|
141
143
|
dataSource: [{ type: Input }]
|
|
142
144
|
};
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtYXV0aG9yaXplLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9zZXR0aW5ncy9zZXR0aW5ncy1hdXRob3JpemUtYnV0dG9uL3NldHRpbmdzLWF1dGhvcml6ZS1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBWSxVQUFVLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakwsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFTakYsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLFlBQVk7SUFLN0QsWUFDYyxTQUFtQixFQUNuQixzQkFBNkMsRUFDN0Msb0JBQXlDO1FBRW5ELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUpQLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQUM3Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBTjlDLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLFlBQU8sR0FBRyxFQUFFLENBQUM7SUFPYixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFD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QUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDM0Q7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILGNBQWMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUM3RyxDQUFDOzs7WUE5SEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLHNwQ0FBeUQ7Z0JBRXpELFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDOzthQUN2Qzs7O1lBVmtDLFFBQVE7WUFFbEMscUJBQXFCO1lBRGtHLG1CQUFtQjs7O2lDQVk5SSxLQUFLO3lCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2x1bW5TY2hlbWFCYXNlLCBDb21DdHhDb25zdGFudHMsIENvbXBvbmVudENvbnRleHRTZXJ2aWNlLCBEYXRhTGlzdEJhc2UsIERhdGFUeXBlLCBHcmlkSW5mbywgSGVpZ2h0VHlwZSwgTW9kZWxTY2hlbWEsIE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEJhc2VQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Jhc2VwZXJtaXNzaW9uLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2V0dGluZ3MtYXV0aG9yaXplLWJ1dHRvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLWF1dGhvcml6ZS1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NldHRpbmdzLWF1dGhvcml6ZS1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdBdXRob3JpemVCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBEYXRhTGlzdEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gICAgQElucHV0KCkgYXV0aG9yaXplQnV0dG9uS2V5ID0gJyc7XG4gICAgQElucHV0KCkgZGF0YVNvdXJjZSA9IFtdO1xuICAgIGFwcENvZGUgPSAnJztcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBfYmFzZVBlcm1pc3Npb25TZXJ2aWNlOiBCYXNlUGVybWlzc2lvblNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmFwcENvZGUgPSB0aGlzLl9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmFwcENvZGU7XG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX2Jhc2VQZXJtaXNzaW9uU2VydmljZTtcbiAgICAgICAgdGhpcy5jdXN0b21HZXREYXRhID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkFkdmFuY2VTZWFyY2ggPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuSGVhZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhlaWdodFR5cGUgPSBIZWlnaHRUeXBlLmR5bmFtaWM7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5PcmRlckNvbHVtbiA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5GaWx0ZXJSb3cgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkF1dGhvcml6ZUJ1dHRvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5TZXR0aW5nUGVybWlzc2lvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0dGluZy5maXhIZWlnaHRUeXBlSW5EaWFsb2cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkNoZWNrYm94ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0dGluZy5zaG93RWRpdExpbmsgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLm1vZGVsU2NoZW1hcyA9IFtcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdwZXJtaXNzaW9uQ29kZScsXG4gICAgICAgICAgICAgICAgbmFtZTogJ03DoycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyYXdUZXh0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnVMOqbicsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpc0F1dGhvcml6ZScsXG4gICAgICAgICAgICAgICAgbmFtZTogJ8SQw6MgdOG6oW8gcXV54buBbicsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdtYTEnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdNw6MnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2V0dGluZy5jb2xzID0gW1xuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2UoeyBmaWVsZDogJ3Blcm1pc3Npb25Db2RlJywgc29ydDogZmFsc2UsIHNob3dFZGl0TGluazogZmFsc2UgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7IGZpZWxkOiAncmF3VGV4dCcsIHdpZHRoOiAnMjMwcHgnLCBzb3J0OiBmYWxzZSB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHsgZmllbGQ6ICdpc0F1dGhvcml6ZScsIGRhdGFUeXBlOiBEYXRhVHlwZS5ib29sZWFuLCB3aWR0aDogJzEwMHB4Jywgc29ydDogZmFsc2UgfSksXG4gICAgICAgIF07XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxuXG5cbiAgICBnZXREYXRhQ3VzdG9tKGdyaWRJbmZvOiBHcmlkSW5mbykge1xuICAgICAgICB0aGlzLm1vZGVsLmRhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2U7XG4gICAgICAgIHRoaXMuYWZ0ZXJHZXREYXRhKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgYWRkQmFzZVBlcm1pc3Npb24ocm93RGF0YSkge1xuICAgICAgICBjb25zdCBpbnNlcnRSZXMgPSBhd2FpdCB0aGlzLl9iYXNlUGVybWlzc2lvblNlcnZpY2UucG9zdChyb3dEYXRhKTtcbiAgICAgICAgaWYgKGluc2VydFJlcy5zdWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1Row6ptIHF1eeG7gW4gdGjDoG5oIGPDtG5nJyk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURhdGFTb3VyY2UoaW5zZXJ0UmVzLmRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnQ8OzIGzhu5dpIHRyb25nIHF1w6EgdHLDrG5oIHjhu60gbMO9LCB2dWkgbMOybmcgdGjhu60gbOG6oWknKTtcbiAgICB9XG5cbiAgICBhc3luYyBkZWxldGVCYXNlUGVybWlzc2lvbihyb3dEYXRhKSB7XG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93Q29uZmlybSgnWMOhYyBuaOG6rW4geMOzYSBxdXnhu4FuJykudGhlbihhc3luYyByZXMgPT4ge1xuICAgICAgICAgICAgaWYgKCFyZXMpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGRlbGV0ZVJlcyA9IGF3YWl0IHRoaXMuX2Jhc2VQZXJtaXNzaW9uU2VydmljZS5kZWxldGUocm93RGF0YS5pZCk7XG4gICAgICAgICAgICBpZiAoZGVsZXRlUmVzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1jDs2EgcXV54buBbiB0aMOgbmggY8O0bmcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURhdGFTb3VyY2Uocm93RGF0YS5pZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKGRlbGV0ZVJlcy5tZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlRGF0YVNvdXJjZShpZDogYW55LCBpc0RlbGV0ZWQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjdXJyZW50Um93ID0gdGhpcy5tb2RlbC5kYXRhU291cmNlLmZpbmQocCA9PiBwLmlkID09IGlkKTtcbiAgICAgICAgaWYgKCFjdXJyZW50Um93KSByZXR1cm47XG4gICAgICAgIGlmIChpc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIGN1cnJlbnRSb3cuaWQgPSB0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWQoKTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Um93LmlzQXV0aG9yaXplID0gIWlzRGVsZXRlZDtcbiAgICAgICAgdGhpcy5hZnRlckdldERhdGEoKTtcbiAgICB9XG5cbiAgICBhc3luYyBhZnRlckdldERhdGEoKSB7XG4gICAgICAgIHRoaXMuX3VubWFya0xvYWRpbmcoKTtcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmRhdGFTb3VyY2UubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIHRoaXMubW9kZWwuZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaXRlbS5uYW1lID0gaXRlbS5yYXdUZXh0O1xuICAgICAgICAgICAgaXRlbS5jb2RlID0gaXRlbS5wZXJtaXNzaW9uQ29kZTtcbiAgICAgICAgICAgIGl0ZW0ubW9kdWxlQ29kZSA9IHRoaXMuYXBwQ29kZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgY29uc3QgYnV0dG9uU2V0dGluZzogYW55ID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKENvbUN0eENvbnN0YW50cy5MT0NBTFNUT1JBR0VfS0VZLkJVVFRPTl9BVVRIT1JJWkUpIHx8ICd7fScpO1xuICAgICAgICB0aGlzLm1vZGVsLmRhdGFTb3VyY2UuZm9yRWFjaChyb3dEYXRhID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbkl0ZW0gPSBidXR0b25TZXR0aW5nW3RoaXMuYXV0aG9yaXplQnV0dG9uS2V5XT8uZmluZChwID0+IHAuY29kZSA9PSByb3dEYXRhLmNvZGUpO1xuICAgICAgICAgICAgaWYgKHJvd0RhdGEuaXNBdXRob3JpemUgJiYgIWJ1dHRvbkl0ZW0pIHtcbiAgICAgICAgICAgICAgICBidXR0b25TZXR0aW5nW3RoaXMuYXV0aG9yaXplQnV0dG9uS2V5XS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHJvd0RhdGEuaWQsXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IHJvd0RhdGEuY29kZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFyb3dEYXRhLmlzQXV0aG9yaXplICYmIGJ1dHRvbkl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGJ1dHRvblNldHRpbmdbdGhpcy5hdXRob3JpemVCdXR0b25LZXldLmluZGV4T2YoYnV0dG9uSXRlbSk7XG4gICAgICAgICAgICAgICAgYnV0dG9uU2V0dGluZ1t0aGlzLmF1dGhvcml6ZUJ1dHRvbktleV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oQ29tQ3R4Q29uc3RhbnRzLkxPQ0FMU1RPUkFHRV9LRVkuQlVUVE9OX0FVVEhPUklaRSwgSlNPTi5zdHJpbmdpZnkoYnV0dG9uU2V0dGluZykpO1xuICAgIH1cbn1cbiJdfQ==
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtYXV0aG9yaXplLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9zZXR0aW5ncy9zZXR0aW5ncy1hdXRob3JpemUtYnV0dG9uL3NldHRpbmdzLWF1dGhvcml6ZS1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBWSxVQUFVLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakwsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFTakYsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLFlBQVk7SUFLN0QsWUFDYyxTQUFtQixFQUNuQixzQkFBNkMsRUFDN0Msb0JBQXlDO1FBRW5ELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUpQLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQUM3Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBTjlDLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLFlBQU8sR0FBRyxFQUFFLENBQUM7SUFPYixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFD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a0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3pFLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzNEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxjQUFjLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDN0csQ0FBQzs7O1lBL0hKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyxzcENBQXlEO2dCQUV6RCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQVZrQyxRQUFRO1lBRWxDLHFCQUFxQjtZQURrRyxtQkFBbUI7OztpQ0FZOUksS0FBSzt5QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uU2NoZW1hQmFzZSwgQ29tQ3R4Q29uc3RhbnRzLCBDb21wb25lbnRDb250ZXh0U2VydmljZSwgRGF0YUxpc3RCYXNlLCBEYXRhVHlwZSwgR3JpZEluZm8sIEhlaWdodFR5cGUsIE1vZGVsU2NoZW1hLCBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHVibGljLWFwaSc7XG5pbXBvcnQgeyBCYXNlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlcGVybWlzc2lvbi5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NldHRpbmdzLWF1dGhvcml6ZS1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5ncy1hdXRob3JpemUtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZXR0aW5ncy1hdXRob3JpemUtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nQXV0aG9yaXplQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgRGF0YUxpc3RCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICAgIEBJbnB1dCgpIGF1dGhvcml6ZUJ1dHRvbktleSA9ICcnO1xuICAgIEBJbnB1dCgpIGRhdGFTb3VyY2UgPSBbXTtcbiAgICBhcHBDb2RlID0gJyc7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgX2Jhc2VQZXJtaXNzaW9uU2VydmljZTogQmFzZVBlcm1pc3Npb25TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hcHBDb2RlID0gdGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5hcHBDb2RlO1xuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9iYXNlUGVybWlzc2lvblNlcnZpY2U7XG4gICAgICAgIHRoaXMuY3VzdG9tR2V0RGF0YSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5BZHZhbmNlU2VhcmNoID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkhlYWRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuT3JkZXJDb2x1bW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuRmlsdGVyUm93ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlblNldHRpbmdXb3JrZmxvdyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5BdXRob3JpemVCdXR0b24gPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSB0cnVlO1xuICAgICAgICB0aGlzLnNldHRpbmcuZml4SGVpZ2h0VHlwZUluRGlhbG9nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5DaGVja2JveCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0VkaXRMaW5rID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0dGluZy5tb2RlbFNjaGVtYXMgPSBbXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAncGVybWlzc2lvbkNvZGUnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdNw6MnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAncmF3VGV4dCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ1TDqm4nLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaXNBdXRob3JpemUnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICfEkMOjIHThuqFvIHF1eeG7gW4nLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnbWExJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnTcOjJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNldHRpbmcuY29scyA9IFtcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHsgZmllbGQ6ICdwZXJtaXNzaW9uQ29kZScsIHNvcnQ6IGZhbHNlLCBzaG93RWRpdExpbms6IGZhbHNlIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2UoeyBmaWVsZDogJ3Jhd1RleHQnLCB3aWR0aDogJzMwMHB4Jywgc29ydDogZmFsc2UgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7IGZpZWxkOiAnaXNBdXRob3JpemUnLCBkYXRhVHlwZTogRGF0YVR5cGUuYm9vbGVhbiwgd2lkdGg6ICcxMDBweCcsIHNvcnQ6IGZhbHNlIH0pLFxuICAgICAgICBdO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuXG4gICAgZ2V0RGF0YUN1c3RvbShncmlkSW5mbzogR3JpZEluZm8pIHtcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlO1xuICAgICAgICB0aGlzLmFmdGVyR2V0RGF0YSgpO1xuICAgIH1cblxuICAgIGFzeW5jIGFkZEJhc2VQZXJtaXNzaW9uKHJvd0RhdGEpIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0UmVzID0gYXdhaXQgdGhpcy5fYmFzZVBlcm1pc3Npb25TZXJ2aWNlLnBvc3Qocm93RGF0YSk7XG4gICAgICAgIGlmIChpbnNlcnRSZXMuc3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dTdWNjZXNzKCdUaMOqbSBxdXnhu4FuIHRow6BuaCBjw7RuZycpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEYXRhU291cmNlKGluc2VydFJlcy5kYXRhKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0PDsyBs4buXaSB0cm9uZyBxdcOhIHRyw6xuaCB44butIGzDvSwgdnVpIGzDsm5nIHRo4butIGzhuqFpJyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZGVsZXRlQmFzZVBlcm1pc3Npb24ocm93RGF0YSkge1xuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0NvbmZpcm0oJ1jDoWMgbmjhuq1uIHjDs2EgcXV54buBbicpLnRoZW4oYXN5bmMgcmVzID0+IHtcbiAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBkZWxldGVSZXMgPSBhd2FpdCB0aGlzLl9iYXNlUGVybWlzc2lvblNlcnZpY2UuZGVsZXRlKHJvd0RhdGEuaWQpO1xuICAgICAgICAgICAgaWYgKGRlbGV0ZVJlcy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dTdWNjZXNzKCdYw7NhIHF1eeG7gW4gdGjDoG5oIGPDtG5nJyk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEYXRhU291cmNlKHJvd0RhdGEuaWQsIHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZyhkZWxldGVSZXMubWVzc2FnZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZURhdGFTb3VyY2UoaWQ6IGFueSwgaXNEZWxldGVkID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFJvdyA9IHRoaXMubW9kZWwuZGF0YVNvdXJjZS5maW5kKHAgPT4gcC5pZCA9PSBpZCk7XG4gICAgICAgIGlmICghY3VycmVudFJvdykgcmV0dXJuO1xuICAgICAgICBpZiAoaXNEZWxldGVkKSB7XG4gICAgICAgICAgICBjdXJyZW50Um93LmlkID0gdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudFJvdy5pc0F1dGhvcml6ZSA9ICFpc0RlbGV0ZWQ7XG4gICAgICAgIHRoaXMuYWZ0ZXJHZXREYXRhKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgYWZ0ZXJHZXREYXRhKCkge1xuICAgICAgICB0aGlzLl91bm1hcmtMb2FkaW5nKCk7XG4gICAgICAgIGlmICghdGhpcy5tb2RlbC5kYXRhU291cmNlLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICB0aGlzLm1vZGVsLmRhdGFTb3VyY2UuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0ubmFtZSA9IGl0ZW0ucmF3VGV4dDtcbiAgICAgICAgICAgIGl0ZW0uY29kZSA9IGl0ZW0ucGVybWlzc2lvbkNvZGU7XG4gICAgICAgICAgICBpdGVtLm1vZHVsZUNvZGUgPSB0aGlzLmFwcENvZGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGNvbnN0IGJ1dHRvblNldHRpbmc6IGFueSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShDb21DdHhDb25zdGFudHMuTE9DQUxTVE9SQUdFX0tFWS5CVVRUT05fQVVUSE9SSVpFKSB8fCAne30nKTtcbiAgICAgICAgYnV0dG9uU2V0dGluZ1t0aGlzLmF1dGhvcml6ZUJ1dHRvbktleV0gfHw9IFtdO1xuICAgICAgICB0aGlzLm1vZGVsLmRhdGFTb3VyY2UuZm9yRWFjaChyb3dEYXRhID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbkl0ZW0gPSBidXR0b25TZXR0aW5nW3RoaXMuYXV0aG9yaXplQnV0dG9uS2V5XT8uZmluZChwID0+IHAuY29kZSA9PSByb3dEYXRhLmNvZGUpO1xuICAgICAgICAgICAgaWYgKHJvd0RhdGEuaXNBdXRob3JpemUgJiYgIWJ1dHRvbkl0ZW0pIHtcbiAgICAgICAgICAgICAgICBidXR0b25TZXR0aW5nW3RoaXMuYXV0aG9yaXplQnV0dG9uS2V5XS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHJvd0RhdGEuaWQsXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IHJvd0RhdGEuY29kZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFyb3dEYXRhLmlzQXV0aG9yaXplICYmIGJ1dHRvbkl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGJ1dHRvblNldHRpbmdbdGhpcy5hdXRob3JpemVCdXR0b25LZXldLmluZGV4T2YoYnV0dG9uSXRlbSk7XG4gICAgICAgICAgICAgICAgYnV0dG9uU2V0dGluZ1t0aGlzLmF1dGhvcml6ZUJ1dHRvbktleV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oQ29tQ3R4Q29uc3RhbnRzLkxPQ0FMU1RPUkFHRV9LRVkuQlVUVE9OX0FVVEhPUklaRSwgSlNPTi5zdHJpbmdpZnkoYnV0dG9uU2V0dGluZykpO1xuICAgIH1cbn1cbiJdfQ==
|
package/fesm2015/tnx-shared.js
CHANGED
|
@@ -686,6 +686,7 @@ class CrudListSetting {
|
|
|
686
686
|
this.showHistory = false;
|
|
687
687
|
this.colorFilterField = '';
|
|
688
688
|
this.colorFilterTable = [];
|
|
689
|
+
this.buttonsPermissionCustom = [];
|
|
689
690
|
this.entityMetadataSetting = new CrudFormSetting();
|
|
690
691
|
this.fieldSearchText = [];
|
|
691
692
|
this.function = new CrudListCustomFunction();
|
|
@@ -21369,11 +21370,14 @@ class ListComponentBase extends ComponentBase {
|
|
|
21369
21370
|
if (!buttonText || lstBtnAction.some(p => p.rawText === buttonText)) {
|
|
21370
21371
|
continue;
|
|
21371
21372
|
}
|
|
21372
|
-
this.addButtonAction(lstBtnAction,
|
|
21373
|
+
this.addButtonAction(lstBtnAction, buttonText);
|
|
21373
21374
|
}
|
|
21374
21375
|
const lstMenuButtons = (_e = yield this.menuButtons({})) !== null && _e !== void 0 ? _e : [];
|
|
21375
21376
|
if (lstMenuButtons.length) {
|
|
21376
|
-
lstMenuButtons.forEach(item => this.addButtonAction(lstBtnAction,
|
|
21377
|
+
lstMenuButtons.forEach(item => this.addButtonAction(lstBtnAction, item.label));
|
|
21378
|
+
}
|
|
21379
|
+
if (this.setting.buttonsPermissionCustom.length) {
|
|
21380
|
+
lstBtnAction.push(...this.setting.buttonsPermissionCustom);
|
|
21377
21381
|
}
|
|
21378
21382
|
const buttonSetting = JSON.parse(sessionStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.BUTTON_AUTHORIZE) || '{}');
|
|
21379
21383
|
((_f = buttonSetting[this.authorizeButtonKey]) === null || _f === void 0 ? void 0 : _f.length) && buttonSetting[this.authorizeButtonKey].forEach(item => {
|
|
@@ -21399,13 +21403,13 @@ class ListComponentBase extends ComponentBase {
|
|
|
21399
21403
|
setBtnReady(isReady) {
|
|
21400
21404
|
this.isBtnReady = isReady;
|
|
21401
21405
|
}
|
|
21402
|
-
addButtonAction(lstBtnAction,
|
|
21406
|
+
addButtonAction(lstBtnAction, rawText, id) {
|
|
21403
21407
|
id !== null && id !== void 0 ? id : (id = this._commonService.guid());
|
|
21404
21408
|
const permissionCode = this._commonService.convertStringToUnSign(rawText).replace(/ /g, '_').toUpperCase();
|
|
21405
21409
|
lstBtnAction.push(new ButtonAction({
|
|
21406
21410
|
id: id,
|
|
21407
21411
|
rawText: rawText,
|
|
21408
|
-
permissionCode: `[${
|
|
21412
|
+
permissionCode: `[${this.authorizeButtonKey}]_[${permissionCode}]`
|
|
21409
21413
|
}));
|
|
21410
21414
|
}
|
|
21411
21415
|
setAuthorizeButton(lstButtonTemplate) {
|
|
@@ -21431,7 +21435,7 @@ class ListComponentBase extends ComponentBase {
|
|
|
21431
21435
|
this.isBtnReady = true;
|
|
21432
21436
|
return;
|
|
21433
21437
|
}
|
|
21434
|
-
lstMenuButtons.forEach(item => this.addButtonAction(lstMenuButton,
|
|
21438
|
+
lstMenuButtons.forEach(item => this.addButtonAction(lstMenuButton, item.label));
|
|
21435
21439
|
buttonSetting[this.authorizeButtonKey].forEach(item => {
|
|
21436
21440
|
const itemBtnMenu = lstMenuButton.find(p => p.permissionCode == item.code);
|
|
21437
21441
|
if (itemBtnMenu) {
|
|
@@ -21604,34 +21608,8 @@ class CommonSearchFormComponent extends DataFormBase {
|
|
|
21604
21608
|
this.searchBoxTooltip += `${(lstTextSearchControl.map(x => x.label)).join(', ')}`;
|
|
21605
21609
|
this._index = 2;
|
|
21606
21610
|
}
|
|
21607
|
-
const totalControlPerRow = 12 / this.mdWidth;
|
|
21608
21611
|
if (this.isCustomGenerateSearch) {
|
|
21609
|
-
this.
|
|
21610
|
-
column.showLabel = false;
|
|
21611
|
-
column.mdWidth = this.mdWidth;
|
|
21612
|
-
column['placeholder'] = column.label;
|
|
21613
|
-
if (!(column instanceof TextControlSchema) || column instanceof NumberRangeControlSchema || column instanceof DropdownControlSchema) {
|
|
21614
|
-
column.onAfterChanged = (evt) => {
|
|
21615
|
-
this.handleSearch(null, evt.control.field);
|
|
21616
|
-
};
|
|
21617
|
-
}
|
|
21618
|
-
if (column instanceof NumberRangeControlSchema) {
|
|
21619
|
-
this.lstNumberRangeControl.push(column.field);
|
|
21620
|
-
}
|
|
21621
|
-
if (column.hasOwnProperty('defaultValue') && (column instanceof DropdownControlSchema || column instanceof DateTimeControlSchema)) {
|
|
21622
|
-
this.defaultValues[column.field] = column.defaultValue;
|
|
21623
|
-
}
|
|
21624
|
-
if (column.addToGridInfo) {
|
|
21625
|
-
this.lstControlAddToGridInfo.push(column.field);
|
|
21626
|
-
}
|
|
21627
|
-
column.isLazyLoad = !this.parentSetting.disableLazyLoadCommonSearch && this._index > totalControlPerRow
|
|
21628
|
-
&& column instanceof DropdownControlSchema && !!column.baseService && !(column.baseService instanceof MasterDataService);
|
|
21629
|
-
if (column.isLazyLoad) {
|
|
21630
|
-
this.lstControlLazyLoad.push(column.field);
|
|
21631
|
-
}
|
|
21632
|
-
this._index++;
|
|
21633
|
-
});
|
|
21634
|
-
this.setting.schema = this.addSearchBox(this.parentSetting.commonSchemas.sort((prev, next) => prev.order - next.order));
|
|
21612
|
+
this.getFormSchemaCustom();
|
|
21635
21613
|
}
|
|
21636
21614
|
else {
|
|
21637
21615
|
this.setting.schema = this.genFormSchema(columnFilters);
|
|
@@ -21642,6 +21620,35 @@ class CommonSearchFormComponent extends DataFormBase {
|
|
|
21642
21620
|
this.handleSearch();
|
|
21643
21621
|
}
|
|
21644
21622
|
}
|
|
21623
|
+
getFormSchemaCustom() {
|
|
21624
|
+
const totalControlPerRow = 12 / this.mdWidth;
|
|
21625
|
+
this.parentSetting.commonSchemas.forEach(column => {
|
|
21626
|
+
column.showLabel = false;
|
|
21627
|
+
column.mdWidth = this.mdWidth;
|
|
21628
|
+
column['placeholder'] = column.label;
|
|
21629
|
+
if (!(column instanceof TextControlSchema) || column instanceof NumberRangeControlSchema || column instanceof DropdownControlSchema) {
|
|
21630
|
+
column.onAfterChanged = (evt) => {
|
|
21631
|
+
this.handleSearch(null, evt.control.field);
|
|
21632
|
+
};
|
|
21633
|
+
}
|
|
21634
|
+
if (column instanceof NumberRangeControlSchema) {
|
|
21635
|
+
this.lstNumberRangeControl.push(column.field);
|
|
21636
|
+
}
|
|
21637
|
+
if (column.hasOwnProperty('defaultValue') && (column instanceof DropdownControlSchema || column instanceof DateTimeControlSchema)) {
|
|
21638
|
+
this.defaultValues[column.field] = column.defaultValue;
|
|
21639
|
+
}
|
|
21640
|
+
if (column.addToGridInfo) {
|
|
21641
|
+
this.lstControlAddToGridInfo.push(column.field);
|
|
21642
|
+
}
|
|
21643
|
+
column.isLazyLoad = !this.parentSetting.disableLazyLoadCommonSearch && this._index > totalControlPerRow
|
|
21644
|
+
&& column instanceof DropdownControlSchema && !!column.baseService && !(column.baseService instanceof MasterDataService);
|
|
21645
|
+
if (column.isLazyLoad) {
|
|
21646
|
+
this.lstControlLazyLoad.push(column.field);
|
|
21647
|
+
}
|
|
21648
|
+
this._index++;
|
|
21649
|
+
});
|
|
21650
|
+
this.setting.schema = this.addSearchBox(this.parentSetting.commonSchemas.sort((prev, next) => prev.order - next.order));
|
|
21651
|
+
}
|
|
21645
21652
|
genFormSchema(columns) {
|
|
21646
21653
|
const result = [];
|
|
21647
21654
|
const totalControlPerRow = 12 / this.mdWidth;
|
|
@@ -22344,6 +22351,7 @@ class ListBase extends ComponentBaseWithButton {
|
|
|
22344
22351
|
this._workflowPermissionDetailService = this._injector.get(WorkflowPermissionDetailService);
|
|
22345
22352
|
this._stateMachinesService = this._injector.get(StateMachinesService);
|
|
22346
22353
|
this._congViecServiceInBase = this._injector.get(CongViecService);
|
|
22354
|
+
this._permissionService = this._injector.get(PermissionService);
|
|
22347
22355
|
this._loggerService = this._injector.get(LoggerService);
|
|
22348
22356
|
this.setting.key = this._commonService.guid();
|
|
22349
22357
|
}
|
|
@@ -22706,6 +22714,37 @@ class ListBase extends ComponentBaseWithButton {
|
|
|
22706
22714
|
}
|
|
22707
22715
|
});
|
|
22708
22716
|
}
|
|
22717
|
+
getMenuButtonCustomAuthorized(menuButtons) {
|
|
22718
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22719
|
+
const buttonSetting = JSON.parse(sessionStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.BUTTON_AUTHORIZE) || '{}');
|
|
22720
|
+
let authorizeButtonKey = window.location.pathname.substring(1).toUpperCase().replace(/\//g, '_');
|
|
22721
|
+
const serviceCode = this.setting.baseService.serviceCode.toUpperCase();
|
|
22722
|
+
if (isDevMode()) {
|
|
22723
|
+
authorizeButtonKey = `${serviceCode}_${window.location.pathname.substring(1).toUpperCase()}`;
|
|
22724
|
+
}
|
|
22725
|
+
const lstButtonAuthorize = buttonSetting[authorizeButtonKey];
|
|
22726
|
+
if (!(lstButtonAuthorize === null || lstButtonAuthorize === void 0 ? void 0 : lstButtonAuthorize.length)) {
|
|
22727
|
+
return menuButtons;
|
|
22728
|
+
}
|
|
22729
|
+
const promises = [];
|
|
22730
|
+
const authorizedButtons = [];
|
|
22731
|
+
for (const item of menuButtons) {
|
|
22732
|
+
const permission = lstButtonAuthorize.find(p => p.code == item.authorizationPermission);
|
|
22733
|
+
if (!item.authorizationPermission || !permission) {
|
|
22734
|
+
authorizedButtons.push(item);
|
|
22735
|
+
continue;
|
|
22736
|
+
}
|
|
22737
|
+
promises.push(this._permissionService.isAuthorized(item.authorizationServiceCode || serviceCode, permission ? permission.code : item.authorizationPermission, true).then(authorized => {
|
|
22738
|
+
if (authorized !== true) {
|
|
22739
|
+
return;
|
|
22740
|
+
}
|
|
22741
|
+
authorizedButtons.push(item);
|
|
22742
|
+
}));
|
|
22743
|
+
}
|
|
22744
|
+
yield Promise.all(promises);
|
|
22745
|
+
return authorizedButtons;
|
|
22746
|
+
});
|
|
22747
|
+
}
|
|
22709
22748
|
beforeRenderDataSource(datasource) {
|
|
22710
22749
|
return datasource;
|
|
22711
22750
|
}
|
|
@@ -41119,7 +41158,7 @@ EquationEditorComponent.decorators = [
|
|
|
41119
41158
|
selector: 'equation-editor',
|
|
41120
41159
|
template: "<div class=\"ui-fluid\">\n <textarea #textarea class=\"latexContent\" placeholder=\"G\u00F5 c\u00F4ng th\u1EE9c to\u00E1n h\u1ECDc t\u1EA1i \u0111\u00E2y...\" rows=\"6\" pInputTextarea\n (ngModelChange)=\"onModelChange($event)\" [(ngModel)]=\"equationLatex\"></textarea>\n</div>\n<div class=\"preview\">\n <img #preview latex=\"true\" *ngIf=\"imageSrc\" [attr.height]=\"data.height != 0 ? data.height : null\"\n class=\"latex\" [style]=\"data.style | safeStyle\" [src]=\"imageSrc\" [alt]=\"equationLatex\" />\n</div>",
|
|
41121
41160
|
providers: [ComponentContextService],
|
|
41122
|
-
styles: [".btn-equation{width:
|
|
41161
|
+
styles: [".btn-equation{width:30px;height:30px;cursor:pointer}.preview{text-align:center;margin-top:10px;padding:0 10px}.latexContent{resize:none;border-radius:0}"]
|
|
41123
41162
|
},] }
|
|
41124
41163
|
];
|
|
41125
41164
|
EquationEditorComponent.ctorParameters = () => [
|
|
@@ -43294,7 +43333,7 @@ class SettingAuthorizeButtonComponent extends DataListBase {
|
|
|
43294
43333
|
];
|
|
43295
43334
|
this.setting.cols = [
|
|
43296
43335
|
new ColumnSchemaBase({ field: 'permissionCode', sort: false, showEditLink: false }),
|
|
43297
|
-
new ColumnSchemaBase({ field: 'rawText', width: '
|
|
43336
|
+
new ColumnSchemaBase({ field: 'rawText', width: '300px', sort: false }),
|
|
43298
43337
|
new ColumnSchemaBase({ field: 'isAuthorize', dataType: DataType.boolean, width: '100px', sort: false }),
|
|
43299
43338
|
];
|
|
43300
43339
|
super.ngOnInit();
|
|
@@ -43352,7 +43391,9 @@ class SettingAuthorizeButtonComponent extends DataListBase {
|
|
|
43352
43391
|
});
|
|
43353
43392
|
}
|
|
43354
43393
|
ngOnDestroy() {
|
|
43394
|
+
var _a;
|
|
43355
43395
|
const buttonSetting = JSON.parse(sessionStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.BUTTON_AUTHORIZE) || '{}');
|
|
43396
|
+
buttonSetting[_a = this.authorizeButtonKey] || (buttonSetting[_a] = []);
|
|
43356
43397
|
this.model.dataSource.forEach(rowData => {
|
|
43357
43398
|
var _a;
|
|
43358
43399
|
const buttonItem = (_a = buttonSetting[this.authorizeButtonKey]) === null || _a === void 0 ? void 0 : _a.find(p => p.code == rowData.code);
|