igniteui-angular 12.3.0-alpha.0 → 12.3.2

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 (72) hide show
  1. package/LICENSE +16 -0
  2. package/bundles/igniteui-angular.umd.js +574 -624
  3. package/bundles/igniteui-angular.umd.js.map +1 -1
  4. package/esm2015/igniteui-angular.js +106 -107
  5. package/esm2015/lib/accordion/accordion.component.js +23 -6
  6. package/esm2015/lib/action-strip/action-strip.component.js +19 -2
  7. package/esm2015/lib/action-strip/grid-actions/grid-action-button.component.js +2 -2
  8. package/esm2015/lib/action-strip/grid-actions/grid-editing-actions.component.js +4 -4
  9. package/esm2015/lib/action-strip/grid-actions/grid-pinning-actions.component.js +5 -5
  10. package/esm2015/lib/banner/banner.component.js +1 -1
  11. package/esm2015/lib/combo/combo.common.js +28 -11
  12. package/esm2015/lib/combo/combo.component.js +12 -24
  13. package/esm2015/lib/core/i18n/action-strip-resources.js +4 -0
  14. package/esm2015/lib/core/i18n/resources.js +5 -3
  15. package/esm2015/lib/core/utils.js +11 -1
  16. package/esm2015/lib/data-operations/sorting-strategy.js +12 -3
  17. package/esm2015/lib/directives/radio/radio-group.directive.js +5 -13
  18. package/esm2015/lib/drop-down/drop-down-item.base.js +1 -5
  19. package/esm2015/lib/grids/cell.component.js +1 -17
  20. package/esm2015/lib/grids/column-actions/column-actions.component.js +3 -7
  21. package/esm2015/lib/grids/filtering/base/grid-filtering-row.component.js +12 -4
  22. package/esm2015/lib/grids/filtering/excel-style/excel-style-date-expression.component.js +2 -2
  23. package/esm2015/lib/grids/filtering/excel-style/grid.excel-style-filtering.component.js +2 -2
  24. package/esm2015/lib/grids/grid/grid.component.js +3 -7
  25. package/esm2015/lib/grids/grid-base.directive.js +59 -119
  26. package/esm2015/lib/grids/grid-public-row.js +3 -12
  27. package/esm2015/lib/grids/headers/grid-header-row.component.js +2 -2
  28. package/esm2015/lib/grids/hierarchical-grid/hierarchical-grid.component.js +3 -7
  29. package/esm2015/lib/grids/tree-grid/tree-grid.component.js +5 -9
  30. package/esm2015/lib/icon/icon.component.js +1 -6
  31. package/esm2015/lib/icon/icon.service.js +14 -6
  32. package/esm2015/lib/services/overlay/utilities.js +1 -1
  33. package/esm2015/lib/simple-combo/simple-combo.component.js +132 -37
  34. package/esm2015/lib/time-picker/time-picker.component.js +2 -2
  35. package/esm2015/lib/toast/toast.component.js +3 -6
  36. package/esm2015/public_api.js +1 -1
  37. package/fesm2015/igniteui-angular.js +342 -373
  38. package/fesm2015/igniteui-angular.js.map +1 -1
  39. package/igniteui-angular.d.ts +105 -106
  40. package/igniteui-angular.metadata.json +1 -1
  41. package/lib/accordion/accordion.component.d.ts +1 -0
  42. package/lib/action-strip/action-strip.component.d.ts +10 -0
  43. package/lib/banner/banner.component.d.ts +1 -2
  44. package/lib/combo/combo.common.d.ts +27 -14
  45. package/lib/combo/combo.component.d.ts +9 -19
  46. package/lib/core/i18n/action-strip-resources.d.ts +4 -0
  47. package/lib/core/i18n/resources.d.ts +3 -1
  48. package/lib/core/utils.d.ts +4 -0
  49. package/lib/directives/radio/radio-group.directive.d.ts +4 -4
  50. package/lib/grids/cell.component.d.ts +0 -9
  51. package/lib/grids/column-actions/column-actions.component.d.ts +2 -1
  52. package/lib/grids/grid/grid.component.d.ts +2 -1
  53. package/lib/grids/grid-base.directive.d.ts +54 -37
  54. package/lib/grids/grid-public-row.d.ts +2 -3
  55. package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +2 -1
  56. package/lib/grids/tree-grid/tree-grid.component.d.ts +2 -1
  57. package/lib/icon/icon.component.d.ts +2 -2
  58. package/lib/icon/icon.service.d.ts +3 -1
  59. package/lib/services/overlay/utilities.d.ts +2 -1
  60. package/lib/simple-combo/simple-combo.component.d.ts +20 -3
  61. package/lib/toast/toast.component.d.ts +2 -0
  62. package/migrations/common/filterSourceDirs.d.ts +2 -2
  63. package/migrations/common/filterSourceDirs.js +2 -2
  64. package/migrations/migration-collection.json +0 -5
  65. package/migrations/{update-12_3_0 → update-13_0_0}/changes/members.json +0 -0
  66. package/package.json +1 -1
  67. package/public_api.d.ts +1 -0
  68. package/schematics/tsconfig.tsbuildinfo +1 -1
  69. package/esm2015/lib/core/deprecateDecorators.js +0 -101
  70. package/lib/core/deprecateDecorators.d.ts +0 -20
  71. package/migrations/update-12_3_0/index.d.ts +0 -3
  72. package/migrations/update-12_3_0/index.js +0 -9
@@ -3,10 +3,12 @@ import { DomSanitizer } from '@angular/platform-browser';
3
3
  import { DOCUMENT } from '@angular/common';
4
4
  import { HttpClient } from '@angular/common/http';
5
5
  import { Subject } from 'rxjs';
6
+ import { PlatformUtil } from '../core/utils';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/platform-browser";
8
9
  import * as i2 from "@angular/common/http";
9
- import * as i3 from "@angular/common";
10
+ import * as i3 from "../core/utils";
11
+ import * as i4 from "@angular/common";
10
12
  /**
11
13
  * **Ignite UI for Angular Icon Service** -
12
14
  *
@@ -20,16 +22,20 @@ import * as i3 from "@angular/common";
20
22
  * ```
21
23
  */
