@wavemaker/app-ng-runtime 11.4.3-next.25756 → 11.4.3-next.25758

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.
Files changed (40) hide show
  1. app-ng-runtime/components/input/calendar/bundles/index.umd.js +11 -1
  2. app-ng-runtime/components/input/calendar/bundles/index.umd.js.map +1 -1
  3. app-ng-runtime/components/input/calendar/calendar.component.d.ts +4 -2
  4. app-ng-runtime/components/input/calendar/esm2015/calendar.component.js +12 -2
  5. app-ng-runtime/components/input/calendar/fesm2015/index.js +11 -1
  6. app-ng-runtime/components/input/calendar/fesm2015/index.js.map +1 -1
  7. app-ng-runtime/components/input/calendar/index.metadata.json +1 -1
  8. app-ng-runtime/components/input/default/bundles/index.umd.js +9 -3
  9. app-ng-runtime/components/input/default/bundles/index.umd.js.map +1 -1
  10. app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +4 -2
  11. app-ng-runtime/components/input/default/esm2015/base-form-custom.component.js +2 -4
  12. app-ng-runtime/components/input/default/esm2015/dataset-aware-form.component.js +9 -1
  13. app-ng-runtime/components/input/default/fesm2015/index.js +9 -3
  14. app-ng-runtime/components/input/default/fesm2015/index.js.map +1 -1
  15. app-ng-runtime/components/input/default/index.metadata.json +1 -1
  16. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +1 -0
  17. app-ng-runtime/components/input/epoch/bundles/index.umd.js +21 -23
  18. app-ng-runtime/components/input/epoch/bundles/index.umd.js.map +1 -1
  19. app-ng-runtime/components/input/epoch/esm2015/base-date-time.component.js +17 -19
  20. app-ng-runtime/components/input/epoch/esm2015/date/date.component.js +2 -2
  21. app-ng-runtime/components/input/epoch/esm2015/date-time/date-time-picker.component.js +10 -10
  22. app-ng-runtime/components/input/epoch/esm2015/date-time/date-time.component.js +2 -2
  23. app-ng-runtime/components/input/epoch/esm2015/time/time.component.js +2 -2
  24. app-ng-runtime/components/input/epoch/fesm2015/index.js +28 -30
  25. app-ng-runtime/components/input/epoch/fesm2015/index.js.map +1 -1
  26. app-ng-runtime/components/input/epoch/index.metadata.json +1 -1
  27. app-ng-runtime/core/bundles/index.umd.js +4 -2
  28. app-ng-runtime/core/bundles/index.umd.js.map +1 -1
  29. app-ng-runtime/core/esm2015/services/state-persistence.service.js +4 -2
  30. app-ng-runtime/core/esm2015/utils/utils.js +2 -2
  31. app-ng-runtime/core/fesm2015/index.js +4 -2
  32. app-ng-runtime/core/fesm2015/index.js.map +1 -1
  33. app-ng-runtime/package.json +1 -1
  34. app-ng-runtime/runtime/base/bundles/index.umd.js +35 -2
  35. app-ng-runtime/runtime/base/bundles/index.umd.js.map +1 -1
  36. app-ng-runtime/runtime/base/esm2015/services/i18n.service.js +35 -3
  37. app-ng-runtime/runtime/base/fesm2015/index.js +34 -2
  38. app-ng-runtime/runtime/base/fesm2015/index.js.map +1 -1
  39. app-ng-runtime/runtime/base/index.metadata.json +1 -1
  40. app-ng-runtime/runtime/base/services/i18n.service.d.ts +2 -0
@@ -1,8 +1,8 @@
1
- import { Injector, OnInit } from '@angular/core';
1
+ import { Injector, OnInit, OnDestroy } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import { DataSetItem } from '@wm/components/base';
4
4
  import { BaseFormCustomComponent } from './base-form-custom.component';
