@ts-core/angular 15.0.16 → 15.0.18

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 (73) hide show
  1. package/asset/language/en.json +9 -0
  2. package/asset/language/ru.json +9 -0
  3. package/esm2020/VIModule.mjs +4 -4
  4. package/esm2020/application/ApplicationBaseComponent.mjs +3 -3
  5. package/esm2020/asset/AssetBackgroundDirective.mjs +3 -3
  6. package/esm2020/asset/AssetBackgroundPipe.mjs +3 -3
  7. package/esm2020/asset/AssetFilePipe.mjs +3 -3
  8. package/esm2020/asset/AssetIconPipe.mjs +3 -3
  9. package/esm2020/asset/AssetImagePipe.mjs +3 -3
  10. package/esm2020/asset/AssetModule.mjs +4 -4
  11. package/esm2020/asset/AssetSoundPipe.mjs +3 -3
  12. package/esm2020/asset/AssetVideoPipe.mjs +3 -3
  13. package/esm2020/cookie/CookieModule.mjs +4 -4
  14. package/esm2020/directive/AspectRatioResizeDirective.mjs +3 -3
  15. package/esm2020/directive/AutoScrollBottomDirective.mjs +3 -3
  16. package/esm2020/directive/ClickToCopyDirective.mjs +3 -3
  17. package/esm2020/directive/ClickToSelectDirective.mjs +3 -3
  18. package/esm2020/directive/FocusDirective.mjs +3 -3
  19. package/esm2020/directive/HTMLContentTitleDirective.mjs +3 -3
  20. package/esm2020/directive/HTMLTitleDirective.mjs +3 -3
  21. package/esm2020/directive/InfiniteScrollDirective.mjs +3 -3
  22. package/esm2020/directive/IsBrowserDirective.mjs +3 -3
  23. package/esm2020/directive/IsServerDirective.mjs +3 -3
  24. package/esm2020/directive/ResizeDirective.mjs +3 -3
  25. package/esm2020/directive/ScrollCheckDirective.mjs +3 -3
  26. package/esm2020/directive/ScrollDirective.mjs +3 -3
  27. package/esm2020/directive/SelectOnFocusDirective.mjs +3 -3
  28. package/esm2020/form/FormElementSync.mjs +3 -3
  29. package/esm2020/language/LanguageDirective.mjs +3 -3
  30. package/esm2020/language/LanguageHasDirective.mjs +3 -3
  31. package/esm2020/language/LanguageModule.mjs +4 -4
  32. package/esm2020/language/LanguagePipe.mjs +3 -3
  33. package/esm2020/language/LanguagePipeHas.mjs +3 -3
  34. package/esm2020/language/LanguagePipeHasPure.mjs +3 -3
  35. package/esm2020/language/LanguagePipePure.mjs +3 -3
  36. package/esm2020/language/LanguageResolver.mjs +3 -3
  37. package/esm2020/login/LoginGuard.mjs +4 -4
  38. package/esm2020/login/LoginIfCanGuard.mjs +4 -4
  39. package/esm2020/login/LoginNotGuard.mjs +4 -4
  40. package/esm2020/login/LoginResolver.mjs +3 -3
  41. package/esm2020/module/LazyModuleLoader.mjs +3 -3
  42. package/esm2020/notification/INotificationContent.mjs +3 -3
  43. package/esm2020/pipe/CamelCasePipe.mjs +3 -3
  44. package/esm2020/pipe/FinancePipe.mjs +3 -3
  45. package/esm2020/pipe/MomentDateAdaptivePipe.mjs +3 -3
  46. package/esm2020/pipe/MomentDateFromNowPipe.mjs +3 -3
  47. package/esm2020/pipe/MomentDatePipe.mjs +3 -3
  48. package/esm2020/pipe/MomentTimePipe.mjs +3 -3
  49. package/esm2020/pipe/NgModelErrorPipe.mjs +3 -3
  50. package/esm2020/pipe/PrettifyPipe.mjs +3 -3
  51. package/esm2020/pipe/SanitizePipe.mjs +3 -3
  52. package/esm2020/pipe/StartCasePipe.mjs +3 -3
  53. package/esm2020/pipe/TimePipe.mjs +3 -3
  54. package/esm2020/pipe/TruncatePipe.mjs +3 -3
  55. package/esm2020/service/PlatformService.mjs +3 -3
  56. package/esm2020/theme/ThemeAssetBackgroundDirective.mjs +3 -3
  57. package/esm2020/theme/ThemeAssetDirective.mjs +31 -10
  58. package/esm2020/theme/ThemeAssetIconDirective.mjs +3 -3
  59. package/esm2020/theme/ThemeAssetImageDirective.mjs +3 -3
  60. package/esm2020/theme/ThemeModule.mjs +4 -4
  61. package/esm2020/theme/ThemeStyleDirective.mjs +3 -3
  62. package/esm2020/theme/ThemeStyleHoverDirective.mjs +3 -3
  63. package/esm2020/theme/ThemeToggleDirective.mjs +3 -3
  64. package/esm2020/window/IWindowContent.mjs +3 -3
  65. package/esm2020/window/WindowBase.mjs +3 -23
  66. package/fesm2015/ts-core-angular.mjs +220 -219
  67. package/fesm2015/ts-core-angular.mjs.map +1 -1
  68. package/fesm2020/ts-core-angular.mjs +220 -219
  69. package/fesm2020/ts-core-angular.mjs.map +1 -1
  70. package/login/LoginGuard.d.ts +1 -2
  71. package/login/LoginNotGuard.d.ts +1 -2
  72. package/package.json +1 -1
  73. package/theme/ThemeAssetDirective.d.ts +7 -4
