@handsontable/angular-wrapper 16.2.0 → 17.0.0-rc3

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 (31) hide show
  1. package/README.md +1 -11
  2. package/esm2022/lib/editor/custom-editor-placeholder.component.mjs +8 -5
  3. package/esm2022/lib/editor/editor-factory-adapter.mjs +140 -0
  4. package/esm2022/lib/editor/hot-cell-editor-advanced.component.mjs +92 -0
  5. package/esm2022/lib/editor/hot-cell-editor.component.mjs +2 -1
  6. package/esm2022/lib/editor/models/factory-editor-properties.mjs +2 -0
  7. package/esm2022/lib/editor/models/keyboard-shortcut-config.mjs +2 -0
  8. package/esm2022/lib/hot-table.component.mjs +15 -5
  9. package/esm2022/lib/hot-table.module.mjs +2 -2
  10. package/esm2022/lib/models/column-settings.mjs +1 -1
  11. package/esm2022/lib/renderer/hot-cell-renderer-advanced.component.mjs +55 -0
  12. package/esm2022/lib/renderer/hot-dynamic-renderer-component.service.mjs +62 -10
  13. package/esm2022/lib/services/hot-global-config.service.mjs +1 -2
  14. package/esm2022/lib/services/hot-settings-resolver.service.mjs +54 -17
  15. package/esm2022/public-api.mjs +4 -1
  16. package/fesm2022/handsontable-angular-wrapper.mjs +504 -128
  17. package/fesm2022/handsontable-angular-wrapper.mjs.map +1 -1
  18. package/lib/editor/custom-editor-placeholder.component.d.ts +4 -2
  19. package/lib/editor/editor-factory-adapter.d.ts +13 -0
  20. package/lib/editor/hot-cell-editor-advanced.component.d.ts +74 -0
  21. package/lib/editor/hot-cell-editor.component.d.ts +1 -0
  22. package/lib/editor/models/factory-editor-properties.d.ts +24 -0
  23. package/lib/editor/models/keyboard-shortcut-config.d.ts +13 -0
  24. package/lib/hot-table.component.d.ts +3 -2
  25. package/lib/models/column-settings.d.ts +7 -2
  26. package/lib/renderer/hot-cell-renderer-advanced.component.d.ts +33 -0
  27. package/lib/renderer/hot-dynamic-renderer-component.service.d.ts +19 -0
  28. package/lib/services/hot-global-config.service.d.ts +5 -0
  29. package/lib/services/hot-settings-resolver.service.d.ts +3 -0
  30. package/package.json +1 -1
  31. package/public-api.d.ts +3 -0
@@ -0,0 +1,55 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Abstract base component for creating advanced custom cell renderer components for Handsontable.
5
+ *
6
+ * This class provides a common interface and properties required by any custom cell renderer.
7
+ *
8
+ * @template TValue - The type of the component renderer.
9
+ * @template TProps - The type of additional renderer properties.
10
+ */
11
+ export class HotCellRendererAdvancedComponent {
12
+ static RENDERER_MARKER = Symbol('HotCellRendererAdvancedComponent');
13
+ value = '';
14
+ instance;
15
+ td;
16
+ row;
17
+ col;
18
+ prop;
19
+ /**
20
+ * The cell properties provided by Handsontable, extended with optional renderer-specific properties.
21
+ */
22
+ cellProperties;
23
+ /**
24
+ * Retrieves the renderer-specific properties from the cell properties.
25
+ *
26
+ * @returns The additional properties for the renderer.
27
+ */
28
+ getProps() {
29
+ return this.cellProperties?.rendererProps ?? {};
30
+ }
31
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HotCellRendererAdvancedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HotCellRendererAdvancedComponent, selector: "hot-cell-renderer-advanced", inputs: { value: "value", instance: "instance", td: "td", row: "row", col: "col", prop: "prop", cellProperties: "cellProperties" }, ngImport: i0, template: `<!-- This is an abstract component. Extend this component and provide your own template. -->`, isInline: true });
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HotCellRendererAdvancedComponent, decorators: [{
35
+ type: Component,
36
+ args: [{
37
+ selector: 'hot-cell-renderer-advanced',
38
+ template: `<!-- This is an abstract component. Extend this component and provide your own template. -->`,
39
+ }]
40
+ }], propDecorators: { value: [{
41
+ type: Input
42
+ }], instance: [{
43
+ type: Input
44
+ }], td: [{
45
+ type: Input
46
+ }], row: [{
47
+ type: Input
48
+ }], col: [{
49
+ type: Input
50
+ }], prop: [{
51
+ type: Input
52
+ }], cellProperties: [{
53
+ type: Input
54
+ }] } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90LWNlbGwtcmVuZGVyZXItYWR2YW5jZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaG90LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvaG90LWNlbGwtcmVuZGVyZXItYWR2YW5jZWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVqRDs7Ozs7OztHQU9HO0FBS0gsTUFBTSxPQUFnQixnQ0FBZ0M7SUFPcEQsTUFBTSxDQUFVLGVBQWUsR0FBRyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUVwRSxLQUFLLEdBQVcsRUFBWSxDQUFDO0lBRTdCLFFBQVEsQ0FBZTtJQUN2QixFQUFFLENBQXVCO0lBQ3pCLEdBQUcsQ0FBUztJQUNaLEdBQUcsQ0FBUztJQUNaLElBQUksQ0FBUztJQUV0Qjs7T0FFRztJQUNNLGNBQWMsQ0FBMkQ7SUFFbEY7Ozs7T0FJRztJQUNJLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxJQUFLLEVBQWEsQ0FBQztJQUM5RCxDQUFDO3dHQTdCbUIsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0Msc01BRjFDLDhGQUE4Rjs7NEZBRXBGLGdDQUFnQztrQkFKckQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxRQUFRLEVBQUUsOEZBQThGO2lCQUN6Rzs4QkFVVSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBIYW5kc29udGFibGUgZnJvbSAnaGFuZHNvbnRhYmxlL2Jhc2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFic3RyYWN0IGJhc2UgY29tcG9uZW50IGZvciBjcmVhdGluZyBhZHZhbmNlZCBjdXN0b20gY2VsbCByZW5kZXJlciBjb21wb25lbnRzIGZvciBIYW5kc29udGFibGUuXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIGNvbW1vbiBpbnRlcmZhY2UgYW5kIHByb3BlcnRpZXMgcmVxdWlyZWQgYnkgYW55IGN1c3RvbSBjZWxsIHJlbmRlcmVyLlxuICpcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgY29tcG9uZW50IHJlbmRlcmVyLlxuICogQHRlbXBsYXRlIFRQcm9wcyAtIFRoZSB0eXBlIG9mIGFkZGl0aW9uYWwgcmVuZGVyZXIgcHJvcGVydGllcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaG90LWNlbGwtcmVuZGVyZXItYWR2YW5jZWQnLFxuICB0ZW1wbGF0ZTogYDwhLS0gVGhpcyBpcyBhbiBhYnN0cmFjdCBjb21wb25lbnQuIEV4dGVuZCB0aGlzIGNvbXBvbmVudCBhbmQgcHJvdmlkZSB5b3VyIG93biB0ZW1wbGF0ZS4gLS0+YCxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSG90Q2VsbFJlbmRlcmVyQWR2YW5jZWRDb21wb25lbnQ8XG4gIFRWYWx1ZSBleHRlbmRzIHN0cmluZyB8XG4gIG51bWJlciB8XG4gIGJvb2xlYW4gfFxuICBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgQXJyYXk8YW55PiA9IHN0cmluZyxcbiAgVFByb3BzIGV4dGVuZHMge30gPSBhbnlcbj4ge1xuICBzdGF0aWMgcmVhZG9ubHkgUkVOREVSRVJfTUFSS0VSID0gU3ltYm9sKCdIb3RDZWxsUmVuZGVyZXJBZHZhbmNlZENvbXBvbmVudCcpO1xuXG4gIEBJbnB1dCgpIHZhbHVlOiBUVmFsdWUgPSAnJyBhcyBUVmFsdWU7XG5cbiAgQElucHV0KCkgaW5zdGFuY2U6IEhhbmRzb250YWJsZTtcbiAgQElucHV0KCkgdGQ6IEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuICBASW5wdXQoKSByb3c6IG51bWJlcjtcbiAgQElucHV0KCkgY29sOiBudW1iZXI7XG4gIEBJbnB1dCgpIHByb3A6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNlbGwgcHJvcGVydGllcyBwcm92aWRlZCBieSBIYW5kc29udGFibGUsIGV4dGVuZGVkIHdpdGggb3B0aW9uYWwgcmVuZGVyZXItc3BlY2lmaWMgcHJvcGVydGllcy5cbiAgICovXG4gIEBJbnB1dCgpIGNlbGxQcm9wZXJ0aWVzOiBIYW5kc29udGFibGUuQ2VsbFByb3BlcnRpZXMgJiB7IHJlbmRlcmVyUHJvcHM/OiBUUHJvcHMgfTtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSByZW5kZXJlci1zcGVjaWZpYyBwcm9wZXJ0aWVzIGZyb20gdGhlIGNlbGwgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIHJlbmRlcmVyLlxuICAgKi9cbiAgcHVibGljIGdldFByb3BzKCk6IFRQcm9wcyB7XG4gICAgcmV0dXJuIHRoaXMuY2VsbFByb3BlcnRpZXM/LnJlbmRlcmVyUHJvcHMgPz8gKHt9IGFzIFRQcm9wcyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,11 +1,15 @@
1
1
  import { createComponent, Injectable } from '@angular/core';
2
- import { baseRenderer } from 'handsontable/renderers';
2
+ import { baseRenderer, registerRenderer, rendererFactory } from 'handsontable/renderers';
3
3
  import Handsontable from 'handsontable/base';
4
4
  import { HotCellRendererComponent } from './hot-cell-renderer.component';
5
+ import { HotCellRendererAdvancedComponent } from './hot-cell-renderer-advanced.component';
5
6
  import * as i0 from "@angular/core";
6
7
  export const INVALID_RENDERER_WARNING = 'The provided renderer component was not recognized as a valid custom renderer. ' +
7
8
  'It must either extend HotCellRendererComponent or be a valid TemplateRef. ' +
8
9
  'Please ensure that your custom renderer is implemented correctly and imported from the proper source.';
10
+ export const INVALID_ADVANCED_RENDERER_WARNING = 'The provided renderer component was not recognized as a valid custom renderer. ' +
11
+ 'It must either extend HotCellRendererAdvancedComponent. ' +
12
+ 'Please ensure that your custom renderer is implemented correctly and imported from the proper source.';
9
13
  /**
10
14
  * Type guard that checks if the given object is a TemplateRef.
11
15
  *
@@ -24,6 +28,15 @@ export function isTemplateRef(obj) {
24
28
  export function isHotCellRendererComponent(obj) {
25
29
  return obj?.RENDERER_MARKER === HotCellRendererComponent.RENDERER_MARKER;
26
30
  }
31
+ /**
32
+ * Type guard to check if an object is an instance of HotCellRendererAdvancedComponent.
33
+ *
34
+ * @param obj - The object to check.
35
+ * @returns True if the object is a HotCellRendererAdvancedComponent, false otherwise.
36
+ */
37
+ export function isAdvancedHotCellRendererComponent(obj) {
38
+ return obj?.RENDERER_MARKER === HotCellRendererAdvancedComponent.RENDERER_MARKER;
39
+ }
27
40
  /**
28
41
  * Service for dynamically creating Angular components or templates as custom renderers for Handsontable.
29
42
  *
@@ -53,14 +66,18 @@ export class DynamicComponentService {
53
66
  createRendererFromComponent(component, componentProps = {}, register = false) {
54
67
  return (instance, td, row, col, prop, value, cellProperties) => {
55
68
  const properties = {
56
- value, instance, td, row, col, prop, cellProperties
69
+ value,
70
+ instance,
71
+ td,
72
+ row,
73
+ col,
74
+ prop,
75
+ cellProperties,
57
76
  };
58
77
  if (componentProps) {
59
78
  Object.assign(cellProperties, { rendererProps: componentProps });
60
79
  }
61
- const rendererParameters = [
62
- instance, td, row, col, prop, value, cellProperties
63
- ];
80
+ const rendererParameters = [instance, td, row, col, prop, value, cellProperties];
64
81
  baseRenderer.apply(this, rendererParameters);
65
82
  td.innerHTML = '';
66
83
  if (isTemplateRef(component)) {
@@ -79,6 +96,42 @@ export class DynamicComponentService {
79
96
  return td;
80
97
  };
81
98
  }
99
+ /**
100
+ * Creates a custom renderer function using rendererFactory from Handsontable.
101
+ * This is an alternative implementation that uses the factory pattern.
102
+ *
103
+ * @param component - The Angular component type to use as renderer.
104
+ * @param componentProps - An object containing additional properties to use by the renderer.
105
+ * @param register - If true, registers the renderer with Handsontable using the component's name.
106
+ * @returns A renderer function that can be used in Handsontable's configuration.
107
+ */
108
+ createRendererWithFactory(component, componentProps = {}, register = false) {
109
+ return rendererFactory(({ instance, td, row, column, prop, value, cellProperties }) => {
110
+ const properties = {
111
+ value,
112
+ instance,
113
+ td,
114
+ row,
115
+ col: column,
116
+ prop,
117
+ cellProperties,
118
+ };
119
+ if (componentProps) {
120
+ Object.assign(cellProperties, { rendererProps: componentProps });
121
+ }
122
+ td.innerHTML = '';
123
+ if (isAdvancedHotCellRendererComponent(component)) {
124
+ const componentRef = this.createComponent(component, properties);
125
+ this.attachComponentToElement(componentRef, td);
126
+ }
127
+ else {
128
+ console.warn(INVALID_ADVANCED_RENDERER_WARNING);
129
+ }
130
+ if (register && isAdvancedHotCellRendererComponent(component)) {
131
+ registerRenderer(component.constructor.name, component);
132
+ }
133
+ });
134
+ }
82
135
  /**
83
136
  * Attaches an embedded view created from a TemplateRef to a given DOM element.
84
137
  *
@@ -105,9 +158,9 @@ export class DynamicComponentService {
105
158
  */
