@seniorsistemas/angular-components 14.10.0 → 14.10.1

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 (69) hide show
  1. package/bundles/seniorsistemas-angular-components.umd.js +39 -361
  2. package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
  3. package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
  4. package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
  5. package/components/code-editor/core/facades/core-facade.d.ts +3 -1
  6. package/components/code-editor/infra/cores/codemirror-6/codemirror-6-core.d.ts +2 -1
  7. package/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/index.d.ts +0 -1
  8. package/components/code-editor/infra/utils/index.d.ts +0 -1
  9. package/esm2015/components/code-editor/core/facades/core-facade.js +15 -10
  10. package/esm2015/components/code-editor/core/use-cases/core-linters.js +5 -8
  11. package/esm2015/components/code-editor/infra/cores/codemirror-6/codemirror-6-core.js +7 -4
  12. package/esm2015/components/code-editor/infra/cores/codemirror-6/languages/editor-languages.js +6 -3
  13. package/esm2015/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete.js +2 -3
  14. package/esm2015/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/tax-calculation.language.js +1 -3
  15. package/esm2015/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/index.js +1 -2
  16. package/esm2015/components/code-editor/infra/cores/codemirror-6/themes/editor-themes.js +6 -3
  17. package/esm2015/components/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-highlight-style.js +4 -4
  18. package/esm2015/components/code-editor/infra/utils/index.js +1 -2
  19. package/esm2015/components/code-editor/presentation/code-editor-component.js +3 -2
  20. package/esm5/components/code-editor/core/facades/core-facade.js +15 -10
  21. package/esm5/components/code-editor/core/use-cases/core-linters.js +5 -8
  22. package/esm5/components/code-editor/infra/cores/codemirror-6/codemirror-6-core.js +7 -4
  23. package/esm5/components/code-editor/infra/cores/codemirror-6/languages/editor-languages.js +6 -3
  24. package/esm5/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete.js +2 -3
  25. package/esm5/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/tax-calculation.language.js +1 -3
  26. package/esm5/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/index.js +1 -2
  27. package/esm5/components/code-editor/infra/cores/codemirror-6/themes/editor-themes.js +6 -3
  28. package/esm5/components/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-highlight-style.js +4 -4
  29. package/esm5/components/code-editor/infra/utils/index.js +1 -2
  30. package/esm5/components/code-editor/presentation/code-editor-component.js +3 -2
  31. package/fesm2015/seniorsistemas-angular-components.js +40 -283
  32. package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
  33. package/fesm5/seniorsistemas-angular-components.js +40 -362
  34. package/fesm5/seniorsistemas-angular-components.js.map +1 -1
  35. package/package.json +1 -1
  36. package/seniorsistemas-angular-components.metadata.json +1 -1
  37. package/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/on-paste-completion-items-updater/models/index.d.ts +0 -1
  38. package/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/on-paste-completion-items-updater/models/interfaces/request-extra-info.d.ts +0 -4
  39. package/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/on-paste-completion-items-updater/on-paste-completion-items-updater.d.ts +0 -6
  40. package/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/update-core-completion-items.d.ts +0 -2
  41. package/components/code-editor/infra/linters/tax-calculation/models/index.d.ts +0 -1
  42. package/components/code-editor/infra/linters/tax-calculation/models/interfaces/validation.d.ts +0 -4
  43. package/components/code-editor/infra/linters/tax-calculation/tax-calculation-linter.d.ts +0 -11
  44. package/components/code-editor/infra/linters/tax-calculation/validation-compositors/index.d.ts +0 -2
  45. package/components/code-editor/infra/linters/tax-calculation/validation-compositors/validation-composite.d.ts +0 -6
  46. package/components/code-editor/infra/linters/tax-calculation/validation-compositors/validation-workers-compositor/validations-workers-composite.d.ts +0 -6
  47. package/components/code-editor/infra/utils/regex-index-of.d.ts +0 -8
  48. package/esm2015/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/on-paste-completion-items-updater/models/index.js +0 -1
  49. package/esm2015/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/on-paste-completion-items-updater/models/interfaces/request-extra-info.js +0 -1
  50. package/esm2015/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/on-paste-completion-items-updater/on-paste-completion-items-updater.js +0 -164
  51. package/esm2015/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/update-core-completion-items.js +0 -30
  52. package/esm2015/components/code-editor/infra/linters/tax-calculation/models/index.js +0 -1
  53. package/esm2015/components/code-editor/infra/linters/tax-calculation/models/interfaces/validation.js +0 -1
  54. package/esm2015/components/code-editor/infra/linters/tax-calculation/tax-calculation-linter.js +0 -19
  55. package/esm2015/components/code-editor/infra/linters/tax-calculation/validation-compositors/index.js +0 -3
  56. package/esm2015/components/code-editor/infra/linters/tax-calculation/validation-compositors/validation-composite.js +0 -16
  57. package/esm2015/components/code-editor/infra/linters/tax-calculation/validation-compositors/validation-workers-compositor/validations-workers-composite.js +0 -25
  58. package/esm2015/components/code-editor/infra/utils/regex-index-of.js +0 -12
  59. package/esm5/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/on-paste-completion-items-updater/models/index.js +0 -1
  60. package/esm5/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/on-paste-completion-items-updater/models/interfaces/request-extra-info.js +0 -1
  61. package/esm5/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/on-paste-completion-items-updater/on-paste-completion-items-updater.js +0 -191
  62. package/esm5/components/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/update-core-completion-items.js +0 -34
  63. package/esm5/components/code-editor/infra/linters/tax-calculation/models/index.js +0 -1
  64. package/esm5/components/code-editor/infra/linters/tax-calculation/models/interfaces/validation.js +0 -1
  65. package/esm5/components/code-editor/infra/linters/tax-calculation/tax-calculation-linter.js +0 -21
  66. package/esm5/components/code-editor/infra/linters/tax-calculation/validation-compositors/index.js +0 -3
  67. package/esm5/components/code-editor/infra/linters/tax-calculation/validation-compositors/validation-composite.js +0 -49
  68. package/esm5/components/code-editor/infra/linters/tax-calculation/validation-compositors/validation-workers-compositor/validations-workers-composite.js +0 -42
  69. package/esm5/components/code-editor/infra/utils/regex-index-of.js +0 -12
