angular-three-cannon 1.5.0 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/debug/lib/debug.mjs +3 -3
- package/esm2020/lib/physics.mjs +3 -3
- package/esm2020/lib/store.mjs +3 -3
- package/esm2020/services/lib/body.mjs +3 -2
- package/esm2020/services/lib/constraint.mjs +3 -2
- package/esm2020/services/lib/raycast-vehicle.mjs +8 -2
- package/esm2020/services/lib/spring.mjs +3 -2
- package/esm2020/services/lib/utils.mjs +5 -0
- package/fesm2015/angular-three-cannon-debug.mjs +3 -3
- package/fesm2015/angular-three-cannon-services.mjs +14 -5
- package/fesm2015/angular-three-cannon-services.mjs.map +1 -1
- package/fesm2015/angular-three-cannon.mjs +6 -6
- package/fesm2020/angular-three-cannon-debug.mjs +3 -3
- package/fesm2020/angular-three-cannon-services.mjs +14 -5
- package/fesm2020/angular-three-cannon-services.mjs.map +1 -1
- package/fesm2020/angular-three-cannon.mjs +6 -6
- package/package.json +3 -3
- package/plugin/package.json +2 -3
- package/services/lib/utils.d.ts +2 -0
|
@@ -51,8 +51,8 @@ export class NgtcDebug {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
NgtcDebug.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
55
|
-
NgtcDebug.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.
|
|
54
|
+
NgtcDebug.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
NgtcDebug.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtcDebug, isStandalone: true, selector: "ngtc-debug", inputs: { color: "color", scale: "scale", impl: "impl", disabled: "disabled" }, providers: [
|
|
56
56
|
{
|
|
57
57
|
provide: NGTC_DEBUG_API,
|
|
58
58
|
useFactory: (debug) => ({
|
|
@@ -74,7 +74,7 @@ NgtcDebug.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
|
|
|
74
74
|
<ngt-primitive *args="[scene]" />
|
|
75
75
|
<ng-content />
|
|
76
76
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
|
|
77
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtcDebug, decorators: [{
|
|
78
78
|
type: Component,
|
|
79
79
|
args: [{
|
|
80
80
|
selector: 'ngtc-debug',
|
package/esm2020/lib/physics.mjs
CHANGED
|
@@ -215,9 +215,9 @@ export class NgtcPhysics extends NgtRxStore {
|
|
|
215
215
|
cb({ body: body ? refs[body] : null, ray: { uuid, ...rayRest }, ...rest });
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
-
NgtcPhysics.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
219
|
-
NgtcPhysics.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.
|
|
220
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
218
|
+
NgtcPhysics.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtcPhysics, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
219
|
+
NgtcPhysics.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtcPhysics, isStandalone: true, selector: "ngtc-physics", inputs: { allowSleep: "allowSleep", axisIndex: "axisIndex", broadphase: "broadphase", defaultContactMaterial: "defaultContactMaterial", frictionGravity: "frictionGravity", gravity: "gravity", iterations: "iterations", quatNormalizeFast: "quatNormalizeFast", quatNormalizeSkip: "quatNormalizeSkip", solver: "solver", tolerance: "tolerance", size: "size", isPaused: "isPaused", maxSubSteps: "maxSubSteps", shouldInvalidate: "shouldInvalidate", stepSize: "stepSize" }, providers: [NgtcStore], usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
|
|
220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtcPhysics, decorators: [{
|
|
221
221
|
type: Component,
|
|
222
222
|
args: [{
|
|
223
223
|
selector: 'ngtc-physics',
|
package/esm2020/lib/store.mjs
CHANGED
|
@@ -13,9 +13,9 @@ export class NgtcStore extends NgtRxStore {
|
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
NgtcStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
17
|
-
NgtcStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
16
|
+
NgtcStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtcStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
17
|
+
NgtcStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtcStore });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtcStore, decorators: [{
|
|
19
19
|
type: Injectable
|
|
20
20
|
}] });
|
|
21
21
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtY2Fubm9uL3NyYy9saWIvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQVd0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXdCM0MsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUFxQjtJQUN2QyxVQUFVO1FBQ2YsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDTCxNQUFNLEVBQUUsRUFBRTtZQUNWLE1BQU0sRUFBRSxFQUFFO1lBQ1YsSUFBSSxFQUFFLEVBQUU7WUFDUixjQUFjLEVBQUUsRUFBRTtZQUNsQixhQUFhLEVBQUUsRUFBRTtTQUNwQixDQUFDLENBQUM7SUFDUCxDQUFDOztzR0FWUSxTQUFTOzBHQUFULFNBQVM7MkZBQVQsU0FBUztrQkFEckIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDYW5ub25Xb3JrZXJBUEksXG4gICAgQ2Fubm9uV29ya2VyUHJvcHMsXG4gICAgQ29sbGlkZUJlZ2luRXZlbnQsXG4gICAgQ29sbGlkZUVuZEV2ZW50LFxuICAgIENvbGxpZGVFdmVudCxcbiAgICBSYXloaXRFdmVudCxcbiAgICBSZWZzLFxuICAgIFN1YnNjcmlwdGlvbnMsXG59IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgTmd0UnhTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuXG5leHBvcnQgdHlwZSBOZ3RjRXZlbnQgPSBDb2xsaWRlQmVnaW5FdmVudCB8IENvbGxpZGVFbmRFdmVudCB8IENvbGxpZGVFdmVudCB8IFJheWhpdEV2ZW50O1xuZXhwb3J0IHR5cGUgTmd0Y0NhbGxiYWNrQnlUeXBlPFQgZXh0ZW5kcyB7IHR5cGU6IHN0cmluZyB9PiA9IHtcbiAgICBbSyBpbiBUWyd0eXBlJ11dPzogVCBleHRlbmRzIHsgdHlwZTogSyB9ID8gKGU6IFQpID0+IHZvaWQgOiBuZXZlcjtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndGNFdmVudHMgPSB7XG4gICAgW3V1aWQ6IHN0cmluZ106IFBhcnRpYWw8Tmd0Y0NhbGxiYWNrQnlUeXBlPE5ndGNFdmVudD4+O1xufTtcblxuZXhwb3J0IHR5cGUgTmd0Y1NjYWxlT3ZlcnJpZGVzID0geyBbdXVpZDogc3RyaW5nXTogVEhSRUUuVmVjdG9yMyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNTdGF0ZSB7XG4gICAgYm9kaWVzOiB7IFt1dWlkOiBzdHJpbmddOiBudW1iZXIgfTtcbiAgICBldmVudHM6IE5ndGNFdmVudHM7XG4gICAgcmVmczogUmVmcztcbiAgICBzY2FsZU92ZXJyaWRlczogTmd0Y1NjYWxlT3ZlcnJpZGVzO1xuICAgIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbnM7XG4gICAgd29ya2VyOiBDYW5ub25Xb3JrZXJBUEk7XG4gICAgaW5pdDogKGlucHV0czogQ2Fubm9uV29ya2VyUHJvcHMpID0+IHZvaWQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3RjU3RvcmUgZXh0ZW5kcyBOZ3RSeFN0b3JlPE5ndGNTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgYm9kaWVzOiB7fSxcbiAgICAgICAgICAgIGV2ZW50czoge30sXG4gICAgICAgICAgICByZWZzOiB7fSxcbiAgICAgICAgICAgIHNjYWxlT3ZlcnJpZGVzOiB7fSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IHt9LFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -4,6 +4,7 @@ import { NgtcStore, NgtcUtils } from 'angular-three-cannon';
|
|
|
4
4
|
import { NGTC_DEBUG_API } from 'angular-three-cannon/debug';
|
|
5
5
|
import { combineLatest } from 'rxjs';
|
|
6
6
|
import * as THREE from 'three';
|
|
7
|
+
import { filterEmpty } from './utils';
|
|
7
8
|
export function injectPlane(fn, opts) {
|
|
8
9
|
return injectBody('Plane', fn, () => [], opts);
|
|
9
10
|
}
|
|
@@ -65,7 +66,7 @@ function injectBody(type, getPropsFn, argsFn, { ref, waitFor } = {}) {
|
|
|
65
66
|
}
|
|
66
67
|
});
|
|
67
68
|
// start the pipeline as soon as bodyRef has a truthy value
|
|
68
|
-
subscription = combineLatest([physicsStore.select('worker'), bodyRef
|
|
69
|
+
subscription = combineLatest([physicsStore.select('worker'), bodyRef.$.pipe(filterEmpty())])
|
|
69
70
|
.pipe(tapEffect(([worker, object]) => {
|
|
70
71
|
const currentWorker = worker;
|
|
71
72
|
const { events, refs } = physicsStore.get();
|
|
@@ -267,4 +268,4 @@ function injectBody(type, getPropsFn, argsFn, { ref, waitFor } = {}) {
|
|
|
267
268
|
const api = { ...makeApi(undefined), at: (index) => cache[index] || (cache[index] = makeApi(index)) };
|
|
268
269
|
return { ref: bodyRef, api };
|
|
269
270
|
}
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1jYW5ub24vc2VydmljZXMvc3JjL2xpYi9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF1QnZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQWlEL0IsTUFBTSxVQUFVLFdBQVcsQ0FDdkIsRUFBOEIsRUFDOUIsSUFBdUU7SUFFdkUsT0FBTyxVQUFVLENBQXNCLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUNyQixFQUE0QixFQUM1QixJQUF1RTtJQUV2RSxNQUFNLGNBQWMsR0FBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTyxVQUFVLENBQW9CLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsY0FBYyxFQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEcsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQzFCLEVBQWlDLEVBQ2pDLElBQXVFO0lBRXZFLE9BQU8sVUFBVSxDQUF5QixVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFRLEVBQUUsRUFBRSxD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LFFBQVEsRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztZQUN2QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUM7WUFDcEMsTUFBTTtnQkFDRixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sS0FBSyxHQUF1QyxFQUFFLENBQUM7SUFDckQsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzlHLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQXRvbWljTmFtZSxcbiAgICBBdG9taWNQcm9wcyxcbiAgICBCb2R5UHJvcHMsXG4gICAgQm9keVNoYXBlVHlwZSxcbiAgICBCb3hQcm9wcyxcbiAgICBDb21wb3VuZEJvZHlQcm9wcyxcbiAgICBDb252ZXhQb2x5aGVkcm9uQXJncyxcbiAgICBDb252ZXhQb2x5aGVkcm9uUHJvcHMsXG4gICAgQ3lsaW5kZXJQcm9wcyxcbiAgICBIZWlnaHRmaWVsZFByb3BzLFxuICAgIFBhcnRpY2xlUHJvcHMsXG4gICAgUGxhbmVQcm9wcyxcbiAgICBQcm9wVmFsdWUsXG4gICAgUXVhZCxcbiAgICBTZXRPcE5hbWUsXG4gICAgU3BoZXJlQXJncyxcbiAgICBTcGhlcmVQcm9wcyxcbiAgICBUcmltZXNoUHJvcHMsXG4gICAgVHJpcGxldCxcbiAgICBWZWN0b3JOYW1lLFxufSBmcm9tICdAcG1uZHJzL2Nhbm5vbi13b3JrZXItYXBpJztcbmltcG9ydCB7IGluamVjdE5ndERlc3Ryb3ksIGluamVjdE5ndFJlZiwgTmd0SW5qZWN0ZWRSZWYsIHRhcEVmZmVjdCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTmd0Y1N0b3JlLCBOZ3RjVXRpbHMgfSBmcm9tICdhbmd1bGFyLXRocmVlLWNhbm5vbic7XG5pbXBvcnQgeyBOR1RDX0RFQlVHX0FQSSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uL2RlYnVnJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgdHlwZSBOZ3RjQXRvbWljQXBpPEsgZXh0ZW5kcyBBdG9taWNOYW1lPiA9IHtcbiAgICBzZXQ6ICh2YWx1ZTogQXRvbWljUHJvcHNbS10pID0+IHZvaWQ7XG4gICAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6ICh2YWx1ZTogQXRvbWljUHJvcHNbS10pID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RjUXVhdGVybmlvbkFwaSA9IHtcbiAgICBjb3B5OiAoeyB3LCB4LCB5LCB6IH06IFRIUkVFLlF1YXRlcm5pb24pID0+IHZvaWQ7XG4gICAgc2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlciwgdzogbnVtYmVyKSA9PiB2b2lkO1xuICAgIHN1YnNjcmliZTogKGNhbGxiYWNrOiAodmFsdWU6IFF1YWQpID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RjVmVjdG9yQXBpID0ge1xuICAgIGNvcHk6ICh7IHgsIHksIHogfTogVEhSRUUuVmVjdG9yMyB8IFRIUkVFLkV1bGVyKSA9PiB2b2lkO1xuICAgIHNldDogKHg6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXIpID0+IHZvaWQ7XG4gICAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6ICh2YWx1ZTogVHJpcGxldCkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndGNXb3JrZXJBcGkgPSB7XG4gICAgW0sgaW4gQXRvbWljTmFtZV06IE5ndGNBdG9taWNBcGk8Sz47XG59ICYge1xuICAgIFtLIGluIFZlY3Rvck5hbWVdOiBOZ3RjVmVjdG9yQXBpO1xufSAmIHtcbiAgICBhcHBseUZvcmNlOiAoZm9yY2U6IFRyaXBsZXQsIHdvcmxkUG9pbnQ6IFRyaXBsZXQpID0+IHZvaWQ7XG4gICAgYXBwbHlJbXB1bHNlOiAoaW1wdWxzZTogVHJpcGxldCwgd29ybGRQb2ludDogVHJpcGxldCkgPT4gdm9pZDtcbiAgICBhcHBseUxvY2FsRm9yY2U6IChmb3JjZTogVHJpcGxldCwgbG9jYWxQb2ludDogVHJpcGxldCkgPT4gdm9pZDtcbiAgICBhcHBseUxvY2FsSW1wdWxzZTogKGltcHVsc2U6IFRyaXBsZXQsIGxvY2FsUG9pbnQ6IFRyaXBsZXQpID0+IHZvaWQ7XG4gICAgYXBwbHlUb3JxdWU6ICh0b3JxdWU6IFRyaXBsZXQpID0+IHZvaWQ7XG4gICAgcXVhdGVybmlvbjogTmd0Y1F1YXRlcm5pb25BcGk7XG4gICAgcm90YXRpb246IE5ndGNWZWN0b3JBcGk7XG4gICAgc2NhbGVPdmVycmlkZTogKHNjYWxlOiBUcmlwbGV0KSA9PiB2b2lkO1xuICAgIHNsZWVwOiAoKSA9PiB2b2lkO1xuICAgIHdha2VVcDogKCkgPT4gdm9pZDtcbiAgICByZW1vdmU6ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNCb2R5UHVibGljQXBpIGV4dGVuZHMgTmd0Y1dvcmtlckFwaSB7XG4gICAgYXQ6IChpbmRleDogbnVtYmVyKSA9PiBOZ3RjV29ya2VyQXBpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNCb2R5UmV0dXJuPFRPYmplY3QgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRD4ge1xuICAgIHJlZjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD47XG4gICAgYXBpOiBOZ3RjQm9keVB1YmxpY0FwaTtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Y0dldEJ5SW5kZXg8VCBleHRlbmRzIEJvZHlQcm9wcz4gPSAoaW5kZXg6IG51bWJlcikgPT4gVDtcbmV4cG9ydCB0eXBlIE5ndGNBcmdGbjxUPiA9IChhcmdzOiBUKSA9PiB1bmtub3duW107XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQbGFuZTxUT2JqZWN0IGV4dGVuZHMgVEhSRUUuT2JqZWN0M0Q+KFxuICAgIGZuOiBOZ3RjR2V0QnlJbmRleDxQbGFuZVByb3BzPixcbiAgICBvcHRzPzogeyByZWY/OiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Pjsgd2FpdEZvcj86IE9ic2VydmFibGU8dW5rbm93bj4gfVxuKSB7XG4gICAgcmV0dXJuIGluamVjdEJvZHk8UGxhbmVQcm9wcywgVE9iamVjdD4oJ1BsYW5lJywgZm4sICgpID0+IFtdLCBvcHRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEJveDxUT2JqZWN0IGV4dGVuZHMgVEhSRUUuT2JqZWN0M0Q+KFxuICAgIGZuOiBOZ3RjR2V0QnlJbmRleDxCb3hQcm9wcz4sXG4gICAgb3B0cz86IHsgcmVmPzogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD47IHdhaXRGb3I/OiBPYnNlcnZhYmxlPHVua25vd24+IH1cbikge1xuICAgIGNvbnN0IGRlZmF1bHRCb3hBcmdzOiBUcmlwbGV0ID0gWzEsIDEsIDFdO1xuICAgIHJldHVybiBpbmplY3RCb2R5PEJveFByb3BzLCBUT2JqZWN0PignQm94JywgZm4sIChhcmdzID0gZGVmYXVsdEJveEFyZ3MpOiBUcmlwbGV0ID0+IGFyZ3MsIG9wdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q3lsaW5kZXI8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcbiAgICBmbjogTmd0Y0dldEJ5SW5kZXg8Q3lsaW5kZXJQcm9wcz4sXG4gICAgb3B0cz86IHsgcmVmPzogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD47IHdhaXRGb3I/OiBPYnNlcnZhYmxlPHVua25vd24+IH1cbikge1xuICAgIHJldHVybiBpbmplY3RCb2R5PEN5bGluZGVyUHJvcHMsIFRPYmplY3Q+KCdDeWxpbmRlcicsIGZuLCAoYXJncyA9IFtdIGFzIFtdKSA9PiBhcmdzLCBvcHRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEhlaWdodGZpZWxkPFRPYmplY3QgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRD4oXG4gICAgZm46IE5ndGNHZXRCeUluZGV4PEhlaWdodGZpZWxkUHJvcHM+LFxuICAgIG9wdHM/OiB7IHJlZj86IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+OyB3YWl0Rm9yPzogT2JzZXJ2YWJsZTx1bmtub3duPiB9XG4pIHtcbiAgICByZXR1cm4gaW5qZWN0Qm9keTxIZWlnaHRmaWVsZFByb3BzLCBUT2JqZWN0PignSGVpZ2h0ZmllbGQnLCBmbiwgKGFyZ3MpID0+IGFyZ3MsIG9wdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UGFydGljbGU8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcbiAgICBmbjogTmd0Y0dldEJ5SW5kZXg8UGFydGljbGVQcm9wcz4sXG4gICAgb3B0cz86IHsgcmVmPzogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD47IHdhaXRGb3I/OiBPYnNlcnZhYmxlPHVua25vd24+IH1cbikge1xuICAgIHJldHVybiBpbmplY3RCb2R5PFBhcnRpY2xlUHJvcHMsIFRPYmplY3Q+KCdQYXJ0aWNsZScsIGZuLCAoKSA9PiBbXSwgb3B0cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTcGhlcmU8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcbiAgICBmbjogTmd0Y0dldEJ5SW5kZXg8U3BoZXJlUHJvcHM+LFxuICAgIG9wdHM/OiB7IHJlZj86IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+OyB3YWl0Rm9yPzogT2JzZXJ2YWJsZTx1bmtub3duPiB9XG4pIHtcbiAgICByZXR1cm4gaW5qZWN0Qm9keTxTcGhlcmVQcm9wcywgVE9iamVjdD4oXG4gICAgICAgICdTcGhlcmUnLFxuICAgICAgICBmbixcbiAgICAgICAgKGFyZ3M6IFNwaGVyZUFyZ3MgPSBbMV0pOiBTcGhlcmVBcmdzID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcmdzKSkgdGhyb3cgbmV3IEVycm9yKCdpbmplY3RTcGhlcmUgYXJncyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgICAgICByZXR1cm4gW2FyZ3NbMF1dO1xuICAgICAgICB9LFxuICAgICAgICBvcHRzXG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFRyaW1lc2g8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcbiAgICBmbjogTmd0Y0dldEJ5SW5kZXg8VHJpbWVzaFByb3BzPixcbiAgICBvcHRzPzogeyByZWY/OiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Pjsgd2FpdEZvcj86IE9ic2VydmFibGU8dW5rbm93bj4gfVxuKSB7XG4gICAgcmV0dXJuIGluamVjdEJvZHk8VHJpbWVzaFByb3BzLCBUT2JqZWN0PignVHJpbWVzaCcsIGZuLCAoYXJncykgPT4gYXJncywgb3B0cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDb252ZXhQb2x5aGVkcm9uPFRPYmplY3QgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRD4oXG4gICAgZm46IE5ndGNHZXRCeUluZGV4PENvbnZleFBvbHloZWRyb25Qcm9wcz4sXG4gICAgb3B0cz86IHsgcmVmPzogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD47IHdhaXRGb3I/OiBPYnNlcnZhYmxlPHVua25vd24+IH1cbikge1xuICAgIHJldHVybiBpbmplY3RCb2R5PENvbnZleFBvbHloZWRyb25Qcm9wcywgVE9iamVjdD4oXG4gICAgICAgICdDb252ZXhQb2x5aGVkcm9uJyxcbiAgICAgICAgZm4sXG4gICAgICAgIChbdmVydGljZXMsIGZhY2VzLCBub3JtYWxzLCBheGVzLCBib3VuZGluZ1NwaGVyZVJhZGl1c10gPSBbXSk6IENvbnZleFBvbHloZWRyb25BcmdzPFRyaXBsZXQ+ID0+IFtcbiAgICAgICAgICAgIHZlcnRpY2VzICYmIHZlcnRpY2VzLm1hcChOZ3RjVXRpbHMubWFrZVRyaXBsZXQpLFxuICAgICAgICAgICAgZmFjZXMsXG4gICAgICAgICAgICBub3JtYWxzICYmIG5vcm1hbHMubWFwKE5ndGNVdGlscy5tYWtlVHJpcGxldCksXG4gICAgICAgICAgICBheGVzICYmIGF4ZXMubWFwKE5ndGNVdGlscy5tYWtlVHJpcGxldCksXG4gICAgICAgICAgICBib3VuZGluZ1NwaGVyZVJhZGl1cyxcbiAgICAgICAgXSxcbiAgICAgICAgb3B0c1xuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDb21wb3VuZEJvZHk8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcbiAgICBmbjogTmd0Y0dldEJ5SW5kZXg8Q29tcG91bmRCb2R5UHJvcHM+LFxuICAgIG9wdHM/OiB7IHJlZj86IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+OyB3YWl0Rm9yPzogT2JzZXJ2YWJsZTx1bmtub3duPiB9XG4pIHtcbiAgICByZXR1cm4gaW5qZWN0Qm9keTxDb21wb3VuZEJvZHlQcm9wcywgVE9iamVjdD4oJ0NvbXBvdW5kJywgZm4sIChhcmdzKSA9PiBhcmdzIGFzIHVua25vd25bXSwgb3B0cyk7XG59XG5cbmNvbnN0IHRlbXAgPSBuZXcgVEhSRUUuT2JqZWN0M0QoKTtcblxuZnVuY3Rpb24gaW5qZWN0Qm9keTxUQm9keVByb3BzIGV4dGVuZHMgQm9keVByb3BzLCBUT2JqZWN0IGV4dGVuZHMgVEhSRUUuT2JqZWN0M0Q+KFxuICAgIHR5cGU6IEJvZHlTaGFwZVR5cGUsXG4gICAgZ2V0UHJvcHNGbjogTmd0Y0dldEJ5SW5kZXg8VEJvZHlQcm9wcz4sXG4gICAgYXJnc0ZuOiBOZ3RjQXJnRm48VEJvZHlQcm9wc1snYXJncyddPixcbiAgICB7IHJlZiwgd2FpdEZvciB9OiB7IHJlZj86IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+OyB3YWl0Rm9yPzogT2JzZXJ2YWJsZTx1bmtub3duPiB9ID0ge31cbik6IE5ndGNCb2R5UmV0dXJuPFRPYmplY3Q+IHtcbiAgICBsZXQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkZWJ1Z0FwaSA9IGluamVjdChOR1RDX0RFQlVHX0FQSSwgeyBza2lwU2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgY29uc3QgcGh5c2ljc1N0b3JlID0gaW5qZWN0KE5ndGNTdG9yZSwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcblxuICAgIC8vIGNsZWFuIHVwIG91ciBzdHJlYW1zIG9uIGRlc3Ryb3lcbiAgICBpbmplY3ROZ3REZXN0cm95KCgpID0+IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gZ2l2ZSBvdXIgYm9keVJlZiBhbiBOZ3RJbmplY3RlZFJlZlxuICAgIGxldCBib2R5UmVmID0gaW5qZWN0Tmd0UmVmPFRPYmplY3Q+KCk7XG5cbiAgICAvLyByZS1hc3NpZ24gYm9keVJlZiBpZiB0aGUgY29uc3VtZXJzIHBhc3MgYSByZWYgaW5cbiAgICBpZiAocmVmKSBib2R5UmVmID0gcmVmO1xuXG4gICAgLy8gZmlyZSBtaWNyb1F1ZXVlJFxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgLy8gd2FpdEZvciBhc3N1bWVzIHRoZSBjb25zdW1lciB3aWxsIGJlIHVzaW5nIHRoZSBib2R5UmVmIG9uIHRoZSB0ZW1wbGF0ZVxuICAgICAgICAvLyB3aXRoIHRoZSBtb2RlbCAod2FpdEZvcikgYXMgYSBUSFJFRSBpbnN0YW5jZVxuICAgICAgICBpZiAoIXdhaXRGb3IgJiYgIWJvZHlSZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgYm9keVJlZi5uYXRpdmVFbGVtZW50ID0gbmV3IFRIUkVFLk9iamVjdDNEKCkgYXMgVE9iamVjdDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gc3RhcnQgdGhlIHBpcGVsaW5lIGFzIHNvb24gYXMgYm9keVJlZiBoYXMgYSB0cnV0aHkgdmFsdWVcbiAgICBzdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtwaHlzaWNzU3RvcmUuc2VsZWN0KCd3b3JrZXInKSwgYm9keVJlZi4kXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXBFZmZlY3QoKFt3b3JrZXIsIG9iamVjdF0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50V29ya2VyID0gd29ya2VyO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgeyBldmVudHMsIHJlZnMgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBsZXQgb2JqZWN0Q291bnQgPSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFRIUkVFLkluc3RhbmNlZE1lc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0Lmluc3RhbmNlTWF0cml4LnNldFVzYWdlKFRIUkVFLkR5bmFtaWNEcmF3VXNhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3RDb3VudCA9IG9iamVjdC5jb3VudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zb2xpZGF0ZSBvdXIgdXVpZHMgaW50byBhbiBBcnJheSBzbyB3ZSBjYW4gaGFuZGxlIHRoZW0gaW4gYSBtb3JlIGNvbnNpc3RlbnQgd2F5XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZHMgPVxuICAgICAgICAgICAgICAgICAgICBvYmplY3QgaW5zdGFuY2VvZiBUSFJFRS5JbnN0YW5jZWRNZXNoXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBBcnJheShvYmplY3RDb3VudCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGAke29iamVjdC51dWlkfS8ke2l9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogW29iamVjdC51dWlkXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BzTGlzdCA9IHV1aWRzLm1hcCgodXVpZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcHNSZXN1bHQgPSBnZXRQcm9wc0ZuKGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgTmd0Y1V0aWxzLnByZXBhcmUodGVtcCwgcHJvcHNSZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgVEhSRUUuSW5zdGFuY2VkTWVzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LnNldE1hdHJpeEF0KGluZGV4LCB0ZW1wLm1hdHJpeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QuaW5zdGFuY2VNYXRyaXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZnNbdXVpZF0gPSBvYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGRlYnVnQXBpPy5hZGQodXVpZCwgcHJvcHNSZXN1bHQsIHR5cGUpO1xuICAgICAgICAgICAgICAgICAgICBOZ3RjVXRpbHMuc2V0dXBDb2xsaXNpb24oZXZlbnRzLCBwcm9wc1Jlc3VsdCwgdXVpZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnByb3BzUmVzdWx0LCBhcmdzOiBhcmdzRm4ocHJvcHNSZXN1bHQuYXJncykgfTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGN1cnJlbnRXb3JrZXIuYWRkQm9kaWVzKHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHByb3BzTGlzdC5tYXAoKHsgb25Db2xsaWRlLCBvbkNvbGxpZGVCZWdpbiwgb25Db2xsaWRlRW5kLCAuLi5zZXJpYWxpemFibGVQcm9wcyB9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgb25Db2xsaWRlOiBCb29sZWFuKG9uQ29sbGlkZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNvbGxpZGVCZWdpbjogQm9vbGVhbihvbkNvbGxpZGVCZWdpbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNvbGxpZGVFbmQ6IEJvb2xlYW4ob25Db2xsaWRlRW5kKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNlcmlhbGl6YWJsZVByb3BzLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHV1aWQ6IHV1aWRzLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdXVpZHMuZm9yRWFjaCgodXVpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlZnNbdXVpZF07XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z0FwaT8ucmVtb3ZlKHV1aWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGV2ZW50c1t1dWlkXTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXb3JrZXIucmVtb3ZlQm9kaWVzKHsgdXVpZDogdXVpZHMgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgY29uc3QgbWFrZUF0b21pYyA9IDxUIGV4dGVuZHMgQXRvbWljTmFtZT4odHlwZTogVCwgaW5kZXg/OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3Qgb3A6IFNldE9wTmFtZTxUPiA9IGBzZXQke05ndGNVdGlscy5jYXBpdGFsaXplKHR5cGUpfWA7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNldDogKHZhbHVlOiBQcm9wVmFsdWU8VD4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXJbb3BdKHsgcHJvcHM6IHZhbHVlLCB1dWlkIH0gYXMgbmV2ZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBzdWJzY3JpYmUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdWJzY3JpcHRpb25zLCB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTmd0Y1V0aWxzLnN1YnNjcmliZShib2R5UmVmLCB3b3JrZXIsIHN1YnNjcmlwdGlvbnMsIHR5cGUsIGluZGV4KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IG1ha2VRdWF0ZXJuaW9uID0gKGluZGV4PzogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSAncXVhdGVybmlvbic7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3B5OiAoeyB3LCB4LCB5LCB6IH06IFRIUkVFLlF1YXRlcm5pb24pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuc2V0UXVhdGVybmlvbih7IHByb3BzOiBbeCwgeSwgeiwgd10sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlciwgdzogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLnNldFF1YXRlcm5pb24oeyBwcm9wczogW3gsIHksIHosIHddLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBzdWJzY3JpYmUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdWJzY3JpcHRpb25zLCB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTmd0Y1V0aWxzLnN1YnNjcmliZShib2R5UmVmLCB3b3JrZXIsIHN1YnNjcmlwdGlvbnMsIHR5cGUsIGluZGV4KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IG1ha2VSb3RhdGlvbiA9IChpbmRleD86IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29weTogKHsgeCwgeSwgeiB9OiBUSFJFRS5WZWN0b3IzIHwgVEhSRUUuRXVsZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuc2V0Um90YXRpb24oeyBwcm9wczogW3gsIHksIHpdLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldDogKHg6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuc2V0Um90YXRpb24oeyBwcm9wczogW3gsIHksIHpdLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1YnNjcmliZTogKGNhbGxiYWNrOiAodmFsdWU6IFRyaXBsZXQpID0+IHZvaWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN1YnNjcmlwdGlvbnMsIHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gTmd0Y1V0aWxzLmluY3JlbWVudGluZ0lkKys7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gJ2JvZGllcyc7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9ICdxdWF0ZXJuaW9uJztcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uc1tpZF0gPSB7IFt0eXBlXTogTmd0Y1V0aWxzLnF1YXRlcm5pb25Ub1JvdGF0aW9uKGNhbGxiYWNrKSB9O1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLnN1YnNjcmliZSh7IHByb3BzOiB7IGlkLCB0YXJnZXQsIHR5cGUgfSwgdXVpZCB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3Vic2NyaXB0aW9uc1tpZF07XG4gICAgICAgICAgICAgICAgICAgIHdvcmtlci51bnN1YnNjcmliZSh7IHByb3BzOiBpZCB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZVZlYyA9ICh0eXBlOiBWZWN0b3JOYW1lLCBpbmRleD86IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBvcDogU2V0T3BOYW1lPFZlY3Rvck5hbWU+ID0gYHNldCR7Tmd0Y1V0aWxzLmNhcGl0YWxpemUodHlwZSl9YDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvcHk6ICh7IHgsIHksIHogfTogVEhSRUUuVmVjdG9yMyB8IFRIUkVFLkV1bGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyW29wXSh7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlcltvcF0oeyBwcm9wczogW3gsIHksIHpdLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBzdWJzY3JpYmUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdWJzY3JpcHRpb25zLCB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTmd0Y1V0aWxzLnN1YnNjcmliZShib2R5UmVmLCB3b3JrZXIsIHN1YnNjcmlwdGlvbnMsIHR5cGUsIGluZGV4KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IG1ha2VSZW1vdmUgPSAoaW5kZXg/OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGlmICh1dWlkKSB3b3JrZXIucmVtb3ZlQm9kaWVzKHsgdXVpZDogW3V1aWRdIH0pO1xuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYWtlQXBpKGluZGV4PzogbnVtYmVyKTogTmd0Y1dvcmtlckFwaSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhbGxvd1NsZWVwOiBtYWtlQXRvbWljKCdhbGxvd1NsZWVwJywgaW5kZXgpLFxuICAgICAgICAgICAgYW5ndWxhckRhbXBpbmc6IG1ha2VBdG9taWMoJ2FuZ3VsYXJEYW1waW5nJywgaW5kZXgpLFxuICAgICAgICAgICAgYW5ndWxhckZhY3RvcjogbWFrZVZlYygnYW5ndWxhckZhY3RvcicsIGluZGV4KSxcbiAgICAgICAgICAgIGFuZ3VsYXJWZWxvY2l0eTogbWFrZVZlYygnYW5ndWxhclZlbG9jaXR5JywgaW5kZXgpLFxuICAgICAgICAgICAgYXBwbHlGb3JjZShmb3JjZTogVHJpcGxldCwgd29ybGRQb2ludDogVHJpcGxldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5hcHBseUZvcmNlKHsgcHJvcHM6IFtmb3JjZSwgd29ybGRQb2ludF0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBwbHlJbXB1bHNlKGltcHVsc2U6IFRyaXBsZXQsIHdvcmxkUG9pbnQ6IFRyaXBsZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuYXBwbHlJbXB1bHNlKHsgcHJvcHM6IFtpbXB1bHNlLCB3b3JsZFBvaW50XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcHBseUxvY2FsRm9yY2UoZm9yY2U6IFRyaXBsZXQsIGxvY2FsUG9pbnQ6IFRyaXBsZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuYXBwbHlMb2NhbEZvcmNlKHsgcHJvcHM6IFtmb3JjZSwgbG9jYWxQb2ludF0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBwbHlMb2NhbEltcHVsc2UoaW1wdWxzZTogVHJpcGxldCwgbG9jYWxQb2ludDogVHJpcGxldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5hcHBseUxvY2FsSW1wdWxzZSh7IHByb3BzOiBbaW1wdWxzZSwgbG9jYWxQb2ludF0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBwbHlUb3JxdWUodG9ycXVlOiBUcmlwbGV0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLmFwcGx5VG9ycXVlKHsgcHJvcHM6IFt0b3JxdWVdLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbGxpc2lvbkZpbHRlckdyb3VwOiBtYWtlQXRvbWljKCdjb2xsaXNpb25GaWx0ZXJHcm91cCcsIGluZGV4KSxcbiAgICAgICAgICAgIGNvbGxpc2lvbkZpbHRlck1hc2s6IG1ha2VBdG9taWMoJ2NvbGxpc2lvbkZpbHRlck1hc2snLCBpbmRleCksXG4gICAgICAgICAgICBjb2xsaXNpb25SZXNwb25zZTogbWFrZUF0b21pYygnY29sbGlzaW9uUmVzcG9uc2UnLCBpbmRleCksXG4gICAgICAgICAgICBmaXhlZFJvdGF0aW9uOiBtYWtlQXRvbWljKCdmaXhlZFJvdGF0aW9uJywgaW5kZXgpLFxuICAgICAgICAgICAgaXNUcmlnZ2VyOiBtYWtlQXRvbWljKCdpc1RyaWdnZXInLCBpbmRleCksXG4gICAgICAgICAgICBsaW5lYXJEYW1waW5nOiBtYWtlQXRvbWljKCdsaW5lYXJEYW1waW5nJywgaW5kZXgpLFxuICAgICAgICAgICAgbGluZWFyRmFjdG9yOiBtYWtlVmVjKCdsaW5lYXJGYWN0b3InLCBpbmRleCksXG4gICAgICAgICAgICBtYXNzOiBtYWtlQXRvbWljKCdtYXNzJywgaW5kZXgpLFxuICAgICAgICAgICAgbWF0ZXJpYWw6IG1ha2VBdG9taWMoJ21hdGVyaWFsJywgaW5kZXgpLFxuICAgICAgICAgICAgcG9zaXRpb246IG1ha2VWZWMoJ3Bvc2l0aW9uJywgaW5kZXgpLFxuICAgICAgICAgICAgcXVhdGVybmlvbjogbWFrZVF1YXRlcm5pb24oaW5kZXgpLFxuICAgICAgICAgICAgcmVtb3ZlOiBtYWtlUmVtb3ZlKGluZGV4KSxcbiAgICAgICAgICAgIHJvdGF0aW9uOiBtYWtlUm90YXRpb24oaW5kZXgpLFxuICAgICAgICAgICAgc2NhbGVPdmVycmlkZShzY2FsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc2NhbGVPdmVycmlkZXMgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmICh1dWlkKSBzY2FsZU92ZXJyaWRlc1t1dWlkXSA9IG5ldyBUSFJFRS5WZWN0b3IzKC4uLnNjYWxlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzbGVlcCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuc2xlZXAoeyB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNsZWVwU3BlZWRMaW1pdDogbWFrZUF0b21pYygnc2xlZXBTcGVlZExpbWl0JywgaW5kZXgpLFxuICAgICAgICAgICAgc2xlZXBUaW1lTGltaXQ6IG1ha2VBdG9taWMoJ3NsZWVwVGltZUxpbWl0JywgaW5kZXgpLFxuICAgICAgICAgICAgdXNlckRhdGE6IG1ha2VBdG9taWMoJ3VzZXJEYXRhJywgaW5kZXgpLFxuICAgICAgICAgICAgdmVsb2NpdHk6IG1ha2VWZWMoJ3ZlbG9jaXR5JywgaW5kZXgpLFxuICAgICAgICAgICAgd2FrZVVwKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci53YWtlVXAoeyB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZTogeyBbaW5kZXg6IG51bWJlcl06IE5ndGNXb3JrZXJBcGkgfSA9IHt9O1xuICAgIGNvbnN0IGFwaSA9IHsgLi4ubWFrZUFwaSh1bmRlZmluZWQpLCBhdDogKGluZGV4OiBudW1iZXIpID0+IGNhY2hlW2luZGV4XSB8fCAoY2FjaGVbaW5kZXhdID0gbWFrZUFwaShpbmRleCkpIH07XG4gICAgcmV0dXJuIHsgcmVmOiBib2R5UmVmLCBhcGkgfTtcbn1cbiJdfQ==
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1jYW5ub24vc2VydmljZXMvc3JjL2xpYi9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF1QnZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBaUR0QyxNQUFNLFVBQVUsV0FBVyxDQUN2QixFQUE4QixFQUM5QixJQUF1RTtJQUV2RSxPQUFPLFVBQVUsQ0FBc0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQ3JCLEVBQTRCLEVBQzVCLElBQXVFO0lBRXZFLE1BQU0sY0FBYyxHQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxPQUFPLFVBQVUsQ0FBb0IsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxjQUFjLEVBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsRUFBaUMsRUFDakMsSUFBdUU7SUFFdkUsT0FBTyxVQUFVLENBQXlCLFVBQVUs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aUIsRUFBRSxLQUFLLENBQUM7WUFDckQsY0FBYyxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUM7WUFDbkQsUUFBUSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO1lBQ3ZDLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztZQUNwQyxNQUFNO2dCQUNGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEMsQ0FBQztTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQXVDLEVBQUUsQ0FBQztJQUNyRCxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDOUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBdG9taWNOYW1lLFxuICAgIEF0b21pY1Byb3BzLFxuICAgIEJvZHlQcm9wcyxcbiAgICBCb2R5U2hhcGVUeXBlLFxuICAgIEJveFByb3BzLFxuICAgIENvbXBvdW5kQm9keVByb3BzLFxuICAgIENvbnZleFBvbHloZWRyb25BcmdzLFxuICAgIENvbnZleFBvbHloZWRyb25Qcm9wcyxcbiAgICBDeWxpbmRlclByb3BzLFxuICAgIEhlaWdodGZpZWxkUHJvcHMsXG4gICAgUGFydGljbGVQcm9wcyxcbiAgICBQbGFuZVByb3BzLFxuICAgIFByb3BWYWx1ZSxcbiAgICBRdWFkLFxuICAgIFNldE9wTmFtZSxcbiAgICBTcGhlcmVBcmdzLFxuICAgIFNwaGVyZVByb3BzLFxuICAgIFRyaW1lc2hQcm9wcyxcbiAgICBUcmlwbGV0LFxuICAgIFZlY3Rvck5hbWUsXG59IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgaW5qZWN0Tmd0RGVzdHJveSwgaW5qZWN0Tmd0UmVmLCBOZ3RJbmplY3RlZFJlZiwgdGFwRWZmZWN0IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RjU3RvcmUsIE5ndGNVdGlscyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IE5HVENfREVCVUdfQVBJIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24vZGVidWcnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBmaWx0ZXJFbXB0eSB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBOZ3RjQXRvbWljQXBpPEsgZXh0ZW5kcyBBdG9taWNOYW1lPiA9IHtcbiAgICBzZXQ6ICh2YWx1ZTogQXRvbWljUHJvcHNbS10pID0+IHZvaWQ7XG4gICAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6ICh2YWx1ZTogQXRvbWljUHJvcHNbS10pID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RjUXVhdGVybmlvbkFwaSA9IHtcbiAgICBjb3B5OiAoeyB3LCB4LCB5LCB6IH06IFRIUkVFLlF1YXRlcm5pb24pID0+IHZvaWQ7XG4gICAgc2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlciwgdzogbnVtYmVyKSA9PiB2b2lkO1xuICAgIHN1YnNjcmliZTogKGNhbGxiYWNrOiAodmFsdWU6IFF1YWQpID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RjVmVjdG9yQXBpID0ge1xuICAgIGNvcHk6ICh7IHgsIHksIHogfTogVEhSRUUuVmVjdG9yMyB8IFRIUkVFLkV1bGVyKSA9PiB2b2lkO1xuICAgIHNldDogKHg6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXIpID0+IHZvaWQ7XG4gICAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6ICh2YWx1ZTogVHJpcGxldCkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndGNXb3JrZXJBcGkgPSB7XG4gICAgW0sgaW4gQXRvbWljTmFtZV06IE5ndGNBdG9taWNBcGk8Sz47XG59ICYge1xuICAgIFtLIGluIFZlY3Rvck5hbWVdOiBOZ3RjVmVjdG9yQXBpO1xufSAmIHtcbiAgICBhcHBseUZvcmNlOiAoZm9yY2U6IFRyaXBsZXQsIHdvcmxkUG9pbnQ6IFRyaXBsZXQpID0+IHZvaWQ7XG4gICAgYXBwbHlJbXB1bHNlOiAoaW1wdWxzZTogVHJpcGxldCwgd29ybGRQb2ludDogVHJpcGxldCkgPT4gdm9pZDtcbiAgICBhcHBseUxvY2FsRm9yY2U6IChmb3JjZTogVHJpcGxldCwgbG9jYWxQb2ludDogVHJpcGxldCkgPT4gdm9pZDtcbiAgICBhcHBseUxvY2FsSW1wdWxzZTogKGltcHVsc2U6IFRyaXBsZXQsIGxvY2FsUG9pbnQ6IFRyaXBsZXQpID0+IHZvaWQ7XG4gICAgYXBwbHlUb3JxdWU6ICh0b3JxdWU6IFRyaXBsZXQpID0+IHZvaWQ7XG4gICAgcXVhdGVybmlvbjogTmd0Y1F1YXRlcm5pb25BcGk7XG4gICAgcm90YXRpb246IE5ndGNWZWN0b3JBcGk7XG4gICAgc2NhbGVPdmVycmlkZTogKHNjYWxlOiBUcmlwbGV0KSA9PiB2b2lkO1xuICAgIHNsZWVwOiAoKSA9PiB2b2lkO1xuICAgIHdha2VVcDogKCkgPT4gdm9pZDtcbiAgICByZW1vdmU6ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNCb2R5UHVibGljQXBpIGV4dGVuZHMgTmd0Y1dvcmtlckFwaSB7XG4gICAgYXQ6IChpbmRleDogbnVtYmVyKSA9PiBOZ3RjV29ya2VyQXBpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNCb2R5UmV0dXJuPFRPYmplY3QgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRD4ge1xuICAgIHJlZjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD47XG4gICAgYXBpOiBOZ3RjQm9keVB1YmxpY0FwaTtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Y0dldEJ5SW5kZXg8VCBleHRlbmRzIEJvZHlQcm9wcz4gPSAoaW5kZXg6IG51bWJlcikgPT4gVDtcbmV4cG9ydCB0eXBlIE5ndGNBcmdGbjxUPiA9IChhcmdzOiBUKSA9PiB1bmtub3duW107XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQbGFuZTxUT2JqZWN0IGV4dGVuZHMgVEhSRUUuT2JqZWN0M0Q+KFxuICAgIGZuOiBOZ3RjR2V0QnlJbmRleDxQbGFuZVByb3BzPixcbiAgICBvcHRzPzogeyByZWY/OiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Pjsgd2FpdEZvcj86IE9ic2VydmFibGU8dW5rbm93bj4gfVxuKSB7XG4gICAgcmV0dXJuIGluamVjdEJvZHk8UGxhbmVQcm9wcywgVE9iamVjdD4oJ1BsYW5lJywgZm4sICgpID0+IFtdLCBvcHRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEJveDxUT2JqZWN0IGV4dGVuZHMgVEhSRUUuT2JqZWN0M0Q+KFxuICAgIGZuOiBOZ3RjR2V0QnlJbmRleDxCb3hQcm9wcz4sXG4gICAgb3B0cz86IHsgcmVmPzogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD47IHdhaXRGb3I/OiBPYnNlcnZhYmxlPHVua25vd24+IH1cbikge1xuICAgIGNvbnN0IGRlZmF1bHRCb3hBcmdzOiBUcmlwbGV0ID0gWzEsIDEsIDFdO1xuICAgIHJldHVybiBpbmplY3RCb2R5PEJveFByb3BzLCBUT2JqZWN0PignQm94JywgZm4sIChhcmdzID0gZGVmYXVsdEJveEFyZ3MpOiBUcmlwbGV0ID0+IGFyZ3MsIG9wdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q3lsaW5kZXI8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcbiAgICBmbjogTmd0Y0dldEJ5SW5kZXg8Q3lsaW5kZXJQcm9wcz4sXG4gICAgb3B0cz86IHsgcmVmPzogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD47IHdhaXRGb3I/OiBPYnNlcnZhYmxlPHVua25vd24+IH1cbikge1xuICAgIHJldHVybiBpbmplY3RCb2R5PEN5bGluZGVyUHJvcHMsIFRPYmplY3Q+KCdDeWxpbmRlcicsIGZuLCAoYXJncyA9IFtdIGFzIFtdKSA9PiBhcmdzLCBvcHRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEhlaWdodGZpZWxkPFRPYmplY3QgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRD4oXG4gICAgZm46IE5ndGNHZXRCeUluZGV4PEhlaWdodGZpZWxkUHJvcHM+LFxuICAgIG9wdHM/OiB7IHJlZj86IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+OyB3YWl0Rm9yPzogT2JzZXJ2YWJsZTx1bmtub3duPiB9XG4pIHtcbiAgICByZXR1cm4gaW5qZWN0Qm9keTxIZWlnaHRmaWVsZFByb3BzLCBUT2JqZWN0PignSGVpZ2h0ZmllbGQnLCBmbiwgKGFyZ3MpID0+IGFyZ3MsIG9wdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UGFydGljbGU8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcbiAgICBmbjogTmd0Y0dldEJ5SW5kZXg8UGFydGljbGVQcm9wcz4sXG4gICAgb3B0cz86IHsgcmVmPzogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD47IHdhaXRGb3I/OiBPYnNlcnZhYmxlPHVua25vd24+IH1cbikge1xuICAgIHJldHVybiBpbmplY3RCb2R5PFBhcnRpY2xlUHJvcHMsIFRPYmplY3Q+KCdQYXJ0aWNsZScsIGZuLCAoKSA9PiBbXSwgb3B0cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTcGhlcmU8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcbiAgICBmbjogTmd0Y0dldEJ5SW5kZXg8U3BoZXJlUHJvcHM+LFxuICAgIG9wdHM/OiB7IHJlZj86IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+OyB3YWl0Rm9yPzogT2JzZXJ2YWJsZTx1bmtub3duPiB9XG4pIHtcbiAgICByZXR1cm4gaW5qZWN0Qm9keTxTcGhlcmVQcm9wcywgVE9iamVjdD4oXG4gICAgICAgICdTcGhlcmUnLFxuICAgICAgICBmbixcbiAgICAgICAgKGFyZ3M6IFNwaGVyZUFyZ3MgPSBbMV0pOiBTcGhlcmVBcmdzID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcmdzKSkgdGhyb3cgbmV3IEVycm9yKCdpbmplY3RTcGhlcmUgYXJncyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgICAgICByZXR1cm4gW2FyZ3NbMF1dO1xuICAgICAgICB9LFxuICAgICAgICBvcHRzXG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFRyaW1lc2g8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcbiAgICBmbjogTmd0Y0dldEJ5SW5kZXg8VHJpbWVzaFByb3BzPixcbiAgICBvcHRzPzogeyByZWY/OiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Pjsgd2FpdEZvcj86IE9ic2VydmFibGU8dW5rbm93bj4gfVxuKSB7XG4gICAgcmV0dXJuIGluamVjdEJvZHk8VHJpbWVzaFByb3BzLCBUT2JqZWN0PignVHJpbWVzaCcsIGZuLCAoYXJncykgPT4gYXJncywgb3B0cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDb252ZXhQb2x5aGVkcm9uPFRPYmplY3QgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRD4oXG4gICAgZm46IE5ndGNHZXRCeUluZGV4PENvbnZleFBvbHloZWRyb25Qcm9wcz4sXG4gICAgb3B0cz86IHsgcmVmPzogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD47IHdhaXRGb3I/OiBPYnNlcnZhYmxlPHVua25vd24+IH1cbikge1xuICAgIHJldHVybiBpbmplY3RCb2R5PENvbnZleFBvbHloZWRyb25Qcm9wcywgVE9iamVjdD4oXG4gICAgICAgICdDb252ZXhQb2x5aGVkcm9uJyxcbiAgICAgICAgZm4sXG4gICAgICAgIChbdmVydGljZXMsIGZhY2VzLCBub3JtYWxzLCBheGVzLCBib3VuZGluZ1NwaGVyZVJhZGl1c10gPSBbXSk6IENvbnZleFBvbHloZWRyb25BcmdzPFRyaXBsZXQ+ID0+IFtcbiAgICAgICAgICAgIHZlcnRpY2VzICYmIHZlcnRpY2VzLm1hcChOZ3RjVXRpbHMubWFrZVRyaXBsZXQpLFxuICAgICAgICAgICAgZmFjZXMsXG4gICAgICAgICAgICBub3JtYWxzICYmIG5vcm1hbHMubWFwKE5ndGNVdGlscy5tYWtlVHJpcGxldCksXG4gICAgICAgICAgICBheGVzICYmIGF4ZXMubWFwKE5ndGNVdGlscy5tYWtlVHJpcGxldCksXG4gICAgICAgICAgICBib3VuZGluZ1NwaGVyZVJhZGl1cyxcbiAgICAgICAgXSxcbiAgICAgICAgb3B0c1xuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDb21wb3VuZEJvZHk8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcbiAgICBmbjogTmd0Y0dldEJ5SW5kZXg8Q29tcG91bmRCb2R5UHJvcHM+LFxuICAgIG9wdHM/OiB7IHJlZj86IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+OyB3YWl0Rm9yPzogT2JzZXJ2YWJsZTx1bmtub3duPiB9XG4pIHtcbiAgICByZXR1cm4gaW5qZWN0Qm9keTxDb21wb3VuZEJvZHlQcm9wcywgVE9iamVjdD4oJ0NvbXBvdW5kJywgZm4sIChhcmdzKSA9PiBhcmdzIGFzIHVua25vd25bXSwgb3B0cyk7XG59XG5cbmNvbnN0IHRlbXAgPSBuZXcgVEhSRUUuT2JqZWN0M0QoKTtcblxuZnVuY3Rpb24gaW5qZWN0Qm9keTxUQm9keVByb3BzIGV4dGVuZHMgQm9keVByb3BzLCBUT2JqZWN0IGV4dGVuZHMgVEhSRUUuT2JqZWN0M0Q+KFxuICAgIHR5cGU6IEJvZHlTaGFwZVR5cGUsXG4gICAgZ2V0UHJvcHNGbjogTmd0Y0dldEJ5SW5kZXg8VEJvZHlQcm9wcz4sXG4gICAgYXJnc0ZuOiBOZ3RjQXJnRm48VEJvZHlQcm9wc1snYXJncyddPixcbiAgICB7IHJlZiwgd2FpdEZvciB9OiB7IHJlZj86IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+OyB3YWl0Rm9yPzogT2JzZXJ2YWJsZTx1bmtub3duPiB9ID0ge31cbik6IE5ndGNCb2R5UmV0dXJuPFRPYmplY3Q+IHtcbiAgICBsZXQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkZWJ1Z0FwaSA9IGluamVjdChOR1RDX0RFQlVHX0FQSSwgeyBza2lwU2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgY29uc3QgcGh5c2ljc1N0b3JlID0gaW5qZWN0KE5ndGNTdG9yZSwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcblxuICAgIC8vIGNsZWFuIHVwIG91ciBzdHJlYW1zIG9uIGRlc3Ryb3lcbiAgICBpbmplY3ROZ3REZXN0cm95KCgpID0+IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gZ2l2ZSBvdXIgYm9keVJlZiBhbiBOZ3RJbmplY3RlZFJlZlxuICAgIGxldCBib2R5UmVmID0gaW5qZWN0Tmd0UmVmPFRPYmplY3Q+KCk7XG5cbiAgICAvLyByZS1hc3NpZ24gYm9keVJlZiBpZiB0aGUgY29uc3VtZXJzIHBhc3MgYSByZWYgaW5cbiAgICBpZiAocmVmKSBib2R5UmVmID0gcmVmO1xuXG4gICAgLy8gZmlyZSBtaWNyb1F1ZXVlJFxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgLy8gd2FpdEZvciBhc3N1bWVzIHRoZSBjb25zdW1lciB3aWxsIGJlIHVzaW5nIHRoZSBib2R5UmVmIG9uIHRoZSB0ZW1wbGF0ZVxuICAgICAgICAvLyB3aXRoIHRoZSBtb2RlbCAod2FpdEZvcikgYXMgYSBUSFJFRSBpbnN0YW5jZVxuICAgICAgICBpZiAoIXdhaXRGb3IgJiYgIWJvZHlSZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgYm9keVJlZi5uYXRpdmVFbGVtZW50ID0gbmV3IFRIUkVFLk9iamVjdDNEKCkgYXMgVE9iamVjdDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gc3RhcnQgdGhlIHBpcGVsaW5lIGFzIHNvb24gYXMgYm9keVJlZiBoYXMgYSB0cnV0aHkgdmFsdWVcbiAgICBzdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtwaHlzaWNzU3RvcmUuc2VsZWN0KCd3b3JrZXInKSwgYm9keVJlZi4kLnBpcGUoZmlsdGVyRW1wdHkoKSldKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcEVmZmVjdCgoW3dvcmtlciwgb2JqZWN0XSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRXb3JrZXIgPSB3b3JrZXI7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB7IGV2ZW50cywgcmVmcyB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGxldCBvYmplY3RDb3VudCA9IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgVEhSRUUuSW5zdGFuY2VkTWVzaCkge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuaW5zdGFuY2VNYXRyaXguc2V0VXNhZ2UoVEhSRUUuRHluYW1pY0RyYXdVc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdENvdW50ID0gb2JqZWN0LmNvdW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGlkYXRlIG91ciB1dWlkcyBpbnRvIGFuIEFycmF5IHNvIHdlIGNhbiBoYW5kbGUgdGhlbSBpbiBhIG1vcmUgY29uc2lzdGVudCB3YXlcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkcyA9XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdCBpbnN0YW5jZW9mIFRIUkVFLkluc3RhbmNlZE1lc2hcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IEFycmF5KG9iamVjdENvdW50KS5maWxsKDApLm1hcCgoXywgaSkgPT4gYCR7b2JqZWN0LnV1aWR9LyR7aX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbb2JqZWN0LnV1aWRdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvcHNMaXN0ID0gdXVpZHMubWFwKCh1dWlkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wc1Jlc3VsdCA9IGdldFByb3BzRm4oaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBOZ3RjVXRpbHMucHJlcGFyZSh0ZW1wLCBwcm9wc1Jlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBUSFJFRS5JbnN0YW5jZWRNZXNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Quc2V0TWF0cml4QXQoaW5kZXgsIHRlbXAubWF0cml4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5pbnN0YW5jZU1hdHJpeC5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmc1t1dWlkXSA9IG9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgZGVidWdBcGk/LmFkZCh1dWlkLCBwcm9wc1Jlc3VsdCwgdHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIE5ndGNVdGlscy5zZXR1cENvbGxpc2lvbihldmVudHMsIHByb3BzUmVzdWx0LCB1dWlkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJvcHNSZXN1bHQsIGFyZ3M6IGFyZ3NGbihwcm9wc1Jlc3VsdC5hcmdzKSB9O1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY3VycmVudFdvcmtlci5hZGRCb2RpZXMoe1xuICAgICAgICAgICAgICAgICAgICBwcm9wczogcHJvcHNMaXN0Lm1hcCgoeyBvbkNvbGxpZGUsIG9uQ29sbGlkZUJlZ2luLCBvbkNvbGxpZGVFbmQsIC4uLnNlcmlhbGl6YWJsZVByb3BzIH0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNvbGxpZGU6IEJvb2xlYW4ob25Db2xsaWRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29sbGlkZUJlZ2luOiBCb29sZWFuKG9uQ29sbGlkZUJlZ2luKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29sbGlkZUVuZDogQm9vbGVhbihvbkNvbGxpZGVFbmQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uc2VyaWFsaXphYmxlUHJvcHMsXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgdXVpZDogdXVpZHMsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB1dWlkcy5mb3JFYWNoKCh1dWlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVmc1t1dWlkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnQXBpPy5yZW1vdmUodXVpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZXZlbnRzW3V1aWRdO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFdvcmtlci5yZW1vdmVCb2RpZXMoeyB1dWlkOiB1dWlkcyB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBjb25zdCBtYWtlQXRvbWljID0gPFQgZXh0ZW5kcyBBdG9taWNOYW1lPih0eXBlOiBULCBpbmRleD86IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBvcDogU2V0T3BOYW1lPFQ+ID0gYHNldCR7Tmd0Y1V0aWxzLmNhcGl0YWxpemUodHlwZSl9YDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2V0OiAodmFsdWU6IFByb3BWYWx1ZTxUPikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlcltvcF0oeyBwcm9wczogdmFsdWUsIHV1aWQgfSBhcyBuZXZlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHN1YnNjcmliZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN1YnNjcmlwdGlvbnMsIHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBOZ3RjVXRpbHMuc3Vic2NyaWJlKGJvZHlSZWYsIHdvcmtlciwgc3Vic2NyaXB0aW9ucywgdHlwZSwgaW5kZXgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZVF1YXRlcm5pb24gPSAoaW5kZXg/OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgdHlwZSA9ICdxdWF0ZXJuaW9uJztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvcHk6ICh7IHcsIHgsIHksIHogfTogVEhSRUUuUXVhdGVybmlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zZXRRdWF0ZXJuaW9uKHsgcHJvcHM6IFt4LCB5LCB6LCB3XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyLCB3OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuc2V0UXVhdGVybmlvbih7IHByb3BzOiBbeCwgeSwgeiwgd10sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHN1YnNjcmliZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN1YnNjcmlwdGlvbnMsIHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBOZ3RjVXRpbHMuc3Vic2NyaWJlKGJvZHlSZWYsIHdvcmtlciwgc3Vic2NyaXB0aW9ucywgdHlwZSwgaW5kZXgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZVJvdGF0aW9uID0gKGluZGV4PzogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3B5OiAoeyB4LCB5LCB6IH06IFRIUkVFLlZlY3RvcjMgfCBUSFJFRS5FdWxlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zZXRSb3RhdGlvbih7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zZXRSb3RhdGlvbih7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6ICh2YWx1ZTogVHJpcGxldCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3Vic2NyaXB0aW9ucywgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBOZ3RjVXRpbHMuaW5jcmVtZW50aW5nSWQrKztcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAnYm9kaWVzJztcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gJ3F1YXRlcm5pb24nO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG5cbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25zW2lkXSA9IHsgW3R5cGVdOiBOZ3RjVXRpbHMucXVhdGVybmlvblRvUm90YXRpb24oY2FsbGJhY2spIH07XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuc3Vic2NyaWJlKHsgcHJvcHM6IHsgaWQsIHRhcmdldCwgdHlwZSB9LCB1dWlkIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWJzY3JpcHRpb25zW2lkXTtcbiAgICAgICAgICAgICAgICAgICAgd29ya2VyLnVuc3Vic2NyaWJlKHsgcHJvcHM6IGlkIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBtYWtlVmVjID0gKHR5cGU6IFZlY3Rvck5hbWUsIGluZGV4PzogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wOiBTZXRPcE5hbWU8VmVjdG9yTmFtZT4gPSBgc2V0JHtOZ3RjVXRpbHMuY2FwaXRhbGl6ZSh0eXBlKX1gO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29weTogKHsgeCwgeSwgeiB9OiBUSFJFRS5WZWN0b3IzIHwgVEhSRUUuRXVsZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXJbb3BdKHsgcHJvcHM6IFt4LCB5LCB6XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyW29wXSh7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHN1YnNjcmliZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN1YnNjcmlwdGlvbnMsIHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBOZ3RjVXRpbHMuc3Vic2NyaWJlKGJvZHlSZWYsIHdvcmtlciwgc3Vic2NyaXB0aW9ucywgdHlwZSwgaW5kZXgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZVJlbW92ZSA9IChpbmRleD86IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHV1aWQpIHdvcmtlci5yZW1vdmVCb2RpZXMoeyB1dWlkOiBbdXVpZF0gfSk7XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1ha2VBcGkoaW5kZXg/OiBudW1iZXIpOiBOZ3RjV29ya2VyQXBpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFsbG93U2xlZXA6IG1ha2VBdG9taWMoJ2FsbG93U2xlZXAnLCBpbmRleCksXG4gICAgICAgICAgICBhbmd1bGFyRGFtcGluZzogbWFrZUF0b21pYygnYW5ndWxhckRhbXBpbmcnLCBpbmRleCksXG4gICAgICAgICAgICBhbmd1bGFyRmFjdG9yOiBtYWtlVmVjKCdhbmd1bGFyRmFjdG9yJywgaW5kZXgpLFxuICAgICAgICAgICAgYW5ndWxhclZlbG9jaXR5OiBtYWtlVmVjKCdhbmd1bGFyVmVsb2NpdHknLCBpbmRleCksXG4gICAgICAgICAgICBhcHBseUZvcmNlKGZvcmNlOiBUcmlwbGV0LCB3b3JsZFBvaW50OiBUcmlwbGV0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLmFwcGx5Rm9yY2UoeyBwcm9wczogW2ZvcmNlLCB3b3JsZFBvaW50XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcHBseUltcHVsc2UoaW1wdWxzZTogVHJpcGxldCwgd29ybGRQb2ludDogVHJpcGxldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5hcHBseUltcHVsc2UoeyBwcm9wczogW2ltcHVsc2UsIHdvcmxkUG9pbnRdLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFwcGx5TG9jYWxGb3JjZShmb3JjZTogVHJpcGxldCwgbG9jYWxQb2ludDogVHJpcGxldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5hcHBseUxvY2FsRm9yY2UoeyBwcm9wczogW2ZvcmNlLCBsb2NhbFBvaW50XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcHBseUxvY2FsSW1wdWxzZShpbXB1bHNlOiBUcmlwbGV0LCBsb2NhbFBvaW50OiBUcmlwbGV0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLmFwcGx5TG9jYWxJbXB1bHNlKHsgcHJvcHM6IFtpbXB1bHNlLCBsb2NhbFBvaW50XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcHBseVRvcnF1ZSh0b3JxdWU6IFRyaXBsZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuYXBwbHlUb3JxdWUoeyBwcm9wczogW3RvcnF1ZV0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29sbGlzaW9uRmlsdGVyR3JvdXA6IG1ha2VBdG9taWMoJ2NvbGxpc2lvbkZpbHRlckdyb3VwJywgaW5kZXgpLFxuICAgICAgICAgICAgY29sbGlzaW9uRmlsdGVyTWFzazogbWFrZUF0b21pYygnY29sbGlzaW9uRmlsdGVyTWFzaycsIGluZGV4KSxcbiAgICAgICAgICAgIGNvbGxpc2lvblJlc3BvbnNlOiBtYWtlQXRvbWljKCdjb2xsaXNpb25SZXNwb25zZScsIGluZGV4KSxcbiAgICAgICAgICAgIGZpeGVkUm90YXRpb246IG1ha2VBdG9taWMoJ2ZpeGVkUm90YXRpb24nLCBpbmRleCksXG4gICAgICAgICAgICBpc1RyaWdnZXI6IG1ha2VBdG9taWMoJ2lzVHJpZ2dlcicsIGluZGV4KSxcbiAgICAgICAgICAgIGxpbmVhckRhbXBpbmc6IG1ha2VBdG9taWMoJ2xpbmVhckRhbXBpbmcnLCBpbmRleCksXG4gICAgICAgICAgICBsaW5lYXJGYWN0b3I6IG1ha2VWZWMoJ2xpbmVhckZhY3RvcicsIGluZGV4KSxcbiAgICAgICAgICAgIG1hc3M6IG1ha2VBdG9taWMoJ21hc3MnLCBpbmRleCksXG4gICAgICAgICAgICBtYXRlcmlhbDogbWFrZUF0b21pYygnbWF0ZXJpYWwnLCBpbmRleCksXG4gICAgICAgICAgICBwb3NpdGlvbjogbWFrZVZlYygncG9zaXRpb24nLCBpbmRleCksXG4gICAgICAgICAgICBxdWF0ZXJuaW9uOiBtYWtlUXVhdGVybmlvbihpbmRleCksXG4gICAgICAgICAgICByZW1vdmU6IG1ha2VSZW1vdmUoaW5kZXgpLFxuICAgICAgICAgICAgcm90YXRpb246IG1ha2VSb3RhdGlvbihpbmRleCksXG4gICAgICAgICAgICBzY2FsZU92ZXJyaWRlKHNjYWxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzY2FsZU92ZXJyaWRlcyB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgaWYgKHV1aWQpIHNjYWxlT3ZlcnJpZGVzW3V1aWRdID0gbmV3IFRIUkVFLlZlY3RvcjMoLi4uc2NhbGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNsZWVwKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zbGVlcCh7IHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2xlZXBTcGVlZExpbWl0OiBtYWtlQXRvbWljKCdzbGVlcFNwZWVkTGltaXQnLCBpbmRleCksXG4gICAgICAgICAgICBzbGVlcFRpbWVMaW1pdDogbWFrZUF0b21pYygnc2xlZXBUaW1lTGltaXQnLCBpbmRleCksXG4gICAgICAgICAgICB1c2VyRGF0YTogbWFrZUF0b21pYygndXNlckRhdGEnLCBpbmRleCksXG4gICAgICAgICAgICB2ZWxvY2l0eTogbWFrZVZlYygndmVsb2NpdHknLCBpbmRleCksXG4gICAgICAgICAgICB3YWtlVXAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLndha2VVcCh7IHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNhY2hlOiB7IFtpbmRleDogbnVtYmVyXTogTmd0Y1dvcmtlckFwaSB9ID0ge307XG4gICAgY29uc3QgYXBpID0geyAuLi5tYWtlQXBpKHVuZGVmaW5lZCksIGF0OiAoaW5kZXg6IG51bWJlcikgPT4gY2FjaGVbaW5kZXhdIHx8IChjYWNoZVtpbmRleF0gPSBtYWtlQXBpKGluZGV4KSkgfTtcbiAgICByZXR1cm4geyByZWY6IGJvZHlSZWYsIGFwaSB9O1xufVxuIl19
|
|
@@ -2,6 +2,7 @@ import { inject } from '@angular/core';
|
|
|
2
2
|
import { injectNgtDestroy, injectNgtRef, is, makeId, tapEffect } from 'angular-three';
|
|
3
3
|
import { NgtcStore } from 'angular-three-cannon';
|
|
4
4
|
import { combineLatest, takeUntil } from 'rxjs';
|
|
5
|
+
import { filterEmpty } from './utils';
|
|
5
6
|
export function injectPointToPointConstraint(bodyA, bodyB, optsFn) {
|
|
6
7
|
return injectConstraint('PointToPoint', bodyA, bodyB, optsFn);
|
|
7
8
|
}
|
|
@@ -23,7 +24,7 @@ function injectConstraint(type, bodyA, bodyB, optsFn = () => ({})) {
|
|
|
23
24
|
const physicsStore = inject(NgtcStore, { skipSelf: true });
|
|
24
25
|
const bodyARef = !is.ref(bodyA) ? injectNgtRef(bodyA) : bodyA;
|
|
25
26
|
const bodyBRef = !is.ref(bodyB) ? injectNgtRef(bodyB) : bodyB;
|
|
26
|
-
combineLatest([physicsStore.select('worker'), bodyARef
|
|
27
|
+
combineLatest([physicsStore.select('worker'), bodyARef.$.pipe(filterEmpty()), bodyBRef.$.pipe(filterEmpty())])
|
|
27
28
|
.pipe(tapEffect(([worker, bodyA, bodyB]) => {
|
|
28
29
|
const opts = optsFn();
|
|
29
30
|
worker.addConstraint({ props: [bodyA.uuid, bodyB.uuid, opts], type, uuid });
|
|
@@ -65,4 +66,4 @@ function injectConstraint(type, bodyA, bodyB, optsFn = () => ({})) {
|
|
|
65
66
|
}
|
|
66
67
|
return { bodyA: bodyARef, bodyB: bodyBRef, api };
|
|
67
68
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1jYW5ub24vc2VydmljZXMvc3JjL2xpYi9jb25zdHJhaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFrQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBb0NoRCxNQUFNLFVBQVUsNEJBQTRCLENBSXhDLEtBQTBDLEVBQzFDLEtBQTBDLEVBQzFDLE1BQXFFO0lBRXJFLE9BQU8sZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FJckMsS0FBMEMsRUFDMUMsS0FBMEMsRUFDMUMsTUFBK0Q7SUFFL0QsT0FBTyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUlwQyxLQUEwQyxFQUMxQyxLQUEwQyxFQUMxQyxNQUE2RDtJQUU3RCxPQUFPLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBSWpDLEtBQTBDLEVBQzFDLEtBQTBDLEVBQzFDLE1BQXVEO0lBRXZELE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFL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RSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDO1FBRUYsUUFBUSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUU7WUFDeEIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxNQUFNLENBQUMscUJBQXFCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQztRQUVGLFFBQVEsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUN2QyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUM7UUFFRixRQUFRLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUMxQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUM7S0FDTDtJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDb25lVHdpc3RDb25zdHJhaW50T3B0cyxcbiAgICBDb25zdHJhaW50T3B0bnMsXG4gICAgQ29uc3RyYWludFR5cGVzLFxuICAgIERpc3RhbmNlQ29uc3RyYWludE9wdHMsXG4gICAgSGluZ2VDb25zdHJhaW50T3B0cyxcbiAgICBMb2NrQ29uc3RyYWludE9wdHMsXG4gICAgUG9pbnRUb1BvaW50Q29uc3RyYWludE9wdHMsXG59IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgaW5qZWN0Tmd0RGVzdHJveSwgaW5qZWN0Tmd0UmVmLCBpcywgbWFrZUlkLCBOZ3RJbmplY3RlZFJlZiwgdGFwRWZmZWN0IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RjU3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlLWNhbm5vbic7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjQ29uc3RyYWludEFwaSB7XG4gICAgZGlzYWJsZTogKCkgPT4gdm9pZDtcbiAgICBlbmFibGU6ICgpID0+IHZvaWQ7XG4gICAgcmVtb3ZlOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNIaW5nZUNvbnN0cmFpbnRBcGkgZXh0ZW5kcyBOZ3RjQ29uc3RyYWludEFwaSB7XG4gICAgZGlzYWJsZU1vdG9yOiAoKSA9PiB2b2lkO1xuICAgIGVuYWJsZU1vdG9yOiAoKSA9PiB2b2lkO1xuICAgIHNldE1vdG9yTWF4Rm9yY2U6ICh2YWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xuICAgIHNldE1vdG9yU3BlZWQ6ICh2YWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RjQ29uc3RyYWludE9SSGluZ2VBcGk8VCBleHRlbmRzICdIaW5nZScgfCBDb25zdHJhaW50VHlwZXM+ID0gVCBleHRlbmRzIENvbnN0cmFpbnRUeXBlc1xuICAgID8gTmd0Y0NvbnN0cmFpbnRBcGlcbiAgICA6IE5ndGNIaW5nZUNvbnN0cmFpbnRBcGk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0NvbnN0cmFpbnRSZXR1cm48XG4gICAgVCBleHRlbmRzICdIaW5nZScgfCBDb25zdHJhaW50VHlwZXMsXG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRFxuPiB7XG4gICAgYm9keUE6IE5ndEluamVjdGVkUmVmPFRPYmplY3RBPjtcbiAgICBib2R5QjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEI+O1xuICAgIGFwaTogTmd0Y0NvbnN0cmFpbnRPUkhpbmdlQXBpPFQ+O1xufVxuXG5leHBvcnQgdHlwZSBOZ3RjT3B0c0Z1bmN0aW9uPFxuICAgIFRDb25zdHJhaW50VHlwZSBleHRlbmRzICdIaW5nZScgfCBDb25zdHJhaW50VHlwZXMsXG4gICAgVE9wdGlvbnMgZXh0ZW5kcyBIaW5nZUNvbnN0cmFpbnRPcHRzIHwgQ29uc3RyYWludE9wdG5zID0gVENvbnN0cmFpbnRUeXBlIGV4dGVuZHMgJ0hpbmdlJ1xuICAgICAgICA/IEhpbmdlQ29uc3RyYWludE9wdHNcbiAgICAgICAgOiBDb25zdHJhaW50T3B0bnNcbj4gPSAoKSA9PiBUT3B0aW9ucztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFBvaW50VG9Qb2ludENvbnN0cmFpbnQ8XG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRFxuPihcbiAgICBib2R5QTogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEE+IHwgVE9iamVjdEEsXG4gICAgYm9keUI6IE5ndEluamVjdGVkUmVmPFRPYmplY3RCPiB8IFRPYmplY3RCLFxuICAgIG9wdHNGbj86IE5ndGNPcHRzRnVuY3Rpb248J1BvaW50VG9Qb2ludCcsIFBvaW50VG9Qb2ludENvbnN0cmFpbnRPcHRzPlxuKSB7XG4gICAgcmV0dXJuIGluamVjdENvbnN0cmFpbnQoJ1BvaW50VG9Qb2ludCcsIGJvZHlBLCBib2R5Qiwgb3B0c0ZuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENvbmVUd2lzdENvbnN0cmFpbnQ8XG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRFxuPihcbiAgICBib2R5QTogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEE+IHwgVE9iamVjdEEsXG4gICAgYm9keUI6IE5ndEluamVjdGVkUmVmPFRPYmplY3RCPiB8IFRPYmplY3RCLFxuICAgIG9wdHNGbj86IE5ndGNPcHRzRnVuY3Rpb248J0NvbmVUd2lzdCcsIENvbmVUd2lzdENvbnN0cmFpbnRPcHRzPlxuKSB7XG4gICAgcmV0dXJuIGluamVjdENvbnN0cmFpbnQoJ0NvbmVUd2lzdCcsIGJvZHlBLCBib2R5Qiwgb3B0c0ZuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdERpc3RhbmNlQ29uc3RyYWludDxcbiAgICBUT2JqZWN0QSBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0QsXG4gICAgVE9iamVjdEIgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNEXG4+KFxuICAgIGJvZHlBOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0QT4gfCBUT2JqZWN0QSxcbiAgICBib2R5QjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEI+IHwgVE9iamVjdEIsXG4gICAgb3B0c0ZuPzogTmd0Y09wdHNGdW5jdGlvbjwnRGlzdGFuY2UnLCBEaXN0YW5jZUNvbnN0cmFpbnRPcHRzPlxuKSB7XG4gICAgcmV0dXJuIGluamVjdENvbnN0cmFpbnQoJ0Rpc3RhbmNlJywgYm9keUEsIGJvZHlCLCBvcHRzRm4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SGluZ2VDb25zdHJhaW50PFxuICAgIFRPYmplY3RBIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRCxcbiAgICBUT2JqZWN0QiBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0Rcbj4oXG4gICAgYm9keUE6IE5ndEluamVjdGVkUmVmPFRPYmplY3RBPiB8IFRPYmplY3RBLFxuICAgIGJvZHlCOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Qj4gfCBUT2JqZWN0QixcbiAgICBvcHRzRm4/OiBOZ3RjT3B0c0Z1bmN0aW9uPCdIaW5nZScsIEhpbmdlQ29uc3RyYWludE9wdHM+XG4pIHtcbiAgICByZXR1cm4gaW5qZWN0Q29uc3RyYWludCgnSGluZ2UnLCBib2R5QSwgYm9keUIsIG9wdHNGbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RMb2NrQ29uc3RyYWludDxcbiAgICBUT2JqZWN0QSBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0QsXG4gICAgVE9iamVjdEIgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNEXG4+KFxuICAgIGJvZHlBOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0QT4gfCBUT2JqZWN0QSxcbiAgICBib2R5QjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEI+IHwgVE9iamVjdEIsXG4gICAgb3B0c0ZuPzogTmd0Y09wdHNGdW5jdGlvbjwnTG9jaycsIExvY2tDb25zdHJhaW50T3B0cz5cbikge1xuICAgIHJldHVybiBpbmplY3RDb25zdHJhaW50KCdMb2NrJywgYm9keUEsIGJvZHlCLCBvcHRzRm4pO1xufVxuXG5mdW5jdGlvbiBpbmplY3RDb25zdHJhaW50PFxuICAgIFRDb25zdHJhaW50VHlwZSBleHRlbmRzICdIaW5nZScgfCBDb25zdHJhaW50VHlwZXMsXG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRCxcbiAgICBUT3B0aW9ucyBleHRlbmRzIEhpbmdlQ29uc3RyYWludE9wdHMgfCBDb25zdHJhaW50T3B0bnMgPSBUQ29uc3RyYWludFR5cGUgZXh0ZW5kcyAnSGluZ2UnXG4gICAgICAgID8gSGluZ2VDb25zdHJhaW50T3B0c1xuICAgICAgICA6IENvbnN0cmFpbnRPcHRuc1xuPihcbiAgICB0eXBlOiBUQ29uc3RyYWludFR5cGUsXG4gICAgYm9keUE6IE5ndEluamVjdGVkUmVmPFRPYmplY3RBPiB8IFRPYmplY3RBLFxuICAgIGJvZHlCOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Qj4gfCBUT2JqZWN0QixcbiAgICBvcHRzRm46IE5ndGNPcHRzRnVuY3Rpb248VENvbnN0cmFpbnRUeXBlLCBUT3B0aW9ucz4gPSAoKSA9PiAoe30gYXMgVE9wdGlvbnMpXG4pOiBOZ3RjQ29uc3RyYWludFJldHVybjxUQ29uc3RyYWludFR5cGUsIFRPYmplY3RBLCBUT2JqZWN0Qj4ge1xuICAgIGNvbnN0IHsgZGVzdHJveSQgfSA9IGluamVjdE5ndERlc3Ryb3koKTtcbiAgICBjb25zdCB1dWlkID0gbWFrZUlkKCk7XG5cbiAgICBjb25zdCBwaHlzaWNzU3RvcmUgPSBpbmplY3QoTmd0Y1N0b3JlLCB7IHNraXBTZWxmOiB0cnVlIH0pO1xuXG4gICAgY29uc3QgYm9keUFSZWYgPSAhaXMucmVmKGJvZHlBKSA/IGluamVjdE5ndFJlZihib2R5QSkgOiBib2R5QTtcbiAgICBjb25zdCBib2R5QlJlZiA9ICFpcy5yZWYoYm9keUIpID8gaW5qZWN0Tmd0UmVmKGJvZHlCKSA6IGJvZHlCO1xuXG4gICAgY29tYmluZUxhdGVzdChbcGh5c2ljc1N0b3JlLnNlbGVjdCgnd29ya2VyJyksIGJvZHlBUmVmLiQsIGJvZHlCUmVmLiRdKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcEVmZmVjdCgoW3dvcmtlciwgYm9keUEsIGJvZHlCXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdHMgPSBvcHRzRm4oKTtcbiAgICAgICAgICAgICAgICB3b3JrZXIuYWRkQ29uc3RyYWludCh7IHByb3BzOiBbYm9keUEudXVpZCwgYm9keUIudXVpZCwgb3B0c10sIHR5cGUsIHV1aWQgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHdvcmtlci5yZW1vdmVDb25zdHJhaW50KHsgdXVpZCB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGNvbnN0IGFwaSA9IHtcbiAgICAgICAgZGlzYWJsZTogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gcGh5c2ljc1N0b3JlLmdldCgnd29ya2VyJyk7XG4gICAgICAgICAgICB3b3JrZXIuZGlzYWJsZUNvbnN0cmFpbnQoeyB1dWlkIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlbmFibGU6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IHBoeXNpY3NTdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgd29ya2VyLmVuYWJsZUNvbnN0cmFpbnQoeyB1dWlkIH0pO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmU6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IHBoeXNpY3NTdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgd29ya2VyLnJlbW92ZUNvbnN0cmFpbnQoeyB1dWlkIH0pO1xuICAgICAgICB9LFxuICAgIH0gYXMgTmd0Y0NvbnN0cmFpbnRPUkhpbmdlQXBpPFRDb25zdHJhaW50VHlwZT47XG5cbiAgICBpZiAodHlwZSA9PT0gJ0hpbmdlJykge1xuICAgICAgICBjb25zdCBoaW5nZUFwaSA9IGFwaSBhcyBOZ3RjSGluZ2VDb25zdHJhaW50QXBpO1xuICAgICAgICBoaW5nZUFwaS5kaXNhYmxlTW90b3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBwaHlzaWNzU3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIHdvcmtlci5kaXNhYmxlQ29uc3RyYWludE1vdG9yKHsgdXVpZCB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBoaW5nZUFwaS5lbmFibGVNb3RvciA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IHBoeXNpY3NTdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgd29ya2VyLmVuYWJsZUNvbnN0cmFpbnRNb3Rvcih7IHV1aWQgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaGluZ2VBcGkuc2V0TW90b3JTcGVlZCA9ICh2YWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBwaHlzaWNzU3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIHdvcmtlci5zZXRDb25zdHJhaW50TW90b3JTcGVlZCh7IHV1aWQsIHByb3BzOiB2YWx1ZSB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBoaW5nZUFwaS5zZXRNb3Rvck1heEZvcmNlID0gKHZhbHVlOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IHBoeXNpY3NTdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgd29ya2VyLnNldENvbnN0cmFpbnRNb3Rvck1heEZvcmNlKHsgdXVpZCwgcHJvcHM6IHZhbHVlIH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGJvZHlBOiBib2R5QVJlZiwgYm9keUI6IGJvZHlCUmVmLCBhcGkgfTtcbn1cbiJdfQ==
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1jYW5ub24vc2VydmljZXMvc3JjL2xpYi9jb25zdHJhaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFrQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFvQ3RDLE1BQU0sVUFBVSw0QkFBNEIsQ0FJeEMsS0FBMEMsRUFDMUMsS0FBMEMsRUFDMUMsTUFBcUU7SUFFckUsT0FBTyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUlyQyxLQUEwQyxFQUMxQyxLQUEwQyxFQUMxQyxNQUErRDtJQUUvRCxPQUFPLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBSXBDLEtBQTBDLEVBQzFDLEtBQTBDLEVBQzFDLE1BQTZEO0lBRTdELE9BQU8sZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FJakMsS0FBMEMsRUFDMUMsS0FBMEMsRUFDMUMsTUFBdUQ7SUFFdkQs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QUFFO1lBQ3pCLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUM7UUFFRixRQUFRLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRTtZQUN4QixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDO1FBRUYsUUFBUSxDQUFDLGFBQWEsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQztRQUVGLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzFDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQztLQUNMO0lBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENvbmVUd2lzdENvbnN0cmFpbnRPcHRzLFxuICAgIENvbnN0cmFpbnRPcHRucyxcbiAgICBDb25zdHJhaW50VHlwZXMsXG4gICAgRGlzdGFuY2VDb25zdHJhaW50T3B0cyxcbiAgICBIaW5nZUNvbnN0cmFpbnRPcHRzLFxuICAgIExvY2tDb25zdHJhaW50T3B0cyxcbiAgICBQb2ludFRvUG9pbnRDb25zdHJhaW50T3B0cyxcbn0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBpbmplY3ROZ3REZXN0cm95LCBpbmplY3ROZ3RSZWYsIGlzLCBtYWtlSWQsIE5ndEluamVjdGVkUmVmLCB0YXBFZmZlY3QgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyRW1wdHkgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjQ29uc3RyYWludEFwaSB7XG4gICAgZGlzYWJsZTogKCkgPT4gdm9pZDtcbiAgICBlbmFibGU6ICgpID0+IHZvaWQ7XG4gICAgcmVtb3ZlOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNIaW5nZUNvbnN0cmFpbnRBcGkgZXh0ZW5kcyBOZ3RjQ29uc3RyYWludEFwaSB7XG4gICAgZGlzYWJsZU1vdG9yOiAoKSA9PiB2b2lkO1xuICAgIGVuYWJsZU1vdG9yOiAoKSA9PiB2b2lkO1xuICAgIHNldE1vdG9yTWF4Rm9yY2U6ICh2YWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xuICAgIHNldE1vdG9yU3BlZWQ6ICh2YWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RjQ29uc3RyYWludE9SSGluZ2VBcGk8VCBleHRlbmRzICdIaW5nZScgfCBDb25zdHJhaW50VHlwZXM+ID0gVCBleHRlbmRzIENvbnN0cmFpbnRUeXBlc1xuICAgID8gTmd0Y0NvbnN0cmFpbnRBcGlcbiAgICA6IE5ndGNIaW5nZUNvbnN0cmFpbnRBcGk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0NvbnN0cmFpbnRSZXR1cm48XG4gICAgVCBleHRlbmRzICdIaW5nZScgfCBDb25zdHJhaW50VHlwZXMsXG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRFxuPiB7XG4gICAgYm9keUE6IE5ndEluamVjdGVkUmVmPFRPYmplY3RBPjtcbiAgICBib2R5QjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEI+O1xuICAgIGFwaTogTmd0Y0NvbnN0cmFpbnRPUkhpbmdlQXBpPFQ+O1xufVxuXG5leHBvcnQgdHlwZSBOZ3RjT3B0c0Z1bmN0aW9uPFxuICAgIFRDb25zdHJhaW50VHlwZSBleHRlbmRzICdIaW5nZScgfCBDb25zdHJhaW50VHlwZXMsXG4gICAgVE9wdGlvbnMgZXh0ZW5kcyBIaW5nZUNvbnN0cmFpbnRPcHRzIHwgQ29uc3RyYWludE9wdG5zID0gVENvbnN0cmFpbnRUeXBlIGV4dGVuZHMgJ0hpbmdlJ1xuICAgICAgICA/IEhpbmdlQ29uc3RyYWludE9wdHNcbiAgICAgICAgOiBDb25zdHJhaW50T3B0bnNcbj4gPSAoKSA9PiBUT3B0aW9ucztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFBvaW50VG9Qb2ludENvbnN0cmFpbnQ8XG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRFxuPihcbiAgICBib2R5QTogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEE+IHwgVE9iamVjdEEsXG4gICAgYm9keUI6IE5ndEluamVjdGVkUmVmPFRPYmplY3RCPiB8IFRPYmplY3RCLFxuICAgIG9wdHNGbj86IE5ndGNPcHRzRnVuY3Rpb248J1BvaW50VG9Qb2ludCcsIFBvaW50VG9Qb2ludENvbnN0cmFpbnRPcHRzPlxuKSB7XG4gICAgcmV0dXJuIGluamVjdENvbnN0cmFpbnQoJ1BvaW50VG9Qb2ludCcsIGJvZHlBLCBib2R5Qiwgb3B0c0ZuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENvbmVUd2lzdENvbnN0cmFpbnQ8XG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRFxuPihcbiAgICBib2R5QTogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEE+IHwgVE9iamVjdEEsXG4gICAgYm9keUI6IE5ndEluamVjdGVkUmVmPFRPYmplY3RCPiB8IFRPYmplY3RCLFxuICAgIG9wdHNGbj86IE5ndGNPcHRzRnVuY3Rpb248J0NvbmVUd2lzdCcsIENvbmVUd2lzdENvbnN0cmFpbnRPcHRzPlxuKSB7XG4gICAgcmV0dXJuIGluamVjdENvbnN0cmFpbnQoJ0NvbmVUd2lzdCcsIGJvZHlBLCBib2R5Qiwgb3B0c0ZuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdERpc3RhbmNlQ29uc3RyYWludDxcbiAgICBUT2JqZWN0QSBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0QsXG4gICAgVE9iamVjdEIgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNEXG4+KFxuICAgIGJvZHlBOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0QT4gfCBUT2JqZWN0QSxcbiAgICBib2R5QjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEI+IHwgVE9iamVjdEIsXG4gICAgb3B0c0ZuPzogTmd0Y09wdHNGdW5jdGlvbjwnRGlzdGFuY2UnLCBEaXN0YW5jZUNvbnN0cmFpbnRPcHRzPlxuKSB7XG4gICAgcmV0dXJuIGluamVjdENvbnN0cmFpbnQoJ0Rpc3RhbmNlJywgYm9keUEsIGJvZHlCLCBvcHRzRm4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SGluZ2VDb25zdHJhaW50PFxuICAgIFRPYmplY3RBIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRCxcbiAgICBUT2JqZWN0QiBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0Rcbj4oXG4gICAgYm9keUE6IE5ndEluamVjdGVkUmVmPFRPYmplY3RBPiB8IFRPYmplY3RBLFxuICAgIGJvZHlCOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Qj4gfCBUT2JqZWN0QixcbiAgICBvcHRzRm4/OiBOZ3RjT3B0c0Z1bmN0aW9uPCdIaW5nZScsIEhpbmdlQ29uc3RyYWludE9wdHM+XG4pIHtcbiAgICByZXR1cm4gaW5qZWN0Q29uc3RyYWludCgnSGluZ2UnLCBib2R5QSwgYm9keUIsIG9wdHNGbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RMb2NrQ29uc3RyYWludDxcbiAgICBUT2JqZWN0QSBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0QsXG4gICAgVE9iamVjdEIgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNEXG4+KFxuICAgIGJvZHlBOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0QT4gfCBUT2JqZWN0QSxcbiAgICBib2R5QjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEI+IHwgVE9iamVjdEIsXG4gICAgb3B0c0ZuPzogTmd0Y09wdHNGdW5jdGlvbjwnTG9jaycsIExvY2tDb25zdHJhaW50T3B0cz5cbikge1xuICAgIHJldHVybiBpbmplY3RDb25zdHJhaW50KCdMb2NrJywgYm9keUEsIGJvZHlCLCBvcHRzRm4pO1xufVxuXG5mdW5jdGlvbiBpbmplY3RDb25zdHJhaW50PFxuICAgIFRDb25zdHJhaW50VHlwZSBleHRlbmRzICdIaW5nZScgfCBDb25zdHJhaW50VHlwZXMsXG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRCxcbiAgICBUT3B0aW9ucyBleHRlbmRzIEhpbmdlQ29uc3RyYWludE9wdHMgfCBDb25zdHJhaW50T3B0bnMgPSBUQ29uc3RyYWludFR5cGUgZXh0ZW5kcyAnSGluZ2UnXG4gICAgICAgID8gSGluZ2VDb25zdHJhaW50T3B0c1xuICAgICAgICA6IENvbnN0cmFpbnRPcHRuc1xuPihcbiAgICB0eXBlOiBUQ29uc3RyYWludFR5cGUsXG4gICAgYm9keUE6IE5ndEluamVjdGVkUmVmPFRPYmplY3RBPiB8IFRPYmplY3RBLFxuICAgIGJvZHlCOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Qj4gfCBUT2JqZWN0QixcbiAgICBvcHRzRm46IE5ndGNPcHRzRnVuY3Rpb248VENvbnN0cmFpbnRUeXBlLCBUT3B0aW9ucz4gPSAoKSA9PiAoe30gYXMgVE9wdGlvbnMpXG4pOiBOZ3RjQ29uc3RyYWludFJldHVybjxUQ29uc3RyYWludFR5cGUsIFRPYmplY3RBLCBUT2JqZWN0Qj4ge1xuICAgIGNvbnN0IHsgZGVzdHJveSQgfSA9IGluamVjdE5ndERlc3Ryb3koKTtcbiAgICBjb25zdCB1dWlkID0gbWFrZUlkKCk7XG5cbiAgICBjb25zdCBwaHlzaWNzU3RvcmUgPSBpbmplY3QoTmd0Y1N0b3JlLCB7IHNraXBTZWxmOiB0cnVlIH0pO1xuXG4gICAgY29uc3QgYm9keUFSZWYgPSAhaXMucmVmKGJvZHlBKSA/IGluamVjdE5ndFJlZihib2R5QSkgOiBib2R5QTtcbiAgICBjb25zdCBib2R5QlJlZiA9ICFpcy5yZWYoYm9keUIpID8gaW5qZWN0Tmd0UmVmKGJvZHlCKSA6IGJvZHlCO1xuXG4gICAgY29tYmluZUxhdGVzdChbcGh5c2ljc1N0b3JlLnNlbGVjdCgnd29ya2VyJyksIGJvZHlBUmVmLiQucGlwZShmaWx0ZXJFbXB0eSgpKSwgYm9keUJSZWYuJC5waXBlKGZpbHRlckVtcHR5KCkpXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXBFZmZlY3QoKFt3b3JrZXIsIGJvZHlBLCBib2R5Ql0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRzID0gb3B0c0ZuKCk7XG4gICAgICAgICAgICAgICAgd29ya2VyLmFkZENvbnN0cmFpbnQoeyBwcm9wczogW2JvZHlBLnV1aWQsIGJvZHlCLnV1aWQsIG9wdHNdLCB0eXBlLCB1dWlkIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB3b3JrZXIucmVtb3ZlQ29uc3RyYWludCh7IHV1aWQgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbChkZXN0cm95JClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBjb25zdCBhcGkgPSB7XG4gICAgICAgIGRpc2FibGU6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IHBoeXNpY3NTdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgd29ya2VyLmRpc2FibGVDb25zdHJhaW50KHsgdXVpZCB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBwaHlzaWNzU3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIHdvcmtlci5lbmFibGVDb25zdHJhaW50KHsgdXVpZCB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBwaHlzaWNzU3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIHdvcmtlci5yZW1vdmVDb25zdHJhaW50KHsgdXVpZCB9KTtcbiAgICAgICAgfSxcbiAgICB9IGFzIE5ndGNDb25zdHJhaW50T1JIaW5nZUFwaTxUQ29uc3RyYWludFR5cGU+O1xuXG4gICAgaWYgKHR5cGUgPT09ICdIaW5nZScpIHtcbiAgICAgICAgY29uc3QgaGluZ2VBcGkgPSBhcGkgYXMgTmd0Y0hpbmdlQ29uc3RyYWludEFwaTtcbiAgICAgICAgaGluZ2VBcGkuZGlzYWJsZU1vdG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gcGh5c2ljc1N0b3JlLmdldCgnd29ya2VyJyk7XG4gICAgICAgICAgICB3b3JrZXIuZGlzYWJsZUNvbnN0cmFpbnRNb3Rvcih7IHV1aWQgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaGluZ2VBcGkuZW5hYmxlTW90b3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBwaHlzaWNzU3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIHdvcmtlci5lbmFibGVDb25zdHJhaW50TW90b3IoeyB1dWlkIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGhpbmdlQXBpLnNldE1vdG9yU3BlZWQgPSAodmFsdWU6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gcGh5c2ljc1N0b3JlLmdldCgnd29ya2VyJyk7XG4gICAgICAgICAgICB3b3JrZXIuc2V0Q29uc3RyYWludE1vdG9yU3BlZWQoeyB1dWlkLCBwcm9wczogdmFsdWUgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaGluZ2VBcGkuc2V0TW90b3JNYXhGb3JjZSA9ICh2YWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBwaHlzaWNzU3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIHdvcmtlci5zZXRDb25zdHJhaW50TW90b3JNYXhGb3JjZSh7IHV1aWQsIHByb3BzOiB2YWx1ZSB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBib2R5QTogYm9keUFSZWYsIGJvZHlCOiBib2R5QlJlZiwgYXBpIH07XG59XG4iXX0=
|
|
@@ -3,6 +3,7 @@ import { injectNgtDestroy, injectNgtRef, tapEffect } from 'angular-three';
|
|
|
3
3
|
import { NgtcStore, NgtcUtils } from 'angular-three-cannon';
|
|
4
4
|
import { combineLatest, takeUntil } from 'rxjs';
|
|
5
5
|
import * as THREE from 'three';
|
|
6
|
+
import { filterEmpty } from './utils';
|
|
6
7
|
export function injectRaycastVehicle(fn, instanceRef) {
|
|
7
8
|
const store = inject(NgtcStore, { skipSelf: true });
|
|
8
9
|
const { destroy$ } = injectNgtDestroy();
|
|
@@ -15,7 +16,12 @@ export function injectRaycastVehicle(fn, instanceRef) {
|
|
|
15
16
|
});
|
|
16
17
|
queueMicrotask(() => {
|
|
17
18
|
const { chassisBody, indexForwardAxis = 2, indexRightAxis = 0, indexUpAxis = 1, wheelInfos, wheels } = fn();
|
|
18
|
-
combineLatest([
|
|
19
|
+
combineLatest([
|
|
20
|
+
store.select('worker'),
|
|
21
|
+
ref.$.pipe(filterEmpty()),
|
|
22
|
+
chassisBody.$.pipe(filterEmpty()),
|
|
23
|
+
...wheels.map((wheel) => wheel.$.pipe(filterEmpty())),
|
|
24
|
+
])
|
|
19
25
|
.pipe(tapEffect(([worker, object]) => {
|
|
20
26
|
const uuid = object.uuid;
|
|
21
27
|
const chassisBodyUUID = NgtcUtils.getUUID(chassisBody);
|
|
@@ -67,4 +73,4 @@ export function injectRaycastVehicle(fn, instanceRef) {
|
|
|
67
73
|
};
|
|
68
74
|
return { ref, api };
|
|
69
75
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF5Y2FzdC12ZWhpY2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLWNhbm5vbi9zZXJ2aWNlcy9zcmMvbGliL3JheWNhc3QtdmVoaWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBd0IvQixNQUFNLFVBQVUsb0JBQW9CLENBQ2hDLEVBQWlDLEVBQ2pDLFdBQXFDO0lBRXJDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUV4QyxJQUFJLEdBQUcsR0FBRyxZQUFZLEVBQVcsQ0FBQztJQUVsQyxJQUFJLFdBQVc7UUFBRSxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBRW5DLGNBQWMsQ0FBQyxHQUFHLEVBQUU7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhO1lBQUUsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQWEsQ0FBQztJQUNoRixDQUFDLENBQUMsQ0FBQztJQUVILGNBQWMsQ0FBQyxHQUFHLEVBQUU7UUFDaEIsTUFBTSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsY0FBYyxHQUFHLENBQUMsRUFBRSxXQUFXLEdB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QUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQzlDLE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzdGLENBQUM7U0FDSjtRQUNELE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDVCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztLQUMyQixDQUFDO0lBRWpDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2hlZWxJbmZvT3B0aW9ucyB9IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgaW5qZWN0Tmd0RGVzdHJveSwgaW5qZWN0Tmd0UmVmLCBOZ3RJbmplY3RlZFJlZiwgdGFwRWZmZWN0IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RjU3RvcmUsIE5ndGNVdGlscyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNSYXljYXN0VmVoaWNsZVByb3BzIHtcbiAgICBjaGFzc2lzQm9keTogTmd0SW5qZWN0ZWRSZWY8VEhSRUUuT2JqZWN0M0Q+O1xuICAgIHdoZWVsSW5mb3M6IFdoZWVsSW5mb09wdGlvbnNbXTtcbiAgICB3aGVlbHM6IEFycmF5PE5ndEluamVjdGVkUmVmPFRIUkVFLk9iamVjdDNEPj47XG4gICAgaW5kZXhGb3J3YXJkQXhpcz86IG51bWJlcjtcbiAgICBpbmRleFJpZ2h0QXhpcz86IG51bWJlcjtcbiAgICBpbmRleFVwQXhpcz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjUmF5Y2FzdFZlaGljbGVQdWJsaWNBcGkge1xuICAgIGFwcGx5RW5naW5lRm9yY2U6ICh2YWx1ZTogbnVtYmVyLCB3aGVlbEluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gICAgc2V0QnJha2U6IChicmFrZTogbnVtYmVyLCB3aGVlbEluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gICAgc2V0U3RlZXJpbmdWYWx1ZTogKHZhbHVlOiBudW1iZXIsIHdoZWVsSW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgICBzbGlkaW5nOiB7IHN1YnNjcmliZTogKGNhbGxiYWNrOiAoc2xpZGluZzogYm9vbGVhbikgPT4gdm9pZCkgPT4gdm9pZCB9O1xuICAgIHJlbW92ZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjUmF5Y2FzdFZlaGljbGVSZXR1cm48VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0Q+IHtcbiAgICByZWY6IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+O1xuICAgIGFwaTogTmd0Y1JheWNhc3RWZWhpY2xlUHVibGljQXBpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UmF5Y2FzdFZlaGljbGU8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0Q+KFxuICAgIGZuOiAoKSA9PiBOZ3RjUmF5Y2FzdFZlaGljbGVQcm9wcyxcbiAgICBpbnN0YW5jZVJlZj86IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+XG4pOiBOZ3RjUmF5Y2FzdFZlaGljbGVSZXR1cm48VE9iamVjdD4ge1xuICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KE5ndGNTdG9yZSwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgICBjb25zdCB7IGRlc3Ryb3kkIH0gPSBpbmplY3ROZ3REZXN0cm95KCk7XG5cbiAgICBsZXQgcmVmID0gaW5qZWN0Tmd0UmVmPFRPYmplY3Q+KCk7XG5cbiAgICBpZiAoaW5zdGFuY2VSZWYpIHJlZiA9IGluc3RhbmNlUmVmO1xuXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBpZiAoIXJlZi5uYXRpdmVFbGVtZW50KSByZWYubmF0aXZlRWxlbWVudCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpIGFzIFRPYmplY3Q7XG4gICAgfSk7XG5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2hhc3Npc0JvZHksIGluZGV4Rm9yd2FyZEF4aXMgPSAyLCBpbmRleFJpZ2h0QXhpcyA9IDAsIGluZGV4VXBBeGlzID0gMSwgd2hlZWxJbmZvcywgd2hlZWxzIH0gPSBmbigpO1xuXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3N0b3JlLnNlbGVjdCgnd29ya2VyJyksIHJlZi4kLCBjaGFzc2lzQm9keS4kLCAuLi53aGVlbHMubWFwKCh3aGVlbCkgPT4gd2hlZWwuJCldKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwRWZmZWN0KChbd29ya2VyLCBvYmplY3RdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBvYmplY3QudXVpZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhc3Npc0JvZHlVVUlEID0gTmd0Y1V0aWxzLmdldFVVSUQoY2hhc3Npc0JvZHkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aGVlbFVVSURzID0gd2hlZWxzLm1hcCgod2hlZWwpID0+IE5ndGNVdGlscy5nZXRVVUlEKHdoZWVsKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFzc2lzQm9keVVVSUQgfHwgIXdoZWVsVVVJRHMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJykpIHJldHVybjtcblxuICAgICAgICAgICAgICAgICAgICB3b3JrZXIuYWRkUmF5Y2FzdFZlaGljbGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFzc2lzQm9keVVVSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlZWxVVUlEcyBhcyBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVlbEluZm9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yd2FyZEF4aXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhSaWdodEF4aXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhVcEF4aXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXVpZCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHdvcmtlci5yZW1vdmVSYXljYXN0VmVoaWNsZSh7IHV1aWQgfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgYXBpID0ge1xuICAgICAgICBhcHBseUVuZ2luZUZvcmNlOiAodmFsdWU6IG51bWJlciwgd2hlZWxJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBzdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKHJlZik7XG4gICAgICAgICAgICB1dWlkICYmIHdvcmtlci5hcHBseVJheWNhc3RWZWhpY2xlRW5naW5lRm9yY2UoeyBwcm9wczogW3ZhbHVlLCB3aGVlbEluZGV4XSwgdXVpZCB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0QnJha2U6IChicmFrZTogbnVtYmVyLCB3aGVlbEluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IHN0b3JlLmdldCgnd29ya2VyJyk7XG4gICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQocmVmKTtcbiAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLnNldFJheWNhc3RWZWhpY2xlQnJha2UoeyBwcm9wczogW2JyYWtlLCB3aGVlbEluZGV4XSwgdXVpZCB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0U3RlZXJpbmdWYWx1ZTogKHZhbHVlOiBudW1iZXIsIHdoZWVsSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gc3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChyZWYpO1xuICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuc2V0UmF5Y2FzdFZlaGljbGVTdGVlcmluZ1ZhbHVlKHsgcHJvcHM6IFt2YWx1ZSwgd2hlZWxJbmRleF0sIHV1aWQgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHNsaWRpbmc6IHtcbiAgICAgICAgICAgIGdldCBzdWJzY3JpYmUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIsIHN1YnNjcmlwdGlvbnMgfSA9IHN0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBOZ3RjVXRpbHMuc3Vic2NyaWJlKHJlZiwgd29ya2VyLCBzdWJzY3JpcHRpb25zLCAnc2xpZGluZycsIHVuZGVmaW5lZCwgJ3ZlaGljbGVzJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByZW1vdmU6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IHN0b3JlLmdldCgnd29ya2VyJyk7XG4gICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQocmVmKTtcbiAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLnJlbW92ZVJheWNhc3RWZWhpY2xlKHsgdXVpZCB9KTtcbiAgICAgICAgfSxcbiAgICB9IGFzIE5ndGNSYXljYXN0VmVoaWNsZVB1YmxpY0FwaTtcblxuICAgIHJldHVybiB7IHJlZiwgYXBpIH07XG59XG4iXX0=
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF5Y2FzdC12ZWhpY2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLWNhbm5vbi9zZXJ2aWNlcy9zcmMvbGliL3JheWNhc3QtdmVoaWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUF3QnRDLE1BQU0sVUFBVSxvQkFBb0IsQ0FDaEMsRUFBaUMsRUFDakMsV0FBcUM7SUFFckMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBRXhDLElBQUksR0FBRyxHQUFHLFlBQVksRUFBVyxDQUFDO0lBRWxDLElBQUksV0FBVztRQUFFLEdBQUcsR0FBRyxXQUFXLENBQUM7SUFFbkMsY0FBYyxDQUFDLEdBQUcsRUFBRTtRQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWE7WUFBRSxHQUFHLENBQUMsYUFBYSxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBYSxDQUFDO0lBQ2hGLENBQUMsQ0FBQyxDQUFDO0lBRUgsY0FBYyxDQUFDLEdBQUcsRUFBRTtRQUNoQixNQUFNLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixH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QUFDLDhCQUE4QixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE9BQU8sRUFBRTtZQUNMLElBQUksU0FBUztnQkFDVCxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDN0YsQ0FBQztTQUNKO1FBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNULE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQyxJQUFJLElBQUksTUFBTSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRCxDQUFDO0tBQzJCLENBQUM7SUFFakMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaGVlbEluZm9PcHRpb25zIH0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBpbmplY3ROZ3REZXN0cm95LCBpbmplY3ROZ3RSZWYsIE5ndEluamVjdGVkUmVmLCB0YXBFZmZlY3QgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNTdG9yZSwgTmd0Y1V0aWxzIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24nO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBmaWx0ZXJFbXB0eSB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNSYXljYXN0VmVoaWNsZVByb3BzIHtcbiAgICBjaGFzc2lzQm9keTogTmd0SW5qZWN0ZWRSZWY8VEhSRUUuT2JqZWN0M0Q+O1xuICAgIHdoZWVsSW5mb3M6IFdoZWVsSW5mb09wdGlvbnNbXTtcbiAgICB3aGVlbHM6IEFycmF5PE5ndEluamVjdGVkUmVmPFRIUkVFLk9iamVjdDNEPj47XG4gICAgaW5kZXhGb3J3YXJkQXhpcz86IG51bWJlcjtcbiAgICBpbmRleFJpZ2h0QXhpcz86IG51bWJlcjtcbiAgICBpbmRleFVwQXhpcz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjUmF5Y2FzdFZlaGljbGVQdWJsaWNBcGkge1xuICAgIGFwcGx5RW5naW5lRm9yY2U6ICh2YWx1ZTogbnVtYmVyLCB3aGVlbEluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gICAgc2V0QnJha2U6IChicmFrZTogbnVtYmVyLCB3aGVlbEluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gICAgc2V0U3RlZXJpbmdWYWx1ZTogKHZhbHVlOiBudW1iZXIsIHdoZWVsSW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgICBzbGlkaW5nOiB7IHN1YnNjcmliZTogKGNhbGxiYWNrOiAoc2xpZGluZzogYm9vbGVhbikgPT4gdm9pZCkgPT4gdm9pZCB9O1xuICAgIHJlbW92ZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjUmF5Y2FzdFZlaGljbGVSZXR1cm48VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0Q+IHtcbiAgICByZWY6IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+O1xuICAgIGFwaTogTmd0Y1JheWNhc3RWZWhpY2xlUHVibGljQXBpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UmF5Y2FzdFZlaGljbGU8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0Q+KFxuICAgIGZuOiAoKSA9PiBOZ3RjUmF5Y2FzdFZlaGljbGVQcm9wcyxcbiAgICBpbnN0YW5jZVJlZj86IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+XG4pOiBOZ3RjUmF5Y2FzdFZlaGljbGVSZXR1cm48VE9iamVjdD4ge1xuICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KE5ndGNTdG9yZSwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgICBjb25zdCB7IGRlc3Ryb3kkIH0gPSBpbmplY3ROZ3REZXN0cm95KCk7XG5cbiAgICBsZXQgcmVmID0gaW5qZWN0Tmd0UmVmPFRPYmplY3Q+KCk7XG5cbiAgICBpZiAoaW5zdGFuY2VSZWYpIHJlZiA9IGluc3RhbmNlUmVmO1xuXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBpZiAoIXJlZi5uYXRpdmVFbGVtZW50KSByZWYubmF0aXZlRWxlbWVudCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpIGFzIFRPYmplY3Q7XG4gICAgfSk7XG5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2hhc3Npc0JvZHksIGluZGV4Rm9yd2FyZEF4aXMgPSAyLCBpbmRleFJpZ2h0QXhpcyA9IDAsIGluZGV4VXBBeGlzID0gMSwgd2hlZWxJbmZvcywgd2hlZWxzIH0gPSBmbigpO1xuXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgc3RvcmUuc2VsZWN0KCd3b3JrZXInKSxcbiAgICAgICAgICAgIHJlZi4kLnBpcGUoZmlsdGVyRW1wdHkoKSksXG4gICAgICAgICAgICBjaGFzc2lzQm9keS4kLnBpcGUoZmlsdGVyRW1wdHkoKSksXG4gICAgICAgICAgICAuLi53aGVlbHMubWFwKCh3aGVlbCkgPT4gd2hlZWwuJC5waXBlKGZpbHRlckVtcHR5KCkpKSxcbiAgICAgICAgXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcEVmZmVjdCgoW3dvcmtlciwgb2JqZWN0XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gb2JqZWN0LnV1aWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXNzaXNCb2R5VVVJRCA9IE5ndGNVdGlscy5nZXRVVUlEKGNoYXNzaXNCb2R5KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2hlZWxVVUlEcyA9IHdoZWVscy5tYXAoKHdoZWVsKSA9PiBOZ3RjVXRpbHMuZ2V0VVVJRCh3aGVlbCkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hhc3Npc0JvZHlVVUlEIHx8ICF3aGVlbFVVSURzLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycpKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgd29ya2VyLmFkZFJheWNhc3RWZWhpY2xlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhc3Npc0JvZHlVVUlELFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZWVsVVVJRHMgYXMgc3RyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlZWxJbmZvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEZvcndhcmRBeGlzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4UmlnaHRBeGlzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4VXBBeGlzLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB3b3JrZXIucmVtb3ZlUmF5Y2FzdFZlaGljbGUoeyB1dWlkIH0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChkZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGFwaSA9IHtcbiAgICAgICAgYXBwbHlFbmdpbmVGb3JjZTogKHZhbHVlOiBudW1iZXIsIHdoZWVsSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gc3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChyZWYpO1xuICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuYXBwbHlSYXljYXN0VmVoaWNsZUVuZ2luZUZvcmNlKHsgcHJvcHM6IFt2YWx1ZSwgd2hlZWxJbmRleF0sIHV1aWQgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldEJyYWtlOiAoYnJha2U6IG51bWJlciwgd2hlZWxJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBzdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKHJlZik7XG4gICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zZXRSYXljYXN0VmVoaWNsZUJyYWtlKHsgcHJvcHM6IFticmFrZSwgd2hlZWxJbmRleF0sIHV1aWQgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldFN0ZWVyaW5nVmFsdWU6ICh2YWx1ZTogbnVtYmVyLCB3aGVlbEluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IHN0b3JlLmdldCgnd29ya2VyJyk7XG4gICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQocmVmKTtcbiAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLnNldFJheWNhc3RWZWhpY2xlU3RlZXJpbmdWYWx1ZSh7IHByb3BzOiBbdmFsdWUsIHdoZWVsSW5kZXhdLCB1dWlkIH0pO1xuICAgICAgICB9LFxuICAgICAgICBzbGlkaW5nOiB7XG4gICAgICAgICAgICBnZXQgc3Vic2NyaWJlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyLCBzdWJzY3JpcHRpb25zIH0gPSBzdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTmd0Y1V0aWxzLnN1YnNjcmliZShyZWYsIHdvcmtlciwgc3Vic2NyaXB0aW9ucywgJ3NsaWRpbmcnLCB1bmRlZmluZWQsICd2ZWhpY2xlcycpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBzdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKHJlZik7XG4gICAgICAgICAgICB1dWlkICYmIHdvcmtlci5yZW1vdmVSYXljYXN0VmVoaWNsZSh7IHV1aWQgfSk7XG4gICAgICAgIH0sXG4gICAgfSBhcyBOZ3RjUmF5Y2FzdFZlaGljbGVQdWJsaWNBcGk7XG5cbiAgICByZXR1cm4geyByZWYsIGFwaSB9O1xufVxuIl19
|
|
@@ -2,11 +2,12 @@ import { inject } from '@angular/core';
|
|
|
2
2
|
import { injectNgtDestroy, makeId, tapEffect } from 'angular-three';
|
|
3
3
|
import { NgtcStore } from 'angular-three-cannon';
|
|
4
4
|
import { combineLatest, takeUntil } from 'rxjs';
|
|
5
|
+
import { filterEmpty } from './utils';
|
|
5
6
|
export function injectSpring(bodyA, bodyB, optsFn) {
|
|
6
7
|
const store = inject(NgtcStore, { skipSelf: true });
|
|
7
8
|
const uuid = makeId();
|
|
8
9
|
const { destroy$ } = injectNgtDestroy();
|
|
9
|
-
combineLatest([store.select('worker'), bodyA
|
|
10
|
+
combineLatest([store.select('worker'), bodyA.$.pipe(filterEmpty()), bodyB.$.pipe(filterEmpty())])
|
|
10
11
|
.pipe(tapEffect(([worker, bodyA, bodyB]) => {
|
|
11
12
|
const opts = optsFn();
|
|
12
13
|
worker.addSpring({ props: [bodyA.uuid, bodyB.uuid, opts], uuid });
|
|
@@ -33,4 +34,4 @@ export function injectSpring(bodyA, bodyB, optsFn) {
|
|
|
33
34
|
};
|
|
34
35
|
return { bodyA, bodyB, api };
|
|
35
36
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLWNhbm5vbi9zZXJ2aWNlcy9zcmMvbGliL3NwcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQWtCdEMsTUFBTSxVQUFVLFlBQVksQ0FJeEIsS0FBK0IsRUFDL0IsS0FBK0IsRUFDL0IsTUFBeUI7SUFFekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ3RCLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBRXhDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUYsSUFBSSxDQUNELFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRSxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FDdEI7U0FDQSxTQUFTLEVBQUUsQ0FBQztJQUVqQixNQUFNLEdBQUcsR0FBRztRQUNSLFVBQVUsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxhQUFhLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUM3QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsWUFBWSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDNUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDVCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7S0FDYSxDQUFDO0lBRW5CLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwcmluZ09wdG5zIH0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBpbmplY3ROZ3REZXN0cm95LCBtYWtlSWQsIE5ndEluamVjdGVkUmVmLCB0YXBFZmZlY3QgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyRW1wdHkgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjU3ByaW5nQXBpIHtcbiAgICBzZXREYW1waW5nOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcbiAgICBzZXRSZXN0TGVuZ3RoOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcbiAgICBzZXRTdGlmZm5lc3M6ICh2YWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xuICAgIHJlbW92ZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjU3ByaW5nUmV0dXJuPFxuICAgIFRPYmplY3RBIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRCxcbiAgICBUT2JqZWN0QiBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0Rcbj4ge1xuICAgIGJvZHlBOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0QT47XG4gICAgYm9keUI6IE5ndEluamVjdGVkUmVmPFRPYmplY3RCPjtcbiAgICBhcGk6IE5ndGNTcHJpbmdBcGk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTcHJpbmc8XG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRFxuPihcbiAgICBib2R5QTogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEE+LFxuICAgIGJvZHlCOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Qj4sXG4gICAgb3B0c0ZuOiAoKSA9PiBTcHJpbmdPcHRuc1xuKTogTmd0Y1NwcmluZ1JldHVybjxUT2JqZWN0QSwgVE9iamVjdEI+IHtcbiAgICBjb25zdCBzdG9yZSA9IGluamVjdChOZ3RjU3RvcmUsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgY29uc3QgdXVpZCA9IG1ha2VJZCgpO1xuICAgIGNvbnN0IHsgZGVzdHJveSQgfSA9IGluamVjdE5ndERlc3Ryb3koKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3N0b3JlLnNlbGVjdCgnd29ya2VyJyksIGJvZHlBLiQucGlwZShmaWx0ZXJFbXB0eSgpKSwgYm9keUIuJC5waXBlKGZpbHRlckVtcHR5KCkpXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXBFZmZlY3QoKFt3b3JrZXIsIGJvZHlBLCBib2R5Ql0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRzID0gb3B0c0ZuKCk7XG4gICAgICAgICAgICAgICAgd29ya2VyLmFkZFNwcmluZyh7IHByb3BzOiBbYm9keUEudXVpZCwgYm9keUIudXVpZCwgb3B0c10sIHV1aWQgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHdvcmtlci5yZW1vdmVTcHJpbmcoeyB1dWlkIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlVW50aWwoZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgY29uc3QgYXBpID0ge1xuICAgICAgICBzZXREYW1waW5nOiAodmFsdWU6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gc3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIHdvcmtlci5zZXRTcHJpbmdEYW1waW5nKHsgdXVpZCwgcHJvcHM6IHZhbHVlIH0pO1xuICAgICAgICB9LFxuICAgICAgICBzZXRSZXN0TGVuZ3RoOiAodmFsdWU6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gc3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIHdvcmtlci5zZXRTcHJpbmdSZXN0TGVuZ3RoKHsgdXVpZCwgcHJvcHM6IHZhbHVlIH0pO1xuICAgICAgICB9LFxuICAgICAgICBzZXRTdGlmZm5lc3M6ICh2YWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBzdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgd29ya2VyLnNldFNwcmluZ1N0aWZmbmVzcyh7IHV1aWQsIHByb3BzOiB2YWx1ZSB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBzdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgd29ya2VyLnJlbW92ZVNwcmluZyh7IHV1aWQgfSk7XG4gICAgICAgIH0sXG4gICAgfSBhcyBOZ3RjU3ByaW5nQXBpO1xuXG4gICAgcmV0dXJuIHsgYm9keUEsIGJvZHlCLCBhcGkgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { filter } from 'rxjs';
|
|
2
|
+
export function filterEmpty() {
|
|
3
|
+
return filter((obj) => obj != null);
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtY2Fubm9uL3NlcnZpY2VzL3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFFeEQsTUFBTSxVQUFVLFdBQVc7SUFDdkIsT0FBTyxNQUFNLENBQUksQ0FBQyxHQUFHLEVBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsdGVyLCBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckVtcHR5PFQ+KCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gICAgcmV0dXJuIGZpbHRlcjxUPigob2JqKTogb2JqIGlzIFQgPT4gb2JqICE9IG51bGwpO1xufVxuIl19
|
|
@@ -52,8 +52,8 @@ class NgtcDebug {
|
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
NgtcDebug.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
56
|
-
NgtcDebug.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.
|
|
55
|
+
NgtcDebug.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
NgtcDebug.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtcDebug, isStandalone: true, selector: "ngtc-debug", inputs: { color: "color", scale: "scale", impl: "impl", disabled: "disabled" }, providers: [
|
|
57
57
|
{
|
|
58
58
|
provide: NGTC_DEBUG_API,
|
|
59
59
|
useFactory: (debug) => ({
|
|
@@ -75,7 +75,7 @@ NgtcDebug.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
|
|
|
75
75
|
<ngt-primitive *args="[scene]" />
|
|
76
76
|
<ng-content />
|
|
77
77
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtcDebug, decorators: [{
|
|
79
79
|
type: Component,
|
|
80
80
|
args: [{
|
|
81
81
|
selector: 'ngtc-debug',
|
|
@@ -3,9 +3,13 @@ import { inject } from '@angular/core';
|
|
|
3
3
|
import { injectNgtDestroy, injectNgtRef, tapEffect, makeId, is } from 'angular-three';
|
|
4
4
|
import { NgtcUtils, NgtcStore } from 'angular-three-cannon';
|
|
5
5
|
import { NGTC_DEBUG_API } from 'angular-three-cannon/debug';
|
|
6
|
-
import { combineLatest, takeUntil } from 'rxjs';
|
|
6
|
+
import { filter, combineLatest, takeUntil } from 'rxjs';
|
|
7
7
|
import * as THREE from 'three';
|
|
8
8
|
|
|
9
|
+
function filterEmpty() {
|
|
10
|
+
return filter((obj) => obj != null);
|
|
11
|
+
}
|
|
12
|
+
|
|
9
13
|
function injectPlane(fn, opts) {
|
|
10
14
|
return injectBody('Plane', fn, () => [], opts);
|
|
11
15
|
}
|
|
@@ -67,7 +71,7 @@ function injectBody(type, getPropsFn, argsFn, { ref, waitFor } = {}) {
|
|
|
67
71
|
}
|
|
68
72
|
});
|
|
69
73
|
// start the pipeline as soon as bodyRef has a truthy value
|
|
70
|
-
subscription = combineLatest([physicsStore.select('worker'), bodyRef
|
|
74
|
+
subscription = combineLatest([physicsStore.select('worker'), bodyRef.$.pipe(filterEmpty())])
|
|
71
75
|
.pipe(tapEffect(([worker, object]) => {
|
|
72
76
|
const currentWorker = worker;
|
|
73
77
|
const { events, refs } = physicsStore.get();
|
|
@@ -289,7 +293,7 @@ function injectConstraint(type, bodyA, bodyB, optsFn = () => ({})) {
|
|
|
289
293
|
const physicsStore = inject(NgtcStore, { skipSelf: true });
|
|
290
294
|
const bodyARef = !is.ref(bodyA) ? injectNgtRef(bodyA) : bodyA;
|
|
291
295
|
const bodyBRef = !is.ref(bodyB) ? injectNgtRef(bodyB) : bodyB;
|
|
292
|
-
combineLatest([physicsStore.select('worker'), bodyARef
|
|
296
|
+
combineLatest([physicsStore.select('worker'), bodyARef.$.pipe(filterEmpty()), bodyBRef.$.pipe(filterEmpty())])
|
|
293
297
|
.pipe(tapEffect(([worker, bodyA, bodyB]) => {
|
|
294
298
|
const opts = optsFn();
|
|
295
299
|
worker.addConstraint({ props: [bodyA.uuid, bodyB.uuid, opts], type, uuid });
|
|
@@ -386,7 +390,12 @@ function injectRaycastVehicle(fn, instanceRef) {
|
|
|
386
390
|
});
|
|
387
391
|
queueMicrotask(() => {
|
|
388
392
|
const { chassisBody, indexForwardAxis = 2, indexRightAxis = 0, indexUpAxis = 1, wheelInfos, wheels } = fn();
|
|
389
|
-
combineLatest([
|
|
393
|
+
combineLatest([
|
|
394
|
+
store.select('worker'),
|
|
395
|
+
ref.$.pipe(filterEmpty()),
|
|
396
|
+
chassisBody.$.pipe(filterEmpty()),
|
|
397
|
+
...wheels.map((wheel) => wheel.$.pipe(filterEmpty())),
|
|
398
|
+
])
|
|
390
399
|
.pipe(tapEffect(([worker, object]) => {
|
|
391
400
|
const uuid = object.uuid;
|
|
392
401
|
const chassisBodyUUID = NgtcUtils.getUUID(chassisBody);
|
|
@@ -443,7 +452,7 @@ function injectSpring(bodyA, bodyB, optsFn) {
|
|
|
443
452
|
const store = inject(NgtcStore, { skipSelf: true });
|
|
444
453
|
const uuid = makeId();
|
|
445
454
|
const { destroy$ } = injectNgtDestroy();
|
|
446
|
-
combineLatest([store.select('worker'), bodyA
|
|
455
|
+
combineLatest([store.select('worker'), bodyA.$.pipe(filterEmpty()), bodyB.$.pipe(filterEmpty())])
|
|
447
456
|
.pipe(tapEffect(([worker, bodyA, bodyB]) => {
|
|
448
457
|
const opts = optsFn();
|
|
449
458
|
worker.addSpring({ props: [bodyA.uuid, bodyB.uuid, opts], uuid });
|