22
24
  export class IgxIconService {
23
- constructor(_sanitizer, _httpClient, _document) {
25
+ constructor(_sanitizer, _httpClient, _platformUtil, _document) {
26
+ var _a;
24
27
  this._sanitizer = _sanitizer;
25
28
  this._httpClient = _httpClient;
29
+ this._platformUtil = _platformUtil;
26
30
  this._document = _document;
27
31
  this._family = 'material-icons';
28
32
  this._familyAliases = new Map();
29
33
  this._cachedSvgIcons = new Map();
30
34
  this._iconLoaded = new Subject();
31
- this._domParser = new DOMParser();
32
35
  this.iconLoaded = this._iconLoaded.asObservable();
36
+ if ((_a = this._platformUtil) === null || _a === void 0 ? void 0 : _a.isBrowser) {
37
+ this._domParser = new DOMParser();
38
+ }
33
39
  }
34
40
  /**
35
41
  * Returns the default font-family.
@@ -149,8 +155,9 @@ export class IgxIconService {
149
155
  * @hidden
150
156
  */
151
157
  cacheSvgIcon(name, value, family = this._family, stripMeta) {
158
+ var _a;
152
159
  family = !!family ? family : this._family;
153
- if (name && value) {
160
+ if (((_a = this._platformUtil) === null || _a === void 0 ? void 0 : _a.isBrowser) && name && value) {
154
161
  const doc = this._domParser.parseFromString(value, 'image/svg+xml');
155
162
  const svg = doc.querySelector('svg');
156
163
  if (!this._cachedSvgIcons.has(family)) {
@@ -175,7 +182,7 @@ export class IgxIconService {
175
182
  }
176
183
  }
177
184
  }
178
- IgxIconService.ɵprov = i0.ɵɵdefineInjectable({ factory: function IgxIconService_Factory() { return new IgxIconService(i0.ɵɵinject(i1.DomSanitizer, 8), i0.ɵɵinject(i2.HttpClient, 8), i0.ɵɵinject(i3.DOCUMENT, 8)); }, token: IgxIconService, providedIn: "root" });
185
+ IgxIconService.ɵprov = i0.ɵɵdefineInjectable({ factory: function IgxIconService_Factory() { return new IgxIconService(i0.ɵɵinject(i1.DomSanitizer, 8), i0.ɵɵinject(i2.HttpClient, 8), i0.ɵɵinject(i3.PlatformUtil, 8), i0.ɵɵinject(i4.DOCUMENT, 8)); }, token: IgxIconService, providedIn: "root" });
179
186
  IgxIconService.decorators = [
180
187
  { type: Injectable, args: [{
181
188
  providedIn: 'root'
@@ -184,6 +191,7 @@ IgxIconService.decorators = [
184
191
  IgxIconService.ctorParameters = () => [
185
192
  { type: DomSanitizer, decorators: [{ type: Optional }] },
186
193
  { type: HttpClient, decorators: [{ type: Optional }] },
194
+ { type: PlatformUtil, decorators: [{ type: Optional }] },
187
195
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }
188
196
  ];
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFlM0M7Ozs7Ozs7Ozs7O0dBV0c7QUFJSCxNQUFNLE9BQU8sY0FBYztJQWtCdkIsWUFDd0IsVUFBd0IsRUFDeEIsV0FBdUIsRUFDTCxTQUFjO1FBRmhDLGVBQVUsR0FBVixVQUFVLENBQWM7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDTCxjQUFTLEdBQVQsU0FBUyxDQUFLO1FBVGhELFlBQU8sR0FBRyxnQkFBZ0IsQ0FBQztRQUMzQixtQkFBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQzNDLG9CQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUFDM0QsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQUNoRCxlQUFVLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQU9qQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7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Q0FBQyxDQUFDO2dCQUM1QixHQUFHLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUV6RCxJQUFJLFNBQVMsRUFBRTtvQkFDWCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN6QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUV2QyxJQUFJLEtBQUssRUFBRTt3QkFDUCxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUMxQjtvQkFFRCxJQUFJLElBQUksRUFBRTt3QkFDTixHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN6QjtpQkFDSjtnQkFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzthQUN2RDtTQUNKO0lBQ0wsQ0FBQzs7OztZQTVMSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQWhDUSxZQUFZLHVCQW9EWixRQUFRO1lBbERSLFVBQVUsdUJBbURWLFFBQVE7NENBQ1IsUUFBUSxZQUFJLE1BQU0sU0FBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgU2VjdXJpdHlDb250ZXh0LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIFNWRyBpY29uIGlzIGxvYWRlZCB0aHJvdWdoXG4gKiBhIEhUVFAgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJZ3hJY29uTG9hZGVkRXZlbnQge1xuICAgIC8qKiBOYW1lIG9mIHRoZSBpY29uICovXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgYWN0dWFsIFNWRyB0ZXh0ICovXG4gICAgdmFsdWU6IHN0cmluZztcbiAgICAvKiogVGhlIGZvbnQtZmFtaWx5IGZvciB0aGUgaWNvbi4gRGVmYXVsdHMgdG8gbWF0ZXJpYWwuICovXG4gICAgZmFtaWx5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgSWNvbiBTZXJ2aWNlKiogLVxuICpcbiAqIFRoZSBJZ25pdGUgVUkgSWNvbiBTZXJ2aWNlIG1ha2VzIGl0IGVhc3kgZm9yIGRldmVsb3BlcnMgdG8gaW5jbHVkZSBjdXN0b20gU1ZHIGltYWdlcyBhbmQgdXNlIHRoZW0gd2l0aCBJZ3hJY29uQ29tcG9uZW50LlxuICogSW4gYWRkaXRpb24gaXQgY291bGQgYmUgdXNlZCB0byBhc3NvY2lhdGUgYSBjdXN0b20gY2xhc3MgdG8gYmUgYXBwbGllZCBvbiBJZ3hJY29uQ29tcG9uZW50IGFjY29yZGluZyB0byBnaXZlbiBmb250LWZhbWlseS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckZhbWlseUFsaWFzKCdtYXRlcmlhbCcsICdtYXRlcmlhbC1pY29ucycpO1xuICogdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uKCdhcnViYScsICcvYXNzZXRzL3N2Zy9jb3VudHJ5X2ZsYWdzL2FydWJhLnN2ZycsICdzdmctZmxhZ3MnKTtcbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIElneEljb25TZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBhbiBpY29uIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWRcbiAgICAgKiB0aHJvdWdoIGEgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5zZXJ2aWNlLmljb25Mb2FkZWQuc3Vic2NyaWJlKChldjogSWd4SWNvbkxvYWRlZEV2ZW50KSA9PiAuLi4pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBpY29uTG9hZGVkOiBPYnNlcnZhYmxlPElneEljb25Mb2FkZWRFdmVudD47XG5cbiAgICBwcml2YXRlIF9mYW1pbHkgPSAnbWF0ZXJpYWwtaWNvbnMnO1xuICAgIHByaXZhdGUgX2ZhbWlseUFsaWFzZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIHByaXZhdGUgX2NhY2hlZFN2Z0ljb25zID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFNhZmVIdG1sPj4oKTtcbiAgICBwcml2YXRlIF9pY29uTG9hZGVkID0gbmV3IFN1YmplY3Q8SWd4SWNvbkxvYWRlZEV2ZW50PigpO1xuICAgIHByaXZhdGUgX2RvbVBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueVxuICAgICkge1xuICAgICAgICB0aGlzLmljb25Mb2FkZWQgPSB0aGlzLl9pY29uTG9hZGVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBkZWZhdWx0IGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGRlZmF1bHRGYW1pbHkgPSB0aGlzLmljb25TZXJ2aWNlLmRlZmF1bHRGYW1pbHk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBkZWZhdWx0RmFtaWx5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mYW1pbHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFNldHMgdGhlIGRlZmF1bHQgZm9udC1mYW1pbHkuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5kZWZhdWx0RmFtaWx5ID0gJ3N2Zy1mbGFncyc7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBkZWZhdWx0RmFtaWx5KGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZhbWlseSA9IGNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmVnaXN0ZXJzIGEgY3VzdG9tIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gSWd4SWNvbkNvbXBvbmVudCBmb3IgYSBnaXZlbiBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyRmFtaWx5QWxpYXMoJ21hdGVyaWFsJywgJ21hdGVyaWFsLWljb25zJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyRmFtaWx5QWxpYXMoYWxpYXM6IHN0cmluZywgY2xhc3NOYW1lOiBzdHJpbmcgPSBhbGlhcyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9mYW1pbHlBbGlhc2VzLnNldChhbGlhcywgY2xhc3NOYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgdGhlIGN1c3RvbSBjbGFzcywgaWYgYW55LCBhc3NvY2lhdGVkIHRvIGEgZ2l2ZW4gZm9udC1mYW1pbHkuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgY29uc3QgZmFtaWx5Q2xhc3MgPSB0aGlzLmljb25TZXJ2aWNlLmZhbWlseUNsYXNzTmFtZSgnbWF0ZXJpYWwnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZmFtaWx5Q2xhc3NOYW1lKGFsaWFzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmFtaWx5QWxpYXNlcy5nZXQoYWxpYXMpIHx8IGFsaWFzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBBZGRzIGFuIFNWRyBpbWFnZSB0byB0aGUgY2FjaGUuIFNWRyBzb3VyY2UgaXMgYW4gdXJsLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIHRoaXMuaWNvblNlcnZpY2UuYWRkU3ZnSWNvbignYXJ1YmEnLCAnL2Fzc2V0cy9zdmcvY291bnRyeV9mbGFncy9hcnViYS5zdmcnLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFkZFN2Z0ljb24obmFtZTogc3RyaW5nLCB1cmw6IHN0cmluZywgZmFtaWx5ID0gdGhpcy5fZmFtaWx5LCBzdHJpcE1ldGEgPSBmYWxzZSkge1xuICAgICAgICBpZiAobmFtZSAmJiB1cmwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCk7XG4gICAgICAgICAgICBpZiAoIXNhZmVVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm92aWRlZCBVUkwgY291bGQgbm90IGJlIHByb2Nlc3NlZCBhcyB0cnVzdGVkIHJlc291cmNlIFVSTCBieSBBbmd1bGFyJ3MgRG9tU2FuaXRpemVyOiBcIiR7dXJsfVwiLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LlJFU09VUkNFX1VSTCwgc2FmZVVybCk7XG4gICAgICAgICAgICBpZiAoIXNhbml0aXplZFVybCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIFVSTCBwcm92aWRlZCB3YXMgbm90IHRydXN0ZWQgYXMgYSByZXNvdXJjZSBVUkw6IFwiJHt1cmx9XCIuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pc1N2Z0ljb25DYWNoZWQobmFtZSwgZmFtaWx5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hTdmcodXJsKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlU3ZnSWNvbihuYW1lLCByZXMsIGZhbWlseSwgc3RyaXBNZXRhKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faWNvbkxvYWRlZC5uZXh0KHsgbmFtZSwgdmFsdWU6IHJlcywgZmFtaWx5IH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYG5hbWVgIGFuZCBgdXJsYCB0byByZWdpc3RlciBhbiBzdmcgaWNvbi4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBBZGRzIGFuIFNWRyBpbWFnZSB0byB0aGUgY2FjaGUuIFNWRyBzb3VyY2UgaXMgaXRzIHRleHQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uRnJvbVRleHQoJ3NpbXBsZScsICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwMCAyMDBcIj5cbiAgICAgKiAgIDxwYXRoIGQ9XCJNNzQgNzRoNTR2NTRINzRcIiAvPjwvc3ZnPicsICdzdmctZmxhZ3MnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkU3ZnSWNvbkZyb21UZXh0KG5hbWU6IHN0cmluZywgaWNvblRleHQ6IHN0cmluZywgZmFtaWx5OiBzdHJpbmcgPSAnJywgc3RyaXBNZXRhID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgaWNvblRleHQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3ZnSWNvbkNhY2hlZChuYW1lLCBmYW1pbHkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNhY2hlU3ZnSWNvbihuYW1lLCBpY29uVGV4dCwgZmFtaWx5LCBzdHJpcE1ldGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYG5hbWVgIGFuZCBgaWNvblRleHRgIHRvIHJlZ2lzdGVyIGFuIHN2ZyBpY29uLicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgd2hldGhlciBhIGdpdmVuIFNWRyBpbWFnZSBpcyBwcmVzZW50IGluIHRoZSBjYWNoZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICBjb25zdCBpc1N2Z0NhY2hlZCA9IHRoaXMuaWNvblNlcnZpY2UuaXNTdmdJY29uQ2FjaGVkKCdhcnViYScsICdzdmctZmxhZ3MnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNTdmdJY29uQ2FjaGVkKG5hbWU6IHN0cmluZywgZmFtaWx5OiBzdHJpbmcgPSAnJyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmYW1pbHlDbGFzc05hbWUgPSB0aGlzLmZhbWlseUNsYXNzTmFtZShmYW1pbHkpO1xuICAgICAgICBpZiAodGhpcy5fY2FjaGVkU3ZnSWNvbnMuaGFzKGZhbWlseUNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZhbWlseVJlZ2lzdHJ5ID0gdGhpcy5fY2FjaGVkU3ZnSWNvbnMuZ2V0KGZhbWlseUNsYXNzTmFtZSkgYXMgTWFwPHN0cmluZywgU2FmZUh0bWw+O1xuICAgICAgICAgICAgcmV0dXJuIGZhbWlseVJlZ2lzdHJ5LmhhcyhuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB0aGUgY2FjaGVkIFNWRyBpbWFnZSBhcyBzdHJpbmcuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgY29uc3Qgc3ZnSWNvbiA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0U3ZnSWNvbignYXJ1YmEnLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFN2Z0ljb24obmFtZTogc3RyaW5nLCBmYW1pbHk6IHN0cmluZyA9ICcnKSB7XG4gICAgICAgIGNvbnN0IGZhbWlseUNsYXNzTmFtZSA9IHRoaXMuZmFtaWx5Q2xhc3NOYW1lKGZhbWlseSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRTdmdJY29ucy5nZXQoZmFtaWx5Q2xhc3NOYW1lKT8uZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZldGNoU3ZnKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcmVxID0gdGhpcy5faHR0cENsaWVudC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pO1xuICAgICAgICByZXR1cm4gcmVxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNhY2hlU3ZnSWNvbihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGZhbWlseSA9IHRoaXMuX2ZhbWlseSwgc3RyaXBNZXRhOiBib29sZWFuKSB7XG4gICAgICAgIGZhbWlseSA9ICEhZmFtaWx5ID8gZmFtaWx5IDogdGhpcy5fZmFtaWx5O1xuXG4gICAgICAgIGlmIChuYW1lICYmIHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSB0aGlzLl9kb21QYXJzZXIucGFyc2VGcm9tU3RyaW5nKHZhbHVlLCAnaW1hZ2Uvc3ZnK3htbCcpO1xuICAgICAgICAgICAgY29uc3Qgc3ZnID0gZG9jLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpIGFzIFNWR0VsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkU3ZnSWNvbnMuaGFzKGZhbWlseSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRTdmdJY29ucy5zZXQoZmFtaWx5LCBuZXcgTWFwPHN0cmluZywgU2FmZUh0bWw+KCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3ZnKSB7XG4gICAgICAgICAgICAgICAgc3ZnLnNldEF0dHJpYnV0ZSgnZml0JywgJycpO1xuICAgICAgICAgICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAneE1pZFlNaWQgbWVldCcpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHN0cmlwTWV0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IHN2Zy5xdWVyeVNlbGVjdG9yKCd0aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0gc3ZnLnF1ZXJ5U2VsZWN0b3IoJ2Rlc2MnKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN2Zy5yZW1vdmVDaGlsZCh0aXRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVzYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnLnJlbW92ZUNoaWxkKGRlc2MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2FmZVN2ZyA9IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChzdmcub3V0ZXJIVE1MKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRTdmdJY29ucy5nZXQoZmFtaWx5KS5zZXQobmFtZSwgc2FmZVN2Zyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFlN0M7Ozs7Ozs7Ozs7O0dBV0c7QUFJSCxNQUFNLE9BQU8sY0FBYztJQWtCdkIsWUFDd0IsVUFBd0IsRUFDeEIsV0FBdUIsRUFDdkIsYUFBMkIsRUFDVCxTQUFjOztRQUhoQyxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQ1QsY0FBUyxHQUFULFNBQVMsQ0FBSztRQVZoRCxZQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFDM0IsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUMzQyxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQzNELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQXNCLENBQUM7UUFTcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWxELElBQUcsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxTQUFTLEVBQUU7WUFD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YWJsZSwgU2VjdXJpdHlDb250ZXh0LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGxhdGZvcm1VdGlsIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgU1ZHIGljb24gaXMgbG9hZGVkIHRocm91Z2hcbiAqIGEgSFRUUCByZXF1ZXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElneEljb25Mb2FkZWRFdmVudCB7XG4gICAgLyoqIE5hbWUgb2YgdGhlIGljb24gKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBhY3R1YWwgU1ZHIHRleHQgKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgZm9udC1mYW1pbHkgZm9yIHRoZSBpY29uLiBEZWZhdWx0cyB0byBtYXRlcmlhbC4gKi9cbiAgICBmYW1pbHk6IHN0cmluZztcbn1cblxuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBJY29uIFNlcnZpY2UqKiAtXG4gKlxuICogVGhlIElnbml0ZSBVSSBJY29uIFNlcnZpY2UgbWFrZXMgaXQgZWFzeSBmb3IgZGV2ZWxvcGVycyB0byBpbmNsdWRlIGN1c3RvbSBTVkcgaW1hZ2VzIGFuZCB1c2UgdGhlbSB3aXRoIElneEljb25Db21wb25lbnQuXG4gKiBJbiBhZGRpdGlvbiBpdCBjb3VsZCBiZSB1c2VkIHRvIGFzc29jaWF0ZSBhIGN1c3RvbSBjbGFzcyB0byBiZSBhcHBsaWVkIG9uIElneEljb25Db21wb25lbnQgYWNjb3JkaW5nIHRvIGdpdmVuIGZvbnQtZmFtaWx5LlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyRmFtaWx5QWxpYXMoJ21hdGVyaWFsJywgJ21hdGVyaWFsLWljb25zJyk7XG4gKiB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb24oJ2FydWJhJywgJy9hc3NldHMvc3ZnL2NvdW50cnlfZmxhZ3MvYXJ1YmEuc3ZnJywgJ3N2Zy1mbGFncycpO1xuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4SWNvblNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGFuIGljb24gaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZFxuICAgICAqIHRocm91Z2ggYSBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnNlcnZpY2UuaWNvbkxvYWRlZC5zdWJzY3JpYmUoKGV2OiBJZ3hJY29uTG9hZGVkRXZlbnQpID0+IC4uLik7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGljb25Mb2FkZWQ6IE9ic2VydmFibGU8SWd4SWNvbkxvYWRlZEV2ZW50PjtcblxuICAgIHByaXZhdGUgX2ZhbWlseSA9ICdtYXRlcmlhbC1pY29ucyc7XG4gICAgcHJpdmF0ZSBfZmFtaWx5QWxpYXNlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBfY2FjaGVkU3ZnSWNvbnMgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgU2FmZUh0bWw+PigpO1xuICAgIHByaXZhdGUgX2ljb25Mb2FkZWQgPSBuZXcgU3ViamVjdDxJZ3hJY29uTG9hZGVkRXZlbnQ+KCk7XG4gICAgcHJpdmF0ZSBfZG9tUGFyc2VyOiBET01QYXJzZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2h0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BsYXRmb3JtVXRpbDogUGxhdGZvcm1VdGlsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55LFxuICAgICkge1xuICAgICAgICB0aGlzLmljb25Mb2FkZWQgPSB0aGlzLl9pY29uTG9hZGVkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgICAgIGlmKHRoaXMuX3BsYXRmb3JtVXRpbD8uaXNCcm93c2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9kb21QYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB0aGUgZGVmYXVsdCBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICBjb25zdCBkZWZhdWx0RmFtaWx5ID0gdGhpcy5pY29uU2VydmljZS5kZWZhdWx0RmFtaWx5O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGVmYXVsdEZhbWlseSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmFtaWx5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBTZXRzIHRoZSBkZWZhdWx0IGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIHRoaXMuaWNvblNlcnZpY2UuZGVmYXVsdEZhbWlseSA9ICdzdmctZmxhZ3MnO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgZGVmYXVsdEZhbWlseShjbGFzc05hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9mYW1pbHkgPSBjbGFzc05hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJlZ2lzdGVycyBhIGN1c3RvbSBjbGFzcyB0byBiZSBhcHBsaWVkIHRvIElneEljb25Db21wb25lbnQgZm9yIGEgZ2l2ZW4gZm9udC1mYW1pbHkuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckZhbWlseUFsaWFzKCdtYXRlcmlhbCcsICdtYXRlcmlhbC1pY29ucycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3RlckZhbWlseUFsaWFzKGFsaWFzOiBzdHJpbmcsIGNsYXNzTmFtZTogc3RyaW5nID0gYWxpYXMpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmFtaWx5QWxpYXNlcy5zZXQoYWxpYXMsIGNsYXNzTmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBjdXN0b20gY2xhc3MsIGlmIGFueSwgYXNzb2NpYXRlZCB0byBhIGdpdmVuIGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGZhbWlseUNsYXNzID0gdGhpcy5pY29uU2VydmljZS5mYW1pbHlDbGFzc05hbWUoJ21hdGVyaWFsJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGZhbWlseUNsYXNzTmFtZShhbGlhczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbWlseUFsaWFzZXMuZ2V0KGFsaWFzKSB8fCBhbGlhcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBTVkcgaW1hZ2UgdG8gdGhlIGNhY2hlLiBTVkcgc291cmNlIGlzIGFuIHVybC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb24oJ2FydWJhJywgJy9hc3NldHMvc3ZnL2NvdW50cnlfZmxhZ3MvYXJ1YmEuc3ZnJywgJ3N2Zy1mbGFncycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRTdmdJY29uKG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcsIGZhbWlseSA9IHRoaXMuX2ZhbWlseSwgc3RyaXBNZXRhID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgdXJsKSB7XG4gICAgICAgICAgICBjb25zdCBzYWZlVXJsID0gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xuICAgICAgICAgICAgaWYgKCFzYWZlVXJsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcHJvdmlkZWQgVVJMIGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQgYXMgdHJ1c3RlZCByZXNvdXJjZSBVUkwgYnkgQW5ndWxhcidzIERvbVNhbml0aXplcjogXCIke3VybH1cIi5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2FuaXRpemVkVXJsID0gdGhpcy5fc2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5SRVNPVVJDRV9VUkwsIHNhZmVVcmwpO1xuICAgICAgICAgICAgaWYgKCFzYW5pdGl6ZWRVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBVUkwgcHJvdmlkZWQgd2FzIG5vdCB0cnVzdGVkIGFzIGEgcmVzb3VyY2UgVVJMOiBcIiR7dXJsfVwiLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTdmdJY29uQ2FjaGVkKG5hbWUsIGZhbWlseSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoU3ZnKHVybCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZVN2Z0ljb24obmFtZSwgcmVzLCBmYW1pbHksIHN0cmlwTWV0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ljb25Mb2FkZWQubmV4dCh7IG5hbWUsIHZhbHVlOiByZXMsIGZhbWlseSB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IHNob3VsZCBwcm92aWRlIGF0IGxlYXN0IGBuYW1lYCBhbmQgYHVybGAgdG8gcmVnaXN0ZXIgYW4gc3ZnIGljb24uJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBTVkcgaW1hZ2UgdG8gdGhlIGNhY2hlLiBTVkcgc291cmNlIGlzIGl0cyB0ZXh0LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIHRoaXMuaWNvblNlcnZpY2UuYWRkU3ZnSWNvbkZyb21UZXh0KCdzaW1wbGUnLCAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMDAgMjAwXCI+XG4gICAgICogICA8cGF0aCBkPVwiTTc0IDc0aDU0djU0SDc0XCIgLz48L3N2Zz4nLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFkZFN2Z0ljb25Gcm9tVGV4dChuYW1lOiBzdHJpbmcsIGljb25UZXh0OiBzdHJpbmcsIGZhbWlseTogc3RyaW5nID0gJycsIHN0cmlwTWV0YSA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChuYW1lICYmIGljb25UZXh0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1N2Z0ljb25DYWNoZWQobmFtZSwgZmFtaWx5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jYWNoZVN2Z0ljb24obmFtZSwgaWNvblRleHQsIGZhbWlseSwgc3RyaXBNZXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IHNob3VsZCBwcm92aWRlIGF0IGxlYXN0IGBuYW1lYCBhbmQgYGljb25UZXh0YCB0byByZWdpc3RlciBhbiBzdmcgaWNvbi4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHdoZXRoZXIgYSBnaXZlbiBTVkcgaW1hZ2UgaXMgcHJlc2VudCBpbiB0aGUgY2FjaGUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgY29uc3QgaXNTdmdDYWNoZWQgPSB0aGlzLmljb25TZXJ2aWNlLmlzU3ZnSWNvbkNhY2hlZCgnYXJ1YmEnLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGlzU3ZnSWNvbkNhY2hlZChuYW1lOiBzdHJpbmcsIGZhbWlseTogc3RyaW5nID0gJycpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZmFtaWx5Q2xhc3NOYW1lID0gdGhpcy5mYW1pbHlDbGFzc05hbWUoZmFtaWx5KTtcbiAgICAgICAgaWYgKHRoaXMuX2NhY2hlZFN2Z0ljb25zLmhhcyhmYW1pbHlDbGFzc05hbWUpKSB7XG4gICAgICAgICAgICBjb25zdCBmYW1pbHlSZWdpc3RyeSA9IHRoaXMuX2NhY2hlZFN2Z0ljb25zLmdldChmYW1pbHlDbGFzc05hbWUpIGFzIE1hcDxzdHJpbmcsIFNhZmVIdG1sPjtcbiAgICAgICAgICAgIHJldHVybiBmYW1pbHlSZWdpc3RyeS5oYXMobmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgdGhlIGNhY2hlZCBTVkcgaW1hZ2UgYXMgc3RyaW5nLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IHN2Z0ljb24gPSB0aGlzLmljb25TZXJ2aWNlLmdldFN2Z0ljb24oJ2FydWJhJywgJ3N2Zy1mbGFncycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdmdJY29uKG5hbWU6IHN0cmluZywgZmFtaWx5OiBzdHJpbmcgPSAnJykge1xuICAgICAgICBjb25zdCBmYW1pbHlDbGFzc05hbWUgPSB0aGlzLmZhbWlseUNsYXNzTmFtZShmYW1pbHkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkU3ZnSWNvbnMuZ2V0KGZhbWlseUNsYXNzTmFtZSk/LmdldChuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBmZXRjaFN2Zyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHJlcSA9IHRoaXMuX2h0dHBDbGllbnQuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KTtcbiAgICAgICAgcmV0dXJuIHJlcTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjYWNoZVN2Z0ljb24obmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBmYW1pbHkgPSB0aGlzLl9mYW1pbHksIHN0cmlwTWV0YTogYm9vbGVhbikge1xuICAgICAgICBmYW1pbHkgPSAhIWZhbWlseSA/IGZhbWlseSA6IHRoaXMuX2ZhbWlseTtcblxuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm1VdGlsPy5pc0Jyb3dzZXIgJiYgbmFtZSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZG9jID0gdGhpcy5fZG9tUGFyc2VyLnBhcnNlRnJvbVN0cmluZyh2YWx1ZSwgJ2ltYWdlL3N2Zyt4bWwnKTtcbiAgICAgICAgICAgIGNvbnN0IHN2ZyA9IGRvYy5xdWVyeVNlbGVjdG9yKCdzdmcnKSBhcyBTVkdFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZFN2Z0ljb25zLmhhcyhmYW1pbHkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkU3ZnSWNvbnMuc2V0KGZhbWlseSwgbmV3IE1hcDxzdHJpbmcsIFNhZmVIdG1sPigpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN2Zykge1xuICAgICAgICAgICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoJ2ZpdCcsICcnKTtcbiAgICAgICAgICAgICAgICBzdmcuc2V0QXR0cmlidXRlKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ3hNaWRZTWlkIG1lZXQnKTtcblxuICAgICAgICAgICAgICAgIGlmIChzdHJpcE1ldGEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBzdmcucXVlcnlTZWxlY3RvcigndGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IHN2Zy5xdWVyeVNlbGVjdG9yKCdkZXNjJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdmcucmVtb3ZlQ2hpbGQodGl0bGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN2Zy5yZW1vdmVDaGlsZChkZXNjKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVTdmcgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3ZnLm91dGVySFRNTCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkU3ZnSWNvbnMuZ2V0KGZhbWlseSkuc2V0KG5hbWUsIHNhZmVTdmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -106,4 +106,4 @@ export class Util {
106
106
  return clonedObj;
107
107
  }
108
108
  }
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL292ZXJsYXkvdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBbUQsVUFBVSxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBSy9HLE1BQU0sQ0FBTixJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDM0IsOERBQVMsQ0FBQTtJQUNULG9FQUFhLENBQUE7SUFDYiwrREFBUyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFJOUI7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQ3pCLHdEQUFRLENBQUE7SUFDUixnRUFBYSxDQUFBO0lBQ2IsNkRBQVUsQ0FBQTtBQUNkLENBQUMsRUFKVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSTVCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSx3QkFJWDtBQUpELFdBQVksd0JBQXdCO0lBQ2hDLG1EQUF1QixDQUFBO0lBQ3ZCLHlDQUFhLENBQUE7SUFDYiwrQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSlcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQUluQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksZ0JBTVg7QUFORCxXQUFZLGdCQUFnQjtJQUN4QixtQ0FBZSxDQUFBO0lBQ2YsbUNBQWUsQ0FBQTtJQUNmLHFDQUFpQixDQUFBO0lBQ2pCLG1DQUFlLENBQUE7SUFDZix1Q0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBTlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU0zQjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUN4QixxQ0FBaUIsQ0FBQTtJQUNqQiwrQkFBVyxDQUFBO0lB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U0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvblBsYXllciwgQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRWxlbWVudFJlZiwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncywgY2xvbmVWYWx1ZSwgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneE92ZXJsYXlPdXRsZXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9wb3NpdGlvbi9JUG9zaXRpb25TdHJhdGVneSc7XG5pbXBvcnQgeyBJU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICcuL3Njcm9sbCc7XG5cbmV4cG9ydCBlbnVtIEhvcml6b250YWxBbGlnbm1lbnQge1xuICAgIExlZnQgPSAtMSxcbiAgICBDZW50ZXIgPSAtMC41LFxuICAgIFJpZ2h0ID0gMFxufVxuXG5leHBvcnQgZW51bSBWZXJ0aWNhbEFsaWdubWVudCB7XG4gICAgVG9wID0gLTEsXG4gICAgTWlkZGxlID0gLTAuNSxcbiAgICBCb3R0b20gPSAwXG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzIG9mIHRoZSBvdmVybGF5cycgcG9zaXRpb24gc3RyYXRlZ3kuXG4gKi9cbmV4cG9ydCBlbnVtIFJlbGF0aXZlUG9zaXRpb25TdHJhdGVneSB7XG4gICAgQ29ubmVjdGVkID0gJ2Nvbm5lY3RlZCcsXG4gICAgQXV0byA9ICdhdXRvJyxcbiAgICBFbGFzdGljID0gJ2VsYXN0aWMnXG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgcG9zc2libGUgcG9zaXRpb25zIGZvciB0aGUgcmVsYXRpdmUgb3ZlcmxheSBzZXR0aW5ncyBwcmVzZXRzLlxuICovXG5leHBvcnQgZW51bSBSZWxhdGl2ZVBvc2l0aW9uIHtcbiAgICBBYm92ZSA9ICdhYm92ZScsXG4gICAgQmVsb3cgPSAnYmVsb3cnLFxuICAgIEJlZm9yZSA9ICdiZWZvcmUnLFxuICAgIEFmdGVyID0gJ2FmdGVyJyxcbiAgICBEZWZhdWx0ID0gJ2RlZmF1bHQnXG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgcG9zc2libGUgcG9zaXRpb25zIGZvciB0aGUgYWJzb2x1dGUgb3ZlcmxheSBzZXR0aW5ncyBwcmVzZXRzLlxuICovXG5leHBvcnQgZW51bSBBYnNvbHV0ZVBvc2l0aW9uIHtcbiAgICBCb3R0b20gPSAnYm90dG9tJyxcbiAgICBUb3AgPSAndG9wJyxcbiAgICBDZW50ZXIgPSAnY2VudGVyJ1xufVxuXG4vLyBUT0RPOiBtYWtlIHRoaXMgaW50ZXJmYWNlXG5leHBvcnQgY2xhc3MgUG9pbnQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB4OiBudW1iZXIsIHB1YmxpYyB5OiBudW1iZXIpIHsgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdXRPZlZpZXdQb3J0IHtcbiAgICAvKiogT3V0IG9mIHZpZXcgcG9ydCBhdCBUb3Agb3IgTGVmdCAqL1xuICAgIGJhY2s6IG51bWJlcjtcbiAgICAvKiogT3V0IG9mIHZpZXcgcG9ydCBhdCBCb3R0b20gb3IgUmlnaHQgKi9cbiAgICBmb3J3YXJkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb25TZXR0aW5ncyB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgU2V0IHRoZSB0YXJnZXQgcG9pbnQvZWxlbWVudCBpbiB0aGUgb3ZlcmxheSBzZXR0aW5ncyBpbnN0ZWFkLlxuICAgICAqIEF0dGFjaGluZyB0YXJnZXQgZm9yIHRoZSBjb21wb25lbnQgdG8gc2hvd1xuICAgICAqL1xuICAgIHRhcmdldD86IFBvaW50IHwgSFRNTEVsZW1lbnQ7XG4gICAgLyoqIERpcmVjdGlvbiBpbiB3aGljaCB0aGUgY29tcG9uZW50IHNob3VsZCBzaG93ICovXG4gICAgaG9yaXpvbnRhbERpcmVjdGlvbj86IEhvcml6b250YWxBbGlnbm1lbnQ7XG4gICAgLyoqIERpcmVjdGlvbiBpbiB3aGljaCB0aGUgY29tcG9uZW50IHNob3VsZCBzaG93ICovXG4gICAgdmVydGljYWxEaXJlY3Rpb24/OiBWZXJ0aWNhbEFsaWdubWVudDtcbiAgICAvKiogVGFyZ2V0J3Mgc3RhcnRpbmcgcG9pbnQgKi9cbiAgICBob3Jpem9udGFsU3RhcnRQb2ludD86IEhvcml6b250YWxBbGlnbm1lbnQ7XG4gICAgLyoqIFRhcmdldCdzIHN0YXJ0aW5nIHBvaW50ICovXG4gICAgdmVydGljYWxTdGFydFBvaW50PzogVmVydGljYWxBbGlnbm1lbnQ7XG4gICAgLyoqIEFuaW1hdGlvbiBhcHBsaWVkIHdoaWxlIG92ZXJsYXkgb3BlbnMgKi9cbiAgICBvcGVuQW5pbWF0aW9uPzogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGE7XG4gICAgLyoqIEFuaW1hdGlvbiBhcHBsaWVkIHdoaWxlIG92ZXJsYXkgY2xvc2VzICovXG4gICAgY2xvc2VBbmltYXRpb24/OiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YTtcbiAgICAvKiogVGhlIHNpemUgdXAgdG8gd2hpY2ggZWxlbWVudCBtYXkgc2hyaW5rIHdoZW4gc2hvd24gaW4gZWxhc3RpYyBwb3NpdGlvbiBzdHJhdGVneSAqL1xuICAgIG1pblNpemU/OiBTaXplO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJsYXlTZXR0aW5ncyB7XG4gICAgLyoqIEF0dGFjaGluZyB0YXJnZXQgZm9yIHRoZSBjb21wb25lbnQgdG8gc2hvdyAqL1xuICAgIHRhcmdldD86IFBvaW50IHwgSFRNTEVsZW1lbnQ7XG4gICAgLyoqIFBvc2l0aW9uIHN0cmF0ZWd5IHRvIHVzZSB3aXRoIHRoZXNlIHNldHRpbmdzICovXG4gICAgcG9zaXRpb25TdHJhdGVneT86IElQb3NpdGlvblN0cmF0ZWd5O1xuICAgIC8qKiBTY3JvbGwgc3RyYXRlZ3kgdG8gdXNlIHdpdGggdGhlc2Ugc2V0dGluZ3MgKi9cbiAgICBzY3JvbGxTdHJhdGVneT86IElTY3JvbGxTdHJhdGVneTtcbiAgICAvKiogU2V0IGlmIHRoZSBvdmVybGF5IHNob3VsZCBiZSBpbiBtb2RhbCBtb2RlICovXG4gICAgbW9kYWw/OiBib29sZWFuO1xuICAgIC8qKiBTZXQgaWYgdGhlIG92ZXJsYXkgc2hvdWxkIGNsb3NlIG9uIG91dHNpZGUgY2xpY2sgKi9cbiAgICBjbG9zZU9uT3V0c2lkZUNsaWNrPzogYm9vbGVhbjtcbiAgICAvKiogU2V0IGlmIHRoZSBvdmVybGF5IHNob3VsZCBjbG9zZSB3aGVuIGBFc2NgIGtleSBpcyBwcmVzc2VkICovXG4gICAgY2xvc2VPbkVzY2FwZT86IGJvb2xlYW47XG4gICAgLyoqIFNldCB0aGUgb3V0bGV0IGNvbnRhaW5lciB0byBhdHRhY2ggdGhlIG92ZXJsYXkgdG8gKi9cbiAgICBvdXRsZXQ/OiBJZ3hPdmVybGF5T3V0bGV0RGlyZWN0aXZlIHwgRWxlbWVudFJlZjtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIEVsZW1lbnRzIHRvIGJlIGV4Y2x1ZGVkIGZvciBjbG9zZU9uT3V0c2lkZUNsaWNrLlxuICAgICAqIENsaWNraW5nIG9uIHRoZSBlbGVtZW50cyBpbiB0aGlzIGNvbGxlY3Rpb24gd2lsbCBub3QgY2xvc2UgdGhlIG92ZXJsYXkgd2hlbiBjbG9zZU9uT3V0c2lkZUNsaWNrID0gdHJ1ZS5cbiAgICAgKi9cbiAgICBleGNsdWRlRnJvbU91dHNpZGVDbGljaz86IEhUTUxFbGVtZW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogSWQgb2YgdGhlIG92ZXJsYXkgZ2VuZXJhdGVkIHdpdGggYGF0dGFjaCgpYCBtZXRob2QgKi9cbiAgICBpZDogc3RyaW5nO1xuICAgIC8qKiBBdmFpbGFibGUgd2hlbiBgVHlwZTxUPmAgaXMgcHJvdmlkZWQgdG8gdGhlIGBhdHRhY2goKWAgbWV0aG9kIGFuZCBhbGxvd3MgYWNjZXNzIHRvIHRoZSBjcmVhdGVkIENvbXBvbmVudCBpbnN0YW5jZSAqL1xuICAgIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xuICAgIC8qKiBXaWxsIHByb3ZpZGUgdGhlIG9yaWdpbmFsIGtleWJvYXJkIGV2ZW50IGlmIGNsb3NlZCBmcm9tIEVTQyBvciBjbGljayAqL1xuICAgIGV2ZW50PzogRXZlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUNhbmNlbGFibGVFdmVudEFyZ3MgZXh0ZW5kcyBPdmVybGF5RXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5Q2xvc2luZ0V2ZW50QXJncyBleHRlbmRzIE92ZXJsYXlFdmVudEFyZ3MsIENhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5QW5pbWF0aW9uRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBJZCBvZiB0aGUgb3ZlcmxheSBnZW5lcmF0ZWQgd2l0aCBgYXR0YWNoKClgIG1ldGhvZCAqL1xuICAgIGlkOiBzdHJpbmc7XG4gICAgLyoqIEFuaW1hdGlvbiBwbGF5ZXIgdGhhdCB3aWxsIHBsYXkgdGhlIGFuaW1hdGlvbiAqL1xuICAgIGFuaW1hdGlvblBsYXllcjogQW5pbWF0aW9uUGxheWVyO1xuICAgIC8qKiBUeXBlIG9mIGFuaW1hdGlvbiB0byBiZSBwbGF5ZWQuIEl0IHNob3VsZCBiZSBlaXRoZXIgJ29wZW4nIG9yICdjbG9zZScgKi9cbiAgICBhbmltYXRpb25UeXBlOiAnb3BlbicgfCAnY2xvc2UnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpemUge1xuICAgIC8qKiBHZXRzIG9yIHNldHMgdGhlIGhvcml6b250YWwgY29tcG9uZW50IG9mIFNpemUgKi9cbiAgICB3aWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIEdldHMgb3Igc2V0cyB0aGUgdmVydGljYWwgY29tcG9uZW50IG9mIFNpemUgKi9cbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUluZm8ge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIHZpc2libGU/OiBib29sZWFuO1xuICAgIGRldGFjaGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50UmVmPzogRWxlbWVudFJlZjtcbiAgICBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcbiAgICBzZXR0aW5ncz86IE92ZXJsYXlTZXR0aW5ncztcbiAgICBpbml0aWFsU2l6ZT86IFNpemU7XG4gICAgaG9vaz86IEhUTUxFbGVtZW50O1xuICAgIG9wZW5BbmltYXRpb25QbGF5ZXI/OiBBbmltYXRpb25QbGF5ZXI7XG4gICAgb3BlbkFuaW1hdGlvbklubmVyUGxheWVyPzogYW55O1xuICAgIC8vIGNhbGxpbmcgYW5pbWF0aW9uLmRlc3Ryb3kgaW4gZGV0YWNoIGZpcmVzIGFuaW1hdGlvbi5kb25lLiBUaGlzIHNob3VsZCBub3QgaGFwcGVuXG4gICAgLy8gdGhpcyBpcyB3aHkgd2Ugc2hvdWxkIHRyYWNlIGlmIGFuaW1hdGlvbiBldmVyIHN0YXJ0ZWRcbiAgICBvcGVuQW5pbWF0aW9uRGV0YWNoaW5nPzogYm9vbGVhbjtcbiAgICBjbG9zZUFuaW1hdGlvblBsYXllcj86IEFuaW1hdGlvblBsYXllcjtcbiAgICAvLyBjYWxsaW5nIGFuaW1hdGlvbi5kZXN0cm95IGluIGRldGFjaCBmaXJlcyBhbmltYXRpb24uZG9uZS4gVGhpcyBzaG91bGQgbm90IGhhcHBlblxuICAgIC8vIHRoaXMgaXMgd2h5IHdlIHNob3VsZCB0cmFjZSBpZiBhbmltYXRpb24gZXZlciBzdGFydGVkXG4gICAgY2xvc2VBbmltYXRpb25EZXRhY2hpbmc/OiBib29sZWFuO1xuICAgIGNsb3NlQW5pbWF0aW9uSW5uZXJQbGF5ZXI/OiBhbnk7XG4gICAgbmdab25lOiBOZ1pvbmU7XG4gICAgdHJhbnNmb3JtWD86IG51bWJlcjtcbiAgICB0cmFuc2Zvcm1ZPzogbnVtYmVyO1xuICAgIGV2ZW50PzogRXZlbnQ7XG4gICAgd3JhcHBlckVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGVkRml0IHtcbiAgICBjb250ZW50RWxlbWVudFJlY3Q/OiBDbGllbnRSZWN0O1xuICAgIHRhcmdldFJlY3Q/OiBDbGllbnRSZWN0O1xuICAgIHZpZXdQb3J0UmVjdD86IENsaWVudFJlY3Q7XG4gICAgZml0SG9yaXpvbnRhbD86IE91dE9mVmlld1BvcnQ7XG4gICAgZml0VmVydGljYWw/OiBPdXRPZlZpZXdQb3J0O1xuICAgIGxlZnQ/OiBudW1iZXI7XG4gICAgcmlnaHQ/OiBudW1iZXI7XG4gICAgdG9wPzogbnVtYmVyO1xuICAgIGJvdHRvbT86IG51bWJlcjtcbiAgICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyO1xuICAgIHZlcnRpY2FsT2Zmc2V0PzogbnVtYmVyO1xufVxuXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjbGFzcyBVdGlsIHtcbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSByZWN0YW5nbGUgb2YgdGFyZ2V0IGZvciBwcm92aWRlZCBvdmVybGF5IHNldHRpbmdzLiBEZWZhdWx0cyB0byAwLDAsMCwwLDAsMCByZWN0YW5nbGVcbiAgICAgKiBpZiBubyB0YXJnZXQgaXMgcHJvdmlkZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZXR0aW5ncyBPdmVybGF5IHNldHRpbmdzIGZvciB3aGljaCB0byBjYWxjdWxhdGUgdGFyZ2V0IHJlY3RhbmdsZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VGFyZ2V0UmVjdCh0YXJnZXQ/OiBQb2ludCB8IEhUTUxFbGVtZW50KTogQ2xpZW50UmVjdCB7XG4gICAgICAgIGxldCB0YXJnZXRSZWN0OiBDbGllbnRSZWN0ID0ge1xuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgd2lkdGg6IDBcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRhcmdldFJlY3QgPSAodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBQb2ludCkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSB0YXJnZXQgYXMgUG9pbnQ7XG4gICAgICAgICAgICB0YXJnZXRSZWN0ID0ge1xuICAgICAgICAgICAgICAgIGJvdHRvbTogdGFyZ2V0UG9pbnQueSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgbGVmdDogdGFyZ2V0UG9pbnQueCxcbiAgICAgICAgICAgICAgICByaWdodDogdGFyZ2V0UG9pbnQueCxcbiAgICAgICAgICAgICAgICB0b3A6IHRhcmdldFBvaW50LnksXG4gICAgICAgICAgICAgICAgd2lkdGg6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFyZ2V0UmVjdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFZpZXdwb3J0UmVjdChkb2N1bWVudDogRG9jdW1lbnQpOiBDbGllbnRSZWN0IHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gVXRpbC5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKGRvY3VtZW50KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBzY3JvbGxQb3NpdGlvbi55LFxuICAgICAgICAgICAgbGVmdDogc2Nyb2xsUG9zaXRpb24ueCxcbiAgICAgICAgICAgIHJpZ2h0OiBzY3JvbGxQb3NpdGlvbi54ICsgd2lkdGgsXG4gICAgICAgICAgICBib3R0b206IHNjcm9sbFBvc2l0aW9uLnkgKyBoZWlnaHQsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oZG9jdW1lbnQ6IERvY3VtZW50KTogUG9pbnQge1xuICAgICAgICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50UmVjdCA9IGRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBjb25zdCBob3Jpem9udGFsU2Nyb2xsUG9zaXRpb24gPVxuICAgICAgICAgICAgLWRvY3VtZW50UmVjdC5sZWZ0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCB8fCB3aW5kb3cuc2Nyb2xsWCB8fCBkb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCB8fCAwO1xuICAgICAgICBjb25zdCB2ZXJ0aWNhbFNjcm9sbFBvc2l0aW9uID0gLWRvY3VtZW50UmVjdC50b3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHwgd2luZG93LnNjcm9sbFkgfHwgZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCAwO1xuXG4gICAgICAgIHJldHVybiBuZXcgUG9pbnQoaG9yaXpvbnRhbFNjcm9sbFBvc2l0aW9uLCB2ZXJ0aWNhbFNjcm9sbFBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNsb25lSW5zdGFuY2Uob2JqZWN0KSB7XG4gICAgICAgIGNvbnN0IGNsb25lZE9iaiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KSksIG9iamVjdCk7XG4gICAgICAgIGNsb25lZE9iai5zZXR0aW5ncyA9IGNsb25lVmFsdWUoY2xvbmVkT2JqLnNldHRpbmdzKTtcbiAgICAgICAgcmV0dXJuIGNsb25lZE9iajtcbiAgICB9XG59XG4iXX0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL292ZXJsYXkvdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBbUQsVUFBVSxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBSy9HLE1BQU0sQ0FBTixJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDM0IsOERBQVMsQ0FBQTtJQUNULG9FQUFhLENBQUE7SUFDYiwrREFBUyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFJOUI7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQ3pCLHdEQUFRLENBQUE7SUFDUixnRUFBYSxDQUFBO0lBQ2IsNkRBQVUsQ0FBQTtBQUNkLENBQUMsRUFKVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSTVCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSx3QkFJWDtBQUpELFdBQVksd0JBQXdCO0lBQ2hDLG1EQUF1QixDQUFBO0lBQ3ZCLHlDQUFhLENBQUE7SUFDYiwrQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSlcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQUluQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksZ0JBTVg7QUFORCxXQUFZLGdCQUFnQjtJQUN4QixtQ0FBZSxDQUFBO0lBQ2YsbUNBQWUsQ0FBQTtJQUNmLHFDQUFpQixDQUFBO0lBQ2pCLG1DQUFlLENBQUE7SUFDZix1Q0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBTlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU0zQjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUN4QixxQ0FBaUIsQ0FBQTtJQUNqQiwrQkFBVyxDQUFBO0lB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U0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvblBsYXllciwgQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRWxlbWVudFJlZiwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncywgY2xvbmVWYWx1ZSwgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneE92ZXJsYXlPdXRsZXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9wb3NpdGlvbi9JUG9zaXRpb25TdHJhdGVneSc7XG5pbXBvcnQgeyBJU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICcuL3Njcm9sbCc7XG5cbmV4cG9ydCBlbnVtIEhvcml6b250YWxBbGlnbm1lbnQge1xuICAgIExlZnQgPSAtMSxcbiAgICBDZW50ZXIgPSAtMC41LFxuICAgIFJpZ2h0ID0gMFxufVxuXG5leHBvcnQgZW51bSBWZXJ0aWNhbEFsaWdubWVudCB7XG4gICAgVG9wID0gLTEsXG4gICAgTWlkZGxlID0gLTAuNSxcbiAgICBCb3R0b20gPSAwXG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzIG9mIHRoZSBvdmVybGF5cycgcG9zaXRpb24gc3RyYXRlZ3kuXG4gKi9cbmV4cG9ydCBlbnVtIFJlbGF0aXZlUG9zaXRpb25TdHJhdGVneSB7XG4gICAgQ29ubmVjdGVkID0gJ2Nvbm5lY3RlZCcsXG4gICAgQXV0byA9ICdhdXRvJyxcbiAgICBFbGFzdGljID0gJ2VsYXN0aWMnXG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgcG9zc2libGUgcG9zaXRpb25zIGZvciB0aGUgcmVsYXRpdmUgb3ZlcmxheSBzZXR0aW5ncyBwcmVzZXRzLlxuICovXG5leHBvcnQgZW51bSBSZWxhdGl2ZVBvc2l0aW9uIHtcbiAgICBBYm92ZSA9ICdhYm92ZScsXG4gICAgQmVsb3cgPSAnYmVsb3cnLFxuICAgIEJlZm9yZSA9ICdiZWZvcmUnLFxuICAgIEFmdGVyID0gJ2FmdGVyJyxcbiAgICBEZWZhdWx0ID0gJ2RlZmF1bHQnXG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgcG9zc2libGUgcG9zaXRpb25zIGZvciB0aGUgYWJzb2x1dGUgb3ZlcmxheSBzZXR0aW5ncyBwcmVzZXRzLlxuICovXG5leHBvcnQgZW51bSBBYnNvbHV0ZVBvc2l0aW9uIHtcbiAgICBCb3R0b20gPSAnYm90dG9tJyxcbiAgICBUb3AgPSAndG9wJyxcbiAgICBDZW50ZXIgPSAnY2VudGVyJ1xufVxuXG4vLyBUT0RPOiBtYWtlIHRoaXMgaW50ZXJmYWNlXG5leHBvcnQgY2xhc3MgUG9pbnQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB4OiBudW1iZXIsIHB1YmxpYyB5OiBudW1iZXIpIHsgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdXRPZlZpZXdQb3J0IHtcbiAgICAvKiogT3V0IG9mIHZpZXcgcG9ydCBhdCBUb3Agb3IgTGVmdCAqL1xuICAgIGJhY2s6IG51bWJlcjtcbiAgICAvKiogT3V0IG9mIHZpZXcgcG9ydCBhdCBCb3R0b20gb3IgUmlnaHQgKi9cbiAgICBmb3J3YXJkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb25TZXR0aW5ncyB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAxMC4yLjAuIFNldCB0aGUgdGFyZ2V0IHBvaW50L2VsZW1lbnQgaW4gdGhlIG92ZXJsYXkgc2V0dGluZ3MgaW5zdGVhZFxuICAgICAqXG4gICAgICogQXR0YWNoaW5nIHRhcmdldCBmb3IgdGhlIGNvbXBvbmVudCB0byBzaG93XG4gICAgICovXG4gICAgdGFyZ2V0PzogUG9pbnQgfCBIVE1MRWxlbWVudDtcbiAgICAvKiogRGlyZWN0aW9uIGluIHdoaWNoIHRoZSBjb21wb25lbnQgc2hvdWxkIHNob3cgKi9cbiAgICBob3Jpem9udGFsRGlyZWN0aW9uPzogSG9yaXpvbnRhbEFsaWdubWVudDtcbiAgICAvKiogRGlyZWN0aW9uIGluIHdoaWNoIHRoZSBjb21wb25lbnQgc2hvdWxkIHNob3cgKi9cbiAgICB2ZXJ0aWNhbERpcmVjdGlvbj86IFZlcnRpY2FsQWxpZ25tZW50O1xuICAgIC8qKiBUYXJnZXQncyBzdGFydGluZyBwb2ludCAqL1xuICAgIGhvcml6b250YWxTdGFydFBvaW50PzogSG9yaXpvbnRhbEFsaWdubWVudDtcbiAgICAvKiogVGFyZ2V0J3Mgc3RhcnRpbmcgcG9pbnQgKi9cbiAgICB2ZXJ0aWNhbFN0YXJ0UG9pbnQ/OiBWZXJ0aWNhbEFsaWdubWVudDtcbiAgICAvKiogQW5pbWF0aW9uIGFwcGxpZWQgd2hpbGUgb3ZlcmxheSBvcGVucyAqL1xuICAgIG9wZW5BbmltYXRpb24/OiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YTtcbiAgICAvKiogQW5pbWF0aW9uIGFwcGxpZWQgd2hpbGUgb3ZlcmxheSBjbG9zZXMgKi9cbiAgICBjbG9zZUFuaW1hdGlvbj86IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhO1xuICAgIC8qKiBUaGUgc2l6ZSB1cCB0byB3aGljaCBlbGVtZW50IG1heSBzaHJpbmsgd2hlbiBzaG93biBpbiBlbGFzdGljIHBvc2l0aW9uIHN0cmF0ZWd5ICovXG4gICAgbWluU2l6ZT86IFNpemU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheVNldHRpbmdzIHtcbiAgICAvKiogQXR0YWNoaW5nIHRhcmdldCBmb3IgdGhlIGNvbXBvbmVudCB0byBzaG93ICovXG4gICAgdGFyZ2V0PzogUG9pbnQgfCBIVE1MRWxlbWVudDtcbiAgICAvKiogUG9zaXRpb24gc3RyYXRlZ3kgdG8gdXNlIHdpdGggdGhlc2Ugc2V0dGluZ3MgKi9cbiAgICBwb3NpdGlvblN0cmF0ZWd5PzogSVBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgLyoqIFNjcm9sbCBzdHJhdGVneSB0byB1c2Ugd2l0aCB0aGVzZSBzZXR0aW5ncyAqL1xuICAgIHNjcm9sbFN0cmF0ZWd5PzogSVNjcm9sbFN0cmF0ZWd5O1xuICAgIC8qKiBTZXQgaWYgdGhlIG92ZXJsYXkgc2hvdWxkIGJlIGluIG1vZGFsIG1vZGUgKi9cbiAgICBtb2RhbD86IGJvb2xlYW47XG4gICAgLyoqIFNldCBpZiB0aGUgb3ZlcmxheSBzaG91bGQgY2xvc2Ugb24gb3V0c2lkZSBjbGljayAqL1xuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2s/OiBib29sZWFuO1xuICAgIC8qKiBTZXQgaWYgdGhlIG92ZXJsYXkgc2hvdWxkIGNsb3NlIHdoZW4gYEVzY2Aga2V5IGlzIHByZXNzZWQgKi9cbiAgICBjbG9zZU9uRXNjYXBlPzogYm9vbGVhbjtcbiAgICAvKiogU2V0IHRoZSBvdXRsZXQgY29udGFpbmVyIHRvIGF0dGFjaCB0aGUgb3ZlcmxheSB0byAqL1xuICAgIG91dGxldD86IElneE92ZXJsYXlPdXRsZXREaXJlY3RpdmUgfCBFbGVtZW50UmVmO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogRWxlbWVudHMgdG8gYmUgZXhjbHVkZWQgZm9yIGNsb3NlT25PdXRzaWRlQ2xpY2suXG4gICAgICogQ2xpY2tpbmcgb24gdGhlIGVsZW1lbnRzIGluIHRoaXMgY29sbGVjdGlvbiB3aWxsIG5vdCBjbG9zZSB0aGUgb3ZlcmxheSB3aGVuIGNsb3NlT25PdXRzaWRlQ2xpY2sgPSB0cnVlLlxuICAgICAqL1xuICAgIGV4Y2x1ZGVGcm9tT3V0c2lkZUNsaWNrPzogSFRNTEVsZW1lbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBJZCBvZiB0aGUgb3ZlcmxheSBnZW5lcmF0ZWQgd2l0aCBgYXR0YWNoKClgIG1ldGhvZCAqL1xuICAgIGlkOiBzdHJpbmc7XG4gICAgLyoqIEF2YWlsYWJsZSB3aGVuIGBUeXBlPFQ+YCBpcyBwcm92aWRlZCB0byB0aGUgYGF0dGFjaCgpYCBtZXRob2QgYW5kIGFsbG93cyBhY2Nlc3MgdG8gdGhlIGNyZWF0ZWQgQ29tcG9uZW50IGluc3RhbmNlICovXG4gICAgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPGFueT47XG4gICAgLyoqIFdpbGwgcHJvdmlkZSB0aGUgb3JpZ2luYWwga2V5Ym9hcmQgZXZlbnQgaWYgY2xvc2VkIGZyb20gRVNDIG9yIGNsaWNrICovXG4gICAgZXZlbnQ/OiBFdmVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5Q2FuY2VsYWJsZUV2ZW50QXJncyBleHRlbmRzIE92ZXJsYXlFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3Mge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJsYXlDbG9zaW5nRXZlbnRBcmdzIGV4dGVuZHMgT3ZlcmxheUV2ZW50QXJncywgQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3Mge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJsYXlBbmltYXRpb25FdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIElkIG9mIHRoZSBvdmVybGF5IGdlbmVyYXRlZCB3aXRoIGBhdHRhY2goKWAgbWV0aG9kICovXG4gICAgaWQ6IHN0cmluZztcbiAgICAvKiogQW5pbWF0aW9uIHBsYXllciB0aGF0IHdpbGwgcGxheSB0aGUgYW5pbWF0aW9uICovXG4gICAgYW5pbWF0aW9uUGxheWVyOiBBbmltYXRpb25QbGF5ZXI7XG4gICAgLyoqIFR5cGUgb2YgYW5pbWF0aW9uIHRvIGJlIHBsYXllZC4gSXQgc2hvdWxkIGJlIGVpdGhlciAnb3Blbicgb3IgJ2Nsb3NlJyAqL1xuICAgIGFuaW1hdGlvblR5cGU6ICdvcGVuJyB8ICdjbG9zZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2l6ZSB7XG4gICAgLyoqIEdldHMgb3Igc2V0cyB0aGUgaG9yaXpvbnRhbCBjb21wb25lbnQgb2YgU2l6ZSAqL1xuICAgIHdpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogR2V0cyBvciBzZXRzIHRoZSB2ZXJ0aWNhbCBjb21wb25lbnQgb2YgU2l6ZSAqL1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdmVybGF5SW5mbyB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgdmlzaWJsZT86IGJvb2xlYW47XG4gICAgZGV0YWNoZWQ/OiBib29sZWFuO1xuICAgIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmO1xuICAgIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xuICAgIHNldHRpbmdzPzogT3ZlcmxheVNldHRpbmdzO1xuICAgIGluaXRpYWxTaXplPzogU2l6ZTtcbiAgICBob29rPzogSFRNTEVsZW1lbnQ7XG4gICAgb3BlbkFuaW1hdGlvblBsYXllcj86IEFuaW1hdGlvblBsYXllcjtcbiAgICBvcGVuQW5pbWF0aW9uSW5uZXJQbGF5ZXI/OiBhbnk7XG4gICAgLy8gY2FsbGluZyBhbmltYXRpb24uZGVzdHJveSBpbiBkZXRhY2ggZmlyZXMgYW5pbWF0aW9uLmRvbmUuIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW5cbiAgICAvLyB0aGlzIGlzIHdoeSB3ZSBzaG91bGQgdHJhY2UgaWYgYW5pbWF0aW9uIGV2ZXIgc3RhcnRlZFxuICAgIG9wZW5BbmltYXRpb25EZXRhY2hpbmc/OiBib29sZWFuO1xuICAgIGNsb3NlQW5pbWF0aW9uUGxheWVyPzogQW5pbWF0aW9uUGxheWVyO1xuICAgIC8vIGNhbGxpbmcgYW5pbWF0aW9uLmRlc3Ryb3kgaW4gZGV0YWNoIGZpcmVzIGFuaW1hdGlvbi5kb25lLiBUaGlzIHNob3VsZCBub3QgaGFwcGVuXG4gICAgLy8gdGhpcyBpcyB3aHkgd2Ugc2hvdWxkIHRyYWNlIGlmIGFuaW1hdGlvbiBldmVyIHN0YXJ0ZWRcbiAgICBjbG9zZUFuaW1hdGlvbkRldGFjaGluZz86IGJvb2xlYW47XG4gICAgY2xvc2VBbmltYXRpb25Jbm5lclBsYXllcj86IGFueTtcbiAgICBuZ1pvbmU6IE5nWm9uZTtcbiAgICB0cmFuc2Zvcm1YPzogbnVtYmVyO1xuICAgIHRyYW5zZm9ybVk/OiBudW1iZXI7XG4gICAgZXZlbnQ/OiBFdmVudDtcbiAgICB3cmFwcGVyRWxlbWVudD86IEhUTUxFbGVtZW50O1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0ZWRGaXQge1xuICAgIGNvbnRlbnRFbGVtZW50UmVjdD86IENsaWVudFJlY3Q7XG4gICAgdGFyZ2V0UmVjdD86IENsaWVudFJlY3Q7XG4gICAgdmlld1BvcnRSZWN0PzogQ2xpZW50UmVjdDtcbiAgICBmaXRIb3Jpem9udGFsPzogT3V0T2ZWaWV3UG9ydDtcbiAgICBmaXRWZXJ0aWNhbD86IE91dE9mVmlld1BvcnQ7XG4gICAgbGVmdD86IG51bWJlcjtcbiAgICByaWdodD86IG51bWJlcjtcbiAgICB0b3A/OiBudW1iZXI7XG4gICAgYm90dG9tPzogbnVtYmVyO1xuICAgIGhvcml6b250YWxPZmZzZXQ/OiBudW1iZXI7XG4gICAgdmVydGljYWxPZmZzZXQ/OiBudW1iZXI7XG59XG5cbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNsYXNzIFV0aWwge1xuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHJlY3RhbmdsZSBvZiB0YXJnZXQgZm9yIHByb3ZpZGVkIG92ZXJsYXkgc2V0dGluZ3MuIERlZmF1bHRzIHRvIDAsMCwwLDAsMCwwIHJlY3RhbmdsZVxuICAgICAqIGlmIG5vIHRhcmdldCBpcyBwcm92aWRlZFxuICAgICAqXG4gICAgICogQHBhcmFtIHNldHRpbmdzIE92ZXJsYXkgc2V0dGluZ3MgZm9yIHdoaWNoIHRvIGNhbGN1bGF0ZSB0YXJnZXQgcmVjdGFuZ2xlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRUYXJnZXRSZWN0KHRhcmdldD86IFBvaW50IHwgSFRNTEVsZW1lbnQpOiBDbGllbnRSZWN0IHtcbiAgICAgICAgbGV0IHRhcmdldFJlY3Q6IENsaWVudFJlY3QgPSB7XG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICB3aWR0aDogMFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgdGFyZ2V0UmVjdCA9ICh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldCBpbnN0YW5jZW9mIFBvaW50KSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHRhcmdldCBhcyBQb2ludDtcbiAgICAgICAgICAgIHRhcmdldFJlY3QgPSB7XG4gICAgICAgICAgICAgICAgYm90dG9tOiB0YXJnZXRQb2ludC55LFxuICAgICAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgICAgICBsZWZ0OiB0YXJnZXRQb2ludC54LFxuICAgICAgICAgICAgICAgIHJpZ2h0OiB0YXJnZXRQb2ludC54LFxuICAgICAgICAgICAgICAgIHRvcDogdGFyZ2V0UG9pbnQueSxcbiAgICAgICAgICAgICAgICB3aWR0aDogMFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXRSZWN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Vmlld3BvcnRSZWN0KGRvY3VtZW50OiBEb2N1bWVudCk6IENsaWVudFJlY3Qge1xuICAgICAgICBjb25zdCB3aWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSBVdGlsLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oZG9jdW1lbnQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3A6IHNjcm9sbFBvc2l0aW9uLnksXG4gICAgICAgICAgICBsZWZ0OiBzY3JvbGxQb3NpdGlvbi54LFxuICAgICAgICAgICAgcmlnaHQ6IHNjcm9sbFBvc2l0aW9uLnggKyB3aWR0aCxcbiAgICAgICAgICAgIGJvdHRvbTogc2Nyb2xsUG9zaXRpb24ueSArIGhlaWdodCxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbihkb2N1bWVudDogRG9jdW1lbnQpOiBQb2ludCB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRSZWN0ID0gZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IGhvcml6b250YWxTY3JvbGxQb3NpdGlvbiA9XG4gICAgICAgICAgICAtZG9jdW1lbnRSZWN0LmxlZnQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IHx8IHdpbmRvdy5zY3JvbGxYIHx8IGRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0IHx8IDA7XG4gICAgICAgIGNvbnN0IHZlcnRpY2FsU2Nyb2xsUG9zaXRpb24gPSAtZG9jdW1lbnRSZWN0LnRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCB8fCB3aW5kb3cuc2Nyb2xsWSB8fCBkb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IDA7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQb2ludChob3Jpem9udGFsU2Nyb2xsUG9zaXRpb24sIHZlcnRpY2FsU2Nyb2xsUG9zaXRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY2xvbmVJbnN0YW5jZShvYmplY3QpIHtcbiAgICAgICAgY29uc3QgY2xvbmVkT2JqID0gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpKSwgb2JqZWN0KTtcbiAgICAgICAgY2xvbmVkT2JqLnNldHRpbmdzID0gY2xvbmVWYWx1ZShjbG9uZWRPYmouc2V0dGluZ3MpO1xuICAgICAgICByZXR1cm4gY2xvbmVkT2JqO1xuICAgIH1cbn1cbiJdfQ==