angular-three-soba 2.0.0-beta.4 → 2.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstractions/edges/edges.d.ts +1 -1
- package/abstractions/grid/grid.d.ts +1 -1
- package/abstractions/text-3d/text-3d.d.ts +1 -1
- package/controls/orbit-controls/orbit-controls.d.ts +4 -2
- package/esm2022/abstractions/billboard/billboard.mjs +3 -3
- package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +3 -3
- package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/edges/edges.mjs +3 -3
- package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +6 -6
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +3 -3
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +6 -6
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +3 -3
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +6 -6
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +6 -6
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +3 -3
- package/esm2022/abstractions/grid/grid.mjs +3 -3
- package/esm2022/abstractions/line/line-input.mjs +3 -3
- package/esm2022/abstractions/line/line.mjs +6 -6
- package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/text/text.mjs +3 -3
- package/esm2022/abstractions/text-3d/text-3d.mjs +3 -3
- package/esm2022/cameras/camera/camera-content.mjs +3 -3
- package/esm2022/cameras/camera/camera.mjs +6 -6
- package/esm2022/cameras/cube-camera/cube-camera.mjs +3 -3
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +3 -3
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +3 -3
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +20 -8
- package/esm2022/loaders/loader/loader.mjs +3 -3
- package/esm2022/loaders/progress/progress.mjs +4 -11
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +3 -3
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +3 -3
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +3 -3
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +3 -3
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +3 -3
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +3 -3
- package/esm2022/performance/adaptive/adaptive-dpr.mjs +3 -3
- package/esm2022/performance/adaptive/adaptive-events.mjs +3 -3
- package/esm2022/performance/detailed/detailed.mjs +3 -3
- package/esm2022/performance/instances/instance.mjs +6 -6
- package/esm2022/performance/instances/instances.mjs +6 -6
- package/esm2022/performance/stats/stats.mjs +3 -3
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +6 -6
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +6 -6
- package/esm2022/staging/bounds/bounds.mjs +6 -6
- package/esm2022/staging/camera-shake/camera-shake.mjs +3 -3
- package/esm2022/staging/caustics/caustisc.mjs +6 -6
- package/esm2022/staging/center/center.mjs +7 -7
- package/esm2022/staging/cloud/cloud.mjs +3 -3
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +3 -3
- package/esm2022/staging/environment/environment-cube.mjs +6 -6
- package/esm2022/staging/environment/environment-ground.mjs +3 -3
- package/esm2022/staging/environment/environment-input.mjs +3 -3
- package/esm2022/staging/environment/environment-map.mjs +6 -6
- package/esm2022/staging/environment/environment-portal.mjs +6 -6
- package/esm2022/staging/environment/environment.mjs +6 -6
- package/esm2022/staging/float/float.mjs +3 -3
- package/esm2022/staging/sky/sky.mjs +3 -3
- package/esm2022/staging/sparkles/sparkles.mjs +3 -3
- package/esm2022/staging/spot-light/spot-light-input.mjs +3 -3
- package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +3 -3
- package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +17 -15
- package/esm2022/staging/spot-light/spot-light.mjs +3 -3
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +3 -3
- package/esm2022/staging/stage/stage.mjs +10 -10
- package/esm2022/staging/stars/stars.mjs +3 -3
- package/fesm2022/angular-three-soba-abstractions.mjs +63 -63
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +17 -17
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +18 -6
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +6 -13
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +15 -15
- package/fesm2022/angular-three-soba-misc.mjs +3 -3
- package/fesm2022/angular-three-soba-performance.mjs +21 -21
- package/fesm2022/angular-three-soba-performance.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +102 -100
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/package.json +21 -19
- package/performance/instances/instances.d.ts +2 -2
- package/performance/instances/position-mesh.d.ts +1 -1
- package/plugin/package.json +2 -2
- package/plugin/src/generators/init/init.d.ts +1 -1
- package/plugin/src/generators/init/init.js +1 -1
- package/staging/caustics/caustisc.d.ts +1 -1
- package/staging/sparkles/sparkles.d.ts +1 -1
- package/staging/spot-light/spot-light-shadow-mesh.d.ts +2 -2
- package/staging/spot-light/volumetric-mesh.d.ts +1 -1
- package/staging/stage/stage.d.ts +0 -1
- package/staging/stars/stars.d.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EventEmitter, inject, InjectionToken, Input, Output, untracked, } from '@angular/core';
|
|
2
|
-
import { extend, injectBeforeRender, injectNgtRef, is, NgtSignalStore, NgtStore,
|
|
2
|
+
import { extend, injectBeforeRender, injectNgtRef, is, NgtSignalStore, NgtStore, requestAnimationFrameInInjectionContext, } from 'angular-three';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { Group } from 'three';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -199,7 +199,7 @@ class NgtsBounds extends NgtSignalStore {
|
|
|
199
199
|
};
|
|
200
200
|
});
|
|
201
201
|
this.#preventDragHijacking();
|
|
202
|
-
|
|
202
|
+
requestAnimationFrameInInjectionContext(() => {
|
|
203
203
|
this.#scalePointer();
|
|
204
204
|
injectBeforeRender(this.#onBeforeRender.bind(this));
|
|
205
205
|
});
|
|
@@ -266,15 +266,15 @@ class NgtsBounds extends NgtSignalStore {
|
|
|
266
266
|
}
|
|
267
267
|
});
|
|
268
268
|
}
|
|
269
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
270
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
269
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsBounds, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
270
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtsBounds, isStandalone: true, selector: "ngts-bounds", inputs: { boundsRef: "boundsRef", damping: "damping", fit: "fit", clip: "clip", observe: "observe", margin: "margin", eps: "eps" }, outputs: { fitted: "fitted" }, providers: [{ provide: NGTS_BOUNDS_API, useFactory: (bounds) => bounds.api, deps: [NgtsBounds] }], usesInheritance: true, ngImport: i0, template: `
|
|
271
271
|
<ngt-group ngtCompound [ref]="boundsRef">
|
|
272
272
|
<ng-content />
|
|
273
273
|
</ngt-group>
|
|
274
274
|
`, isInline: true }); }
|
|
275
275
|
}
|
|
276
276
|
export { NgtsBounds };
|
|
277
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
277
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsBounds, decorators: [{
|
|
278
278
|
type: Component,
|
|
279
279
|
args: [{
|
|
280
280
|
selector: 'ngts-bounds',
|
|
@@ -304,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
304
304
|
}], fitted: [{
|
|
305
305
|
type: Output
|
|
306
306
|
}] } });
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2JvdW5kcy9ib3VuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsTUFBTSxFQUNOLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osRUFBRSxFQUNGLGNBQWMsRUFDZCxRQUFRLEVBQ1Isa0NBQWtDLEdBRXJDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBK0I5QixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVksRUFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUssR0FBa0IsQ0FBQyxNQUFNLENBQUM7QUFFeEYsU0FBUyxNQUFNLENBQUMsQ0FBZ0IsRUFBRSxDQUFnQixFQUFFLEdBQVc7SUFDM0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMvRixDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsQ0FBZ0IsRUFBRSxDQUFnQixFQUFFLE1BQWMsRUFBRSxLQUFhO0lBQzNFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQXdCLGdCQUFnQixDQUFDLENBQUM7QUFXM0YsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUVsQixNQVdhLFVBQVcsU0FBUSxjQUErQjtJQUczRCxJQUFhLE9BQU8sQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFhLEdBQUcsQ0FBQyxHQUFZO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFhLElBQUksQ0FBQyxJQUFhO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLE9BQU8sQ0FBQyxPQUFnQjtRQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxHQUFHLENBQUMsR0FBVztRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBSVEsTUFBTSxDQUFvQjtJQUMxQixTQUFTLENBQWtDO0lBQzNDLE9BQU8sQ0FBZ0M7SUFDdkMsV0FBVyxDQUFvQztJQUMvQyxLQUFLLENBQThCO0lBRW5DLFFBQVEsQ0FBMEY7SUFDbEcsS0FBSyxDQUF3RTtJQUU3RSxJQUFJLENBQW9CO0lBRXhCLE9BQU8sQ0FBeUI7SUFDaEMsUUFBUSxDQUEwQjtJQUNsQyxJQUFJLENBQXNCO0lBQzFCLEtBQUssQ0FBdUI7SUFDNUIsUUFBUSxDQUEwQjtJQUUzQyxNQUFNLENBQUs7SUFpSlg7UUFDSSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUEvTGxGLGNBQVMsR0FBRyxZQUFZLEVBQVMsQ0FBQztRQTBCakMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRTdDLFdBQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUIsY0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLFlBQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxnQkFBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9DLFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuQyxhQUFRLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2xHLFVBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTdFLFNBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV4QixZQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixhQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzQyxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRUYsUUFBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUVoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBOEIsQ0FBQztZQUM5RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBRXhCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7WUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUUzQixTQUFTLE9BQU87Z0JBQ1osTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakQsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO29CQUNuRCxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUM7b0JBQ2IsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3pHLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUMzQyxDQUFDO1lBRUQsT0FBTztnQkFDSCxPQUFPO2dCQUNQLE9BQU8sQ0FBQyxNQUFvQztvQkFDeEMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO3dCQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7eUJBQ2hDO3dCQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDL0IsSUFBSSxNQUFNLEVBQUU7NEJBQ1IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzs0QkFDckMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDN0I7cUJBQ0o7b0JBQ0QsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUU7d0JBQ2YsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7d0JBQzNDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUNuRjtvQkFFRCxJQUFJLFFBQVEsRUFBRSxXQUFXLENBQUMsSUFBSSxLQUFLLCtCQUErQixFQUFFO3dCQUNoRSxvREFBb0Q7d0JBQ3BELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQzt3QkFDL0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDcEcsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ3RELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNoQztvQkFFRCxPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQztnQkFFRCxJQUFJO29CQUNBLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztvQkFDL0IsSUFBSSxRQUFRO3dCQUFFLFFBQVEsQ0FBQyxXQUFXLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBQztvQkFDbkQsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFDO29CQUM3QixNQUFNLENBQUMsR0FBRyxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUM7b0JBQzVCLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUNoQyxJQUFJLFFBQVE7d0JBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQyxVQUFVLEVBQUUsQ0FBQztvQkFDYixPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQztnQkFDRCxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUE2RTtvQkFDOUYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNyQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7b0JBRTdCLElBQUksTUFBTSxFQUFFO3dCQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7cUJBQzdCO3lCQUFNO3dCQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUMzQjtvQkFFRCxJQUFJLE9BQU8sRUFBRTt3QkFDVCxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztxQkFDNUI7eUJBQU07d0JBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztxQkFDcEM7b0JBRUQsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsR0FBRztvQkFDQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3JDLElBQUksUUFBUTt3QkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRWxELE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFFM0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFFeEIsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQy9CLE9BQU8sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQzt3QkFFM0IsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUNiLFFBQVEsR0FBRyxDQUFDLENBQUM7d0JBQ2pCLE1BQU0sUUFBUSxHQUFHOzRCQUNiLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7NEJBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7NEJBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3lCQUNyRCxDQUFDO3dCQUNGLHVEQUF1RDt3QkFDdkQsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt3QkFDL0MsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRLEVBQUU7NEJBQ3RCLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7NEJBQzFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQzFELFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQzNEO3dCQUNELFNBQVMsSUFBSSxDQUFDLENBQUM7d0JBQ2YsUUFBUSxJQUFJLENBQUMsQ0FBQzt3QkFDZCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQzt3QkFDL0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7d0JBQzdELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO3dCQUMzRCxJQUFJLENBQUMsT0FBTyxFQUFFOzRCQUNWLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQzs0QkFDeEIsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUM7eUJBQ25DO3FCQUNKO29CQUVELElBQUksT0FBTyxFQUFFO3dCQUNULE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO3FCQUM1Qjt5QkFBTTt3QkFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMxQixJQUFJLFFBQVEsRUFBRTs0QkFDVixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2pDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt5QkFDckI7cUJBQ0o7b0JBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUTt3QkFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUNqRCxVQUFVLEVBQUUsQ0FBQztvQkFDYixPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQzthQUNKLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUlDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLGtDQUFrQyxDQUFDLEdBQUcsRUFBRTtZQUNwQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhO1FBQ1QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEIsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEIsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDdEIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7U0FDN0IsQ0FBQyxDQUFDLENBQUM7UUFDSixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDekMsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxHQUFHO29CQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxJQUFJO29CQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN4QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxFQUFFLEtBQUssRUFBa0I7UUFDckMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUE4QixDQUFDO1FBRTlELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvRixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTNDLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMvQixNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNqQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzthQUNuQztZQUVELElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ1gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RDO2lCQUFNO2dCQUNILFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNyQjtZQUVELFVBQVUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQUUsT0FBTztZQUNyRyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztnQkFBRSxPQUFPO1lBQ3BHLElBQUksUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztnQkFBRSxPQUFPO1lBQzVFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBOEIsQ0FBQztZQUM5RCxJQUFJLFFBQVEsRUFBRTtnQkFDVixNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO2dCQUN6RCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQ3BFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQXJRUSxVQUFVO2tHQUFWLFVBQVUsNk5BSFIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBa0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGlEQUxuRzs7OztLQUlUOztTQUlRLFVBQVU7MkZBQVYsVUFBVTtrQkFYdEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztLQUlUO29CQUNELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxNQUFrQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztvQkFDN0csT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUVZLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRU8sT0FBTztzQkFBbkIsS0FBSztnQkFJTyxHQUFHO3NCQUFmLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sR0FBRztzQkFBZixLQUFLO2dCQUlJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gICAgZWZmZWN0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFNpZ25hbCxcbiAgICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBleHRlbmQsXG4gICAgaW5qZWN0QmVmb3JlUmVuZGVyLFxuICAgIGluamVjdE5ndFJlZixcbiAgICBpcyxcbiAgICBOZ3RTaWduYWxTdG9yZSxcbiAgICBOZ3RTdG9yZSxcbiAgICByZXF1ZXN0QW5pbWF0aW9uSW5JbmplY3Rpb25Db250ZXh0LFxuICAgIHR5cGUgTmd0UmVuZGVyU3RhdGUsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCB0eXBlIE5ndHNCb3VuZHNTaXplID0ge1xuICAgIGJveDogVEhSRUUuQm94MztcbiAgICBzaXplOiBUSFJFRS5WZWN0b3IzO1xuICAgIGNlbnRlcjogVEhSRUUuVmVjdG9yMztcbiAgICBkaXN0YW5jZTogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0c0JvdW5kc0FwaSA9IHtcbiAgICBnZXRTaXplOiAoKSA9PiBOZ3RzQm91bmRzU2l6ZTtcbiAgICByZWZyZXNoOiAob2JqZWN0PzogVEhSRUUuT2JqZWN0M0QgfCBUSFJFRS5Cb3gzKSA9PiBOZ3RzQm91bmRzQXBpO1xuICAgIGNsaXA6ICgpID0+IE5ndHNCb3VuZHNBcGk7XG4gICAgZml0OiAoKSA9PiBOZ3RzQm91bmRzQXBpO1xuICAgIHRvOiAoe1xuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdGFyZ2V0LFxuICAgIH06IHtcbiAgICAgICAgcG9zaXRpb246IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgICAgICAgdGFyZ2V0PzogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICAgIH0pID0+IE5ndHNCb3VuZHNBcGk7XG59O1xuXG50eXBlIENvbnRyb2xzUHJvdG8gPSB7XG4gICAgdXBkYXRlKCk6IHZvaWQ7XG4gICAgdGFyZ2V0OiBUSFJFRS5WZWN0b3IzO1xuICAgIG1heERpc3RhbmNlOiBudW1iZXI7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICByZW1vdmVFdmVudExpc3RlbmVyOiAoZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IChldmVudDogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xufTtcblxuY29uc3QgaXNCb3gzID0gKGRlZjogdW5rbm93bik6IGRlZiBpcyBUSFJFRS5Cb3gzID0+ICEhZGVmICYmIChkZWYgYXMgVEhSRUUuQm94MykuaXNCb3gzO1xuXG5mdW5jdGlvbiBlcXVhbHMoYTogVEhSRUUuVmVjdG9yMywgYjogVEhSRUUuVmVjdG9yMywgZXBzOiBudW1iZXIpIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoYS54IC0gYi54KSA8IGVwcyAmJiBNYXRoLmFicyhhLnkgLSBiLnkpIDwgZXBzICYmIE1hdGguYWJzKGEueiAtIGIueikgPCBlcHM7XG59XG5cbmZ1bmN0aW9uIGRhbXAodjogVEhSRUUuVmVjdG9yMywgdDogVEhSRUUuVmVjdG9yMywgbGFtYmRhOiBudW1iZXIsIGRlbHRhOiBudW1iZXIpIHtcbiAgICB2LnggPSBUSFJFRS5NYXRoVXRpbHMuZGFtcCh2LngsIHQueCwgbGFtYmRhLCBkZWx0YSk7XG4gICAgdi55ID0gVEhSRUUuTWF0aFV0aWxzLmRhbXAodi55LCB0LnksIGxhbWJkYSwgZGVsdGEpO1xuICAgIHYueiA9IFRIUkVFLk1hdGhVdGlscy5kYW1wKHYueiwgdC56LCBsYW1iZGEsIGRlbHRhKTtcbn1cblxuZXhwb3J0IGNvbnN0IE5HVFNfQk9VTkRTX0FQSSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTaWduYWw8Tmd0c0JvdW5kc0FwaT4+KCdOZ3RzQm91bmRzIEFQSScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNCb3VuZHNTdGF0ZSB7XG4gICAgZGFtcGluZzogbnVtYmVyO1xuICAgIGZpdDogYm9vbGVhbjtcbiAgICBjbGlwOiBib29sZWFuO1xuICAgIG9ic2VydmU6IGJvb2xlYW47XG4gICAgbWFyZ2luOiBudW1iZXI7XG4gICAgZXBzOiBudW1iZXI7XG59XG5cbmV4dGVuZCh7IEdyb3VwIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtYm91bmRzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQgW3JlZl09XCJib3VuZHNSZWZcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOR1RTX0JPVU5EU19BUEksIHVzZUZhY3Rvcnk6IChib3VuZHM6IE5ndHNCb3VuZHMpID0+IGJvdW5kcy5hcGksIGRlcHM6IFtOZ3RzQm91bmRzXSB9XSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNCb3VuZHMgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RzQm91bmRzU3RhdGU+IHtcbiAgICBASW5wdXQoKSBib3VuZHNSZWYgPSBpbmplY3ROZ3RSZWY8R3JvdXA+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgZGFtcGluZyhkYW1waW5nOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkYW1waW5nIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmaXQoZml0OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZml0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBjbGlwKGNsaXA6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjbGlwIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBvYnNlcnZlKG9ic2VydmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBvYnNlcnZlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBtYXJnaW4obWFyZ2luOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtYXJnaW4gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGVwcyhlcHM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGVwcyB9KTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgZml0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOZ3RzQm91bmRzU2l6ZT4oKTtcblxuICAgIHJlYWRvbmx5ICNzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG4gICAgcmVhZG9ubHkgI2NvbnRyb2xzID0gdGhpcy4jc3RvcmUuc2VsZWN0KCdjb250cm9scycpO1xuICAgIHJlYWRvbmx5ICNjYW1lcmEgPSB0aGlzLiNzdG9yZS5zZWxlY3QoJ2NhbWVyYScpO1xuICAgIHJlYWRvbmx5ICNpbnZhbGlkYXRlID0gdGhpcy4jc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG4gICAgcmVhZG9ubHkgI3NpemUgPSB0aGlzLiNzdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuICAgIHJlYWRvbmx5ICNjdXJyZW50ID0geyBhbmltYXRpbmc6IGZhbHNlLCBmb2N1czogbmV3IFRIUkVFLlZlY3RvcjMoKSwgY2FtZXJhOiBuZXcgVEhSRUUuVmVjdG9yMygpLCB6b29tOiAxIH07XG4gICAgcmVhZG9ubHkgI2dvYWwgPSB7IGZvY3VzOiBuZXcgVEhSRUUuVmVjdG9yMygpLCBjYW1lcmE6IG5ldyBUSFJFRS5WZWN0b3IzKCksIHpvb206IDEgfTtcblxuICAgIHJlYWRvbmx5ICNib3ggPSBuZXcgVEhSRUUuQm94MygpO1xuXG4gICAgcmVhZG9ubHkgI21hcmdpbiA9IHRoaXMuc2VsZWN0KCdtYXJnaW4nKTtcbiAgICByZWFkb25seSAjZGFtcGluZyA9IHRoaXMuc2VsZWN0KCdkYW1waW5nJyk7XG4gICAgcmVhZG9ubHkgI2ZpdCA9IHRoaXMuc2VsZWN0KCdmaXQnKTtcbiAgICByZWFkb25seSAjY2xpcCA9IHRoaXMuc2VsZWN0KCdjbGlwJyk7XG4gICAgcmVhZG9ubHkgI29ic2VydmUgPSB0aGlzLnNlbGVjdCgnb2JzZXJ2ZScpO1xuXG4gICAgI2NvdW50ID0gMDtcblxuICAgIHJlYWRvbmx5IGFwaSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgbWFyZ2luID0gdGhpcy4jbWFyZ2luKCk7XG4gICAgICAgIGNvbnN0IGRhbXBpbmcgPSB0aGlzLiNkYW1waW5nKCk7XG5cbiAgICAgICAgY29uc3QgY2FtZXJhID0gdGhpcy4jY2FtZXJhKCk7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy4jY29udHJvbHMoKSBhcyB1bmtub3duIGFzIENvbnRyb2xzUHJvdG87XG4gICAgICAgIGNvbnN0IGludmFsaWRhdGUgPSB0aGlzLiNpbnZhbGlkYXRlKCk7XG5cbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuI2N1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGdvYWwgPSB0aGlzLiNnb2FsO1xuXG4gICAgICAgIGNvbnN0IGJveCA9IHRoaXMuI2JveDtcbiAgICAgICAgY29uc3QgcmVmID0gKCkgPT4gdGhpcy5ib3VuZHNSZWYudW50cmFja2VkO1xuICAgICAgICBjb25zdCBmaXR0ZWQgPSB0aGlzLmZpdHRlZDtcblxuICAgICAgICBmdW5jdGlvbiBnZXRTaXplKCkge1xuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IGJveC5nZXRTaXplKG5ldyBUSFJFRS5WZWN0b3IzKCkpO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyID0gYm94LmdldENlbnRlcihuZXcgVEhSRUUuVmVjdG9yMygpKTtcbiAgICAgICAgICAgIGNvbnN0IG1heFNpemUgPSBNYXRoLm1heChzaXplLngsIHNpemUueSwgc2l6ZS56KTtcbiAgICAgICAgICAgIGNvbnN0IGZpdEhlaWdodERpc3RhbmNlID0gaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSlcbiAgICAgICAgICAgICAgICA/IG1heFNpemUgKiA0XG4gICAgICAgICAgICAgICAgOiBtYXhTaXplIC8gKDIgKiBNYXRoLmF0YW4oKE1hdGguUEkgKiBjYW1lcmEuZm92KSAvIDM2MCkpO1xuICAgICAgICAgICAgY29uc3QgZml0V2lkdGhEaXN0YW5jZSA9IGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpID8gbWF4U2l6ZSAqIDQgOiBmaXRIZWlnaHREaXN0YW5jZSAvIGNhbWVyYS5hc3BlY3Q7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IG1hcmdpbiAqIE1hdGgubWF4KGZpdEhlaWdodERpc3RhbmNlLCBmaXRXaWR0aERpc3RhbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7IGJveCwgc2l6ZSwgY2VudGVyLCBkaXN0YW5jZSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFNpemUsXG4gICAgICAgICAgICByZWZyZXNoKG9iamVjdD86IFRIUkVFLk9iamVjdDNEIHwgVEhSRUUuQm94Mykge1xuICAgICAgICAgICAgICAgIGlmIChpc0JveDMob2JqZWN0KSkgYm94LmNvcHkob2JqZWN0KTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gb2JqZWN0IHx8IHJlZigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3guc2V0RnJvbU9iamVjdCh0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChib3guaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IGNhbWVyYS5wb3NpdGlvbi5sZW5ndGgoKSB8fCAxMDtcbiAgICAgICAgICAgICAgICAgICAgYm94LnNldEZyb21DZW50ZXJBbmRTaXplKG5ldyBUSFJFRS5WZWN0b3IzKCksIG5ldyBUSFJFRS5WZWN0b3IzKG1heCwgbWF4LCBtYXgpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbHM/LmNvbnN0cnVjdG9yLm5hbWUgPT09ICdPcnRob2dyYXBoaWNUcmFja2JhbGxDb250cm9scycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUHV0IGNhbWVyYSBvbiBhIHNwaGVyZSBhbG9uZyB3aGljaCBpdCBzaG91bGQgbW92ZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRpc3RhbmNlIH0gPSBnZXRTaXplKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGNhbWVyYS5wb3NpdGlvbi5jbG9uZSgpLnN1Yihjb250cm9scy50YXJnZXQpLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKGRpc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3UG9zID0gY29udHJvbHMudGFyZ2V0LmNsb25lKCkuYWRkKGRpcmVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGNhbWVyYS5wb3NpdGlvbi5jb3B5KG5ld1Bvcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbGlwKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGlzdGFuY2UgfSA9IGdldFNpemUoKTtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbHMpIGNvbnRyb2xzLm1heERpc3RhbmNlID0gZGlzdGFuY2UgKiAxMDtcbiAgICAgICAgICAgICAgICBjYW1lcmEubmVhciA9IGRpc3RhbmNlIC8gMTAwO1xuICAgICAgICAgICAgICAgIGNhbWVyYS5mYXIgPSBkaXN0YW5jZSAqIDEwMDtcbiAgICAgICAgICAgICAgICBjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9scykgY29udHJvbHMudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRvKHsgcG9zaXRpb24sIHRhcmdldCB9OiB7IHBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07IHRhcmdldD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB9KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudC5jYW1lcmEuY29weShjYW1lcmEucG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgY2VudGVyIH0gPSBnZXRTaXplKCk7XG4gICAgICAgICAgICAgICAgZ29hbC5jYW1lcmEuc2V0KC4uLnBvc2l0aW9uKTtcblxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZ29hbC5mb2N1cy5zZXQoLi4udGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBnb2FsLmZvY3VzLmNvcHkoY2VudGVyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZGFtcGluZykge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50LmFuaW1hdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtZXJhLnBvc2l0aW9uLnNldCguLi5wb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZml0KCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQuY2FtZXJhLmNvcHkoY2FtZXJhLnBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbHMpIGN1cnJlbnQuZm9jdXMuY29weShjb250cm9scy50YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgeyBjZW50ZXIsIGRpc3RhbmNlIH0gPSBnZXRTaXplKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gY2VudGVyLmNsb25lKCkuc3ViKGNhbWVyYS5wb3NpdGlvbikubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIoZGlzdGFuY2UpO1xuXG4gICAgICAgICAgICAgICAgZ29hbC5jYW1lcmEuY29weShjZW50ZXIpLnN1YihkaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgIGdvYWwuZm9jdXMuY29weShjZW50ZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQuem9vbSA9IGNhbWVyYS56b29tO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXhIZWlnaHQgPSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGggPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJ0aWNlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUSFJFRS5WZWN0b3IzKGJveC5taW4ueCwgYm94Lm1pbi55LCBib3gubWluLnopLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRIUkVFLlZlY3RvcjMoYm94Lm1pbi54LCBib3gubWF4LnksIGJveC5taW4ueiksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMyhib3gubWluLngsIGJveC5taW4ueSwgYm94Lm1heC56KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUSFJFRS5WZWN0b3IzKGJveC5taW4ueCwgYm94Lm1heC55LCBib3gubWF4LnopLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRIUkVFLlZlY3RvcjMoYm94Lm1heC54LCBib3gubWF4LnksIGJveC5tYXgueiksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMyhib3gubWF4LngsIGJveC5tYXgueSwgYm94Lm1pbi56KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUSFJFRS5WZWN0b3IzKGJveC5tYXgueCwgYm94Lm1pbi55LCBib3gubWF4LnopLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRIUkVFLlZlY3RvcjMoYm94Lm1heC54LCBib3gubWluLnksIGJveC5taW4ueiksXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zZm9ybSB0aGUgY2VudGVyIGFuZCBlYWNoIGNvcm5lciB0byBjYW1lcmEgc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyLmFwcGx5TWF0cml4NChjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIHZlcnRpY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2LmFwcGx5TWF0cml4NChjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IE1hdGgubWF4KG1heEhlaWdodCwgTWF0aC5hYnModi55IC0gY2VudGVyLnkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoID0gTWF0aC5tYXgobWF4V2lkdGgsIE1hdGguYWJzKHYueCAtIGNlbnRlci54KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0ICo9IDI7XG4gICAgICAgICAgICAgICAgICAgIG1heFdpZHRoICo9IDI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHpvb21Gb3JIZWlnaHQgPSAoY2FtZXJhLnRvcCAtIGNhbWVyYS5ib3R0b20pIC8gbWF4SGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB6b29tRm9yV2lkdGggPSAoY2FtZXJhLnJpZ2h0IC0gY2FtZXJhLmxlZnQpIC8gbWF4V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGdvYWwuem9vbSA9IE1hdGgubWluKHpvb21Gb3JIZWlnaHQsIHpvb21Gb3JXaWR0aCkgLyBtYXJnaW47XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGFtcGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLnpvb20gPSBnb2FsLnpvb207XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGRhbXBpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudC5hbmltYXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbWVyYS5wb3NpdGlvbi5jb3B5KGdvYWwuY2FtZXJhKTtcbiAgICAgICAgICAgICAgICAgICAgY2FtZXJhLmxvb2tBdChnb2FsLmZvY3VzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9scy50YXJnZXQuY29weShnb2FsLmZvY3VzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmaXR0ZWQub2JzZXJ2ZWQpIGZpdHRlZC5lbWl0KHRoaXMuZ2V0U2l6ZSgpKTtcbiAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHsgZGFtcGluZzogNiwgZml0OiBmYWxzZSwgY2xpcDogZmFsc2UsIG9ic2VydmU6IGZhbHNlLCBtYXJnaW46IDEuMiwgZXBzOiAwLjAxIH0pO1xuICAgICAgICB0aGlzLiNwcmV2ZW50RHJhZ0hpamFja2luZygpO1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uSW5JbmplY3Rpb25Db250ZXh0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3NjYWxlUG9pbnRlcigpO1xuICAgICAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMuI29uQmVmb3JlUmVuZGVyLmJpbmQodGhpcykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAjc2NhbGVQb2ludGVyKCkge1xuICAgICAgICBjb25zdCB0cmlnZ2VyID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgICAgICAgIHNpemU6IHRoaXMuI3NpemUoKSxcbiAgICAgICAgICAgIGZpdDogdGhpcy4jZml0KCksXG4gICAgICAgICAgICBjbGlwOiB0aGlzLiNjbGlwKCksXG4gICAgICAgICAgICBvYnNlcnZlOiB0aGlzLiNvYnNlcnZlKCksXG4gICAgICAgICAgICBjYW1lcmE6IHRoaXMuI2NhbWVyYSgpLFxuICAgICAgICAgICAgY29udHJvbHM6IHRoaXMuI2NvbnRyb2xzKCksXG4gICAgICAgIH0pKTtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgb2JzZXJ2ZSwgZml0LCBjbGlwIH0gPSB0cmlnZ2VyKCk7XG4gICAgICAgICAgICBjb25zdCBhcGkgPSB1bnRyYWNrZWQodGhpcy5hcGkpO1xuICAgICAgICAgICAgaWYgKG9ic2VydmUgfHwgdGhpcy4jY291bnQrKyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGFwaS5yZWZyZXNoKCk7XG4gICAgICAgICAgICAgICAgaWYgKGZpdCkgYXBpLmZpdCgpO1xuICAgICAgICAgICAgICAgIGlmIChjbGlwKSBhcGkuY2xpcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAjb25CZWZvcmVSZW5kZXIoeyBkZWx0YSB9OiBOZ3RSZW5kZXJTdGF0ZSkge1xuICAgICAgICBjb25zdCB7IGRhbXBpbmcsIGVwcyB9ID0gdGhpcy5nZXQoKTtcbiAgICAgICAgY29uc3QgaW52YWxpZGF0ZSA9IHRoaXMuI2ludmFsaWRhdGUoKTtcbiAgICAgICAgY29uc3QgY2FtZXJhID0gdGhpcy4jY2FtZXJhKCk7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy4jY29udHJvbHMoKSBhcyB1bmtub3duIGFzIENvbnRyb2xzUHJvdG87XG5cbiAgICAgICAgaWYgKHRoaXMuI2N1cnJlbnQuYW5pbWF0aW5nKSB7XG4gICAgICAgICAgICBkYW1wKHRoaXMuI2N1cnJlbnQuZm9jdXMsIHRoaXMuI2dvYWwuZm9jdXMsIGRhbXBpbmcsIGRlbHRhKTtcbiAgICAgICAgICAgIGRhbXAodGhpcy4jY3VycmVudC5jYW1lcmEsIHRoaXMuI2dvYWwuY2FtZXJhLCBkYW1waW5nLCBkZWx0YSk7XG4gICAgICAgICAgICB0aGlzLiNjdXJyZW50Lnpvb20gPSBUSFJFRS5NYXRoVXRpbHMuZGFtcCh0aGlzLiNjdXJyZW50Lnpvb20sIHRoaXMuI2dvYWwuem9vbSwgZGFtcGluZywgZGVsdGEpO1xuICAgICAgICAgICAgY2FtZXJhLnBvc2l0aW9uLmNvcHkodGhpcy4jY3VycmVudC5jYW1lcmEpO1xuXG4gICAgICAgICAgICBpZiAoaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkpIHtcbiAgICAgICAgICAgICAgICBjYW1lcmEuem9vbSA9IHRoaXMuI2N1cnJlbnQuem9vbTtcbiAgICAgICAgICAgICAgICBjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWNvbnRyb2xzKSB7XG4gICAgICAgICAgICAgICAgY2FtZXJhLmxvb2tBdCh0aGlzLiNjdXJyZW50LmZvY3VzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udHJvbHMudGFyZ2V0LmNvcHkodGhpcy4jY3VycmVudC5mb2N1cyk7XG4gICAgICAgICAgICAgICAgY29udHJvbHMudXBkYXRlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGludmFsaWRhdGUoKTtcbiAgICAgICAgICAgIGlmIChpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKSAmJiAhKE1hdGguYWJzKHRoaXMuI2N1cnJlbnQuem9vbSAtIHRoaXMuI2dvYWwuem9vbSkgPCBlcHMpKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoIWlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpICYmICFlcXVhbHModGhpcy4jY3VycmVudC5jYW1lcmEsIHRoaXMuI2dvYWwuY2FtZXJhLCBlcHMpKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoY29udHJvbHMgJiYgIWVxdWFscyh0aGlzLiNjdXJyZW50LmZvY3VzLCB0aGlzLiNnb2FsLmZvY3VzLCBlcHMpKSByZXR1cm47XG4gICAgICAgICAgICB0aGlzLiNjdXJyZW50LmFuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI3ByZXZlbnREcmFnSGlqYWNraW5nKCkge1xuICAgICAgICBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbHMgPSB0aGlzLiNjb250cm9scygpIGFzIHVua25vd24gYXMgQ29udHJvbHNQcm90bztcbiAgICAgICAgICAgIGlmIChjb250cm9scykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4gKHRoaXMuI2N1cnJlbnQuYW5pbWF0aW5nID0gZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2xzLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXJ0JywgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIG9uQ2xlYW51cCgoKSA9PiBjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFydCcsIGNhbGxiYWNrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2JvdW5kcy9ib3VuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsTUFBTSxFQUNOLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osRUFBRSxFQUNGLGNBQWMsRUFDZCxRQUFRLEVBQ1IsdUNBQXVDLEdBRTFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBK0I5QixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVksRUFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUssR0FBa0IsQ0FBQyxNQUFNLENBQUM7QUFFeEYsU0FBUyxNQUFNLENBQUMsQ0FBZ0IsRUFBRSxDQUFnQixFQUFFLEdBQVc7SUFDM0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMvRixDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsQ0FBZ0IsRUFBRSxDQUFnQixFQUFFLE1BQWMsRUFBRSxLQUFh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QyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7NEJBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7NEJBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3lCQUNyRCxDQUFDO3dCQUNGLHVEQUF1RDt3QkFDdkQsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt3QkFDL0MsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRLEVBQUU7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STtzQkFBaEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sR0FBRztzQkFBZixLQUFLO2dCQUlJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gICAgZWZmZWN0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFNpZ25hbCxcbiAgICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBleHRlbmQsXG4gICAgaW5qZWN0QmVmb3JlUmVuZGVyLFxuICAgIGluamVjdE5ndFJlZixcbiAgICBpcyxcbiAgICBOZ3RTaWduYWxTdG9yZSxcbiAgICBOZ3RTdG9yZSxcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbkluamVjdGlvbkNvbnRleHQsXG4gICAgdHlwZSBOZ3RSZW5kZXJTdGF0ZSxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IHR5cGUgTmd0c0JvdW5kc1NpemUgPSB7XG4gICAgYm94OiBUSFJFRS5Cb3gzO1xuICAgIHNpemU6IFRIUkVFLlZlY3RvcjM7XG4gICAgY2VudGVyOiBUSFJFRS5WZWN0b3IzO1xuICAgIGRpc3RhbmNlOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzQm91bmRzQXBpID0ge1xuICAgIGdldFNpemU6ICgpID0+IE5ndHNCb3VuZHNTaXplO1xuICAgIHJlZnJlc2g6IChvYmplY3Q/OiBUSFJFRS5PYmplY3QzRCB8IFRIUkVFLkJveDMpID0+IE5ndHNCb3VuZHNBcGk7XG4gICAgY2xpcDogKCkgPT4gTmd0c0JvdW5kc0FwaTtcbiAgICBmaXQ6ICgpID0+IE5ndHNCb3VuZHNBcGk7XG4gICAgdG86ICh7XG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgICB0YXJnZXQsXG4gICAgfToge1xuICAgICAgICBwb3NpdGlvbjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICB0YXJnZXQ/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgfSkgPT4gTmd0c0JvdW5kc0FwaTtcbn07XG5cbnR5cGUgQ29udHJvbHNQcm90byA9IHtcbiAgICB1cGRhdGUoKTogdm9pZDtcbiAgICB0YXJnZXQ6IFRIUkVFLlZlY3RvcjM7XG4gICAgbWF4RGlzdGFuY2U6IG51bWJlcjtcbiAgICBhZGRFdmVudExpc3RlbmVyOiAoZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IChldmVudDogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBpc0JveDMgPSAoZGVmOiB1bmtub3duKTogZGVmIGlzIFRIUkVFLkJveDMgPT4gISFkZWYgJiYgKGRlZiBhcyBUSFJFRS5Cb3gzKS5pc0JveDM7XG5cbmZ1bmN0aW9uIGVxdWFscyhhOiBUSFJFRS5WZWN0b3IzLCBiOiBUSFJFRS5WZWN0b3IzLCBlcHM6IG51bWJlcikge1xuICAgIHJldHVybiBNYXRoLmFicyhhLnggLSBiLngpIDwgZXBzICYmIE1hdGguYWJzKGEueSAtIGIueSkgPCBlcHMgJiYgTWF0aC5hYnMoYS56IC0gYi56KSA8IGVwcztcbn1cblxuZnVuY3Rpb24gZGFtcCh2OiBUSFJFRS5WZWN0b3IzLCB0OiBUSFJFRS5WZWN0b3IzLCBsYW1iZGE6IG51bWJlciwgZGVsdGE6IG51bWJlcikge1xuICAgIHYueCA9IFRIUkVFLk1hdGhVdGlscy5kYW1wKHYueCwgdC54LCBsYW1iZGEsIGRlbHRhKTtcbiAgICB2LnkgPSBUSFJFRS5NYXRoVXRpbHMuZGFtcCh2LnksIHQueSwgbGFtYmRhLCBkZWx0YSk7XG4gICAgdi56ID0gVEhSRUUuTWF0aFV0aWxzLmRhbXAodi56LCB0LnosIGxhbWJkYSwgZGVsdGEpO1xufVxuXG5leHBvcnQgY29uc3QgTkdUU19CT1VORFNfQVBJID0gbmV3IEluamVjdGlvblRva2VuPFNpZ25hbDxOZ3RzQm91bmRzQXBpPj4oJ05ndHNCb3VuZHMgQVBJJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0JvdW5kc1N0YXRlIHtcbiAgICBkYW1waW5nOiBudW1iZXI7XG4gICAgZml0OiBib29sZWFuO1xuICAgIGNsaXA6IGJvb2xlYW47XG4gICAgb2JzZXJ2ZTogYm9vbGVhbjtcbiAgICBtYXJnaW46IG51bWJlcjtcbiAgICBlcHM6IG51bWJlcjtcbn1cblxuZXh0ZW5kKHsgR3JvdXAgfSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1ib3VuZHMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1ncm91cCBuZ3RDb21wb3VuZCBbcmVmXT1cImJvdW5kc1JlZlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5HVFNfQk9VTkRTX0FQSSwgdXNlRmFjdG9yeTogKGJvdW5kczogTmd0c0JvdW5kcykgPT4gYm91bmRzLmFwaSwgZGVwczogW05ndHNCb3VuZHNdIH1dLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0JvdW5kcyBleHRlbmRzIE5ndFNpZ25hbFN0b3JlPE5ndHNCb3VuZHNTdGF0ZT4ge1xuICAgIEBJbnB1dCgpIGJvdW5kc1JlZiA9IGluamVjdE5ndFJlZjxHcm91cD4oKTtcblxuICAgIEBJbnB1dCgpIHNldCBkYW1waW5nKGRhbXBpbmc6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGRhbXBpbmcgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZpdChmaXQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmaXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNsaXAoY2xpcDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGNsaXAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG9ic2VydmUob2JzZXJ2ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IG9ic2VydmUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG1hcmdpbihtYXJnaW46IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1hcmdpbiB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZXBzKGVwczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZXBzIH0pO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBmaXR0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndHNCb3VuZHNTaXplPigpO1xuXG4gICAgcmVhZG9ubHkgI3N0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcbiAgICByZWFkb25seSAjY29udHJvbHMgPSB0aGlzLiNzdG9yZS5zZWxlY3QoJ2NvbnRyb2xzJyk7XG4gICAgcmVhZG9ubHkgI2NhbWVyYSA9IHRoaXMuI3N0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG4gICAgcmVhZG9ubHkgI2ludmFsaWRhdGUgPSB0aGlzLiNzdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcbiAgICByZWFkb25seSAjc2l6ZSA9IHRoaXMuI3N0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXG4gICAgcmVhZG9ubHkgI2N1cnJlbnQgPSB7IGFuaW1hdGluZzogZmFsc2UsIGZvY3VzOiBuZXcgVEhSRUUuVmVjdG9yMygpLCBjYW1lcmE6IG5ldyBUSFJFRS5WZWN0b3IzKCksIHpvb206IDEgfTtcbiAgICByZWFkb25seSAjZ29hbCA9IHsgZm9jdXM6IG5ldyBUSFJFRS5WZWN0b3IzKCksIGNhbWVyYTogbmV3IFRIUkVFLlZlY3RvcjMoKSwgem9vbTogMSB9O1xuXG4gICAgcmVhZG9ubHkgI2JveCA9IG5ldyBUSFJFRS5Cb3gzKCk7XG5cbiAgICByZWFkb25seSAjbWFyZ2luID0gdGhpcy5zZWxlY3QoJ21hcmdpbicpO1xuICAgIHJlYWRvbmx5ICNkYW1waW5nID0gdGhpcy5zZWxlY3QoJ2RhbXBpbmcnKTtcbiAgICByZWFkb25seSAjZml0ID0gdGhpcy5zZWxlY3QoJ2ZpdCcpO1xuICAgIHJlYWRvbmx5ICNjbGlwID0gdGhpcy5zZWxlY3QoJ2NsaXAnKTtcbiAgICByZWFkb25seSAjb2JzZXJ2ZSA9IHRoaXMuc2VsZWN0KCdvYnNlcnZlJyk7XG5cbiAgICAjY291bnQgPSAwO1xuXG4gICAgcmVhZG9ubHkgYXBpID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBtYXJnaW4gPSB0aGlzLiNtYXJnaW4oKTtcbiAgICAgICAgY29uc3QgZGFtcGluZyA9IHRoaXMuI2RhbXBpbmcoKTtcblxuICAgICAgICBjb25zdCBjYW1lcmEgPSB0aGlzLiNjYW1lcmEoKTtcbiAgICAgICAgY29uc3QgY29udHJvbHMgPSB0aGlzLiNjb250cm9scygpIGFzIHVua25vd24gYXMgQ29udHJvbHNQcm90bztcbiAgICAgICAgY29uc3QgaW52YWxpZGF0ZSA9IHRoaXMuI2ludmFsaWRhdGUoKTtcblxuICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy4jY3VycmVudDtcbiAgICAgICAgY29uc3QgZ29hbCA9IHRoaXMuI2dvYWw7XG5cbiAgICAgICAgY29uc3QgYm94ID0gdGhpcy4jYm94O1xuICAgICAgICBjb25zdCByZWYgPSAoKSA9PiB0aGlzLmJvdW5kc1JlZi51bnRyYWNrZWQ7XG4gICAgICAgIGNvbnN0IGZpdHRlZCA9IHRoaXMuZml0dGVkO1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldFNpemUoKSB7XG4gICAgICAgICAgICBjb25zdCBzaXplID0gYm94LmdldFNpemUobmV3IFRIUkVFLlZlY3RvcjMoKSk7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBib3guZ2V0Q2VudGVyKG5ldyBUSFJFRS5WZWN0b3IzKCkpO1xuICAgICAgICAgICAgY29uc3QgbWF4U2l6ZSA9IE1hdGgubWF4KHNpemUueCwgc2l6ZS55LCBzaXplLnopO1xuICAgICAgICAgICAgY29uc3QgZml0SGVpZ2h0RGlzdGFuY2UgPSBpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKVxuICAgICAgICAgICAgICAgID8gbWF4U2l6ZSAqIDRcbiAgICAgICAgICAgICAgICA6IG1heFNpemUgLyAoMiAqIE1hdGguYXRhbigoTWF0aC5QSSAqIGNhbWVyYS5mb3YpIC8gMzYwKSk7XG4gICAgICAgICAgICBjb25zdCBmaXRXaWR0aERpc3RhbmNlID0gaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkgPyBtYXhTaXplICogNCA6IGZpdEhlaWdodERpc3RhbmNlIC8gY2FtZXJhLmFzcGVjdDtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gbWFyZ2luICogTWF0aC5tYXgoZml0SGVpZ2h0RGlzdGFuY2UsIGZpdFdpZHRoRGlzdGFuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIHsgYm94LCBzaXplLCBjZW50ZXIsIGRpc3RhbmNlIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0U2l6ZSxcbiAgICAgICAgICAgIHJlZnJlc2gob2JqZWN0PzogVEhSRUUuT2JqZWN0M0QgfCBUSFJFRS5Cb3gzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzQm94MyhvYmplY3QpKSBib3guY29weShvYmplY3QpO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBvYmplY3QgfHwgcmVmKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveC5zZXRGcm9tT2JqZWN0KHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGJveC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gY2FtZXJhLnBvc2l0aW9uLmxlbmd0aCgpIHx8IDEwO1xuICAgICAgICAgICAgICAgICAgICBib3guc2V0RnJvbUNlbnRlckFuZFNpemUobmV3IFRIUkVFLlZlY3RvcjMoKSwgbmV3IFRIUkVFLlZlY3RvcjMobWF4LCBtYXgsIG1heCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb250cm9scz8uY29uc3RydWN0b3IubmFtZSA9PT0gJ09ydGhvZ3JhcGhpY1RyYWNrYmFsbENvbnRyb2xzJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBQdXQgY2FtZXJhIG9uIGEgc3BoZXJlIGFsb25nIHdoaWNoIGl0IHNob3VsZCBtb3ZlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGlzdGFuY2UgfSA9IGdldFNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gY2FtZXJhLnBvc2l0aW9uLmNsb25lKCkuc3ViKGNvbnRyb2xzLnRhcmdldCkubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIoZGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdQb3MgPSBjb250cm9scy50YXJnZXQuY2xvbmUoKS5hZGQoZGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgY2FtZXJhLnBvc2l0aW9uLmNvcHkobmV3UG9zKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsaXAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBkaXN0YW5jZSB9ID0gZ2V0U2l6ZSgpO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9scykgY29udHJvbHMubWF4RGlzdGFuY2UgPSBkaXN0YW5jZSAqIDEwO1xuICAgICAgICAgICAgICAgIGNhbWVyYS5uZWFyID0gZGlzdGFuY2UgLyAxMDA7XG4gICAgICAgICAgICAgICAgY2FtZXJhLmZhciA9IGRpc3RhbmNlICogMTAwO1xuICAgICAgICAgICAgICAgIGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xzKSBjb250cm9scy51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG8oeyBwb3NpdGlvbiwgdGFyZ2V0IH06IHsgcG9zaXRpb246IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTsgdGFyZ2V0PzogW251bWJlciwgbnVtYmVyLCBudW1iZXJdIH0pIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50LmNhbWVyYS5jb3B5KGNhbWVyYS5wb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjZW50ZXIgfSA9IGdldFNpemUoKTtcbiAgICAgICAgICAgICAgICBnb2FsLmNhbWVyYS5zZXQoLi4ucG9zaXRpb24pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICBnb2FsLmZvY3VzLnNldCguLi50YXJnZXQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdvYWwuZm9jdXMuY29weShjZW50ZXIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkYW1waW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQuYW5pbWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjYW1lcmEucG9zaXRpb24uc2V0KC4uLnBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaXQoKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudC5jYW1lcmEuY29weShjYW1lcmEucG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9scykgY3VycmVudC5mb2N1cy5jb3B5KGNvbnRyb2xzLnRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB7IGNlbnRlciwgZGlzdGFuY2UgfSA9IGdldFNpemUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBjZW50ZXIuY2xvbmUoKS5zdWIoY2FtZXJhLnBvc2l0aW9uKS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcihkaXN0YW5jZSk7XG5cbiAgICAgICAgICAgICAgICBnb2FsLmNhbWVyYS5jb3B5KGNlbnRlcikuc3ViKGRpcmVjdGlvbik7XG4gICAgICAgICAgICAgICAgZ29hbC5mb2N1cy5jb3B5KGNlbnRlcik7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudC56b29tID0gY2FtZXJhLnpvb207XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1heEhlaWdodCA9IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnRpY2VzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRIUkVFLlZlY3RvcjMoYm94Lm1pbi54LCBib3gubWluLnksIGJveC5taW4ueiksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMyhib3gubWluLngsIGJveC5tYXgueSwgYm94Lm1pbi56KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUSFJFRS5WZWN0b3IzKGJveC5taW4ueCwgYm94Lm1pbi55LCBib3gubWF4LnopLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRIUkVFLlZlY3RvcjMoYm94Lm1pbi54LCBib3gubWF4LnksIGJveC5tYXgueiksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMyhib3gubWF4LngsIGJveC5tYXgueSwgYm94Lm1heC56KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUSFJFRS5WZWN0b3IzKGJveC5tYXgueCwgYm94Lm1heC55LCBib3gubWluLnopLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRIUkVFLlZlY3RvcjMoYm94Lm1heC54LCBib3gubWluLnksIGJveC5tYXgueiksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMyhib3gubWF4LngsIGJveC5taW4ueSwgYm94Lm1pbi56KSxcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gVHJhbnNmb3JtIHRoZSBjZW50ZXIgYW5kIGVhY2ggY29ybmVyIHRvIGNhbWVyYSBzcGFjZVxuICAgICAgICAgICAgICAgICAgICBjZW50ZXIuYXBwbHlNYXRyaXg0KGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmVydGljZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHYuYXBwbHlNYXRyaXg0KGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gTWF0aC5tYXgobWF4SGVpZ2h0LCBNYXRoLmFicyh2LnkgLSBjZW50ZXIueSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgTWF0aC5hYnModi54IC0gY2VudGVyLngpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQgKj0gMjtcbiAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGggKj0gMjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgem9vbUZvckhlaWdodCA9IChjYW1lcmEudG9wIC0gY2FtZXJhLmJvdHRvbSkgLyBtYXhIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHpvb21Gb3JXaWR0aCA9IChjYW1lcmEucmlnaHQgLSBjYW1lcmEubGVmdCkgLyBtYXhXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgZ29hbC56b29tID0gTWF0aC5taW4oem9vbUZvckhlaWdodCwgem9vbUZvcldpZHRoKSAvIG1hcmdpbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYW1waW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEuem9vbSA9IGdvYWwuem9vbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZGFtcGluZykge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50LmFuaW1hdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtZXJhLnBvc2l0aW9uLmNvcHkoZ29hbC5jYW1lcmEpO1xuICAgICAgICAgICAgICAgICAgICBjYW1lcmEubG9va0F0KGdvYWwuZm9jdXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzLnRhcmdldC5jb3B5KGdvYWwuZm9jdXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbHMudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZpdHRlZC5vYnNlcnZlZCkgZml0dGVkLmVtaXQodGhpcy5nZXRTaXplKCkpO1xuICAgICAgICAgICAgICAgIGludmFsaWRhdGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoeyBkYW1waW5nOiA2LCBmaXQ6IGZhbHNlLCBjbGlwOiBmYWxzZSwgb2JzZXJ2ZTogZmFsc2UsIG1hcmdpbjogMS4yLCBlcHM6IDAuMDEgfSk7XG4gICAgICAgIHRoaXMuI3ByZXZlbnREcmFnSGlqYWNraW5nKCk7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZUluSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNzY2FsZVBvaW50ZXIoKTtcbiAgICAgICAgICAgIGluamVjdEJlZm9yZVJlbmRlcih0aGlzLiNvbkJlZm9yZVJlbmRlci5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgI3NjYWxlUG9pbnRlcigpIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlciA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICAgICAgICBzaXplOiB0aGlzLiNzaXplKCksXG4gICAgICAgICAgICBmaXQ6IHRoaXMuI2ZpdCgpLFxuICAgICAgICAgICAgY2xpcDogdGhpcy4jY2xpcCgpLFxuICAgICAgICAgICAgb2JzZXJ2ZTogdGhpcy4jb2JzZXJ2ZSgpLFxuICAgICAgICAgICAgY2FtZXJhOiB0aGlzLiNjYW1lcmEoKSxcbiAgICAgICAgICAgIGNvbnRyb2xzOiB0aGlzLiNjb250cm9scygpLFxuICAgICAgICB9KSk7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG9ic2VydmUsIGZpdCwgY2xpcCB9ID0gdHJpZ2dlcigpO1xuICAgICAgICAgICAgY29uc3QgYXBpID0gdW50cmFja2VkKHRoaXMuYXBpKTtcbiAgICAgICAgICAgIGlmIChvYnNlcnZlIHx8IHRoaXMuI2NvdW50KysgPT09IDApIHtcbiAgICAgICAgICAgICAgICBhcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIGlmIChmaXQpIGFwaS5maXQoKTtcbiAgICAgICAgICAgICAgICBpZiAoY2xpcCkgYXBpLmNsaXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgI29uQmVmb3JlUmVuZGVyKHsgZGVsdGEgfTogTmd0UmVuZGVyU3RhdGUpIHtcbiAgICAgICAgY29uc3QgeyBkYW1waW5nLCBlcHMgfSA9IHRoaXMuZ2V0KCk7XG4gICAgICAgIGNvbnN0IGludmFsaWRhdGUgPSB0aGlzLiNpbnZhbGlkYXRlKCk7XG4gICAgICAgIGNvbnN0IGNhbWVyYSA9IHRoaXMuI2NhbWVyYSgpO1xuICAgICAgICBjb25zdCBjb250cm9scyA9IHRoaXMuI2NvbnRyb2xzKCkgYXMgdW5rbm93biBhcyBDb250cm9sc1Byb3RvO1xuXG4gICAgICAgIGlmICh0aGlzLiNjdXJyZW50LmFuaW1hdGluZykge1xuICAgICAgICAgICAgZGFtcCh0aGlzLiNjdXJyZW50LmZvY3VzLCB0aGlzLiNnb2FsLmZvY3VzLCBkYW1waW5nLCBkZWx0YSk7XG4gICAgICAgICAgICBkYW1wKHRoaXMuI2N1cnJlbnQuY2FtZXJhLCB0aGlzLiNnb2FsLmNhbWVyYSwgZGFtcGluZywgZGVsdGEpO1xuICAgICAgICAgICAgdGhpcy4jY3VycmVudC56b29tID0gVEhSRUUuTWF0aFV0aWxzLmRhbXAodGhpcy4jY3VycmVudC56b29tLCB0aGlzLiNnb2FsLnpvb20sIGRhbXBpbmcsIGRlbHRhKTtcbiAgICAgICAgICAgIGNhbWVyYS5wb3NpdGlvbi5jb3B5KHRoaXMuI2N1cnJlbnQuY2FtZXJhKTtcblxuICAgICAgICAgICAgaWYgKGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpKSB7XG4gICAgICAgICAgICAgICAgY2FtZXJhLnpvb20gPSB0aGlzLiNjdXJyZW50Lnpvb207XG4gICAgICAgICAgICAgICAgY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFjb250cm9scykge1xuICAgICAgICAgICAgICAgIGNhbWVyYS5sb29rQXQodGhpcy4jY3VycmVudC5mb2N1cyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRyb2xzLnRhcmdldC5jb3B5KHRoaXMuI2N1cnJlbnQuZm9jdXMpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2xzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbnZhbGlkYXRlKCk7XG4gICAgICAgICAgICBpZiAoaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkgJiYgIShNYXRoLmFicyh0aGlzLiNjdXJyZW50Lnpvb20gLSB0aGlzLiNnb2FsLnpvb20pIDwgZXBzKSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCFpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKSAmJiAhZXF1YWxzKHRoaXMuI2N1cnJlbnQuY2FtZXJhLCB0aGlzLiNnb2FsLmNhbWVyYSwgZXBzKSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2xzICYmICFlcXVhbHModGhpcy4jY3VycmVudC5mb2N1cywgdGhpcy4jZ29hbC5mb2N1cywgZXBzKSkgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy4jY3VycmVudC5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNwcmV2ZW50RHJhZ0hpamFja2luZygpIHtcbiAgICAgICAgZWZmZWN0KChvbkNsZWFudXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy4jY29udHJvbHMoKSBhcyB1bmtub3duIGFzIENvbnRyb2xzUHJvdG87XG4gICAgICAgICAgICBpZiAoY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9ICgpID0+ICh0aGlzLiNjdXJyZW50LmFuaW1hdGluZyA9IGZhbHNlKTtcbiAgICAgICAgICAgICAgICBjb250cm9scy5hZGRFdmVudExpc3RlbmVyKCdzdGFydCcsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICBvbkNsZWFudXAoKCkgPT4gY29udHJvbHMucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhcnQnLCBjYWxsYmFjaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -88,11 +88,11 @@ class NgtsCameraShake extends NgtSignalStore {
|
|
|
88
88
|
this.set({ intensity: intensity < 0 ? 0 : 1 });
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
92
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.
|
|
91
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsCameraShake, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
92
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: NgtsCameraShake, isStandalone: true, selector: "ngts-camera-shake", inputs: { intensity: "intensity", decay: "decay", decayRate: "decayRate", maxYaw: "maxYaw", maxPitch: "maxPitch", maxRoll: "maxRoll", yawFrequency: "yawFrequency", pitchFrequency: "pitchFrequency", rollFrequency: "rollFrequency" }, usesInheritance: true, ngImport: i0 }); }
|
|
93
93
|
}
|
|
94
94
|
export { NgtsCameraShake };
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsCameraShake, decorators: [{
|
|
96
96
|
type: Directive,
|
|
97
97
|
args: [{ selector: 'ngts-camera-shake', standalone: true }]
|
|
98
98
|
}], ctorParameters: function () { return []; }, propDecorators: { intensity: [{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NgIf } from '@angular/common';
|
|
2
2
|
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, Input } from '@angular/core';
|
|
3
|
-
import { extend, injectNgtRef, NgtSignalStore, NgtStore,
|
|
3
|
+
import { extend, injectNgtRef, NgtSignalStore, NgtStore, requestAnimationFrameInInjectionContext } from 'angular-three';
|
|
4
4
|
import { NgtsEdges } from 'angular-three-soba/abstractions';
|
|
5
5
|
import { injectNgtsFBO } from 'angular-three-soba/misc';
|
|
6
6
|
import { CausticsMaterial, CausticsProjectionMaterial } from 'angular-three-soba/shaders';
|
|
@@ -127,7 +127,7 @@ class NgtsCaustics extends NgtSignalStore {
|
|
|
127
127
|
this.causticsTargetFbo = injectNgtsFBO(this.#causticsTargetSettings);
|
|
128
128
|
this.causticsTargetBFbo = injectNgtsFBO(this.#causticsTargetSettings);
|
|
129
129
|
this.#store = inject(NgtStore);
|
|
130
|
-
|
|
130
|
+
requestAnimationFrameInInjectionContext(() => {
|
|
131
131
|
this.#updateWorldMatrix();
|
|
132
132
|
this.#setBeforeRender();
|
|
133
133
|
});
|
|
@@ -293,8 +293,8 @@ class NgtsCaustics extends NgtSignalStore {
|
|
|
293
293
|
}
|
|
294
294
|
});
|
|
295
295
|
}
|
|
296
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
297
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
296
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsCaustics, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
297
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtsCaustics, isStandalone: true, selector: "ngts-caustics", inputs: { causticsRef: "causticsRef", frames: "frames", debug: "debug", causticsOnly: "causticsOnly", backside: "backside", ior: "ior", backsideIOR: "backsideIOR", worldRadius: "worldRadius", intensity: "intensity", color: "color", resolution: "resolution", lightSource: "lightSource" }, usesInheritance: true, ngImport: i0, template: `
|
|
298
298
|
<ngt-group [ref]="causticsRef" ngtCompound>
|
|
299
299
|
<ngt-scene [ref]="sceneRef">
|
|
300
300
|
<ngt-orthographic-camera [ref]="cameraRef" [up]="[0, 1, 0]" />
|
|
@@ -322,7 +322,7 @@ class NgtsCaustics extends NgtSignalStore {
|
|
|
322
322
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsEdges, selector: "ngts-edges", inputs: ["edgesRef", "threshold", "color", "geometry", "userData", "withChildren"] }] }); }
|
|
323
323
|
}
|
|
324
324
|
export { NgtsCaustics };
|
|
325
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
325
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsCaustics, decorators: [{
|
|
326
326
|
type: Component,
|
|
327
327
|
args: [{
|
|
328
328
|
selector: 'ngts-caustics',
|
|
@@ -381,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
381
381
|
}], lightSource: [{
|
|
382
382
|
type: Input
|
|
383
383
|
}] } });
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3Rpc2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvY2F1c3RpY3MvY2F1c3Rpc2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7QUFFakgsTUFBTSxXQUFXLEdBQUc7SUFDaEIsS0FBSyxFQUFFLElBQUk7SUFDWCxTQUFTLEVBQUUsS0FBSyxDQUFDLFlBQVk7SUFDN0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZO0lBQzdCLFFB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0Tmd0UmVmLCBOZ3RTaWduYWxTdG9yZSwgTmd0U3RvcmUsIHJlcXVlc3RBbmltYXRpb25JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNFZGdlcyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9hYnN0cmFjdGlvbnMnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0c0ZCTyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9taXNjJztcbmltcG9ydCB7IENhdXN0aWNzTWF0ZXJpYWwsIENhdXN0aWNzUHJvamVjdGlvbk1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAsIExpbmVCYXNpY01hdGVyaWFsLCBNZXNoLCBPcnRob2dyYXBoaWNDYW1lcmEsIFBsYW5lR2VvbWV0cnksIFNjZW5lIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgRnVsbFNjcmVlblF1YWQgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHRlbmQoeyBHcm91cCwgU2NlbmUsIE1lc2gsIFBsYW5lR2VvbWV0cnksIE9ydGhvZ3JhcGhpY0NhbWVyYSwgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWwsIExpbmVCYXNpY01hdGVyaWFsIH0pO1xuXG5jb25zdCBOT1JNQUxQUk9QUyA9IHtcbiAgICBkZXB0aDogdHJ1ZSxcbiAgICBtaW5GaWx0ZXI6IFRIUkVFLkxpbmVhckZpbHRlcixcbiAgICBtYWdGaWx0ZXI6IFRIUkVFLkxpbmVhckZpbHRlcixcbiAgICBlbmNvZGluZzogVEhSRUUuTGluZWFyRW5jb2RpbmcsXG4gICAgdHlwZTogVEhSRUUuVW5zaWduZWRCeXRlVHlwZSxcbn07XG5cbmNvbnN0IENBVVNUSUNQUk9QUyA9IHtcbiAgICBtaW5GaWx0ZXI6IFRIUkVFLkxpbmVhck1pcG1hcExpbmVhckZpbHRlcixcbiAgICBtYWdGaWx0ZXI6IFRIUkVFLkxpbmVhckZpbHRlcixcbiAgICBlbmNvZGluZzogVEhSRUUuTGluZWFyRW5jb2RpbmcsXG4gICAgZm9ybWF0OiBUSFJFRS5SR0JBRm9ybWF0LFxuICAgIHR5cGU6IFRIUkVFLkZsb2F0VHlwZSxcbiAgICBnZW5lcmF0ZU1pcG1hcHM6IHRydWUsXG59O1xuXG50eXBlIENhdXN0aWNzTWF0ZXJpYWxUeXBlID0gVEhSRUUuU2hhZGVyTWF0ZXJpYWwgJiB7XG4gICAgY2FtZXJhTWF0cml4V29ybGQ/OiBUSFJFRS5NYXRyaXg0O1xuICAgIGNhbWVyYVByb2plY3Rpb25NYXRyaXhJbnY/OiBUSFJFRS5NYXRyaXg0O1xuICAgIGxpZ2h0UGxhbmVOb3JtYWw/OiBUSFJFRS5WZWN0b3IzO1xuICAgIGxpZ2h0UGxhbmVDb25zdGFudD86IG51bWJlcjtcbiAgICBub3JtYWxUZXh0dXJlPzogVEhSRUUuVGV4dHVyZSB8IG51bGw7XG4gICAgZGVwdGhUZXh0dXJlPzogVEhSRUUuVGV4dHVyZSB8IG51bGw7XG4gICAgbGlnaHREaXI/OiBUSFJFRS5WZWN0b3IzO1xuICAgIG5lYXI/OiBudW1iZXI7XG4gICAgZmFyPzogbnVtYmVyO1xuICAgIG1vZGVsTWF0cml4PzogVEhSRUUuTWF0cml4NDtcbiAgICB3b3JsZFJhZGl1cz86IG51bWJlcjtcbiAgICBpb3I/OiBudW1iZXI7XG4gICAgYm91bmNlcz86IG51bWJlcjtcbiAgICByZXNvbHV0aW9uPzogbnVtYmVyO1xuICAgIHNpemU/OiBudW1iZXI7XG4gICAgaW50ZW5zaXR5PzogbnVtYmVyO1xufTtcblxudHlwZSBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbFR5cGUgPSBUSFJFRS5NZXNoTm9ybWFsTWF0ZXJpYWwgJiB7XG4gICAgdmlld01hdHJpeDogeyB2YWx1ZT86IFRIUkVFLk1hdHJpeDQgfTtcbiAgICBjb2xvcj86IFRIUkVFLkNvbG9yO1xuICAgIGNhdXN0aWNzVGV4dHVyZT86IFRIUkVFLlRleHR1cmU7XG4gICAgY2F1c3RpY3NUZXh0dXJlQj86IFRIUkVFLlRleHR1cmU7XG4gICAgbGlnaHRQcm9qTWF0cml4PzogVEhSRUUuTWF0cml4NDtcbiAgICBsaWdodFZpZXdNYXRyaXg/OiBUSFJFRS5NYXRyaXg0O1xufTtcblxuZnVuY3Rpb24gY3JlYXRlTm9ybWFsTWF0ZXJpYWwoc2lkZTogVEhSRUUuU2lkZSA9IFRIUkVFLkZyb250U2lkZSkge1xuICAgIGNvbnN0IHZpZXdNYXRyaXggPSB7IHZhbHVlOiBuZXcgVEhSRUUuTWF0cml4NCgpIH07XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IFRIUkVFLk1lc2hOb3JtYWxNYXRlcmlhbCh7IHNpZGUgfSksIHtcbiAgICAgICAgdmlld01hdHJpeCxcbiAgICAgICAgb25CZWZvcmVDb21waWxlOiAoc2hhZGVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHNoYWRlci51bmlmb3Jtcy52aWV3TWF0cml4ID0gdmlld01hdHJpeDtcbiAgICAgICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9XG4gICAgICAgICAgICAgICAgYHZlYzMgaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKCAoIHZlYzQoIGRpciwgMC4wICkgKiBtYXRyaXggKS54eXogKTtcbiAgICAgICAgIH1cXG5gICtcbiAgICAgICAgICAgICAgICBzaGFkZXIuZnJhZ21lbnRTaGFkZXIucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz4nLFxuICAgICAgICAgICAgICAgICAgICBgI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuICAgICAgICAgICBub3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcXG5gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzQ2F1c3RpY3NTdGF0ZSB7XG4gICAgLyoqIEhvdyBtYW55IGZyYW1lcyBpdCB3aWxsIHJlbmRlciwgc2V0IGl0IHRvIEluZmluaXR5IGZvciBydW50aW1lLCBkZWZhdWx0OiAxICovXG4gICAgZnJhbWVzOiBudW1iZXI7XG4gICAgLyoqIEVuYWJsZXMgdmlzdWFsIGN1ZXMgdG8gaGVscCB5b3Ugc3RhZ2UgeW91ciBzY2VuZSwgZGVmYXVsdDogZmFsc2UgKi9cbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICAvKiogV2lsbCBkaXNwbGF5IGNhdXN0aWNzIG9ubHkgYW5kIHNraXAgdGhlIG1vZGVscywgZGVmYXVsdDogZmFsc2UgKi9cbiAgICBjYXVzdGljc09ubHk6IGJvb2xlYW47XG4gICAgLyoqIFdpbGwgaW5jbHVkZSBiYWNrIGZhY2VzIGFuZCBlbmFibGUgdGhlIGJhY2tzaWRlSU9SIHByb3AsIGRlZmF1bHQ6IGZhbHNlICovXG4gICAgYmFja3NpZGU6IGJvb2xlYW47XG4gICAgLyoqIFRoZSBJT1IgcmVmcmFjdGlvbiBpbmRleCwgZGVmYXVsdDogMS4xICovXG4gICAgaW9yOiBudW1iZXI7XG4gICAgLyoqIFRoZSBJT1IgcmVmcmFjdGlvbiBpbmRleCBmb3IgYmFjayBmYWNlcyAob25seSBhdmFpbGFibGUgd2hlbiBiYWNrc2lkZSBpcyBlbmFibGVkKSwgZGVmYXVsdDogMS4xICovXG4gICAgYmFja3NpZGVJT1I6IG51bWJlcjtcbiAgICAvKiogVGhlIHRleGVsIHNpemUsIGRlZmF1bHQ6IDAuMzEyNSAqL1xuICAgIHdvcmxkUmFkaXVzOiBudW1iZXI7XG4gICAgLyoqIEludGVuc2l0eSBvZiB0aGUgcHJqZWN0ZWQgY2F1c3RpY3MsIGRlZmF1bHQ6IDAuMDUgKi9cbiAgICBpbnRlbnNpdHk6IG51bWJlcjtcbiAgICAvKiogQ2F1c3RpY3MgY29sb3IsIGRlZmF1bHQ6IHdoaXRlICovXG4gICAgY29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb247XG4gICAgLyoqIEJ1ZmZlciByZXNvbHV0aW9uLCBkZWZhdWx0OiAyMDQ4ICovXG4gICAgcmVzb2x1dGlvbjogbnVtYmVyO1xuICAgIC8qKiBDYW1lcmEgcG9zaXRpb24sIGl0IHdpbGwgcG9pbnQgdG93YXJkcyB0aGUgY29udGVudHMgYm91bmRzIGNlbnRlciwgZGVmYXVsdDogWzUsIDUsIDVdICovXG4gICAgbGlnaHRTb3VyY2U6IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXSB8IEVsZW1lbnRSZWY8VEhSRUUuT2JqZWN0M0Q+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtY2F1c3RpY3MnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1ncm91cCBbcmVmXT1cImNhdXN0aWNzUmVmXCIgbmd0Q29tcG91bmQ+XG4gICAgICAgICAgICA8bmd0LXNjZW5lIFtyZWZdPVwic2NlbmVSZWZcIj5cbiAgICAgICAgICAgICAgICA8bmd0LW9ydGhvZ3JhcGhpYy1jYW1lcmEgW3JlZl09XCJjYW1lcmFSZWZcIiBbdXBdPVwiWzAsIDEsIDBdXCIgLz5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICAgICAgPC9uZ3Qtc2NlbmU+XG4gICAgICAgICAgICA8bmd0LW1lc2ggW3JlbmRlck9yZGVyXT1cIjJcIiBbcmVmXT1cInBsYW5lUmVmXCIgW3JvdGF0aW9uXT1cIlstTWF0aC5QSSAvIDIsIDAsIDBdXCI+XG4gICAgICAgICAgICAgICAgPG5ndC1wbGFuZS1nZW9tZXRyeSAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtY2F1c3RpY3MtcHJvamVjdGlvbi1tYXRlcmlhbFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhdXN0aWNzVGFyZ2V0RmJvKCkgJiYgY2F1c3RpY3NUYXJnZXRCRmJvKClcIlxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJjYXVzdGljc0NvbG9yKClcIlxuICAgICAgICAgICAgICAgICAgICBbY2F1c3RpY3NUZXh0dXJlXT1cImNhdXN0aWNzVGFyZ2V0RmJvKCkudGV4dHVyZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjYXVzdGljc1RleHR1cmVCXT1cImNhdXN0aWNzVGFyZ2V0QkZibygpLnRleHR1cmVcIlxuICAgICAgICAgICAgICAgICAgICBbYmxlbmRpbmddPVwiQ3VzdG9tQmxlbmRpbmdcIlxuICAgICAgICAgICAgICAgICAgICBbYmxlbmRTcmNdPVwiT25lRmFjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2JsZW5kRHN0XT1cIlNyY0FscGhhRmFjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2RlcHRoV3JpdGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8bmd0cy1lZGdlcyAqbmdJZj1cImNhdXN0aWNzRGVidWcoKVwiIFt3aXRoQ2hpbGRyZW5dPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmd0LWxpbmUtYmFzaWMtbWF0ZXJpYWwgY29sb3I9XCIjZmZmZjAwXCIgW3RvbmVNYXBwZWRdPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmd0cy1lZGdlcz5cbiAgICAgICAgICAgIDwvbmd0LW1lc2g+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05nSWYsIE5ndHNFZGdlc10sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ2F1c3RpY3MgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RzQ2F1c3RpY3NTdGF0ZT4ge1xuICAgIHJlYWRvbmx5IEN1c3RvbUJsZW5kaW5nID0gVEhSRUUuQ3VzdG9tQmxlbmRpbmc7XG4gICAgcmVhZG9ubHkgT25lRmFjdG9yID0gVEhSRUUuT25lRmFjdG9yO1xuICAgIHJlYWRvbmx5IFNyY0FscGhhRmFjdG9yID0gVEhSRUUuU3JjQWxwaGFGYWN0b3I7XG4gICAgcmVhZG9ubHkgTWF0aCA9IE1hdGg7XG5cbiAgICByZWFkb25seSBwbGFuZVJlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5NZXNoPigpO1xuICAgIHJlYWRvbmx5IHNjZW5lUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLlNjZW5lPigpO1xuICAgIHJlYWRvbmx5IGNhbWVyYVJlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmE+KCk7XG5cbiAgICBASW5wdXQoKSBjYXVzdGljc1JlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5Hcm91cD4oKTtcblxuICAgIC8qKiBIb3cgbWFueSBmcmFtZXMgaXQgd2lsbCByZW5kZXIsIHNldCBpdCB0byBJbmZpbml0eSBmb3IgcnVudGltZSwgZGVmYXVsdDogMSAqL1xuICAgIEBJbnB1dCgpIHNldCBmcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcmFtZXMgfSk7XG4gICAgfVxuICAgIC8qKiBFbmFibGVzIHZpc3VhbCBjdWVzIHRvIGhlbHAgeW91IHN0YWdlIHlvdXIgc2NlbmUsIGRlZmF1bHQ6IGZhbHNlICovXG4gICAgQElucHV0KCkgc2V0IGRlYnVnKGRlYnVnOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGVidWcgfSk7XG4gICAgfVxuICAgIC8qKiBXaWxsIGRpc3BsYXkgY2F1c3RpY3Mgb25seSBhbmQgc2tpcCB0aGUgbW9kZWxzLCBkZWZhdWx0OiBmYWxzZSAqL1xuICAgIEBJbnB1dCgpIHNldCBjYXVzdGljc09ubHkoY2F1c3RpY3NPbmx5OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2F1c3RpY3NPbmx5IH0pO1xuICAgIH1cbiAgICAvKiogV2lsbCBpbmNsdWRlIGJhY2sgZmFjZXMgYW5kIGVuYWJsZSB0aGUgYmFja3NpZGVJT1IgcHJvcCwgZGVmYXVsdDogZmFsc2UgKi9cbiAgICBASW5wdXQoKSBzZXQgYmFja3NpZGUoYmFja3NpZGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBiYWNrc2lkZSB9KTtcbiAgICB9XG4gICAgLyoqIFRoZSBJT1IgcmVmcmFjdGlvbiBpbmRleCwgZGVmYXVsdDogMS4xICovXG4gICAgQElucHV0KCkgc2V0IGlvcihpb3I6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGlvciB9KTtcbiAgICB9XG4gICAgLyoqIFRoZSBJT1IgcmVmcmFjdGlvbiBpbmRleCBmb3IgYmFjayBmYWNlcyAob25seSBhdmFpbGFibGUgd2hlbiBiYWNrc2lkZSBpcyBlbmFibGVkKSwgZGVmYXVsdDogMS4xICovXG4gICAgQElucHV0KCkgc2V0IGJhY2tzaWRlSU9SKGJhY2tzaWRlSU9SOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBiYWNrc2lkZUlPUiB9KTtcbiAgICB9XG4gICAgLyoqIFRoZSB0ZXhlbCBzaXplLCBkZWZhdWx0OiAwLjMxMjUgKi9cbiAgICBASW5wdXQoKSBzZXQgd29ybGRSYWRpdXMod29ybGRSYWRpdXM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHdvcmxkUmFkaXVzIH0pO1xuICAgIH1cbiAgICAvKiogSW50ZW5zaXR5IG9mIHRoZSBwcmplY3RlZCBjYXVzdGljcywgZGVmYXVsdDogMC4wNSAqL1xuICAgIEBJbnB1dCgpIHNldCBpbnRlbnNpdHkoaW50ZW5zaXR5OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBpbnRlbnNpdHkgfSk7XG4gICAgfVxuICAgIC8qKiBDYXVzdGljcyBjb2xvciwgZGVmYXVsdDogd2hpdGUgKi9cbiAgICBASW5wdXQoKSBzZXQgY29sb3IoY29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb2xvciB9KTtcbiAgICB9XG4gICAgLyoqIEJ1ZmZlciByZXNvbHV0aW9uLCBkZWZhdWx0OiAyMDQ4ICovXG4gICAgQElucHV0KCkgc2V0IHJlc29sdXRpb24ocmVzb2x1dGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcmVzb2x1dGlvbiB9KTtcbiAgICB9XG4gICAgLyoqIENhbWVyYSBwb3NpdGlvbiwgaXQgd2lsbCBwb2ludCB0b3dhcmRzIHRoZSBjb250ZW50cyBib3VuZHMgY2VudGVyLCBkZWZhdWx0OiBbNSwgNSwgNV0gKi9cbiAgICBASW5wdXQoKSBzZXQgbGlnaHRTb3VyY2UobGlnaHRTb3VyY2U6IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXSB8IEVsZW1lbnRSZWY8VEhSRUUuT2JqZWN0M0Q+KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGlnaHRTb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgY2F1c3RpY3NDb2xvciA9IHRoaXMuc2VsZWN0KCdjb2xvcicpO1xuICAgIHJlYWRvbmx5IGNhdXN0aWNzRGVidWcgPSB0aGlzLnNlbGVjdCgnZGVidWcnKTtcblxuICAgIHJlYWRvbmx5ICNyZXNvbHV0aW9uID0gdGhpcy5zZWxlY3QoJ3Jlc29sdXRpb24nKTtcblxuICAgIHJlYWRvbmx5ICNub3JtYWxUYXJnZXRTZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICAgIHdpZHRoOiB0aGlzLiNyZXNvbHV0aW9uKCksXG4gICAgICAgIGhlaWdodDogdGhpcy4jcmVzb2x1dGlvbigpLFxuICAgICAgICBzZXR0aW5nczogTk9STUFMUFJPUFMsXG4gICAgfSkpO1xuXG4gICAgcmVhZG9ubHkgI2NhdXN0aWNzVGFyZ2V0U2V0dGluZ3MgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgICB3aWR0aDogdGhpcy4jcmVzb2x1dGlvbigpLFxuICAgICAgICBoZWlnaHQ6IHRoaXMuI3Jlc29sdXRpb24oKSxcbiAgICAgICAgc2V0dGluZ3M6IENBVVNUSUNQUk9QUyxcbiAgICB9KSk7XG5cbiAgICByZWFkb25seSBub3JtYWxUYXJnZXRGYm8gPSBpbmplY3ROZ3RzRkJPKHRoaXMuI25vcm1hbFRhcmdldFNldHRpbmdzKTtcbiAgICByZWFkb25seSBub3JtYWxUYXJnZXRCRmJvID0gaW5qZWN0Tmd0c0ZCTyh0aGlzLiNub3JtYWxUYXJnZXRTZXR0aW5ncyk7XG4gICAgcmVhZG9ubHkgY2F1c3RpY3NUYXJnZXRGYm8gPSBpbmplY3ROZ3RzRkJPKHRoaXMuI2NhdXN0aWNzVGFyZ2V0U2V0dGluZ3MpO1xuICAgIHJlYWRvbmx5IGNhdXN0aWNzVGFyZ2V0QkZibyA9IGluamVjdE5ndHNGQk8odGhpcy4jY2F1c3RpY3NUYXJnZXRTZXR0aW5ncyk7XG5cbiAgICByZWFkb25seSAjc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIGZyYW1lczogMSxcbiAgICAgICAgICAgIGlvcjogMS4xLFxuICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICBjYXVzdGljc09ubHk6IGZhbHNlLFxuICAgICAgICAgICAgYmFja3NpZGU6IGZhbHNlLFxuICAgICAgICAgICAgYmFja3NpZGVJT1I6IDEuMSxcbiAgICAgICAgICAgIHdvcmxkUmFkaXVzOiAwLjMxMjUsXG4gICAgICAgICAgICBpbnRlbnNpdHk6IDAuMDUsXG4gICAgICAgICAgICByZXNvbHV0aW9uOiAyMDI0LFxuICAgICAgICAgICAgbGlnaHRTb3VyY2U6IFs1LCA1LCA1XSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25JbkluamVjdGlvbkNvbnRleHQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jdXBkYXRlV29ybGRNYXRyaXgoKTtcbiAgICAgICAgICAgIHRoaXMuI3NldEJlZm9yZVJlbmRlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAjdXBkYXRlV29ybGRNYXRyaXgoKSB7XG4gICAgICAgIGNvbnN0IHRyaWdnZXIgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgICAgICAgc2NlbmVDaGlsZHJlbjogdGhpcy5zY2VuZVJlZi5jaGlsZHJlbigpKCksXG4gICAgICAgICAgICBjYXVzdGljczogdGhpcy5jYXVzdGljc1JlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgY2F1c3RpY3NDaGlsZHJlbjogdGhpcy5jYXVzdGljc1JlZi5jaGlsZHJlbigpKCksXG4gICAgICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSgpLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgY2F1c3RpY3MgfSA9IHRyaWdnZXIoKTtcbiAgICAgICAgICAgIGlmICghY2F1c3RpY3MpIHJldHVybjtcbiAgICAgICAgICAgIGNhdXN0aWNzLnVwZGF0ZVdvcmxkTWF0cml4KGZhbHNlLCB0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgI3NldEJlZm9yZVJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgY2F1c3RpY3NNYXRlcmlhbCA9IG5ldyBDYXVzdGljc01hdGVyaWFsKCkgYXMgQ2F1c3RpY3NNYXRlcmlhbFR5cGU7XG4gICAgICAgIGNvbnN0IGNhdXN0aWNzUXVhZCA9IG5ldyBGdWxsU2NyZWVuUXVhZChjYXVzdGljc01hdGVyaWFsKTtcblxuICAgICAgICBjb25zdCBub3JtYWxNYXRlcmlhbCA9IGNyZWF0ZU5vcm1hbE1hdGVyaWFsKCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbE1hdGVyaWFsQiA9IGNyZWF0ZU5vcm1hbE1hdGVyaWFsKFRIUkVFLkJhY2tTaWRlKTtcblxuICAgICAgICBjb25zdCB0cmlnZ2VyID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgICAgICAgIHNjZW5lOiB0aGlzLnNjZW5lUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBzY2VuZUNoaWxkcmVuOiB0aGlzLnNjZW5lUmVmLmNoaWxkcmVuKCkoKSxcbiAgICAgICAgICAgIGNhdXN0aWNzOiB0aGlzLmNhdXN0aWNzUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBjYW1lcmE6IHRoaXMuY2FtZXJhUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBub3JtYWxUYXJnZXQ6IHRoaXMubm9ybWFsVGFyZ2V0RmJvKCksXG4gICAgICAgICAgICBub3JtYWxUYXJnZXRCOiB0aGlzLm5vcm1hbFRhcmdldEJGYm8oKSxcbiAgICAgICAgICAgIGNhdXN0aWNzVGFyZ2V0OiB0aGlzLmNhdXN0aWNzVGFyZ2V0RmJvKCksXG4gICAgICAgICAgICBjYXVzdGljc1RhcmdldEI6IHRoaXMuY2F1c3RpY3NUYXJnZXRCRmJvKCksXG4gICAgICAgICAgICBwbGFuZTogdGhpcy5wbGFuZVJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgcGxhbmVDaGlsZHJlbjogdGhpcy5wbGFuZVJlZi5jaGlsZHJlbignYm90aCcpKCksXG4gICAgICAgIH0pKTtcblxuICAgICAgICBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhdXN0aWNzLFxuICAgICAgICAgICAgICAgIHNjZW5lQ2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgc2NlbmUsXG4gICAgICAgICAgICAgICAgY2FtZXJhLFxuICAgICAgICAgICAgICAgIHBsYW5lLFxuICAgICAgICAgICAgICAgIG5vcm1hbFRhcmdldCxcbiAgICAgICAgICAgICAgICBub3JtYWxUYXJnZXRCLFxuICAgICAgICAgICAgICAgIGNhdXN0aWNzVGFyZ2V0LFxuICAgICAgICAgICAgICAgIGNhdXN0aWNzVGFyZ2V0QixcbiAgICAgICAgICAgIH0gPSB0cmlnZ2VyKCk7XG4gICAgICAgICAgICBpZiAoIWNhdXN0aWNzKSByZXR1cm47XG4gICAgICAgICAgICBjYXVzdGljcy51cGRhdGVXb3JsZE1hdHJpeChmYWxzZSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGlmIChzY2VuZUNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBscEYgPSBuZXcgVEhSRUUuRnJ1c3R1bSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxwTSA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbHBQID0gbmV3IFRIUkVFLlBsYW5lKCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBsaWdodERpciA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlnaHREaXJJbnYgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IG5ldyBUSFJFRS5Cb3gzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9jdXNQb3MgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWIgPSB0aGlzLiNzdG9yZS5nZXQoJ2ludGVybmFsJykuc3Vic2NyaWJlKCh7IGdsIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHRTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHV0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRSYWRpdXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrc2lkZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tzaWRlSU9SLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NPbmx5LFxuICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5nZXQoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVzID09PSBJbmZpbml0eSB8fCBjb3VudCsrIDwgZnJhbWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsaWdodFNvdXJjZSkpIGxpZ2h0RGlyLmZyb21BcnJheShsaWdodFNvdXJjZSkubm9ybWFsaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHREaXIuY29weShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3Mud29ybGRUb0xvY2FsKGxpZ2h0U291cmNlLm5hdGl2ZUVsZW1lbnQuZ2V0V29ybGRQb3NpdGlvbih2KSkubm9ybWFsaXplKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsaWdodERpckludi5jb3B5KGxpZ2h0RGlyKS5tdWx0aXBseVNjYWxhcigtMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBib3VuZHNWZXJ0aWNlczogVEhSRUUuVmVjdG9yM1tdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBzY2VuZS5wYXJlbnQ/Lm1hdHJpeFdvcmxkLmlkZW50aXR5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHMuc2V0RnJvbU9iamVjdChzY2VuZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5taW4ueCwgYm91bmRzLm1pbi55LCBib3VuZHMubWluLnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kc1ZlcnRpY2VzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMoYm91bmRzLm1pbi54LCBib3VuZHMubWluLnksIGJvdW5kcy5tYXgueikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWluLngsIGJvdW5kcy5tYXgueSwgYm91bmRzLm1pbi56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5taW4ueCwgYm91bmRzLm1heC55LCBib3VuZHMubWF4LnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kc1ZlcnRpY2VzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMoYm91bmRzLm1heC54LCBib3VuZHMubWluLnksIGJvdW5kcy5taW4ueikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWF4LngsIGJvdW5kcy5taW4ueSwgYm91bmRzLm1heC56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5tYXgueCwgYm91bmRzLm1heC55LCBib3VuZHMubWluLnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kc1ZlcnRpY2VzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMoYm91bmRzLm1heC54LCBib3VuZHMubWF4LnksIGJvdW5kcy5tYXgueikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JsZFZlcnRzID0gYm91bmRzVmVydGljZXMubWFwKCh2KSA9PiB2LmNsb25lKCkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHMuZ2V0Q2VudGVyKGZvY3VzUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kc1ZlcnRpY2VzID0gYm91bmRzVmVydGljZXMubWFwKCh2KSA9PiB2LmNsb25lKCkuc3ViKGZvY3VzUG9zKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWdodFBsYW5lID0gbHBQLnNldChsaWdodERpckludiwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9qZWN0ZWRWZXJ0cyA9IGJvdW5kc1ZlcnRpY2VzLm1hcCgodikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWdodFBsYW5lLnByb2plY3RQb2ludCh2LCBuZXcgVEhSRUUuVmVjdG9yMygpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VudHJhbFZlcnQgPSBwcm9qZWN0ZWRWZXJ0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEuYWRkKGIpLCB2LnNldCgwLCAwLCAwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGl2aWRlU2NhbGFyKHByb2plY3RlZFZlcnRzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByYWRpdXMgPSBwcm9qZWN0ZWRWZXJ0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHYpID0+IHYuZGlzdGFuY2VUbyhjZW50cmFsVmVydCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5tYXgoYSwgYikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlyTGVuZ3RoID0gYm91bmRzVmVydGljZXMubWFwKCh4KSA9PiB4LmRvdChsaWdodERpcikpLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5tYXgoYSwgYikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaGFkb3dzXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEucG9zaXRpb24uY29weShsaWdodERpci5jbG9uZSgpLm11bHRpcGx5U2NhbGFyKGRpckxlbmd0aCkuYWRkKGZvY3VzUG9zKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEubG9va0F0KHNjZW5lLmxvY2FsVG9Xb3JsZChmb2N1c1Bvcy5jbG9uZSgpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXJNYXRyaXggPSBscE0ubG9va0F0KGNhbWVyYS5wb3NpdGlvbiwgZm9jdXNQb3MsIHYuc2V0KDAsIDEsIDApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5sZWZ0ID0gLXJhZGl1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5yaWdodCA9IHJhZGl1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS50b3AgPSByYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEuYm90dG9tID0gLXJhZGl1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHlPZmZzZXQgPSB2LnNldCgwLCByYWRpdXMsIDApLmFwcGx5TWF0cml4NChkaXJNYXRyaXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeVRpbWUgPSAoY2FtZXJhLnBvc2l0aW9uLnkgKyB5T2Zmc2V0LnkpIC8gbGlnaHREaXIueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5uZWFyID0gMC4xO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLmZhciA9IHlUaW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS51cGRhdGVNYXRyaXhXb3JsZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3cgZmluZCBzaXplIG9mIGdyb3VuZCBwbGFuZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdW5kUHJvamVjdGVkQ29vcmRzID0gd29ybGRWZXJ0cy5tYXAoKHYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi5hZGQobGlnaHREaXIuY2xvbmUoKS5tdWx0aXBseVNjYWxhcigtdi55IC8gbGlnaHREaXIueSkpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VudGVyUG9zID0gZ3JvdW5kUHJvamVjdGVkQ29vcmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gYS5hZGQoYiksIHYuc2V0KDAsIDAsIDApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kaXZpZGVTY2FsYXIoZ3JvdW5kUHJvamVjdGVkQ29vcmRzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhTaXplID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91bmRQcm9qZWN0ZWRDb29yZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodikgPT4gTWF0aC5oeXBvdCh2LnggLSBjZW50ZXJQb3MueCwgdi56IC0gY2VudGVyUG9zLnopKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBNYXRoLm1heChhLCBiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFuZS5zY2FsZS5zZXRTY2FsYXIobWF4U2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFuZS5wb3NpdGlvbi5jb3B5KGNlbnRlclBvcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChkZWJ1ZykgaGVscGVyLmN1cnJlbnQ/LnVwZGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmplY3QgdW5pZm9ybXNcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbE1hdGVyaWFsQi52aWV3TWF0cml4LnZhbHVlID0gbm9ybWFsTWF0ZXJpYWwudmlld01hdHJpeC52YWx1ZSA9IGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpckxpZ2h0TmVhclBsYW5lID0gbHBGLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwTS5tdWx0aXBseU1hdHJpY2VzKGNhbWVyYS5wcm9qZWN0aW9uTWF0cml4LCBjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKS5wbGFuZXNbNF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuY2FtZXJhTWF0cml4V29ybGQgPSBjYW1lcmEubWF0cml4V29ybGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmNhbWVyYVByb2plY3Rpb25NYXRyaXhJbnYgPSBjYW1lcmEucHJvamVjdGlvbk1hdHJpeEludmVyc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmxpZ2h0RGlyID0gbGlnaHREaXJJbnY7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwubGlnaHRQbGFuZU5vcm1hbCA9IGRpckxpZ2h0TmVhclBsYW5lLm5vcm1hbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwubGlnaHRQbGFuZUNvbnN0YW50ID0gZGlyTGlnaHROZWFyUGxhbmUuY29uc3RhbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwubmVhciA9IGNhbWVyYS5uZWFyO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5mYXIgPSBjYW1lcmEuZmFyO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5yZXNvbHV0aW9uID0gcmVzb2x1dGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuc2l6ZSA9IHJhZGl1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuaW50ZW5zaXR5ID0gaW50ZW5zaXR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC53b3JsZFJhZGl1cyA9IHdvcmxkUmFkaXVzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggdGhlIHNjZW5lIG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2VuZS52aXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIGZyb250IGZhY2Ugbm9ybWFsc1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2wuc2V0UmVuZGVyVGFyZ2V0KG5vcm1hbFRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmUub3ZlcnJpZGVNYXRlcmlhbCA9IG5vcm1hbE1hdGVyaWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgYmFjayBmYWNlIG5vcm1hbHMsIGlmIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsLnNldFJlbmRlclRhcmdldChub3JtYWxUYXJnZXRCKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFja3NpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2VuZS5vdmVycmlkZU1hdGVyaWFsID0gbm9ybWFsTWF0ZXJpYWxCO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBvdmVycmlkZSBtYXRlcmlhbFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmUub3ZlcnJpZGVNYXRlcmlhbCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciBmcm9udCBmYWNlIGNhdXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmlvciA9IGlvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIChwbGFuZS5tYXRlcmlhbCBhcyBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbFR5cGUpLmxpZ2h0UHJvak1hdHJpeCA9IGNhbWVyYS5wcm9qZWN0aW9uTWF0cml4O1xuICAgICAgICAgICAgICAgICAgICAgICAgKHBsYW5lLm1hdGVyaWFsIGFzIENhdXN0aWNzUHJvamVjdGlvbk1hdGVyaWFsVHlwZSkubGlnaHRWaWV3TWF0cml4ID0gY2FtZXJhLm1hdHJpeFdvcmxkSW52ZXJzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwubm9ybWFsVGV4dHVyZSA9IG5vcm1hbFRhcmdldC50ZXh0dXJlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5kZXB0aFRleHR1cmUgPSBub3JtYWxUYXJnZXQuZGVwdGhUZXh0dXJlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2wuc2V0UmVuZGVyVGFyZ2V0KGNhdXN0aWNzVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc1F1YWQucmVuZGVyKGdsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIGJhY2sgZmFjZSBjYXVzdGljcywgaWYgZW5hYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5pb3IgPSBiYWNrc2lkZUlPUjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwubm9ybWFsVGV4dHVyZSA9IG5vcm1hbFRhcmdldEIudGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuZGVwdGhUZXh0dXJlID0gbm9ybWFsVGFyZ2V0Qi5kZXB0aFRleHR1cmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5zZXRSZW5kZXJUYXJnZXQoY2F1c3RpY3NUYXJnZXRCKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFja3NpZGUpIGNhdXN0aWNzUXVhZC5yZW5kZXIoZ2wpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCByZW5kZXIgdGFyZ2V0XG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3aXRjaCB0aGUgc2NlbmUgb2ZmIGlmIGNhdXN0aWNzIGlzIGFsbCB0aGF0J3Mgd2FudGVkXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2F1c3RpY3NPbmx5KSBzY2VuZS52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIG9uQ2xlYW51cCgoKSA9PiBzdWIoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3Rpc2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvY2F1c3RpY3MvY2F1c3Rpc2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7QUFFakgsTUFBTSxXQUFXLEdBQUc7SUFDaEIsS0FBSyxFQUFFLElBQUk7SUFDWCxTQUFTLEVBQUUsS0FBSyxDQUFDLFlBQVk7SUFDN0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZO0lBQzdCLFFB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0Tmd0UmVmLCBOZ3RTaWduYWxTdG9yZSwgTmd0U3RvcmUsIHJlcXVlc3RBbmltYXRpb25GcmFtZUluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTmd0c0VkZ2VzIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL2Fic3RyYWN0aW9ucyc7XG5pbXBvcnQgeyBpbmplY3ROZ3RzRkJPIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgQ2F1c3RpY3NNYXRlcmlhbCwgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHcm91cCwgTGluZUJhc2ljTWF0ZXJpYWwsIE1lc2gsIE9ydGhvZ3JhcGhpY0NhbWVyYSwgUGxhbmVHZW9tZXRyeSwgU2NlbmUgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBGdWxsU2NyZWVuUXVhZCB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmV4dGVuZCh7IEdyb3VwLCBTY2VuZSwgTWVzaCwgUGxhbmVHZW9tZXRyeSwgT3J0aG9ncmFwaGljQ2FtZXJhLCBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbCwgTGluZUJhc2ljTWF0ZXJpYWwgfSk7XG5cbmNvbnN0IE5PUk1BTFBST1BTID0ge1xuICAgIGRlcHRoOiB0cnVlLFxuICAgIG1pbkZpbHRlcjogVEhSRUUuTGluZWFyRmlsdGVyLFxuICAgIG1hZ0ZpbHRlcjogVEhSRUUuTGluZWFyRmlsdGVyLFxuICAgIGVuY29kaW5nOiBUSFJFRS5MaW5lYXJFbmNvZGluZyxcbiAgICB0eXBlOiBUSFJFRS5VbnNpZ25lZEJ5dGVUeXBlLFxufTtcblxuY29uc3QgQ0FVU1RJQ1BST1BTID0ge1xuICAgIG1pbkZpbHRlcjogVEhSRUUuTGluZWFyTWlwbWFwTGluZWFyRmlsdGVyLFxuICAgIG1hZ0ZpbHRlcjogVEhSRUUuTGluZWFyRmlsdGVyLFxuICAgIGVuY29kaW5nOiBUSFJFRS5MaW5lYXJFbmNvZGluZyxcbiAgICBmb3JtYXQ6IFRIUkVFLlJHQkFGb3JtYXQsXG4gICAgdHlwZTogVEhSRUUuRmxvYXRUeXBlLFxuICAgIGdlbmVyYXRlTWlwbWFwczogdHJ1ZSxcbn07XG5cbnR5cGUgQ2F1c3RpY3NNYXRlcmlhbFR5cGUgPSBUSFJFRS5TaGFkZXJNYXRlcmlhbCAmIHtcbiAgICBjYW1lcmFNYXRyaXhXb3JsZD86IFRIUkVFLk1hdHJpeDQ7XG4gICAgY2FtZXJhUHJvamVjdGlvbk1hdHJpeEludj86IFRIUkVFLk1hdHJpeDQ7XG4gICAgbGlnaHRQbGFuZU5vcm1hbD86IFRIUkVFLlZlY3RvcjM7XG4gICAgbGlnaHRQbGFuZUNvbnN0YW50PzogbnVtYmVyO1xuICAgIG5vcm1hbFRleHR1cmU/OiBUSFJFRS5UZXh0dXJlIHwgbnVsbDtcbiAgICBkZXB0aFRleHR1cmU/OiBUSFJFRS5UZXh0dXJlIHwgbnVsbDtcbiAgICBsaWdodERpcj86IFRIUkVFLlZlY3RvcjM7XG4gICAgbmVhcj86IG51bWJlcjtcbiAgICBmYXI/OiBudW1iZXI7XG4gICAgbW9kZWxNYXRyaXg/OiBUSFJFRS5NYXRyaXg0O1xuICAgIHdvcmxkUmFkaXVzPzogbnVtYmVyO1xuICAgIGlvcj86IG51bWJlcjtcbiAgICBib3VuY2VzPzogbnVtYmVyO1xuICAgIHJlc29sdXRpb24/OiBudW1iZXI7XG4gICAgc2l6ZT86IG51bWJlcjtcbiAgICBpbnRlbnNpdHk/OiBudW1iZXI7XG59O1xuXG50eXBlIENhdXN0aWNzUHJvamVjdGlvbk1hdGVyaWFsVHlwZSA9IFRIUkVFLk1lc2hOb3JtYWxNYXRlcmlhbCAmIHtcbiAgICB2aWV3TWF0cml4OiB7IHZhbHVlPzogVEhSRUUuTWF0cml4NCB9O1xuICAgIGNvbG9yPzogVEhSRUUuQ29sb3I7XG4gICAgY2F1c3RpY3NUZXh0dXJlPzogVEhSRUUuVGV4dHVyZTtcbiAgICBjYXVzdGljc1RleHR1cmVCPzogVEhSRUUuVGV4dHVyZTtcbiAgICBsaWdodFByb2pNYXRyaXg/OiBUSFJFRS5NYXRyaXg0O1xuICAgIGxpZ2h0Vmlld01hdHJpeD86IFRIUkVFLk1hdHJpeDQ7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVOb3JtYWxNYXRlcmlhbChzaWRlOiBUSFJFRS5TaWRlID0gVEhSRUUuRnJvbnRTaWRlKSB7XG4gICAgY29uc3Qgdmlld01hdHJpeCA9IHsgdmFsdWU6IG5ldyBUSFJFRS5NYXRyaXg0KCkgfTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgVEhSRUUuTWVzaE5vcm1hbE1hdGVyaWFsKHsgc2lkZSB9KSwge1xuICAgICAgICB2aWV3TWF0cml4LFxuICAgICAgICBvbkJlZm9yZUNvbXBpbGU6IChzaGFkZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgc2hhZGVyLnVuaWZvcm1zLnZpZXdNYXRyaXggPSB2aWV3TWF0cml4O1xuICAgICAgICAgICAgc2hhZGVyLmZyYWdtZW50U2hhZGVyID1cbiAgICAgICAgICAgICAgICBgdmVjMyBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG4gICAgICAgICAgIHJldHVybiBub3JtYWxpemUoICggdmVjNCggZGlyLCAwLjAgKSAqIG1hdHJpeCApLnh5eiApO1xuICAgICAgICAgfVxcbmAgK1xuICAgICAgICAgICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPicsXG4gICAgICAgICAgICAgICAgICAgIGAjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG4gICAgICAgICAgIG5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xcbmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNDYXVzdGljc1N0YXRlIHtcbiAgICAvKiogSG93IG1hbnkgZnJhbWVzIGl0IHdpbGwgcmVuZGVyLCBzZXQgaXQgdG8gSW5maW5pdHkgZm9yIHJ1bnRpbWUsIGRlZmF1bHQ6IDEgKi9cbiAgICBmcmFtZXM6IG51bWJlcjtcbiAgICAvKiogRW5hYmxlcyB2aXN1YWwgY3VlcyB0byBoZWxwIHlvdSBzdGFnZSB5b3VyIHNjZW5lLCBkZWZhdWx0OiBmYWxzZSAqL1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIC8qKiBXaWxsIGRpc3BsYXkgY2F1c3RpY3Mgb25seSBhbmQgc2tpcCB0aGUgbW9kZWxzLCBkZWZhdWx0OiBmYWxzZSAqL1xuICAgIGNhdXN0aWNzT25seTogYm9vbGVhbjtcbiAgICAvKiogV2lsbCBpbmNsdWRlIGJhY2sgZmFjZXMgYW5kIGVuYWJsZSB0aGUgYmFja3NpZGVJT1IgcHJvcCwgZGVmYXVsdDogZmFsc2UgKi9cbiAgICBiYWNrc2lkZTogYm9vbGVhbjtcbiAgICAvKiogVGhlIElPUiByZWZyYWN0aW9uIGluZGV4LCBkZWZhdWx0OiAxLjEgKi9cbiAgICBpb3I6IG51bWJlcjtcbiAgICAvKiogVGhlIElPUiByZWZyYWN0aW9uIGluZGV4IGZvciBiYWNrIGZhY2VzIChvbmx5IGF2YWlsYWJsZSB3aGVuIGJhY2tzaWRlIGlzIGVuYWJsZWQpLCBkZWZhdWx0OiAxLjEgKi9cbiAgICBiYWNrc2lkZUlPUjogbnVtYmVyO1xuICAgIC8qKiBUaGUgdGV4ZWwgc2l6ZSwgZGVmYXVsdDogMC4zMTI1ICovXG4gICAgd29ybGRSYWRpdXM6IG51bWJlcjtcbiAgICAvKiogSW50ZW5zaXR5IG9mIHRoZSBwcmplY3RlZCBjYXVzdGljcywgZGVmYXVsdDogMC4wNSAqL1xuICAgIGludGVuc2l0eTogbnVtYmVyO1xuICAgIC8qKiBDYXVzdGljcyBjb2xvciwgZGVmYXVsdDogd2hpdGUgKi9cbiAgICBjb2xvcjogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbjtcbiAgICAvKiogQnVmZmVyIHJlc29sdXRpb24sIGRlZmF1bHQ6IDIwNDggKi9cbiAgICByZXNvbHV0aW9uOiBudW1iZXI7XG4gICAgLyoqIENhbWVyYSBwb3NpdGlvbiwgaXQgd2lsbCBwb2ludCB0b3dhcmRzIHRoZSBjb250ZW50cyBib3VuZHMgY2VudGVyLCBkZWZhdWx0OiBbNSwgNSwgNV0gKi9cbiAgICBsaWdodFNvdXJjZTogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdIHwgRWxlbWVudFJlZjxUSFJFRS5PYmplY3QzRD47XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1jYXVzdGljcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LWdyb3VwIFtyZWZdPVwiY2F1c3RpY3NSZWZcIiBuZ3RDb21wb3VuZD5cbiAgICAgICAgICAgIDxuZ3Qtc2NlbmUgW3JlZl09XCJzY2VuZVJlZlwiPlxuICAgICAgICAgICAgICAgIDxuZ3Qtb3J0aG9ncmFwaGljLWNhbWVyYSBbcmVmXT1cImNhbWVyYVJlZlwiIFt1cF09XCJbMCwgMSwgMF1cIiAvPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgICA8L25ndC1zY2VuZT5cbiAgICAgICAgICAgIDxuZ3QtbWVzaCBbcmVuZGVyT3JkZXJdPVwiMlwiIFtyZWZdPVwicGxhbmVSZWZcIiBbcm90YXRpb25dPVwiWy1NYXRoLlBJIC8gMiwgMCwgMF1cIj5cbiAgICAgICAgICAgICAgICA8bmd0LXBsYW5lLWdlb21ldHJ5IC8+XG4gICAgICAgICAgICAgICAgPG5ndC1jYXVzdGljcy1wcm9qZWN0aW9uLW1hdGVyaWFsXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2F1c3RpY3NUYXJnZXRGYm8oKSAmJiBjYXVzdGljc1RhcmdldEJGYm8oKVwiXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImNhdXN0aWNzQ29sb3IoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjYXVzdGljc1RleHR1cmVdPVwiY2F1c3RpY3NUYXJnZXRGYm8oKS50ZXh0dXJlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NhdXN0aWNzVGV4dHVyZUJdPVwiY2F1c3RpY3NUYXJnZXRCRmJvKCkudGV4dHVyZVwiXG4gICAgICAgICAgICAgICAgICAgIFtibGVuZGluZ109XCJDdXN0b21CbGVuZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgIFtibGVuZFNyY109XCJPbmVGYWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICBbYmxlbmREc3RdPVwiU3JjQWxwaGFGYWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICBbZGVwdGhXcml0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxuZ3RzLWVkZ2VzICpuZ0lmPVwiY2F1c3RpY3NEZWJ1ZygpXCIgW3dpdGhDaGlsZHJlbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZ3QtbGluZS1iYXNpYy1tYXRlcmlhbCBjb2xvcj1cIiNmZmZmMDBcIiBbdG9uZU1hcHBlZF09XCJmYWxzZVwiIC8+XG4gICAgICAgICAgICAgICAgPC9uZ3RzLWVkZ2VzPlxuICAgICAgICAgICAgPC9uZ3QtbWVzaD5cbiAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmd0c0VkZ2VzXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNDYXVzdGljcyBleHRlbmRzIE5ndFNpZ25hbFN0b3JlPE5ndHNDYXVzdGljc1N0YXRlPiB7XG4gICAgcmVhZG9ubHkgQ3VzdG9tQmxlbmRpbmcgPSBUSFJFRS5DdXN0b21CbGVuZGluZztcbiAgICByZWFkb25seSBPbmVGYWN0b3IgPSBUSFJFRS5PbmVGYWN0b3I7XG4gICAgcmVhZG9ubHkgU3JjQWxwaGFGYWN0b3IgPSBUSFJFRS5TcmNBbHBoYUZhY3RvcjtcbiAgICByZWFkb25seSBNYXRoID0gTWF0aDtcblxuICAgIHJlYWRvbmx5IHBsYW5lUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLk1lc2g+KCk7XG4gICAgcmVhZG9ubHkgc2NlbmVSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuU2NlbmU+KCk7XG4gICAgcmVhZG9ubHkgY2FtZXJhUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYT4oKTtcblxuICAgIEBJbnB1dCgpIGNhdXN0aWNzUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLkdyb3VwPigpO1xuXG4gICAgLyoqIEhvdyBtYW55IGZyYW1lcyBpdCB3aWxsIHJlbmRlciwgc2V0IGl0IHRvIEluZmluaXR5IGZvciBydW50aW1lLCBkZWZhdWx0OiAxICovXG4gICAgQElucHV0KCkgc2V0IGZyYW1lcyhmcmFtZXM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGZyYW1lcyB9KTtcbiAgICB9XG4gICAgLyoqIEVuYWJsZXMgdmlzdWFsIGN1ZXMgdG8gaGVscCB5b3Ugc3RhZ2UgeW91ciBzY2VuZSwgZGVmYXVsdDogZmFsc2UgKi9cbiAgICBASW5wdXQoKSBzZXQgZGVidWcoZGVidWc6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkZWJ1ZyB9KTtcbiAgICB9XG4gICAgLyoqIFdpbGwgZGlzcGxheSBjYXVzdGljcyBvbmx5IGFuZCBza2lwIHRoZSBtb2RlbHMsIGRlZmF1bHQ6IGZhbHNlICovXG4gICAgQElucHV0KCkgc2V0IGNhdXN0aWNzT25seShjYXVzdGljc09ubHk6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjYXVzdGljc09ubHkgfSk7XG4gICAgfVxuICAgIC8qKiBXaWxsIGluY2x1ZGUgYmFjayBmYWNlcyBhbmQgZW5hYmxlIHRoZSBiYWNrc2lkZUlPUiBwcm9wLCBkZWZhdWx0OiBmYWxzZSAqL1xuICAgIEBJbnB1dCgpIHNldCBiYWNrc2lkZShiYWNrc2lkZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGJhY2tzaWRlIH0pO1xuICAgIH1cbiAgICAvKiogVGhlIElPUiByZWZyYWN0aW9uIGluZGV4LCBkZWZhdWx0OiAxLjEgKi9cbiAgICBASW5wdXQoKSBzZXQgaW9yKGlvcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW9yIH0pO1xuICAgIH1cbiAgICAvKiogVGhlIElPUiByZWZyYWN0aW9uIGluZGV4IGZvciBiYWNrIGZhY2VzIChvbmx5IGF2YWlsYWJsZSB3aGVuIGJhY2tzaWRlIGlzIGVuYWJsZWQpLCBkZWZhdWx0OiAxLjEgKi9cbiAgICBASW5wdXQoKSBzZXQgYmFja3NpZGVJT1IoYmFja3NpZGVJT1I6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGJhY2tzaWRlSU9SIH0pO1xuICAgIH1cbiAgICAvKiogVGhlIHRleGVsIHNpemUsIGRlZmF1bHQ6IDAuMzEyNSAqL1xuICAgIEBJbnB1dCgpIHNldCB3b3JsZFJhZGl1cyh3b3JsZFJhZGl1czogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgd29ybGRSYWRpdXMgfSk7XG4gICAgfVxuICAgIC8qKiBJbnRlbnNpdHkgb2YgdGhlIHByamVjdGVkIGNhdXN0aWNzLCBkZWZhdWx0OiAwLjA1ICovXG4gICAgQElucHV0KCkgc2V0IGludGVuc2l0eShpbnRlbnNpdHk6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGludGVuc2l0eSB9KTtcbiAgICB9XG4gICAgLyoqIENhdXN0aWNzIGNvbG9yLCBkZWZhdWx0OiB3aGl0ZSAqL1xuICAgIEBJbnB1dCgpIHNldCBjb2xvcihjb2xvcjogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbikge1xuICAgICAgICB0aGlzLnNldCh7IGNvbG9yIH0pO1xuICAgIH1cbiAgICAvKiogQnVmZmVyIHJlc29sdXRpb24sIGRlZmF1bHQ6IDIwNDggKi9cbiAgICBASW5wdXQoKSBzZXQgcmVzb2x1dGlvbihyZXNvbHV0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByZXNvbHV0aW9uIH0pO1xuICAgIH1cbiAgICAvKiogQ2FtZXJhIHBvc2l0aW9uLCBpdCB3aWxsIHBvaW50IHRvd2FyZHMgdGhlIGNvbnRlbnRzIGJvdW5kcyBjZW50ZXIsIGRlZmF1bHQ6IFs1LCA1LCA1XSAqL1xuICAgIEBJbnB1dCgpIHNldCBsaWdodFNvdXJjZShsaWdodFNvdXJjZTogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdIHwgRWxlbWVudFJlZjxUSFJFRS5PYmplY3QzRD4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsaWdodFNvdXJjZSB9KTtcbiAgICB9XG5cbiAgICByZWFkb25seSBjYXVzdGljc0NvbG9yID0gdGhpcy5zZWxlY3QoJ2NvbG9yJyk7XG4gICAgcmVhZG9ubHkgY2F1c3RpY3NEZWJ1ZyA9IHRoaXMuc2VsZWN0KCdkZWJ1ZycpO1xuXG4gICAgcmVhZG9ubHkgI3Jlc29sdXRpb24gPSB0aGlzLnNlbGVjdCgncmVzb2x1dGlvbicpO1xuXG4gICAgcmVhZG9ubHkgI25vcm1hbFRhcmdldFNldHRpbmdzID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgICAgd2lkdGg6IHRoaXMuI3Jlc29sdXRpb24oKSxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLiNyZXNvbHV0aW9uKCksXG4gICAgICAgIHNldHRpbmdzOiBOT1JNQUxQUk9QUyxcbiAgICB9KSk7XG5cbiAgICByZWFkb25seSAjY2F1c3RpY3NUYXJnZXRTZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICAgIHdpZHRoOiB0aGlzLiNyZXNvbHV0aW9uKCksXG4gICAgICAgIGhlaWdodDogdGhpcy4jcmVzb2x1dGlvbigpLFxuICAgICAgICBzZXR0aW5nczogQ0FVU1RJQ1BST1BTLFxuICAgIH0pKTtcblxuICAgIHJlYWRvbmx5IG5vcm1hbFRhcmdldEZibyA9IGluamVjdE5ndHNGQk8odGhpcy4jbm9ybWFsVGFyZ2V0U2V0dGluZ3MpO1xuICAgIHJlYWRvbmx5IG5vcm1hbFRhcmdldEJGYm8gPSBpbmplY3ROZ3RzRkJPKHRoaXMuI25vcm1hbFRhcmdldFNldHRpbmdzKTtcbiAgICByZWFkb25seSBjYXVzdGljc1RhcmdldEZibyA9IGluamVjdE5ndHNGQk8odGhpcy4jY2F1c3RpY3NUYXJnZXRTZXR0aW5ncyk7XG4gICAgcmVhZG9ubHkgY2F1c3RpY3NUYXJnZXRCRmJvID0gaW5qZWN0Tmd0c0ZCTyh0aGlzLiNjYXVzdGljc1RhcmdldFNldHRpbmdzKTtcblxuICAgIHJlYWRvbmx5ICNzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgZnJhbWVzOiAxLFxuICAgICAgICAgICAgaW9yOiAxLjEsXG4gICAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgIGNhdXN0aWNzT25seTogZmFsc2UsXG4gICAgICAgICAgICBiYWNrc2lkZTogZmFsc2UsXG4gICAgICAgICAgICBiYWNrc2lkZUlPUjogMS4xLFxuICAgICAgICAgICAgd29ybGRSYWRpdXM6IDAuMzEyNSxcbiAgICAgICAgICAgIGludGVuc2l0eTogMC4wNSxcbiAgICAgICAgICAgIHJlc29sdXRpb246IDIwMjQsXG4gICAgICAgICAgICBsaWdodFNvdXJjZTogWzUsIDUsIDVdLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSW5JbmplY3Rpb25Db250ZXh0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVdvcmxkTWF0cml4KCk7XG4gICAgICAgICAgICB0aGlzLiNzZXRCZWZvcmVSZW5kZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgI3VwZGF0ZVdvcmxkTWF0cml4KCkge1xuICAgICAgICBjb25zdCB0cmlnZ2VyID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgICAgICAgIHNjZW5lQ2hpbGRyZW46IHRoaXMuc2NlbmVSZWYuY2hpbGRyZW4oKSgpLFxuICAgICAgICAgICAgY2F1c3RpY3M6IHRoaXMuY2F1c3RpY3NSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIGNhdXN0aWNzQ2hpbGRyZW46IHRoaXMuY2F1c3RpY3NSZWYuY2hpbGRyZW4oKSgpLFxuICAgICAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUoKSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGNhdXN0aWNzIH0gPSB0cmlnZ2VyKCk7XG4gICAgICAgICAgICBpZiAoIWNhdXN0aWNzKSByZXR1cm47XG4gICAgICAgICAgICBjYXVzdGljcy51cGRhdGVXb3JsZE1hdHJpeChmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICNzZXRCZWZvcmVSZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGNhdXN0aWNzTWF0ZXJpYWwgPSBuZXcgQ2F1c3RpY3NNYXRlcmlhbCgpIGFzIENhdXN0aWNzTWF0ZXJpYWxUeXBlO1xuICAgICAgICBjb25zdCBjYXVzdGljc1F1YWQgPSBuZXcgRnVsbFNjcmVlblF1YWQoY2F1c3RpY3NNYXRlcmlhbCk7XG5cbiAgICAgICAgY29uc3Qgbm9ybWFsTWF0ZXJpYWwgPSBjcmVhdGVOb3JtYWxNYXRlcmlhbCgpO1xuICAgICAgICBjb25zdCBub3JtYWxNYXRlcmlhbEIgPSBjcmVhdGVOb3JtYWxNYXRlcmlhbChUSFJFRS5CYWNrU2lkZSk7XG5cbiAgICAgICAgY29uc3QgdHJpZ2dlciA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICAgICAgICBzY2VuZTogdGhpcy5zY2VuZVJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgc2NlbmVDaGlsZHJlbjogdGhpcy5zY2VuZVJlZi5jaGlsZHJlbigpKCksXG4gICAgICAgICAgICBjYXVzdGljczogdGhpcy5jYXVzdGljc1JlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgY2FtZXJhOiB0aGlzLmNhbWVyYVJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgbm9ybWFsVGFyZ2V0OiB0aGlzLm5vcm1hbFRhcmdldEZibygpLFxuICAgICAgICAgICAgbm9ybWFsVGFyZ2V0QjogdGhpcy5ub3JtYWxUYXJnZXRCRmJvKCksXG4gICAgICAgICAgICBjYXVzdGljc1RhcmdldDogdGhpcy5jYXVzdGljc1RhcmdldEZibygpLFxuICAgICAgICAgICAgY2F1c3RpY3NUYXJnZXRCOiB0aGlzLmNhdXN0aWNzVGFyZ2V0QkZibygpLFxuICAgICAgICAgICAgcGxhbmU6IHRoaXMucGxhbmVSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHBsYW5lQ2hpbGRyZW46IHRoaXMucGxhbmVSZWYuY2hpbGRyZW4oJ2JvdGgnKSgpLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgZWZmZWN0KChvbkNsZWFudXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYXVzdGljcyxcbiAgICAgICAgICAgICAgICBzY2VuZUNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIHNjZW5lLFxuICAgICAgICAgICAgICAgIGNhbWVyYSxcbiAgICAgICAgICAgICAgICBwbGFuZSxcbiAgICAgICAgICAgICAgICBub3JtYWxUYXJnZXQsXG4gICAgICAgICAgICAgICAgbm9ybWFsVGFyZ2V0QixcbiAgICAgICAgICAgICAgICBjYXVzdGljc1RhcmdldCxcbiAgICAgICAgICAgICAgICBjYXVzdGljc1RhcmdldEIsXG4gICAgICAgICAgICB9ID0gdHJpZ2dlcigpO1xuICAgICAgICAgICAgaWYgKCFjYXVzdGljcykgcmV0dXJuO1xuICAgICAgICAgICAgY2F1c3RpY3MudXBkYXRlV29ybGRNYXRyaXgoZmFsc2UsIHRydWUpO1xuXG4gICAgICAgICAgICBpZiAoc2NlbmVDaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbHBGID0gbmV3IFRIUkVFLkZydXN0dW0oKTtcbiAgICAgICAgICAgICAgICBjb25zdCBscE0gPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxwUCA9IG5ldyBUSFJFRS5QbGFuZSgpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbGlnaHREaXIgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpZ2h0RGlySW52ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBib3VuZHMgPSBuZXcgVEhSRUUuQm94MygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzUG9zID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuICAgICAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViID0gdGhpcy4jc3RvcmUuZ2V0KCdpbnRlcm5hbCcpLnN1YnNjcmliZSgoeyBnbCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0U291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x1dGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkUmFkaXVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW5zaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja3NpZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrc2lkZUlPUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzT25seSxcbiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQrKyA8IGZyYW1lcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlnaHRTb3VyY2UpKSBsaWdodERpci5mcm9tQXJyYXkobGlnaHRTb3VyY2UpLm5vcm1hbGl6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0RGlyLmNvcHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzLndvcmxkVG9Mb2NhbChsaWdodFNvdXJjZS5uYXRpdmVFbGVtZW50LmdldFdvcmxkUG9zaXRpb24odikpLm5vcm1hbGl6ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHREaXJJbnYuY29weShsaWdodERpcikubXVsdGlwbHlTY2FsYXIoLTEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYm91bmRzVmVydGljZXM6IFRIUkVFLlZlY3RvcjNbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmUucGFyZW50Py5tYXRyaXhXb3JsZC5pZGVudGl0eSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLnNldEZyb21PYmplY3Qoc2NlbmUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWluLngsIGJvdW5kcy5taW4ueSwgYm91bmRzLm1pbi56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5taW4ueCwgYm91bmRzLm1pbi55LCBib3VuZHMubWF4LnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kc1ZlcnRpY2VzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMoYm91bmRzLm1pbi54LCBib3VuZHMubWF4LnksIGJvdW5kcy5taW4ueikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWluLngsIGJvdW5kcy5tYXgueSwgYm91bmRzLm1heC56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5tYXgueCwgYm91bmRzLm1pbi55LCBib3VuZHMubWluLnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kc1ZlcnRpY2VzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMoYm91bmRzLm1heC54LCBib3VuZHMubWluLnksIGJvdW5kcy5tYXgueikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWF4LngsIGJvdW5kcy5tYXgueSwgYm91bmRzLm1pbi56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5tYXgueCwgYm91bmRzLm1heC55LCBib3VuZHMubWF4LnopKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ybGRWZXJ0cyA9IGJvdW5kc1ZlcnRpY2VzLm1hcCgodikgPT4gdi5jbG9uZSgpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLmdldENlbnRlcihmb2N1c1Bvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcyA9IGJvdW5kc1ZlcnRpY2VzLm1hcCgodikgPT4gdi5jbG9uZSgpLnN1Yihmb2N1c1BvcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlnaHRQbGFuZSA9IGxwUC5zZXQobGlnaHREaXJJbnYsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvamVjdGVkVmVydHMgPSBib3VuZHNWZXJ0aWNlcy5tYXAoKHYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHRQbGFuZS5wcm9qZWN0UG9pbnQodiwgbmV3IFRIUkVFLlZlY3RvcjMoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRyYWxWZXJ0ID0gcHJvamVjdGVkVmVydHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBhLmFkZChiKSwgdi5zZXQoMCwgMCwgMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpdmlkZVNjYWxhcihwcm9qZWN0ZWRWZXJ0cy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFkaXVzID0gcHJvamVjdGVkVmVydHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2KSA9PiB2LmRpc3RhbmNlVG8oY2VudHJhbFZlcnQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IE1hdGgubWF4KGEsIGIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpckxlbmd0aCA9IGJvdW5kc1ZlcnRpY2VzLm1hcCgoeCkgPT4geC5kb3QobGlnaHREaXIpKS5yZWR1Y2UoKGEsIGIpID0+IE1hdGgubWF4KGEsIGIpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hhZG93c1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLnBvc2l0aW9uLmNvcHkobGlnaHREaXIuY2xvbmUoKS5tdWx0aXBseVNjYWxhcihkaXJMZW5ndGgpLmFkZChmb2N1c1BvcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLmxvb2tBdChzY2VuZS5sb2NhbFRvV29ybGQoZm9jdXNQb3MuY2xvbmUoKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlyTWF0cml4ID0gbHBNLmxvb2tBdChjYW1lcmEucG9zaXRpb24sIGZvY3VzUG9zLCB2LnNldCgwLCAxLCAwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEubGVmdCA9IC1yYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEucmlnaHQgPSByYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEudG9wID0gcmFkaXVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLmJvdHRvbSA9IC1yYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5T2Zmc2V0ID0gdi5zZXQoMCwgcmFkaXVzLCAwKS5hcHBseU1hdHJpeDQoZGlyTWF0cml4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHlUaW1lID0gKGNhbWVyYS5wb3NpdGlvbi55ICsgeU9mZnNldC55KSAvIGxpZ2h0RGlyLnk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEubmVhciA9IDAuMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5mYXIgPSB5VGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEudXBkYXRlTWF0cml4V29ybGQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm93IGZpbmQgc2l6ZSBvZiBncm91bmQgcGxhbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VuZFByb2plY3RlZENvb3JkcyA9IHdvcmxkVmVydHMubWFwKCh2KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYuYWRkKGxpZ2h0RGlyLmNsb25lKCkubXVsdGlwbHlTY2FsYXIoLXYueSAvIGxpZ2h0RGlyLnkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRlclBvcyA9IGdyb3VuZFByb2plY3RlZENvb3Jkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEuYWRkKGIpLCB2LnNldCgwLCAwLCAwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGl2aWRlU2NhbGFyKGdyb3VuZFByb2plY3RlZENvb3Jkcy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4U2l6ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdW5kUHJvamVjdGVkQ29vcmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHYpID0+IE1hdGguaHlwb3Qodi54IC0gY2VudGVyUG9zLngsIHYueiAtIGNlbnRlclBvcy56KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5tYXgoYSwgYikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmUuc2NhbGUuc2V0U2NhbGFyKG1heFNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmUucG9zaXRpb24uY29weShjZW50ZXJQb3MpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZGVidWcpIGhlbHBlci5jdXJyZW50Py51cGRhdGUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5qZWN0IHVuaWZvcm1zXG4gICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxNYXRlcmlhbEIudmlld01hdHJpeC52YWx1ZSA9IG5vcm1hbE1hdGVyaWFsLnZpZXdNYXRyaXgudmFsdWUgPSBjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXJMaWdodE5lYXJQbGFuZSA9IGxwRi5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBscE0ubXVsdGlwbHlNYXRyaWNlcyhjYW1lcmEucHJvamVjdGlvbk1hdHJpeCwgY2FtZXJhLm1hdHJpeFdvcmxkSW52ZXJzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICkucGxhbmVzWzRdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmNhbWVyYU1hdHJpeFdvcmxkID0gY2FtZXJhLm1hdHJpeFdvcmxkO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5jYW1lcmFQcm9qZWN0aW9uTWF0cml4SW52ID0gY2FtZXJhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5saWdodERpciA9IGxpZ2h0RGlySW52O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmxpZ2h0UGxhbmVOb3JtYWwgPSBkaXJMaWdodE5lYXJQbGFuZS5ub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmxpZ2h0UGxhbmVDb25zdGFudCA9IGRpckxpZ2h0TmVhclBsYW5lLmNvbnN0YW50O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLm5lYXIgPSBjYW1lcmEubmVhcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuZmFyID0gY2FtZXJhLmZhcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwucmVzb2x1dGlvbiA9IHJlc29sdXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLnNpemUgPSByYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmludGVuc2l0eSA9IGludGVuc2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwud29ybGRSYWRpdXMgPSB3b3JsZFJhZGl1cztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dpdGNoIHRoZSBzY2VuZSBvblxuICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmUudmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciBmcm9udCBmYWNlIG5vcm1hbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsLnNldFJlbmRlclRhcmdldChub3JtYWxUYXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2wuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjZW5lLm92ZXJyaWRlTWF0ZXJpYWwgPSBub3JtYWxNYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIGJhY2sgZmFjZSBub3JtYWxzLCBpZiBlbmFibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5zZXRSZW5kZXJUYXJnZXQobm9ybWFsVGFyZ2V0Qik7XG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2tzaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmUub3ZlcnJpZGVNYXRlcmlhbCA9IG5vcm1hbE1hdGVyaWFsQjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5yZW5kZXIoc2NlbmUsIGNhbWVyYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgb3ZlcnJpZGUgbWF0ZXJpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjZW5lLm92ZXJyaWRlTWF0ZXJpYWwgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgZnJvbnQgZmFjZSBjYXVzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5pb3IgPSBpb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAocGxhbmUubWF0ZXJpYWwgYXMgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWxUeXBlKS5saWdodFByb2pNYXRyaXggPSBjYW1lcmEucHJvamVjdGlvbk1hdHJpeDtcbiAgICAgICAgICAgICAgICAgICAgICAgIChwbGFuZS5tYXRlcmlhbCBhcyBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbFR5cGUpLmxpZ2h0Vmlld01hdHJpeCA9IGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLm5vcm1hbFRleHR1cmUgPSBub3JtYWxUYXJnZXQudGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuZGVwdGhUZXh0dXJlID0gbm9ybWFsVGFyZ2V0LmRlcHRoVGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsLnNldFJlbmRlclRhcmdldChjYXVzdGljc1RhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NRdWFkLnJlbmRlcihnbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciBiYWNrIGZhY2UgY2F1c3RpY3MsIGlmIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuaW9yID0gYmFja3NpZGVJT1I7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLm5vcm1hbFRleHR1cmUgPSBub3JtYWxUYXJnZXRCLnRleHR1cmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmRlcHRoVGV4dHVyZSA9IG5vcm1hbFRhcmdldEIuZGVwdGhUZXh0dXJlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2wuc2V0UmVuZGVyVGFyZ2V0KGNhdXN0aWNzVGFyZ2V0Qik7XG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2tzaWRlKSBjYXVzdGljc1F1YWQucmVuZGVyKGdsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgcmVuZGVyIHRhcmdldFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2wuc2V0UmVuZGVyVGFyZ2V0KG51bGwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggdGhlIHNjZW5lIG9mZiBpZiBjYXVzdGljcyBpcyBhbGwgdGhhdCdzIHdhbnRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhdXN0aWNzT25seSkgc2NlbmUudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBvbkNsZWFudXAoKCkgPT4gc3ViKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { extend, injectNgtRef, NgtSignalStore,
|
|
2
|
+
import { extend, injectNgtRef, NgtSignalStore, requestAnimationFrameInInjectionContext, } from 'angular-three';
|
|
3
3
|
import { Box3, Group, Sphere, Vector3 } from 'three';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
extend({ Group });
|
|
@@ -43,7 +43,7 @@ class NgtsCenter extends NgtSignalStore {
|
|
|
43
43
|
this.outerRef = injectNgtRef();
|
|
44
44
|
this.innerRef = injectNgtRef();
|
|
45
45
|
this.centered = new EventEmitter();
|
|
46
|
-
|
|
46
|
+
requestAnimationFrameInInjectionContext(() => {
|
|
47
47
|
this.#setPosition();
|
|
48
48
|
});
|
|
49
49
|
}
|
|
@@ -88,10 +88,10 @@ class NgtsCenter extends NgtSignalStore {
|
|
|
88
88
|
depthAlignment: dAlign,
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
|
-
});
|
|
91
|
+
}, { allowSignalWrites: true });
|
|
92
92
|
}
|
|
93
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
94
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
93
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsCenter, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
94
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtsCenter, isStandalone: true, selector: "ngts-center", inputs: { centerRef: "centerRef", top: "top", right: "right", bottom: "bottom", left: "left", front: "front", back: "back", disableX: "disableX", disableY: "disableY", disableZ: "disableZ", disable: "disable", precise: "precise" }, outputs: { centered: "centered" }, usesInheritance: true, ngImport: i0, template: `
|
|
95
95
|
<ngt-group ngtCompound [ref]="centerRef">
|
|
96
96
|
<ngt-group [ref]="outerRef">
|
|
97
97
|
<ngt-group [ref]="innerRef">
|
|
@@ -102,7 +102,7 @@ class NgtsCenter extends NgtSignalStore {
|
|
|
102
102
|
`, isInline: true }); }
|
|
103
103
|
}
|
|
104
104
|
export { NgtsCenter };
|
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsCenter, decorators: [{
|
|
106
106
|
type: Component,
|
|
107
107
|
args: [{
|
|
108
108
|
selector: 'ngts-center',
|
|
@@ -145,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
145
145
|
}], centered: [{
|
|
146
146
|
type: Output
|
|
147
147
|
}] } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VudGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2NlbnRlci9jZW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxrQ0FBa0MsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFxQnJELE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFRbEIsTUFjYSxVQUFXLFNBQVEsY0FBK0I7SUFNM0QsSUFBYSxHQUFHLENBQUMsR0FBWTtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBZTtRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxJQUFJLENBQUMsSUFBYTtRQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQs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SEVNQSwgZWZmZWN0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0Tmd0UmVmLCBOZ3RTaWduYWxTdG9yZSwgcmVxdWVzdEFuaW1hdGlvbkluSW5qZWN0aW9uQ29udGV4dCwgdHlwZSBOZ3RHcm91cCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgQm94MywgR3JvdXAsIFNwaGVyZSwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IHR5cGUgTmd0c0NlbnRlclN0YXRlID0ge1xuICAgIHRvcD86IGJvb2xlYW47XG4gICAgcmlnaHQ/OiBib29sZWFuO1xuICAgIGJvdHRvbT86IGJvb2xlYW47XG4gICAgbGVmdD86IGJvb2xlYW47XG4gICAgZnJvbnQ/OiBib29sZWFuO1xuICAgIGJhY2s/OiBib29sZWFuO1xuICAgIC8qKiBEaXNhYmxlIGFsbCBheGVzICovXG4gICAgZGlzYWJsZT86IGJvb2xlYW47XG4gICAgLyoqIERpc2FibGUgeC1heGlzIGNlbnRlcmluZyAqL1xuICAgIGRpc2FibGVYPzogYm9vbGVhbjtcbiAgICAvKiogRGlzYWJsZSB5LWF4aXMgY2VudGVyaW5nICovXG4gICAgZGlzYWJsZVk/OiBib29sZWFuO1xuICAgIC8qKiBEaXNhYmxlIHotYXhpcyBjZW50ZXJpbmcgKi9cbiAgICBkaXNhYmxlWj86IGJvb2xlYW47XG4gICAgLyoqIFNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvaW5kZXguaHRtbD9xPWJveDMjYXBpL2VuL21hdGgvQm94My5zZXRGcm9tT2JqZWN0ICovXG4gICAgcHJlY2lzZTogYm9vbGVhbjtcbn07XG5cbmV4dGVuZCh7IEdyb3VwIH0pO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgICAgICduZ3RzLWNlbnRlcic6IE5ndHNDZW50ZXJTdGF0ZSAmIE5ndEdyb3VwO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWNlbnRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LWdyb3VwIG5ndENvbXBvdW5kIFtyZWZdPVwiY2VudGVyUmVmXCI+XG4gICAgICAgICAgICA8bmd0LWdyb3VwIFtyZWZdPVwib3V0ZXJSZWZcIj5cbiAgICAgICAgICAgICAgICA8bmd0LWdyb3VwIFtyZWZdPVwiaW5uZXJSZWZcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgICAgICAgICA8L25ndC1ncm91cD5cbiAgICAgICAgICAgIDwvbmd0LWdyb3VwPlxuICAgICAgICA8L25ndC1ncm91cD5cbiAgICBgLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0NlbnRlciBleHRlbmRzIE5ndFNpZ25hbFN0b3JlPE5ndHNDZW50ZXJTdGF0ZT4ge1xuICAgIEBJbnB1dCgpIGNlbnRlclJlZiA9IGluamVjdE5ndFJlZjxHcm91cD4oKTtcblxuICAgIHJlYWRvbmx5IG91dGVyUmVmID0gaW5qZWN0Tmd0UmVmPEdyb3VwPigpO1xuICAgIHJlYWRvbmx5IGlubmVyUmVmID0gaW5qZWN0Tmd0UmVmPEdyb3VwPigpO1xuXG4gICAgQElucHV0KCkgc2V0IHRvcCh0b3A6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyB0b3AgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHJpZ2h0KHJpZ2h0OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcmlnaHQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJvdHRvbShib3R0b206IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBib3R0b20gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGxlZnQobGVmdDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGxlZnQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZyb250KGZyb250OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZnJvbnQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJhY2soYmFjazogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGJhY2sgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRpc2FibGVYKGRpc2FibGVYOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGlzYWJsZVggfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRpc2FibGVZKGRpc2FibGVZOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGlzYWJsZVkgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRpc2FibGVaKGRpc2FibGVaOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGlzYWJsZVogfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRpc2FibGUoZGlzYWJsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGRpc2FibGUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHByZWNpc2UocHJlY2lzZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IHByZWNpc2UgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIGNlbnRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIC8qKiBUaGUgbmV4dCBwYXJlbnQgYWJvdmUgPENlbnRlcj4gKi9cbiAgICAgICAgcGFyZW50OiBUSFJFRS5PYmplY3QzRDtcbiAgICAgICAgLyoqIFRoZSBvdXRtb3N0IGNvbnRhaW5lciBncm91cCBvZiB0aGUgPENlbnRlcj4gY29tcG9uZW50ICovXG4gICAgICAgIGNvbnRhaW5lcjogVEhSRUUuT2JqZWN0M0Q7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgICAgICBkZXB0aDogbnVtYmVyO1xuICAgICAgICBib3VuZGluZ0JveDogVEhSRUUuQm94MztcbiAgICAgICAgYm91bmRpbmdTcGhlcmU6IFRIUkVFLlNwaGVyZTtcbiAgICAgICAgY2VudGVyOiBUSFJFRS5WZWN0b3IzO1xuICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogbnVtYmVyO1xuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiBudW1iZXI7XG4gICAgICAgIGRlcHRoQWxpZ25tZW50OiBudW1iZXI7XG4gICAgfT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7IHByZWNpc2U6IHRydWUgfSk7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25JbkluamVjdGlvbkNvbnRleHQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jc2V0UG9zaXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgI3NldFBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCB0cmlnZ2VyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VudGVyID0gdGhpcy5jZW50ZXJSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IG91dGVyID0gdGhpcy5vdXRlclJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgaW5uZXIgPSB0aGlzLmlubmVyUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBpbm5lckNoaWxkcmVuID0gdGhpcy5pbm5lclJlZi5jaGlsZHJlbigpO1xuICAgICAgICAgICAgcmV0dXJuIHsgY2VudGVyLCBvdXRlciwgaW5uZXIsIGlubmVyQ2hpbGRyZW46IGlubmVyQ2hpbGRyZW4oKSB9O1xuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBjZW50ZXI6IGNlbnRlckdyb3VwLCBvdXRlciwgaW5uZXIgfSA9IHRyaWdnZXIoKTtcbiAgICAgICAgICAgIGlmICghb3V0ZXIgfHwgIWlubmVyKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCB7IHByZWNpc2UsIHRvcCwgbGVmdCwgZnJvbnQsIGRpc2FibGUsIGRpc2FibGVYLCBkaXNhYmxlWSwgZGlzYWJsZVosIGJhY2ssIGJvdHRvbSwgcmlnaHQgfSA9XG4gICAgICAgICAgICAgICAgdGhpcy5nZXQoKTtcbiAgICAgICAgICAgIG91dGVyLm1hdHJpeFdvcmxkLmlkZW50aXR5KCk7XG4gICAgICAgICAgICBjb25zdCBib3gzID0gbmV3IEJveDMoKS5zZXRGcm9tT2JqZWN0KGlubmVyLCBwcmVjaXNlKTtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlciA9IG5ldyBWZWN0b3IzKCk7XG4gICAgICAgICAgICBjb25zdCBzcGhlcmUgPSBuZXcgU3BoZXJlKCk7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IGJveDMubWF4LnggLSBib3gzLm1pbi54O1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm94My5tYXgueSAtIGJveDMubWluLnk7XG4gICAgICAgICAgICBjb25zdCBkZXB0aCA9IGJveDMubWF4LnogLSBib3gzLm1pbi56O1xuXG4gICAgICAgICAgICBib3gzLmdldENlbnRlcihjZW50ZXIpO1xuICAgICAgICAgICAgYm94My5nZXRCb3VuZGluZ1NwaGVyZShzcGhlcmUpO1xuXG4gICAgICAgICAgICBjb25zdCB2QWxpZ24gPSB0b3AgPyBoZWlnaHQgLyAyIDogYm90dG9tID8gLWhlaWdodCAvIDIgOiAwO1xuICAgICAgICAgICAgY29uc3QgaEFsaWduID0gbGVmdCA/IC13aWR0aCAvIDIgOiByaWdodCA/IHdpZHRoIC8gMiA6IDA7XG4gICAgICAgICAgICBjb25zdCBkQWxpZ24gPSBmcm9udCA/IGRlcHRoIC8gMiA6IGJhY2sgPyAtZGVwdGggLyAyIDogMDtcblxuICAgICAgICAgICAgb3V0ZXIucG9zaXRpb24uc2V0KFxuICAgICAgICAgICAgICAgIGRpc2FibGUgfHwgZGlzYWJsZVggPyAwIDogLWNlbnRlci54ICsgaEFsaWduLFxuICAgICAgICAgICAgICAgIGRpc2FibGUgfHwgZGlzYWJsZVkgPyAwIDogLWNlbnRlci55ICsgdkFsaWduLFxuICAgICAgICAgICAgICAgIGRpc2FibGUgfHwgZGlzYWJsZVogPyAwIDogLWNlbnRlci56ICsgZEFsaWduXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jZW50ZXJlZC5vYnNlcnZlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2VudGVyZWQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY2VudGVyR3JvdXAucGFyZW50ISxcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiBjZW50ZXJHcm91cCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94OiBib3gzLFxuICAgICAgICAgICAgICAgICAgICBib3VuZGluZ1NwaGVyZTogc3BoZXJlLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IGNlbnRlcixcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IHZBbGlnbixcbiAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogaEFsaWduLFxuICAgICAgICAgICAgICAgICAgICBkZXB0aEFsaWdubWVudDogZEFsaWduLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VudGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2NlbnRlci9jZW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFDSCxNQUFNLEVBQ04sWUFBWSxFQUNaLGNBQWMsRUFDZCx1Q0FBdUMsR0FFMUMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFxQnJELE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFRbEIsTUFjYSxVQUFXLFNBQVEsY0FBK0I7SUFNM0QsSUFBYSxHQUFHLENBQUMsR0FBWTtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBZTtRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxJQUFJLENBQUMsSUFBYTtRQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQs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ZW50LCBjb21wdXRlZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZWZmZWN0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgZXh0ZW5kLFxuICAgIGluamVjdE5ndFJlZixcbiAgICBOZ3RTaWduYWxTdG9yZSxcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbkluamVjdGlvbkNvbnRleHQsXG4gICAgdHlwZSBOZ3RHcm91cCxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBCb3gzLCBHcm91cCwgU3BoZXJlLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgdHlwZSBOZ3RzQ2VudGVyU3RhdGUgPSB7XG4gICAgdG9wPzogYm9vbGVhbjtcbiAgICByaWdodD86IGJvb2xlYW47XG4gICAgYm90dG9tPzogYm9vbGVhbjtcbiAgICBsZWZ0PzogYm9vbGVhbjtcbiAgICBmcm9udD86IGJvb2xlYW47XG4gICAgYmFjaz86IGJvb2xlYW47XG4gICAgLyoqIERpc2FibGUgYWxsIGF4ZXMgKi9cbiAgICBkaXNhYmxlPzogYm9vbGVhbjtcbiAgICAvKiogRGlzYWJsZSB4LWF4aXMgY2VudGVyaW5nICovXG4gICAgZGlzYWJsZVg/OiBib29sZWFuO1xuICAgIC8qKiBEaXNhYmxlIHktYXhpcyBjZW50ZXJpbmcgKi9cbiAgICBkaXNhYmxlWT86IGJvb2xlYW47XG4gICAgLyoqIERpc2FibGUgei1heGlzIGNlbnRlcmluZyAqL1xuICAgIGRpc2FibGVaPzogYm9vbGVhbjtcbiAgICAvKiogU2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy9pbmRleC5odG1sP3E9Ym94MyNhcGkvZW4vbWF0aC9Cb3gzLnNldEZyb21PYmplY3QgKi9cbiAgICBwcmVjaXNlOiBib29sZWFuO1xufTtcblxuZXh0ZW5kKHsgR3JvdXAgfSk7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAgICAgJ25ndHMtY2VudGVyJzogTmd0c0NlbnRlclN0YXRlICYgTmd0R3JvdXA7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtY2VudGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQgW3JlZl09XCJjZW50ZXJSZWZcIj5cbiAgICAgICAgICAgIDxuZ3QtZ3JvdXAgW3JlZl09XCJvdXRlclJlZlwiPlxuICAgICAgICAgICAgICAgIDxuZ3QtZ3JvdXAgW3JlZl09XCJpbm5lclJlZlwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICAgICAgICAgIDwvbmd0LWdyb3VwPlxuICAgICAgICAgICAgPC9uZ3QtZ3JvdXA+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ2VudGVyIGV4dGVuZHMgTmd0U2lnbmFsU3RvcmU8Tmd0c0NlbnRlclN0YXRlPiB7XG4gICAgQElucHV0KCkgY2VudGVyUmVmID0gaW5qZWN0Tmd0UmVmPEdyb3VwPigpO1xuXG4gICAgcmVhZG9ubHkgb3V0ZXJSZWYgPSBpbmplY3ROZ3RSZWY8R3JvdXA+KCk7XG4gICAgcmVhZG9ubHkgaW5uZXJSZWYgPSBpbmplY3ROZ3RSZWY8R3JvdXA+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgdG9wKHRvcDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IHRvcCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmlnaHQocmlnaHQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyByaWdodCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYm90dG9tKGJvdHRvbTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGJvdHRvbSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbGVmdChsZWZ0OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVmdCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZnJvbnQoZnJvbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcm9udCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYmFjayhiYWNrOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmFjayB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZGlzYWJsZVgoZGlzYWJsZVg6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXNhYmxlWCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZGlzYWJsZVkoZGlzYWJsZVk6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXNhYmxlWSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZGlzYWJsZVooZGlzYWJsZVo6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXNhYmxlWiB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZGlzYWJsZShkaXNhYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGlzYWJsZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcHJlY2lzZShwcmVjaXNlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcHJlY2lzZSB9KTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgY2VudGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgLyoqIFRoZSBuZXh0IHBhcmVudCBhYm92ZSA8Q2VudGVyPiAqL1xuICAgICAgICBwYXJlbnQ6IFRIUkVFLk9iamVjdDNEO1xuICAgICAgICAvKiogVGhlIG91dG1vc3QgY29udGFpbmVyIGdyb3VwIG9mIHRoZSA8Q2VudGVyPiBjb21wb25lbnQgKi9cbiAgICAgICAgY29udGFpbmVyOiBUSFJFRS5PYmplY3QzRDtcbiAgICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgICAgIGRlcHRoOiBudW1iZXI7XG4gICAgICAgIGJvdW5kaW5nQm94OiBUSFJFRS5Cb3gzO1xuICAgICAgICBib3VuZGluZ1NwaGVyZTogVEhSRUUuU3BoZXJlO1xuICAgICAgICBjZW50ZXI6IFRIUkVFLlZlY3RvcjM7XG4gICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiBudW1iZXI7XG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IG51bWJlcjtcbiAgICAgICAgZGVwdGhBbGlnbm1lbnQ6IG51bWJlcjtcbiAgICB9PigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHsgcHJlY2lzZTogdHJ1ZSB9KTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSW5JbmplY3Rpb25Db250ZXh0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3NldFBvc2l0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICNzZXRQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlciA9IHRoaXMuY2VudGVyUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBvdXRlciA9IHRoaXMub3V0ZXJSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGlubmVyID0gdGhpcy5pbm5lclJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgaW5uZXJDaGlsZHJlbiA9IHRoaXMuaW5uZXJSZWYuY2hpbGRyZW4oKTtcbiAgICAgICAgICAgIHJldHVybiB7IGNlbnRlciwgb3V0ZXIsIGlubmVyLCBpbm5lckNoaWxkcmVuOiBpbm5lckNoaWxkcmVuKCkgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgY2VudGVyOiBjZW50ZXJHcm91cCwgb3V0ZXIsIGlubmVyIH0gPSB0cmlnZ2VyKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFvdXRlciB8fCAhaW5uZXIpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByZWNpc2UsIHRvcCwgbGVmdCwgZnJvbnQsIGRpc2FibGUsIGRpc2FibGVYLCBkaXNhYmxlWSwgZGlzYWJsZVosIGJhY2ssIGJvdHRvbSwgcmlnaHQgfSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0KCk7XG4gICAgICAgICAgICAgICAgb3V0ZXIubWF0cml4V29ybGQuaWRlbnRpdHkoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBib3gzID0gbmV3IEJveDMoKS5zZXRGcm9tT2JqZWN0KGlubmVyLCBwcmVjaXNlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBuZXcgVmVjdG9yMygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwaGVyZSA9IG5ldyBTcGhlcmUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IGJveDMubWF4LnggLSBib3gzLm1pbi54O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJveDMubWF4LnkgLSBib3gzLm1pbi55O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcHRoID0gYm94My5tYXgueiAtIGJveDMubWluLno7XG5cbiAgICAgICAgICAgICAgICBib3gzLmdldENlbnRlcihjZW50ZXIpO1xuICAgICAgICAgICAgICAgIGJveDMuZ2V0Qm91bmRpbmdTcGhlcmUoc3BoZXJlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHZBbGlnbiA9IHRvcCA/IGhlaWdodCAvIDIgOiBib3R0b20gPyAtaGVpZ2h0IC8gMiA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgaEFsaWduID0gbGVmdCA/IC13aWR0aCAvIDIgOiByaWdodCA/IHdpZHRoIC8gMiA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgZEFsaWduID0gZnJvbnQgPyBkZXB0aCAvIDIgOiBiYWNrID8gLWRlcHRoIC8gMiA6IDA7XG5cbiAgICAgICAgICAgICAgICBvdXRlci5wb3NpdGlvbi5zZXQoXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGUgfHwgZGlzYWJsZVggPyAwIDogLWNlbnRlci54ICsgaEFsaWduLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlIHx8IGRpc2FibGVZID8gMCA6IC1jZW50ZXIueSArIHZBbGlnbixcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZSB8fCBkaXNhYmxlWiA/IDAgOiAtY2VudGVyLnogKyBkQWxpZ25cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2VudGVyZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZW50ZXJlZC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogY2VudGVyR3JvdXAucGFyZW50ISxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogY2VudGVyR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3g6IGJveDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZGluZ1NwaGVyZTogc3BoZXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiBjZW50ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogdkFsaWduLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogaEFsaWduLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhBbGlnbm1lbnQ6IGRBbGlnbixcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -73,8 +73,8 @@ class NgtsCloud extends NgtSignalStore {
|
|
|
73
73
|
cloud.children[0].scale.setScalar(clouds[index].scale + (((1 + Math.sin(state.clock.getElapsedTime() / 10)) / 2) * index) / 10);
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.
|
|
76
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsCloud, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtsCloud, isStandalone: true, selector: "ngts-cloud", inputs: { groupRef: "groupRef", opacity: "opacity", speed: "speed", width: "width", depth: "depth", segments: "segments", texture: "texture", color: "color", depthTest: "depthTest" }, usesInheritance: true, ngImport: i0, template: `
|
|
78
78
|
<ngt-group ngtCompound [ref]="groupRef">
|
|
79
79
|
<ngt-group
|
|
80
80
|
[position]="[0, 0, (cloudSegments() / 2) * cloudDepth()]"
|
|
@@ -105,7 +105,7 @@ class NgtsCloud extends NgtSignalStore {
|
|
|
105
105
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NgtsBillboard, selector: "ngts-billboard", inputs: ["billboardRef", "follow", "lockX", "lockY", "lockZ"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
106
106
|
}
|
|
107
107
|
export { NgtsCloud };
|
|
108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.
|
|
108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtsCloud, decorators: [{
|
|
109
109
|
type: Component,
|
|
110
110
|
args: [{
|
|
111
111
|
selector: 'ngts-cloud',
|