barsa-novin-ray-core 1.0.267 → 1.0.270
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/esm2020/lib/barsa-novin-ray-core.module.mjs +15 -9
- package/esm2020/lib/constants.mjs +4 -1
- package/esm2020/lib/directives/attr-rtl.directive.mjs +2 -2
- package/esm2020/lib/directives/base.directive.mjs +8 -4
- package/esm2020/lib/directives/column-resizer.directive.mjs +5 -5
- package/esm2020/lib/directives/copy.directive.mjs +58 -0
- package/esm2020/lib/directives/ellipsify.directive.mjs +6 -6
- package/esm2020/lib/directives/img-lazy.directive.mjs +5 -5
- package/esm2020/lib/directives/index.mjs +2 -1
- package/esm2020/lib/directives/items-renderer.directive.mjs +5 -5
- package/esm2020/lib/directives/render-ulv-paging.directive.mjs +6 -5
- package/esm2020/lib/directives/render-ulv-viewer.directive.mjs +6 -5
- package/esm2020/lib/directives/table-resizer.directive.mjs +9 -9
- package/esm2020/lib/directives/ulv-command.directive.mjs +4 -4
- package/esm2020/lib/directives/until-inview.directive.mjs +6 -5
- package/esm2020/lib/injdection-tokens.mjs +2 -1
- package/esm2020/lib/pipes/index.mjs +2 -1
- package/esm2020/lib/pipes/reverse.pipe.mjs +22 -0
- package/esm2020/lib/services/toast.service.mjs +2 -0
- package/esm2020/lib/services/ulvmain.service.mjs +2 -2
- package/fesm2015/barsa-novin-ray-core.mjs +145 -52
- package/fesm2015/barsa-novin-ray-core.mjs.map +1 -1
- package/fesm2020/barsa-novin-ray-core.mjs +143 -52
- package/fesm2020/barsa-novin-ray-core.mjs.map +1 -1
- package/lib/barsa-novin-ray-core.module.d.ts +23 -21
- package/lib/constants.d.ts +1 -0
- package/lib/directives/attr-rtl.directive.d.ts +1 -1
- package/lib/directives/base.directive.d.ts +6 -1
- package/lib/directives/column-resizer.directive.d.ts +2 -2
- package/lib/directives/copy.directive.d.ts +19 -0
- package/lib/directives/ellipsify.directive.d.ts +2 -2
- package/lib/directives/img-lazy.directive.d.ts +2 -2
- package/lib/directives/index.d.ts +1 -0
- package/lib/directives/items-renderer.directive.d.ts +2 -2
- package/lib/directives/render-ulv-paging.directive.d.ts +3 -2
- package/lib/directives/render-ulv-viewer.directive.d.ts +3 -2
- package/lib/directives/table-resizer.directive.d.ts +2 -2
- package/lib/directives/ulv-command.directive.d.ts +0 -1
- package/lib/directives/until-inview.directive.d.ts +2 -1
- package/lib/injdection-tokens.d.ts +2 -0
- package/lib/pipes/index.d.ts +1 -0
- package/lib/pipes/reverse.pipe.d.ts +7 -0
- package/lib/services/toast.service.d.ts +3 -0
- package/package.json +1 -1
|
@@ -5,11 +5,12 @@ import { BaseDirective } from './base.directive';
|
|
|
5
5
|
import { fromIntersectionObserver } from '../from-intersection-observer';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class UntilInViewDirective extends BaseDirective {
|
|
8
|
-
constructor(_templateRef, _vcr, _cdr) {
|
|
9
|
-
super();
|
|
8
|
+
constructor(_templateRef, _vcr, _cdr, _el) {
|
|
9
|
+
super(_el);
|
|
10
10
|
this._templateRef = _templateRef;
|
|
11
11
|
this._vcr = _vcr;
|
|
12
12
|
this._cdr = _cdr;
|
|
13
|
+
this._el = _el;
|
|
13
14
|
this.intersectionDebounce = 100;
|
|
14
15
|
this.viewed$ = new Subject();
|
|
15
16
|
}
|
|
@@ -36,16 +37,16 @@ export class UntilInViewDirective extends BaseDirective {
|
|
|
36
37
|
this._onDestroy$.next();
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
|
-
UntilInViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UntilInViewDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
40
|
+
UntilInViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UntilInViewDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
40
41
|
UntilInViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.7", type: UntilInViewDirective, selector: "[untilInView]", inputs: { untilInView: "untilInView", intersectionDebounce: "intersectionDebounce" }, usesInheritance: true, ngImport: i0 });
|
|
41
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UntilInViewDirective, decorators: [{
|
|
42
43
|
type: Directive,
|
|
43
44
|
args: [{
|
|
44
45
|
selector: '[untilInView]'
|
|
45
46
|
}]
|
|
46
|
-
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { untilInView: [{
|
|
47
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { untilInView: [{
|
|
47
48
|
type: Input
|
|
48
49
|
}], intersectionDebounce: [{
|
|
49
50
|
type: Input
|
|
50
51
|
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwtaW52aWV3LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLW5vdmluLXJheS1jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy91bnRpbC1pbnZpZXcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsS0FBSyxFQUtSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFLekUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUFJbkQsWUFDWSxZQUE4QixFQUM5QixJQUFzQixFQUN0QixJQUF1QixFQUNyQixHQUFlO1FBRXpCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUxILGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBTnBCLHlCQUFvQixHQUFHLEdBQUcsQ0FBQztRQUM1QixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVF0QyxDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRztZQUNYLElBQUksRUFBRSxJQUFJO1lBQ1YsVUFBVSxFQUFFLEtBQUs7WUFDakIsU0FBUyxFQUFFLENBQUM7U0FDZixDQUFDO1FBQ0Ysd0JBQXdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUM7YUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUMxRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7O2lIQXBDUSxvQkFBb0I7cUdBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQUhoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO2lCQUM1QjswTEFFWSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBmcm9tSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfSBmcm9tICcuLi9mcm9tLWludGVyc2VjdGlvbi1vYnNlcnZlcic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3VudGlsSW5WaWV3XSdcbn0pXG5leHBvcnQgY2xhc3MgVW50aWxJblZpZXdEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHVudGlsSW5WaWV3OiBFbGVtZW50UmVmO1xuICAgIEBJbnB1dCgpIGludGVyc2VjdGlvbkRlYm91bmNlID0gMTAwO1xuICAgIHByaXZhdGUgdmlld2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3RlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgICAgICBwcml2YXRlIF92Y3I6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2VsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmlld2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdlZCQubmV4dCgpO1xuICAgICAgICB0aGlzLl92Y3IuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlUmVmKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudW50aWxJblZpZXcubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgICAgICAgcm9vdDogbnVsbCxcbiAgICAgICAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxuICAgICAgICAgICAgdGhyZXNob2xkOiAwXG4gICAgICAgIH07XG4gICAgICAgIGZyb21JbnRlcnNlY3Rpb25PYnNlcnZlcihlbGVtZW50LCBjb25maWcsIHRoaXMuaW50ZXJzZWN0aW9uRGVib3VuY2UpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy52aWV3ZWQkKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3ZWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -3,5 +3,6 @@ export const APP_VERSION = new InjectionToken('AppVersion');
|
|
|
3
3
|
export const DIALOG_SERVICE = new InjectionToken('DIALOG_SERVICE');
|
|
4
4
|
export const FORM_DIALOG_COMPONENT = new InjectionToken('FORM_DIALOG_COMPONENT');
|
|
5
5
|
export const NOTIFICATAION_POPUP_SERVER = new InjectionToken('NOTIFICATAION_POPUP_SERVER');
|
|
6
|
+
export const TOAST_SERVICE = new InjectionToken('TOAST_SERVICE');
|
|
6
7
|
export const NOTIFICATION_WEBWORKER_FACTORY = new InjectionToken('notificaion-worker');
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZGVjdGlvbi10b2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL2luamRlY3Rpb24tdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFTLFlBQVksQ0FBQyxDQUFDO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBUyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFTLHVCQUF1QixDQUFDLENBQUM7QUFDekYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQTJCLDRCQUE0QixDQUFDLENBQUM7QUFDckgsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFlLGVBQWUsQ0FBQyxDQUFDO0FBRS9FLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUFlLG9CQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24tcG9wdXAuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgQVBQX1ZFUlNJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignQXBwVmVyc2lvbicpO1xuZXhwb3J0IGNvbnN0IERJQUxPR19TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0RJQUxPR19TRVJWSUNFJyk7XG5leHBvcnQgY29uc3QgRk9STV9ESUFMT0dfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0ZPUk1fRElBTE9HX0NPTVBPTkVOVCcpO1xuZXhwb3J0IGNvbnN0IE5PVElGSUNBVEFJT05fUE9QVVBfU0VSVkVSID0gbmV3IEluamVjdGlvblRva2VuPE5vdGlmaWNhdGlvblBvcHVwU2VydmljZT4oJ05PVElGSUNBVEFJT05fUE9QVVBfU0VSVkVSJyk7XG5leHBvcnQgY29uc3QgVE9BU1RfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUb2FzdFNlcnZpY2U+KCdUT0FTVF9TRVJWSUNFJyk7XG5cbmV4cG9ydCBjb25zdCBOT1RJRklDQVRJT05fV0VCV09SS0VSX0ZBQ1RPUlkgPSBuZXcgSW5qZWN0aW9uVG9rZW48KCkgPT4gV29ya2VyPignbm90aWZpY2Fpb24td29ya2VyJyk7XG4iXX0=
|
|
@@ -30,4 +30,5 @@ export * from './merge-fields-to-columns.pipe';
|
|
|
30
30
|
export * from './find-column-by-db-name.pipe';
|
|
31
31
|
export * from './filter-columns-by-details.pipe';
|
|
32
32
|
export * from './mo-info-ulv-data.pipe';
|
|
33
|
-
|
|
33
|
+
export * from './reverse.pipe';
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3BpcGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vLXJlcG9ydC12YWx1ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9udW1lcmFsLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dyb3VwYnkucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC1tZW51LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2hlYWRlci1mYWNldC12YWx1ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXBlcmF0b3ItZml4LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnQtdG8tc3R5bGUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGxiQnV0dG9ucy5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9yZW1vdmUtbmV3bGluZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tby12YWx1ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXIucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLXRhYi5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tby1yZXBvcnQtdmFsdWUtY29uY2F0LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1zdHJpbmcucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc29ydC5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9iYmItdHJhbnNsYXRlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2JhcnNhLWljb24tZGljdC5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWxlaW5mby1jb3VudC5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb250cm9sLXVpLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Zpc2libGUtdmFsdWUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS10aW1lLXRvLWNhcHRpb24ucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLXRvb2xiYXItY29udHJvbC5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tdWx0aXBsZS1ncm91cGJ5LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpY3R1cmUtZmllbGQtc291cmNlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Zpb3JpLWljb24ucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2FuLXVwbG9hZC5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saXN0LWNvdW50LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RvdGFsLXN1bW1hcnkucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWVyZ2UtZmllbGRzLXRvLWNvbHVtbnMucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmluZC1jb2x1bW4tYnktZGItbmFtZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXItY29sdW1ucy1ieS1kZXRhaWxzLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vLWluZm8tdWx2LWRhdGEucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmV2ZXJzZS5waXBlJztcclxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ReversePipe {
|
|
4
|
+
transform(value, doReverse = true) {
|
|
5
|
+
if (!doReverse) {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
if (!value) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
return value.reverse();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
ReversePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReversePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
15
|
+
ReversePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: ReversePipe, name: "reverse" });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ReversePipe, decorators: [{
|
|
17
|
+
type: Pipe,
|
|
18
|
+
args: [{
|
|
19
|
+
name: 'reverse'
|
|
20
|
+
}]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZXJzZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9waXBlcy9yZXZlcnNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSXBELE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBcUIsSUFBSTtRQUN0QyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7O3dHQVRRLFdBQVc7c0dBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUh2QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxTQUFTO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGVUcmFuc2Zvcm0sIFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbkBQaXBlKHtcbiAgICBuYW1lOiAncmV2ZXJzZSdcbn0pXG5leHBvcnQgY2xhc3MgUmV2ZXJzZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWUsIGRvUmV2ZXJzZTogYm9vbGVhbiA9IHRydWUpOiBhbnlbXSB7XG4gICAgICAgIGlmICghZG9SZXZlcnNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXZlcnNlKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLW5vdmluLXJheS1jb3JlL3NyYy9saWIvc2VydmljZXMvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUb2FzdFNlcnZpY2Uge1xuICAgIG9wZW4obXNnLCBvcHRpb24/OiBhbnkpO1xufVxuIl19
|
|
@@ -64,7 +64,7 @@ export class UlvMainService {
|
|
|
64
64
|
this.visible$ = this._visibleSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
65
65
|
this.enable$ = this._enableSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
66
66
|
this.readonly$ = this._readonlySource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
67
|
-
this.menuItems$ = this._menuItemsSource.asObservable().pipe(takeUntil(this._onDestroy$), map((items) => items.filter((c) => c.itemId !== 'ExportToExcel')));
|
|
67
|
+
this.menuItems$ = this._menuItemsSource.asObservable().pipe(takeUntil(this._onDestroy$), map((items) => items.filter((c) => c.itemId !== 'ExportToExcel' && c.itemId !== 'Delete')));
|
|
68
68
|
this.title$ = this._titleSource.asObservable().pipe(takeUntil(this._onDestroy$));
|
|
69
69
|
this.formPanelControlShowWindow$ = this._formPanelControlShowWindowSource
|
|
70
70
|
.asObservable()
|
|
@@ -638,4 +638,4 @@ UlvMainService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versi
|
|
|
638
638
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UlvMainService, decorators: [{
|
|
639
639
|
type: Injectable
|
|
640
640
|
}], ctorParameters: function () { return [{ type: i1.BbbTranslatePipe }, { type: i2.ApiService }]; } });
|
|
641
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWx2bWFpbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy91bHZtYWluLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RixPQUFPLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRyxPQUFPLEVBQ0gsUUFBUSxFQUVSLG1CQUFtQixFQU10QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFJN0csTUFBTSxPQUFPLGNBQWM7SUE2RXZCLFlBQW9CLFFBQTBCLEVBQVUsV0FBdUI7UUFBM0QsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQTVFL0UscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBK0JsRSx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBd0MsRUFBRSxDQUFDLENBQUM7UUFDckYsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQWdELEVBQUUsQ0FBQyxDQUFDO1FBRXBGLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDdkMsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqRCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RELGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkQsOEJBQXlCLEdBQUcsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0Qsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUMvQyx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUN0RCx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsRCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ3BELGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDbkQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN0RCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBYSxFQUFFLENBQUMsQ0FBQztRQUN2RCwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM1RCwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM1RCwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM3RCxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFrQztZQUN4RSxJQUFJLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO1FBQ0ssc0NBQWlDLEdBQUcsSUFBSSxPQUFPLEVBR25ELENBQUM7UUFDRyx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUV0RCx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBdUIsSUFBSSxDQUFDLENBQUM7UUFDdkUsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkQsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3JDLDZCQUF3QixHQUFHLElBQUksQ0FBQztRQUNoQyw0QkFBdUIsR0FBOEIsRUFBRSxDQUFDO1FBQ3hELHlDQUFvQyxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLHNDQUFpQyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3ZFLGtDQUE2QixHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUMvRSx5Q0FBb0MsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzNELGlDQUE0QixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbkQsZ0NBQTJCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEUsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQTZCLElBQUksQ0FBQyxDQUFDO1FBQy9FLDRCQUF1QixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWM7YUFDOUIsWUFBWSxFQUFFO2FBQ2QsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQzNCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUMzQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNwRDthQUNBLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNyRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUN2RCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUMzQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FDcEUsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsaUNBQWlDO2FBQ3BFLFlBQVksRUFBRTthQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUMvRCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUMzQixHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUN6RSxDQUFDO1FBQ0YsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMvRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2pHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDakUsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDM0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDTixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDMUcsRUFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQ2xHLENBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFckYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQy9FLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUMxRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLGFBQWEsQ0FBQztZQUN6QyxJQUFJLENBQUMsNkJBQTZCLENBQUMsWUFBWSxFQUFFO1lBQ2pELElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxZQUFZLEVBQUU7U0FDeEQsQ0FBQyxDQUFDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksZUFBZSxJQUFJLFdBQVcsRUFBRTtnQkFDaEMsZUFBZSxDQUFDLFNBQVMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEUsV0FBVyxHQUFHLENBQUMsZUFBZSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUM7YUFDbkQ7WUFDRCxPQUFPLFdBQVcsQ0FBQztRQUN2QixDQUFDLENBQUMsRUFDRixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ1IsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBQ0YsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FBQyxvQ0FBb0M7YUFDMUUsWUFBWSxFQUFFO2FBQ2QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsYUFBYSxDQUFDO1lBQzlDLElBQUksQ0FBQyw4QkFBOEI7WUFDbkMsSUFBSSxDQUFDLHVCQUF1QjtTQUMvQixDQUFDLENBQUMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQzNELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQztJQUNOLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUNELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUNELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBQ0QsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsR0FBYTtRQUMvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25ILENBQUM7SUFDRCxVQUFVLENBQUMsT0FBTztRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxXQUFXLENBQUMsR0FBWTtRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsR0FBWTtRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLEdBQVk7UUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQWtCO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDakQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN6RCxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUF3QixDQUFDO1FBQ2hGLEtBQUssQ0FBQyxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUMvQixLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM3QixLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDMUYsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1NBQ3REO1FBQ0QsNENBQTRDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxhQUFhLENBQUMsVUFBVTtRQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsZUFBZSxDQUFDLFNBQVM7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUFTO1FBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQWtDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRTtZQUMxQyxPQUFPO1NBQ1Y7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ3JDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN4QixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQztZQUN2QyxJQUFJLE1BQU0sRUFBRTtnQkFDUixVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzFCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFDRCx5QkFBeUI7SUFDekIsV0FBVztRQUNQLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDdkYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsTUFBTTtRQUNGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDdkYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQjtRQUNkLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFDRCxhQUFhLENBQUMsS0FBYztRQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCw4QkFBOEI7UUFDMUIsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxxQkFBcUI7UUFDakIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFlO1FBQ2hDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELHVCQUF1QjtRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQzFCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxTQUFTO2FBQ1QsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQzNCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQzdEO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELHNCQUFzQixDQUFDLG1CQUF3QztRQUMzRCxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3RSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELHNCQUFzQixDQUFDLDJCQUFnRDtRQUNuRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDOUIsT0FBTztTQUNWO1FBQ0QsMkJBQTJCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsMkJBQTJCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQ25CLHlCQUF5QixFQUN6QixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQzlCLEVBQUUsRUFBRSwyQkFBMkIsQ0FBQyxFQUFFO1lBQ2xDLFFBQVEsRUFBRSwyQkFBMkIsQ0FBQyxLQUFLO1lBQzNDLFFBQVEsRUFBRSwyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNoRCxLQUFLLEVBQUUsMkJBQTJCLENBQUMsS0FBSztZQUN4QyxTQUFTLEVBQUUsMkJBQTJCLENBQUMsU0FBUztZQUNoRCxRQUFRLEVBQUUsMkJBQTJCLENBQUMsUUFBUTtZQUM5QyxrQkFBa0IsRUFBRSwyQkFBMkIsQ0FBQyxrQkFBa0I7WUFDbEUsZUFBZSxFQUFFLDJCQUEyQixDQUFDLGVBQWU7WUFDNUQsUUFBUSxFQUFFLDJCQUEyQixDQUFDLFFBQVE7WUFDOUMsYUFBYSxFQUFFLDJCQUEyQixDQUFDLGFBQWE7U0FDM0QsQ0FBQyxFQUNGLElBQUksQ0FDUCxDQUFDO1FBQ0YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxtQkFBb0Q7UUFDekUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDdEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLElBQUksbUJBQW1CLENBQUMsU0FBUyxFQUFFO1lBQ2hFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7WUFDdEMsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztRQUV0QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLEVBQUU7WUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUNoQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1QixhQUFhLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzlDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLG1CQUFtQixDQUFDLFNBQVMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsT0FBTzthQUNWO1lBQ0QsSUFBSSxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2pCO1NBQ0o7UUFDRCx5QkFBeUI7UUFDekIsSUFBSSxtQkFBbUIsQ0FBQyxhQUFhLEVBQUU7WUFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsMENBQTBDLENBQzNDLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUNqRSxDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELGdCQUFnQjtRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELDJCQUEyQjtRQUN2QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFtQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUN4RixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxPQUFPLENBQ2xFLENBQUM7UUFDRixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVztZQUNuQixPQUFPLEVBQUUsQ0FBQyxDQUFDLDZCQUE2QjtZQUN4QyxNQUFNLEVBQUUsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSztZQUM1RixXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVc7U0FDN0IsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBQ0QsMENBQTBDLENBQUMsYUFBK0I7UUFDdEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakQsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsYUFBYSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQy9GO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QseUJBQXlCLENBQUMsc0JBQTZDO1FBQ25FLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQseUJBQXlCLENBQUMscUJBQTZCO1FBQ25ELE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdFLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQseUJBQXlCLENBQUMsNkJBQXFDO1FBQzNELElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsOEJBQThCLENBQUMsU0FBaUIsRUFBRSxZQUFzQjtRQUNwRSxNQUFNLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLENBQ3hDLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3ZCLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzNCO1lBQ0QsT0FBTyxjQUFjLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsWUFBdUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FDbEcsQ0FBQztJQUNOLENBQUM7SUFDUyxzQkFBc0IsQ0FBQyxPQUFPO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUNqRCxJQUFJLFdBQVcsRUFBRTtZQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFUyxZQUFZLENBQUMsT0FBTztRQUMxQixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3RHLE9BQU8sWUFBWSxLQUFLLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDM0UsQ0FBQztJQUNTLGlCQUFpQixDQUFDLE9BQVk7UUFDcEMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNQLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDekMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDckQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDM0QsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMvQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDakQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDbkQsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMzQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsa0NBQWtDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM5RSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2RCxvQkFBb0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMzRCxxQkFBcUIsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM3RCxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDeEMsY0FBYyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ25ELENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxXQUFXLENBQUMsT0FBWTtRQUM5QixJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNTLDBCQUEwQixDQUFDLE9BQU87UUFDeEMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBQzVELElBQUksaUJBQWlCLEVBQUU7WUFDbkIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzNDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDZixJQUFJLE9BQU8saUJBQWlCLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxFQUFFO29CQUMzQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN0RTtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDUyxnQkFBZ0IsQ0FBQyxPQUFPO1FBQzlCLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUN4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDekQ7SUFDTCxDQUFDO0lBRVMsdUJBQXVCLENBQUMsT0FBTztRQUNyQyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUNyRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUM3RTtJQUNMLENBQUM7SUFFUyxjQUFjLENBQUMsT0FBTztRQUM1QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQzlCLHNDQUFzQztZQUN0QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FDckMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQzVGLENBQUM7WUFDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRVMsV0FBVyxDQUFDLE9BQU87UUFDekIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsZUFBZSxDQUFDLE9BQU87UUFDN0IsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNTLGlCQUFpQixDQUFDLE9BQU87UUFDL0IsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2xFO0lBQ0wsQ0FBQztJQUVTLGtCQUFrQixDQUFDLE9BQU87UUFDaEMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVTLFVBQVUsQ0FBQyxPQUFPO1FBQ3hCLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JFLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNoQixLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUN6RjtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFUyxhQUFhLENBQUMsT0FBTztRQUMzQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFUyxXQUFXLENBQUMsT0FBTztRQUN6QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVMsWUFBWSxDQUFDLE9BQU87UUFDMUIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxPQUFPO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxPQUFPO1FBQ2pDLE1BQU0sY0FBYyxHQUFZLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQztRQUN0RSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFUyxvQkFBb0IsQ0FBQyxPQUFPO1FBQ2xDLE1BQU0sZUFBZSxHQUFZLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQztRQUN4RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxJQUFJLENBQUM7UUFDckUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksU0FBUyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVTLG1CQUFtQixDQUFDLE9BQU87UUFDakMsTUFBTSxjQUFjLEdBQVksT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVTLGtCQUFrQixDQUFDLE9BQU87UUFDaEMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUM1QyxJQUFJLGFBQWEsRUFBRTtZQUNmLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM3QztJQUNMLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxPQUFPO1FBQzlCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDUywwQkFBMEIsQ0FBQyxrQkFBdUI7UUFDeEQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDUyxrQkFBa0IsQ0FBQyxVQUFVO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2pEO0lBQ0wsQ0FBQztJQUVTLHFCQUFxQixDQUFDLGFBQWE7UUFDekMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFUyxZQUFZLENBQUMsSUFBYTtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVMsa0JBQWtCLENBQUMsVUFBbUI7UUFDNUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsUUFBaUI7UUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVTLGVBQWUsQ0FBQyxVQUFtQjtRQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRVMsaUJBQWlCLENBQUMsU0FBZ0I7UUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVMsYUFBYSxDQUFDLFFBQXlDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFUyxrQ0FBa0MsQ0FBQyxZQUF5RDtRQUNsRyxJQUFJLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxXQUFnQjtRQUMxQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFUyxxQkFBcUIsQ0FBQyxjQUFtQjtRQUMvQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFUyxzQkFBc0IsQ0FBQyxPQUFjO1FBQzNDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVTLGNBQWMsQ0FBQyxNQUFlO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFUyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUNTLGdCQUFnQjtRQUN0QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFUyw4QkFBOEIsQ0FBQyxXQUFnQjtRQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDOUUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsTUFBTSxnQkFBZ0IsR0FBRztZQUNyQixFQUFFLEVBQUUsRUFBRTtZQUNOLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFLElBQUk7WUFDZCxTQUFTLEVBQUUsSUFBSTtZQUNmLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsZUFBZSxFQUFFLEtBQUs7WUFDdEIsS0FBSyxFQUFFLFlBQVk7WUFDbkIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLEVBQUU7U0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxRQUFRO1FBQ3ZDLFFBQVEsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7WUFDekIsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQ3RCLE1BQU0sRUFBRSxnQ0FBZ0M7WUFDeEMsU0FBUyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUU7b0JBQ3ZDLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ3JFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFDaEUsTUFBTSxhQUFhLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3RFLElBQUksYUFBYSxFQUFFO3dCQUNmLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNwRTtpQkFDSjtZQUNMLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztTQUNuQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ1Msd0JBQXdCLENBQUMsYUFBYTtRQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksS0FBSyxFQUFFO2dCQUNQLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JCLGFBQWEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUN2QztZQUNELGFBQWEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRTtnQkFDN0MsYUFBYSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO2FBQy9GO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ1MscUJBQXFCLENBQUMsVUFBdUI7UUFDbkQsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3BCLE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN6QyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDeEI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDdkIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDekUsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDSixPQUFPO2FBQ1Y7WUFDRCxNQUFNLFNBQVMsR0FBbUMsRUFBRSxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzNCLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztZQUNILGlCQUFpQixHQUFHLEVBQUUsR0FBRyxpQkFBaUIsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzJHQS91QlEsY0FBYzsrR0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQmFyc2FBcGksXG4gICAgTWVudUl0ZW0sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBQYWdpbmdTZXR0aW5nLFxuICAgIFNlYXJjaFBhbmVsU2V0dGluZ3MsXG4gICAgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwsXG4gICAgQ29sdW1uSW5mb1R5cGUsXG4gICAgRm9ybVNldHRpbmdcbn0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcyc7XG5pbXBvcnQgeyBnZW5yYXRlSW5saW5lTW9JZCwgZ2V0Q29udHJvbExpc3QsIEdldERlZmF1bHRNb09iamVjdEluZm8sIGdldE5ld01vR3JpZEVkaXRvciB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCYmJUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4vYXBpLnNlcnZpY2UnO1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVsdk1haW5TZXJ2aWNlIHtcbiAgICBtb0RhdGFMaXN0U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KFtdKTtcbiAgICBjb250ZXh0JDogU3Vic2NyaXB0aW9uO1xuICAgIHZpZXdlciQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBjb25kaXRpb25hbEZvcm1hdHMkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgaGlkZVRvb2xiYXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG1hc2skOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHZpd2VyTWFzayQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgdmlzaWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgZW5hYmxlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICByZWFkb25seSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgbWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxNZW51SXRlbVtdPjtcbiAgICB0aXRsZSQ6IE9ic2VydmFibGU8eyB0ZXh0OiBzdHJpbmc7IGltYWdlOiBzdHJpbmcgfT47XG4gICAgZm9ybVBhbmVsQ29udHJvbFNob3dXaW5kb3ckOiBPYnNlcnZhYmxlPHsgZm9ybXBhbmVsQ29udHJvbDogYW55OyBoYXNQYXJlbnRNbzogYm9vbGVhbiB9PjtcbiAgICBzZWFyY2hQYW5lbFVpJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHBhZ2luZ1NldHRpbmckOiBPYnNlcnZhYmxlPFBhZ2luZ1NldHRpbmcgfCBudWxsPjtcbiAgICB0b29sYmFyQnV0dG9ucyQ6IE9ic2VydmFibGU8YW55W10+O1xuICAgIGRlc3Ryb3kkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAgIG1vRGF0YUxpc3QkOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWxbXT47XG4gICAgcmVwb3J0SWQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgYWxsb3dJbmxpbmVFZGl0JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBpbmxpbmVFZGl0TW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgb25seUlubGluZUVkaXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNvbnRleHQ6IGFueTtcbiAgICBvcGVuU2VhcmNoUGFuZWxIaWRkZW5TZXR0aW5ncyQ6IE9ic2VydmFibGU8dm9pZD47XG4gICAgb3BlblNlYXJjaEZpbGVzTWFuYWdlJDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgICBzZWFyY2hQYW5lbE1vQ2hhbmdlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyQ6IE9ic2VydmFibGU8U2VhcmNoUGFuZWxTZXR0aW5nc1tdPjtcbiAgICBsYXlvdXRJbmZvJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncyQ6IE9ic2VydmFibGU8U2VhcmNoUGFuZWxTZXR0aW5ncyB8IHVuZGVmaW5lZD47XG4gICAgbmV3SW5saW5lRWRpdE1vJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbD47XG4gICAgX2NhcnRhYmxlVGVtcGxhdGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBba2V5OiBzdHJpbmddOiBGb3JtU2V0dGluZyB9IHwgbnVsbD4oe30pO1xuICAgIF9jYXJ0YWJsZUNoaWxkc01vJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBba2V5OiBzdHJpbmddOiBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gfCBudWxsPih7fSk7XG5cbiAgICBwcml2YXRlIF9sYXlvdXRJbmZvU291cmNlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIHByaXZhdGUgX2NvbnRleHRTb3VyY2UgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBfaW5EaWFsb2ckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfaXNNdWx0aVNlbGVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9mdWxsc2NyZWVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2NvbmRpdGlvbmFsRm9ybWF0c1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwcml2YXRlIF9yZXBvcnRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gICAgcHJpdmF0ZSBfdmlld2VyQ29udHJvbFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgICBwcml2YXRlIF9oaWRlVG9vbGJhclNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgcHJpdmF0ZSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfbWFza1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX3ZpZXdlck1hc2tTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF92aXNpYmxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICBwcml2YXRlIF9lbmFibGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHByaXZhdGUgX3JlYWRvbmx5U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfbWVudUl0ZW1zU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSk7XG4gICAgcHJpdmF0ZSBfb25seUlubGluZUVkaXRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9pbmxpbmVFZGl0TW9kZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2FsbG93SW5saW5lRWRpdFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX3RpdGxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHRleHQ6IHN0cmluZzsgaW1hZ2U6IHN0cmluZyB9Pih7XG4gICAgICAgIHRleHQ6ICcnLFxuICAgICAgICBpbWFnZTogJydcbiAgICB9KTtcbiAgICBwcml2YXRlIF9mb3JtUGFuZWxDb250cm9sU2hvd1dpbmRvd1NvdXJjZSA9IG5ldyBTdWJqZWN0PHtcbiAgICAgICAgZm9ybXBhbmVsQ29udHJvbDogYW55O1xuICAgICAgICBoYXNQYXJlbnRNbzogYW55O1xuICAgIH0+KCk7XG4gICAgcHJpdmF0ZSBfc2VhcmNoUGFuZWxVaVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcblxuICAgIHByaXZhdGUgX3BhZ2luZ1NldHRpbmdTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luZ1NldHRpbmcgfCBudWxsPihudWxsKTtcbiAgICBwcml2YXRlIF90b29sYmFyQnV0dG9uc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwcml2YXRlIF9kZXN0cm95U291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9maXJzdEFwcGx5QXV0b21hdGljYWxseSA9IHRydWU7XG4gICAgcHJpdmF0ZSBfY29udHJvbEluZm9zTWV0YW9iamVjdDogR2VuZXJhbENvbnRyb2xJbmZvTW9kZWxbXSA9IFtdO1xuICAgIHByaXZhdGUgX3NlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIF9kZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZSA9IG5ldyBTdWJqZWN0PFNlYXJjaFBhbmVsU2V0dGluZ3M+KCk7XG4gICAgcHJpdmF0ZSBfYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoUGFuZWxTZXR0aW5nc1tdPihbXSk7XG4gICAgcHJpdmF0ZSBfb3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3NTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX29wZW5TZWFyY2hGaWxlc01hbmFnZVNvdXJjZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfc2VhcmNoUGFuZWxNb0NoYW5nZWRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9uZXdJbmxpbmVFZGl0TW9Tb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsPihudWxsKTtcbiAgICBwcml2YXRlIF9oaWRlU2VhcmNoYXBhbmVsU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYmJiUGlwZTogQmJiVHJhbnNsYXRlUGlwZSwgcHJpdmF0ZSBfYXBpU2VydmljZTogQXBpU2VydmljZSkge1xuICAgICAgICB0aGlzLmNvbnRleHQkID0gdGhpcy5fY29udGV4dFNvdXJjZVxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgdGFwKChjb250ZXh0KSA9PiAodGhpcy5jb250ZXh0ID0gY29udGV4dCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoY29udGV4dCkgPT4gdGhpcy5faW5pdGlhbGl6ZShjb250ZXh0KSksXG4gICAgICAgICAgICAgICAgdGFwKChjb250ZXh0KSA9PiB0aGlzLl9hZGRFdmVudExpc3RlbmVyKGNvbnRleHQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm5ld0lubGluZUVkaXRNbyQgPSB0aGlzLl9uZXdJbmxpbmVFZGl0TW9Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgICAgICB0aGlzLnZpZXdlciQgPSB0aGlzLl92aWV3ZXJDb250cm9sU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5jb25kaXRpb25hbEZvcm1hdHMkID0gdGhpcy5fY29uZGl0aW9uYWxGb3JtYXRzU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5oaWRlVG9vbGJhciQgPSB0aGlzLl9oaWRlVG9vbGJhclNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMubWFzayQgPSB0aGlzLl9tYXNrU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy52aXdlck1hc2skID0gdGhpcy5fdmlld2VyTWFza1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMudmlzaWJsZSQgPSB0aGlzLl92aXNpYmxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5lbmFibGUkID0gdGhpcy5fZW5hYmxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5yZWFkb25seSQgPSB0aGlzLl9yZWFkb25seVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zJCA9IHRoaXMuX21lbnVJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gaXRlbXMuZmlsdGVyKChjKSA9PiBjLml0ZW1JZCAhPT0gJ0V4cG9ydFRvRXhjZWwnKSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50aXRsZSQgPSB0aGlzLl90aXRsZVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMuZm9ybVBhbmVsQ29udHJvbFNob3dXaW5kb3ckID0gdGhpcy5fZm9ybVBhbmVsQ29udHJvbFNob3dXaW5kb3dTb3VyY2VcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5zZWFyY2hQYW5lbFVpJCA9IHRoaXMuX3NlYXJjaFBhbmVsVWlTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgIHRhcCgoc2VhcmNoUGFuZWwpID0+IHRoaXMuX2FkZERlZmF1bHRTZWFyY2hQYW5lbFNldHRpbmdzKHNlYXJjaFBhbmVsKSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vcGVuU2VhcmNoUGFuZWxIaWRkZW5TZXR0aW5ncyQgPSB0aGlzLl9vcGVuU2VhcmNoUGFuZWxIaWRkZW5TZXR0aW5nc1NvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5wYWdpbmdTZXR0aW5nJCA9IHRoaXMuX3BhZ2luZ1NldHRpbmdTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgICAgICB0aGlzLnRvb2xiYXJCdXR0b25zJCA9IHRoaXMuX3Rvb2xiYXJCdXR0b25zU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICBtYXAoKGMpID0+XG4gICAgICAgICAgICAgICAgIWMgPyBbXSA6IGMubWFwKChkKSA9PiAoeyAuLi5kLCBoaWRlVGV4dDogZC5Db21tYW5kPy5Jc0J1aWx0aW4gJiYgZC5pdGVtSWQgIT09ICdOZXcnID8gdHJ1ZSA6IGZhbHNlIH0pKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgoYykgPT5cbiAgICAgICAgICAgICAgICAhYyA/IFtdIDogWy4uLmMuZmlsdGVyKChkKSA9PiAhZC5Db21tYW5kPy5Jc0J1aWx0aW4pLCAuLi5jLmZpbHRlcigoZCkgPT4gZC5Db21tYW5kPy5Jc0J1aWx0aW4pXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkID0gdGhpcy5fZGVzdHJveVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRhcCgoKSA9PiB0aGlzLl91bnNjdWJzY3JpYmVDb250ZXh0KCkpKTtcbiAgICAgICAgdGhpcy5tb0RhdGFMaXN0JCA9IHRoaXMubW9EYXRhTGlzdFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKCk7XG4gICAgICAgIHRoaXMucmVwb3J0SWQkID0gdGhpcy5fcmVwb3J0U291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKChyZXBvcnQpID0+IHJlcG9ydD8uSWQpKTtcblxuICAgICAgICB0aGlzLmFsbG93SW5saW5lRWRpdCQgPSB0aGlzLl9hbGxvd0lubGluZUVkaXRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuaW5saW5lRWRpdE1vZGUkID0gdGhpcy5faW5saW5lRWRpdE1vZGVTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMub25seUlubGluZUVkaXQkID0gdGhpcy5fb25seUlubGluZUVkaXRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMub3BlblNlYXJjaEZpbGVzTWFuYWdlJCA9IHRoaXMuX29wZW5TZWFyY2hGaWxlc01hbmFnZVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hQYW5lbE1vQ2hhbmdlZCQgPSB0aGlzLl9zZWFyY2hQYW5lbE1vQ2hhbmdlZFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgICAgICB0aGlzLmxheW91dEluZm8kID0gdGhpcy5fbGF5b3V0SW5mb1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgICAgICAgdGhpcy5hbGxTZWFyY2hQYW5lbFNldHRpbmdzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5fYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5hc09ic2VydmFibGUoKSxcbiAgICAgICAgICAgIHRoaXMuX2RlZmF1bHRTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFthbGxTZXR0aW5ncywgZGVmYXVsdFNldHRpbmdzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0U2V0dGluZ3MgJiYgYWxsU2V0dGluZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFNldHRpbmdzLklzRGVmYXVsdCA9ICFhbGxTZXR0aW5ncy5zb21lKChjKSA9PiBjLklzRGVmYXVsdCk7XG4gICAgICAgICAgICAgICAgICAgIGFsbFNldHRpbmdzID0gW2RlZmF1bHRTZXR0aW5ncywgLi4uYWxsU2V0dGluZ3NdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWxsU2V0dGluZ3M7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGRlbGF5KDApLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZCQgPSB0aGlzLl9zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZFNvdXJjZVxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MkID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkJCxcbiAgICAgICAgICAgIHRoaXMuYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyRcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW2lkLCBzZXR0aW5nc10pID0+IHNldHRpbmdzPy5maW5kKChjKSA9PiBjLklkID09PSBpZCkpLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0IGluRGlhbG9nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luRGlhbG9nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGlzTXVsdGlTZWxlY3QkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNdWx0aVNlbGVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBmdWxsc2NyZWVuJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Z1bGxzY3JlZW4kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgY2FydGFibGVDaGlsZHNNbyQoKTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IE1ldGFvYmplY3REYXRhTW9kZWwgfSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcnRhYmxlQ2hpbGRzTW8kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgY2FydGFibGVUZW1wbGF0ZXMkKCk6IE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBGb3JtU2V0dGluZyB9IHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FydGFibGVUZW1wbGF0ZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgc2VhcmNoUGFuZWxVaSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoUGFuZWxVaVNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBnZXQgcmVwb3J0SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcG9ydFNvdXJjZS5nZXRWYWx1ZSgpPy5JZDtcbiAgICB9XG4gICAgZ2V0IGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MoKTogU2VhcmNoUGFuZWxTZXR0aW5nc1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICB9XG4gICAgZ2V0IGhpZGVTZWFyY2hwYW5lbCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlU2VhcmNoYXBhbmVsU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuICAgIGdldCBoaWRlU2VhcmNocGFuZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlU2VhcmNoYXBhbmVsU291cmNlLmdldFZhbHVlKCk7XG4gICAgfVxuICAgIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGl0bGVTb3VyY2UubmV4dCh7IHRleHQ6IHRpdGxlLCBpbWFnZTogJycgfSk7XG4gICAgfVxuICAgIHRvZ2dsZUhpZGVTZWFyY2hwYW5lbCh2YWw/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hpZGVTZWFyY2hhcGFuZWxTb3VyY2UubmV4dCh0eXBlb2YgdmFsICE9PSAndW5kZWZpbmVkJyA/IHZhbCA6ICF0aGlzLl9oaWRlU2VhcmNoYXBhbmVsU291cmNlLmdldFZhbHVlKCkpO1xuICAgIH1cbiAgICBzZXRDb250ZXh0KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udGV4dFNvdXJjZS5uZXh0KGNvbnRleHQpO1xuICAgIH1cbiAgICBzZXRJbkRpYWxvZyh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5EaWFsb2ckLm5leHQodmFsKTtcbiAgICB9XG4gICAgc2V0SXNNdWx0aVNlbGVjdCh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNNdWx0aVNlbGVjdCQubmV4dCh2YWwpO1xuICAgIH1cbiAgICBzZXRGdWxsc2NyZWVuKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9mdWxsc2NyZWVuJC5uZXh0KHZhbCk7XG4gICAgfVxuXG4gICAgY3JlYXRlTmV3SW5saW5lTW8oaXNDaGVja2VkOiBib29sZWFuKTogTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGZvcm1TZXR0aW5nID0gY29udGV4dC5TZXR0aW5nLkZvcm1UZW1wbGF0ZTtcbiAgICAgICAgY29uc3QgdHlwZURlZklkID0gY29udGV4dC5TZXR0aW5nLkV4dHJhLlJlcG9ydC5UeXBlRGVmSWQ7XG4gICAgICAgIGNvbnN0IG5ld01vID0gZ2V0TmV3TW9HcmlkRWRpdG9yKGZvcm1TZXR0aW5nLCB0eXBlRGVmSWQpIGFzIE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgICAgIG5ld01vLklkID0gZ2VucmF0ZUlubGluZU1vSWQoKTtcbiAgICAgICAgbmV3TW8uJElzQ2hlY2tlZCA9IGlzQ2hlY2tlZDtcbiAgICAgICAgbmV3TW8uJE5ld0lubGluZU1vID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ29tcG9zaXRlKGNvbnRleHQpKSB7XG4gICAgICAgICAgICBjb25zdCByZWxhdGlvbiA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuY29udGV4dC5TZXR0aW5nLCAnRXh0cmEuUmVsYXRpb24nKTtcbiAgICAgICAgICAgIG5ld01vW3JlbGF0aW9uLlBhcmVudEZkTmFtZV0gPSByZWxhdGlvbi5QYXJlbnRNb0lkO1xuICAgICAgICB9XG4gICAgICAgIC8vICB0aGlzLl9uZXdJbmxpbmVFZGl0TW9Tb3VyY2UubmV4dChuZXdNbyk7XG4gICAgICAgIHJldHVybiBuZXdNbztcbiAgICB9XG4gICAgc2V0TGF5b3V0SW5mbyhsYXlvdXRJbmZvKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xheW91dEluZm9Tb3VyY2UubmV4dChsYXlvdXRJbmZvKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fdW5zY3Vic2NyaWJlQ29udGV4dCgpO1xuICAgIH1cblxuICAgIHBhZ2VTaXplQ2hhbmdlZChwYWdlSW5kZXgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnUGFnZUNoYW5nZScsIHRoaXMuY29udGV4dCwgcGFnZUluZGV4KTtcbiAgICB9XG5cbiAgICBwYWdlQ2hhbmdlZChwYWdlSW5kZXgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmN1cnJlbnRQYWdlID0gcGFnZUluZGV4O1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdQYWdlQ2hhbmdlJywgdGhpcy5jb250ZXh0LCBwYWdlSW5kZXgpO1xuICAgIH1cblxuICAgIHJlU2V0TW9EYXRhTGlzdChtb0RhdGFMaXN0PzogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld01vRGF0YUxpc3QgPSBtb0RhdGFMaXN0ID8/IHRoaXMubW9EYXRhTGlzdFNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLl9tb0RhdGFMaXN0Q2hhbmdlZChbLi4ubmV3TW9EYXRhTGlzdF0pO1xuICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5TZXR0aW5nPy5DYXJ0YWJsZVRlbXBsYXRlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHR5cGVkZWZJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgbmV3TW9EYXRhTGlzdC5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cGRmSWQgPSBjLlJlbGF0ZWRNbz8uJFR5cGVEZWZJZDtcbiAgICAgICAgICAgIGlmICh0cGRmSWQpIHtcbiAgICAgICAgICAgICAgICB0eXBlZGVmSWRzLmFkZCh0cGRmSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHR5cGVkZWZJZHMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRDYXJ0YWJsZVRlbXBsYXRlKHR5cGVkZWZJZHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNlYXJjaCBTZXR0aW5nIE1hbmFnZXJcbiAgICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoUGFuZWxVaSA9IHRoaXMuc2VhcmNoUGFuZWxVaTtcbiAgICAgICAgY29uc3QgZmllbGRVaSA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpLiRTZWFyY2ggPz8gc2VhcmNoUGFuZWxVaS5fZGljdEZpZWxkVWku2KzYs9iq2KzZiDtcbiAgICAgICAgZmllbGRVaS5maXJlRXZlbnQoJ0NsZWFyQ2xpY2snKTtcbiAgICB9XG4gICAgc2VhcmNoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hQYW5lbFVpID0gdGhpcy5zZWFyY2hQYW5lbFVpO1xuICAgICAgICBjb25zdCBmaWVsZFVpID0gc2VhcmNoUGFuZWxVaS5fZGljdEZpZWxkVWkuJFNlYXJjaCA/PyBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaS7YrNiz2KrYrNmIO1xuICAgICAgICBmaWVsZFVpLmZpcmVFdmVudCgnU2VhcmNoQ2xpY2snKTtcbiAgICB9XG5cbiAgICBnZXRWYWx1ZUlubGluZUVkaXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmVFZGl0TW9kZVNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGdldEFsbG93SW5saW5lRWRpdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93SW5saW5lRWRpdFNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBzZXRJbmxpbmVFZGl0KHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lubGluZUVkaXRNb2RlU291cmNlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIG9wZW5TZWFyY2hGaWVsZHNIaWRkZW5TZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3NTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIG9wZW5TZWFyY2hGaWxlc01hbmFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3BlblNlYXJjaEZpbGVzTWFuYWdlU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZWFyY2hQYW5lbE1vQ2hhbmdlZChjaGFuZ2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VhcmNoUGFuZWxNb0NoYW5nZWRTb3VyY2UubmV4dChjaGFuZ2UpO1xuICAgIH1cblxuICAgIGxvYWRTZWFyY2hQYW5lbFNldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250ZXh0LkZvcm1QYW5lbFVpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXBvcnRJZCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICB0YXAoKHJlcG9ydElkKSA9PiB0aGlzLl9sb2FkU2VhcmNoUGFuZWxTZXR0aW5ncyhyZXBvcnRJZCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgYWRkU2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbFNldHRpbmdzOiBTZWFyY2hQYW5lbFNldHRpbmdzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MucHVzaChzZWFyY2hQYW5lbFNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5uZXh0KGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpO1xuICAgIH1cbiAgICBzYXZlU2VhcmNoUGFuZWxTZXR0aW5nKHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nczogU2VhcmNoUGFuZWxTZXR0aW5ncyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hNbyA9IHRoaXMuZ2V0U2VhcmNoUGFuZWxNbygpO1xuICAgICAgICBjb25zdCBmaWVsZHNTZXR0aW5nID0gdGhpcy5nZXRTZWFyY2hQYW5lbEZpZWxkc1NldHRpbmcoKTtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuU2VhcmNoTW8gPSBKU09OLnN0cmluZ2lmeShzZWFyY2hNbyk7XG4gICAgICAgIHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5GaWVsZHNTZXR0aW5nID0gSlNPTi5zdHJpbmdpZnkoZmllbGRzU2V0dGluZyk7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kKFxuICAgICAgICAgICAgJ1NhdmVTZWFyY2hQYW5lbFNldHRpbmdzJyxcbiAgICAgICAgICAgIG5ldyBCYXJzYUFwaS5Db21tb24uTWV0YU9iamVjdFdlYih7XG4gICAgICAgICAgICAgICAgSWQ6IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5JZCxcbiAgICAgICAgICAgICAgICAkQ2FwdGlvbjogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLlRpdGxlLFxuICAgICAgICAgICAgICAgIFJlcG9ydElkOiBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuUmVwb3J0Py5JZCxcbiAgICAgICAgICAgICAgICBUaXRsZTogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLlRpdGxlLFxuICAgICAgICAgICAgICAgIElzRGVmYXVsdDogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLklzRGVmYXVsdCxcbiAgICAgICAgICAgICAgICBJc1B1YmxpYzogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLklzUHVibGljLFxuICAgICAgICAgICAgICAgIEFwcGx5QXV0b21hdGljYWxseTogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLkFwcGx5QXV0b21hdGljYWxseSxcbiAgICAgICAgICAgICAgICBIaWRlU2VhcmNoUGFuZWw6IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5IaWRlU2VhcmNoUGFuZWwsXG4gICAgICAgICAgICAgICAgU2VhcmNoTW86IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5TZWFyY2hNbyxcbiAgICAgICAgICAgICAgICBGaWVsZHNTZXR0aW5nOiBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuRmllbGRzU2V0dGluZ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxNb0NoYW5nZWQoZmFsc2UpO1xuICAgIH1cblxuICAgIGFwcGx5U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbFNldHRpbmdzOiBTZWFyY2hQYW5lbFNldHRpbmdzIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhbmVsVWkgPSB0aGlzLnNlYXJjaFBhbmVsVWk7XG4gICAgICAgIGlmICghc2VhcmNoUGFuZWxTZXR0aW5ncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9maXJzdEFwcGx5QXV0b21hdGljYWxseSAmJiBzZWFyY2hQYW5lbFNldHRpbmdzLklzUHJpbWFyeSkge1xuICAgICAgICAgICAgdGhpcy5fZmlyc3RBcHBseUF1dG9tYXRpY2FsbHkgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maXJzdEFwcGx5QXV0b21hdGljYWxseSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMucmVzZXRTZWFyY2hQYW5lbFNldHRpbmdzKHNlYXJjaFBhbmVsVWkpO1xuICAgICAgICBpZiAoc2VhcmNoUGFuZWxTZXR0aW5ncy5TZWFyY2hNbykge1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoTW8gPSBKU09OLnBhcnNlKHNlYXJjaFBhbmVsU2V0dGluZ3MuU2VhcmNoTW8pO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2VhcmNoTW8pLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpW2NdO1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCAmJiBjLmluZGV4T2YoJyQnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuU2V0VmFsdWUoc2VhcmNoTW9bY10pO1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hQYW5lbFVpLk1vLlNldEZWYWx1ZShjLCBzZWFyY2hNb1tjXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc2VhcmNoUGFuZWxTZXR0aW5ncy5Jc1ByaW1hcnkgJiYgIXNlYXJjaFBhbmVsVWkuU2V0dGluZy5JbW1lZGlhdGVFeGVjdXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hQYW5lbE1vQ2hhbmdlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlYXJjaFBhbmVsU2V0dGluZ3MuQXBwbHlBdXRvbWF0aWNhbGx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPIHNldCBoaWRkZW4gZmllbGRzXG4gICAgICAgIGlmIChzZWFyY2hQYW5lbFNldHRpbmdzLkZpZWxkc1NldHRpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzID0gSlNPTi5wYXJzZShzZWFyY2hQYW5lbFNldHRpbmdzLkZpZWxkc1NldHRpbmcpO1xuICAgICAgICAgICAgdGhpcy5zZXRBbmRBcHBseVNlYXJjaFBhbmVsU2V0dGluZ0ZpZWxkc1NldHRpbmcoXG4gICAgICAgICAgICAgICAgdHlwZW9mIHNldHRpbmdzID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2Uoc2V0dGluZ3MpIDogc2V0dGluZ3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hQYW5lbE1vQ2hhbmdlZChmYWxzZSk7XG4gICAgfVxuICAgIGdldFNlYXJjaFBhbmVsTW8oKTogTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFBhbmVsVWkuTW87XG4gICAgfVxuICAgIGdldFNlYXJjaFBhbmVsRmllbGRzU2V0dGluZygpOiBBcnJheTxQYXJ0aWFsPEdlbmVyYWxDb250cm9sSW5mb01vZGVsPj4ge1xuICAgICAgICBjb25zdCBzZWFyY2hQYW5lbFVpID0gdGhpcy5zZWFyY2hQYW5lbFVpO1xuICAgICAgICBjb25zdCBmaWVsZHM6IEFycmF5PEdlbmVyYWxDb250cm9sSW5mb01vZGVsPiA9IHNlYXJjaFBhbmVsVWkuU2V0dGluZy5WaWV3LkNvbnRyb2xJbmZvLmZpbHRlcihcbiAgICAgICAgICAgIChjKSA9PiBjLkNvbnRyb2xOYW1lICE9PSAnJFNlYXJjaCcgJiYgYy5Db250cm9sTmFtZSAhPT0gJ9is2LPYqtis2YgnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpZWxkc1NldHRpbmcgPSBmaWVsZHMubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgTmFtZTogYy5Db250cm9sTmFtZSxcbiAgICAgICAgICAgIENhcHRpb246IGMuQ29udHJvbEZpZWxkQ2FwdGlvblRyYW5zbGF0ZWQsXG4gICAgICAgICAgICBIaWRkZW46IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpW2MuQ29udHJvbE5hbWVdLlNldHRpbmcuSXNWaXNpYmxlID09PSBmYWxzZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgIElzTWFuZGF0b3J5OiBjLklzTWFuZGF0b3J5XG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkc1NldHRpbmc7XG4gICAgfVxuICAgIHNldEFuZEFwcGx5U2VhcmNoUGFuZWxTZXR0aW5nRmllbGRzU2V0dGluZyhmaWVsZHNTZXR0aW5nOiBDb2x1bW5JbmZvVHlwZVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhbmVsVWkgPSB0aGlzLnNlYXJjaFBhbmVsVWk7XG4gICAgICAgIGZpZWxkc1NldHRpbmcuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaVtjLk5hbWVdO1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoUGFuZWxVaS5maXJlRXZlbnQoJ0NoYW5nZUZpZWxkVmlzaWJsZScsIGZpZWxkLlNldHRpbmcuQ29udHJvbEZpZWxkQ2FwdGlvbiwgIWMuSGlkZGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHVwZGF0ZVNlYXJjaFBhbmVsU2V0dGluZ3MoYWxsU2VhcmNoUGFuZWxTZXR0aW5nczogU2VhcmNoUGFuZWxTZXR0aW5nc1tdKTogdm9pZCB7XG4gICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSBhbGxTZWFyY2hQYW5lbFNldHRpbmdzLmZpbHRlcigoYykgPT4gIWMuSXNQcmltYXJ5ICYmICFjLklzRGVsZXRlZCk7XG4gICAgICAgIHRoaXMuX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UubmV4dChhbGxTZWFyY2hQYW5lbFNldHRpbmdzKTtcbiAgICB9XG5cbiAgICByZW1vdmVTZWFyY2hQYW5lbFNldHRpbmdzKHNlYXJjaFBhbmVsU2V0dGluZ3NJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MuZmlsdGVyKChjKSA9PiBjLklkICE9PSBzZWFyY2hQYW5lbFNldHRpbmdzSWQpO1xuICAgICAgICB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLm5leHQoYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgY2hhbmdlU2VsZWN0ZWRTZWFyY2hQYW5lbChzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkU291cmNlLm5leHQoc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQpO1xuICAgIH1cblxuICAgIGxvYWRNZXRhQ29uZGl0aW9uc0NvbnRyb2xJbmZvcyh0eXBlRGVmSWQ6IHN0cmluZywgZmllbGREYk5hbWVzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8R2VuZXJhbENvbnRyb2xJbmZvTW9kZWxbXT4ge1xuICAgICAgICBjb25zdCBtbyA9IEdldERlZmF1bHRNb09iamVjdEluZm8odHlwZURlZklkKTtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuX2NvbnRyb2xJbmZvc01ldGFvYmplY3QpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGNvbnRyb2xzSW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sc0luZm8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY29udHJvbHNJbmZvKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldENvbnRyb2xMaXN0KG1vLCBmaWVsZERiTmFtZXMsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKChjb250cm9sc0luZm86IEdlbmVyYWxDb250cm9sSW5mb01vZGVsW10pID0+ICh0aGlzLl9jb250cm9sSW5mb3NNZXRhb2JqZWN0ID0gY29udHJvbHNJbmZvKSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9pbml0Q3JlYXRlTmV3SW5saW5lTW8oY29udGV4dCk6IHZvaWQge1xuICAgICAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtU2V0dGluZyA9IGNvbnRleHQuU2V0dGluZy5Gb3JtVGVtcGxhdGU7XG4gICAgICAgIGlmIChmb3JtU2V0dGluZykge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVOZXdJbmxpbmVNbyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2lzQ29tcG9zaXRlKGNvbnRleHQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcmVsYXRpb25UeXBlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoY29udGV4dC5TZXR0aW5nLCAnRXh0cmEuUmVsYXRpb24uUmVsYXRpb25UeXBlJyk7XG4gICAgICAgIHJldHVybiByZWxhdGlvblR5cGUgPT09IEJhcnNhQXBpLkNvbW1vbi5FbnVtcy5SZWxhdGlvblR5cGUuQ29tcG9zaXRpb247XG4gICAgfVxuICAgIHByb3RlY3RlZCBfYWRkRXZlbnRMaXN0ZW5lcihjb250ZXh0OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29udGV4dC5vbih7XG4gICAgICAgICAgICBNYXNrQ2hhbmdlZDogdGhpcy5fbWFza0NoYW5nZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIFZpZXdlck1hc2tDaGFuZ2VkOiB0aGlzLl92aWV3ZXJNYXNrQ2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgVmlld2VyQ29udHJvbENoYW5nZWQ6IHRoaXMuX3ZpZXdlckNvbnRyb2xDaGFuZ2VkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBWaXNpYmxlQ2hhbmdlZDogdGhpcy5fdmlzaWJsZUNoYW5nZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIFJlYWRvbmx5Q2hhbmdlZDogdGhpcy5fcmVhZG9ubHlDaGFuZ2VkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBNZW51SXRlbXNDaGFuZ2VkOiB0aGlzLl9tZW51SXRlbXNDaGFuZ2VkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBUaXRsZUNoYW5nZWQ6IHRoaXMuX3RpdGxlQ2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgRm9ybVBhbmVsQ29udHJvbFNob3dXaW5kb3c6IHRoaXMuX2Zvcm1QYW5lbENvbnRyb2xTaG93V2luZG93Q2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgU2VhcmNoUGFuZWxDaGFuZ2VkOiB0aGlzLl9zZWFyY2hQYW5lbENoYW5nZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIFBhZ2luZ1NldHRpbmdDaGFuZ2VkOiB0aGlzLl9wYWdpbmdTZXR0aW5nQ2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgVG9vbGJhckJ1dHRvbnNDaGFuZ2VkOiB0aGlzLl90b29sYmFyQnV0dG9uc0NoYW5nZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIEVuYWJsZUNoYW5nZWQ6IHRoaXMuX2VuYWJsZUNoYW5nZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIERlc3Ryb3k6IHRoaXMuX2Rlc3Ryb3lDaGFuZ2VkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBFeGl0SW5saW5lRWRpdDogdGhpcy5fZXhpc3RJbmxpbmVFZGl0LmJpbmQodGhpcylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0aWFsaXplKGNvbnRleHQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0Q2FydGFibGVzRm9ybVRlbXBsYXRlKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0Q29uZGl0aW9uYWxGb3JtYXRzKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0QWxsb3dJbmxpbmVFZGl0KGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0T25seUlubGluZUVkaXQoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRJbmxpbmVFZGl0TW9kZShjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFJlcG9ydChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFZpZXdlckNvbnRyb2woY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRIaWRlVG9vbGJhcihjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFRvb2xiYXJCdXR0b25zKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0VmlzaWJsZShjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdEVuYWJsZShjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFRpdGxlKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0UmVhZG9ubHkoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRNb0RhdGFMaXN0KGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0UGFnaW5nU2V0dGluZyhjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdE1lbnVJdGVtcyhjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFNlYXJjaHBhbmVsKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0Q3JlYXRlTmV3SW5saW5lTW8oY29udGV4dCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5pdENhcnRhYmxlc0Zvcm1UZW1wbGF0ZShjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNhcnRhYmxlVGVtcGxhdGVzID0gY29udGV4dC5TZXR0aW5nLkNhcnRhYmxlVGVtcGxhdGVzO1xuICAgICAgICBpZiAoY2FydGFibGVUZW1wbGF0ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkcyA9IE9iamVjdC5rZXlzKGNhcnRhYmxlVGVtcGxhdGVzKTtcbiAgICAgICAgICAgIGlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FydGFibGVUZW1wbGF0ZXNbaWRdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlc1tpZF0gPSBCYXJzYUFwaS5FeHQuZGVjb2RlKGNhcnRhYmxlVGVtcGxhdGVzW2lkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlcyQubmV4dChjYXJ0YWJsZVRlbXBsYXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2FydGFibGVDaGlsZHNNbyhjb250ZXh0KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9pbml0U2VhcmNocGFuZWwoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9zZWFyY2hQYW5lbENvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaFBhbmVsQ2hhbmdlZChjb250ZXh0Ll9zZWFyY2hQYW5lbENvbnRyb2wpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0Q29uZGl0aW9uYWxGb3JtYXRzKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5TZXR0aW5nLlZpZXc/LkNvbmRpdGlvbmFsRm9ybWF0cykge1xuICAgICAgICAgICAgdGhpcy5fY29uZGl0aW9uYWxGb3JtYXRzQ2hhbmdlZChjb250ZXh0LlNldHRpbmcuVmlldz8uQ29uZGl0aW9uYWxGb3JtYXRzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdE1lbnVJdGVtcyhjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQubWVudUl0ZW1zKSB7XG4gICAgICAgICAgICAvLyBjb25zdCBuZXdJdGVtcyA9IGNvbnRleHQubWVudUl0ZW1zO1xuICAgICAgICAgICAgY29uc3QgbmV3SXRlbXMgPSBjb250ZXh0Lm1lbnVJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGMpID0+IGMuaXRlbUlkICE9PSAnRGVsZXRlJyAmJiBjLml0ZW1JZCAhPT0gJ0FkZFRvTGlzdCcgJiYgYy5pdGVtSWQgIT09ICdSZW1vdmVGcm9tTGlzdCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9tZW51SXRlbXNDaGFuZ2VkKG5ld0l0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFJlcG9ydChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkV4dHJhLlJlcG9ydCcsIFtdKTtcbiAgICAgICAgdGhpcy5fcmVwb3J0U291cmNlLm5leHQocmVwb3J0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRNb0RhdGFMaXN0KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkRhdGEuTW9EYXRhTGlzdCcsIFtdKTtcbiAgICAgICAgdGhpcy5fbW9EYXRhTGlzdENoYW5nZWQobW9EYXRhTGlzdCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfY2FydGFibGVDaGlsZHNNbyhjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGlmIChjb250ZXh0LlNldHRpbmcuQ2FydGFibGVDaGlsZHNNbykge1xuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVDaGlsZHNNbyQubmV4dChjb250ZXh0LlNldHRpbmcuQ2FydGFibGVDaGlsZHNNbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRQYWdpbmdTZXR0aW5nKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFnaW5nU2V0dGluZyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkRhdGEuUGFnaW5nJywgbnVsbCk7XG4gICAgICAgIHRoaXMuX3BhZ2luZ1NldHRpbmdDaGFuZ2VkKHBhZ2luZ1NldHRpbmcpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFRpdGxlKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoY29udGV4dCwgJ3RpdGxlJywgbnVsbCk7XG4gICAgICAgIGlmICh0aXRsZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGl0bGUgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5FeHRyYS5SZXBvcnQuQ2FwdGlvbicsICcnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90aXRsZUNoYW5nZWQoeyB0ZXh0OiB0aXRsZSwgaW1hZ2U6ICcnIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFJlYWRvbmx5KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVhZG9ubHkgPSBjb250ZXh0LnJlYWRvbmx5ID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB0aGlzLl9yZWFkb25seUNoYW5nZWQocmVhZG9ubHkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdEVuYWJsZShjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVuYWJsZSA9IGNvbnRleHQuZW5hYmxlID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgdGhpcy5fZW5hYmxlQ2hhbmdlZChlbmFibGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFZpc2libGUoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aXNpYmxlID0gY29udGV4dC5TZXR0aW5nLklzVmlzaWJsZSA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgIHRoaXMuX3Zpc2libGVDaGFuZ2VkKHZpc2libGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdFRvb2xiYXJCdXR0b25zKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9ucyA9IGNvbnRleHQudGxiQnV0dG9ucztcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnV0dG9ucykpIHtcbiAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJCdXR0b25zQ2hhbmdlZChidXR0b25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdElubGluZUVkaXRNb2RlKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW4gPSBjb250ZXh0LlNldHRpbmc/LlZpZXc/LkF1dG9JbmxpbmVFZGl0O1xuICAgICAgICB0aGlzLl9pbmxpbmVFZGl0TW9kZVNvdXJjZS5uZXh0KGlubGluZUVkaXRNb2RlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRBbGxvd0lubGluZUVkaXQoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxvd0lubGluZUVkaXQ6IGJvb2xlYW4gPSBjb250ZXh0LlNldHRpbmc/LlZpZXc/LkFsbG93SW5saW5lRWRpdDtcbiAgICAgICAgY29uc3QgYWxsb3dFZGl0ID0gY29udGV4dC5TZXR0aW5nLkV4dHJhPy5EZWZhdWx0Q29tbWFuZHNBY2Nlc3M/LkVkaXQ7XG4gICAgICAgIHRoaXMuX2FsbG93SW5saW5lRWRpdFNvdXJjZS5uZXh0KGFsbG93SW5saW5lRWRpdCAmJiBhbGxvd0VkaXQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdE9ubHlJbmxpbmVFZGl0KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb25seUlubGluZUVkaXQ6IGJvb2xlYW4gPSBjb250ZXh0LlNldHRpbmc/LlZpZXc/Lk9ubHlJbmxpbmVFZGl0O1xuICAgICAgICB0aGlzLl9vbmx5SW5saW5lRWRpdFNvdXJjZS5uZXh0KG9ubHlJbmxpbmVFZGl0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRWaWV3ZXJDb250cm9sKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgdmlld2VyQ29udHJvbCA9IGNvbnRleHQudmlld2VyQ29udHJvbDtcbiAgICAgICAgaWYgKHZpZXdlckNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdlckNvbnRyb2xDaGFuZ2VkKHZpZXdlckNvbnRyb2wpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0SGlkZVRvb2xiYXIoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBoaWRlVG9vbGJhciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICdTZXR0aW5nLkV4dHJhLlJlcG9ydC5IaWRlVG9vbGJhcicsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5faGlkZVRvb2xiYXJTb3VyY2UubmV4dChoaWRlVG9vbGJhcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF91bnNjdWJzY3JpYmVDb250ZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ01hc2tDaGFuZ2VkJywgdGhpcy5fbWFza0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1ZpZXdlckNvbnRyb2xDaGFuZ2VkJywgdGhpcy5fdmlld2VyQ29udHJvbENoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1ZpZXdlck1hc2tDaGFuZ2VkJywgdGhpcy5fdmlld2VyTWFza0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1Zpc2libGVDaGFuZ2VkJywgdGhpcy5fdmlzaWJsZUNoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1JlYWRvbmx5Q2hhbmdlZCcsIHRoaXMuX3JlYWRvbmx5Q2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignTWVudUl0ZW1zQ2hhbmdlZCcsIHRoaXMuX21lbnVJdGVtc0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1RpdGxlQ2hhbmdlZCcsIHRoaXMuX3RpdGxlQ2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignRm9ybVBhbmVsQ29udHJvbFNob3dXaW5kb3cnLCB0aGlzLl9mb3JtUGFuZWxDb250cm9sU2hvd1dpbmRvd0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1BhZ2luZ1NldHRpbmdDaGFuZ2VkJywgdGhpcy5fcGFnaW5nU2V0dGluZ0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ1Rvb2xiYXJCdXR0b25zQ2hhbmdlZCcsIHRoaXMuX3Rvb2xiYXJCdXR0b25zQ2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignRW5hYmxlQ2hhbmdlZCcsIHRoaXMuX2VuYWJsZUNoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ0Rlc3Ryb3knLCB0aGlzLl9kZXN0cm95Q2hhbmdlZCk7XG4gICAgICAgIHRoaXMuY29udGV4dC51bignRXhpdElubGluZUVkaXQnLCB0aGlzLl9leGlzdElubGluZUVkaXQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NvbmRpdGlvbmFsRm9ybWF0c0NoYW5nZWQoY29uZGl0aW9uYWxGb3JtYXRzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29uZGl0aW9uYWxGb3JtYXRzU291cmNlLm5leHQoY29uZGl0aW9uYWxGb3JtYXRzKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9tb0RhdGFMaXN0Q2hhbmdlZChtb0RhdGFMaXN0KTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9EYXRhTGlzdFNvdXJjZS5uZXh0KG1vRGF0YUxpc3QpO1xuICAgICAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICAgICAgICB0aGlzLl9jYXJ0YWJsZUNoaWxkc01vKHRoaXMuY29udGV4dCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0Q2FydGFibGVzRm9ybVRlbXBsYXRlKHRoaXMuY29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3ZpZXdlckNvbnRyb2xDaGFuZ2VkKHZpZXdlckNvbnRyb2wpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld2VyQ29udHJvbFNvdXJjZS5uZXh0KHZpZXdlckNvbnRyb2wpO1xuICAgICAgICB0aGlzLl9pbml0Q29uZGl0aW9uYWxGb3JtYXRzKHRoaXMuY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRJbmxpbmVFZGl0TW9kZSh0aGlzLmNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0QWxsb3dJbmxpbmVFZGl0KHRoaXMuY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRPbmx5SW5saW5lRWRpdCh0aGlzLmNvbnRleHQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbWFza0NoYW5nZWQobWFzazogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9tYXNrU291cmNlLm5leHQobWFzayk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF92aWV3ZXJNYXNrQ2hhbmdlZCh2aWV3ZXJNYXNrOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdlck1hc2tTb3VyY2UubmV4dCh2aWV3ZXJNYXNrKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3JlYWRvbmx5Q2hhbmdlZChyZWFkb25seTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZWFkb25seVNvdXJjZS5uZXh0KHJlYWRvbmx5KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3Zpc2libGVDaGFuZ2VkKHZpZXdlck1hc2s6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZVNvdXJjZS5uZXh0KHZpZXdlck1hc2spO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbWVudUl0ZW1zQ2hhbmdlZChtZW51SXRlbXM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnVJdGVtc1NvdXJjZS5uZXh0KG1lbnVJdGVtcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90aXRsZUNoYW5nZWQodGl0bGVPYmo6IHsgdGV4dDogc3RyaW5nOyBpbWFnZTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGl0bGVTb3VyY2UubmV4dCh0aXRsZU9iaik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9mb3JtUGFuZWxDb250cm9sU2hvd1dpbmRvd0NoYW5nZWQoZm9ybXBhbmVsT2JqOiB7IGZvcm1wYW5lbENvbnRyb2w6IGFueTsgaGFzUGFyZW50TW86IGFueSB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1QYW5lbENvbnRyb2xTaG93V2luZG93U291cmNlLm5leHQoZm9ybXBhbmVsT2JqKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3NlYXJjaFBhbmVsQ2hhbmdlZChzZWFyY2hQYW5lbDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlYXJjaFBhbmVsVWlTb3VyY2UubmV4dChzZWFyY2hQYW5lbCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wYWdpbmdTZXR0aW5nQ2hhbmdlZChwYWdlaW5nU2V0dGluZzogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BhZ2luZ1NldHRpbmdTb3VyY2UubmV4dChwYWdlaW5nU2V0dGluZyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90b29sYmFyQnV0dG9uc0NoYW5nZWQoYnV0dG9uczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9vbGJhckJ1dHRvbnNTb3VyY2UubmV4dChidXR0b25zKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2VuYWJsZUNoYW5nZWQoZW5hYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VuYWJsZVNvdXJjZS5uZXh0KGVuYWJsZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9kZXN0cm95Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveVNvdXJjZS5uZXh0KCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZXhpc3RJbmxpbmVFZGl0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmxpbmVFZGl0TW9kZVNvdXJjZS5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2FkZERlZmF1bHRTZWFyY2hQYW5lbFNldHRpbmdzKHNlYXJjaFBhbmVsOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoTW8gPSBKU09OLnN0cmluZ2lmeShzZWFyY2hQYW5lbD8uTW8gPz8gbmV3IE1ldGFvYmplY3REYXRhTW9kZWwoKSk7XG4gICAgICAgIGNvbnN0IFN0YW5kYXJkVGV4dCA9IHRoaXMuX2JiYlBpcGUudHJhbnNmb3JtKCdTdGFuZGFyZCcpO1xuICAgICAgICBjb25zdCBzdGFuZGFyZFNldHRpbmdzID0ge1xuICAgICAgICAgICAgSWQ6ICcnLFxuICAgICAgICAgICAgJENhcHRpb246IFN0YW5kYXJkVGV4dCxcbiAgICAgICAgICAgIElzU3RhbmRhcmQ6IHRydWUsXG4gICAgICAgICAgICBJc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICBJc1B1YmxpYzogdHJ1ZSxcbiAgICAgICAgICAgIElzUHJpbWFyeTogdHJ1ZSxcbiAgICAgICAgICAgIEFwcGx5QXV0b21hdGljYWxseTogdHJ1ZSxcbiAgICAgICAgICAgIEhpZGVTZWFyY2hQYW5lbDogZmFsc2UsXG4gICAgICAgICAgICBUaXRsZTogU3RhbmRhcmRUZXh0LFxuICAgICAgICAgICAgU2VhcmNoTW86IHNlYXJjaE1vLFxuICAgICAgICAgICAgUmVwb3J0SWQ6ICcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2RlZmF1bHRTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLm5leHQoc3RhbmRhcmRTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9sb2FkU2VhcmNoUGFuZWxTZXR0aW5ncyhyZXBvcnRJZCk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtyZXBvcnRJZF0sXG4gICAgICAgICAgICBNZXRob2Q6ICdMb2FkQWxsVXNlclNlYXJjaFBhbmVsU2V0dGluZ3MnLFxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoYWxsU2VhcmNoUGFuZWxTZXR0aW5ncykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MgPSBCYXJzYUFwaS5Cdy5fdW53cmFwKGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLm5leHQoYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRTZWFyY2ggPSBhbGxTZWFyY2hQYW5lbFNldHRpbmdzLmZpbmQoKGMpID0+IGMuSXNEZWZhdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRTZWFyY2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkU291cmNlLm5leHQoZGVmYXVsdFNlYXJjaC5JZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7fVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHJlc2V0U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbFVpKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWFyY2goKTtcbiAgICAgICAgY29uc3QgZmllbGRVaSA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpO1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0gc2VhcmNoUGFuZWxVaS5Nby5HZXRDaGFuZ2VkT2JqZWN0KCk7XG4gICAgICAgIE9iamVjdC5rZXlzKGNoYW5nZWQpLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gc2VhcmNoUGFuZWxVaS5fZGljdEZpZWxkVWlbY107XG4gICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5TZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICBzZWFyY2hQYW5lbFVpLk1vLlNldEZWYWx1ZShjLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlYXJjaFBhbmVsVWkuTW8uU2V0U3RhdGUoJ05ldycpO1xuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LmtleXMoZmllbGRVaSkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgaWYgKGMgIT09ICckU2VhcmNoJyAmJiBmaWVsZFVpW2NdLkxheW91dENvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBzZWFyY2hQYW5lbFVpLmZpcmVFdmVudCgnQ2hhbmdlRmllbGRWaXNpYmxlJywgZmllbGRVaVtjXS5TZXR0aW5nLkNvbnRyb2xGaWVsZENhcHRpb24sIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9sb2FkQ2FydGFibGVUZW1wbGF0ZSh0eXBlRGVmSWRzOiBTZXQ8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICBsZXQgY2FydGFibGVUZW1wbGF0ZXMgPSB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlcyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCFjYXJ0YWJsZVRlbXBsYXRlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5rZXlzKGNhcnRhYmxlVGVtcGxhdGVzKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZURlZklkcy5oYXMoYykpIHtcbiAgICAgICAgICAgICAgICB0eXBlRGVmSWRzLmRlbGV0ZShjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0eXBlRGVmSWRzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hcGlTZXJ2aWNlLkdldENhcnRhYmxlVGVtcGxhdGUoQXJyYXkuZnJvbSh0eXBlRGVmSWRzKSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZXM6IHsgW2tleTogc3RyaW5nXTogRm9ybVNldHRpbmcgfSA9IHt9O1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoYykuZm9yRWFjaCgoY0lkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGVtcGxhdGVzW2NJZF0gPSBCYXJzYUFwaS5FeHQuZGVjb2RlKGNbY0lkXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGVzID0geyAuLi5jYXJ0YWJsZVRlbXBsYXRlcywgLi4udGVtcGxhdGVzIH07XG4gICAgICAgICAgICB0aGlzLl9jYXJ0YWJsZVRlbXBsYXRlcyQubmV4dChjYXJ0YWJsZVRlbXBsYXRlcyk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
641
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWx2bWFpbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy91bHZtYWluLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RixPQUFPLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRyxPQUFPLEVBQ0gsUUFBUSxFQUVSLG1CQUFtQixFQU10QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFJN0csTUFBTSxPQUFPLGNBQWM7SUE2RXZCLFlBQW9CLFFBQTBCLEVBQVUsV0FBdUI7UUFBM0QsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQTVFL0UscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBK0JsRSx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBd0MsRUFBRSxDQUFDLENBQUM7UUFDckYsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQWdELEVBQUUsQ0FBQyxDQUFDO1FBRXBGLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDdkMsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FB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QyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztZQUNILGlCQUFpQixHQUFHLEVBQUUsR0FBRyxpQkFBaUIsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzJHQS91QlEsY0FBYzsrR0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQmFyc2FBcGksXG4gICAgTWVudUl0ZW0sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBQYWdpbmdTZXR0aW5nLFxuICAgIFNlYXJjaFBhbmVsU2V0dGluZ3MsXG4gICAgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWwsXG4gICAgQ29sdW1uSW5mb1R5cGUsXG4gICAgRm9ybVNldHRpbmdcbn0gZnJvbSAnLi4vYWJzdHJhY3QtY2xhc3Nlcyc7XG5pbXBvcnQgeyBnZW5yYXRlSW5saW5lTW9JZCwgZ2V0Q29udHJvbExpc3QsIEdldERlZmF1bHRNb09iamVjdEluZm8sIGdldE5ld01vR3JpZEVkaXRvciB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCYmJUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4vYXBpLnNlcnZpY2UnO1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVsdk1haW5TZXJ2aWNlIHtcbiAgICBtb0RhdGFMaXN0U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KFtdKTtcbiAgICBjb250ZXh0JDogU3Vic2NyaXB0aW9uO1xuICAgIHZpZXdlciQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBjb25kaXRpb25hbEZvcm1hdHMkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgaGlkZVRvb2xiYXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG1hc2skOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHZpd2VyTWFzayQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgdmlzaWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgZW5hYmxlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICByZWFkb25seSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgbWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxNZW51SXRlbVtdPjtcbiAgICB0aXRsZSQ6IE9ic2VydmFibGU8eyB0ZXh0OiBzdHJpbmc7IGltYWdlOiBzdHJpbmcgfT47XG4gICAgZm9ybVBhbmVsQ29udHJvbFNob3dXaW5kb3ckOiBPYnNlcnZhYmxlPHsgZm9ybXBhbmVsQ29udHJvbDogYW55OyBoYXNQYXJlbnRNbzogYm9vbGVhbiB9PjtcbiAgICBzZWFyY2hQYW5lbFVpJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHBhZ2luZ1NldHRpbmckOiBPYnNlcnZhYmxlPFBhZ2luZ1NldHRpbmcgfCBudWxsPjtcbiAgICB0b29sYmFyQnV0dG9ucyQ6IE9ic2VydmFibGU8YW55W10+O1xuICAgIGRlc3Ryb3kkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAgIG1vRGF0YUxpc3QkOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWxbXT47XG4gICAgcmVwb3J0SWQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgYWxsb3dJbmxpbmVFZGl0JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBpbmxpbmVFZGl0TW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgb25seUlubGluZUVkaXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNvbnRleHQ6IGFueTtcbiAgICBvcGVuU2VhcmNoUGFuZWxIaWRkZW5TZXR0aW5ncyQ6IE9ic2VydmFibGU8dm9pZD47XG4gICAgb3BlblNlYXJjaEZpbGVzTWFuYWdlJDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgICBzZWFyY2hQYW5lbE1vQ2hhbmdlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyQ6IE9ic2VydmFibGU8U2VhcmNoUGFuZWxTZXR0aW5nc1tdPjtcbiAgICBsYXlvdXRJbmZvJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncyQ6IE9ic2VydmFibGU8U2VhcmNoUGFuZWxTZXR0aW5ncyB8IHVuZGVmaW5lZD47XG4gICAgbmV3SW5saW5lRWRpdE1vJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbD47XG4gICAgX2NhcnRhYmxlVGVtcGxhdGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBba2V5OiBzdHJpbmddOiBGb3JtU2V0dGluZyB9IHwgbnVsbD4oe30pO1xuICAgIF9jYXJ0YWJsZUNoaWxkc01vJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBba2V5OiBzdHJpbmddOiBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gfCBudWxsPih7fSk7XG5cbiAgICBwcml2YXRlIF9sYXlvdXRJbmZvU291cmNlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIHByaXZhdGUgX2NvbnRleHRTb3VyY2UgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBfaW5EaWFsb2ckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfaXNNdWx0aVNlbGVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9mdWxsc2NyZWVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2NvbmRpdGlvbmFsRm9ybWF0c1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwcml2YXRlIF9yZXBvcnRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gICAgcHJpdmF0ZSBfdmlld2VyQ29udHJvbFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgICBwcml2YXRlIF9oaWRlVG9vbGJhclNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgcHJpdmF0ZSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfbWFza1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX3ZpZXdlck1hc2tTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF92aXNpYmxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICBwcml2YXRlIF9lbmFibGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHByaXZhdGUgX3JlYWRvbmx5U291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfbWVudUl0ZW1zU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSk7XG4gICAgcHJpdmF0ZSBfb25seUlubGluZUVkaXRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9pbmxpbmVFZGl0TW9kZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX2FsbG93SW5saW5lRWRpdFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgX3RpdGxlU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHRleHQ6IHN0cmluZzsgaW1hZ2U6IHN0cmluZyB9Pih7XG4gICAgICAgIHRleHQ6ICcnLFxuICAgICAgICBpbWFnZTogJydcbiAgICB9KTtcbiAgICBwcml2YXRlIF9mb3JtUGFuZWxDb250cm9sU2hvd1dpbmRvd1NvdXJjZSA9IG5ldyBTdWJqZWN0PHtcbiAgICAgICAgZm9ybXBhbmVsQ29udHJvbDogYW55O1xuICAgICAgICBoYXNQYXJlbnRNbzogYW55O1xuICAgIH0+KCk7XG4gICAgcHJpdmF0ZSBfc2VhcmNoUGFuZWxVaVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcblxuICAgIHByaXZhdGUgX3BhZ2luZ1NldHRpbmdTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luZ1NldHRpbmcgfCBudWxsPihudWxsKTtcbiAgICBwcml2YXRlIF90b29sYmFyQnV0dG9uc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwcml2YXRlIF9kZXN0cm95U291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9maXJzdEFwcGx5QXV0b21hdGljYWxseSA9IHRydWU7XG4gICAgcHJpdmF0ZSBfY29udHJvbEluZm9zTWV0YW9iamVjdDogR2VuZXJhbENvbnRyb2xJbmZvTW9kZWxbXSA9IFtdO1xuICAgIHByaXZhdGUgX3NlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIF9kZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZSA9IG5ldyBTdWJqZWN0PFNlYXJjaFBhbmVsU2V0dGluZ3M+KCk7XG4gICAgcHJpdmF0ZSBfYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoUGFuZWxTZXR0aW5nc1tdPihbXSk7XG4gICAgcHJpdmF0ZSBfb3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3NTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX29wZW5TZWFyY2hGaWxlc01hbmFnZVNvdXJjZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfc2VhcmNoUGFuZWxNb0NoYW5nZWRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9uZXdJbmxpbmVFZGl0TW9Tb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsPihudWxsKTtcbiAgICBwcml2YXRlIF9oaWRlU2VhcmNoYXBhbmVsU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYmJiUGlwZTogQmJiVHJhbnNsYXRlUGlwZSwgcHJpdmF0ZSBfYXBpU2VydmljZTogQXBpU2VydmljZSkge1xuICAgICAgICB0aGlzLmNvbnRleHQkID0gdGhpcy5fY29udGV4dFNvdXJjZVxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgdGFwKChjb250ZXh0KSA9PiAodGhpcy5jb250ZXh0ID0gY29udGV4dCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoY29udGV4dCkgPT4gdGhpcy5faW5pdGlhbGl6ZShjb250ZXh0KSksXG4gICAgICAgICAgICAgICAgdGFwKChjb250ZXh0KSA9PiB0aGlzLl9hZGRFdmVudExpc3RlbmVyKGNvbnRleHQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm5ld0lubGluZUVkaXRNbyQgPSB0aGlzLl9uZXdJbmxpbmVFZGl0TW9Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgICAgICB0aGlzLnZpZXdlciQgPSB0aGlzLl92aWV3ZXJDb250cm9sU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5jb25kaXRpb25hbEZvcm1hdHMkID0gdGhpcy5fY29uZGl0aW9uYWxGb3JtYXRzU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5oaWRlVG9vbGJhciQgPSB0aGlzLl9oaWRlVG9vbGJhclNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMubWFzayQgPSB0aGlzLl9tYXNrU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy52aXdlck1hc2skID0gdGhpcy5fdmlld2VyTWFza1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMudmlzaWJsZSQgPSB0aGlzLl92aXNpYmxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5lbmFibGUkID0gdGhpcy5fZW5hYmxlU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5yZWFkb25seSQgPSB0aGlzLl9yZWFkb25seVNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zJCA9IHRoaXMuX21lbnVJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gaXRlbXMuZmlsdGVyKChjKSA9PiBjLml0ZW1JZCAhPT0gJ0V4cG9ydFRvRXhjZWwnICYmIGMuaXRlbUlkICE9PSAnRGVsZXRlJykpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudGl0bGUkID0gdGhpcy5fdGl0bGVTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgICAgICB0aGlzLmZvcm1QYW5lbENvbnRyb2xTaG93V2luZG93JCA9IHRoaXMuX2Zvcm1QYW5lbENvbnRyb2xTaG93V2luZG93U291cmNlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSk7XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxVaSQgPSB0aGlzLl9zZWFyY2hQYW5lbFVpU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICB0YXAoKHNlYXJjaFBhbmVsKSA9PiB0aGlzLl9hZGREZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbCkpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3MkID0gdGhpcy5fb3BlblNlYXJjaFBhbmVsSGlkZGVuU2V0dGluZ3NTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMucGFnaW5nU2V0dGluZyQgPSB0aGlzLl9wYWdpbmdTZXR0aW5nU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy50b29sYmFyQnV0dG9ucyQgPSB0aGlzLl90b29sYmFyQnV0dG9uc1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgbWFwKChjKSA9PlxuICAgICAgICAgICAgICAgICFjID8gW10gOiBjLm1hcCgoZCkgPT4gKHsgLi4uZCwgaGlkZVRleHQ6IGQuQ29tbWFuZD8uSXNCdWlsdGluICYmIGQuaXRlbUlkICE9PSAnTmV3JyA/IHRydWUgOiBmYWxzZSB9KSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtYXAoKGMpID0+XG4gICAgICAgICAgICAgICAgIWMgPyBbXSA6IFsuLi5jLmZpbHRlcigoZCkgPT4gIWQuQ29tbWFuZD8uSXNCdWlsdGluKSwgLi4uYy5maWx0ZXIoKGQpID0+IGQuQ29tbWFuZD8uSXNCdWlsdGluKV1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JCA9IHRoaXMuX2Rlc3Ryb3lTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YXAoKCkgPT4gdGhpcy5fdW5zY3Vic2NyaWJlQ29udGV4dCgpKSk7XG4gICAgICAgIHRoaXMubW9EYXRhTGlzdCQgPSB0aGlzLm1vRGF0YUxpc3RTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSgpO1xuICAgICAgICB0aGlzLnJlcG9ydElkJCA9IHRoaXMuX3JlcG9ydFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKG1hcCgocmVwb3J0KSA9PiByZXBvcnQ/LklkKSk7XG5cbiAgICAgICAgdGhpcy5hbGxvd0lubGluZUVkaXQkID0gdGhpcy5fYWxsb3dJbmxpbmVFZGl0U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLmlubGluZUVkaXRNb2RlJCA9IHRoaXMuX2lubGluZUVkaXRNb2RlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLm9ubHlJbmxpbmVFZGl0JCA9IHRoaXMuX29ubHlJbmxpbmVFZGl0U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLm9wZW5TZWFyY2hGaWxlc01hbmFnZSQgPSB0aGlzLl9vcGVuU2VhcmNoRmlsZXNNYW5hZ2VTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxNb0NoYW5nZWQkID0gdGhpcy5fc2VhcmNoUGFuZWxNb0NoYW5nZWRTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICAgICAgdGhpcy5sYXlvdXRJbmZvJCA9IHRoaXMuX2xheW91dEluZm9Tb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgICAgIHRoaXMuYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UuYXNPYnNlcnZhYmxlKCksXG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5hc09ic2VydmFibGUoKVxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbYWxsU2V0dGluZ3MsIGRlZmF1bHRTZXR0aW5nc10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdFNldHRpbmdzICYmIGFsbFNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTZXR0aW5ncy5Jc0RlZmF1bHQgPSAhYWxsU2V0dGluZ3Muc29tZSgoYykgPT4gYy5Jc0RlZmF1bHQpO1xuICAgICAgICAgICAgICAgICAgICBhbGxTZXR0aW5ncyA9IFtkZWZhdWx0U2V0dGluZ3MsIC4uLmFsbFNldHRpbmdzXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFsbFNldHRpbmdzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQkID0gdGhpcy5fc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWRTb3VyY2VcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZCQsXG4gICAgICAgICAgICB0aGlzLmFsbFNlYXJjaFBhbmVsU2V0dGluZ3MkXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtpZCwgc2V0dGluZ3NdKSA9PiBzZXR0aW5ncz8uZmluZCgoYykgPT4gYy5JZCA9PT0gaWQpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgfVxuICAgIGdldCBpbkRpYWxvZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbkRpYWxvZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBpc011bHRpU2VsZWN0JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTXVsdGlTZWxlY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgZnVsbHNjcmVlbiQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mdWxsc2NyZWVuJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGNhcnRhYmxlQ2hpbGRzTW8kKCk6IE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJ0YWJsZUNoaWxkc01vJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGNhcnRhYmxlVGVtcGxhdGVzJCgpOiBPYnNlcnZhYmxlPHsgW2tleTogc3RyaW5nXTogRm9ybVNldHRpbmcgfSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhcnRhYmxlVGVtcGxhdGVzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IHNlYXJjaFBhbmVsVWkoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaFBhbmVsVWlTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICB9XG4gICAgZ2V0IHJlcG9ydElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXBvcnRTb3VyY2UuZ2V0VmFsdWUoKT8uSWQ7XG4gICAgfVxuICAgIGdldCBhbGxTZWFyY2hQYW5lbFNldHRpbmdzKCk6IFNlYXJjaFBhbmVsU2V0dGluZ3NbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLmdldFZhbHVlKCk7XG4gICAgfVxuICAgIGdldCBoaWRlU2VhcmNocGFuZWwkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZVNlYXJjaGFwYW5lbFNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cbiAgICBnZXQgaGlkZVNlYXJjaHBhbmVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZVNlYXJjaGFwYW5lbFNvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBzZXRUaXRsZSh0aXRsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpdGxlU291cmNlLm5leHQoeyB0ZXh0OiB0aXRsZSwgaW1hZ2U6ICcnIH0pO1xuICAgIH1cbiAgICB0b2dnbGVIaWRlU2VhcmNocGFuZWwodmFsPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9oaWRlU2VhcmNoYXBhbmVsU291cmNlLm5leHQodHlwZW9mIHZhbCAhPT0gJ3VuZGVmaW5lZCcgPyB2YWwgOiAhdGhpcy5faGlkZVNlYXJjaGFwYW5lbFNvdXJjZS5nZXRWYWx1ZSgpKTtcbiAgICB9XG4gICAgc2V0Q29udGV4dChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbnRleHRTb3VyY2UubmV4dChjb250ZXh0KTtcbiAgICB9XG4gICAgc2V0SW5EaWFsb2codmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luRGlhbG9nJC5uZXh0KHZhbCk7XG4gICAgfVxuICAgIHNldElzTXVsdGlTZWxlY3QodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzTXVsdGlTZWxlY3QkLm5leHQodmFsKTtcbiAgICB9XG4gICAgc2V0RnVsbHNjcmVlbih2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZnVsbHNjcmVlbiQubmV4dCh2YWwpO1xuICAgIH1cblxuICAgIGNyZWF0ZU5ld0lubGluZU1vKGlzQ2hlY2tlZDogYm9vbGVhbik6IE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBjb25zdCBmb3JtU2V0dGluZyA9IGNvbnRleHQuU2V0dGluZy5Gb3JtVGVtcGxhdGU7XG4gICAgICAgIGNvbnN0IHR5cGVEZWZJZCA9IGNvbnRleHQuU2V0dGluZy5FeHRyYS5SZXBvcnQuVHlwZURlZklkO1xuICAgICAgICBjb25zdCBuZXdNbyA9IGdldE5ld01vR3JpZEVkaXRvcihmb3JtU2V0dGluZywgdHlwZURlZklkKSBhcyBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgICAgICBuZXdNby5JZCA9IGdlbnJhdGVJbmxpbmVNb0lkKCk7XG4gICAgICAgIG5ld01vLiRJc0NoZWNrZWQgPSBpc0NoZWNrZWQ7XG4gICAgICAgIG5ld01vLiROZXdJbmxpbmVNbyA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLl9pc0NvbXBvc2l0ZShjb250ZXh0KSkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRpb24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLmNvbnRleHQuU2V0dGluZywgJ0V4dHJhLlJlbGF0aW9uJyk7XG4gICAgICAgICAgICBuZXdNb1tyZWxhdGlvbi5QYXJlbnRGZE5hbWVdID0gcmVsYXRpb24uUGFyZW50TW9JZDtcbiAgICAgICAgfVxuICAgICAgICAvLyAgdGhpcy5fbmV3SW5saW5lRWRpdE1vU291cmNlLm5leHQobmV3TW8pO1xuICAgICAgICByZXR1cm4gbmV3TW87XG4gICAgfVxuICAgIHNldExheW91dEluZm8obGF5b3V0SW5mbyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYXlvdXRJbmZvU291cmNlLm5leHQobGF5b3V0SW5mbyk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3Vuc2N1YnNjcmliZUNvbnRleHQoKTtcbiAgICB9XG5cbiAgICBwYWdlU2l6ZUNoYW5nZWQocGFnZUluZGV4KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ1BhZ2VDaGFuZ2UnLCB0aGlzLmNvbnRleHQsIHBhZ2VJbmRleCk7XG4gICAgfVxuXG4gICAgcGFnZUNoYW5nZWQocGFnZUluZGV4KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5jdXJyZW50UGFnZSA9IHBhZ2VJbmRleDtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnUGFnZUNoYW5nZScsIHRoaXMuY29udGV4dCwgcGFnZUluZGV4KTtcbiAgICB9XG5cbiAgICByZVNldE1vRGF0YUxpc3QobW9EYXRhTGlzdD86IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdNb0RhdGFMaXN0ID0gbW9EYXRhTGlzdCA/PyB0aGlzLm1vRGF0YUxpc3RTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5fbW9EYXRhTGlzdENoYW5nZWQoWy4uLm5ld01vRGF0YUxpc3RdKTtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRleHQuU2V0dGluZz8uQ2FydGFibGVUZW1wbGF0ZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0eXBlZGVmSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIG5ld01vRGF0YUxpc3QuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHBkZklkID0gYy5SZWxhdGVkTW8/LiRUeXBlRGVmSWQ7XG4gICAgICAgICAgICBpZiAodHBkZklkKSB7XG4gICAgICAgICAgICAgICAgdHlwZWRlZklkcy5hZGQodHBkZklkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0eXBlZGVmSWRzLnNpemUgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkQ2FydGFibGVUZW1wbGF0ZSh0eXBlZGVmSWRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTZWFyY2ggU2V0dGluZyBNYW5hZ2VyXG4gICAgY2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFBhbmVsVWkgPSB0aGlzLnNlYXJjaFBhbmVsVWk7XG4gICAgICAgIGNvbnN0IGZpZWxkVWkgPSBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaS4kU2VhcmNoID8/IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpLtis2LPYqtis2Yg7XG4gICAgICAgIGZpZWxkVWkuZmlyZUV2ZW50KCdDbGVhckNsaWNrJyk7XG4gICAgfVxuICAgIHNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoUGFuZWxVaSA9IHRoaXMuc2VhcmNoUGFuZWxVaTtcbiAgICAgICAgY29uc3QgZmllbGRVaSA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpLiRTZWFyY2ggPz8gc2VhcmNoUGFuZWxVaS5fZGljdEZpZWxkVWku2KzYs9iq2KzZiDtcbiAgICAgICAgZmllbGRVaS5maXJlRXZlbnQoJ1NlYXJjaENsaWNrJyk7XG4gICAgfVxuXG4gICAgZ2V0VmFsdWVJbmxpbmVFZGl0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lRWRpdE1vZGVTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBnZXRBbGxvd0lubGluZUVkaXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxvd0lubGluZUVkaXRTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICB9XG4gICAgc2V0SW5saW5lRWRpdCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmxpbmVFZGl0TW9kZVNvdXJjZS5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBvcGVuU2VhcmNoRmllbGRzSGlkZGVuU2V0dGluZ3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29wZW5TZWFyY2hQYW5lbEhpZGRlblNldHRpbmdzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBvcGVuU2VhcmNoRmlsZXNNYW5hZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29wZW5TZWFyY2hGaWxlc01hbmFnZVNvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgc2VhcmNoUGFuZWxNb0NoYW5nZWQoY2hhbmdlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlYXJjaFBhbmVsTW9DaGFuZ2VkU291cmNlLm5leHQoY2hhbmdlKTtcbiAgICB9XG5cbiAgICBsb2FkU2VhcmNoUGFuZWxTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dC5Gb3JtUGFuZWxVaSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVwb3J0SWQkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgdGFwKChyZXBvcnRJZCkgPT4gdGhpcy5fbG9hZFNlYXJjaFBhbmVsU2V0dGluZ3MocmVwb3J0SWQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGFkZFNlYXJjaFBhbmVsU2V0dGluZ3Moc2VhcmNoUGFuZWxTZXR0aW5nczogU2VhcmNoUGFuZWxTZXR0aW5ncyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxTZWFyY2hQYW5lbFNldHRpbmdzID0gdGhpcy5fYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICBhbGxTZWFyY2hQYW5lbFNldHRpbmdzLnB1c2goc2VhcmNoUGFuZWxTZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuX2FsbFNlYXJjaFBhbmVsU2V0dGluZ3NTb3VyY2UubmV4dChhbGxTZWFyY2hQYW5lbFNldHRpbmdzKTtcbiAgICB9XG4gICAgc2F2ZVNlYXJjaFBhbmVsU2V0dGluZyhzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3M6IFNlYXJjaFBhbmVsU2V0dGluZ3MpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoTW8gPSB0aGlzLmdldFNlYXJjaFBhbmVsTW8oKTtcbiAgICAgICAgY29uc3QgZmllbGRzU2V0dGluZyA9IHRoaXMuZ2V0U2VhcmNoUGFuZWxGaWVsZHNTZXR0aW5nKCk7XG4gICAgICAgIGlmICghc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLlNlYXJjaE1vID0gSlNPTi5zdHJpbmdpZnkoc2VhcmNoTW8pO1xuICAgICAgICBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuRmllbGRzU2V0dGluZyA9IEpTT04uc3RyaW5naWZ5KGZpZWxkc1NldHRpbmcpO1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZChcbiAgICAgICAgICAgICdTYXZlU2VhcmNoUGFuZWxTZXR0aW5ncycsXG4gICAgICAgICAgICBuZXcgQmFyc2FBcGkuQ29tbW9uLk1ldGFPYmplY3RXZWIoe1xuICAgICAgICAgICAgICAgIElkOiBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuSWQsXG4gICAgICAgICAgICAgICAgJENhcHRpb246IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5UaXRsZSxcbiAgICAgICAgICAgICAgICBSZXBvcnRJZDogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLlJlcG9ydD8uSWQsXG4gICAgICAgICAgICAgICAgVGl0bGU6IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5UaXRsZSxcbiAgICAgICAgICAgICAgICBJc0RlZmF1bHQ6IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5Jc0RlZmF1bHQsXG4gICAgICAgICAgICAgICAgSXNQdWJsaWM6IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5Jc1B1YmxpYyxcbiAgICAgICAgICAgICAgICBBcHBseUF1dG9tYXRpY2FsbHk6IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5BcHBseUF1dG9tYXRpY2FsbHksXG4gICAgICAgICAgICAgICAgSGlkZVNlYXJjaFBhbmVsOiBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuSGlkZVNlYXJjaFBhbmVsLFxuICAgICAgICAgICAgICAgIFNlYXJjaE1vOiBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuU2VhcmNoTW8sXG4gICAgICAgICAgICAgICAgRmllbGRzU2V0dGluZzogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzLkZpZWxkc1NldHRpbmdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNlYXJjaFBhbmVsTW9DaGFuZ2VkKGZhbHNlKTtcbiAgICB9XG5cbiAgICBhcHBseVNlYXJjaFBhbmVsU2V0dGluZ3Moc2VhcmNoUGFuZWxTZXR0aW5nczogU2VhcmNoUGFuZWxTZXR0aW5ncyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hQYW5lbFVpID0gdGhpcy5zZWFyY2hQYW5lbFVpO1xuICAgICAgICBpZiAoIXNlYXJjaFBhbmVsU2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZmlyc3RBcHBseUF1dG9tYXRpY2FsbHkgJiYgc2VhcmNoUGFuZWxTZXR0aW5ncy5Jc1ByaW1hcnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpcnN0QXBwbHlBdXRvbWF0aWNhbGx5ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZmlyc3RBcHBseUF1dG9tYXRpY2FsbHkgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnJlc2V0U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbFVpKTtcbiAgICAgICAgaWYgKHNlYXJjaFBhbmVsU2V0dGluZ3MuU2VhcmNoTW8pIHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaE1vID0gSlNPTi5wYXJzZShzZWFyY2hQYW5lbFNldHRpbmdzLlNlYXJjaE1vKTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHNlYXJjaE1vKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaVtjXTtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQgJiYgYy5pbmRleE9mKCckJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLlNldFZhbHVlKHNlYXJjaE1vW2NdKTtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoUGFuZWxVaS5Nby5TZXRGVmFsdWUoYywgc2VhcmNoTW9bY10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHNlYXJjaFBhbmVsU2V0dGluZ3MuSXNQcmltYXJ5ICYmICFzZWFyY2hQYW5lbFVpLlNldHRpbmcuSW1tZWRpYXRlRXhlY3V0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUGFuZWxNb0NoYW5nZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWFyY2hQYW5lbFNldHRpbmdzLkFwcGx5QXV0b21hdGljYWxseSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETyBzZXQgaGlkZGVuIGZpZWxkc1xuICAgICAgICBpZiAoc2VhcmNoUGFuZWxTZXR0aW5ncy5GaWVsZHNTZXR0aW5nKSB7XG4gICAgICAgICAgICBjb25zdCBzZXR0aW5ncyA9IEpTT04ucGFyc2Uoc2VhcmNoUGFuZWxTZXR0aW5ncy5GaWVsZHNTZXR0aW5nKTtcbiAgICAgICAgICAgIHRoaXMuc2V0QW5kQXBwbHlTZWFyY2hQYW5lbFNldHRpbmdGaWVsZHNTZXR0aW5nKFxuICAgICAgICAgICAgICAgIHR5cGVvZiBzZXR0aW5ncyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHNldHRpbmdzKSA6IHNldHRpbmdzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxNb0NoYW5nZWQoZmFsc2UpO1xuICAgIH1cbiAgICBnZXRTZWFyY2hQYW5lbE1vKCk6IE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hQYW5lbFVpLk1vO1xuICAgIH1cbiAgICBnZXRTZWFyY2hQYW5lbEZpZWxkc1NldHRpbmcoKTogQXJyYXk8UGFydGlhbDxHZW5lcmFsQ29udHJvbEluZm9Nb2RlbD4+IHtcbiAgICAgICAgY29uc3Qgc2VhcmNoUGFuZWxVaSA9IHRoaXMuc2VhcmNoUGFuZWxVaTtcbiAgICAgICAgY29uc3QgZmllbGRzOiBBcnJheTxHZW5lcmFsQ29udHJvbEluZm9Nb2RlbD4gPSBzZWFyY2hQYW5lbFVpLlNldHRpbmcuVmlldy5Db250cm9sSW5mby5maWx0ZXIoXG4gICAgICAgICAgICAoYykgPT4gYy5Db250cm9sTmFtZSAhPT0gJyRTZWFyY2gnICYmIGMuQ29udHJvbE5hbWUgIT09ICfYrNiz2KrYrNmIJ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWVsZHNTZXR0aW5nID0gZmllbGRzLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgIE5hbWU6IGMuQ29udHJvbE5hbWUsXG4gICAgICAgICAgICBDYXB0aW9uOiBjLkNvbnRyb2xGaWVsZENhcHRpb25UcmFuc2xhdGVkLFxuICAgICAgICAgICAgSGlkZGVuOiBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaVtjLkNvbnRyb2xOYW1lXS5TZXR0aW5nLklzVmlzaWJsZSA9PT0gZmFsc2UgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICBJc01hbmRhdG9yeTogYy5Jc01hbmRhdG9yeVxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBmaWVsZHNTZXR0aW5nO1xuICAgIH1cbiAgICBzZXRBbmRBcHBseVNlYXJjaFBhbmVsU2V0dGluZ0ZpZWxkc1NldHRpbmcoZmllbGRzU2V0dGluZzogQ29sdW1uSW5mb1R5cGVbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hQYW5lbFVpID0gdGhpcy5zZWFyY2hQYW5lbFVpO1xuICAgICAgICBmaWVsZHNTZXR0aW5nLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gc2VhcmNoUGFuZWxVaS5fZGljdEZpZWxkVWlbYy5OYW1lXTtcbiAgICAgICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgICAgIHNlYXJjaFBhbmVsVWkuZmlyZUV2ZW50KCdDaGFuZ2VGaWVsZFZpc2libGUnLCBmaWVsZC5TZXR0aW5nLkNvbnRyb2xGaWVsZENhcHRpb24sICFjLkhpZGRlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB1cGRhdGVTZWFyY2hQYW5lbFNldHRpbmdzKGFsbFNlYXJjaFBhbmVsU2V0dGluZ3M6IFNlYXJjaFBhbmVsU2V0dGluZ3NbXSk6IHZvaWQge1xuICAgICAgICBhbGxTZWFyY2hQYW5lbFNldHRpbmdzID0gYWxsU2VhcmNoUGFuZWxTZXR0aW5ncy5maWx0ZXIoKGMpID0+ICFjLklzUHJpbWFyeSAmJiAhYy5Jc0RlbGV0ZWQpO1xuICAgICAgICB0aGlzLl9hbGxTZWFyY2hQYW5lbFNldHRpbmdzU291cmNlLm5leHQoYWxsU2VhcmNoUGFuZWxTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcmVtb3ZlU2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbFNldHRpbmdzSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxTZWFyY2hQYW5lbFNldHRpbmdzID0gdGhpcy5fYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICBhbGxTZWFyY2hQYW5lbFNldHRpbmdzLmZpbHRlcigoYykgPT4gYy5JZCAhPT0gc2VhcmNoUGFuZWxTZXR0aW5nc0lkKTtcbiAgICAgICAgdGhpcy5fYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5uZXh0KGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpO1xuICAgIH1cblxuICAgIGNoYW5nZVNlbGVjdGVkU2VhcmNoUGFuZWwoc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZFNvdXJjZS5uZXh0KHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkKTtcbiAgICB9XG5cbiAgICBsb2FkTWV0YUNvbmRpdGlvbnNDb250cm9sSW5mb3ModHlwZURlZklkOiBzdHJpbmcsIGZpZWxkRGJOYW1lczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPEdlbmVyYWxDb250cm9sSW5mb01vZGVsW10+IHtcbiAgICAgICAgY29uc3QgbW8gPSBHZXREZWZhdWx0TW9PYmplY3RJbmZvKHR5cGVEZWZJZCk7XG4gICAgICAgIHJldHVybiBvZih0aGlzLl9jb250cm9sSW5mb3NNZXRhb2JqZWN0KS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChjb250cm9sc0luZm8pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbHNJbmZvLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGNvbnRyb2xzSW5mbyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRDb250cm9sTGlzdChtbywgZmllbGREYk5hbWVzLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgoY29udHJvbHNJbmZvOiBHZW5lcmFsQ29udHJvbEluZm9Nb2RlbFtdKSA9PiAodGhpcy5fY29udHJvbEluZm9zTWV0YW9iamVjdCA9IGNvbnRyb2xzSW5mbykpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5pdENyZWF0ZU5ld0lubGluZU1vKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybVNldHRpbmcgPSBjb250ZXh0LlNldHRpbmcuRm9ybVRlbXBsYXRlO1xuICAgICAgICBpZiAoZm9ybVNldHRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTmV3SW5saW5lTW8oZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pc0NvbXBvc2l0ZShjb250ZXh0KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uVHlwZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQuU2V0dGluZywgJ0V4dHJhLlJlbGF0aW9uLlJlbGF0aW9uVHlwZScpO1xuICAgICAgICByZXR1cm4gcmVsYXRpb25UeXBlID09PSBCYXJzYUFwaS5Db21tb24uRW51bXMuUmVsYXRpb25UeXBlLkNvbXBvc2l0aW9uO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2FkZEV2ZW50TGlzdGVuZXIoY29udGV4dDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnRleHQub24oe1xuICAgICAgICAgICAgTWFza0NoYW5nZWQ6IHRoaXMuX21hc2tDaGFuZ2VkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBWaWV3ZXJNYXNrQ2hhbmdlZDogdGhpcy5fdmlld2VyTWFza0NoYW5nZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIFZpZXdlckNvbnRyb2xDaGFuZ2VkOiB0aGlzLl92aWV3ZXJDb250cm9sQ2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgVmlzaWJsZUNoYW5nZWQ6IHRoaXMuX3Zpc2libGVDaGFuZ2VkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBSZWFkb25seUNoYW5nZWQ6IHRoaXMuX3JlYWRvbmx5Q2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgTWVudUl0ZW1zQ2hhbmdlZDogdGhpcy5fbWVudUl0ZW1zQ2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgVGl0bGVDaGFuZ2VkOiB0aGlzLl90aXRsZUNoYW5nZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIEZvcm1QYW5lbENvbnRyb2xTaG93V2luZG93OiB0aGlzLl9mb3JtUGFuZWxDb250cm9sU2hvd1dpbmRvd0NoYW5nZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIFNlYXJjaFBhbmVsQ2hhbmdlZDogdGhpcy5fc2VhcmNoUGFuZWxDaGFuZ2VkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBQYWdpbmdTZXR0aW5nQ2hhbmdlZDogdGhpcy5fcGFnaW5nU2V0dGluZ0NoYW5nZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIFRvb2xiYXJCdXR0b25zQ2hhbmdlZDogdGhpcy5fdG9vbGJhckJ1dHRvbnNDaGFuZ2VkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBFbmFibGVDaGFuZ2VkOiB0aGlzLl9lbmFibGVDaGFuZ2VkLmJpbmQodGhpcyksXG4gICAgICAgICAgICBEZXN0cm95OiB0aGlzLl9kZXN0cm95Q2hhbmdlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgRXhpdElubGluZUVkaXQ6IHRoaXMuX2V4aXN0SW5saW5lRWRpdC5iaW5kKHRoaXMpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdGlhbGl6ZShjb250ZXh0OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdENhcnRhYmxlc0Zvcm1UZW1wbGF0ZShjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdENvbmRpdGlvbmFsRm9ybWF0cyhjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdEFsbG93SW5saW5lRWRpdChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdE9ubHlJbmxpbmVFZGl0KGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0SW5saW5lRWRpdE1vZGUoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRSZXBvcnQoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRWaWV3ZXJDb250cm9sKGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0SGlkZVRvb2xiYXIoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRUb29sYmFyQnV0dG9ucyhjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFZpc2libGUoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRFbmFibGUoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRUaXRsZShjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFJlYWRvbmx5KGNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0TW9EYXRhTGlzdChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdFBhZ2luZ1NldHRpbmcoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRNZW51SXRlbXMoY29udGV4dCk7XG4gICAgICAgIHRoaXMuX2luaXRTZWFyY2hwYW5lbChjb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdENyZWF0ZU5ld0lubGluZU1vKGNvbnRleHQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2luaXRDYXJ0YWJsZXNGb3JtVGVtcGxhdGUoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjYXJ0YWJsZVRlbXBsYXRlcyA9IGNvbnRleHQuU2V0dGluZy5DYXJ0YWJsZVRlbXBsYXRlcztcbiAgICAgICAgaWYgKGNhcnRhYmxlVGVtcGxhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBpZHMgPSBPYmplY3Qua2V5cyhjYXJ0YWJsZVRlbXBsYXRlcyk7XG4gICAgICAgICAgICBpZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhcnRhYmxlVGVtcGxhdGVzW2lkXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZXNbaWRdID0gQmFyc2FBcGkuRXh0LmRlY29kZShjYXJ0YWJsZVRlbXBsYXRlc1tpZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVUZW1wbGF0ZXMkLm5leHQoY2FydGFibGVUZW1wbGF0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NhcnRhYmxlQ2hpbGRzTW8oY29udGV4dCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfaW5pdFNlYXJjaHBhbmVsKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fc2VhcmNoUGFuZWxDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWFyY2hQYW5lbENoYW5nZWQoY29udGV4dC5fc2VhcmNoUGFuZWxDb250cm9sKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdENvbmRpdGlvbmFsRm9ybWF0cyhjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuU2V0dGluZy5WaWV3Py5Db25kaXRpb25hbEZvcm1hdHMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmRpdGlvbmFsRm9ybWF0c0NoYW5nZWQoY29udGV4dC5TZXR0aW5nLlZpZXc/LkNvbmRpdGlvbmFsRm9ybWF0cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRNZW51SXRlbXMoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Lm1lbnVJdGVtcykge1xuICAgICAgICAgICAgLy8gY29uc3QgbmV3SXRlbXMgPSBjb250ZXh0Lm1lbnVJdGVtcztcbiAgICAgICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gY29udGV4dC5tZW51SXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjKSA9PiBjLml0ZW1JZCAhPT0gJ0RlbGV0ZScgJiYgYy5pdGVtSWQgIT09ICdBZGRUb0xpc3QnICYmIGMuaXRlbUlkICE9PSAnUmVtb3ZlRnJvbUxpc3QnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fbWVudUl0ZW1zQ2hhbmdlZChuZXdJdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRSZXBvcnQoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXBvcnQgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5FeHRyYS5SZXBvcnQnLCBbXSk7XG4gICAgICAgIHRoaXMuX3JlcG9ydFNvdXJjZS5uZXh0KHJlcG9ydCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0TW9EYXRhTGlzdChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1vRGF0YUxpc3QgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5EYXRhLk1vRGF0YUxpc3QnLCBbXSk7XG4gICAgICAgIHRoaXMuX21vRGF0YUxpc3RDaGFuZ2VkKG1vRGF0YUxpc3QpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NhcnRhYmxlQ2hpbGRzTW8oY29udGV4dCk6IHZvaWQge1xuICAgICAgICBpZiAoY29udGV4dC5TZXR0aW5nLkNhcnRhYmxlQ2hpbGRzTW8pIHtcbiAgICAgICAgICAgIHRoaXMuX2NhcnRhYmxlQ2hpbGRzTW8kLm5leHQoY29udGV4dC5TZXR0aW5nLkNhcnRhYmxlQ2hpbGRzTW8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0UGFnaW5nU2V0dGluZyhjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhZ2luZ1NldHRpbmcgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5EYXRhLlBhZ2luZycsIG51bGwpO1xuICAgICAgICB0aGlzLl9wYWdpbmdTZXR0aW5nQ2hhbmdlZChwYWdpbmdTZXR0aW5nKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRUaXRsZShjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGxldCB0aXRsZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGNvbnRleHQsICd0aXRsZScsIG51bGwpO1xuICAgICAgICBpZiAodGl0bGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoY29udGV4dCwgJ1NldHRpbmcuRXh0cmEuUmVwb3J0LkNhcHRpb24nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGl0bGVDaGFuZ2VkKHsgdGV4dDogdGl0bGUsIGltYWdlOiAnJyB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRSZWFkb25seShjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlYWRvbmx5ID0gY29udGV4dC5yZWFkb25seSA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5fcmVhZG9ubHlDaGFuZ2VkKHJlYWRvbmx5KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRFbmFibGUoY29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbmFibGUgPSBjb250ZXh0LmVuYWJsZSA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgIHRoaXMuX2VuYWJsZUNoYW5nZWQoZW5hYmxlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRWaXNpYmxlKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZSA9IGNvbnRleHQuU2V0dGluZy5Jc1Zpc2libGUgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICB0aGlzLl92aXNpYmxlQ2hhbmdlZCh2aXNpYmxlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRUb29sYmFyQnV0dG9ucyhjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbnMgPSBjb250ZXh0LnRsYkJ1dHRvbnM7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJ1dHRvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLl90b29sYmFyQnV0dG9uc0NoYW5nZWQoYnV0dG9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRJbmxpbmVFZGl0TW9kZShjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlubGluZUVkaXRNb2RlOiBib29sZWFuID0gY29udGV4dC5TZXR0aW5nPy5WaWV3Py5BdXRvSW5saW5lRWRpdDtcbiAgICAgICAgdGhpcy5faW5saW5lRWRpdE1vZGVTb3VyY2UubmV4dChpbmxpbmVFZGl0TW9kZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0QWxsb3dJbmxpbmVFZGl0KGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsb3dJbmxpbmVFZGl0OiBib29sZWFuID0gY29udGV4dC5TZXR0aW5nPy5WaWV3Py5BbGxvd0lubGluZUVkaXQ7XG4gICAgICAgIGNvbnN0IGFsbG93RWRpdCA9IGNvbnRleHQuU2V0dGluZy5FeHRyYT8uRGVmYXVsdENvbW1hbmRzQWNjZXNzPy5FZGl0O1xuICAgICAgICB0aGlzLl9hbGxvd0lubGluZUVkaXRTb3VyY2UubmV4dChhbGxvd0lubGluZUVkaXQgJiYgYWxsb3dFZGl0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRPbmx5SW5saW5lRWRpdChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9ubHlJbmxpbmVFZGl0OiBib29sZWFuID0gY29udGV4dC5TZXR0aW5nPy5WaWV3Py5Pbmx5SW5saW5lRWRpdDtcbiAgICAgICAgdGhpcy5fb25seUlubGluZUVkaXRTb3VyY2UubmV4dChvbmx5SW5saW5lRWRpdCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pbml0Vmlld2VyQ29udHJvbChjb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpZXdlckNvbnRyb2wgPSBjb250ZXh0LnZpZXdlckNvbnRyb2w7XG4gICAgICAgIGlmICh2aWV3ZXJDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3ZXJDb250cm9sQ2hhbmdlZCh2aWV3ZXJDb250cm9sKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaW5pdEhpZGVUb29sYmFyKGNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGlkZVRvb2xiYXIgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5FeHRyYS5SZXBvcnQuSGlkZVRvb2xiYXInLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuX2hpZGVUb29sYmFyU291cmNlLm5leHQoaGlkZVRvb2xiYXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdW5zY3Vic2NyaWJlQ29udGV4dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdNYXNrQ2hhbmdlZCcsIHRoaXMuX21hc2tDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdWaWV3ZXJDb250cm9sQ2hhbmdlZCcsIHRoaXMuX3ZpZXdlckNvbnRyb2xDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdWaWV3ZXJNYXNrQ2hhbmdlZCcsIHRoaXMuX3ZpZXdlck1hc2tDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdWaXNpYmxlQ2hhbmdlZCcsIHRoaXMuX3Zpc2libGVDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdSZWFkb25seUNoYW5nZWQnLCB0aGlzLl9yZWFkb25seUNoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ01lbnVJdGVtc0NoYW5nZWQnLCB0aGlzLl9tZW51SXRlbXNDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdUaXRsZUNoYW5nZWQnLCB0aGlzLl90aXRsZUNoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ0Zvcm1QYW5lbENvbnRyb2xTaG93V2luZG93JywgdGhpcy5fZm9ybVBhbmVsQ29udHJvbFNob3dXaW5kb3dDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdQYWdpbmdTZXR0aW5nQ2hhbmdlZCcsIHRoaXMuX3BhZ2luZ1NldHRpbmdDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdUb29sYmFyQnV0dG9uc0NoYW5nZWQnLCB0aGlzLl90b29sYmFyQnV0dG9uc0NoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ0VuYWJsZUNoYW5nZWQnLCB0aGlzLl9lbmFibGVDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnVuKCdEZXN0cm95JywgdGhpcy5fZGVzdHJveUNoYW5nZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ0V4aXRJbmxpbmVFZGl0JywgdGhpcy5fZXhpc3RJbmxpbmVFZGl0KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jb25kaXRpb25hbEZvcm1hdHNDaGFuZ2VkKGNvbmRpdGlvbmFsRm9ybWF0czogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbmRpdGlvbmFsRm9ybWF0c1NvdXJjZS5uZXh0KGNvbmRpdGlvbmFsRm9ybWF0cyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfbW9EYXRhTGlzdENoYW5nZWQobW9EYXRhTGlzdCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vRGF0YUxpc3RTb3VyY2UubmV4dChtb0RhdGFMaXN0KTtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dCkge1xuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVDaGlsZHNNbyh0aGlzLmNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy5faW5pdENhcnRhYmxlc0Zvcm1UZW1wbGF0ZSh0aGlzLmNvbnRleHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF92aWV3ZXJDb250cm9sQ2hhbmdlZCh2aWV3ZXJDb250cm9sKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdlckNvbnRyb2xTb3VyY2UubmV4dCh2aWV3ZXJDb250cm9sKTtcbiAgICAgICAgdGhpcy5faW5pdENvbmRpdGlvbmFsRm9ybWF0cyh0aGlzLmNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0SW5saW5lRWRpdE1vZGUodGhpcy5jb250ZXh0KTtcbiAgICAgICAgdGhpcy5faW5pdEFsbG93SW5saW5lRWRpdCh0aGlzLmNvbnRleHQpO1xuICAgICAgICB0aGlzLl9pbml0T25seUlubGluZUVkaXQodGhpcy5jb250ZXh0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX21hc2tDaGFuZ2VkKG1hc2s6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWFza1NvdXJjZS5uZXh0KG1hc2spO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdmlld2VyTWFza0NoYW5nZWQodmlld2VyTWFzazogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3ZXJNYXNrU291cmNlLm5leHQodmlld2VyTWFzayk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yZWFkb25seUNoYW5nZWQocmVhZG9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVhZG9ubHlTb3VyY2UubmV4dChyZWFkb25seSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF92aXNpYmxlQ2hhbmdlZCh2aWV3ZXJNYXNrOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Zpc2libGVTb3VyY2UubmV4dCh2aWV3ZXJNYXNrKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX21lbnVJdGVtc0NoYW5nZWQobWVudUl0ZW1zOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51SXRlbXNTb3VyY2UubmV4dChtZW51SXRlbXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdGl0bGVDaGFuZ2VkKHRpdGxlT2JqOiB7IHRleHQ6IHN0cmluZzsgaW1hZ2U6IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpdGxlU291cmNlLm5leHQodGl0bGVPYmopO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZm9ybVBhbmVsQ29udHJvbFNob3dXaW5kb3dDaGFuZ2VkKGZvcm1wYW5lbE9iajogeyBmb3JtcGFuZWxDb250cm9sOiBhbnk7IGhhc1BhcmVudE1vOiBhbnkgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtUGFuZWxDb250cm9sU2hvd1dpbmRvd1NvdXJjZS5uZXh0KGZvcm1wYW5lbE9iaik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9zZWFyY2hQYW5lbENoYW5nZWQoc2VhcmNoUGFuZWw6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWFyY2hQYW5lbFVpU291cmNlLm5leHQoc2VhcmNoUGFuZWwpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcGFnaW5nU2V0dGluZ0NoYW5nZWQocGFnZWluZ1NldHRpbmc6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wYWdpbmdTZXR0aW5nU291cmNlLm5leHQocGFnZWluZ1NldHRpbmcpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdG9vbGJhckJ1dHRvbnNDaGFuZ2VkKGJ1dHRvbnM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rvb2xiYXJCdXR0b25zU291cmNlLm5leHQoYnV0dG9ucyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lbmFibGVDaGFuZ2VkKGVuYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbmFibGVTb3VyY2UubmV4dChlbmFibGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZGVzdHJveUNoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lTb3VyY2UubmV4dCgpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2V4aXN0SW5saW5lRWRpdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5saW5lRWRpdE1vZGVTb3VyY2UubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9hZGREZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5ncyhzZWFyY2hQYW5lbDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaE1vID0gSlNPTi5zdHJpbmdpZnkoc2VhcmNoUGFuZWw/Lk1vID8/IG5ldyBNZXRhb2JqZWN0RGF0YU1vZGVsKCkpO1xuICAgICAgICBjb25zdCBTdGFuZGFyZFRleHQgPSB0aGlzLl9iYmJQaXBlLnRyYW5zZm9ybSgnU3RhbmRhcmQnKTtcbiAgICAgICAgY29uc3Qgc3RhbmRhcmRTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgIElkOiAnJyxcbiAgICAgICAgICAgICRDYXB0aW9uOiBTdGFuZGFyZFRleHQsXG4gICAgICAgICAgICBJc1N0YW5kYXJkOiB0cnVlLFxuICAgICAgICAgICAgSXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICAgICAgSXNQdWJsaWM6IHRydWUsXG4gICAgICAgICAgICBJc1ByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBBcHBseUF1dG9tYXRpY2FsbHk6IHRydWUsXG4gICAgICAgICAgICBIaWRlU2VhcmNoUGFuZWw6IGZhbHNlLFxuICAgICAgICAgICAgVGl0bGU6IFN0YW5kYXJkVGV4dCxcbiAgICAgICAgICAgIFNlYXJjaE1vOiBzZWFyY2hNbyxcbiAgICAgICAgICAgIFJlcG9ydElkOiAnJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9kZWZhdWx0U2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5uZXh0KHN0YW5kYXJkU2V0dGluZ3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbG9hZFNlYXJjaFBhbmVsU2V0dGluZ3MocmVwb3J0SWQpOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbcmVwb3J0SWRdLFxuICAgICAgICAgICAgTWV0aG9kOiAnTG9hZEFsbFVzZXJTZWFyY2hQYW5lbFNldHRpbmdzJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhbGxTZWFyY2hQYW5lbFNldHRpbmdzKSkge1xuICAgICAgICAgICAgICAgICAgICBhbGxTZWFyY2hQYW5lbFNldHRpbmdzID0gQmFyc2FBcGkuQncuX3Vud3JhcChhbGxTZWFyY2hQYW5lbFNldHRpbmdzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxsU2VhcmNoUGFuZWxTZXR0aW5nc1NvdXJjZS5uZXh0KGFsbFNlYXJjaFBhbmVsU2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0U2VhcmNoID0gYWxsU2VhcmNoUGFuZWxTZXR0aW5ncy5maW5kKChjKSA9PiBjLklzRGVmYXVsdCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0U2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3NJZFNvdXJjZS5uZXh0KGRlZmF1bHRTZWFyY2guSWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge31cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCByZXNldFNlYXJjaFBhbmVsU2V0dGluZ3Moc2VhcmNoUGFuZWxVaSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyU2VhcmNoKCk7XG4gICAgICAgIGNvbnN0IGZpZWxkVWkgPSBzZWFyY2hQYW5lbFVpLl9kaWN0RmllbGRVaTtcbiAgICAgICAgY29uc3QgY2hhbmdlZCA9IHNlYXJjaFBhbmVsVWkuTW8uR2V0Q2hhbmdlZE9iamVjdCgpO1xuICAgICAgICBPYmplY3Qua2V5cyhjaGFuZ2VkKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IHNlYXJjaFBhbmVsVWkuX2RpY3RGaWVsZFVpW2NdO1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgZmllbGQuU2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgc2VhcmNoUGFuZWxVaS5Nby5TZXRGVmFsdWUoYywgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWFyY2hQYW5lbFVpLk1vLlNldFN0YXRlKCdOZXcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5rZXlzKGZpZWxkVWkpLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGlmIChjICE9PSAnJFNlYXJjaCcgJiYgZmllbGRVaVtjXS5MYXlvdXRDb250cm9sKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoUGFuZWxVaS5maXJlRXZlbnQoJ0NoYW5nZUZpZWxkVmlzaWJsZScsIGZpZWxkVWlbY10uU2V0dGluZy5Db250cm9sRmllbGRDYXB0aW9uLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfbG9hZENhcnRhYmxlVGVtcGxhdGUodHlwZURlZklkczogU2V0PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgbGV0IGNhcnRhYmxlVGVtcGxhdGVzID0gdGhpcy5fY2FydGFibGVUZW1wbGF0ZXMkLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICghY2FydGFibGVUZW1wbGF0ZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3Qua2V5cyhjYXJ0YWJsZVRlbXBsYXRlcykuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVEZWZJZHMuaGFzKGMpKSB7XG4gICAgICAgICAgICAgICAgdHlwZURlZklkcy5kZWxldGUoYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodHlwZURlZklkcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXBpU2VydmljZS5HZXRDYXJ0YWJsZVRlbXBsYXRlKEFycmF5LmZyb20odHlwZURlZklkcykpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICAgICAgaWYgKCFjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVzOiB7IFtrZXk6IHN0cmluZ106IEZvcm1TZXR0aW5nIH0gPSB7fTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGMpLmZvckVhY2goKGNJZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRlbXBsYXRlc1tjSWRdID0gQmFyc2FBcGkuRXh0LmRlY29kZShjW2NJZF0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXJ0YWJsZVRlbXBsYXRlcyA9IHsgLi4uY2FydGFibGVUZW1wbGF0ZXMsIC4uLnRlbXBsYXRlcyB9O1xuICAgICAgICAgICAgdGhpcy5fY2FydGFibGVUZW1wbGF0ZXMkLm5leHQoY2FydGFibGVUZW1wbGF0ZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|