5
- export declare abstract class DatasetAwareFormComponent extends BaseFormCustomComponent implements OnInit {
5
+ export declare abstract class DatasetAwareFormComponent extends BaseFormCustomComponent implements OnInit, OnDestroy {
6
6
  groupby?: string;
7
7
  dataset: any;
8
8
  datafield: string;
@@ -38,6 +38,7 @@ export declare abstract class DatasetAwareFormComponent extends BaseFormCustomCo
38
38
  private readonly _debouncedInitDatasetItems;
39
39
  protected allowempty: boolean;
40
40
  compareby: any;
41
+ private cancelLocaleChangeSubscription;
41
42
  get modelByKey(): any;
42
43
  set modelByKey(val: any);
43
44
  get datavalue(): any;
@@ -68,4 +69,5 @@ export declare abstract class DatasetAwareFormComponent extends BaseFormCustomCo
68
69
  protected setGroupData(): void;
69
70
  onPropertyChange(key: string, nv: any, ov?: any): void;
70
71
  ngOnInit(): void;
72
+ ngOnDestroy(): void;
71
73
  }
@@ -58,9 +58,7 @@ export class BaseFormCustomComponent extends BaseFormComponent {
58
58
  invokeOnChange(value, $event, valid) {
59
59
  // let the angular know about the change
60
60
  this._onChange(value);
61
- if (valid) {
62
- super.invokeOnChange(value, $event);
63
- }
61
+ super.invokeOnChange(value, $event);
64
62
  }
65
63
  invokeOnTouched($event) {
66
64
  this._onTouched();
@@ -79,4 +77,4 @@ export class BaseFormCustomComponent extends BaseFormComponent {
79
77
  BaseFormCustomComponent.decorators = [
80
78
  { type: Injectable }
81
79
  ];
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWN1c3RvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZGVmYXVsdC9zcmMvYmFzZS1mb3JtLWN1c3RvbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixlQUFlLEVBQTJDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEgsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxZQUFZLENBQUMsR0FBRztJQUNyQixRQUFPLE9BQU8sR0FBRyxFQUFFO1FBQ2YsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDN0UsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUMxRTtBQUNMLENBQUM7QUFDRCxTQUFTLG9CQUFvQixDQUFDLFFBQWlCO0lBQzNDLE9BQU8sQ0FBQyxPQUF3QixFQUFFLEVBQUUsQ0FDaEMsUUFBUTtRQUNKLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDbkIsQ0FBQztBQUdELE1BQU0sT0FBZ0IsdUJBQXdCLFNBQVEsaUJBQWlCO0lBRHZFOztRQUljLGNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDNUIsZUFBVSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQXdEdkMsQ0FBQztJQXRERyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFFO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBSztRQUNuQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25DO1FBQ0Q7Ozs7V0FJRztRQUNILENBQUMsS0FBSyxLQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFvQixFQUFFLEtBQWU7UUFDOUQsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEIsSUFBSSxLQUFLLEVBQUU7WUFDUCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7SUFFTSxlQUFlLENBQUMsTUFBYztRQUNqQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQztTQUM5QztJQUNMLENBQUM7SUFFTSxhQUFhLENBQUMsTUFBYTtRQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsZUFBZTtJQUNmLFFBQVEsQ0FBQyxPQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRixDQUFDOzs7WUE1REosVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbE5hbWUsIFZhbGlkYXRvciwgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1mb3JtLmNvbXBvbmVudCc7XG5cbi8qXG4gKiBXTVMtMTgyNjlcbiAqIGN1c3RvbSAncmVxdWlyZWQnIHZhbGlkYXRvciBmb3IgY29tcG9uZW50cyxcbiAqIGFzIHRoZSBib3VuZCB2YWx1ZXMgYXJlIHJlc29sdmVkIGF0IHJ1bnRpbWVcbiAqIENhbGxlZCBvbiAncmVxdWlyZWQnIHByb3BlcnR5IGNoYW5nZVxuICpcbiAqIE5vdGU6IENvbXBvbmVudCBuZWVkcyBOR19WQUxJREFUT1IgcHJvdmlkZXIgZm9yIHRoaXMgdG8gd29ya1xuICovXG5mdW5jdGlvbiBpc1ZhbGlkVmFsdWUodmFsKTogQm9vbGVhbiB7XG4gICAgc3dpdGNoKHR5cGVvZiB2YWwpIHtcbiAgICAgICAgY2FzZSAnb2JqZWN0JzogcmV0dXJuICghIXZhbCAmJiAoISF2YWwubGVuZ3RoIHx8ICEhT2JqZWN0LmtleXModmFsKS5sZW5ndGgpKTtcbiAgICAgICAgY2FzZSAnbnVtYmVyJzogcmV0dXJuICghIXZhbCB8fCB2YWwgPT09IDApO1xuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuICEodmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsIHx8IHZhbCA9PT0gJycpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlUmVxdWlyZWRCaW5kKHJlcXVpcmVkOiBib29sZWFuKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PlxuICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgPyAoaXNWYWxpZFZhbHVlKGNvbnRyb2wudmFsdWUpXG4gICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgOiB7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgICAgICAgICA6IG51bGw7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRm9ybUN1c3RvbUNvbXBvbmVudCBleHRlbmRzIEJhc2VGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgVmFsaWRhdG9yIHtcblxuICAgIHByaXZhdGUgX2Zvcm1Db250cm9sOiBGb3JtQ29udHJvbE5hbWU7XG4gICAgcHJvdGVjdGVkIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLl9mb3JtQ29udHJvbCA9IHRoaXMuaW5qLmdldChGb3JtQ29udHJvbE5hbWUsIG51bGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuKSB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuKSB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2Zvcm1Db250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vblByb3BlcnR5Q2hhbmdlKCdkYXRhdmFsdWUnLCB2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZEYXRhdmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8qXG4gICAgICAgICAqIFdNUzoxODI0NlxuICAgICAgICAgKiBDYWxsIG9uQ2hhbmdlIG9uIGRlZmF1bHQgdmFsdWUsIHNvIHRoYXQgdGhlIENvbXBvbmVudCBNb2RlbCBpcyB1cGRhdGVkXG4gICAgICAgICAqIERvIG9ubHkgV2hlbiB0aGUgTW9kZWwgVmFsdWUgaXMgZGlmZmVyZW50IGZyb20gZGF0YXZhbHVlXG4gICAgICAgICAqL1xuICAgICAgICAodmFsdWUhPT10aGlzLmRhdGF2YWx1ZSkgJiYgdGhpcy5fb25DaGFuZ2UodGhpcy5kYXRhdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbnZva2VPbkNoYW5nZSh2YWx1ZSwgJGV2ZW50PzogRXZlbnQgfCBhbnksIHZhbGlkPzogYm9vbGVhbikge1xuICAgICAgICAvLyBsZXQgdGhlIGFuZ3VsYXIga25vdyBhYm91dCB0aGUgY2hhbmdlXG4gICAgICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcblxuICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHN1cGVyLmludm9rZU9uQ2hhbmdlKHZhbHVlLCAkZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZU9uVG91Y2hlZCgkZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQoKTtcblxuICAgICAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JsdXInLCB7JGV2ZW50fSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaW52b2tlT25Gb2N1cygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZm9jdXMnLCB7JGV2ZW50fSk7XG4gICAgfVxuICAgIC8qIFdNUy0xODI2OSAqL1xuICAgIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6e1trZXk6IHN0cmluZ106YW55fSB7XG4gICAgICAgIHJldHVybiB0aGlzWydzaG93J10gPyB2YWxpZGF0ZVJlcXVpcmVkQmluZCh0aGlzWydyZXF1aXJlZCddKShjb250cm9sKSA6IG51bGw7XG4gICAgfVxufVxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWN1c3RvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZGVmYXVsdC9zcmMvYmFzZS1mb3JtLWN1c3RvbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixlQUFlLEVBQTJDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEgsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxZQUFZLENBQUMsR0FBRztJQUNyQixRQUFPLE9BQU8sR0FBRyxFQUFFO1FBQ2YsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDN0UsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUMxRTtBQUNMLENBQUM7QUFDRCxTQUFTLG9CQUFvQixDQUFDLFFBQWlCO0lBQzNDLE9BQU8sQ0FBQyxPQUF3QixFQUFFLEVBQUUsQ0FDaEMsUUFBUTtRQUNKLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDbkIsQ0FBQztBQUdELE1BQU0sT0FBZ0IsdUJBQXdCLFNBQVEsaUJBQWlCO0lBRHZFOztRQUljLGNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDNUIsZUFBVSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQXFEdkMsQ0FBQztJQW5ERyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFFO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBSztRQUNuQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25DO1FBQ0Q7Ozs7V0FJRztRQUNILENBQUMsS0FBSyxLQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFvQixFQUFFLEtBQWU7UUFDOUQsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxNQUFjO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDO1NBQzlDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxNQUFhO1FBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxlQUFlO0lBQ2YsUUFBUSxDQUFDLE9BQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pGLENBQUM7OztZQXpESixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sTmFtZSwgVmFsaWRhdG9yLCBWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWZvcm0uY29tcG9uZW50JztcblxuLypcbiAqIFdNUy0xODI2OVxuICogY3VzdG9tICdyZXF1aXJlZCcgdmFsaWRhdG9yIGZvciBjb21wb25lbnRzLFxuICogYXMgdGhlIGJvdW5kIHZhbHVlcyBhcmUgcmVzb2x2ZWQgYXQgcnVudGltZVxuICogQ2FsbGVkIG9uICdyZXF1aXJlZCcgcHJvcGVydHkgY2hhbmdlXG4gKlxuICogTm90ZTogQ29tcG9uZW50IG5lZWRzIE5HX1ZBTElEQVRPUiBwcm92aWRlciBmb3IgdGhpcyB0byB3b3JrXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRWYWx1ZSh2YWwpOiBCb29sZWFuIHtcbiAgICBzd2l0Y2godHlwZW9mIHZhbCkge1xuICAgICAgICBjYXNlICdvYmplY3QnOiByZXR1cm4gKCEhdmFsICYmICghIXZhbC5sZW5ndGggfHwgISFPYmplY3Qua2V5cyh2YWwpLmxlbmd0aCkpO1xuICAgICAgICBjYXNlICdudW1iZXInOiByZXR1cm4gKCEhdmFsIHx8IHZhbCA9PT0gMCk7XG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gISh2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwgPT09IG51bGwgfHwgdmFsID09PSAnJyk7XG4gICAgfVxufVxuZnVuY3Rpb24gdmFsaWRhdGVSZXF1aXJlZEJpbmQocmVxdWlyZWQ6IGJvb2xlYW4pOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICA/IChpc1ZhbGlkVmFsdWUoY29udHJvbC52YWx1ZSlcbiAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICA6IHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgICAgICAgIDogbnVsbDtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VGb3JtQ3VzdG9tQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBWYWxpZGF0b3Ige1xuXG4gICAgcHJpdmF0ZSBfZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sTmFtZTtcbiAgICBwcm90ZWN0ZWQgX29uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgICBwcml2YXRlIF9vblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuX2Zvcm1Db250cm9sID0gdGhpcy5pbmouZ2V0KEZvcm1Db250cm9sTmFtZSwgbnVsbCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm4pIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm4pIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uUHJvcGVydHlDaGFuZ2UoJ2RhdGF2YWx1ZScsIHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldkRhdGF2YWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLypcbiAgICAgICAgICogV01TOjE4MjQ2XG4gICAgICAgICAqIENhbGwgb25DaGFuZ2Ugb24gZGVmYXVsdCB2YWx1ZSwgc28gdGhhdCB0aGUgQ29tcG9uZW50IE1vZGVsIGlzIHVwZGF0ZWRcbiAgICAgICAgICogRG8gb25seSBXaGVuIHRoZSBNb2RlbCBWYWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSBkYXRhdmFsdWVcbiAgICAgICAgICovXG4gICAgICAgICh2YWx1ZSE9PXRoaXMuZGF0YXZhbHVlKSAmJiB0aGlzLl9vbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZU9uQ2hhbmdlKHZhbHVlLCAkZXZlbnQ/OiBFdmVudCB8IGFueSwgdmFsaWQ/OiBib29sZWFuKSB7XG4gICAgICAgIC8vIGxldCB0aGUgYW5ndWxhciBrbm93IGFib3V0IHRoZSBjaGFuZ2VcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICBzdXBlci5pbnZva2VPbkNoYW5nZSh2YWx1ZSwgJGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW52b2tlT25Ub3VjaGVkKCRldmVudD86IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuXG4gICAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmx1cicsIHskZXZlbnR9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpbnZva2VPbkZvY3VzKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdmb2N1cycsIHskZXZlbnR9KTtcbiAgICB9XG4gICAgLyogV01TLTE4MjY5ICovXG4gICAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTp7W2tleTogc3RyaW5nXTphbnl9IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbJ3Nob3cnXSA/IHZhbGlkYXRlUmVxdWlyZWRCaW5kKHRoaXNbJ3JlcXVpcmVkJ10pKGNvbnRyb2wpIDogbnVsbDtcbiAgICB9XG59XG4iXX0=
@@ -38,6 +38,9 @@ export class DatasetAwareFormComponent extends BaseFormCustomComponent {
38
38
  $appDigest();
39
39
  }, 150);
40
40
  this.handleHeaderClick = noop;
41
+ this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe("locale-changed", () => {
42
+ this._debouncedInitDatasetItems();
43
+ });
41
44
  }
42
45
  get modelByKey() {
43
46
  return this._modelByKey;
@@ -275,6 +278,11 @@ export class DatasetAwareFormComponent extends BaseFormCustomComponent {
275
278
  this.toggleAllHeaders = toggleAllHeaders.bind(undefined, this);
276
279
  }
277
280
  }
281
+ ngOnDestroy() {
282
+ if (this.cancelLocaleChangeSubscription) {
283
+ this.cancelLocaleChangeSubscription();
284
+ }
285
+ }
278
286
  }
279
287
  DatasetAwareFormComponent.decorators = [
280
288
  { type: Injectable }
@@ -284,4 +292,4 @@ DatasetAwareFormComponent.ctorParameters = () => [
284
292
  null,
285
293
  { type: String, decorators: [{ type: Attribute, args: ['groupby',] }] }
286
294
  ];
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1hd2FyZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9kYXRhc2V0LWF3YXJlLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU1RyxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFlLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2UCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUt2RSxNQUFNLE9BQWdCLHlCQUEwQixTQUFRLHVCQUF1QjtJQThFM0UsWUFBc0IsR0FBYSxFQUFFLGFBQWEsRUFBK0IsT0FBZ0I7UUFDN0YsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztRQURtRCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBckQxRixpQkFBWSxHQUFrQixFQUFFLENBQUM7UUFDakMsaUJBQVksR0FBRyxLQUFLLENBQUMsQ0FBQywwREFBMEQ7UUFDN0UsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFhM0IsZUFB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QWlCLENBQUM7WUFDM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbEU7SUFDTCxDQUFDOzs7WUF2VkosVUFBVTs7O1lBWEYsUUFBUTs7eUNBMEZ3QyxTQUFTLFNBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBBdHRyaWJ1dGUsIE9uSW5pdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwcERlZmF1bHRzLCAkYXBwRGlnZXN0LCBkZWJvdW5jZSwgaXNEZWZpbmVkLCBpc0VxdWFsV2l0aEZpZWxkcywgbm9vcCwgdG9Cb29sZWFuIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBBTExGSUVMRFMsIGNvbnZlcnREYXRhVG9PYmplY3QsIERhdGFTZXRJdGVtLCBleHRyYWN0RGF0YUFzQXJyYXksIGdldE9yZGVyZWREYXRhc2V0LCBnZXRVbmlxT2Jqc0J5RGF0YUZpZWxkLCBoYW5kbGVIZWFkZXJDbGljaywgdG9nZ2xlQWxsSGVhZGVycywgdHJhbnNmb3JtRm9ybURhdGEsIHRyYW5zZm9ybURhdGFXaXRoS2V5cywgZ3JvdXBEYXRhLCBUb0RhdGVQaXBlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUN1c3RvbUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1mb3JtLWN1c3RvbS5jb21wb25lbnQnO1xuXG5kZWNsYXJlIGNvbnN0IF87XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1DdXN0b21Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyBkYXRhc2V0OiBhbnk7XG4gICAgcHVibGljIGRhdGFmaWVsZDogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNwbGF5ZmllbGQ6IHN0cmluZztcbiAgICBwdWJsaWMgZGlzcGxheWxhYmVsOiBzdHJpbmc7XG4gICAgcHVibGljIGRpc3BsYXlpbWFnZXNyYzogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNwbGF5ZXhwcmVzc2lvbjogc3RyaW5nO1xuICAgIHB1YmxpYyB1c2VrZXlzOiBib29sZWFuO1xuICAgIHB1YmxpYyBvcmRlcmJ5OiBzdHJpbmc7XG4gICAgcHVibGljIG11bHRpcGxlOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWFkb25seTogYm9vbGVhbjtcbiAgICBwdWJsaWMgY29udGVudDogc3RyaW5nO1xuICAgIHB1YmxpYyBjb2xsYXBzaWJsZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgZGF0ZVBpcGU7XG5cbiAgICBwdWJsaWMgaGFuZGxlSGVhZGVyQ2xpY2s6ICgkZXZlbnQpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSB0b2dnbGVBbGxIZWFkZXJzOiB2b2lkO1xuICAgIHB1YmxpYyBhcHBEZWZhdWx0cztcblxuICAgIHB1YmxpYyBiaW5kZGlzcGxheWV4cHJlc3Npb246IHN0cmluZztcbiAgICBwdWJsaWMgYmluZGRpc3BsYXlpbWFnZXNyYzogc3RyaW5nO1xuICAgIHB1YmxpYyBiaW5kZGlzcGxheWxhYmVsOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlOiBBcnJheTxzdHJpbmc+IHwgc3RyaW5nO1xuXG4gICAgcHVibGljIGRhdGFzZXRJdGVtczogRGF0YVNldEl0ZW1bXSA9IFtdO1xuICAgIHB1YmxpYyBhY2NlcHRzQXJyYXkgPSBmYWxzZTsgLy8gc2V0IHRvIHRydWUgaWYgcHJveHlNb2RlbCBvbiB3aWRnZXQgYWNjZXB0cyBhcnJheSB0eXBlLlxuICAgIHByb3RlY3RlZCBkYXRhc2V0JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJvdGVjdGVkIGRhdGF2YWx1ZSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJvdGVjdGVkIG1hdGNoOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGRhdGVmb3JtYXQ6IHN0cmluZztcbiAgICBwdWJsaWMgZ3JvdXBlZERhdGE6IGFueVtdO1xuXG4gICAgcHJvdGVjdGVkIF9tb2RlbEJ5S2V5OiBhbnk7XG4gICAgcHVibGljIF9tb2RlbEJ5VmFsdWU6IGFueTtcbiAgICBwdWJsaWMgX2RlZmF1bHRRdWVyeUludm9rZWQ6IGJvb2xlYW47IC8vIGZvciBzZWFyY2gvY2hpcHMgaWYgZGF0YXZhbHVlIGlzIG9idGFpbmVkIGZyb20gdGhlIGRlZmF1bHQgbi93IGNhbGwgdGhlbiBzZXQgdG8gdHJ1ZSBhbmQgZG8gbm90IHVwZGF0ZSB0aGUgbW9kZWxCeUtleXMuXG5cbiAgICAvLyB0aGlzIGZpZWxkIGNvbnRhaW5zIHRoZSBpbml0aWFsIGRhdGF2YWx1ZSB3aGljaCBuZWVkcyB0byBiZSBwcm9jZXNzZWQgb25jZSB0aGUgZGF0YXNldCBpcyBhdmFpbGFibGVcbiAgICBwdWJsaWMgdG9CZVByb2Nlc3NlZERhdGF2YWx1ZTogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RlYm91bmNlZEluaXREYXRhc2V0SXRlbXM6IEZ1bmN0aW9uO1xuICAgIHByb3RlY3RlZCBhbGxvd2VtcHR5ID0gdHJ1ZTtcbiAgICBwdWJsaWMgY29tcGFyZWJ5OiBhbnk7XG5cbiAgICBwdWJsaWMgZ2V0IG1vZGVsQnlLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbEJ5S2V5O1xuICAgIH1cblxuICAgIC8vIHRyaWdnZXJzIG9uIG5nTW9kZWwgY2hhbmdlLiBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBkYXRhdmFsdWUgdmFsdWUuXG4gICAgcHVibGljIHNldCBtb2RlbEJ5S2V5KHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0QnlLZXkodmFsKTtcblxuICAgICAgICAvLyBpbnZva2Ugb24gZGF0YXZhbHVlIGNoYW5nZS5cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLl9tb2RlbEJ5VmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwdWJsaWMgZ2V0IGRhdGF2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsQnlWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyB0cmlnZ2VycyBvbiBzZXR0aW5nIHRoZSBkYXRhdmFsdWUuIFRoaXMgZnVuY3Rpb24gZXh0cmFjdHMgdGhlIG1vZGVsIHZhbHVlLlxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwdWJsaWMgc2V0IGRhdGF2YWx1ZSh2YWw6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdmFsID0gZXh0cmFjdERhdGFBc0FycmF5KHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gdmFsO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0QnlWYWx1ZSh2YWwpO1xuXG4gICAgICAgIC8vIGNoYW5nZXMgb24gdGhlIGRhdGF2YWx1ZSBjYW4gYmUgc3Vic2NyaWJlZCB1c2luZyBsaXN0ZW5Ub0RhdGF2YWx1ZVxuICAgICAgICB0aGlzLmRhdGF2YWx1ZSQubmV4dCh2YWwpO1xuXG4gICAgICAgIC8vIGludm9rZSBvbiBkYXRhdmFsdWUgY2hhbmdlLlxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHZhbCwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoaW5qOiBJbmplY3RvciwgV0lER0VUX0NPTkZJRywgQEF0dHJpYnV0ZSgnZ3JvdXBieScpIHB1YmxpYyBncm91cGJ5Pzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRyk7XG4gICAgICAgIHRoaXMuZGF0ZVBpcGUgPSB0aGlzLmluai5nZXQoVG9EYXRlUGlwZSk7XG4gICAgICAgIHRoaXMuYXBwRGVmYXVsdHMgPSB0aGlzLmluai5nZXQoQXBwRGVmYXVsdHMpO1xuICAgICAgICB0aGlzLmJpbmRkaXNwbGF5ZXhwcmVzc2lvbiA9IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc3BsYXlleHByZXNzaW9uLmJpbmQnKTtcbiAgICAgICAgdGhpcy5iaW5kZGlzcGxheWltYWdlc3JjID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzcGxheWltYWdlc3JjLmJpbmQnKTtcbiAgICAgICAgdGhpcy5iaW5kZGlzcGxheWxhYmVsID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzcGxheWxhYmVsLmJpbmQnKTtcblxuICAgICAgICB0aGlzLl9kZWJvdW5jZWRJbml0RGF0YXNldEl0ZW1zID0gZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0RGF0YXNldEl0ZW1zKCk7XG4gICAgICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgICAgIHRoaXMuaGFuZGxlSGVhZGVyQ2xpY2sgPSBub29wO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgX2RhdGF2YWx1ZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbCBhbmQgc2V0cyB0aGUgc2VsZWN0ZWQgZmxhZyB3aGVuIGl0ZW0gaXMgZm91bmQuXG4gICAgICogSGVyZSBtb2RlbCBpcyB0aGUgdmFsdWUgb2J0YWluZWQgZnJvbSBuZ01vZGVsLlxuICAgICAqIEBwYXJhbSBrZXlzIHJlcHJlc2VudCB0aGUgbW9kZWwuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNlbGVjdEJ5S2V5KGtleXMpIHtcbiAgICAgICAgdGhpcy5yZXNldERhdGFzZXRJdGVtcygpO1xuXG4gICAgICAgIGlmICghdGhpcy5kYXRhc2V0SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAhXy5pc0FycmF5KGtleXMpKSB7XG4gICAgICAgICAgICBrZXlzID0gW2tleXNdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSBfbW9kZWxCeUtleSB0byB0aGUgbW9kaWZpZWQga2V5cy5cbiAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IGtleXM7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IFtdO1xuICAgICAgICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUJ5S2V5ID0gXy5maW5kKHRoaXMuZGF0YXNldEl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm90IHRyaXBsZSBlcXVhbCwgYXMgdGhlIGluc3RhbmNlIHR5cGUgY2FuIGJlIGRpZmZlcmVudC5cbiAgICAgICAgICAgICAgICAgICAgLy8gb25seSB2YWx1ZSBjb21wYXJpc29uIHNob3VsZCBiZSBkb25lLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXy50b1N0cmluZyhpdGVtLmtleSkgPT09IF8udG9TdHJpbmcoa2V5KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUJ5S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1CeUtleS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IFsuLi50aGlzLl9tb2RlbEJ5VmFsdWUsIGl0ZW1CeUtleS52YWx1ZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSAnJztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1CeUtleSA9IF8uZmluZCh0aGlzLmRhdGFzZXRJdGVtcywgaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbm90IHRyaXBsZSBlcXVhbCwgYXMgdGhlIGluc3RhbmNlIHR5cGUgY2FuIGJlIGRpZmZlcmVudC5cbiAgICAgICAgICAgICAgICAvLyBvbmx5IHZhbHVlIGNvbXBhcmlzb24gc2hvdWxkIGJlIGRvbmUuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF8udG9TdHJpbmcoaXRlbS5rZXkpID09PSBfLnRvU3RyaW5nKGtleXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaXRlbUJ5S2V5KSB7XG4gICAgICAgICAgICAgICAgaXRlbUJ5S2V5LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSBpdGVtQnlLZXkudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0RGlzcGxheVZhbHVlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgX21vZGVsIHZhbHVlIGZyb20gdGhlIGRhdGF2YWx1ZSAoc2VsZWN0ZWR2YWx1ZXMpIGFuZCBzZXRzIHRoZSBzZWxlY3RlZCBmbGFnIHdoZW4gaXRlbSBpcyBmb3VuZC5cbiAgICAgKiBkYXRhdmFsdWUgaXMgdGhlIGRlZmF1bHQgdmFsdWUgb3IgYSB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGRpc3BsYXlGaWVsZCAoZm9yIHN1cHBvc2U6IG9iamVjdCBpbiBjYXNlIG9mIEFMTEZJRUxEUykuXG4gICAgICogSWYgYWNjZXB0c0FycmF5IGlzIHRydWUsIHRoZSBtb2RlbCBhbHdheXMgYWNjZXB0cyBhbiBhcnJheS5cbiAgICAgKiBGb3IgZXhhbXBsZSwgc2VsZWN0IGFsd2F5cyBhY2NlcHRzIG1vZGVsIGFzIGFycmF5IHdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0IGlzIHRydWUgb3IgZmFsc2UuXG4gICAgICogQHBhcmFtIHZhbHVlcyByZXByZXNlbnQgdGhlIGRhdGF2YWx1ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2VsZWN0QnlWYWx1ZSh2YWx1ZXM6IEFycmF5PGFueT4gfCBhbnkpIHtcbiAgICAgICAgdGhpcy5yZXNldERhdGFzZXRJdGVtcygpO1xuXG4gICAgICAgIC8vIGlmIGRhdGF2YWx1ZSBpcyBub3QgZGVmaW5lZCBvciBlbXB0eSB0aGVuIHNldCB0aGUgbW9kZWwgYXMgdW5kZWZpbmVkLlxuICAgICAgICBpZiAoIWlzRGVmaW5lZCh2YWx1ZXMpIHx8IHZhbHVlcyA9PT0gJycgfHwgXy5pc051bGwodmFsdWVzKSB8fCAodmFsdWVzIGluc3RhbmNlb2YgQXJyYXkgJiYgIXZhbHVlcy5sZW5ndGgpKSB7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgLy8gZG8gbm90IHJldHVybiB3aGVuIGFsbG93ZW1wdHkgaXMgc2V0IHRvIHRydWUuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYWxsb3dlbXB0eSB8fCAhaXNEZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY2NlcHRzQXJyYXkgJiYgIV8uaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLmFsbG93ZW1wdHkgPyBbdmFsdWVzXSA6IGV4dHJhY3REYXRhQXNBcnJheSh2YWx1ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcHJlc2VydmUgdGhlIGRhdGF2YWx1ZSBpZiBkYXRhc2V0SXRlbXMgYXJlIGVtcHR5LlxuICAgICAgICBpZiAoIXRoaXMuZGF0YXNldEl0ZW1zLmxlbmd0aCAmJiBpc0RlZmluZWQodmFsdWVzKSkge1xuICAgICAgICAgICAgdGhpcy50b0JlUHJvY2Vzc2VkRGF0YXZhbHVlID0gdmFsdWVzO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyRmllbGQgPSB0aGlzLmRhdGFmaWVsZCA9PT0gQUxMRklFTERTID8gJ2RhdGFPYmplY3QnIDogJ2tleSc7XG5cbiAgICAgICAgaWYgKF8uaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0gW107XG4gICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1CeVZhbHVlID0gXy5maW5kKHRoaXMuZGF0YXNldEl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlckZpZWxkID09PSAnZGF0YU9iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBhcmVieSAmJiB0aGlzLmNvbXBhcmVieS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNFcXVhbFdpdGhGaWVsZHMoaXRlbVtmaWx0ZXJGaWVsZF0sIHZhbCwgdGhpcy5jb21wYXJlYnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXy5pc09iamVjdChpdGVtLnZhbHVlKSA/IF8uaXNFcXVhbChpdGVtLnZhbHVlLCB2YWwpIDogKF8udG9TdHJpbmcoaXRlbS52YWx1ZSkpLnRvTG93ZXJDYXNlKCkgPT09IChfLnRvU3RyaW5nKHZhbCkpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtQnlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtQnlWYWx1ZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsQnlLZXkucHVzaChpdGVtQnlWYWx1ZS5rZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1CeVZhbHVlID0gXy5maW5kKHRoaXMuZGF0YXNldEl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyRmllbGQgPT09ICdkYXRhT2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21wYXJlYnkgJiYgdGhpcy5jb21wYXJlYnkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNFcXVhbFdpdGhGaWVsZHMoaXRlbVtmaWx0ZXJGaWVsZF0sIHZhbHVlcywgdGhpcy5jb21wYXJlYnkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAoXy5pc09iamVjdChpdGVtLnZhbHVlKSAgPyBfLmlzRXF1YWwoaXRlbS52YWx1ZSwgdmFsdWVzKSA6IChfLnRvU3RyaW5nKGl0ZW0udmFsdWUpKS50b0xvd2VyQ2FzZSgpID09PSAoXy50b1N0cmluZyh2YWx1ZXMpKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGl0ZW1CeVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaXRlbUJ5VmFsdWUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsQnlLZXkgPSBpdGVtQnlWYWx1ZS5rZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZGVsYXlpbmcgdGhlIGRhdGF2YWx1ZSB1cGRhdGUgYXMgdGhlIHdpZGdldHMgaW4gbGl2ZWZvcm0gYXJlIGhhdmluZyBkYXRhdmFsdWUgYXMgdW5kZWZpbmVkIGFuZCBub3QgdGhlIGRlZmF1bHQgcHJvdmlkZWQgdmFsdWVcbiAgICAgICAgLy8gYmVjYXVzZSBkYXRhdmFsdWUgaXMgdXBkYXRlZCBsYXRlciB3aGVuIG5ldyBkYXRhc2V0IGlzIGF2YWlsYWJsZS5cbiAgICAgICAgdGhpcy5fZGVib3VuY2VEYXRhdmFsdWVVcGRhdGlvbih2YWx1ZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVib3VuY2VEYXRhdmFsdWVVcGRhdGlvbiA9IF8uZGVib3VuY2UoKHZhbHVlcykgPT4ge1xuICAgICAgICAvLyBpZiBubyBpdGVtIGlzIGZvdW5kIGluIGRhdGFzZXRJdGVtcywgd2FpdCB1bnRpbGwgdGhlIGRhdGFzZXQgdXBkYXRlcyBieSBwcmVzZXJ2aW5nIHRoZSBkYXRhdmFsdWUgaW4gdG9CZVByb2Nlc3NlZERhdGF2YWx1ZS5cbiAgICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5fbW9kZWxCeUtleSkgfHwgKF8uaXNBcnJheSh0aGlzLl9tb2RlbEJ5S2V5KSAmJiAhdGhpcy5fbW9kZWxCeUtleS5sZW5ndGgpKSB7XG4gICAgICAgICAgICB0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWUgPSB2YWx1ZXM7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSAnJztcbiAgICAgICAgfSBlbHNlIGlmIChpc0RlZmluZWQodGhpcy50b0JlUHJvY2Vzc2VkRGF0YXZhbHVlKSkge1xuICAgICAgICAgICAgLy8gb2J0YWluIHRoZSBmaXJzdCBhcnJheSB2YWx1ZSB3aGVuIG11bHRpcGxlIGlzIHNldCB0byBmYWxzZS5cbiAgICAgICAgICAgIC8vIHNldCB0aGUgbW9kZWxCeVZhbHVlIG9ubHkgd2hlbiB1bmRlZmluZWQuXG4gICAgICAgICAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLl9tb2RlbEJ5VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gKCF0aGlzLm11bHRpcGxlICYmIF8uaXNBcnJheSh0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWUpKSA/IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZVswXSA6IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdERpc3BsYXlWYWx1ZXMoKTtcbiAgICB9LCAxNTApO1xuXG4gICAgLy8gVXBkYXRlcyB0aGUgZGlzcGxheVZhbHVlIHByb3BlcnR5LlxuICAgIHByb3RlY3RlZCBpbml0RGlzcGxheVZhbHVlcygpIHtcbiAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLmRhdGFzZXRJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWVzLnB1c2goaXRlbS5sYWJlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IGRpc3BsYXlWYWx1ZXMgOiBkaXNwbGF5VmFsdWVzWzBdIHx8ICcnO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBkYXRhc2V0IGFuZCBleHRyYWN0cyB0aGUgZGlzcGxheU9wdGlvbnMgZnJvbSBwYXJzZWQgZGF0YXNldC5cbiAgICBwcm90ZWN0ZWQgaW5pdERhdGFzZXRJdGVtcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXQgfHwgXy5pc0VtcHR5KHRoaXMuZGF0YXNldCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNldEl0ZW1zID0gW107XG4gICAgICAgICAgICAvLyBub3RpZnkgdGhlIGRhdGFzZXQgbGlzdGVuZXJzXG4gICAgICAgICAgICB0aGlzLmRhdGFzZXQkLm5leHQodGhpcy5kYXRhc2V0SXRlbXMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29udmVydCBhbnkgZGF0YXNldCB0byB0aGUgb2JqZWN0IGZvcm1hdC5cbiAgICAgICAgY29uc3Qgb3JkZXJlZERhdGFzZXQgPSBnZXRPcmRlcmVkRGF0YXNldChjb252ZXJ0RGF0YVRvT2JqZWN0KHRoaXMuZGF0YXNldCksIHRoaXMub3JkZXJieSk7XG5cbiAgICAgICAgaWYgKHRoaXMudXNla2V5cykge1xuICAgICAgICAgICAgdGhpcy5kYXRhc2V0SXRlbXMgPSB0cmFuc2Zvcm1EYXRhV2l0aEtleXMob3JkZXJlZERhdGFzZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheU9wdGlvbnMgPSB0cmFuc2Zvcm1Gb3JtRGF0YSh0aGlzLnZpZXdQYXJlbnQsIG9yZGVyZWREYXRhc2V0LCB0aGlzLmRhdGFmaWVsZCwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5kaXNwbGF5ZmllbGQgfHwgdGhpcy5kaXNwbGF5bGFiZWwsXG4gICAgICAgICAgICAgICAgZGlzcGxheUV4cHI6IHRoaXMuZGlzcGxheWV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgYmluZERpc3BsYXlFeHByOiB0aGlzLmJpbmRkaXNwbGF5ZXhwcmVzc2lvbiB8fCB0aGlzLmJpbmRkaXNwbGF5bGFiZWwsXG4gICAgICAgICAgICAgICAgYmluZERpc3BsYXlJbWdTcmM6IHRoaXMuYmluZGRpc3BsYXlpbWFnZXNyYyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5SW1nU3JjOiB0aGlzLmRpc3BsYXlpbWFnZXNyY1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBnZXQgdGhlIHVuaXF1ZSBvYmplY3RzIG91dCBvZiB0aGUgZXh0cmFjdGVkIGRhdGEuIE5vdGlmeSBjaGFuZ2UgaW4gZGF0YXNldEl0ZW1zIHVzaW5nIFsuLi5kYXRhc2V0SXRlbXNdIG5vdGF0aW9uXG4gICAgICAgICAgICB0aGlzLmRhdGFzZXRJdGVtcyA9IFsuLi5nZXRVbmlxT2Jqc0J5RGF0YUZpZWxkKGRpc3BsYXlPcHRpb25zLCB0aGlzLmRhdGFmaWVsZCwgdGhpcy5kaXNwbGF5ZmllbGQgfHwgdGhpcy5kaXNwbGF5bGFiZWwsIHRvQm9vbGVhbih0aGlzLmFsbG93ZW1wdHkpKV07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvc3REYXRhc2V0SXRlbXNJbml0KCk7XG4gICAgfVxuXG4gICAgLy8gT25jZSB0aGUgZGF0YXNldEl0ZW1zIGFyZSByZWFkeSwgc2V0IHRoZSBwcm94eU1vZGVsIGJ5IHVzaW5nIGRhdGF2YWx1ZS5cbiAgICBwcm90ZWN0ZWQgcG9zdERhdGFzZXRJdGVtc0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGggJiYgIXRoaXMuX2RlZmF1bHRRdWVyeUludm9rZWQpIHtcbiAgICAgICAgICAgIC8vIHVzZSB0aGUgbGF0ZXN0IG9mIHRvQmVQcm9jZXNzZWREYXRhdmFsdWUsIGRhdGF2YWx1ZVxuICAgICAgICAgICAgY29uc3QgX2RhdGF2YWx1ZSA9IF8uaXNFbXB0eSh0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWUpID8gdGhpcy5kYXRhdmFsdWUgOiB0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEJ5VmFsdWUoX2RhdGF2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm90aWZ5IHRoZSBkYXRhc2V0IGxpc3RlbmVyc1xuICAgICAgICB0aGlzLmRhdGFzZXQkLm5leHQodGhpcy5kYXRhc2V0SXRlbXMpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IHRoZSBzZWxlY3RlZCBmbGFnIG9uIGRhdGFzZXRJdGVtcyB0byBmYWxzZS5cbiAgICBwcm90ZWN0ZWQgcmVzZXREYXRhc2V0SXRlbXMoKSB7XG4gICAgICAgIHRoaXMuZGF0YXNldEl0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLnNlbGVjdGVkID0gZmFsc2UpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRUZW1wbGF0ZShwYXJ0aWFsTmFtZSkge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBwYXJ0aWFsTmFtZTtcbiAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudCAmJiB0aGlzLnZpZXdQYXJlbnQucHJlZmFiTmFtZSkge1xuICAgICAgICAgICAgdGhpc1sncHJlZmFiTmFtZSddID0gdGhpcy52aWV3UGFyZW50LnByZWZhYk5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHByaXZhdGUgZ2V0R3JvdXBlZERhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGggPyBncm91cERhdGEodGhpcywgY29udmVydERhdGFUb09iamVjdCh0aGlzLmRhdGFzZXRJdGVtcyksIHRoaXMuZ3JvdXBieSwgdGhpcy5tYXRjaCwgdGhpcy5vcmRlcmJ5LCB0aGlzLmRhdGVmb3JtYXQsIHRoaXMuZGF0ZVBpcGUsICdkYXRhT2JqZWN0JywgdGhpcy5hcHBEZWZhdWx0cykgOiBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRhdGFzZXRTdWJzY3JpcHRpb24oKSB7XG4gICAgICAgIGNvbnN0IGRhdGFzZXRTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFzZXQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwZWREYXRhID0gdGhpcy5nZXRHcm91cGVkRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBkYXRhc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRHcm91cERhdGEoKSB7XG4gICAgICAgIHRoaXMuZGF0YXNldFN1YnNjcmlwdGlvbigpO1xuICAgICAgICAvLyBJZiBncm91cGJ5IGlzIHNldCwgZ2V0IHRoZSBncm91cGVkRGF0YSBmcm9tIHRoZSBkYXRhc2V0SXRlbXMuXG4gICAgICAgIHRoaXMuZ3JvdXBlZERhdGEgPSB0aGlzLmdldEdyb3VwZWREYXRhKCk7XG4gICAgfVxuXG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RhdGFzZXQnOlxuICAgICAgICAgICAgY2FzZSAnZGF0YWZpZWxkJzpcbiAgICAgICAgICAgIGNhc2UgJ2Rpc3BsYXlmaWVsZCc6XG4gICAgICAgICAgICBjYXNlICdkaXNwbGF5bGFiZWwnOlxuICAgICAgICAgICAgY2FzZSAnZGlzcGxheWV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnb3JkZXJieSc6XG4gICAgICAgICAgICBjYXNlICd1c2VrZXlzJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJvdW5jZWRJbml0RGF0YXNldEl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XG4gICAgICAgICAgICBjYXNlICdkYXRhdmFsdWUnOlxuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyb3VwYnknOlxuICAgICAgICAgICAgY2FzZSAnbWF0Y2gnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLndpZGdldFR5cGUgIT09ICd3bS1zZWFyY2gnICYmIHRoaXMud2lkZ2V0VHlwZSAhPT0gJ3dtLWNoaXBzJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEdyb3VwRGF0YSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwYnkgJiYgKHRoaXMud2lkZ2V0VHlwZSAhPT0gJ3dtLXNlYXJjaCcgJiYgdGhpcy53aWRnZXRUeXBlICE9PSAnd20tY2hpcHMnKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRHcm91cERhdGEoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBhZGRpbmcgdGhlIGhhbmRsZXIgZm9yIGhlYWRlciBjbGljayBhbmQgdG9nZ2xlIGhlYWRlcnMuXG4gICAgICAgIGlmICh0aGlzLmdyb3VwYnkgJiYgdGhpcy5jb2xsYXBzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVIZWFkZXJDbGljayA9IGhhbmRsZUhlYWRlckNsaWNrO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxIZWFkZXJzID0gdG9nZ2xlQWxsSGVhZGVycy5iaW5kKHVuZGVmaW5lZCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1hd2FyZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9kYXRhc2V0LWF3YXJlLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU1RyxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFlLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2UCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUt2RSxNQUFNLE9BQWdCLHlCQUEwQixTQUFRLHVCQUF1QjtJQWdGM0UsWUFBc0IsR0FBYSxFQUFFLGFBQWEsRUFBK0IsT0FBZ0I7UUFDN0YsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztRQURtRCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBdkQxRixpQkFBWSxHQUFrQixFQUFFLENBQUM7UUFDakMsaUJBQVksR0FBRyxLQUFLLENBQUMsQ0FBQywwREFBMEQ7UUFDN0UsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFhM0IsZUFB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QyxFQUFFO1lBQ3JGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN2QjtRQUNELDBEQUEwRDtRQUMxRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7WUFDM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbEU7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUcsSUFBSSxDQUFDLDhCQUE4QixFQUFFO1lBQ3BDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1NBQ3pDO0lBQ0wsQ0FBQzs7O1lBbldKLFVBQVU7OztZQVhGLFFBQVE7O3lDQTRGd0MsU0FBUyxTQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgQXR0cmlidXRlLCBPbkluaXQsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwcERlZmF1bHRzLCAkYXBwRGlnZXN0LCBkZWJvdW5jZSwgaXNEZWZpbmVkLCBpc0VxdWFsV2l0aEZpZWxkcywgbm9vcCwgdG9Cb29sZWFuIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBBTExGSUVMRFMsIGNvbnZlcnREYXRhVG9PYmplY3QsIERhdGFTZXRJdGVtLCBleHRyYWN0RGF0YUFzQXJyYXksIGdldE9yZGVyZWREYXRhc2V0LCBnZXRVbmlxT2Jqc0J5RGF0YUZpZWxkLCBoYW5kbGVIZWFkZXJDbGljaywgdG9nZ2xlQWxsSGVhZGVycywgdHJhbnNmb3JtRm9ybURhdGEsIHRyYW5zZm9ybURhdGFXaXRoS2V5cywgZ3JvdXBEYXRhLCBUb0RhdGVQaXBlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUN1c3RvbUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1mb3JtLWN1c3RvbS5jb21wb25lbnQnO1xuXG5kZWNsYXJlIGNvbnN0IF87XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1DdXN0b21Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGRhdGFzZXQ6IGFueTtcbiAgICBwdWJsaWMgZGF0YWZpZWxkOiBzdHJpbmc7XG4gICAgcHVibGljIGRpc3BsYXlmaWVsZDogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNwbGF5bGFiZWw6IHN0cmluZztcbiAgICBwdWJsaWMgZGlzcGxheWltYWdlc3JjOiBzdHJpbmc7XG4gICAgcHVibGljIGRpc3BsYXlleHByZXNzaW9uOiBzdHJpbmc7XG4gICAgcHVibGljIHVzZWtleXM6IGJvb2xlYW47XG4gICAgcHVibGljIG9yZGVyYnk6IHN0cmluZztcbiAgICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW47XG4gICAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIHB1YmxpYyBjb250ZW50OiBzdHJpbmc7XG4gICAgcHVibGljIGNvbGxhcHNpYmxlOiBib29sZWFuO1xuICAgIHB1YmxpYyBkYXRlUGlwZTtcblxuICAgIHB1YmxpYyBoYW5kbGVIZWFkZXJDbGljazogKCRldmVudCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIHRvZ2dsZUFsbEhlYWRlcnM6IHZvaWQ7XG4gICAgcHVibGljIGFwcERlZmF1bHRzO1xuXG4gICAgcHVibGljIGJpbmRkaXNwbGF5ZXhwcmVzc2lvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBiaW5kZGlzcGxheWltYWdlc3JjOiBzdHJpbmc7XG4gICAgcHVibGljIGJpbmRkaXNwbGF5bGFiZWw6IHN0cmluZztcblxuICAgIHB1YmxpYyBkaXNwbGF5VmFsdWU6IEFycmF5PHN0cmluZz4gfCBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZGF0YXNldEl0ZW1zOiBEYXRhU2V0SXRlbVtdID0gW107XG4gICAgcHVibGljIGFjY2VwdHNBcnJheSA9IGZhbHNlOyAvLyBzZXQgdG8gdHJ1ZSBpZiBwcm94eU1vZGVsIG9uIHdpZGdldCBhY2NlcHRzIGFycmF5IHR5cGUuXG4gICAgcHJvdGVjdGVkIGRhdGFzZXQkID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcm90ZWN0ZWQgZGF0YXZhbHVlJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcm90ZWN0ZWQgbWF0Y2g6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgZGF0ZWZvcm1hdDogc3RyaW5nO1xuICAgIHB1YmxpYyBncm91cGVkRGF0YTogYW55W107XG5cbiAgICBwcm90ZWN0ZWQgX21vZGVsQnlLZXk6IGFueTtcbiAgICBwdWJsaWMgX21vZGVsQnlWYWx1ZTogYW55O1xuICAgIHB1YmxpYyBfZGVmYXVsdFF1ZXJ5SW52b2tlZDogYm9vbGVhbjsgLy8gZm9yIHNlYXJjaC9jaGlwcyBpZiBkYXRhdmFsdWUgaXMgb2J0YWluZWQgZnJvbSB0aGUgZGVmYXVsdCBuL3cgY2FsbCB0aGVuIHNldCB0byB0cnVlIGFuZCBkbyBub3QgdXBkYXRlIHRoZSBtb2RlbEJ5S2V5cy5cblxuICAgIC8vIHRoaXMgZmllbGQgY29udGFpbnMgdGhlIGluaXRpYWwgZGF0YXZhbHVlIHdoaWNoIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBvbmNlIHRoZSBkYXRhc2V0IGlzIGF2YWlsYWJsZVxuICAgIHB1YmxpYyB0b0JlUHJvY2Vzc2VkRGF0YXZhbHVlOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVib3VuY2VkSW5pdERhdGFzZXRJdGVtczogRnVuY3Rpb247XG4gICAgcHJvdGVjdGVkIGFsbG93ZW1wdHkgPSB0cnVlO1xuICAgIHB1YmxpYyBjb21wYXJlYnk6IGFueTtcblxuICAgIHByaXZhdGUgY2FuY2VsTG9jYWxlQ2hhbmdlU3Vic2NyaXB0aW9uO1xuXG4gICAgcHVibGljIGdldCBtb2RlbEJ5S2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWxCeUtleTtcbiAgICB9XG5cbiAgICAvLyB0cmlnZ2VycyBvbiBuZ01vZGVsIGNoYW5nZS4gVGhpcyBmdW5jdGlvbiBleHRyYWN0cyB0aGUgZGF0YXZhbHVlIHZhbHVlLlxuICAgIHB1YmxpYyBzZXQgbW9kZWxCeUtleSh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLnNlbGVjdEJ5S2V5KHZhbCk7XG5cbiAgICAgICAgLy8gaW52b2tlIG9uIGRhdGF2YWx1ZSBjaGFuZ2UuXG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5fbW9kZWxCeVZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHVibGljIGdldCBkYXRhdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbEJ5VmFsdWU7XG4gICAgfVxuXG4gICAgLy8gdHJpZ2dlcnMgb24gc2V0dGluZyB0aGUgZGF0YXZhbHVlLiBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBtb2RlbCB2YWx1ZS5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHVibGljIHNldCBkYXRhdmFsdWUodmFsOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHZhbCA9IGV4dHJhY3REYXRhQXNBcnJheSh2YWwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IHZhbDtcblxuICAgICAgICB0aGlzLnNlbGVjdEJ5VmFsdWUodmFsKTtcblxuICAgICAgICAvLyBjaGFuZ2VzIG9uIHRoZSBkYXRhdmFsdWUgY2FuIGJlIHN1YnNjcmliZWQgdXNpbmcgbGlzdGVuVG9EYXRhdmFsdWVcbiAgICAgICAgdGhpcy5kYXRhdmFsdWUkLm5leHQodmFsKTtcblxuICAgICAgICAvLyBpbnZva2Ugb24gZGF0YXZhbHVlIGNoYW5nZS5cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh2YWwsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIFdJREdFVF9DT05GSUcsIEBBdHRyaWJ1dGUoJ2dyb3VwYnknKSBwdWJsaWMgZ3JvdXBieT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcpO1xuICAgICAgICB0aGlzLmRhdGVQaXBlID0gdGhpcy5pbmouZ2V0KFRvRGF0ZVBpcGUpO1xuICAgICAgICB0aGlzLmFwcERlZmF1bHRzID0gdGhpcy5pbmouZ2V0KEFwcERlZmF1bHRzKTtcbiAgICAgICAgdGhpcy5iaW5kZGlzcGxheWV4cHJlc3Npb24gPSB0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNwbGF5ZXhwcmVzc2lvbi5iaW5kJyk7XG4gICAgICAgIHRoaXMuYmluZGRpc3BsYXlpbWFnZXNyYyA9IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc3BsYXlpbWFnZXNyYy5iaW5kJyk7XG4gICAgICAgIHRoaXMuYmluZGRpc3BsYXlsYWJlbCA9IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc3BsYXlsYWJlbC5iaW5kJyk7XG5cbiAgICAgICAgdGhpcy5fZGVib3VuY2VkSW5pdERhdGFzZXRJdGVtcyA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdERhdGFzZXRJdGVtcygpO1xuICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICB9LCAxNTApO1xuICAgICAgICB0aGlzLmhhbmRsZUhlYWRlckNsaWNrID0gbm9vcDtcblxuICAgICAgICB0aGlzLmNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0QXBwSW5zdGFuY2UoKS5zdWJzY3JpYmUoXCJsb2NhbGUtY2hhbmdlZFwiLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kZWJvdW5jZWRJbml0RGF0YXNldEl0ZW1zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgX2RhdGF2YWx1ZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbCBhbmQgc2V0cyB0aGUgc2VsZWN0ZWQgZmxhZyB3aGVuIGl0ZW0gaXMgZm91bmQuXG4gICAgICogSGVyZSBtb2RlbCBpcyB0aGUgdmFsdWUgb2J0YWluZWQgZnJvbSBuZ01vZGVsLlxuICAgICAqIEBwYXJhbSBrZXlzIHJlcHJlc2VudCB0aGUgbW9kZWwuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNlbGVjdEJ5S2V5KGtleXMpIHtcbiAgICAgICAgdGhpcy5yZXNldERhdGFzZXRJdGVtcygpO1xuXG4gICAgICAgIGlmICghdGhpcy5kYXRhc2V0SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAhXy5pc0FycmF5KGtleXMpKSB7XG4gICAgICAgICAgICBrZXlzID0gW2tleXNdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSBfbW9kZWxCeUtleSB0byB0aGUgbW9kaWZpZWQga2V5cy5cbiAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IGtleXM7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IFtdO1xuICAgICAgICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUJ5S2V5ID0gXy5maW5kKHRoaXMuZGF0YXNldEl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm90IHRyaXBsZSBlcXVhbCwgYXMgdGhlIGluc3RhbmNlIHR5cGUgY2FuIGJlIGRpZmZlcmVudC5cbiAgICAgICAgICAgICAgICAgICAgLy8gb25seSB2YWx1ZSBjb21wYXJpc29uIHNob3VsZCBiZSBkb25lLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXy50b1N0cmluZyhpdGVtLmtleSkgPT09IF8udG9TdHJpbmcoa2V5KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUJ5S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1CeUtleS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IFsuLi50aGlzLl9tb2RlbEJ5VmFsdWUsIGl0ZW1CeUtleS52YWx1ZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSAnJztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1CeUtleSA9IF8uZmluZCh0aGlzLmRhdGFzZXRJdGVtcywgaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbm90IHRyaXBsZSBlcXVhbCwgYXMgdGhlIGluc3RhbmNlIHR5cGUgY2FuIGJlIGRpZmZlcmVudC5cbiAgICAgICAgICAgICAgICAvLyBvbmx5IHZhbHVlIGNvbXBhcmlzb24gc2hvdWxkIGJlIGRvbmUuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF8udG9TdHJpbmcoaXRlbS5rZXkpID09PSBfLnRvU3RyaW5nKGtleXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaXRlbUJ5S2V5KSB7XG4gICAgICAgICAgICAgICAgaXRlbUJ5S2V5LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSBpdGVtQnlLZXkudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0RGlzcGxheVZhbHVlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgX21vZGVsIHZhbHVlIGZyb20gdGhlIGRhdGF2YWx1ZSAoc2VsZWN0ZWR2YWx1ZXMpIGFuZCBzZXRzIHRoZSBzZWxlY3RlZCBmbGFnIHdoZW4gaXRlbSBpcyBmb3VuZC5cbiAgICAgKiBkYXRhdmFsdWUgaXMgdGhlIGRlZmF1bHQgdmFsdWUgb3IgYSB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGRpc3BsYXlGaWVsZCAoZm9yIHN1cHBvc2U6IG9iamVjdCBpbiBjYXNlIG9mIEFMTEZJRUxEUykuXG4gICAgICogSWYgYWNjZXB0c0FycmF5IGlzIHRydWUsIHRoZSBtb2RlbCBhbHdheXMgYWNjZXB0cyBhbiBhcnJheS5cbiAgICAgKiBGb3IgZXhhbXBsZSwgc2VsZWN0IGFsd2F5cyBhY2NlcHRzIG1vZGVsIGFzIGFycmF5IHdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0IGlzIHRydWUgb3IgZmFsc2UuXG4gICAgICogQHBhcmFtIHZhbHVlcyByZXByZXNlbnQgdGhlIGRhdGF2YWx1ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2VsZWN0QnlWYWx1ZSh2YWx1ZXM6IEFycmF5PGFueT4gfCBhbnkpIHtcbiAgICAgICAgdGhpcy5yZXNldERhdGFzZXRJdGVtcygpO1xuXG4gICAgICAgIC8vIGlmIGRhdGF2YWx1ZSBpcyBub3QgZGVmaW5lZCBvciBlbXB0eSB0aGVuIHNldCB0aGUgbW9kZWwgYXMgdW5kZWZpbmVkLlxuICAgICAgICBpZiAoIWlzRGVmaW5lZCh2YWx1ZXMpIHx8IHZhbHVlcyA9PT0gJycgfHwgXy5pc051bGwodmFsdWVzKSB8fCAodmFsdWVzIGluc3RhbmNlb2YgQXJyYXkgJiYgIXZhbHVlcy5sZW5ndGgpKSB7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgLy8gZG8gbm90IHJldHVybiB3aGVuIGFsbG93ZW1wdHkgaXMgc2V0IHRvIHRydWUuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYWxsb3dlbXB0eSB8fCAhaXNEZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY2NlcHRzQXJyYXkgJiYgIV8uaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLmFsbG93ZW1wdHkgPyBbdmFsdWVzXSA6IGV4dHJhY3REYXRhQXNBcnJheSh2YWx1ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcHJlc2VydmUgdGhlIGRhdGF2YWx1ZSBpZiBkYXRhc2V0SXRlbXMgYXJlIGVtcHR5LlxuICAgICAgICBpZiAoIXRoaXMuZGF0YXNldEl0ZW1zLmxlbmd0aCAmJiBpc0RlZmluZWQodmFsdWVzKSkge1xuICAgICAgICAgICAgdGhpcy50b0JlUHJvY2Vzc2VkRGF0YXZhbHVlID0gdmFsdWVzO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyRmllbGQgPSB0aGlzLmRhdGFmaWVsZCA9PT0gQUxMRklFTERTID8gJ2RhdGFPYmplY3QnIDogJ2tleSc7XG5cbiAgICAgICAgaWYgKF8uaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0gW107XG4gICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1CeVZhbHVlID0gXy5maW5kKHRoaXMuZGF0YXNldEl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlckZpZWxkID09PSAnZGF0YU9iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBhcmVieSAmJiB0aGlzLmNvbXBhcmVieS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNFcXVhbFdpdGhGaWVsZHMoaXRlbVtmaWx0ZXJGaWVsZF0sIHZhbCwgdGhpcy5jb21wYXJlYnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXy5pc09iamVjdChpdGVtLnZhbHVlKSA/IF8uaXNFcXVhbChpdGVtLnZhbHVlLCB2YWwpIDogKF8udG9TdHJpbmcoaXRlbS52YWx1ZSkpLnRvTG93ZXJDYXNlKCkgPT09IChfLnRvU3RyaW5nKHZhbCkpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtQnlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtQnlWYWx1ZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsQnlLZXkucHVzaChpdGVtQnlWYWx1ZS5rZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1CeVZhbHVlID0gXy5maW5kKHRoaXMuZGF0YXNldEl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyRmllbGQgPT09ICdkYXRhT2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21wYXJlYnkgJiYgdGhpcy5jb21wYXJlYnkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNFcXVhbFdpdGhGaWVsZHMoaXRlbVtmaWx0ZXJGaWVsZF0sIHZhbHVlcywgdGhpcy5jb21wYXJlYnkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAoXy5pc09iamVjdChpdGVtLnZhbHVlKSAgPyBfLmlzRXF1YWwoaXRlbS52YWx1ZSwgdmFsdWVzKSA6IChfLnRvU3RyaW5nKGl0ZW0udmFsdWUpKS50b0xvd2VyQ2FzZSgpID09PSAoXy50b1N0cmluZyh2YWx1ZXMpKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGl0ZW1CeVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaXRlbUJ5VmFsdWUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsQnlLZXkgPSBpdGVtQnlWYWx1ZS5rZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZGVsYXlpbmcgdGhlIGRhdGF2YWx1ZSB1cGRhdGUgYXMgdGhlIHdpZGdldHMgaW4gbGl2ZWZvcm0gYXJlIGhhdmluZyBkYXRhdmFsdWUgYXMgdW5kZWZpbmVkIGFuZCBub3QgdGhlIGRlZmF1bHQgcHJvdmlkZWQgdmFsdWVcbiAgICAgICAgLy8gYmVjYXVzZSBkYXRhdmFsdWUgaXMgdXBkYXRlZCBsYXRlciB3aGVuIG5ldyBkYXRhc2V0IGlzIGF2YWlsYWJsZS5cbiAgICAgICAgdGhpcy5fZGVib3VuY2VEYXRhdmFsdWVVcGRhdGlvbih2YWx1ZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVib3VuY2VEYXRhdmFsdWVVcGRhdGlvbiA9IF8uZGVib3VuY2UoKHZhbHVlcykgPT4ge1xuICAgICAgICAvLyBpZiBubyBpdGVtIGlzIGZvdW5kIGluIGRhdGFzZXRJdGVtcywgd2FpdCB1bnRpbGwgdGhlIGRhdGFzZXQgdXBkYXRlcyBieSBwcmVzZXJ2aW5nIHRoZSBkYXRhdmFsdWUgaW4gdG9CZVByb2Nlc3NlZERhdGF2YWx1ZS5cbiAgICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5fbW9kZWxCeUtleSkgfHwgKF8uaXNBcnJheSh0aGlzLl9tb2RlbEJ5S2V5KSAmJiAhdGhpcy5fbW9kZWxCeUtleS5sZW5ndGgpKSB7XG4gICAgICAgICAgICB0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWUgPSB2YWx1ZXM7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSAnJztcbiAgICAgICAgfSBlbHNlIGlmIChpc0RlZmluZWQodGhpcy50b0JlUHJvY2Vzc2VkRGF0YXZhbHVlKSkge1xuICAgICAgICAgICAgLy8gb2J0YWluIHRoZSBmaXJzdCBhcnJheSB2YWx1ZSB3aGVuIG11bHRpcGxlIGlzIHNldCB0byBmYWxzZS5cbiAgICAgICAgICAgIC8vIHNldCB0aGUgbW9kZWxCeVZhbHVlIG9ubHkgd2hlbiB1bmRlZmluZWQuXG4gICAgICAgICAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLl9tb2RlbEJ5VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gKCF0aGlzLm11bHRpcGxlICYmIF8uaXNBcnJheSh0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWUpKSA/IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZVswXSA6IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdERpc3BsYXlWYWx1ZXMoKTtcbiAgICB9LCAxNTApO1xuXG4gICAgLy8gVXBkYXRlcyB0aGUgZGlzcGxheVZhbHVlIHByb3BlcnR5LlxuICAgIHByb3RlY3RlZCBpbml0RGlzcGxheVZhbHVlcygpIHtcbiAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLmRhdGFzZXRJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWVzLnB1c2goaXRlbS5sYWJlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IGRpc3BsYXlWYWx1ZXMgOiBkaXNwbGF5VmFsdWVzWzBdIHx8ICcnO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBkYXRhc2V0IGFuZCBleHRyYWN0cyB0aGUgZGlzcGxheU9wdGlvbnMgZnJvbSBwYXJzZWQgZGF0YXNldC5cbiAgICBwcm90ZWN0ZWQgaW5pdERhdGFzZXRJdGVtcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXQgfHwgXy5pc0VtcHR5KHRoaXMuZGF0YXNldCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNldEl0ZW1zID0gW107XG4gICAgICAgICAgICAvLyBub3RpZnkgdGhlIGRhdGFzZXQgbGlzdGVuZXJzXG4gICAgICAgICAgICB0aGlzLmRhdGFzZXQkLm5leHQodGhpcy5kYXRhc2V0SXRlbXMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29udmVydCBhbnkgZGF0YXNldCB0byB0aGUgb2JqZWN0IGZvcm1hdC5cbiAgICAgICAgY29uc3Qgb3JkZXJlZERhdGFzZXQgPSBnZXRPcmRlcmVkRGF0YXNldChjb252ZXJ0RGF0YVRvT2JqZWN0KHRoaXMuZGF0YXNldCksIHRoaXMub3JkZXJieSk7XG5cbiAgICAgICAgaWYgKHRoaXMudXNla2V5cykge1xuICAgICAgICAgICAgdGhpcy5kYXRhc2V0SXRlbXMgPSB0cmFuc2Zvcm1EYXRhV2l0aEtleXMob3JkZXJlZERhdGFzZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheU9wdGlvbnMgPSB0cmFuc2Zvcm1Gb3JtRGF0YSh0aGlzLnZpZXdQYXJlbnQsIG9yZGVyZWREYXRhc2V0LCB0aGlzLmRhdGFmaWVsZCwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5kaXNwbGF5ZmllbGQgfHwgdGhpcy5kaXNwbGF5bGFiZWwsXG4gICAgICAgICAgICAgICAgZGlzcGxheUV4cHI6IHRoaXMuZGlzcGxheWV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgYmluZERpc3BsYXlFeHByOiB0aGlzLmJpbmRkaXNwbGF5ZXhwcmVzc2lvbiB8fCB0aGlzLmJpbmRkaXNwbGF5bGFiZWwsXG4gICAgICAgICAgICAgICAgYmluZERpc3BsYXlJbWdTcmM6IHRoaXMuYmluZGRpc3BsYXlpbWFnZXNyYyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5SW1nU3JjOiB0aGlzLmRpc3BsYXlpbWFnZXNyY1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBnZXQgdGhlIHVuaXF1ZSBvYmplY3RzIG91dCBvZiB0aGUgZXh0cmFjdGVkIGRhdGEuIE5vdGlmeSBjaGFuZ2UgaW4gZGF0YXNldEl0ZW1zIHVzaW5nIFsuLi5kYXRhc2V0SXRlbXNdIG5vdGF0aW9uXG4gICAgICAgICAgICB0aGlzLmRhdGFzZXRJdGVtcyA9IFsuLi5nZXRVbmlxT2Jqc0J5RGF0YUZpZWxkKGRpc3BsYXlPcHRpb25zLCB0aGlzLmRhdGFmaWVsZCwgdGhpcy5kaXNwbGF5ZmllbGQgfHwgdGhpcy5kaXNwbGF5bGFiZWwsIHRvQm9vbGVhbih0aGlzLmFsbG93ZW1wdHkpKV07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvc3REYXRhc2V0SXRlbXNJbml0KCk7XG4gICAgfVxuXG4gICAgLy8gT25jZSB0aGUgZGF0YXNldEl0ZW1zIGFyZSByZWFkeSwgc2V0IHRoZSBwcm94eU1vZGVsIGJ5IHVzaW5nIGRhdGF2YWx1ZS5cbiAgICBwcm90ZWN0ZWQgcG9zdERhdGFzZXRJdGVtc0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGggJiYgIXRoaXMuX2RlZmF1bHRRdWVyeUludm9rZWQpIHtcbiAgICAgICAgICAgIC8vIHVzZSB0aGUgbGF0ZXN0IG9mIHRvQmVQcm9jZXNzZWREYXRhdmFsdWUsIGRhdGF2YWx1ZVxuICAgICAgICAgICAgY29uc3QgX2RhdGF2YWx1ZSA9IF8uaXNFbXB0eSh0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWUpID8gdGhpcy5kYXRhdmFsdWUgOiB0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEJ5VmFsdWUoX2RhdGF2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm90aWZ5IHRoZSBkYXRhc2V0IGxpc3RlbmVyc1xuICAgICAgICB0aGlzLmRhdGFzZXQkLm5leHQodGhpcy5kYXRhc2V0SXRlbXMpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IHRoZSBzZWxlY3RlZCBmbGFnIG9uIGRhdGFzZXRJdGVtcyB0byBmYWxzZS5cbiAgICBwcm90ZWN0ZWQgcmVzZXREYXRhc2V0SXRlbXMoKSB7XG4gICAgICAgIHRoaXMuZGF0YXNldEl0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLnNlbGVjdGVkID0gZmFsc2UpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRUZW1wbGF0ZShwYXJ0aWFsTmFtZSkge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBwYXJ0aWFsTmFtZTtcbiAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudCAmJiB0aGlzLnZpZXdQYXJlbnQucHJlZmFiTmFtZSkge1xuICAgICAgICAgICAgdGhpc1sncHJlZmFiTmFtZSddID0gdGhpcy52aWV3UGFyZW50LnByZWZhYk5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHByaXZhdGUgZ2V0R3JvdXBlZERhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGggPyBncm91cERhdGEodGhpcywgY29udmVydERhdGFUb09iamVjdCh0aGlzLmRhdGFzZXRJdGVtcyksIHRoaXMuZ3JvdXBieSwgdGhpcy5tYXRjaCwgdGhpcy5vcmRlcmJ5LCB0aGlzLmRhdGVmb3JtYXQsIHRoaXMuZGF0ZVBpcGUsICdkYXRhT2JqZWN0JywgdGhpcy5hcHBEZWZhdWx0cykgOiBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRhdGFzZXRTdWJzY3JpcHRpb24oKSB7XG4gICAgICAgIGNvbnN0IGRhdGFzZXRTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFzZXQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwZWREYXRhID0gdGhpcy5nZXRHcm91cGVkRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBkYXRhc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRHcm91cERhdGEoKSB7XG4gICAgICAgIHRoaXMuZGF0YXNldFN1YnNjcmlwdGlvbigpO1xuICAgICAgICAvLyBJZiBncm91cGJ5IGlzIHNldCwgZ2V0IHRoZSBncm91cGVkRGF0YSBmcm9tIHRoZSBkYXRhc2V0SXRlbXMuXG4gICAgICAgIHRoaXMuZ3JvdXBlZERhdGEgPSB0aGlzLmdldEdyb3VwZWREYXRhKCk7XG4gICAgfVxuXG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RhdGFzZXQnOlxuICAgICAgICAgICAgY2FzZSAnZGF0YWZpZWxkJzpcbiAgICAgICAgICAgIGNhc2UgJ2Rpc3BsYXlmaWVsZCc6XG4gICAgICAgICAgICBjYXNlICdkaXNwbGF5bGFiZWwnOlxuICAgICAgICAgICAgY2FzZSAnZGlzcGxheWV4cHJlc3Npb24nOlxuICAgICAgICAgICAgY2FzZSAnb3JkZXJieSc6XG4gICAgICAgICAgICBjYXNlICd1c2VrZXlzJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJvdW5jZWRJbml0RGF0YXNldEl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XG4gICAgICAgICAgICBjYXNlICdkYXRhdmFsdWUnOlxuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyb3VwYnknOlxuICAgICAgICAgICAgY2FzZSAnbWF0Y2gnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLndpZGdldFR5cGUgIT09ICd3bS1zZWFyY2gnICYmIHRoaXMud2lkZ2V0VHlwZSAhPT0gJ3dtLWNoaXBzJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEdyb3VwRGF0YSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwYnkgJiYgKHRoaXMud2lkZ2V0VHlwZSAhPT0gJ3dtLXNlYXJjaCcgJiYgdGhpcy53aWRnZXRUeXBlICE9PSAnd20tY2hpcHMnKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRHcm91cERhdGEoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBhZGRpbmcgdGhlIGhhbmRsZXIgZm9yIGhlYWRlciBjbGljayBhbmQgdG9nZ2xlIGhlYWRlcnMuXG4gICAgICAgIGlmICh0aGlzLmdyb3VwYnkgJiYgdGhpcy5jb2xsYXBzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVIZWFkZXJDbGljayA9IGhhbmRsZUhlYWRlckNsaWNrO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxIZWFkZXJzID0gdG9nZ2xlQWxsSGVhZGVycy5iaW5kKHVuZGVmaW5lZCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYodGhpcy5jYW5jZWxMb2NhbGVDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsTG9jYWxlQ2hhbmdlU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -241,9 +241,7 @@ class BaseFormCustomComponent extends BaseFormComponent {
241
241
  invokeOnChange(value, $event, valid) {
242
242
  // let the angular know about the change
243
243
  this._onChange(value);
244
- if (valid) {
245
- super.invokeOnChange(value, $event);
246
- }
244
+ super.invokeOnChange(value, $event);
247
245
  }
248
246
  invokeOnTouched($event) {
249
247
  this._onTouched();
@@ -442,6 +440,9 @@ class DatasetAwareFormComponent extends BaseFormCustomComponent {
442
440
  $appDigest();
443
441
  }, 150);
444
442
  this.handleHeaderClick = noop;
443
+ this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe("locale-changed", () => {
444
+ this._debouncedInitDatasetItems();
445
+ });
445
446
  }
446
447
  get modelByKey() {
447
448
  return this._modelByKey;
@@ -679,6 +680,11 @@ class DatasetAwareFormComponent extends BaseFormCustomComponent {
679
680
  this.toggleAllHeaders = toggleAllHeaders.bind(undefined, this);
680
681
  }
681
682
  }
683
+ ngOnDestroy() {
684
+ if (this.cancelLocaleChangeSubscription) {
685
+ this.cancelLocaleChangeSubscription();
686
+ }
687
+ }
682
688
  }
683
689
  DatasetAwareFormComponent.decorators = [
684
690
  { type: Injectable }