igniteui-angular 17.2.5 → 17.2.6
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/esm2022/lib/directives/for-of/for_of.directive.mjs +12 -1
- package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +3 -2
- package/esm2022/lib/grids/grid-base.directive.mjs +5 -8
- package/esm2022/lib/grids/selection/selection.service.mjs +12 -16
- package/esm2022/lib/simple-combo/simple-combo.component.mjs +7 -6
- package/esm2022/lib/slider/slider.component.mjs +10 -8
- package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +6 -2
- package/fesm2022/igniteui-angular.mjs +47 -35
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/core/styles/components/bottom-nav/_bottom-nav-theme.scss +24 -12
- package/lib/core/styles/components/button/_button-theme.scss +9 -3
- package/lib/core/styles/components/grid/_excel-filtering-theme.scss +20 -0
- package/lib/core/styles/components/overlay/_overlay-theme.scss +6 -0
- package/lib/directives/for-of/for_of.directive.d.ts +5 -0
- package/lib/slider/slider.component.d.ts +1 -1
- package/lib/slider/thumb/thumb-slider.component.d.ts +2 -1
- package/migrations/migration-collection.json +5 -0
- package/migrations/update-17_2_6/changes/theme-changes.json +11 -0
- package/migrations/update-17_2_6/index.d.ts +3 -0
- package/migrations/update-17_2_6/index.js +31 -0
- package/package.json +1 -1
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -5,6 +5,7 @@ import { takeUntil } from 'rxjs/operators';
|
|
|
5
5
|
import { AutoPositionStrategy, HorizontalAlignment } from '../../services/public_api';
|
|
6
6
|
import { IgxToggleActionDirective } from '../toggle/toggle.directive';
|
|
7
7
|
import { IgxTooltipComponent } from './tooltip.component';
|
|
8
|
+
import { IgxTooltipDirective } from './tooltip.directive';
|
|
8
9
|
import { fadeOut, scaleInCenter } from 'igniteui-angular/animations';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
import * as i1 from "../../core/navigation";
|
|
@@ -27,7 +28,7 @@ export class IgxTooltipTargetDirective extends IgxToggleActionDirective {
|
|
|
27
28
|
* @hidden
|
|
28
29
|
*/
|
|
29
30
|
set target(target) {
|
|
30
|
-
if (target
|
|
31
|
+
if (target instanceof IgxTooltipDirective) {
|
|
31
32
|
this._target = target;
|
|
32
33
|
}
|
|
33
34
|
}
|
|
@@ -381,4 +382,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
381
382
|
type: HostListener,
|
|
382
383
|
args: ['document:touchstart', ['$event']]
|
|
383
384
|
}] } });
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXRhcmdldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBYyxRQUFRLEVBQW9CLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xLLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFhckU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQU1ILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFzRG5FOztPQUVHO0lBQ0gsSUFDb0IsTUFBTSxDQUFDLE1BQVc7UUFDbEMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFvQixNQUFNO1FBQ3RCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFB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QWdEQyxXQUFXO3NCQURqQixNQUFNO2dCQW1CQSxXQUFXO3NCQURqQixNQUFNO2dCQWNTLE9BQU87c0JBRHRCLFlBQVk7dUJBQUMsT0FBTztnQkFXZCxZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBOEJuQixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBeUJuQixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBYW5CLG9CQUFvQjtzQkFEMUIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUFuaW1hdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIE9uRGVzdHJveSwgT3V0cHV0LCBFbGVtZW50UmVmLCBPcHRpb25hbCwgVmlld0NvbnRhaW5lclJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksIEhvcml6b250YWxBbGlnbm1lbnQsIFBvc2l0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneFRvZ2dsZUFjdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IElneFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IGZhZGVPdXQsIHNjYWxlSW5DZW50ZXIgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwU2hvd0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB0YXJnZXQ6IElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmU7XG4gICAgdG9vbHRpcDogSWd4VG9vbHRpcERpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwSGlkZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB0YXJnZXQ6IElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmU7XG4gICAgdG9vbHRpcDogSWd4VG9vbHRpcERpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgVG9vbHRpcCBUYXJnZXQqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvdG9vbHRpcClcbiAqXG4gKiBUaGUgSWduaXRlIFVJIGZvciBBbmd1bGFyIFRvb2x0aXAgVGFyZ2V0IGRpcmVjdGl2ZSBpcyB1c2VkIHRvIG1hcmsgYW4gSFRNTCBlbGVtZW50IGluIHRoZSBtYXJrdXAgYXMgb25lIHRoYXQgaGFzIGEgdG9vbHRpcC5cbiAqIFRoZSB0b29sdGlwIHRhcmdldCBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIGJ5IGFzc2lnbmluZyB0aGUgZXhwb3J0ZWQgdG9vbHRpcCByZWZlcmVuY2UgdG8gdGhlXG4gKiB0YXJnZXQncyBzZWxlY3RvciBwcm9wZXJ0eS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIGV4cG9ydEFzOiAndG9vbHRpcFRhcmdldCcsXG4gICAgc2VsZWN0b3I6ICdbaWd4VG9vbHRpcFRhcmdldF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4VG9vbHRpcFRhcmdldERpcmVjdGl2ZSBleHRlbmRzIElneFRvZ2dsZUFjdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdGhhdCBzaG91bGQgcGFzcyBiZWZvcmUgc2hvd2luZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcFNob3dEZWxheSA9IHRoaXMudG9vbHRpcFRhcmdldC5zaG93RGVsYXk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgW3Nob3dEZWxheV09XCIxNTAwXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdzaG93RGVsYXknKVxuICAgIHB1YmxpYyBzaG93RGVsYXkgPSA1MDA7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdGhhdCBzaG91bGQgcGFzcyBiZWZvcmUgaGlkaW5nIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCB0b29sdGlwSGlkZURlbGF5ID0gdGhpcy50b29sdGlwVGFyZ2V0LmhpZGVEZWxheTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiBbaGlkZURlbGF5XT1cIjE1MDBcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2hpZGVEZWxheScpXG4gICAgcHVibGljIGhpZGVEZWxheSA9IDUwMDtcblxuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiB0aGUgdG9vbHRpcCBzaG91bGQgbm90IHNob3cgd2hlbiBob3ZlcmluZyBpdHMgdGFyZ2V0IHdpdGggdGhlIG1vdXNlLiAoZGVmYXVsdHMgdG8gZmFsc2UpXG4gICAgICogV2hpbGUgc2V0dGluZyB0aGlzIHByb3BlcnR5IHRvICd0cnVlJyB3aWxsIGRpc2FibGUgdGhlIHVzZXIgaW50ZXJhY3Rpb25zIHRoYXQgc2hvd3MvaGlkZXMgdGhlIHRvb2x0aXAsXG4gICAgICogdGhlIGRldmVsb3BlciB3aWxsIHN0aWxsIGJlIGFibGUgdG8gc2hvdy9oaWRlIHRoZSB0b29sdGlwIHRocm91Z2ggdGhlIEFQSS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcERpc2FibGVkVmFsdWUgPSB0aGlzLnRvb2x0aXBUYXJnZXQudG9vbHRpcERpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiIFt0b29sdGlwRGlzYWJsZWRdPVwidHJ1ZVwiPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAndG9vbHRpcERpc2FibGVkJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHRvb2x0aXBEaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4VG9vbHRpcFRhcmdldCcpXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCB0YXJnZXQodGFyZ2V0OiBhbnkpIHtcbiAgICAgICAgaWYgKHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLl90YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0YXJnZXQoKTogYW55IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl90YXJnZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNlcnZpY2UuZ2V0KHRoaXMuX3RhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIEBoaWRkZW5cbiAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB0b29sdGlwKGNvbnRlbnQ6IGFueSkge1xuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0ICYmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgfHwgY29udGVudCBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvb2x0aXBDb21wb25lbnQgPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChJZ3hUb29sdGlwQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHRvb2x0aXBDb21wb25lbnQuaW5zdGFuY2UuY29udGVudCA9IGNvbnRlbnQgYXMgc3RyaW5nO1xuXG4gICAgICAgICAgICB0aGlzLl90YXJnZXQgPSB0b29sdGlwQ29tcG9uZW50Lmluc3RhbmNlLnRvb2x0aXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSByZXNwZWN0aXZlIG5hdGl2ZSBlbGVtZW50IG9mIHRoZSBkaXJlY3RpdmUuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRvb2x0aXBUYXJnZXRFbGVtZW50ID0gdGhpcy50b29sdGlwVGFyZ2V0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgdG9vbHRpcCB0aGF0IGlzIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhcmdldCBpcyBjdXJyZW50bHkgaGlkZGVuLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCB0b29sdGlwSGlkZGVuVmFsdWUgPSB0aGlzLnRvb2x0aXBUYXJnZXQudG9vbHRpcEhpZGRlbjtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRvb2x0aXBIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy50YXJnZXQgfHwgdGhpcy50YXJnZXQuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHRvb2x0aXAgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YXJnZXQgc3RhcnRzIHNob3dpbmcuXG4gICAgICogVGhpcyBldmVudCBpcyBmaXJlZCBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBjb3VudGRvd24gdG8gc2hvd2luZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0b29sdGlwU2hvd2luZyhhcmdzOiBJVG9vbHRpcFNob3dFdmVudEFyZ3MpIHtcbiAgICAgKiAgICBhbGVydChcIlRvb2x0aXAgc3RhcnRlZCBzaG93aW5nIVwiKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiAodG9vbHRpcFNob3cpPSd0b29sdGlwU2hvd2luZygkZXZlbnQpJz5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdG9vbHRpcFNob3cgPSBuZXcgRXZlbnRFbWl0dGVyPElUb29sdGlwU2hvd0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHRvb2x0aXAgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YXJnZXQgc3RhcnRzIGhpZGluZy5cbiAgICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGNvdW50ZG93biB0byBoaWRpbmcgdGhlIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdG9vbHRpcEhpZGluZyhhcmdzOiBJVG9vbHRpcEhpZGVFdmVudEFyZ3MpIHtcbiAgICAgKiAgICBhbGVydChcIlRvb2x0aXAgc3RhcnRlZCBoaWRpbmchXCIpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiICh0b29sdGlwSGlkZSk9J3Rvb2x0aXBIaWRpbmcoJGV2ZW50KSc+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRvb2x0aXBIaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxJVG9vbHRpcEhpZGVFdmVudEFyZ3M+KCk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX25hdmlnYXRpb25TZXJ2aWNlOiBJZ3hOYXZpZ2F0aW9uU2VydmljZSwgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcihfZWxlbWVudCwgX25hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIHB1YmxpYyBvdmVycmlkZSBvbkNsaWNrKCkge1xuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0LmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9yY2VDbG9zZSh0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gICAgcHVibGljIG9uTW91c2VFbnRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybiA9IHRoaXMucHJlTW91c2VFbnRlckNoZWNrKCk7XG4gICAgICAgIGlmIChzaG91bGRSZXR1cm4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNob3dpbmdBcmdzID0geyB0YXJnZXQ6IHRoaXMsIHRvb2x0aXA6IHRoaXMudGFyZ2V0LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMudG9vbHRpcFNob3cuZW1pdChzaG93aW5nQXJncyk7XG5cbiAgICAgICAgaWYgKHNob3dpbmdBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5vcGVuKHRoaXMubWVyZ2VkT3ZlcmxheVNldHRpbmdzKTsgLy8gQ2FsbCBvcGVuKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gZmFsc2U7XG4gICAgICAgIH0sIHRoaXMuc2hvd0RlbGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybiA9IHRoaXMucHJlTW91c2VMZWF2ZUNoZWNrKCk7XG4gICAgICAgIGlmIChzaG91bGRSZXR1cm4gfHwgdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpOyAvLyBDYWxsIGNsb3NlKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XG5cblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JylcbiAgICBwdWJsaWMgb25Ub3VjaFN0YXJ0KCkge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRG9jdW1lbnRUb3VjaFN0YXJ0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRWxlbWVudCAhPT0gZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgICAhdGhpcy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU2V0dGluZ3M6IFBvc2l0aW9uU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICBob3Jpem9udGFsRGlyZWN0aW9uOiBIb3Jpem9udGFsQWxpZ25tZW50LkNlbnRlcixcbiAgICAgICAgICAgIGhvcml6b250YWxTdGFydFBvaW50OiBIb3Jpem9udGFsQWxpZ25tZW50LkNlbnRlcixcbiAgICAgICAgICAgIG9wZW5BbmltYXRpb246IHVzZUFuaW1hdGlvbihzY2FsZUluQ2VudGVyLCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzE1MG1zJyB9IH0pLFxuICAgICAgICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlT3V0LCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzc1bXMnIH0gfSlcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMucG9zaXRpb25TdHJhdGVneSA9IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneShwb3NpdGlvblNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLmNsb3NlT25PdXRzaWRlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLmNsb3NlT25Fc2NhcGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudGFyZ2V0LmNsb3NpbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhpZGluZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEhpZGUuZW1pdChoaWRpbmdBcmdzKTtcblxuICAgICAgICAgICAgaWYgKGhpZGluZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgdG9vbHRpcCBieSByZXNwZWN0aW5nIHRoZSAnc2hvd0RlbGF5JyBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnRvb2x0aXBUYXJnZXQuc2hvd1Rvb2x0aXAoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1Rvb2x0aXAoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICAvLyAgaWYgY2xvc2UgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGZpbmlzaCBpdCwgb3IgY2xvc2UgdGhlIHRvb2x0aXAgd2l0aCBubyBhbmltYXRpb25cbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2hvd2luZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy50b29sdGlwU2hvdy5lbWl0KHNob3dpbmdBcmdzKTtcblxuICAgICAgICBpZiAoc2hvd2luZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9wZW4odGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpOyAvLyBDYWxsIG9wZW4oKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5zaG93RGVsYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSB0b29sdGlwIGJ5IHJlc3BlY3RpbmcgdGhlICdoaWRlRGVsYXknIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMudG9vbHRpcFRhcmdldC5oaWRlVG9vbHRpcCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlVG9vbHRpcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCAmJiB0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCB8fCB0aGlzLnRhcmdldC50b0JlSGlkZGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpOyAvLyBDYWxsIGNsb3NlKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja091dGxldEFuZE91dHNpZGVDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMub3V0bGV0KSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMub3V0bGV0ID0gdGhpcy5vdXRsZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBtZXJnZWRPdmVybGF5U2V0dGluZ3MoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9vdmVybGF5RGVmYXVsdHMsIHRoaXMub3ZlcmxheVNldHRpbmdzKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhlY3V0aW9uIGluIG9uTW91c2VFbnRlciBzaG91bGQgYmUgdGVybWluYXRlZCBhZnRlciB0aGlzIG1ldGhvZFxuICAgIHByaXZhdGUgcHJlTW91c2VFbnRlckNoZWNrKCkge1xuICAgICAgICAvLyBJZiB0b29sdGlwIGlzIGFib3V0IHRvIGJlIG9wZW5lZFxuICAgICAgICBpZiAodGhpcy50YXJnZXQudG9CZVNob3duKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50YXJnZXQudGltZW91dElkKTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgVG9vbHRpcCBpcyBvcGVuZWQgb3IgYWJvdXQgdG8gYmUgaGlkZGVuXG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkIHx8IHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgICAgICAvLyAgaWYgY2xvc2UgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGZpbmlzaCBpdCwgb3IgY2xvc2UgdGhlIHRvb2x0aXAgd2l0aCBubyBhbmltYXRpb25cbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBleGVjdXRpb24gaW4gb25Nb3VzZUxlYXZlIHNob3VsZCBiZSB0ZXJtaW5hdGVkIGFmdGVyIHRoaXMgbWV0aG9kXG4gICAgcHJpdmF0ZSBwcmVNb3VzZUxlYXZlQ2hlY2soKTogYm9vbGVhbiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgIC8vIElmIHRvb2x0aXAgaXMgYWJvdXQgdG8gYmUgb3BlbmVkXG4gICAgICAgIGlmICh0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
|
|
385
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXRhcmdldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBYyxRQUFRLEVBQW9CLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xLLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFhckU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQU1ILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFzRG5FOztPQUVHO0lBQ0gsSUFDb0IsTUFBTSxDQUFDLE1BQVc7UUFDbEMsSUFBSSxNQUFNLFlBQVksbUJBQW1CLEVBQUU7WUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFvQixNQUFNO1FBQ3RCLElBQUks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O2dCQXFCZCxPQUFPO3NCQURqQixLQUFLO2dCQWdEQyxXQUFXO3NCQURqQixNQUFNO2dCQW1CQSxXQUFXO3NCQURqQixNQUFNO2dCQWNTLE9BQU87c0JBRHRCLFlBQVk7dUJBQUMsT0FBTztnQkFXZCxZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBOEJuQixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBeUJuQixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBYW5CLG9CQUFvQjtzQkFEMUIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUFuaW1hdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIE9uRGVzdHJveSwgT3V0cHV0LCBFbGVtZW50UmVmLCBPcHRpb25hbCwgVmlld0NvbnRhaW5lclJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksIEhvcml6b250YWxBbGlnbm1lbnQsIFBvc2l0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneFRvZ2dsZUFjdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IElneFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IGZhZGVPdXQsIHNjYWxlSW5DZW50ZXIgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwU2hvd0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB0YXJnZXQ6IElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmU7XG4gICAgdG9vbHRpcDogSWd4VG9vbHRpcERpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwSGlkZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB0YXJnZXQ6IElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmU7XG4gICAgdG9vbHRpcDogSWd4VG9vbHRpcERpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgVG9vbHRpcCBUYXJnZXQqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvdG9vbHRpcClcbiAqXG4gKiBUaGUgSWduaXRlIFVJIGZvciBBbmd1bGFyIFRvb2x0aXAgVGFyZ2V0IGRpcmVjdGl2ZSBpcyB1c2VkIHRvIG1hcmsgYW4gSFRNTCBlbGVtZW50IGluIHRoZSBtYXJrdXAgYXMgb25lIHRoYXQgaGFzIGEgdG9vbHRpcC5cbiAqIFRoZSB0b29sdGlwIHRhcmdldCBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIGJ5IGFzc2lnbmluZyB0aGUgZXhwb3J0ZWQgdG9vbHRpcCByZWZlcmVuY2UgdG8gdGhlXG4gKiB0YXJnZXQncyBzZWxlY3RvciBwcm9wZXJ0eS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIGV4cG9ydEFzOiAndG9vbHRpcFRhcmdldCcsXG4gICAgc2VsZWN0b3I6ICdbaWd4VG9vbHRpcFRhcmdldF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4VG9vbHRpcFRhcmdldERpcmVjdGl2ZSBleHRlbmRzIElneFRvZ2dsZUFjdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdGhhdCBzaG91bGQgcGFzcyBiZWZvcmUgc2hvd2luZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcFNob3dEZWxheSA9IHRoaXMudG9vbHRpcFRhcmdldC5zaG93RGVsYXk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgW3Nob3dEZWxheV09XCIxNTAwXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdzaG93RGVsYXknKVxuICAgIHB1YmxpYyBzaG93RGVsYXkgPSA1MDA7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdGhhdCBzaG91bGQgcGFzcyBiZWZvcmUgaGlkaW5nIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCB0b29sdGlwSGlkZURlbGF5ID0gdGhpcy50b29sdGlwVGFyZ2V0LmhpZGVEZWxheTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiBbaGlkZURlbGF5XT1cIjE1MDBcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2hpZGVEZWxheScpXG4gICAgcHVibGljIGhpZGVEZWxheSA9IDUwMDtcblxuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiB0aGUgdG9vbHRpcCBzaG91bGQgbm90IHNob3cgd2hlbiBob3ZlcmluZyBpdHMgdGFyZ2V0IHdpdGggdGhlIG1vdXNlLiAoZGVmYXVsdHMgdG8gZmFsc2UpXG4gICAgICogV2hpbGUgc2V0dGluZyB0aGlzIHByb3BlcnR5IHRvICd0cnVlJyB3aWxsIGRpc2FibGUgdGhlIHVzZXIgaW50ZXJhY3Rpb25zIHRoYXQgc2hvd3MvaGlkZXMgdGhlIHRvb2x0aXAsXG4gICAgICogdGhlIGRldmVsb3BlciB3aWxsIHN0aWxsIGJlIGFibGUgdG8gc2hvdy9oaWRlIHRoZSB0b29sdGlwIHRocm91Z2ggdGhlIEFQSS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcERpc2FibGVkVmFsdWUgPSB0aGlzLnRvb2x0aXBUYXJnZXQudG9vbHRpcERpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiIFt0b29sdGlwRGlzYWJsZWRdPVwidHJ1ZVwiPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAndG9vbHRpcERpc2FibGVkJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHRvb2x0aXBEaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4VG9vbHRpcFRhcmdldCcpXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCB0YXJnZXQodGFyZ2V0OiBhbnkpIHtcbiAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIElneFRvb2x0aXBEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHRhcmdldCgpOiBhbnkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3RhcmdldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uU2VydmljZS5nZXQodGhpcy5fdGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICogQGhpZGRlblxuICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHRvb2x0aXAoY29udGVudDogYW55KSB7XG4gICAgICAgIGlmICghdGhpcy50YXJnZXQgJiYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyB8fCBjb250ZW50IGluc3RhbmNlb2YgU3RyaW5nKSkge1xuICAgICAgICAgICAgY29uc3QgdG9vbHRpcENvbXBvbmVudCA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KElneFRvb2x0aXBDb21wb25lbnQpO1xuICAgICAgICAgICAgdG9vbHRpcENvbXBvbmVudC5pbnN0YW5jZS5jb250ZW50ID0gY29udGVudCBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgIHRoaXMuX3RhcmdldCA9IHRvb2x0aXBDb21wb25lbnQuaW5zdGFuY2UudG9vbHRpcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHJlc3BlY3RpdmUgbmF0aXZlIGVsZW1lbnQgb2YgdGhlIGRpcmVjdGl2ZS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgdG9vbHRpcFRhcmdldEVsZW1lbnQgPSB0aGlzLnRvb2x0aXBUYXJnZXQubmF0aXZlRWxlbWVudDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSB0b29sdGlwIHRoYXQgaXMgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFyZ2V0IGlzIGN1cnJlbnRseSBoaWRkZW4uXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRvb2x0aXBIaWRkZW5WYWx1ZSA9IHRoaXMudG9vbHRpcFRhcmdldC50b29sdGlwSGlkZGVuO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG9vbHRpcEhpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnRhcmdldCB8fCB0aGlzLnRhcmdldC5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgdG9vbHRpcCB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhcmdldCBzdGFydHMgc2hvd2luZy5cbiAgICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGNvdW50ZG93biB0byBzaG93aW5nIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRvb2x0aXBTaG93aW5nKGFyZ3M6IElUb29sdGlwU2hvd0V2ZW50QXJncykge1xuICAgICAqICAgIGFsZXJ0KFwiVG9vbHRpcCBzdGFydGVkIHNob3dpbmchXCIpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiICh0b29sdGlwU2hvdyk9J3Rvb2x0aXBTaG93aW5nKCRldmVudCknPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0b29sdGlwU2hvdyA9IG5ldyBFdmVudEVtaXR0ZXI8SVRvb2x0aXBTaG93RXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgdG9vbHRpcCB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhcmdldCBzdGFydHMgaGlkaW5nLlxuICAgICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgY291bnRkb3duIHRvIGhpZGluZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0b29sdGlwSGlkaW5nKGFyZ3M6IElUb29sdGlwSGlkZUV2ZW50QXJncykge1xuICAgICAqICAgIGFsZXJ0KFwiVG9vbHRpcCBzdGFydGVkIGhpZGluZyFcIik7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgKHRvb2x0aXBIaWRlKT0ndG9vbHRpcEhpZGluZygkZXZlbnQpJz5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdG9vbHRpcEhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPElUb29sdGlwSGlkZUV2ZW50QXJncz4oKTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfbmF2aWdhdGlvblNlcnZpY2U6IElneE5hdmlnYXRpb25TZXJ2aWNlLCBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIHN1cGVyKF9lbGVtZW50LCBfbmF2aWdhdGlvblNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgcHVibGljIG92ZXJyaWRlIG9uQ2xpY2soKSB7XG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5mb3JjZUNsb3NlKHRoaXMubWVyZ2VkT3ZlcmxheVNldHRpbmdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgICBwdWJsaWMgb25Nb3VzZUVudGVyKCkge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hlY2tPdXRsZXRBbmRPdXRzaWRlQ2xpY2soKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkUmV0dXJuID0gdGhpcy5wcmVNb3VzZUVudGVyQ2hlY2soKTtcbiAgICAgICAgaWYgKHNob3VsZFJldHVybikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2hvd2luZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy50b29sdGlwU2hvdy5lbWl0KHNob3dpbmdBcmdzKTtcblxuICAgICAgICBpZiAoc2hvd2luZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9wZW4odGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpOyAvLyBDYWxsIG9wZW4oKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5zaG93RGVsYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgICBwdWJsaWMgb25Nb3VzZUxlYXZlKCkge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hlY2tPdXRsZXRBbmRPdXRzaWRlQ2xpY2soKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkUmV0dXJuID0gdGhpcy5wcmVNb3VzZUxlYXZlQ2hlY2soKTtcbiAgICAgICAgaWYgKHNob3VsZFJldHVybiB8fCB0aGlzLnRhcmdldC5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNsb3NlKCk7IC8vIENhbGwgY2xvc2UoKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH0sIHRoaXMuaGlkZURlbGF5KTtcblxuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnKVxuICAgIHB1YmxpYyBvblRvdWNoU3RhcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaG93VG9vbHRpcCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDp0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25Eb2N1bWVudFRvdWNoU3RhcnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uYXRpdmVFbGVtZW50ICE9PSBldmVudC50YXJnZXQgJiZcbiAgICAgICAgICAgICF0aGlzLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgICAgIGhvcml6b250YWxEaXJlY3Rpb246IEhvcml6b250YWxBbGlnbm1lbnQuQ2VudGVyLFxuICAgICAgICAgICAgaG9yaXpvbnRhbFN0YXJ0UG9pbnQ6IEhvcml6b250YWxBbGlnbm1lbnQuQ2VudGVyLFxuICAgICAgICAgICAgb3BlbkFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKHNjYWxlSW5DZW50ZXIsIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnMTUwbXMnIH0gfSksXG4gICAgICAgICAgICBjbG9zZUFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKGZhZGVPdXQsIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnNzVtcycgfSB9KVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0cy5wb3NpdGlvblN0cmF0ZWd5ID0gbmV3IEF1dG9Qb3NpdGlvblN0cmF0ZWd5KHBvc2l0aW9uU2V0dGluZ3MpO1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMuY2xvc2VPbk91dHNpZGVDbGljayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMuY2xvc2VPbkVzY2FwZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy50YXJnZXQuY2xvc2luZy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaGlkaW5nQXJncyA9IHsgdGFyZ2V0OiB0aGlzLCB0b29sdGlwOiB0aGlzLnRhcmdldCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICAgICAgdGhpcy50b29sdGlwSGlkZS5lbWl0KGhpZGluZ0FyZ3MpO1xuXG4gICAgICAgICAgICBpZiAoaGlkaW5nQXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICBldmVudC5jYW5jZWwgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3dzIHRoZSB0b29sdGlwIGJ5IHJlc3BlY3RpbmcgdGhlICdzaG93RGVsYXknIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMudG9vbHRpcFRhcmdldC5zaG93VG9vbHRpcCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93VG9vbHRpcCgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGFyZ2V0LnRpbWVvdXRJZCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRhcmdldC5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIC8vICBpZiBjbG9zZSBhbmltYXRpb24gaGFzIHN0YXJ0ZWQgZmluaXNoIGl0LCBvciBjbG9zZSB0aGUgdG9vbHRpcCB3aXRoIG5vIGFuaW1hdGlvblxuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9yY2VDbG9zZSh0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzaG93aW5nQXJncyA9IHsgdGFyZ2V0OiB0aGlzLCB0b29sdGlwOiB0aGlzLnRhcmdldCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLnRvb2x0aXBTaG93LmVtaXQoc2hvd2luZ0FyZ3MpO1xuXG4gICAgICAgIGlmIChzaG93aW5nQXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IHRydWU7XG4gICAgICAgIHRoaXMudGFyZ2V0LnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQub3Blbih0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7IC8vIENhbGwgb3BlbigpIG9mIElneFRvb2x0aXBEaXJlY3RpdmVcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLnNob3dEZWxheSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZXMgdGhlIHRvb2x0aXAgYnkgcmVzcGVjdGluZyB0aGUgJ2hpZGVEZWxheScgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy50b29sdGlwVGFyZ2V0LmhpZGVUb29sdGlwKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGhpZGVUb29sdGlwKCkge1xuICAgICAgICBpZiAodGhpcy50YXJnZXQuY29sbGFwc2VkICYmIHRoaXMudGFyZ2V0LnRvQmVTaG93bikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGFyZ2V0LnRpbWVvdXRJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YXJnZXQuY29sbGFwc2VkIHx8IHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNsb3NlKCk7IC8vIENhbGwgY2xvc2UoKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH0sIHRoaXMuaGlkZURlbGF5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5vdXRsZXQpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0cy5vdXRsZXQgPSB0aGlzLm91dGxldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG1lcmdlZE92ZXJsYXlTZXR0aW5ncygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX292ZXJsYXlEZWZhdWx0cywgdGhpcy5vdmVybGF5U2V0dGluZ3MpO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBleGVjdXRpb24gaW4gb25Nb3VzZUVudGVyIHNob3VsZCBiZSB0ZXJtaW5hdGVkIGFmdGVyIHRoaXMgbWV0aG9kXG4gICAgcHJpdmF0ZSBwcmVNb3VzZUVudGVyQ2hlY2soKSB7XG4gICAgICAgIC8vIElmIHRvb2x0aXAgaXMgYWJvdXQgdG8gYmUgb3BlbmVkXG4gICAgICAgIGlmICh0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBUb29sdGlwIGlzIG9wZW5lZCBvciBhYm91dCB0byBiZSBoaWRkZW5cbiAgICAgICAgaWYgKCF0aGlzLnRhcmdldC5jb2xsYXBzZWQgfHwgdGhpcy50YXJnZXQudG9CZUhpZGRlbikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGFyZ2V0LnRpbWVvdXRJZCk7XG5cbiAgICAgICAgICAgIC8vICBpZiBjbG9zZSBhbmltYXRpb24gaGFzIHN0YXJ0ZWQgZmluaXNoIGl0LCBvciBjbG9zZSB0aGUgdG9vbHRpcCB3aXRoIG5vIGFuaW1hdGlvblxuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9yY2VDbG9zZSh0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGV4ZWN1dGlvbiBpbiBvbk1vdXNlTGVhdmUgc2hvdWxkIGJlIHRlcm1pbmF0ZWQgYWZ0ZXIgdGhpcyBtZXRob2RcbiAgICBwcml2YXRlIHByZU1vdXNlTGVhdmVDaGVjaygpOiBib29sZWFuIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGFyZ2V0LnRpbWVvdXRJZCk7XG5cbiAgICAgICAgLy8gSWYgdG9vbHRpcCBpcyBhYm91dCB0byBiZSBvcGVuZWRcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LnRvQmVTaG93bikge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
|