@libs-ui/components-drag-drop 0.2.126 → 0.2.128
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/drag-drop.directive.d.ts +1 -1
- package/esm2022/drag-drop.directive.mjs +4 -4
- package/esm2022/drag-item-in-container-virtual-scroll.directive.mjs +15 -6
- package/esm2022/drag-item.directive.mjs +52 -51
- package/esm2022/drag-scroll.directive.mjs +4 -4
- package/fesm2022/libs-ui-components-drag-drop.mjs +71 -61
- package/fesm2022/libs-ui-components-drag-drop.mjs.map +1 -1
- package/package.json +1 -1
package/drag-drop.directive.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export declare class LibsUiComponentsDragContainerDirective extends LibsUiCompon
|
|
|
8
8
|
readonly disableDragContainer: import("@angular/core").InputSignal<boolean | undefined>;
|
|
9
9
|
readonly mode: import("@angular/core").InputSignalWithTransform<string, "move" | "copy" | "deepCopy">;
|
|
10
10
|
readonly directionDrag: import("@angular/core").InputSignal<"horizontal" | "vertical" | undefined>;
|
|
11
|
-
readonly viewEncapsulation: import("@angular/core").InputSignalWithTransform<"
|
|
11
|
+
readonly viewEncapsulation: import("@angular/core").InputSignalWithTransform<"emulated" | "none", "emulated" | "none" | undefined>;
|
|
12
12
|
readonly acceptDragSameGroup: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
|
|
13
13
|
readonly placeholder: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
|
|
14
14
|
readonly groupName: import("@angular/core").InputSignalWithTransform<string, string | undefined>;
|
|
@@ -5,10 +5,10 @@ import { styleContainer } from "./defines/css.define";
|
|
|
5
5
|
import { LibsUiComponentsDragScrollDirective } from "./drag-scroll.directive";
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDragScrollDirective {
|
|
8
|
-
|
|
8
|
+
// #region PROPERTY
|
|
9
9
|
groupID = signal(uuid());
|
|
10
10
|
isDragOver = signal(false);
|
|
11
|
-
|
|
11
|
+
// #region INPUT
|
|
12
12
|
disableDragContainer = input();
|
|
13
13
|
mode = input('move', { transform: value => value ?? 'move' });
|
|
14
14
|
directionDrag = input();
|
|
@@ -19,7 +19,7 @@ export class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDrag
|
|
|
19
19
|
dropToGroupName = input(null); // nếu item trong các group A được drop vào group B nhưng group B không được drop vào group A
|
|
20
20
|
items = model.required();
|
|
21
21
|
stylesOverride = input();
|
|
22
|
-
|
|
22
|
+
// #region OUTPUT
|
|
23
23
|
outDragStartContainer = output();
|
|
24
24
|
outDragOverContainer = output();
|
|
25
25
|
outDragLeaveContainer = output();
|
|
@@ -467,4 +467,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
467
467
|
standalone: true,
|
|
468
468
|
}]
|
|
469
469
|
}], ctorParameters: () => [] });
|
|
470
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmFnLWRyb3Avc3JjL2RyYWctZHJvcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWEsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBTzlFLE1BQU0sT0FBTyxzQ0FBdUMsU0FBUSxtQ0FBbUM7SUFDN0YsY0FBYztJQUNOLE9BQU8sR0FBRyxNQUFNLENBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqQyxVQUFVLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRTVDLFdBQVc7SUFDRixvQkFBb0IsR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUN4QyxJQUFJLEdBQUcsS0FBSyxDQUF1QyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwRyxhQUFhLEdBQUcsS0FBSyxFQUE2QixDQUFDO0lBQ25ELGlCQUFpQixHQUFHLEtBQUssQ0FBdUQsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDekksbUJBQW1CLEdBQUcsS0FBSyxDQUErQixLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN6RyxXQUFXLEdBQUcsS0FBSyxDQUErQixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRixTQUFTLEdBQUcsS0FBSyxDQUE2Qix5QkFBeUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQywrQ0FBK0M7SUFDckwsZUFBZSxHQUFHLEtBQUssQ0FBdUIsSUFBSSxDQUFDLENBQUMsQ0FBQyw2RkFBNkY7SUFDbEosS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWtCLENBQUM7SUFDekMsY0FBYyxHQUFHLEtBQUssRUFBZ0QsQ0FBQztJQUVoRixZQUFZO0lBQ0gscUJBQXFCLEdBQUcsTUFBTSxFQUFjLENBQUM7SUFDN0Msb0JBQW9CLEdBQUcsTUFBTSxFQUFhLENBQUM7SUFDM0MscUJBQXFCLEdBQUcsTUFBTSxFQUFjLENBQUM7SUFDN0MsbUJBQW1CLEdBQUcsTUFBTSxFQUFZLENBQUM7SUFDekMsbUJBQW1CLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFDdEMsd0JBQXdCLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFDM0Msa0JBQWtCLEdBQUcsTUFBTSxFQUFpQyxDQUFDO0lBRXRFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQTRCLENBQUM7UUFFN0QsTUFBTSxTQUFTLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztnQkFDOUIsT0FBTztZQUNULENBQUM7WUFDRCxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNiLEdBQUcsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDL0UsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNqRSxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVEsZUFBZTtRQUN0QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUE0QixDQUFDO1FBRXRFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDdE0sTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqRCxRQUFRLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFMUUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQTBCLEVBQUUsRUFBRTtZQUV0RCxJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssY0FBYyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsY0FBYyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDMUcsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hELElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxlQUFlLEdBQUcsQ0FBQyxhQUF3QixFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsR0FBRyxhQUFhLENBQUM7WUFFdkQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDak0sT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUUsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sc0JBQXNCLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV2RSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxxREFBcUQ7Z0JBQ3JKLElBQUksc0JBQXNCLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztvQkFFdkksSUFBSSxpQkFBaUIsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7NEJBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ25DLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO3dCQUNwQixDQUFDLENBQUMsQ0FBQztvQkFFTCxDQUFDO29CQUNELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ3JDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO29CQUNwQixDQUFDLENBQUMsQ0FBQztvQkFDSCxpQkFBaUIsR0FBRyxhQUFhLENBQUM7b0JBQ2xDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztnQkFDbEYsQ0FBQztnQkFFRCxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksVUFBVSxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUM5UCxPQUFPO1lBQ1QsQ0FBQztZQUNELHFEQUFxRDtZQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFekMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDNUUsVUFBVSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDakMsVUFBVSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7WUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1lBRUgsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFNBQW1CLEVBQUUsVUFBb0IsRUFBRSxFQUFFO1lBQzFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUIsVUFBVSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBa0MsQ0FBQztZQUV2SSxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN4RyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQWMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTdKLElBQUksaUJBQWlCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxTQUFTLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUMvRixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDeEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbkMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7b0JBQ3BCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRXZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUV2QyxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksaUJBQWlCLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxhQUF3QixFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdEQsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUN0QyxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFdkQsSUFBSSxXQUFXLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xHLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFrQyxDQUFDO2dCQUN2SSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFjLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFFNUgsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssYUFBYSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyx5Q0FBeUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztvQkFDbk8sWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMzRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2xCLFFBQVEsQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUMvRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7Z0JBQzFGLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RyxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RixDQUFDO2dCQUVELE9BQU8scUJBQXFCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFDRCxJQUFJLENBQUMsK0JBQStCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFFN0UsNElBQTRJO1lBQzVJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO2dCQUN2RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDMUYsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLEVBQUUsR0FBRyxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLENBQUM7WUFFOUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDekIsYUFBYSxDQUFDLGVBQWUsR0FBRztvQkFDOUIsWUFBWSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7d0JBQzdCLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDOzRCQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDeEIsQ0FBQzt3QkFDRCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQzs0QkFDckIsT0FBTyxJQUFJLENBQUM7d0JBQ2QsQ0FBQzt3QkFFRCxPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDO2lCQUN3QixDQUFDO2dCQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRXBELE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQWtDLENBQUM7WUFDdkksSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBYyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUUzSSxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUMsb0VBQW9FO2dCQUN0RixPQUFPO1lBQ1QsQ0FBQztZQUNELFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFjLGVBQWUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRTlELElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLGFBQWEsQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsWUFBc0IsRUFBRSxFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztnQkFDaEMsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLElBQUksR0FBRyxTQUFTLENBQUM7WUFFckIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUM7WUFDakYsQ0FBQztZQUNELHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLFlBQVksQ0FBQztZQUVsRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbEcsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUUxRyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxXQUFXLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqTSxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFrQyxDQUFDO1lBQ3ZJLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQWMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUUvSCxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixTQUFTLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztnQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUU1QyxPQUFPO1lBQ1QsQ0FBQztZQUNELFNBQVMsQ0FBQyxXQUFXLEdBQUc7Z0JBQ3RCLFlBQVksRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO29CQUM3QixJQUFJLElBQUksS0FBSyxlQUFlLEVBQUUsQ0FBQzt3QkFDN0IsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztvQkFDRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3hCLENBQUM7b0JBQ0QsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQ3JCLE9BQU8sSUFBSSxDQUFDO29CQUNkLENBQUM7b0JBRUQsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDO2dCQUNoQyxDQUFDO2FBQ3dCLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBZ0IsRUFBRSxFQUFFO1lBQ3ZDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztnQkFDaEMsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxTQUFTLENBQUM7WUFFN0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNySCxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNqQixZQUFZLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzdFLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDcEMsWUFBWSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztnQkFDaEQsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDdkMsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUMxSSxPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hJLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUM7WUFFN0YsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsWUFBWSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7Z0JBQ3ZDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDcEMsWUFBWSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztZQUNoRCxDQUFDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDckMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUN2RSxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQztRQUVGLENBQUM7Z0JBQ0MsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVc7Z0JBQ3ZDLFlBQVksRUFBRSxnQkFBZ0I7YUFDL0IsRUFBRTtnQkFDRCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVTtnQkFDdEMsWUFBWSxFQUFFLGVBQWU7YUFDOUIsRUFBRTtnQkFDRCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVTtnQkFDdEMsWUFBWSxFQUFFLGVBQWU7YUFDOUIsRUFBRTtnQkFDRCxJQUFJLEVBQUUsV0FBVztnQkFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUztnQkFDckMsWUFBWSxFQUFFLGNBQWM7YUFDN0IsRUFBRTtnQkFDRCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNO2dCQUNsQyxZQUFZLEVBQUUsV0FBVzthQUMxQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBd0UsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEssQ0FBQztJQUVELEtBQUs7SUFDRyxLQUFLLENBQUMsOEJBQThCLENBQUMsZ0JBQTZCLEVBQUUsV0FBcUIsRUFBRSxXQUFvQjtRQUNySCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBa0MsQ0FBQztRQUN2SSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVmLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDekQsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFekQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBYyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUMzRyxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUM1RCxPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssSUFBSSxDQUFDLENBQUM7WUFDWCxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0MsWUFBWSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ3JELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztnQkFDaEMsWUFBWSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLFlBQVksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNqRSxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsWUFBWSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO2dCQUMzQixZQUFZLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkYsQ0FBQztZQUNELElBQUksV0FBVyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLG9DQUFvQyxDQUFDLEVBQUUsQ0FBQztvQkFDM0UsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztnQkFDbkUsQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMseUNBQXlDLENBQUMsRUFBRSxDQUFDO29CQUNoRixZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO2dCQUN4RSxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksV0FBVyxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3RILElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLENBQUM7d0JBQzNFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7b0JBQ25FLENBQUM7b0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLDJDQUEyQyxDQUFDLEVBQUUsQ0FBQzt3QkFDbEYsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkNBQTJDLENBQUMsQ0FBQztvQkFDMUUsQ0FBQztnQkFDSCxDQUFDO2dCQUVELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQVcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVMLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUMxRCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDdkIsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7b0JBQ25CLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8scUJBQXFCLENBQUMsZ0JBQTZCLEVBQUUsa0JBQWtCLEdBQUcsS0FBSztRQUNyRixJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RCxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQUEsQ0FBQztJQUVNLDJCQUEyQixDQUFDLFNBQWlCLEVBQUUsYUFBcUIsRUFBRSxlQUE0QjtRQUN4RyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDOUMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQzVFLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDekUsSUFBSSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7Z0JBQzlCLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDM0UsQ0FBQztZQUNELElBQUksU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO2dCQUM5QixlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFFRCxPQUFPO1FBQ1QsQ0FBQztRQUVELGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDMUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMzRSxJQUFJLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUM5QixlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxJQUFJLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUM5QixlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFFSCxDQUFDO0lBRU8sZUFBZSxDQUFDLGdCQUE2QjtRQUNuRCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBa0MsQ0FBQztRQUN2SSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVmLEtBQUssQ0FBQyxJQUFJLENBQWMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUM1RCxPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssSUFBSSxDQUFDLENBQUM7WUFDWCxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsZ0JBQTZCLEVBQUUsc0NBQWdEO1FBQ3RHLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFrQyxDQUFDO1FBRXZJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUMxRSxLQUFLLENBQUMsSUFBSSxDQUFjLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2hFLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDNUQsT0FBTztZQUNULENBQUM7WUFDRCxZQUFZLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQy9ELFlBQVksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUN4QixZQUFZLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlDLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLENBQUMsc0NBQXNDLEVBQUUsQ0FBQztvQkFFNUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDN0UsQ0FBQztnQkFDRCxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQzNFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7d0dBL2dCVSxzQ0FBc0M7NEZBQXRDLHNDQUFzQzs7NEZBQXRDLHNDQUFzQztrQkFMbEQsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSwwQ0FBMEM7b0JBQ3BELFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgT25EZXN0cm95LCBlZmZlY3QsIGlucHV0LCBtb2RlbCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBjaGVja01vdXNlT3ZlckluQ29udGFpbmVyLCBjbG9uZURlZXAsIGdldCwgc2V0LCB1dWlkIH0gZnJvbSBcIkBsaWJzLXVpL3V0aWxzXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHN0eWxlQ29udGFpbmVyIH0gZnJvbSBcIi4vZGVmaW5lcy9jc3MuZGVmaW5lXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRHJhZ1Njcm9sbERpcmVjdGl2ZSB9IGZyb20gXCIuL2RyYWctc2Nyb2xsLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgSURyYWdEcm9wRnVuY3Rpb25Db250cm9sRXZlbnQsIElEcmFnRW5kLCBJRHJhZ0xlYXZlLCBJRHJhZ092ZXIsIElEcmFnU3RhcnQsIElEcmFnZ2luZywgSURyb3AgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL2V2ZW50LmludGVyZmFjZVwiO1xuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiBcIltMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZV1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0RyYWdDb250YWluZXJEaXJlY3RpdmUgZXh0ZW5kcyBMaWJzVWlDb21wb25lbnRzRHJhZ1Njcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qIFBST1BFUlRZICovXG4gIHByaXZhdGUgZ3JvdXBJRCA9IHNpZ25hbDxzdHJpbmc+KHV1aWQoKSk7XG4gIHByaXZhdGUgaXNEcmFnT3ZlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyogSU5QVVQgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZURyYWdDb250YWluZXIgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBtb2RlID0gaW5wdXQ8c3RyaW5nLCAnbW92ZScgfCAnY29weScgfCAnZGVlcENvcHknPignbW92ZScsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSA/PyAnbW92ZScgfSk7XG4gIHJlYWRvbmx5IGRpcmVjdGlvbkRyYWcgPSBpbnB1dDwnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnPigpO1xuICByZWFkb25seSB2aWV3RW5jYXBzdWxhdGlvbiA9IGlucHV0PCdlbXVsYXRlZCcgfCAnbm9uZScsICdlbXVsYXRlZCcgfCAnbm9uZScgfCB1bmRlZmluZWQ+KCdlbXVsYXRlZCcsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSA/PyAnZW11bGF0ZWQnIH0pO1xuICByZWFkb25seSBhY2NlcHREcmFnU2FtZUdyb3VwID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbiB8IHVuZGVmaW5lZD4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSA/PyBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxib29sZWFuLCBib29sZWFuIHwgdW5kZWZpbmVkPih0cnVlLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgPz8gdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgZ3JvdXBOYW1lID0gaW5wdXQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KCdncm91cERyYWdBbmREcm9wRGVmYXVsdCcsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSA/PyAnZ3JvdXBEcmFnQW5kRHJvcERlZmF1bHQnIH0pOyAvLyBu4bq/dSBjw6FjIGdyb3VwIGPDsyB0w6puIHRyw7luZyBuaGF1IHPhur0gxJHGsOG7o2MgZHJvcFxuICByZWFkb25seSBkcm9wVG9Hcm91cE5hbWUgPSBpbnB1dDxBcnJheTxzdHJpbmc+IHwgbnVsbD4obnVsbCk7IC8vIG7hur91IGl0ZW0gdHJvbmcgY8OhYyBncm91cCBBIMSRxrDhu6NjIGRyb3AgdsOgbyBncm91cCBCIG5oxrBuZyBncm91cCBCIGtow7RuZyDEkcaw4bujYyBkcm9wIHbDoG8gZ3JvdXAgQVxuICByZWFkb25seSBpdGVtcyA9IG1vZGVsLnJlcXVpcmVkPEFycmF5PHVua25vd24+PigpO1xuICByZWFkb25seSBzdHlsZXNPdmVycmlkZSA9IGlucHV0PEFycmF5PHsgY2xhc3NOYW1lOiBzdHJpbmcsIHN0eWxlczogc3RyaW5nIH0+PigpO1xuXG4gIC8qIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXREcmFnU3RhcnRDb250YWluZXIgPSBvdXRwdXQ8SURyYWdTdGFydD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ092ZXJDb250YWluZXIgPSBvdXRwdXQ8SURyYWdPdmVyPigpO1xuICByZWFkb25seSBvdXREcmFnTGVhdmVDb250YWluZXIgPSBvdXRwdXQ8SURyYWdMZWF2ZT4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ0VuZENvbnRhaW5lciA9IG91dHB1dDxJRHJhZ0VuZD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJvcHBlZENvbnRhaW5lciA9IG91dHB1dDxJRHJvcD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJvcHBlZENvbnRhaW5lckVtcHR5ID0gb3V0cHV0PElEcm9wPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbkNvbnRyb2wgPSBvdXRwdXQ8SURyYWdEcm9wRnVuY3Rpb25Db250cm9sRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBjb25zdCBjb250YWluZXIgPSB7IGVsZW1lbnQgfTtcblxuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lci51cGRhdGUoZGF0YSA9PiB7XG4gICAgICBkYXRhLnNldCh0aGlzLmdyb3VwSUQoKSwgY29udGFpbmVyKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5yb290RWxlbWVudFNjcm9sbCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIHNldChjb250YWluZXIsICdlbGVtZW50U2Nyb2xsJywgdGhpcy5yb290RWxlbWVudFNjcm9sbCgpKTtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuQ29udGFpbmVyLnVwZGF0ZShjb250YWluZXJNYXAgPT4gbmV3IE1hcChjb250YWluZXJNYXApKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbkRyYWcoKSAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkgJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3V0RnVuY3Rpb25Db250cm9sLmVtaXQoeyBzZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWc6ICgpID0+IHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB9KTtcblxuICAgIHRoaXMub3V0RHJvcHBlZENvbnRhaW5lci5zdWJzY3JpYmUoZXZlbnREcm9wcGVkID0+IHtcbiAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJvcENvbnRhaW5lci5uZXh0KGV2ZW50RHJvcHBlZCk7XG4gICAgfSk7XG4gICAgIHRoaXMub25EZXN0cm95LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoaW5kZXhTcGxpY2VMaXN0VG8gPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4U3BsaWNlTGlzdFRvLCAxKTtcbiAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zXTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmRlbGV0ZSh0aGlzLmdyb3VwSUQoKSk7XG4gICAgfSk7XG4gICAgY29uc3QgZWxlbWVudENvbnRhaW5lciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgdGhpcy5pbml0U3R5bGVBbmRBdHRyaWJ1dGUoZWxlbWVudENvbnRhaW5lciwgdHJ1ZSk7XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25JdGVtSW5pdC5waXBlKGRlYm91bmNlVGltZSgyNTApLCBmaWx0ZXIoZ3JvdXBOYW1lID0+IGdyb3VwTmFtZSA9PT0gdGhpcy5ncm91cE5hbWUoKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRTdHlsZUFuZEF0dHJpYnV0ZShlbGVtZW50Q29udGFpbmVyKSk7XG4gICAgY29uc3Qgc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG5cbiAgICBzdHlsZVRhZy50ZXh0Q29udGVudCA9IHN0eWxlQ29udGFpbmVyKCh0aGlzLnN0eWxlc092ZXJyaWRlKCkgfHwgW10pLCB0aGlzLnZpZXdFbmNhcHN1bGF0aW9uKCksIHRoaXMuZ3JvdXBJRCgpKTtcbiAgICBlbGVtZW50Q29udGFpbmVyLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgICBlbGVtZW50Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NDb250YWluZXJEZWZpbmUpO1xuXG4gICAgY29uc3QgaGFuZGxlckRyYWdTdGFydCA9IChldmVudERyYWdTdGFydDogSURyYWdTdGFydCkgPT4ge1xuXG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyhlbGVtZW50Q29udGFpbmVyLCB0cnVlKTtcbiAgICAgIGlmICh0aGlzLmdyb3VwSUQoKSA9PT0gZXZlbnREcmFnU3RhcnQuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgdGhpcy5vdXREcmFnU3RhcnRDb250YWluZXIuZW1pdCh7IC4uLmV2ZW50RHJhZ1N0YXJ0LCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc3RvcmVJbmRleCA9IHsgaW5kZXhEcmFnOiAtMSwgaW5kZXhEcmFnT3ZlcjogLTEgfTtcbiAgICBsZXQgaW5kZXhTcGxpY2VMaXN0VG8gPSAtMTtcbiAgICBjb25zdCBoYW5kbGVyRHJhZ092ZXIgPSAoZXZlbnREcmFnT3ZlcjogSURyYWdPdmVyKSA9PiB7XG4gICAgICBjb25zdCB7IGVsZW1lbnREcmFnLCBlbGVtZW50RHJhZ092ZXIgfSA9IGV2ZW50RHJhZ092ZXI7XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkgfHwgIXRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmNoZWNrRWxlbWVudE92ZXJBY2NlcHRFbGVtZW50RHJhZyh0aGlzLmdyb3VwTmFtZSgpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2Ryb3BUb0dyb3VwTmFtZScpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleERyYWcgPSBOdW1iZXIoZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdpbmRleCcpKS52YWx1ZU9mKCk7XG4gICAgICBjb25zdCBpbmRleERyYWdPdmVyID0gTnVtYmVyKGVsZW1lbnREcmFnT3Zlci5nZXRBdHRyaWJ1dGUoJ2luZGV4JykpLnZhbHVlT2YoKTtcbiAgICAgIGNvbnN0IGlkR3JvdXBFbGVtZW50RHJhZyA9IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpO1xuICAgICAgY29uc3QgaWRHcm91cEVsZW1lbnREcmFnT3ZlciA9IGVsZW1lbnREcmFnT3Zlci5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKTtcblxuICAgICAgaWYgKCh0aGlzLmdyb3VwSUQoKSAhPT0gaWRHcm91cEVsZW1lbnREcmFnKSB8fCAoaWRHcm91cEVsZW1lbnREcmFnICE9PSBpZEdyb3VwRWxlbWVudERyYWdPdmVyKSkgeyAvLyB44butIGzDvSBjaG8gaXRlbSBkcmFnIG92ZXIgcXVhIDEgaXRlbSBraMOhYyBjb250YWluZXJcbiAgICAgICAgaWYgKGlkR3JvdXBFbGVtZW50RHJhZ092ZXIgPT09IHRoaXMuZ3JvdXBJRCgpICYmIHRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1vZGUoKSA9PT0gJ2RlZXBDb3B5JyA/IGNsb25lRGVlcCh0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8/Lml0ZW0pIDogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvPy5pdGVtO1xuXG4gICAgICAgICAgaWYgKGluZGV4U3BsaWNlTGlzdFRvID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4U3BsaWNlTGlzdFRvLCAxKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhEcmFnT3ZlciwgMCwgaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpbmRleFNwbGljZUxpc3RUbyA9IGluZGV4RHJhZ092ZXI7XG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lciwgZmFsc2UsIGluZGV4U3BsaWNlTGlzdFRvKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmFjY2VwdERyYWdTYW1lR3JvdXAoKSB8fCBpbmRleERyYWcgPCAwIHx8IGluZGV4RHJhZ092ZXIgPCAwIHx8ICF0aGlzLml0ZW1zKCkubGVuZ3RoIHx8IGluZGV4RHJhZyA+IHRoaXMuaXRlbXMoKS5sZW5ndGggfHwgaW5kZXhEcmFnT3ZlciA+IHRoaXMuaXRlbXMoKS5sZW5ndGggfHwgKHN0b3JlSW5kZXguaW5kZXhEcmFnID09PSBpbmRleERyYWcgJiYgc3RvcmVJbmRleC5pbmRleERyYWdPdmVyID09PSBpbmRleERyYWdPdmVyKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyB44butIGzDvSBjaG8gaXRlbSBkcmFnIG92ZXIgcXVhIDEgaXRlbSBjw7luZyBjb250YWluZXJcbiAgICAgIGNvbnN0IGl0ZW1EcmFnID0gdGhpcy5pdGVtcygpW2luZGV4RHJhZ107XG5cbiAgICAgIHRoaXMuc2V0QW5pbWF0aW9uRWxlbWVudERyYWdPdmVyKGluZGV4RHJhZywgaW5kZXhEcmFnT3ZlciwgZWxlbWVudERyYWdPdmVyKTtcbiAgICAgIHN0b3JlSW5kZXguaW5kZXhEcmFnID0gaW5kZXhEcmFnO1xuICAgICAgc3RvcmVJbmRleC5pbmRleERyYWdPdmVyID0gaW5kZXhEcmFnT3ZlcjtcbiAgICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4RHJhZywgMSk7XG4gICAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xuICAgICAgfSk7XG4gICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgIGl0ZW1zLnNwbGljZShpbmRleERyYWdPdmVyLCAwLCBpdGVtRHJhZyk7XG4gICAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xuICAgICAgfSk7XG5cbiAgICAgIGVsZW1lbnREcmFnLnNldEF0dHJpYnV0ZSgnaW5kZXgnLCBpbmRleERyYWdPdmVyLnRvU3RyaW5nKCkpO1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lcik7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbW92ZVBsYWNlaG9sZGVyRHJhZyA9IChldmVudERyYWc6IElEcmFnRW5kLCBpc0RyYWdnaW5nPzogYm9vbGVhbikgPT4ge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50KCkpO1xuICAgICAgc3RvcmVJbmRleC5pbmRleERyYWcgPSAtMTtcbiAgICAgIHN0b3JlSW5kZXguaW5kZXhEcmFnT3ZlciA9IC0xO1xuICAgICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG5cbiAgICAgIGlmICghY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihldmVudERyYWcubW91c2VQb3NpdGlvbiwgKHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCBlbGVtZW50Q29udGFpbmVyKSkpIHtcbiAgICAgICAgY29uc3QgY2hpbGRFbGVtZW50SW5kZXggPSBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZpbmRJbmRleCgoY2hpbGQpID0+IGNoaWxkLmNsYXNzTGlzdC5jb250YWlucygnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJykpO1xuXG4gICAgICAgIGlmIChjaGlsZEVsZW1lbnRJbmRleCA+PSAwICYmIHRoaXMuZ3JvdXBJRCgpICE9PSBldmVudERyYWcuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgICBpdGVtcy5zcGxpY2UoY2hpbGRFbGVtZW50SW5kZXgsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXhTcGxpY2VMaXN0VG8gPSAtMTtcblxuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZXMoZWxlbWVudENvbnRhaW5lciwgaXNEcmFnZ2luZyk7XG4gICAgICAgIHRoaXMuc2V0SW5kZXhFbGVtZW50KGVsZW1lbnRDb250YWluZXIpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleFNwbGljZUxpc3RUbyA+PSAwKSB7XG4gICAgICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhTcGxpY2VMaXN0VG8sIDEpO1xuICAgICAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGluZGV4U3BsaWNlTGlzdFRvID0gLTE7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZXJEcmFnZ2luZyA9IChldmVudERyYWdnaW5nOiBJRHJhZ2dpbmcpID0+IHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXIpO1xuICAgICAgY29uc3QgeyBlbGVtZW50RHJhZyB9ID0gZXZlbnREcmFnZ2luZztcbiAgICAgIGNvbnN0IGZpZWxkSWRJdGVtID0gZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdmaWVsZF9pZCcpO1xuICAgICAgY29uc3QgaWRJdGVtRHJhZyA9IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnaXRlbV9pZCcpO1xuXG4gICAgICBpZiAoZmllbGRJZEl0ZW0gJiYgaWRJdGVtRHJhZyAmJiB0aGlzLml0ZW1zKCkuZmluZChpdGVtID0+IGdldChpdGVtLCBmaWVsZElkSXRlbSkgPT09IGlkSXRlbURyYWcpKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuRWxlbWVudCA9IGVsZW1lbnRDb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmUpIGFzIHVua25vd24gYXMgQXJyYXk8SFRNTEVsZW1lbnQ+O1xuICAgICAgICBjb25zdCBjaGlsZEVsZW1lbnQgPSBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZpbmQoKGNoaWxkKSA9PiBjaGlsZC5nZXRBdHRyaWJ1dGUoJ2l0ZW1faWQnKSA9PT0gaWRJdGVtRHJhZyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbXMoKSA9PT0gZXZlbnREcmFnZ2luZy5pdGVtRHJhZ0luZm8/Lml0ZW1zRHJhZygpICYmIGNoaWxkRWxlbWVudCAmJiAhY2hpbGRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJykgJiYgIWNoaWxkRWxlbWVudC5nZXRBdHRyaWJ1dGUodGhpcy5kcmFnRHJvcFNlcnZpY2UuVGFyZ2V0SXRlbURyYWdGbGFnKSkge1xuICAgICAgICAgIGNoaWxkRWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5kcmFnRHJvcFNlcnZpY2UuVGFyZ2V0SXRlbURyYWdGbGFnLCAndHJ1ZScpO1xuICAgICAgICAgIHRoaXMuZ3JvdXBJRC5zZXQoZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykgfHwgJycpO1xuICAgICAgICAgIHN0eWxlVGFnLnJlbW92ZSgpO1xuICAgICAgICAgIHN0eWxlVGFnLnRleHRDb250ZW50ID0gc3R5bGVDb250YWluZXIoKHRoaXMuc3R5bGVzT3ZlcnJpZGUoKSB8fCBbXSksIHRoaXMudmlld0VuY2Fwc3VsYXRpb24oKSwgdGhpcy5ncm91cElEKCkpO1xuICAgICAgICAgIGVsZW1lbnRDb250YWluZXIuYXBwZW5kQ2hpbGQoc3R5bGVUYWcpO1xuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXIsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5ncm91cElEKCkgPT09IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpICYmICF0aGlzLmFjY2VwdERyYWdTYW1lR3JvdXAoKSkge1xuICAgICAgICB0aGlzLmNoZWNrQW5kU2Nyb2xsRWxlbWVudFRvUG9zaXRpb24oZXZlbnREcmFnZ2luZywgdGhpcy5pZ25vcmVBdXRvU2Nyb2xsKCkgfHwgIXRoaXMuYWNjZXB0RHJhZ1NhbWVHcm91cCgpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWNoZWNrTW91c2VPdmVySW5Db250YWluZXIoZXZlbnREcmFnZ2luZy5tb3VzZVBvc2l0aW9uLCAodGhpcy5yb290RWxlbWVudFNjcm9sbCgpIHx8IGVsZW1lbnRDb250YWluZXIpKSkge1xuICAgICAgICBpZiAodGhpcy5pc0RyYWdPdmVyKCkpIHtcbiAgICAgICAgICB0aGlzLmlzRHJhZ092ZXIuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLm91dERyYWdMZWF2ZUNvbnRhaW5lci5lbWl0KHsgLi4uZXZlbnREcmFnZ2luZywgZWxlbWVudERyYWdMZWF2ZTogZWxlbWVudENvbnRhaW5lciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZW1vdmVQbGFjZWhvbGRlckRyYWcoZXZlbnREcmFnZ2luZywgdHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoZWNrQW5kU2Nyb2xsRWxlbWVudFRvUG9zaXRpb24oZXZlbnREcmFnZ2luZywgdGhpcy5pZ25vcmVBdXRvU2Nyb2xsKCkpO1xuXG4gICAgICAvLyDEkG/huqFuIGNvZGUgeOG7rSBsw70gY2hvIHZp4buHYyBrw6lvIG3hu5l0IGVsZW1lbnQgdsOgbyAxIGNvbnRhaW5lciBuaMawbmcgY29udGFpbmVyIGtow7RuZyBjw7MgaXRlbSBob+G6t2MgaXRlbSBkcmFnIGtow7RuZyBvdmVyIHF1YSBpdGVtIHRyb25nIGNvbnRhaW5lclxuICAgICAgaWYgKCF0aGlzLmlzRHJhZ092ZXIoKSkge1xuICAgICAgICBlbGVtZW50Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWNvbnRhaW5lci1kcmFnb3ZlcicpO1xuICAgICAgICB0aGlzLmlzRHJhZ092ZXIuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLm91dERyYWdPdmVyQ29udGFpbmVyLmVtaXQoeyAuLi5ldmVudERyYWdnaW5nLCBlbGVtZW50RHJhZ092ZXI6IGVsZW1lbnRDb250YWluZXIgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBldmVudERyYWdPdmVyID0geyAuLi5ldmVudERyYWdnaW5nLCBlbGVtZW50RHJhZ092ZXI6IGVsZW1lbnRDb250YWluZXIgfTtcblxuICAgICAgaWYgKCF0aGlzLml0ZW1zKCkubGVuZ3RoKSB7XG4gICAgICAgIGV2ZW50RHJhZ092ZXIuZWxlbWVudERyYWdPdmVyID0ge1xuICAgICAgICAgIGdldEF0dHJpYnV0ZTogKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdncm91cElEJykge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ncm91cElEKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmFtZSAhPT0gJ2luZGV4Jykge1xuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIHVua25vd24gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ092ZXIubmV4dChldmVudERyYWdPdmVyKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNoaWxkcmVuRWxlbWVudCA9IGVsZW1lbnRDb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmUpIGFzIHVua25vd24gYXMgQXJyYXk8SFRNTEVsZW1lbnQ+O1xuICAgICAgbGV0IGNoaWxkRWxlbWVudCA9IEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KGNoaWxkcmVuRWxlbWVudCkuZmluZCgoY2hpbGQpID0+IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIoZXZlbnREcmFnZ2luZy5tb3VzZVBvc2l0aW9uLCBjaGlsZCkpO1xuXG4gICAgICBpZiAoY2hpbGRFbGVtZW50KSB7IC8vIG7hur91IHTDrG0gdGjhuqV5IHRow6wgc+G6vSBuaOG6rW4gcXVhIHPhu7Ega2nhu4duIGPhu6dhIGRyYWctaXRlbS5kaXJlY3RpdmUgZW1pdFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjaGlsZEVsZW1lbnQgPSBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLnBvcCgpO1xuXG4gICAgICBpZiAoY2hpbGRFbGVtZW50KSB7XG4gICAgICAgIGV2ZW50RHJhZ092ZXIuZWxlbWVudERyYWdPdmVyID0gY2hpbGRFbGVtZW50O1xuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdPdmVyLm5leHQoZXZlbnREcmFnT3Zlcik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZXJEcmFnRW5kID0gKGV2ZW50RHJhZ0VuZDogSURyYWdFbmQpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IHJlY3QgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh0aGlzLnJvb3RFbGVtZW50U2Nyb2xsKCkgfHwgZWxlbWVudENvbnRhaW5lcikge1xuICAgICAgICByZWN0ID0gKHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCBlbGVtZW50Q29udGFpbmVyKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB9XG4gICAgICByZW1vdmVQbGFjZWhvbGRlckRyYWcoZXZlbnREcmFnRW5kKTtcbiAgICAgIGNvbnN0IHsgZWxlbWVudERyYWcsIG1vdXNlUG9zaXRpb24sIGl0ZW1EcmFnSW5mbyB9ID0gZXZlbnREcmFnRW5kO1xuXG4gICAgICBpZiAodGhpcy5ncm91cElEKCkgPT09IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpKSB7XG4gICAgICAgIHRoaXMub3V0RHJhZ0VuZENvbnRhaW5lci5lbWl0KHsgLi4uZXZlbnREcmFnRW5kIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKG1vdXNlUG9zaXRpb24sIHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCBlbGVtZW50Q29udGFpbmVyLCByZWN0KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBldmVudERyb3AgPSB7IGVsZW1lbnREcmFnOiBlbGVtZW50RHJhZywgZWxlbWVudERyb3A6IGVsZW1lbnRDb250YWluZXIsIGl0ZW1EcmFnSW5mbzogaXRlbURyYWdJbmZvIH07XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkgfHwgIXRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmNoZWNrRWxlbWVudE92ZXJBY2NlcHRFbGVtZW50RHJhZyh0aGlzLmdyb3VwTmFtZSgpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2Ryb3BUb0dyb3VwTmFtZScpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNoaWxkcmVuRWxlbWVudCA9IGVsZW1lbnRDb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmUpIGFzIHVua25vd24gYXMgQXJyYXk8SFRNTEVsZW1lbnQ+O1xuICAgICAgY29uc3QgY2hpbGRFbGVtZW50ID0gQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oY2hpbGRyZW5FbGVtZW50KS5maW5kKChjaGlsZCkgPT4gY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihtb3VzZVBvc2l0aW9uLCBjaGlsZCkpO1xuXG4gICAgICBpZiAoY2hpbGRFbGVtZW50KSB7XG4gICAgICAgIGV2ZW50RHJvcC5lbGVtZW50RHJvcCA9IGNoaWxkRWxlbWVudDtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25Ecm9wLm5leHQoZXZlbnREcm9wKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBldmVudERyb3AuZWxlbWVudERyb3AgPSB7XG4gICAgICAgIGdldEF0dHJpYnV0ZTogKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChuYW1lID09PSAnZHJvcENvbnRhaW5lcicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ2dyb3VwSUQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncm91cElEKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuYW1lICE9PSAnaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW5FbGVtZW50Lmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50O1xuICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25Ecm9wLm5leHQoZXZlbnREcm9wKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlckRyb3AgPSAoZXZlbnREcm9wOiBJRHJvcCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7IGVsZW1lbnREcmFnLCBlbGVtZW50RHJvcCwgaXRlbURyYWdJbmZvIH0gPSBldmVudERyb3A7XG5cbiAgICAgIGlmICh0aGlzLmdyb3VwSUQoKSA9PT0gZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykgJiYgdGhpcy5ncm91cElEKCkgPT09IGVsZW1lbnREcm9wLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpKSB7XG4gICAgICAgIGlmIChpdGVtRHJhZ0luZm8pIHtcbiAgICAgICAgICBpdGVtRHJhZ0luZm8uaW5kZXhEcm9wID0gTnVtYmVyKGVsZW1lbnREcm9wLmdldEF0dHJpYnV0ZSgnaW5kZXgnKSkudmFsdWVPZigpO1xuICAgICAgICAgIGl0ZW1EcmFnSW5mby5pdGVtc0Ryb3AgPSB0aGlzLml0ZW1zO1xuICAgICAgICAgIGl0ZW1EcmFnSW5mby5jb250YWluZXJEcm9wID0gZWxlbWVudENvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hY2NlcHREcmFnU2FtZUdyb3VwKCkpIHtcbiAgICAgICAgICB0aGlzLm91dERyb3BwZWRDb250YWluZXIuZW1pdChldmVudERyb3ApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlcyhlbGVtZW50Q29udGFpbmVyKTtcbiAgICAgICAgdGhpcy5zZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZ3JvdXBJRCgpICE9PSBlbGVtZW50RHJvcC5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSB8fCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSA9PT0gZWxlbWVudERyb3AuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhEcmFnT3ZlciA9IE51bWJlcihlbGVtZW50RHJvcC5nZXRBdHRyaWJ1dGUoJ2luZGV4JykpLnZhbHVlT2YoKSAtIChlbGVtZW50RHJvcC5nZXRBdHRyaWJ1dGUoJ2Ryb3BDb250YWluZXInKSA/IDAgOiAxKTtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1vZGUoKSA9PT0gJ2RlZXBDb3B5JyA/IGNsb25lRGVlcChpdGVtRHJhZ0luZm8/Lml0ZW0pIDogaXRlbURyYWdJbmZvPy5pdGVtO1xuXG4gICAgICBpZiAoaXRlbURyYWdJbmZvKSB7XG4gICAgICAgIGl0ZW1EcmFnSW5mby5pbmRleERyb3AgPSBpbmRleERyYWdPdmVyO1xuICAgICAgICBpdGVtRHJhZ0luZm8uaXRlbXNEcm9wID0gdGhpcy5pdGVtcztcbiAgICAgICAgaXRlbURyYWdJbmZvLmNvbnRhaW5lckRyb3AgPSBlbGVtZW50Q29udGFpbmVyO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuaXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5vdXREcm9wcGVkQ29udGFpbmVyRW1wdHkuZW1pdChldmVudERyb3ApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgIGl0ZW1zLnNwbGljZShpbmRleERyYWdPdmVyLCAwLCBpdGVtKTtcbiAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICB9KTtcblxuICAgICAgaWYgKGl0ZW1EcmFnSW5mbyAmJiBpdGVtRHJhZ0luZm8uaXRlbXNNb3ZlICYmIGl0ZW1EcmFnSW5mby5pdGVtc01vdmUoKSkge1xuICAgICAgICBpdGVtRHJhZ0luZm8uaXRlbXNEcmFnLnNldChbLi4uaXRlbURyYWdJbmZvLml0ZW1zTW92ZSgpXSk7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm91dERyb3BwZWRDb250YWluZXIuZW1pdChldmVudERyb3ApO1xuICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVzKGVsZW1lbnRDb250YWluZXIpO1xuICAgICAgdGhpcy5zZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcik7XG4gICAgfTtcblxuICAgIFt7XG4gICAgICBuYW1lOiAnT25EcmFnU3RhcnQnLFxuICAgICAgZXZlbnQ6IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ1N0YXJ0LFxuICAgICAgZnVuY3Rpb25DYWxsOiBoYW5kbGVyRHJhZ1N0YXJ0XG4gICAgfSwge1xuICAgICAgbmFtZTogJ09uRHJhZ092ZXInLFxuICAgICAgZXZlbnQ6IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ092ZXIsXG4gICAgICBmdW5jdGlvbkNhbGw6IGhhbmRsZXJEcmFnT3ZlclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdPbkRyYWdnaW5nJyxcbiAgICAgIGV2ZW50OiB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdnaW5nLFxuICAgICAgZnVuY3Rpb25DYWxsOiBoYW5kbGVyRHJhZ2dpbmdcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnT25EcmFnRW5kJyxcbiAgICAgIGV2ZW50OiB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdFbmQsXG4gICAgICBmdW5jdGlvbkNhbGw6IGhhbmRsZXJEcmFnRW5kXG4gICAgfSwge1xuICAgICAgbmFtZTogJ09uRHJvcCcsXG4gICAgICBldmVudDogdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25Ecm9wLFxuICAgICAgZnVuY3Rpb25DYWxsOiBoYW5kbGVyRHJvcFxuICAgIH1dLmZvckVhY2goKGl0ZW06IHsgbmFtZTogc3RyaW5nOyBldmVudDogT2JzZXJ2YWJsZTx1bmtub3duPjsgZnVuY3Rpb25DYWxsOiBvYmplY3QgfSkgPT4gKGl0ZW0uZXZlbnQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoaXRlbS5mdW5jdGlvbkNhbGwpKSk7XG5cbiAgfVxuXG4gIC8qICovXG4gIHByaXZhdGUgYXN5bmMgc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXI6IEhUTUxFbGVtZW50LCBzZXRJdGVtRHJhZz86IGJvb2xlYW4sIGluZGV4SW5zZXJ0PzogbnVtYmVyKSB7XG4gICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG4gICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICBlbGVtZW50Q29udGFpbmVyLnNldEF0dHJpYnV0ZSgnZ3JvdXBJRCcsIHRoaXMuZ3JvdXBJRCgpKTtcbiAgICBlbGVtZW50Q29udGFpbmVyLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZURyYWdDb250YWluZXInKTtcblxuICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkpIHtcbiAgICAgIGVsZW1lbnRDb250YWluZXIuc2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicsIGAke3RoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKX1gKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZ3JvdXBOYW1lKCkpIHtcbiAgICAgIGVsZW1lbnRDb250YWluZXIuc2V0QXR0cmlidXRlKCdncm91cE5hbWUnLCB0aGlzLmdyb3VwTmFtZSgpIHx8ICcnKTtcbiAgICB9XG4gICAgQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oY2hpbGRyZW5FbGVtZW50KS5mb3JFYWNoKChjaGlsZEVsZW1lbnQpID0+IHtcbiAgICAgIGlmICghY2hpbGRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZ3JvdXBOYW1lJykgfHwgY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBOYW1lJykgPT09IHRoaXMuZ3JvdXBOYW1lKCkpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZ3JvdXBJRCcsIHRoaXMuZ3JvdXBJRCgpKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cElEJykgIT09IHRoaXMuZ3JvdXBJRCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGluZGV4ICs9IDE7XG4gICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKCdpbmRleCcsIGAke2luZGV4fWApO1xuICAgICAgY2hpbGRFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZURyYWdDb250YWluZXInKTtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGlzYWJsZURyYWdDb250YWluZXInLCBgJHt0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCl9YCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ncm91cE5hbWUoKSAmJiAhY2hpbGRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZ3JvdXBOYW1lJykpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZ3JvdXBOYW1lJywgdGhpcy5ncm91cE5hbWUoKSB8fCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlcigpKSB7XG4gICAgICAgIGNoaWxkRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgYCR7dGhpcy5wbGFjZWhvbGRlcigpfWApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZHJvcFRvR3JvdXBOYW1lKCkpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZHJvcFRvR3JvdXBOYW1lJywgYCR7dGhpcy5kcm9wVG9Hcm91cE5hbWUoKT8uam9pbignOycpfWApO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4SW5zZXJ0ID09PSBpbmRleCAmJiB0aGlzLnBsYWNlaG9sZGVyKCkpIHtcbiAgICAgICAgaWYgKCFjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXBsYWNlaG9sZGVyJykpIHtcbiAgICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1wbGFjZWhvbGRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2hpbGRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJykpIHtcbiAgICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNldEl0ZW1EcmFnICYmIGNoaWxkRWxlbWVudC5nZXRBdHRyaWJ1dGUodGhpcy5kcmFnRHJvcFNlcnZpY2UuVGFyZ2V0SXRlbURyYWdGbGFnKSAmJiB0aGlzLml0ZW1zKCkubGVuZ3RoID49IGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyKCkpIHtcbiAgICAgICAgICBpZiAoIWNoaWxkRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tcGxhY2Vob2xkZXInKSkge1xuICAgICAgICAgICAgY2hpbGRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tcGxhY2Vob2xkZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLW9yaWdpbi1wbGFjZWhvbGRlcicpKSB7XG4gICAgICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1vcmlnaW4tcGxhY2Vob2xkZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gPSB7IGl0ZW06IHRoaXMuaXRlbXMoKVtpbmRleF0gYXMgb2JqZWN0LCBpbmRleERyYWc6IGluZGV4LCBpdGVtc0RyYWc6IHRoaXMuaXRlbXMsIGNvbnRhaW5lckRyYWc6IGVsZW1lbnRDb250YWluZXIsIGl0ZW1zTW92ZTogc2lnbmFsKFsuLi50aGlzLml0ZW1zKCldKSB9O1xuICAgICAgICBpZiAodGhpcy5tb2RlKCkgPT09ICdtb3ZlJykge1xuICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mby5pdGVtc01vdmU/LnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5pdGVtc11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U3R5bGVBbmRBdHRyaWJ1dGUoZWxlbWVudENvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGhhc1JlbW92ZUF0dHJpYnV0ZSA9IGZhbHNlLCkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXIpO1xuICAgIGlmIChoYXNSZW1vdmVBdHRyaWJ1dGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlcyhlbGVtZW50Q29udGFpbmVyKTtcbiAgICB9XG4gICAgdGhpcy5zZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcik7XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXRBbmltYXRpb25FbGVtZW50RHJhZ092ZXIoaW5kZXhEcmFnOiBudW1iZXIsIGluZGV4RHJhZ092ZXI6IG51bWJlciwgZWxlbWVudERyYWdPdmVyOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICghdGhpcy5kaXJlY3Rpb25EcmFnKCkgfHwgIWVsZW1lbnREcmFnT3Zlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXJlY3Rpb25EcmFnKCkgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS1ib3R0b20nKTtcbiAgICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS10b3AnKTtcbiAgICAgIGlmIChpbmRleERyYWcgPiBpbmRleERyYWdPdmVyKSB7XG4gICAgICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS1ib3R0b20nKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleERyYWcgPCBpbmRleERyYWdPdmVyKSB7XG4gICAgICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS10b3AnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS1sZWZ0Jyk7XG4gICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLXJpZ2h0Jyk7XG4gICAgaWYgKGluZGV4RHJhZyA+IGluZGV4RHJhZ092ZXIpIHtcbiAgICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS1yaWdodCcpO1xuICAgIH1cbiAgICBpZiAoaW5kZXhEcmFnIDwgaW5kZXhEcmFnT3Zlcikge1xuICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLWxlZnQnKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5kZXhFbGVtZW50KGVsZW1lbnRDb250YWluZXI6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG4gICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZvckVhY2goKGNoaWxkRWxlbWVudCkgPT4ge1xuICAgICAgaWYgKGNoaWxkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSAhPT0gdGhpcy5ncm91cElEKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaW5kZXggKz0gMTtcbiAgICAgIGNoaWxkRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2luZGV4JywgYCR7aW5kZXh9YCk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQXR0cmlidXRlcyhlbGVtZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudCwgaWdub3JlUmVtb3ZlQ2xhc3NJdGVtT3JpZ2luUGxhY2Vob2xkZXI/OiBib29sZWFuKSB7XG4gICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG5cbiAgICBlbGVtZW50Q29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWNvbnRhaW5lci1kcmFnb3ZlcicpO1xuICAgIEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KGNoaWxkcmVuRWxlbWVudCkuZm9yRWFjaCgoY2hpbGRFbGVtZW50KSA9PiB7XG4gICAgICBpZiAoY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpICE9PSB0aGlzLmdyb3VwSUQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjaGlsZEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdpbmRleCcpO1xuICAgICAgaWYgKCF0aGlzLmRyb3BUb0dyb3VwTmFtZSgpIHx8ICF0aGlzLmRyb3BUb0dyb3VwTmFtZSgpPy5sZW5ndGgpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZHJvcFRvR3JvdXBOYW1lJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdwbGFjZWhvbGRlcicpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1wbGFjZWhvbGRlcicpO1xuICAgICAgICBpZiAoIWlnbm9yZVJlbW92ZUNsYXNzSXRlbU9yaWdpblBsYWNlaG9sZGVyKSB7XG5cbiAgICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1vcmlnaW4tcGxhY2Vob2xkZXInKTtcbiAgICAgICAgfVxuICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxufVxuIl19
|
|
470
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmFnLWRyb3Avc3JjL2RyYWctZHJvcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWEsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBTzlFLE1BQU0sT0FBTyxzQ0FBdUMsU0FBUSxtQ0FBbUM7SUFDN0YsbUJBQW1CO0lBQ1gsT0FBTyxHQUFHLE1BQU0sQ0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFNUMsZ0JBQWdCO0lBQ1Asb0JBQW9CLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDeEMsSUFBSSxHQUFHLEtBQUssQ0FBdUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEcsYUFBYSxHQUFHLEtBQUssRUFBNkIsQ0FBQztJQUNuRCxpQkFBaUIsR0FBRyxLQUFLLENBQXVELFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3pJLG1CQUFtQixHQUFHLEtBQUssQ0FBK0IsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekcsV0FBVyxHQUFHLEtBQUssQ0FBK0IsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0YsU0FBUyxHQUFHLEtBQUssQ0FBNkIseUJBQXlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUkseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsK0NBQStDO0lBQ3JMLGVBQWUsR0FBRyxLQUFLLENBQXVCLElBQUksQ0FBQyxDQUFDLENBQUMsNkZBQTZGO0lBQ2xKLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO0lBQ3pDLGNBQWMsR0FBRyxLQUFLLEVBQWdELENBQUM7SUFFaEYsaUJBQWlCO0lBQ1IscUJBQXFCLEdBQUcsTUFBTSxFQUFjLENBQUM7SUFDN0Msb0JBQW9CLEdBQUcsTUFBTSxFQUFhLENBQUM7SUFDM0MscUJBQXFCLEdBQUcsTUFBTSxFQUFjLENBQUM7SUFDN0MsbUJBQW1CLEdBQUcsTUFBTSxFQUFZLENBQUM7SUFDekMsbUJBQW1CLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFDdEMsd0JBQXdCLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFDM0Msa0JBQWtCLEdBQUcsTUFBTSxFQUFpQyxDQUFDO0lBRXRFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQTRCLENBQUM7UUFFN0QsTUFBTSxTQUFTLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztnQkFDOUIsT0FBTztZQUNULENBQUM7WUFDRCxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNiLEdBQUcsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDL0UsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNqRSxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVEsZUFBZTtRQUN0QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUE0QixDQUFDO1FBRXRFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDdE0sTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqRCxRQUFRLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFMUUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQTBCLEVBQUUsRUFBRTtZQUV0RCxJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssY0FBYyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsY0FBYyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDMUcsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hELElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxlQUFlLEdBQUcsQ0FBQyxhQUF3QixFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsR0FBRyxhQUFhLENBQUM7WUFFdkQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDak0sT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUUsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sc0JBQXNCLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV2RSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxxREFBcUQ7Z0JBQ3JKLElBQUksc0JBQXNCLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztvQkFFdkksSUFBSSxpQkFBaUIsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7NEJBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ25DLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO3dCQUNwQixDQUFDLENBQUMsQ0FBQztvQkFFTCxDQUFDO29CQUNELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ3JDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO29CQUNwQixDQUFDLENBQUMsQ0FBQztvQkFDSCxpQkFBaUIsR0FBRyxhQUFhLENBQUM7b0JBQ2xDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztnQkFDbEYsQ0FBQztnQkFFRCxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksVUFBVSxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUM5UCxPQUFPO1lBQ1QsQ0FBQztZQUNELHFEQUFxRDtZQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFekMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDNUUsVUFBVSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDakMsVUFBVSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7WUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1lBRUgsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFNBQW1CLEVBQUUsVUFBb0IsRUFBRSxFQUFFO1lBQzFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUIsVUFBVSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBa0MsQ0FBQztZQUV2SSxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN4RyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQWMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTdKLElBQUksaUJBQWlCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxTQUFTLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUMvRixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDeEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbkMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7b0JBQ3BCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRXZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUV2QyxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksaUJBQWlCLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxhQUF3QixFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdEQsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUN0QyxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFdkQsSUFBSSxXQUFXLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xHLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFrQyxDQUFDO2dCQUN2SSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFjLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFFNUgsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssYUFBYSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyx5Q0FBeUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztvQkFDbk8sWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMzRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2xCLFFBQVEsQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUMvRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7Z0JBQzFGLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RyxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RixDQUFDO2dCQUVELE9BQU8scUJBQXFCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFDRCxJQUFJLENBQUMsK0JBQStCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFFN0UsNElBQTRJO1lBQzVJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO2dCQUN2RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDMUYsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLEVBQUUsR0FBRyxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLENBQUM7WUFFOUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDekIsYUFBYSxDQUFDLGVBQWUsR0FBRztvQkFDOUIsWUFBWSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7d0JBQzdCLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDOzRCQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDeEIsQ0FBQzt3QkFDRCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQzs0QkFDckIsT0FBTyxJQUFJLENBQUM7d0JBQ2QsQ0FBQzt3QkFFRCxPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDO2lCQUN3QixDQUFDO2dCQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRXBELE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQWtDLENBQUM7WUFDdkksSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBYyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUUzSSxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUMsb0VBQW9FO2dCQUN0RixPQUFPO1lBQ1QsQ0FBQztZQUNELFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFjLGVBQWUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRTlELElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLGFBQWEsQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsWUFBc0IsRUFBRSxFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztnQkFDaEMsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLElBQUksR0FBRyxTQUFTLENBQUM7WUFFckIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUM7WUFDakYsQ0FBQztZQUNELHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLFlBQVksQ0FBQztZQUVsRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbEcsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUUxRyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxXQUFXLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqTSxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFrQyxDQUFDO1lBQ3ZJLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQWMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUUvSCxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixTQUFTLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztnQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUU1QyxPQUFPO1lBQ1QsQ0FBQztZQUNELFNBQVMsQ0FBQyxXQUFXLEdBQUc7Z0JBQ3RCLFlBQVksRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO29CQUM3QixJQUFJLElBQUksS0FBSyxlQUFlLEVBQUUsQ0FBQzt3QkFDN0IsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztvQkFDRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3hCLENBQUM7b0JBQ0QsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQ3JCLE9BQU8sSUFBSSxDQUFDO29CQUNkLENBQUM7b0JBRUQsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDO2dCQUNoQyxDQUFDO2FBQ3dCLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBZ0IsRUFBRSxFQUFFO1lBQ3ZDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztnQkFDaEMsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxTQUFTLENBQUM7WUFFN0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNySCxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNqQixZQUFZLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzdFLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDcEMsWUFBWSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztnQkFDaEQsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDdkMsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUMxSSxPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hJLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUM7WUFFN0YsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsWUFBWSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7Z0JBQ3ZDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDcEMsWUFBWSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztZQUNoRCxDQUFDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDckMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUN2RSxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQztRQUVGLENBQUM7Z0JBQ0MsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVc7Z0JBQ3ZDLFlBQVksRUFBRSxnQkFBZ0I7YUFDL0IsRUFBRTtnQkFDRCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVTtnQkFDdEMsWUFBWSxFQUFFLGVBQWU7YUFDOUIsRUFBRTtnQkFDRCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVTtnQkFDdEMsWUFBWSxFQUFFLGVBQWU7YUFDOUIsRUFBRTtnQkFDRCxJQUFJLEVBQUUsV0FBVztnQkFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUztnQkFDckMsWUFBWSxFQUFFLGNBQWM7YUFDN0IsRUFBRTtnQkFDRCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNO2dCQUNsQyxZQUFZLEVBQUUsV0FBVzthQUMxQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBd0UsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEssQ0FBQztJQUVELEtBQUs7SUFDRyxLQUFLLENBQUMsOEJBQThCLENBQUMsZ0JBQTZCLEVBQUUsV0FBcUIsRUFBRSxXQUFvQjtRQUNySCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBa0MsQ0FBQztRQUN2SSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVmLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDekQsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFekQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBYyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUMzRyxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUM1RCxPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssSUFBSSxDQUFDLENBQUM7WUFDWCxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0MsWUFBWSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ3JELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztnQkFDaEMsWUFBWSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLFlBQVksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNqRSxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsWUFBWSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO2dCQUMzQixZQUFZLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkYsQ0FBQztZQUNELElBQUksV0FBVyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLG9DQUFvQyxDQUFDLEVBQUUsQ0FBQztvQkFDM0UsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztnQkFDbkUsQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMseUNBQXlDLENBQUMsRUFBRSxDQUFDO29CQUNoRixZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO2dCQUN4RSxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksV0FBVyxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3RILElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLENBQUM7d0JBQzNFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7b0JBQ25FLENBQUM7b0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLDJDQUEyQyxDQUFDLEVBQUUsQ0FBQzt3QkFDbEYsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkNBQTJDLENBQUMsQ0FBQztvQkFDMUUsQ0FBQztnQkFDSCxDQUFDO2dCQUVELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQVcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVMLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUMxRCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDdkIsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7b0JBQ25CLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8scUJBQXFCLENBQUMsZ0JBQTZCLEVBQUUsa0JBQWtCLEdBQUcsS0FBSztRQUNyRixJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RCxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQUEsQ0FBQztJQUVNLDJCQUEyQixDQUFDLFNBQWlCLEVBQUUsYUFBcUIsRUFBRSxlQUE0QjtRQUN4RyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDOUMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQzVFLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDekUsSUFBSSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7Z0JBQzlCLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDM0UsQ0FBQztZQUNELElBQUksU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO2dCQUM5QixlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFFRCxPQUFPO1FBQ1QsQ0FBQztRQUVELGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDMUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMzRSxJQUFJLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUM5QixlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxJQUFJLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUM5QixlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFFSCxDQUFDO0lBRU8sZUFBZSxDQUFDLGdCQUE2QjtRQUNuRCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBa0MsQ0FBQztRQUN2SSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVmLEtBQUssQ0FBQyxJQUFJLENBQWMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUM1RCxPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssSUFBSSxDQUFDLENBQUM7WUFDWCxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsZ0JBQTZCLEVBQUUsc0NBQWdEO1FBQ3RHLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFrQyxDQUFDO1FBRXZJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUMxRSxLQUFLLENBQUMsSUFBSSxDQUFjLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2hFLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDNUQsT0FBTztZQUNULENBQUM7WUFDRCxZQUFZLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQy9ELFlBQVksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUN4QixZQUFZLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlDLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLENBQUMsc0NBQXNDLEVBQUUsQ0FBQztvQkFFNUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDN0UsQ0FBQztnQkFDRCxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQzNFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7d0dBL2dCVSxzQ0FBc0M7NEZBQXRDLHNDQUFzQzs7NEZBQXRDLHNDQUFzQztrQkFMbEQsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSwwQ0FBMEM7b0JBQ3BELFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgT25EZXN0cm95LCBlZmZlY3QsIGlucHV0LCBtb2RlbCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBjaGVja01vdXNlT3ZlckluQ29udGFpbmVyLCBjbG9uZURlZXAsIGdldCwgc2V0LCB1dWlkIH0gZnJvbSBcIkBsaWJzLXVpL3V0aWxzXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHN0eWxlQ29udGFpbmVyIH0gZnJvbSBcIi4vZGVmaW5lcy9jc3MuZGVmaW5lXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRHJhZ1Njcm9sbERpcmVjdGl2ZSB9IGZyb20gXCIuL2RyYWctc2Nyb2xsLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgSURyYWdEcm9wRnVuY3Rpb25Db250cm9sRXZlbnQsIElEcmFnRW5kLCBJRHJhZ0xlYXZlLCBJRHJhZ092ZXIsIElEcmFnU3RhcnQsIElEcmFnZ2luZywgSURyb3AgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL2V2ZW50LmludGVyZmFjZVwiO1xuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiBcIltMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZV1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0RyYWdDb250YWluZXJEaXJlY3RpdmUgZXh0ZW5kcyBMaWJzVWlDb21wb25lbnRzRHJhZ1Njcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJpdmF0ZSBncm91cElEID0gc2lnbmFsPHN0cmluZz4odXVpZCgpKTtcbiAgcHJpdmF0ZSBpc0RyYWdPdmVyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IGRpc2FibGVEcmFnQ29udGFpbmVyID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgbW9kZSA9IGlucHV0PHN0cmluZywgJ21vdmUnIHwgJ2NvcHknIHwgJ2RlZXBDb3B5Jz4oJ21vdmUnLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgPz8gJ21vdmUnIH0pO1xuICByZWFkb25seSBkaXJlY3Rpb25EcmFnID0gaW5wdXQ8J2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJz4oKTtcbiAgcmVhZG9ubHkgdmlld0VuY2Fwc3VsYXRpb24gPSBpbnB1dDwnZW11bGF0ZWQnIHwgJ25vbmUnLCAnZW11bGF0ZWQnIHwgJ25vbmUnIHwgdW5kZWZpbmVkPignZW11bGF0ZWQnLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgPz8gJ2VtdWxhdGVkJyB9KTtcbiAgcmVhZG9ubHkgYWNjZXB0RHJhZ1NhbWVHcm91cCA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4gfCB1bmRlZmluZWQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgPz8gZmFsc2UgfSk7XG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbiB8IHVuZGVmaW5lZD4odHJ1ZSwgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/IHRydWUgfSk7XG4gIHJlYWRvbmx5IGdyb3VwTmFtZSA9IGlucHV0PHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPignZ3JvdXBEcmFnQW5kRHJvcERlZmF1bHQnLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgPz8gJ2dyb3VwRHJhZ0FuZERyb3BEZWZhdWx0JyB9KTsgLy8gbuG6v3UgY8OhYyBncm91cCBjw7MgdMOqbiB0csO5bmcgbmhhdSBz4bq9IMSRxrDhu6NjIGRyb3BcbiAgcmVhZG9ubHkgZHJvcFRvR3JvdXBOYW1lID0gaW5wdXQ8QXJyYXk8c3RyaW5nPiB8IG51bGw+KG51bGwpOyAvLyBu4bq/dSBpdGVtIHRyb25nIGPDoWMgZ3JvdXAgQSDEkcaw4bujYyBkcm9wIHbDoG8gZ3JvdXAgQiBuaMawbmcgZ3JvdXAgQiBraMO0bmcgxJHGsOG7o2MgZHJvcCB2w6BvIGdyb3VwIEFcbiAgcmVhZG9ubHkgaXRlbXMgPSBtb2RlbC5yZXF1aXJlZDxBcnJheTx1bmtub3duPj4oKTtcbiAgcmVhZG9ubHkgc3R5bGVzT3ZlcnJpZGUgPSBpbnB1dDxBcnJheTx7IGNsYXNzTmFtZTogc3RyaW5nLCBzdHlsZXM6IHN0cmluZyB9Pj4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXREcmFnU3RhcnRDb250YWluZXIgPSBvdXRwdXQ8SURyYWdTdGFydD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ092ZXJDb250YWluZXIgPSBvdXRwdXQ8SURyYWdPdmVyPigpO1xuICByZWFkb25seSBvdXREcmFnTGVhdmVDb250YWluZXIgPSBvdXRwdXQ8SURyYWdMZWF2ZT4oKTtcbiAgcmVhZG9ubHkgb3V0RHJhZ0VuZENvbnRhaW5lciA9IG91dHB1dDxJRHJhZ0VuZD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJvcHBlZENvbnRhaW5lciA9IG91dHB1dDxJRHJvcD4oKTtcbiAgcmVhZG9ubHkgb3V0RHJvcHBlZENvbnRhaW5lckVtcHR5ID0gb3V0cHV0PElEcm9wPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbkNvbnRyb2wgPSBvdXRwdXQ8SURyYWdEcm9wRnVuY3Rpb25Db250cm9sRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBjb25zdCBjb250YWluZXIgPSB7IGVsZW1lbnQgfTtcblxuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lci51cGRhdGUoZGF0YSA9PiB7XG4gICAgICBkYXRhLnNldCh0aGlzLmdyb3VwSUQoKSwgY29udGFpbmVyKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5yb290RWxlbWVudFNjcm9sbCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIHNldChjb250YWluZXIsICdlbGVtZW50U2Nyb2xsJywgdGhpcy5yb290RWxlbWVudFNjcm9sbCgpKTtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuQ29udGFpbmVyLnVwZGF0ZShjb250YWluZXJNYXAgPT4gbmV3IE1hcChjb250YWluZXJNYXApKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbkRyYWcoKSAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkgJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3V0RnVuY3Rpb25Db250cm9sLmVtaXQoeyBzZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWc6ICgpID0+IHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB9KTtcblxuICAgIHRoaXMub3V0RHJvcHBlZENvbnRhaW5lci5zdWJzY3JpYmUoZXZlbnREcm9wcGVkID0+IHtcbiAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJvcENvbnRhaW5lci5uZXh0KGV2ZW50RHJvcHBlZCk7XG4gICAgfSk7XG4gICAgIHRoaXMub25EZXN0cm95LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoaW5kZXhTcGxpY2VMaXN0VG8gPiAtMSkge1xuICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4U3BsaWNlTGlzdFRvLCAxKTtcbiAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zXTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmRlbGV0ZSh0aGlzLmdyb3VwSUQoKSk7XG4gICAgfSk7XG4gICAgY29uc3QgZWxlbWVudENvbnRhaW5lciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgdGhpcy5pbml0U3R5bGVBbmRBdHRyaWJ1dGUoZWxlbWVudENvbnRhaW5lciwgdHJ1ZSk7XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25JdGVtSW5pdC5waXBlKGRlYm91bmNlVGltZSgyNTApLCBmaWx0ZXIoZ3JvdXBOYW1lID0+IGdyb3VwTmFtZSA9PT0gdGhpcy5ncm91cE5hbWUoKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRTdHlsZUFuZEF0dHJpYnV0ZShlbGVtZW50Q29udGFpbmVyKSk7XG4gICAgY29uc3Qgc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG5cbiAgICBzdHlsZVRhZy50ZXh0Q29udGVudCA9IHN0eWxlQ29udGFpbmVyKCh0aGlzLnN0eWxlc092ZXJyaWRlKCkgfHwgW10pLCB0aGlzLnZpZXdFbmNhcHN1bGF0aW9uKCksIHRoaXMuZ3JvdXBJRCgpKTtcbiAgICBlbGVtZW50Q29udGFpbmVyLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgICBlbGVtZW50Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5kcmFnRHJvcFNlcnZpY2UuQ2xhc3NDb250YWluZXJEZWZpbmUpO1xuXG4gICAgY29uc3QgaGFuZGxlckRyYWdTdGFydCA9IChldmVudERyYWdTdGFydDogSURyYWdTdGFydCkgPT4ge1xuXG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZUVsZW1lbnRBbmRJdGVtRHJhZyhlbGVtZW50Q29udGFpbmVyLCB0cnVlKTtcbiAgICAgIGlmICh0aGlzLmdyb3VwSUQoKSA9PT0gZXZlbnREcmFnU3RhcnQuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgdGhpcy5vdXREcmFnU3RhcnRDb250YWluZXIuZW1pdCh7IC4uLmV2ZW50RHJhZ1N0YXJ0LCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc3RvcmVJbmRleCA9IHsgaW5kZXhEcmFnOiAtMSwgaW5kZXhEcmFnT3ZlcjogLTEgfTtcbiAgICBsZXQgaW5kZXhTcGxpY2VMaXN0VG8gPSAtMTtcbiAgICBjb25zdCBoYW5kbGVyRHJhZ092ZXIgPSAoZXZlbnREcmFnT3ZlcjogSURyYWdPdmVyKSA9PiB7XG4gICAgICBjb25zdCB7IGVsZW1lbnREcmFnLCBlbGVtZW50RHJhZ092ZXIgfSA9IGV2ZW50RHJhZ092ZXI7XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkgfHwgIXRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmNoZWNrRWxlbWVudE92ZXJBY2NlcHRFbGVtZW50RHJhZyh0aGlzLmdyb3VwTmFtZSgpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2Ryb3BUb0dyb3VwTmFtZScpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleERyYWcgPSBOdW1iZXIoZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdpbmRleCcpKS52YWx1ZU9mKCk7XG4gICAgICBjb25zdCBpbmRleERyYWdPdmVyID0gTnVtYmVyKGVsZW1lbnREcmFnT3Zlci5nZXRBdHRyaWJ1dGUoJ2luZGV4JykpLnZhbHVlT2YoKTtcbiAgICAgIGNvbnN0IGlkR3JvdXBFbGVtZW50RHJhZyA9IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpO1xuICAgICAgY29uc3QgaWRHcm91cEVsZW1lbnREcmFnT3ZlciA9IGVsZW1lbnREcmFnT3Zlci5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKTtcblxuICAgICAgaWYgKCh0aGlzLmdyb3VwSUQoKSAhPT0gaWRHcm91cEVsZW1lbnREcmFnKSB8fCAoaWRHcm91cEVsZW1lbnREcmFnICE9PSBpZEdyb3VwRWxlbWVudERyYWdPdmVyKSkgeyAvLyB44butIGzDvSBjaG8gaXRlbSBkcmFnIG92ZXIgcXVhIDEgaXRlbSBraMOhYyBjb250YWluZXJcbiAgICAgICAgaWYgKGlkR3JvdXBFbGVtZW50RHJhZ092ZXIgPT09IHRoaXMuZ3JvdXBJRCgpICYmIHRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1vZGUoKSA9PT0gJ2RlZXBDb3B5JyA/IGNsb25lRGVlcCh0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8/Lml0ZW0pIDogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvPy5pdGVtO1xuXG4gICAgICAgICAgaWYgKGluZGV4U3BsaWNlTGlzdFRvID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4U3BsaWNlTGlzdFRvLCAxKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhEcmFnT3ZlciwgMCwgaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4gWy4uLml0ZW1zXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpbmRleFNwbGljZUxpc3RUbyA9IGluZGV4RHJhZ092ZXI7XG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lciwgZmFsc2UsIGluZGV4U3BsaWNlTGlzdFRvKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmFjY2VwdERyYWdTYW1lR3JvdXAoKSB8fCBpbmRleERyYWcgPCAwIHx8IGluZGV4RHJhZ092ZXIgPCAwIHx8ICF0aGlzLml0ZW1zKCkubGVuZ3RoIHx8IGluZGV4RHJhZyA+IHRoaXMuaXRlbXMoKS5sZW5ndGggfHwgaW5kZXhEcmFnT3ZlciA+IHRoaXMuaXRlbXMoKS5sZW5ndGggfHwgKHN0b3JlSW5kZXguaW5kZXhEcmFnID09PSBpbmRleERyYWcgJiYgc3RvcmVJbmRleC5pbmRleERyYWdPdmVyID09PSBpbmRleERyYWdPdmVyKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyB44butIGzDvSBjaG8gaXRlbSBkcmFnIG92ZXIgcXVhIDEgaXRlbSBjw7luZyBjb250YWluZXJcbiAgICAgIGNvbnN0IGl0ZW1EcmFnID0gdGhpcy5pdGVtcygpW2luZGV4RHJhZ107XG5cbiAgICAgIHRoaXMuc2V0QW5pbWF0aW9uRWxlbWVudERyYWdPdmVyKGluZGV4RHJhZywgaW5kZXhEcmFnT3ZlciwgZWxlbWVudERyYWdPdmVyKTtcbiAgICAgIHN0b3JlSW5kZXguaW5kZXhEcmFnID0gaW5kZXhEcmFnO1xuICAgICAgc3RvcmVJbmRleC5pbmRleERyYWdPdmVyID0gaW5kZXhEcmFnT3ZlcjtcbiAgICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4RHJhZywgMSk7XG4gICAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xuICAgICAgfSk7XG4gICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgIGl0ZW1zLnNwbGljZShpbmRleERyYWdPdmVyLCAwLCBpdGVtRHJhZyk7XG4gICAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xuICAgICAgfSk7XG5cbiAgICAgIGVsZW1lbnREcmFnLnNldEF0dHJpYnV0ZSgnaW5kZXgnLCBpbmRleERyYWdPdmVyLnRvU3RyaW5nKCkpO1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVFbGVtZW50QW5kSXRlbURyYWcoZWxlbWVudENvbnRhaW5lcik7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbW92ZVBsYWNlaG9sZGVyRHJhZyA9IChldmVudERyYWc6IElEcmFnRW5kLCBpc0RyYWdnaW5nPzogYm9vbGVhbikgPT4ge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsU2Nyb2xsVG9FbGVtZW50KCkpO1xuICAgICAgc3RvcmVJbmRleC5pbmRleERyYWcgPSAtMTtcbiAgICAgIHN0b3JlSW5kZXguaW5kZXhEcmFnT3ZlciA9IC0xO1xuICAgICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG5cbiAgICAgIGlmICghY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihldmVudERyYWcubW91c2VQb3NpdGlvbiwgKHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCBlbGVtZW50Q29udGFpbmVyKSkpIHtcbiAgICAgICAgY29uc3QgY2hpbGRFbGVtZW50SW5kZXggPSBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZpbmRJbmRleCgoY2hpbGQpID0+IGNoaWxkLmNsYXNzTGlzdC5jb250YWlucygnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJykpO1xuXG4gICAgICAgIGlmIChjaGlsZEVsZW1lbnRJbmRleCA+PSAwICYmIHRoaXMuZ3JvdXBJRCgpICE9PSBldmVudERyYWcuZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgICBpdGVtcy5zcGxpY2UoY2hpbGRFbGVtZW50SW5kZXgsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXhTcGxpY2VMaXN0VG8gPSAtMTtcblxuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZXMoZWxlbWVudENvbnRhaW5lciwgaXNEcmFnZ2luZyk7XG4gICAgICAgIHRoaXMuc2V0SW5kZXhFbGVtZW50KGVsZW1lbnRDb250YWluZXIpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleFNwbGljZUxpc3RUbyA+PSAwKSB7XG4gICAgICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IHtcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXhTcGxpY2VMaXN0VG8sIDEpO1xuICAgICAgICAgIHJldHVybiBbLi4uaXRlbXNdO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGluZGV4U3BsaWNlTGlzdFRvID0gLTE7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZXJEcmFnZ2luZyA9IChldmVudERyYWdnaW5nOiBJRHJhZ2dpbmcpID0+IHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXIpO1xuICAgICAgY29uc3QgeyBlbGVtZW50RHJhZyB9ID0gZXZlbnREcmFnZ2luZztcbiAgICAgIGNvbnN0IGZpZWxkSWRJdGVtID0gZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdmaWVsZF9pZCcpO1xuICAgICAgY29uc3QgaWRJdGVtRHJhZyA9IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnaXRlbV9pZCcpO1xuXG4gICAgICBpZiAoZmllbGRJZEl0ZW0gJiYgaWRJdGVtRHJhZyAmJiB0aGlzLml0ZW1zKCkuZmluZChpdGVtID0+IGdldChpdGVtLCBmaWVsZElkSXRlbSkgPT09IGlkSXRlbURyYWcpKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuRWxlbWVudCA9IGVsZW1lbnRDb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmUpIGFzIHVua25vd24gYXMgQXJyYXk8SFRNTEVsZW1lbnQ+O1xuICAgICAgICBjb25zdCBjaGlsZEVsZW1lbnQgPSBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZpbmQoKGNoaWxkKSA9PiBjaGlsZC5nZXRBdHRyaWJ1dGUoJ2l0ZW1faWQnKSA9PT0gaWRJdGVtRHJhZyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbXMoKSA9PT0gZXZlbnREcmFnZ2luZy5pdGVtRHJhZ0luZm8/Lml0ZW1zRHJhZygpICYmIGNoaWxkRWxlbWVudCAmJiAhY2hpbGRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJykgJiYgIWNoaWxkRWxlbWVudC5nZXRBdHRyaWJ1dGUodGhpcy5kcmFnRHJvcFNlcnZpY2UuVGFyZ2V0SXRlbURyYWdGbGFnKSkge1xuICAgICAgICAgIGNoaWxkRWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5kcmFnRHJvcFNlcnZpY2UuVGFyZ2V0SXRlbURyYWdGbGFnLCAndHJ1ZScpO1xuICAgICAgICAgIHRoaXMuZ3JvdXBJRC5zZXQoZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykgfHwgJycpO1xuICAgICAgICAgIHN0eWxlVGFnLnJlbW92ZSgpO1xuICAgICAgICAgIHN0eWxlVGFnLnRleHRDb250ZW50ID0gc3R5bGVDb250YWluZXIoKHRoaXMuc3R5bGVzT3ZlcnJpZGUoKSB8fCBbXSksIHRoaXMudmlld0VuY2Fwc3VsYXRpb24oKSwgdGhpcy5ncm91cElEKCkpO1xuICAgICAgICAgIGVsZW1lbnRDb250YWluZXIuYXBwZW5kQ2hpbGQoc3R5bGVUYWcpO1xuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXIsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5ncm91cElEKCkgPT09IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpICYmICF0aGlzLmFjY2VwdERyYWdTYW1lR3JvdXAoKSkge1xuICAgICAgICB0aGlzLmNoZWNrQW5kU2Nyb2xsRWxlbWVudFRvUG9zaXRpb24oZXZlbnREcmFnZ2luZywgdGhpcy5pZ25vcmVBdXRvU2Nyb2xsKCkgfHwgIXRoaXMuYWNjZXB0RHJhZ1NhbWVHcm91cCgpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWNoZWNrTW91c2VPdmVySW5Db250YWluZXIoZXZlbnREcmFnZ2luZy5tb3VzZVBvc2l0aW9uLCAodGhpcy5yb290RWxlbWVudFNjcm9sbCgpIHx8IGVsZW1lbnRDb250YWluZXIpKSkge1xuICAgICAgICBpZiAodGhpcy5pc0RyYWdPdmVyKCkpIHtcbiAgICAgICAgICB0aGlzLmlzRHJhZ092ZXIuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLm91dERyYWdMZWF2ZUNvbnRhaW5lci5lbWl0KHsgLi4uZXZlbnREcmFnZ2luZywgZWxlbWVudERyYWdMZWF2ZTogZWxlbWVudENvbnRhaW5lciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZW1vdmVQbGFjZWhvbGRlckRyYWcoZXZlbnREcmFnZ2luZywgdHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoZWNrQW5kU2Nyb2xsRWxlbWVudFRvUG9zaXRpb24oZXZlbnREcmFnZ2luZywgdGhpcy5pZ25vcmVBdXRvU2Nyb2xsKCkpO1xuXG4gICAgICAvLyDEkG/huqFuIGNvZGUgeOG7rSBsw70gY2hvIHZp4buHYyBrw6lvIG3hu5l0IGVsZW1lbnQgdsOgbyAxIGNvbnRhaW5lciBuaMawbmcgY29udGFpbmVyIGtow7RuZyBjw7MgaXRlbSBob+G6t2MgaXRlbSBkcmFnIGtow7RuZyBvdmVyIHF1YSBpdGVtIHRyb25nIGNvbnRhaW5lclxuICAgICAgaWYgKCF0aGlzLmlzRHJhZ092ZXIoKSkge1xuICAgICAgICBlbGVtZW50Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWNvbnRhaW5lci1kcmFnb3ZlcicpO1xuICAgICAgICB0aGlzLmlzRHJhZ092ZXIuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLm91dERyYWdPdmVyQ29udGFpbmVyLmVtaXQoeyAuLi5ldmVudERyYWdnaW5nLCBlbGVtZW50RHJhZ092ZXI6IGVsZW1lbnRDb250YWluZXIgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBldmVudERyYWdPdmVyID0geyAuLi5ldmVudERyYWdnaW5nLCBlbGVtZW50RHJhZ092ZXI6IGVsZW1lbnRDb250YWluZXIgfTtcblxuICAgICAgaWYgKCF0aGlzLml0ZW1zKCkubGVuZ3RoKSB7XG4gICAgICAgIGV2ZW50RHJhZ092ZXIuZWxlbWVudERyYWdPdmVyID0ge1xuICAgICAgICAgIGdldEF0dHJpYnV0ZTogKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdncm91cElEJykge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ncm91cElEKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmFtZSAhPT0gJ2luZGV4Jykge1xuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIHVua25vd24gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ092ZXIubmV4dChldmVudERyYWdPdmVyKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNoaWxkcmVuRWxlbWVudCA9IGVsZW1lbnRDb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmUpIGFzIHVua25vd24gYXMgQXJyYXk8SFRNTEVsZW1lbnQ+O1xuICAgICAgbGV0IGNoaWxkRWxlbWVudCA9IEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KGNoaWxkcmVuRWxlbWVudCkuZmluZCgoY2hpbGQpID0+IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIoZXZlbnREcmFnZ2luZy5tb3VzZVBvc2l0aW9uLCBjaGlsZCkpO1xuXG4gICAgICBpZiAoY2hpbGRFbGVtZW50KSB7IC8vIG7hur91IHTDrG0gdGjhuqV5IHRow6wgc+G6vSBuaOG6rW4gcXVhIHPhu7Ega2nhu4duIGPhu6dhIGRyYWctaXRlbS5kaXJlY3RpdmUgZW1pdFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjaGlsZEVsZW1lbnQgPSBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLnBvcCgpO1xuXG4gICAgICBpZiAoY2hpbGRFbGVtZW50KSB7XG4gICAgICAgIGV2ZW50RHJhZ092ZXIuZWxlbWVudERyYWdPdmVyID0gY2hpbGRFbGVtZW50O1xuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdPdmVyLm5leHQoZXZlbnREcmFnT3Zlcik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZXJEcmFnRW5kID0gKGV2ZW50RHJhZ0VuZDogSURyYWdFbmQpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IHJlY3QgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh0aGlzLnJvb3RFbGVtZW50U2Nyb2xsKCkgfHwgZWxlbWVudENvbnRhaW5lcikge1xuICAgICAgICByZWN0ID0gKHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCBlbGVtZW50Q29udGFpbmVyKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB9XG4gICAgICByZW1vdmVQbGFjZWhvbGRlckRyYWcoZXZlbnREcmFnRW5kKTtcbiAgICAgIGNvbnN0IHsgZWxlbWVudERyYWcsIG1vdXNlUG9zaXRpb24sIGl0ZW1EcmFnSW5mbyB9ID0gZXZlbnREcmFnRW5kO1xuXG4gICAgICBpZiAodGhpcy5ncm91cElEKCkgPT09IGVsZW1lbnREcmFnLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpKSB7XG4gICAgICAgIHRoaXMub3V0RHJhZ0VuZENvbnRhaW5lci5lbWl0KHsgLi4uZXZlbnREcmFnRW5kIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKG1vdXNlUG9zaXRpb24sIHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCBlbGVtZW50Q29udGFpbmVyLCByZWN0KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBldmVudERyb3AgPSB7IGVsZW1lbnREcmFnOiBlbGVtZW50RHJhZywgZWxlbWVudERyb3A6IGVsZW1lbnRDb250YWluZXIsIGl0ZW1EcmFnSW5mbzogaXRlbURyYWdJbmZvIH07XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkgfHwgIXRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmNoZWNrRWxlbWVudE92ZXJBY2NlcHRFbGVtZW50RHJhZyh0aGlzLmdyb3VwTmFtZSgpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwTmFtZScpLCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2Ryb3BUb0dyb3VwTmFtZScpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNoaWxkcmVuRWxlbWVudCA9IGVsZW1lbnRDb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLmRyYWdEcm9wU2VydmljZS5DbGFzc0l0ZW1EZWZpbmUpIGFzIHVua25vd24gYXMgQXJyYXk8SFRNTEVsZW1lbnQ+O1xuICAgICAgY29uc3QgY2hpbGRFbGVtZW50ID0gQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oY2hpbGRyZW5FbGVtZW50KS5maW5kKChjaGlsZCkgPT4gY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcihtb3VzZVBvc2l0aW9uLCBjaGlsZCkpO1xuXG4gICAgICBpZiAoY2hpbGRFbGVtZW50KSB7XG4gICAgICAgIGV2ZW50RHJvcC5lbGVtZW50RHJvcCA9IGNoaWxkRWxlbWVudDtcbiAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25Ecm9wLm5leHQoZXZlbnREcm9wKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBldmVudERyb3AuZWxlbWVudERyb3AgPSB7XG4gICAgICAgIGdldEF0dHJpYnV0ZTogKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChuYW1lID09PSAnZHJvcENvbnRhaW5lcicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ2dyb3VwSUQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncm91cElEKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuYW1lICE9PSAnaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW5FbGVtZW50Lmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50O1xuICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25Ecm9wLm5leHQoZXZlbnREcm9wKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlckRyb3AgPSAoZXZlbnREcm9wOiBJRHJvcCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7IGVsZW1lbnREcmFnLCBlbGVtZW50RHJvcCwgaXRlbURyYWdJbmZvIH0gPSBldmVudERyb3A7XG5cbiAgICAgIGlmICh0aGlzLmdyb3VwSUQoKSA9PT0gZWxlbWVudERyYWcuZ2V0QXR0cmlidXRlKCdncm91cElEJykgJiYgdGhpcy5ncm91cElEKCkgPT09IGVsZW1lbnREcm9wLmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpKSB7XG4gICAgICAgIGlmIChpdGVtRHJhZ0luZm8pIHtcbiAgICAgICAgICBpdGVtRHJhZ0luZm8uaW5kZXhEcm9wID0gTnVtYmVyKGVsZW1lbnREcm9wLmdldEF0dHJpYnV0ZSgnaW5kZXgnKSkudmFsdWVPZigpO1xuICAgICAgICAgIGl0ZW1EcmFnSW5mby5pdGVtc0Ryb3AgPSB0aGlzLml0ZW1zO1xuICAgICAgICAgIGl0ZW1EcmFnSW5mby5jb250YWluZXJEcm9wID0gZWxlbWVudENvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hY2NlcHREcmFnU2FtZUdyb3VwKCkpIHtcbiAgICAgICAgICB0aGlzLm91dERyb3BwZWRDb250YWluZXIuZW1pdChldmVudERyb3ApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlcyhlbGVtZW50Q29udGFpbmVyKTtcbiAgICAgICAgdGhpcy5zZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZ3JvdXBJRCgpICE9PSBlbGVtZW50RHJvcC5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSB8fCBlbGVtZW50RHJhZy5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSA9PT0gZWxlbWVudERyb3AuZ2V0QXR0cmlidXRlKCdncm91cElEJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhEcmFnT3ZlciA9IE51bWJlcihlbGVtZW50RHJvcC5nZXRBdHRyaWJ1dGUoJ2luZGV4JykpLnZhbHVlT2YoKSAtIChlbGVtZW50RHJvcC5nZXRBdHRyaWJ1dGUoJ2Ryb3BDb250YWluZXInKSA/IDAgOiAxKTtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1vZGUoKSA9PT0gJ2RlZXBDb3B5JyA/IGNsb25lRGVlcChpdGVtRHJhZ0luZm8/Lml0ZW0pIDogaXRlbURyYWdJbmZvPy5pdGVtO1xuXG4gICAgICBpZiAoaXRlbURyYWdJbmZvKSB7XG4gICAgICAgIGl0ZW1EcmFnSW5mby5pbmRleERyb3AgPSBpbmRleERyYWdPdmVyO1xuICAgICAgICBpdGVtRHJhZ0luZm8uaXRlbXNEcm9wID0gdGhpcy5pdGVtcztcbiAgICAgICAgaXRlbURyYWdJbmZvLmNvbnRhaW5lckRyb3AgPSBlbGVtZW50Q29udGFpbmVyO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuaXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5vdXREcm9wcGVkQ29udGFpbmVyRW1wdHkuZW1pdChldmVudERyb3ApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgIGl0ZW1zLnNwbGljZShpbmRleERyYWdPdmVyLCAwLCBpdGVtKTtcbiAgICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgICB9KTtcblxuICAgICAgaWYgKGl0ZW1EcmFnSW5mbyAmJiBpdGVtRHJhZ0luZm8uaXRlbXNNb3ZlICYmIGl0ZW1EcmFnSW5mby5pdGVtc01vdmUoKSkge1xuICAgICAgICBpdGVtRHJhZ0luZm8uaXRlbXNEcmFnLnNldChbLi4uaXRlbURyYWdJbmZvLml0ZW1zTW92ZSgpXSk7XG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm91dERyb3BwZWRDb250YWluZXIuZW1pdChldmVudERyb3ApO1xuICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVzKGVsZW1lbnRDb250YWluZXIpO1xuICAgICAgdGhpcy5zZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcik7XG4gICAgfTtcblxuICAgIFt7XG4gICAgICBuYW1lOiAnT25EcmFnU3RhcnQnLFxuICAgICAgZXZlbnQ6IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ1N0YXJ0LFxuICAgICAgZnVuY3Rpb25DYWxsOiBoYW5kbGVyRHJhZ1N0YXJ0XG4gICAgfSwge1xuICAgICAgbmFtZTogJ09uRHJhZ092ZXInLFxuICAgICAgZXZlbnQ6IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ092ZXIsXG4gICAgICBmdW5jdGlvbkNhbGw6IGhhbmRsZXJEcmFnT3ZlclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdPbkRyYWdnaW5nJyxcbiAgICAgIGV2ZW50OiB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdnaW5nLFxuICAgICAgZnVuY3Rpb25DYWxsOiBoYW5kbGVyRHJhZ2dpbmdcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnT25EcmFnRW5kJyxcbiAgICAgIGV2ZW50OiB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdFbmQsXG4gICAgICBmdW5jdGlvbkNhbGw6IGhhbmRsZXJEcmFnRW5kXG4gICAgfSwge1xuICAgICAgbmFtZTogJ09uRHJvcCcsXG4gICAgICBldmVudDogdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25Ecm9wLFxuICAgICAgZnVuY3Rpb25DYWxsOiBoYW5kbGVyRHJvcFxuICAgIH1dLmZvckVhY2goKGl0ZW06IHsgbmFtZTogc3RyaW5nOyBldmVudDogT2JzZXJ2YWJsZTx1bmtub3duPjsgZnVuY3Rpb25DYWxsOiBvYmplY3QgfSkgPT4gKGl0ZW0uZXZlbnQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoaXRlbS5mdW5jdGlvbkNhbGwpKSk7XG5cbiAgfVxuXG4gIC8qICovXG4gIHByaXZhdGUgYXN5bmMgc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXI6IEhUTUxFbGVtZW50LCBzZXRJdGVtRHJhZz86IGJvb2xlYW4sIGluZGV4SW5zZXJ0PzogbnVtYmVyKSB7XG4gICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG4gICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICBlbGVtZW50Q29udGFpbmVyLnNldEF0dHJpYnV0ZSgnZ3JvdXBJRCcsIHRoaXMuZ3JvdXBJRCgpKTtcbiAgICBlbGVtZW50Q29udGFpbmVyLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZURyYWdDb250YWluZXInKTtcblxuICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkpIHtcbiAgICAgIGVsZW1lbnRDb250YWluZXIuc2V0QXR0cmlidXRlKCdkaXNhYmxlRHJhZ0NvbnRhaW5lcicsIGAke3RoaXMuZGlzYWJsZURyYWdDb250YWluZXIoKX1gKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZ3JvdXBOYW1lKCkpIHtcbiAgICAgIGVsZW1lbnRDb250YWluZXIuc2V0QXR0cmlidXRlKCdncm91cE5hbWUnLCB0aGlzLmdyb3VwTmFtZSgpIHx8ICcnKTtcbiAgICB9XG4gICAgQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oY2hpbGRyZW5FbGVtZW50KS5mb3JFYWNoKChjaGlsZEVsZW1lbnQpID0+IHtcbiAgICAgIGlmICghY2hpbGRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZ3JvdXBOYW1lJykgfHwgY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBOYW1lJykgPT09IHRoaXMuZ3JvdXBOYW1lKCkpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZ3JvdXBJRCcsIHRoaXMuZ3JvdXBJRCgpKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cElEJykgIT09IHRoaXMuZ3JvdXBJRCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGluZGV4ICs9IDE7XG4gICAgICBjaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlKCdpbmRleCcsIGAke2luZGV4fWApO1xuICAgICAgY2hpbGRFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZURyYWdDb250YWluZXInKTtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCkpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGlzYWJsZURyYWdDb250YWluZXInLCBgJHt0aGlzLmRpc2FibGVEcmFnQ29udGFpbmVyKCl9YCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ncm91cE5hbWUoKSAmJiAhY2hpbGRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZ3JvdXBOYW1lJykpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZ3JvdXBOYW1lJywgdGhpcy5ncm91cE5hbWUoKSB8fCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlcigpKSB7XG4gICAgICAgIGNoaWxkRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgYCR7dGhpcy5wbGFjZWhvbGRlcigpfWApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZHJvcFRvR3JvdXBOYW1lKCkpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZHJvcFRvR3JvdXBOYW1lJywgYCR7dGhpcy5kcm9wVG9Hcm91cE5hbWUoKT8uam9pbignOycpfWApO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4SW5zZXJ0ID09PSBpbmRleCAmJiB0aGlzLnBsYWNlaG9sZGVyKCkpIHtcbiAgICAgICAgaWYgKCFjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXBsYWNlaG9sZGVyJykpIHtcbiAgICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1wbGFjZWhvbGRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2hpbGRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJykpIHtcbiAgICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNldEl0ZW1EcmFnICYmIGNoaWxkRWxlbWVudC5nZXRBdHRyaWJ1dGUodGhpcy5kcmFnRHJvcFNlcnZpY2UuVGFyZ2V0SXRlbURyYWdGbGFnKSAmJiB0aGlzLml0ZW1zKCkubGVuZ3RoID49IGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyKCkpIHtcbiAgICAgICAgICBpZiAoIWNoaWxkRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tcGxhY2Vob2xkZXInKSkge1xuICAgICAgICAgICAgY2hpbGRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tcGxhY2Vob2xkZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLW9yaWdpbi1wbGFjZWhvbGRlcicpKSB7XG4gICAgICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1vcmlnaW4tcGxhY2Vob2xkZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gPSB7IGl0ZW06IHRoaXMuaXRlbXMoKVtpbmRleF0gYXMgb2JqZWN0LCBpbmRleERyYWc6IGluZGV4LCBpdGVtc0RyYWc6IHRoaXMuaXRlbXMsIGNvbnRhaW5lckRyYWc6IGVsZW1lbnRDb250YWluZXIsIGl0ZW1zTW92ZTogc2lnbmFsKFsuLi50aGlzLml0ZW1zKCldKSB9O1xuICAgICAgICBpZiAodGhpcy5tb2RlKCkgPT09ICdtb3ZlJykge1xuICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mby5pdGVtc01vdmU/LnVwZGF0ZShpdGVtcyA9PiB7XG4gICAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5pdGVtc11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U3R5bGVBbmRBdHRyaWJ1dGUoZWxlbWVudENvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGhhc1JlbW92ZUF0dHJpYnV0ZSA9IGZhbHNlLCkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnKGVsZW1lbnRDb250YWluZXIpO1xuICAgIGlmIChoYXNSZW1vdmVBdHRyaWJ1dGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlcyhlbGVtZW50Q29udGFpbmVyKTtcbiAgICB9XG4gICAgdGhpcy5zZXRJbmRleEVsZW1lbnQoZWxlbWVudENvbnRhaW5lcik7XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXRBbmltYXRpb25FbGVtZW50RHJhZ092ZXIoaW5kZXhEcmFnOiBudW1iZXIsIGluZGV4RHJhZ092ZXI6IG51bWJlciwgZWxlbWVudERyYWdPdmVyOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICghdGhpcy5kaXJlY3Rpb25EcmFnKCkgfHwgIWVsZW1lbnREcmFnT3Zlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXJlY3Rpb25EcmFnKCkgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS1ib3R0b20nKTtcbiAgICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS10b3AnKTtcbiAgICAgIGlmIChpbmRleERyYWcgPiBpbmRleERyYWdPdmVyKSB7XG4gICAgICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS1ib3R0b20nKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleERyYWcgPCBpbmRleERyYWdPdmVyKSB7XG4gICAgICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS10b3AnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QucmVtb3ZlKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS1sZWZ0Jyk7XG4gICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLXJpZ2h0Jyk7XG4gICAgaWYgKGluZGV4RHJhZyA+IGluZGV4RHJhZ092ZXIpIHtcbiAgICAgIGVsZW1lbnREcmFnT3Zlci5jbGFzc0xpc3QuYWRkKCdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLXRyYW5zbGF0ZS1yaWdodCcpO1xuICAgIH1cbiAgICBpZiAoaW5kZXhEcmFnIDwgaW5kZXhEcmFnT3Zlcikge1xuICAgICAgZWxlbWVudERyYWdPdmVyLmNsYXNzTGlzdC5hZGQoJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tdHJhbnNsYXRlLWxlZnQnKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5kZXhFbGVtZW50KGVsZW1lbnRDb250YWluZXI6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG4gICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICBBcnJheS5mcm9tPEhUTUxFbGVtZW50PihjaGlsZHJlbkVsZW1lbnQpLmZvckVhY2goKGNoaWxkRWxlbWVudCkgPT4ge1xuICAgICAgaWYgKGNoaWxkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2dyb3VwSUQnKSAhPT0gdGhpcy5ncm91cElEKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaW5kZXggKz0gMTtcbiAgICAgIGNoaWxkRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2luZGV4JywgYCR7aW5kZXh9YCk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQXR0cmlidXRlcyhlbGVtZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudCwgaWdub3JlUmVtb3ZlQ2xhc3NJdGVtT3JpZ2luUGxhY2Vob2xkZXI/OiBib29sZWFuKSB7XG4gICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudENvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNsYXNzSXRlbURlZmluZSkgYXMgdW5rbm93biBhcyBBcnJheTxIVE1MRWxlbWVudD47XG5cbiAgICBlbGVtZW50Q29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2xpYnMtdWktZHJhZy1kcm9wLWNvbnRhaW5lci1kcmFnb3ZlcicpO1xuICAgIEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KGNoaWxkcmVuRWxlbWVudCkuZm9yRWFjaCgoY2hpbGRFbGVtZW50KSA9PiB7XG4gICAgICBpZiAoY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpICE9PSB0aGlzLmdyb3VwSUQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjaGlsZEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdpbmRleCcpO1xuICAgICAgaWYgKCF0aGlzLmRyb3BUb0dyb3VwTmFtZSgpIHx8ICF0aGlzLmRyb3BUb0dyb3VwTmFtZSgpPy5sZW5ndGgpIHtcbiAgICAgICAgY2hpbGRFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZHJvcFRvR3JvdXBOYW1lJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdwbGFjZWhvbGRlcicpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIoKSkge1xuICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1wbGFjZWhvbGRlcicpO1xuICAgICAgICBpZiAoIWlnbm9yZVJlbW92ZUNsYXNzSXRlbU9yaWdpblBsYWNlaG9sZGVyKSB7XG5cbiAgICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1vcmlnaW4tcGxhY2Vob2xkZXInKTtcbiAgICAgICAgfVxuICAgICAgICBjaGlsZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbGlicy11aS1kcmFnLWRyb3AtaXRlbS1kcm9wLXBsYWNlaG9sZGVyJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxufVxuIl19
|
|
@@ -4,17 +4,26 @@ import { Subject, fromEvent, takeUntil, tap } from "rxjs";
|
|
|
4
4
|
import { MoLibsSharedDragDropService } from "./drag-drop.service";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class LibsUiDragItemInContainerVirtualScrollDirective {
|
|
7
|
-
|
|
7
|
+
// #region PROPERTY
|
|
8
8
|
onDestroy = new Subject();
|
|
9
|
-
|
|
9
|
+
// #region OUTPUT
|
|
10
10
|
outDragEndContainer = output();
|
|
11
|
-
|
|
11
|
+
// #region INJECT
|
|
12
12
|
dragDropService = inject(MoLibsSharedDragDropService);
|
|
13
13
|
ngAfterViewInit() {
|
|
14
|
+
const addClass = () => {
|
|
15
|
+
document.body.classList.remove('!select-none');
|
|
16
|
+
document.body.classList.remove('!cursor-move');
|
|
17
|
+
};
|
|
18
|
+
const removeClass = () => {
|
|
19
|
+
document.body.classList.add('!select-none');
|
|
20
|
+
document.body.classList.add('!cursor-move');
|
|
21
|
+
};
|
|
14
22
|
this.dragDropService.OnDragEnd.pipe(takeUntil(this.onDestroy)).subscribe(e => {
|
|
15
23
|
this.outDragEndContainer.emit(e);
|
|
16
24
|
});
|
|
17
25
|
this.dragDropService.OnDragItemInContainerVirtualScroll.pipe(takeUntil(this.onDestroy)).subscribe(dragItemInContainerVirtualScrollEvent => {
|
|
26
|
+
addClass();
|
|
18
27
|
const stopEventMouse = (mouseEvent) => {
|
|
19
28
|
if (!dragItemInContainerVirtualScrollEvent.ignoreStopEvent) {
|
|
20
29
|
mouseEvent.preventDefault();
|
|
@@ -34,9 +43,9 @@ export class LibsUiDragItemInContainerVirtualScrollDirective {
|
|
|
34
43
|
const dragEndEvent = { mousePosition, elementDrag: dragItemInContainerVirtualScrollEvent.elementDrag, itemDragInfo: this.dragDropService.ItemDragInfo };
|
|
35
44
|
this.dragDropService.ItemDragInfo = undefined;
|
|
36
45
|
this.dragDropService.OnDragEnd.next(dragEndEvent);
|
|
37
|
-
document.body.classList.remove('select-none');
|
|
38
46
|
dragItemInContainerVirtualScrollEvent.elementDrag.remove();
|
|
39
|
-
|
|
47
|
+
removeClass();
|
|
48
|
+
}));
|
|
40
49
|
fromEvent(document, 'mousemove').pipe(tap((eventMousemove) => {
|
|
41
50
|
stopEventMouse(eventMousemove);
|
|
42
51
|
const { clientX, clientY } = eventMousemove;
|
|
@@ -121,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
121
130
|
standalone: true,
|
|
122
131
|
}]
|
|
123
132
|
}] });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1pdGVtLWluLWNvbnRhaW5lci12aXJ0dWFsLXNjcm9sbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9kcmFnLWl0ZW0taW4tY29udGFpbmVyLXZpcnR1YWwtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVNsRSxNQUFNLE9BQU8sK0NBQStDO0lBQzFELGNBQWM7SUFDSixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUUxQyxZQUFZO0lBQ0gsbUJBQW1CLEdBQUcsTUFBTSxFQUFZLENBQUM7SUFFbEQsWUFBWTtJQUNGLGVBQWUsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUVoRSxlQUFlO1FBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0UsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsa0NBQWtDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMs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LENBQUMsRUFBRSxDQUFDO1lBQ3JHLE9BQU8sR0FBRyxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLCtCQUErQixDQUFDO1FBQ2pHLENBQUM7UUFFRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRVMsbUNBQW1DLENBQUMsYUFBOEI7UUFDMUUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0FsSVUsK0NBQStDOzRGQUEvQywrQ0FBK0M7OzRGQUEvQywrQ0FBK0M7a0JBTjNELFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsbURBQW1EO29CQUM3RCxVQUFVLEVBQUUsSUFBSTtpQkFFakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIE9uRGVzdHJveSwgaW5qZWN0LCBvdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSUJvdW5kaW5nQ2xpZW50UmVjdCB9IGZyb20gXCJAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzXCI7XG5pbXBvcnQgeyBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QsIGdldFZpZXdwb3J0IH0gZnJvbSBcIkBsaWJzLXVpL3V0aWxzXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IE1vTGlic1NoYXJlZERyYWdEcm9wU2VydmljZSB9IGZyb20gXCIuL2RyYWctZHJvcC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBJRHJhZ0VuZCB9IGZyb20gXCIuL2ludGVyZmFjZXMvZXZlbnQuaW50ZXJmYWNlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJbTGlic1VpRHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxEaXJlY3RpdmVdXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG5cbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpRHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwcm90ZWN0ZWQgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiBPVVRQVVQgKi9cbiAgcmVhZG9ubHkgb3V0RHJhZ0VuZENvbnRhaW5lciA9IG91dHB1dDxJRHJhZ0VuZD4oKTtcblxuICAvKiBJTkpFQ1QgKi9cbiAgcHJvdGVjdGVkIGRyYWdEcm9wU2VydmljZSA9IGluamVjdChNb0xpYnNTaGFyZWREcmFnRHJvcFNlcnZpY2UpO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdFbmQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICB0aGlzLm91dERyYWdFbmRDb250YWluZXIuZW1pdChlKTtcbiAgICB9KTtcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQgPT4ge1xuICAgICAgY29uc3Qgc3RvcEV2ZW50TW91c2UgPSAobW91c2VFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuaWdub3JlU3RvcEV2ZW50KSB7XG4gICAgICAgICAgbW91c2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIG1vdXNlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBkb2N1bWVudE1vdXNlVXAgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChldmVudE1vdXNlVXApID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW91c2VFdmVudHNXaGVuTW92ZU92ZXJJZnJhbWUoJ2F1dG8nKTtcbiAgICAgICAgICAgIHN0b3BFdmVudE1vdXNlKGV2ZW50TW91c2VVcCk7XG4gICAgICAgICAgICBjb25zdCBtb3VzZVBvc2l0aW9uID0geyBjbGllbnRYOiBldmVudE1vdXNlVXAuY2xpZW50WCwgY2xpZW50WTogZXZlbnRNb3VzZVVwLmNsaWVudFkgfTtcblxuICAgICAgICAgICAgaWYgKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5ICYmIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENsaWVudFBvc2l0aW9uKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudERyYWcsIG1vdXNlUG9zaXRpb24sIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQsIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCwgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kcmFnQm91bmRhcnksIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudENvbnRhaW5lcik7XG5cbiAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRYID0gcmVzdWx0LmNsaWVudFg7XG4gICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC5jbGllbnRZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZHJhZ0VuZEV2ZW50ID0geyBtb3VzZVBvc2l0aW9uLCBlbGVtZW50RHJhZzogZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZywgaXRlbURyYWdJbmZvOiB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gfTtcblxuICAgICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnRW5kLm5leHQoZHJhZ0VuZEV2ZW50KTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0LW5vbmUnKTtcbiAgICAgICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudERyYWcucmVtb3ZlKCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KVxuICAgICAgICApO1xuXG4gICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZW1vdmUnKS5waXBlKHRhcCgoZXZlbnRNb3VzZW1vdmUpID0+IHtcbiAgICAgICAgc3RvcEV2ZW50TW91c2UoZXZlbnRNb3VzZW1vdmUpO1xuICAgICAgICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IGV2ZW50TW91c2Vtb3ZlO1xuICAgICAgICBjb25zdCBtb3VzZVBvc2l0aW9uID0geyBjbGllbnRYLCBjbGllbnRZIH07XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDbGllbnRQb3NpdGlvbihkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLCBtb3VzZVBvc2l0aW9uLCBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LCBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AsIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5LCBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnRDb250YWluZXIpO1xuICAgICAgICBjb25zdCBlbGVtZW50S2VlcENvbnRhaW5lciA9IHJlc3VsdC5lbGVtZW50S2VlcENvbnRhaW5lcjtcbiAgICAgICAgY29uc3QgbGVmdCA9IHJlc3VsdC5jbGllbnRYIC0gZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdDtcbiAgICAgICAgY29uc3QgdG9wID0gcmVzdWx0LmNsaWVudFkgLSBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3A7XG5cbiAgICAgICAgaWYgKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5ICYmIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcikge1xuICAgICAgICAgIGlmIChjbGllbnRYIDwgcmVzdWx0LnZpZXdwb3J0LmxlZnQpIHtcbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC52aWV3cG9ydC5sZWZ0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2xpZW50WCA+IHJlc3VsdC52aWV3cG9ydC53aWR0aCkge1xuICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRYID0gcmVzdWx0LnZpZXdwb3J0LndpZHRoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2xpZW50WSA8IHJlc3VsdC52aWV3cG9ydC50b3ApIHtcbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC52aWV3cG9ydC50b3A7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjbGllbnRZID4gcmVzdWx0LnZpZXdwb3J0LmhlaWdodCkge1xuICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LnZpZXdwb3J0LmhlaWdodDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZy5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGA7XG4gICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudERyYWcuc3R5bGUudG9wID0gYCR7dG9wfXB4YDtcblxuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdnaW5nLm5leHQoeyBtb3VzZVBvc2l0aW9uLCBlbGVtZW50RHJhZzogZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZywgZWxlbWVudEtlZXBDb250YWluZXIsIGl0ZW1EcmFnSW5mbzogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvIH0pO1xuICAgICAgfSksIHRha2VVbnRpbCgoZG9jdW1lbnRNb3VzZVVwKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgpO1xuXG4gICAgfSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cblxuICBwcm90ZWN0ZWQgZ2V0Q2xpZW50UG9zaXRpb24oZWxlbWVudDogSFRNTEVsZW1lbnQsIG1vdXNlUG9zaXRpb246IHsgY2xpZW50WDogbnVtYmVyOyBjbGllbnRZOiBudW1iZXI7IH0sIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0OiBudW1iZXIsIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3A6IG51bWJlciwgZHJhZ0JvdW5kYXJ5PzogYm9vbGVhbiwgZWxlbWVudENvbnRhaW5lcj86IEhUTUxFbGVtZW50KTogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlcjsgZWxlbWVudEtlZXBDb250YWluZXI6IGJvb2xlYW47IHZpZXdwb3J0OiBJQm91bmRpbmdDbGllbnRSZWN0IH0ge1xuICAgIGxldCB2aWV3cG9ydCA9IGdldFZpZXdwb3J0KCkgYXMgSUJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBjb25zdCByZWN0RWxlbWVudCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyQnlJZCA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmdldChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpIHx8ICcnKTtcbiAgICBjb25zdCBjb250YWluZXJJdGVtID0gZWxlbWVudENvbnRhaW5lciB8fCBjb250YWluZXJCeUlkPy5lbGVtZW50U2Nyb2xsIHx8IGNvbnRhaW5lckJ5SWQ/LmVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keTtcbiAgICBsZXQgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBtb3VzZVBvc2l0aW9uO1xuXG4gICAgdmlld3BvcnQubGVmdCA9IDA7XG4gICAgdmlld3BvcnQudG9wID0gMDtcbiAgICBpZiAoZHJhZ0JvdW5kYXJ5KSB7XG4gICAgICB2aWV3cG9ydCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdChjb250YWluZXJJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICAgIHZpZXdwb3J0LmhlaWdodCA9IHZpZXdwb3J0LnRvcCArIHZpZXdwb3J0LmhlaWdodDtcbiAgICAgIHZpZXdwb3J0LndpZHRoID0gdmlld3BvcnQubGVmdCArIHZpZXdwb3J0LndpZHRoO1xuICAgIH1cbiAgICBsZXQgZWxlbWVudEtlZXBDb250YWluZXIgPSBmYWxzZTtcblxuICAgIGlmIChjbGllbnRYID4gdmlld3BvcnQud2lkdGggJiYgY2xpZW50WSA+IHZpZXdwb3J0LmhlaWdodCB8fCBjbGllbnRYIDwgdmlld3BvcnQubGVmdCAmJiBjbGllbnRZIDwgdmlld3BvcnQudG9wKSB7XG4gICAgICBlbGVtZW50S2VlcENvbnRhaW5lciA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKChjbGllbnRYICsgKHJlY3RFbGVtZW50LndpZHRoIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQpKSA+IHZpZXdwb3J0LndpZHRoKSB7XG4gICAgICBjbGllbnRYIC09IChjbGllbnRYICsgKHJlY3RFbGVtZW50LndpZHRoIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQpIC0gdmlld3BvcnQud2lkdGgpO1xuICAgIH1cbiAgICBpZiAoKGNsaWVudFkgKyAocmVjdEVsZW1lbnQuaGVpZ2h0IC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCkpID4gdmlld3BvcnQuaGVpZ2h0KSB7XG4gICAgICBjbGllbnRZIC09IChjbGllbnRZICsgKHJlY3RFbGVtZW50LmhlaWdodCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3ApIC0gdmlld3BvcnQuaGVpZ2h0KTtcbiAgICB9XG4gICAgaWYgKChjbGllbnRYIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQpIDwgKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQubGVmdCA6IDApKSB7XG4gICAgICBjbGllbnRYID0gKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQubGVmdCA6IDApICsgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ7XG4gICAgfVxuICAgIGlmICgoY2xpZW50WSAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3ApIDwgKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQudG9wIDogMCkpIHtcbiAgICAgIGNsaWVudFkgPSAoZHJhZ0JvdW5kYXJ5ICYmIGNvbnRhaW5lckl0ZW0gPyB2aWV3cG9ydC50b3AgOiAwKSArIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3A7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xpZW50WCwgY2xpZW50WSwgZWxlbWVudEtlZXBDb250YWluZXIsIHZpZXdwb3J0IH07XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlTW91c2VFdmVudHNXaGVuTW92ZU92ZXJJZnJhbWUocG9pbnRlckV2ZW50czogJ25vbmUnIHwgJ2F1dG8nKSB7XG4gICAgY29uc3QgZnJhbWVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpZnJhbWVcIik7XG5cbiAgICBpZiAoIWZyYW1lcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcmFtZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGZyYW1lc1tpXS5zdHlsZS5wb2ludGVyRXZlbnRzID0gcG9pbnRlckV2ZW50cztcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufSJdfQ==
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1pdGVtLWluLWNvbnRhaW5lci12aXJ0dWFsLXNjcm9sbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9kcmFnLWl0ZW0taW4tY29udGFpbmVyLXZpcnR1YWwtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVNsRSxNQUFNLE9BQU8sK0NBQStDO0lBQzFELG1CQUFtQjtJQUNULFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTFDLGlCQUFpQjtJQUNSLG1CQUFtQixHQUFHLE1BQU0sRUFBWSxDQUFDO0lBRWxELGlCQUFpQjtJQUNQLGVBQWUsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUVoRSxlQUFlO1FBQ2IsTUFBTSxRQUFRLEdBQUcsR0FBRSxFQUFFO1lBQ25CLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsR0FBRSxFQUFFO1lBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZ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LENBQUM7d0dBeElVLCtDQUErQzs0RkFBL0MsK0NBQStDOzs0RkFBL0MsK0NBQStDO2tCQU4zRCxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLG1EQUFtRDtvQkFDN0QsVUFBVSxFQUFFLElBQUk7aUJBRWpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBPbkRlc3Ryb3ksIGluamVjdCwgb3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElCb3VuZGluZ0NsaWVudFJlY3QgfSBmcm9tIFwiQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlc1wiO1xuaW1wb3J0IHsgY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0LCBnZXRWaWV3cG9ydCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBNb0xpYnNTaGFyZWREcmFnRHJvcFNlcnZpY2UgfSBmcm9tIFwiLi9kcmFnLWRyb3Auc2VydmljZVwiO1xuaW1wb3J0IHsgSURyYWdFbmQgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL2V2ZW50LmludGVyZmFjZVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6IFwiW0xpYnNVaURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlXVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcm90ZWN0ZWQgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXREcmFnRW5kQ29udGFpbmVyID0gb3V0cHV0PElEcmFnRW5kPigpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByb3RlY3RlZCBkcmFnRHJvcFNlcnZpY2UgPSBpbmplY3QoTW9MaWJzU2hhcmVkRHJhZ0Ryb3BTZXJ2aWNlKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgYWRkQ2xhc3MgPSAoKT0+e1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCchc2VsZWN0LW5vbmUnKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnIWN1cnNvci1tb3ZlJyk7XG4gIH07XG4gIGNvbnN0IHJlbW92ZUNsYXNzID0gKCk9PntcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJyFzZWxlY3Qtbm9uZScpO1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnIWN1cnNvci1tb3ZlJyk7XG4gIH07XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnRW5kLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgdGhpcy5vdXREcmFnRW5kQ29udGFpbmVyLmVtaXQoZSk7XG4gICAgfSk7XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZShkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50ID0+IHtcbiAgICAgIGFkZENsYXNzKCk7XG4gICAgICBjb25zdCBzdG9wRXZlbnRNb3VzZSA9IChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5pZ25vcmVTdG9wRXZlbnQpIHtcbiAgICAgICAgICBtb3VzZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgbW91c2VFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGRvY3VtZW50TW91c2VVcCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNldXAnKVxuICAgICAgICAucGlwZSh0YXAoKGV2ZW50TW91c2VVcCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlTW91c2VFdmVudHNXaGVuTW92ZU92ZXJJZnJhbWUoJ2F1dG8nKTtcbiAgICAgICAgICBzdG9wRXZlbnRNb3VzZShldmVudE1vdXNlVXApO1xuICAgICAgICAgIGNvbnN0IG1vdXNlUG9zaXRpb24gPSB7IGNsaWVudFg6IGV2ZW50TW91c2VVcC5jbGllbnRYLCBjbGllbnRZOiBldmVudE1vdXNlVXAuY2xpZW50WSB9O1xuXG4gICAgICAgICAgaWYgKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5ICYmIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDbGllbnRQb3NpdGlvbihkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLCBtb3VzZVBvc2l0aW9uLCBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LCBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AsIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5LCBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnRDb250YWluZXIpO1xuXG4gICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFggPSByZXN1bHQuY2xpZW50WDtcbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC5jbGllbnRZO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBkcmFnRW5kRXZlbnQgPSB7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9O1xuXG4gICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ0VuZC5uZXh0KGRyYWdFbmRFdmVudCk7XG4gICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZy5yZW1vdmUoKTtcbiAgICAgICAgICByZW1vdmVDbGFzcygpO1xuICAgICAgICB9KSk7XG5cbiAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNlbW92ZScpLnBpcGUodGFwKChldmVudE1vdXNlbW92ZSkgPT4ge1xuICAgICAgICBzdG9wRXZlbnRNb3VzZShldmVudE1vdXNlbW92ZSk7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50WCwgY2xpZW50WSB9ID0gZXZlbnRNb3VzZW1vdmU7XG4gICAgICAgIGNvbnN0IG1vdXNlUG9zaXRpb24gPSB7IGNsaWVudFgsIGNsaWVudFkgfTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENsaWVudFBvc2l0aW9uKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudERyYWcsIG1vdXNlUG9zaXRpb24sIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQsIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCwgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kcmFnQm91bmRhcnksIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudENvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRLZWVwQ29udGFpbmVyID0gcmVzdWx0LmVsZW1lbnRLZWVwQ29udGFpbmVyO1xuICAgICAgICBjb25zdCBsZWZ0ID0gcmVzdWx0LmNsaWVudFggLSBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0O1xuICAgICAgICBjb25zdCB0b3AgPSByZXN1bHQuY2xpZW50WSAtIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcDtcblxuICAgICAgICBpZiAoZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kcmFnQm91bmRhcnkgJiYgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyKSB7XG4gICAgICAgICAgaWYgKGNsaWVudFggPCByZXN1bHQudmlld3BvcnQubGVmdCkge1xuICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRYID0gcmVzdWx0LnZpZXdwb3J0LmxlZnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjbGllbnRYID4gcmVzdWx0LnZpZXdwb3J0LndpZHRoKSB7XG4gICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFggPSByZXN1bHQudmlld3BvcnQud2lkdGg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjbGllbnRZIDwgcmVzdWx0LnZpZXdwb3J0LnRvcCkge1xuICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LnZpZXdwb3J0LnRvcDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNsaWVudFkgPiByZXN1bHQudmlld3BvcnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFkgPSByZXN1bHQudmlld3BvcnQuaGVpZ2h0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZy5zdHlsZS50b3AgPSBgJHt0b3B9cHhgO1xuXG4gICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ2dpbmcubmV4dCh7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLCBlbGVtZW50S2VlcENvbnRhaW5lciwgaXRlbURyYWdJbmZvOiB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gfSk7XG4gICAgICB9KSwgdGFrZVVudGlsKChkb2N1bWVudE1vdXNlVXApKSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuXG4gIHByb3RlY3RlZCBnZXRDbGllbnRQb3NpdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCwgbW91c2VQb3NpdGlvbjogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlcjsgfSwgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ6IG51bWJlciwgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcDogbnVtYmVyLCBkcmFnQm91bmRhcnk/OiBib29sZWFuLCBlbGVtZW50Q29udGFpbmVyPzogSFRNTEVsZW1lbnQpOiB7IGNsaWVudFg6IG51bWJlcjsgY2xpZW50WTogbnVtYmVyOyBlbGVtZW50S2VlcENvbnRhaW5lcjogYm9vbGVhbjsgdmlld3BvcnQ6IElCb3VuZGluZ0NsaWVudFJlY3QgfSB7XG4gICAgbGV0IHZpZXdwb3J0ID0gZ2V0Vmlld3BvcnQoKSBhcyBJQm91bmRpbmdDbGllbnRSZWN0O1xuICAgIGNvbnN0IHJlY3RFbGVtZW50ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjb250YWluZXJCeUlkID0gdGhpcy5kcmFnRHJvcFNlcnZpY2UuQ29udGFpbmVyKCkuZ2V0KGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdncm91cElEJykgfHwgJycpO1xuICAgIGNvbnN0IGNvbnRhaW5lckl0ZW0gPSBlbGVtZW50Q29udGFpbmVyIHx8IGNvbnRhaW5lckJ5SWQ/LmVsZW1lbnRTY3JvbGwgfHwgY29udGFpbmVyQnlJZD8uZWxlbWVudCB8fCBkb2N1bWVudC5ib2R5O1xuICAgIGxldCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IG1vdXNlUG9zaXRpb247XG5cbiAgICB2aWV3cG9ydC5sZWZ0ID0gMDtcbiAgICB2aWV3cG9ydC50b3AgPSAwO1xuICAgIGlmIChkcmFnQm91bmRhcnkpIHtcbiAgICAgIHZpZXdwb3J0ID0gY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0KGNvbnRhaW5lckl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICAgICAgdmlld3BvcnQuaGVpZ2h0ID0gdmlld3BvcnQudG9wICsgdmlld3BvcnQuaGVpZ2h0O1xuICAgICAgdmlld3BvcnQud2lkdGggPSB2aWV3cG9ydC5sZWZ0ICsgdmlld3BvcnQud2lkdGg7XG4gICAgfVxuICAgIGxldCBlbGVtZW50S2VlcENvbnRhaW5lciA9IGZhbHNlO1xuXG4gICAgaWYgKGNsaWVudFggPiB2aWV3cG9ydC53aWR0aCAmJiBjbGllbnRZID4gdmlld3BvcnQuaGVpZ2h0IHx8IGNsaWVudFggPCB2aWV3cG9ydC5sZWZ0ICYmIGNsaWVudFkgPCB2aWV3cG9ydC50b3ApIHtcbiAgICAgIGVsZW1lbnRLZWVwQ29udGFpbmVyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoKGNsaWVudFggKyAocmVjdEVsZW1lbnQud2lkdGggLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCkpID4gdmlld3BvcnQud2lkdGgpIHtcbiAgICAgIGNsaWVudFggLT0gKGNsaWVudFggKyAocmVjdEVsZW1lbnQud2lkdGggLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCkgLSB2aWV3cG9ydC53aWR0aCk7XG4gICAgfVxuICAgIGlmICgoY2xpZW50WSArIChyZWN0RWxlbWVudC5oZWlnaHQgLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wKSkgPiB2aWV3cG9ydC5oZWlnaHQpIHtcbiAgICAgIGNsaWVudFkgLT0gKGNsaWVudFkgKyAocmVjdEVsZW1lbnQuaGVpZ2h0IC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCkgLSB2aWV3cG9ydC5oZWlnaHQpO1xuICAgIH1cbiAgICBpZiAoKGNsaWVudFggLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCkgPCAoZHJhZ0JvdW5kYXJ5ICYmIGNvbnRhaW5lckl0ZW0gPyB2aWV3cG9ydC5sZWZ0IDogMCkpIHtcbiAgICAgIGNsaWVudFggPSAoZHJhZ0JvdW5kYXJ5ICYmIGNvbnRhaW5lckl0ZW0gPyB2aWV3cG9ydC5sZWZ0IDogMCkgKyBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdDtcbiAgICB9XG4gICAgaWYgKChjbGllbnRZIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCkgPCAoZHJhZ0JvdW5kYXJ5ICYmIGNvbnRhaW5lckl0ZW0gPyB2aWV3cG9ydC50b3AgOiAwKSkge1xuICAgICAgY2xpZW50WSA9IChkcmFnQm91bmRhcnkgJiYgY29udGFpbmVySXRlbSA/IHZpZXdwb3J0LnRvcCA6IDApICsgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGllbnRYLCBjbGllbnRZLCBlbGVtZW50S2VlcENvbnRhaW5lciwgdmlld3BvcnQgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVNb3VzZUV2ZW50c1doZW5Nb3ZlT3ZlcklmcmFtZShwb2ludGVyRXZlbnRzOiAnbm9uZScgfCAnYXV0bycpIHtcbiAgICBjb25zdCBmcmFtZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlmcmFtZVwiKTtcblxuICAgIGlmICghZnJhbWVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7ICsraSkge1xuICAgICAgZnJhbWVzW2ldLnN0eWxlLnBvaW50ZXJFdmVudHMgPSBwb2ludGVyRXZlbnRzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59Il19
|