106
159
  createComponent(component, rendererParameters) {
107
160
  const componentRef = createComponent(component, {
108
- environmentInjector: this.environmentInjector
161
+ environmentInjector: this.environmentInjector,
109
162
  });
110
- Object.keys(rendererParameters).forEach(key => {
163
+ Object.keys(rendererParameters).forEach((key) => {
111
164
  if (rendererParameters.hasOwnProperty(key)) {
112
165
  componentRef.setInput(key, rendererParameters[key]);
113
166
  }
@@ -126,8 +179,7 @@ export class DynamicComponentService {
126
179
  * @param container - The target DOM element to which the component's root node will be appended.
127
180
  */
128
181
  attachComponentToElement(componentRef, container) {
129
- const domElem = componentRef.hostView
130
- .rootNodes[0];
182
+ const domElem = componentRef.hostView.rootNodes[0];
131
183
  container.appendChild(domElem);
132
184
  }
133
185
  /**
@@ -148,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
148
200
  providedIn: 'root',
149
201
  }]
150
202
  }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }]; } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90LWR5bmFtaWMtcmVuZGVyZXItY29tcG9uZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ob3QtdGFibGUvc3JjL2xpYi9yZW5kZXJlci9ob3QtZHluYW1pYy1yZW5kZXJlci1jb21wb25lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ3lCLGVBQWUsRUFDUCxVQUFVLEVBRWpELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQWUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLFlBQVksTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7QUFJdkUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQ25DLGlGQUFpRjtJQUNqRiw0RUFBNEU7SUFDNUUsdUdBQXVHLENBQUM7QUFlMUc7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFJLEdBQVE7SUFDdkMsT0FBTyxHQUFHLElBQUksT0FBTyxHQUFHLENBQUMsa0JBQWtCLEtBQUssVUFBVSxDQUFDO0FBQzdELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxHQUFRO0lBQ2pELE9BQU8sR0FBRyxFQUFFLGVBQWUsS0FBSyx3QkFBd0IsQ0FBQyxlQUFlLENBQUM7QUFDM0UsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFFeEI7SUFDQTtJQUZWLFlBQ1UsTUFBc0IsRUFDdEIsbUJBQXdDO1FBRHhDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7SUFDL0MsQ0FBQztJQUVKOzs7Ozs7OztPQVFHO0lBQ0gsMkJBQTJCLENBQ3pCLFNBQTRELEVBQzVELGlCQUFzQyxFQUFFLEVBQ3hDLFdBQW9C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Q0FBQyxhQUFhLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUMsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssd0JBQXdCLENBQzlCLFlBQTZCLEVBQzdCLFNBQXNCO1FBRXRCLE1BQU0sT0FBTyxHQUFJLFlBQVksQ0FBQyxRQUErQjthQUMxRCxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBQy9CLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBSSxZQUE2QjtRQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBNUlVLHVCQUF1Qjs0R0FBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50UmVmLCBjcmVhdGVDb21wb25lbnQsXG4gIEVtYmVkZGVkVmlld1JlZiwgRW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0YWJsZSxcbiAgVGVtcGxhdGVSZWYsIFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2Jhc2VSZW5kZXJlciwgQmFzZVJlbmRlcmVyfSBmcm9tICdoYW5kc29udGFibGUvcmVuZGVyZXJzJztcbmltcG9ydCBIYW5kc29udGFibGUgZnJvbSAnaGFuZHNvbnRhYmxlL2Jhc2UnO1xuaW1wb3J0IHtIb3RDZWxsUmVuZGVyZXJDb21wb25lbnR9IGZyb20gJy4vaG90LWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcblxudHlwZSBCYXNlUmVuZGVyZXJQYXJhbWV0ZXJzID0gUGFyYW1ldGVyczxCYXNlUmVuZGVyZXI+O1xuXG5leHBvcnQgY29uc3QgSU5WQUxJRF9SRU5ERVJFUl9XQVJOSU5HID1cbiAgJ1RoZSBwcm92aWRlZCByZW5kZXJlciBjb21wb25lbnQgd2FzIG5vdCByZWNvZ25pemVkIGFzIGEgdmFsaWQgY3VzdG9tIHJlbmRlcmVyLiAnICtcbiAgJ0l0IG11c3QgZWl0aGVyIGV4dGVuZCBIb3RDZWxsUmVuZGVyZXJDb21wb25lbnQgb3IgYmUgYSB2YWxpZCBUZW1wbGF0ZVJlZi4gJyArXG4gICdQbGVhc2UgZW5zdXJlIHRoYXQgeW91ciBjdXN0b20gcmVuZGVyZXIgaXMgaW1wbGVtZW50ZWQgY29ycmVjdGx5IGFuZCBpbXBvcnRlZCBmcm9tIHRoZSBwcm9wZXIgc291cmNlLic7XG5cbi8qKlxuICogQW4gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gYSBIYW5kc29udGFibGUgcmVuZGVyZXIuXG4gKi9cbmludGVyZmFjZSBCYXNlUmVuZGVyZXJQYXJhbWV0ZXJzT2JqZWN0IHtcbiAgaW5zdGFuY2U6IEhhbmRzb250YWJsZS5Db3JlO1xuICB0ZDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7XG4gIHJvdzogbnVtYmVyO1xuICBjb2w6IG51bWJlcjtcbiAgcHJvcDogc3RyaW5nIHwgbnVtYmVyO1xuICB2YWx1ZTogYW55O1xuICBjZWxsUHJvcGVydGllczogSGFuZHNvbnRhYmxlLkNlbGxQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdGhhdCBjaGVja3MgaWYgdGhlIGdpdmVuIG9iamVjdCBpcyBhIFRlbXBsYXRlUmVmLlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgVGVtcGxhdGVSZWY7IG90aGVyd2lzZSwgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RlbXBsYXRlUmVmPFQ+KG9iajogYW55KTogb2JqIGlzIFRlbXBsYXRlUmVmPFQ+IHtcbiAgcmV0dXJuIG9iaiAmJiB0eXBlb2Ygb2JqLmNyZWF0ZUVtYmVkZGVkVmlldyA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBIb3RDZWxsUmVuZGVyZXJDb21wb25lbnQuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvYmplY3QgaXMgYSBIb3RDZWxsUmVuZGVyZXJDb21wb25lbnQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSG90Q2VsbFJlbmRlcmVyQ29tcG9uZW50KG9iajogYW55KTogb2JqIGlzIFR5cGU8SG90Q2VsbFJlbmRlcmVyQ29tcG9uZW50PiB7XG4gIHJldHVybiBvYmo/LlJFTkRFUkVSX01BUktFUiA9PT0gSG90Q2VsbFJlbmRlcmVyQ29tcG9uZW50LlJFTkRFUkVSX01BUktFUjtcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBkeW5hbWljYWxseSBjcmVhdGluZyBBbmd1bGFyIGNvbXBvbmVudHMgb3IgdGVtcGxhdGVzIGFzIGN1c3RvbSByZW5kZXJlcnMgZm9yIEhhbmRzb250YWJsZS5cbiAqXG4gKiBUaGlzIHNlcnZpY2UgYWxsb3dzIHlvdSB0byBjcmVhdGUgYSByZW5kZXJlciBmdW5jdGlvbiB0aGF0IHdyYXBzIGEgZ2l2ZW4gQW5ndWxhciBjb21wb25lbnQgb3IgVGVtcGxhdGVSZWZcbiAqIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgYXMgYSBIYW5kc29udGFibGUgcmVuZGVyZXIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGN1c3RvbVJlbmRlcmVyID0gZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlUmVuZGVyZXJGcm9tQ29tcG9uZW50KE15UmVuZGVyZXJDb21wb25lbnQsIHsgc29tZVByb3A6IHZhbHVlIH0pO1xuICogLy8gVXNlIGN1c3RvbVJlbmRlcmVyIGluIHlvdXIgSGFuZHNvbnRhYmxlIGNvbmZpZ3VyYXRpb25cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNDb21wb25lbnRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRJbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvclxuICApIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjdXN0b20gcmVuZGVyZXIgZnVuY3Rpb24gZm9yIEhhbmRzb250YWJsZSBmcm9tIGFuIEFuZ3VsYXIgY29tcG9uZW50IG9yIFRlbXBsYXRlUmVmLlxuICAgKiBUaGUgZ2VuZXJhdGVkIHJlbmRlcmVyIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCBieSBIYW5kc29udGFibGUgdG8gcmVuZGVyIGNlbGwgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBBbmd1bGFyIGNvbXBvbmVudCB0eXBlIG9yIFRlbXBsYXRlUmVmIHRvIHVzZSBhcyByZW5kZXJlci5cbiAgICogQHBhcmFtIGNvbXBvbmVudFByb3BzIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIHVzZSBieSB0aGUgcmVuZGVyZXIuXG4gICAqIEBwYXJhbSByZWdpc3RlciAtIElmIHRydWUsIHJlZ2lzdGVycyB0aGUgcmVuZGVyZXIgd2l0aCBIYW5kc29udGFibGUgdXNpbmcgdGhlIGNvbXBvbmVudCdzIG5hbWUuXG4gICAqIEByZXR1cm5zIEEgcmVuZGVyZXIgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiBIYW5kc29udGFibGUncyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgY3JlYXRlUmVuZGVyZXJGcm9tQ29tcG9uZW50KFxuICAgIGNvbXBvbmVudDogVHlwZTxIb3RDZWxsUmVuZGVyZXJDb21wb25lbnQ+IHwgVGVtcGxhdGVSZWY8YW55PixcbiAgICBjb21wb25lbnRQcm9wczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICAgIHJlZ2lzdGVyOiBib29sZWFuID0gZmFsc2VcbiAgKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGluc3RhbmNlOiBIYW5kc29udGFibGUuQ29yZSxcbiAgICAgIHRkOiBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAgICAgIHJvdzogbnVtYmVyLFxuICAgICAgY29sOiBudW1iZXIsXG4gICAgICBwcm9wOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgICB2YWx1ZTogYW55LFxuICAgICAgY2VsbFByb3BlcnRpZXM6IEhhbmRzb250YWJsZS5DZWxsUHJvcGVydGllc1xuICAgICkgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydGllczogQmFzZVJlbmRlcmVyUGFyYW1ldGVyc09iamVjdCA9IHtcbiAgICAgICAgdmFsdWUsIGluc3RhbmNlLCB0ZCwgcm93LCBjb2wsIHByb3AsIGNlbGxQcm9wZXJ0aWVzXG4gICAgICB9O1xuXG4gICAgICBpZiAoY29tcG9uZW50UHJvcHMpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihjZWxsUHJvcGVydGllcywge3JlbmRlcmVyUHJvcHM6IGNvbXBvbmVudFByb3BzfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlbmRlcmVyUGFyYW1ldGVyczogQmFzZVJlbmRlcmVyUGFyYW1ldGVycyA9IFtcbiAgICAgICAgaW5zdGFuY2UsIHRkLCByb3csIGNvbCwgcHJvcCwgdmFsdWUsIGNlbGxQcm9wZXJ0aWVzXG4gICAgICBdO1xuXG4gICAgICBiYXNlUmVuZGVyZXIuYXBwbHkodGhpcywgcmVuZGVyZXJQYXJhbWV0ZXJzKTtcblxuICAgICAgdGQuaW5uZXJIVE1MID0gJyc7XG5cbiAgICAgIGlmIChpc1RlbXBsYXRlUmVmKGNvbXBvbmVudCkpIHtcbiAgICAgICAgdGhpcy5hdHRhY2hUZW1wbGF0ZVRvRWxlbWVudChjb21wb25lbnQsIHRkLCBwcm9wZXJ0aWVzKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNIb3RDZWxsUmVuZGVyZXJDb21wb25lbnQoY29tcG9uZW50KSl7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwgcHJvcGVydGllcyk7XG4gICAgICAgIHRoaXMuYXR0YWNoQ29tcG9uZW50VG9FbGVtZW50KGNvbXBvbmVudFJlZiwgdGQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKElOVkFMSURfUkVOREVSRVJfV0FSTklORylcbiAgICAgIH1cblxuICAgICAgaWYgKHJlZ2lzdGVyICYmIGlzSG90Q2VsbFJlbmRlcmVyQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcbiAgICAgICAgSGFuZHNvbnRhYmxlLnJlbmRlcmVycy5yZWdpc3RlclJlbmRlcmVyKFxuICAgICAgICAgIGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5uYW1lLFxuICAgICAgICAgIGNvbXBvbmVudCBhcyBhbnkgYXMgQmFzZVJlbmRlcmVyXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZDtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIGFuIGVtYmVkZGVkIHZpZXcgY3JlYXRlZCBmcm9tIGEgVGVtcGxhdGVSZWYgdG8gYSBnaXZlbiBET00gZWxlbWVudC5cbiAgICpcbiAgICogQHBhcmFtIHRlbXBsYXRlIC0gVGhlIFRlbXBsYXRlUmVmIHRvIGNyZWF0ZSBhbiBlbWJlZGRlZCB2aWV3IGZyb20uXG4gICAqIEBwYXJhbSB0ZEVsIC0gVGhlIHRhcmdldCBET00gZWxlbWVudCAoYSB0YWJsZSBjZWxsKSB0byB3aGljaCB0aGUgdmlldyB3aWxsIGJlIGFwcGVuZGVkLlxuICAgKiBAcGFyYW0gcHJvcGVydGllcyAtIENvbnRleHQgb2JqZWN0IHByb3ZpZGluZyBwcm9wZXJ0aWVzIHRvIGJlIHVzZWQgd2l0aGluIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIHByaXZhdGUgYXR0YWNoVGVtcGxhdGVUb0VsZW1lbnQoXG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgdGRFbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsXG4gICAgcHJvcGVydGllczogQmFzZVJlbmRlcmVyUGFyYW1ldGVyc09iamVjdFxuICApIHtcbiAgICBjb25zdCBlbWJlZGRlZFZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+ID0gdGVtcGxhdGUuY3JlYXRlRW1iZWRkZWRWaWV3KHtcbiAgICAgICRpbXBsaWNpdDogcHJvcGVydGllcy52YWx1ZSxcbiAgICAgIC4uLnByb3BlcnRpZXMsXG4gICAgfSk7XG4gICAgZW1iZWRkZWRWaWV3LmRldGVjdENoYW5nZXMoKTtcblxuICAgIGVtYmVkZGVkVmlldy5yb290Tm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgdGRFbC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEeW5hbWljYWxseSBjcmVhdGVzIGFuIEFuZ3VsYXIgY29tcG9uZW50IG9mIHRoZSBnaXZlbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gY29tcG9uZW50IC0gVGhlIEFuZ3VsYXIgY29tcG9uZW50IHR5cGUgdG8gYmUgY3JlYXRlZC5cbiAgICogQHBhcmFtIHJlbmRlcmVyUGFyYW1ldGVycyAtIEFuIG9iamVjdCBjb250YWluaW5nIGlucHV0IHByb3BlcnRpZXMgdG8gYXNzaWduIHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIFRoZSBDb21wb25lbnRSZWYgb2YgdGhlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY29tcG9uZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVDb21wb25lbnQ8VCBleHRlbmRzIEhvdENlbGxSZW5kZXJlckNvbXBvbmVudD4oXG4gICAgY29tcG9uZW50OiBUeXBlPFQ+LFxuICAgIHJlbmRlcmVyUGFyYW1ldGVyczogQmFzZVJlbmRlcmVyUGFyYW1ldGVyc09iamVjdFxuICApOiBDb21wb25lbnRSZWY8VD4ge1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuZW52aXJvbm1lbnRJbmplY3RvclxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmtleXMocmVuZGVyZXJQYXJhbWV0ZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAocmVuZGVyZXJQYXJhbWV0ZXJzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KGtleSwgcmVuZGVyZXJQYXJhbWV0ZXJzW2tleV0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oYElucHV0IHByb3BlcnR5IFwiJHtrZXl9XCIgZG9lcyBub3QgZXhpc3Qgb24gY29tcG9uZW50IGluc3RhbmNlOiAke2NvbXBvbmVudD8ubmFtZX0uYCk7XG4gICAgICB9XG4gICAgfSlcbiAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyBhIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY29tcG9uZW50J3MgdmlldyB0byBhIHNwZWNpZmllZCBET00gY29udGFpbmVyIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBjb21wb25lbnRSZWYgLSBUaGUgcmVmZXJlbmNlIHRvIHRoZSBkeW5hbWljYWxseSBjcmVhdGVkIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIGNvbnRhaW5lciAtIFRoZSB0YXJnZXQgRE9NIGVsZW1lbnQgdG8gd2hpY2ggdGhlIGNvbXBvbmVudCdzIHJvb3Qgbm9kZSB3aWxsIGJlIGFwcGVuZGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBhdHRhY2hDb21wb25lbnRUb0VsZW1lbnQ8VD4oXG4gICAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4sXG4gICAgY29udGFpbmVyOiBIVE1MRWxlbWVudFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8VD4pXG4gICAgICAucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY29tcG9uZW50IGFuZCBkZXRhY2hlcyBpdHMgdmlldyBmcm9tIHRoZSBBbmd1bGFyIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gY29tcG9uZW50UmVmIC0gVGhlIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IHRvIGJlIGRlc3Ryb3llZC5cbiAgICovXG4gIGRlc3Ryb3lDb21wb25lbnQ8VD4oY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90LWR5bmFtaWMtcmVuZGVyZXItY29tcG9uZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ob3QtdGFibGUvc3JjL2xpYi9yZW5kZXJlci9ob3QtZHluYW1pYy1yZW5kZXJlci1jb21wb25lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsZUFBZSxFQUdmLFVBQVUsRUFHWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFnQixnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RyxPQUFPLFlBQVksTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFJMUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQ25DLGlGQUFpRjtJQUNqRiw0RUFBNEU7SUFDNUUsdUdBQXVHLENBQUM7QUFFMUcsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQzVDLGlGQUFpRjtJQUNqRiwwREFBMEQ7SUFDMUQsdUdBQXVHLENBQUM7QUFlMUc7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFJLEdBQVE7SUFDdkMsT0FBTyxHQUFHLElBQUksT0FBTyxHQUFHLENBQUMsa0JBQWtCLEtBQUssVUFBVSxDQUFDO0FBQzdELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxHQUFRO0lBQ2pELE9BQU8sR0FBRyxFQUFFLGVBQWUsS0FBSyx3QkFBd0IsQ0FBQyxlQUFlLENBQUM7QUFDM0UsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLEdBQVE7SUFDekQsT0FBTyxHQUFHLEVBQUUsZUFBZSxLQUFLLGdDQUFn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QUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDckQ7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRywyQ0FBMkMsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUM7YUFDbkc7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUMsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssd0JBQXdCLENBQUksWUFBNkIsRUFBRSxTQUFzQjtRQUN2RixNQUFNLE9BQU8sR0FBSSxZQUFZLENBQUMsUUFBK0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBQzFGLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBSSxZQUE2QjtRQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBdExVLHVCQUF1Qjs0R0FBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBjcmVhdGVDb21wb25lbnQsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgSW5qZWN0YWJsZSxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBiYXNlUmVuZGVyZXIsIEJhc2VSZW5kZXJlciwgcmVnaXN0ZXJSZW5kZXJlciwgcmVuZGVyZXJGYWN0b3J5IH0gZnJvbSAnaGFuZHNvbnRhYmxlL3JlbmRlcmVycyc7XG5pbXBvcnQgSGFuZHNvbnRhYmxlIGZyb20gJ2hhbmRzb250YWJsZS9iYXNlJztcbmltcG9ydCB7IEhvdENlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vaG90LWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEhvdENlbGxSZW5kZXJlckFkdmFuY2VkQ29tcG9uZW50IH0gZnJvbSAnLi9ob3QtY2VsbC1yZW5kZXJlci1hZHZhbmNlZC5jb21wb25lbnQnO1xuXG50eXBlIEJhc2VSZW5kZXJlclBhcmFtZXRlcnMgPSBQYXJhbWV0ZXJzPEJhc2VSZW5kZXJlcj47XG5cbmV4cG9ydCBjb25zdCBJTlZBTElEX1JFTkRFUkVSX1dBUk5JTkcgPVxuICAnVGhlIHByb3ZpZGVkIHJlbmRlcmVyIGNvbXBvbmVudCB3YXMgbm90IHJlY29nbml6ZWQgYXMgYSB2YWxpZCBjdXN0b20gcmVuZGVyZXIuICcgK1xuICAnSXQgbXVzdCBlaXRoZXIgZXh0ZW5kIEhvdENlbGxSZW5kZXJlckNvbXBvbmVudCBvciBiZSBhIHZhbGlkIFRlbXBsYXRlUmVmLiAnICtcbiAgJ1BsZWFzZSBlbnN1cmUgdGhhdCB5b3VyIGN1c3RvbSByZW5kZXJlciBpcyBpbXBsZW1lbnRlZCBjb3JyZWN0bHkgYW5kIGltcG9ydGVkIGZyb20gdGhlIHByb3BlciBzb3VyY2UuJztcblxuZXhwb3J0IGNvbnN0IElOVkFMSURfQURWQU5DRURfUkVOREVSRVJfV0FSTklORyA9XG4gICdUaGUgcHJvdmlkZWQgcmVuZGVyZXIgY29tcG9uZW50IHdhcyBub3QgcmVjb2duaXplZCBhcyBhIHZhbGlkIGN1c3RvbSByZW5kZXJlci4gJyArXG4gICdJdCBtdXN0IGVpdGhlciBleHRlbmQgSG90Q2VsbFJlbmRlcmVyQWR2YW5jZWRDb21wb25lbnQuICcgK1xuICAnUGxlYXNlIGVuc3VyZSB0aGF0IHlvdXIgY3VzdG9tIHJlbmRlcmVyIGlzIGltcGxlbWVudGVkIGNvcnJlY3RseSBhbmQgaW1wb3J0ZWQgZnJvbSB0aGUgcHJvcGVyIHNvdXJjZS4nO1xuXG4vKipcbiAqIEFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIGEgSGFuZHNvbnRhYmxlIHJlbmRlcmVyLlxuICovXG5pbnRlcmZhY2UgQmFzZVJlbmRlcmVyUGFyYW1ldGVyc09iamVjdCB7XG4gIGluc3RhbmNlOiBIYW5kc29udGFibGUuQ29yZTtcbiAgdGQ6IEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuICByb3c6IG51bWJlcjtcbiAgY29sOiBudW1iZXI7XG4gIHByb3A6IHN0cmluZyB8IG51bWJlcjtcbiAgdmFsdWU6IGFueTtcbiAgY2VsbFByb3BlcnRpZXM6IEhhbmRzb250YWJsZS5DZWxsUHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRoYXQgY2hlY2tzIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBUZW1wbGF0ZVJlZi5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9iamVjdCBpcyBhIFRlbXBsYXRlUmVmOyBvdGhlcndpc2UsIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUZW1wbGF0ZVJlZjxUPihvYmo6IGFueSk6IG9iaiBpcyBUZW1wbGF0ZVJlZjxUPiB7XG4gIHJldHVybiBvYmogJiYgdHlwZW9mIG9iai5jcmVhdGVFbWJlZGRlZFZpZXcgPT09ICdmdW5jdGlvbic7XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgSG90Q2VsbFJlbmRlcmVyQ29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgSG90Q2VsbFJlbmRlcmVyQ29tcG9uZW50LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0hvdENlbGxSZW5kZXJlckNvbXBvbmVudChvYmo6IGFueSk6IG9iaiBpcyBUeXBlPEhvdENlbGxSZW5kZXJlckNvbXBvbmVudD4ge1xuICByZXR1cm4gb2JqPy5SRU5ERVJFUl9NQVJLRVIgPT09IEhvdENlbGxSZW5kZXJlckNvbXBvbmVudC5SRU5ERVJFUl9NQVJLRVI7XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgSG90Q2VsbFJlbmRlcmVyQWR2YW5jZWRDb21wb25lbnQuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvYmplY3QgaXMgYSBIb3RDZWxsUmVuZGVyZXJBZHZhbmNlZENvbXBvbmVudCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBZHZhbmNlZEhvdENlbGxSZW5kZXJlckNvbXBvbmVudChvYmo6IGFueSk6IG9iaiBpcyBUeXBlPEhvdENlbGxSZW5kZXJlckFkdmFuY2VkQ29tcG9uZW50PiB7XG4gIHJldHVybiBvYmo/LlJFTkRFUkVSX01BUktFUiA9PT0gSG90Q2VsbFJlbmRlcmVyQWR2YW5jZWRDb21wb25lbnQuUkVOREVSRVJfTUFSS0VSO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgZm9yIGR5bmFtaWNhbGx5IGNyZWF0aW5nIEFuZ3VsYXIgY29tcG9uZW50cyBvciB0ZW1wbGF0ZXMgYXMgY3VzdG9tIHJlbmRlcmVycyBmb3IgSGFuZHNvbnRhYmxlLlxuICpcbiAqIFRoaXMgc2VydmljZSBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIHJlbmRlcmVyIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYSBnaXZlbiBBbmd1bGFyIGNvbXBvbmVudCBvciBUZW1wbGF0ZVJlZlxuICogc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBhcyBhIEhhbmRzb250YWJsZSByZW5kZXJlci5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgY3VzdG9tUmVuZGVyZXIgPSBkeW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVSZW5kZXJlckZyb21Db21wb25lbnQoTXlSZW5kZXJlckNvbXBvbmVudCwgeyBzb21lUHJvcDogdmFsdWUgfSk7XG4gKiAvLyBVc2UgY3VzdG9tUmVuZGVyZXIgaW4geW91ciBIYW5kc29udGFibGUgY29uZmlndXJhdGlvblxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0NvbXBvbmVudFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsIHByaXZhdGUgZW52aXJvbm1lbnRJbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3Rvcikge31cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGN1c3RvbSByZW5kZXJlciBmdW5jdGlvbiBmb3IgSGFuZHNvbnRhYmxlIGZyb20gYW4gQW5ndWxhciBjb21wb25lbnQgb3IgVGVtcGxhdGVSZWYuXG4gICAqIFRoZSBnZW5lcmF0ZWQgcmVuZGVyZXIgZnVuY3Rpb24gd2lsbCBiZSB1c2VkIGJ5IEhhbmRzb250YWJsZSB0byByZW5kZXIgY2VsbCBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY29tcG9uZW50IC0gVGhlIEFuZ3VsYXIgY29tcG9uZW50IHR5cGUgb3IgVGVtcGxhdGVSZWYgdG8gdXNlIGFzIHJlbmRlcmVyLlxuICAgKiBAcGFyYW0gY29tcG9uZW50UHJvcHMgLSBBbiBvYmplY3QgY29udGFpbmluZyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gdXNlIGJ5IHRoZSByZW5kZXJlci5cbiAgICogQHBhcmFtIHJlZ2lzdGVyIC0gSWYgdHJ1ZSwgcmVnaXN0ZXJzIHRoZSByZW5kZXJlciB3aXRoIEhhbmRzb250YWJsZSB1c2luZyB0aGUgY29tcG9uZW50J3MgbmFtZS5cbiAgICogQHJldHVybnMgQSByZW5kZXJlciBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIEhhbmRzb250YWJsZSdzIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBjcmVhdGVSZW5kZXJlckZyb21Db21wb25lbnQoXG4gICAgY29tcG9uZW50OiBUeXBlPEhvdENlbGxSZW5kZXJlckNvbXBvbmVudD4gfCBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIGNvbXBvbmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICAgcmVnaXN0ZXI6IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICByZXR1cm4gKFxuICAgICAgaW5zdGFuY2U6IEhhbmRzb250YWJsZS5Db3JlLFxuICAgICAgdGQ6IEhUTUxUYWJsZUNlbGxFbGVtZW50LFxuICAgICAgcm93OiBudW1iZXIsXG4gICAgICBjb2w6IG51bWJlcixcbiAgICAgIHByb3A6IHN0cmluZyB8IG51bWJlcixcbiAgICAgIHZhbHVlOiBhbnksXG4gICAgICBjZWxsUHJvcGVydGllczogSGFuZHNvbnRhYmxlLkNlbGxQcm9wZXJ0aWVzXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzOiBCYXNlUmVuZGVyZXJQYXJhbWV0ZXJzT2JqZWN0ID0ge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgIHRkLFxuICAgICAgICByb3csXG4gICAgICAgIGNvbCxcbiAgICAgICAgcHJvcCxcbiAgICAgICAgY2VsbFByb3BlcnRpZXMsXG4gICAgICB9O1xuXG4gICAgICBpZiAoY29tcG9uZW50UHJvcHMpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihjZWxsUHJvcGVydGllcywgeyByZW5kZXJlclByb3BzOiBjb21wb25lbnRQcm9wcyB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVuZGVyZXJQYXJhbWV0ZXJzOiBCYXNlUmVuZGVyZXJQYXJhbWV0ZXJzID0gW2luc3RhbmNlLCB0ZCwgcm93LCBjb2wsIHByb3AsIHZhbHVlLCBjZWxsUHJvcGVydGllc107XG5cbiAgICAgIGJhc2VSZW5kZXJlci5hcHBseSh0aGlzLCByZW5kZXJlclBhcmFtZXRlcnMpO1xuXG4gICAgICB0ZC5pbm5lckhUTUwgPSAnJztcblxuICAgICAgaWYgKGlzVGVtcGxhdGVSZWYoY29tcG9uZW50KSkge1xuICAgICAgICB0aGlzLmF0dGFjaFRlbXBsYXRlVG9FbGVtZW50KGNvbXBvbmVudCwgdGQsIHByb3BlcnRpZXMpO1xuICAgICAgfSBlbHNlIGlmIChpc0hvdENlbGxSZW5kZXJlckNvbXBvbmVudChjb21wb25lbnQpKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwgcHJvcGVydGllcyk7XG4gICAgICAgIHRoaXMuYXR0YWNoQ29tcG9uZW50VG9FbGVtZW50KGNvbXBvbmVudFJlZiwgdGQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKElOVkFMSURfUkVOREVSRVJfV0FSTklORyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWdpc3RlciAmJiBpc0hvdENlbGxSZW5kZXJlckNvbXBvbmVudChjb21wb25lbnQpKSB7XG4gICAgICAgIEhhbmRzb250YWJsZS5yZW5kZXJlcnMucmVnaXN0ZXJSZW5kZXJlcihjb21wb25lbnQuY29uc3RydWN0b3IubmFtZSwgY29tcG9uZW50IGFzIGFueSBhcyBCYXNlUmVuZGVyZXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGQ7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY3VzdG9tIHJlbmRlcmVyIGZ1bmN0aW9uIHVzaW5nIHJlbmRlcmVyRmFjdG9yeSBmcm9tIEhhbmRzb250YWJsZS5cbiAgICogVGhpcyBpcyBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgdGhlIGZhY3RvcnkgcGF0dGVybi5cbiAgICpcbiAgICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBBbmd1bGFyIGNvbXBvbmVudCB0eXBlIHRvIHVzZSBhcyByZW5kZXJlci5cbiAgICogQHBhcmFtIGNvbXBvbmVudFByb3BzIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIHVzZSBieSB0aGUgcmVuZGVyZXIuXG4gICAqIEBwYXJhbSByZWdpc3RlciAtIElmIHRydWUsIHJlZ2lzdGVycyB0aGUgcmVuZGVyZXIgd2l0aCBIYW5kc29udGFibGUgdXNpbmcgdGhlIGNvbXBvbmVudCdzIG5hbWUuXG4gICAqIEByZXR1cm5zIEEgcmVuZGVyZXIgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiBIYW5kc29udGFibGUncyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgY3JlYXRlUmVuZGVyZXJXaXRoRmFjdG9yeShcbiAgICBjb21wb25lbnQ6IFR5cGU8SG90Q2VsbFJlbmRlcmVyQWR2YW5jZWRDb21wb25lbnQ+LFxuICAgIGNvbXBvbmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICAgcmVnaXN0ZXI6IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICByZXR1cm4gcmVuZGVyZXJGYWN0b3J5KCh7XG4gICAgICBpbnN0YW5jZSxcbiAgICAgIHRkLFxuICAgICAgcm93LFxuICAgICAgY29sdW1uLFxuICAgICAgcHJvcCxcbiAgICAgIHZhbHVlLFxuICAgICAgY2VsbFByb3BlcnRpZXNcbiAgICB9KSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzOiBCYXNlUmVuZGVyZXJQYXJhbWV0ZXJzT2JqZWN0ID0ge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgIHRkLFxuICAgICAgICByb3csXG4gICAgICAgIGNvbDogY29sdW1uLFxuICAgICAgICBwcm9wLFxuICAgICAgICBjZWxsUHJvcGVydGllcyxcbiAgICAgIH07XG5cbiAgICAgIGlmIChjb21wb25lbnRQcm9wcykge1xuICAgICAgICBPYmplY3QuYXNzaWduKGNlbGxQcm9wZXJ0aWVzLCB7IHJlbmRlcmVyUHJvcHM6IGNvbXBvbmVudFByb3BzIH0pO1xuICAgICAgfVxuXG4gICAgICB0ZC5pbm5lckhUTUwgPSAnJztcblxuICAgICAgaWYgKGlzQWR2YW5jZWRIb3RDZWxsUmVuZGVyZXJDb21wb25lbnQoY29tcG9uZW50KSkge1xuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHByb3BlcnRpZXMpO1xuICAgICAgICB0aGlzLmF0dGFjaENvbXBvbmVudFRvRWxlbWVudChjb21wb25lbnRSZWYsIHRkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihJTlZBTElEX0FEVkFOQ0VEX1JFTkRFUkVSX1dBUk5JTkcpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVnaXN0ZXIgJiYgaXNBZHZhbmNlZEhvdENlbGxSZW5kZXJlckNvbXBvbmVudChjb21wb25lbnQpKSB7XG4gICAgICAgIHJlZ2lzdGVyUmVuZGVyZXIoY29tcG9uZW50LmNvbnN0cnVjdG9yLm5hbWUsIGNvbXBvbmVudCBhcyBhbnkgYXMgQmFzZVJlbmRlcmVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyBhbiBlbWJlZGRlZCB2aWV3IGNyZWF0ZWQgZnJvbSBhIFRlbXBsYXRlUmVmIHRvIGEgZ2l2ZW4gRE9NIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZSAtIFRoZSBUZW1wbGF0ZVJlZiB0byBjcmVhdGUgYW4gZW1iZWRkZWQgdmlldyBmcm9tLlxuICAgKiBAcGFyYW0gdGRFbCAtIFRoZSB0YXJnZXQgRE9NIGVsZW1lbnQgKGEgdGFibGUgY2VsbCkgdG8gd2hpY2ggdGhlIHZpZXcgd2lsbCBiZSBhcHBlbmRlZC5cbiAgICogQHBhcmFtIHByb3BlcnRpZXMgLSBDb250ZXh0IG9iamVjdCBwcm92aWRpbmcgcHJvcGVydGllcyB0byBiZSB1c2VkIHdpdGhpbiB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBwcml2YXRlIGF0dGFjaFRlbXBsYXRlVG9FbGVtZW50KHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LCB0ZEVsOiBIVE1MVGFibGVDZWxsRWxlbWVudCwgcHJvcGVydGllczogQmFzZVJlbmRlcmVyUGFyYW1ldGVyc09iamVjdCkge1xuICAgIGNvbnN0IGVtYmVkZGVkVmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT4gPSB0ZW1wbGF0ZS5jcmVhdGVFbWJlZGRlZFZpZXcoe1xuICAgICAgJGltcGxpY2l0OiBwcm9wZXJ0aWVzLnZhbHVlLFxuICAgICAgLi4ucHJvcGVydGllcyxcbiAgICB9KTtcbiAgICBlbWJlZGRlZFZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgZW1iZWRkZWRWaWV3LnJvb3ROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICB0ZEVsLmFwcGVuZENoaWxkKG5vZGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIER5bmFtaWNhbGx5IGNyZWF0ZXMgYW4gQW5ndWxhciBjb21wb25lbnQgb2YgdGhlIGdpdmVuIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgQW5ndWxhciBjb21wb25lbnQgdHlwZSB0byBiZSBjcmVhdGVkLlxuICAgKiBAcGFyYW0gcmVuZGVyZXJQYXJhbWV0ZXJzIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5wdXQgcHJvcGVydGllcyB0byBhc3NpZ24gdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICogQHJldHVybnMgVGhlIENvbXBvbmVudFJlZiBvZiB0aGUgZHluYW1pY2FsbHkgY3JlYXRlZCBjb21wb25lbnQuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUNvbXBvbmVudDxUIGV4dGVuZHMgSG90Q2VsbFJlbmRlcmVyQ29tcG9uZW50PihcbiAgICBjb21wb25lbnQ6IFR5cGU8VD4sXG4gICAgcmVuZGVyZXJQYXJhbWV0ZXJzOiBCYXNlUmVuZGVyZXJQYXJhbWV0ZXJzT2JqZWN0XG4gICk6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwge1xuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5lbnZpcm9ubWVudEluamVjdG9yLFxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmtleXMocmVuZGVyZXJQYXJhbWV0ZXJzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmIChyZW5kZXJlclBhcmFtZXRlcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoa2V5LCByZW5kZXJlclBhcmFtZXRlcnNba2V5XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oYElucHV0IHByb3BlcnR5IFwiJHtrZXl9XCIgZG9lcyBub3QgZXhpc3Qgb24gY29tcG9uZW50IGluc3RhbmNlOiAke2NvbXBvbmVudD8ubmFtZX0uYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblxuICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBkeW5hbWljYWxseSBjcmVhdGVkIGNvbXBvbmVudCdzIHZpZXcgdG8gYSBzcGVjaWZpZWQgRE9NIGNvbnRhaW5lciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY29tcG9uZW50UmVmIC0gVGhlIHJlZmVyZW5jZSB0byB0aGUgZHluYW1pY2FsbHkgY3JlYXRlZCBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBjb250YWluZXIgLSBUaGUgdGFyZ2V0IERPTSBlbGVtZW50IHRvIHdoaWNoIHRoZSBjb21wb25lbnQncyByb290IG5vZGUgd2lsbCBiZSBhcHBlbmRlZC5cbiAgICovXG4gIHByaXZhdGUgYXR0YWNoQ29tcG9uZW50VG9FbGVtZW50PFQ+KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+LCBjb250YWluZXI6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPFQ+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGEgZHluYW1pY2FsbHkgY3JlYXRlZCBjb21wb25lbnQgYW5kIGRldGFjaGVzIGl0cyB2aWV3IGZyb20gdGhlIEFuZ3VsYXIgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjb21wb25lbnRSZWYgLSBUaGUgcmVmZXJlbmNlIHRvIHRoZSBjb21wb25lbnQgdG8gYmUgZGVzdHJveWVkLlxuICAgKi9cbiAgZGVzdHJveUNvbXBvbmVudDxUPihjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPik6IHZvaWQge1xuICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -42,7 +42,6 @@ export class HotGlobalConfigService {
42
42
  */
43
43
  defaultConfig = {
44
44
  license: undefined,
45
- themeName: ''
46
45
  };
47
46
  /**
48
47
  * A BehaviorSubject that holds the current Handsontable configuration.
@@ -105,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
105
104
  type: Inject,
106
105
  args: [HOT_GLOBAL_CONFIG]
107
106
  }] }]; } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90LWdsb2JhbC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hvdC10YWJsZS9zcmMvbGliL3NlcnZpY2VzL2hvdC1nbG9iYWwtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7O0FBRWpEOztLQUVLO0FBQ0wsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsK0JBQStCLENBQUM7QUFFdEU7OztHQUdHO0FBQ0gsTUFBTSxDQUFOLElBQVksZUFPWDtBQVBELFdBQVksZUFBZTtJQUN6Qix5Q0FBc0IsQ0FBQTtJQUN0QixrREFBK0IsQ0FBQTtJQUMvQiwyREFBd0MsQ0FBQTtJQUN4QywrQ0FBNEIsQ0FBQTtJQUM1Qix3REFBcUMsQ0FBQTtJQUNyQyxpRUFBOEMsQ0FBQTtBQUNoRCxDQUFDLEVBUFcsZUFBZSxLQUFmLGVBQWUsUUFPMUI7QUFpQ0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsbUJBQW1CLEVBQUU7SUFDeEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3BCLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFFakM7Ozs7Ozs7OztPQVNHO0lBQ0ssYUFBYSxHQUFvQjtRQUN2QyxPQUFPLEVBQUUsU0FBUztRQUNsQixTQUFTLEVBQUUsRUFBRTtLQUNkLENBQUM7SUFFRjs7Ozs7Ozs7T0FRRztJQUNLLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRWpGOzs7Ozs7T0FNRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsWUFDNkIsWUFBNkI7UUFFeEQseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLE1BQXVCO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7d0dBeEVVLHNCQUFzQixrQkF3Q3ZCLGlCQUFpQjs0R0F4Q2hCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF5Q0ksTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEEgY29uc3RhbnQgcmVwcmVzZW50aW5nIHRoZSBub24tY29tbWVyY2lhbCBhbmQgZXZhbHVhdGlvbiBsaWNlbnNlLlxuICogKi9cbmV4cG9ydCBjb25zdCBOT05fQ09NTUVSQ0lBTF9MSUNFTlNFID0gJ25vbi1jb21tZXJjaWFsLWFuZC1ldmFsdWF0aW9uJztcblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyBhIHRoZW1lIG5hbWUuXG4gKiBQb3NzaWJsZSB2YWx1ZXMgaW5jbHVkZSBwcmVkZWZpbmVkIHRoZW1lcyBhbmQgYW55IGN1c3RvbSBzdHJpbmcuXG4gKi9cbmV4cG9ydCBlbnVtIFByZWRlZmluZWRUaGVtZSB7XG4gIE1haW4gPSAnaHQtdGhlbWUtbWFpbicsXG4gIE1haW5EYXJrID0gJ2h0LXRoZW1lLW1haW4tZGFyaycsXG4gIE1haW5EYXJrQXV0byA9ICdodC10aGVtZS1tYWluLWRhcmstYXV0bycsXG4gIEhvcml6b24gPSAnaHQtdGhlbWUtaG9yaXpvbicsXG4gIEhvcml6b25EYXJrID0gJ2h0LXRoZW1lLWhvcml6b24tZGFyaycsXG4gIEhvcml6b25EYXJrQXV0byA9ICdodC10aGVtZS1ob3Jpem9uLWRhcmstYXV0bydcbn1cblxuZXhwb3J0IHR5cGUgVGhlbWVOYW1lID0gUHJlZGVmaW5lZFRoZW1lIHwgc3RyaW5nO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgdGhlIEhhbmRzb250YWJsZSBnbG9iYWwgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3RHbG9iYWxDb25maWcge1xuICAvKipcbiAgICogVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFibGUuXG4gICAqL1xuICBsaWNlbnNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGhlbWUgdG8gYmUgdXNlZC5cbiAgICovXG4gIHRoZW1lTmFtZT86IFRoZW1lTmFtZTtcblxuICAvKipcbiAgICogVGhlIGxhbmd1YWdlIGNvZGUgdG8gYmUgdXNlZCBmb3IgbG9jYWxpemF0aW9uLlxuICAgKiBGb3IgZXhhbXBsZSwgJ2VuLVVTJywgJ3BsLVBMJywgZXRjLlxuICAgKiAqKk5vdGU6KiogVGhlIGxhbmd1YWdlIG11c3QgYmUgY2hvc2VuIGZyb20gdGhlIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgSGFuZHNvbnRhYmxlIGFuZCByZWdpc3RlcmVkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICovXG4gIGxhbmd1YWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF5b3V0IGRpcmVjdGlvbiBmb3IgdGhlIEhhbmRzb250YWJsZSBpbnN0YW5jZS5cbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIHdoZXRoZXIgdGhlIGxheW91dCBzaG91bGQgYmUgbGVmdC10by1yaWdodCAoJ2x0cicpLCByaWdodC10by1sZWZ0ICgncnRsJyksXG4gICAqIG9yIGluaGVyaXQgdGhlIGRpcmVjdGlvbiBmcm9tIHRoZSBwYXJlbnQgZWxlbWVudCAoJ2luaGVyaXQnKS5cbiAgICovXG4gIGxheW91dERpcmVjdGlvbj86ICdsdHInIHwgJ3J0bCcgfCAnaW5oZXJpdCc7XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBwcm92aWRpbmcgYSBnbG9iYWwgZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgSE9UX0dMT0JBTF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48SG90R2xvYmFsQ29uZmlnPignSE9UX0dMT0JBTF9DT05GSUcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gKHt9KVxufSk7XG5cbi8qKlxuICogU2VydmljZSBmb3IgY29uZmlndXJpbmcgSGFuZHNvbnRhYmxlIHNldHRpbmdzLlxuICogVGhpcyBzZXJ2aWNlIGFsbG93cyBzZXR0aW5nIGFuZCByZXRyaWV2aW5nIGdsb2JhbCBjb25maWd1cmF0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSG90R2xvYmFsQ29uZmlnU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBIYW5kc29udGFibGUuXG4gICAqXG4gICAqIFRoaXMgb2JqZWN0IGlzIHVzZWQgYXMgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBjb25maWd1cmF0aW9uIEJlaGF2aW9yU3ViamVjdC5cbiAgICogSXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBnbG9iYWwgY29uZmlndXJhdGlvbiBwcm92aWRlZCB0aHJvdWdoIHRoZVxuICAgKiB7QGxpbmsgSE9UX0dMT0JBTF9DT05GSUd9IGluamVjdGlvbiB0b2tlbi5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge0hvdEdsb2JhbENvbmZpZ31cbiAgICovXG4gIHByaXZhdGUgZGVmYXVsdENvbmZpZzogSG90R2xvYmFsQ29uZmlnID0ge1xuICAgIGxpY2Vuc2U6IHVuZGVmaW5lZCxcbiAgICB0aGVtZU5hbWU6ICcnXG4gIH07XG5cbiAgLyoqXG4gICAqIEEgQmVoYXZpb3JTdWJqZWN0IHRoYXQgaG9sZHMgdGhlIGN1cnJlbnQgSGFuZHNvbnRhYmxlIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIE5ldyBjb25maWd1cmF0aW9uIHZhbHVlcyBjYW4gYmUgZW1pdHRlZCBieSBjYWxsaW5nIG5leHQoKSBvbiB0aGlzIHN1YmplY3QuXG4gICAqIFRoaXMgYWxsb3dzIHN1YnNjcmliZXJzIHRvIHJlYWN0IHRvIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBkeW5hbWljYWxseS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge0JlaGF2aW9yU3ViamVjdDxIb3RHbG9iYWxDb25maWc+fVxuICAgKi9cbiAgcHJpdmF0ZSBjb25maWdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIb3RHbG9iYWxDb25maWc+KHRoaXMuZGVmYXVsdENvbmZpZyk7XG5cbiAgLyoqXG4gICAqIEFuIE9ic2VydmFibGUgc3RyZWFtIG9mIHRoZSBjdXJyZW50IEhhbmRzb250YWJsZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBDb21wb25lbnRzIGNhbiBzdWJzY3JpYmUgdG8gdGhpcyBvYnNlcnZhYmxlIHRvIHJlY2VpdmUgdXBkYXRlcyB3aGVuZXZlciB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbiBhcyBhbiBvYnNlcnZhYmxlIHN0cmVhbS5cbiAgICovXG4gIGdldCBjb25maWckKCk6IE9ic2VydmFibGU8SG90R2xvYmFsQ29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoSE9UX0dMT0JBTF9DT05GSUcpIGdsb2JhbENvbmZpZzogSG90R2xvYmFsQ29uZmlnXG4gICkge1xuICAgIC8vIE1lcmdlIGdsb2JhbCBjb25maWd1cmF0aW9uIChpZiBwcm92aWRlZCkgaW50byBkZWZhdWx0Q29uZmlnIGltbXV0YWJseS5cbiAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4uZ2xvYmFsQ29uZmlnIH07XG4gICAgdGhpcy5jb25maWdTdWJqZWN0Lm5leHQodGhpcy5kZWZhdWx0Q29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiBmb3IgSGFuZHNvbnRhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiAgICAgICAgICAgICAgICAgRWFjaCBIYW5kc29udGFibGUgaW5zdGFuY2UgY2FuIG92ZXJyaWRlIHRoaXMgY29uZmlndXJhdGlvbiBieSBwcm92aWRpbmcgaXRzIG93biBzZXR0aW5ncy5cbiAgICovXG4gIHNldENvbmZpZyhjb25maWc6IEhvdEdsb2JhbENvbmZpZykge1xuICAgIHRoaXMuY29uZmlnU3ViamVjdC5uZXh0KHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWcgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IEhhbmRzb250YWJsZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0aGUgY3VycmVudCBzZXR0aW5ncy5cbiAgICovXG4gIGdldENvbmZpZygpOiBIb3RHbG9iYWxDb25maWcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ1N1YmplY3QudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjb25maWd1cmF0aW9uIHRvIHRoZSBkZWZhdWx0IHNldHRpbmdzLlxuICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb25maWd1cmF0aW9uIEJlaGF2aW9yU3ViamVjdCB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICByZXNldENvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ1N1YmplY3QubmV4dCh7IC4uLnRoaXMuZGVmYXVsdENvbmZpZyB9KTtcbiAgfVxufVxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90LWdsb2JhbC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hvdC10YWJsZS9zcmMvbGliL3NlcnZpY2VzL2hvdC1nbG9iYWwtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7O0FBRWpEOztLQUVLO0FBQ0wsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsK0JBQStCLENBQUM7QUFFdEU7OztHQUdHO0FBQ0gsTUFBTSxDQUFOLElBQVksZUFPWDtBQVBELFdBQVksZUFBZTtJQUN6Qix5Q0FBc0IsQ0FBQTtJQUN0QixrREFBK0IsQ0FBQTtJQUMvQiwyREFBd0MsQ0FBQTtJQUN4QywrQ0FBNEIsQ0FBQTtJQUM1Qix3REFBcUMsQ0FBQTtJQUNyQyxpRUFBOEMsQ0FBQTtBQUNoRCxDQUFDLEVBUFcsZUFBZSxLQUFmLGVBQWUsUUFPMUI7QUF1Q0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsbUJBQW1CLEVBQUU7SUFDeEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3BCLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFFakM7Ozs7Ozs7OztPQVNHO0lBQ0ssYUFBYSxHQUFvQjtRQUN2QyxPQUFPLEVBQUUsU0FBUztLQUNuQixDQUFDO0lBRUY7Ozs7Ozs7O09BUUc7SUFDSyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQWtCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVqRjs7Ozs7O09BTUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELFlBQzZCLFlBQTZCO1FBRXhELHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxNQUF1QjtRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO3dHQXZFVSxzQkFBc0Isa0JBdUN2QixpQkFBaUI7NEdBdkNoQixzQkFBc0IsY0FGckIsTUFBTTs7NEZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBd0NJLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBBIGNvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgbm9uLWNvbW1lcmNpYWwgYW5kIGV2YWx1YXRpb24gbGljZW5zZS5cbiAqICovXG5leHBvcnQgY29uc3QgTk9OX0NPTU1FUkNJQUxfTElDRU5TRSA9ICdub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvbic7XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgYSB0aGVtZSBuYW1lLlxuICogUG9zc2libGUgdmFsdWVzIGluY2x1ZGUgcHJlZGVmaW5lZCB0aGVtZXMgYW5kIGFueSBjdXN0b20gc3RyaW5nLlxuICovXG5leHBvcnQgZW51bSBQcmVkZWZpbmVkVGhlbWUge1xuICBNYWluID0gJ2h0LXRoZW1lLW1haW4nLFxuICBNYWluRGFyayA9ICdodC10aGVtZS1tYWluLWRhcmsnLFxuICBNYWluRGFya0F1dG8gPSAnaHQtdGhlbWUtbWFpbi1kYXJrLWF1dG8nLFxuICBIb3Jpem9uID0gJ2h0LXRoZW1lLWhvcml6b24nLFxuICBIb3Jpem9uRGFyayA9ICdodC10aGVtZS1ob3Jpem9uLWRhcmsnLFxuICBIb3Jpem9uRGFya0F1dG8gPSAnaHQtdGhlbWUtaG9yaXpvbi1kYXJrLWF1dG8nXG59XG5cbmV4cG9ydCB0eXBlIFRoZW1lTmFtZSA9IFByZWRlZmluZWRUaGVtZSB8IHN0cmluZztcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIHRoZSBIYW5kc29udGFibGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSG90R2xvYmFsQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlLlxuICAgKi9cbiAgbGljZW5zZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRoZW1lIHRvIGJlIHVzZWQuXG4gICAqL1xuICB0aGVtZU5hbWU/OiBUaGVtZU5hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSB0aGVtZSB0byBiZSB1c2VkIChUaGVtZUJ1aWxkZXIgaW5zdGFuY2Ugb3IgdGhlbWUgbmFtZSBzdHJpbmcpLlxuICAgKiBXaGVuIHNldCwgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGB0aGVtZU5hbWVgIGZvciBIYW5kc29udGFibGUgMTcrLlxuICAgKi9cbiAgdGhlbWU/OiBvYmplY3QgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSBjb2RlIHRvIGJlIHVzZWQgZm9yIGxvY2FsaXphdGlvbi5cbiAgICogRm9yIGV4YW1wbGUsICdlbi1VUycsICdwbC1QTCcsIGV0Yy5cbiAgICogKipOb3RlOioqIFRoZSBsYW5ndWFnZSBtdXN0IGJlIGNob3NlbiBmcm9tIHRoZSBsYW5ndWFnZXMgc3VwcG9ydGVkIGJ5IEhhbmRzb250YWJsZSBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gICAqL1xuICBsYW5ndWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxheW91dCBkaXJlY3Rpb24gZm9yIHRoZSBIYW5kc29udGFibGUgaW5zdGFuY2UuXG4gICAqIFRoaXMgcHJvcGVydHkgZGVmaW5lcyB3aGV0aGVyIHRoZSBsYXlvdXQgc2hvdWxkIGJlIGxlZnQtdG8tcmlnaHQgKCdsdHInKSwgcmlnaHQtdG8tbGVmdCAoJ3J0bCcpLFxuICAgKiBvciBpbmhlcml0IHRoZSBkaXJlY3Rpb24gZnJvbSB0aGUgcGFyZW50IGVsZW1lbnQgKCdpbmhlcml0JykuXG4gICAqL1xuICBsYXlvdXREaXJlY3Rpb24/OiAnbHRyJyB8ICdydGwnIHwgJ2luaGVyaXQnO1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgcHJvdmlkaW5nIGEgZ2xvYmFsIGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEhPVF9HTE9CQUxfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEhvdEdsb2JhbENvbmZpZz4oJ0hPVF9HTE9CQUxfQ09ORklHJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+ICh7fSlcbn0pO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIGNvbmZpZ3VyaW5nIEhhbmRzb250YWJsZSBzZXR0aW5ncy5cbiAqIFRoaXMgc2VydmljZSBhbGxvd3Mgc2V0dGluZyBhbmQgcmV0cmlldmluZyBnbG9iYWwgY29uZmlndXJhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEhvdEdsb2JhbENvbmZpZ1NlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgSGFuZHNvbnRhYmxlLlxuICAgKlxuICAgKiBUaGlzIG9iamVjdCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgY29uZmlndXJhdGlvbiBCZWhhdmlvclN1YmplY3QuXG4gICAqIEl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQgdGhyb3VnaCB0aGVcbiAgICoge0BsaW5rIEhPVF9HTE9CQUxfQ09ORklHfSBpbmplY3Rpb24gdG9rZW4uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0eXBlIHtIb3RHbG9iYWxDb25maWd9XG4gICAqL1xuICBwcml2YXRlIGRlZmF1bHRDb25maWc6IEhvdEdsb2JhbENvbmZpZyA9IHtcbiAgICBsaWNlbnNlOiB1bmRlZmluZWQsXG4gIH07XG5cbiAgLyoqXG4gICAqIEEgQmVoYXZpb3JTdWJqZWN0IHRoYXQgaG9sZHMgdGhlIGN1cnJlbnQgSGFuZHNvbnRhYmxlIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIE5ldyBjb25maWd1cmF0aW9uIHZhbHVlcyBjYW4gYmUgZW1pdHRlZCBieSBjYWxsaW5nIG5leHQoKSBvbiB0aGlzIHN1YmplY3QuXG4gICAqIFRoaXMgYWxsb3dzIHN1YnNjcmliZXJzIHRvIHJlYWN0IHRvIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBkeW5hbWljYWxseS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge0JlaGF2aW9yU3ViamVjdDxIb3RHbG9iYWxDb25maWc+fVxuICAgKi9cbiAgcHJpdmF0ZSBjb25maWdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIb3RHbG9iYWxDb25maWc+KHRoaXMuZGVmYXVsdENvbmZpZyk7XG5cbiAgLyoqXG4gICAqIEFuIE9ic2VydmFibGUgc3RyZWFtIG9mIHRoZSBjdXJyZW50IEhhbmRzb250YWJsZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBDb21wb25lbnRzIGNhbiBzdWJzY3JpYmUgdG8gdGhpcyBvYnNlcnZhYmxlIHRvIHJlY2VpdmUgdXBkYXRlcyB3aGVuZXZlciB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbiBhcyBhbiBvYnNlcnZhYmxlIHN0cmVhbS5cbiAgICovXG4gIGdldCBjb25maWckKCk6IE9ic2VydmFibGU8SG90R2xvYmFsQ29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoSE9UX0dMT0JBTF9DT05GSUcpIGdsb2JhbENvbmZpZzogSG90R2xvYmFsQ29uZmlnXG4gICkge1xuICAgIC8vIE1lcmdlIGdsb2JhbCBjb25maWd1cmF0aW9uIChpZiBwcm92aWRlZCkgaW50byBkZWZhdWx0Q29uZmlnIGltbXV0YWJseS5cbiAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4uZ2xvYmFsQ29uZmlnIH07XG4gICAgdGhpcy5jb25maWdTdWJqZWN0Lm5leHQodGhpcy5kZWZhdWx0Q29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiBmb3IgSGFuZHNvbnRhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiAgICAgICAgICAgICAgICAgRWFjaCBIYW5kc29udGFibGUgaW5zdGFuY2UgY2FuIG92ZXJyaWRlIHRoaXMgY29uZmlndXJhdGlvbiBieSBwcm92aWRpbmcgaXRzIG93biBzZXR0aW5ncy5cbiAgICovXG4gIHNldENvbmZpZyhjb25maWc6IEhvdEdsb2JhbENvbmZpZykge1xuICAgIHRoaXMuY29uZmlnU3ViamVjdC5uZXh0KHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWcgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IEhhbmRzb250YWJsZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0aGUgY3VycmVudCBzZXR0aW5ncy5cbiAgICovXG4gIGdldENvbmZpZygpOiBIb3RHbG9iYWxDb25maWcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ1N1YmplY3QudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjb25maWd1cmF0aW9uIHRvIHRoZSBkZWZhdWx0IHNldHRpbmdzLlxuICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb25maWd1cmF0aW9uIEJlaGF2aW9yU3ViamVjdCB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICByZXNldENvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ1N1YmplY3QubmV4dCh7IC4uLnRoaXMuZGVmYXVsdENvbmZpZyB9KTtcbiAgfVxufVxuIl19
@@ -1,6 +1,11 @@
1
1
  import { createComponent, Injectable } from '@angular/core';
2
2
  import { BaseEditorAdapter } from '../editor/base-editor-adapter';
3
+ import { HotCellRendererComponent } from '../renderer/hot-cell-renderer.component';
4
+ import { HotCellEditorComponent } from '../editor/hot-cell-editor.component';
3
5
  import Handsontable from 'handsontable/base';
6
+ import { FactoryEditorAdapter } from '../editor/editor-factory-adapter';
7
+ import { HotCellRendererAdvancedComponent } from '../renderer/hot-cell-renderer-advanced.component';
8
+ import { HotCellEditorAdvancedComponent } from '../editor/hot-cell-editor-advanced.component';
4
9
  import * as i0 from "@angular/core";
5
10
  import * as i1 from "../renderer/hot-dynamic-renderer-component.service";
6
11
  const AVAILABLE_OPTIONS = Object.keys(Handsontable.DefaultSettings);
@@ -37,7 +42,7 @@ export class HotSettingsResolver {
37
42
  */
38
43
  wrapHooksInNgZone(settings, ngZone) {
39
44
  const options = AVAILABLE_HOOKS.concat(AVAILABLE_OPTIONS);
40
- options.forEach(key => {
45
+ options.forEach((key) => {
41
46
  const isHook = AVAILABLE_HOOKS.indexOf(key) > -1;
42
47
  let option;
43
48
  if (isHook) {
@@ -46,7 +51,7 @@ export class HotSettingsResolver {
46
51
  if (option === void 0) {
47
52
  return;
48
53
  }
49
- else if (!!ngZone && (typeof option === 'function' && isHook)) {
54
+ else if (!!ngZone && typeof option === 'function' && isHook) {
50
55
  settings[key] = function (...args) {
51
56
  return ngZone.run(() => option.apply(this, args));
52
57
  };
@@ -65,13 +70,16 @@ export class HotSettingsResolver {
65
70
  return;
66
71
  }
67
72
  mergedSettings?.columns
68
- ?.filter((settings) => this.isRendererComponentRefType(settings.renderer) || this.isTemplateRef(settings.renderer))
73
+ ?.filter((settings) => this.isCustomRenderer(settings.renderer))
69
74
  ?.forEach((cellSettings) => {
70
- const renderer = this.isTemplateRef(cellSettings.renderer)
71
- ? cellSettings.renderer
72
- : cellSettings.renderer;
75
+ const renderer = cellSettings.renderer;
73
76
  const props = cellSettings.rendererProps ?? {};
74
- cellSettings.renderer = this.dynamicComponentService.createRendererFromComponent(renderer, props);
77
+ if (this.isAdvancedRendererComponentRefType(renderer)) {
78
+ cellSettings.renderer = this.dynamicComponentService.createRendererWithFactory(renderer, props);
79
+ }
80
+ else if (this.isRendererComponentRefType(renderer) || this.isTemplateRef(renderer)) {
81
+ cellSettings.renderer = this.dynamicComponentService.createRendererFromComponent(renderer, props);
82
+ }
75
83
  });
76
84
  }
77
85
  /**
@@ -83,14 +91,22 @@ export class HotSettingsResolver {
83
91
  return;
84
92
  }
85
93
  mergedSettings?.columns
86
- ?.filter((settings) => this.isEditorComponentRefType(settings.editor))
94
+ ?.filter((settings) => this.isEditorComponentRefType(settings.editor) || this.isAdvancedEditorComponentRefType(settings.editor))
87
95
  ?.forEach((cellSettings) => {
88
- const customEditor = cellSettings.editor;
89
- cellSettings['_editorComponentReference'] = createComponent(customEditor, {
90
- environmentInjector: this.environmentInjector,
91
- });
92
- cellSettings['_environmentInjector'] = this.environmentInjector;
93
- cellSettings.editor = BaseEditorAdapter;
96
+ if (this.isAdvancedEditorComponentRefType(cellSettings.editor)) {
97
+ const component = createComponent(cellSettings.editor, {
98
+ environmentInjector: this.environmentInjector,
99
+ });
100
+ cellSettings.editor = FactoryEditorAdapter(component);
101
+ }
102
+ else {
103
+ const component = createComponent(cellSettings.editor, {
104
+ environmentInjector: this.environmentInjector,
105
+ });
106
+ cellSettings['_editorComponentReference'] = component;
107
+ cellSettings['_environmentInjector'] = this.environmentInjector;
108
+ cellSettings.editor = BaseEditorAdapter;
109
+ }
94
110
  });
95
111
  }
96
112
  /**
@@ -115,19 +131,40 @@ export class HotSettingsResolver {
115
131
  }
116
132
  isEditorComponentRefType(editor) {
117
133
  // ecmp - we need it to check if the editor is a component
118
- return typeof editor === 'function' && !!editor?.ɵcmp;
134
+ return typeof editor === 'function' &&
135
+ !!editor?.ɵcmp &&
136
+ editor?.EDITOR_MARKER === HotCellEditorComponent.EDITOR_MARKER;
137
+ }
138
+ isAdvancedEditorComponentRefType(editor) {
139
+ // ecmp - we need it to check if the editor is a component
140
+ return typeof editor === 'function' &&
141
+ !!editor?.ɵcmp &&
142
+ editor?.EDITOR_MARKER === HotCellEditorAdvancedComponent.EDITOR_MARKER;
119
143
  }
120
144
  isRendererComponentRefType(renderer) {
121
145
  // ecmp - we need it to check if the renderer is a component
122
- return typeof renderer === 'function' && !!renderer?.ɵcmp;
146
+ return typeof renderer === 'function' &&
147
+ !!renderer?.ɵcmp &&
148
+ renderer?.RENDERER_MARKER === HotCellRendererComponent.RENDERER_MARKER;
149
+ }
150
+ isAdvancedRendererComponentRefType(renderer) {
151
+ // ecmp - we need it to check if the renderer is a component
152
+ return typeof renderer === 'function' &&
153
+ !!renderer?.ɵcmp &&
154
+ renderer?.RENDERER_MARKER === HotCellRendererAdvancedComponent.RENDERER_MARKER;
123
155
  }
124
156
  isTemplateRef(renderer) {
125
157
  return renderer && typeof renderer.createEmbeddedView === 'function';
126
158
  }
159
+ isCustomRenderer(renderer) {
160
+ return this.isRendererComponentRefType(renderer) ||
161
+ this.isTemplateRef(renderer) ||
162
+ this.isAdvancedRendererComponentRefType(renderer);
163
+ }
127
164
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HotSettingsResolver, deps: [{ token: i1.DynamicComponentService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
128
165
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HotSettingsResolver });
129
166
  }
130
167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HotSettingsResolver, decorators: [{
131
168
  type: Injectable
132
169
  }], ctorParameters: function () { return [{ type: i1.DynamicComponentService }, { type: i0.EnvironmentInjector }]; } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90LXNldHRpbmdzLXJlc29sdmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ob3QtdGFibGUvc3JjL2xpYi9zZXJ2aWNlcy9ob3Qtc2V0dGluZ3MtcmVzb2x2ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUF1QixVQUFVLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBRTFHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBS2xFLE9BQU8sWUFBWSxNQUFNLG1CQUFtQixDQUFDOzs7QUFFN0MsTUFBTSxpQkFBaUIsR0FBYSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUM5RSxNQUFNLGVBQWUsR0FBYSxZQUFZLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBRXJFOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFtQjtJQUNWO0lBQW1FO0lBQXZGLFlBQW9CLHVCQUFnRCxFQUFtQixtQkFBd0M7UUFBM0csNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUFtQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBQUcsQ0FBQztJQUVuSTs7Ozs7T0FLRztJQUNILG1CQUFtQixDQUFDLFFBQXNCLEVBQUUsTUFBYztRQUN4RCxNQUFNLGNBQWMsR0FBaUIsUUFBUSxDQUFDO1FBRTlDLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsc0NBQXNDLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0MsT0FBUSxjQUF1QyxJQUFJLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxpQkFBaUIsQ0FBQyxRQUFzQixFQUFFLE1BQWM7UUFDOUQsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTFELE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLE1BQU0sQ0FBQztZQUVYLElBQUksTUFBTSxFQUFFO2dCQUNWLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEI7WUFFRCxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRTtnQkFDckIsT0FBTzthQUVSO2lCQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxNQUFNLENBQUMsRUFBRTtnQkFDL0QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVMsR0FBRyxJQUFTO29CQUNuQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDcEQsQ0FBQyxDQUFDO2FBRUg7aUJBQU07Z0JBQ0wsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLDBDQUEwQyxDQUFDLGNBQTRCO1FBQzdFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUMzQyxPQUFPO1NBQ1I7UUFFQSxjQUFjLEVBQUUsT0FBNEI7WUFDM0MsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkgsRUFBRSxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQ3hELENBQUMsQ0FBRSxZQUFZLENBQUMsUUFBNkI7Z0JBQzdDLENBQUMsQ0FBRSxZQUFZLENBQUMsUUFBcUQsQ0FBQztZQUN4RSxNQUFNLEtBQUssR0FBUSxZQUFZLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztZQUNwRCxZQUFZLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEcsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssc0NBQXNDLENBQUMsY0FBNEI7UUFDekUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQzNDLE9BQU87U0FDUjtRQUVBLGNBQWMsRUFBRSxPQUE0QjtZQUMzQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0RSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3pCLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUEyQyxDQUFDO1lBQzlFLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxZQUFZLEVBQUU7Z0JBQ3hFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7YUFDOUMsQ0FBQyxDQUFDO1lBQ0gsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ2hFLFlBQVksQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssNENBQTRDLENBQUMsY0FBNEI7UUFDL0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQzNDLE9BQU87U0FDUjtRQUVBLGNBQWMsRUFBRSxPQUE0QjtZQUMzQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3pCLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLFNBQW1DLENBQUM7WUFFM0UsWUFBWSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQVUsRUFBRSxRQUFtQyxFQUFFLEVBQUU7Z0JBQzNFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFNBQWtCO1FBQzVDLE9BQU8sT0FBTyxTQUFTLEtBQUssVUFBVSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxNQUFXO1FBQzFDLDBEQUEwRDtRQUMxRCxPQUFPLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUUsTUFBYyxFQUFFLElBQUksQ0FBQztJQUNqRSxDQUFDO0lBRU8sMEJBQTBCLENBQUMsUUFBYTtRQUM5Qyw0REFBNEQ7UUFDNUQsT0FBTyxPQUFPLFFBQVEsS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFFLFFBQWdCLEVBQUUsSUFBSSxDQUFDO0lBQ3JFLENBQUM7SUFFTyxhQUFhLENBQUMsUUFBYTtRQUNqQyxPQUFPLFFBQVEsSUFBSSxPQUFPLFFBQVEsQ0FBQyxrQkFBa0IsS0FBSyxVQUFVLENBQUM7SUFDdkUsQ0FBQzt3R0FqSVUsbUJBQW1COzRHQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NyZWF0ZUNvbXBvbmVudCwgRW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0YWJsZSwgTmdab25lLCBUZW1wbGF0ZVJlZiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL3JlbmRlcmVyL2hvdC1keW5hbWljLXJlbmRlcmVyLWNvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VFZGl0b3JBZGFwdGVyIH0gZnJvbSAnLi4vZWRpdG9yL2Jhc2UtZWRpdG9yLWFkYXB0ZXInO1xuaW1wb3J0IHsgR3JpZFNldHRpbmdzLCBHcmlkU2V0dGluZ3NJbnRlcm5hbCB9IGZyb20gJy4uL21vZGVscy9ncmlkLXNldHRpbmdzJztcbmltcG9ydCB7IEN1c3RvbVZhbGlkYXRvckZuLCBDb2x1bW5TZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9jb2x1bW4tc2V0dGluZ3MnO1xuaW1wb3J0IHsgSG90Q2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVuZGVyZXIvaG90LWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEhvdENlbGxFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9lZGl0b3IvaG90LWNlbGwtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgSGFuZHNvbnRhYmxlIGZyb20gJ2hhbmRzb250YWJsZS9iYXNlJztcblxuY29uc3QgQVZBSUxBQkxFX09QVElPTlM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXMoSGFuZHNvbnRhYmxlLkRlZmF1bHRTZXR0aW5ncyk7XG5jb25zdCBBVkFJTEFCTEVfSE9PS1M6IHN0cmluZ1tdID0gSGFuZHNvbnRhYmxlLmhvb2tzLmdldFJlZ2lzdGVyZWQoKTtcblxuLyoqXG4gKiBTZXJ2aWNlIHRvIHJlc29sdmUgYW5kIGFwcGx5IGN1c3RvbSBzZXR0aW5ncyBmb3IgSGFuZHNvbnRhYmxlIHNldHRpbmdzIG9iamVjdC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEhvdFNldHRpbmdzUmVzb2x2ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGR5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBlbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yKSB7fVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGN1c3RvbSBzZXR0aW5ncyB0byB0aGUgcHJvdmlkZWQgR3JpZFNldHRpbmdzLlxuICAgKiBAcGFyYW0gc2V0dGluZ3MgVGhlIG9yaWdpbmFsIGdyaWQgc2V0dGluZ3MuXG4gICAqIEBwYXJhbSBuZ1pvbmUgVGhlIE5nWm9uZSBpbnN0YW5jZSB0byBydW4gaG9va3MgaW5zaWRlIHRoZSB6b25lIGNvbnRleHQuXG4gICAqIEByZXR1cm5zIFRoZSBtZXJnZWQgZ3JpZCBzZXR0aW5ncyB3aXRoIGN1c3RvbSBzZXR0aW5ncyBhcHBsaWVkLlxuICAgKi9cbiAgYXBwbHlDdXN0b21TZXR0aW5ncyhzZXR0aW5nczogR3JpZFNldHRpbmdzLCBuZ1pvbmU6IE5nWm9uZSk6IEdyaWRTZXR0aW5nc0ludGVybmFsIHtcbiAgICBjb25zdCBtZXJnZWRTZXR0aW5nczogR3JpZFNldHRpbmdzID0gc2V0dGluZ3M7XG5cbiAgICB0aGlzLnVwZGF0ZUNvbHVtblJlbmRlcmVyRm9yR2l2ZW5DdXN0b21SZW5kZXJlcihtZXJnZWRTZXR0aW5ncyk7XG4gICAgdGhpcy51cGRhdGVDb2x1bW5FZGl0b3JGb3JHaXZlbkN1c3RvbUVkaXRvcihtZXJnZWRTZXR0aW5ncyk7XG4gICAgdGhpcy51cGRhdGVDb2x1bW5WYWxpZGF0b3JGb3JHaXZlbkN1c3RvbVZhbGlkYXRvcihtZXJnZWRTZXR0aW5ncyk7XG5cbiAgICB0aGlzLndyYXBIb29rc0luTmdab25lKG1lcmdlZFNldHRpbmdzLCBuZ1pvbmUpO1xuXG4gICAgcmV0dXJuIChtZXJnZWRTZXR0aW5ncyBhcyBHcmlkU2V0dGluZ3NJbnRlcm5hbCkgPz8ge307XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlcyB0aGF0IGhvb2sgY2FsbGJhY2tzIGluIHRoZSBwcm92aWRlZCBncmlkIHNldHRpbmdzIHJ1biBpbnNpZGUgQW5ndWxhcidzIHpvbmUuXG4gICAqXG4gICAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgb3JpZ2luYWwgZ3JpZCBzZXR0aW5ncy5cbiAgICogQHBhcmFtIG5nWm9uZSBUaGUgTmdab25lIGluc3RhbmNlIHRvIHJ1biBob29rcyBpbnNpZGUgdGhlIHpvbmUgY29udGV4dC5cbiAgICovXG4gIHByaXZhdGUgd3JhcEhvb2tzSW5OZ1pvbmUoc2V0dGluZ3M6IEdyaWRTZXR0aW5ncywgbmdab25lOiBOZ1pvbmUpIHtcbiAgICBjb25zdCBvcHRpb25zID0gQVZBSUxBQkxFX0hPT0tTLmNvbmNhdChBVkFJTEFCTEVfT1BUSU9OUyk7XG5cbiAgICBvcHRpb25zLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGlzSG9vayA9IEFWQUlMQUJMRV9IT09LUy5pbmRleE9mKGtleSkgPiAtMTtcbiAgICAgIGxldCBvcHRpb247XG5cbiAgICAgIGlmIChpc0hvb2spIHtcbiAgICAgICAgb3B0aW9uID0gc2V0dGluZ3Nba2V5XTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHJldHVybjtcblxuICAgICAgfSBlbHNlIGlmICghIW5nWm9uZSAmJiAodHlwZW9mIG9wdGlvbiA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0hvb2spKSB7XG4gICAgICAgIHNldHRpbmdzW2tleV0gPSBmdW5jdGlvbiguLi5hcmdzOiBhbnkpIHtcbiAgICAgICAgICByZXR1cm4gbmdab25lLnJ1bigoKSA9PiBvcHRpb24uYXBwbHkodGhpcywgYXJncykpO1xuICAgICAgICB9O1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXR0aW5nc1trZXldID0gb3B0aW9uO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbHVtbiByZW5kZXJlciBmb3IgY29sdW1ucyB3aXRoIGEgY3VzdG9tIHJlbmRlcmVyLlxuICAgKiBAcGFyYW0gbWVyZ2VkU2V0dGluZ3MgVGhlIG1lcmdlZCBncmlkIHNldHRpbmdzLlxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5SZW5kZXJlckZvckdpdmVuQ3VzdG9tUmVuZGVyZXIobWVyZ2VkU2V0dGluZ3M6IEdyaWRTZXR0aW5ncyk6IHZvaWQge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShtZXJnZWRTZXR0aW5ncz8uY29sdW1ucykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAobWVyZ2VkU2V0dGluZ3M/LmNvbHVtbnMgYXMgQ29sdW1uU2V0dGluZ3NbXSlcbiAgICAgID8uZmlsdGVyKChzZXR0aW5ncykgPT4gdGhpcy5pc1JlbmRlcmVyQ29tcG9uZW50UmVmVHlwZShzZXR0aW5ncy5yZW5kZXJlcikgfHwgdGhpcy5pc1RlbXBsYXRlUmVmKHNldHRpbmdzLnJlbmRlcmVyKSlcbiAgICAgID8uZm9yRWFjaCgoY2VsbFNldHRpbmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5pc1RlbXBsYXRlUmVmKGNlbGxTZXR0aW5ncy5yZW5kZXJlcilcbiAgICAgICAgICA/IChjZWxsU2V0dGluZ3MucmVuZGVyZXIgYXMgVGVtcGxhdGVSZWY8YW55PilcbiAgICAgICAgICA6IChjZWxsU2V0dGluZ3MucmVuZGVyZXIgYXMgVHlwZTxIb3RDZWxsUmVuZGVyZXJDb21wb25lbnQ8YW55LCBhbnk+Pik7XG4gICAgICAgIGNvbnN0IHByb3BzOiBhbnkgPSBjZWxsU2V0dGluZ3MucmVuZGVyZXJQcm9wcyA/PyB7fTtcbiAgICAgICAgY2VsbFNldHRpbmdzLnJlbmRlcmVyID0gdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVSZW5kZXJlckZyb21Db21wb25lbnQocmVuZGVyZXIsIHByb3BzKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbHVtbiBlZGl0b3IgZm9yIGNvbHVtbnMgd2l0aCBhIGN1c3RvbSBlZGl0b3IuXG4gICAqIEBwYXJhbSBtZXJnZWRTZXR0aW5ncyBUaGUgbWVyZ2VkIGdyaWQgc2V0dGluZ3MuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUNvbHVtbkVkaXRvckZvckdpdmVuQ3VzdG9tRWRpdG9yKG1lcmdlZFNldHRpbmdzOiBHcmlkU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVyZ2VkU2V0dGluZ3M/LmNvbHVtbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgKG1lcmdlZFNldHRpbmdzPy5jb2x1bW5zIGFzIENvbHVtblNldHRpbmdzW10pXG4gICAgICA/LmZpbHRlcigoc2V0dGluZ3MpID0+IHRoaXMuaXNFZGl0b3JDb21wb25lbnRSZWZUeXBlKHNldHRpbmdzLmVkaXRvcikpXG4gICAgICA/LmZvckVhY2goKGNlbGxTZXR0aW5ncykgPT4ge1xuICAgICAgICBjb25zdCBjdXN0b21FZGl0b3IgPSBjZWxsU2V0dGluZ3MuZWRpdG9yIGFzIFR5cGU8SG90Q2VsbEVkaXRvckNvbXBvbmVudDxhbnk+PjtcbiAgICAgICAgY2VsbFNldHRpbmdzWydfZWRpdG9yQ29tcG9uZW50UmVmZXJlbmNlJ10gPSBjcmVhdGVDb21wb25lbnQoY3VzdG9tRWRpdG9yLCB7XG4gICAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5lbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICB9KTtcbiAgICAgICAgY2VsbFNldHRpbmdzWydfZW52aXJvbm1lbnRJbmplY3RvciddID0gdGhpcy5lbnZpcm9ubWVudEluamVjdG9yO1xuICAgICAgICBjZWxsU2V0dGluZ3MuZWRpdG9yID0gQmFzZUVkaXRvckFkYXB0ZXI7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb2x1bW4gdmFsaWRhdG9yIGZvciBjb2x1bW5zIHdpdGggYSBjdXN0b20gdmFsaWRhdG9yLlxuICAgKiBAcGFyYW0gbWVyZ2VkU2V0dGluZ3MgVGhlIG1lcmdlZCBncmlkIHNldHRpbmdzLlxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5WYWxpZGF0b3JGb3JHaXZlbkN1c3RvbVZhbGlkYXRvcihtZXJnZWRTZXR0aW5nczogR3JpZFNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG1lcmdlZFNldHRpbmdzPy5jb2x1bW5zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIChtZXJnZWRTZXR0aW5ncz8uY29sdW1ucyBhcyBDb2x1bW5TZXR0aW5nc1tdKVxuICAgICAgPy5maWx0ZXIoKHNldHRpbmdzKSA9PiB0aGlzLmlzQ3VzdG9tVmFsaWRhdG9yRm4oc2V0dGluZ3MudmFsaWRhdG9yKSlcbiAgICAgID8uZm9yRWFjaCgoY2VsbFNldHRpbmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1c3RvbVZhbGlkYXRvckZuID0gY2VsbFNldHRpbmdzLnZhbGlkYXRvciBhcyBDdXN0b21WYWxpZGF0b3JGbjxhbnk+O1xuXG4gICAgICAgIGNlbGxTZXR0aW5ncy52YWxpZGF0b3IgPSAodmFsdWU6IGFueSwgY2FsbGJhY2s6IChyZXN1bHQ6IGJvb2xlYW4pID0+IHZvaWQpID0+IHtcbiAgICAgICAgICBjYWxsYmFjayhjdXN0b21WYWxpZGF0b3JGbih2YWx1ZSkpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzQ3VzdG9tVmFsaWRhdG9yRm4odmFsaWRhdG9yOiB1bmtub3duKTogdmFsaWRhdG9yIGlzIEN1c3RvbVZhbGlkYXRvckZuPGFueT4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsaWRhdG9yID09PSAnZnVuY3Rpb24nICYmIHZhbGlkYXRvci5sZW5ndGggPT09IDE7XG4gIH1cblxuICBwcml2YXRlIGlzRWRpdG9yQ29tcG9uZW50UmVmVHlwZShlZGl0b3I6IGFueSk6IGVkaXRvciBpcyBUeXBlPEhvdENlbGxFZGl0b3JDb21wb25lbnQ8YW55Pj4ge1xuICAgIC8vIGVjbXAgLSB3ZSBuZWVkIGl0IHRvIGNoZWNrIGlmIHRoZSBlZGl0b3IgaXMgYSBjb21wb25lbnRcbiAgICByZXR1cm4gdHlwZW9mIGVkaXRvciA9PT0gJ2Z1bmN0aW9uJyAmJiAhIShlZGl0b3IgYXMgYW55KT8uybVjbXA7XG4gIH1cblxuICBwcml2YXRlIGlzUmVuZGVyZXJDb21wb25lbnRSZWZUeXBlKHJlbmRlcmVyOiBhbnkpOiByZW5kZXJlciBpcyBUeXBlPEhvdENlbGxSZW5kZXJlckNvbXBvbmVudDxhbnksIGFueT4+IHtcbiAgICAvLyBlY21wIC0gd2UgbmVlZCBpdCB0byBjaGVjayBpZiB0aGUgcmVuZGVyZXIgaXMgYSBjb21wb25lbnRcbiAgICByZXR1cm4gdHlwZW9mIHJlbmRlcmVyID09PSAnZnVuY3Rpb24nICYmICEhKHJlbmRlcmVyIGFzIGFueSk/Lsm1Y21wO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RlbXBsYXRlUmVmKHJlbmRlcmVyOiBhbnkpOiByZW5kZXJlciBpcyBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gcmVuZGVyZXIgJiYgdHlwZW9mIHJlbmRlcmVyLmNyZWF0ZUVtYmVkZGVkVmlldyA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxufVxuIl19
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90LXNldHRpbmdzLXJlc29sdmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ob3QtdGFibGUvc3JjL2xpYi9zZXJ2aWNlcy9ob3Qtc2V0dGluZ3MtcmVzb2x2ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUF1QixVQUFVLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBRTVHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2xFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sWUFBWSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7QUFFOUYsTUFBTSxpQkFBaUIsR0FBYSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUM5RSxNQUFNLGVBQWUsR0FBYSxZQUFZLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBRXJFOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFtQjtJQUNWO0lBQW1FO0lBQXZGLFlBQW9CLHVCQUFnRCxFQUFtQixtQkFBd0M7UUFBM0csNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUFtQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBQUcsQ0FBQztJQUVuSTs7Ozs7T0FLRztJQUNILG1CQUFtQixDQUFDLFFBQXNCLEVBQUUsTUFBYztRQUN4RCxNQUFNLGNBQWMsR0FBaUIsUUFBUSxD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LGVBQWUsQ0FBQztJQUM1RixDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQWE7UUFDakMsT0FBTyxRQUFRLElBQUksT0FBTyxRQUFRLENBQUMsa0JBQWtCLEtBQUssVUFBVSxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFhO1FBR3BDLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQztZQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztZQUM1QixJQUFJLENBQUMsa0NBQWtDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQzt3R0FuS1UsbUJBQW1COzRHQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVDb21wb25lbnQsIEVudmlyb25tZW50SW5qZWN0b3IsIEluamVjdGFibGUsIE5nWm9uZSwgVGVtcGxhdGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vcmVuZGVyZXIvaG90LWR5bmFtaWMtcmVuZGVyZXItY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZUVkaXRvckFkYXB0ZXIgfSBmcm9tICcuLi9lZGl0b3IvYmFzZS1lZGl0b3ItYWRhcHRlcic7XG5pbXBvcnQgeyBHcmlkU2V0dGluZ3MsIEdyaWRTZXR0aW5nc0ludGVybmFsIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtc2V0dGluZ3MnO1xuaW1wb3J0IHsgQ3VzdG9tVmFsaWRhdG9yRm4sIENvbHVtblNldHRpbmdzIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbi1zZXR0aW5ncyc7XG5pbXBvcnQgeyBIb3RDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9yZW5kZXJlci9ob3QtY2VsbC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSG90Q2VsbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2VkaXRvci9ob3QtY2VsbC1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCBIYW5kc29udGFibGUgZnJvbSAnaGFuZHNvbnRhYmxlL2Jhc2UnO1xuaW1wb3J0IHsgRmFjdG9yeUVkaXRvckFkYXB0ZXIgfSBmcm9tICcuLi9lZGl0b3IvZWRpdG9yLWZhY3RvcnktYWRhcHRlcic7XG5pbXBvcnQgeyBIb3RDZWxsUmVuZGVyZXJBZHZhbmNlZENvbXBvbmVudCB9IGZyb20gJy4uL3JlbmRlcmVyL2hvdC1jZWxsLXJlbmRlcmVyLWFkdmFuY2VkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIb3RDZWxsRWRpdG9yQWR2YW5jZWRDb21wb25lbnQgfSBmcm9tICcuLi9lZGl0b3IvaG90LWNlbGwtZWRpdG9yLWFkdmFuY2VkLmNvbXBvbmVudCc7XG5cbmNvbnN0IEFWQUlMQUJMRV9PUFRJT05TOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKEhhbmRzb250YWJsZS5EZWZhdWx0U2V0dGluZ3MpO1xuY29uc3QgQVZBSUxBQkxFX0hPT0tTOiBzdHJpbmdbXSA9IEhhbmRzb250YWJsZS5ob29rcy5nZXRSZWdpc3RlcmVkKCk7XG5cbi8qKlxuICogU2VydmljZSB0byByZXNvbHZlIGFuZCBhcHBseSBjdXN0b20gc2V0dGluZ3MgZm9yIEhhbmRzb250YWJsZSBzZXR0aW5ncyBvYmplY3QuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIb3RTZXR0aW5nc1Jlc29sdmVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkeW5hbWljQ29tcG9uZW50U2VydmljZTogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgZW52aXJvbm1lbnRJbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3Rvcikge31cblxuICAvKipcbiAgICogQXBwbGllcyBjdXN0b20gc2V0dGluZ3MgdG8gdGhlIHByb3ZpZGVkIEdyaWRTZXR0aW5ncy5cbiAgICogQHBhcmFtIHNldHRpbmdzIFRoZSBvcmlnaW5hbCBncmlkIHNldHRpbmdzLlxuICAgKiBAcGFyYW0gbmdab25lIFRoZSBOZ1pvbmUgaW5zdGFuY2UgdG8gcnVuIGhvb2tzIGluc2lkZSB0aGUgem9uZSBjb250ZXh0LlxuICAgKiBAcmV0dXJucyBUaGUgbWVyZ2VkIGdyaWQgc2V0dGluZ3Mgd2l0aCBjdXN0b20gc2V0dGluZ3MgYXBwbGllZC5cbiAgICovXG4gIGFwcGx5Q3VzdG9tU2V0dGluZ3Moc2V0dGluZ3M6IEdyaWRTZXR0aW5ncywgbmdab25lOiBOZ1pvbmUpOiBHcmlkU2V0dGluZ3NJbnRlcm5hbCB7XG4gICAgY29uc3QgbWVyZ2VkU2V0dGluZ3M6IEdyaWRTZXR0aW5ncyA9IHNldHRpbmdzO1xuXG4gICAgdGhpcy51cGRhdGVDb2x1bW5SZW5kZXJlckZvckdpdmVuQ3VzdG9tUmVuZGVyZXIobWVyZ2VkU2V0dGluZ3MpO1xuICAgIHRoaXMudXBkYXRlQ29sdW1uRWRpdG9yRm9yR2l2ZW5DdXN0b21FZGl0b3IobWVyZ2VkU2V0dGluZ3MpO1xuICAgIHRoaXMudXBkYXRlQ29sdW1uVmFsaWRhdG9yRm9yR2l2ZW5DdXN0b21WYWxpZGF0b3IobWVyZ2VkU2V0dGluZ3MpO1xuXG4gICAgdGhpcy53cmFwSG9va3NJbk5nWm9uZShtZXJnZWRTZXR0aW5ncywgbmdab25lKTtcblxuICAgIHJldHVybiAobWVyZ2VkU2V0dGluZ3MgYXMgR3JpZFNldHRpbmdzSW50ZXJuYWwpID8/IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZXMgdGhhdCBob29rIGNhbGxiYWNrcyBpbiB0aGUgcHJvdmlkZWQgZ3JpZCBzZXR0aW5ncyBydW4gaW5zaWRlIEFuZ3VsYXIncyB6b25lLlxuICAgKlxuICAgKiBAcGFyYW0gc2V0dGluZ3MgVGhlIG9yaWdpbmFsIGdyaWQgc2V0dGluZ3MuXG4gICAqIEBwYXJhbSBuZ1pvbmUgVGhlIE5nWm9uZSBpbnN0YW5jZSB0byBydW4gaG9va3MgaW5zaWRlIHRoZSB6b25lIGNvbnRleHQuXG4gICAqL1xuICBwcml2YXRlIHdyYXBIb29rc0luTmdab25lKHNldHRpbmdzOiBHcmlkU2V0dGluZ3MsIG5nWm9uZTogTmdab25lKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IEFWQUlMQUJMRV9IT09LUy5jb25jYXQoQVZBSUxBQkxFX09QVElPTlMpO1xuXG4gICAgb3B0aW9ucy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IGlzSG9vayA9IEFWQUlMQUJMRV9IT09LUy5pbmRleE9mKGtleSkgPiAtMTtcbiAgICAgIGxldCBvcHRpb247XG5cbiAgICAgIGlmIChpc0hvb2spIHtcbiAgICAgICAgb3B0aW9uID0gc2V0dGluZ3Nba2V5XTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoISFuZ1pvbmUgJiYgdHlwZW9mIG9wdGlvbiA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0hvb2spIHtcbiAgICAgICAgc2V0dGluZ3Nba2V5XSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnkpIHtcbiAgICAgICAgICByZXR1cm4gbmdab25lLnJ1bigoKSA9PiBvcHRpb24uYXBwbHkodGhpcywgYXJncykpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0dGluZ3Nba2V5XSA9IG9wdGlvbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb2x1bW4gcmVuZGVyZXIgZm9yIGNvbHVtbnMgd2l0aCBhIGN1c3RvbSByZW5kZXJlci5cbiAgICogQHBhcmFtIG1lcmdlZFNldHRpbmdzIFRoZSBtZXJnZWQgZ3JpZCBzZXR0aW5ncy5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uUmVuZGVyZXJGb3JHaXZlbkN1c3RvbVJlbmRlcmVyKG1lcmdlZFNldHRpbmdzOiBHcmlkU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVyZ2VkU2V0dGluZ3M/LmNvbHVtbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgKG1lcmdlZFNldHRpbmdzPy5jb2x1bW5zIGFzIENvbHVtblNldHRpbmdzW10pXG4gICAgICA/LmZpbHRlcigoc2V0dGluZ3MpID0+IHRoaXMuaXNDdXN0b21SZW5kZXJlcihzZXR0aW5ncy5yZW5kZXJlcikpXG4gICAgICA/LmZvckVhY2goKGNlbGxTZXR0aW5ncykgPT4ge1xuICAgICAgICBjb25zdCByZW5kZXJlciA9IGNlbGxTZXR0aW5ncy5yZW5kZXJlcjtcbiAgICAgICAgY29uc3QgcHJvcHM6IGFueSA9IGNlbGxTZXR0aW5ncy5yZW5kZXJlclByb3BzID8/IHt9O1xuXG4gICAgICAgIGlmICh0aGlzLmlzQWR2YW5jZWRSZW5kZXJlckNvbXBvbmVudFJlZlR5cGUocmVuZGVyZXIpKSB7XG4gICAgICAgICAgY2VsbFNldHRpbmdzLnJlbmRlcmVyID0gdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVSZW5kZXJlcldpdGhGYWN0b3J5KHJlbmRlcmVyLCBwcm9wcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1JlbmRlcmVyQ29tcG9uZW50UmVmVHlwZShyZW5kZXJlcikgfHwgdGhpcy5pc1RlbXBsYXRlUmVmKHJlbmRlcmVyKSkge1xuICAgICAgICAgIGNlbGxTZXR0aW5ncy5yZW5kZXJlciA9IHRoaXMuZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlUmVuZGVyZXJGcm9tQ29tcG9uZW50KHJlbmRlcmVyLCBwcm9wcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbHVtbiBlZGl0b3IgZm9yIGNvbHVtbnMgd2l0aCBhIGN1c3RvbSBlZGl0b3IuXG4gICAqIEBwYXJhbSBtZXJnZWRTZXR0aW5ncyBUaGUgbWVyZ2VkIGdyaWQgc2V0dGluZ3MuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUNvbHVtbkVkaXRvckZvckdpdmVuQ3VzdG9tRWRpdG9yKG1lcmdlZFNldHRpbmdzOiBHcmlkU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVyZ2VkU2V0dGluZ3M/LmNvbHVtbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgKG1lcmdlZFNldHRpbmdzPy5jb2x1bW5zIGFzIENvbHVtblNldHRpbmdzW10pXG4gICAgICA/LmZpbHRlcigoc2V0dGluZ3MpID0+IHRoaXMuaXNFZGl0b3JDb21wb25lbnRSZWZUeXBlKHNldHRpbmdzLmVkaXRvcikgfHwgdGhpcy5pc0FkdmFuY2VkRWRpdG9yQ29tcG9uZW50UmVmVHlwZShzZXR0aW5ncy5lZGl0b3IpKVxuICAgICAgPy5mb3JFYWNoKChjZWxsU2V0dGluZ3MpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNBZHZhbmNlZEVkaXRvckNvbXBvbmVudFJlZlR5cGUoY2VsbFNldHRpbmdzLmVkaXRvcikpIHtcbiAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBjcmVhdGVDb21wb25lbnQoY2VsbFNldHRpbmdzLmVkaXRvciwge1xuICAgICAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5lbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNlbGxTZXR0aW5ncy5lZGl0b3IgPSBGYWN0b3J5RWRpdG9yQWRhcHRlcihjb21wb25lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGNyZWF0ZUNvbXBvbmVudChjZWxsU2V0dGluZ3MuZWRpdG9yIGFzIFR5cGU8SG90Q2VsbEVkaXRvckNvbXBvbmVudDxhbnk+Piwge1xuICAgICAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5lbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNlbGxTZXR0aW5nc1snX2VkaXRvckNvbXBvbmVudFJlZmVyZW5jZSddID0gY29tcG9uZW50O1xuICAgICAgICAgIGNlbGxTZXR0aW5nc1snX2Vudmlyb25tZW50SW5qZWN0b3InXSA9IHRoaXMuZW52aXJvbm1lbnRJbmplY3RvcjtcbiAgICAgICAgICBjZWxsU2V0dGluZ3MuZWRpdG9yID0gQmFzZUVkaXRvckFkYXB0ZXI7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbHVtbiB2YWxpZGF0b3IgZm9yIGNvbHVtbnMgd2l0aCBhIGN1c3RvbSB2YWxpZGF0b3IuXG4gICAqIEBwYXJhbSBtZXJnZWRTZXR0aW5ncyBUaGUgbWVyZ2VkIGdyaWQgc2V0dGluZ3MuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUNvbHVtblZhbGlkYXRvckZvckdpdmVuQ3VzdG9tVmFsaWRhdG9yKG1lcmdlZFNldHRpbmdzOiBHcmlkU2V0dGluZ3MpOiB2b2lkIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVyZ2VkU2V0dGluZ3M/LmNvbHVtbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgKG1lcmdlZFNldHRpbmdzPy5jb2x1bW5zIGFzIENvbHVtblNldHRpbmdzW10pXG4gICAgICA/LmZpbHRlcigoc2V0dGluZ3MpID0+IHRoaXMuaXNDdXN0b21WYWxpZGF0b3JGbihzZXR0aW5ncy52YWxpZGF0b3IpKVxuICAgICAgPy5mb3JFYWNoKChjZWxsU2V0dGluZ3MpID0+IHtcbiAgICAgICAgY29uc3QgY3VzdG9tVmFsaWRhdG9yRm4gPSBjZWxsU2V0dGluZ3MudmFsaWRhdG9yIGFzIEN1c3RvbVZhbGlkYXRvckZuPGFueT47XG5cbiAgICAgICAgY2VsbFNldHRpbmdzLnZhbGlkYXRvciA9ICh2YWx1ZTogYW55LCBjYWxsYmFjazogKHJlc3VsdDogYm9vbGVhbikgPT4gdm9pZCkgPT4ge1xuICAgICAgICAgIGNhbGxiYWNrKGN1c3RvbVZhbGlkYXRvckZuKHZhbHVlKSk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDdXN0b21WYWxpZGF0b3JGbih2YWxpZGF0b3I6IHVua25vd24pOiB2YWxpZGF0b3IgaXMgQ3VzdG9tVmFsaWRhdG9yRm48YW55PiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWxpZGF0b3IgPT09ICdmdW5jdGlvbicgJiYgdmFsaWRhdG9yLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFZGl0b3JDb21wb25lbnRSZWZUeXBlKGVkaXRvcjogYW55KTogZWRpdG9yIGlzIFR5cGU8SG90Q2VsbEVkaXRvckNvbXBvbmVudDxhbnk+PiB7XG4gICAgLy8gZWNtcCAtIHdlIG5lZWQgaXQgdG8gY2hlY2sgaWYgdGhlIGVkaXRvciBpcyBhIGNvbXBvbmVudFxuICAgIHJldHVybiB0eXBlb2YgZWRpdG9yID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAhIShlZGl0b3IgYXMgYW55KT8uybVjbXAgJiZcbiAgICAgIChlZGl0b3IgYXMgYW55KT8uRURJVE9SX01BUktFUiA9PT0gSG90Q2VsbEVkaXRvckNvbXBvbmVudC5FRElUT1JfTUFSS0VSO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FkdmFuY2VkRWRpdG9yQ29tcG9uZW50UmVmVHlwZShlZGl0b3I6IGFueSk6IGVkaXRvciBpcyBUeXBlPEhvdENlbGxFZGl0b3JBZHZhbmNlZENvbXBvbmVudDxhbnk+PiB7XG4gICAgLy8gZWNtcCAtIHdlIG5lZWQgaXQgdG8gY2hlY2sgaWYgdGhlIGVkaXRvciBpcyBhIGNvbXBvbmVudFxuICAgIHJldHVybiB0eXBlb2YgZWRpdG9yID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAhIShlZGl0b3IgYXMgYW55KT8uybVjbXAgJiZcbiAgICAgIChlZGl0b3IgYXMgYW55KT8uRURJVE9SX01BUktFUiA9PT0gSG90Q2VsbEVkaXRvckFkdmFuY2VkQ29tcG9uZW50LkVESVRPUl9NQVJLRVI7XG4gIH1cblxuICBwcml2YXRlIGlzUmVuZGVyZXJDb21wb25lbnRSZWZUeXBlKHJlbmRlcmVyOiBhbnkpOiByZW5kZXJlciBpcyBUeXBlPEhvdENlbGxSZW5kZXJlckNvbXBvbmVudDxhbnksIGFueT4+IHtcbiAgICAvLyBlY21wIC0gd2UgbmVlZCBpdCB0byBjaGVjayBpZiB0aGUgcmVuZGVyZXIgaXMgYSBjb21wb25lbnRcbiAgICByZXR1cm4gdHlwZW9mIHJlbmRlcmVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAhIShyZW5kZXJlciBhcyBhbnkpPy7JtWNtcCAmJlxuICAgICAgKHJlbmRlcmVyIGFzIGFueSk/LlJFTkRFUkVSX01BUktFUiA9PT0gSG90Q2VsbFJlbmRlcmVyQ29tcG9uZW50LlJFTkRFUkVSX01BUktFUjtcbiAgfVxuXG4gIHByaXZhdGUgaXNBZHZhbmNlZFJlbmRlcmVyQ29tcG9uZW50UmVmVHlwZShyZW5kZXJlcjogYW55KTogcmVuZGVyZXIgaXMgVHlwZTxIb3RDZWxsUmVuZGVyZXJBZHZhbmNlZENvbXBvbmVudDxhbnksIGFueT4+IHtcbiAgICAvLyBlY21wIC0gd2UgbmVlZCBpdCB0byBjaGVjayBpZiB0aGUgcmVuZGVyZXIgaXMgYSBjb21wb25lbnRcbiAgICByZXR1cm4gdHlwZW9mIHJlbmRlcmVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAhIShyZW5kZXJlciBhcyBhbnkpPy7JtWNtcCAmJlxuICAgICAgKHJlbmRlcmVyIGFzIGFueSk/LlJFTkRFUkVSX01BUktFUiA9PT0gSG90Q2VsbFJlbmRlcmVyQWR2YW5jZWRDb21wb25lbnQuUkVOREVSRVJfTUFSS0VSO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RlbXBsYXRlUmVmKHJlbmRlcmVyOiBhbnkpOiByZW5kZXJlciBpcyBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gcmVuZGVyZXIgJiYgdHlwZW9mIHJlbmRlcmVyLmNyZWF0ZUVtYmVkZGVkVmlldyA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIHByaXZhdGUgaXNDdXN0b21SZW5kZXJlcihyZW5kZXJlcjogYW55KTogcmVuZGVyZXIgaXMgVHlwZTxIb3RDZWxsUmVuZGVyZXJDb21wb25lbnQ8YW55LCBhbnk+PiB8XG4gICAgVGVtcGxhdGVSZWY8YW55PiB8XG4gICAgVHlwZTxIb3RDZWxsUmVuZGVyZXJBZHZhbmNlZENvbXBvbmVudDxhbnksIGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5pc1JlbmRlcmVyQ29tcG9uZW50UmVmVHlwZShyZW5kZXJlcikgfHxcbiAgICAgIHRoaXMuaXNUZW1wbGF0ZVJlZihyZW5kZXJlcikgfHxcbiAgICAgIHRoaXMuaXNBZHZhbmNlZFJlbmRlcmVyQ29tcG9uZW50UmVmVHlwZShyZW5kZXJlcik7XG4gIH1cbn1cbiJdfQ==
@@ -8,4 +8,7 @@ export * from './lib/services/hot-global-config.service';
8
8
  export * from './lib/renderer/hot-dynamic-renderer-component.service';
9
9
  export * from './lib/renderer/hot-cell-renderer.component';
10
10
  export * from './lib/editor/hot-cell-editor.component';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2hvdC10YWJsZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGhvdC10YWJsZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2hvdC10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvaG90LXNldHRpbmdzLXJlc29sdmVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaG90LXRhYmxlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9ob3QtZ2xvYmFsLWNvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlbmRlcmVyL2hvdC1keW5hbWljLXJlbmRlcmVyLWNvbXBvbmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlbmRlcmVyL2hvdC1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lZGl0b3IvaG90LWNlbGwtZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgeyBHcmlkU2V0dGluZ3MgfSBmcm9tICcuL2xpYi9tb2RlbHMvZ3JpZC1zZXR0aW5ncyc7XG5leHBvcnQgeyBDb2x1bW5TZXR0aW5ncywgQ3VzdG9tVmFsaWRhdG9yRm4gfSBmcm9tICcuL2xpYi9tb2RlbHMvY29sdW1uLXNldHRpbmdzJztcbiJdfQ==
11
+ export * from './lib/renderer/hot-cell-renderer-advanced.component';
12
+ export * from './lib/editor/hot-cell-editor-advanced.component';
13
+ export * from './lib/editor/models/keyboard-shortcut-config';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2hvdC10YWJsZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsOENBQThDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGhvdC10YWJsZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2hvdC10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvaG90LXNldHRpbmdzLXJlc29sdmVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaG90LXRhYmxlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9ob3QtZ2xvYmFsLWNvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlbmRlcmVyL2hvdC1keW5hbWljLXJlbmRlcmVyLWNvbXBvbmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlbmRlcmVyL2hvdC1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lZGl0b3IvaG90LWNlbGwtZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZW5kZXJlci9ob3QtY2VsbC1yZW5kZXJlci1hZHZhbmNlZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWRpdG9yL2hvdC1jZWxsLWVkaXRvci1hZHZhbmNlZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWRpdG9yL21vZGVscy9rZXlib2FyZC1zaG9ydGN1dC1jb25maWcnO1xuZXhwb3J0IHsgR3JpZFNldHRpbmdzIH0gZnJvbSAnLi9saWIvbW9kZWxzL2dyaWQtc2V0dGluZ3MnO1xuZXhwb3J0IHsgQ29sdW1uU2V0dGluZ3MsIEN1c3RvbVZhbGlkYXRvckZuIH0gZnJvbSAnLi9saWIvbW9kZWxzL2NvbHVtbi1zZXR0aW5ncyc7XG4iXX0=