tnx-shared 5.3.25 → 5.3.26

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.
@@ -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;AAC9D,qBAMa,yBAA0B,SAAQ,YAAa,YAAW,MAAM;IAuBrE,SAAS,CAAC,SAAS,EAAE,QAAQ;IAC7B,SAAS,CAAC,cAAc,EAAE,aAAa;IAvBc,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,aAAa,KAAM;IACnB,kBAAkB,UAAS;IAC3B,uBAAuB,gBAAa;IACpC,QAAQ,SAAM;IACd,UAAU,UAAS;IACnB,sBAAsB,UAAS;IAC/B,iBAAiB,UAAS;gBAGZ,SAAS,EAAE,QAAQ,EACnB,cAAc,EAAE,aAAa;IAK3C,QAAQ;IAgDR,aAAa,CAAC,OAAO,EAAE,GAAG;IA0F1B,YAAY,CAAC,OAAO,KAAA;IAwBpB,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM;IAoEvC,WAAW;IAiBX,gBAAgB;IAMV,iBAAiB,CAAC,SAAS,EAAE,SAAS;IAKtC,gBAAgB,CAAC,IAAI,KAAA;IAI3B,eAAe;CAKlB"}
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;AAC9D,qBAMa,yBAA0B,SAAQ,YAAa,YAAW,MAAM;IAuBrE,SAAS,CAAC,SAAS,EAAE,QAAQ;IAC7B,SAAS,CAAC,cAAc,EAAE,aAAa;IAvBc,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,aAAa,KAAM;IACnB,kBAAkB,UAAS;IAC3B,uBAAuB,gBAAa;IACpC,QAAQ,SAAM;IACd,UAAU,UAAS;IACnB,sBAAsB,UAAS;IAC/B,iBAAiB,UAAS;gBAGZ,SAAS,EAAE,QAAQ,EACnB,cAAc,EAAE,aAAa;IAK3C,QAAQ;IAiDR,aAAa,CAAC,OAAO,EAAE,GAAG;IA0F1B,YAAY,CAAC,OAAO,KAAA;IAwBpB,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM;IAoEvC,WAAW;IAiBX,gBAAgB;IAMV,iBAAiB,CAAC,SAAS,EAAE,SAAS;IAKtC,gBAAgB,CAAC,IAAI,KAAA;IAI3B,eAAe;CAKlB"}
@@ -60,6 +60,7 @@ export class CommonSearchFormComponent extends DataFormBase {
60
60
  }
61
61
  });
62
62
  this.setting.schema = this.addSearchBox(this.parentSetting.commonSchemas.sort((prev, next) => prev.order - next.order));
63
+ this.genFormSchema(this.parentSetting.commonSchemas);
63
64
  }