@@ -97,9 +97,9 @@ export class ThemeStyleDirective extends Destroyable {
97
97
  }
98
98
  }
99
99
  }
100
- ThemeStyleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeStyleDirective, deps: [{ token: i0.ElementRef }, { token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Directive });
101
- ThemeStyleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ThemeStyleDirective, selector: "[vi-theme-style]", inputs: { flags: "flags", styleName: "styleName", key: ["vi-theme-style", "key"] }, usesInheritance: true, ngImport: i0 });
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeStyleDirective, decorators: [{
100
+ ThemeStyleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ThemeStyleDirective, deps: [{ token: i0.ElementRef }, { token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Directive });
101
+ ThemeStyleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: ThemeStyleDirective, selector: "[vi-theme-style]", inputs: { flags: "flags", styleName: "styleName", key: ["vi-theme-style", "key"] }, usesInheritance: true, ngImport: i0 });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ThemeStyleDirective, decorators: [{
103
103
  type: Directive,
104
104
  args: [{
105
105
  selector: '[vi-theme-style]'
@@ -89,9 +89,9 @@ export class ThemeStyleHoverDirective extends ThemeStyleDirective {
89
89
  super.flags = value;
90
90
  }
91
91
  }
92
- ThemeStyleHoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeStyleHoverDirective, deps: [{ token: i0.ElementRef }, { token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Directive });
93
- ThemeStyleHoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ThemeStyleHoverDirective, selector: "[vi-theme-style-hover]", inputs: { key: ["vi-theme-style-hover", "key"], styleName: "styleName", flags: "flags" }, usesInheritance: true, ngImport: i0 });
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeStyleHoverDirective, decorators: [{
92
+ ThemeStyleHoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ThemeStyleHoverDirective, deps: [{ token: i0.ElementRef }, { token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Directive });
93
+ ThemeStyleHoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: ThemeStyleHoverDirective, selector: "[vi-theme-style-hover]", inputs: { key: ["vi-theme-style-hover", "key"], styleName: "styleName", flags: "flags" }, usesInheritance: true, ngImport: i0 });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ThemeStyleHoverDirective, decorators: [{
95
95
  type: Directive,
96
96
  args: [{
97
97
  selector: '[vi-theme-style-hover]'
@@ -48,9 +48,9 @@ export class ThemeToggleDirective extends Destroyable {
48
48
  this.theme = null;
49
49
  }
50
50
  }
51
- ThemeToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeToggleDirective, deps: [{ token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Directive });
52
- ThemeToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ThemeToggleDirective, selector: "[vi-theme-toggle]", host: { listeners: { "click": "clickHandler($event)" } }, usesInheritance: true, ngImport: i0 });
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ThemeToggleDirective, decorators: [{
51
+ ThemeToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ThemeToggleDirective, deps: [{ token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Directive });
52
+ ThemeToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: ThemeToggleDirective, selector: "[vi-theme-toggle]", host: { listeners: { "click": "clickHandler($event)" } }, usesInheritance: true, ngImport: i0 });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ThemeToggleDirective, decorators: [{
54
54
  type: Directive,
55
55
  args: [{
56
56
  selector: '[vi-theme-toggle]'
@@ -113,9 +113,9 @@ export class IWindowContent extends DestroyableContainer {
113
113
  }
114
114
  }
115
115
  }
116
- IWindowContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IWindowContent, deps: [{ token: WINDOW_CONTENT_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
117
- IWindowContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IWindowContent, selector: "ng-component", inputs: { isDisabled: "isDisabled", window: "window" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IWindowContent, decorators: [{
116
+ IWindowContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: IWindowContent, deps: [{ token: WINDOW_CONTENT_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
117
+ IWindowContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: IWindowContent, selector: "ng-component", inputs: { isDisabled: "isDisabled", window: "window" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: IWindowContent, decorators: [{
119
119
  type: Component,
120
120
  args: [{ template: '' }]
121
121
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -94,28 +94,8 @@ export class WindowBase extends DestroyableContainer {
94
94
  this._width = NaN;
95
95
  this._height = NaN;
96
96
  }
97
- commitSizeProperties() {
98
- /*
99
- let width = !_.isNaN(this.width) ? `${this.width}px` : 'auto';
100
- let height = !_.isNaN(this.height) ? `${this.height}px` : 'auto';
101
- this.getReference().updateSize(width, height);
102
- */
103
- }
104
- commitPositionProperties() {
105
- /*
106
- if (_.isNaN(this._x) && _.isNaN(this._y)) {
107
- return;
108
- }
109
- let position = {} as any;
110
- if (!_.isNaN(this._y)) {
111
- position.top = `${this._y}px`;
112
- }
113
- if (!_.isNaN(this._x)) {
114
- position.left = `${this._x}px`;
115
- }
116
- this.getReference().updatePosition(position);
117
- */
118
- }
97
+ commitSizeProperties() { }
98
+ commitPositionProperties() { }
119
99
  // --------------------------------------------------------------------------
120
100
  //
121
101
  // Public Methods
@@ -194,4 +174,4 @@ export class WindowBase extends DestroyableContainer {
194
174
  return this.getConfig().paddingBottom;
195
175
  }
196
176
  }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93QmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93aW5kb3cvV2luZG93QmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQWlCLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxNQUFNLE9BQWdCLFVBQW9CLFNBQVEsb0JBQW9CO0lBMkNsRSw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFuQlosNkVBQTZFO1FBQzdFLEVBQUU7UUFDRixjQUFjO1FBQ2QsRUFBRTtRQUNGLDZFQUE2RTtRQUVuRSxPQUFFLEdBQVcsR0FBRyxDQUFDO1FBQ2pCLFdBQU0sR0FBVyxHQUFHLENBQUM7UUFFckIsT0FBRSxHQUFXLEdBQUcsQ0FBQztRQUNqQixZQUFPLEdBQVcsR0FBRyxDQUFDO1FBa0d0QixtQkFBYyxHQUFHLEdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQXhGMUQsQ0FBQztJQWxERCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLE1BQU0sQ0FBQyxNQUFNLENBQUksS0FBYSxFQUFFLE1BQXdCO1FBQzlELEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxPQUFPLEtBQUssQ0FB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QUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNoQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxDQUFDO1FBQ1IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFXLENBQUMsQ0FBQyxLQUFhO1FBQ3RCLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ25CLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQ29udGFpbmVyIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCB7IElXaW5kb3dDb25maWcsIFdpbmRvd0FsaWduIH0gZnJvbSAnLi9JV2luZG93Q29uZmlnJztcbmltcG9ydCB7IFZpZXdVdGlsIH0gZnJvbSAnLi4vdXRpbC9WaWV3VXRpbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXaW5kb3dCYXNlPFQgPSBhbnk+IGV4dGVuZHMgRGVzdHJveWFibGVDb250YWluZXIge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFN0YXRpYyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBwYXJzZVg8VD4odmFsdWU6IG51bWJlciwgY29uZmlnOiBJV2luZG93Q29uZmlnPFQ+KTogbnVtYmVyIHtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1heCh2YWx1ZSwgY29uZmlnLmVsZW1lbnRNaW5YKTtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbih2YWx1ZSwgY29uZmlnLmVsZW1lbnRNYXhYKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgcGFyc2VZPFQ+KHZhbHVlOiBudW1iZXIsIGNvbmZpZzogSVdpbmRvd0NvbmZpZzxUPik6IG51bWJlciB7XG4gICAgICAgIHZhbHVlID0gTWF0aC5tYXgodmFsdWUsIGNvbmZpZy5lbGVtZW50TWluWSk7XG4gICAgICAgIHZhbHVlID0gTWF0aC5taW4odmFsdWUsIGNvbmZpZy5lbGVtZW50TWF4WSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIHBhcnNlV2lkdGg8VD4odmFsdWU6IG51bWJlciwgY29uZmlnOiBJV2luZG93Q29uZmlnPFQ+KTogbnVtYmVyIHtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1heCh2YWx1ZSwgY29uZmlnLmVsZW1lbnRNaW5XaWR0aCk7XG4gICAgICAgIHZhbHVlID0gTWF0aC5taW4odmFsdWUsIGNvbmZpZy5lbGVtZW50TWF4V2lkdGgpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBwYXJzZUhlaWdodDxUPih2YWx1ZTogbnVtYmVyLCBjb25maWc6IElXaW5kb3dDb25maWc8VD4pOiBudW1iZXIge1xuICAgICAgICB2YWx1ZSA9IE1hdGgubWF4KHZhbHVlLCBjb25maWcuZWxlbWVudE1pbkhlaWdodCk7XG4gICAgICAgIHZhbHVlID0gTWF0aC5taW4odmFsdWUsIGNvbmZpZy5lbGVtZW50TWF4SGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgX3g6IG51bWJlciA9IE5hTjtcbiAgICBwcm90ZWN0ZWQgX3dpZHRoOiBudW1iZXIgPSBOYU47XG5cbiAgICBwcm90ZWN0ZWQgX3k6IG51bWJlciA9IE5hTjtcbiAgICBwcm90ZWN0ZWQgX2hlaWdodDogbnVtYmVyID0gTmFOO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0Q29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDb25maWcoKTogSVdpbmRvd0NvbmZpZzxUPjtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q29udGFpbmVyKCk6IEhUTUxFbGVtZW50O1xuXG4gICAgcHJvdGVjdGVkIHNldFByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIGxldCBjb25maWcgPSB0aGlzLmdldENvbmZpZygpO1xuICAgICAgICBpZiAoIV8uaXNOYU4oY29uZmlnLmRlZmF1bHRXaWR0aCkpIHtcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSBjb25maWcuZGVmYXVsdFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05hTihjb25maWcuZGVmYXVsdEhlaWdodCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gY29uZmlnLmRlZmF1bHRIZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0UG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGxldCBjb25maWcgPSB0aGlzLmdldENvbmZpZygpO1xuXG4gICAgICAgIHN3aXRjaCAoY29uZmlnLmhvcml6b250YWxBbGlnbikge1xuICAgICAgICAgICAgY2FzZSBXaW5kb3dBbGlnbi5TVEFSVDpcbiAgICAgICAgICAgICAgICB0aGlzLnggPSAhXy5pc05hTih0aGlzLnBhZGRpbmdMZWZ0KSA/IHRoaXMucGFkZGluZ0xlZnQgOiAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBXaW5kb3dBbGlnbi5FTkQ6XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gVmlld1V0aWwuZ2V0U3RhZ2VXaWR0aCgpIC0gdGhpcy5jYWxjdWxhdGVXaWR0aCgpO1xuICAgICAgICAgICAgICAgIGlmICghXy5pc05hTih0aGlzLnBhZGRpbmdSaWdodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgLT0gdGhpcy5wYWRkaW5nUmlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMueCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnggPSAoVmlld1V0aWwuZ2V0U3RhZ2VXaWR0aCgpIC0gdGhpcy5jYWxjdWxhdGVXaWR0aCgpKSAvIDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGNvbmZpZy52ZXJ0aWNhbEFsaWduKSB7XG4gICAgICAgICAgICBjYXNlIFdpbmRvd0FsaWduLlNUQVJUOlxuICAgICAgICAgICAgICAgIHRoaXMueSA9ICFfLmlzTmFOKHRoaXMucGFkZGluZ1RvcCkgPyB0aGlzLnBhZGRpbmdUb3AgOiAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBXaW5kb3dBbGlnbi5FTkQ6XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gVmlld1V0aWwuZ2V0U3RhZ2VIZWlnaHQoKSAtIHRoaXMuY2FsY3VsYXRlSGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgaWYgKCFfLmlzTmFOKHRoaXMucGFkZGluZ0JvdHRvbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgLT0gdGhpcy5wYWRkaW5nQm90dG9tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnkgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy55ID0gKFZpZXdVdGlsLmdldFN0YWdlSGVpZ2h0KCkgLSB0aGlzLmNhbGN1bGF0ZUhlaWdodCgpKSAvIDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXJTaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl94ID0gTmFOO1xuICAgICAgICB0aGlzLl95ID0gTmFOO1xuICAgICAgICB0aGlzLl93aWR0aCA9IE5hTjtcbiAgICAgICAgdGhpcy5faGVpZ2h0ID0gTmFOO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb21taXRTaXplUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgLypcbiAgICAgICAgbGV0IHdpZHRoID0gIV8uaXNOYU4odGhpcy53aWR0aCkgPyBgJHt0aGlzLndpZHRofXB4YCA6ICdhdXRvJztcbiAgICAgICAgbGV0IGhlaWdodCA9ICFfLmlzTmFOKHRoaXMuaGVpZ2h0KSA/IGAke3RoaXMuaGVpZ2h0fXB4YCA6ICdhdXRvJztcbiAgICAgICAgdGhpcy5nZXRSZWZlcmVuY2UoKS51cGRhdGVTaXplKHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAqL1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb21taXRQb3NpdGlvblByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIC8qXG4gICAgICAgIGlmIChfLmlzTmFOKHRoaXMuX3gpICYmIF8uaXNOYU4odGhpcy5feSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcG9zaXRpb24gPSB7fSBhcyBhbnk7XG4gICAgICAgIGlmICghXy5pc05hTih0aGlzLl95KSkge1xuICAgICAgICAgICAgcG9zaXRpb24udG9wID0gYCR7dGhpcy5feX1weGA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmFOKHRoaXMuX3gpKSB7XG4gICAgICAgICAgICBwb3NpdGlvbi5sZWZ0ID0gYCR7dGhpcy5feH1weGA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRSZWZlcmVuY2UoKS51cGRhdGVQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICAgICovXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVBvc2l0aW9uID0gKCk6IHZvaWQgPT4gdGhpcy5zZXRQb3NpdGlvbigpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmFOKHRoaXMud2lkdGgpID8gdGhpcy53aWR0aCA6IFZpZXdVdGlsLmdldFdpZHRoKHRoaXMuZ2V0Q29udGFpbmVyKCkpO1xuICAgIH1cbiAgICBwdWJsaWMgY2FsY3VsYXRlSGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAhXy5pc05hTih0aGlzLmhlaWdodCkgPyB0aGlzLmhlaWdodCA6IFZpZXdVdGlsLmdldEhlaWdodCh0aGlzLmdldENvbnRhaW5lcigpKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcml2YXRlIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldCB3aWR0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVdpZHRoKHZhbHVlLCB0aGlzLmdldENvbmZpZygpKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl93aWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3dpZHRoID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29tbWl0U2l6ZVByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0IGhlaWdodCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVdpZHRoKHZhbHVlLCB0aGlzLmdldENvbmZpZygpKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9oZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oZWlnaHQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jb21taXRTaXplUHJvcGVydGllcygpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGdldCB4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl94O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgeCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVgodmFsdWUsIHRoaXMuZ2V0Q29uZmlnKCkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3gpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl94ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29tbWl0UG9zaXRpb25Qcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB5KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl95O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgeSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVkodmFsdWUsIHRoaXMuZ2V0Q29uZmlnKCkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3kpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl95ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29tbWl0UG9zaXRpb25Qcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWRkaW5nVG9wKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZygpLnBhZGRpbmdUb3A7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWRkaW5nTGVmdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb25maWcoKS5wYWRkaW5nTGVmdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhZGRpbmdSaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb25maWcoKS5wYWRkaW5nUmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWRkaW5nQm90dG9tKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZygpLnBhZGRpbmdCb3R0b207XG4gICAgfVxufVxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93QmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93aW5kb3cvV2luZG93QmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQWlCLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxNQUFNLE9BQWdCLFVBQW9CLFNBQVEsb0JBQW9CO0lBMkNsRSw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFuQlosNkVBQTZFO1FBQzdFLEVBQUU7UUFDRixjQUFjO1FBQ2QsRUFBRTtRQUNGLDZFQUE2RTtRQUVuRSxPQUFFLEdBQVcsR0FBRyxDQUFDO1FBQ2pCLFdBQU0sR0FBVyxHQUFHLENBQUM7UUFFckIsT0FBRSxHQUFXLEdBQUcsQ0FBQztRQUNqQixZQUFPLEdBQVcsR0FBRyxDQUFDO1FBOEV0QixtQkFBYyxHQUFHLEdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQXBFMUQsQ0FBQztJQWxERCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLE1BQU0sQ0FBQyxNQUFNLENBQUksS0FBYSxFQUFFLE1BQXdCO1FBQzlELEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxPQUFPLEtBQUssQ0FB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U0FBUyxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ25CLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLENBQUM7UUFDUixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQVcsQ0FBQyxDQUFDLEtBQWE7UUFDdEIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDbkIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDaEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVDb250YWluZXIgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgSVdpbmRvd0NvbmZpZywgV2luZG93QWxpZ24gfSBmcm9tICcuL0lXaW5kb3dDb25maWcnO1xuaW1wb3J0IHsgVmlld1V0aWwgfSBmcm9tICcuLi91dGlsL1ZpZXdVdGlsJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdpbmRvd0Jhc2U8VCA9IGFueT4gZXh0ZW5kcyBEZXN0cm95YWJsZUNvbnRhaW5lciB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0U3RhdGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIHBhcnNlWDxUPih2YWx1ZTogbnVtYmVyLCBjb25maWc6IElXaW5kb3dDb25maWc8VD4pOiBudW1iZXIge1xuICAgICAgICB2YWx1ZSA9IE1hdGgubWF4KHZhbHVlLCBjb25maWcuZWxlbWVudE1pblgpO1xuICAgICAgICB2YWx1ZSA9IE1hdGgubWluKHZhbHVlLCBjb25maWcuZWxlbWVudE1heFgpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBwYXJzZVk8VD4odmFsdWU6IG51bWJlciwgY29uZmlnOiBJV2luZG93Q29uZmlnPFQ+KTogbnVtYmVyIHtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1heCh2YWx1ZSwgY29uZmlnLmVsZW1lbnRNaW5ZKTtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbih2YWx1ZSwgY29uZmlnLmVsZW1lbnRNYXhZKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgcGFyc2VXaWR0aDxUPih2YWx1ZTogbnVtYmVyLCBjb25maWc6IElXaW5kb3dDb25maWc8VD4pOiBudW1iZXIge1xuICAgICAgICB2YWx1ZSA9IE1hdGgubWF4KHZhbHVlLCBjb25maWcuZWxlbWVudE1pbldpZHRoKTtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbih2YWx1ZSwgY29uZmlnLmVsZW1lbnRNYXhXaWR0aCk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIHBhcnNlSGVpZ2h0PFQ+KHZhbHVlOiBudW1iZXIsIGNvbmZpZzogSVdpbmRvd0NvbmZpZzxUPik6IG51bWJlciB7XG4gICAgICAgIHZhbHVlID0gTWF0aC5tYXgodmFsdWUsIGNvbmZpZy5lbGVtZW50TWluSGVpZ2h0KTtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbih2YWx1ZSwgY29uZmlnLmVsZW1lbnRNYXhIZWlnaHQpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBfeDogbnVtYmVyID0gTmFOO1xuICAgIHByb3RlY3RlZCBfd2lkdGg6IG51bWJlciA9IE5hTjtcblxuICAgIHByb3RlY3RlZCBfeTogbnVtYmVyID0gTmFOO1xuICAgIHByb3RlY3RlZCBfaGVpZ2h0OiBudW1iZXIgPSBOYU47XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByb3RlY3RlZCBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldENvbmZpZygpOiBJV2luZG93Q29uZmlnPFQ+O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDb250YWluZXIoKTogSFRNTEVsZW1lbnQ7XG5cbiAgICBwcm90ZWN0ZWQgc2V0UHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgbGV0IGNvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKCk7XG4gICAgICAgIGlmICghXy5pc05hTihjb25maWcuZGVmYXVsdFdpZHRoKSkge1xuICAgICAgICAgICAgdGhpcy53aWR0aCA9IGNvbmZpZy5kZWZhdWx0V2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmFOKGNvbmZpZy5kZWZhdWx0SGVpZ2h0KSkge1xuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBjb25maWcuZGVmYXVsdEhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgbGV0IGNvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgc3dpdGNoIChjb25maWcuaG9yaXpvbnRhbEFsaWduKSB7XG4gICAgICAgICAgICBjYXNlIFdpbmRvd0FsaWduLlNUQVJUOlxuICAgICAgICAgICAgICAgIHRoaXMueCA9ICFfLmlzTmFOKHRoaXMucGFkZGluZ0xlZnQpID8gdGhpcy5wYWRkaW5nTGVmdCA6IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFdpbmRvd0FsaWduLkVORDpcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBWaWV3VXRpbC5nZXRTdGFnZVdpZHRoKCkgLSB0aGlzLmNhbGN1bGF0ZVdpZHRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFfLmlzTmFOKHRoaXMucGFkZGluZ1JpZ2h0KSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtPSB0aGlzLnBhZGRpbmdSaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy54ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMueCA9IChWaWV3VXRpbC5nZXRTdGFnZVdpZHRoKCkgLSB0aGlzLmNhbGN1bGF0ZVdpZHRoKCkpIC8gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoY29uZmlnLnZlcnRpY2FsQWxpZ24pIHtcbiAgICAgICAgICAgIGNhc2UgV2luZG93QWxpZ24uU1RBUlQ6XG4gICAgICAgICAgICAgICAgdGhpcy55ID0gIV8uaXNOYU4odGhpcy5wYWRkaW5nVG9wKSA/IHRoaXMucGFkZGluZ1RvcCA6IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFdpbmRvd0FsaWduLkVORDpcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBWaWV3VXRpbC5nZXRTdGFnZUhlaWdodCgpIC0gdGhpcy5jYWxjdWxhdGVIZWlnaHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5wYWRkaW5nQm90dG9tKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtPSB0aGlzLnBhZGRpbmdCb3R0b207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMueSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnkgPSAoVmlld1V0aWwuZ2V0U3RhZ2VIZWlnaHQoKSAtIHRoaXMuY2FsY3VsYXRlSGVpZ2h0KCkpIC8gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjbGVhclNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ggPSBOYU47XG4gICAgICAgIHRoaXMuX3kgPSBOYU47XG4gICAgICAgIHRoaXMuX3dpZHRoID0gTmFOO1xuICAgICAgICB0aGlzLl9oZWlnaHQgPSBOYU47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbW1pdFNpemVQcm9wZXJ0aWVzKCk6IHZvaWQge31cblxuICAgIHByb3RlY3RlZCBjb21taXRQb3NpdGlvblByb3BlcnRpZXMoKTogdm9pZCB7fVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVBvc2l0aW9uID0gKCk6IHZvaWQgPT4gdGhpcy5zZXRQb3NpdGlvbigpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmFOKHRoaXMud2lkdGgpID8gdGhpcy53aWR0aCA6IFZpZXdVdGlsLmdldFdpZHRoKHRoaXMuZ2V0Q29udGFpbmVyKCkpO1xuICAgIH1cbiAgICBwdWJsaWMgY2FsY3VsYXRlSGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAhXy5pc05hTih0aGlzLmhlaWdodCkgPyB0aGlzLmhlaWdodCA6IFZpZXdVdGlsLmdldEhlaWdodCh0aGlzLmdldENvbnRhaW5lcigpKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcml2YXRlIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldCB3aWR0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVdpZHRoKHZhbHVlLCB0aGlzLmdldENvbmZpZygpKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl93aWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3dpZHRoID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29tbWl0U2l6ZVByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0IGhlaWdodCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVdpZHRoKHZhbHVlLCB0aGlzLmdldENvbmZpZygpKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9oZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oZWlnaHQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jb21taXRTaXplUHJvcGVydGllcygpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGdldCB4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl94O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgeCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVgodmFsdWUsIHRoaXMuZ2V0Q29uZmlnKCkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3gpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl94ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29tbWl0UG9zaXRpb25Qcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB5KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl95O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgeSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVkodmFsdWUsIHRoaXMuZ2V0Q29uZmlnKCkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3kpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl95ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29tbWl0UG9zaXRpb25Qcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWRkaW5nVG9wKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZygpLnBhZGRpbmdUb3A7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWRkaW5nTGVmdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb25maWcoKS5wYWRkaW5nTGVmdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhZGRpbmdSaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb25maWcoKS5wYWRkaW5nUmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWRkaW5nQm90dG9tKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZygpLnBhZGRpbmdCb3R0b207XG4gICAgfVxufVxuIl19