tnx-shared 5.3.304 → 5.3.306
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 +56 -71
- 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/components/common-search-form/common-search-form.component.d.ts.map +1 -1
- package/esm2015/components/common-search-form/common-search-form.component.js +4 -1
- package/esm2015/services/master-data.service.js +3 -16
- package/fesm2015/tnx-shared.js +5 -15
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/services/master-data.service.d.ts +0 -1
- package/services/master-data.service.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-search-form.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/common-search-form/common-search-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AAEhH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAwH,SAAS,EAAE,cAAc,EAAyD,MAAM,2BAA2B,CAAC;AAEnP,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,qBAMa,yBAA0B,SAAQ,YAAa,YAAW,MAAM;IA0BrE,SAAS,CAAC,SAAS,EAAE,QAAQ;IAC7B,SAAS,CAAC,cAAc,EAAE,aAAa;IA1Bc,oBAAoB,EAAE,UAAU,CAAC;IACjF,cAAc,EAAE,GAAG,CAAM;IACzB,gBAAgB,SAAgC;IAC/C,aAAa,oBAA2B;IACxC,uBAAuB,oBAA2B;IAE5D,OAAO,SAAK;IACZ,kBAAkB,QAAM;IACxB,kBAAkB,QAAM;IACxB,qBAAqB,QAAM;IAC3B,cAAc,QAAM;IACpB,cAAc,QAAM;IACpB,eAAe,QAAM;IACrB,uBAAuB,QAAM;IAC7B,kBAAkB,QAAM;IACxB,aAAa,KAAM;IACnB,kBAAkB,UAAS;IAC3B,uBAAuB,gBAAa;IACpC,QAAQ,SAAM;IACd,UAAU,UAAS;IACnB,sBAAsB,UAAS;IAC/B,iBAAiB,UAAS;IAC1B,MAAM,SAAK;gBAGG,SAAS,EAAE,QAAQ,EACnB,cAAc,EAAE,aAAa;IAK3C,QAAQ;IAmCR,mBAAmB;IAkCnB,aAAa,CAAC,OAAO,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"common-search-form.component.d.ts","sourceRoot":"","sources":["../../../../projects/tnx-shared/src/lib/components/common-search-form/common-search-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AAEhH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAwH,SAAS,EAAE,cAAc,EAAyD,MAAM,2BAA2B,CAAC;AAEnP,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,qBAMa,yBAA0B,SAAQ,YAAa,YAAW,MAAM;IA0BrE,SAAS,CAAC,SAAS,EAAE,QAAQ;IAC7B,SAAS,CAAC,cAAc,EAAE,aAAa;IA1Bc,oBAAoB,EAAE,UAAU,CAAC;IACjF,cAAc,EAAE,GAAG,CAAM;IACzB,gBAAgB,SAAgC;IAC/C,aAAa,oBAA2B;IACxC,uBAAuB,oBAA2B;IAE5D,OAAO,SAAK;IACZ,kBAAkB,QAAM;IACxB,kBAAkB,QAAM;IACxB,qBAAqB,QAAM;IAC3B,cAAc,QAAM;IACpB,cAAc,QAAM;IACpB,eAAe,QAAM;IACrB,uBAAuB,QAAM;IAC7B,kBAAkB,QAAM;IACxB,aAAa,KAAM;IACnB,kBAAkB,UAAS;IAC3B,uBAAuB,gBAAa;IACpC,QAAQ,SAAM;IACd,UAAU,UAAS;IACnB,sBAAsB,UAAS;IAC/B,iBAAiB,UAAS;IAC1B,MAAM,SAAK;gBAGG,SAAS,EAAE,QAAQ,EACnB,cAAc,EAAE,aAAa;IAK3C,QAAQ;IAmCR,mBAAmB;IAkCnB,aAAa,CAAC,OAAO,EAAE,GAAG;IAiH1B,YAAY,CAAC,OAAO,KAAA;IAwBpB,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM;IAuEvC,WAAW;IAiBX,gBAAgB;IAQV,uBAAuB;IAQvB,iBAAiB,CAAC,SAAS,EAAE,SAAS;IAKtC,gBAAgB,CAAC,IAAI,KAAA;IAI3B,eAAe;CAKlB"}
|
|
@@ -107,6 +107,9 @@ export class CommonSearchFormComponent extends DataFormBase {
|
|
|
107
107
|
if (!column.isInTable || !column.includeSelect) {
|
|
108
108
|
this.lstControlNotIn.push(column.field);
|
|
109
109
|
}
|
|
110
|
+
if (column.hasOwnProperty('defaultValue')) {
|
|
111
|
+
this.defaultValues[column.field] = column.defaultValue;
|
|
112
|
+
}
|
|
110
113
|
const isBool = column.dataType == DataType.boolean;
|
|
111
114
|
if (column.controlType == ControlType.dropdown || isBool || column instanceof DropdownControlSchema) {
|
|
112
115
|
this.lstDropdownControl.push(column.field);
|
|
@@ -347,4 +350,4 @@ CommonSearchFormComponent.propDecorators = {
|
|
|
347
350
|
onClickSearch: [{ type: Output }],
|
|
348
351
|
onAfterToggleMenuSearch: [{ type: Output }]
|
|
349
352
|
};
|
|
350
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXlCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBekJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxF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RUssZ0JBQWdCLENBQUMsSUFBSTs7WUFDdkIscUNBQXFDO1FBQ3pDLENBQUM7S0FBQTtJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRTtZQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztTQUNyRztJQUNMLENBQUM7OztZQXRXSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsMjZEQUFrRDtnQkFFbEQsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFaNkMsUUFBUTtZQUs3QyxhQUFhOzs7bUNBU2pCLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7NkJBQ3RELEtBQUs7K0JBQ0wsS0FBSzs0QkFDTCxNQUFNO3NDQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcbmltcG9ydCB7IENvbnRyb2xUeXBlLCBDdXN0b21Db250cm9sU2NoZW1hLCBEYXRhVHlwZSwgRGF0ZVRpbWVDb250cm9sU2NoZW1hLCBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYSwgRHJvcGRvd25Db250cm9sU2NoZW1hLCBFdmVudERhdGEsIEZvcm1TY2hlbWFCYXNlLCBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEsIE9wZXJhdG9yLCBUZXh0Q29udHJvbFNjaGVtYSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY29tbW9uLXNlYXJjaC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIENvbW1vblNlYXJjaEZvcm1Db21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2NvbW1vblNlYXJjaFRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbW1vblNlYXJjaFRlbXBsYXRlOiBFbGVtZW50UmVmO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlRmlsdGVyOiBhbnkgPSBbXTtcbiAgICBASW5wdXQoKSBzZWFyY2hCb3hUb29sdGlwID0gJ1TDrG0ga2nhur9tIHRoZW8gY8OhYyB0csaw4budbmc6ICc7XG4gICAgQE91dHB1dCgpIG9uQ2xpY2tTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb25BZnRlclRvZ2dsZU1lbnVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIG1kV2lkdGggPSAzO1xuICAgIGxzdERyb3Bkb3duQ29udHJvbCA9IFtdO1xuICAgIGxzdERhdGV0aW1lQ29udHJvbCA9IFtdO1xuICAgIGxzdE51bWJlclJhbmdlQ29udHJvbCA9IFtdO1xuICAgIGxzdFRleHRDb250cm9sID0gW107XG4gICAgbHN0Qm9vbENvbnRyb2wgPSBbXTtcbiAgICBsc3RDb250cm9sTm90SW4gPSBbXTtcbiAgICBsc3RDb250cm9sQWRkVG9HcmlkSW5mbyA9IFtdO1xuICAgIGxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIGRlZmF1bHRWYWx1ZXMgPSB7fTtcbiAgICBpc0FkZERlZmF1bHRWYWx1ZXMgPSBmYWxzZTtcbiAgICBtYXBDb250cm9sQmluZGluZ0ZpbHRlciA9IG5ldyBNYXAoKTtcbiAgICBrZXl3b3JkcyA9ICcnO1xuICAgIGlzT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBpc0N1c3RvbUdlbmVyYXRlU2VhcmNoID0gZmFsc2U7XG4gICAgaXNEaXNhYmxlT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBfaW5kZXggPSAxO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1kV2lkdGggPSB0aGlzLnBhcmVudFNldHRpbmcubWRXaWR0aENvbW1vblNlYXJjaDtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5wYXJlbnRTZXR0aW5nLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmlsdGVyKHAgPT4gcC5hbGxvd0ZpbHRlciAmJiAhcC5maWVsZC5zdGFydHNXaXRoKCdzdHInKSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEub3JkZXIgPCBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGEub3JkZXIgPiBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGxzdFRleHRTZWFyY2hDb250cm9sID0gY29sdW1uRmlsdGVycy5maWx0ZXIocCA9PiBwLmZ1bGxUZXh0U2VhcmNoKTtcbiAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wgPSBsc3RUZXh0U2VhcmNoQ29udHJvbC5tYXAocCA9PiBwLmZpZWxkKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94VG9vbHRpcCArPSBgJHsobHN0VGV4dFNlYXJjaENvbnRyb2wubWFwKHggPT4geC5sYWJlbCkpLmpvaW4oJywgJyl9YDtcbiAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0N1c3RvbUdlbmVyYXRlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1TY2hlbWFDdXN0b20oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSB0aGlzLmdlbkZvcm1TY2hlbWEoY29sdW1uRmlsdGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0Rpc2FibGVPcGVuRnVsbCA9ICh0aGlzLnNldHRpbmcuc2NoZW1hLmxlbmd0aCA8PSBNYXRoLnJvdW5kKDEyIC8gKHRoaXMucGFyZW50U2V0dGluZy5tZFdpZHRoQ29tbW9uU2VhcmNoKSkpICYmICF0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldEZvcm1TY2hlbWFDdXN0b20oKSB7XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uc2hvd0xhYmVsID0gZmFsc2U7XG4gICAgICAgICAgICBjb2x1bW4ubWRXaWR0aCA9IHRoaXMubWRXaWR0aDtcbiAgICAgICAgICAgIGNvbHVtblsncGxhY2Vob2xkZXInXSA9IGNvbHVtbi5sYWJlbDtcbiAgICAgICAgICAgIGlmICghKGNvbHVtbiBpbnN0YW5jZW9mIFRleHRDb250cm9sU2NoZW1hKSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLm9uQWZ0ZXJDaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKG51bGwsIGV2dC5jb250cm9sLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5pc0FsbG93RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJiAoY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERhdGVUaW1lQ29udHJvbFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZXNbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLmFkZFRvR3JpZEluZm8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xBZGRUb0dyaWRJbmZvLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbHVtbi5pc0xhenlMb2FkID0gIXRoaXMucGFyZW50U2V0dGluZy5kaXNhYmxlTGF6eUxvYWRDb21tb25TZWFyY2ggJiYgdGhpcy5faW5kZXggPiB0b3RhbENvbnRyb2xQZXJSb3dcbiAgICAgICAgICAgICAgICAmJiBjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgJiYgISFjb2x1bW4uYmFzZVNlcnZpY2UgJiYgIShjb2x1bW4uYmFzZVNlcnZpY2UgaW5zdGFuY2VvZiBNYXN0ZXJEYXRhU2VydmljZSk7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmlzTGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYSA9IHRoaXMuYWRkU2VhcmNoQm94KHRoaXMucGFyZW50U2V0dGluZy5jb21tb25TY2hlbWFzLnNvcnQoKHByZXYsIG5leHQpID0+IHByZXYub3JkZXIgLSBuZXh0Lm9yZGVyKSk7XG4gICAgfVxuXG5cbiAgICBnZW5Gb3JtU2NoZW1hKGNvbHVtbnM6IGFueSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IFtdO1xuICAgICAgICBjb25zdCB0b3RhbENvbnRyb2xQZXJSb3cgPSAxMiAvIHRoaXMubWRXaWR0aDtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbHVtbi5pc0luVGFibGUgfHwgIWNvbHVtbi5pbmNsdWRlU2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sc3RDb250cm9sTm90SW4ucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaXNCb29sID0gY29sdW1uLmRhdGFUeXBlID09IERhdGFUeXBlLmJvb2xlYW47XG4gICAgICAgICAgICBpZiAoY29sdW1uLmNvbnRyb2xUeXBlID09IENvbnRyb2xUeXBlLmRyb3Bkb3duIHx8IGlzQm9vbCB8fCBjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdERyb3Bkb3duQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBjb2x1bW4uZGF0YVNvdXJjZTtcbiAgICAgICAgICAgICAgICBpZiAoaXNCb29sKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubHN0Qm9vbENvbnRyb2wucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gW3sgaWQ6IHRydWUsIHRlbjogJ0PDsycgfSwgeyBpZDogZmFsc2UsIHRlbjogJ0tow7RuZycgfV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uYmluZGluZ0ZpbHRlcnMgJiYgY29sdW1uLmJpbmRpbmdGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmJpbmRpbmdGaWx0ZXJzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcENvbnRyb2xCaW5kaW5nRmlsdGVyLnNldChpdGVtLmZpZWxkLCBjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5iYXNlU2VydmljZSB8fCAoZGF0YVNvdXJjZSAmJiBkYXRhU291cmNlLmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTGF6eUxvYWQgPSAhdGhpcy5wYXJlbnRTZXR0aW5nLmRpc2FibGVMYXp5TG9hZENvbW1vblNlYXJjaCAmJiB0aGlzLl9pbmRleCA+IHRvdGFsQ29udHJvbFBlclJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgJiYgISFjb2x1bW4uYmFzZVNlcnZpY2UgJiYgIShjb2x1bW4uYmFzZVNlcnZpY2UgaW5zdGFuY2VvZiBNYXN0ZXJEYXRhU2VydmljZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0xhenlMb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IERyb3Bkb3duQ29udHJvbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogY29sdW1uLnBsYWNlaG9sZGVyID8/IGBDaOG7jW4gJHtjb2x1bW4ubGFiZWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQWxsb3dEaXNhYmxlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogIWNvbHVtbi5zaW5nbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWRXaWR0aDogdGhpcy5tZFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMYXp5TG9hZDogaXNMYXp5TG9hZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWQ6IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuYm9vbGVhbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucGFyZW50TW9kZWxbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5zaW5nbGUgPyBldnQudmFsdWUuaWQgPz8gZXZ0LnZhbHVlIDogZXZ0LnZhbHVlLm1hcChwID0+IHAuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiaW5kaW5nRmlsdGVyVmFsID0gdGhpcy5tYXBDb250cm9sQmluZGluZ0ZpbHRlci5nZXQoY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmluZGluZ0ZpbHRlclZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2dC52YWx1ZSB8fCBldnQudmFsdWUubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbHNbYmluZGluZ0ZpbHRlclZhbF0uX2NvbXBvbmVudC5maWx0ZXJGcm9tUGFyZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbHNbYmluZGluZ0ZpbHRlclZhbF0uX2NvbXBvbmVudC5fZ2V0RGF0YVNvdXJjZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoIWNvbHVtbi5pbmNsdWRlU2VsZWN0IHx8ICFjb2x1bW4uaXNJblRhYmxlKSAmJiAhY29sdW1uLmZvcmNlTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRDb2x1bW46IGFueSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogY29sdW1uLnBsYWNlaG9sZGVyID8/IGBDaOG7jW4gJHtjb2x1bW4ubGFiZWx9YCxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdLFxuICAgICAgICAgICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGgsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi5kYXRhVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRhdGU6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGF0ZXRpbWU6XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uc2hvd0ljb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wYXJlbnRNb2RlbFtjb2x1bW4uZmllbGRdID0gZXZ0LnNvdXJjZUV2ZW50LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKGV2dC5wYXJlbnRNb2RlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnNob3dUaW1lID0gY29sdW1uLmRhdGFUeXBlID09IERhdGFUeXBlLmRhdGV0aW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IERhdGVUaW1lUmFuZ2VDb250cm9sU2NoZW1hKGFkZENvbHVtbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3REYXRldGltZUNvbnRyb2wucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUudGltZXNwYW46XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uc2hvd0ljb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnRpbWVPbmx5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5kZWZhdWx0VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ub25DaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRGF0ZVRpbWVDb250cm9sU2NoZW1hKGFkZENvbHVtbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmludDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5pbnRXaXRob3V0TWFzazpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kZWNpbWFsOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmN1cnJlbmN5OlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm1hc2tUeXBlID0gY29sdW1uLmRhdGFUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm1heCA9IDk5OTk5OTk5OTk5O1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IE51bWJlclJhbmdlQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goYWRkQ29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkU2VhcmNoQm94KHJlc3VsdC5zb3J0KChwcmV2LCBuZXh0KSA9PiBwcmV2Lm9yZGVyIC0gbmV4dC5vcmRlcikpO1xuICAgIH1cblxuICAgIGFkZFNlYXJjaEJveChjb2x1bW5zKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICByZXR1cm4gPEZvcm1TY2hlbWFCYXNlW10+Y29sdW1ucztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWFyY2hCb3ggPSBuZXcgQ3VzdG9tQ29udHJvbFNjaGVtYSh7XG4gICAgICAgICAgICBmaWVsZDogJ2tleXdvcmQnLFxuICAgICAgICAgICAgbGFiZWw6ICdU4burIGtow7NhJyxcbiAgICAgICAgICAgIGZ1bGxMYWJlbDogJ1Thu6sga2jDs2EnLFxuICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gTnVtYmVyKDEyIC8gdGhpcy5tZFdpZHRoKSAtIDE7XG4gICAgICAgIGlmICh0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKDAsIDAsIHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29sdW1ucy5sZW5ndGggPCBpbmRleCkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb2x1bW5zLnNwbGljZShpbmRleCwgMCwgc2VhcmNoQm94KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gPEZvcm1TY2hlbWFCYXNlW10+Y29sdW1ucztcbiAgICB9XG5cbiAgICBoYW5kbGVTZWFyY2goZGF0YT86IGFueSwgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyRnVsbFRleHRTZWFyY2ggPSBbXTtcbiAgICAgICAgaWYgKHRoaXMua2V5d29yZHMgJiYgdGhpcy5sc3RUZXh0Q29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJUZXh0ID0gW107XG4gICAgICAgICAgICB0aGlzLmxzdFRleHRDb250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgbHN0RmlsdGVyVGV4dC5wdXNoKHRoaXMubmV3RmlsdGVyKGl0ZW0sIE9wZXJhdG9yLmNvbnRhaW4sIHRoaXMua2V5d29yZHMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZmlsdGVyRnVsbFRleHRTZWFyY2gucHVzaChuZXcgRmlsdGVyKHsgbG9naWM6ICdvcicsIGZpbHRlcnM6IGxzdEZpbHRlclRleHQgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMubW9kZWwuZGF0YTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0FkZERlZmF1bHRWYWx1ZXMgJiYgT2JqZWN0LmtleXModGhpcy5kZWZhdWx0VmFsdWVzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gT2JqZWN0LmFzc2lnbihkYXRhLCB0aGlzLmRlZmF1bHRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNBZGREZWZhdWx0VmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxzdEZpbHRlcnMgPSB0aGlzLl9jcnVkU2VydmljZS5nZXRGaWx0ZXJGcm9tVGVtcGxhdGUodGhpcy50ZW1wbGF0ZUZpbHRlciwgZGF0YSk7XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJBZGRDdXN0b20gPSBsc3RGaWx0ZXJzLmZpbHRlcihwID0+IHRoaXMubHN0Q29udHJvbEFkZFRvR3JpZEluZm8uaW5jbHVkZXMocC5maWVsZCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJzOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlckZ1bGxUZXh0U2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubHN0RmlsdGVyQWRkQ3VzdG9tXSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YUZvcm06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogdGhpcy5rZXl3b3Jkc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcnMuZmllbGRBY3Rpb24gPSBmaWVsZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsaWNrU2VhcmNoLmVtaXQocnMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmxzdERyb3Bkb3duQ29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmxzdERyb3Bkb3duQ29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtKSB8fCAoIWRhdGFbaXRlbV0gfHwgZGF0YVtpdGVtXS5sZW5ndGggPCAxKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlRmllbGQgPSB0aGlzLnBhcmVudFNldHRpbmcuY29scy5maW5kKHAgPT4gcC5maWVsZCA9PT0gaXRlbSk/LnZhbHVlRmllbGQgfHwgJ2lkJztcbiAgICAgICAgICAgICAgICBpZiAoZGF0YVtpdGVtXS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXSA9IGRhdGFbaXRlbV0ubWFwKHAgPT4gcFt2YWx1ZUZpZWxkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dID0gZGF0YVtpdGVtXVt2YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxzdEJvb2xDb250cm9sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubHN0Qm9vbENvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkoaXRlbSkgfHwgIUFycmF5LmlzQXJyYXkoZGF0YVtpdGVtXSkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGRhdGFbaXRlbV0uaW5kZXhPZih1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV1baW5kZXhdID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxzdEZpbHRlcnMgPSB0aGlzLl9jcnVkU2VydmljZS5nZXRGaWx0ZXJGcm9tVGVtcGxhdGUodGhpcy50ZW1wbGF0ZUZpbHRlciwgZGF0YSk7XG4gICAgICAgIGxzdEZpbHRlcnMgPSBbLi4ubHN0RmlsdGVycywgLi4uZmlsdGVyRnVsbFRleHRTZWFyY2hdO1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHtcbiAgICAgICAgICAgIGZpbHRlcnM6IGxzdEZpbHRlcnMuZmlsdGVyKHAgPT4gIXRoaXMubHN0Q29udHJvbE5vdEluLmluY2x1ZGVzKHAuZmllbGQpKSxcbiAgICAgICAgICAgIGRhdGFGb3JtOiB7XG4gICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICBrZXl3b3JkczogdGhpcy5rZXl3b3Jkc1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5maWVsZEFjdGlvbiA9IGZpZWxkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25DbGlja1NlYXJjaC5lbWl0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgY2xlYXJGaWx0ZXIoKSB7XG4gICAgICAgIGZvciAoY29uc3QgcCBpbiB0aGlzLmZvcm1Db250cm9scykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZm9ybUNvbnRyb2xzW3BdO1xuICAgICAgICAgICAgbGV0IHJlc2V0VmFsdWU6IGFueTtcbiAgICAgICAgICAgIGlmICh0aGlzLmxzdERyb3Bkb3duQ29udHJvbC5pbmNsdWRlcyhpdGVtLmZpZWxkKSAmJiBpdGVtLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRWYWx1ZSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5sc3REYXRldGltZUNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkgfHwgdGhpcy5sc3ROdW1iZXJSYW5nZUNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkpIHtcbiAgICAgICAgICAgICAgICByZXNldFZhbHVlID0gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3NldE1vZGVsVmFsdWUoaXRlbS5maWVsZCwgcmVzZXRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1jYWxlbmRhcicpKS5mb3JFYWNoKGVsID0+IGVsWyd2YWx1ZSddID0gJycpO1xuICAgICAgICB0aGlzLmtleXdvcmRzID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICB9XG5cbiAgICB0b2dnbGVNZW51U2VhcmNoKCkge1xuICAgICAgICB0aGlzLmlzT3BlbkZ1bGwgPSAhdGhpcy5pc09wZW5GdWxsO1xuICAgICAgICBpZiAodGhpcy5sc3RDb250cm9sTGF6eUxvYWQubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJMYXp5TG9hZERyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkFmdGVyVG9nZ2xlTWVudVNlYXJjaC5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIGFzeW5jIHRyaWdnZXJMYXp5TG9hZERyb3Bkb3duKCkge1xuICAgICAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XG4gICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLmZvckVhY2goY29udHJvbCA9PiBwcm9taXNlcy5wdXNoKHRoaXMuZm9ybUNvbnRyb2xzW2NvbnRyb2xdLl9jb21wb25lbnQuX2dldERhdGFTb3VyY2UoKSkpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkID0gW107XG4gICAgfVxuXG5cbiAgICBhc3luYyBvbkZvcm1Jbml0aWFsaXplZChmb3JtRXZlbnQ6IEV2ZW50RGF0YSkge1xuICAgICAgICAvLyB0aeG7gW4geOG7rSBsw70gZOG7ryBsaeG7h3UgKHbDrSBk4bulIHThu5VuZyBo4bujcCBkYXRhc291cmNlKSwgdHLGsOG7m2Mga2hpIGfhu41pIGFwaSBnZXQgZGV0YWlsXG5cbiAgICB9XG5cbiAgICBhc3luYyBtb2RpZnlEZXRhaWxEYXRhKGRhdGEpIHtcbiAgICAgICAgLy8geOG7rSBsw70gZOG7ryBsaeG7h3UgbOG6pXkgdOG7qyBnZXQgZGV0YWlsIHbhu4FcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlYXJjaFRlbXBsYXRlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdoZWlnaHQ6MTAwJTttYXJnaW4tYm90dG9tOiAtOXB4OycpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU92RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXlCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBekJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxF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QUFRLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7S0FBQTtJQUdLLGlCQUFpQixDQUFDLFNBQW9COztZQUN4QywrRUFBK0U7UUFFbkYsQ0FBQztLQUFBO0lBRUssZ0JBQWdCLENBQUMsSUFBSTs7WUFDdkIscUNBQXFDO1FBQ3pDLENBQUM7S0FBQTtJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRTtZQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztTQUNyRztJQUNMLENBQUM7OztZQXpXSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsMjZEQUFrRDtnQkFFbEQsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFaNkMsUUFBUTtZQUs3QyxhQUFhOzs7bUNBU2pCLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7NkJBQ3RELEtBQUs7K0JBQ0wsS0FBSzs0QkFDTCxNQUFNO3NDQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcbmltcG9ydCB7IENvbnRyb2xUeXBlLCBDdXN0b21Db250cm9sU2NoZW1hLCBEYXRhVHlwZSwgRGF0ZVRpbWVDb250cm9sU2NoZW1hLCBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYSwgRHJvcGRvd25Db250cm9sU2NoZW1hLCBFdmVudERhdGEsIEZvcm1TY2hlbWFCYXNlLCBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEsIE9wZXJhdG9yLCBUZXh0Q29udHJvbFNjaGVtYSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY29tbW9uLXNlYXJjaC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIENvbW1vblNlYXJjaEZvcm1Db21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2NvbW1vblNlYXJjaFRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbW1vblNlYXJjaFRlbXBsYXRlOiBFbGVtZW50UmVmO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlRmlsdGVyOiBhbnkgPSBbXTtcbiAgICBASW5wdXQoKSBzZWFyY2hCb3hUb29sdGlwID0gJ1TDrG0ga2nhur9tIHRoZW8gY8OhYyB0csaw4budbmc6ICc7XG4gICAgQE91dHB1dCgpIG9uQ2xpY2tTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb25BZnRlclRvZ2dsZU1lbnVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIG1kV2lkdGggPSAzO1xuICAgIGxzdERyb3Bkb3duQ29udHJvbCA9IFtdO1xuICAgIGxzdERhdGV0aW1lQ29udHJvbCA9IFtdO1xuICAgIGxzdE51bWJlclJhbmdlQ29udHJvbCA9IFtdO1xuICAgIGxzdFRleHRDb250cm9sID0gW107XG4gICAgbHN0Qm9vbENvbnRyb2wgPSBbXTtcbiAgICBsc3RDb250cm9sTm90SW4gPSBbXTtcbiAgICBsc3RDb250cm9sQWRkVG9HcmlkSW5mbyA9IFtdO1xuICAgIGxzdENvbnRyb2xMYXp5TG9hZCA9IFtdO1xuICAgIGRlZmF1bHRWYWx1ZXMgPSB7fTtcbiAgICBpc0FkZERlZmF1bHRWYWx1ZXMgPSBmYWxzZTtcbiAgICBtYXBDb250cm9sQmluZGluZ0ZpbHRlciA9IG5ldyBNYXAoKTtcbiAgICBrZXl3b3JkcyA9ICcnO1xuICAgIGlzT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBpc0N1c3RvbUdlbmVyYXRlU2VhcmNoID0gZmFsc2U7XG4gICAgaXNEaXNhYmxlT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBfaW5kZXggPSAxO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1kV2lkdGggPSB0aGlzLnBhcmVudFNldHRpbmcubWRXaWR0aENvbW1vblNlYXJjaDtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5wYXJlbnRTZXR0aW5nLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmlsdGVyKHAgPT4gcC5hbGxvd0ZpbHRlciAmJiAhcC5maWVsZC5zdGFydHNXaXRoKCdzdHInKSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEub3JkZXIgPCBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGEub3JkZXIgPiBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGxzdFRleHRTZWFyY2hDb250cm9sID0gY29sdW1uRmlsdGVycy5maWx0ZXIocCA9PiBwLmZ1bGxUZXh0U2VhcmNoKTtcbiAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wgPSBsc3RUZXh0U2VhcmNoQ29udHJvbC5tYXAocCA9PiBwLmZpZWxkKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94VG9vbHRpcCArPSBgJHsobHN0VGV4dFNlYXJjaENvbnRyb2wubWFwKHggPT4geC5sYWJlbCkpLmpvaW4oJywgJyl9YDtcbiAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0N1c3RvbUdlbmVyYXRlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1TY2hlbWFDdXN0b20oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSB0aGlzLmdlbkZvcm1TY2hlbWEoY29sdW1uRmlsdGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0Rpc2FibGVPcGVuRnVsbCA9ICh0aGlzLnNldHRpbmcuc2NoZW1hLmxlbmd0aCA8PSBNYXRoLnJvdW5kKDEyIC8gKHRoaXMucGFyZW50U2V0dGluZy5tZFdpZHRoQ29tbW9uU2VhcmNoKSkpICYmICF0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdFZhbHVlcykubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldEZvcm1TY2hlbWFDdXN0b20oKSB7XG4gICAgICAgIGNvbnN0IHRvdGFsQ29udHJvbFBlclJvdyA9IDEyIC8gdGhpcy5tZFdpZHRoO1xuICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uc2hvd0xhYmVsID0gZmFsc2U7XG4gICAgICAgICAgICBjb2x1bW4ubWRXaWR0aCA9IHRoaXMubWRXaWR0aDtcbiAgICAgICAgICAgIGNvbHVtblsncGxhY2Vob2xkZXInXSA9IGNvbHVtbi5sYWJlbDtcbiAgICAgICAgICAgIGlmICghKGNvbHVtbiBpbnN0YW5jZW9mIFRleHRDb250cm9sU2NoZW1hKSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEgfHwgY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLm9uQWZ0ZXJDaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKG51bGwsIGV2dC5jb250cm9sLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5pc0FsbG93RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJiAoY29sdW1uIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERhdGVUaW1lQ29udHJvbFNjaGVtYSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZXNbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLmFkZFRvR3JpZEluZm8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xBZGRUb0dyaWRJbmZvLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbHVtbi5pc0xhenlMb2FkID0gIXRoaXMucGFyZW50U2V0dGluZy5kaXNhYmxlTGF6eUxvYWRDb21tb25TZWFyY2ggJiYgdGhpcy5faW5kZXggPiB0b3RhbENvbnRyb2xQZXJSb3dcbiAgICAgICAgICAgICAgICAmJiBjb2x1bW4gaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgJiYgISFjb2x1bW4uYmFzZVNlcnZpY2UgJiYgIShjb2x1bW4uYmFzZVNlcnZpY2UgaW5zdGFuY2VvZiBNYXN0ZXJEYXRhU2VydmljZSk7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmlzTGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYSA9IHRoaXMuYWRkU2VhcmNoQm94KHRoaXMucGFyZW50U2V0dGluZy5jb21tb25TY2hlbWFzLnNvcnQoKHByZXYsIG5leHQpID0+IHByZXYub3JkZXIgLSBuZXh0Lm9yZGVyKSk7XG4gICAgfVxuXG5cbiAgICBnZW5Gb3JtU2NoZW1hKGNvbHVtbnM6IGFueSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IFtdO1xuICAgICAgICBjb25zdCB0b3RhbENvbnRyb2xQZXJSb3cgPSAxMiAvIHRoaXMubWRXaWR0aDtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbHVtbi5pc0luVGFibGUgfHwgIWNvbHVtbi5pbmNsdWRlU2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sc3RDb250cm9sTm90SW4ucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbi5oYXNPd25Qcm9wZXJ0eSgnZGVmYXVsdFZhbHVlJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZXNbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2wgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuYm9vbGVhbjtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbFR5cGUgPT0gQ29udHJvbFR5cGUuZHJvcGRvd24gfHwgaXNCb29sIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IGNvbHVtbi5kYXRhU291cmNlO1xuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBbeyBpZDogdHJ1ZSwgdGVuOiAnQ8OzJyB9LCB7IGlkOiBmYWxzZSwgdGVuOiAnS2jDtG5nJyB9XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5iaW5kaW5nRmlsdGVycyAmJiBjb2x1bW4uYmluZGluZ0ZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYmluZGluZ0ZpbHRlcnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuc2V0KGl0ZW0uZmllbGQsIGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJhc2VTZXJ2aWNlIHx8IChkYXRhU291cmNlICYmIGRhdGFTb3VyY2UubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXp5TG9hZCA9ICF0aGlzLnBhcmVudFNldHRpbmcuZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoICYmIHRoaXMuX2luZGV4ID4gdG90YWxDb250cm9sUGVyUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhIWNvbHVtbi5iYXNlU2VydmljZSAmJiAhKGNvbHVtbi5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0Q29udHJvbExhenlMb2FkLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ucGxhY2Vob2xkZXIgPz8gYENo4buNbiAke2NvbHVtbi5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBbGxvd0Rpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiAhY29sdW1uLnNpbmdsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xhenlMb2FkOiBpc0xhenlMb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlZDogKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5ib29sZWFuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wYXJlbnRNb2RlbFtjb2x1bW4uZmllbGRdID0gY29sdW1uLnNpbmdsZSA/IGV2dC52YWx1ZS5pZCA/PyBldnQudmFsdWUgOiBldnQudmFsdWUubWFwKHAgPT4gcC5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpbmRpbmdGaWx0ZXJWYWwgPSB0aGlzLm1hcENvbnRyb2xCaW5kaW5nRmlsdGVyLmdldChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaW5kaW5nRmlsdGVyVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZ0LnZhbHVlIHx8IGV2dC52YWx1ZS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tiaW5kaW5nRmlsdGVyVmFsXS5fY29tcG9uZW50LmZpbHRlckZyb21QYXJlbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tiaW5kaW5nRmlsdGVyVmFsXS5fY29tcG9uZW50Ll9nZXREYXRhU291cmNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCghY29sdW1uLmluY2x1ZGVTZWxlY3QgfHwgIWNvbHVtbi5pc0luVGFibGUpICYmICFjb2x1bW4uZm9yY2VMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZENvbHVtbjogYW55ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ucGxhY2Vob2xkZXIgPz8gYENo4buNbiAke2NvbHVtbi5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFt1bmRlZmluZWQsIHVuZGVmaW5lZF0sXG4gICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29sdW1uLmRhdGFUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kYXRldGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93SWNvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ub25DaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBldnQuc291cmNlRXZlbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goZXZ0LnBhcmVudE1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uc2hvd1RpbWUgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuZGF0ZXRpbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRGF0ZVRpbWVSYW5nZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdERhdGV0aW1lQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS50aW1lc3BhbjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93SWNvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4udGltZU9ubHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLmRlZmF1bHRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEYXRlVGltZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuaW50OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmludFdpdGhvdXRNYXNrOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRlY2ltYWw6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuY3VycmVuY3k6XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ubWFza1R5cGUgPSBjb2x1bW4uZGF0YVR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ubWF4ID0gOTk5OTk5OTk5OTk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ub25DaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgTnVtYmVyUmFuZ2VDb250cm9sU2NoZW1hKGFkZENvbHVtbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3ROdW1iZXJSYW5nZUNvbnRyb2wucHVzaChhZGRDb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRTZWFyY2hCb3gocmVzdWx0LnNvcnQoKHByZXYsIG5leHQpID0+IHByZXYub3JkZXIgLSBuZXh0Lm9yZGVyKSk7XG4gICAgfVxuXG4gICAgYWRkU2VhcmNoQm94KGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIHJldHVybiA8Rm9ybVNjaGVtYUJhc2VbXT5jb2x1bW5zO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlYXJjaEJveCA9IG5ldyBDdXN0b21Db250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgIGZpZWxkOiAna2V5d29yZCcsXG4gICAgICAgICAgICBsYWJlbDogJ1Thu6sga2jDs2EnLFxuICAgICAgICAgICAgZnVsbExhYmVsOiAnVOG7qyBraMOzYScsXG4gICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgbWRXaWR0aDogdGhpcy5tZFdpZHRoLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBOdW1iZXIoMTIgLyB0aGlzLm1kV2lkdGgpIC0gMTtcbiAgICAgICAgaWYgKHRoaXMuX2NvbW1vblNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgY29sdW1ucy5zcGxpY2UoMCwgMCwgc2VhcmNoQm94KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb2x1bW5zLmxlbmd0aCA8IGluZGV4KSB7XG4gICAgICAgICAgICBjb2x1bW5zLnB1c2goc2VhcmNoQm94KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKGluZGV4LCAwLCBzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiA8Rm9ybVNjaGVtYUJhc2VbXT5jb2x1bW5zO1xuICAgIH1cblxuICAgIGhhbmRsZVNlYXJjaChkYXRhPzogYW55LCBmaWVsZD86IHN0cmluZykge1xuICAgICAgICBjb25zdCBmaWx0ZXJGdWxsVGV4dFNlYXJjaCA9IFtdO1xuICAgICAgICBpZiAodGhpcy5rZXl3b3JkcyAmJiB0aGlzLmxzdFRleHRDb250cm9sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxzdEZpbHRlclRleHQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBsc3RGaWx0ZXJUZXh0LnB1c2godGhpcy5uZXdGaWx0ZXIoaXRlbSwgT3BlcmF0b3IuY29udGFpbiwgdGhpcy5rZXl3b3JkcykpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmaWx0ZXJGdWxsVGV4dFNlYXJjaC5wdXNoKG5ldyBGaWx0ZXIoeyBsb2dpYzogJ29yJywgZmlsdGVyczogbHN0RmlsdGVyVGV4dCB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5tb2RlbC5kYXRhO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWRkRGVmYXVsdFZhbHVlcyAmJiBPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRWYWx1ZXMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBPYmplY3QuYXNzaWduKGRhdGEsIHRoaXMuZGVmYXVsdFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0FkZERlZmF1bHRWYWx1ZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVycyA9IHRoaXMuX2NydWRTZXJ2aWNlLmdldEZpbHRlckZyb21UZW1wbGF0ZSh0aGlzLnRlbXBsYXRlRmlsdGVyLCBkYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IGxzdEZpbHRlckFkZEN1c3RvbSA9IGxzdEZpbHRlcnMuZmlsdGVyKHAgPT4gdGhpcy5sc3RDb250cm9sQWRkVG9HcmlkSW5mby5pbmNsdWRlcyhwLmZpZWxkKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0N1c3RvbUdlbmVyYXRlU2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcnM6IGFueSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmlsdGVyRnVsbFRleHRTZWFyY2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5sc3RGaWx0ZXJBZGRDdXN0b21dLFxuICAgICAgICAgICAgICAgICAgICBkYXRhRm9ybToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiB0aGlzLmtleXdvcmRzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBycy5maWVsZEFjdGlvbiA9IGZpZWxkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xpY2tTZWFyY2guZW1pdChycyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMubHN0RHJvcGRvd25Db250cm9sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGl0ZW0pIHx8ICghZGF0YVtpdGVtXSB8fCBkYXRhW2l0ZW1dLmxlbmd0aCA8IDEpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVGaWVsZCA9IHRoaXMucGFyZW50U2V0dGluZy5jb2xzLmZpbmQocCA9PiBwLmZpZWxkID09PSBpdGVtKT8udmFsdWVGaWVsZCB8fCAnaWQnO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhW2l0ZW1dLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dID0gZGF0YVtpdGVtXS5tYXAocCA9PiBwW3ZhbHVlRmllbGRdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV0gPSBkYXRhW2l0ZW1dW3ZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubHN0Qm9vbENvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtKSB8fCAhQXJyYXkuaXNBcnJheShkYXRhW2l0ZW1dKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YVtpdGVtXS5pbmRleE9mKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXVtpbmRleF0gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbHN0RmlsdGVycyA9IHRoaXMuX2NydWRTZXJ2aWNlLmdldEZpbHRlckZyb21UZW1wbGF0ZSh0aGlzLnRlbXBsYXRlRmlsdGVyLCBkYXRhKTtcbiAgICAgICAgbHN0RmlsdGVycyA9IFsuLi5sc3RGaWx0ZXJzLCAuLi5maWx0ZXJGdWxsVGV4dFNlYXJjaF07XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge1xuICAgICAgICAgICAgZmlsdGVyczogbHN0RmlsdGVycy5maWx0ZXIocCA9PiAhdGhpcy5sc3RDb250cm9sTm90SW4uaW5jbHVkZXMocC5maWVsZCkpLFxuICAgICAgICAgICAgZGF0YUZvcm06IHtcbiAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiB0aGlzLmtleXdvcmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgcmVzdWx0LmZpZWxkQWN0aW9uID0gZmllbGQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNsaWNrU2VhcmNoLmVtaXQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcigpIHtcbiAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMuZm9ybUNvbnRyb2xzKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5mb3JtQ29udHJvbHNbcF07XG4gICAgICAgICAgICBsZXQgcmVzZXRWYWx1ZTogYW55O1xuICAgICAgICAgICAgaWYgKHRoaXMubHN0RHJvcGRvd25Db250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpICYmIGl0ZW0ubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICByZXNldFZhbHVlID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmxzdERhdGV0aW1lQ29udHJvbC5pbmNsdWRlcyhpdGVtLmZpZWxkKSB8fCB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5pbmNsdWRlcyhpdGVtLmZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHJlc2V0VmFsdWUgPSBbdW5kZWZpbmVkLCB1bmRlZmluZWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fc2V0TW9kZWxWYWx1ZShpdGVtLmZpZWxkLCByZXNldFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LWNhbGVuZGFyJykpLmZvckVhY2goZWwgPT4gZWxbJ3ZhbHVlJ10gPSAnJyk7XG4gICAgICAgIHRoaXMua2V5d29yZHMgPSBudWxsO1xuICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgIH1cblxuICAgIHRvZ2dsZU1lbnVTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuRnVsbCA9ICF0aGlzLmlzT3BlbkZ1bGw7XG4gICAgICAgIGlmICh0aGlzLmxzdENvbnRyb2xMYXp5TG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckxhenlMb2FkRHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQWZ0ZXJUb2dnbGVNZW51U2VhcmNoLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgdHJpZ2dlckxhenlMb2FkRHJvcGRvd24oKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgICAgICAgdGhpcy5sc3RDb250cm9sTGF6eUxvYWQuZm9yRWFjaChjb250cm9sID0+IHByb21pc2VzLnB1c2godGhpcy5mb3JtQ29udHJvbHNbY29udHJvbF0uX2NvbXBvbmVudC5fZ2V0RGF0YVNvdXJjZSgpKSk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgdGhpcy5sc3RDb250cm9sTGF6eUxvYWQgPSBbXTtcbiAgICB9XG5cblxuICAgIGFzeW5jIG9uRm9ybUluaXRpYWxpemVkKGZvcm1FdmVudDogRXZlbnREYXRhKSB7XG4gICAgICAgIC8vIHRp4buBbiB44butIGzDvSBk4buvIGxp4buHdSAodsOtIGThu6UgdOG7lW5nIGjhu6NwIGRhdGFzb3VyY2UpLCB0csaw4bubYyBraGkgZ+G7jWkgYXBpIGdldCBkZXRhaWxcblxuICAgIH1cblxuICAgIGFzeW5jIG1vZGlmeURldGFpbERhdGEoZGF0YSkge1xuICAgICAgICAvLyB44butIGzDvSBk4buvIGxp4buHdSBs4bqleSB04burIGdldCBkZXRhaWwgduG7gVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VhcmNoVGVtcGxhdGUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDoxMDAlO21hcmdpbi1ib3R0b206IC05cHg7Jyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -15,14 +15,12 @@ import * as i3 from "./storage-updated.service";
|
|
|
15
15
|
import * as i4 from "./module-config.service";
|
|
16
16
|
export class MasterDataService {
|
|
17
17
|
constructor(_httpClient, _commonService, _injector, _storageUpdatedService, _moduleConfigService) {
|
|
18
|
-
var _a, _b;
|
|
19
18
|
this._httpClient = _httpClient;
|
|
20
19
|
this._commonService = _commonService;
|
|
21
20
|
this._injector = _injector;
|
|
22
21
|
this._storageUpdatedService = _storageUpdatedService;
|
|
23
22
|
this._moduleConfigService = _moduleConfigService;
|
|
24
23
|
this.setupSignalr = false;
|
|
25
|
-
this.isDisabledGetCache = false;
|
|
26
24
|
this.storage = localStorage;
|
|
27
25
|
this.categoryPrefix = 'cat_';
|
|
28
26
|
this.categoryGroupPrefix = 'cat_group_';
|
|
@@ -31,7 +29,6 @@ export class MasterDataService {
|
|
|
31
29
|
this.env = this._moduleConfigService.getConfig().environment;
|
|
32
30
|
this.apiEndpoint = this.env.apiDomain.commonMasterDataEndpoint;
|
|
33
31
|
this.apiVersion = this.env.apiVersion;
|
|
34
|
-
this.isDisabledGetCache = (_b = (_a = this.env.cauHinhNghiepVu) === null || _a === void 0 ? void 0 : _a.isDisabledGetCacheCommonMasterdata) !== null && _b !== void 0 ? _b : false;
|
|
35
32
|
this.groupCategoryEndpoint = `${this.apiEndpoint}/${this.apiVersion}/Groupcategory`;
|
|
36
33
|
this.singleCategoryEndpoint = `${this.apiEndpoint}/${this.apiVersion}/SingleCategory`;
|
|
37
34
|
if (!this.setupSignalr) {
|
|
@@ -78,17 +75,7 @@ export class MasterDataService {
|
|
|
78
75
|
}
|
|
79
76
|
get(groupCode) {
|
|
80
77
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
81
|
-
|
|
82
|
-
if (this.isDisabledGetCache === true) {
|
|
83
|
-
dataSource = yield this.getAllByGroupCode(groupCode);
|
|
84
|
-
}
|
|
85
|
-
else if (!this.storage.getItem(`${this.categoryPrefix}${groupCode}`)) {
|
|
86
|
-
dataSource = yield this.getAllByGroupCode(groupCode);
|
|
87
|
-
this.storage.setItem(`${this.categoryPrefix}${groupCode}`, JSON.stringify(dataSource));
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
dataSource = JSON.parse(this.storage.getItem(`${this.categoryPrefix}${groupCode}`));
|
|
91
|
-
}
|
|
78
|
+
const dataSource = yield this.getAllByGroupCode(groupCode);
|
|
92
79
|
resolve(dataSource);
|
|
93
80
|
}));
|
|
94
81
|
}
|
|
@@ -216,7 +203,7 @@ export class MasterDataService {
|
|
|
216
203
|
return this.getData(`${this.singleCategoryEndpoint}/getData`, gridInfo);
|
|
217
204
|
});
|
|
218
205
|
}
|
|
219
|
-
// thực hiện get list singleCategory theo groupCategoryCode trên redis
|
|
206
|
+
// thực hiện get list singleCategory theo groupCategoryCode trên redis cache
|
|
220
207
|
doGetAllCustom(groupCode) {
|
|
221
208
|
return __awaiter(this, void 0, void 0, function* () {
|
|
222
209
|
const uri = `${this.singleCategoryEndpoint}/GetDataByGroupCode/${groupCode}`;
|
|
@@ -421,4 +408,4 @@ MasterDataService.ctorParameters = () => [
|
|
|
421
408
|
{ type: StorageUpdatedService },
|
|
422
409
|
{ type: ModuleConfigService }
|
|
423
410
|
];
|
|
424
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQW1CLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFLbkUsTUFBTSxPQUFPLGlCQUFpQjtJQWUxQixZQUNZLFdBQXVCLEVBQ3ZCLGNBQTZCLEVBQzdCLFNBQW1CLEVBQ25CLHNCQUE2QyxFQUM3QyxvQkFBeUM7O1FBSnpDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQUM3Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBbEJyRCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFbEIsWUFBTyxHQUFHLFlBQVksQ0FBQztRQUN2Qixt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QUUsUUFBa0I7UUFDdEMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Ozs7WUE1YkosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFkUSxVQUFVO1lBTVYsYUFBYTtZQUxELFFBQVE7WUFPcEIscUJBQXFCO1lBRHJCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hc3RlckRhdGFJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL21hc3Rlci1kYXRhLWl0ZW0nO1xuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlVXBkYXRlZFNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2UtdXBkYXRlZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlciwgR3JpZEluZm8gfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1pbmZvJztcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9ucywgT3BlcmF0b3IgfSBmcm9tICcuLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNYXN0ZXJEYXRhU2VydmljZSB7XG5cbiAgICBzZXR1cFNpZ25hbHIgPSBmYWxzZTtcbiAgICBpc0Rpc2FibGVkR2V0Q2FjaGUgPSBmYWxzZTtcbiAgICBhcGlFbmRwb2ludDogYW55O1xuICAgIHJlYWRvbmx5IHN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2U7XG4gICAgcmVhZG9ubHkgY2F0ZWdvcnlQcmVmaXggPSAnY2F0Xyc7XG4gICAgcmVhZG9ubHkgY2F0ZWdvcnlHcm91cFByZWZpeCA9ICdjYXRfZ3JvdXBfJztcbiAgICByZWFkb25seSBhZG1pbmlzdHJhdGl2ZVVuaXQgPSAnYWRtaW5pc3RyYXRpdmVfdW5pdF8nO1xuICAgIHJlYWRvbmx5IGFkbWluaXN0cmF0aXZlVW5pdEl0ZW0gPSAnYWRtaW5pc3RyYXRpdmVfaXRlbV91bml0Xyc7XG4gICAgcmVhZG9ubHkgZ3JvdXBDYXRlZ29yeUVuZHBvaW50O1xuICAgIHJlYWRvbmx5IHNpbmdsZUNhdGVnb3J5RW5kcG9pbnQ7XG4gICAgcmVhZG9ubHkgYXBpVmVyc2lvbjtcbiAgICByZWFkb25seSBlbnY7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIF9zdG9yYWdlVXBkYXRlZFNlcnZpY2U6IFN0b3JhZ2VVcGRhdGVkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmVudiA9IHRoaXMuX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuYXBpRW5kcG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW4uY29tbW9uTWFzdGVyRGF0YUVuZHBvaW50O1xuXG4gICAgICAgIHRoaXMuYXBpVmVyc2lvbiA9IHRoaXMuZW52LmFwaVZlcnNpb247XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZEdldENhY2hlID0gdGhpcy5lbnYuY2F1SGluaE5naGllcFZ1Py5pc0Rpc2FibGVkR2V0Q2FjaGVDb21tb25NYXN0ZXJkYXRhID8/IGZhbHNlO1xuICAgICAgICB0aGlzLmdyb3VwQ2F0ZWdvcnlFbmRwb2ludCA9IGAke3RoaXMuYXBpRW5kcG9pbnR9LyR7dGhpcy5hcGlWZXJzaW9ufS9Hcm91cGNhdGVnb3J5YDtcbiAgICAgICAgdGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50ID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vJHt0aGlzLmFwaVZlcnNpb259L1NpbmdsZUNhdGVnb3J5YDtcblxuICAgICAgICBpZiAoIXRoaXMuc2V0dXBTaWduYWxyKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlVXBkYXRlZFNlcnZpY2Uuc3Vic2NyaWJlQ2hhbmdlZExvY2FsU3RvcmFnZSgnY2F0XyonLCBhc3luYyAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhT2JqO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBkYXRhT2JqID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRhT2JqID0gZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YVNvdXJjZTogTWFzdGVyRGF0YUl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZGF0YU9iai5tZXNzYWdlLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50LmluZGV4T2YodGhpcy5jYXRlZ29yeUdyb3VwUHJlZml4KSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBncm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBDb2RlID0gZGF0YU9iai5tZXNzYWdlLmNvbnRlbnQucmVwbGFjZSh0aGlzLmNhdGVnb3J5R3JvdXBQcmVmaXgsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0R3JvdXBJdGVtQnlDb2RlKGdyb3VwQ29kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5R3JvdXBQcmVmaXh9JHtncm91cENvZGV9YCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpbmdsZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBDb2RlID0gZGF0YU9iai5tZXNzYWdlLmNvbnRlbnQucmVwbGFjZSh0aGlzLmNhdGVnb3J5UHJlZml4LCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvR2V0QWxsKGdyb3VwQ29kZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5kYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZS5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiBlbGVtZW50LmlkLCBjb2RlOiBlbGVtZW50LmNvZGUsIG5hbWU6IGVsZW1lbnQubmFtZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCwgSlNPTi5zdHJpbmdpZnkoZGF0YVNvdXJjZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0dXBTaWduYWxyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBnZXRBbGxCeUdyb3VwQ29kZShncm91cENvZGU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBkYXRhU291cmNlOiBNYXN0ZXJEYXRhSXRlbVtdID0gW107XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZG9HZXRBbGxDdXN0b20oZ3JvdXBDb2RlKTtcbiAgICAgICAgcmVzdWx0LmRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2UucHVzaChcbiAgICAgICAgICAgICAgICB7IGlkOiBlbGVtZW50LmlkLCBjb2RlOiBlbGVtZW50LmNvZGUsIG5hbWU6IGVsZW1lbnQubmFtZSB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgZ2V0KGdyb3VwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxNYXN0ZXJEYXRhSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBsZXQgZGF0YVNvdXJjZTogTWFzdGVyRGF0YUl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZEdldENhY2hlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IGF3YWl0IHRoaXMuZ2V0QWxsQnlHcm91cENvZGUoZ3JvdXBDb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKSB7XG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IGF3YWl0IHRoaXMuZ2V0QWxsQnlHcm91cENvZGUoZ3JvdXBDb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KGRhdGFTb3VyY2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRDb25maWdCeUNvZGUoY29kZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGxldCBjb25maWcgPSAnJztcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yYWdlLmdldEl0ZW0oY29kZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvR2V0Q29uZmlnQnlDb2RlKGNvZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGNvZGUsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XG5cbiAgICAgICAgICAgICAgICBjb25maWcgPSA8c3RyaW5nPnJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uZmlnID0gPHN0cmluZz5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGNvZGUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzb2x2ZShjb25maWcpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREcm9wZG93bihncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8U2VsZWN0SXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpLnRoZW4oc291cmNlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcCA9IHNvdXJjZS5tYXAoeCA9PiA8U2VsZWN0SXRlbT57IHRpdGxlOiB4Lm5hbWUsIGxhYmVsOiB4Lm5hbWUsIHZhbHVlOiB4LmNvZGUgfSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcCk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPFNlbGVjdEl0ZW1bXT5bXSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRETUNodW5nRHJvcGRvd24oY29kZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGAke3RoaXMuc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludH0vR2V0QnlGaWx0ZXJDb2RlQW5kTmFtZUJ5R3JvdXBDb2RlLyR7Y29kZX1gKVxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbXMoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNlbGVjdEl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKS50aGVuKHNvdXJjZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBzb3VyY2UubWFwKHggPT4gPFNlbGVjdEl0ZW0+eyBsYWJlbDogeC5uYW1lLCB2YWx1ZTogeC5jb2RlIH0pO1xuICAgICAgICAgICAgICAgIHJlc29sdmUob3ApO1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4gcmVqZWN0KDxTZWxlY3RJdGVtW10+W10pKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gZ2V0R3JvdXBCeUNvZGUoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgLy8gICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gICAgICAgICB0aGlzLmdldChncm91cENvZGUpLnRoZW4oc291cmNlID0+IHtcbiAgICAvLyAgICAgICAgICAgICByZXNvbHZlKHNvdXJjZSk7XG4gICAgLy8gICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPGFueVtdPltdKSk7XG4gICAgLy8gICAgIH0pO1xuICAgIC8vIH1cblxuICAgIGdldERyb3Bkb3duQWRkcmVzcyhpZCwgbGV2ZWwgPSAxKTogUHJvbWlzZTxTZWxlY3RJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0QWRkcmVzcyhpZCwgbGV2ZWwpLnRoZW4oc291cmNlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcCA9IHNvdXJjZS5tYXAoeCA9PiA8U2VsZWN0SXRlbT57IHRpdGxlOiB4Lm5hbWUsIGxhYmVsOiB4Lm5hbWUsIHZhbHVlOiB4LmNvZGUgfSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcCk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPFNlbGVjdEl0ZW1bXT5bXSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBZGRyZXNzKGlkLCBsZXZlbCA9IDEpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGxldCBkYXRhU291cmNlOiBNYXN0ZXJEYXRhSXRlbVtdID0gW107XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0fS5MZXZlbCR7bGV2ZWx9LiR7aWR9YCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvZ2V0QWRkcmVzcyhpZCwgbGV2ZWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0fS5MZXZlbCR7bGV2ZWx9LiR7aWR9YCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+cmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0fS5MZXZlbCR7bGV2ZWx9LiR7aWR9YCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRXYXJkc0J5c3RyZWV0KHN0cmVldE5hbWU6IHN0cmluZywgZGlzdHJpY3RDb2RlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdHJlZXRzID0gYXdhaXQgdGhpcy5nZXRBZGRyZXNzKGRpc3RyaWN0Q29kZSwgMik7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRJZHMgPSBzdHJlZXRzLmZpbHRlcih4ID0+IHgubmFtZSA9PSBzdHJlZXROYW1lKS5tYXAoeCA9PiB4LnBhcmVudElkKTtcbiAgICAgICAgICAgIHJlc29sdmUocGFyZW50SWRzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZG9nZXRBZGRyZXNzKGlkOiBzdHJpbmcsIGxldmVsID0gMSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgY29uc3Qgc2VydmljZVVyaSA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0NpdHlDYXRlZ29yeS9HZXRCeVBhcmVudElkLyR7aWR9P2xldmVsPSR7bGV2ZWx9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbURldGFpbFVuaXQoaWQ6IHN0cmluZyk6IFByb21pc2U8TWFzdGVyRGF0YUl0ZW0+IHtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgbGV0IGl0ZW1EYXRhOiBNYXN0ZXJEYXRhSXRlbSA9IG5ldyBNYXN0ZXJEYXRhSXRlbSgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdEl0ZW19JHtpZH1gKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9DaXR5Q2F0ZWdvcnkvR2V0QnlDb2RlLyR7aWR9YDtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oc2VydmljZVVyaSlcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXG4gICAgICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0SXRlbX0ke2lkfWAsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XG5cbiAgICAgICAgICAgICAgICBpdGVtRGF0YSA9IDxNYXN0ZXJEYXRhSXRlbT5yZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbURhdGEgPSA8TWFzdGVyRGF0YUl0ZW0+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdEl0ZW19JHtpZH1gKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc29sdmUoaXRlbURhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRvR2V0Q29uZmlnQnlDb2RlKGNvZGU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIC8vICBUT0RPOiBkbyBoaeG7h24gZ2nhu50ga28gZMO5bmcgbsOqbiBmaXggdOG6oW0gdmFsdWUsIHNhdSBz4bq9IHjhu60gbMO9IHRp4bq/cFxuICAgICAgICAgICAgcmVzb2x2ZSg8UmVzcG9uc2VSZXN1bHQ+eyBkYXRhOiB7fSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Db25maWd1cmF0aW9uU2VydmljZS9HZXRWYWx1ZUJ5Q29kZT9jb2RlPSR7Y29kZX1gO1xuXG4gICAgICAgIC8vIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oc2VydmljZVVyaSlcbiAgICAgICAgLy8gICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxuICAgICAgICAvLyAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZG9HZXRBbGwoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gYXdhaXQgdGhpcy5nZXRHcm91cEJ5Q29kZShncm91cENvZGUpO1xuICAgICAgICBpZiAoIWdyb3VwLmRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSg8UmVzcG9uc2VSZXN1bHQ+eyBzdWNjZXNzOiB0cnVlLCBkYXRhOiBbXSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyaWRJbmZvID0gbmV3IEdyaWRJbmZvKHtcbiAgICAgICAgICAgIGZpZWxkczogJycsXG4gICAgICAgICAgICBwYWdlSW5mbzoge1xuICAgICAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwMDAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNvcnRzOiBbeyBmaWVsZDogJ3NvcnQnLCBkaXI6IDEgfV0sXG4gICAgICAgICAgICBmaWx0ZXJzOiBbdGhpcy5fY29tbW9uU2VydmljZS5uZXdGaWx0ZXIoJ2dyb3VwQ2F0ZWdvcnlJZCcsIE9wZXJhdG9yLmVxdWFsLCBncm91cC5kYXRhLmlkKV1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YShgJHt0aGlzLnNpbmdsZUNhdGVnb3J5RW5kcG9pbnR9L2dldERhdGFgLCBncmlkSW5mbyk7XG4gICAgfVxuXG4gICAgLy8gdGjhu7FjIGhp4buHbiBnZXQgbGlzdCBzaW5nbGVDYXRlZ29yeSB0aGVvIGdyb3VwQ2F0ZWdvcnlDb2RlIHRyw6puIHJlZGlzXG4gICAgcHJpdmF0ZSBhc3luYyBkb0dldEFsbEN1c3RvbShncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgdXJpID0gYCR7dGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50fS9HZXREYXRhQnlHcm91cENvZGUvJHtncm91cENvZGV9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0Pih1cmkpLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0YSh1cmksIGdyaWRJbmZvOiBHcmlkSW5mbyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQucG9zdDxSZXNwb25zZVJlc3VsdD4odXJpLCBncmlkSW5mbykudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRHcm91cEJ5Q29kZShncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgdXJpID0gYCR7dGhpcy5ncm91cENhdGVnb3J5RW5kcG9pbnR9L2dldEJ5Q29kZS8ke2dyb3VwQ29kZX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVyaSkudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgYWRkV29ya0RheXMoZGF0ZTogc3RyaW5nLCBkYXlzOiBudW1iZXIsIGlzRGF5ID0gMSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgY29uc3Qgc2VydmljZVVyaSA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0hvbGlkYXlDYXRlZ29yeS9HZXREYXRlP2RhdGU9JHtkYXRlfSZkYXlzPSR7ZGF5c30maXNEYXk9JHtpc0RheX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHNlcnZpY2VVcmkpXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBnZXREYXRlQnlEdXJhdGlvbihkYXRlOiBzdHJpbmcsIHR5cGU6IGJvb2xlYW4sIGR1cmF0aW9uOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Ib2xpZGF5Q2F0ZWdvcnkvZ2V0RGF0ZUJ5RHVyYXRpb24/ZGF0ZT0ke2RhdGV9JnR5cGU9JHt0eXBlfSZkdXJhdGlvbj0ke2R1cmF0aW9ufWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oc2VydmljZVVyaSlcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIGdldEl0ZW1CeUNvZGUoZGF0YVNvdXJjZTogYW55LCBjb2RlOiBzdHJpbmcpOiBNYXN0ZXJEYXRhSXRlbSB7XG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmZpbmQoeCA9PiB4LmNvZGUgPT09IGNvZGUpO1xuICAgIH1cblxuICAgIGdldEl0ZW1CeUluc3RhbmNlSWQoZGF0YVNvdXJjZTogYW55LCBpbnN0YW5jZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2UuZmluZCh4ID0+IHguaW5zdGFuY2VJZCA9PT0gaW5zdGFuY2VJZCk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUJ5SWQoZGF0YVNvdXJjZTogYW55LCBpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmZpbmQoeCA9PiB4LmlkID09PSBpZCk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUJ5R3JvdXBBbmRDb2RlKGdyb3VwQ29kZTogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBsZXQgZGF0YVNvdXJjZTogTWFzdGVyRGF0YUl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kb0dldEFsbChncm91cENvZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+cmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UuZmluZCh4ID0+IHguY29kZSA9PT0gY29kZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWZyZXNoQ2F0ZWdvcnkoKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGxvY2FsU3RvcmFnZSkge1xuICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKHRoaXMuY2F0ZWdvcnlQcmVmaXgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cENvZGUgPSBrZXkuc3BsaXQoJ18nKVsxXTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldEFkcmVzcyhjaXR5OiBhbnksIGRpc3RyaWN0OiBhbnksIHdhcmQ6IGFueSwgc3RyZWV0OiBhbnksIHN0clRleHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBsZXQgc3RyUmVzdWx0ID0gJyc7XG4gICAgICAgICAgICBpZiAoc3RyVGV4dCAmJiBzdHJUZXh0ICE9ICcnKSB7XG4gICAgICAgICAgICAgICAgc3RyUmVzdWx0ICs9IHN0clRleHQgKyAnLCAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0cmVldCAmJiBzdHJlZXQgIT0gJycpIHtcbiAgICAgICAgICAgICAgICBzdHJSZXN1bHQgKz0gc3RyZWV0ICsgJywgJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhcmQgJiYgd2FyZCAhPSAnJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHggPSBhd2FpdCB0aGlzLmdldEl0ZW1EZXRhaWxVbml0KHdhcmQpO1xuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWUgKyAnLCAnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRpc3RyaWN0ICYmIGRpc3RyaWN0ICE9ICcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IGF3YWl0IHRoaXMuZ2V0SXRlbURldGFpbFVuaXQoZGlzdHJpY3QpO1xuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWUgKyAnLCAnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNpdHkgJiYgY2l0eSAhPSAnJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHggPSBhd2FpdCB0aGlzLmdldEl0ZW1EZXRhaWxVbml0KGNpdHkpO1xuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHN0clJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFZhbHVlQnlDb2RlKGNvZGU6IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50fS9nZXRWYWx1ZUJ5Q29kZT9jb2RlPSR7Y29kZX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVybClcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIGdldEdyb3VwSXRlbUJ5Q29kZShjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0dyb3VwQ2F0ZWdvcnkvJHtjb2RlfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4odXJsKS5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIHBhcnNlTWF0aEV4cHJlc3Npb24oZXhwcmVzc2lvbjogc3RyaW5nLCBkZWNpbWFsUGxhY2VzOiBudW1iZXIsIGZvclZpZXRuYW1lc2U6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xuICAgICAgICBleHByZXNzaW9uID0gZW5jb2RlVVJJQ29tcG9uZW50KGV4cHJlc3Npb24pO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9NYXRoRXhwcmVzc2lvbi9QYXJzZU1hdGg/ZXhwcmVzc2lvbj0ke2V4cHJlc3Npb259JmRlY2ltYWxQbGFjZXM9JHtkZWNpbWFsUGxhY2VzfSZmb3JWaWV0bmFtZXNlPSR7Zm9yVmlldG5hbWVzZX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVybClcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIGdldEJ5R3JpZFJlcXVlc3QoZ3JvdXBDb2RlOiBzdHJpbmcsIGdyaWRJbmZvOiBHcmlkSW5mbywgcGx1c1VybDogc3RyaW5nID0gJycpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBsZXQgZGF0YTogYW55O1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0b3JhZ2UgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApO1xuICAgICAgICAgICAgaWYgKCFkYXRhU3RvcmFnZSkge1xuICAgICAgICAgICAgICAgIGxldCBhcGlVcmwgPSBgJHt0aGlzLnNpbmdsZUNhdGVnb3J5RW5kcG9pbnR9L2dldERhdGFgO1xuICAgICAgICAgICAgICAgIGlmIChwbHVzVXJsICE9IG51bGwgJiYgcGx1c1VybCAhPSAnJylcbiAgICAgICAgICAgICAgICAgICAgYXBpVXJsICs9ICcvJyArIHBsdXNVcmw7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGF3YWl0IHRoaXMuX2h0dHBDbGllbnRcbiAgICAgICAgICAgICAgICAgICAgLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybCwgZ3JpZEluZm8pXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKS50b1Byb21pc2UoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCwgSlNPTi5zdHJpbmdpZnkoZGF0YS5kYXRhKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnBhcnNlKGRhdGFTdG9yYWdlKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVHcmlkSW5mb0Ryb3Bkb3duKGZpbHRlcnM6IEZpbHRlcltdLCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSB7XG4gICAgICAgICAgICBwYWdlSW5mbzoge1xuICAgICAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwMDAwMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICBzb3J0czogW10sXG4gICAgICAgICAgICBmaWVsZHM6IGAke29wdGlvbnMudmFsdWVGaWVsZH0ke29wdGlvbnMuZGlzcGxheUZpZWxkID09IG9wdGlvbnMudmFsdWVGaWVsZCA/ICcnIDogJywnICsgb3B0aW9ucy5kaXNwbGF5RmllbGR9JHtvcHRpb25zLmZpZWxkUGx1c31gXG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydHMgIT0gbnVsbCAmJiBvcHRpb25zLnNvcnRzLmxlbmd0aCA+IDApXG4gICAgICAgICAgICBncmlkSW5mby5zb3J0cyA9IFsuLi5vcHRpb25zLnNvcnRzXTtcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydEZpZWxkICE9IG51bGwgJiYgb3B0aW9ucy5zb3J0RmllbGQgIT0gJycpXG4gICAgICAgICAgICBncmlkSW5mby5zb3J0cy5wdXNoKHsgZmllbGQ6IG9wdGlvbnMuc29ydEZpZWxkLCBkaXI6IG9wdGlvbnMuc29ydERpciB9KTtcbiAgICAgICAgcmV0dXJuIGdyaWRJbmZvO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFZhbHVlKG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucy5maWVsZFBsdXMubGVuZ3RoID4gMCAmJiAhb3B0aW9ucy5maWVsZFBsdXMuc3RhcnRzV2l0aCgnLCcpKVxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZFBsdXMgPSAnLCcgKyBvcHRpb25zLmZpZWxkUGx1cztcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydEZpZWxkID09ICcnKVxuICAgICAgICAgICAgb3B0aW9ucy5zb3J0RmllbGQgPSBvcHRpb25zLmRpc3BsYXlGaWVsZDtcbiAgICAgICAgaWYgKG9wdGlvbnMuZnVuY0dldExhYmVsID09IG51bGwgfHwgdHlwZW9mIG9wdGlvbnMuZnVuY0dldExhYmVsICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuZnVuY0dldExhYmVsID0gKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVtvcHRpb25zLmRpc3BsYXlGaWVsZF07XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RGF0YURyb3Bkb3duKGdyb3VwQ29kZTogc3RyaW5nLCBhcnJWYWx1ZTogYW55W10sIG9wdGlvbnM/OiBEcm9wZG93bk9wdGlvbnMpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChhcnJWYWx1ZSA9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXM7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXMuZmlsdGVyKHggPT4gYXJyVmFsdWUuc29tZSh2ID0+IHYgPT0geFtvcHRpb25zLnZhbHVlRmllbGRdKSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoZ3JvdXBDb2RlOiBzdHJpbmcsIGFyclZhbHVlOiBhbnlbXSwgZmlsdGVyczogRmlsdGVyW10sIG9wdGlvbnM/OiBEcm9wZG93bk9wdGlvbnMpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKG9wdGlvbnMpO1xuICAgICAgICBmaWx0ZXJzLnNwbGljZSgwLCAwLCB0aGlzLl9jb21tb25TZXJ2aWNlLm5ld0ZpbHRlcignZ3JvdXBDYXRlZ29yeUNvZGUnLCBPcGVyYXRvci5lcXVhbCwgZ3JvdXBDb2RlKSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXJyVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzLmZpbHRlcih4ID0+IGFyclZhbHVlLnNvbWUodiA9PiB2ID09IHhbb3B0aW9ucy52YWx1ZUZpZWxkXSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvcjogYW55LCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgY29uc3QgY29tbW9uU2VydmljZSA9IGluamVjdG9yLmdldChDb21tb25TZXJ2aWNlKTtcbiAgICAgICAgcmV0dXJuIGNvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyb3IsIGluamVjdG9yKTtcbiAgICB9XG59XG4iXX0=
|
|
411
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQW1CLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFLbkUsTUFBTSxPQUFPLGlCQUFpQjtJQWMxQixZQUNZLFdBQXVCLEVBQ3ZCLGNBQTZCLEVBQzdCLFNBQW1CLEVBQ25CLHNCQUE2QyxFQUM3QyxvQkFBeUM7UUFKekMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFqQnJELGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRVosWUFBTyxHQUFHLFlBQVksQ0FBQztRQUN2QixtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQUN4Qix3QkFB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QUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDNUU7Z0JBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVLEVBQUUsUUFBa0I7UUFDdEMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Ozs7WUEvYUosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFkUSxVQUFVO1lBTVYsYUFBYTtZQUxELFFBQVE7WUFPcEIscUJBQXFCO1lBRHJCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hc3RlckRhdGFJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL21hc3Rlci1kYXRhLWl0ZW0nO1xuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlVXBkYXRlZFNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2UtdXBkYXRlZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlciwgR3JpZEluZm8gfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1pbmZvJztcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9ucywgT3BlcmF0b3IgfSBmcm9tICcuLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNYXN0ZXJEYXRhU2VydmljZSB7XG5cbiAgICBzZXR1cFNpZ25hbHIgPSBmYWxzZTtcbiAgICBhcGlFbmRwb2ludDogYW55O1xuICAgIHJlYWRvbmx5IHN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2U7XG4gICAgcmVhZG9ubHkgY2F0ZWdvcnlQcmVmaXggPSAnY2F0Xyc7XG4gICAgcmVhZG9ubHkgY2F0ZWdvcnlHcm91cFByZWZpeCA9ICdjYXRfZ3JvdXBfJztcbiAgICByZWFkb25seSBhZG1pbmlzdHJhdGl2ZVVuaXQgPSAnYWRtaW5pc3RyYXRpdmVfdW5pdF8nO1xuICAgIHJlYWRvbmx5IGFkbWluaXN0cmF0aXZlVW5pdEl0ZW0gPSAnYWRtaW5pc3RyYXRpdmVfaXRlbV91bml0Xyc7XG4gICAgcmVhZG9ubHkgZ3JvdXBDYXRlZ29yeUVuZHBvaW50O1xuICAgIHJlYWRvbmx5IHNpbmdsZUNhdGVnb3J5RW5kcG9pbnQ7XG4gICAgcmVhZG9ubHkgYXBpVmVyc2lvbjtcbiAgICByZWFkb25seSBlbnY7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIF9zdG9yYWdlVXBkYXRlZFNlcnZpY2U6IFN0b3JhZ2VVcGRhdGVkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmVudiA9IHRoaXMuX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuYXBpRW5kcG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW4uY29tbW9uTWFzdGVyRGF0YUVuZHBvaW50O1xuXG4gICAgICAgIHRoaXMuYXBpVmVyc2lvbiA9IHRoaXMuZW52LmFwaVZlcnNpb247XG4gICAgICAgIHRoaXMuZ3JvdXBDYXRlZ29yeUVuZHBvaW50ID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vJHt0aGlzLmFwaVZlcnNpb259L0dyb3VwY2F0ZWdvcnlgO1xuICAgICAgICB0aGlzLnNpbmdsZUNhdGVnb3J5RW5kcG9pbnQgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS8ke3RoaXMuYXBpVmVyc2lvbn0vU2luZ2xlQ2F0ZWdvcnlgO1xuXG4gICAgICAgIGlmICghdGhpcy5zZXR1cFNpZ25hbHIpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2VVcGRhdGVkU2VydmljZS5zdWJzY3JpYmVDaGFuZ2VkTG9jYWxTdG9yYWdlKCdjYXRfKicsIGFzeW5jIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFPYmo7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFPYmogPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFPYmogPSBkYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGF0YU9iaikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhU291cmNlOiBNYXN0ZXJEYXRhSXRlbVtdID0gW107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBkYXRhT2JqLm1lc3NhZ2UuY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQuaW5kZXhPZih0aGlzLmNhdGVnb3J5R3JvdXBQcmVmaXgpID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cENvZGUgPSBkYXRhT2JqLm1lc3NhZ2UuY29udGVudC5yZXBsYWNlKHRoaXMuY2F0ZWdvcnlHcm91cFByZWZpeCwgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRHcm91cEl0ZW1CeUNvZGUoZ3JvdXBDb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlHcm91cFByZWZpeH0ke2dyb3VwQ29kZX1gLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2luZ2xlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cENvZGUgPSBkYXRhT2JqLm1lc3NhZ2UuY29udGVudC5yZXBsYWNlKHRoaXMuY2F0ZWdvcnlQcmVmaXgsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZG9HZXRBbGwoZ3JvdXBDb2RlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IGVsZW1lbnQuaWQsIGNvZGU6IGVsZW1lbnQuY29kZSwgbmFtZTogZWxlbWVudC5uYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5jYXRlZ29yeVByZWZpeH0ke2dyb3VwQ29kZX1gLCBKU09OLnN0cmluZ2lmeShkYXRhU291cmNlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5zZXR1cFNpZ25hbHIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGdldEFsbEJ5R3JvdXBDb2RlKGdyb3VwQ29kZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2U6IE1hc3RlckRhdGFJdGVtW10gPSBbXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kb0dldEFsbEN1c3RvbShncm91cENvZGUpO1xuICAgICAgICByZXN1bHQuZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgZGF0YVNvdXJjZS5wdXNoKFxuICAgICAgICAgICAgICAgIHsgaWQ6IGVsZW1lbnQuaWQsIGNvZGU6IGVsZW1lbnQuY29kZSwgbmFtZTogZWxlbWVudC5uYW1lIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICBnZXQoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmdldEFsbEJ5R3JvdXBDb2RlKGdyb3VwQ29kZSk7XG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRDb25maWdCeUNvZGUoY29kZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGxldCBjb25maWcgPSAnJztcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yYWdlLmdldEl0ZW0oY29kZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvR2V0Q29uZmlnQnlDb2RlKGNvZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGNvZGUsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XG5cbiAgICAgICAgICAgICAgICBjb25maWcgPSA8c3RyaW5nPnJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uZmlnID0gPHN0cmluZz5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGNvZGUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzb2x2ZShjb25maWcpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREcm9wZG93bihncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8U2VsZWN0SXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpLnRoZW4oc291cmNlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcCA9IHNvdXJjZS5tYXAoeCA9PiA8U2VsZWN0SXRlbT57IHRpdGxlOiB4Lm5hbWUsIGxhYmVsOiB4Lm5hbWUsIHZhbHVlOiB4LmNvZGUgfSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcCk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPFNlbGVjdEl0ZW1bXT5bXSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRETUNodW5nRHJvcGRvd24oY29kZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGAke3RoaXMuc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludH0vR2V0QnlGaWx0ZXJDb2RlQW5kTmFtZUJ5R3JvdXBDb2RlLyR7Y29kZX1gKVxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbXMoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNlbGVjdEl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKS50aGVuKHNvdXJjZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBzb3VyY2UubWFwKHggPT4gPFNlbGVjdEl0ZW0+eyBsYWJlbDogeC5uYW1lLCB2YWx1ZTogeC5jb2RlIH0pO1xuICAgICAgICAgICAgICAgIHJlc29sdmUob3ApO1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4gcmVqZWN0KDxTZWxlY3RJdGVtW10+W10pKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gZ2V0R3JvdXBCeUNvZGUoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgLy8gICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gICAgICAgICB0aGlzLmdldChncm91cENvZGUpLnRoZW4oc291cmNlID0+IHtcbiAgICAvLyAgICAgICAgICAgICByZXNvbHZlKHNvdXJjZSk7XG4gICAgLy8gICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPGFueVtdPltdKSk7XG4gICAgLy8gICAgIH0pO1xuICAgIC8vIH1cblxuICAgIGdldERyb3Bkb3duQWRkcmVzcyhpZCwgbGV2ZWwgPSAxKTogUHJvbWlzZTxTZWxlY3RJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0QWRkcmVzcyhpZCwgbGV2ZWwpLnRoZW4oc291cmNlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcCA9IHNvdXJjZS5tYXAoeCA9PiA8U2VsZWN0SXRlbT57IHRpdGxlOiB4Lm5hbWUsIGxhYmVsOiB4Lm5hbWUsIHZhbHVlOiB4LmNvZGUgfSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcCk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPFNlbGVjdEl0ZW1bXT5bXSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBZGRyZXNzKGlkLCBsZXZlbCA9IDEpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGxldCBkYXRhU291cmNlOiBNYXN0ZXJEYXRhSXRlbVtdID0gW107XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0fS5MZXZlbCR7bGV2ZWx9LiR7aWR9YCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvZ2V0QWRkcmVzcyhpZCwgbGV2ZWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0fS5MZXZlbCR7bGV2ZWx9LiR7aWR9YCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+cmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0fS5MZXZlbCR7bGV2ZWx9LiR7aWR9YCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRXYXJkc0J5c3RyZWV0KHN0cmVldE5hbWU6IHN0cmluZywgZGlzdHJpY3RDb2RlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdHJlZXRzID0gYXdhaXQgdGhpcy5nZXRBZGRyZXNzKGRpc3RyaWN0Q29kZSwgMik7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRJZHMgPSBzdHJlZXRzLmZpbHRlcih4ID0+IHgubmFtZSA9PSBzdHJlZXROYW1lKS5tYXAoeCA9PiB4LnBhcmVudElkKTtcbiAgICAgICAgICAgIHJlc29sdmUocGFyZW50SWRzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZG9nZXRBZGRyZXNzKGlkOiBzdHJpbmcsIGxldmVsID0gMSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgY29uc3Qgc2VydmljZVVyaSA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0NpdHlDYXRlZ29yeS9HZXRCeVBhcmVudElkLyR7aWR9P2xldmVsPSR7bGV2ZWx9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbURldGFpbFVuaXQoaWQ6IHN0cmluZyk6IFByb21pc2U8TWFzdGVyRGF0YUl0ZW0+IHtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgbGV0IGl0ZW1EYXRhOiBNYXN0ZXJEYXRhSXRlbSA9IG5ldyBNYXN0ZXJEYXRhSXRlbSgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdEl0ZW19JHtpZH1gKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9DaXR5Q2F0ZWdvcnkvR2V0QnlDb2RlLyR7aWR9YDtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oc2VydmljZVVyaSlcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXG4gICAgICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0SXRlbX0ke2lkfWAsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XG5cbiAgICAgICAgICAgICAgICBpdGVtRGF0YSA9IDxNYXN0ZXJEYXRhSXRlbT5yZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbURhdGEgPSA8TWFzdGVyRGF0YUl0ZW0+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdEl0ZW19JHtpZH1gKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc29sdmUoaXRlbURhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRvR2V0Q29uZmlnQnlDb2RlKGNvZGU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIC8vICBUT0RPOiBkbyBoaeG7h24gZ2nhu50ga28gZMO5bmcgbsOqbiBmaXggdOG6oW0gdmFsdWUsIHNhdSBz4bq9IHjhu60gbMO9IHRp4bq/cFxuICAgICAgICAgICAgcmVzb2x2ZSg8UmVzcG9uc2VSZXN1bHQ+eyBkYXRhOiB7fSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Db25maWd1cmF0aW9uU2VydmljZS9HZXRWYWx1ZUJ5Q29kZT9jb2RlPSR7Y29kZX1gO1xuXG4gICAgICAgIC8vIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oc2VydmljZVVyaSlcbiAgICAgICAgLy8gICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxuICAgICAgICAvLyAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZG9HZXRBbGwoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gYXdhaXQgdGhpcy5nZXRHcm91cEJ5Q29kZShncm91cENvZGUpO1xuICAgICAgICBpZiAoIWdyb3VwLmRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSg8UmVzcG9uc2VSZXN1bHQ+eyBzdWNjZXNzOiB0cnVlLCBkYXRhOiBbXSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyaWRJbmZvID0gbmV3IEdyaWRJbmZvKHtcbiAgICAgICAgICAgIGZpZWxkczogJycsXG4gICAgICAgICAgICBwYWdlSW5mbzoge1xuICAgICAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwMDAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNvcnRzOiBbeyBmaWVsZDogJ3NvcnQnLCBkaXI6IDEgfV0sXG4gICAgICAgICAgICBmaWx0ZXJzOiBbdGhpcy5fY29tbW9uU2VydmljZS5uZXdGaWx0ZXIoJ2dyb3VwQ2F0ZWdvcnlJZCcsIE9wZXJhdG9yLmVxdWFsLCBncm91cC5kYXRhLmlkKV1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YShgJHt0aGlzLnNpbmdsZUNhdGVnb3J5RW5kcG9pbnR9L2dldERhdGFgLCBncmlkSW5mbyk7XG4gICAgfVxuXG4gICAgLy8gdGjhu7FjIGhp4buHbiBnZXQgbGlzdCBzaW5nbGVDYXRlZ29yeSB0aGVvIGdyb3VwQ2F0ZWdvcnlDb2RlIHRyw6puIHJlZGlzIGNhY2hlXG4gICAgcHJpdmF0ZSBhc3luYyBkb0dldEFsbEN1c3RvbShncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgdXJpID0gYCR7dGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50fS9HZXREYXRhQnlHcm91cENvZGUvJHtncm91cENvZGV9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0Pih1cmkpLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0YSh1cmksIGdyaWRJbmZvOiBHcmlkSW5mbyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQucG9zdDxSZXNwb25zZVJlc3VsdD4odXJpLCBncmlkSW5mbykudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRHcm91cEJ5Q29kZShncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgdXJpID0gYCR7dGhpcy5ncm91cENhdGVnb3J5RW5kcG9pbnR9L2dldEJ5Q29kZS8ke2dyb3VwQ29kZX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVyaSkudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgYWRkV29ya0RheXMoZGF0ZTogc3RyaW5nLCBkYXlzOiBudW1iZXIsIGlzRGF5ID0gMSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgY29uc3Qgc2VydmljZVVyaSA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0hvbGlkYXlDYXRlZ29yeS9HZXREYXRlP2RhdGU9JHtkYXRlfSZkYXlzPSR7ZGF5c30maXNEYXk9JHtpc0RheX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHNlcnZpY2VVcmkpXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBnZXREYXRlQnlEdXJhdGlvbihkYXRlOiBzdHJpbmcsIHR5cGU6IGJvb2xlYW4sIGR1cmF0aW9uOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Ib2xpZGF5Q2F0ZWdvcnkvZ2V0RGF0ZUJ5RHVyYXRpb24/ZGF0ZT0ke2RhdGV9JnR5cGU9JHt0eXBlfSZkdXJhdGlvbj0ke2R1cmF0aW9ufWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oc2VydmljZVVyaSlcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIGdldEl0ZW1CeUNvZGUoZGF0YVNvdXJjZTogYW55LCBjb2RlOiBzdHJpbmcpOiBNYXN0ZXJEYXRhSXRlbSB7XG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmZpbmQoeCA9PiB4LmNvZGUgPT09IGNvZGUpO1xuICAgIH1cblxuICAgIGdldEl0ZW1CeUluc3RhbmNlSWQoZGF0YVNvdXJjZTogYW55LCBpbnN0YW5jZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2UuZmluZCh4ID0+IHguaW5zdGFuY2VJZCA9PT0gaW5zdGFuY2VJZCk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUJ5SWQoZGF0YVNvdXJjZTogYW55LCBpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmZpbmQoeCA9PiB4LmlkID09PSBpZCk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUJ5R3JvdXBBbmRDb2RlKGdyb3VwQ29kZTogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBsZXQgZGF0YVNvdXJjZTogTWFzdGVyRGF0YUl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kb0dldEFsbChncm91cENvZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+cmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UuZmluZCh4ID0+IHguY29kZSA9PT0gY29kZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWZyZXNoQ2F0ZWdvcnkoKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGxvY2FsU3RvcmFnZSkge1xuICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKHRoaXMuY2F0ZWdvcnlQcmVmaXgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cENvZGUgPSBrZXkuc3BsaXQoJ18nKVsxXTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldEFkcmVzcyhjaXR5OiBhbnksIGRpc3RyaWN0OiBhbnksIHdhcmQ6IGFueSwgc3RyZWV0OiBhbnksIHN0clRleHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBsZXQgc3RyUmVzdWx0ID0gJyc7XG4gICAgICAgICAgICBpZiAoc3RyVGV4dCAmJiBzdHJUZXh0ICE9ICcnKSB7XG4gICAgICAgICAgICAgICAgc3RyUmVzdWx0ICs9IHN0clRleHQgKyAnLCAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0cmVldCAmJiBzdHJlZXQgIT0gJycpIHtcbiAgICAgICAgICAgICAgICBzdHJSZXN1bHQgKz0gc3RyZWV0ICsgJywgJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhcmQgJiYgd2FyZCAhPSAnJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHggPSBhd2FpdCB0aGlzLmdldEl0ZW1EZXRhaWxVbml0KHdhcmQpO1xuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWUgKyAnLCAnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRpc3RyaWN0ICYmIGRpc3RyaWN0ICE9ICcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IGF3YWl0IHRoaXMuZ2V0SXRlbURldGFpbFVuaXQoZGlzdHJpY3QpO1xuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWUgKyAnLCAnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNpdHkgJiYgY2l0eSAhPSAnJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHggPSBhd2FpdCB0aGlzLmdldEl0ZW1EZXRhaWxVbml0KGNpdHkpO1xuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHN0clJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFZhbHVlQnlDb2RlKGNvZGU6IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50fS9nZXRWYWx1ZUJ5Q29kZT9jb2RlPSR7Y29kZX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVybClcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIGdldEdyb3VwSXRlbUJ5Q29kZShjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0dyb3VwQ2F0ZWdvcnkvJHtjb2RlfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4odXJsKS5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIHBhcnNlTWF0aEV4cHJlc3Npb24oZXhwcmVzc2lvbjogc3RyaW5nLCBkZWNpbWFsUGxhY2VzOiBudW1iZXIsIGZvclZpZXRuYW1lc2U6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xuICAgICAgICBleHByZXNzaW9uID0gZW5jb2RlVVJJQ29tcG9uZW50KGV4cHJlc3Npb24pO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9NYXRoRXhwcmVzc2lvbi9QYXJzZU1hdGg/ZXhwcmVzc2lvbj0ke2V4cHJlc3Npb259JmRlY2ltYWxQbGFjZXM9JHtkZWNpbWFsUGxhY2VzfSZmb3JWaWV0bmFtZXNlPSR7Zm9yVmlldG5hbWVzZX1gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVybClcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIGdldEJ5R3JpZFJlcXVlc3QoZ3JvdXBDb2RlOiBzdHJpbmcsIGdyaWRJbmZvOiBHcmlkSW5mbywgcGx1c1VybDogc3RyaW5nID0gJycpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBsZXQgZGF0YTogYW55O1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0b3JhZ2UgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApO1xuICAgICAgICAgICAgaWYgKCFkYXRhU3RvcmFnZSkge1xuICAgICAgICAgICAgICAgIGxldCBhcGlVcmwgPSBgJHt0aGlzLnNpbmdsZUNhdGVnb3J5RW5kcG9pbnR9L2dldERhdGFgO1xuICAgICAgICAgICAgICAgIGlmIChwbHVzVXJsICE9IG51bGwgJiYgcGx1c1VybCAhPSAnJylcbiAgICAgICAgICAgICAgICAgICAgYXBpVXJsICs9ICcvJyArIHBsdXNVcmw7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGF3YWl0IHRoaXMuX2h0dHBDbGllbnRcbiAgICAgICAgICAgICAgICAgICAgLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KGFwaVVybCwgZ3JpZEluZm8pXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKS50b1Byb21pc2UoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCwgSlNPTi5zdHJpbmdpZnkoZGF0YS5kYXRhKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnBhcnNlKGRhdGFTdG9yYWdlKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVHcmlkSW5mb0Ryb3Bkb3duKGZpbHRlcnM6IEZpbHRlcltdLCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSB7XG4gICAgICAgICAgICBwYWdlSW5mbzoge1xuICAgICAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwMDAwMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICBzb3J0czogW10sXG4gICAgICAgICAgICBmaWVsZHM6IGAke29wdGlvbnMudmFsdWVGaWVsZH0ke29wdGlvbnMuZGlzcGxheUZpZWxkID09IG9wdGlvbnMudmFsdWVGaWVsZCA/ICcnIDogJywnICsgb3B0aW9ucy5kaXNwbGF5RmllbGR9JHtvcHRpb25zLmZpZWxkUGx1c31gXG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydHMgIT0gbnVsbCAmJiBvcHRpb25zLnNvcnRzLmxlbmd0aCA+IDApXG4gICAgICAgICAgICBncmlkSW5mby5zb3J0cyA9IFsuLi5vcHRpb25zLnNvcnRzXTtcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydEZpZWxkICE9IG51bGwgJiYgb3B0aW9ucy5zb3J0RmllbGQgIT0gJycpXG4gICAgICAgICAgICBncmlkSW5mby5zb3J0cy5wdXNoKHsgZmllbGQ6IG9wdGlvbnMuc29ydEZpZWxkLCBkaXI6IG9wdGlvbnMuc29ydERpciB9KTtcbiAgICAgICAgcmV0dXJuIGdyaWRJbmZvO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFZhbHVlKG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucy5maWVsZFBsdXMubGVuZ3RoID4gMCAmJiAhb3B0aW9ucy5maWVsZFBsdXMuc3RhcnRzV2l0aCgnLCcpKVxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZFBsdXMgPSAnLCcgKyBvcHRpb25zLmZpZWxkUGx1cztcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydEZpZWxkID09ICcnKVxuICAgICAgICAgICAgb3B0aW9ucy5zb3J0RmllbGQgPSBvcHRpb25zLmRpc3BsYXlGaWVsZDtcbiAgICAgICAgaWYgKG9wdGlvbnMuZnVuY0dldExhYmVsID09IG51bGwgfHwgdHlwZW9mIG9wdGlvbnMuZnVuY0dldExhYmVsICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuZnVuY0dldExhYmVsID0gKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVtvcHRpb25zLmRpc3BsYXlGaWVsZF07XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RGF0YURyb3Bkb3duKGdyb3VwQ29kZTogc3RyaW5nLCBhcnJWYWx1ZTogYW55W10sIG9wdGlvbnM/OiBEcm9wZG93bk9wdGlvbnMpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChhcnJWYWx1ZSA9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXM7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXMuZmlsdGVyKHggPT4gYXJyVmFsdWUuc29tZSh2ID0+IHYgPT0geFtvcHRpb25zLnZhbHVlRmllbGRdKSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoZ3JvdXBDb2RlOiBzdHJpbmcsIGFyclZhbHVlOiBhbnlbXSwgZmlsdGVyczogRmlsdGVyW10sIG9wdGlvbnM/OiBEcm9wZG93bk9wdGlvbnMpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKG9wdGlvbnMpO1xuICAgICAgICBmaWx0ZXJzLnNwbGljZSgwLCAwLCB0aGlzLl9jb21tb25TZXJ2aWNlLm5ld0ZpbHRlcignZ3JvdXBDYXRlZ29yeUNvZGUnLCBPcGVyYXRvci5lcXVhbCwgZ3JvdXBDb2RlKSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXJyVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzLmZpbHRlcih4ID0+IGFyclZhbHVlLnNvbWUodiA9PiB2ID09IHhbb3B0aW9ucy52YWx1ZUZpZWxkXSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvcjogYW55LCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgY29uc3QgY29tbW9uU2VydmljZSA9IGluamVjdG9yLmdldChDb21tb25TZXJ2aWNlKTtcbiAgICAgICAgcmV0dXJuIGNvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyb3IsIGluamVjdG9yKTtcbiAgICB9XG59XG4iXX0=
|
package/fesm2015/tnx-shared.js
CHANGED
|
@@ -5230,14 +5230,12 @@ StorageUpdatedService.ctorParameters = () => [
|
|
|
5230
5230
|
|
|
5231
5231
|
class MasterDataService {
|
|
5232
5232
|
constructor(_httpClient, _commonService, _injector, _storageUpdatedService, _moduleConfigService) {
|
|
5233
|
-
var _a, _b;
|
|
5234
5233
|
this._httpClient = _httpClient;
|
|
5235
5234
|
this._commonService = _commonService;
|
|
5236
5235
|
this._injector = _injector;
|
|
5237
5236
|
this._storageUpdatedService = _storageUpdatedService;
|
|
5238
5237
|
this._moduleConfigService = _moduleConfigService;
|
|
5239
5238
|
this.setupSignalr = false;
|
|
5240
|
-
this.isDisabledGetCache = false;
|
|
5241
5239
|
this.storage = localStorage;
|
|
5242
5240
|
this.categoryPrefix = 'cat_';
|
|
5243
5241
|
this.categoryGroupPrefix = 'cat_group_';
|
|
@@ -5246,7 +5244,6 @@ class MasterDataService {
|
|
|
5246
5244
|
this.env = this._moduleConfigService.getConfig().environment;
|
|
5247
5245
|
this.apiEndpoint = this.env.apiDomain.commonMasterDataEndpoint;
|
|
5248
5246
|
this.apiVersion = this.env.apiVersion;
|
|
5249
|
-
this.isDisabledGetCache = (_b = (_a = this.env.cauHinhNghiepVu) === null || _a === void 0 ? void 0 : _a.isDisabledGetCacheCommonMasterdata) !== null && _b !== void 0 ? _b : false;
|
|
5250
5247
|
this.groupCategoryEndpoint = `${this.apiEndpoint}/${this.apiVersion}/Groupcategory`;
|
|
5251
5248
|
this.singleCategoryEndpoint = `${this.apiEndpoint}/${this.apiVersion}/SingleCategory`;
|
|
5252
5249
|
if (!this.setupSignalr) {
|
|
@@ -5293,17 +5290,7 @@ class MasterDataService {
|
|
|
5293
5290
|
}
|
|
5294
5291
|
get(groupCode) {
|
|
5295
5292
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
5296
|
-
|
|
5297
|
-
if (this.isDisabledGetCache === true) {
|
|
5298
|
-
dataSource = yield this.getAllByGroupCode(groupCode);
|
|
5299
|
-
}
|
|
5300
|
-
else if (!this.storage.getItem(`${this.categoryPrefix}${groupCode}`)) {
|
|
5301
|
-
dataSource = yield this.getAllByGroupCode(groupCode);
|
|
5302
|
-
this.storage.setItem(`${this.categoryPrefix}${groupCode}`, JSON.stringify(dataSource));
|
|
5303
|
-
}
|
|
5304
|
-
else {
|
|
5305
|
-
dataSource = JSON.parse(this.storage.getItem(`${this.categoryPrefix}${groupCode}`));
|
|
5306
|
-
}
|
|
5293
|
+
const dataSource = yield this.getAllByGroupCode(groupCode);
|
|
5307
5294
|
resolve(dataSource);
|
|
5308
5295
|
}));
|
|
5309
5296
|
}
|
|
@@ -5431,7 +5418,7 @@ class MasterDataService {
|
|
|
5431
5418
|
return this.getData(`${this.singleCategoryEndpoint}/getData`, gridInfo);
|
|
5432
5419
|
});
|
|
5433
5420
|
}
|
|
5434
|
-
// thực hiện get list singleCategory theo groupCategoryCode trên redis
|
|
5421
|
+
// thực hiện get list singleCategory theo groupCategoryCode trên redis cache
|
|
5435
5422
|
doGetAllCustom(groupCode) {
|
|
5436
5423
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5437
5424
|
const uri = `${this.singleCategoryEndpoint}/GetDataByGroupCode/${groupCode}`;
|
|
@@ -22220,6 +22207,9 @@ class CommonSearchFormComponent extends DataFormBase {
|
|
|
22220
22207
|
if (!column.isInTable || !column.includeSelect) {
|
|
22221
22208
|
this.lstControlNotIn.push(column.field);
|
|
22222
22209
|
}
|
|
22210
|
+
if (column.hasOwnProperty('defaultValue')) {
|
|
22211
|
+
this.defaultValues[column.field] = column.defaultValue;
|
|
22212
|
+
}
|
|
22223
22213
|
const isBool = column.dataType == DataType.boolean;
|
|
22224
22214
|
if (column.controlType == ControlType.dropdown || isBool || column instanceof DropdownControlSchema) {
|
|
22225
22215
|
this.lstDropdownControl.push(column.field);
|