64
65
  else {
65
66
  this.setting.schema = this.genFormSchema(columnFilters);
@@ -82,7 +83,7 @@ export class CommonSearchFormComponent extends DataFormBase {
82
83
  this.lstControlNotIn.push(column.field);
83
84
  }
84
85
  const isBool = column.dataType == DataType.boolean;
85
- if (column.controlType == ControlType.dropdown || isBool) {
86
+ if (column.controlType == ControlType.dropdown || isBool || column instanceof DropdownControlSchema) {
86
87
  this.lstDropdownControl.push(column.field);
87
88
  let dataSource = column.dataSource;
88
89
  if (isBool) {
@@ -287,4 +288,4 @@ CommonSearchFormComponent.propDecorators = {
287
288
  onClickSearch: [{ type: Output }],
288
289
  onAfterToggleMenuSearch: [{ type: Output }]
289
290
  };
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU85RCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXNCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBdEJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FB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RyxFQUFFLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUdLLGlCQUFpQixDQUFDLFNBQW9COztZQUN4QywrRUFBK0U7UUFFbkYsQ0FBQztLQUFBO0lBRUssZ0JBQWdCLENBQUMsSUFBSTs7WUFDdkIscUNBQXFDO1FBQ3pDLENBQUM7S0FBQTtJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRTtZQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztTQUNyRztJQUNMLENBQUM7OztZQTdTSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsNDNEQUFrRDtnQkFFbEQsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFYNkMsUUFBUTtZQUs3QyxhQUFhOzs7bUNBUWpCLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7NkJBQ3RELEtBQUs7K0JBQ0wsS0FBSzs0QkFDTCxNQUFNO3NDQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcbmltcG9ydCB7IENvbnRyb2xUeXBlLCBDdXN0b21Db250cm9sU2NoZW1hLCBEYXRhVHlwZSwgRGF0ZVRpbWVDb250cm9sU2NoZW1hLCBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYSwgRHJvcGRvd25Db250cm9sU2NoZW1hLCBFdmVudERhdGEsIEZvcm1TY2hlbWFCYXNlLCBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEsIE9wZXJhdG9yLCBUZXh0Q29udHJvbFNjaGVtYSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjb21tb24tc2VhcmNoLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbW1vbi1zZWFyY2gtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VhcmNoRm9ybUNvbXBvbmVudCBleHRlbmRzIERhdGFGb3JtQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnY29tbW9uU2VhcmNoVGVtcGxhdGUnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY29tbW9uU2VhcmNoVGVtcGxhdGU6IEVsZW1lbnRSZWY7XG4gICAgQElucHV0KCkgdGVtcGxhdGVGaWx0ZXI6IGFueSA9IFtdO1xuICAgIEBJbnB1dCgpIHNlYXJjaEJveFRvb2x0aXAgPSAnVMOsbSBraeG6v20gdGhlbyBjw6FjIHRyxrDhu51uZzogJztcbiAgICBAT3V0cHV0KCkgb25DbGlja1NlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvbkFmdGVyVG9nZ2xlTWVudVNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgbWRXaWR0aCA9IDM7XG4gICAgbHN0RHJvcGRvd25Db250cm9sID0gW107XG4gICAgbHN0RGF0ZXRpbWVDb250cm9sID0gW107XG4gICAgbHN0TnVtYmVyUmFuZ2VDb250cm9sID0gW107XG4gICAgbHN0VGV4dENvbnRyb2wgPSBbXTtcbiAgICBsc3RCb29sQ29udHJvbCA9IFtdO1xuICAgIGxzdENvbnRyb2xOb3RJbiA9IFtdO1xuICAgIGRlZmF1bHRWYWx1ZXMgPSB7fTtcbiAgICBpc0FkZERlZmF1bHRWYWx1ZXMgPSBmYWxzZTtcbiAgICBtYXBDb250cm9sQmluZGluZ0ZpbHRlciA9IG5ldyBNYXAoKTtcbiAgICBrZXl3b3JkcyA9ICcnO1xuICAgIGlzT3BlbkZ1bGwgPSBmYWxzZTtcbiAgICBpc0N1c3RvbUdlbmVyYXRlU2VhcmNoID0gZmFsc2U7XG4gICAgaXNEaXNhYmxlT3BlbkZ1bGwgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJvdGVjdGVkIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm1kV2lkdGggPSB0aGlzLnBhcmVudFNldHRpbmcubWRXaWR0aENvbW1vblNlYXJjaDtcbiAgICAgICAgdGhpcy5zZXR0aW5nLmJhc2VTZXJ2aWNlID0gdGhpcy5wYXJlbnRTZXR0aW5nLmJhc2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZmlsdGVyKHAgPT4gcC5hbGxvd0ZpbHRlciAmJiAhcC5maWVsZC5zdGFydHNXaXRoKCdzdHInKSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEub3JkZXIgPCBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGEub3JkZXIgPiBiLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGxzdFRleHRTZWFyY2hDb250cm9sID0gY29sdW1uRmlsdGVycy5maWx0ZXIocCA9PiBwLmZ1bGxUZXh0U2VhcmNoKTtcbiAgICAgICAgICAgIHRoaXMubHN0VGV4dENvbnRyb2wgPSBsc3RUZXh0U2VhcmNoQ29udHJvbC5tYXAocCA9PiBwLmZpZWxkKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQm94VG9vbHRpcCArPSBgJHsobHN0VGV4dFNlYXJjaENvbnRyb2wubWFwKHggPT4geC5sYWJlbCkpLmpvaW4oJywgJyl9YDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0N1c3RvbUdlbmVyYXRlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgICAgY29sdW1uLnNob3dMYWJlbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbHVtbi5tZFdpZHRoID0gdGhpcy5tZFdpZHRoO1xuICAgICAgICAgICAgICAgIGNvbHVtblsncGxhY2Vob2xkZXInXSA9IGNvbHVtbi5sYWJlbDtcbiAgICAgICAgICAgICAgICBpZiAoIShjb2x1bW4gaW5zdGFuY2VvZiBUZXh0Q29udHJvbFNjaGVtYSkgfHwgY29sdW1uIGluc3RhbmNlb2YgTnVtYmVyUmFuZ2VDb250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHRoaXMuaGFuZGxlU2VhcmNoKG51bGwsIGV2dC5jb250cm9sLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdE51bWJlclJhbmdlQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gdGhpcy5hZGRTZWFyY2hCb3godGhpcy5wYXJlbnRTZXR0aW5nLmNvbW1vblNjaGVtYXMuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSB0aGlzLmdlbkZvcm1TY2hlbWEoY29sdW1uRmlsdGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0Rpc2FibGVPcGVuRnVsbCA9IHRoaXMuc2V0dGluZy5zY2hlbWEubGVuZ3RoIDw9IDQgJiYgIXRoaXMuX2NvbW1vblNlcnZpY2UuaXNNb2JpbGUoKTtcblxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBjb25zdCBjb250cm9sU2V0RGVmYXVsdFZhbHVlID0gdGhpcy5zZXR0aW5nLnNjaGVtYS5maWx0ZXIocCA9PiBwLmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJiAocCBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSB8fCBwIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSk7XG4gICAgICAgIGlmIChjb250cm9sU2V0RGVmYXVsdFZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgY29udHJvbFNldERlZmF1bHRWYWx1ZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlc1tpdGVtLmZpZWxkXSA9IGl0ZW0uZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBnZW5Gb3JtU2NoZW1hKGNvbHVtbnM6IGFueSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IFtdO1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIGlmICghY29sdW1uLmlzSW5UYWJsZSB8fCAhY29sdW1uLmluY2x1ZGVTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xOb3RJbi5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2wgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuYm9vbGVhbjtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbFR5cGUgPT0gQ29udHJvbFR5cGUuZHJvcGRvd24gfHwgaXNCb29sKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sc3REcm9wZG93bkNvbnRyb2wucHVzaChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlID0gY29sdW1uLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICAgICAgaWYgKGlzQm9vbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdEJvb2xDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IFt7IGlkOiB0cnVlLCB0ZW46ICdDw7MnIH0sIHsgaWQ6IGZhbHNlLCB0ZW46ICdLaMO0bmcnIH1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJpbmRpbmdGaWx0ZXJzICYmIGNvbHVtbi5iaW5kaW5nRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5iaW5kaW5nRmlsdGVycy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBDb250cm9sQmluZGluZ0ZpbHRlci5zZXQoaXRlbS5maWVsZCwgY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uYmFzZVNlcnZpY2UgfHwgKGRhdGFTb3VyY2UgJiYgZGF0YVNvdXJjZS5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ucGxhY2Vob2xkZXIgPz8gYENo4buNbiAke2NvbHVtbi5sYWJlbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6ICFjb2x1bW4uc2luZ2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkT25Jbml0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VkOiAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09IERhdGFUeXBlLmJvb2xlYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBldnQudmFsdWUubWFwKHAgPT4gcC5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpbmRpbmdGaWx0ZXJWYWwgPSB0aGlzLm1hcENvbnRyb2xCaW5kaW5nRmlsdGVyLmdldChjb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaW5kaW5nRmlsdGVyVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZ0LnZhbHVlIHx8IGV2dC52YWx1ZS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tiaW5kaW5nRmlsdGVyVmFsXS5fY29tcG9uZW50LmZpbHRlckZyb21QYXJlbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tiaW5kaW5nRmlsdGVyVmFsXS5fY29tcG9uZW50Ll9nZXREYXRhU291cmNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCghY29sdW1uLmluY2x1ZGVTZWxlY3QgfHwgIWNvbHVtbi5pc0luVGFibGUpICYmICFjb2x1bW4uZm9yY2VMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZENvbHVtbjogYW55ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBjb2x1bW4ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkXSxcbiAgICAgICAgICAgICAgICAgICAgbWRXaWR0aDogdGhpcy5tZFdpZHRoLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb2x1bW4uZGF0YVR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kYXRlOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRhdGV0aW1lOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLnNob3dJY29uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5vbkNoYW5nZWQgPSAoZXZ0OiBFdmVudERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucGFyZW50TW9kZWxbY29sdW1uLmZpZWxkXSA9IGV2dC5zb3VyY2VFdmVudC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaChldnQucGFyZW50TW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93VGltZSA9IGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5kYXRldGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuaW50OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmludFdpdGhvdXRNYXNrOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRlY2ltYWw6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuY3VycmVuY3k6XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ubWFza1R5cGUgPSBjb2x1bW4uZGF0YVR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ubWF4ID0gOTk5OTk5OTk5OTk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ub25DaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgTnVtYmVyUmFuZ2VDb250cm9sU2NoZW1hKGFkZENvbHVtbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3ROdW1iZXJSYW5nZUNvbnRyb2wucHVzaChhZGRDb2x1bW4uZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFNlYXJjaEJveChyZXN1bHQuc29ydCgocHJldiwgbmV4dCkgPT4gcHJldi5vcmRlciAtIG5leHQub3JkZXIpKTtcbiAgICB9XG5cbiAgICBhZGRTZWFyY2hCb3goY29sdW1ucykge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgcmV0dXJuIDxGb3JtU2NoZW1hQmFzZVtdPmNvbHVtbnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VhcmNoQm94ID0gbmV3IEN1c3RvbUNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgZmllbGQ6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIGxhYmVsOiAnVOG7qyBraMOzYScsXG4gICAgICAgICAgICBmdWxsTGFiZWw6ICdU4burIGtow7NhJyxcbiAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXG4gICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGhcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gTnVtYmVyKDEyIC8gdGhpcy5tZFdpZHRoKSAtIDE7XG4gICAgICAgIGlmICh0aGlzLl9jb21tb25TZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKDAsIDAsIHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29sdW1ucy5sZW5ndGggPCBpbmRleCkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb2x1bW5zLnNwbGljZShpbmRleCwgMCwgc2VhcmNoQm94KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gPEZvcm1TY2hlbWFCYXNlW10+Y29sdW1ucztcbiAgICB9XG5cbiAgICBoYW5kbGVTZWFyY2goZGF0YT86IGFueSwgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyRnVsbFRleHRTZWFyY2ggPSBbXTtcbiAgICAgICAgaWYgKHRoaXMua2V5d29yZHMgJiYgdGhpcy5sc3RUZXh0Q29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBsc3RGaWx0ZXJUZXh0ID0gW107XG4gICAgICAgICAgICB0aGlzLmxzdFRleHRDb250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgbHN0RmlsdGVyVGV4dC5wdXNoKHRoaXMubmV3RmlsdGVyKGl0ZW0sIE9wZXJhdG9yLmNvbnRhaW4sIHRoaXMua2V5d29yZHMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZmlsdGVyRnVsbFRleHRTZWFyY2gucHVzaChuZXcgRmlsdGVyKHsgbG9naWM6ICdvcicsIGZpbHRlcnM6IGxzdEZpbHRlclRleHQgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMubW9kZWwuZGF0YTtcbiAgICAgICAgICAgIGxldCBsc3RGaWx0ZXJzID0gdGhpcy5fY3J1ZFNlcnZpY2UuZ2V0RmlsdGVyRnJvbVRlbXBsYXRlKHRoaXMudGVtcGxhdGVGaWx0ZXIsIGRhdGEpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWRkRGVmYXVsdFZhbHVlcyAmJiBPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRWYWx1ZXMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBPYmplY3QuYXNzaWduKGRhdGEsIHRoaXMuZGVmYXVsdFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0FkZERlZmF1bHRWYWx1ZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJzOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IGZpbHRlckZ1bGxUZXh0U2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICBkYXRhRm9ybToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiB0aGlzLmtleXdvcmRzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBycy5maWVsZEFjdGlvbiA9IGZpZWxkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xpY2tTZWFyY2guZW1pdChycyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMubHN0RHJvcGRvd25Db250cm9sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGl0ZW0pIHx8ICghZGF0YVtpdGVtXSB8fCBkYXRhW2l0ZW1dLmxlbmd0aCA8IDEpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVGaWVsZCA9IHRoaXMucGFyZW50U2V0dGluZy5jb2xzLmZpbmQocCA9PiBwLmZpZWxkID09PSBpdGVtKT8udmFsdWVGaWVsZCB8fCAnaWQnO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhW2l0ZW1dLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dID0gZGF0YVtpdGVtXS5tYXAocCA9PiBwW3ZhbHVlRmllbGRdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV0gPSBkYXRhW2l0ZW1dW3ZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubHN0Qm9vbENvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YVtpdGVtXS5pbmRleE9mKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXVtpbmRleF0gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbHN0RmlsdGVycyA9IHRoaXMuX2NydWRTZXJ2aWNlLmdldEZpbHRlckZyb21UZW1wbGF0ZSh0aGlzLnRlbXBsYXRlRmlsdGVyLCBkYXRhKTtcbiAgICAgICAgbHN0RmlsdGVycyA9IFsuLi5sc3RGaWx0ZXJzLCAuLi5maWx0ZXJGdWxsVGV4dFNlYXJjaF07XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge1xuICAgICAgICAgICAgZmlsdGVyczogbHN0RmlsdGVycy5maWx0ZXIocCA9PiAhdGhpcy5sc3RDb250cm9sTm90SW4uaW5jbHVkZXMocC5maWVsZCkpLFxuICAgICAgICAgICAgZGF0YUZvcm06IHtcbiAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiB0aGlzLmtleXdvcmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgcmVzdWx0LmZpZWxkQWN0aW9uID0gZmllbGQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNsaWNrU2VhcmNoLmVtaXQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcigpIHtcbiAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMuZm9ybUNvbnRyb2xzKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5mb3JtQ29udHJvbHNbcF07XG4gICAgICAgICAgICBsZXQgcmVzZXRWYWx1ZTogYW55O1xuICAgICAgICAgICAgaWYgKHRoaXMubHN0RHJvcGRvd25Db250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRWYWx1ZSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5sc3REYXRldGltZUNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkgfHwgdGhpcy5sc3ROdW1iZXJSYW5nZUNvbnRyb2wuaW5jbHVkZXMoaXRlbS5maWVsZCkpIHtcbiAgICAgICAgICAgICAgICByZXNldFZhbHVlID0gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3NldE1vZGVsVmFsdWUoaXRlbS5maWVsZCwgcmVzZXRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1jYWxlbmRhcicpKS5mb3JFYWNoKGVsID0+IGVsWyd2YWx1ZSddID0gJycpO1xuICAgICAgICB0aGlzLmtleXdvcmRzID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goKTtcbiAgICB9XG5cbiAgICB0b2dnbGVNZW51U2VhcmNoKCkge1xuICAgICAgICB0aGlzLmlzT3BlbkZ1bGwgPSAhdGhpcy5pc09wZW5GdWxsO1xuICAgICAgICB0aGlzLm9uQWZ0ZXJUb2dnbGVNZW51U2VhcmNoLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG5cbiAgICBhc3luYyBvbkZvcm1Jbml0aWFsaXplZChmb3JtRXZlbnQ6IEV2ZW50RGF0YSkge1xuICAgICAgICAvLyB0aeG7gW4geOG7rSBsw70gZOG7ryBsaeG7h3UgKHbDrSBk4bulIHThu5VuZyBo4bujcCBkYXRhc291cmNlKSwgdHLGsOG7m2Mga2hpIGfhu41pIGFwaSBnZXQgZGV0YWlsXG5cbiAgICB9XG5cbiAgICBhc3luYyBtb2RpZnlEZXRhaWxEYXRhKGRhdGEpIHtcbiAgICAgICAgLy8geOG7rSBsw70gZOG7ryBsaeG7h3UgbOG6pXkgdOG7qyBnZXQgZGV0YWlsIHbhu4FcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRTZXR0aW5nLnVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlYXJjaFRlbXBsYXRlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdoZWlnaHQ6MTAwJTttYXJnaW4tYm90dG9tOiAtOXB4OycpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2NvbW1vbi1zZWFyY2gtZm9ybS9jb21tb24tc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBNkIsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDblAsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU85RCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsWUFBWTtJQXNCdkQsWUFDYyxTQUFtQixFQUNuQixjQUE2QjtRQUV2QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFIUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBdEJsQyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQztRQUMvQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FB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c0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBR0ssaUJBQWlCLENBQUMsU0FBb0I7O1lBQ3hDLCtFQUErRTtRQUVuRixDQUFDO0tBQUE7SUFFSyxnQkFBZ0IsQ0FBQyxJQUFJOztZQUN2QixxQ0FBcUM7UUFDekMsQ0FBQztLQUFBO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixFQUFFO1lBQzdDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO1NBQ3JHO0lBQ0wsQ0FBQzs7O1lBOVNKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5Qiw0M0RBQWtEO2dCQUVsRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQVg2QyxRQUFRO1lBSzdDLGFBQWE7OzttQ0FRakIsU0FBUyxTQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs2QkFDdEQsS0FBSzsrQkFDTCxLQUFLOzRCQUNMLE1BQU07c0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhRm9ybUJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1mb3JtLWJhc2UnO1xuaW1wb3J0IHsgQ29udHJvbFR5cGUsIEN1c3RvbUNvbnRyb2xTY2hlbWEsIERhdGFUeXBlLCBEYXRlVGltZUNvbnRyb2xTY2hlbWEsIERhdGVUaW1lUmFuZ2VDb250cm9sU2NoZW1hLCBEcm9wZG93bkNvbnRyb2xTY2hlbWEsIEV2ZW50RGF0YSwgRm9ybVNjaGVtYUJhc2UsIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSwgT3BlcmF0b3IsIFRleHRDb250cm9sU2NoZW1hIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NvbW1vbi1zZWFyY2gtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbW1vbi1zZWFyY2gtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29tbW9uLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21tb25TZWFyY2hGb3JtQ29tcG9uZW50IGV4dGVuZHMgRGF0YUZvcm1CYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdjb21tb25TZWFyY2hUZW1wbGF0ZScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb21tb25TZWFyY2hUZW1wbGF0ZTogRWxlbWVudFJlZjtcbiAgICBASW5wdXQoKSB0ZW1wbGF0ZUZpbHRlcjogYW55ID0gW107XG4gICAgQElucHV0KCkgc2VhcmNoQm94VG9vbHRpcCA9ICdUw6xtIGtp4bq/bSB0aGVvIGPDoWMgdHLGsOG7nW5nOiAnO1xuICAgIEBPdXRwdXQoKSBvbkNsaWNrU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIG9uQWZ0ZXJUb2dnbGVNZW51U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBtZFdpZHRoID0gMztcbiAgICBsc3REcm9wZG93bkNvbnRyb2wgPSBbXTtcbiAgICBsc3REYXRldGltZUNvbnRyb2wgPSBbXTtcbiAgICBsc3ROdW1iZXJSYW5nZUNvbnRyb2wgPSBbXTtcbiAgICBsc3RUZXh0Q29udHJvbCA9IFtdO1xuICAgIGxzdEJvb2xDb250cm9sID0gW107XG4gICAgbHN0Q29udHJvbE5vdEluID0gW107XG4gICAgZGVmYXVsdFZhbHVlcyA9IHt9O1xuICAgIGlzQWRkRGVmYXVsdFZhbHVlcyA9IGZhbHNlO1xuICAgIG1hcENvbnRyb2xCaW5kaW5nRmlsdGVyID0gbmV3IE1hcCgpO1xuICAgIGtleXdvcmRzID0gJyc7XG4gICAgaXNPcGVuRnVsbCA9IGZhbHNlO1xuICAgIGlzQ3VzdG9tR2VuZXJhdGVTZWFyY2ggPSBmYWxzZTtcbiAgICBpc0Rpc2FibGVPcGVuRnVsbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubWRXaWR0aCA9IHRoaXMucGFyZW50U2V0dGluZy5tZFdpZHRoQ29tbW9uU2VhcmNoO1xuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLnBhcmVudFNldHRpbmcuYmFzZVNlcnZpY2U7XG4gICAgICAgIHRoaXMuaXNDdXN0b21HZW5lcmF0ZVNlYXJjaCA9IHRoaXMucGFyZW50U2V0dGluZy5jb21tb25TY2hlbWFzLmxlbmd0aCA+IDA7XG4gICAgICAgIGNvbnN0IGNvbHVtbkZpbHRlcnMgPSB0aGlzLnBhcmVudFNldHRpbmcuY29scy5maWx0ZXIocCA9PiBwLmFsbG93RmlsdGVyICYmICFwLmZpZWxkLnN0YXJ0c1dpdGgoJ3N0cicpKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBpZiAoYS5vcmRlciA8IGIub3JkZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYS5vcmRlciA+IGIub3JkZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgY29uc3QgbHN0VGV4dFNlYXJjaENvbnRyb2wgPSBjb2x1bW5GaWx0ZXJzLmZpbHRlcihwID0+IHAuZnVsbFRleHRTZWFyY2gpO1xuICAgICAgICAgICAgdGhpcy5sc3RUZXh0Q29udHJvbCA9IGxzdFRleHRTZWFyY2hDb250cm9sLm1hcChwID0+IHAuZmllbGQpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hCb3hUb29sdGlwICs9IGAkeyhsc3RUZXh0U2VhcmNoQ29udHJvbC5tYXAoeCA9PiB4LmxhYmVsKSkuam9pbignLCAnKX1gO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50U2V0dGluZy5jb21tb25TY2hlbWFzLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgICAgICBjb2x1bW4uc2hvd0xhYmVsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29sdW1uLm1kV2lkdGggPSB0aGlzLm1kV2lkdGg7XG4gICAgICAgICAgICAgICAgY29sdW1uWydwbGFjZWhvbGRlciddID0gY29sdW1uLmxhYmVsO1xuICAgICAgICAgICAgICAgIGlmICghKGNvbHVtbiBpbnN0YW5jZW9mIFRleHRDb250cm9sU2NoZW1hKSB8fCBjb2x1bW4gaW5zdGFuY2VvZiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4gdGhpcy5oYW5kbGVTZWFyY2gobnVsbCwgZXZ0LmNvbnRyb2wuZmllbGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgTnVtYmVyUmFuZ2VDb250cm9sU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSB0aGlzLmFkZFNlYXJjaEJveCh0aGlzLnBhcmVudFNldHRpbmcuY29tbW9uU2NoZW1hcy5zb3J0KChwcmV2LCBuZXh0KSA9PiBwcmV2Lm9yZGVyIC0gbmV4dC5vcmRlcikpO1xuICAgICAgICAgICAgdGhpcy5nZW5Gb3JtU2NoZW1hKHRoaXMucGFyZW50U2V0dGluZy5jb21tb25TY2hlbWFzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSB0aGlzLmdlbkZvcm1TY2hlbWEoY29sdW1uRmlsdGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0Rpc2FibGVPcGVuRnVsbCA9IHRoaXMuc2V0dGluZy5zY2hlbWEubGVuZ3RoIDw9IDQgJiYgIXRoaXMuX2NvbW1vblNlcnZpY2UuaXNNb2JpbGUoKTtcblxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBjb25zdCBjb250cm9sU2V0RGVmYXVsdFZhbHVlID0gdGhpcy5zZXR0aW5nLnNjaGVtYS5maWx0ZXIocCA9PiBwLmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJiAocCBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSB8fCBwIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSk7XG4gICAgICAgIGlmIChjb250cm9sU2V0RGVmYXVsdFZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgY29udHJvbFNldERlZmF1bHRWYWx1ZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlc1tpdGVtLmZpZWxkXSA9IGl0ZW0uZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBnZW5Gb3JtU2NoZW1hKGNvbHVtbnM6IGFueSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IFtdO1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIGlmICghY29sdW1uLmlzSW5UYWJsZSB8fCAhY29sdW1uLmluY2x1ZGVTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxzdENvbnRyb2xOb3RJbi5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2wgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuYm9vbGVhbjtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbFR5cGUgPT0gQ29udHJvbFR5cGUuZHJvcGRvd24gfHwgaXNCb29sIHx8IGNvbHVtbiBpbnN0YW5jZW9mIERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMubHN0RHJvcGRvd25Db250cm9sLnB1c2goY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IGNvbHVtbi5kYXRhU291cmNlO1xuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sc3RCb29sQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBbeyBpZDogdHJ1ZSwgdGVuOiAnQ8OzJyB9LCB7IGlkOiBmYWxzZSwgdGVuOiAnS2jDtG5nJyB9XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5iaW5kaW5nRmlsdGVycyAmJiBjb2x1bW4uYmluZGluZ0ZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYmluZGluZ0ZpbHRlcnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQ29udHJvbEJpbmRpbmdGaWx0ZXIuc2V0KGl0ZW0uZmllbGQsIGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmJhc2VTZXJ2aWNlIHx8IChkYXRhU291cmNlICYmIGRhdGFTb3VyY2UubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IERyb3Bkb3duQ29udHJvbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogY29sdW1uLnBsYWNlaG9sZGVyID8/IGBDaOG7jW4gJHtjb2x1bW4ubGFiZWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiAhY29sdW1uLnNpbmdsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZFdpZHRoOiB0aGlzLm1kV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE9uSW5pdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlZDogKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PSBEYXRhVHlwZS5ib29sZWFuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wYXJlbnRNb2RlbFtjb2x1bW4uZmllbGRdID0gZXZ0LnZhbHVlLm1hcChwID0+IHAuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiaW5kaW5nRmlsdGVyVmFsID0gdGhpcy5tYXBDb250cm9sQmluZGluZ0ZpbHRlci5nZXQoY29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmluZGluZ0ZpbHRlclZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2dC52YWx1ZSB8fCBldnQudmFsdWUubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbHNbYmluZGluZ0ZpbHRlclZhbF0uX2NvbXBvbmVudC5maWx0ZXJGcm9tUGFyZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbHNbYmluZGluZ0ZpbHRlclZhbF0uX2NvbXBvbmVudC5fZ2V0RGF0YVNvdXJjZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoIWNvbHVtbi5pbmNsdWRlU2VsZWN0IHx8ICFjb2x1bW4uaXNJblRhYmxlKSAmJiAhY29sdW1uLmZvcmNlTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRDb2x1bW46IGFueSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogY29sdW1uLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFt1bmRlZmluZWQsIHVuZGVmaW5lZF0sXG4gICAgICAgICAgICAgICAgICAgIG1kV2lkdGg6IHRoaXMubWRXaWR0aCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29sdW1uLmRhdGFUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kYXRldGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbHVtbi5zaG93SWNvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4ub25DaGFuZ2VkID0gKGV2dDogRXZlbnREYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnBhcmVudE1vZGVsW2NvbHVtbi5maWVsZF0gPSBldnQuc291cmNlRXZlbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2goZXZ0LnBhcmVudE1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb2x1bW4uc2hvd1RpbWUgPSBjb2x1bW4uZGF0YVR5cGUgPT0gRGF0YVR5cGUuZGF0ZXRpbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgRGF0ZVRpbWVSYW5nZUNvbnRyb2xTY2hlbWEoYWRkQ29sdW1uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxzdERhdGV0aW1lQ29udHJvbC5wdXNoKGNvbHVtbi5maWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmludDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5pbnRXaXRob3V0TWFzazpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kZWNpbWFsOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERhdGFUeXBlLmN1cnJlbmN5OlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm1hc2tUeXBlID0gY29sdW1uLmRhdGFUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm1heCA9IDk5OTk5OTk5OTk5O1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29sdW1uLm9uQ2hhbmdlZCA9IChldnQ6IEV2ZW50RGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IE51bWJlclJhbmdlQ29udHJvbFNjaGVtYShhZGRDb2x1bW4pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLnB1c2goYWRkQ29sdW1uLmZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRTZWFyY2hCb3gocmVzdWx0LnNvcnQoKHByZXYsIG5leHQpID0+IHByZXYub3JkZXIgLSBuZXh0Lm9yZGVyKSk7XG4gICAgfVxuXG4gICAgYWRkU2VhcmNoQm94KGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudFNldHRpbmcudXNlQ29tbW9uRnVsbFRleHRTZWFyY2gpIHtcbiAgICAgICAgICAgIHJldHVybiA8Rm9ybVNjaGVtYUJhc2VbXT5jb2x1bW5zO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlYXJjaEJveCA9IG5ldyBDdXN0b21Db250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgIGZpZWxkOiAna2V5d29yZCcsXG4gICAgICAgICAgICBsYWJlbDogJ1Thu6sga2jDs2EnLFxuICAgICAgICAgICAgZnVsbExhYmVsOiAnVOG7qyBraMOzYScsXG4gICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgbWRXaWR0aDogdGhpcy5tZFdpZHRoXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpbmRleCA9IE51bWJlcigxMiAvIHRoaXMubWRXaWR0aCkgLSAxO1xuICAgICAgICBpZiAodGhpcy5fY29tbW9uU2VydmljZS5pc01vYmlsZSgpKSB7XG4gICAgICAgICAgICBjb2x1bW5zLnNwbGljZSgwLCAwLCBzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbHVtbnMubGVuZ3RoIDwgaW5kZXgpIHtcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChzZWFyY2hCb3gpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29sdW1ucy5zcGxpY2UoaW5kZXgsIDAsIHNlYXJjaEJveCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDxGb3JtU2NoZW1hQmFzZVtdPmNvbHVtbnM7XG4gICAgfVxuXG4gICAgaGFuZGxlU2VhcmNoKGRhdGE/OiBhbnksIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckZ1bGxUZXh0U2VhcmNoID0gW107XG4gICAgICAgIGlmICh0aGlzLmtleXdvcmRzICYmIHRoaXMubHN0VGV4dENvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbHN0RmlsdGVyVGV4dCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5sc3RUZXh0Q29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGxzdEZpbHRlclRleHQucHVzaCh0aGlzLm5ld0ZpbHRlcihpdGVtLCBPcGVyYXRvci5jb250YWluLCB0aGlzLmtleXdvcmRzKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpbHRlckZ1bGxUZXh0U2VhcmNoLnB1c2gobmV3IEZpbHRlcih7IGxvZ2ljOiAnb3InLCBmaWx0ZXJzOiBsc3RGaWx0ZXJUZXh0IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLm1vZGVsLmRhdGE7XG4gICAgICAgICAgICBsZXQgbHN0RmlsdGVycyA9IHRoaXMuX2NydWRTZXJ2aWNlLmdldEZpbHRlckZyb21UZW1wbGF0ZSh0aGlzLnRlbXBsYXRlRmlsdGVyLCBkYXRhKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0FkZERlZmF1bHRWYWx1ZXMgJiYgT2JqZWN0LmtleXModGhpcy5kZWZhdWx0VmFsdWVzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gT2JqZWN0LmFzc2lnbihkYXRhLCB0aGlzLmRlZmF1bHRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNBZGREZWZhdWx0VmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tR2VuZXJhdGVTZWFyY2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByczogYW55ID0ge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBmaWx0ZXJGdWxsVGV4dFNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgZGF0YUZvcm06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogdGhpcy5rZXl3b3Jkc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcnMuZmllbGRBY3Rpb24gPSBmaWVsZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsaWNrU2VhcmNoLmVtaXQocnMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmxzdERyb3Bkb3duQ29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmxzdERyb3Bkb3duQ29udHJvbC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtKSB8fCAoIWRhdGFbaXRlbV0gfHwgZGF0YVtpdGVtXS5sZW5ndGggPCAxKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlRmllbGQgPSB0aGlzLnBhcmVudFNldHRpbmcuY29scy5maW5kKHAgPT4gcC5maWVsZCA9PT0gaXRlbSk/LnZhbHVlRmllbGQgfHwgJ2lkJztcbiAgICAgICAgICAgICAgICBpZiAoZGF0YVtpdGVtXS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtpdGVtXSA9IGRhdGFbaXRlbV0ubWFwKHAgPT4gcFt2YWx1ZUZpZWxkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1dID0gZGF0YVtpdGVtXVt2YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxzdEJvb2xDb250cm9sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubHN0Qm9vbENvbnRyb2wuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkoaXRlbSkpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGRhdGFbaXRlbV0uaW5kZXhPZih1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaXRlbV1baW5kZXhdID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxzdEZpbHRlcnMgPSB0aGlzLl9jcnVkU2VydmljZS5nZXRGaWx0ZXJGcm9tVGVtcGxhdGUodGhpcy50ZW1wbGF0ZUZpbHRlciwgZGF0YSk7XG4gICAgICAgIGxzdEZpbHRlcnMgPSBbLi4ubHN0RmlsdGVycywgLi4uZmlsdGVyRnVsbFRleHRTZWFyY2hdO1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHtcbiAgICAgICAgICAgIGZpbHRlcnM6IGxzdEZpbHRlcnMuZmlsdGVyKHAgPT4gIXRoaXMubHN0Q29udHJvbE5vdEluLmluY2x1ZGVzKHAuZmllbGQpKSxcbiAgICAgICAgICAgIGRhdGFGb3JtOiB7XG4gICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICBrZXl3b3JkczogdGhpcy5rZXl3b3Jkc1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5maWVsZEFjdGlvbiA9IGZpZWxkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25DbGlja1NlYXJjaC5lbWl0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgY2xlYXJGaWx0ZXIoKSB7XG4gICAgICAgIGZvciAoY29uc3QgcCBpbiB0aGlzLmZvcm1Db250cm9scykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZm9ybUNvbnRyb2xzW3BdO1xuICAgICAgICAgICAgbGV0IHJlc2V0VmFsdWU6IGFueTtcbiAgICAgICAgICAgIGlmICh0aGlzLmxzdERyb3Bkb3duQ29udHJvbC5pbmNsdWRlcyhpdGVtLmZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHJlc2V0VmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubHN0RGF0ZXRpbWVDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpIHx8IHRoaXMubHN0TnVtYmVyUmFuZ2VDb250cm9sLmluY2x1ZGVzKGl0ZW0uZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgcmVzZXRWYWx1ZSA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zZXRNb2RlbFZhbHVlKGl0ZW0uZmllbGQsIHJlc2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5wdXQtY2FsZW5kYXInKSkuZm9yRWFjaChlbCA9PiBlbFsndmFsdWUnXSA9ICcnKTtcbiAgICAgICAgdGhpcy5rZXl3b3JkcyA9IG51bGw7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlTWVudVNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5pc09wZW5GdWxsID0gIXRoaXMuaXNPcGVuRnVsbDtcbiAgICAgICAgdGhpcy5vbkFmdGVyVG9nZ2xlTWVudVNlYXJjaC5lbWl0KHRydWUpO1xuICAgIH1cblxuXG4gICAgYXN5bmMgb25Gb3JtSW5pdGlhbGl6ZWQoZm9ybUV2ZW50OiBFdmVudERhdGEpIHtcbiAgICAgICAgLy8gdGnhu4FuIHjhu60gbMO9IGThu68gbGnhu4d1ICh2w60gZOG7pSB04buVbmcgaOG7o3AgZGF0YXNvdXJjZSksIHRyxrDhu5tjIGtoaSBn4buNaSBhcGkgZ2V0IGRldGFpbFxuXG4gICAgfVxuXG4gICAgYXN5bmMgbW9kaWZ5RGV0YWlsRGF0YShkYXRhKSB7XG4gICAgICAgIC8vIHjhu60gbMO9IGThu68gbGnhu4d1IGzhuqV5IHThu6sgZ2V0IGRldGFpbCB24buBXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy51c2VDb21tb25GdWxsVGV4dFNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5jb21tb25TZWFyY2hUZW1wbGF0ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0OjEwMCU7bWFyZ2luLWJvdHRvbTogLTlweDsnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -21475,6 +21475,7 @@ class CommonSearchFormComponent extends DataFormBase {
21475
21475
  }
21476
21476
  });
21477
21477
  this.setting.schema = this.addSearchBox(this.parentSetting.commonSchemas.sort((prev, next) => prev.order - next.order));
21478
+ this.genFormSchema(this.parentSetting.commonSchemas);
21478
21479
  }
21479
21480
  else {
21480
21481
  this.setting.schema = this.genFormSchema(columnFilters);
@@ -21497,7 +21498,7 @@ class CommonSearchFormComponent extends DataFormBase {
21497
21498
  this.lstControlNotIn.push(column.field);
21498
21499
  }
21499
21500
  const isBool = column.dataType == DataType.boolean;
21500
- if (column.controlType == ControlType.dropdown || isBool) {
21501
+ if (column.controlType == ControlType.dropdown || isBool || column instanceof DropdownControlSchema) {
21501
21502
  this.lstDropdownControl.push(column.field);
21502
21503
  let dataSource = column.dataSource;
21503
21504
  if (isBool) {