@theseam/ui-common 0.2.16 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/breadcrumbs/_breadcrumbs-theme.scss +3 -0
- package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +10 -0
- package/breadcrumbs/styles/_utilities.scss +3 -0
- package/breadcrumbs/styles/_variables.scss +1 -0
- package/breadcrumbs/theseam-ui-common-breadcrumbs.metadata.json +1 -1
- package/bundles/theseam-ui-common-breadcrumbs.umd.js +2 -1
- package/bundles/theseam-ui-common-breadcrumbs.umd.js.map +1 -1
- package/bundles/theseam-ui-common-datatable.umd.js.map +1 -1
- package/bundles/theseam-ui-common-framework.umd.js +18 -15
- package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
- package/bundles/theseam-ui-common-scrollbar.umd.js +1 -1
- package/bundles/theseam-ui-common-scrollbar.umd.js.map +1 -1
- package/bundles/theseam-ui-common-table-cell-types.umd.js +89 -4
- package/bundles/theseam-ui-common-table-cell-types.umd.js.map +1 -1
- package/bundles/theseam-ui-common-tel-input.umd.js +59 -7
- package/bundles/theseam-ui-common-tel-input.umd.js.map +1 -1
- package/bundles/theseam-ui-common-testing.umd.js.map +1 -1
- package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
- package/bundles/theseam-ui-common-viewers.umd.js +269 -4
- package/bundles/theseam-ui-common-viewers.umd.js.map +1 -1
- package/bundles/theseam-ui-common-widget.umd.js +1 -1
- package/esm2015/breadcrumbs/breadcrumbs/breadcrumbs.component.js +4 -3
- package/esm2015/datatable/models/columns-alteration.js +1 -1
- package/esm2015/datatable/models/columns-alterations/hide-column.columns-alteration.js +1 -1
- package/esm2015/datatable/models/columns-alterations/sort.columns-alteration.js +1 -1
- package/esm2015/datatable/models/columns-alterations/width.columns-alteration.js +1 -1
- package/esm2015/datatable/models/internal-column-props.js +1 -1
- package/esm2015/datatable/services/columns-alterations-manager.service.js +1 -1
- package/esm2015/datatable/utils/map-columns-alterations-states.js +1 -1
- package/esm2015/framework/base-layout/base-layout.component.js +3 -3
- package/esm2015/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.js +5 -5
- package/esm2015/framework/top-bar/top-bar-title/top-bar-title.component.js +4 -3
- package/esm2015/framework/top-bar/top-bar.component.js +10 -8
- package/esm2015/graphql/models/gql-datatable-accessor.js +1 -1
- package/esm2015/scrollbar/overlay-scrollbar.directive.js +2 -2
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.js +17 -2
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.js +16 -2
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.js +16 -2
- package/esm2015/table-cell-types/table-cell-type-string/table-cell-type-string-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-string/table-cell-type-string.component.js +32 -4
- package/esm2015/tel-input/tel-input/tel-input.component.js +10 -2
- package/esm2015/tel-input/tel-input.directive.js +50 -5
- package/esm2015/testing/current-tick-time.js +1 -1
- package/esm2015/utils/array-move.js +1 -1
- package/esm2015/utils/router/is-empty-url-route.js +1 -1
- package/esm2015/viewers/html-template-viewer/html-template-viewer.component.js +219 -0
- package/esm2015/viewers/html-template-viewer/html-template-viewer.module.js +23 -0
- package/esm2015/viewers/html-template-viewer/index.js +3 -0
- package/esm2015/viewers/public-api.js +2 -1
- package/esm2015/widget/widget/widget.component.js +1 -1
- package/fesm2015/theseam-ui-common-breadcrumbs.js +3 -2
- package/fesm2015/theseam-ui-common-breadcrumbs.js.map +1 -1
- package/fesm2015/theseam-ui-common-datatable.js.map +1 -1
- package/fesm2015/theseam-ui-common-framework.js +15 -12
- package/fesm2015/theseam-ui-common-framework.js.map +1 -1
- package/fesm2015/theseam-ui-common-scrollbar.js +1 -1
- package/fesm2015/theseam-ui-common-scrollbar.js.map +1 -1
- package/fesm2015/theseam-ui-common-table-cell-types.js +74 -5
- package/fesm2015/theseam-ui-common-table-cell-types.js.map +1 -1
- package/fesm2015/theseam-ui-common-tel-input.js +58 -6
- package/fesm2015/theseam-ui-common-tel-input.js.map +1 -1
- package/fesm2015/theseam-ui-common-testing.js.map +1 -1
- package/fesm2015/theseam-ui-common-utils.js.map +1 -1
- package/fesm2015/theseam-ui-common-viewers.js +237 -2
- package/fesm2015/theseam-ui-common-viewers.js.map +1 -1
- package/fesm2015/theseam-ui-common-widget.js +1 -1
- package/framework/base-layout/base-layout.component.scss +14 -0
- package/framework/base-layout/styles/_variables.scss +14 -0
- package/framework/theseam-ui-common-framework.metadata.json +1 -1
- package/framework/top-bar/_top-bar-theme.scss +5 -0
- package/framework/top-bar/styles/_utilities.scss +3 -0
- package/framework/top-bar/styles/_variables.scss +18 -0
- package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +3 -1
- package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.scss +15 -0
- package/framework/top-bar/top-bar-title/top-bar-title.component.scss +6 -0
- package/framework/top-bar/top-bar.component.d.ts +3 -0
- package/framework/top-bar/top-bar.component.scss +39 -0
- package/package.json +1 -1
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +5 -0
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +5 -0
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +5 -0
- package/table-cell-types/table-cell-type-string/table-cell-type-string-config.d.ts +8 -0
- package/table-cell-types/table-cell-type-string/table-cell-type-string.component.d.ts +9 -0
- package/table-cell-types/theseam-ui-common-table-cell-types.metadata.json +1 -1
- package/tel-input/tel-input.directive.d.ts +7 -3
- package/tel-input/theseam-ui-common-tel-input.metadata.json +1 -1
- package/viewers/html-template-viewer/html-template-viewer.component.d.ts +67 -0
- package/viewers/html-template-viewer/html-template-viewer.module.d.ts +2 -0
- package/viewers/html-template-viewer/index.d.ts +2 -0
- package/viewers/public-api.d.ts +1 -0
- package/viewers/theseam-ui-common-viewers.metadata.json +1 -1
- package/widget/styles/_variables.scss +2 -0
- package/widget/theseam-ui-common-widget.metadata.json +1 -1
- package/widget/widget/widget.component.scss +2 -0
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Directive, ElementRef, HostBinding, Inject, Input, NgZone, Optional } from '@angular/core';
|
|
2
|
+
import { Directive, ElementRef, HostBinding, Inject, Input, NgZone, Optional, Self } from '@angular/core';
|
|
3
3
|
import { fromEvent, merge, Subject } from 'rxjs';
|
|
4
4
|
import { auditTime, last, switchMap, takeUntil, tap } from 'rxjs/operators';
|
|
5
5
|
import { AssetLoaderService } from '@theseam/ui-common/services';
|
|
6
|
-
import { notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
6
|
+
import { getAttribute, hasAttribute, notNullOrUndefined, toggleAttribute } from '@theseam/ui-common/utils';
|
|
7
|
+
import { NgControl } from '@angular/forms';
|
|
7
8
|
import { IntlTelInputFn, intlTelInputUtils } from './intl-tel-input';
|
|
8
9
|
import { TEL_INPUT_STYLES, TEL_INPUT_STYLESHEET_PATH, TEL_INPUT_UTILS_PATH } from './tel-input-constants';
|
|
9
10
|
import { globalIntlTelInputUtils } from './utils/index';
|
|
10
11
|
export class TheSeamTelInputDirective {
|
|
11
|
-
constructor(_elementRef, _assetLoader, _ngZone, _document) {
|
|
12
|
+
constructor(_elementRef, _assetLoader, _ngZone, _document, _ngControl) {
|
|
12
13
|
this._elementRef = _elementRef;
|
|
13
14
|
this._assetLoader = _assetLoader;
|
|
14
15
|
this._ngZone = _ngZone;
|
|
15
16
|
this._document = _document;
|
|
17
|
+
this._ngControl = _ngControl;
|
|
16
18
|
this._ngUnsubscribe = new Subject();
|
|
17
19
|
this._loadedAssetRefs = [];
|
|
18
20
|
this._attrType = 'tel';
|
|
@@ -60,6 +62,7 @@ export class TheSeamTelInputDirective {
|
|
|
60
62
|
// TODO: Add initialCountry support.
|
|
61
63
|
// initialCountry: 'auto'
|
|
62
64
|
});
|
|
65
|
+
this._tryUpdateDropdownAttributes();
|
|
63
66
|
return this._instance.promise;
|
|
64
67
|
}),
|
|
65
68
|
// tap(() => console.log('%c_instance ready', 'color:green', this._instance, this._elementRef.nativeElement.value)),
|
|
@@ -74,6 +77,30 @@ export class TheSeamTelInputDirective {
|
|
|
74
77
|
this._ngUnsubscribe.next();
|
|
75
78
|
this._ngUnsubscribe.complete();
|
|
76
79
|
}
|
|
80
|
+
ngDoCheck() {
|
|
81
|
+
this._tryUpdateDropdownAttributes();
|
|
82
|
+
}
|
|
83
|
+
_tryUpdateDropdownAttributes() {
|
|
84
|
+
var _a, _b, _c;
|
|
85
|
+
const control = this._ngControl;
|
|
86
|
+
if (control) {
|
|
87
|
+
const flagsContainer = (_a = this._instance) === null || _a === void 0 ? void 0 : _a.selectedFlag;
|
|
88
|
+
if (flagsContainer) {
|
|
89
|
+
toggleAttribute(flagsContainer, 'aria-disabled', (_b = control.disabled) !== null && _b !== void 0 ? _b : false);
|
|
90
|
+
const disabled = (_c = control.disabled) !== null && _c !== void 0 ? _c : false;
|
|
91
|
+
if (!disabled) {
|
|
92
|
+
if (getAttribute(flagsContainer, 'tabindex') !== '0') {
|
|
93
|
+
flagsContainer.setAttribute('tabindex', '0');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
if (hasAttribute(flagsContainer, 'tabindex')) {
|
|
98
|
+
flagsContainer.removeAttribute('tabindex');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
77
104
|
updateValue() {
|
|
78
105
|
var _a, _b;
|
|
79
106
|
// console.log('%cupdateValue START', 'color:cyan', typeof intlTelInputUtils !== 'undefined')
|
|
@@ -105,6 +132,7 @@ export class TheSeamTelInputDirective {
|
|
|
105
132
|
return;
|
|
106
133
|
}
|
|
107
134
|
this._ngZone.runOutsideAngular(() => {
|
|
135
|
+
var _a;
|
|
108
136
|
const openDropdown$ = fromEvent(this._elementRef.nativeElement, 'open:countrydropdown');
|
|
109
137
|
const closeDropdown$ = fromEvent(this._elementRef.nativeElement, 'close:countrydropdown');
|
|
110
138
|
const instance = this._instance;
|
|
@@ -124,6 +152,22 @@ export class TheSeamTelInputDirective {
|
|
|
124
152
|
}));
|
|
125
153
|
return merge(pressDown$, flagBtnClick$).pipe(takeUntil(closeDropdown$));
|
|
126
154
|
}), takeUntil(this._ngUnsubscribe)).subscribe();
|
|
155
|
+
const flagsContainer = (_a = this._instance) === null || _a === void 0 ? void 0 : _a.selectedFlag;
|
|
156
|
+
if (flagsContainer) {
|
|
157
|
+
fromEvent(flagsContainer, 'keydown', { capture: true }).pipe(tap((e) => {
|
|
158
|
+
var _a;
|
|
159
|
+
const control = this._ngControl;
|
|
160
|
+
if (control) {
|
|
161
|
+
const disabled = (_a = control.disabled) !== null && _a !== void 0 ? _a : false;
|
|
162
|
+
if (disabled && ['ArrowUp', 'Up', 'ArrowDown', 'Down', ' ', 'Enter'].indexOf(e.key) !== -1) {
|
|
163
|
+
// prevent form from being submitted if "ENTER" was pressed
|
|
164
|
+
e.preventDefault();
|
|
165
|
+
// prevent event from being handled again by document
|
|
166
|
+
e.stopPropagation();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}), takeUntil(this._ngUnsubscribe)).subscribe();
|
|
170
|
+
}
|
|
127
171
|
});
|
|
128
172
|
}
|
|
129
173
|
isDropdownVisible() {
|
|
@@ -155,10 +199,11 @@ TheSeamTelInputDirective.ctorParameters = () => [
|
|
|
155
199
|
{ type: ElementRef },
|
|
156
200
|
{ type: AssetLoaderService },
|
|
157
201
|
{ type: NgZone },
|
|
158
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }
|
|
202
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },
|
|
203
|
+
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] }
|
|
159
204
|
];
|
|
160
205
|
TheSeamTelInputDirective.propDecorators = {
|
|
161
206
|
_attrType: [{ type: HostBinding, args: ['attr.type',] }],
|
|
162
207
|
value: [{ type: Input }]
|
|
163
208
|
};
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90ZWwtaW5wdXQvdGVsLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFrQixNQUFNLDZCQUE2QixDQUFBO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN6RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFNdkQsTUFBTSxPQUFPLHdCQUF3QjtJQXlCbkMsWUFDbUIsV0FBeUMsRUFDekMsWUFBZ0MsRUFDaEMsT0FBZSxFQUNlLFNBQWU7UUFIN0MsZ0JBQVcsR0FBWCxXQUFXLENBQThCO1FBQ3pDLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNoQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2UsY0FBUyxHQUFULFNBQVMsQ0FBTTtRQTVCL0MsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBR3ZDLHFCQUFnQixHQUEwRCxFQUFFLENBQUE7UUFFMUQsY0FBUyxHQUFHLEtBQUssQ0FBQTtRQXlFbkMsd0JBQW1CLEdBQUcsR0FBRyxFQUFFO1lBQ2pDLGtEQUFrRDtZQUNsRCxnR0FBZ0c7WUFDaEcsc0ZBQXNGO1lBQ3RGLHNEQUFzRDtZQUN0RCwyQ0FBMkM7WUFDM0MsNkNBQTZDO1lBQzdDLE1BQU07WUFDTixJQUFJO1lBRUosSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ3BCLENBQUMsQ0FBQTtJQTVERyxDQUFDO0lBdEJMLElBQ0ksS0FBSyxDQUFDLENBQTRCO1FBQ3BDLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtRQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUN4RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7U0FDbkI7SUFDSCxDQUFDO0lBQ0QsSUFBSSxLQUFLOztRQUNQLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsU0FBUyxFQUFFLENBQUE7U0FDbkM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDcEIsQ0FBQztJQVVELFFBQVE7UUFDTixLQUFLLENBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsRUFDM0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FDOUMsQ0FBQyxJQUFJO1FBQ0osc0NBQXNDO1FBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDdkMsSUFBSSxFQUFFO1FBQ04sZ0RBQWdEO1FBQ2hELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRTtnQkFDOUQsV0FBVyxFQUFFLG9CQUFvQjtnQkFDakMsa0JBQWtCLEVBQUUsQ0FBRSxJQUFJLENBQUU7Z0JBQzVCLFlBQVksRUFBRSxLQUFLO2dCQUNuQixlQUFlLEVBQUUsSUFBSTtnQkFDckIsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLGdCQUFnQixFQUFFLEtBQUs7Z0JBQ3ZCLGdCQUFnQixFQUFFLEtBQUs7Z0JBQ3ZCLG9DQUFvQztnQkFDcEMseUJBQXlCO2FBQzFCLENBQUMsQ0FBQTtZQUVGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUE7UUFDL0IsQ0FBQyxDQUFDO1FBQ0Ysb0hBQW9IO1FBQ3BILEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxFQUN2QyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQ25DLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFDN0IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FDbkIsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxFQUNsRCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQ3BELENBQUMsRUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQy9CLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDZixDQUFDO0lBRUQsV0FBVzs7UUFDVCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sRUFBRSxDQUFBO1FBQ3pCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUNkO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFlTSxXQUFXOztRQUNoQiw2RkFBNkY7UUFDN0YsSUFBSSxPQUFPLHVCQUF1QixFQUFFLEtBQUssV0FBVyxFQUFFO1lBQ3BELE1BQU0sV0FBVyxHQUFHLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNsRixvRkFBb0Y7WUFDcEYsc0VBQXNFO1lBQ3RFLHNGQUFzRjtZQUN0Rix3R0FBd0c7WUFDeEcsOEZBQThGO1lBQzlGLDRGQUE0RjtZQUM1RiwwRUFBMEU7WUFDMUUsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQUU7Z0JBQ25DLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO2FBQ3ZDO1NBQ0Y7UUFDRCxpREFBaUQ7SUFDbkQsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxPQUFPLHVCQUF1QixFQUFFLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEUsa0RBQWtEO1lBQ2xELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ3JFO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQ25CLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtRQUMxQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTTtTQUNUO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDLENBQUE7WUFDdkYsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLHVCQUF1QixDQUFDLENBQUE7WUFDekYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQWdCLENBQUE7WUFDdEMsYUFBYSxDQUFDLElBQUksQ0FDaEIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDYixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQ3RCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQy9DLFNBQVMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUMsSUFBSSxDQUNKLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFDWixHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO3dCQUMvRixPQUFNO3FCQUNQO29CQUNELFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtnQkFDM0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtnQkFFRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQWEsUUFBUSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzlFLEdBQUcsQ0FBQyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtvQkFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO3dCQUM3QixPQUFNO3FCQUNQO29CQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQTtvQkFDdEIsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFBO2dCQUMzQixDQUFDLENBQUMsQ0FDSCxDQUFBO2dCQUVELE9BQU8sS0FBSyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7WUFDekUsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FDL0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUNmLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPLEtBQUssQ0FBQTtTQUNiO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQWdCLENBQUE7UUFDdEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM5RCxDQUFDO0lBRUQseUJBQXlCO0lBQ2xCLEtBQUs7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsMkJBQTJCO0lBQ3BCLElBQUk7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUN2QyxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFBO0lBQ3ZDLENBQUM7OztZQTFMRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsUUFBUSxFQUFFLGNBQWM7YUFDekI7OztZQWhCbUIsVUFBVTtZQUlyQixrQkFBa0I7WUFKaUMsTUFBTTs0Q0E4QzdELFFBQVEsWUFBSSxNQUFNLFNBQUMsUUFBUTs7O3dCQXZCN0IsV0FBVyxTQUFDLFdBQVc7b0JBRXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBsYXN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IEFzc2V0TG9hZGVyU2VydmljZSwgTG9hZGVkQXNzZXRSZWYgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vc2VydmljZXMnXG5pbXBvcnQgeyBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cblxuaW1wb3J0IHsgSW50bFRlbElucHV0Rm4sIGludGxUZWxJbnB1dFV0aWxzIH0gZnJvbSAnLi9pbnRsLXRlbC1pbnB1dCdcbmltcG9ydCB0eXBlIHsgSW50bFRlbElucHV0IH0gZnJvbSAnLi9pbnRsLXRlbC1pbnB1dCdcbmltcG9ydCB7IFRFTF9JTlBVVF9TVFlMRVMsIFRFTF9JTlBVVF9TVFlMRVNIRUVUX1BBVEgsIFRFTF9JTlBVVF9VVElMU19QQVRIIH0gZnJvbSAnLi90ZWwtaW5wdXQtY29uc3RhbnRzJ1xuaW1wb3J0IHsgZ2xvYmFsSW50bFRlbElucHV0VXRpbHMgfSBmcm9tICcuL3V0aWxzL2luZGV4J1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFtzZWFtVGVsSW5wdXRdJyxcbiAgZXhwb3J0QXM6ICdzZWFtVGVsSW5wdXQnXG59KVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1UZWxJbnB1dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KClcblxuICBwcml2YXRlIF9pbnN0YW5jZTogSW50bFRlbElucHV0LlBsdWdpbiB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9sb2FkZWRBc3NldFJlZnM6IExvYWRlZEFzc2V0UmVmPEhUTUxMaW5rRWxlbWVudCB8ICBIVE1MU3R5bGVFbGVtZW50PltdID0gW11cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudHlwZScpIF9hdHRyVHlwZSA9ICd0ZWwnXG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnc2V0IHZhbHVlJywgdiwgdGhpcy5faW5zdGFuY2UpXG4gICAgdGhpcy5fdmFsdWUgPSB2XG4gICAgaWYgKHRoaXMuX2luc3RhbmNlKSB7XG4gICAgICB0aGlzLl9pbnN0YW5jZS5zZXROdW1iZXIobm90TnVsbE9yVW5kZWZpbmVkKHYpID8gdiA6ICcnKVxuICAgICAgdGhpcy51cGRhdGVWYWx1ZSgpXG4gICAgfVxuICB9XG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5faW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZT8uZ2V0TnVtYmVyKClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlXG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Fzc2V0TG9hZGVyOiBBc3NldExvYWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ/OiBhbnlcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBtZXJnZShcbiAgICAgIHRoaXMuX2Fzc2V0TG9hZGVyLmxvYWRTdHlsZVNoZWV0KFRFTF9JTlBVVF9TVFlMRVNIRUVUX1BBVEgpLFxuICAgICAgdGhpcy5fYXNzZXRMb2FkZXIubG9hZFN0eWxlKFRFTF9JTlBVVF9TVFlMRVMpXG4gICAgKS5waXBlKFxuICAgICAgLy8gdGFwKHYgPT4gY29uc29sZS5sb2coJ2xvYWRlZCcsIHYpKSxcbiAgICAgIHRhcCh2ID0+IHRoaXMuX2xvYWRlZEFzc2V0UmVmcy5wdXNoKHYpKSxcbiAgICAgIGxhc3QoKSxcbiAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdTdHlsZUxvYWRpbmdEb25lJywgdikpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBJbnRsVGVsSW5wdXRGbih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICB1dGlsc1NjcmlwdDogVEVMX0lOUFVUX1VUSUxTX1BBVEgsXG4gICAgICAgICAgcHJlZmVycmVkQ291bnRyaWVzOiBbICdVUycgXSxcbiAgICAgICAgICBuYXRpb25hbE1vZGU6IGZhbHNlLFxuICAgICAgICAgIGZvcm1hdE9uRGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICBhdXRvUGxhY2Vob2xkZXI6ICdvZmYnLFxuICAgICAgICAgIHNlcGFyYXRlRGlhbENvZGU6IGZhbHNlLFxuICAgICAgICAgIGF1dG9IaWRlRGlhbENvZGU6IGZhbHNlLFxuICAgICAgICAgIC8vIFRPRE86IEFkZCBpbml0aWFsQ291bnRyeSBzdXBwb3J0LlxuICAgICAgICAgIC8vIGluaXRpYWxDb3VudHJ5OiAnYXV0bydcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UucHJvbWlzZVxuICAgICAgfSksXG4gICAgICAvLyB0YXAoKCkgPT4gY29uc29sZS5sb2coJyVjX2luc3RhbmNlIHJlYWR5JywgJ2NvbG9yOmdyZWVuJywgdGhpcy5faW5zdGFuY2UsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSkpLFxuICAgICAgdGFwKCgpID0+IHRoaXMuX2luaXREcm9wZG93bkxpc3RlbmVyKCkpLFxuICAgICAgdGFwKCgpID0+IHRoaXMudmFsdWUgPSB0aGlzLl92YWx1ZSksXG4gICAgICB0YXAodGhpcy5fZm9ybWF0SW50bFRlbElucHV0KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZShcbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2tleXVwJyksXG4gICAgICAgIGZyb21FdmVudCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjaGFuZ2UnKVxuICAgICAgKSksXG4gICAgICB0YXAodGhpcy5fZm9ybWF0SW50bFRlbElucHV0KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKVxuICAgICkuc3Vic2NyaWJlKClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2luc3RhbmNlPy5kZXN0cm95KClcbiAgICBmb3IgKGNvbnN0IHJlZiBvZiB0aGlzLl9sb2FkZWRBc3NldFJlZnMpIHtcbiAgICAgIHJlZi5kZXN0cm95KClcbiAgICB9XG5cbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKVxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKVxuICB9XG5cbiAgcHJpdmF0ZSBfZm9ybWF0SW50bFRlbElucHV0ID0gKCkgPT4ge1xuICAgIC8vIGlmICh0eXBlb2YgaW50bFRlbElucHV0VXRpbHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gICBjb25zdCBjdXJyZW50VGV4dCA9IHRoaXMuX2luc3RhbmNlPy5nZXROdW1iZXIoaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUwpXG4gICAgLy8gICBjb25zb2xlLmxvZygnY3VycmVudFRleHQnLCBjdXJyZW50VGV4dCwgdGhpcy5faW5zdGFuY2U/LmdldFNlbGVjdGVkQ291bnRyeURhdGEoKSlcbiAgICAvLyAgIGNvbnNvbGUubG9nKHRoaXMuX2luc3RhbmNlPy5nZXRWYWxpZGF0aW9uRXJyb3IoKSlcbiAgICAvLyAgIGlmICh0eXBlb2YgY3VycmVudFRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gICAgIHRoaXMuX2luc3RhbmNlPy5zZXROdW1iZXIoY3VycmVudFRleHQpXG4gICAgLy8gICB9XG4gICAgLy8gfVxuXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgpXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVmFsdWUoKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5sb2coJyVjdXBkYXRlVmFsdWUgU1RBUlQnLCAnY29sb3I6Y3lhbicsIHR5cGVvZiBpbnRsVGVsSW5wdXRVdGlscyAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgaWYgKHR5cGVvZiBnbG9iYWxJbnRsVGVsSW5wdXRVdGlscygpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgY3VycmVudFRleHQgPSB0aGlzLl9pbnN0YW5jZT8uZ2V0TnVtYmVyKGludGxUZWxJbnB1dFV0aWxzLm51bWJlckZvcm1hdC5FMTY0KVxuICAgICAgLy8gY29uc29sZS5sb2coJ2N1cnJlbnRUZXh0JywgY3VycmVudFRleHQsIHRoaXMuX2luc3RhbmNlPy5nZXRTZWxlY3RlZENvdW50cnlEYXRhKCkpXG4gICAgICAvLyBjb25zb2xlLmxvZygnZnVsbE51bWJlcicsICh0aGlzLl9pbnN0YW5jZSBhcyBhbnkpLl9nZXRGdWxsTnVtYmVyKCkpXG4gICAgICAvLyBjb25zb2xlLmxvZygnRTE2NCcsIHRoaXMuX2luc3RhbmNlPy5nZXROdW1iZXIoaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0LkUxNjQpKVxuICAgICAgLy8gY29uc29sZS5sb2coJ0lOVEVSTkFUSU9OQUwnLCB0aGlzLl9pbnN0YW5jZT8uZ2V0TnVtYmVyKGludGxUZWxJbnB1dFV0aWxzLm51bWJlckZvcm1hdC5JTlRFUk5BVElPTkFMKSlcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdOQVRJT05BTCcsIHRoaXMuX2luc3RhbmNlPy5nZXROdW1iZXIoaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0Lk5BVElPTkFMKSlcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdSRkMzOTY2JywgdGhpcy5faW5zdGFuY2U/LmdldE51bWJlcihpbnRsVGVsSW5wdXRVdGlscy5udW1iZXJGb3JtYXQuUkZDMzk2NikpXG4gICAgICAvLyBjb25zb2xlLmxvZygnZ2V0VmFsaWRhdGlvbkVycm9yJywgdGhpcy5faW5zdGFuY2U/LmdldFZhbGlkYXRpb25FcnJvcigpKVxuICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5faW5zdGFuY2U/LnNldE51bWJlcihjdXJyZW50VGV4dClcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coJyVjdXBkYXRlVmFsdWUgRU5EJywgJ2NvbG9yOmN5YW4nKVxuICB9XG5cbiAgcHVibGljIGdldEZ1bGxOdW1iZXIoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgaWYgKHR5cGVvZiBnbG9iYWxJbnRsVGVsSW5wdXRVdGlscygpICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLl9pbnN0YW5jZSkge1xuICAgICAgLy8gcmV0dXJuICh0aGlzLl9pbnN0YW5jZSBhcyBhbnkpLl9nZXRGdWxsTnVtYmVyKClcbiAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZS5nZXROdW1iZXIoaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0LkUxNjQpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZhbHVlXG4gIH1cblxuICBwcml2YXRlIF9pbml0RHJvcGRvd25MaXN0ZW5lcigpIHtcbiAgICBjb25zdCBkb2MgPSB0aGlzLl9kb2N1bWVudFxuICAgIGlmICghZG9jKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCBvcGVuRHJvcGRvd24kID0gZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ29wZW46Y291bnRyeWRyb3Bkb3duJylcbiAgICAgIGNvbnN0IGNsb3NlRHJvcGRvd24kID0gZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Nsb3NlOmNvdW50cnlkcm9wZG93bicpXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuX2luc3RhbmNlIGFzIGFueVxuICAgICAgb3BlbkRyb3Bkb3duJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXNzRG93biQgPSBtZXJnZShcbiAgICAgICAgICAgIGZyb21FdmVudChkb2MsICd0b3VjaHN0YXJ0JywgeyBjYXB0dXJlOiB0cnVlIH0pLFxuICAgICAgICAgICAgZnJvbUV2ZW50KGRvYywgJ21vdXNlZG93bicsIHsgY2FwdHVyZTogdHJ1ZSB9KVxuICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgIGF1ZGl0VGltZSgwKSxcbiAgICAgICAgICAgIHRhcCgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuY291bnRyeUxpc3QuY29udGFpbnMoZXZlbnQudGFyZ2V0KSB8fCBpbnN0YW5jZS5zZWxlY3RlZEZsYWcuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluc3RhbmNlLl9jbG9zZURyb3Bkb3duKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgY29uc3QgZmxhZ0J0bkNsaWNrJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50PihpbnN0YW5jZS5zZWxlY3RlZEZsYWcsICdjbGljaycpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5pc0Ryb3Bkb3duVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgIGluc3RhbmNlLl9jbG9zZURyb3Bkb3duKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgcmV0dXJuIG1lcmdlKHByZXNzRG93biQsIGZsYWdCdG5DbGljayQpLnBpcGUodGFrZVVudGlsKGNsb3NlRHJvcGRvd24kKSlcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKVxuICAgICAgKS5zdWJzY3JpYmUoKVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgaXNEcm9wZG93blZpc2libGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5jZSBhcyBhbnlcbiAgICByZXR1cm4gIWluc3RhbmNlLmNvdW50cnlMaXN0LmNsYXNzTGlzdC5jb250YWlucygnaXRpX19oaWRlJylcbiAgfVxuXG4gIC8qKiBGb2N1c2VzIHRoZSBpbnB1dC4gKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gIH1cblxuICAvKiogVW5mb2N1c2VzIHRoZSBpbnB1dC4gKi9cbiAgcHVibGljIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmJsdXIoKVxuICB9XG5cbiAgcHVibGljIGdldEhvc3RFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgfVxufVxuIl19
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90ZWwtaW5wdXQvdGVsLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBVyxVQUFVLEVBQVEsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNJLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBa0IsTUFBTSw2QkFBNkIsQ0FBQTtBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUcxRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXBFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQU12RCxNQUFNLE9BQU8sd0JBQXdCO0lBeUJuQyxZQUNtQixXQUF5QyxFQUN6QyxZQUFnQyxFQUNoQyxPQUFlLEVBQ2UsU0FBZSxFQUN6QixVQUFzQjtRQUoxQyxnQkFBVyxHQUFYLFdBQVcs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QUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCx5QkFBeUI7SUFDbEIsS0FBSztRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3hDLENBQUM7SUFFRCwyQkFBMkI7SUFDcEIsSUFBSTtRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3ZDLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUE7SUFDdkMsQ0FBQzs7O1lBek9GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixRQUFRLEVBQUUsY0FBYzthQUN6Qjs7O1lBakI0QixVQUFVO1lBSTlCLGtCQUFrQjtZQUpnRCxNQUFNOzRDQStDNUUsUUFBUSxZQUFJLE1BQU0sU0FBQyxRQUFRO1lBdkN2QixTQUFTLHVCQXdDYixRQUFRLFlBQUksSUFBSTs7O3dCQXhCbEIsV0FBVyxTQUFDLFdBQVc7b0JBRXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgSG9zdCwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBsYXN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IEFzc2V0TG9hZGVyU2VydmljZSwgTG9hZGVkQXNzZXRSZWYgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vc2VydmljZXMnXG5pbXBvcnQgeyBnZXRBdHRyaWJ1dGUsIGhhc0F0dHJpYnV0ZSwgbm90TnVsbE9yVW5kZWZpbmVkLCB0b2dnbGVBdHRyaWJ1dGUgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cblxuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBJbnRsVGVsSW5wdXRGbiwgaW50bFRlbElucHV0VXRpbHMgfSBmcm9tICcuL2ludGwtdGVsLWlucHV0J1xuaW1wb3J0IHR5cGUgeyBJbnRsVGVsSW5wdXQgfSBmcm9tICcuL2ludGwtdGVsLWlucHV0J1xuaW1wb3J0IHsgVEVMX0lOUFVUX1NUWUxFUywgVEVMX0lOUFVUX1NUWUxFU0hFRVRfUEFUSCwgVEVMX0lOUFVUX1VUSUxTX1BBVEggfSBmcm9tICcuL3RlbC1pbnB1dC1jb25zdGFudHMnXG5pbXBvcnQgeyBnbG9iYWxJbnRsVGVsSW5wdXRVdGlscyB9IGZyb20gJy4vdXRpbHMvaW5kZXgnXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W3NlYW1UZWxJbnB1dF0nLFxuICBleHBvcnRBczogJ3NlYW1UZWxJbnB1dCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlU2VhbVRlbElucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIERvQ2hlY2sge1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKVxuXG4gIHByaXZhdGUgX2luc3RhbmNlOiBJbnRsVGVsSW5wdXQuUGx1Z2luIHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX2xvYWRlZEFzc2V0UmVmczogTG9hZGVkQXNzZXRSZWY8SFRNTExpbmtFbGVtZW50IHwgIEhUTUxTdHlsZUVsZW1lbnQ+W10gPSBbXVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50eXBlJykgX2F0dHJUeXBlID0gJ3RlbCdcblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodjogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdzZXQgdmFsdWUnLCB2LCB0aGlzLl9pbnN0YW5jZSlcbiAgICB0aGlzLl92YWx1ZSA9IHZcbiAgICBpZiAodGhpcy5faW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuX2luc3RhbmNlLnNldE51bWJlcihub3ROdWxsT3JVbmRlZmluZWQodikgPyB2IDogJycpXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKClcbiAgICB9XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIGlmICh0aGlzLl9pbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlPy5nZXROdW1iZXIoKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdmFsdWVcbiAgfVxuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBfYXNzZXRMb2FkZXI6IEFzc2V0TG9hZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudD86IGFueSxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgX25nQ29udHJvbD86IE5nQ29udHJvbCxcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBtZXJnZShcbiAgICAgIHRoaXMuX2Fzc2V0TG9hZGVyLmxvYWRTdHlsZVNoZWV0KFRFTF9JTlBVVF9TVFlMRVNIRUVUX1BBVEgpLFxuICAgICAgdGhpcy5fYXNzZXRMb2FkZXIubG9hZFN0eWxlKFRFTF9JTlBVVF9TVFlMRVMpXG4gICAgKS5waXBlKFxuICAgICAgLy8gdGFwKHYgPT4gY29uc29sZS5sb2coJ2xvYWRlZCcsIHYpKSxcbiAgICAgIHRhcCh2ID0+IHRoaXMuX2xvYWRlZEFzc2V0UmVmcy5wdXNoKHYpKSxcbiAgICAgIGxhc3QoKSxcbiAgICAgIC8vIHRhcCh2ID0+IGNvbnNvbGUubG9nKCdTdHlsZUxvYWRpbmdEb25lJywgdikpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBJbnRsVGVsSW5wdXRGbih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICB1dGlsc1NjcmlwdDogVEVMX0lOUFVUX1VUSUxTX1BBVEgsXG4gICAgICAgICAgcHJlZmVycmVkQ291bnRyaWVzOiBbICdVUycgXSxcbiAgICAgICAgICBuYXRpb25hbE1vZGU6IGZhbHNlLFxuICAgICAgICAgIGZvcm1hdE9uRGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICBhdXRvUGxhY2Vob2xkZXI6ICdvZmYnLFxuICAgICAgICAgIHNlcGFyYXRlRGlhbENvZGU6IGZhbHNlLFxuICAgICAgICAgIGF1dG9IaWRlRGlhbENvZGU6IGZhbHNlLFxuICAgICAgICAgIC8vIFRPRE86IEFkZCBpbml0aWFsQ291bnRyeSBzdXBwb3J0LlxuICAgICAgICAgIC8vIGluaXRpYWxDb3VudHJ5OiAnYXV0bydcbiAgICAgICAgfSlcblxuICAgICAgICB0aGlzLl90cnlVcGRhdGVEcm9wZG93bkF0dHJpYnV0ZXMoKVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZS5wcm9taXNlXG4gICAgICB9KSxcbiAgICAgIC8vIHRhcCgoKSA9PiBjb25zb2xlLmxvZygnJWNfaW5zdGFuY2UgcmVhZHknLCAnY29sb3I6Z3JlZW4nLCB0aGlzLl9pbnN0YW5jZSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5faW5pdERyb3Bkb3duTGlzdGVuZXIoKSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbHVlKSxcbiAgICAgIHRhcCh0aGlzLl9mb3JtYXRJbnRsVGVsSW5wdXQpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IG1lcmdlKFxuICAgICAgICBmcm9tRXZlbnQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5dXAnKSxcbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NoYW5nZScpXG4gICAgICApKSxcbiAgICAgIHRhcCh0aGlzLl9mb3JtYXRJbnRsVGVsSW5wdXQpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpXG4gICAgKS5zdWJzY3JpYmUoKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5faW5zdGFuY2U/LmRlc3Ryb3koKVxuICAgIGZvciAoY29uc3QgcmVmIG9mIHRoaXMuX2xvYWRlZEFzc2V0UmVmcykge1xuICAgICAgcmVmLmRlc3Ryb3koKVxuICAgIH1cblxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCgpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy5fdHJ5VXBkYXRlRHJvcGRvd25BdHRyaWJ1dGVzKClcbiAgfVxuXG4gIHByaXZhdGUgX3RyeVVwZGF0ZURyb3Bkb3duQXR0cmlidXRlcygpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5fbmdDb250cm9sXG4gICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgIGNvbnN0IGZsYWdzQ29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQgPSAodGhpcy5faW5zdGFuY2UgYXMgYW55KT8uc2VsZWN0ZWRGbGFnXG4gICAgICBpZiAoZmxhZ3NDb250YWluZXIpIHtcbiAgICAgICAgdG9nZ2xlQXR0cmlidXRlKGZsYWdzQ29udGFpbmVyLCAnYXJpYS1kaXNhYmxlZCcsIGNvbnRyb2wuZGlzYWJsZWQgPz8gZmFsc2UpXG5cbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBjb250cm9sLmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgICBpZiAoZ2V0QXR0cmlidXRlKGZsYWdzQ29udGFpbmVyLCAndGFiaW5kZXgnKSAhPT0gJzAnKSB7XG4gICAgICAgICAgICBmbGFnc0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaGFzQXR0cmlidXRlKGZsYWdzQ29udGFpbmVyLCAndGFiaW5kZXgnKSkge1xuICAgICAgICAgICAgZmxhZ3NDb250YWluZXIucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZm9ybWF0SW50bFRlbElucHV0ID0gKCkgPT4ge1xuICAgIC8vIGlmICh0eXBlb2YgaW50bFRlbElucHV0VXRpbHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gICBjb25zdCBjdXJyZW50VGV4dCA9IHRoaXMuX2luc3RhbmNlPy5nZXROdW1iZXIoaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUwpXG4gICAgLy8gICBjb25zb2xlLmxvZygnY3VycmVudFRleHQnLCBjdXJyZW50VGV4dCwgdGhpcy5faW5zdGFuY2U/LmdldFNlbGVjdGVkQ291bnRyeURhdGEoKSlcbiAgICAvLyAgIGNvbnNvbGUubG9nKHRoaXMuX2luc3RhbmNlPy5nZXRWYWxpZGF0aW9uRXJyb3IoKSlcbiAgICAvLyAgIGlmICh0eXBlb2YgY3VycmVudFRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gICAgIHRoaXMuX2luc3RhbmNlPy5zZXROdW1iZXIoY3VycmVudFRleHQpXG4gICAgLy8gICB9XG4gICAgLy8gfVxuXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgpXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVmFsdWUoKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5sb2coJyVjdXBkYXRlVmFsdWUgU1RBUlQnLCAnY29sb3I6Y3lhbicsIHR5cGVvZiBpbnRsVGVsSW5wdXRVdGlscyAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgaWYgKHR5cGVvZiBnbG9iYWxJbnRsVGVsSW5wdXRVdGlscygpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgY3VycmVudFRleHQgPSB0aGlzLl9pbnN0YW5jZT8uZ2V0TnVtYmVyKGludGxUZWxJbnB1dFV0aWxzLm51bWJlckZvcm1hdC5FMTY0KVxuICAgICAgLy8gY29uc29sZS5sb2coJ2N1cnJlbnRUZXh0JywgY3VycmVudFRleHQsIHRoaXMuX2luc3RhbmNlPy5nZXRTZWxlY3RlZENvdW50cnlEYXRhKCkpXG4gICAgICAvLyBjb25zb2xlLmxvZygnZnVsbE51bWJlcicsICh0aGlzLl9pbnN0YW5jZSBhcyBhbnkpLl9nZXRGdWxsTnVtYmVyKCkpXG4gICAgICAvLyBjb25zb2xlLmxvZygnRTE2NCcsIHRoaXMuX2luc3RhbmNlPy5nZXROdW1iZXIoaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0LkUxNjQpKVxuICAgICAgLy8gY29uc29sZS5sb2coJ0lOVEVSTkFUSU9OQUwnLCB0aGlzLl9pbnN0YW5jZT8uZ2V0TnVtYmVyKGludGxUZWxJbnB1dFV0aWxzLm51bWJlckZvcm1hdC5JTlRFUk5BVElPTkFMKSlcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdOQVRJT05BTCcsIHRoaXMuX2luc3RhbmNlPy5nZXROdW1iZXIoaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0Lk5BVElPTkFMKSlcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdSRkMzOTY2JywgdGhpcy5faW5zdGFuY2U/LmdldE51bWJlcihpbnRsVGVsSW5wdXRVdGlscy5udW1iZXJGb3JtYXQuUkZDMzk2NikpXG4gICAgICAvLyBjb25zb2xlLmxvZygnZ2V0VmFsaWRhdGlvbkVycm9yJywgdGhpcy5faW5zdGFuY2U/LmdldFZhbGlkYXRpb25FcnJvcigpKVxuICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5faW5zdGFuY2U/LnNldE51bWJlcihjdXJyZW50VGV4dClcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coJyVjdXBkYXRlVmFsdWUgRU5EJywgJ2NvbG9yOmN5YW4nKVxuICB9XG5cbiAgcHVibGljIGdldEZ1bGxOdW1iZXIoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgaWYgKHR5cGVvZiBnbG9iYWxJbnRsVGVsSW5wdXRVdGlscygpICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLl9pbnN0YW5jZSkge1xuICAgICAgLy8gcmV0dXJuICh0aGlzLl9pbnN0YW5jZSBhcyBhbnkpLl9nZXRGdWxsTnVtYmVyKClcbiAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZS5nZXROdW1iZXIoaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0LkUxNjQpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZhbHVlXG4gIH1cblxuICBwcml2YXRlIF9pbml0RHJvcGRvd25MaXN0ZW5lcigpIHtcbiAgICBjb25zdCBkb2MgPSB0aGlzLl9kb2N1bWVudFxuICAgIGlmICghZG9jKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCBvcGVuRHJvcGRvd24kID0gZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ29wZW46Y291bnRyeWRyb3Bkb3duJylcbiAgICAgIGNvbnN0IGNsb3NlRHJvcGRvd24kID0gZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Nsb3NlOmNvdW50cnlkcm9wZG93bicpXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuX2luc3RhbmNlIGFzIGFueVxuICAgICAgb3BlbkRyb3Bkb3duJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXNzRG93biQgPSBtZXJnZShcbiAgICAgICAgICAgIGZyb21FdmVudChkb2MsICd0b3VjaHN0YXJ0JywgeyBjYXB0dXJlOiB0cnVlIH0pLFxuICAgICAgICAgICAgZnJvbUV2ZW50KGRvYywgJ21vdXNlZG93bicsIHsgY2FwdHVyZTogdHJ1ZSB9KVxuICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgIGF1ZGl0VGltZSgwKSxcbiAgICAgICAgICAgIHRhcCgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuY291bnRyeUxpc3QuY29udGFpbnMoZXZlbnQudGFyZ2V0KSB8fCBpbnN0YW5jZS5zZWxlY3RlZEZsYWcuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluc3RhbmNlLl9jbG9zZURyb3Bkb3duKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgY29uc3QgZmxhZ0J0bkNsaWNrJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50PihpbnN0YW5jZS5zZWxlY3RlZEZsYWcsICdjbGljaycpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5pc0Ryb3Bkb3duVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgIGluc3RhbmNlLl9jbG9zZURyb3Bkb3duKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgcmV0dXJuIG1lcmdlKHByZXNzRG93biQsIGZsYWdCdG5DbGljayQpLnBpcGUodGFrZVVudGlsKGNsb3NlRHJvcGRvd24kKSlcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKVxuICAgICAgKS5zdWJzY3JpYmUoKVxuXG4gICAgICBjb25zdCBmbGFnc0NvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkID0gKHRoaXMuX2luc3RhbmNlIGFzIGFueSk/LnNlbGVjdGVkRmxhZ1xuICAgICAgaWYgKGZsYWdzQ29udGFpbmVyKSB7XG4gICAgICAgIGZyb21FdmVudChmbGFnc0NvbnRhaW5lciwgJ2tleWRvd24nLCB7IGNhcHR1cmU6IHRydWUgfSkucGlwZShcbiAgICAgICAgICB0YXAoKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuX25nQ29udHJvbFxuICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBjb250cm9sLmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgIGlmIChkaXNhYmxlZCAmJiBbJ0Fycm93VXAnLCAnVXAnLCAnQXJyb3dEb3duJywgJ0Rvd24nLCAnICcsICdFbnRlciddLmluZGV4T2YoZS5rZXkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgZm9ybSBmcm9tIGJlaW5nIHN1Ym1pdHRlZCBpZiBcIkVOVEVSXCIgd2FzIHByZXNzZWRcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGV2ZW50IGZyb20gYmVpbmcgaGFuZGxlZCBhZ2FpbiBieSBkb2N1bWVudFxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKVxuICAgICAgICApLnN1YnNjcmliZSgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBpc0Ryb3Bkb3duVmlzaWJsZSgpIHtcbiAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuX2luc3RhbmNlIGFzIGFueVxuICAgIHJldHVybiAhaW5zdGFuY2UuY291bnRyeUxpc3QuY2xhc3NMaXN0LmNvbnRhaW5zKCdpdGlfX2hpZGUnKVxuICB9XG5cbiAgLyoqIEZvY3VzZXMgdGhlIGlucHV0LiAqL1xuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgfVxuXG4gIC8qKiBVbmZvY3VzZXMgdGhlIGlucHV0LiAqL1xuICBwdWJsaWMgYmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpXG4gIH1cblxuICBwdWJsaWMgZ2V0SG9zdEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICB9XG59XG4iXX0=
|
|
@@ -13,4 +13,4 @@
|
|
|
13
13
|
export function currentTickTime(documentWindow = window) {
|
|
14
14
|
return documentWindow.Zone.current._properties.FakeAsyncTestZoneSpec._scheduler._currentTickTime;
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC10aWNrLXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdGVzdGluZy9jdXJyZW50LXRpY2stdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsaUJBQXNCLE1BQU07SUFDMUQsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFBO0FBQ2xHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogV2hlbiB1c2luZyBgZmFrZUFzeW5jYCB0aGlzIGNhbiBhY2Nlc3MgdGhlIGludGVybmFsIGN1cnJlbnRUaWNrVGltZSBvZiB0aGVcbiAqIGZha2Ugem9uZSdzIHNjaGVkdWxlci5cbiAqXG4gKiBOT1RFOiBEbyAqKk5PVCoqIHJlbHkgb24gdGhpcyBpbiB0ZXN0cy4gSXQgaXMgYWNjZXNzZXMgcHJpdmF0ZSBwcm9wZXJ0aWVzXG4gKiB0aGF0IGNvdWxkIGJyZWFrIG9yIGNoYW5nZSBhdCBhbnkgdGltZSwgd2hpY2ggY291bGQgY2F1c2UgaXQgdG8gbm90IGhhdmUgdGhlXG4gKiBzYW1lIG1lYW5pbmcgYW5kIGJlIGluYWNjdXJhdGUgaW4gYSBmdXR1cmUgdmVyc2lvbi5cbiAqXG4gKiBOT1RFOiBUaGlzIGlzIGFjY2Vzc2luZyBwcml2YXRlIHByb3BlcnRpZXMsIHNvIEkgZG9uJ3QgcmVjb21tZW5kIHJlbHlpbmcgb25cbiAqIHRoaXMgaW4gdGVzdHMuIEkgZmluZCBpdCB1c2VmdWwgdG8gc29tZXRpbWVzIHNldCB0aGlzIG9uIGEgZ2xvYmFsIHByb3BlcnR5XG4gKiB0aGF0IEkgY2FuIG9ic2VydmUgaW4gdGhlIGRlYnVnZ2VyJ3Mgd2F0Y2ggdmFyaWFibGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3VycmVudFRpY2tUaW1lKGRvY3VtZW50V2luZG93OiBhbnkgPSB3aW5kb3cpOiBudW1iZXIge1xuICByZXR1cm4gZG9jdW1lbnRXaW5kb3cuWm9uZS5jdXJyZW50Ll9wcm9wZXJ0aWVzLkZha2VBc3luY1Rlc3Rab25lU3BlYy5fc2NoZWR1bGVyLl9jdXJyZW50VGlja1RpbWVcbn1cbiJdfQ==
|
|
@@ -59,4 +59,4 @@ export function arrayMoveImmutable(array, fromIndex, toIndex) {
|
|
|
59
59
|
arrayMoveMutable(newArray, fromIndex, toIndex);
|
|
60
60
|
return newArray;
|
|
61
61
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktbW92ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi91dGlscy9hcnJheS1tb3ZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlGQUFpRjtBQUVqRjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa0JFO0FBQ0YsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixLQUFnQixFQUNoQixTQUFpQixFQUNqQixPQUFlO0lBRWhCLE1BQU0sVUFBVSxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFeEUsSUFBSSxVQUFVLElBQUksQ0FBQyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ2pELE1BQU0sUUFBUSxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFFaEUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNoQztBQUNGLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMkJFO0FBQ0YsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxLQUEyQixFQUMzQixTQUFpQixFQUNqQixPQUFlO0lBRWhCLE1BQU0sUUFBUSxHQUFHLENBQUUsR0FBRyxLQUFLLENBQUUsQ0FBQTtJQUM3QixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlDLE9BQU8sUUFBUSxDQUFBO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCYXNlZCBvbiBzb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvYXJyYXktbW92ZS9ibG9iL21haW4vaW5kZXguanNcblxuLyoqXG4gIE1vdmVzIHRoZSBpdGVtIHRvIHRoZSBuZXcgcG9zaXRpb24gaW4gdGhlIGlucHV0IGFycmF5LiBVc2VmdWwgZm9yIGh1Z2UgYXJyYXlzXG4gIHdoZXJlIGFic29sdXRlIHBlcmZvcm1hbmNlIGlzIG5lZWRlZC5cblxuICBAcGFyYW0gYXJyYXkgLSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICBAcGFyYW0gZnJvbUluZGV4IC0gVGhlIGluZGV4IG9mIGl0ZW0gdG8gbW92ZS4gSWYgbmVnYXRpdmUsIGl0IHdpbGwgYmVnaW4gdGhhdFxuICBtYW55IGVsZW1lbnRzIGZyb20gdGhlIGVuZC5cbiAgQHBhcmFtIHRvSW5kZXggLSBUaGUgaW5kZXggb2Ygd2hlcmUgdG8gbW92ZSB0aGUgaXRlbS4gSWYgbmVnYXRpdmUsIGl0IHdpbGxcbiAgYmVnaW4gdGhhdCBtYW55IGVsZW1lbnRzIGZyb20gdGhlIGVuZC5cbiAgQGV4YW1wbGVcbiAgYGBgXG4gIGltcG9ydCB7IGFycmF5TW92ZU11dGFibGUgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnO1xuXG4gIGNvbnN0IGlucHV0ID0gWydhJywgJ2InLCAnYyddO1xuICBhcnJheU1vdmVNdXRhYmxlKGlucHV0LCAxLCAyKTtcbiAgY29uc29sZS5sb2coaW5wdXQpO1xuICAvLz0+IFsnYScsICdjJywgJ2InXVxuICBgYGBcbiovXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlNb3ZlTXV0YWJsZShcbiAgYXJyYXk6IHVua25vd25bXSxcbiAgZnJvbUluZGV4OiBudW1iZXIsXG4gIHRvSW5kZXg6IG51bWJlclxuKTogdm9pZCB7XG5cdGNvbnN0IHN0YXJ0SW5kZXggPSBmcm9tSW5kZXggPCAwID8gYXJyYXkubGVuZ3RoICsgZnJvbUluZGV4IDogZnJvbUluZGV4O1xuXG5cdGlmIChzdGFydEluZGV4ID49IDAgJiYgc3RhcnRJbmRleCA8IGFycmF5Lmxlbmd0aCkge1xuXHRcdGNvbnN0IGVuZEluZGV4ID0gdG9JbmRleCA8IDAgPyBhcnJheS5sZW5ndGggKyB0b0luZGV4IDogdG9JbmRleDtcblxuXHRcdGNvbnN0IFtpdGVtXSA9IGFycmF5LnNwbGljZShmcm9tSW5kZXgsIDEpO1xuXHRcdGFycmF5LnNwbGljZShlbmRJbmRleCwgMCwgaXRlbSk7XG5cdH1cbn1cblxuLyoqXG4gIENsb25lcyB0aGUgZ2l2ZW4gYGFycmF5YCwgbW92ZXMgdGhlIGl0ZW0gdG8gYSBuZXcgcG9zaXRpb24gaW4gdGhlIG5ldyBhcnJheSxcbiAgYW5kIHRoZW4gcmV0dXJucyB0aGUgbmV3IGFycmF5LiBUaGUgZ2l2ZW4gYGFycmF5YCBpcyBub3QgbXV0YXRlZC5cblxuICBAcGFyYW0gYXJyYXkgLSBUaGUgYXJyYXkgd2l0aCB0aGUgaXRlbSB0byBtb3ZlLlxuICBAcGFyYW0gZnJvbUluZGV4IC0gVGhlIGluZGV4IG9mIGl0ZW0gdG8gbW92ZS4gSWYgbmVnYXRpdmUsIGl0IHdpbGwgYmVnaW4gdGhhdFxuICBtYW55IGVsZW1lbnRzIGZyb20gdGhlIGVuZC5cbiAgQHBhcmFtIHRvSW5kZXggLSBUaGUgaW5kZXggb2Ygd2hlcmUgdG8gbW92ZSB0aGUgaXRlbS4gSWYgbmVnYXRpdmUsIGl0IHdpbGxcbiAgYmVnaW4gdGhhdCBtYW55IGVsZW1lbnRzIGZyb20gdGhlIGVuZC5cbiAgQHJldHVybnMgQSBuZXcgYXJyYXkgd2l0aCB0aGUgaXRlbSBtb3ZlZCB0byB0aGUgbmV3IHBvc2l0aW9uLlxuICBAZXhhbXBsZVxuICBgYGBcbiAgaW1wb3J0IHsgYXJyYXlNb3ZlSW1tdXRhYmxlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJztcblxuICBjb25zdCBpbnB1dCA9IFsnYScsICdiJywgJ2MnXTtcbiAgY29uc3QgYXJyYXkxID0gYXJyYXlNb3ZlSW1tdXRhYmxlKGlucHV0LCAxLCAyKTtcbiAgY29uc29sZS5sb2coYXJyYXkxKTtcbiAgLy89PiBbJ2EnLCAnYycsICdiJ11cblxuICBjb25zdCBhcnJheTIgPSBhcnJheU1vdmVJbW11dGFibGUoaW5wdXQsIC0xLCAwKTtcbiAgY29uc29sZS5sb2coYXJyYXkyKTtcbiAgLy89PiBbJ2MnLCAnYScsICdiJ11cblxuICBjb25zdCBhcnJheTMgPSBhcnJheU1vdmVJbW11dGFibGUoaW5wdXQsIC0yLCAtMyk7XG4gIGNvbnNvbGUubG9nKGFycmF5Myk7XG4gIC8vPT4gWydiJywgJ2EnLCAnYyddXG4gIGBgYFxuKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheU1vdmVJbW11dGFibGU8VmFsdWVUeXBlPihcbiAgYXJyYXk6IHJlYWRvbmx5IFZhbHVlVHlwZVtdLFxuICBmcm9tSW5kZXg6IG51bWJlcixcbiAgdG9JbmRleDogbnVtYmVyXG4pOiBWYWx1ZVR5cGVbXSB7XG5cdGNvbnN0IG5ld0FycmF5ID0gWyAuLi5hcnJheSBdXG5cdGFycmF5TW92ZU11dGFibGUobmV3QXJyYXksIGZyb21JbmRleCwgdG9JbmRleClcblx0cmV0dXJuIG5ld0FycmF5XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export function isEmptyUrlRoute(activatedRoute) {
|
|
2
2
|
return activatedRoute.snapshot.url.length === 0;
|
|
3
3
|
}
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZW1wdHktdXJsLXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3V0aWxzL3JvdXRlci9pcy1lbXB0eS11cmwtcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLGVBQWUsQ0FBQyxjQUE4QjtJQUM1RCxPQUFPLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUE7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eVVybFJvdXRlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gYWN0aXZhdGVkUm91dGUuc25hcHNob3QudXJsLmxlbmd0aCA9PT0gMFxufVxuIl19
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { ChangeDetectorRef, Component, ElementRef, Input, NgZone, ViewChild } from '@angular/core';
|
|
3
|
+
import { InputBoolean } from '@theseam/ui-common/core';
|
|
4
|
+
var TemplateMessageType;
|
|
5
|
+
(function (TemplateMessageType) {
|
|
6
|
+
TemplateMessageType["TplData"] = "theseam_tpl_data";
|
|
7
|
+
TemplateMessageType["TplResize"] = "theseam_tpl_resize";
|
|
8
|
+
})(TemplateMessageType || (TemplateMessageType = {}));
|
|
9
|
+
export class TheSeamHtmlTemplateViewerComponent {
|
|
10
|
+
constructor(_ngZone, _cdr, _elementRef) {
|
|
11
|
+
this._ngZone = _ngZone;
|
|
12
|
+
this._cdr = _cdr;
|
|
13
|
+
this._elementRef = _elementRef;
|
|
14
|
+
this._dataVersion = 0;
|
|
15
|
+
this._scrollHandleObserver = null;
|
|
16
|
+
this._scrollable = false;
|
|
17
|
+
this._scrollbarOptions = {
|
|
18
|
+
callbacks: {
|
|
19
|
+
onInitialized: () => this._initScrollHandleObserver(),
|
|
20
|
+
// Only scrollbar handles from OverlayScrollbars are currently observed,
|
|
21
|
+
// so we can just disable the observer for native scrollbars.
|
|
22
|
+
onInitializationWithdrawn: () => this._destroyScrollHandleObserver(),
|
|
23
|
+
onDestroyed: () => this._destroyScrollHandleObserver(),
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
this._mouseBlockActive = false;
|
|
27
|
+
this._mouseBlockWidth = '100%';
|
|
28
|
+
this._mouseBlockHeight = '100%';
|
|
29
|
+
this._onMessageFromTemplate = (e) => {
|
|
30
|
+
const type = e.data.type;
|
|
31
|
+
if (this._templateMessageHandlers[type]) {
|
|
32
|
+
this._ngZone.run(() => this._templateMessageHandlers[type](e.data.payload));
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
this._onResizeMessageFromTemplate = (payload) => {
|
|
36
|
+
const iframeNativeElement = this._getIFrameNativeElement();
|
|
37
|
+
if (iframeNativeElement) {
|
|
38
|
+
iframeNativeElement.style.height = `${payload.height}px`;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
this._templateMessageHandlers = {
|
|
42
|
+
[TemplateMessageType.TplData]: () => { },
|
|
43
|
+
[TemplateMessageType.TplResize]: this._onResizeMessageFromTemplate
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
get src() { return this._src; }
|
|
47
|
+
set src(val) {
|
|
48
|
+
this._src = val;
|
|
49
|
+
this._updateSrc();
|
|
50
|
+
}
|
|
51
|
+
set dataVersion(value) {
|
|
52
|
+
const dv = value || 0;
|
|
53
|
+
const sendData = this._dataVersion !== dv;
|
|
54
|
+
this._dataVersion = dv;
|
|
55
|
+
if (sendData) {
|
|
56
|
+
this.postMessage(this._message);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
set data(value) {
|
|
60
|
+
this.postMessage((value !== null && value !== undefined) ? JSON.stringify(value) : value);
|
|
61
|
+
}
|
|
62
|
+
set scrollable(value) {
|
|
63
|
+
this._scrollable = value;
|
|
64
|
+
if (this._scrollable) {
|
|
65
|
+
this._initScrollHandleObserver();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this._destroyScrollHandleObserver();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
set iframeElementRef(val) {
|
|
72
|
+
this._iframeElementRef = val;
|
|
73
|
+
const iframeNativeElement = this._getIFrameNativeElement();
|
|
74
|
+
if (iframeNativeElement) {
|
|
75
|
+
this._updateSrc();
|
|
76
|
+
iframeNativeElement.onload = () => this.postMessage(this._message);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
ngOnInit() {
|
|
80
|
+
this._ngZone.runOutsideAngular(() => window.addEventListener('message', this._onMessageFromTemplate));
|
|
81
|
+
}
|
|
82
|
+
ngOnDestroy() {
|
|
83
|
+
window.removeEventListener('message', this._onMessageFromTemplate);
|
|
84
|
+
this._destroyScrollHandleObserver();
|
|
85
|
+
}
|
|
86
|
+
_updateSrc() {
|
|
87
|
+
const iframeNativeElement = this._getIFrameNativeElement();
|
|
88
|
+
if (iframeNativeElement) {
|
|
89
|
+
iframeNativeElement.src = this._src || '';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
postMessage(msg) {
|
|
93
|
+
this._message = msg;
|
|
94
|
+
let _msg = msg;
|
|
95
|
+
const contentWindow = this._getIFrameContentWindow();
|
|
96
|
+
if (contentWindow && _msg) {
|
|
97
|
+
if (this._dataVersion === 2) {
|
|
98
|
+
const wrapper = { type: TemplateMessageType.TplData, payload: undefined };
|
|
99
|
+
try {
|
|
100
|
+
wrapper.payload = JSON.parse(_msg);
|
|
101
|
+
}
|
|
102
|
+
catch (_a) {
|
|
103
|
+
wrapper.payload = _msg;
|
|
104
|
+
}
|
|
105
|
+
_msg = JSON.stringify(wrapper);
|
|
106
|
+
}
|
|
107
|
+
contentWindow.postMessage(_msg, '*');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
reload() {
|
|
111
|
+
this._updateSrc();
|
|
112
|
+
}
|
|
113
|
+
_onResized(event) {
|
|
114
|
+
// This ensures the iframe scales itself if it isn't listening to or misses
|
|
115
|
+
// the resize event.
|
|
116
|
+
this.reload();
|
|
117
|
+
}
|
|
118
|
+
_getIFrameNativeElement() {
|
|
119
|
+
var _a;
|
|
120
|
+
return ((_a = this._iframeElementRef) === null || _a === void 0 ? void 0 : _a.nativeElement) || null;
|
|
121
|
+
}
|
|
122
|
+
_getIFrameContentWindow() {
|
|
123
|
+
var _a, _b;
|
|
124
|
+
return ((_b = (_a = this._iframeElementRef) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.contentWindow) || null;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Initializes a MutationObserver to detect the 'active' class added to a
|
|
128
|
+
* scroll handle, because OverlayScrollbars does not seem to provide an event
|
|
129
|
+
* for scrollbar handle activation/deactivation.
|
|
130
|
+
*
|
|
131
|
+
* TODO: Do we need this to work for native scrollbars also?
|
|
132
|
+
*/
|
|
133
|
+
_initScrollHandleObserver() {
|
|
134
|
+
if (this._scrollHandleObserver !== null) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
this._ngZone.runOutsideAngular(() => {
|
|
138
|
+
const observer = new MutationObserver(() => {
|
|
139
|
+
this._ngZone.run(() => {
|
|
140
|
+
if (this._isScrollbarHandleActive()) {
|
|
141
|
+
this._enableMouseBlock();
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
this._disableMouseBlock();
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
observer.observe(this._elementRef.nativeElement, {
|
|
149
|
+
attributes: true,
|
|
150
|
+
attributeFilter: ['class'],
|
|
151
|
+
childList: true,
|
|
152
|
+
subtree: true,
|
|
153
|
+
characterData: false,
|
|
154
|
+
});
|
|
155
|
+
this._scrollHandleObserver = observer;
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
_destroyScrollHandleObserver() {
|
|
159
|
+
if (this._scrollHandleObserver === null) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
this._scrollHandleObserver.disconnect();
|
|
163
|
+
this._scrollHandleObserver = null;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Enables a transparent div to cover the iframe.
|
|
167
|
+
*
|
|
168
|
+
* When the mouse is over an iframe the browser stops letting the parent
|
|
169
|
+
* document receive mouse events. Anything actively tracking mouse movement or
|
|
170
|
+
* button pressed will think the mouse has left the page. So the scrollbar
|
|
171
|
+
* handle would deactivate, when the mouse hovers the iframe. This adds an
|
|
172
|
+
* element to cover the iframe, which prevents mouse events getting sent to
|
|
173
|
+
* the iframe.
|
|
174
|
+
*/
|
|
175
|
+
_enableMouseBlock() {
|
|
176
|
+
this._mouseBlockActive = true;
|
|
177
|
+
const iframeElement = this._getIFrameNativeElement();
|
|
178
|
+
if (iframeElement) {
|
|
179
|
+
const rect = iframeElement.getBoundingClientRect();
|
|
180
|
+
this._mouseBlockWidth = `${rect.width}px`;
|
|
181
|
+
this._mouseBlockHeight = `${rect.height}px`;
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
this._mouseBlockWidth = '100%';
|
|
185
|
+
this._mouseBlockHeight = '100%';
|
|
186
|
+
}
|
|
187
|
+
this._cdr.detectChanges();
|
|
188
|
+
}
|
|
189
|
+
_disableMouseBlock() {
|
|
190
|
+
this._mouseBlockActive = false;
|
|
191
|
+
this._cdr.detectChanges();
|
|
192
|
+
}
|
|
193
|
+
_isScrollbarHandleActive() {
|
|
194
|
+
return this._elementRef.nativeElement.querySelector('.os-scrollbar-handle.active') !== null;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
TheSeamHtmlTemplateViewerComponent.decorators = [
|
|
198
|
+
{ type: Component, args: [{
|
|
199
|
+
selector: 'seam-html-template-viewer',
|
|
200
|
+
template: "<div (seamElemResized)=\"_onResized($any($event))\">\n <div class=\"embed-responsive embed-responsive-4by3\"\n [seamOverlayScrollbar]=\"_scrollbarOptions\"\n [overlayScrollbarEnabled]=\"_scrollable\">\n <iframe #iframeElement class=\"embed-responsive-item\" allowfullscreen></iframe>\n <div *ngIf=\"_mouseBlockActive\"\n class=\"iframe-mouse-block\"\n [style.width]=\"_mouseBlockWidth\"\n [style.height]=\"_mouseBlockHeight\">\n </div>\n </div>\n</div>\n",
|
|
201
|
+
styles: [":host{display:block}.iframe-mouse-block{position:absolute;top:0;right:0;height:100%;width:100%}\n"]
|
|
202
|
+
},] }
|
|
203
|
+
];
|
|
204
|
+
TheSeamHtmlTemplateViewerComponent.ctorParameters = () => [
|
|
205
|
+
{ type: NgZone },
|
|
206
|
+
{ type: ChangeDetectorRef },
|
|
207
|
+
{ type: ElementRef }
|
|
208
|
+
];
|
|
209
|
+
TheSeamHtmlTemplateViewerComponent.propDecorators = {
|
|
210
|
+
src: [{ type: Input }],
|
|
211
|
+
dataVersion: [{ type: Input }],
|
|
212
|
+
data: [{ type: Input }],
|
|
213
|
+
scrollable: [{ type: Input }],
|
|
214
|
+
iframeElementRef: [{ type: ViewChild, args: ['iframeElement', { static: true },] }]
|
|
215
|
+
};
|
|
216
|
+
__decorate([
|
|
217
|
+
InputBoolean()
|
|
218
|
+
], TheSeamHtmlTemplateViewerComponent.prototype, "scrollable", null);
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC10ZW1wbGF0ZS12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3ZpZXdlcnMvaHRtbC10ZW1wbGF0ZS12aWV3ZXIvaHRtbC10ZW1wbGF0ZS12aWV3ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBT3RELElBQUssbUJBR0o7QUFIRCxXQUFLLG1CQUFtQjtJQUN0QixtREFBNEIsQ0FBQTtJQUM1Qix1REFBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBSEksbUJBQW1CLEtBQW5CLG1CQUFtQixRQUd2QjtBQVlELE1BQU0sT0FBTyxrQ0FBa0M7SUFxRTdDLFlBQ21CLE9BQWUsRUFDZixJQUF1QixFQUN2QixXQUF1QjtRQUZ2QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFsRWxDLGlCQUFZLEdBQVcsQ0FBQyxDQUFBO1FBQ3hCLDBCQUFxQixHQUE0QixJQUFJLENBQUE7UUFtQzdELGdCQUFXLEdBQVksS0FBSyxDQUFBO1FBYTVCLHNCQUFpQixHQUFHO1lBQ2xCLFNBQVMsRUFBRTtnQkFDVCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFO2dCQUNyRCx3RUFBd0U7Z0JBQ3hFLDZEQUE2RDtnQkFDN0QseUJBQXlCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFO2dCQUNwRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFO2FBQ3ZEO1NBQ0YsQ0FBQTtRQUVELHNCQUFpQixHQUFZLEtBQUssQ0FBQTtRQUNsQyxxQkFBZ0IsR0FBVyxNQUFNLENBQUE7UUFDakMsc0JBQWlCLEdBQVcsTUFBTSxDQUFBO1FBc0IxQiwyQkFBc0IsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQzFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBMkIsQ0FBQTtZQUMvQyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTthQUM1RTtRQUNILENBQUMsQ0FBQTtRQUVPLGlDQUE0QixHQUFHLENBQUMsT0FBcUMsRUFBUSxFQUFFO1lBQ3JGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUE7WUFDMUQsSUFBSSxtQkFBbUIsRUFBRTtnQkFDdkIsbUJBQW1CLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQTthQUN6RDtRQUNILENBQUMsQ0FBQTtRQTNCQyxJQUFJLENBQUMsd0JBQXdCLEdBQUc7WUFDOUIsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO1lBQ3hDLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLDRCQUE0QjtTQUNuRSxDQUFBO0lBQ0gsQ0FBQztJQXJFRCxJQUNJLEdBQUcsS0FBZ0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQztJQUN6RCxJQUFJLEdBQUcsQ0FBQyxHQUE4QjtRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQTtRQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBR0QsSUFDSSxXQUFXLENBQUMsS0FBZ0M7UUFDOUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQTtRQUNyQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQTtRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQTtRQUN0QixJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELElBQ0ksSUFBSSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzRixDQUFDO0lBR0QsSUFBSSxVQUFVLENBQUMsS0FBYztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQTtRQUN4QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUE7U0FDakM7YUFBTTtZQUNMLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFBO1NBQ3BDO0lBQ0gsQ0FBQztJQUlELElBQ0ksZ0JBQWdCLENBQUMsR0FBa0M7UUFDckQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQTtRQUM1QixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO1FBQzFELElBQUksbUJBQW1CLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQ2pCLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUNuRTtJQUNILENBQUM7SUE0QkQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFBO0lBQ3ZHLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUNsRSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQTtJQUNyQyxDQUFDO0lBZ0JPLFVBQVU7UUFDaEIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtRQUMxRCxJQUFJLG1CQUFtQixFQUFFO1lBQ3ZCLG1CQUFtQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQTtTQUMxQztJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsR0FBOEI7UUFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUE7UUFFbkIsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFBO1FBQ2QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUE7UUFDcEQsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sT0FBTyxHQUE4QyxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFBO2dCQUNwSCxJQUFJO29CQUFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtpQkFBRTtnQkFBQyxXQUFNO29CQUFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO2lCQUFFO2dCQUMzRSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUMvQjtZQUVELGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1NBQ3JDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUF3QztRQUNqRCwyRUFBMkU7UUFDM0Usb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNmLENBQUM7SUFFTyx1QkFBdUI7O1FBQzdCLE9BQU8sQ0FBQyxNQUFBLElBQUksQ0FBQyxpQkFBaUIsMENBQUUsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFBO0lBQ3hELENBQUM7SUFFTyx1QkFBdUI7O1FBQzdCLE9BQU8sQ0FBQyxNQUFBLE1BQUEsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxhQUFhLDBDQUFFLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQTtJQUN2RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0sseUJBQXlCO1FBQy9CLElBQUksSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksRUFBRTtZQUN2QyxPQUFNO1NBQ1A7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtnQkFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNwQixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFO3dCQUNuQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtxQkFDekI7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7cUJBQzFCO2dCQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxDQUFDLENBQUE7WUFFRixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO2dCQUMvQyxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsZUFBZSxFQUFFLENBQUUsT0FBTyxDQUFFO2dCQUM1QixTQUFTLEVBQUUsSUFBSTtnQkFDZixPQUFPLEVBQUUsSUFBSTtnQkFDYixhQUFhLEVBQUUsS0FBSzthQUNyQixDQUFDLENBQUE7WUFFRixJQUFJLENBQUMscUJBQXFCLEdBQUcsUUFBUSxDQUFBO1FBQ3ZDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVPLDRCQUE0QjtRQUNsQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxJQUFJLEVBQUU7WUFDdkMsT0FBTTtTQUNQO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUE7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNLLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFBO1FBRTdCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO1FBQ3BELElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO1lBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQTtZQUN6QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUE7U0FDNUM7YUFBTTtZQUNMLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUE7WUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQTtTQUNoQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDM0IsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFBO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDM0IsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLElBQUksQ0FBQTtJQUM3RixDQUFDOzs7WUFsT0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLGtmQUFvRDs7YUFFckQ7OztZQXZCeUQsTUFBTTtZQUF2RCxpQkFBaUI7WUFBYSxVQUFVOzs7a0JBaUM5QyxLQUFLOzBCQVFMLEtBQUs7bUJBVUwsS0FBSzt5QkFLTCxLQUFLOytCQVlMLFNBQVMsU0FBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztBQVg1QztJQURVLFlBQVksRUFBRTtvRUFRdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5cbmludGVyZmFjZSBUZW1wbGF0ZVJlc2l6ZU1lc3NhZ2VQYXlsb2FkIHtcbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxufVxuXG5lbnVtIFRlbXBsYXRlTWVzc2FnZVR5cGUge1xuICBUcGxEYXRhID0gJ3RoZXNlYW1fdHBsX2RhdGEnLFxuICBUcGxSZXNpemUgPSAndGhlc2VhbV90cGxfcmVzaXplJyxcbn1cblxuaW50ZXJmYWNlIFRlbXBsYXRlTWVzc2FnZTxUVHlwZSwgVFBheWxvYWQ+IHtcbiAgdHlwZTogVFR5cGVcbiAgcGF5bG9hZDogVFBheWxvYWRcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1odG1sLXRlbXBsYXRlLXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9odG1sLXRlbXBsYXRlLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2h0bWwtdGVtcGxhdGUtdmlld2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGhlU2VhbUh0bWxUZW1wbGF0ZVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Njcm9sbGFibGU6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbXBsYXRlTWVzc2FnZUhhbmRsZXJzOiB7IFtrZXkgaW4gVGVtcGxhdGVNZXNzYWdlVHlwZV06IChwYXlsb2FkOiBhbnkpID0+IHZvaWQgfVxuXG4gIHByaXZhdGUgX21lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgcHJpdmF0ZSBfZGF0YVZlcnNpb246IG51bWJlciA9IDBcbiAgcHJpdmF0ZSBfc2Nyb2xsSGFuZGxlT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbFxuXG4gIEBJbnB1dCgpXG4gIGdldCBzcmMoKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9zcmMgfVxuICBzZXQgc3JjKHZhbDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3NyYyA9IHZhbFxuICAgIHRoaXMuX3VwZGF0ZVNyYygpXG4gIH1cbiAgcHJpdmF0ZSBfc3JjOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KClcbiAgc2V0IGRhdGFWZXJzaW9uKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgY29uc3QgZHYgPSB2YWx1ZSB8fCAwXG4gICAgY29uc3Qgc2VuZERhdGEgPSB0aGlzLl9kYXRhVmVyc2lvbiAhPT0gZHZcbiAgICB0aGlzLl9kYXRhVmVyc2lvbiA9IGR2XG4gICAgaWYgKHNlbmREYXRhKSB7XG4gICAgICB0aGlzLnBvc3RNZXNzYWdlKHRoaXMuX21lc3NhZ2UpXG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGRhdGEodmFsdWU6IGFueSkge1xuICAgIHRoaXMucG9zdE1lc3NhZ2UoKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWUpXG4gIH1cblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcbiAgc2V0IHNjcm9sbGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zY3JvbGxhYmxlID0gdmFsdWVcbiAgICBpZiAodGhpcy5fc2Nyb2xsYWJsZSkge1xuICAgICAgdGhpcy5faW5pdFNjcm9sbEhhbmRsZU9ic2VydmVyKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGVzdHJveVNjcm9sbEhhbmRsZU9ic2VydmVyKClcbiAgICB9XG4gIH1cblxuICBfc2Nyb2xsYWJsZTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgQFZpZXdDaGlsZCgnaWZyYW1lRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNldCBpZnJhbWVFbGVtZW50UmVmKHZhbDogRWxlbWVudFJlZjxIVE1MSUZyYW1lRWxlbWVudD4pIHtcbiAgICB0aGlzLl9pZnJhbWVFbGVtZW50UmVmID0gdmFsXG4gICAgY29uc3QgaWZyYW1lTmF0aXZlRWxlbWVudCA9IHRoaXMuX2dldElGcmFtZU5hdGl2ZUVsZW1lbnQoKVxuICAgIGlmIChpZnJhbWVOYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLl91cGRhdGVTcmMoKVxuICAgICAgaWZyYW1lTmF0aXZlRWxlbWVudC5vbmxvYWQgPSAoKSA9PiB0aGlzLnBvc3RNZXNzYWdlKHRoaXMuX21lc3NhZ2UpXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2lmcmFtZUVsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PlxuXG4gIF9zY3JvbGxiYXJPcHRpb25zID0ge1xuICAgIGNhbGxiYWNrczoge1xuICAgICAgb25Jbml0aWFsaXplZDogKCkgPT4gdGhpcy5faW5pdFNjcm9sbEhhbmRsZU9ic2VydmVyKCksXG4gICAgICAvLyBPbmx5IHNjcm9sbGJhciBoYW5kbGVzIGZyb20gT3ZlcmxheVNjcm9sbGJhcnMgYXJlIGN1cnJlbnRseSBvYnNlcnZlZCxcbiAgICAgIC8vIHNvIHdlIGNhbiBqdXN0IGRpc2FibGUgdGhlIG9ic2VydmVyIGZvciBuYXRpdmUgc2Nyb2xsYmFycy5cbiAgICAgIG9uSW5pdGlhbGl6YXRpb25XaXRoZHJhd246ICgpID0+IHRoaXMuX2Rlc3Ryb3lTY3JvbGxIYW5kbGVPYnNlcnZlcigpLFxuICAgICAgb25EZXN0cm95ZWQ6ICgpID0+IHRoaXMuX2Rlc3Ryb3lTY3JvbGxIYW5kbGVPYnNlcnZlcigpLFxuICAgIH1cbiAgfVxuXG4gIF9tb3VzZUJsb2NrQWN0aXZlOiBib29sZWFuID0gZmFsc2VcbiAgX21vdXNlQmxvY2tXaWR0aDogc3RyaW5nID0gJzEwMCUnXG4gIF9tb3VzZUJsb2NrSGVpZ2h0OiBzdHJpbmcgPSAnMTAwJSdcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy5fdGVtcGxhdGVNZXNzYWdlSGFuZGxlcnMgPSB7XG4gICAgICBbVGVtcGxhdGVNZXNzYWdlVHlwZS5UcGxEYXRhXTogKCkgPT4geyB9LCAvLyBOb3QgbGlzdGVuaW5nIGZvciBtZXNzYWdlIGZyb20gdGVtcGxhdGVcbiAgICAgIFtUZW1wbGF0ZU1lc3NhZ2VUeXBlLlRwbFJlc2l6ZV06IHRoaXMuX29uUmVzaXplTWVzc2FnZUZyb21UZW1wbGF0ZVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuX29uTWVzc2FnZUZyb21UZW1wbGF0ZSkpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuX29uTWVzc2FnZUZyb21UZW1wbGF0ZSlcbiAgICB0aGlzLl9kZXN0cm95U2Nyb2xsSGFuZGxlT2JzZXJ2ZXIoKVxuICB9XG5cbiAgcHJpdmF0ZSBfb25NZXNzYWdlRnJvbVRlbXBsYXRlID0gKGU6IGFueSkgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSBlLmRhdGEudHlwZSBhcyBUZW1wbGF0ZU1lc3NhZ2VUeXBlXG4gICAgaWYgKHRoaXMuX3RlbXBsYXRlTWVzc2FnZUhhbmRsZXJzW3R5cGVdKSB7XG4gICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuX3RlbXBsYXRlTWVzc2FnZUhhbmRsZXJzW3R5cGVdKGUuZGF0YS5wYXlsb2FkKSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblJlc2l6ZU1lc3NhZ2VGcm9tVGVtcGxhdGUgPSAocGF5bG9hZDogVGVtcGxhdGVSZXNpemVNZXNzYWdlUGF5bG9hZCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGlmcmFtZU5hdGl2ZUVsZW1lbnQgPSB0aGlzLl9nZXRJRnJhbWVOYXRpdmVFbGVtZW50KClcbiAgICBpZiAoaWZyYW1lTmF0aXZlRWxlbWVudCkge1xuICAgICAgaWZyYW1lTmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtwYXlsb2FkLmhlaWdodH1weGBcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTcmMoKTogdm9pZCB7XG4gICAgY29uc3QgaWZyYW1lTmF0aXZlRWxlbWVudCA9IHRoaXMuX2dldElGcmFtZU5hdGl2ZUVsZW1lbnQoKVxuICAgIGlmIChpZnJhbWVOYXRpdmVFbGVtZW50KSB7XG4gICAgICBpZnJhbWVOYXRpdmVFbGVtZW50LnNyYyA9IHRoaXMuX3NyYyB8fCAnJ1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwb3N0TWVzc2FnZShtc2c6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXNzYWdlID0gbXNnXG5cbiAgICBsZXQgX21zZyA9IG1zZ1xuICAgIGNvbnN0IGNvbnRlbnRXaW5kb3cgPSB0aGlzLl9nZXRJRnJhbWVDb250ZW50V2luZG93KClcbiAgICBpZiAoY29udGVudFdpbmRvdyAmJiBfbXNnKSB7XG4gICAgICBpZiAodGhpcy5fZGF0YVZlcnNpb24gPT09IDIpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlcjogVGVtcGxhdGVNZXNzYWdlPFRlbXBsYXRlTWVzc2FnZVR5cGUsIGFueT4gPSB7IHR5cGU6IFRlbXBsYXRlTWVzc2FnZVR5cGUuVHBsRGF0YSwgcGF5bG9hZDogdW5kZWZpbmVkIH1cbiAgICAgICAgdHJ5IHsgd3JhcHBlci5wYXlsb2FkID0gSlNPTi5wYXJzZShfbXNnKSB9IGNhdGNoIHsgd3JhcHBlci5wYXlsb2FkID0gX21zZyB9XG4gICAgICAgIF9tc2cgPSBKU09OLnN0cmluZ2lmeSh3cmFwcGVyKVxuICAgICAgfVxuXG4gICAgICBjb250ZW50V2luZG93LnBvc3RNZXNzYWdlKF9tc2csICcqJylcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZVNyYygpXG4gIH1cblxuICBfb25SZXNpemVkKGV2ZW50OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0pIHtcbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIGlmcmFtZSBzY2FsZXMgaXRzZWxmIGlmIGl0IGlzbid0IGxpc3RlbmluZyB0byBvciBtaXNzZXNcbiAgICAvLyB0aGUgcmVzaXplIGV2ZW50LlxuICAgIHRoaXMucmVsb2FkKClcbiAgfVxuXG4gIHByaXZhdGUgX2dldElGcmFtZU5hdGl2ZUVsZW1lbnQoKTogSFRNTElGcmFtZUVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gKHRoaXMuX2lmcmFtZUVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHx8IG51bGxcbiAgfVxuXG4gIHByaXZhdGUgX2dldElGcmFtZUNvbnRlbnRXaW5kb3coKTogV2luZG93IHwgbnVsbCB7XG4gICAgcmV0dXJuICh0aGlzLl9pZnJhbWVFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5jb250ZW50V2luZG93KSB8fCBudWxsXG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgYSBNdXRhdGlvbk9ic2VydmVyIHRvIGRldGVjdCB0aGUgJ2FjdGl2ZScgY2xhc3MgYWRkZWQgdG8gYVxuICAgKiBzY3JvbGwgaGFuZGxlLCBiZWNhdXNlIE92ZXJsYXlTY3JvbGxiYXJzIGRvZXMgbm90IHNlZW0gdG8gcHJvdmlkZSBhbiBldmVudFxuICAgKiBmb3Igc2Nyb2xsYmFyIGhhbmRsZSBhY3RpdmF0aW9uL2RlYWN0aXZhdGlvbi5cbiAgICpcbiAgICogVE9ETzogRG8gd2UgbmVlZCB0aGlzIHRvIHdvcmsgZm9yIG5hdGl2ZSBzY3JvbGxiYXJzIGFsc28/XG4gICAqL1xuICBwcml2YXRlIF9pbml0U2Nyb2xsSGFuZGxlT2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Njcm9sbEhhbmRsZU9ic2VydmVyICE9PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9pc1Njcm9sbGJhckhhbmRsZUFjdGl2ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbmFibGVNb3VzZUJsb2NrKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZU1vdXNlQmxvY2soKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWyAnY2xhc3MnIF0sXG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgY2hhcmFjdGVyRGF0YTogZmFsc2UsXG4gICAgICB9KVxuXG4gICAgICB0aGlzLl9zY3JvbGxIYW5kbGVPYnNlcnZlciA9IG9ic2VydmVyXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgX2Rlc3Ryb3lTY3JvbGxIYW5kbGVPYnNlcnZlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2Nyb2xsSGFuZGxlT2JzZXJ2ZXIgPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX3Njcm9sbEhhbmRsZU9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgIHRoaXMuX3Njcm9sbEhhbmRsZU9ic2VydmVyID0gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYSB0cmFuc3BhcmVudCBkaXYgdG8gY292ZXIgdGhlIGlmcmFtZS5cbiAgICpcbiAgICogV2hlbiB0aGUgbW91c2UgaXMgb3ZlciBhbiBpZnJhbWUgdGhlIGJyb3dzZXIgc3RvcHMgbGV0dGluZyB0aGUgcGFyZW50XG4gICAqIGRvY3VtZW50IHJlY2VpdmUgbW91c2UgZXZlbnRzLiBBbnl0aGluZyBhY3RpdmVseSB0cmFja2luZyBtb3VzZSBtb3ZlbWVudCBvclxuICAgKiBidXR0b24gcHJlc3NlZCB3aWxsIHRoaW5rIHRoZSBtb3VzZSBoYXMgbGVmdCB0aGUgcGFnZS4gU28gdGhlIHNjcm9sbGJhclxuICAgKiBoYW5kbGUgd291bGQgZGVhY3RpdmF0ZSwgd2hlbiB0aGUgbW91c2UgaG92ZXJzIHRoZSBpZnJhbWUuIFRoaXMgYWRkcyBhblxuICAgKiBlbGVtZW50IHRvIGNvdmVyIHRoZSBpZnJhbWUsIHdoaWNoIHByZXZlbnRzIG1vdXNlIGV2ZW50cyBnZXR0aW5nIHNlbnQgdG9cbiAgICogdGhlIGlmcmFtZS5cbiAgICovXG4gIHByaXZhdGUgX2VuYWJsZU1vdXNlQmxvY2soKTogdm9pZCB7XG4gICAgdGhpcy5fbW91c2VCbG9ja0FjdGl2ZSA9IHRydWVcblxuICAgIGNvbnN0IGlmcmFtZUVsZW1lbnQgPSB0aGlzLl9nZXRJRnJhbWVOYXRpdmVFbGVtZW50KClcbiAgICBpZiAoaWZyYW1lRWxlbWVudCkge1xuICAgICAgY29uc3QgcmVjdCA9IGlmcmFtZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIHRoaXMuX21vdXNlQmxvY2tXaWR0aCA9IGAke3JlY3Qud2lkdGh9cHhgXG4gICAgICB0aGlzLl9tb3VzZUJsb2NrSGVpZ2h0ID0gYCR7cmVjdC5oZWlnaHR9cHhgXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21vdXNlQmxvY2tXaWR0aCA9ICcxMDAlJ1xuICAgICAgdGhpcy5fbW91c2VCbG9ja0hlaWdodCA9ICcxMDAlJ1xuICAgIH1cblxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVNb3VzZUJsb2NrKCk6IHZvaWQge1xuICAgIHRoaXMuX21vdXNlQmxvY2tBY3RpdmUgPSBmYWxzZVxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIHByaXZhdGUgX2lzU2Nyb2xsYmFySGFuZGxlQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm9zLXNjcm9sbGJhci1oYW5kbGUuYWN0aXZlJykgIT09IG51bGxcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { TheSeamScrollbarModule } from '@theseam/ui-common/scrollbar';
|
|
4
|
+
import { TheSeamSharedModule } from '@theseam/ui-common/shared';
|
|
5
|
+
import { TheSeamHtmlTemplateViewerComponent } from './html-template-viewer.component';
|
|
6
|
+
export class TheSeamHtmlTemplateViewerModule {
|
|
7
|
+
}
|
|
8
|
+
TheSeamHtmlTemplateViewerModule.decorators = [
|
|
9
|
+
{ type: NgModule, args: [{
|
|
10
|
+
imports: [
|
|
11
|
+
CommonModule,
|
|
12
|
+
TheSeamScrollbarModule,
|
|
13
|
+
TheSeamSharedModule,
|
|
14
|
+
],
|
|
15
|
+
declarations: [
|
|
16
|
+
TheSeamHtmlTemplateViewerComponent,
|
|
17
|
+
],
|
|
18
|
+
exports: [
|
|
19
|
+
TheSeamHtmlTemplateViewerComponent,
|
|
20
|
+
]
|
|
21
|
+
},] }
|
|
22
|
+
];
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC10ZW1wbGF0ZS12aWV3ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3ZpZXdlcnMvaHRtbC10ZW1wbGF0ZS12aWV3ZXIvaHRtbC10ZW1wbGF0ZS12aWV3ZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRS9ELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBZXJGLE1BQU0sT0FBTywrQkFBK0I7OztZQWIzQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osc0JBQXNCO29CQUN0QixtQkFBbUI7aUJBQ3BCO2dCQUNELFlBQVksRUFBRTtvQkFDWixrQ0FBa0M7aUJBQ25DO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxrQ0FBa0M7aUJBQ25DO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IFRoZVNlYW1TY3JvbGxiYXJNb2R1bGUgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vc2Nyb2xsYmFyJ1xuaW1wb3J0IHsgVGhlU2VhbVNoYXJlZE1vZHVsZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9zaGFyZWQnXG5cbmltcG9ydCB7IFRoZVNlYW1IdG1sVGVtcGxhdGVWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2h0bWwtdGVtcGxhdGUtdmlld2VyLmNvbXBvbmVudCdcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUaGVTZWFtU2Nyb2xsYmFyTW9kdWxlLFxuICAgIFRoZVNlYW1TaGFyZWRNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRoZVNlYW1IdG1sVGVtcGxhdGVWaWV3ZXJDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUaGVTZWFtSHRtbFRlbXBsYXRlVmlld2VyQ29tcG9uZW50LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1IdG1sVGVtcGxhdGVWaWV3ZXJNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './html-template-viewer.component';
|
|
2
|
+
export * from './html-template-viewer.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdmlld2Vycy9odG1sLXRlbXBsYXRlLXZpZXdlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMsK0JBQStCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2h0bWwtdGVtcGxhdGUtdmlld2VyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vaHRtbC10ZW1wbGF0ZS12aWV3ZXIubW9kdWxlJ1xuIl19
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export * from './pdf-viewer';
|
|
2
|
-
|
|
2
|
+
export * from './html-template-viewer';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi92aWV3ZXJzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyx3QkFBd0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGRmLXZpZXdlcidcbmV4cG9ydCAqIGZyb20gJy4vaHRtbC10ZW1wbGF0ZS12aWV3ZXInXG4iXX0=
|
|
@@ -87,7 +87,7 @@ WidgetComponent.decorators = [
|
|
|
87
87
|
])
|
|
88
88
|
])
|
|
89
89
|
],
|
|
90
|
-
styles: ["seam-widget{display:block;font-size:15px}seam-widget .seam-widget{background:#FFFFFF}seam-widget .widget-header{display:flex;flex-direction:row;border-bottom:1px solid #dee2e6;background:#F4F4F4;font-size:17px}seam-widget .widget-header .widget-header-content{flex:1 1 100%}seam-widget .widget-header .widget-header-btns-container{display:flex;flex-direction:row}seam-widget .widget-header .widget-header-btns-container>div{display:flex;flex-direction:column;justify-content:center;padding:4px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:25px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:15px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-title{font-size:17px}seam-widget .widget-header-icon{display:inline-block;vertical-align:top;max-height:20px;max-width:20px;height:20px;width:20px}seam-widget .widget-header-icon .widget-header-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;max-height:20px;max-width:20px;height:20px;width:20px}seam-widget .widget-header-icon .widget-header-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header-icon .widget-header-icon--img{height:100%;max-height:20px;max-width:20px}\n"]
|
|
90
|
+
styles: ["seam-widget{display:block;font-size:15px}seam-widget .seam-widget{background:#FFFFFF;box-shadow:none}seam-widget .widget-header{display:flex;flex-direction:row;border-bottom:1px solid #dee2e6;background:#F4F4F4;font-size:17px}seam-widget .widget-header .widget-header-content{flex:1 1 100%}seam-widget .widget-header .widget-header-btns-container{display:flex;flex-direction:row}seam-widget .widget-header .widget-header-btns-container>div{display:flex;flex-direction:column;justify-content:center;padding:4px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:25px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:15px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-title{font-size:17px}seam-widget .widget-header-icon{display:inline-block;vertical-align:top;max-height:20px;max-width:20px;height:20px;width:20px;color:currentColor}seam-widget .widget-header-icon .widget-header-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;max-height:20px;max-width:20px;height:20px;width:20px}seam-widget .widget-header-icon .widget-header-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header-icon .widget-header-icon--img{height:100%;max-height:20px;max-width:20px}\n"]
|
|
91
91
|
},] }
|
|
92
92
|
];
|
|
93
93
|
WidgetComponent.ctorParameters = () => [];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
2
|
+
import { Injectable, Component, ViewEncapsulation, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/router';
|
|
4
4
|
import { NavigationEnd, Router, ActivatedRoute, RouterModule } from '@angular/router';
|
|
5
5
|
import { combineLatest, of } from 'rxjs';
|
|
@@ -169,8 +169,9 @@ BreadcrumbsComponent.decorators = [
|
|
|
169
169
|
{ type: Component, args: [{
|
|
170
170
|
selector: 'seam-breadcrumbs',
|
|
171
171
|
template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n",
|
|
172
|
+
encapsulation: ViewEncapsulation.None,
|
|
172
173
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
173
|
-
styles: [""]
|
|
174
|
+
styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:inherit}\n"]
|
|
174
175
|
},] }
|
|
175
176
|
];
|
|
176
177
|
BreadcrumbsComponent.ctorParameters = () => [
|