@koobiq/components 18.29.0 → 18.30.0
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/code-block/_code-block-theme.scss +4 -12
- package/code-block/code-block-tokens.scss +3 -2
- package/code-block/code-block.scss +41 -10
- package/core/formatters/filesize/size.d.ts +19 -3
- package/core/forms/validators.d.ts +13 -0
- package/core/pop-up/pop-up-trigger.d.ts +3 -4
- package/core/pop-up/pop-up.d.ts +2 -1
- package/core/select/common.d.ts +3 -3
- package/ellipsis-center/ellipsis-center.directive.d.ts +8 -2
- package/esm2022/actions-panel/actions-panel-container.mjs +2 -2
- package/esm2022/code-block/code-block.mjs +6 -3
- package/esm2022/core/formatters/filesize/formatter.mjs +6 -9
- package/esm2022/core/formatters/filesize/size.mjs +15 -17
- package/esm2022/core/forms/validators.mjs +22 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +19 -10
- package/esm2022/core/pop-up/pop-up.mjs +6 -2
- package/esm2022/core/select/common.mjs +6 -4
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +14 -4
- package/esm2022/file-upload/file-upload.mjs +2 -1
- package/esm2022/file-upload/multiple-file-upload.component.mjs +21 -7
- package/esm2022/file-upload/single-file-upload.component.mjs +16 -7
- package/esm2022/filter-bar/filter-search.mjs +2 -2
- package/esm2022/filter-bar/filters.mjs +2 -2
- package/esm2022/filter-bar/pipe-add.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-button.mjs +1 -1
- package/esm2022/filter-bar/pipes/pipe-date.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-text.mjs +2 -2
- package/esm2022/form-field/form-field.mjs +8 -8
- package/esm2022/form-field/stepper.mjs +20 -4
- package/esm2022/overflow-items/overflow-items.mjs +43 -70
- package/esm2022/popover/popover.component.mjs +10 -4
- package/esm2022/select/select.component.mjs +5 -6
- package/esm2022/tabs/tab-group.component.mjs +1 -1
- package/esm2022/tooltip/tooltip.component.mjs +12 -3
- package/esm2022/top-bar/top-bar.mjs +2 -2
- package/fesm2022/koobiq-components-actions-panel.mjs +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +5 -2
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +68 -37
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +13 -3
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +32 -10
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +7 -7
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +25 -10
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +42 -69
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +9 -3
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +4 -5
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +1 -1
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +11 -2
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +2 -2
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +38 -22
- package/file-upload/file-upload-tokens.scss +37 -14
- package/file-upload/file-upload.d.ts +1 -0
- package/file-upload/multiple-file-upload.component.d.ts +12 -5
- package/file-upload/multiple-file-upload.component.scss +66 -69
- package/file-upload/single-file-upload.component.d.ts +7 -1
- package/file-upload/single-file-upload.component.scss +8 -0
- package/form-field/form-field.d.ts +3 -1
- package/form-field/stepper.d.ts +15 -1
- package/overflow-items/overflow-items.d.ts +16 -25
- package/package.json +4 -4
- package/popover/popover.component.d.ts +4 -2
- package/schematics/ng-add/index.js +2 -2
- package/tooltip/tooltip.component.d.ts +8 -1
- package/top-bar/top-bar.scss +1 -0
|
@@ -21,15 +21,12 @@ export class KbqDataSizePipe {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
/** Transforms bytes into localized size string */
|
|
24
|
-
transform(source, precision, unitSystemName, locale) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
const resolvedUnitSystems = locale
|
|
28
|
-
? this.localeService?.locales[locale].sizeUnits.unitSystems
|
|
24
|
+
transform(source, precision = this.config.defaultPrecision, unitSystemName = this.config.defaultUnitSystem, locale = this.localeService?.id || KBQ_DEFAULT_LOCALE_ID) {
|
|
25
|
+
const resolvedUnitSystems = this.localeService
|
|
26
|
+
? this.localeService.locales[locale].sizeUnits.unitSystems
|
|
29
27
|
: this.config.unitSystems;
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const formattedValue = this.numberPipe?.transform(value, undefined, currentLocale) || value;
|
|
28
|
+
const { value, unit } = getFormattedSizeParts(source, resolvedUnitSystems[unitSystemName]);
|
|
29
|
+
const formattedValue = this.numberPipe?.transform(value, `1.0-${precision}`, locale) || value;
|
|
33
30
|
return formattedValue ? `${formattedValue}${this.nonBreakingSpace}${unit}` : '';
|
|
34
31
|
}
|
|
35
32
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDataSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
@@ -43,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43
40
|
pure: false
|
|
44
41
|
}]
|
|
45
42
|
}], ctorParameters: () => [] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvZmlsZXNpemUvZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsNkJBQTZCLEVBS2hDLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLGVBQWU7SUFTeEI7UUFSQSx1RUFBdUU7UUFDOUQsbUJBQWMsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUzRCxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELGVBQVUsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQscUJBQWdCLEdBQUcsUUFBUSxDQUFDO1FBNkJyQyx1QkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BGLENBQUMsQ0FBQztRQTNCRSxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUxRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSw2QkFBNkIsQ0FBQztRQUN2RSxDQUFDO0lBQ0wsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxTQUFTLENBQ0wsTUFBYyxFQUNkLFlBQW9CLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQ2hELGlCQUEyQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUN4RSxTQUFpQixJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxxQkFBcUI7UUFFaEUsTUFBTSxtQkFBbUIsR0FBZ0QsSUFBSSxDQUFDLGFBQWE7WUFDdkYsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXO1lBQzFELENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUU5QixNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBRTNGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUU5RixPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEYsQ0FBQztrSUFqQ1EsZUFBZTtnSUFBZixlQUFlOzs0RkFBZixlQUFlO2tCQUwzQixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxhQUFhO29CQUNuQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLEtBQUs7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEtCUV9ERUZBVUxUX0xPQ0FMRV9JRCwgS0JRX0xPQ0FMRV9TRVJWSUNFIH0gZnJvbSAnLi4vLi4vbG9jYWxlcyc7XG5pbXBvcnQgeyBLYnFEZWNpbWFsUGlwZSB9IGZyb20gJy4uL251bWJlci9mb3JtYXR0ZXInO1xuaW1wb3J0IHtcbiAgICBLQlFfU0laRV9VTklUU19DT05GSUcsXG4gICAgS0JRX1NJWkVfVU5JVFNfREVGQVVMVF9DT05GSUcsXG4gICAgS2JxTWVhc3VyZW1lbnRTeXN0ZW0sXG4gICAgS2JxTWVhc3VyZW1lbnRTeXN0ZW1UeXBlLFxuICAgIEticVNpemVVbml0c0NvbmZpZyxcbiAgICBLYnFVbml0U3lzdGVtXG59IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IGdldEZvcm1hdHRlZFNpemVQYXJ0cyB9IGZyb20gJy4vc2l6ZSc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAna2JxRGF0YVNpemUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHVyZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgS2JxRGF0YVNpemVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEluamVjdHMgdGhlIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24gZm9yIHNpemUgdW5pdHMsIGlmIGF2YWlsYWJsZS4gKi9cbiAgICByZWFkb25seSBleHRlcm5hbENvbmZpZyA9IGluamVjdChLQlFfU0laRV9VTklUU19DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbnVtYmVyUGlwZSA9IGluamVjdChLYnFEZWNpbWFsUGlwZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vbkJyZWFraW5nU3BhY2UgPSAnXFx1MDBhMCc7XG4gICAgcHJpdmF0ZSBjb25maWc6IEticVNpemVVbml0c0NvbmZpZztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlTG9jYWxlUGFyYW1zKTtcblxuICAgICAgICBpZiAoIXRoaXMubG9jYWxlU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmV4dGVybmFsQ29uZmlnIHx8IEtCUV9TSVpFX1VOSVRTX0RFRkFVTFRfQ09ORklHO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFRyYW5zZm9ybXMgYnl0ZXMgaW50byBsb2NhbGl6ZWQgc2l6ZSBzdHJpbmcgKi9cbiAgICB0cmFuc2Zvcm0oXG4gICAgICAgIHNvdXJjZTogbnVtYmVyLFxuICAgICAgICBwcmVjaXNpb246IG51bWJlciA9IHRoaXMuY29uZmlnLmRlZmF1bHRQcmVjaXNpb24sXG4gICAgICAgIHVuaXRTeXN0ZW1OYW1lOiBLYnFNZWFzdXJlbWVudFN5c3RlbVR5cGUgPSB0aGlzLmNvbmZpZy5kZWZhdWx0VW5pdFN5c3RlbSxcbiAgICAgICAgbG9jYWxlOiBzdHJpbmcgPSB0aGlzLmxvY2FsZVNlcnZpY2U/LmlkIHx8IEtCUV9ERUZBVUxUX0xPQ0FMRV9JRFxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVW5pdFN5c3RlbXM6IFJlY29yZDxLYnFNZWFzdXJlbWVudFN5c3RlbSwgS2JxVW5pdFN5c3RlbT4gPSB0aGlzLmxvY2FsZVNlcnZpY2VcbiAgICAgICAgICAgID8gdGhpcy5sb2NhbGVTZXJ2aWNlLmxvY2FsZXNbbG9jYWxlXS5zaXplVW5pdHMudW5pdFN5c3RlbXNcbiAgICAgICAgICAgIDogdGhpcy5jb25maWcudW5pdFN5c3RlbXM7XG5cbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgdW5pdCB9ID0gZ2V0Rm9ybWF0dGVkU2l6ZVBhcnRzKHNvdXJjZSwgcmVzb2x2ZWRVbml0U3lzdGVtc1t1bml0U3lzdGVtTmFtZV0pO1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5udW1iZXJQaXBlPy50cmFuc2Zvcm0odmFsdWUsIGAxLjAtJHtwcmVjaXNpb259YCwgbG9jYWxlKSB8fCB2YWx1ZTtcblxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkVmFsdWUgPyBgJHtmb3JtYXR0ZWRWYWx1ZX0ke3RoaXMubm9uQnJlYWtpbmdTcGFjZX0ke3VuaXR9YCA6ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9jYWxlUGFyYW1zID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZXh0ZXJuYWxDb25maWcgfHwgdGhpcy5sb2NhbGVTZXJ2aWNlPy5nZXRQYXJhbXMoJ3NpemVVbml0cycpO1xuICAgIH07XG59XG4iXX0=
|
|
@@ -17,25 +17,23 @@ export const formatDataSize = (value, precision, system) => {
|
|
|
17
17
|
unit
|
|
18
18
|
};
|
|
19
19
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const { result, unit } = getHumanizedBytes(value, system);
|
|
20
|
+
export function getFormattedSizeParts(value, _precision, system) {
|
|
21
|
+
let resolvedSystem = null;
|
|
22
|
+
if (arguments.length === 2 && typeof _precision === 'object') {
|
|
23
|
+
resolvedSystem = _precision;
|
|
24
|
+
}
|
|
25
|
+
if (arguments.length === 3 && typeof _precision === 'number' && system) {
|
|
26
|
+
resolvedSystem = system;
|
|
27
|
+
}
|
|
28
|
+
if (!resolvedSystem) {
|
|
29
|
+
throw new Error('Unexpected arguments size');
|
|
30
|
+
}
|
|
31
|
+
const { result, unit } = getHumanizedBytes(value, resolvedSystem);
|
|
33
32
|
return {
|
|
34
|
-
|
|
35
|
-
value: unit === system.abbreviations[0] ? result.toString() : result.toFixed(precision),
|
|
33
|
+
value: result.toString(),
|
|
36
34
|
unit
|
|
37
35
|
};
|
|
38
|
-
}
|
|
36
|
+
}
|
|
39
37
|
/**
|
|
40
38
|
* Converts bytes to Kb, Mb, Gb
|
|
41
39
|
*
|
|
@@ -64,4 +62,4 @@ export const getHumanizedBytes = (value, system, threshold) => {
|
|
|
64
62
|
unit: system.abbreviations[step]
|
|
65
63
|
};
|
|
66
64
|
};
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29yZS9mb3JtYXR0ZXJzL2ZpbGVzaXplL3NpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsMkNBQTJDLENBQUM7QUFFbkY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzFCLEtBQWEsRUFDYixTQUFpQixFQUNqQixNQUFxQixFQUNVLEVBQUU7SUFDakMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFjLENBQUM7SUFFbkIsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ25DLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxPQUFPO1FBQ0gsS0FBSyxFQUFFLE1BQU07UUFDYixJQUFJO0tBQ1AsQ0FBQztBQUNOLENBQUMsQ0FBQztBQStCRixNQUFNLFVBQVUscUJBQXFCLENBQ2pDLEtBQWEsRUFDYixVQUFrQyxFQUNsQyxNQUFzQjtJQUV0QixJQUFJLGNBQWMsR0FBeUIsSUFBSSxDQUFDO0lBRWhELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0QsY0FBYyxHQUFHLFVBQWtDLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3JFLGNBQWMsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRWxFLE9BQU87UUFDSCxLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUN4QixJQUFJO0tBQ1AsQ0FBQztBQUNOLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUM3QixLQUFhLEVBQ2IsTUFBcUIsRUFDckIsU0FBa0IsRUFDYyxFQUFFO0lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RyxNQUFNLGdCQUFnQixHQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFckUsSUFBSSxNQUFNLEdBQVcsS0FBSyxDQUFDO0lBQzNCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLE1BQU0sR0FBRyxHQUFXLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVwRCxPQUFPLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLG1CQUFtQixLQUFLLFNBQVMsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztZQUNwRSxNQUFNO1FBQ1YsQ0FBQztRQUVELElBQUksRUFBRSxDQUFDO1FBQ1AsTUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPO1FBQ0gsTUFBTTtRQUNOLElBQUksRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztLQUNuQyxDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2JxVW5pdFN5c3RlbSB9IGZyb20gJy4vY29uZmlnJztcblxuZXhwb3J0IGNvbnN0IEtCUV9JTlZBTElEX1ZBTFVFX0VSUk9SID0gJ0FyZ3VtZW50IFwidmFsdWVcIiBtdXN0IGJlIGEgZmluaXRlIG51bWJlciEnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IG1ham9yIHJlbGVhc2UuIFVzZSBgZ2V0Rm9ybWF0dGVkU2l6ZVBhcnRzYCBpbnN0ZWFkLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0RGF0YVNpemUgPSAoXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBwcmVjaXNpb246IG51bWJlcixcbiAgICBzeXN0ZW06IEticVVuaXRTeXN0ZW1cbik6IHsgdmFsdWU6IHN0cmluZzsgdW5pdDogc3RyaW5nIH0gPT4ge1xuICAgIGNvbnN0IHsgcmVzdWx0LCB1bml0IH0gPSBnZXRIdW1hbml6ZWRCeXRlcyh2YWx1ZSwgc3lzdGVtKTtcbiAgICBsZXQgdm9sdW1lOiBzdHJpbmc7XG5cbiAgICBpZiAoc3lzdGVtLmFiYnJldmlhdGlvbnNbMF0gPT09IHVuaXQpIHtcbiAgICAgICAgdm9sdW1lID0gcmVzdWx0LnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdm9sdW1lID0gcmVzdWx0LnRvRml4ZWQocHJlY2lzaW9uKS5yZXBsYWNlKC9cXC4vZywgJywnKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogdm9sdW1lLFxuICAgICAgICB1bml0XG4gICAgfTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBieXRlIHZhbHVlIGludG8gbG9jYWxlLWluZGVwZW5kZW50IGZpbGUgc2l6ZSBwYXJ0czogbnVtZXJpYyB2YWx1ZSBhbmQgdW5pdCBhYmJyZXZpYXRpb24uXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gc2l6ZSBpbiBieXRlcy5cbiAqIEBwYXJhbSBzeXN0ZW0gLSB1bml0IHN5c3RlbSBkZWZpbmluZyBhYmJyZXZpYXRpb25zIGFuZCBiYXNlIHNjYWxpbmcgKFNJL0lFQykuXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB0aGUgZm9ybWF0dGVkIHNpemUgaW5mby5cbiAqXG4gKiBAZXhhbXBsZVxuICogZ2V0Rm9ybWF0dGVkU2l6ZVBhcnRzKDE1MDAsICdTSScpOyAvLyB7IHZhbHVlOiBcIjEuNTBcIiwgdW5pdDogXCJLQlwiIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdHRlZFNpemVQYXJ0cyh2YWx1ZTogbnVtYmVyLCBzeXN0ZW06IEticVVuaXRTeXN0ZW0pOiB7IHZhbHVlOiBzdHJpbmc7IHVuaXQ6IHN0cmluZyB9O1xuLyoqXG4gKiBDb252ZXJ0cyBhIGJ5dGUgdmFsdWUgaW50byBsb2NhbGUtaW5kZXBlbmRlbnQgZmlsZSBzaXplIHBhcnRzOiBudW1lcmljIHZhbHVlIGFuZCB1bml0IGFiYnJldmlhdGlvbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBzaXplIGluIGJ5dGVzLlxuICogQHBhcmFtIF9wcmVjaXNpb24gcGFyYW0gaXMgZGVwcmVjYXRlZCwgdXNlIGBJbnRsLk51bWJlckZvcm1hdGAgcm91bmRpbmcgb3B0aW9ucyBpbnN0ZWFkLlxuICogQHBhcmFtIHN5c3RlbSAtIHVuaXQgc3lzdGVtIGRlZmluaW5nIGFiYnJldmlhdGlvbnMgYW5kIGJhc2Ugc2NhbGluZyAoU0kvSUVDKS5cbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIHRoZSBmb3JtYXR0ZWQgc2l6ZSBpbmZvLlxuICogQGRlcHJlY2F0ZWQgYF9wcmVjaXNpb25gIC0gdGhpcyBwYXJhbSB3aWxsIGJlIHJlbW92ZSBpbiBuZXh0IG1ham9yIHZlcnNpb24uXG4gKiBAVE9ETyByZW1vdmUgZGVwcmVjYXRlZCAoI0RTLTM4NDkpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBnZXRGb3JtYXR0ZWRTaXplUGFydHMoMTUwMCwgMiwgJ1NJJyk7IC8vIHsgdmFsdWU6IFwiMS41MFwiLCB1bml0OiBcIktCXCIgfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkU2l6ZVBhcnRzKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgX3ByZWNpc2lvbjogbnVtYmVyLFxuICAgIHN5c3RlbTogS2JxVW5pdFN5c3RlbVxuKTogeyB2YWx1ZTogc3RyaW5nOyB1bml0OiBzdHJpbmcgfTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRTaXplUGFydHMoXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBfcHJlY2lzaW9uOiBudW1iZXIgfCBLYnFVbml0U3lzdGVtLFxuICAgIHN5c3RlbT86IEticVVuaXRTeXN0ZW1cbik6IHsgdmFsdWU6IHN0cmluZzsgdW5pdDogc3RyaW5nIH0ge1xuICAgIGxldCByZXNvbHZlZFN5c3RlbTogS2JxVW5pdFN5c3RlbSB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgdHlwZW9mIF9wcmVjaXNpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJlc29sdmVkU3lzdGVtID0gX3ByZWNpc2lvbiBzYXRpc2ZpZXMgS2JxVW5pdFN5c3RlbTtcbiAgICB9XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiB0eXBlb2YgX3ByZWNpc2lvbiA9PT0gJ251bWJlcicgJiYgc3lzdGVtKSB7XG4gICAgICAgIHJlc29sdmVkU3lzdGVtID0gc3lzdGVtO1xuICAgIH1cblxuICAgIGlmICghcmVzb2x2ZWRTeXN0ZW0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIGFyZ3VtZW50cyBzaXplJyk7XG4gICAgfVxuXG4gICAgY29uc3QgeyByZXN1bHQsIHVuaXQgfSA9IGdldEh1bWFuaXplZEJ5dGVzKHZhbHVlLCByZXNvbHZlZFN5c3RlbSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogcmVzdWx0LnRvU3RyaW5nKCksXG4gICAgICAgIHVuaXRcbiAgICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGJ5dGVzIHRvIEtiLCBNYiwgR2JcbiAqXG4gKiBAcGFyYW0gdmFsdWUgdGhlIG51bWJlciBvZiBieXRlc1xuICogQHBhcmFtIHN5c3RlbSB0aGUgbWVhc3VyZW1lbnQgc3lzdGVtXG4gKiBAcGFyYW0gdGhyZXNob2xkIHRoZSBsb3dlciBjb3VudGluZyB0aHJlc2hvbGRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEh1bWFuaXplZEJ5dGVzID0gKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgc3lzdGVtOiBLYnFVbml0U3lzdGVtLFxuICAgIHRocmVzaG9sZD86IG51bWJlclxuKTogeyByZXN1bHQ6IG51bWJlcjsgdW5pdDogc3RyaW5nIH0gPT4ge1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoS0JRX0lOVkFMSURfVkFMVUVfRVJST1IpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGN1bGF0ZWRUaHJlc2hvbGQgPSBOdW1iZXIuaXNGaW5pdGUodGhyZXNob2xkKSA/IHRocmVzaG9sZCA6IE1hdGgucG93KHN5c3RlbS5iYXNlLCBzeXN0ZW0ucG93ZXIpO1xuICAgIGNvbnN0IG9yZGVyT2ZNYWduaXR1ZGU6IG51bWJlciA9IE1hdGgucG93KHN5c3RlbS5iYXNlLCBzeXN0ZW0ucG93ZXIpO1xuXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gdmFsdWU7XG4gICAgbGV0IHN0ZXAgPSAwO1xuICAgIGNvbnN0IGxlbjogbnVtYmVyID0gc3lzdGVtLmFiYnJldmlhdGlvbnMubGVuZ3RoIC0gMTtcblxuICAgIHdoaWxlIChzdGVwIDwgbGVuKSB7XG4gICAgICAgIGlmIChjYWxjdWxhdGVkVGhyZXNob2xkICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0IDwgY2FsY3VsYXRlZFRocmVzaG9sZCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzdGVwKys7XG4gICAgICAgIHJlc3VsdCA9IHZhbHVlIC8gTWF0aC5wb3cob3JkZXJPZk1hZ25pdHVkZSwgc3RlcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICB1bml0OiBzeXN0ZW0uYWJicmV2aWF0aW9uc1tzdGVwXVxuICAgIH07XG59O1xuIl19
|
|
@@ -159,5 +159,26 @@ export class FileValidators {
|
|
|
159
159
|
return null;
|
|
160
160
|
};
|
|
161
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Validator that checks whether file's name or MIME type
|
|
164
|
+
* matches one of the accepted extensions or MIME types.
|
|
165
|
+
*
|
|
166
|
+
* @param accept - Array of allowed file extensions or MIME types.
|
|
167
|
+
* @returns ValidatorFn that returns validation error if file type is not accepted, or null otherwise.
|
|
168
|
+
*/
|
|
169
|
+
static isCorrectExtension(accept) {
|
|
170
|
+
return (control) => {
|
|
171
|
+
if (!accept?.length || !control.value)
|
|
172
|
+
return null;
|
|
173
|
+
const { name, type } = control.value.file;
|
|
174
|
+
for (const acceptedExtensionOrMimeType of accept) {
|
|
175
|
+
const typeAsRegExp = new RegExp(`${acceptedExtensionOrMimeType}$`);
|
|
176
|
+
if (!typeAsRegExp.test(name) && !typeAsRegExp.test(type)) {
|
|
177
|
+
return { fileExtensionMismatch: { expected: accept, actual: name } };
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return null;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
162
183
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29yZS9mb3Jtcy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLCtEQUErRDtBQUMvRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFXO1FBQ3hCLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBbUIsRUFBMkIsRUFBRTtZQUMzRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDckYsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQVc7UUFDeEIsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNyRixDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQVc7UUFDM0IsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRXJELE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUM5RSxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQVc7UUFDM0IsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRXJELE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUM5RSxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQVc7UUFDeEIsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRXBELE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUMzRSxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVc7UUFDekIsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRTFELE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUM1RSxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFFRCxtRUFBbUU7QUFDbkUsTUFBTSxPQUFPLGNBQWM7SUFDdkI7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQWU7UUFDOUIsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBRXhCLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBRWxFLElBQUksSUFBSSxHQUFHLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUMzRCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqIFByb3ZpZGVzIGEgc2V0IG9mIHZhbGlkYXRvcnMgZm9yIHBhc3N3b3JkIGZvcm0gY29udHJvbHMuICovXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRWYWxpZGF0b3JzIHtcbiAgICAvKipcbiAgICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgY29udHJvbCdzIHZhbHVlIGxlbmd0aCB0byBiZSBhdCBsZWFzdCBgbWluYCBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogYG1pbmAgLSBudW1iZXIgb2YgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICMjIFVzYWdlOlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJ3Bhc3N3b3JkJywgUGFzc3dvcmRWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMCkpO1xuICAgICAqIGNvbnNvbGUubG9nKGNvbnRyb2wuZXJyb3JzKTsgLy8ge21pbkxlbmd0aDoge21pbjogMTAsIGFjdHVhbDogOH19XG4gICAgICogYGBgXG4gICAgICovXG4gICAgc3RhdGljIG1pbkxlbmd0aChtaW46IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPj0gbWluID8gbnVsbCA6IHsgbWluTGVuZ3RoOiB7IG1pbiwgYWN0dWFsOiB2YWx1ZS5sZW5ndGggfSB9O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIHRoZSBjb250cm9sJ3MgdmFsdWUgbGVuZ3RoIHRvIGJlIGF0IG1vc3QgYG1heGAgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqIGBtYXhgIC0gbnVtYmVyIG9mIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiAjIyBVc2FnZTpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgncGFzc3dvcmQnLCBQYXNzd29yZFZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpKTtcbiAgICAgKiBjb25zb2xlLmxvZyhjb250cm9sLmVycm9ycyk7IC8vIHttYXhMZW5ndGg6IHttYXg6IDYsIGFjdHVhbDogOH19XG4gICAgICogYGBgXG4gICAgICovXG4gICAgc3RhdGljIG1heExlbmd0aChtYXg6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPD0gbWF4ID8gbnVsbCA6IHsgbWF4TGVuZ3RoOiB7IG1heCwgYWN0dWFsOiB2YWx1ZS5sZW5ndGggfSB9O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIHRoZSBjb250cm9sJ3MgdmFsdWUgdG8gYmUgYXQgbGVhc3QgYG1pbmAgdXBwZXJjYXNlIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiBgbWluYCAtIG51bWJlciBvZiB1cHBlcmNhc2UgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICMjIyBVc2FnZTpcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKCdQYXNzd29yZCcsIFBhc3N3b3JkVmFsaWRhdG9ycy5taW5VcHBlcmNhc2UoMikpO1xuICAgICAqIGNvbnNvbGUubG9nKGNvbnRyb2wuZXJyb3JzKTsgLy8ge21pblVwcGVyY2FzZToge21pbjogMiwgYWN0dWFsOiAxfX1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzdGF0aWMgbWluVXBwZXJjYXNlKG1pbjogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gKHsgdmFsdWUgfTogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9ICh2YWx1ZS5tYXRjaCgvW0EtWl0vZykgfHwgW10pLmxlbmd0aDtcblxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMgPj0gbWluID8gbnVsbCA6IHsgbWluVXBwZXJjYXNlOiB7IG1pbiwgYWN0dWFsOiBtYXRjaGVzIH0gfTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgY29udHJvbCdzIHZhbHVlIHRvIGJlIGF0IGxlYXN0IGBtaW5gIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogYG1pbmAgLSBudW1iZXIgb2YgbG93ZXJjYXNlIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiAjIyMgVXNhZ2U6XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnUEFTU1dPUkQnLCBQYXNzd29yZFZhbGlkYXRvcnMubWluTG93ZXJjYXNlKCkpO1xuICAgICAqIGNvbnNvbGUubG9nKGNvbnRyb2wuZXJyb3JzKTsgLy8ge21pbkxvd2VyY2FzZToge21pbjogMSwgYWN0dWFsOiAwfX1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzdGF0aWMgbWluTG93ZXJjYXNlKG1pbjogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gKHsgdmFsdWUgfTogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9ICh2YWx1ZS5tYXRjaCgvW2Etel0vZykgfHwgW10pLmxlbmd0aDtcblxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMgPj0gbWluID8gbnVsbCA6IHsgbWluTG93ZXJjYXNlOiB7IG1pbiwgYWN0dWFsOiBtYXRjaGVzIH0gfTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgY29udHJvbCdzIHZhbHVlIHRvIGJlIGF0IGxlYXN0IGBtaW5gIG51bWJlciBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogYG1pbmAgLSBudW1iZXIgb2YgbnVtYmVyIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiAjIyMgVXNhZ2U6XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgncGFzc3cwcmQnLCBQYXNzd29yZFZhbGlkYXRvcnMubWluTnVtYmVyKDIpKTtcbiAgICAgKiBjb25zb2xlLmxvZyhjb250cm9sLmVycm9ycyk7IC8vIHttaW5OdW1iZXI6IHttaW46IDIsIGFjdHVhbDogMX19XG4gICAgICogYGBgXG4gICAgICovXG4gICAgc3RhdGljIG1pbk51bWJlcihtaW46IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSAodmFsdWUubWF0Y2goL1tcXGRdL2cpIHx8IFtdKS5sZW5ndGg7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzID49IG1pbiA/IG51bGwgOiB7IG1pbk51bWJlcjogeyBtaW4sIGFjdHVhbDogbWF0Y2hlcyB9IH07XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgdGhlIGNvbnRyb2wncyB2YWx1ZSB0byBiZSBhdCBsZWFzdCBgbWluYCBzcGVjaWFsIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiBgbWluYCAtIG51bWJlciBvZiBzcGVjaWFsIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiAjIyMgU3BlY2lhbCBjaGFyYWN0ZXJzOlxuICAgICAqIGBgYGpzXG4gICAgICogWychJywnQCcsJyMnLCckJywnJScsJ14nLCcmJywnKiddXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiAjIyMgVXNhZ2U6XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgncGEkc3dvcmQnLCBQYXNzd29yZFZhbGlkYXRvcnMubWluU3BlY2lhbCgyKSk7XG4gICAgICogY29uc29sZS5sb2coY29udHJvbC5lcnJvcnMpOyAvLyB7bWluU3BlY2lhbDoge21pbjogMiwgYWN0dWFsOiAxfX1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzdGF0aWMgbWluU3BlY2lhbChtaW46IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSAodmFsdWUubWF0Y2goL1shQCMkJV4mKl0vZykgfHwgW10pLmxlbmd0aDtcblxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMgPj0gbWluID8gbnVsbCA6IHsgbWluU3BlY2lhbDogeyBtaW4sIGFjdHVhbDogbWF0Y2hlcyB9IH07XG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vKiogUHJvdmlkZXMgYSBzZXQgb2YgdmFsaWRhdG9ycyBmb3IgZmlsZS1yZWxhdGVkIGZvcm0gY29udHJvbHMuICovXG5leHBvcnQgY2xhc3MgRmlsZVZhbGlkYXRvcnMge1xuICAgIC8qKlxuICAgICAqIFZhbGlkYXRvciB0aGF0IGNoZWNrcyBpZiB0aGUgZmlsZSBzaXplIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcHJvdmlkZWQgYG1heFNpemVgLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1heFNpemUgLSBUaGUgbWF4aW11bSBhbGxvd2VkIGZpbGUgc2l6ZSBpbiBieXRlcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgVmFsaWRhdG9yRm4gZnVuY3Rpb24gdGhhdCBjaGVja3MgdGhlIGZpbGUgc2l6ZS5cbiAgICAgKlxuICAgICAqICMjIFVzYWdlOlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW0ZpbGVWYWxpZGF0b3JzLm1heEZpbGVTaXplKDEwMjQgKiAxMDI0KV0pOyAvLyAxTUJcbiAgICAgKiBjb250cm9sLnNldFZhbHVlKEZJTEVfTEVTU19PUl9FUVVBTF9USEFOXzFNQik7XG4gICAgICogY29uc29sZS5sb2coY29udHJvbC5lcnJvcnMpOyAvLyBudWxsXG4gICAgICogY29udHJvbC5zZXRWYWx1ZShGSUxFX01PUkVfVEhBTl8xTUIpO1xuICAgICAqIGNvbnNvbGUubG9nKGNvbnRyb2wuZXJyb3JzKTsgLy8ge21heEZpbGVTaXplOiB7IG1heDogMTA0ODU3NiwgYWN0dWFsOiBGSUxFX01PUkVfVEhBTl8xTUIuc2l6ZSB9fVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHN0YXRpYyBtYXhGaWxlU2l6ZShtYXhTaXplOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IHZhbHVlIGluc3RhbmNlb2YgRmlsZSA/IHZhbHVlLnNpemUgOiB2YWx1ZS5maWxlLnNpemU7XG5cbiAgICAgICAgICAgIGlmIChzaXplID4gbWF4U2l6ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IG1heEZpbGVTaXplOiB7IG1heDogbWF4U2l6ZSwgYWN0dWFsOiBzaXplIH0gfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29yZS9mb3Jtcy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLCtEQUErRDtBQUMvRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFXO1FBQ3hCLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBbUIsRUFBMkIsRUFBRTtZQUMzRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDckYsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQVc7UUFDeEIsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNyRixDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQVc7UUFDM0IsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRXJELE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUM5RSxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQVc7UUFDM0IsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRXJELE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUM5RSxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQVc7UUFDeEIsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRXBELE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUMzRSxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVc7UUFDekIsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRTFELE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUM1RSxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFFRCxtRUFBbUU7QUFDbkUsTUFBTSxPQUFPLGNBQWM7SUFDdkI7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQWU7UUFDOUIsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFtQixFQUEyQixFQUFFO1lBQzNELElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBRXhCLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBRWxFLElBQUksSUFBSSxHQUFHLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUMzRCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFnRDtRQUN0RSxPQUFPLENBQUMsT0FBK0MsRUFBMkIsRUFBRTtZQUNoRixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ25ELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFFMUMsS0FBSyxNQUFNLDJCQUEyQixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUMvQyxNQUFNLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLDJCQUEyQixHQUFHLENBQUMsQ0FBQztnQkFFbkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ3pFLENBQUM7WUFDTCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqIFByb3ZpZGVzIGEgc2V0IG9mIHZhbGlkYXRvcnMgZm9yIHBhc3N3b3JkIGZvcm0gY29udHJvbHMuICovXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRWYWxpZGF0b3JzIHtcbiAgICAvKipcbiAgICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgY29udHJvbCdzIHZhbHVlIGxlbmd0aCB0byBiZSBhdCBsZWFzdCBgbWluYCBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogYG1pbmAgLSBudW1iZXIgb2YgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICMjIFVzYWdlOlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJ3Bhc3N3b3JkJywgUGFzc3dvcmRWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMCkpO1xuICAgICAqIGNvbnNvbGUubG9nKGNvbnRyb2wuZXJyb3JzKTsgLy8ge21pbkxlbmd0aDoge21pbjogMTAsIGFjdHVhbDogOH19XG4gICAgICogYGBgXG4gICAgICovXG4gICAgc3RhdGljIG1pbkxlbmd0aChtaW46IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPj0gbWluID8gbnVsbCA6IHsgbWluTGVuZ3RoOiB7IG1pbiwgYWN0dWFsOiB2YWx1ZS5sZW5ndGggfSB9O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIHRoZSBjb250cm9sJ3MgdmFsdWUgbGVuZ3RoIHRvIGJlIGF0IG1vc3QgYG1heGAgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqIGBtYXhgIC0gbnVtYmVyIG9mIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiAjIyBVc2FnZTpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgncGFzc3dvcmQnLCBQYXNzd29yZFZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpKTtcbiAgICAgKiBjb25zb2xlLmxvZyhjb250cm9sLmVycm9ycyk7IC8vIHttYXhMZW5ndGg6IHttYXg6IDYsIGFjdHVhbDogOH19XG4gICAgICogYGBgXG4gICAgICovXG4gICAgc3RhdGljIG1heExlbmd0aChtYXg6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPD0gbWF4ID8gbnVsbCA6IHsgbWF4TGVuZ3RoOiB7IG1heCwgYWN0dWFsOiB2YWx1ZS5sZW5ndGggfSB9O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRvciB0aGF0IHJlcXVpcmVzIHRoZSBjb250cm9sJ3MgdmFsdWUgdG8gYmUgYXQgbGVhc3QgYG1pbmAgdXBwZXJjYXNlIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiBgbWluYCAtIG51bWJlciBvZiB1cHBlcmNhc2UgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICMjIyBVc2FnZTpcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKCdQYXNzd29yZCcsIFBhc3N3b3JkVmFsaWRhdG9ycy5taW5VcHBlcmNhc2UoMikpO1xuICAgICAqIGNvbnNvbGUubG9nKGNvbnRyb2wuZXJyb3JzKTsgLy8ge21pblVwcGVyY2FzZToge21pbjogMiwgYWN0dWFsOiAxfX1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzdGF0aWMgbWluVXBwZXJjYXNlKG1pbjogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gKHsgdmFsdWUgfTogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9ICh2YWx1ZS5tYXRjaCgvW0EtWl0vZykgfHwgW10pLmxlbmd0aDtcblxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMgPj0gbWluID8gbnVsbCA6IHsgbWluVXBwZXJjYXNlOiB7IG1pbiwgYWN0dWFsOiBtYXRjaGVzIH0gfTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgY29udHJvbCdzIHZhbHVlIHRvIGJlIGF0IGxlYXN0IGBtaW5gIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogYG1pbmAgLSBudW1iZXIgb2YgbG93ZXJjYXNlIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiAjIyMgVXNhZ2U6XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnUEFTU1dPUkQnLCBQYXNzd29yZFZhbGlkYXRvcnMubWluTG93ZXJjYXNlKCkpO1xuICAgICAqIGNvbnNvbGUubG9nKGNvbnRyb2wuZXJyb3JzKTsgLy8ge21pbkxvd2VyY2FzZToge21pbjogMSwgYWN0dWFsOiAwfX1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzdGF0aWMgbWluTG93ZXJjYXNlKG1pbjogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gKHsgdmFsdWUgfTogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9ICh2YWx1ZS5tYXRjaCgvW2Etel0vZykgfHwgW10pLmxlbmd0aDtcblxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMgPj0gbWluID8gbnVsbCA6IHsgbWluTG93ZXJjYXNlOiB7IG1pbiwgYWN0dWFsOiBtYXRjaGVzIH0gfTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyB0aGUgY29udHJvbCdzIHZhbHVlIHRvIGJlIGF0IGxlYXN0IGBtaW5gIG51bWJlciBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogYG1pbmAgLSBudW1iZXIgb2YgbnVtYmVyIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiAjIyMgVXNhZ2U6XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgncGFzc3cwcmQnLCBQYXNzd29yZFZhbGlkYXRvcnMubWluTnVtYmVyKDIpKTtcbiAgICAgKiBjb25zb2xlLmxvZyhjb250cm9sLmVycm9ycyk7IC8vIHttaW5OdW1iZXI6IHttaW46IDIsIGFjdHVhbDogMX19XG4gICAgICogYGBgXG4gICAgICovXG4gICAgc3RhdGljIG1pbk51bWJlcihtaW46IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSAodmFsdWUubWF0Y2goL1tcXGRdL2cpIHx8IFtdKS5sZW5ndGg7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzID49IG1pbiA/IG51bGwgOiB7IG1pbk51bWJlcjogeyBtaW4sIGFjdHVhbDogbWF0Y2hlcyB9IH07XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdG9yIHRoYXQgcmVxdWlyZXMgdGhlIGNvbnRyb2wncyB2YWx1ZSB0byBiZSBhdCBsZWFzdCBgbWluYCBzcGVjaWFsIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiBgbWluYCAtIG51bWJlciBvZiBzcGVjaWFsIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiAjIyMgU3BlY2lhbCBjaGFyYWN0ZXJzOlxuICAgICAqIGBgYGpzXG4gICAgICogWychJywnQCcsJyMnLCckJywnJScsJ14nLCcmJywnKiddXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiAjIyMgVXNhZ2U6XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgncGEkc3dvcmQnLCBQYXNzd29yZFZhbGlkYXRvcnMubWluU3BlY2lhbCgyKSk7XG4gICAgICogY29uc29sZS5sb2coY29udHJvbC5lcnJvcnMpOyAvLyB7bWluU3BlY2lhbDoge21pbjogMiwgYWN0dWFsOiAxfX1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzdGF0aWMgbWluU3BlY2lhbChtaW46IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSAodmFsdWUubWF0Y2goL1shQCMkJV4mKl0vZykgfHwgW10pLmxlbmd0aDtcblxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMgPj0gbWluID8gbnVsbCA6IHsgbWluU3BlY2lhbDogeyBtaW4sIGFjdHVhbDogbWF0Y2hlcyB9IH07XG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vKiogUHJvdmlkZXMgYSBzZXQgb2YgdmFsaWRhdG9ycyBmb3IgZmlsZS1yZWxhdGVkIGZvcm0gY29udHJvbHMuICovXG5leHBvcnQgY2xhc3MgRmlsZVZhbGlkYXRvcnMge1xuICAgIC8qKlxuICAgICAqIFZhbGlkYXRvciB0aGF0IGNoZWNrcyBpZiB0aGUgZmlsZSBzaXplIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcHJvdmlkZWQgYG1heFNpemVgLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1heFNpemUgLSBUaGUgbWF4aW11bSBhbGxvd2VkIGZpbGUgc2l6ZSBpbiBieXRlcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgVmFsaWRhdG9yRm4gZnVuY3Rpb24gdGhhdCBjaGVja3MgdGhlIGZpbGUgc2l6ZS5cbiAgICAgKlxuICAgICAqICMjIFVzYWdlOlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW0ZpbGVWYWxpZGF0b3JzLm1heEZpbGVTaXplKDEwMjQgKiAxMDI0KV0pOyAvLyAxTUJcbiAgICAgKiBjb250cm9sLnNldFZhbHVlKEZJTEVfTEVTU19PUl9FUVVBTF9USEFOXzFNQik7XG4gICAgICogY29uc29sZS5sb2coY29udHJvbC5lcnJvcnMpOyAvLyBudWxsXG4gICAgICogY29udHJvbC5zZXRWYWx1ZShGSUxFX01PUkVfVEhBTl8xTUIpO1xuICAgICAqIGNvbnNvbGUubG9nKGNvbnRyb2wuZXJyb3JzKTsgLy8ge21heEZpbGVTaXplOiB7IG1heDogMTA0ODU3NiwgYWN0dWFsOiBGSUxFX01PUkVfVEhBTl8xTUIuc2l6ZSB9fVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHN0YXRpYyBtYXhGaWxlU2l6ZShtYXhTaXplOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IHZhbHVlIGluc3RhbmNlb2YgRmlsZSA/IHZhbHVlLnNpemUgOiB2YWx1ZS5maWxlLnNpemU7XG5cbiAgICAgICAgICAgIGlmIChzaXplID4gbWF4U2l6ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IG1heEZpbGVTaXplOiB7IG1heDogbWF4U2l6ZSwgYWN0dWFsOiBzaXplIH0gfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdG9yIHRoYXQgY2hlY2tzIHdoZXRoZXIgZmlsZSdzIG5hbWUgb3IgTUlNRSB0eXBlXG4gICAgICogbWF0Y2hlcyBvbmUgb2YgdGhlIGFjY2VwdGVkIGV4dGVuc2lvbnMgb3IgTUlNRSB0eXBlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhY2NlcHQgLSBBcnJheSBvZiBhbGxvd2VkIGZpbGUgZXh0ZW5zaW9ucyBvciBNSU1FIHR5cGVzLlxuICAgICAqIEByZXR1cm5zIFZhbGlkYXRvckZuIHRoYXQgcmV0dXJucyB2YWxpZGF0aW9uIGVycm9yIGlmIGZpbGUgdHlwZSBpcyBub3QgYWNjZXB0ZWQsIG9yIG51bGwgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHN0YXRpYyBpc0NvcnJlY3RFeHRlbnNpb24oYWNjZXB0OiAoYC4ke3N0cmluZ31gIHwgYCR7c3RyaW5nfS8ke3N0cmluZ31gKVtdKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDx7IGZpbGU6IEZpbGUgfSB8IG51bGw+KTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgaWYgKCFhY2NlcHQ/Lmxlbmd0aCB8fCAhY29udHJvbC52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjb25zdCB7IG5hbWUsIHR5cGUgfSA9IGNvbnRyb2wudmFsdWUuZmlsZTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY2NlcHRlZEV4dGVuc2lvbk9yTWltZVR5cGUgb2YgYWNjZXB0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZUFzUmVnRXhwID0gbmV3IFJlZ0V4cChgJHthY2NlcHRlZEV4dGVuc2lvbk9yTWltZVR5cGV9JGApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0eXBlQXNSZWdFeHAudGVzdChuYW1lKSAmJiAhdHlwZUFzUmVnRXhwLnRlc3QodHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZmlsZUV4dGVuc2lvbk1pc21hdGNoOiB7IGV4cGVjdGVkOiBhY2NlcHQsIGFjdHVhbDogbmFtZSB9IH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbi8qKlxuICogVHlwZSBoZWxwZXIgZGVzY3JpYmluZyBhY2NlcHRlZCBmaWxlIHR5cGVzLCByZWZlcnJpbmcgdG86XG4gKiBAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML1JlZmVyZW5jZS9FbGVtZW50cy9pbnB1dC9maWxlI3VuaXF1ZV9maWxlX3R5cGVfc3BlY2lmaWVyc1xuICovXG5leHBvcnQgdHlwZSBLYnFGaWxlVHlwZVNwZWNpZmllciA9IFBhcmFtZXRlcnM8dHlwZW9mIEZpbGVWYWxpZGF0b3JzLmlzQ29ycmVjdEV4dGVuc2lvbj5bMF07XG4iXX0=
|
|
@@ -41,8 +41,6 @@ const getOffset = ({ originX, overlayX, originY, overlayY }, { width, height })
|
|
|
41
41
|
}
|
|
42
42
|
return offset;
|
|
43
43
|
};
|
|
44
|
-
/** parameter is used in interval to hide the popup */
|
|
45
|
-
export const hidingIntervalForHover = 500;
|
|
46
44
|
export class KbqPopUpTrigger {
|
|
47
45
|
constructor() {
|
|
48
46
|
/** Stream that emits when the popupTrigger is hovered. */
|
|
@@ -64,9 +62,13 @@ export class KbqPopUpTrigger {
|
|
|
64
62
|
this.visible = false;
|
|
65
63
|
this.listeners = new Map();
|
|
66
64
|
this.availablePositions = POSITION_MAP;
|
|
65
|
+
/** Hide pop-up with timeout. Need if you want to show pop-up after leaving trigger */
|
|
66
|
+
this.hideWithTimeout = false;
|
|
67
67
|
this.hide = (delay = this.leaveDelay) => {
|
|
68
|
-
this.
|
|
69
|
-
|
|
68
|
+
if ((this.instance && this.triggerName !== 'mouseleave') ||
|
|
69
|
+
(this.triggerName === 'mouseleave' && !this.instance?.hovered.getValue())) {
|
|
70
|
+
this.ngZone.run(() => this.instance?.hide(delay));
|
|
71
|
+
}
|
|
70
72
|
};
|
|
71
73
|
this.detach = () => {
|
|
72
74
|
if (this.overlayRef?.hasAttached()) {
|
|
@@ -108,7 +110,6 @@ export class KbqPopUpTrigger {
|
|
|
108
110
|
this.overlayRef?.dispose();
|
|
109
111
|
this.listeners.forEach(this.removeEventListener);
|
|
110
112
|
this.listeners.clear();
|
|
111
|
-
this.hidingIntervalSubscription?.unsubscribe();
|
|
112
113
|
}
|
|
113
114
|
updatePlacement(value) {
|
|
114
115
|
if (POSITION_TO_CSS_MAP[value]) {
|
|
@@ -173,10 +174,10 @@ export class KbqPopUpTrigger {
|
|
|
173
174
|
});
|
|
174
175
|
this.updatePosition();
|
|
175
176
|
this.instance.show(delay);
|
|
176
|
-
if (this.trigger.includes(PopUpTriggers.Hover)) {
|
|
177
|
+
if (this.hideWithTimeout && this.trigger.includes(PopUpTriggers.Hover)) {
|
|
177
178
|
this.ngZone.runOutsideAngular(() => {
|
|
178
|
-
this.
|
|
179
|
-
.pipe(filter(() => this.trigger.includes(PopUpTriggers.Hover)), filter(() => !this.hovered.getValue() && !this.instance?.hovered.getValue()))
|
|
179
|
+
interval(this.leaveDelay, this.scheduler)
|
|
180
|
+
.pipe(filter(() => this.trigger.includes(PopUpTriggers.Hover)), filter(() => !this.hovered.getValue() && !this.instance?.hovered.getValue()), takeUntilDestroyed(this.instance?.destroyRef))
|
|
180
181
|
.subscribe(this.hide);
|
|
181
182
|
});
|
|
182
183
|
}
|
|
@@ -215,7 +216,9 @@ export class KbqPopUpTrigger {
|
|
|
215
216
|
this.listeners.set(...this.createListener('click', this.show));
|
|
216
217
|
}
|
|
217
218
|
if (this.trigger.includes(PopUpTriggers.Hover)) {
|
|
218
|
-
this.listeners
|
|
219
|
+
this.listeners
|
|
220
|
+
.set(...this.createListener('mouseenter', this.show))
|
|
221
|
+
.set(...this.createListener('mouseleave', this.getMouseLeaveListener()));
|
|
219
222
|
}
|
|
220
223
|
if (this.trigger.includes(PopUpTriggers.Focus)) {
|
|
221
224
|
this.listeners
|
|
@@ -231,6 +234,12 @@ export class KbqPopUpTrigger {
|
|
|
231
234
|
}
|
|
232
235
|
this.listeners.forEach(this.addEventListener);
|
|
233
236
|
}
|
|
237
|
+
getMouseLeaveListener() {
|
|
238
|
+
if (this.hideWithTimeout) {
|
|
239
|
+
return () => setTimeout(this.hide, this.leaveDelay);
|
|
240
|
+
}
|
|
241
|
+
return this.hide;
|
|
242
|
+
}
|
|
234
243
|
/** Updates the position of the current popover. */
|
|
235
244
|
updatePosition(reapplyPosition = false) {
|
|
236
245
|
this.overlayRef = this.createOverlay();
|
|
@@ -326,4 +335,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
326
335
|
}
|
|
327
336
|
}]
|
|
328
337
|
}] });
|
|
329
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wLXVwLXRyaWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvcG9wLXVwL3BvcC11cC10cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsYUFBYSxFQUliLE9BQU8sRUFHUCxnQkFBZ0IsRUFFbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUVWLE1BQU0sRUFDTixNQUFNLEVBS04sZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUNILDBCQUEwQixFQUMxQixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLG1CQUFtQixFQUN0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUtsRyxNQUFNLFNBQVMsR0FBRyxDQUNkLEVB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QyxLQUFjLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFtQixDQUFDLENBQUM7Z0JBRXpDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixDQUFDO1NBRUosQ0FBQztJQUNOLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBaUI7UUFDcEMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBVU8seUJBQXlCO1FBQzdCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRTthQUNsRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsSUFBSSxLQUFLLEVBQUUsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDekQsT0FBTztZQUNYLENBQUM7WUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO2tJQXpZaUIsZUFBZTtzSEFBZixlQUFlOzs0RkFBZixlQUFlO2tCQU5wQyxTQUFTO21CQUFDO29CQUNQLElBQUksRUFBRTt3QkFDRixjQUFjLEVBQUUsb0JBQW9CO3dCQUNwQyxjQUFjLEVBQUUscUJBQXFCO3FCQUN4QztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UsXG4gICAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgT3ZlcmxheSxcbiAgICBPdmVybGF5Q29uZmlnLFxuICAgIE92ZXJsYXlSZWYsXG4gICAgU2Nyb2xsRGlzcGF0Y2hlcixcbiAgICBTY3JvbGxTdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gICAgRGVzdHJveVJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFR5cGUsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEVOVEVSLCBFU0NBUEUsIFNQQUNFIH0gZnJvbSAnQGtvb2JpcS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBc3luY1NjaGVkdWxlciB9IGZyb20gJ3J4anMvaW50ZXJuYWwvc2NoZWR1bGVyL0FzeW5jU2NoZWR1bGVyJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGRlbGF5IGFzIHJ4RGVsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIEVYVEVOREVEX09WRVJMQVlfUE9TSVRJT05TLFxuICAgIFBPU0lUSU9OX01BUCxcbiAgICBQT1NJVElPTl9QUklPUklUWV9TVFJBVEVHWSxcbiAgICBQT1NJVElPTl9UT19DU1NfTUFQXG59IGZyb20gJy4uL292ZXJsYXkvb3ZlcmxheS1wb3NpdGlvbi1tYXAnO1xuaW1wb3J0IHsgQVJST1dfQk9UVE9NX01BUkdJTl9BTkRfSEFMRl9IRUlHSFQsIFBvcFVwUGxhY2VtZW50cywgUG9wVXBUcmlnZ2VycyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEticVBvcFVwIH0gZnJvbSAnLi9wb3AtdXAnO1xuXG50eXBlIEticVBvcHVwVHJpZ2dlck9mZnNldCA9IFBpY2s8Q29ubmVjdGlvblBvc2l0aW9uUGFpciwgJ29mZnNldFgnIHwgJ29mZnNldFknPjtcblxuY29uc3QgZ2V0T2Zmc2V0ID0gKFxuICAgIHsgb3JpZ2luWCwgb3ZlcmxheVgsIG9yaWdpblksIG92ZXJsYXlZIH06IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG4gICAgeyB3aWR0aCwgaGVpZ2h0IH06IERPTVJlY3Rcbik6IEticVBvcHVwVHJpZ2dlck9mZnNldCA9PiB7XG4gICAgY29uc3Qgb2Zmc2V0OiBLYnFQb3B1cFRyaWdnZXJPZmZzZXQgPSB7fTtcbiAgICBjb25zdCBlbGVtZW50V2lkdGhIYWxmID0gd2lkdGggLyAyO1xuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHRIYWxmID0gaGVpZ2h0IC8gMjtcblxuICAgIC8vIGFsaWdubWVudCBzaG91bGQgYmUgYXBwbGllZCBvbmx5IGlmIHRoZSBlbGVtZW50IGlzIHNtYWxsXG4gICAgaWYgKEFSUk9XX0JPVFRPTV9NQVJHSU5fQU5EX0hBTEZfSEVJR0hUID4gZWxlbWVudFdpZHRoSGFsZikge1xuICAgICAgICBjb25zdCBQQURESU5HID0gQVJST1dfQk9UVE9NX01BUkdJTl9BTkRfSEFMRl9IRUlHSFQgLSBlbGVtZW50V2lkdGhIYWxmO1xuXG4gICAgICAgIGlmIChvcmlnaW5YID09PSBvdmVybGF5WCkge1xuICAgICAgICAgICAgaWYgKG9yaWdpblggPT09ICdzdGFydCcpIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQub2Zmc2V0WCA9IC1QQURESU5HO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3JpZ2luWCA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQub2Zmc2V0WCA9IFBBRERJTkc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhbGlnbm1lbnQgc2hvdWxkIGJlIGFwcGxpZWQgb25seSBpZiB0aGUgZWxlbWVudCBpcyBzbWFsbFxuICAgIGlmIChBUlJPV19CT1RUT01fTUFSR0lOX0FORF9IQUxGX0hFSUdIVCA+IGVsZW1lbnRIZWlnaHRIYWxmKSB7XG4gICAgICAgIGNvbnN0IFBBRERJTkcgPSBBUlJPV19CT1RUT01fTUFSR0lOX0FORF9IQUxGX0hFSUdIVCAtIGVsZW1lbnRIZWlnaHRIYWxmO1xuXG4gICAgICAgIGlmIChvcmlnaW5ZID09PSBvdmVybGF5WSkge1xuICAgICAgICAgICAgaWYgKG9yaWdpblkgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0Lm9mZnNldFkgPSAtUEFERElORztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9yaWdpblkgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0Lm9mZnNldFkgPSBQQURESU5HO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbn07XG5cbi8qKiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiBpbnRlcnZhbCB0byBoaWRlIHRoZSBwb3B1cCAqL1xuZXhwb3J0IGNvbnN0IGhpZGluZ0ludGVydmFsRm9ySG92ZXIgPSA1MDA7XG5cbkBEaXJlY3RpdmUoe1xuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhtb3VzZWVudGVyKSc6ICdob3ZlcmVkLm5leHQodHJ1ZSknLFxuICAgICAgICAnKG1vdXNlbGVhdmUpJzogJ2hvdmVyZWQubmV4dChmYWxzZSknXG4gICAgfVxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBLYnFQb3BVcFRyaWdnZXI8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gdGhlIHBvcHVwVHJpZ2dlciBpcyBob3ZlcmVkLiAqL1xuICAgIHJlYWRvbmx5IGhvdmVyZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBzY2hlZHVsZXIgPSBpbmplY3QoQXN5bmNTY2hlZHVsZXIsIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgdW5kZWZpbmVkO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5OiBPdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyID0gaW5qZWN0KFNjcm9sbERpc3BhdGNoZXIpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBob3N0VmlldzogVmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlyZWN0aW9uID0gaW5qZWN0KERpcmVjdGlvbmFsaXR5LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxhYmxlID0gaW5qZWN0KENka1Njcm9sbGFibGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2Nyb2xsU3RyYXRlZ3k6ICgpID0+IFNjcm9sbFN0cmF0ZWd5O1xuXG4gICAgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBlbnRlckRlbGF5OiBudW1iZXIgPSAwO1xuICAgIGxlYXZlRGVsYXk6IG51bWJlciA9IDA7XG5cbiAgICB0cmlnZ2VyTmFtZTogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgYXJyb3c6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgdHJpZ2dlcjogc3RyaW5nO1xuICAgIGFic3RyYWN0IGN1c3RvbUNsYXNzOiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgY29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGFic3RyYWN0IHBsYWNlbWVudENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gICAgYWJzdHJhY3QgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IG9yaWdpblNlbGVjdG9yOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IG92ZXJsYXlDb25maWc6IE92ZXJsYXlDb25maWc7XG5cbiAgICBwcm90ZWN0ZWQgcGxhY2VtZW50ID0gUG9wVXBQbGFjZW1lbnRzLlRvcDtcbiAgICBwcm90ZWN0ZWQgcGxhY2VtZW50UHJpb3JpdHk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgdmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIF9jb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHByb3RlY3RlZCBfZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9jdXN0b21DbGFzczogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsO1xuICAgIHByb3RlY3RlZCBwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxUPjtcbiAgICBwcm90ZWN0ZWQgaW5zdGFuY2U6IGFueSB8IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgbGlzdGVuZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50TGlzdGVuZXI+KCk7XG4gICAgcHJvdGVjdGVkIGNsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXZhaWxhYmxlUG9zaXRpb25zOiB7IFtrZXk6IHN0cmluZ106IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIgfSA9IFBPU0lUSU9OX01BUDtcblxuICAgIHByb3RlY3RlZCBtb3VzZUV2ZW50PzogTW91c2VFdmVudDtcbiAgICBwcm90ZWN0ZWQgc3RyYXRlZ3k6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBoaWRpbmdJbnRlcnZhbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgYWJzdHJhY3QgdXBkYXRlQ2xhc3NNYXAobmV3UGxhY2VtZW50Pzogc3RyaW5nKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHVwZGF0ZURhdGEoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IGNsb3NpbmdBY3Rpb25zKCk6IE9ic2VydmFibGU8YW55PjtcblxuICAgIGFic3RyYWN0IGdldE92ZXJsYXlIYW5kbGVDb21wb25lbnRUeXBlKCk6IFR5cGU8VD47XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuXG4gICAgICAgIHRoaXMubGlzdGVuZXJzLmZvckVhY2godGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKTtcblxuICAgICAgICB0aGlzLmxpc3RlbmVycy5jbGVhcigpO1xuXG4gICAgICAgIHRoaXMuaGlkaW5nSW50ZXJ2YWxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlUGxhY2VtZW50KHZhbHVlOiBQb3BVcFBsYWNlbWVudHMpIHtcbiAgICAgICAgaWYgKFBPU0lUSU9OX1RPX0NTU19NQVBbdmFsdWVdKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlbWVudCA9IHZhbHVlO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzTWFwKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlbWVudCA9IFBvcFVwUGxhY2VtZW50cy5Ub3A7XG5cbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5rbm93biBwb3NpdGlvbjogJHt2YWx1ZX0uIFdpbGwgdXNlZCBkZWZhdWx0IHBvc2l0aW9uOiAke3RoaXMucGxhY2VtZW50fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlUGxhY2VtZW50UHJpb3JpdHkodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2VtZW50UHJpb3JpdHkgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2VtZW50UHJpb3JpdHkgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlVmlzaWJsZShleHRlcm5hbFZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGV4dGVybmFsVmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnZpc2libGUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSB2YWx1ZTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4gJiYgZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVRvdWNoZW5kKCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG5cbiAgICBzaG93KGRlbGF5OiBudW1iZXIgPSB0aGlzLmVudGVyRGVsYXkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlT25DbG9zaW5nQWN0aW9ucygpO1xuICAgICAgICB0aGlzLmRldGFjaCgpO1xuXG4gICAgICAgIHRoaXMucG9ydGFsID0gdGhpcy5wb3J0YWwgfHwgbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLmdldE92ZXJsYXlIYW5kbGVDb21wb25lbnRUeXBlKCksIHRoaXMuaG9zdFZpZXcpO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRoaXMucG9ydGFsKS5pbnN0YW5jZSBhcyBLYnFQb3BVcDtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLnRyaWdnZXIgPSB0aGlzO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UuYWZ0ZXJIaWRkZW4oKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodGhpcy5kZXRhY2gpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQ2xhc3NNYXAoKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLnZpc2libGVDaGFuZ2VcbiAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW4gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLnNob3coZGVsYXkpO1xuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5Ib3ZlcikpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGluZ0ludGVydmFsU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwoaGlkaW5nSW50ZXJ2YWxGb3JIb3ZlciwgdGhpcy5zY2hlZHVsZXIpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMudHJpZ2dlci5pbmNsdWRlcyhQb3BVcFRyaWdnZXJzLkhvdmVyKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuaG92ZXJlZC5nZXRWYWx1ZSgpICYmICF0aGlzLmluc3RhbmNlPy5ob3ZlcmVkLmdldFZhbHVlKCkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLmhpZGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlID0gKGRlbGF5OiBudW1iZXIgPSB0aGlzLmxlYXZlRGVsYXkpID0+IHtcbiAgICAgICAgdGhpcy5oaWRpbmdJbnRlcnZhbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5pbnN0YW5jZT8uaGlkZShkZWxheSkpO1xuICAgIH07XG5cbiAgICBkZXRhY2ggPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBudWxsO1xuICAgIH07XG5cbiAgICAvKiogQ3JlYXRlIHRoZSBvdmVybGF5IGNvbmZpZyBhbmQgcG9zaXRpb24gc3RyYXRlZ3kgKi9cbiAgICBjcmVhdGVPdmVybGF5KCk6IE92ZXJsYXlSZWYge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5UmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGNvbm5lY3RlZCBwb3NpdGlvbiBzdHJhdGVneSB0aGF0IGxpc3RlbnMgZm9yIHNjcm9sbCBldmVudHMgdG8gcmVwb3NpdGlvbi5cbiAgICAgICAgdGhpcy5zdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgIC53aXRoVHJhbnNmb3JtT3JpZ2luT24odGhpcy5vcmlnaW5TZWxlY3RvcilcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoWy4uLkVYVEVOREVEX09WRVJMQVlfUE9TSVRJT05TXSlcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKVxuICAgICAgICAgICAgLndpdGhTY3JvbGxhYmxlQ29udGFpbmVycyh0aGlzLnNjcm9sbERpc3BhdGNoZXIuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHRoaXMuZWxlbWVudFJlZikpO1xuXG4gICAgICAgIHRoaXMuc3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh0aGlzLm9uUG9zaXRpb25DaGFuZ2UpO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5vdmVybGF5Q29uZmlnLFxuICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLmRpcmVjdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLnN0cmF0ZWd5LFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuc2Nyb2xsU3RyYXRlZ3koKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN1YnNjcmliZU9uQ2xvc2luZ0FjdGlvbnMoKTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodGhpcy5kZXRhY2gpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY7XG4gICAgfVxuXG4gICAgcmVzZXRPcmlnaW4oKSB7XG4gICAgICAgIHRoaXMuc3RyYXRlZ3kuc2V0T3JpZ2luKHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgb25Qb3NpdGlvbkNoYW5nZSA9ICgkZXZlbnQ6IENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBuZXdQbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudDtcblxuICAgICAgICBjb25zdCB7IG9yaWdpblgsIG9yaWdpblksIG92ZXJsYXlYLCBvdmVybGF5WSB9ID0gJGV2ZW50LmNvbm5lY3Rpb25QYWlyO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zKS5zb21lKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBvcmlnaW5YID09PSB0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1trZXldLm9yaWdpblggJiZcbiAgICAgICAgICAgICAgICBvcmlnaW5ZID09PSB0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1trZXldLm9yaWdpblkgJiZcbiAgICAgICAgICAgICAgICBvdmVybGF5WCA9PT0gdGhpcy5hdmFpbGFibGVQb3NpdGlvbnNba2V5XS5vdmVybGF5WCAmJlxuICAgICAgICAgICAgICAgIG92ZXJsYXlZID09PSB0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1trZXldLm92ZXJsYXlZXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBuZXdQbGFjZW1lbnQgPSBrZXkgYXMgUG9wVXBQbGFjZW1lbnRzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wbGFjZW1lbnRDaGFuZ2UuZW1pdChuZXdQbGFjZW1lbnQpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQ2xhc3NNYXAobmV3UGxhY2VtZW50KTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuXG4gICAgaW5pdExpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5jbGVhckxpc3RlbmVycygpO1xuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5DbGljaykpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNldCguLi50aGlzLmNyZWF0ZUxpc3RlbmVyKCdjbGljaycsIHRoaXMuc2hvdykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlci5pbmNsdWRlcyhQb3BVcFRyaWdnZXJzLkhvdmVyKSkge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuc2V0KC4uLnRoaXMuY3JlYXRlTGlzdGVuZXIoJ21vdXNlZW50ZXInLCB0aGlzLnNob3cpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5Gb2N1cykpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzXG4gICAgICAgICAgICAgICAgLnNldCguLi50aGlzLmNyZWF0ZUxpc3RlbmVyKCdmb2N1cycsIHRoaXMuc2hvdykpXG4gICAgICAgICAgICAgICAgLnNldCguLi50aGlzLmNyZWF0ZUxpc3RlbmVyKCdibHVyJywgdGhpcy5oaWRlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyLmluY2x1ZGVzKFBvcFVwVHJpZ2dlcnMuS2V5ZG93bikpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNldCgna2V5ZG93bicsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgJiYgW0VOVEVSLCBTUEFDRV0uaW5jbHVkZXMoZXZlbnQua2V5Q29kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNob3coKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3RlbmVycy5mb3JFYWNoKHRoaXMuYWRkRXZlbnRMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHBvcG92ZXIuICovXG4gICAgdXBkYXRlUG9zaXRpb24ocmVhcHBseVBvc2l0aW9uOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpYmVPbkNsb3NpbmdBY3Rpb25zKCk7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSAodGhpcy5vdmVybGF5UmVmLmdldENvbmZpZygpLnBvc2l0aW9uU3RyYXRlZ3kgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5nZXRBZGp1c3RlZFBvc2l0aW9ucygpKVxuICAgICAgICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgICAgIGlmIChyZWFwcGx5UG9zaXRpb24pIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcG9zaXRpb24ucmVhcHBseUxhc3RQb3NpdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIHBvc2l0aW9ucyB0aGF0IGFyZSBhbGlnbmVkIHdpdGggdGhlIGVsZW1lbnQncyBkaW1lbnNpb25zIGFuZCBvZmZzZXRzLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0QWRqdXN0ZWRQb3NpdGlvbnMoKTogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdIHtcbiAgICAgICAgY29uc3QgcmVzOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHBvcyBvZiB0aGlzLmdldFByaW9yaXRpemVkUG9zaXRpb25zKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldDogS2JxUG9wdXBUcmlnZ2VyT2Zmc2V0ID0gdGhpcy5hcnJvd1xuICAgICAgICAgICAgICAgID8gZ2V0T2Zmc2V0KHBvcywgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpXG4gICAgICAgICAgICAgICAgOiB7fTtcblxuICAgICAgICAgICAgcmVzLnB1c2goe1xuICAgICAgICAgICAgICAgIC4uLnBvcyxcbiAgICAgICAgICAgICAgICAuLi5vZmZzZXRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UHJpb3JpdHlQbGFjZW1lbnRTdHJhdGVneSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IFtdO1xuICAgICAgICBjb25zdCBwb3NzaWJsZVBvc2l0aW9ucyA9IE9iamVjdC5rZXlzKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHBvc2l0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocG9zc2libGVQb3NpdGlvbnMuaW5jbHVkZXMocG9zaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zW3Bvc2l0aW9uXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAocG9zc2libGVQb3NpdGlvbnMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1t2YWx1ZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UHJpb3JpdGl6ZWRQb3NpdGlvbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLnBsYWNlbWVudFByaW9yaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQcmlvcml0eVBsYWNlbWVudFN0cmF0ZWd5KHRoaXMucGxhY2VtZW50UHJpb3JpdHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFBPU0lUSU9OX1BSSU9SSVRZX1NUUkFURUdZW3RoaXMucGxhY2VtZW50XTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXJMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzLmZvckVhY2godGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKTtcblxuICAgICAgICB0aGlzLmxpc3RlbmVycy5jbGVhcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGlzdGVuZXIobmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IFtzdHJpbmcsIChldmVudDogdW5rbm93bikgPT4gdm9pZF0ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIChldmVudDogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlck5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZU1vdXNlRXZlbnQoZXZlbnQgYXMgTW91c2VFdmVudCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdGVuZXIuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2F2ZU1vdXNlRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlck5hbWUgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgICAgICAgdGhpcy5tb3VzZUV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXIgPSAobGlzdGVuZXI6IEV2ZW50TGlzdGVuZXIsIGV2ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSAobGlzdGVuZXI6IEV2ZW50TGlzdGVuZXIsIGV2ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZU9uQ2xvc2luZ0FjdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbiA9IHRoaXMuY2xvc2luZ0FjdGlvbnMoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAucGlwZShyeERlbGF5KDApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LnR5cGUgPT09ICdjbGljaycgJiYgZXZlbnQua2JxUG9wb3ZlclByZXZlbnRIaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
338
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wLXVwLXRyaWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvcG9wLXVwL3BvcC11cC10cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsYUFBYSxFQUliLE9BQU8sRUFHUCxnQkFBZ0IsRUFFbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUVWLE1BQU0sRUFDTixNQUFNLEVBS04sZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUNILDBCQUEwQixFQUMxQixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLG1CQUFtQixFQUN0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUtsRyxNQUFNLFNBQVMsR0FBRyxDQUNkLEVB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QVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLElBQUksS0FBSyxFQUFFLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3pELE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztrSUF2WmlCLGVBQWU7c0hBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFOcEMsU0FBUzttQkFBQztvQkFDUCxJQUFJLEVBQUU7d0JBQ0YsY0FBYyxFQUFFLG9CQUFvQjt3QkFDcEMsY0FBYyxFQUFFLHFCQUFxQjtxQkFDeEM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIENka1Njcm9sbGFibGUsXG4gICAgQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlLFxuICAgIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICAgIE92ZXJsYXksXG4gICAgT3ZlcmxheUNvbmZpZyxcbiAgICBPdmVybGF5UmVmLFxuICAgIFNjcm9sbERpc3BhdGNoZXIsXG4gICAgU2Nyb2xsU3RyYXRlZ3lcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBUeXBlLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBFTlRFUiwgRVNDQVBFLCBTUEFDRSB9IGZyb20gJ0Brb29iaXEvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgaW50ZXJ2YWwsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXN5bmNTY2hlZHVsZXIgfSBmcm9tICdyeGpzL2ludGVybmFsL3NjaGVkdWxlci9Bc3luY1NjaGVkdWxlcic7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBkZWxheSBhcyByeERlbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBFWFRFTkRFRF9PVkVSTEFZX1BPU0lUSU9OUyxcbiAgICBQT1NJVElPTl9NQVAsXG4gICAgUE9TSVRJT05fUFJJT1JJVFlfU1RSQVRFR1ksXG4gICAgUE9TSVRJT05fVE9fQ1NTX01BUFxufSBmcm9tICcuLi9vdmVybGF5L292ZXJsYXktcG9zaXRpb24tbWFwJztcbmltcG9ydCB7IEFSUk9XX0JPVFRPTV9NQVJHSU5fQU5EX0hBTEZfSEVJR0hULCBQb3BVcFBsYWNlbWVudHMsIFBvcFVwVHJpZ2dlcnMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBLYnFQb3BVcCB9IGZyb20gJy4vcG9wLXVwJztcblxudHlwZSBLYnFQb3B1cFRyaWdnZXJPZmZzZXQgPSBQaWNrPENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsICdvZmZzZXRYJyB8ICdvZmZzZXRZJz47XG5cbmNvbnN0IGdldE9mZnNldCA9IChcbiAgICB7IG9yaWdpblgsIG92ZXJsYXlYLCBvcmlnaW5ZLCBvdmVybGF5WSB9OiBDb25uZWN0aW9uUG9zaXRpb25QYWlyLFxuICAgIHsgd2lkdGgsIGhlaWdodCB9OiBET01SZWN0XG4pOiBLYnFQb3B1cFRyaWdnZXJPZmZzZXQgPT4ge1xuICAgIGNvbnN0IG9mZnNldDogS2JxUG9wdXBUcmlnZ2VyT2Zmc2V0ID0ge307XG4gICAgY29uc3QgZWxlbWVudFdpZHRoSGFsZiA9IHdpZHRoIC8gMjtcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0SGFsZiA9IGhlaWdodCAvIDI7XG5cbiAgICAvLyBhbGlnbm1lbnQgc2hvdWxkIGJlIGFwcGxpZWQgb25seSBpZiB0aGUgZWxlbWVudCBpcyBzbWFsbFxuICAgIGlmIChBUlJPV19CT1RUT01fTUFSR0lOX0FORF9IQUxGX0hFSUdIVCA+IGVsZW1lbnRXaWR0aEhhbGYpIHtcbiAgICAgICAgY29uc3QgUEFERElORyA9IEFSUk9XX0JPVFRPTV9NQVJHSU5fQU5EX0hBTEZfSEVJR0hUIC0gZWxlbWVudFdpZHRoSGFsZjtcblxuICAgICAgICBpZiAob3JpZ2luWCA9PT0gb3ZlcmxheVgpIHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5YID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0Lm9mZnNldFggPSAtUEFERElORztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9yaWdpblggPT09ICdlbmQnKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0Lm9mZnNldFggPSBQQURESU5HO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWxpZ25tZW50IHNob3VsZCBiZSBhcHBsaWVkIG9ubHkgaWYgdGhlIGVsZW1lbnQgaXMgc21hbGxcbiAgICBpZiAoQVJST1dfQk9UVE9NX01BUkdJTl9BTkRfSEFMRl9IRUlHSFQgPiBlbGVtZW50SGVpZ2h0SGFsZikge1xuICAgICAgICBjb25zdCBQQURESU5HID0gQVJST1dfQk9UVE9NX01BUkdJTl9BTkRfSEFMRl9IRUlHSFQgLSBlbGVtZW50SGVpZ2h0SGFsZjtcblxuICAgICAgICBpZiAob3JpZ2luWSA9PT0gb3ZlcmxheVkpIHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5ZID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIG9mZnNldC5vZmZzZXRZID0gLVBBRERJTkc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcmlnaW5ZID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgIG9mZnNldC5vZmZzZXRZID0gUEFERElORztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZmZzZXQ7XG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBob3N0OiB7XG4gICAgICAgICcobW91c2VlbnRlciknOiAnaG92ZXJlZC5uZXh0KHRydWUpJyxcbiAgICAgICAgJyhtb3VzZWxlYXZlKSc6ICdob3ZlcmVkLm5leHQoZmFsc2UpJ1xuICAgIH1cbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgS2JxUG9wVXBUcmlnZ2VyPFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIHRoZSBwb3B1cFRyaWdnZXIgaXMgaG92ZXJlZC4gKi9cbiAgICByZWFkb25seSBob3ZlcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2NoZWR1bGVyID0gaW5qZWN0KEFzeW5jU2NoZWR1bGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pIHx8IHVuZGVmaW5lZDtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5OiBPdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyID0gaW5qZWN0KFNjcm9sbERpc3BhdGNoZXIpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBob3N0VmlldzogVmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlyZWN0aW9uID0gaW5qZWN0KERpcmVjdGlvbmFsaXR5LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxhYmxlID0gaW5qZWN0KENka1Njcm9sbGFibGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2Nyb2xsU3RyYXRlZ3k6ICgpID0+IFNjcm9sbFN0cmF0ZWd5O1xuXG4gICAgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBlbnRlckRlbGF5OiBudW1iZXIgPSAwO1xuICAgIGxlYXZlRGVsYXk6IG51bWJlciA9IDA7XG5cbiAgICB0cmlnZ2VyTmFtZTogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgYXJyb3c6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgdHJpZ2dlcjogc3RyaW5nO1xuICAgIGFic3RyYWN0IGN1c3RvbUNsYXNzOiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgY29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGFic3RyYWN0IHBsYWNlbWVudENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gICAgYWJzdHJhY3QgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IG9yaWdpblNlbGVjdG9yOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IG92ZXJsYXlDb25maWc6IE92ZXJsYXlDb25maWc7XG5cbiAgICBwcm90ZWN0ZWQgcGxhY2VtZW50ID0gUG9wVXBQbGFjZW1lbnRzLlRvcDtcbiAgICBwcm90ZWN0ZWQgcGxhY2VtZW50UHJpb3JpdHk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgdmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIF9jb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHByb3RlY3RlZCBfZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9jdXN0b21DbGFzczogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsO1xuICAgIHByb3RlY3RlZCBwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxUPjtcbiAgICBwcm90ZWN0ZWQgaW5zdGFuY2U6IGFueSB8IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgbGlzdGVuZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50TGlzdGVuZXI+KCk7XG4gICAgcHJvdGVjdGVkIGNsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXZhaWxhYmxlUG9zaXRpb25zOiB7IFtrZXk6IHN0cmluZ106IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIgfSA9IFBPU0lUSU9OX01BUDtcblxuICAgIHByb3RlY3RlZCBtb3VzZUV2ZW50PzogTW91c2VFdmVudDtcbiAgICBwcm90ZWN0ZWQgc3RyYXRlZ3k6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTtcblxuICAgIC8qKiBIaWRlIHBvcC11cCB3aXRoIHRpbWVvdXQuIE5lZWQgaWYgeW91IHdhbnQgdG8gc2hvdyBwb3AtdXAgYWZ0ZXIgbGVhdmluZyB0cmlnZ2VyICovXG4gICAgcHJvdGVjdGVkIGhpZGVXaXRoVGltZW91dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYWJzdHJhY3QgdXBkYXRlQ2xhc3NNYXAobmV3UGxhY2VtZW50Pzogc3RyaW5nKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHVwZGF0ZURhdGEoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IGNsb3NpbmdBY3Rpb25zKCk6IE9ic2VydmFibGU8YW55PjtcblxuICAgIGFic3RyYWN0IGdldE92ZXJsYXlIYW5kbGVDb21wb25lbnRUeXBlKCk6IFR5cGU8VD47XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuXG4gICAgICAgIHRoaXMubGlzdGVuZXJzLmZvckVhY2godGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKTtcblxuICAgICAgICB0aGlzLmxpc3RlbmVycy5jbGVhcigpO1xuICAgIH1cblxuICAgIHVwZGF0ZVBsYWNlbWVudCh2YWx1ZTogUG9wVXBQbGFjZW1lbnRzKSB7XG4gICAgICAgIGlmIChQT1NJVElPTl9UT19DU1NfTUFQW3ZhbHVlXSkge1xuICAgICAgICAgICAgdGhpcy5wbGFjZW1lbnQgPSB2YWx1ZTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVDbGFzc01hcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wbGFjZW1lbnQgPSBQb3BVcFBsYWNlbWVudHMuVG9wO1xuXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gcG9zaXRpb246ICR7dmFsdWV9LiBXaWxsIHVzZWQgZGVmYXVsdCBwb3NpdGlvbjogJHt0aGlzLnBsYWNlbWVudH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVBsYWNlbWVudFByaW9yaXR5KHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlbWVudFByaW9yaXR5ID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlbWVudFByaW9yaXR5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVZpc2libGUoZXh0ZXJuYWxWYWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShleHRlcm5hbFZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy52aXNpYmxlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVUb3VjaGVuZCgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgc2hvdyhkZWxheTogbnVtYmVyID0gdGhpcy5lbnRlckRlbGF5KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmliZU9uQ2xvc2luZ0FjdGlvbnMoKTtcbiAgICAgICAgdGhpcy5kZXRhY2goKTtcblxuICAgICAgICB0aGlzLnBvcnRhbCA9IHRoaXMucG9ydGFsIHx8IG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5nZXRPdmVybGF5SGFuZGxlQ29tcG9uZW50VHlwZSgpLCB0aGlzLmhvc3RWaWV3KTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLnBvcnRhbCkuaW5zdGFuY2UgYXMgS2JxUG9wVXA7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS50cmlnZ2VyID0gdGhpcztcblxuICAgICAgICB0aGlzLmluc3RhbmNlLmFmdGVySGlkZGVuKCkucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHRoaXMuZGV0YWNoKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzTWFwKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS52aXNpYmxlQ2hhbmdlXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zaG93KGRlbGF5KTtcblxuICAgICAgICBpZiAodGhpcy5oaWRlV2l0aFRpbWVvdXQgJiYgdGhpcy50cmlnZ2VyLmluY2x1ZGVzKFBvcFVwVHJpZ2dlcnMuSG92ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaW50ZXJ2YWwodGhpcy5sZWF2ZURlbGF5LCB0aGlzLnNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy50cmlnZ2VyLmluY2x1ZGVzKFBvcFVwVHJpZ2dlcnMuSG92ZXIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5ob3ZlcmVkLmdldFZhbHVlKCkgJiYgIXRoaXMuaW5zdGFuY2U/LmhvdmVyZWQuZ2V0VmFsdWUoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5pbnN0YW5jZT8uZGVzdHJveVJlZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMuaGlkZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGUgPSAoZGVsYXk6IG51bWJlciA9IHRoaXMubGVhdmVEZWxheSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAodGhpcy5pbnN0YW5jZSAmJiB0aGlzLnRyaWdnZXJOYW1lICE9PSAnbW91c2VsZWF2ZScpIHx8XG4gICAgICAgICAgICAodGhpcy50cmlnZ2VyTmFtZSA9PT0gJ21vdXNlbGVhdmUnICYmICF0aGlzLmluc3RhbmNlPy5ob3ZlcmVkLmdldFZhbHVlKCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuaW5zdGFuY2U/LmhpZGUoZGVsYXkpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBkZXRhY2ggPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBudWxsO1xuICAgIH07XG5cbiAgICAvKiogQ3JlYXRlIHRoZSBvdmVybGF5IGNvbmZpZyBhbmQgcG9zaXRpb24gc3RyYXRlZ3kgKi9cbiAgICBjcmVhdGVPdmVybGF5KCk6IE92ZXJsYXlSZWYge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5UmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGNvbm5lY3RlZCBwb3NpdGlvbiBzdHJhdGVneSB0aGF0IGxpc3RlbnMgZm9yIHNjcm9sbCBldmVudHMgdG8gcmVwb3NpdGlvbi5cbiAgICAgICAgdGhpcy5zdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgIC53aXRoVHJhbnNmb3JtT3JpZ2luT24odGhpcy5vcmlnaW5TZWxlY3RvcilcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoWy4uLkVYVEVOREVEX09WRVJMQVlfUE9TSVRJT05TXSlcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKVxuICAgICAgICAgICAgLndpdGhTY3JvbGxhYmxlQ29udGFpbmVycyh0aGlzLnNjcm9sbERpc3BhdGNoZXIuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHRoaXMuZWxlbWVudFJlZikpO1xuXG4gICAgICAgIHRoaXMuc3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh0aGlzLm9uUG9zaXRpb25DaGFuZ2UpO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5vdmVybGF5Q29uZmlnLFxuICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLmRpcmVjdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLnN0cmF0ZWd5LFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuc2Nyb2xsU3RyYXRlZ3koKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN1YnNjcmliZU9uQ2xvc2luZ0FjdGlvbnMoKTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodGhpcy5kZXRhY2gpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY7XG4gICAgfVxuXG4gICAgcmVzZXRPcmlnaW4oKSB7XG4gICAgICAgIHRoaXMuc3RyYXRlZ3kuc2V0T3JpZ2luKHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgb25Qb3NpdGlvbkNoYW5nZSA9ICgkZXZlbnQ6IENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBuZXdQbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudDtcblxuICAgICAgICBjb25zdCB7IG9yaWdpblgsIG9yaWdpblksIG92ZXJsYXlYLCBvdmVybGF5WSB9ID0gJGV2ZW50LmNvbm5lY3Rpb25QYWlyO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zKS5zb21lKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBvcmlnaW5YID09PSB0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1trZXldLm9yaWdpblggJiZcbiAgICAgICAgICAgICAgICBvcmlnaW5ZID09PSB0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1trZXldLm9yaWdpblkgJiZcbiAgICAgICAgICAgICAgICBvdmVybGF5WCA9PT0gdGhpcy5hdmFpbGFibGVQb3NpdGlvbnNba2V5XS5vdmVybGF5WCAmJlxuICAgICAgICAgICAgICAgIG92ZXJsYXlZID09PSB0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1trZXldLm92ZXJsYXlZXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBuZXdQbGFjZW1lbnQgPSBrZXkgYXMgUG9wVXBQbGFjZW1lbnRzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wbGFjZW1lbnRDaGFuZ2UuZW1pdChuZXdQbGFjZW1lbnQpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQ2xhc3NNYXAobmV3UGxhY2VtZW50KTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuXG4gICAgaW5pdExpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5jbGVhckxpc3RlbmVycygpO1xuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5DbGljaykpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNldCguLi50aGlzLmNyZWF0ZUxpc3RlbmVyKCdjbGljaycsIHRoaXMuc2hvdykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlci5pbmNsdWRlcyhQb3BVcFRyaWdnZXJzLkhvdmVyKSkge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNcbiAgICAgICAgICAgICAgICAuc2V0KC4uLnRoaXMuY3JlYXRlTGlzdGVuZXIoJ21vdXNlZW50ZXInLCB0aGlzLnNob3cpKVxuICAgICAgICAgICAgICAgIC5zZXQoLi4udGhpcy5jcmVhdGVMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMuZ2V0TW91c2VMZWF2ZUxpc3RlbmVyKCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5Gb2N1cykpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzXG4gICAgICAgICAgICAgICAgLnNldCguLi50aGlzLmNyZWF0ZUxpc3RlbmVyKCdmb2N1cycsIHRoaXMuc2hvdykpXG4gICAgICAgICAgICAgICAgLnNldCguLi50aGlzLmNyZWF0ZUxpc3RlbmVyKCdibHVyJywgdGhpcy5oaWRlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyLmluY2x1ZGVzKFBvcFVwVHJpZ2dlcnMuS2V5ZG93bikpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNldCgna2V5ZG93bicsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgJiYgW0VOVEVSLCBTUEFDRV0uaW5jbHVkZXMoZXZlbnQua2V5Q29kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNob3coKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3RlbmVycy5mb3JFYWNoKHRoaXMuYWRkRXZlbnRMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgZ2V0TW91c2VMZWF2ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5oaWRlV2l0aFRpbWVvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBzZXRUaW1lb3V0KHRoaXMuaGlkZSwgdGhpcy5sZWF2ZURlbGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhpZGU7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHBvcG92ZXIuICovXG4gICAgdXBkYXRlUG9zaXRpb24ocmVhcHBseVBvc2l0aW9uOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpYmVPbkNsb3NpbmdBY3Rpb25zKCk7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSAodGhpcy5vdmVybGF5UmVmLmdldENvbmZpZygpLnBvc2l0aW9uU3RyYXRlZ3kgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5nZXRBZGp1c3RlZFBvc2l0aW9ucygpKVxuICAgICAgICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgICAgIGlmIChyZWFwcGx5UG9zaXRpb24pIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcG9zaXRpb24ucmVhcHBseUxhc3RQb3NpdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIHBvc2l0aW9ucyB0aGF0IGFyZSBhbGlnbmVkIHdpdGggdGhlIGVsZW1lbnQncyBkaW1lbnNpb25zIGFuZCBvZmZzZXRzLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0QWRqdXN0ZWRQb3NpdGlvbnMoKTogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdIHtcbiAgICAgICAgY29uc3QgcmVzOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHBvcyBvZiB0aGlzLmdldFByaW9yaXRpemVkUG9zaXRpb25zKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldDogS2JxUG9wdXBUcmlnZ2VyT2Zmc2V0ID0gdGhpcy5hcnJvd1xuICAgICAgICAgICAgICAgID8gZ2V0T2Zmc2V0KHBvcywgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpXG4gICAgICAgICAgICAgICAgOiB7fTtcblxuICAgICAgICAgICAgcmVzLnB1c2goe1xuICAgICAgICAgICAgICAgIC4uLnBvcyxcbiAgICAgICAgICAgICAgICAuLi5vZmZzZXRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UHJpb3JpdHlQbGFjZW1lbnRTdHJhdGVneSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IFtdO1xuICAgICAgICBjb25zdCBwb3NzaWJsZVBvc2l0aW9ucyA9IE9iamVjdC5rZXlzKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHBvc2l0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocG9zc2libGVQb3NpdGlvbnMuaW5jbHVkZXMocG9zaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zW3Bvc2l0aW9uXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAocG9zc2libGVQb3NpdGlvbnMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1t2YWx1ZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UHJpb3JpdGl6ZWRQb3NpdGlvbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLnBsYWNlbWVudFByaW9yaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQcmlvcml0eVBsYWNlbWVudFN0cmF0ZWd5KHRoaXMucGxhY2VtZW50UHJpb3JpdHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFBPU0lUSU9OX1BSSU9SSVRZX1NUUkFURUdZW3RoaXMucGxhY2VtZW50XTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXJMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzLmZvckVhY2godGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKTtcblxuICAgICAgICB0aGlzLmxpc3RlbmVycy5jbGVhcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGlzdGVuZXIobmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IFtzdHJpbmcsIChldmVudDogdW5rbm93bikgPT4gdm9pZF0ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIChldmVudDogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlck5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZU1vdXNlRXZlbnQoZXZlbnQgYXMgTW91c2VFdmVudCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdGVuZXIuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2F2ZU1vdXNlRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlck5hbWUgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgICAgICAgdGhpcy5tb3VzZUV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXIgPSAobGlzdGVuZXI6IEV2ZW50TGlzdGVuZXIsIGV2ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSAobGlzdGVuZXI6IEV2ZW50TGlzdGVuZXIsIGV2ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZU9uQ2xvc2luZ0FjdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbiA9IHRoaXMuY2xvc2luZ0FjdGlvbnMoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAucGlwZShyeERlbGF5KDApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LnR5cGUgPT09ICdjbGljaycgJiYgZXZlbnQua2JxUG9wb3ZlclByZXZlbnRIaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Directive, ElementRef, EventEmitter, inject, Renderer2, TemplateRef } from '@angular/core';
|
|
1
|
+
import { ChangeDetectorRef, DestroyRef, Directive, ElementRef, EventEmitter, inject, Renderer2, TemplateRef } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
3
3
|
import { PopUpVisibility } from './constants';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -7,6 +7,7 @@ export class KbqPopUp {
|
|
|
7
7
|
this.renderer = inject(Renderer2);
|
|
8
8
|
this.elementRef = inject(ElementRef);
|
|
9
9
|
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
10
|
+
this.destroyRef = inject(DestroyRef);
|
|
10
11
|
/** Stream that emits when the popup item is hovered. */
|
|
11
12
|
this.hovered = new BehaviorSubject(false);
|
|
12
13
|
this.classMap = {};
|
|
@@ -37,6 +38,9 @@ export class KbqPopUp {
|
|
|
37
38
|
// Mark for check so if any parent component has set the
|
|
38
39
|
// ChangeDetectionStrategy to OnPush it will be checked anyways
|
|
39
40
|
this.markForCheck();
|
|
41
|
+
if (this.trigger.triggerName === 'mouseenter') {
|
|
42
|
+
this.addEventListenerForHide();
|
|
43
|
+
}
|
|
40
44
|
}, delay);
|
|
41
45
|
}
|
|
42
46
|
/**
|
|
@@ -111,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
111
115
|
}
|
|
112
116
|
}]
|
|
113
117
|
}] });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wLXVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL3BvcC11cC9wb3AtdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUNULFdBQVcsRUFDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQVM5QyxNQUFNLE9BQWdCLFFBQVE7SUFOOUI7UUFPdUIsYUFBUSxHQUFjLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLHNCQUFpQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVwRix3REFBd0Q7UUFDL0MsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBT3ZELGFBQVEsR0FBRyxFQUFFLENBQUM7UUFPZCxlQUFVLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFJNUMsMkVBQTJFO1FBQ3hELGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU3Qyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7S0E0R2pEO0lBdkdHLFdBQVc7UUFDUCxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEs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QUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7SUFFUyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO2tJQXZJaUIsUUFBUTtzSEFBUixRQUFROzs0RkFBUixRQUFRO2tCQU43QixTQUFTO21CQUFDO29CQUNQLElBQUksRUFBRTt3QkFDRixjQUFjLEVBQUUsb0JBQW9CO3dCQUNwQyxjQUFjLEVBQUUscUJBQXFCO3FCQUN4QztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgT25EZXN0cm95LFxuICAgIFJlbmRlcmVyMixcbiAgICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUG9wVXBWaXNpYmlsaXR5IH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgS2JxUG9wVXBUcmlnZ2VyIH0gZnJvbSAnLi9wb3AtdXAtdHJpZ2dlcic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhtb3VzZWVudGVyKSc6ICdob3ZlcmVkLm5leHQodHJ1ZSknLFxuICAgICAgICAnKG1vdXNlbGVhdmUpJzogJ2hvdmVyZWQubmV4dChmYWxzZSknXG4gICAgfVxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBLYnFQb3BVcCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIHRoZSBwb3B1cCBpdGVtIGlzIGhvdmVyZWQuICovXG4gICAgcmVhZG9ubHkgaG92ZXJlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgdHJpZ2dlcjogS2JxUG9wVXBUcmlnZ2VyPHVua25vd24+O1xuICAgIGhlYWRlcjogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgICBjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBhbnkgfSB8IG51bGw7XG5cbiAgICBjbGFzc01hcCA9IHt9O1xuXG4gICAgd2FybmluZzogYm9vbGVhbjtcbiAgICBhcnJvdzogYm9vbGVhbjtcblxuICAgIG9mZnNldDogbnVtYmVyIHwgbnVsbDtcblxuICAgIHZpc2liaWxpdHkgPSBQb3BVcFZpc2liaWxpdHkuSW5pdGlhbDtcbiAgICB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJvdGVjdGVkIHByZWZpeDogc3RyaW5nO1xuXG4gICAgLyoqIFN1YmplY3QgZm9yIG5vdGlmeWluZyB0aGF0IHRoZSB0b29sdGlwIGhhcyBiZWVuIGhpZGRlbiBmcm9tIHRoZSB2aWV3ICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uSGlkZVN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJvdGVjdGVkIGNsb3NlT25JbnRlcmFjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBzaG93VGltZW91dElkOiBhbnk7XG4gICAgcHJpdmF0ZSBoaWRlVGltZW91dElkOiBhbnk7XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVvdXRJZCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lb3V0SWQpO1xuXG4gICAgICAgIHRoaXMub25IaWRlU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmhvdmVyZWQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBpc1RlbXBsYXRlUmVmKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gICAgfVxuXG4gICAgc2hvdyhkZWxheTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhpZGVUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lb3V0SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbG9zZU9uSW50ZXJhY3Rpb24gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuc2hvd1RpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93VGltZW91dElkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHkgPSBQb3BVcFZpc2liaWxpdHkuVmlzaWJsZTtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgLy8gTWFyayBmb3IgY2hlY2sgc28gaWYgYW55IHBhcmVudCBjb21wb25lbnQgaGFzIHNldCB0aGVcbiAgICAgICAgICAgIC8vIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IHRvIE9uUHVzaCBpdCB3aWxsIGJlIGNoZWNrZWQgYW55d2F5c1xuICAgICAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSwgZGVsYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSBwb3B1cCBhZnRlciBhIHNwZWNpZmllZCBkZWxheS5cbiAgICAgKlxuICAgICAqIFRoZSBoaWRlIHRpbWVvdXQgdHJpZ2dlcnMgdGhlIGhpZGluZyBvZiB0aGUgcG9wdXAgYnkgdXBkYXRpbmcgdmlzaWJpbGl0eSBhbmQgZW1pdHRpbmcgcmVsZXZhbnQgZXZlbnRzLlxuICAgICAqIEFsc28sIGl0IG1hcmtzIGZvciBjaGVjayB0byBlbnN1cmUgcHJvcGVyIGNoYW5nZSBkZXRlY3Rpb24sIGVzcGVjaWFsbHkgZm9yIHBhcmVudCBjb21wb25lbnRzIHdpdGggT25QdXNoIHN0cmF0ZWd5LlxuICAgICAqIEBwYXJhbSBkZWxheSAtIFRoZSBkZWxheSBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIGhpZGluZyB0aGUgcG9wdXAuXG4gICAgICovXG4gICAgaGlkZShkZWxheTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lb3V0SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhpZGVUaW1lb3V0SWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHkgPSBQb3BVcFZpc2liaWxpdHkuSGlkZGVuO1xuXG4gICAgICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9uSGlkZVN1YmplY3QubmV4dCgpO1xuXG4gICAgICAgICAgICAvLyBNYXJrIGZvciBjaGVjayBzbyBpZiBhbnkgcGFyZW50IGNvbXBvbmVudCBoYXMgc2V0IHRoZVxuICAgICAgICAgICAgLy8gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgdG8gT25QdXNoIGl0IHdpbGwgYmUgY2hlY2tlZCBhbnl3YXlzXG4gICAgICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9LCBkZWxheSk7XG4gICAgfVxuXG4gICAgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmlsaXR5ID09PSBQb3BVcFZpc2liaWxpdHkuVmlzaWJsZTtcbiAgICB9XG5cbiAgICB1cGRhdGVDbGFzc01hcChwbGFjZW1lbnQ6IHN0cmluZywgY3VzdG9tQ2xhc3M6IHN0cmluZywgY2xhc3NNYXA/KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xhc3NNYXAgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXh9X3BsYWNlbWVudC0ke3BsYWNlbWVudH1gXTogdHJ1ZSxcbiAgICAgICAgICAgIFtjdXN0b21DbGFzc106ICEhY3VzdG9tQ2xhc3MsXG4gICAgICAgICAgICAuLi5jbGFzc01hcFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBub3RpZmllcyB3aGVuIHRoZSB0b29sdGlwIGhhcyBiZWVuIGhpZGRlbiBmcm9tIHZpZXcuICovXG4gICAgYWZ0ZXJIaWRkZW4oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uSGlkZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgbWFya0ZvckNoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIGFuaW1hdGlvblN0YXJ0KCkge1xuICAgICAgICB0aGlzLmNsb3NlT25JbnRlcmFjdGlvbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIGFuaW1hdGlvbkRvbmUoeyB0b1N0YXRlIH06IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0b1N0YXRlID09PSBQb3BVcFZpc2liaWxpdHkuSGlkZGVuICYmICF0aGlzLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICB0aGlzLm9uSGlkZVN1YmplY3QubmV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvU3RhdGUgPT09IFBvcFVwVmlzaWJpbGl0eS5WaXNpYmxlIHx8IHRvU3RhdGUgPT09IFBvcFVwVmlzaWJpbGl0eS5IaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPbkludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZUJvZHlJbnRlcmFjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2xvc2VPbkludGVyYWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWRkRXZlbnRMaXN0ZW5lckZvckhpZGUoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB0aGlzLmhpZGUoMCkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wLXVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL3BvcC11cC9wb3AtdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUVOLFNBQVMsRUFDVCxXQUFXLEVBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFTOUMsTUFBTSxPQUFnQixRQUFRO0lBTjlCO1FBT3VCLGFBQVEsR0FBYyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxzQkFBaUIsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0UsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6Qyx3REFBd0Q7UUFDL0MsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBT3ZELGFBQVEsR0FBRyxFQUFFLENBQUM7UUFPZCxlQUFVLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFJNUMsMkVBQTJFO1FBQ3hELGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU3Qyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7S0FnSGpEO0lBM0dHLFdBQVc7UUFDUCxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLGFBQWEs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SSxPQUFPLEtBQUssZUFBZSxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBRVMsdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztrSUE1SWlCLFFBQVE7c0hBQVIsUUFBUTs7NEZBQVIsUUFBUTtrQkFON0IsU0FBUzttQkFBQztvQkFDUCxJQUFJLEVBQUU7d0JBQ0YsY0FBYyxFQUFFLG9CQUFvQjt3QkFDcEMsY0FBYyxFQUFFLHFCQUFxQjtxQkFDeEM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgT25EZXN0cm95LFxuICAgIFJlbmRlcmVyMixcbiAgICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUG9wVXBWaXNpYmlsaXR5IH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgS2JxUG9wVXBUcmlnZ2VyIH0gZnJvbSAnLi9wb3AtdXAtdHJpZ2dlcic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhtb3VzZWVudGVyKSc6ICdob3ZlcmVkLm5leHQodHJ1ZSknLFxuICAgICAgICAnKG1vdXNlbGVhdmUpJzogJ2hvdmVyZWQubmV4dChmYWxzZSknXG4gICAgfVxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBLYnFQb3BVcCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gdGhlIHBvcHVwIGl0ZW0gaXMgaG92ZXJlZC4gKi9cbiAgICByZWFkb25seSBob3ZlcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICB0cmlnZ2VyOiBLYnFQb3BVcFRyaWdnZXI8dW5rbm93bj47XG4gICAgaGVhZGVyOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGFueSB9IHwgbnVsbDtcblxuICAgIGNsYXNzTWFwID0ge307XG5cbiAgICB3YXJuaW5nOiBib29sZWFuO1xuICAgIGFycm93OiBib29sZWFuO1xuXG4gICAgb2Zmc2V0OiBudW1iZXIgfCBudWxsO1xuXG4gICAgdmlzaWJpbGl0eSA9IFBvcFVwVmlzaWJpbGl0eS5Jbml0aWFsO1xuICAgIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcHJlZml4OiBzdHJpbmc7XG5cbiAgICAvKiogU3ViamVjdCBmb3Igbm90aWZ5aW5nIHRoYXQgdGhlIHRvb2x0aXAgaGFzIGJlZW4gaGlkZGVuIGZyb20gdGhlIHZpZXcgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25IaWRlU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgY2xvc2VPbkludGVyYWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHNob3dUaW1lb3V0SWQ6IGFueTtcbiAgICBwcml2YXRlIGhpZGVUaW1lb3V0SWQ6IGFueTtcblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZW91dElkKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVvdXRJZCk7XG5cbiAgICAgICAgdGhpcy5vbkhpZGVTdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuaG92ZXJlZC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIGlzVGVtcGxhdGVSZWYodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgICB9XG5cbiAgICBzaG93KGRlbGF5OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGlkZVRpbWVvdXRJZCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVvdXRJZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsb3NlT25JbnRlcmFjdGlvbiA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5zaG93VGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dUaW1lb3V0SWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eSA9IFBvcFVwVmlzaWJpbGl0eS5WaXNpYmxlO1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAvLyBNYXJrIGZvciBjaGVjayBzbyBpZiBhbnkgcGFyZW50IGNvbXBvbmVudCBoYXMgc2V0IHRoZVxuICAgICAgICAgICAgLy8gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgdG8gT25QdXNoIGl0IHdpbGwgYmUgY2hlY2tlZCBhbnl3YXlzXG4gICAgICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyLnRyaWdnZXJOYW1lID09PSAnbW91c2VlbnRlcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJGb3JIaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGRlbGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlcyB0aGUgcG9wdXAgYWZ0ZXIgYSBzcGVjaWZpZWQgZGVsYXkuXG4gICAgICpcbiAgICAgKiBUaGUgaGlkZSB0aW1lb3V0IHRyaWdnZXJzIHRoZSBoaWRpbmcgb2YgdGhlIHBvcHVwIGJ5IHVwZGF0aW5nIHZpc2liaWxpdHkgYW5kIGVtaXR0aW5nIHJlbGV2YW50IGV2ZW50cy5cbiAgICAgKiBBbHNvLCBpdCBtYXJrcyBmb3IgY2hlY2sgdG8gZW5zdXJlIHByb3BlciBjaGFuZ2UgZGV0ZWN0aW9uLCBlc3BlY2lhbGx5IGZvciBwYXJlbnQgY29tcG9uZW50cyB3aXRoIE9uUHVzaCBzdHJhdGVneS5cbiAgICAgKiBAcGFyYW0gZGVsYXkgLSBUaGUgZGVsYXkgaW4gbWlsbGlzZWNvbmRzIGJlZm9yZSBoaWRpbmcgdGhlIHBvcHVwLlxuICAgICAqL1xuICAgIGhpZGUoZGVsYXk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zaG93VGltZW91dElkKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZW91dElkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oaWRlVGltZW91dElkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5ID0gUG9wVXBWaXNpYmlsaXR5LkhpZGRlbjtcblxuICAgICAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5vbkhpZGVTdWJqZWN0Lm5leHQoKTtcblxuICAgICAgICAgICAgLy8gTWFyayBmb3IgY2hlY2sgc28gaWYgYW55IHBhcmVudCBjb21wb25lbnQgaGFzIHNldCB0aGVcbiAgICAgICAgICAgIC8vIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IHRvIE9uUHVzaCBpdCB3aWxsIGJlIGNoZWNrZWQgYW55d2F5c1xuICAgICAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSwgZGVsYXkpO1xuICAgIH1cblxuICAgIGlzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eSA9PT0gUG9wVXBWaXNpYmlsaXR5LlZpc2libGU7XG4gICAgfVxuXG4gICAgdXBkYXRlQ2xhc3NNYXAocGxhY2VtZW50OiBzdHJpbmcsIGN1c3RvbUNsYXNzOiBzdHJpbmcsIGNsYXNzTWFwPyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsYXNzTWFwID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4fV9wbGFjZW1lbnQtJHtwbGFjZW1lbnR9YF06IHRydWUsXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3NdOiAhIWN1c3RvbUNsYXNzLFxuICAgICAgICAgICAgLi4uY2xhc3NNYXBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgbm90aWZpZXMgd2hlbiB0aGUgdG9vbHRpcCBoYXMgYmVlbiBoaWRkZW4gZnJvbSB2aWV3LiAqL1xuICAgIGFmdGVySGlkZGVuKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbkhpZGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIG1hcmtGb3JDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBhbmltYXRpb25TdGFydCgpIHtcbiAgICAgICAgdGhpcy5jbG9zZU9uSW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBhbmltYXRpb25Eb25lKHsgdG9TdGF0ZSB9OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodG9TdGF0ZSA9PT0gUG9wVXBWaXNpYmlsaXR5LkhpZGRlbiAmJiAhdGhpcy5pc1Zpc2libGUoKSkge1xuICAgICAgICAgICAgdGhpcy5vbkhpZGVTdWJqZWN0Lm5leHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b1N0YXRlID09PSBQb3BVcFZpc2liaWxpdHkuVmlzaWJsZSB8fCB0b1N0YXRlID09PSBQb3BVcFZpc2liaWxpdHkuSGlkZGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlT25JbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVCb2R5SW50ZXJhY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25JbnRlcmFjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5oaWRlKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFkZEV2ZW50TGlzdGVuZXJGb3JIaWRlKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4gdGhpcy5oaWRlKDApKTtcbiAgICB9XG59XG4iXX0=
|