@@ -11,7 +11,8 @@ export declare abstract class CoreFacade {
11
11
  private _linter;
12
12
  changeEditorOptions(options: EditorOptions): void;
13
13
  changeCode(code: string): void;
14
- destroyObservables(): void;
14
+ abstract initCore(): void;
15
+ abstract destroyCore(): void;
15
16
  abstract setCoreWrapperElement(element: HTMLDivElement): void;
16
17
  abstract setCode(code: string): void;
17
18
  getOnCoreFinishLoadObservable(): Observable<void>;
@@ -27,4 +28,5 @@ export declare abstract class CoreFacade {
27
28
  private notifyCodeValidityChange;
28
29
  private validateLanguage;
29
30
  private validateTheme;
31
+ private getSafeCode;
30
32
  }
@@ -15,7 +15,8 @@ export declare class CodeMirror6Core extends CoreFacade {
15
15
  static updateEditorView(...transactionSpecs: TransactionSpec[]): void;
16
16
  setCoreWrapperElement(element: HTMLDivElement): void;
17
17
  setCode(code: string): void;
18
- destroyObservables(): void;
18
+ initCore(): void;
19
+ destroyCore(): void;
19
20
  protected setCoreEditorOptions(options: EditorOptions): void;
20
21
  protected highlightCode(markers: Marker[]): void;
21
22
  private setObservablesListeners;
@@ -1,3 +1,2 @@
1
1
  export * from "./get-language-configs";
2
2
  export * from "./get-safe-response";
3
- export * from "./update-core-completion-items";
@@ -1,3 +1,2 @@
1
1
  export * from "./custom-http-client/custom-http-client";
2
2
  export * from "./custom-translations/index";
3
- export * from "./regex-index-of";
@@ -8,6 +8,7 @@ export class CoreFacade {
8
8
  this.$onCodeChange = new Subject();
9
9
  this.$onCodeValidityChange = new Subject();
10
10
  this._completionItems = [];
11
+ this._lastCodeEmitted = "";
11
12
  }
12
13
  changeEditorOptions(options) {
13
14
  if (options) {
@@ -20,11 +21,11 @@ export class CoreFacade {
20
21
  }
21
22
  }
22
23
  changeCode(code) {
23
- if (code !== this._lastCodeEmitted) {
24
- this.setCode(code);
24
+ const safeCode = this.getSafeCode(code);
25
+ if (safeCode !== this._lastCodeEmitted) {
26
+ this.setCode(safeCode);
25
27
  }
26
28
  }
27
- destroyObservables() { }
28
29
  getOnCoreFinishLoadObservable() {
29
30
  return this.$onCoreFinishLoad.asObservable();
30
31
  }
@@ -38,14 +39,15 @@ export class CoreFacade {
38
39
  this.$onCoreFinishLoad.next();
39
40
  }
40
41
  notifyCodeChange(code) {
41
- if (code !== this._lastCodeEmitted) {
42
- this._lastCodeEmitted = code;
43
- this.$onCodeChange.next(code);
44
- this.validateCode(code);
42
+ const safeCode = this.getSafeCode(code);
43
+ if (safeCode !== this._lastCodeEmitted) {
44
+ this._lastCodeEmitted = safeCode;
45
+ this.$onCodeChange.next(safeCode);
46
+ this.validateCode(safeCode);
45
47
  }
46
48
  }
47
49
  updateCompletionItems(items) {
48
- this._completionItems = items;
50
+ this._completionItems = items || [];
49
51
  this.validateCode(this._lastCodeEmitted);
50
52
  }
51
53
  setLinter(language) {
@@ -56,7 +58,7 @@ export class CoreFacade {
56
58
  if (this._linter) {
57
59
  const markers = yield this._linter.lint(code, this._completionItems);
58
60
  this.highlightCode(markers);
59
- this.notifyCodeValidityChange(!!markers.length);
61
+ this.notifyCodeValidityChange(!markers.length);
60
62
  }
61
63
  });
62
64
  }
@@ -76,5 +78,8 @@ export class CoreFacade {
76
78
  if (theme && !themes.includes(theme))
77
79
  throw new Error(`The informed theme "${theme}" is not supported`);
78
80
  }
81
+ getSafeCode(code) {
82
+ return typeof code === "string" ? code : "";
83
+ }
79
84
  }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1mYWNhZGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jb2RlLWVkaXRvci9jb3JlL2ZhY2FkZXMvY29yZS1mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxhQUFhLEVBQ2IsT0FBTyxFQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUVILFNBQVMsRUFDVCxNQUFNLEVBQ1QsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3hELE1BQU0sT0FBZ0IsVUFBVTtJQUFoQztRQUVZLHNCQUFpQixHQUF3QixJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxrQkFBYSxHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQy9DLDBCQUFxQixHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hELHFCQUFnQixHQUFhLEVBQUUsQ0FBQztJQXdGNUMsQ0FBQztJQW5GVSxtQkFBbUIsQ0FBQyxPQUFzQjtRQUM3QyxJQUFJLE9BQU8sRUFBRTtZQUNULElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7WUFFckcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVk7UUFDMUIsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRU0sa0JBQWtCLEtBQVUsQ0FBQztJQUs3Qiw2QkFBNkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVNLHlCQUF5QjtRQUM1QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVNLGlDQUFpQztRQUNwQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBS1Msb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsSUFBWTtRQUNuQyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVTLHFCQUFxQixDQUFDLEtBQWU7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxTQUFTLENBQUMsUUFBbUI7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFYSxZQUFZLENBQUMsSUFBWTs7WUFDbkMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNkLE1BQU0sT0FBTyxHQUFhLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUMvRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNuRDtRQUNMLENBQUM7S0FBQTtJQUVPLHdCQUF3QixDQUFDLFFBQWlCO1FBQzlDLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUM1QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsUUFBUSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDN0M7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBbUI7UUFDeEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQyxJQUFJLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsUUFBUSxvQkFBb0IsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFTyxhQUFhLENBQUMsS0FBYTtRQUMvQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixLQUFLLG9CQUFvQixDQUFDLENBQUM7SUFDNUcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBPYnNlcnZhYmxlLFxuICAgIFJlcGxheVN1YmplY3QsXG4gICAgU3ViamVjdFxufSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQge1xuICAgIEVkaXRvck9wdGlvbnMsXG4gICAgTGFuZ3VhZ2VzLFxuICAgIFRoZW1lc1xufSBmcm9tIFwiLi4vLi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBNYXJrZXIgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBDb3JlTGludGVycyB9IGZyb20gXCIuLi91c2UtY2FzZXMvY29yZS1saW50ZXJzXCI7XG5pbXBvcnQgeyBMaW50ZXJGYWNhZGUgfSBmcm9tIFwiLi9saW50ZXItZmFjYWRlXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb3JlRmFjYWRlIHtcblxuICAgIHByaXZhdGUgJG9uQ29yZUZpbmlzaExvYWQ6IFJlcGxheVN1YmplY3Q8dm9pZD4gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgICBwcml2YXRlICRvbkNvZGVDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSAkb25Db2RlVmFsaWRpdHlDaGFuZ2U6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgX2NvbXBsZXRpb25JdGVtczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF9sYXN0Q29kZUVtaXR0ZWQhOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbGFzdENvZGVWYWxpZGl0eUVtaXR0ZWQhOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2xpbnRlciE6IExpbnRlckZhY2FkZTtcblxuICAgIHB1YmxpYyBjaGFuZ2VFZGl0b3JPcHRpb25zKG9wdGlvbnM6IEVkaXRvck9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IEVycm9yKFwiRWRpdG9yJ3Mgb3B0aW9ucyBtdXN0IGJlIGFuIEVkaXRvck9wdGlvbnMgb2JqZWN0XCIpO1xuXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlTGFuZ3VhZ2Uob3B0aW9ucy5sYW5ndWFnZSk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlVGhlbWUob3B0aW9ucy50aGVtZSk7XG4gICAgICAgICAgICB0aGlzLnNldExpbnRlcihvcHRpb25zLmxhbmd1YWdlKTtcblxuICAgICAgICAgICAgdGhpcy5zZXRDb3JlRWRpdG9yT3B0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjaGFuZ2VDb2RlKGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoY29kZSAhPT0gdGhpcy5fbGFzdENvZGVFbWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNldENvZGUoY29kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveU9ic2VydmFibGVzKCk6IHZvaWQge31cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRDb3JlV3JhcHBlckVsZW1lbnQoZWxlbWVudDogSFRNTERpdkVsZW1lbnQpOiB2b2lkO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRDb2RlKGNvZGU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgZ2V0T25Db3JlRmluaXNoTG9hZE9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRvbkNvcmVGaW5pc2hMb2FkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPbkNvZGVDaGFuZ2VPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRvbkNvZGVDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9uQ29kZVZhbGlkaXR5Q2hhbmdlT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJG9uQ29kZVZhbGlkaXR5Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRDb3JlRWRpdG9yT3B0aW9ucyhvcHRpb25zOiBFZGl0b3JPcHRpb25zKTogdm9pZDtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGlnaGxpZ2h0Q29kZShtYXJrZXJzOiBNYXJrZXJbXSk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgbm90aWZ5Q29yZUZpbmlzaExvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuJG9uQ29yZUZpbmlzaExvYWQubmV4dCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBub3RpZnlDb2RlQ2hhbmdlKGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoY29kZSAhPT0gdGhpcy5fbGFzdENvZGVFbWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0Q29kZUVtaXR0ZWQgPSBjb2RlO1xuICAgICAgICAgICAgdGhpcy4kb25Db2RlQ2hhbmdlLm5leHQoY29kZSk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlQ29kZShjb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVDb21wbGV0aW9uSXRlbXMoaXRlbXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbXBsZXRpb25JdGVtcyA9IGl0ZW1zO1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29kZSh0aGlzLl9sYXN0Q29kZUVtaXR0ZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TGludGVyKGxhbmd1YWdlOiBMYW5ndWFnZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGludGVyID0gQ29yZUxpbnRlcnMuZ2V0TGludGVyKGxhbmd1YWdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlQ29kZShjb2RlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX2xpbnRlcikge1xuICAgICAgICAgICAgY29uc3QgbWFya2VyczogTWFya2VyW10gPSBhd2FpdCB0aGlzLl9saW50ZXIubGludChjb2RlLCB0aGlzLl9jb21wbGV0aW9uSXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2RlKG1hcmtlcnMpO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlDb2RlVmFsaWRpdHlDaGFuZ2UoISFtYXJrZXJzLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUNvZGVWYWxpZGl0eUNoYW5nZSh2YWxpZGl0eTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodmFsaWRpdHkgIT09IHRoaXMuX2xhc3RDb2RlVmFsaWRpdHlFbWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0Q29kZVZhbGlkaXR5RW1pdHRlZCA9IHZhbGlkaXR5O1xuICAgICAgICAgICAgdGhpcy4kb25Db2RlVmFsaWRpdHlDaGFuZ2UubmV4dCh2YWxpZGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlTGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYW5ndWFnZXMgPSBPYmplY3QudmFsdWVzKExhbmd1YWdlcyk7XG4gICAgICAgIGlmIChsYW5ndWFnZSAmJiAhbGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmd1YWdlKSkgdGhyb3cgbmV3IEVycm9yKGBUaGUgaW5mb3JtZWQgbGFuZ3VhZ2UgXCIke2xhbmd1YWdlfVwiIGlzIG5vdCBzdXBwb3J0ZWRgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlVGhlbWUodGhlbWU6IFRoZW1lcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aGVtZXMgPSBPYmplY3QudmFsdWVzKFRoZW1lcyk7XG4gICAgICAgIGlmICh0aGVtZSAmJiAhdGhlbWVzLmluY2x1ZGVzKHRoZW1lKSkgdGhyb3cgbmV3IEVycm9yKGBUaGUgaW5mb3JtZWQgdGhlbWUgXCIke3RoZW1lfVwiIGlzIG5vdCBzdXBwb3J0ZWRgKTtcbiAgICB9XG59XG4iXX0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1mYWNhZGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jb2RlLWVkaXRvci9jb3JlL2ZhY2FkZXMvY29yZS1mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxhQUFhLEVBQ2IsT0FBTyxFQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUVILFNBQVMsRUFDVCxNQUFNLEVBQ1QsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3hELE1BQU0sT0FBZ0IsVUFBVTtJQUFoQztRQUVZLHNCQUFpQixHQUF3QixJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxrQkFBYSxHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQy9DLDBCQUFxQixHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hELHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUNoQyxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUE4RmxDLENBQUM7SUExRlUsbUJBQW1CLENBQUMsT0FBc0I7UUFDN0MsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVE7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1lBRXJHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFakMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFZO1FB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QUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgT2JzZXJ2YWJsZSxcbiAgICBSZXBsYXlTdWJqZWN0LFxuICAgIFN1YmplY3Rcbn0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHtcbiAgICBFZGl0b3JPcHRpb25zLFxuICAgIExhbmd1YWdlcyxcbiAgICBUaGVtZXNcbn0gZnJvbSBcIi4uLy4uL21vZGVsc1wiO1xuaW1wb3J0IHsgTWFya2VyIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xuaW1wb3J0IHsgQ29yZUxpbnRlcnMgfSBmcm9tIFwiLi4vdXNlLWNhc2VzL2NvcmUtbGludGVyc1wiO1xuaW1wb3J0IHsgTGludGVyRmFjYWRlIH0gZnJvbSBcIi4vbGludGVyLWZhY2FkZVwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29yZUZhY2FkZSB7XG5cbiAgICBwcml2YXRlICRvbkNvcmVGaW5pc2hMb2FkOiBSZXBsYXlTdWJqZWN0PHZvaWQ+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG4gICAgcHJpdmF0ZSAkb25Db2RlQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgJG9uQ29kZVZhbGlkaXR5Q2hhbmdlOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIF9jb21wbGV0aW9uSXRlbXM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBfbGFzdENvZGVFbWl0dGVkID0gXCJcIjtcbiAgICBwcml2YXRlIF9sYXN0Q29kZVZhbGlkaXR5RW1pdHRlZCE6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfbGludGVyITogTGludGVyRmFjYWRlO1xuXG4gICAgcHVibGljIGNoYW5nZUVkaXRvck9wdGlvbnMob3B0aW9uczogRWRpdG9yT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJFZGl0b3IncyBvcHRpb25zIG11c3QgYmUgYW4gRWRpdG9yT3B0aW9ucyBvYmplY3RcIik7XG5cbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVMYW5ndWFnZShvcHRpb25zLmxhbmd1YWdlKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVUaGVtZShvcHRpb25zLnRoZW1lKTtcbiAgICAgICAgICAgIHRoaXMuc2V0TGludGVyKG9wdGlvbnMubGFuZ3VhZ2UpO1xuXG4gICAgICAgICAgICB0aGlzLnNldENvcmVFZGl0b3JPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZUNvZGUoY29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNhZmVDb2RlID0gdGhpcy5nZXRTYWZlQ29kZShjb2RlKTtcbiAgICAgICAgaWYgKHNhZmVDb2RlICE9PSB0aGlzLl9sYXN0Q29kZUVtaXR0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29kZShzYWZlQ29kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgaW5pdENvcmUoKTogdm9pZDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZGVzdHJveUNvcmUoKTogdm9pZDtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRDb3JlV3JhcHBlckVsZW1lbnQoZWxlbWVudDogSFRNTERpdkVsZW1lbnQpOiB2b2lkO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXRDb2RlKGNvZGU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgZ2V0T25Db3JlRmluaXNoTG9hZE9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRvbkNvcmVGaW5pc2hMb2FkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPbkNvZGVDaGFuZ2VPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRvbkNvZGVDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9uQ29kZVZhbGlkaXR5Q2hhbmdlT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJG9uQ29kZVZhbGlkaXR5Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRDb3JlRWRpdG9yT3B0aW9ucyhvcHRpb25zOiBFZGl0b3JPcHRpb25zKTogdm9pZDtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGlnaGxpZ2h0Q29kZShtYXJrZXJzOiBNYXJrZXJbXSk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgbm90aWZ5Q29yZUZpbmlzaExvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuJG9uQ29yZUZpbmlzaExvYWQubmV4dCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBub3RpZnlDb2RlQ2hhbmdlKGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzYWZlQ29kZSA9IHRoaXMuZ2V0U2FmZUNvZGUoY29kZSk7XG4gICAgICAgIGlmIChzYWZlQ29kZSAhPT0gdGhpcy5fbGFzdENvZGVFbWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0Q29kZUVtaXR0ZWQgPSBzYWZlQ29kZTtcbiAgICAgICAgICAgIHRoaXMuJG9uQ29kZUNoYW5nZS5uZXh0KHNhZmVDb2RlKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVDb2RlKHNhZmVDb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVDb21wbGV0aW9uSXRlbXMoaXRlbXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbXBsZXRpb25JdGVtcyA9IGl0ZW1zIHx8IFtdO1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29kZSh0aGlzLl9sYXN0Q29kZUVtaXR0ZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TGludGVyKGxhbmd1YWdlOiBMYW5ndWFnZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGludGVyID0gQ29yZUxpbnRlcnMuZ2V0TGludGVyKGxhbmd1YWdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlQ29kZShjb2RlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX2xpbnRlcikge1xuICAgICAgICAgICAgY29uc3QgbWFya2VyczogTWFya2VyW10gPSBhd2FpdCB0aGlzLl9saW50ZXIubGludChjb2RlLCB0aGlzLl9jb21wbGV0aW9uSXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2RlKG1hcmtlcnMpO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlDb2RlVmFsaWRpdHlDaGFuZ2UoIW1hcmtlcnMubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5Q29kZVZhbGlkaXR5Q2hhbmdlKHZhbGlkaXR5OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWxpZGl0eSAhPT0gdGhpcy5fbGFzdENvZGVWYWxpZGl0eUVtaXR0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RDb2RlVmFsaWRpdHlFbWl0dGVkID0gdmFsaWRpdHk7XG4gICAgICAgICAgICB0aGlzLiRvbkNvZGVWYWxpZGl0eUNoYW5nZS5uZXh0KHZhbGlkaXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVMYW5ndWFnZShsYW5ndWFnZTogTGFuZ3VhZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlcyA9IE9iamVjdC52YWx1ZXMoTGFuZ3VhZ2VzKTtcbiAgICAgICAgaWYgKGxhbmd1YWdlICYmICFsYW5ndWFnZXMuaW5jbHVkZXMobGFuZ3VhZ2UpKSB0aHJvdyBuZXcgRXJyb3IoYFRoZSBpbmZvcm1lZCBsYW5ndWFnZSBcIiR7bGFuZ3VhZ2V9XCIgaXMgbm90IHN1cHBvcnRlZGApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVUaGVtZSh0aGVtZTogVGhlbWVzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoZW1lcyA9IE9iamVjdC52YWx1ZXMoVGhlbWVzKTtcbiAgICAgICAgaWYgKHRoZW1lICYmICF0aGVtZXMuaW5jbHVkZXModGhlbWUpKSB0aHJvdyBuZXcgRXJyb3IoYFRoZSBpbmZvcm1lZCB0aGVtZSBcIiR7dGhlbWV9XCIgaXMgbm90IHN1cHBvcnRlZGApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2FmZUNvZGUoY29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBjb2RlID09PSBcInN0cmluZ1wiID8gY29kZSA6IFwiXCI7XG4gICAgfVxufVxuIl19
@@ -1,12 +1,9 @@
1
- import { Languages } from "../../models";
2
- /* Linters */
3
- import { TaxCalculationLinter } from "../../infra/linters/tax-calculation/tax-calculation-linter";
4
1
  export class CoreLinters {
5
2
  static getLinter(language) {
6
- return CoreLinters._LINTERS.get(language);
3
+ const languageLinterFactory = CoreLinters._LINTERS.get(language);
4
+ if (languageLinterFactory)
5
+ return languageLinterFactory();
7
6
  }
8
7
  }
9
- CoreLinters._LINTERS = new Map([
10
- [Languages.TaxCalculation, new TaxCalculationLinter()]
11
- ]);
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1saW50ZXJzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY29kZS1lZGl0b3IvY29yZS91c2UtY2FzZXMvY29yZS1saW50ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHekMsYUFBYTtBQUNiLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRWxHLE1BQU0sT0FBTyxXQUFXO0lBTWIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFtQjtRQUN2QyxPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7O0FBTmMsb0JBQVEsR0FBaUMsSUFBSSxHQUFHLENBQUM7SUFDNUQsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLElBQUksb0JBQW9CLEVBQUUsQ0FBQztDQUN6RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZXMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBMaW50ZXJGYWNhZGUgfSBmcm9tIFwiLi4vZmFjYWRlcy9saW50ZXItZmFjYWRlXCI7XG5cbi8qIExpbnRlcnMgKi9cbmltcG9ydCB7IFRheENhbGN1bGF0aW9uTGludGVyIH0gZnJvbSBcIi4uLy4uL2luZnJhL2xpbnRlcnMvdGF4LWNhbGN1bGF0aW9uL3RheC1jYWxjdWxhdGlvbi1saW50ZXJcIjtcblxuZXhwb3J0IGNsYXNzIENvcmVMaW50ZXJzIHtcblxuICAgIHByaXZhdGUgc3RhdGljIF9MSU5URVJTOiBNYXA8TGFuZ3VhZ2VzLCBMaW50ZXJGYWNhZGU+ID0gbmV3IE1hcChbXG4gICAgICAgIFtMYW5ndWFnZXMuVGF4Q2FsY3VsYXRpb24sIG5ldyBUYXhDYWxjdWxhdGlvbkxpbnRlcigpXVxuICAgIF0pO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXRMaW50ZXIobGFuZ3VhZ2U6IExhbmd1YWdlcyk6IExpbnRlckZhY2FkZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBDb3JlTGludGVycy5fTElOVEVSUy5nZXQobGFuZ3VhZ2UpO1xuICAgIH1cbn1cbiJdfQ==
8
+ CoreLinters._LINTERS = new Map([]);
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1saW50ZXJzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY29kZS1lZGl0b3IvY29yZS91c2UtY2FzZXMvY29yZS1saW50ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBTyxXQUFXO0lBSWIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFtQjtRQUN2QyxNQUFNLHFCQUFxQixHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLElBQUkscUJBQXFCO1lBQUUsT0FBTyxxQkFBcUIsRUFBRSxDQUFDO0lBQzlELENBQUM7O0FBTGMsb0JBQVEsR0FBd0MsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZXMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBMaW50ZXJGYWNhZGUgfSBmcm9tIFwiLi4vZmFjYWRlcy9saW50ZXItZmFjYWRlXCI7XG5cbnR5cGUgTGludGVyRmFjYWRlRmFjdG9yeSA9ICgpID0+IExpbnRlckZhY2FkZTsgXG5cbmV4cG9ydCBjbGFzcyBDb3JlTGludGVycyB7XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfTElOVEVSUzogTWFwPExhbmd1YWdlcywgTGludGVyRmFjYWRlRmFjdG9yeT4gPSBuZXcgTWFwKFtdKTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TGludGVyKGxhbmd1YWdlOiBMYW5ndWFnZXMpOiBMaW50ZXJGYWNhZGUgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBsYW5ndWFnZUxpbnRlckZhY3RvcnkgPSBDb3JlTGludGVycy5fTElOVEVSUy5nZXQobGFuZ3VhZ2UpO1xuICAgICAgICBpZiAobGFuZ3VhZ2VMaW50ZXJGYWN0b3J5KSByZXR1cm4gbGFuZ3VhZ2VMaW50ZXJGYWN0b3J5KCk7XG4gICAgfVxufVxuIl19
@@ -13,7 +13,6 @@ export class CodeMirror6Core extends CoreFacade {
13
13
  /* These are necessary for the setCode and setEditorOptions can be called before view has been created */
14
14
  this._codeReceivedBeforeViewCreation = "";
15
15
  this._editorOptionsReceivedBeforeViewCreation = [];
16
- this.setObservablesListeners();
17
16
  }
18
17
  static getEditorView() {
19
18
  return CodeMirror6Core._editorView;
@@ -27,8 +26,12 @@ export class CodeMirror6Core extends CoreFacade {
27
26
  setCode(code) {
28
27
  this.changeEditorContent(code);
29
28
  }
30
- // @Override
31
- destroyObservables() {
29
+ initCore() {
30
+ this.setObservablesListeners();
31
+ }
32
+ destroyCore() {
33
+ this._codeReceivedBeforeViewCreation = "";
34
+ CodeMirror6Core._editorView = null;
32
35
  CodeMirror6Core._ngUnsubscribe.next();
33
36
  CodeMirror6Core._ngUnsubscribe.complete();
34
37
  }
@@ -91,4 +94,4 @@ export class CodeMirror6Core extends CoreFacade {
91
94
  CodeMirror6Core.$onCompletionItemsUpdate = new Subject();
92
95
  CodeMirror6Core._ngUnsubscribe = new Subject();
93
96
  CodeMirror6Core._editorView = null;
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZW1pcnJvci02LWNvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jb2RlLWVkaXRvci9pbmZyYS9jb3Jlcy9jb2RlbWlycm9yLTYvY29kZW1pcnJvci02LWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFDSCxXQUFXLEVBQ1gsV0FBVyxFQUdkLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUcvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV0RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxVQUFVO0lBVTNDO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFMWix5R0FBeUc7UUFDakcsb0NBQStCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLDZDQUF3QyxHQUFjLEVBQUUsQ0FBQztRQUk3RCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWE7UUFDdkIsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxnQkFBbUM7UUFDakUsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFR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STtpQkFDZjthQUNKLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDO1NBQy9DO0lBQ0wsQ0FBQzs7QUE5RmEsd0NBQXdCLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7QUFDM0QsOEJBQWMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUM5QywyQkFBVyxHQUFlLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHtcbiAgICBFZGl0b3JTdGF0ZSxcbiAgICBTdGF0ZUVmZmVjdCxcbiAgICBFeHRlbnNpb24sXG4gICAgVHJhbnNhY3Rpb25TcGVjXG59IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgc2V0RGlhZ25vc3RpY3MgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGludFwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgQ29yZUZhY2FkZSB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL2ZhY2FkZXMvY29yZS1mYWNhZGVcIjtcbmltcG9ydCB7IE1hcmtlciB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL21vZGVsc1wiO1xuaW1wb3J0IHsgRWRpdG9yT3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHNcIjtcbmltcG9ydCB7IEVkaXRvckxhbmd1YWdlcyB9IGZyb20gXCIuL2xhbmd1YWdlcy9lZGl0b3ItbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBFZGl0b3JUaGVtZXMgfSBmcm9tIFwiLi90aGVtZXMvZWRpdG9yLXRoZW1lc1wiO1xuaW1wb3J0IHsgY29udmVydE1hcmtlcnNUb0RpYWdub3N0aWNzIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZXhwb3J0IGNsYXNzIENvZGVNaXJyb3I2Q29yZSBleHRlbmRzIENvcmVGYWNhZGUge1xuXG4gICAgcHVibGljIHN0YXRpYyAkb25Db21wbGV0aW9uSXRlbXNVcGRhdGU6IFN1YmplY3Q8c3RyaW5nW10+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIHN0YXRpYyBfbmdVbnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2VkaXRvclZpZXc6IEVkaXRvclZpZXcgPSBudWxsO1xuXG4gICAgLyogVGhlc2UgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlIHNldENvZGUgYW5kIHNldEVkaXRvck9wdGlvbnMgY2FuIGJlIGNhbGxlZCBiZWZvcmUgdmlldyBoYXMgYmVlbiBjcmVhdGVkICovXG4gICAgcHJpdmF0ZSBfY29kZVJlY2VpdmVkQmVmb3JlVmlld0NyZWF0aW9uID0gXCJcIjtcbiAgICBwcml2YXRlIF9lZGl0b3JPcHRpb25zUmVjZWl2ZWRCZWZvcmVWaWV3Q3JlYXRpb246IEV4dGVuc2lvbiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc2V0T2JzZXJ2YWJsZXNMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEVkaXRvclZpZXcoKTogRWRpdG9yVmlldyB7XG4gICAgICAgIHJldHVybiBDb2RlTWlycm9yNkNvcmUuX2VkaXRvclZpZXc7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB1cGRhdGVFZGl0b3JWaWV3KC4uLnRyYW5zYWN0aW9uU3BlY3M6IFRyYW5zYWN0aW9uU3BlY1tdKTogdm9pZCB7XG4gICAgICAgIENvZGVNaXJyb3I2Q29yZS5fZWRpdG9yVmlldy5kaXNwYXRjaCguLi50cmFuc2FjdGlvblNwZWNzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Q29yZVdyYXBwZXJFbGVtZW50KGVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3JlYXRlRWRpdG9yVmlldyhlbGVtZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Q29kZShjb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VFZGl0b3JDb250ZW50KGNvZGUpO1xuICAgIH1cblxuICAgIC8vIEBPdmVycmlkZVxuICAgIHB1YmxpYyBkZXN0cm95T2JzZXJ2YWJsZXMoKTogdm9pZCB7XG4gICAgICAgIENvZGVNaXJyb3I2Q29yZS5fbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIENvZGVNaXJyb3I2Q29yZS5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRDb3JlRWRpdG9yT3B0aW9ucyhvcHRpb25zOiBFZGl0b3JPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlID0gRWRpdG9yTGFuZ3VhZ2VzLmdldExhbmd1YWdlKG9wdGlvbnMubGFuZ3VhZ2UpO1xuICAgICAgICBjb25zdCB0aGVtZSA9IEVkaXRvclRoZW1lcy5nZXRUaGVtZShvcHRpb25zLnRoZW1lKTtcblxuICAgICAgICBpZiAoQ29kZU1pcnJvcjZDb3JlLl9lZGl0b3JWaWV3KSB7XG4gICAgICAgICAgICBDb2RlTWlycm9yNkNvcmUudXBkYXRlRWRpdG9yVmlldyh7XG4gICAgICAgICAgICAgICAgZWZmZWN0czogU3RhdGVFZmZlY3QucmVjb25maWd1cmUub2YoW1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q29kZUNoYW5nZUxpc3RlbmVyRXh0ZW5zaW9uKClcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lZGl0b3JPcHRpb25zUmVjZWl2ZWRCZWZvcmVWaWV3Q3JlYXRpb24gPSBbbGFuZ3VhZ2UsIHRoZW1lXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBoaWdobGlnaHRDb2RlKG1hcmtlcnM6IE1hcmtlcltdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpYWdub3N0aWNzID0gY29udmVydE1hcmtlcnNUb0RpYWdub3N0aWNzKG1hcmtlcnMsIENvZGVNaXJyb3I2Q29yZS5fZWRpdG9yVmlldy5zdGF0ZS5kb2MubGVuZ3RoKTtcbiAgICAgICAgQ29kZU1pcnJvcjZDb3JlLnVwZGF0ZUVkaXRvclZpZXcoc2V0RGlhZ25vc3RpY3MoQ29kZU1pcnJvcjZDb3JlLl9lZGl0b3JWaWV3LnN0YXRlLCBkaWFnbm9zdGljcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0T2JzZXJ2YWJsZXNMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIENvZGVNaXJyb3I2Q29yZS4kb25Db21wbGV0aW9uSXRlbXNVcGRhdGVcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChDb2RlTWlycm9yNkNvcmUuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShpdGVtcyA9PiB0aGlzLnVwZGF0ZUNvbXBsZXRpb25JdGVtcyhpdGVtcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRWRpdG9yVmlldyhwYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBDb2RlTWlycm9yNkNvcmUuX2VkaXRvclZpZXcgPSBuZXcgRWRpdG9yVmlldyh7XG4gICAgICAgICAgICBwYXJlbnQ6IHBhcmVudEVsZW1lbnQsXG4gICAgICAgICAgICBzdGF0ZTogRWRpdG9yU3RhdGUuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICBkb2M6IHRoaXMuX2NvZGVSZWNlaXZlZEJlZm9yZVZpZXdDcmVhdGlvbixcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VkaXRvck9wdGlvbnNSZWNlaXZlZEJlZm9yZVZpZXdDcmVhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDb2RlQ2hhbmdlTGlzdGVuZXJFeHRlbnNpb24oKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubm90aWZ5Q29yZUZpbmlzaExvYWQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvZGVDaGFuZ2VMaXN0ZW5lckV4dGVuc2lvbigpOiBFeHRlbnNpb24ge1xuICAgICAgICByZXR1cm4gRWRpdG9yVmlldy51cGRhdGVMaXN0ZW5lci5vZih1cGRhdGUgPT4gdXBkYXRlLmRvY0NoYW5nZWQgJiYgdGhpcy5ub3RpZnlDb2RlQ2hhbmdlKHVwZGF0ZS5zdGF0ZS5kb2MudG9TdHJpbmcoKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlRWRpdG9yQ29udGVudChjb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKENvZGVNaXJyb3I2Q29yZS5fZWRpdG9yVmlldykge1xuICAgICAgICAgICAgQ29kZU1pcnJvcjZDb3JlLnVwZGF0ZUVkaXRvclZpZXcoe1xuICAgICAgICAgICAgICAgIGNoYW5nZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogMCxcbiAgICAgICAgICAgICAgICAgICAgdG86IENvZGVNaXJyb3I2Q29yZS5fZWRpdG9yVmlldy5zdGF0ZS5kb2MubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICBpbnNlcnQ6IGNvZGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NvZGVSZWNlaXZlZEJlZm9yZVZpZXdDcmVhdGlvbiA9IGNvZGU7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZW1pcnJvci02LWNvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jb2RlLWVkaXRvci9pbmZyYS9jb3Jlcy9jb2RlbWlycm9yLTYvY29kZW1pcnJvci02LWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFDSCxXQUFXLEVBQ1gsV0FBVyxFQUdkLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUcvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV0RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxVQUFVO0lBVTNDO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFMWix5R0FBeUc7UUFDakcsb0NBQStCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLDZDQUF3QyxHQUFjLEVBQUUsQ0FBQztJQUlqRSxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWE7UUFDdkIsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxnQkFBbUM7UUFDakUsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlE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b0JBQ1AsRUFBRSxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNO29CQUNoRCxNQUFNLEVBQUUsSUFBSTtpQkFDZjthQUNKLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDO1NBQy9DO0lBQ0wsQ0FBQzs7QUFsR2Esd0NBQXdCLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7QUFDM0QsOEJBQWMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUM5QywyQkFBVyxHQUFlLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHtcbiAgICBFZGl0b3JTdGF0ZSxcbiAgICBTdGF0ZUVmZmVjdCxcbiAgICBFeHRlbnNpb24sXG4gICAgVHJhbnNhY3Rpb25TcGVjXG59IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgc2V0RGlhZ25vc3RpY3MgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGludFwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgQ29yZUZhY2FkZSB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL2ZhY2FkZXMvY29yZS1mYWNhZGVcIjtcbmltcG9ydCB7IE1hcmtlciB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL21vZGVsc1wiO1xuaW1wb3J0IHsgRWRpdG9yT3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHNcIjtcbmltcG9ydCB7IEVkaXRvckxhbmd1YWdlcyB9IGZyb20gXCIuL2xhbmd1YWdlcy9lZGl0b3ItbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBFZGl0b3JUaGVtZXMgfSBmcm9tIFwiLi90aGVtZXMvZWRpdG9yLXRoZW1lc1wiO1xuaW1wb3J0IHsgY29udmVydE1hcmtlcnNUb0RpYWdub3N0aWNzIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZXhwb3J0IGNsYXNzIENvZGVNaXJyb3I2Q29yZSBleHRlbmRzIENvcmVGYWNhZGUge1xuXG4gICAgcHVibGljIHN0YXRpYyAkb25Db21wbGV0aW9uSXRlbXNVcGRhdGU6IFN1YmplY3Q8c3RyaW5nW10+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIHN0YXRpYyBfbmdVbnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2VkaXRvclZpZXc6IEVkaXRvclZpZXcgPSBudWxsO1xuXG4gICAgLyogVGhlc2UgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlIHNldENvZGUgYW5kIHNldEVkaXRvck9wdGlvbnMgY2FuIGJlIGNhbGxlZCBiZWZvcmUgdmlldyBoYXMgYmVlbiBjcmVhdGVkICovXG4gICAgcHJpdmF0ZSBfY29kZVJlY2VpdmVkQmVmb3JlVmlld0NyZWF0aW9uID0gXCJcIjtcbiAgICBwcml2YXRlIF9lZGl0b3JPcHRpb25zUmVjZWl2ZWRCZWZvcmVWaWV3Q3JlYXRpb246IEV4dGVuc2lvbiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRFZGl0b3JWaWV3KCk6IEVkaXRvclZpZXcge1xuICAgICAgICByZXR1cm4gQ29kZU1pcnJvcjZDb3JlLl9lZGl0b3JWaWV3O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdXBkYXRlRWRpdG9yVmlldyguLi50cmFuc2FjdGlvblNwZWNzOiBUcmFuc2FjdGlvblNwZWNbXSk6IHZvaWQge1xuICAgICAgICBDb2RlTWlycm9yNkNvcmUuX2VkaXRvclZpZXcuZGlzcGF0Y2goLi4udHJhbnNhY3Rpb25TcGVjcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldENvcmVXcmFwcGVyRWxlbWVudChlbGVtZW50OiBIVE1MRGl2RWxlbWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyZWF0ZUVkaXRvclZpZXcoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldENvZGUoY29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlRWRpdG9yQ29udGVudChjb2RlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdENvcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0T2JzZXJ2YWJsZXNMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveUNvcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvZGVSZWNlaXZlZEJlZm9yZVZpZXdDcmVhdGlvbiA9IFwiXCI7XG4gICAgICAgIENvZGVNaXJyb3I2Q29yZS5fZWRpdG9yVmlldyA9IG51bGw7XG4gICAgICAgIENvZGVNaXJyb3I2Q29yZS5fbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIENvZGVNaXJyb3I2Q29yZS5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRDb3JlRWRpdG9yT3B0aW9ucyhvcHRpb25zOiBFZGl0b3JPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlID0gRWRpdG9yTGFuZ3VhZ2VzLmdldExhbmd1YWdlKG9wdGlvbnMubGFuZ3VhZ2UpO1xuICAgICAgICBjb25zdCB0aGVtZSA9IEVkaXRvclRoZW1lcy5nZXRUaGVtZShvcHRpb25zLnRoZW1lKTtcblxuICAgICAgICBpZiAoQ29kZU1pcnJvcjZDb3JlLl9lZGl0b3JWaWV3KSB7XG4gICAgICAgICAgICBDb2RlTWlycm9yNkNvcmUudXBkYXRlRWRpdG9yVmlldyh7XG4gICAgICAgICAgICAgICAgZWZmZWN0czogU3RhdGVFZmZlY3QucmVjb25maWd1cmUub2YoW1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q29kZUNoYW5nZUxpc3RlbmVyRXh0ZW5zaW9uKClcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lZGl0b3JPcHRpb25zUmVjZWl2ZWRCZWZvcmVWaWV3Q3JlYXRpb24gPSBbbGFuZ3VhZ2UsIHRoZW1lXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBoaWdobGlnaHRDb2RlKG1hcmtlcnM6IE1hcmtlcltdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpYWdub3N0aWNzID0gY29udmVydE1hcmtlcnNUb0RpYWdub3N0aWNzKG1hcmtlcnMsIENvZGVNaXJyb3I2Q29yZS5fZWRpdG9yVmlldy5zdGF0ZS5kb2MubGVuZ3RoKTtcbiAgICAgICAgQ29kZU1pcnJvcjZDb3JlLnVwZGF0ZUVkaXRvclZpZXcoc2V0RGlhZ25vc3RpY3MoQ29kZU1pcnJvcjZDb3JlLl9lZGl0b3JWaWV3LnN0YXRlLCBkaWFnbm9zdGljcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0T2JzZXJ2YWJsZXNMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIENvZGVNaXJyb3I2Q29yZS4kb25Db21wbGV0aW9uSXRlbXNVcGRhdGVcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChDb2RlTWlycm9yNkNvcmUuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShpdGVtcyA9PiB0aGlzLnVwZGF0ZUNvbXBsZXRpb25JdGVtcyhpdGVtcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRWRpdG9yVmlldyhwYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBDb2RlTWlycm9yNkNvcmUuX2VkaXRvclZpZXcgPSBuZXcgRWRpdG9yVmlldyh7XG4gICAgICAgICAgICBwYXJlbnQ6IHBhcmVudEVsZW1lbnQsXG4gICAgICAgICAgICBzdGF0ZTogRWRpdG9yU3RhdGUuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICBkb2M6IHRoaXMuX2NvZGVSZWNlaXZlZEJlZm9yZVZpZXdDcmVhdGlvbixcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VkaXRvck9wdGlvbnNSZWNlaXZlZEJlZm9yZVZpZXdDcmVhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDb2RlQ2hhbmdlTGlzdGVuZXJFeHRlbnNpb24oKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubm90aWZ5Q29yZUZpbmlzaExvYWQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvZGVDaGFuZ2VMaXN0ZW5lckV4dGVuc2lvbigpOiBFeHRlbnNpb24ge1xuICAgICAgICByZXR1cm4gRWRpdG9yVmlldy51cGRhdGVMaXN0ZW5lci5vZih1cGRhdGUgPT4gdXBkYXRlLmRvY0NoYW5nZWQgJiYgdGhpcy5ub3RpZnlDb2RlQ2hhbmdlKHVwZGF0ZS5zdGF0ZS5kb2MudG9TdHJpbmcoKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlRWRpdG9yQ29udGVudChjb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKENvZGVNaXJyb3I2Q29yZS5fZWRpdG9yVmlldykge1xuICAgICAgICAgICAgQ29kZU1pcnJvcjZDb3JlLnVwZGF0ZUVkaXRvclZpZXcoe1xuICAgICAgICAgICAgICAgIGNoYW5nZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogMCxcbiAgICAgICAgICAgICAgICAgICAgdG86IENvZGVNaXJyb3I2Q29yZS5fZWRpdG9yVmlldy5zdGF0ZS5kb2MubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICBpbnNlcnQ6IGNvZGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NvZGVSZWNlaXZlZEJlZm9yZVZpZXdDcmVhdGlvbiA9IGNvZGU7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
@@ -3,10 +3,13 @@ import { Languages } from "../../../../models";
3
3
  import { TaxCalculation } from "./tax-calculation/tax-calculation.language";
4
4
  export class EditorLanguages {
5
5
  static getLanguage(language) {
6
- return EditorLanguages._LANGUAGES.get(language) || [];
6
+ const languageSupportFactory = EditorLanguages._LANGUAGES.get(language);
7
+ if (languageSupportFactory)
8
+ return languageSupportFactory();
9
+ return [];
7
10
  }
8
11
  }
9
12
  EditorLanguages._LANGUAGES = new Map([
10
- [Languages.TaxCalculation, TaxCalculation()]
13
+ [Languages.TaxCalculation, TaxCalculation]
11
14
  ]);
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWxhbmd1YWdlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2NvZGUtZWRpdG9yL2luZnJhL2NvcmVzL2NvZGVtaXJyb3ItNi9sYW5ndWFnZXMvZWRpdG9yLWxhbmd1YWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0MsZUFBZTtBQUNmLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUU1RSxNQUFNLE9BQU8sZUFBZTtJQU1qQixNQUFNLENBQUMsV0FBVyxDQUFDLFFBQW1CO1FBQ3pDLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBZ0MsQ0FBQztJQUN4RixDQUFDOztBQU5jLDBCQUFVLEdBQW9DLElBQUksR0FBRyxDQUFDO0lBQ2pFLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsQ0FBQztDQUMvQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZVN1cHBvcnQgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcblxuaW1wb3J0IHsgTGFuZ3VhZ2VzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsc1wiO1xuXG4vKiBMYW5ndWFnZXMgKi9cbmltcG9ydCB7IFRheENhbGN1bGF0aW9uIH0gZnJvbSBcIi4vdGF4LWNhbGN1bGF0aW9uL3RheC1jYWxjdWxhdGlvbi5sYW5ndWFnZVwiO1xuXG5leHBvcnQgY2xhc3MgRWRpdG9yTGFuZ3VhZ2VzIHtcblxuICAgIHByaXZhdGUgc3RhdGljIF9MQU5HVUFHRVM6IE1hcDxMYW5ndWFnZXMsIExhbmd1YWdlU3VwcG9ydD4gPSBuZXcgTWFwKFtcbiAgICAgICAgW0xhbmd1YWdlcy5UYXhDYWxjdWxhdGlvbiwgVGF4Q2FsY3VsYXRpb24oKV1cbiAgICBdKTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlcyk6IExhbmd1YWdlU3VwcG9ydCB7XG4gICAgICAgIHJldHVybiBFZGl0b3JMYW5ndWFnZXMuX0xBTkdVQUdFUy5nZXQobGFuZ3VhZ2UpIHx8IFtdIGFzIHVua25vd24gYXMgTGFuZ3VhZ2VTdXBwb3J0O1xuICAgIH1cbn1cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWxhbmd1YWdlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2NvZGUtZWRpdG9yL2luZnJhL2NvcmVzL2NvZGVtaXJyb3ItNi9sYW5ndWFnZXMvZWRpdG9yLWxhbmd1YWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0MsZUFBZTtBQUNmLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUk1RSxNQUFNLE9BQU8sZUFBZTtJQU1qQixNQUFNLENBQUMsV0FBVyxDQUFDLFFBQW1CO1FBQ3pDLE1BQU0sc0JBQXNCLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEUsSUFBSSxzQkFBc0I7WUFBRSxPQUFPLHNCQUFzQixFQUFFLENBQUM7UUFDNUQsT0FBTyxFQUFnQyxDQUFDO0lBQzVDLENBQUM7O0FBUmMsMEJBQVUsR0FBMkMsSUFBSSxHQUFHLENBQUM7SUFDeEUsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQztDQUM3QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZVN1cHBvcnQgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcblxuaW1wb3J0IHsgTGFuZ3VhZ2VzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsc1wiO1xuXG4vKiBMYW5ndWFnZXMgKi9cbmltcG9ydCB7IFRheENhbGN1bGF0aW9uIH0gZnJvbSBcIi4vdGF4LWNhbGN1bGF0aW9uL3RheC1jYWxjdWxhdGlvbi5sYW5ndWFnZVwiO1xuXG50eXBlIExhbmd1YWdlU3VwcG9ydEZhY3RvcnkgPSAoKSA9PiBMYW5ndWFnZVN1cHBvcnRcblxuZXhwb3J0IGNsYXNzIEVkaXRvckxhbmd1YWdlcyB7XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfTEFOR1VBR0VTOiBNYXA8TGFuZ3VhZ2VzLCBMYW5ndWFnZVN1cHBvcnRGYWN0b3J5PiA9IG5ldyBNYXAoW1xuICAgICAgICBbTGFuZ3VhZ2VzLlRheENhbGN1bGF0aW9uLCBUYXhDYWxjdWxhdGlvbl1cbiAgICBdKTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlcyk6IExhbmd1YWdlU3VwcG9ydCB7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlU3VwcG9ydEZhY3RvcnkgPSBFZGl0b3JMYW5ndWFnZXMuX0xBTkdVQUdFUy5nZXQobGFuZ3VhZ2UpO1xuICAgICAgICBpZiAobGFuZ3VhZ2VTdXBwb3J0RmFjdG9yeSkgcmV0dXJuIGxhbmd1YWdlU3VwcG9ydEZhY3RvcnkoKTtcbiAgICAgICAgcmV0dXJuIFtdIGFzIHVua25vd24gYXMgTGFuZ3VhZ2VTdXBwb3J0O1xuICAgIH1cbn1cbiJdfQ==
@@ -6,7 +6,7 @@ import { isCurrentPositionInsideString } from "../../../../utils";
6
6
  import { AutocompleteService } from "./autocomplete.service";
7
7
  import { autocompleteLoadingState, showAutocompleteLoadingState, autocompleteEmptyState, showAutocompleteEmptyState } from "./autocomplete-states";
8
8
  import { RequestTypes, CompletionTypes, MetaType, Keywords, } from "../../models";
9
- import { getLanguageConfigs, getSafeResponse, updateCoreCompletionItems } from "../../utils";
9
+ import { getLanguageConfigs, getSafeResponse } from "../../utils";
10
10
  import { style } from "./autocomplete-style";
11
11
  /**
12
12
  * Adds an autocomplete to the editor
@@ -102,7 +102,6 @@ function searchCompletionResults(context, token) {
102
102
  filter: false,
103
103
  options: sortedCompletions
104
104
  };
105
- updateCoreCompletionItems({ path, filter, completions: sortedCompletions });
106
105
  startCompletion(CodeMirror6Core.getEditorView());
107
106
  }
108
107
  else {
@@ -339,4 +338,4 @@ function getSortedCompletions(completions) {
339
338
  });
340
339
  }
341
340
  export { ɵ0 };
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY29kZS1lZGl0b3IvaW5mcmEvY29yZXMvY29kZW1pcnJvci02L2xhbmd1YWdlcy90YXgtY2FsY3VsYXRpb24vZXh0ZW5zaW9ucy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQ0gsY0FBYyxFQUlkLGdCQUFnQixFQUNoQixlQUFlLEVBQ2xCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFDSCx3QkFBd0IsRUFDeEIsNEJBQTRCLEVBQzVCLHNCQUFzQixFQUN0QiwwQkFBMEIsRUFDN0IsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBRUgsWUFBWSxFQUtaLGVBQWUsRUFFZixRQUFRLEVBR1IsUUFBUSxHQUNYLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLHlCQUF5QixFQUM1QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0M7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVk7SUFDeEIsT0FBTztRQUNILGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztRQUNwRCx3QkFBd0IsRUFBRTtRQUMxQixzQkFBc0IsRUFBRTtRQUN4QixL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fSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHtcbiAgICBhdXRvY29tcGxldGlvbixcbiAgICBDb21wbGV0aW9uLFxuICAgIENvbXBsZXRpb25Db250ZXh0LFxuICAgIENvbXBsZXRpb25SZXN1bHQsXG4gICAgcGlja2VkQ29tcGxldGlvbixcbiAgICBzdGFydENvbXBsZXRpb25cbn0gZnJvbSBcIkBjb2RlbWlycm9yL2F1dG9jb21wbGV0ZVwiO1xuXG5pbXBvcnQgeyBDdXN0b21UcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBDb2RlTWlycm9yNkNvcmUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29kZW1pcnJvci02LWNvcmVcIjtcbmltcG9ydCB7IGlzQ3VycmVudFBvc2l0aW9uSW5zaWRlU3RyaW5nIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVTZXJ2aWNlIH0gZnJvbSBcIi4vYXV0b2NvbXBsZXRlLnNlcnZpY2VcIjtcbmltcG9ydCB7XG4gICAgYXV0b2NvbXBsZXRlTG9hZGluZ1N0YXRlLFxuICAgIHNob3dBdXRvY29tcGxldGVMb2FkaW5nU3RhdGUsXG4gICAgYXV0b2NvbXBsZXRlRW1wdHlTdGF0ZSxcbiAgICBzaG93QXV0b2NvbXBsZXRlRW1wdHlTdGF0ZVxufSBmcm9tIFwiLi9hdXRvY29tcGxldGUtc3RhdGVzXCI7XG5pbXBvcnQge1xuICAgIFRheENhbGN1bGF0aW9uQ29uZmlncyxcbiAgICBSZXF1ZXN0VHlwZXMsXG4gICAgUmVzcG9uc2UsXG4gICAgU2FmZVJlcXVlc3QsXG4gICAgU2FmZVJlc3BvbnNlLFxuICAgIExpc3RDb250ZXh0TWV0YWRhdGFCeUlkUmVzcG9uc2UsXG4gICAgQ29tcGxldGlvblR5cGVzLFxuICAgIExpc3RFeHByZXNzaW9uTWV0YWRhdGFSZXNwb25zZSxcbiAgICBNZXRhVHlwZSxcbiAgICBHZXRGYWNhZGVNZXRhZGF0YUJ5UGF0aFJlc3BvbnNlLFxuICAgIExpc3RGYWNhZGVNZXRhZGF0YU5hbWVzUmVzcG9uc2UsXG4gICAgS2V5d29yZHMsXG59IGZyb20gXCIuLi8uLi9tb2RlbHNcIjtcbmltcG9ydCB7XG4gICAgZ2V0TGFuZ3VhZ2VDb25maWdzLFxuICAgIGdldFNhZmVSZXNwb25zZSxcbiAgICB1cGRhdGVDb3JlQ29tcGxldGlvbkl0ZW1zXG59IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgc3R5bGUgfSBmcm9tIFwiLi9hdXRvY29tcGxldGUtc3R5bGVcIjtcblxuLyoqXG4gKiBBZGRzIGFuIGF1dG9jb21wbGV0ZSB0byB0aGUgZWRpdG9yXG4gKiBAcmV0dXJucyBBbiBleHRlbnNpb24gY29udGFpbmluZyBldmVyeXRoaW5nIG5lZWRlZCB0byBjcmVhdGUgdGhlIGF1dG9jb21wbGV0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXV0b2NvbXBsZXRlICgpOiBFeHRlbnNpb24ge1xuICAgIHJldHVybiBbXG4gICAgICAgIGF1dG9jb21wbGV0aW9uKHsgb3ZlcnJpZGU6IFtnZXRDb21wbGV0aW9uUmVzdWx0c10gfSksXG4gICAgICAgIGF1dG9jb21wbGV0ZUxvYWRpbmdTdGF0ZSgpLFxuICAgICAgICBhdXRvY29tcGxldGVFbXB0eVN0YXRlKCksXG4gICAgICAgIHN0eWxlKCksXG4gICAgXTtcbn1cblxuY29uc3QgVFJBTlNMQVRJT05fUFJFRklYID0gXCJjb3JlX2xhbmd1YWdlX3RheF9jYWxjdWxhdGlvblwiO1xubGV0IGNvbXBsZXRpb25SZXN1bHRzITogQ29tcGxldGlvblJlc3VsdDtcblxuLypcbiAqIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYSBrZXkgaXMgcHJlc3NlZCwgdGhlIGN0cmwrc3BhY2UgaXMgdHJpZ2dlcmVkIG9yIHdoZW4gdGhlIHNlYXJjaCBmb3IgY29tcGxldGlvblJlc3VsdHMgaXMgZG9uZS5cbiAqIElmIHRoZXJlIGlzIGEgY29tcGxldGlvblJlc3VsdCwgcmV0dXJucyBpdCwgb3RoZXJ3aXNlIHN0YXJ0cyBhIG5ldyBhc3luYyBzZWFyY2guXG4gKiBXaWxsIG9ubHkgZXhlY3V0ZSB0aGUgYXV0b2NvbXBsZXRpb24gaWYgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGlzIG5vdCBpbnNpZGUgYSBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcGxldGlvblJlc3VsdHMoY29udGV4dDogQ29tcGxldGlvbkNvbnRleHQpOiBDb21wbGV0aW9uUmVzdWx0IHtcbiAgICBjb25zdCBpc0N1cnNvckluc2lkZVN0cmluZyA9IGlzQ3VycmVudFBvc2l0aW9uSW5zaWRlU3RyaW5nKGNvbnRleHQuc3RhdGUuZG9jLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGNvbnRleHQucG9zKSk7XG4gICAgaWYgKGlzQ3Vyc29ySW5zaWRlU3RyaW5nKSByZXR1cm47XG5cbiAgICBpZiAoY29tcGxldGlvblJlc3VsdHMpIHtcbiAgICAgICAgY29uc3QgZmluYWxDb21wbGV0aW9uUmVzdWx0czogQ29tcGxldGlvblJlc3VsdCA9IHsgLi4uY29tcGxldGlvblJlc3VsdHMgfTtcbiAgICAgICAgY29uc3QgY29kZUxlbmd0aCA9IGNvbnRleHQuc3RhdGUuZG9jLnRvU3RyaW5nKCkubGVuZ3RoO1xuICAgICAgICBmaW5hbENvbXBsZXRpb25SZXN1bHRzLmZyb20gPSBmaW5hbENvbXBsZXRpb25SZXN1bHRzLmZyb20gPiBjb2RlTGVuZ3RoXG4gICAgICAgICAgICA/IGNvZGVMZW5ndGhcbiAgICAgICAgICAgIDogZmluYWxDb21wbGV0aW9uUmVzdWx0cy5mcm9tO1xuICAgICAgICBjb21wbGV0aW9uUmVzdWx0cyA9IG51bGw7XG4gICAgICAgIHJldHVybiBmaW5hbENvbXBsZXRpb25SZXN1bHRzO1xuICAgIH1cbiAgICBzdGFydENvbXBsZXRpb25SZXN1bHRzU2VhcmNoKGNvbnRleHQpO1xufVxuXG5sZXQgY2FuY2VsTGFzdENvbXBsZXRpb25TZWFyY2g6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcbmxldCBjb2RlTWlycm9yVmlld0VsZW1lbnQhOiBIVE1MRWxlbWVudDtcblxuLypcbiAqIFN0YXJ0cyBhIG5ldyBjb21wbGV0aW9uUmVzdWx0cydzIGFzeW5jIHNlYXJjaC5cbiAqIEF2b2lkcyB0aGUgbGFzdCBzZWFyY2ggdG8gYmUgZmluaXNoZWQgYnkgY2FsbGluZyB0aGUgXCJjYW5jZWxMYXN0Q29tcGxldGlvblNlYXJjaFwiIGNhbGxiYWNrIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIHN0YXJ0Q29tcGxldGlvblJlc3VsdHNTZWFyY2goY29udGV4dDogQ29tcGxldGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICBjb25zdCB0b2tlbiA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0b2tlbi5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgc2hvd0F1dG9jb21wbGV0ZUxvYWRpbmdTdGF0ZSgpO1xuICAgICAgICAgICAgc2VhcmNoQ29tcGxldGlvblJlc3VsdHMoY29udGV4dCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfSwgNTAwKTtcblxuICAgIC8qXG4gICAgICogSU1QT1JUQU5UOiBUaGUgZm9sbG93aW5nIGxpbmVzIE1VU1QgYmUgdGhlIHdheSB0aGV5IGFyZSFcbiAgICAgKiBIZXJlIGlzIGJlaW5nIGFkZCB0aGUgbGlzdGVuZXIgdG8gYW55IGtleWRvd24vY2xpY2sgZXZlbnQgc28gd2hlbiBhbnkga2V5IGlzIGRvd25lZCBvciBtb3VzZSBjbGlja2VkLCB3ZSBjYW5jZWwgdGhlIGxhc3QgcmVxdWVzdC5cbiAgICAgKiBXZSBkbyB0aGlzIHRvIG5vdCBzaG93IHRvIHRoZSB1c2VyIGEgY29tcGxldGlvbkl0ZW0gaW4gYW4gaW5jb3JyZWN0IHBsYWNlIG9mIHRleHQsIHRoYXQgY2FuIGJlIGRvbmUgYnkgZWl0aGVyIHByZXNzaW5nIHRoZVxuICAgICAqIGFycm93cywgaG9tZSwgZW5kLCBiYWNrc3BhY2UgYW5kIGV0Yy4gVGhlIGZsb3cgaXM6XG4gICAgICogMS4gV2UgYWRkIGFuIGV2ZW50TGlzdGVuZXIgdG8ga2V5ZG93bi9jbGljayB3aGVuIHRoZSBhdXRvY29tcGxldGlvbidzIHJlcXVlc3QgaXMgdHJpZ2dlcmVkO1xuICAgICAqIDIuIFdoZW4gYW55IGtleS9jbGljayBpcyBwcmVzc2VkLCB3ZSByZW1vdmUgdGhlIGxpc3RlbmVyIGFuZCBjYW5jZWwgdGhlIGxhc3QgcmVxdWVzdCBieSBjaGFuZ2luZyB0aGUgaXNTZWFyY2hDYW5jZWxlZCBvbiB0b2tlbiBvYmplY3RcbiAgICAgKiAgdG8gdHJ1ZTtcbiAgICAgKiAzLiBJZiBhbnkga2V5IHRoYXQgcmVxdWlyZXMgYXV0b2NvbXBsZXRpb24gaXMgdHJpZ2dlcmVkLCB0aGUgZmxvdyByZXBlYXRzO1xuICAgICAqL1xuICAgIGNvZGVNaXJyb3JWaWV3RWxlbWVudCA9IENvZGVNaXJyb3I2Q29yZS5nZXRFZGl0b3JWaWV3KCkuY29udGVudERPTTtcblxuICAgIGNhbmNlbExhc3RDb21wbGV0aW9uU2VhcmNoID0gKCkgPT4ge1xuICAgICAgICBjb2RlTWlycm9yVmlld0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgY2FuY2VsTGFzdENvbXBsZXRpb25TZWFyY2gpO1xuICAgICAgICBjb2RlTWlycm9yVmlld0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGNhbmNlbExhc3RDb21wbGV0aW9uU2VhcmNoKTtcbiAgICAgICAgdG9rZW4uYWJvcnQoKTtcbiAgICB9O1xuXG4gICAgY29kZU1pcnJvclZpZXdFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGNhbmNlbExhc3RDb21wbGV0aW9uU2VhcmNoKTtcbiAgICBjb2RlTWlycm9yVmlld0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGNhbmNlbExhc3RDb21wbGV0aW9uU2VhcmNoKTtcbn1cblxuLypcbiAqIFJlcXVlc3RzIHRoZSBuZWNlc3NhcnkgaXRlbXMgdG8gZmlsbCB0aGUgY29tcGxldGlvblJlc3VsdHMsIGFsdGhvdWdoIGl0IG9ubHkgcmVhbGx5IG9wZW5zIHRoZSBhdXRvY29tcGxldGVcbiAqIGJveCAoYnkgY2FsbGluZyB0aGUgXCJzdGFydENvbXBsZXRpb24oKVwiLCB0aGF0IGNhbGxzIHRoZSBcImdldENvbXBsZXRpb25SZXN1bHRzXCIpIGlmIHRoZSBjdXJyZW50IHNlYXJjaCB3YXMgbm90IGNhbmNlbGxlZFxuICogYnkgYSBuZXcgb25lXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNlYXJjaENvbXBsZXRpb25SZXN1bHRzKGNvbnRleHQ6IENvbXBsZXRpb25Db250ZXh0LCB0b2tlbjogQWJvcnRDb250cm9sbGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29kZUJlZm9yZUN1cnNvciA9IGNvbnRleHQ/LnN0YXRlPy5kb2M/LnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGNvbnRleHQ/LnBvcyA/PyAwKSA/PyBcIlwiO1xuICAgIGNvbnN0IGZpbHRlciA9IGdldEZpbHRlcihjb2RlQmVmb3JlQ3Vyc29yKTtcbiAgICBjb25zdCBwYXRoID0gZ2V0UGF0aChjb2RlQmVmb3JlQ3Vyc29yLCBmaWx0ZXIubGVuZ3RoKTtcbiAgICBjb25zdCByZXF1ZXN0czogU2FmZVJlc3BvbnNlW10gPSBnZXRSZXF1ZXN0c0Jhc2VkT25QYXRoKHBhdGgsIGZpbHRlciwgdG9rZW4uc2lnbmFsKTtcblxuICAgIFByb21pc2VcbiAgICAgICAgLmFsbChyZXF1ZXN0cylcbiAgICAgICAgLnRoZW4ocmVzcG9uc2VzID0+IHtcbiAgICAgICAgICAgIGlmICghdG9rZW4uc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0aW9ucyA9IFtdLmNvbmNhdChcbiAgICAgICAgICAgICAgICAgICAgZ2V0S2V5d29yZHNDb21wbGV0aW9ucyhwYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dHNDb21wbGV0aW9ucyhyZXNwb25zZXMpLFxuICAgICAgICAgICAgICAgICAgICBnZXRFeHByZXNzaW9uc0NvbXBsZXRpb25zKHJlc3BvbnNlcyksXG4gICAgICAgICAgICAgICAgICAgIGdldEVudGl0aWVzQ29tcGxldGlvbnMocmVzcG9uc2VzKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRDb21wbGV0aW9uczogQ29tcGxldGlvbltdID0gZ2V0RmlsdGVyZWRDb21wbGV0aW9ucyhjb21wbGV0aW9ucywgZmlsdGVyKTtcblxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZENvbXBsZXRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRDb21wbGV0aW9uczogQ29tcGxldGlvbltdID0gZ2V0Rm9ybWF0dGVkQ29tcGxldGlvbnMoZmlsdGVyZWRDb21wbGV0aW9ucywgZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydGVkQ29tcGxldGlvbnM6IENvbXBsZXRpb25bXSA9IGdldFNvcnRlZENvbXBsZXRpb25zKGZvcm1hdHRlZENvbXBsZXRpb25zKTtcblxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uUmVzdWx0cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IGNvbnRleHQucG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHNvcnRlZENvbXBsZXRpb25zXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ29yZUNvbXBsZXRpb25JdGVtcyh7IHBhdGgsIGZpbHRlciwgY29tcGxldGlvbnM6IHNvcnRlZENvbXBsZXRpb25zIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGFydENvbXBsZXRpb24oQ29kZU1pcnJvcjZDb3JlLmdldEVkaXRvclZpZXcoKSk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzaG93QXV0b2NvbXBsZXRlRW1wdHlTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbn1cblxuLypcbiAqIFJldHVybnMgdGhlIGZpbHRlciBpbiB0aGUgY29kZSB3cml0dGVuLlxuICogRm9yIGV4YW1wbGUgaW4gdGhlIGNvZGUgXCJjb250cm9sYWRvcmlhLmVtcHJlc2FcIiwgXCJlbXByZXNhXCIgd291bGQgYmUgdGhlIGZpbHRlclxuICogYW5kIGluIFwiY29udHJvbGFkb3JpYVwiLCBcImNvbnRyb2xhZG9yaWFcIiB3b3VsZCBiZSB0aGUgZmlsdGVyLlxuICogQWxsb3dzIG9ubHkgYWxwaGFudW1lcmljcywgdW5kZXJzY29yZSBhbmQgaGFzaHRhZyBvbiBmaWx0ZXIncyBzdGFydC5cbiAqIERvZXMgbm90IGFsbG93IHNwYWNlc1xuICovXG5mdW5jdGlvbiBnZXRGaWx0ZXIoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChzdHJpbmcgPT09IHVuZGVmaW5lZCB8fCBzdHJpbmcgPT09IG51bGwpIHJldHVybiBcIlwiO1xuXG4gICAgY29uc3QgZmlsdGVyID0gc3RyaW5nLm1hdGNoKC8oI3xcXC58KVxcdyokLyk/LlswXSA/PyBcIlwiO1xuICAgIHJldHVybiBmaWx0ZXIucmVwbGFjZShcIi5cIiwgXCJcIikudHJpbSgpO1xufVxuXG4vKlxuICogUmV0dXJucyB0aGUgcGF0aCBpbiB0aGUgY29kZSB3cml0dGVuIGJhc2VkIG9uIGZpbHRlci5cbiAqIEZvciBleGFtcGxlIGluIHRoZSBjb2RlIFwiY29udHJvbGFkb3JpYS5lbXByZXNhXCIsIFwiY29udHJvbGFkb3JpYVwiIHdvdWxkIGJlIHRoZSBwYXRoXG4gKiBhbmQgaW4gXCJjb250cm9sYWRvcmlhXCIsIFwiXCIgd291bGQgYmUgdGhlIHBhdGguXG4gKiBEb2VzIG5vdCBhbGxvdyBzcGFjZXNcbiAqL1xuZnVuY3Rpb24gZ2V0UGF0aChzdHJpbmc6IHN0cmluZywgZmlsdGVyTGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChzdHJpbmcgPT09IHVuZGVmaW5lZCB8fCBzdHJpbmcgPT09IG51bGwpIHJldHVybiBcIlwiO1xuXG4gICAgY29uc3Qgc3RyaW5nV2l0aG91dFBhdGggPSBzdHJpbmcuc3Vic3RyaW5nKDAsIHN0cmluZy5sZW5ndGggLSBmaWx0ZXJMZW5ndGgpO1xuICAgIGNvbnN0IHBhdGggPSBzdHJpbmdXaXRob3V0UGF0aC5tYXRjaCgvKFxcdypcXC4pKiQvKT8uWzBdID8/IFwiXCI7XG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwuJC8sIFwiXCIpO1xufVxuXG5mdW5jdGlvbiBnZXRSZXF1ZXN0c0Jhc2VkT25QYXRoKHBhdGg6IHN0cmluZywgZmlsdGVyOiBzdHJpbmcsIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCk6IFNhZmVSZXNwb25zZVtdIHtcbiAgICBjb25zdCBsYW5ndWFnZUNvbmZpZ3M6IFRheENhbGN1bGF0aW9uQ29uZmlncyA9IGdldExhbmd1YWdlQ29uZmlncygpO1xuICAgIGNvbnN0IHJlcXVlc3RzOiBTYWZlUmVxdWVzdFtdID0gW107XG5cbiAgICBpZiAocGF0aCA9PT0gXCJcIikge1xuICAgICAgICByZXF1ZXN0cy5wdXNoKHtcbiAgICAgICAgICAgIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZXMuTGlzdENvbnRleHRNZXRhZGF0YUJ5SWQsXG4gICAgICAgICAgICByZXF1ZXN0OiBBdXRvY29tcGxldGVTZXJ2aWNlLmxpc3RDb250ZXh0TWV0YWRhdGFCeUlkKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGxhbmd1YWdlQ29uZmlncy5jb250ZXh0cyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFib3J0U2lnbmFsXG4gICAgICAgICAgICApXG4gICAgICAgIH0pO1xuICAgICAgICByZXF1ZXN0cy5wdXNoKHtcbiAgICAgICAgICAgIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZXMuTGlzdEV4cHJlc3Npb25NZXRhZGF0YSxcbiAgICAgICAgICAgIHJlcXVlc3Q6IEF1dG9jb21wbGV0ZVNlcnZpY2UubGlzdEV4cHJlc3Npb25NZXRhZGF0YShcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGxhbmd1YWdlQ29uZmlncy5jb250ZXh0cyxcbiAgICAgICAgICAgICAgICAgICAgc3ViY29udGV4dDogbGFuZ3VhZ2VDb25maWdzLnN1YkNvbnRleHRzID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZXF1ZXN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAyMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhYm9ydFNpZ25hbFxuICAgICAgICAgICAgKVxuICAgICAgICB9KTtcblxuICAgIH0gZWxzZSBpZiAocGF0aC5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICAgICAgY29uc3Qgc3BsaXR0ZWRQYXRoID0gcGF0aC5zcGxpdChcIi5cIik7XG4gICAgICAgIHJlcXVlc3RzLnB1c2goe1xuICAgICAgICAgICAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlcy5HZXRGYWNhZGVNZXRhZGF0YUJ5UGF0aCxcbiAgICAgICAgICAgIHJlcXVlc3Q6IEF1dG9jb21wbGV0ZVNlcnZpY2UuZ2V0RmFjYWRlTWV0YWRhdGFCeVBhdGgoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBzcGxpdHRlZFBhdGhbMF0sXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU5hbWU6IHNwbGl0dGVkUGF0aFsxXSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBzcGxpdHRlZFBhdGhbMl0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNwbGl0dGVkUGF0aC5zbGljZSgyKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWJvcnRTaWduYWxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0cy5wdXNoKHtcbiAgICAgICAgICAgIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZXMuTGlzdEZhY2FkZU1ldGFkYXRhTmFtZXMsXG4gICAgICAgICAgICByZXF1ZXN0OiBBdXRvY29tcGxldGVTZXJ2aWNlLmxpc3RGYWNhZGVNZXRhZGF0YU5hbWVzKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogW3BhdGhdLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZXF1ZXN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAzMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhYm9ydFNpZ25hbFxuICAgICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWVzdHMubWFwKHJlcXVlc3QgPT4gZ2V0U2FmZVJlc3BvbnNlKHJlcXVlc3QpKTtcbn1cblxuZnVuY3Rpb24gZ2V0S2V5d29yZHNDb21wbGV0aW9ucyhwYXRoOiBzdHJpbmcpOiBDb21wbGV0aW9uW10ge1xuICAgIGlmIChwYXRoICE9PSBcIlwiKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBjb21wbGV0aW9ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IEtleXdvcmRzLlNFLFxuICAgICAgICAgICAgYXBwbHk6IFwiU0UgKClcXG5FTlRBT1xcblxcdGFjYW9cXG5GSU1fU0VcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IEtleXdvcmRzLlNFTkFPLFxuICAgICAgICAgICAgYXBwbHk6IFwiU0VOQU9cXG5cXHRhY2FvXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBLZXl3b3Jkcy5DT05URU5IQSxcbiAgICAgICAgICAgIGFwcGx5OiBcIkNPTlRFTkhBKGNvbmRpY2FvKVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogS2V5d29yZHMuRU5UQU8sXG4gICAgICAgICAgICBhcHBseTogXCJFTlRBT1xcblxcdGFjYW9cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IEtleXdvcmRzLkZJTV9TRSxcbiAgICAgICAgICAgIGFwcGx5OiBcIkZJTV9TRSBcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IEtleXdvcmRzLk5BTyxcbiAgICAgICAgICAgIGFwcGx5OiBcIk5BTyBcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IEtleXdvcmRzLkUsXG4gICAgICAgICAgICBhcHBseTogXCJFIFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogS2V5d29yZHMuT1UsXG4gICAgICAgICAgICBhcHBseTogXCJPVSBcIlxuICAgICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gY29tcGxldGlvbnMubWFwKGNvbXBsZXRpb25JdGVtID0+ICh7XG4gICAgICAgIC4uLmNvbXBsZXRpb25JdGVtLFxuICAgICAgICBkZXRhaWw6IEN1c3RvbVRyYW5zbGF0aW9uc1NlcnZpY2UudHJhbnNsYXRlKGAke1RSQU5TTEFUSU9OX1BSRUZJWH1fa2V5d29yZGApLFxuICAgICAgICB0eXBlOiBDb21wbGV0aW9uVHlwZXMuS2V5d29yZFxuICAgIH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29udGV4dHNDb21wbGV0aW9ucyhyZXNwb25zZXM6IFJlc3BvbnNlPGFueT5bXSk6IENvbXBsZXRpb25bXSB7XG4gICAgY29uc3QgY29udGV4dHNSZXNwb25zZTogUmVzcG9uc2U8TGlzdENvbnRleHRNZXRhZGF0YUJ5SWRSZXNwb25zZT4gPSByZXNwb25zZXMuZmluZChyZXNwb25zZSA9PlxuICAgICAgICByZXNwb25zZT8ucmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlcy5MaXN0Q29udGV4dE1ldGFkYXRhQnlJZFxuICAgICk7XG5cbiAgICBpZiAoY29udGV4dHNSZXNwb25zZSkge1xuICAgICAgICByZXR1cm4gKGNvbnRleHRzUmVzcG9uc2UucmVzcG9uc2U/LmNvbnRleHRNZXRhZGF0YSA/PyBbXSlcbiAgICAgICAgICAgIC5tYXAoY29udGV4dE1ldGFkYXRhID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGNvbnRleHRNZXRhZGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgIGRldGFpbDogQ3VzdG9tVHJhbnNsYXRpb25zU2VydmljZS50cmFuc2xhdGUoYCR7VFJBTlNMQVRJT05fUFJFRklYfV9jb250ZXh0YCksXG4gICAgICAgICAgICAgICAgYXBwbHk6IGNvbnRleHRNZXRhZGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgIHR5cGU6IENvbXBsZXRpb25UeXBlcy5Db250ZXh0XG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBnZXRFeHByZXNzaW9uc0NvbXBsZXRpb25zKHJlc3BvbnNlczogUmVzcG9uc2U8YW55PltdKTogQ29tcGxldGlvbltdIHtcbiAgICBjb25zdCBleHByZXNzaW9uc1Jlc3BvbnNlOiBSZXNwb25zZTxMaXN0RXhwcmVzc2lvbk1ldGFkYXRhUmVzcG9uc2U+ID0gcmVzcG9uc2VzLmZpbmQocmVzcG9uc2UgPT5cbiAgICAgICAgcmVzcG9uc2U/LnJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZXMuTGlzdEV4cHJlc3Npb25NZXRhZGF0YVxuICAgICk7XG5cbiAgICBpZiAoZXhwcmVzc2lvbnNSZXNwb25zZSkge1xuICAgICAgICByZXR1cm4gKGV4cHJlc3Npb25zUmVzcG9uc2UucmVzcG9uc2U/LmV4cHJlc3Npb25NZXRhZGF0YSA/PyBbXSlcbiAgICAgICAgICAgIC5tYXAoZXhwcmVzc2lvbk1ldGFkYXRhID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGV4cHJlc3Npb25NZXRhZGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgIGRldGFpbDogQ3VzdG9tVHJhbnNsYXRpb25zU2VydmljZS50cmFuc2xhdGUoYCR7VFJBTlNMQVRJT05fUFJFRklYfV8ke1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uTWV0YWRhdGEudHlwZSA9PT0gTWV0YVR5cGUuUFVCTElDX0VYUFJFU1NJT05cbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJzZW5pb3JfZXhwcmVzc2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwidXNlcl9leHByZXNzaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgfWApLFxuICAgICAgICAgICAgICAgIGFwcGx5OiBleHByZXNzaW9uTWV0YWRhdGEubmFtZSxcbiAgICAgICAgICAgICAgICBpbmZvOiBleHByZXNzaW9uTWV0YWRhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgdHlwZTogZXhwcmVzc2lvbk1ldGFkYXRhLnR5cGUgPT09IE1ldGFUeXBlLlBVQkxJQ19FWFBSRVNTSU9OID8gQ29tcGxldGlvblR5cGVzLkV4cHJlc3Npb24gOiBDb21wbGV0aW9uVHlwZXMuVXNlckV4cHJlc3Npb25cbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldEVudGl0aWVzQ29tcGxldGlvbnMocmVzcG9uc2VzOiBSZXNwb25zZTxhbnk+W10pOiBDb21wbGV0aW9uW10ge1xuICAgIGNvbnN0IGZhY2FkZXNSZXNwb25zZUZyb21MaXN0OiBSZXNwb25zZTxMaXN0RmFjYWRlTWV0YWRhdGFOYW1lc1Jlc3BvbnNlPiA9IHJlc3BvbnNlcy5maW5kKHJlc3BvbnNlID0+XG4gICAgICAgIHJlc3BvbnNlPy5yZXF1ZXN0VHlwZSA9PT0gUmVxdWVzdFR5cGVzLkxpc3RGYWNhZGVNZXRhZGF0YU5hbWVzXG4gICAgKTtcblxuICAgIGlmIChmYWNhZGVzUmVzcG9uc2VGcm9tTGlzdCkge1xuICAgICAgICByZXR1cm4gKGZhY2FkZXNSZXNwb25zZUZyb21MaXN0LnJlc3BvbnNlPy5mYWNhZGVNZXRhZGF0YU5hbWVzID8/IFtdKVxuICAgICAgICAgICAgLm1hcChmYWNhZGUgPT4gKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogZmFjYWRlLm5hbWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsOiBDdXN0b21UcmFuc2xhdGlvbnNTZXJ2aWNlLnRyYW5zbGF0ZShgJHtUUkFOU0xBVElPTl9QUkVGSVh9X2VudGl0eWApLFxuICAgICAgICAgICAgICAgIGFwcGx5OiBmYWNhZGUubmFtZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBDb21wbGV0aW9uVHlwZXMuRW50aXR5XG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgZmFjYWRlc1Jlc3BvbnNlRnJvbUdldDogUmVzcG9uc2U8R2V0RmFjYWRlTWV0YWRhdGFCeVBhdGhSZXNwb25zZT4gPSByZXNwb25zZXMuZmluZChyZXNwb25zZSA9PlxuICAgICAgICByZXNwb25zZT8ucmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlcy5HZXRGYWNhZGVNZXRhZGF0YUJ5UGF0aFxuICAgICk7XG5cbiAgICBpZiAoZmFjYWRlc1Jlc3BvbnNlRnJvbUdldCkge1xuICAgICAgICByZXR1cm4gKGZhY2FkZXNSZXNwb25zZUZyb21HZXQucmVzcG9uc2U/LmZhY2FkZU1ldGFkYXRhPy5maWVsZHMgPz8gW10pXG4gICAgICAgICAgICAubWFwKGZhY2FkZSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBmYWNhZGUubmFtZSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IEN1c3RvbVRyYW5zbGF0aW9uc1NlcnZpY2UudHJhbnNsYXRlKGAke1RSQU5TTEFUSU9OX1BSRUZJWH1fJHtcbiAgICAgICAgICAgICAgICAgICAgZmFjYWRlLnR5cGUgPT09IE1ldGFUeXBlLkVOVElUWVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImVudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICB9YCksXG4gICAgICAgICAgICAgICAgYXBwbHk6IGZhY2FkZS5uYW1lLFxuICAgICAgICAgICAgICAgIHR5cGU6IGZhY2FkZS50eXBlID09PSBNZXRhVHlwZS5FTlRJVFkgPyBDb21wbGV0aW9uVHlwZXMuRW50aXR5IDogQ29tcGxldGlvblR5cGVzLkZpbmFsVmFsdWVcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG59XG5cbi8qXG4gKiBGaWx0ZXJpbmcgdGhlIGNvbXBsZXRpb25zIHRvIG9ubHkgZGVhbCB3aXRoIHRoZSBuZWNlc3NhcnkgaXRlbXNcbiAqL1xuZnVuY3Rpb24gZ2V0RmlsdGVyZWRDb21wbGV0aW9ucyhjb21wbGV0aW9uczogQ29tcGxldGlvbltdLCBmaWx0ZXI6IHN0cmluZyk6IENvbXBsZXRpb25bXSB7XG4gICAgcmV0dXJuIGNvbXBsZXRpb25zXG4gICAgICAgIC5maWx0ZXIoY29tcGxldGlvbkl0ZW0gPT5cbiAgICAgICAgICAgICAgICBjb21wbGV0aW9uSXRlbVxuICAgICAgICAgICAgICAgICAgICAubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgLnN0YXJ0c1dpdGgoZmlsdGVyLnRvTG93ZXJDYXNlKCkpKTtcbn1cblxuXG4vKlxuICogT3ZlcndyaXRpbmcgdGhlIGNvbXBsZXRpb25zJ3MgYXBwbHkgdG8gcmVtb3ZlIHRoZSBlbnRpcmUgY3VycmVudCB3cml0dGVuIHZhbHVlIGFuZCBhcHBseSB0aGUgdGhlIGVudGlyZSBjb21wbGV0aW9uJ3MgYXBwbHkgXG4gKi9cbmZ1bmN0aW9uIGdldEZvcm1hdHRlZENvbXBsZXRpb25zKGNvbXBsZXRpb25zOiBDb21wbGV0aW9uW10sIGZpbHRlcjogc3RyaW5nKTogQ29tcGxldGlvbltdIHtcbiAgICByZXR1cm4gY29tcGxldGlvbnNcbiAgICAgICAgLm1hcChjb21wbGV0aW9uSXRlbSA9PiAoe1xuICAgICAgICAgICAgLi4uY29tcGxldGlvbkl0ZW0sXG4gICAgICAgICAgICBhcHBseTogZ2V0Q29tcGxldGlvbkFwcGx5KGZpbHRlciwgYCR7Y29tcGxldGlvbkl0ZW0uYXBwbHl9YClcbiAgICAgICAgfSkpO1xufVxuXG5mdW5jdGlvbiBnZXRDb21wbGV0aW9uQXBwbHkoZmlsdGVyOiBzdHJpbmcsIG9sZEFwcGx5VGV4dDogc3RyaW5nKTogKCh2aWV3OiBFZGl0b3JWaWV3LCBjb21wbGV0aW9uOiBDb21wbGV0aW9uLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpID0+IHZvaWQpICB7XG4gICAgcmV0dXJuICh2aWV3OiBFZGl0b3JWaWV3LCBjb21wbGV0aW9uOiBDb21wbGV0aW9uLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbmV3RnJvbSA9IGZyb20gLSBmaWx0ZXIubGVuZ3RoO1xuICAgIFxuICAgICAgICB2aWV3LmRpc3BhdGNoKHtcbiAgICAgICAgICAgIGNoYW5nZXM6IHtcbiAgICAgICAgICAgICAgICBmcm9tOiBuZXdGcm9tLFxuICAgICAgICAgICAgICAgIHRvLFxuICAgICAgICAgICAgICAgIGluc2VydDogb2xkQXBwbHlUZXh0XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgYW5jaG9yOiBuZXdGcm9tICsgb2xkQXBwbHlUZXh0Lmxlbmd0aFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVzZXJFdmVudDogXCJpbnB1dC5jb21wbGV0ZVwiLFxuICAgICAgICAgICAgYW5ub3RhdGlvbnM6IHBpY2tlZENvbXBsZXRpb24ub2YoY29tcGxldGlvbilcbiAgICAgICAgfSk7XG4gICAgfSBcbn1cblxuY29uc3QgY29tcGxldGlvbnNTb3J0T3JkZXI6IENvbXBsZXRpb25UeXBlc1tdID0gW1xuICAgIENvbXBsZXRpb25UeXBlcy5LZXl3b3JkLFxuICAgIENvbXBsZXRpb25UeXBlcy5Db250ZXh0LFxuICAgIENvbXBsZXRpb25UeXBlcy5Vc2VyRXhwcmVzc2lvbixcbiAgICBDb21wbGV0aW9uVHlwZXMuRXhwcmVzc2lvbixcbiAgICBDb21wbGV0aW9uVHlwZXMuRW50aXR5LFxuICAgIENvbXBsZXRpb25UeXBlcy5GaW5hbFZhbHVlXG5dO1xuXG4vKlxuICogU29ydHMgdGhlIGNvbXBsZXRpb25zIGZvbGxvd2luZyB0aGUgXCJjb21wbGV0aW9uc1NvcnRPcmRlclwiIHByaW9yaXR5IG9yZGVyXG4gKi9cbmZ1bmN0aW9uIGdldFNvcnRlZENvbXBsZXRpb25zKGNvbXBsZXRpb25zOiBDb21wbGV0aW9uW10pOiBDb21wbGV0aW9uW10ge1xuICAgIHJldHVybiBjb21wbGV0aW9ucy5zb3J0KCh4OiBDb21wbGV0aW9uLCB5OiBDb21wbGV0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHhQcmlvcml0eSA9IGNvbXBsZXRpb25zU29ydE9yZGVyLmluZGV4T2YoeC50eXBlIGFzIENvbXBsZXRpb25UeXBlcyk7XG4gICAgICAgIGNvbnN0IHlQcmlvcml0eSA9IGNvbXBsZXRpb25zU29ydE9yZGVyLmluZGV4T2YoeS50eXBlIGFzIENvbXBsZXRpb25UeXBlcyk7XG5cbiAgICAgICAgcmV0dXJuIHhQcmlvcml0eSAtIHlQcmlvcml0eTtcbiAgICB9KTtcbn1cbiJdfQ==
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY29kZS1lZGl0b3IvaW5mcmEvY29yZXMvY29kZW1pcnJvci02L2xhbmd1YWdlcy90YXgtY2FsY3VsYXRpb24vZXh0ZW5zaW9ucy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQ0gsY0FBYyxFQUlkLGdCQUFnQixFQUNoQixlQUFlLEVBQ2xCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFDSCx3QkFBd0IsRUFDeEIsNEJBQTRCLEVBQzVCLHNCQUFzQixFQUN0QiwwQkFBMEIsRUFDN0IsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBRUgsWUFBWSxFQUtaLGVBQWUsRUFFZixRQUFRLEVBR1IsUUFBUSxHQUNYLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0M7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVk7SUFDeEIsT0FBTztRQUNILGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztRQUNwRCx3QkFBd0IsRUFBRTtRQUMxQixzQkFBc0IsRUFBRTtRQUN4QixLQUFLLEVBQUU7S0FDVixDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sa0JBQWtCLEdBQUcsK0JBQStCLENBQUM7QUFDM0QsSUFBSSxpQkFBb0MsQ0FBQztBQUV6Qzs7OztHQUlHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxPQUEwQjtJQUNwRCxNQUFNLG9CQUFvQixHQUFHLDZCQUE2QixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkgsSUFBSSxvQkFBb0I7UUFBRSxPQUFPO0lBRWpDLElBQUksaUJBQWlCLEVBQUU7UUFDbkIsTUFBTSxzQkFBc0IscUJBQTBCLGlCQUFpQixDQUFFLENBQUM7UUFDMUUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3ZELHNCQUFzQixDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLEdBQUcsVUFBVTtZQUNsRSxDQUFDLENBQUMsVUFBVTtZQUNaLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7UUFDbEMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sc0JBQXNCLENBQUM7S0FDakM7SUFDRCw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQsSUFBSSwwQkFBMEIsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7O0FBQ3RELElBQUkscUJBQW1DLENBQUM7QUFFeEM7OztHQUdHO0FBQ0gsU0FBUyw0QkFBNEIsQ0FBQyxPQUEwQjtJQUM1RCxNQUFNLEtBQUssR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQ3BDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDdkIsNEJBQTRCLEVBQUUsQ0FBQztZQUMvQix1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDM0M7SUFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFUjs7Ozs7Ozs7O09BU0c7SUFDSCxxQkFBcUIsR0FBRyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBRW5FLDBCQUEwQixHQUFHLEdBQUcsRUFBRTtRQUM5QixxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUNqRixxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUMvRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBRUYscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLDBCQUEwQixDQUFDLENBQUM7SUFDOUUscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLDBCQUEwQixDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFlLHVCQUF1QixDQUFDLE9BQTBCLEVBQUUsS0FBc0I7OztRQUNyRixNQUFNLGdCQUFnQixxQkFBRyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSywwQ0FBRSxHQUFHLDBDQUFFLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxRQUFFLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxHQUFHLG1DQUFJLENBQUMsb0NBQUssRUFBRSxDQUFDO1FBQy9GLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsTUFBTSxRQUFRLEdBQW1CLHNCQUFzQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBGLE9BQU87YUFDRixHQUFHLENBQUMsUUFBUSxDQUFDO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUN2QixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUN6QixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFDNUIsc0JBQXNCLENBQUMsU0FBUyxDQUFDLEVBQ2pDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxFQUNwQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FDcEMsQ0FBQztnQkFDRixNQUFNLG1CQUFtQixHQUFpQixzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXRGLElBQUksbUJBQW1CLENBQUMsTUFBTSxFQUFFO29CQUM1QixNQUFNLG9CQUFvQixHQUFpQix1QkFBdUIsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDaEcsTUFBTSxpQkFBaUIsR0FBaUIsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsQ0FBQztvQkFFbkYsaUJBQWlCLEdBQUc7d0JBQ2hCLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRzt3QkFDakIsTUFBTSxFQUFFLEtBQUs7d0JBQ2IsT0FBTyxFQUFFLGlCQUFpQjtxQkFDN0IsQ0FBQztvQkFDRixlQUFlLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7aUJBRXBEO3FCQUFNO29CQUNILDBCQUEwQixFQUFFLENBQUM7aUJBQ2hDO2FBRUo7UUFDTCxDQUFDLENBQUMsQ0FBQzs7Q0FDVjtBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsU0FBUyxDQUFDLE1BQWM7O0lBQzdCLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssSUFBSTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRXZELE1BQU0sTUFBTSxlQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDBDQUFHLENBQUMsb0NBQUssRUFBRSxDQUFDO0lBQ3RELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxPQUFPLENBQUMsTUFBYyxFQUFFLFlBQW9COztJQUNqRCxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUV2RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDNUUsTUFBTSxJQUFJLGVBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQywwQ0FBRyxDQUFDLG9DQUFLLEVBQUUsQ0FBQztJQUM3RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsV0FBd0I7O0lBQ2xGLE1BQU0sZUFBZSxHQUEwQixrQkFBa0IsRUFBRSxDQUFDO0lBQ3BFLE1BQU0sUUFBUSxHQUFrQixFQUFFLENBQUM7SUFFbkMsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1FBQ2IsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNWLFdBQVcsRUFBRSxZQUFZLENBQUMsdUJBQXVCO1lBQ2pELE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FDaEQ7Z0JBQ0ksRUFBRSxFQUFFLGVBQWUsQ0FBQyxRQUFRO2FBQy9CLEVBQ0QsV0FBVyxDQUNkO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNWLFdBQVcsRUFBRSxZQUFZLENBQUMsc0JBQXNCO1lBQ2hELE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FDL0M7Z0JBQ0ksT0FBTyxFQUFFLGVBQWUsQ0FBQyxRQUFRO2dCQUNqQyxVQUFVLFFBQUUsZUFBZSxDQUFDLFdBQVcsbUNBQUksRUFBRTtnQkFDN0MsSUFBSSxFQUFFLE1BQU07Z0JBQ1osV0FBVyxFQUFFO29CQUNULE1BQU0sRUFBRSxDQUFDO29CQUNULElBQUksRUFBRSxFQUFFO2lCQUNYO2FBQ0osRUFDRCxXQUFXLENBQ2Q7U0FDSixDQUFDLENBQUM7S0FFTjtTQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMzQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDVixXQUFXLEVBQUUsWUFBWSxDQUFDLHVCQUF1QjtZQUNqRCxPQUFPLEVBQUUsbUJBQW1CLENBQUMsdUJBQXVCLENBQ2hEO2dCQUNJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDNUUsRUFDRCxXQUFXLENBQ2Q7U0FDSixDQUFDLENBQUM7S0FFTjtTQUFNO1FBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNWLFdBQVcsRUFBRSxZQUFZLENBQUMsdUJBQXVCO1lBQ2pELE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FDaEQ7Z0JBQ0ksT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO2dCQUNmLElBQUksRUFBRSxNQUFNO2dCQUNaLFdBQVcsRUFBRTtvQkFDVCxNQUFNLEVBQUUsQ0FBQztvQkFDVCxJQUFJLEVBQUUsRUFBRTtpQkFDWDthQUNKLEVBQ0QsV0FBVyxDQUNkO1NBQ0osQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxJQUFZO0lBQ3hDLElBQUksSUFBSSxLQUFLLEVBQUU7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUUzQixNQUFNLFdBQVcsR0FBRztRQUNoQjtZQUNJLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNsQixLQUFLLEVBQUUsOEJBQThCO1NBQ3hDO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7WUFDckIsS0FBSyxFQUFFLGVBQWU7U0FDekI7UUFDRDtZQUNJLEtBQUssRUFBRSxRQUFRLENBQUMsUUFBUTtZQUN4QixLQUFLLEVBQUUsb0JBQW9CO1NBQzlCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7WUFDckIsS0FBSyxFQUFFLGVBQWU7U0FDekI7UUFDRDtZQUNJLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTTtZQUN0QixLQUFLLEVBQUUsU0FBUztTQUNuQjtRQUNEO1lBQ0ksS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHO1lBQ25CLEtBQUssRUFBRSxNQUFNO1NBQ2hCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakIsS0FBSyxFQUFFLElBQUk7U0FDZDtRQUNEO1lBQ0ksS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ2xCLEtBQUssRUFBRSxLQUFLO1NBQ2Y7S0FDSixDQUFDO0lBRUYsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsaUNBQ2xDLGNBQWMsS0FDakIsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxHQUFHLGtCQUFrQixVQUFVLENBQUMsRUFDNUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxPQUFPLElBQy9CLENBQUMsQ0FBQztBQUNSLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLFNBQTBCOztJQUN0RCxNQUFNLGdCQUFnQixHQUE4QyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQzFGLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFdBQVcsTUFBSyxZQUFZLENBQUMsdUJBQXVCLENBQ2pFLENBQUM7SUFFRixJQUFJLGdCQUFnQixFQUFFO1FBQ2xCLE9BQU8sYUFBQyxnQkFBZ0IsQ0FBQyxRQUFRLDBDQUFFLGVBQWUsbUNBQUksRUFBRSxDQUFDO2FBQ3BELEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckIsS0FBSyxFQUFFLGVBQWUsQ0FBQyxJQUFJO1lBQzNCLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxrQkFBa0IsVUFBVSxDQUFDO1lBQzVFLEtBQUssRUFBRSxlQUFlLENBQUMsSUFBSTtZQUMzQixJQUFJLEVBQUUsZUFBZSxDQUFDLE9BQU87U0FDaEMsQ0FBQyxDQUFDLENBQUM7S0FDWDtJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQVMseUJBQXlCLENBQUMsU0FBMEI7O0lBQ3pELE1BQU0sbUJBQW1CLEdBQTZDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDNUYsQ0FBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsV0FBVyxNQUFLLFlBQVksQ0FBQyxzQkFBc0IsQ0FDaEUsQ0FBQztJQUVGLElBQUksbUJBQW1CLEVBQUU7UUFDckIsT0FBTyxhQUFDLG1CQUFtQixDQUFDLFFBQVEsMENBQUUsa0JBQWtCLG1DQUFJLEVBQUUsQ0FBQzthQUMxRCxHQUFHLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEIsS0FBSyxFQUFFLGtCQUFrQixDQUFDLElBQUk7WUFDOUIsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxHQUFHLGtCQUFrQixJQUM3RCxrQkFBa0IsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGlCQUFpQjtnQkFDbEQsQ0FBQyxDQUFDLG1CQUFtQjtnQkFDckIsQ0FBQyxDQUFDLGlCQUNOLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxJQUFJO1lBQzlCLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxXQUFXO1lBQ3BDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsY0FBYztTQUM3SCxDQUFDLENBQUMsQ0FBQztLQUNYO0lBRUQsT0FBTyxFQUFFLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxTQUEwQjs7SUFDdEQsTUFBTSx1QkFBdUIsR0FBOEMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNqRyxDQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxXQUFXLE1BQUssWUFBWSxDQUFDLHVCQUF1QixDQUNqRSxDQUFDO0lBRUYsSUFBSSx1QkFBdUIsRUFBRTtRQUN6QixPQUFPLGFBQUMsdUJBQXVCLENBQUMsUUFBUSwwQ0FBRSxtQkFBbUIsbUNBQUksRUFBRSxDQUFDO2FBQy9ELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDbEIsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxHQUFHLGtCQUFrQixTQUFTLENBQUM7WUFDM0UsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2xCLElBQUksRUFBRSxlQUFlLENBQUMsTUFBTTtTQUMvQixDQUFDLENBQUMsQ0FBQztLQUNYO0lBRUQsTUFBTSxzQkFBc0IsR0FBOEMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNoRyxDQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxXQUFXLE1BQUssWUFBWSxDQUFDLHVCQUF1QixDQUNqRSxDQUFDO0lBRUYsSUFBSSxzQkFBc0IsRUFBRTtRQUN4QixPQUFPLG1CQUFDLHNCQUFzQixDQUFDLFFBQVEsMENBQUUsY0FBYywwQ0FBRSxNQUFNLG1DQUFJLEVBQUUsQ0FBQzthQUNqRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2xCLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxrQkFBa0IsSUFDN0QsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsTUFBTTtnQkFDM0IsQ0FBQyxDQUFDLFFBQVE7Z0JBQ1YsQ0FBQyxDQUFDLE9BQ04sRUFBRSxDQUFDO1lBQ1AsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2xCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVO1NBQzlGLENBQUMsQ0FBQyxDQUFDO0tBQ1g7SUFFRCxPQUFPLEVBQUUsQ0FBQztBQUNkLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsc0JBQXNCLENBQUMsV0FBeUIsRUFBRSxNQUFjO0lBQ3JFLE9BQU8sV0FBVztTQUNiLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUNqQixjQUFjO1NBQ1QsS0FBSztTQUNMLFdBQVcsRUFBRTtTQUNiLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFHRDs7R0FFRztBQUNILFNBQVMsdUJBQXVCLENBQUMsV0FBeUIsRUFBRSxNQUFjO0lBQ3RFLE9BQU8sV0FBVztTQUNiLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLGlDQUNoQixjQUFjLEtBQ2pCLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsSUFDOUQsQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsTUFBYyxFQUFFLFlBQW9CO0lBQzVELE9BQU8sQ0FBQyxJQUFnQixFQUFFLFVBQXNCLEVBQUUsSUFBWSxFQUFFLEVBQVUsRUFBUSxFQUFFO1FBQ2hGLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRXJDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDVixPQUFPLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsRUFBRTtnQkFDRixNQUFNLEVBQUUsWUFBWTthQUN2QjtZQUNELFNBQVMsRUFBRTtnQkFDUCxNQUFNLEVBQUUsT0FBTyxHQUFHLFlBQVksQ0FBQyxNQUFNO2FBQ3hDO1lBQ0QsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQztTQUMvQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxvQkFBb0IsR0FBc0I7SUFDNUMsZUFBZSxDQUFDLE9BQU87SUFDdkIsZUFBZSxDQUFDLE9BQU87SUFDdkIsZUFBZSxDQUFDLGNBQWM7SUFDOUIsZUFBZSxDQUFDLFVBQVU7SUFDMUIsZUFBZSxDQUFDLE1BQU07SUFDdEIsZUFBZSxDQUFDLFVBQVU7Q0FDN0IsQ0FBQztBQUVGOztHQUVHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxXQUF5QjtJQUNuRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFhLEVBQUUsQ0FBYSxFQUFFLEVBQUU7UUFDckQsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUF1QixDQUFDLENBQUM7UUFDMUUsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUF1QixDQUFDLENBQUM7UUFFMUUsT0FBTyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4dGVuc2lvbiB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgRWRpdG9yVmlldyB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5pbXBvcnQge1xuICAgIGF1dG9jb21wbGV0aW9uLFxuICAgIENvbXBsZXRpb24sXG4gICAgQ29tcGxldGlvbkNvbnRleHQsXG4gICAgQ29tcGxldGlvblJlc3VsdCxcbiAgICBwaWNrZWRDb21wbGV0aW9uLFxuICAgIHN0YXJ0Q29tcGxldGlvblxufSBmcm9tIFwiQGNvZGVtaXJyb3IvYXV0b2NvbXBsZXRlXCI7XG5cbmltcG9ydCB7IEN1c3RvbVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IENvZGVNaXJyb3I2Q29yZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb2RlbWlycm9yLTYtY29yZVwiO1xuaW1wb3J0IHsgaXNDdXJyZW50UG9zaXRpb25JbnNpZGVTdHJpbmcgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IEF1dG9jb21wbGV0ZVNlcnZpY2UgfSBmcm9tIFwiLi9hdXRvY29tcGxldGUuc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgICBhdXRvY29tcGxldGVMb2FkaW5nU3RhdGUsXG4gICAgc2hvd0F1dG9jb21wbGV0ZUxvYWRpbmdTdGF0ZSxcbiAgICBhdXRvY29tcGxldGVFbXB0eVN0YXRlLFxuICAgIHNob3dBdXRvY29tcGxldGVFbXB0eVN0YXRlXG59IGZyb20gXCIuL2F1dG9jb21wbGV0ZS1zdGF0ZXNcIjtcbmltcG9ydCB7XG4gICAgVGF4Q2FsY3VsYXRpb25Db25maWdzLFxuICAgIFJlcXVlc3RUeXBlcyxcbiAgICBSZXNwb25zZSxcbiAgICBTYWZlUmVxdWVzdCxcbiAgICBTYWZlUmVzcG9uc2UsXG4gICAgTGlzdENvbnRleHRNZXRhZGF0YUJ5SWRSZXNwb25zZSxcbiAgICBDb21wbGV0aW9uVHlwZXMsXG4gICAgTGlzdEV4cHJlc3Npb25NZXRhZGF0YVJlc3BvbnNlLFxuICAgIE1ldGFUeXBlLFxuICAgIEdldEZhY2FkZU1ldGFkYXRhQnlQYXRoUmVzcG9uc2UsXG4gICAgTGlzdEZhY2FkZU1ldGFkYXRhTmFtZXNSZXNwb25zZSxcbiAgICBLZXl3b3Jkcyxcbn0gZnJvbSBcIi4uLy4uL21vZGVsc1wiO1xuaW1wb3J0IHtcbiAgICBnZXRMYW5ndWFnZUNvbmZpZ3MsXG4gICAgZ2V0U2FmZVJlc3BvbnNlXG59IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgc3R5bGUgfSBmcm9tIFwiLi9hdXRvY29tcGxldGUtc3R5bGVcIjtcblxuLyoqXG4gKiBBZGRzIGFuIGF1dG9jb21wbGV0ZSB0byB0aGUgZWRpdG9yXG4gKiBAcmV0dXJucyBBbiBleHRlbnNpb24gY29udGFpbmluZyBldmVyeXRoaW5nIG5lZWRlZCB0byBjcmVhdGUgdGhlIGF1dG9jb21wbGV0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXV0b2NvbXBsZXRlICgpOiBFeHRlbnNpb24ge1xuICAgIHJldHVybiBbXG4gICAgICAgIGF1dG9jb21wbGV0aW9uKHsgb3ZlcnJpZGU6IFtnZXRDb21wbGV0aW9uUmVzdWx0c10gfSksXG4gICAgICAgIGF1dG9jb21wbGV0ZUxvYWRpbmdTdGF0ZSgpLFxuICAgICAgICBhdXRvY29tcGxldGVFbXB0eVN0YXRlKCksXG4gICAgICAgIHN0eWxlKCksXG4gICAgXTtcbn1cblxuY29uc3QgVFJBTlNMQVRJT05fUFJFRklYID0gXCJjb3JlX2xhbmd1YWdlX3RheF9jYWxjdWxhdGlvblwiO1xubGV0IGNvbXBsZXRpb25SZXN1bHRzITogQ29tcGxldGlvblJlc3VsdDtcblxuLypcbiAqIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYSBrZXkgaXMgcHJlc3NlZCwgdGhlIGN0cmwrc3BhY2UgaXMgdHJpZ2dlcmVkIG9yIHdoZW4gdGhlIHNlYXJjaCBmb3IgY29tcGxldGlvblJlc3VsdHMgaXMgZG9uZS5cbiAqIElmIHRoZXJlIGlzIGEgY29tcGxldGlvblJlc3VsdCwgcmV0dXJucyBpdCwgb3RoZXJ3aXNlIHN0YXJ0cyBhIG5ldyBhc3luYyBzZWFyY2guXG4gKiBXaWxsIG9ubHkgZXhlY3V0ZSB0aGUgYXV0b2NvbXBsZXRpb24gaWYgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGlzIG5vdCBpbnNpZGUgYSBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcGxldGlvblJlc3VsdHMoY29udGV4dDogQ29tcGxldGlvbkNvbnRleHQpOiBDb21wbGV0aW9uUmVzdWx0IHtcbiAgICBjb25zdCBpc0N1cnNvckluc2lkZVN0cmluZyA9IGlzQ3VycmVudFBvc2l0aW9uSW5zaWRlU3RyaW5nKGNvbnRleHQuc3RhdGUuZG9jLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGNvbnRleHQucG9zKSk7XG4gICAgaWYgKGlzQ3Vyc29ySW5zaWRlU3RyaW5nKSByZXR1cm47XG5cbiAgICBpZiAoY29tcGxldGlvblJlc3VsdHMpIHtcbiAgICAgICAgY29uc3QgZmluYWxDb21wbGV0aW9uUmVzdWx0czogQ29tcGxldGlvblJlc3VsdCA9IHsgLi4uY29tcGxldGlvblJlc3VsdHMgfTtcbiAgICAgICAgY29uc3QgY29kZUxlbmd0aCA9IGNvbnRleHQuc3RhdGUuZG9jLnRvU3RyaW5nKCkubGVuZ3RoO1xuICAgICAgICBmaW5hbENvbXBsZXRpb25SZXN1bHRzLmZyb20gPSBmaW5hbENvbXBsZXRpb25SZXN1bHRzLmZyb20gPiBjb2RlTGVuZ3RoXG4gICAgICAgICAgICA/IGNvZGVMZW5ndGhcbiAgICAgICAgICAgIDogZmluYWxDb21wbGV0aW9uUmVzdWx0cy5mcm9tO1xuICAgICAgICBjb21wbGV0aW9uUmVzdWx0cyA9IG51bGw7XG4gICAgICAgIHJldHVybiBmaW5hbENvbXBsZXRpb25SZXN1bHRzO1xuICAgIH1cbiAgICBzdGFydENvbXBsZXRpb25SZXN1bHRzU2VhcmNoKGNvbnRleHQpO1xufVxuXG5sZXQgY2FuY2VsTGFzdENvbXBsZXRpb25TZWFyY2g6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcbmxldCBjb2RlTWlycm9yVmlld0VsZW1lbnQhOiBIVE1MRWxlbWVudDtcblxuLypcbiAqIFN0YXJ0cyBhIG5ldyBjb21wbGV0aW9uUmVzdWx0cydzIGFzeW5jIHNlYXJjaC5cbiAqIEF2b2lkcyB0aGUgbGFzdCBzZWFyY2ggdG8gYmUgZmluaXNoZWQgYnkgY2FsbGluZyB0aGUgXCJjYW5jZWxMYXN0Q29tcGxldGlvblNlYXJjaFwiIGNhbGxiYWNrIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIHN0YXJ0Q29tcGxldGlvblJlc3VsdHNTZWFyY2goY29udGV4dDogQ29tcGxldGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICBjb25zdCB0b2tlbiA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0b2tlbi5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgc2hvd0F1dG9jb21wbGV0ZUxvYWRpbmdTdGF0ZSgpO1xuICAgICAgICAgICAgc2VhcmNoQ29tcGxldGlvblJlc3VsdHMoY29udGV4dCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfSwgNTAwKTtcblxuICAgIC8qXG4gICAgICogSU1QT1JUQU5UOiBUaGUgZm9sbG93aW5nIGxpbmVzIE1VU1QgYmUgdGhlIHdheSB0aGV5IGFyZSFcbiAgICAgKiBIZXJlIGlzIGJlaW5nIGFkZCB0aGUgbGlzdGVuZXIgdG8gYW55IGtleWRvd24vY2xpY2sgZXZlbnQgc28gd2hlbiBhbnkga2V5IGlzIGRvd25lZCBvciBtb3VzZSBjbGlja2VkLCB3ZSBjYW5jZWwgdGhlIGxhc3QgcmVxdWVzdC5cbiAgICAgKiBXZSBkbyB0aGlzIHRvIG5vdCBzaG93IHRvIHRoZSB1c2VyIGEgY29tcGxldGlvbkl0ZW0gaW4gYW4gaW5jb3JyZWN0IHBsYWNlIG9mIHRleHQsIHRoYXQgY2FuIGJlIGRvbmUgYnkgZWl0aGVyIHByZXNzaW5nIHRoZVxuICAgICAqIGFycm93cywgaG9tZSwgZW5kLCBiYWNrc3BhY2UgYW5kIGV0Yy4gVGhlIGZsb3cgaXM6XG4gICAgICogMS4gV2UgYWRkIGFuIGV2ZW50TGlzdGVuZXIgdG8ga2V5ZG93bi9jbGljayB3aGVuIHRoZSBhdXRvY29tcGxldGlvbidzIHJlcXVlc3QgaXMgdHJpZ2dlcmVkO1xuICAgICAqIDIuIFdoZW4gYW55IGtleS9jbGljayBpcyBwcmVzc2VkLCB3ZSByZW1vdmUgdGhlIGxpc3RlbmVyIGFuZCBjYW5jZWwgdGhlIGxhc3QgcmVxdWVzdCBieSBjaGFuZ2luZyB0aGUgaXNTZWFyY2hDYW5jZWxlZCBvbiB0b2tlbiBvYmplY3RcbiAgICAgKiAgdG8gdHJ1ZTtcbiAgICAgKiAzLiBJZiBhbnkga2V5IHRoYXQgcmVxdWlyZXMgYXV0b2NvbXBsZXRpb24gaXMgdHJpZ2dlcmVkLCB0aGUgZmxvdyByZXBlYXRzO1xuICAgICAqL1xuICAgIGNvZGVNaXJyb3JWaWV3RWxlbWVudCA9IENvZGVNaXJyb3I2Q29yZS5nZXRFZGl0b3JWaWV3KCkuY29udGVudERPTTtcblxuICAgIGNhbmNlbExhc3RDb21wbGV0aW9uU2VhcmNoID0gKCkgPT4ge1xuICAgICAgICBjb2RlTWlycm9yVmlld0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgY2FuY2VsTGFzdENvbXBsZXRpb25TZWFyY2gpO1xuICAgICAgICBjb2RlTWlycm9yVmlld0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGNhbmNlbExhc3RDb21wbGV0aW9uU2VhcmNoKTtcbiAgICAgICAgdG9rZW4uYWJvcnQoKTtcbiAgICB9O1xuXG4gICAgY29kZU1pcnJvclZpZXdFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGNhbmNlbExhc3RDb21wbGV0aW9uU2VhcmNoKTtcbiAgICBjb2RlTWlycm9yVmlld0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGNhbmNlbExhc3RDb21wbGV0aW9uU2VhcmNoKTtcbn1cblxuLypcbiAqIFJlcXVlc3RzIHRoZSBuZWNlc3NhcnkgaXRlbXMgdG8gZmlsbCB0aGUgY29tcGxldGlvblJlc3VsdHMsIGFsdGhvdWdoIGl0IG9ubHkgcmVhbGx5IG9wZW5zIHRoZSBhdXRvY29tcGxldGVcbiAqIGJveCAoYnkgY2FsbGluZyB0aGUgXCJzdGFydENvbXBsZXRpb24oKVwiLCB0aGF0IGNhbGxzIHRoZSBcImdldENvbXBsZXRpb25SZXN1bHRzXCIpIGlmIHRoZSBjdXJyZW50IHNlYXJjaCB3YXMgbm90IGNhbmNlbGxlZFxuICogYnkgYSBuZXcgb25lXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNlYXJjaENvbXBsZXRpb25SZXN1bHRzKGNvbnRleHQ6IENvbXBsZXRpb25Db250ZXh0LCB0b2tlbjogQWJvcnRDb250cm9sbGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29kZUJlZm9yZUN1cnNvciA9IGNvbnRleHQ/LnN0YXRlPy5kb2M/LnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGNvbnRleHQ/LnBvcyA/PyAwKSA/PyBcIlwiO1xuICAgIGNvbnN0IGZpbHRlciA9IGdldEZpbHRlcihjb2RlQmVmb3JlQ3Vyc29yKTtcbiAgICBjb25zdCBwYXRoID0gZ2V0UGF0aChjb2RlQmVmb3JlQ3Vyc29yLCBmaWx0ZXIubGVuZ3RoKTtcbiAgICBjb25zdCByZXF1ZXN0czogU2FmZVJlc3BvbnNlW10gPSBnZXRSZXF1ZXN0c0Jhc2VkT25QYXRoKHBhdGgsIGZpbHRlciwgdG9rZW4uc2lnbmFsKTtcblxuICAgIFByb21pc2VcbiAgICAgICAgLmFsbChyZXF1ZXN0cylcbiAgICAgICAgLnRoZW4ocmVzcG9uc2VzID0+IHtcbiAgICAgICAgICAgIGlmICghdG9rZW4uc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0aW9ucyA9IFtdLmNvbmNhdChcbiAgICAgICAgICAgICAgICAgICAgZ2V0S2V5d29yZHNDb21wbGV0aW9ucyhwYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dHNDb21wbGV0aW9ucyhyZXNwb25zZXMpLFxuICAgICAgICAgICAgICAgICAgICBnZXRFeHByZXNzaW9uc0NvbXBsZXRpb25zKHJlc3BvbnNlcyksXG4gICAgICAgICAgICAgICAgICAgIGdldEVudGl0aWVzQ29tcGxldGlvbnMocmVzcG9uc2VzKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRDb21wbGV0aW9uczogQ29tcGxldGlvbltdID0gZ2V0RmlsdGVyZWRDb21wbGV0aW9ucyhjb21wbGV0aW9ucywgZmlsdGVyKTtcblxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZENvbXBsZXRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRDb21wbGV0aW9uczogQ29tcGxldGlvbltdID0gZ2V0Rm9ybWF0dGVkQ29tcGxldGlvbnMoZmlsdGVyZWRDb21wbGV0aW9ucywgZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydGVkQ29tcGxldGlvbnM6IENvbXBsZXRpb25bXSA9IGdldFNvcnRlZENvbXBsZXRpb25zKGZvcm1hdHRlZENvbXBsZXRpb25zKTtcblxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uUmVzdWx0cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IGNvbnRleHQucG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHNvcnRlZENvbXBsZXRpb25zXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29tcGxldGlvbihDb2RlTWlycm9yNkNvcmUuZ2V0RWRpdG9yVmlldygpKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNob3dBdXRvY29tcGxldGVFbXB0eVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xufVxuXG4vKlxuICogUmV0dXJucyB0aGUgZmlsdGVyIGluIHRoZSBjb2RlIHdyaXR0ZW4uXG4gKiBGb3IgZXhhbXBsZSBpbiB0aGUgY29kZSBcImNvbnRyb2xhZG9yaWEuZW1wcmVzYVwiLCBcImVtcHJlc2FcIiB3b3VsZCBiZSB0aGUgZmlsdGVyXG4gKiBhbmQgaW4gXCJjb250cm9sYWRvcmlhXCIsIFwiY29udHJvbGFkb3JpYVwiIHdvdWxkIGJlIHRoZSBmaWx0ZXIuXG4gKiBBbGxvd3Mgb25seSBhbHBoYW51bWVyaWNzLCB1bmRlcnNjb3JlIGFuZCBoYXNodGFnIG9uIGZpbHRlcidzIHN0YXJ0LlxuICogRG9lcyBub3QgYWxsb3cgc3BhY2VzXG4gKi9cbmZ1bmN0aW9uIGdldEZpbHRlcihzdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHN0cmluZyA9PT0gdW5kZWZpbmVkIHx8IHN0cmluZyA9PT0gbnVsbCkgcmV0dXJuIFwiXCI7XG5cbiAgICBjb25zdCBmaWx0ZXIgPSBzdHJpbmcubWF0Y2goLygjfFxcLnwpXFx3KiQvKT8uWzBdID8/IFwiXCI7XG4gICAgcmV0dXJuIGZpbHRlci5yZXBsYWNlKFwiLlwiLCBcIlwiKS50cmltKCk7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRoZSBwYXRoIGluIHRoZSBjb2RlIHdyaXR0ZW4gYmFzZWQgb24gZmlsdGVyLlxuICogRm9yIGV4YW1wbGUgaW4gdGhlIGNvZGUgXCJjb250cm9sYWRvcmlhLmVtcHJlc2FcIiwgXCJjb250cm9sYWRvcmlhXCIgd291bGQgYmUgdGhlIHBhdGhcbiAqIGFuZCBpbiBcImNvbnRyb2xhZG9yaWFcIiwgXCJcIiB3b3VsZCBiZSB0aGUgcGF0aC5cbiAqIERvZXMgbm90IGFsbG93IHNwYWNlc1xuICovXG5mdW5jdGlvbiBnZXRQYXRoKHN0cmluZzogc3RyaW5nLCBmaWx0ZXJMZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHN0cmluZyA9PT0gdW5kZWZpbmVkIHx8IHN0cmluZyA9PT0gbnVsbCkgcmV0dXJuIFwiXCI7XG5cbiAgICBjb25zdCBzdHJpbmdXaXRob3V0UGF0aCA9IHN0cmluZy5zdWJzdHJpbmcoMCwgc3RyaW5nLmxlbmd0aCAtIGZpbHRlckxlbmd0aCk7XG4gICAgY29uc3QgcGF0aCA9IHN0cmluZ1dpdGhvdXRQYXRoLm1hdGNoKC8oXFx3KlxcLikqJC8pPy5bMF0gPz8gXCJcIjtcbiAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC9cXC4kLywgXCJcIik7XG59XG5cbmZ1bmN0aW9uIGdldFJlcXVlc3RzQmFzZWRPblBhdGgocGF0aDogc3RyaW5nLCBmaWx0ZXI6IHN0cmluZywgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogU2FmZVJlc3BvbnNlW10ge1xuICAgIGNvbnN0IGxhbmd1YWdlQ29uZmlnczogVGF4Q2FsY3VsYXRpb25Db25maWdzID0gZ2V0TGFuZ3VhZ2VDb25maWdzKCk7XG4gICAgY29uc3QgcmVxdWVzdHM6IFNhZmVSZXF1ZXN0W10gPSBbXTtcblxuICAgIGlmIChwYXRoID09PSBcIlwiKSB7XG4gICAgICAgIHJlcXVlc3RzLnB1c2goe1xuICAgICAgICAgICAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlcy5MaXN0Q29udGV4dE1ldGFkYXRhQnlJZCxcbiAgICAgICAgICAgIHJlcXVlc3Q6IEF1dG9jb21wbGV0ZVNlcnZpY2UubGlzdENvbnRleHRNZXRhZGF0YUJ5SWQoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogbGFuZ3VhZ2VDb25maWdzLmNvbnRleHRzLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWJvcnRTaWduYWxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSk7XG4gICAgICAgIHJlcXVlc3RzLnB1c2goe1xuICAgICAgICAgICAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlcy5MaXN0RXhwcmVzc2lvbk1ldGFkYXRhLFxuICAgICAgICAgICAgcmVxdWVzdDogQXV0b2NvbXBsZXRlU2VydmljZS5saXN0RXhwcmVzc2lvbk1ldGFkYXRhKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogbGFuZ3VhZ2VDb25maWdzLmNvbnRleHRzLFxuICAgICAgICAgICAgICAgICAgICBzdWJjb250ZXh0OiBsYW5ndWFnZUNvbmZpZ3Muc3ViQ29udGV4dHMgPz8gW10sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlcXVlc3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDIwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFib3J0U2lnbmFsXG4gICAgICAgICAgICApXG4gICAgICAgIH0pO1xuXG4gICAgfSBlbHNlIGlmIChwYXRoLmluY2x1ZGVzKFwiLlwiKSkge1xuICAgICAgICBjb25zdCBzcGxpdHRlZFBhdGggPSBwYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgcmVxdWVzdHMucHVzaCh7XG4gICAgICAgICAgICByZXF1ZXN0VHlwZTogUmVxdWVzdFR5cGVzLkdldEZhY2FkZU1ldGFkYXRhQnlQYXRoLFxuICAgICAgICAgICAgcmVxdWVzdDogQXV0b2NvbXBsZXRlU2VydmljZS5nZXRGYWNhZGVNZXRhZGF0YUJ5UGF0aChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHNwbGl0dGVkUGF0aFswXSxcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TmFtZTogc3BsaXR0ZWRQYXRoWzFdLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IHNwbGl0dGVkUGF0aFsyXSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc3BsaXR0ZWRQYXRoLnNsaWNlKDIpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhYm9ydFNpZ25hbFxuICAgICAgICAgICAgKVxuICAgICAgICB9KTtcblxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3RzLnB1c2goe1xuICAgICAgICAgICAgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlcy5MaXN0RmFjYWRlTWV0YWRhdGFOYW1lcyxcbiAgICAgICAgICAgIHJlcXVlc3Q6IEF1dG9jb21wbGV0ZVNlcnZpY2UubGlzdEZhY2FkZU1ldGFkYXRhTmFtZXMoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBbcGF0aF0sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlcXVlc3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDMwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFib3J0U2lnbmFsXG4gICAgICAgICAgICApXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0cy5tYXAocmVxdWVzdCA9PiBnZXRTYWZlUmVzcG9uc2UocmVxdWVzdCkpO1xufVxuXG5mdW5jdGlvbiBnZXRLZXl3b3Jkc0NvbXBsZXRpb25zKHBhdGg6IHN0cmluZyk6IENvbXBsZXRpb25bXSB7XG4gICAgaWYgKHBhdGggIT09IFwiXCIpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGNvbXBsZXRpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogS2V5d29yZHMuU0UsXG4gICAgICAgICAgICBhcHBseTogXCJTRSAoKVxcbkVOVEFPXFxuXFx0YWNhb1xcbkZJTV9TRVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogS2V5d29yZHMuU0VOQU8sXG4gICAgICAgICAgICBhcHBseTogXCJTRU5BT1xcblxcdGFjYW9cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IEtleXdvcmRzLkNPTlRFTkhBLFxuICAgICAgICAgICAgYXBwbHk6IFwiQ09OVEVOSEEoY29uZGljYW8pXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBLZXl3b3Jkcy5FTlRBTyxcbiAgICAgICAgICAgIGFwcGx5OiBcIkVOVEFPXFxuXFx0YWNhb1wiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogS2V5d29yZHMuRklNX1NFLFxuICAgICAgICAgICAgYXBwbHk6IFwiRklNX1NFIFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogS2V5d29yZHMuTkFPLFxuICAgICAgICAgICAgYXBwbHk6IFwiTkFPIFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogS2V5d29yZHMuRSxcbiAgICAgICAgICAgIGFwcGx5OiBcIkUgXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBLZXl3b3Jkcy5PVSxcbiAgICAgICAgICAgIGFwcGx5OiBcIk9VIFwiXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb21wbGV0aW9ucy5tYXAoY29tcGxldGlvbkl0ZW0gPT4gKHtcbiAgICAgICAgLi4uY29tcGxldGlvbkl0ZW0sXG4gICAgICAgIGRldGFpbDogQ3VzdG9tVHJhbnNsYXRpb25zU2VydmljZS50cmFuc2xhdGUoYCR7VFJBTlNMQVRJT05fUFJFRklYfV9rZXl3b3JkYCksXG4gICAgICAgIHR5cGU6IENvbXBsZXRpb25UeXBlcy5LZXl3b3JkXG4gICAgfSkpO1xufVxuXG5mdW5jdGlvbiBnZXRDb250ZXh0c0NvbXBsZXRpb25zKHJlc3BvbnNlczogUmVzcG9uc2U8YW55PltdKTogQ29tcGxldGlvbltdIHtcbiAgICBjb25zdCBjb250ZXh0c1Jlc3BvbnNlOiBSZXNwb25zZTxMaXN0Q29udGV4dE1ldGFkYXRhQnlJZFJlc3BvbnNlPiA9IHJlc3BvbnNlcy5maW5kKHJlc3BvbnNlID0+XG4gICAgICAgIHJlc3BvbnNlPy5yZXF1ZXN0VHlwZSA9PT0gUmVxdWVzdFR5cGVzLkxpc3RDb250ZXh0TWV0YWRhdGFCeUlkXG4gICAgKTtcblxuICAgIGlmIChjb250ZXh0c1Jlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiAoY29udGV4dHNSZXNwb25zZS5yZXNwb25zZT8uY29udGV4dE1ldGFkYXRhID8/IFtdKVxuICAgICAgICAgICAgLm1hcChjb250ZXh0TWV0YWRhdGEgPT4gKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogY29udGV4dE1ldGFkYXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsOiBDdXN0b21UcmFuc2xhdGlvbnNTZXJ2aWNlLnRyYW5zbGF0ZShgJHtUUkFOU0xBVElPTl9QUkVGSVh9X2NvbnRleHRgKSxcbiAgICAgICAgICAgICAgICBhcHBseTogY29udGV4dE1ldGFkYXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgdHlwZTogQ29tcGxldGlvblR5cGVzLkNvbnRleHRcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldEV4cHJlc3Npb25zQ29tcGxldGlvbnMocmVzcG9uc2VzOiBSZXNwb25zZTxhbnk+W10pOiBDb21wbGV0aW9uW10ge1xuICAgIGNvbnN0IGV4cHJlc3Npb25zUmVzcG9uc2U6IFJlc3BvbnNlPExpc3RFeHByZXNzaW9uTWV0YWRhdGFSZXNwb25zZT4gPSByZXNwb25zZXMuZmluZChyZXNwb25zZSA9PlxuICAgICAgICByZXNwb25zZT8ucmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlcy5MaXN0RXhwcmVzc2lvbk1ldGFkYXRhXG4gICAgKTtcblxuICAgIGlmIChleHByZXNzaW9uc1Jlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiAoZXhwcmVzc2lvbnNSZXNwb25zZS5yZXNwb25zZT8uZXhwcmVzc2lvbk1ldGFkYXRhID8/IFtdKVxuICAgICAgICAgICAgLm1hcChleHByZXNzaW9uTWV0YWRhdGEgPT4gKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogZXhwcmVzc2lvbk1ldGFkYXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsOiBDdXN0b21UcmFuc2xhdGlvbnNTZXJ2aWNlLnRyYW5zbGF0ZShgJHtUUkFOU0xBVElPTl9QUkVGSVh9XyR7XG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25NZXRhZGF0YS50eXBlID09PSBNZXRhVHlwZS5QVUJMSUNfRVhQUkVTU0lPTlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcInNlbmlvcl9leHByZXNzaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJ1c2VyX2V4cHJlc3Npb25cIlxuICAgICAgICAgICAgICAgICAgICB9YCksXG4gICAgICAgICAgICAgICAgYXBwbHk6IGV4cHJlc3Npb25NZXRhZGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgIGluZm86IGV4cHJlc3Npb25NZXRhZGF0YS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB0eXBlOiBleHByZXNzaW9uTWV0YWRhdGEudHlwZSA9PT0gTWV0YVR5cGUuUFVCTElDX0VYUFJFU1NJT04gPyBDb21wbGV0aW9uVHlwZXMuRXhwcmVzc2lvbiA6IENvbXBsZXRpb25UeXBlcy5Vc2VyRXhwcmVzc2lvblxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbn1cblxuZnVuY3Rpb24gZ2V0RW50aXRpZXNDb21wbGV0aW9ucyhyZXNwb25zZXM6IFJlc3BvbnNlPGFueT5bXSk6IENvbXBsZXRpb25bXSB7XG4gICAgY29uc3QgZmFjYWRlc1Jlc3BvbnNlRnJvbUxpc3Q6IFJlc3BvbnNlPExpc3RGYWNhZGVNZXRhZGF0YU5hbWVzUmVzcG9uc2U+ID0gcmVzcG9uc2VzLmZpbmQocmVzcG9uc2UgPT5cbiAgICAgICAgcmVzcG9uc2U/LnJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZXMuTGlzdEZhY2FkZU1ldGFkYXRhTmFtZXNcbiAgICApO1xuXG4gICAgaWYgKGZhY2FkZXNSZXNwb25zZUZyb21MaXN0KSB7XG4gICAgICAgIHJldHVybiAoZmFjYWRlc1Jlc3BvbnNlRnJvbUxpc3QucmVzcG9uc2U/LmZhY2FkZU1ldGFkYXRhTmFtZXMgPz8gW10pXG4gICAgICAgICAgICAubWFwKGZhY2FkZSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBmYWNhZGUubmFtZSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IEN1c3RvbVRyYW5zbGF0aW9uc1NlcnZpY2UudHJhbnNsYXRlKGAke1RSQU5TTEFUSU9OX1BSRUZJWH1fZW50aXR5YCksXG4gICAgICAgICAgICAgICAgYXBwbHk6IGZhY2FkZS5uYW1lLFxuICAgICAgICAgICAgICAgIHR5cGU6IENvbXBsZXRpb25UeXBlcy5FbnRpdHlcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBmYWNhZGVzUmVzcG9uc2VGcm9tR2V0OiBSZXNwb25zZTxHZXRGYWNhZGVNZXRhZGF0YUJ5UGF0aFJlc3BvbnNlPiA9IHJlc3BvbnNlcy5maW5kKHJlc3BvbnNlID0+XG4gICAgICAgIHJlc3BvbnNlPy5yZXF1ZXN0VHlwZSA9PT0gUmVxdWVzdFR5cGVzLkdldEZhY2FkZU1ldGFkYXRhQnlQYXRoXG4gICAgKTtcblxuICAgIGlmIChmYWNhZGVzUmVzcG9uc2VGcm9tR2V0KSB7XG4gICAgICAgIHJldHVybiAoZmFjYWRlc1Jlc3BvbnNlRnJvbUdldC5yZXNwb25zZT8uZmFjYWRlTWV0YWRhdGE/LmZpZWxkcyA/PyBbXSlcbiAgICAgICAgICAgIC5tYXAoZmFjYWRlID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGZhY2FkZS5uYW1lLFxuICAgICAgICAgICAgICAgIGRldGFpbDogQ3VzdG9tVHJhbnNsYXRpb25zU2VydmljZS50cmFuc2xhdGUoYCR7VFJBTlNMQVRJT05fUFJFRklYfV8ke1xuICAgICAgICAgICAgICAgICAgICBmYWNhZGUudHlwZSA9PT0gTWV0YVR5cGUuRU5USVRZXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZW50aXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIH1gKSxcbiAgICAgICAgICAgICAgICBhcHBseTogZmFjYWRlLm5hbWUsXG4gICAgICAgICAgICAgICAgdHlwZTogZmFjYWRlLnR5cGUgPT09IE1ldGFUeXBlLkVOVElUWSA/IENvbXBsZXRpb25UeXBlcy5FbnRpdHkgOiBDb21wbGV0aW9uVHlwZXMuRmluYWxWYWx1ZVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbn1cblxuLypcbiAqIEZpbHRlcmluZyB0aGUgY29tcGxldGlvbnMgdG8gb25seSBkZWFsIHdpdGggdGhlIG5lY2Vzc2FyeSBpdGVtc1xuICovXG5mdW5jdGlvbiBnZXRGaWx0ZXJlZENvbXBsZXRpb25zKGNvbXBsZXRpb25zOiBDb21wbGV0aW9uW10sIGZpbHRlcjogc3RyaW5nKTogQ29tcGxldGlvbltdIHtcbiAgICByZXR1cm4gY29tcGxldGlvbnNcbiAgICAgICAgLmZpbHRlcihjb21wbGV0aW9uSXRlbSA9PlxuICAgICAgICAgICAgICAgIGNvbXBsZXRpb25JdGVtXG4gICAgICAgICAgICAgICAgICAgIC5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAuc3RhcnRzV2l0aChmaWx0ZXIudG9Mb3dlckNhc2UoKSkpO1xufVxuXG5cbi8qXG4gKiBPdmVyd3JpdGluZyB0aGUgY29tcGxldGlvbnMncyBhcHBseSB0byByZW1vdmUgdGhlIGVudGlyZSBjdXJyZW50IHdyaXR0ZW4gdmFsdWUgYW5kIGFwcGx5IHRoZSB0aGUgZW50aXJlIGNvbXBsZXRpb24ncyBhcHBseSBcbiAqL1xuZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkQ29tcGxldGlvbnMoY29tcGxldGlvbnM6IENvbXBsZXRpb25bXSwgZmlsdGVyOiBzdHJpbmcpOiBDb21wbGV0aW9uW10ge1xuICAgIHJldHVybiBjb21wbGV0aW9uc1xuICAgICAgICAubWFwKGNvbXBsZXRpb25JdGVtID0+ICh7XG4gICAgICAgICAgICAuLi5jb21wbGV0aW9uSXRlbSxcbiAgICAgICAgICAgIGFwcGx5OiBnZXRDb21wbGV0aW9uQXBwbHkoZmlsdGVyLCBgJHtjb21wbGV0aW9uSXRlbS5hcHBseX1gKVxuICAgICAgICB9KSk7XG59XG5cbmZ1bmN0aW9uIGdldENvbXBsZXRpb25BcHBseShmaWx0ZXI6IHN0cmluZywgb2xkQXBwbHlUZXh0OiBzdHJpbmcpOiAoKHZpZXc6IEVkaXRvclZpZXcsIGNvbXBsZXRpb246IENvbXBsZXRpb24sIGZyb206IG51bWJlciwgdG86IG51bWJlcikgPT4gdm9pZCkgIHtcbiAgICByZXR1cm4gKHZpZXc6IEVkaXRvclZpZXcsIGNvbXBsZXRpb246IENvbXBsZXRpb24sIGZyb206IG51bWJlciwgdG86IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBuZXdGcm9tID0gZnJvbSAtIGZpbHRlci5sZW5ndGg7XG4gICAgXG4gICAgICAgIHZpZXcuZGlzcGF0Y2goe1xuICAgICAgICAgICAgY2hhbmdlczoge1xuICAgICAgICAgICAgICAgIGZyb206IG5ld0Zyb20sXG4gICAgICAgICAgICAgICAgdG8sXG4gICAgICAgICAgICAgICAgaW5zZXJ0OiBvbGRBcHBseVRleHRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgICAgICAgICBhbmNob3I6IG5ld0Zyb20gKyBvbGRBcHBseVRleHQubGVuZ3RoXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXNlckV2ZW50OiBcImlucHV0LmNvbXBsZXRlXCIsXG4gICAgICAgICAgICBhbm5vdGF0aW9uczogcGlja2VkQ29tcGxldGlvbi5vZihjb21wbGV0aW9uKVxuICAgICAgICB9KTtcbiAgICB9IFxufVxuXG5jb25zdCBjb21wbGV0aW9uc1NvcnRPcmRlcjogQ29tcGxldGlvblR5cGVzW10gPSBbXG4gICAgQ29tcGxldGlvblR5cGVzLktleXdvcmQsXG4gICAgQ29tcGxldGlvblR5cGVzLkNvbnRleHQsXG4gICAgQ29tcGxldGlvblR5cGVzLlVzZXJFeHByZXNzaW9uLFxuICAgIENvbXBsZXRpb25UeXBlcy5FeHByZXNzaW9uLFxuICAgIENvbXBsZXRpb25UeXBlcy5FbnRpdHksXG4gICAgQ29tcGxldGlvblR5cGVzLkZpbmFsVmFsdWVcbl07XG5cbi8qXG4gKiBTb3J0cyB0aGUgY29tcGxldGlvbnMgZm9sbG93aW5nIHRoZSBcImNvbXBsZXRpb25zU29ydE9yZGVyXCIgcHJpb3JpdHkgb3JkZXJcbiAqL1xuZnVuY3Rpb24gZ2V0U29ydGVkQ29tcGxldGlvbnMoY29tcGxldGlvbnM6IENvbXBsZXRpb25bXSk6IENvbXBsZXRpb25bXSB7XG4gICAgcmV0dXJuIGNvbXBsZXRpb25zLnNvcnQoKHg6IENvbXBsZXRpb24sIHk6IENvbXBsZXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeFByaW9yaXR5ID0gY29tcGxldGlvbnNTb3J0T3JkZXIuaW5kZXhPZih4LnR5cGUgYXMgQ29tcGxldGlvblR5cGVzKTtcbiAgICAgICAgY29uc3QgeVByaW9yaXR5ID0gY29tcGxldGlvbnNTb3J0T3JkZXIuaW5kZXhPZih5LnR5cGUgYXMgQ29tcGxldGlvblR5cGVzKTtcblxuICAgICAgICByZXR1cm4geFByaW9yaXR5IC0geVByaW9yaXR5O1xuICAgIH0pO1xufVxuIl19
@@ -1,11 +1,9 @@
1
1
  import { LanguageSupport } from "@codemirror/language";
2
2
  import { baseConfigs } from "./extensions/base-configs/base-configs";
3
3
  import { autocomplete } from "./extensions/autocomplete/autocomplete";
4
- import { onPasteCompletionItemsUpdater } from "./extensions/on-paste-completion-items-updater/on-paste-completion-items-updater";
5
4
  export function TaxCalculation() {
6
5
  return new LanguageSupport(baseConfigs, [
7
6
  autocomplete(),
8
- onPasteCompletionItemsUpdater(),
9
7
  ]);
10
8
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWNhbGN1bGF0aW9uLmxhbmd1YWdlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY29kZS1lZGl0b3IvaW5mcmEvY29yZXMvY29kZW1pcnJvci02L2xhbmd1YWdlcy90YXgtY2FsY3VsYXRpb24vdGF4LWNhbGN1bGF0aW9uLmxhbmd1YWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBRWpJLE1BQU0sVUFBVSxjQUFjO0lBQzFCLE9BQU8sSUFBSSxlQUFlLENBQ3RCLFdBQVcsRUFDWDtRQUNJLFlBQVksRUFBRTtRQUNkLDZCQUE2QixFQUFFO0tBQ2xDLENBQ0osQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZVN1cHBvcnQgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcblxuaW1wb3J0IHsgYmFzZUNvbmZpZ3MgfSBmcm9tIFwiLi9leHRlbnNpb25zL2Jhc2UtY29uZmlncy9iYXNlLWNvbmZpZ3NcIjtcbmltcG9ydCB7IGF1dG9jb21wbGV0ZSB9IGZyb20gXCIuL2V4dGVuc2lvbnMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHsgb25QYXN0ZUNvbXBsZXRpb25JdGVtc1VwZGF0ZXIgfSBmcm9tIFwiLi9leHRlbnNpb25zL29uLXBhc3RlLWNvbXBsZXRpb24taXRlbXMtdXBkYXRlci9vbi1wYXN0ZS1jb21wbGV0aW9uLWl0ZW1zLXVwZGF0ZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFRheENhbGN1bGF0aW9uKCk6IExhbmd1YWdlU3VwcG9ydCB7XG4gICAgcmV0dXJuIG5ldyBMYW5ndWFnZVN1cHBvcnQoXG4gICAgICAgIGJhc2VDb25maWdzLFxuICAgICAgICBbXG4gICAgICAgICAgICBhdXRvY29tcGxldGUoKSxcbiAgICAgICAgICAgIG9uUGFzdGVDb21wbGV0aW9uSXRlbXNVcGRhdGVyKCksXG4gICAgICAgIF1cbiAgICApO1xufVxuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWNhbGN1bGF0aW9uLmxhbmd1YWdlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY29kZS1lZGl0b3IvaW5mcmEvY29yZXMvY29kZW1pcnJvci02L2xhbmd1YWdlcy90YXgtY2FsY3VsYXRpb24vdGF4LWNhbGN1bGF0aW9uLmxhbmd1YWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXRFLE1BQU0sVUFBVSxjQUFjO0lBQzFCLE9BQU8sSUFBSSxlQUFlLENBQ3RCLFdBQVcsRUFDWDtRQUNJLFlBQVksRUFBRTtLQUNqQixDQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFuZ3VhZ2VTdXBwb3J0IH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5cbmltcG9ydCB7IGJhc2VDb25maWdzIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy9iYXNlLWNvbmZpZ3MvYmFzZS1jb25maWdzXCI7XG5pbXBvcnQgeyBhdXRvY29tcGxldGUgfSBmcm9tIFwiLi9leHRlbnNpb25zL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFRheENhbGN1bGF0aW9uKCk6IExhbmd1YWdlU3VwcG9ydCB7XG4gICAgcmV0dXJuIG5ldyBMYW5ndWFnZVN1cHBvcnQoXG4gICAgICAgIGJhc2VDb25maWdzLFxuICAgICAgICBbXG4gICAgICAgICAgICBhdXRvY29tcGxldGUoKSxcbiAgICAgICAgXVxuICAgICk7XG59XG4iXX0=
@@ -1,4 +1,3 @@
1
1
  export * from "./get-language-configs";
2
2
  export * from "./get-safe-response";
3
- export * from "./update-core-completion-items";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jb2RlLWVkaXRvci9pbmZyYS9jb3Jlcy9jb2RlbWlycm9yLTYvbGFuZ3VhZ2VzL3RheC1jYWxjdWxhdGlvbi91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2dldC1sYW5ndWFnZS1jb25maWdzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9nZXQtc2FmZS1yZXNwb25zZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXBkYXRlLWNvcmUtY29tcGxldGlvbi1pdGVtc1wiO1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jb2RlLWVkaXRvci9pbmZyYS9jb3Jlcy9jb2RlbWlycm9yLTYvbGFuZ3VhZ2VzL3RheC1jYWxjdWxhdGlvbi91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9nZXQtbGFuZ3VhZ2UtY29uZmlnc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2V0LXNhZmUtcmVzcG9uc2VcIjtcbiJdfQ==
@@ -3,10 +3,13 @@ import { Themes } from "../../../../models";
3
3
  import { SDSLight } from "./sds-light/sds-light-theme";
4
4
  export class EditorThemes {
5
5
  static getTheme(theme) {
6
- return EditorThemes._THEMES.get(theme) || [];
6
+ const EditorThemeFactory = EditorThemes._THEMES.get(theme);
7
+ if (EditorThemeFactory)
8
+ return EditorThemeFactory();
9
+ return [];
7
10
  }
8
11
  }
9
12
  EditorThemes._THEMES = new Map([
10
- [Themes.SDSLight, SDSLight()]
13
+ [Themes.SDSLight, SDSLight]
11
14
  ]);
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLXRoZW1lcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2NvZGUtZWRpdG9yL2luZnJhL2NvcmVzL2NvZGVtaXJyb3ItNi90aGVtZXMvZWRpdG9yLXRoZW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHNUMsWUFBWTtBQUNaLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV2RCxNQUFNLE9BQU8sWUFBWTtJQU1kLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBYTtRQUNoQyxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQTRCLENBQUM7SUFDM0UsQ0FBQzs7QUFOYyxvQkFBTyxHQUE2QixJQUFJLEdBQUcsQ0FBQztJQUN2RCxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUM7Q0FDaEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGhlbWVzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsc1wiO1xuaW1wb3J0IHsgRWRpdG9yVGhlbWUgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XG5cbi8qIFRoZW1lcyAqL1xuaW1wb3J0IHsgU0RTTGlnaHQgfSBmcm9tIFwiLi9zZHMtbGlnaHQvc2RzLWxpZ2h0LXRoZW1lXCI7XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JUaGVtZXMge1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX1RIRU1FUzogTWFwPFRoZW1lcywgRWRpdG9yVGhlbWU+ID0gbmV3IE1hcChbXG4gICAgICAgIFtUaGVtZXMuU0RTTGlnaHQsIFNEU0xpZ2h0KCldXG4gICAgXSk7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFRoZW1lKHRoZW1lOiBUaGVtZXMpOiBFZGl0b3JUaGVtZSB7XG4gICAgICAgIHJldHVybiBFZGl0b3JUaGVtZXMuX1RIRU1FUy5nZXQodGhlbWUpIHx8IFtdIGFzIHVua25vd24gYXMgRWRpdG9yVGhlbWU7XG4gICAgfVxufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLXRoZW1lcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2NvZGUtZWRpdG9yL2luZnJhL2NvcmVzL2NvZGVtaXJyb3ItNi90aGVtZXMvZWRpdG9yLXRoZW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHNUMsWUFBWTtBQUNaLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUl2RCxNQUFNLE9BQU8sWUFBWTtJQU1kLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBYTtRQUNoQyxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELElBQUksa0JBQWtCO1lBQUUsT0FBTyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BELE9BQU8sRUFBNEIsQ0FBQztJQUN4QyxDQUFDOztBQVJjLG9CQUFPLEdBQW9DLElBQUksR0FBRyxDQUFDO0lBQzlELENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7Q0FDOUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGhlbWVzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsc1wiO1xuaW1wb3J0IHsgRWRpdG9yVGhlbWUgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XG5cbi8qIFRoZW1lcyAqL1xuaW1wb3J0IHsgU0RTTGlnaHQgfSBmcm9tIFwiLi9zZHMtbGlnaHQvc2RzLWxpZ2h0LXRoZW1lXCI7XG5cbnR5cGUgRWRpdG9yVGhlbWVGYWN0b3J5ID0gKCkgPT4gRWRpdG9yVGhlbWU7IFxuXG5leHBvcnQgY2xhc3MgRWRpdG9yVGhlbWVzIHtcblxuICAgIHByaXZhdGUgc3RhdGljIF9USEVNRVM6IE1hcDxUaGVtZXMsIEVkaXRvclRoZW1lRmFjdG9yeT4gPSBuZXcgTWFwKFtcbiAgICAgICAgW1RoZW1lcy5TRFNMaWdodCwgU0RTTGlnaHRdXG4gICAgXSk7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFRoZW1lKHRoZW1lOiBUaGVtZXMpOiBFZGl0b3JUaGVtZSB7XG4gICAgICAgIGNvbnN0IEVkaXRvclRoZW1lRmFjdG9yeSA9IEVkaXRvclRoZW1lcy5fVEhFTUVTLmdldCh0aGVtZSk7XG4gICAgICAgIGlmIChFZGl0b3JUaGVtZUZhY3RvcnkpIHJldHVybiBFZGl0b3JUaGVtZUZhY3RvcnkoKTtcbiAgICAgICAgcmV0dXJuIFtdIGFzIHVua25vd24gYXMgRWRpdG9yVGhlbWU7XG4gICAgfVxufVxuIl19
@@ -2,15 +2,15 @@ import { HighlightStyle, tags } from "@codemirror/highlight";
2
2
  export const SDSLightHighlightStyle = HighlightStyle.define([
3
3
  {
4
4
  tag: tags.keyword,
5
- color: "blue",
5
+ color: "#008080",
6
6
  },
7
7
  {
8
8
  tag: tags.string,
9
- color: "red",
9
+ color: "#9C3A3A",
10
10
  },
11
11
  {
12
12
  tag: tags.number,
13
- color: "green",
13
+ color: "#400753",
14
14
  },
15
15
  ]);
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RzLWxpZ2h0LWhpZ2hsaWdodC1zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2NvZGUtZWRpdG9yL2luZnJhL2NvcmVzL2NvZGVtaXJyb3ItNi90aGVtZXMvc2RzLWxpZ2h0L3Nkcy1saWdodC1oaWdobGlnaHQtc3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUN4RTtRQUNJLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTztRQUNqQixLQUFLLEVBQUUsTUFBTTtLQUNoQjtJQUNEO1FBQ0ksR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ2hCLEtBQUssRUFBRSxLQUFLO0tBQ2Y7SUFDRDtRQUNJLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTTtRQUNoQixLQUFLLEVBQUUsT0FBTztLQUNqQjtDQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhpZ2hsaWdodFN0eWxlLCB0YWdzIH0gZnJvbSBcIkBjb2RlbWlycm9yL2hpZ2hsaWdodFwiO1xuXG5leHBvcnQgY29uc3QgU0RTTGlnaHRIaWdobGlnaHRTdHlsZTogSGlnaGxpZ2h0U3R5bGUgPSBIaWdobGlnaHRTdHlsZS5kZWZpbmUoW1xuICAgIHtcbiAgICAgICAgdGFnOiB0YWdzLmtleXdvcmQsXG4gICAgICAgIGNvbG9yOiBcImJsdWVcIixcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdGFnOiB0YWdzLnN0cmluZyxcbiAgICAgICAgY29sb3I6IFwicmVkXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHRhZzogdGFncy5udW1iZXIsXG4gICAgICAgIGNvbG9yOiBcImdyZWVuXCIsXG4gICAgfSxcbl0pO1xuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RzLWxpZ2h0LWhpZ2hsaWdodC1zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2NvZGUtZWRpdG9yL2luZnJhL2NvcmVzL2NvZGVtaXJyb3ItNi90aGVtZXMvc2RzLWxpZ2h0L3Nkcy1saWdodC1oaWdobGlnaHQtc3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUN4RTtRQUNJLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTztRQUNqQixLQUFLLEVBQUUsU0FBUztLQUNuQjtJQUNEO1FBQ0ksR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ2hCLEtBQUssRUFBRSxTQUFTO0tBQ25CO0lBQ0Q7UUFDSSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU07UUFDaEIsS0FBSyxFQUFFLFNBQVM7S0FDbkI7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIaWdobGlnaHRTdHlsZSwgdGFncyB9IGZyb20gXCJAY29kZW1pcnJvci9oaWdobGlnaHRcIjtcblxuZXhwb3J0IGNvbnN0IFNEU0xpZ2h0SGlnaGxpZ2h0U3R5bGU6IEhpZ2hsaWdodFN0eWxlID0gSGlnaGxpZ2h0U3R5bGUuZGVmaW5lKFtcbiAgICB7XG4gICAgICAgIHRhZzogdGFncy5rZXl3b3JkLFxuICAgICAgICBjb2xvcjogXCIjMDA4MDgwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHRhZzogdGFncy5zdHJpbmcsXG4gICAgICAgIGNvbG9yOiBcIiM5QzNBM0FcIixcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdGFnOiB0YWdzLm51bWJlcixcbiAgICAgICAgY29sb3I6IFwiIzQwMDc1M1wiLFxuICAgIH0sXG5dKTtcbiJdfQ==
@@ -1,4 +1,3 @@
1
1
  export * from "./custom-http-client/custom-http-client";
2
2
  export * from "./custom-translations/index";
3
- export * from "./regex-index-of";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jb2RlLWVkaXRvci9pbmZyYS91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2N1c3RvbS1odHRwLWNsaWVudC9jdXN0b20taHR0cC1jbGllbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2N1c3RvbS10cmFuc2xhdGlvbnMvaW5kZXhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlZ2V4LWluZGV4LW9mXCI7XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jb2RlLWVkaXRvci9pbmZyYS91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jdXN0b20taHR0cC1jbGllbnQvY3VzdG9tLWh0dHAtY2xpZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jdXN0b20tdHJhbnNsYXRpb25zL2luZGV4XCI7XG4iXX0=
@@ -19,13 +19,14 @@ let CodeEditorComponent = class CodeEditorComponent {
19
19
  this.coreFacade.changeCode(code);
20
20
  }
21
21
  ngOnInit() {
22
+ this.coreFacade.initCore();
22
23
  this.setupCoreListeners();
23
24
  }
24
25
  ngAfterViewInit() {
25
26
  this.setCoreWrapperElement();
26
27
  }
27
28
  ngOnDestroy() {
28
- this.coreFacade.destroyObservables();
29
+ this.coreFacade.destroyCore();
29
30
  this._ngUnsubscribe.next();
30
31
  this._ngUnsubscribe.complete();
31
32
  }
@@ -87,4 +88,4 @@ CodeEditorComponent = __decorate([
87
88
  })
88
89
  ], CodeEditorComponent);
89
90
  export { CodeEditorComponent };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3ItY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY29kZS1lZGl0b3IvcHJlc2VudGF0aW9uL2NvZGUtZWRpdG9yLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEdBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQ0gsSUFBSSxFQUNKLFNBQVMsRUFDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVF6RCxJQUFhLG1CQUFtQixHQUFoQyxNQUFhLG1CQUFtQjtJQXdCNUIsWUFBNkIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXRCM0MsbUJBQWMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVlyQyxlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJdEQsc0JBQWlCLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFOUQsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RCwwQkFBcUIsR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUxQixDQUFDO0lBbEI5QyxJQUFXLGFBQWEsQ0FBQyxPQUFzQjtRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFUSxJQUFXLElBQUksQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFjTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyxxQkFBcUI7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBK0IsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsSUFBSSxDQUFDLFVBQVU7YUFDViw2QkFBNkIsRUFBRTthQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxVQUFVO2FBQ1YseUJBQXlCLEVBQUU7YUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFUCxJQUFJLENBQUMsVUFBVTthQUNWLGlDQUFpQyxFQUFFO2FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNKLENBQUE7O1lBekM0QyxVQUFVOztBQXBCekI7SUFBekIsU0FBUyxDQUFDLGFBQWEsQ0FBQzsrREFBd0M7QUFFeEQ7SUFBUixLQUFLLEVBQUU7d0RBRVA7QUFFUTtJQUFSLEtBQUssRUFBRTsrQ0FFUDtBQUVTO0lBQVQsTUFBTSxFQUFFO3VEQUE4RDtBQUU5RDtJQUFSLEtBQUssRUFBRTt3REFBNkI7QUFFM0I7SUFBVCxNQUFNLEVBQUU7OERBQXNFO0FBRXJFO0lBQVQsTUFBTSxFQUFFO3lEQUFnRTtBQUUvRDtJQUFULE1BQU0sRUFBRTtrRUFBdUU7QUF0QnZFLG1CQUFtQjtJQUwvQixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsZUFBZTtRQUN6QixRQUFRLEVBQUUsK0NBQStDOztLQUU1RCxDQUFDO0dBQ1csbUJBQW1CLENBaUUvQjtTQWpFWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbFxufSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgQ29yZUZhY2FkZSB9IGZyb20gXCIuLi9jb3JlL2ZhY2FkZXMvY29yZS1mYWNhZGVcIjtcbmltcG9ydCB7IEVkaXRvck9wdGlvbnMgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtY29kZS1lZGl0b3JcIixcbiAgICB0ZW1wbGF0ZTogYDxkaXYgI2NvcmVXcmFwcGVyIGNsYXNzPVwiY29yZS13cmFwcGVyXCI+PC9kaXY+YCxcbiAgICBzdHlsZVVybHM6IFtcIi4vY29kZS1lZGl0b3ItY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgQ29kZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIHByaXZhdGUgX25nVW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgQFZpZXdDaGlsZChcImNvcmVXcmFwcGVyXCIpIHByaXZhdGUgY29yZVdyYXBwZXJFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KCkgcHVibGljIHNldCBlZGl0b3JPcHRpb25zKG9wdGlvbnM6IEVkaXRvck9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlLmNoYW5nZUVkaXRvck9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgcHVibGljIHNldCBjb2RlKGNvZGU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvcmVGYWNhZGUuY2hhbmdlQ29kZShjb2RlKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIGNvZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgcHVibGljIGlzQ29kZVZhbGlkOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBpc0NvZGVWYWxpZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNvZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNvbXBvbmVudEZpbmlzaExvYWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29yZUZhY2FkZTogQ29yZUZhY2FkZSkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXR1cENvcmVMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldENvcmVXcmFwcGVyRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlLmRlc3Ryb3lPYnNlcnZhYmxlcygpO1xuICAgICAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29yZVdyYXBwZXJFbGVtZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvcmVGYWNhZGUuc2V0Q29yZVdyYXBwZXJFbGVtZW50KHRoaXMuY29yZVdyYXBwZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBDb3JlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvcmVGYWNhZGVcbiAgICAgICAgICAgIC5nZXRPbkNvcmVGaW5pc2hMb2FkT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ29tcG9uZW50RmluaXNoTG9hZC5lbWl0KCkpO1xuXG4gICAgICAgIHRoaXMuY29yZUZhY2FkZVxuICAgICAgICAgICAgLmdldE9uQ29kZUNoYW5nZU9ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShjb2RlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvZGVDaGFuZ2UuZW1pdChjb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29kZUNoYW5nZS5lbWl0KGNvZGUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlXG4gICAgICAgICAgICAuZ2V0T25Db2RlVmFsaWRpdHlDaGFuZ2VPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodmFsaWRpdHkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDb2RlVmFsaWRDaGFuZ2UuZW1pdCh2YWxpZGl0eSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3ItY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY29kZS1lZGl0b3IvcHJlc2VudGF0aW9uL2NvZGUtZWRpdG9yLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEdBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQ0gsSUFBSSxFQUNKLFNBQVMsRUFDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVF6RCxJQUFhLG1CQUFtQixHQUFoQyxNQUFhLG1CQUFtQjtJQXdCNUIsWUFBNkIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXRCM0MsbUJBQWMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVlyQyxlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJdEQsc0JBQWlCLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFOUQsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RCwwQkFBcUIsR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUxQixDQUFDO0lBbEI5QyxJQUFXLGFBQWEsQ0FBQyxPQUFzQjtRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFUSxJQUFXLElBQUksQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFjTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sZUFBZTtRQUNsQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyxxQkFBcUI7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBK0IsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsSUFBSSxDQUFDLFVBQVU7YUFDViw2QkFBNkIsRUFBRTthQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxVQUFVO2FBQ1YseUJBQXlCLEVBQUU7YUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFUCxJQUFJLENBQUMsVUFBVTthQUNWLGlDQUFpQyxFQUFFO2FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNKLENBQUE7O1lBMUM0QyxVQUFVOztBQXBCekI7SUFBekIsU0FBUyxDQUFDLGFBQWEsQ0FBQzsrREFBd0M7QUFFeEQ7SUFBUixLQUFLLEVBQUU7d0RBRVA7QUFFUTtJQUFSLEtBQUssRUFBRTsrQ0FFUDtBQUVTO0lBQVQsTUFBTSxFQUFFO3VEQUE4RDtBQUU5RDtJQUFSLEtBQUssRUFBRTt3REFBNkI7QUFFM0I7SUFBVCxNQUFNLEVBQUU7OERBQXNFO0FBRXJFO0lBQVQsTUFBTSxFQUFFO3lEQUFnRTtBQUUvRDtJQUFULE1BQU0sRUFBRTtrRUFBdUU7QUF0QnZFLG1CQUFtQjtJQUwvQixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsZUFBZTtRQUN6QixRQUFRLEVBQUUsK0NBQStDOztLQUU1RCxDQUFDO0dBQ1csbUJBQW1CLENBa0UvQjtTQWxFWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbFxufSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgQ29yZUZhY2FkZSB9IGZyb20gXCIuLi9jb3JlL2ZhY2FkZXMvY29yZS1mYWNhZGVcIjtcbmltcG9ydCB7IEVkaXRvck9wdGlvbnMgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtY29kZS1lZGl0b3JcIixcbiAgICB0ZW1wbGF0ZTogYDxkaXYgI2NvcmVXcmFwcGVyIGNsYXNzPVwiY29yZS13cmFwcGVyXCI+PC9kaXY+YCxcbiAgICBzdHlsZVVybHM6IFtcIi4vY29kZS1lZGl0b3ItY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgQ29kZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIHByaXZhdGUgX25nVW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgQFZpZXdDaGlsZChcImNvcmVXcmFwcGVyXCIpIHByaXZhdGUgY29yZVdyYXBwZXJFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KCkgcHVibGljIHNldCBlZGl0b3JPcHRpb25zKG9wdGlvbnM6IEVkaXRvck9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlLmNoYW5nZUVkaXRvck9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgcHVibGljIHNldCBjb2RlKGNvZGU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvcmVGYWNhZGUuY2hhbmdlQ29kZShjb2RlKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIGNvZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgcHVibGljIGlzQ29kZVZhbGlkOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBpc0NvZGVWYWxpZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNvZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNvbXBvbmVudEZpbmlzaExvYWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29yZUZhY2FkZTogQ29yZUZhY2FkZSkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlLmluaXRDb3JlKCk7XG4gICAgICAgIHRoaXMuc2V0dXBDb3JlTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRDb3JlV3JhcHBlckVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29yZUZhY2FkZS5kZXN0cm95Q29yZSgpO1xuICAgICAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29yZVdyYXBwZXJFbGVtZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvcmVGYWNhZGUuc2V0Q29yZVdyYXBwZXJFbGVtZW50KHRoaXMuY29yZVdyYXBwZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBDb3JlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvcmVGYWNhZGVcbiAgICAgICAgICAgIC5nZXRPbkNvcmVGaW5pc2hMb2FkT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ29tcG9uZW50RmluaXNoTG9hZC5lbWl0KCkpO1xuXG4gICAgICAgIHRoaXMuY29yZUZhY2FkZVxuICAgICAgICAgICAgLmdldE9uQ29kZUNoYW5nZU9ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShjb2RlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvZGVDaGFuZ2UuZW1pdChjb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29kZUNoYW5nZS5lbWl0KGNvZGUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlXG4gICAgICAgICAgICAuZ2V0T25Db2RlVmFsaWRpdHlDaGFuZ2VPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodmFsaWRpdHkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDb2RlVmFsaWRDaGFuZ2UuZW1pdCh2YWxpZGl0eSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=