angular-three-cannon 1.2.0 → 1.2.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 +4 -4
- package/esm2020/lib/utils.mjs +1 -1
- package/esm2020/services/lib/body.mjs +32 -48
- package/esm2020/services/lib/constraint.mjs +6 -6
- package/esm2020/services/lib/contact-material.mjs +8 -7
- package/esm2020/services/lib/ray.mjs +8 -7
- package/esm2020/services/lib/raycast-vehicle.mjs +29 -29
- package/esm2020/services/lib/spring.mjs +6 -6
- package/fesm2015/angular-three-cannon-debug.mjs +3 -3
- package/fesm2015/angular-three-cannon-services.mjs +74 -114
- package/fesm2015/angular-three-cannon-services.mjs.map +1 -1
- package/fesm2015/angular-three-cannon.mjs +6 -6
- package/fesm2015/angular-three-cannon.mjs.map +1 -1
- package/fesm2020/angular-three-cannon-debug.mjs +3 -3
- package/fesm2020/angular-three-cannon-services.mjs +76 -116
- package/fesm2020/angular-three-cannon-services.mjs.map +1 -1
- package/fesm2020/angular-three-cannon.mjs +6 -6
- package/fesm2020/angular-three-cannon.mjs.map +1 -1
- package/lib/store.d.ts +1 -1
- package/lib/utils.d.ts +2 -2
- package/package.json +1 -1
- package/plugin/package.json +2 -2
- package/services/lib/body.d.ts +1 -1
- package/services/lib/constraint.d.ts +1 -2
- package/services/lib/contact-material.d.ts +1 -2
- package/services/lib/ray.d.ts +3 -4
- package/services/lib/raycast-vehicle.d.ts +1 -0
- package/services/lib/spring.d.ts +1 -2
- package/esm2020/services/lib/utils.mjs +0 -33
- package/services/lib/utils.d.ts +0 -8
|
@@ -51,8 +51,8 @@ export class NgtcDebug {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
NgtcDebug.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
55
|
-
NgtcDebug.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.
|
|
54
|
+
NgtcDebug.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
NgtcDebug.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", 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.1.
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", 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.1.
|
|
219
|
-
NgtcPhysics.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.
|
|
220
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
218
|
+
NgtcPhysics.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtcPhysics, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
219
|
+
NgtcPhysics.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", 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.1.2", ngImport: i0, type: NgtcPhysics, decorators: [{
|
|
221
221
|
type: Component,
|
|
222
222
|
args: [{
|
|
223
223
|
selector: 'ngtc-physics',
|
package/esm2020/lib/store.mjs
CHANGED
|
@@ -42,9 +42,9 @@ export class NgtcStore extends NgtRxStore {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
NgtcStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
46
|
-
NgtcStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
45
|
+
NgtcStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtcStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
NgtcStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtcStore });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtcStore, decorators: [{
|
|
48
48
|
type: Injectable
|
|
49
49
|
}] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtY2Fubm9uL3NyYy9saWIvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQVd0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUF3Qm5ELE1BQU0sT0FBTyxTQUFVLFNBQVEsVUFBcUI7SUFEcEQ7O1FBRXFCLGlCQUFZLEdBQStCLEVBQUUsQ0FBQztLQXdDbEU7SUF2Q1ksVUFBVTtRQUNmLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ0wsTUFBTSxFQUFFLEVBQUU7WUFDVixNQUFNLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRSxFQUFFO1lBQ1IsY0FBYyxFQUFFLEVBQUU7WUFDbEIsYUFBYSxFQUFFLEVBQUU7WUFDakIsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtTQUNuQyxDQUFDLENBQUM7UUFFSCxjQUFjLENBQUMsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEdBQUcsRUFBRTtnQkFDaEQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ3ZDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDZDtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLEVBQWM7UUFDaEIsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0MsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVU7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLEdBQUc7UUFDUCxLQUFLLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzdDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakMsRUFBRSxFQUFFLENBQUM7WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ25CO0lBQ0wsQ0FBQzs7c0dBeENRLFNBQVM7MEdBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQURyQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENhbm5vbldvcmtlckFQSSxcbiAgICBDYW5ub25Xb3JrZXJQcm9wcyxcbiAgICBDb2xsaWRlQmVnaW5FdmVudCxcbiAgICBDb2xsaWRlRW5kRXZlbnQsXG4gICAgQ29sbGlkZUV2ZW50LFxuICAgIFJheWhpdEV2ZW50LFxuICAgIFJlZnMsXG4gICAgU3Vic2NyaXB0aW9ucyxcbn0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBtYWtlSWQsIE5ndFJ4U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcblxuZXhwb3J0IHR5cGUgTmd0Y0V2ZW50ID0gQ29sbGlkZUJlZ2luRXZlbnQgfCBDb2xsaWRlRW5kRXZlbnQgfCBDb2xsaWRlRXZlbnQgfCBSYXloaXRFdmVudDtcbmV4cG9ydCB0eXBlIE5ndGNDYWxsYmFja0J5VHlwZTxUIGV4dGVuZHMgeyB0eXBlOiBzdHJpbmcgfT4gPSB7XG4gICAgW0sgaW4gVFsndHlwZSddXT86IFQgZXh0ZW5kcyB7IHR5cGU6IEsgfSA/IChlOiBUKSA9PiB2b2lkIDogbmV2ZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RjRXZlbnRzID0ge1xuICAgIFt1dWlkOiBzdHJpbmddOiBQYXJ0aWFsPE5ndGNDYWxsYmFja0J5VHlwZTxOZ3RjRXZlbnQ+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndGNTY2FsZU92ZXJyaWRlcyA9IHsgW3V1aWQ6IHN0cmluZ106IFRIUkVFLlZlY3RvcjMgfTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjU3RhdGUge1xuICAgIGJvZGllczogeyBbdXVpZDogc3RyaW5nXTogbnVtYmVyIH07XG4gICAgZXZlbnRzOiBOZ3RjRXZlbnRzO1xuICAgIHJlZnM6IFJlZnM7XG4gICAgc2NhbGVPdmVycmlkZXM6IE5ndGNTY2FsZU92ZXJyaWRlcztcbiAgICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25zO1xuICAgIHdvcmtlcjogQ2Fubm9uV29ya2VyQVBJO1xuICAgIGluaXQ6IChpbnB1dHM6IENhbm5vbldvcmtlclByb3BzKSA9PiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd0Y1N0b3JlIGV4dGVuZHMgTmd0UnhTdG9yZTxOZ3RjU3RhdGU+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnNRdWV1ZTogUmVjb3JkPHN0cmluZywgKCkgPT4gdm9pZD4gPSB7fTtcbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCkge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIGJvZGllczoge30sXG4gICAgICAgICAgICBldmVudHM6IHt9LFxuICAgICAgICAgICAgcmVmczoge30sXG4gICAgICAgICAgICBzY2FsZU92ZXJyaWRlczoge30sXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25zOiB7fSxcbiAgICAgICAgICAgIG9wdGlvbnNRdWV1ZU5vdGlmaWVyOiBEYXRlLm5vdygpLFxuICAgICAgICB9KTtcblxuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJ1bigpO1xuICAgICAgICAgICAgdGhpcy5ob2xkKHRoaXMuc2VsZWN0KCdvcHRpb25zUXVldWVOb3RpZmllcicpLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMub3B0aW9uc1F1ZXVlKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcXVldWUoY2I6ICgpID0+IHZvaWQpIHtcbiAgICAgICAgY29uc3QgaWQgPSBtYWtlSWQoKTtcbiAgICAgICAgdGhpcy5vcHRpb25zUXVldWVbaWRdID0gY2I7XG4gICAgICAgIHRoaXMuc2V0KHsgb3B0aW9uc1F1ZXVlTm90aWZpZXI6IERhdGUubm93KCkgfSk7XG4gICAgICAgIHJldHVybiBpZDtcbiAgICB9XG5cbiAgICByZW1vdmUoaWQ6IHN0cmluZykge1xuICAgICAgICBkZWxldGUgdGhpcy5vcHRpb25zUXVldWVbaWRdO1xuICAgIH1cblxuICAgIHByaXZhdGUgcnVuKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHRoaXMub3B0aW9uc1F1ZXVlKSkge1xuICAgICAgICAgICAgY29uc3QgY2IgPSB0aGlzLm9wdGlvbnNRdWV1ZVtpZF07XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUoaWQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
package/esm2020/lib/utils.mjs
CHANGED
|
@@ -44,4 +44,4 @@ export class NgtcUtils {
|
|
|
44
44
|
NgtcUtils.incrementingId = 0;
|
|
45
45
|
NgtcUtils.e = new THREE.Euler();
|
|
46
46
|
NgtcUtils.q = new THREE.Quaternion();
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtY2Fubm9uL3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHL0IsTUFBTSxPQUFPLFNBQVM7SUFLbEIsTUFBTSxDQUFDLE9BQU8sQ0FDVixHQUE0QixFQUM1QixLQUFjO1FBRWQsTUFBTSxNQUFNLEdBQUcsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3RELElBQUksT0FBTyxHQUFHLEtBQUssVUFBVTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzNDLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FDWixHQUE0QixFQUM1QixNQUF1QixFQUN2QixhQUE0QixFQUM1QixJQUFPLEVBQ1AsS0FBYyxFQUNkLFNBQTZCLFFBQVE7UUFFckMsT0FBTyxDQUFDLFFBQXVDLEVBQUUsRUFBRTtZQUMvQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDakMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0QyxJQUFJLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoRSxPQUFPLEdBQUcsRUFBRTtnQkFDUixPQUFPLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQXNCLEVBQUUsRUFBRSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBYTtRQUMzRyxNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMzQixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDakMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUNqQixNQUFrQixFQUNsQixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFzQixFQUMvRCxJQUFZO1FBRVosTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ1gsT0FBTyxFQUFFLFNBQVM7WUFDbEIsWUFBWSxFQUFFLGNBQWM7WUFDNUIsVUFBVSxFQUFFLFlBQVk7U0FDM0IsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFtQixHQUFNO1FBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQWtCLENBQUM7SUFDekUsQ0FBQztJQUVELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxRQUE4QjtRQUN0RCxPQUFPLENBQUMsQ0FBTyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBYSxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBMEI7UUFDekMsT0FBTyxDQUFDLFlBQVksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7QUE5RE0sd0JBQWMsR0FBRyxDQUFDLENBQUM7QUFDbkIsV0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3RCLFdBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgICBCb2R5UHJvcHMsXG4gICAgQ2Fubm9uV29ya2VyQVBJLFxuICAgIFByb3BWYWx1ZSxcbiAgICBRdWFkLFxuICAgIFN1YnNjcmlwdGlvbk5hbWUsXG4gICAgU3Vic2NyaXB0aW9ucyxcbiAgICBTdWJzY3JpcHRpb25UYXJnZXQsXG4gICAgVHJpcGxldCxcbn0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBOZ3RJbmplY3RlZFJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RjRXZlbnRzIH0gZnJvbSAnLi9zdG9yZSc7XG5cbmV4cG9ydCBjbGFzcyBOZ3RjVXRpbHMge1xuICAgIHN0YXRpYyBpbmNyZW1lbnRpbmdJZCA9IDA7XG4gICAgc3RhdGljIGUgPSBuZXcgVEhSRUUuRXVsZXIoKTtcbiAgICBzdGF0aWMgcSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5cbiAgICBzdGF0aWMgZ2V0VVVJRDxUT2JqZWN0IGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRD4oXG4gICAgICAgIHJlZjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdD4sXG4gICAgICAgIGluZGV4PzogbnVtYmVyXG4gICAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHN1ZmZpeCA9IGluZGV4ID09PSB1bmRlZmluZWQgPyAnJyA6IGAvJHtpbmRleH1gO1xuICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiByZWYgJiYgcmVmLm5hdGl2ZUVsZW1lbnQgJiYgYCR7cmVmLm5hdGl2ZUVsZW1lbnQudXVpZH0ke3N1ZmZpeH1gO1xuICAgIH1cblxuICAgIHN0YXRpYyBzdWJzY3JpYmU8VCBleHRlbmRzIFN1YnNjcmlwdGlvbk5hbWUsIFRPYmplY3QgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNEPihcbiAgICAgICAgcmVmOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0PixcbiAgICAgICAgd29ya2VyOiBDYW5ub25Xb3JrZXJBUEksXG4gICAgICAgIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbnMsXG4gICAgICAgIHR5cGU6IFQsXG4gICAgICAgIGluZGV4PzogbnVtYmVyLFxuICAgICAgICB0YXJnZXQ6IFN1YnNjcmlwdGlvblRhcmdldCA9ICdib2RpZXMnXG4gICAgKSB7XG4gICAgICAgIHJldHVybiAoY2FsbGJhY2s6ICh2YWx1ZTogUHJvcFZhbHVlPFQ+KSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IHRoaXMuaW5jcmVtZW50aW5nSWQrKztcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnNbaWRdID0geyBbdHlwZV06IGNhbGxiYWNrIH07XG4gICAgICAgICAgICBjb25zdCB1dWlkID0gdGhpcy5nZXRVVUlEKHJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuc3Vic2NyaWJlKHsgcHJvcHM6IHsgaWQsIHRhcmdldCwgdHlwZSB9LCB1dWlkIH0pO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3Vic2NyaXB0aW9uc1tpZF07XG4gICAgICAgICAgICAgICAgd29ya2VyLnVuc3Vic2NyaWJlKHsgcHJvcHM6IGlkIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcHJlcGFyZShvYmplY3Q6IFRIUkVFLk9iamVjdDNELCB7IHBvc2l0aW9uID0gWzAsIDAsIDBdLCByb3RhdGlvbiA9IFswLCAwLCAwXSwgdXNlckRhdGEgPSB7fSB9OiBCb2R5UHJvcHMpIHtcbiAgICAgICAgb2JqZWN0LnVzZXJEYXRhID0gdXNlckRhdGE7XG4gICAgICAgIG9iamVjdC5wb3NpdGlvbi5zZXQoLi4ucG9zaXRpb24pO1xuICAgICAgICBvYmplY3Qucm90YXRpb24uc2V0KC4uLnJvdGF0aW9uKTtcbiAgICAgICAgb2JqZWN0LnVwZGF0ZU1hdHJpeCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBzZXR1cENvbGxpc2lvbihcbiAgICAgICAgZXZlbnRzOiBOZ3RjRXZlbnRzLFxuICAgICAgICB7IG9uQ29sbGlkZSwgb25Db2xsaWRlQmVnaW4sIG9uQ29sbGlkZUVuZCB9OiBQYXJ0aWFsPEJvZHlQcm9wcz4sXG4gICAgICAgIHV1aWQ6IHN0cmluZ1xuICAgICkge1xuICAgICAgICBldmVudHNbdXVpZF0gPSB7XG4gICAgICAgICAgICBjb2xsaWRlOiBvbkNvbGxpZGUsXG4gICAgICAgICAgICBjb2xsaWRlQmVnaW46IG9uQ29sbGlkZUJlZ2luLFxuICAgICAgICAgICAgY29sbGlkZUVuZDogb25Db2xsaWRlRW5kLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHN0YXRpYyBjYXBpdGFsaXplPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cjogVCk6IENhcGl0YWxpemU8VD4ge1xuICAgICAgICByZXR1cm4gKHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKSkgYXMgQ2FwaXRhbGl6ZTxUPjtcbiAgICB9XG5cbiAgICBzdGF0aWMgcXVhdGVybmlvblRvUm90YXRpb24oY2FsbGJhY2s6ICh2OiBUcmlwbGV0KSA9PiB2b2lkKSB7XG4gICAgICAgIHJldHVybiAodjogUXVhZCkgPT4gY2FsbGJhY2sodGhpcy5lLnNldEZyb21RdWF0ZXJuaW9uKHRoaXMucS5mcm9tQXJyYXkodikpLnRvQXJyYXkoKSBhcyBUcmlwbGV0KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbWFrZVRyaXBsZXQodjogVEhSRUUuVmVjdG9yMyB8IFRyaXBsZXQpOiBUcmlwbGV0IHtcbiAgICAgICAgcmV0dXJuIHYgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzID8gW3YueCwgdi55LCB2LnpdIDogdjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -2,7 +2,7 @@ import { inject } from '@angular/core';
|
|
|
2
2
|
import { injectNgtDestroy, injectNgtRef, tapEffect } from 'angular-three';
|
|
3
3
|
import { NgtcStore, NgtcUtils } from 'angular-three-cannon';
|
|
4
4
|
import { NGTC_DEBUG_API } from 'angular-three-cannon/debug';
|
|
5
|
-
import { combineLatest,
|
|
5
|
+
import { combineLatest, ReplaySubject } from 'rxjs';
|
|
6
6
|
import * as THREE from 'three';
|
|
7
7
|
export function injectPlane(fn, opts) {
|
|
8
8
|
return injectBody('Plane', fn, () => [], opts);
|
|
@@ -49,7 +49,7 @@ function injectBody(type, getPropsFn, argsFn, { ref, waitFor } = {}) {
|
|
|
49
49
|
const microQueue$ = new ReplaySubject(1);
|
|
50
50
|
// a ReplaySubject that would emit whenever our props emits. This is done so that the consumers can pass in
|
|
51
51
|
// Observable to injectBody if they have reactive props (eg: Input)
|
|
52
|
-
const
|
|
52
|
+
const propsSubjectList = [];
|
|
53
53
|
// an array of streams we want to wait to emit until we decide to give the bodyRef an empty Object3D
|
|
54
54
|
const waits$ = [microQueue$];
|
|
55
55
|
const debugApi = inject(NGTC_DEBUG_API, { skipSelf: true, optional: true });
|
|
@@ -57,7 +57,7 @@ function injectBody(type, getPropsFn, argsFn, { ref, waitFor } = {}) {
|
|
|
57
57
|
// clean up our streams on destroy
|
|
58
58
|
injectNgtDestroy(() => {
|
|
59
59
|
microQueue$.complete();
|
|
60
|
-
|
|
60
|
+
propsSubjectList.forEach((sub) => sub.complete());
|
|
61
61
|
subscription?.unsubscribe();
|
|
62
62
|
});
|
|
63
63
|
// give our bodyRef an NgtInjectedRef
|
|
@@ -75,7 +75,7 @@ function injectBody(type, getPropsFn, argsFn, { ref, waitFor } = {}) {
|
|
|
75
75
|
combineLatest(waits$).subscribe(() => (bodyRef.nativeElement || (bodyRef.nativeElement = new THREE.Object3D())));
|
|
76
76
|
// start the pipeline as soon as bodyRef has a truthy value
|
|
77
77
|
subscription = combineLatest([physicsStore.select('worker'), bodyRef.$])
|
|
78
|
-
.pipe(
|
|
78
|
+
.pipe(tapEffect(([worker, object]) => {
|
|
79
79
|
const currentWorker = worker;
|
|
80
80
|
const { events, refs } = physicsStore.get();
|
|
81
81
|
let objectCount = 1;
|
|
@@ -87,52 +87,36 @@ function injectBody(type, getPropsFn, argsFn, { ref, waitFor } = {}) {
|
|
|
87
87
|
const uuids = object instanceof THREE.InstancedMesh
|
|
88
88
|
? new Array(objectCount).fill(0).map((_, i) => `${object.uuid}/${i}`)
|
|
89
89
|
: [object.uuid];
|
|
90
|
-
|
|
91
|
-
// so we can react to props changed
|
|
92
|
-
const propsList$ = uuids.map((uuid, index) => {
|
|
90
|
+
const propsList = uuids.map((uuid, index) => {
|
|
93
91
|
const propsResult = getPropsFn(index);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return propsSubject$;
|
|
92
|
+
NgtcUtils.prepare(temp, propsResult);
|
|
93
|
+
if (object instanceof THREE.InstancedMesh) {
|
|
94
|
+
object.setMatrixAt(index, temp.matrix);
|
|
95
|
+
object.instanceMatrix.needsUpdate = true;
|
|
96
|
+
}
|
|
97
|
+
refs[uuid] = object;
|
|
98
|
+
debugApi?.add(uuid, propsResult, type);
|
|
99
|
+
NgtcUtils.setupCollision(events, propsResult, uuid);
|
|
100
|
+
return { ...propsResult, args: argsFn(propsResult.args) };
|
|
101
|
+
});
|
|
102
|
+
currentWorker.addBodies({
|
|
103
|
+
props: propsList.map(({ onCollide, onCollideBegin, onCollideEnd, ...serializableProps }) => ({
|
|
104
|
+
onCollide: Boolean(onCollide),
|
|
105
|
+
onCollideBegin: Boolean(onCollideBegin),
|
|
106
|
+
onCollideEnd: Boolean(onCollideEnd),
|
|
107
|
+
...serializableProps,
|
|
108
|
+
})),
|
|
109
|
+
type,
|
|
110
|
+
uuid: uuids,
|
|
114
111
|
});
|
|
115
|
-
return
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
onCollideEnd: Boolean(onCollideEnd),
|
|
121
|
-
...serializableProps,
|
|
122
|
-
})),
|
|
123
|
-
type,
|
|
124
|
-
uuid: uuids,
|
|
112
|
+
return () => {
|
|
113
|
+
uuids.forEach((uuid) => {
|
|
114
|
+
delete refs[uuid];
|
|
115
|
+
debugApi?.remove(uuid);
|
|
116
|
+
delete events[uuid];
|
|
125
117
|
});
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
uuids.forEach((uuid) => {
|
|
129
|
-
delete refs[uuid];
|
|
130
|
-
debugApi?.remove(uuid);
|
|
131
|
-
delete events[uuid];
|
|
132
|
-
});
|
|
133
|
-
currentWorker.removeBodies({ uuid: uuids });
|
|
134
|
-
};
|
|
135
|
-
}));
|
|
118
|
+
currentWorker.removeBodies({ uuid: uuids });
|
|
119
|
+
};
|
|
136
120
|
}))
|
|
137
121
|
.subscribe();
|
|
138
122
|
const makeAtomic = (type, index) => {
|
|
@@ -292,4 +276,4 @@ function injectBody(type, getPropsFn, argsFn, { ref, waitFor } = {}) {
|
|
|
292
276
|
const api = { ...makeApi(undefined), at: (index) => cache[index] || (cache[index] = makeApi(index)) };
|
|
293
277
|
return { ref: bodyRef, api };
|
|
294
278
|
}
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1jYW5ub24vc2VydmljZXMvc3JjL2xpYi9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF1QnZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUUsYUFBYSxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0csT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFpRC9CLE1BQU0sVUFBVSxXQUFXLENBQ3ZCLEVBQThCLEVBQzlCLElBQXVFO0lBRXZFLE9BQU8sVUFBVSxDQUFzQixPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FDckIsRUFBNEIsRUFDNUIsSUFBdUU7SUFFdkUsTUFBTSxjQUFjLEdBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sVUFBVSxDQUFvQixLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLGNBQWMsRUFBVyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BHLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUMxQixFQUFpQyxFQUNqQyxJQUF1RTtJQUV2RSxPQUFPLFVBQVUsQ0FBeUIsVUFBVSxF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QWMsRUFBRSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDO1lBQ25ELFFBQVEsRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztZQUN2QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUM7WUFDcEMsTUFBTTtnQkFDRixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sS0FBSyxHQUF1QyxFQUFFLENBQUM7SUFDckQsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzlHLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQXRvbWljTmFtZSxcbiAgICBBdG9taWNQcm9wcyxcbiAgICBCb2R5UHJvcHMsXG4gICAgQm9keVNoYXBlVHlwZSxcbiAgICBCb3hQcm9wcyxcbiAgICBDb21wb3VuZEJvZHlQcm9wcyxcbiAgICBDb252ZXhQb2x5aGVkcm9uQXJncyxcbiAgICBDb252ZXhQb2x5aGVkcm9uUHJvcHMsXG4gICAgQ3lsaW5kZXJQcm9wcyxcbiAgICBIZWlnaHRmaWVsZFByb3BzLFxuICAgIFBhcnRpY2xlUHJvcHMsXG4gICAgUGxhbmVQcm9wcyxcbiAgICBQcm9wVmFsdWUsXG4gICAgUXVhZCxcbiAgICBTZXRPcE5hbWUsXG4gICAgU3BoZXJlQXJncyxcbiAgICBTcGhlcmVQcm9wcyxcbiAgICBUcmltZXNoUHJvcHMsXG4gICAgVHJpcGxldCxcbiAgICBWZWN0b3JOYW1lLFxufSBmcm9tICdAcG1uZHJzL2Nhbm5vbi13b3JrZXItYXBpJztcbmltcG9ydCB7IGluamVjdE5ndERlc3Ryb3ksIGluamVjdE5ndFJlZiwgTmd0SW5qZWN0ZWRSZWYsIHRhcEVmZmVjdCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTmd0Y1N0b3JlLCBOZ3RjVXRpbHMgfSBmcm9tICdhbmd1bGFyLXRocmVlLWNhbm5vbic7XG5pbXBvcnQgeyBOR1RDX0RFQlVHX0FQSSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uL2RlYnVnJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCB0eXBlIE5ndGNBdG9taWNBcGk8SyBleHRlbmRzIEF0b21pY05hbWU+ID0ge1xuICAgIHNldDogKHZhbHVlOiBBdG9taWNQcm9wc1tLXSkgPT4gdm9pZDtcbiAgICBzdWJzY3JpYmU6IChjYWxsYmFjazogKHZhbHVlOiBBdG9taWNQcm9wc1tLXSkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndGNRdWF0ZXJuaW9uQXBpID0ge1xuICAgIGNvcHk6ICh7IHcsIHgsIHksIHogfTogVEhSRUUuUXVhdGVybmlvbikgPT4gdm9pZDtcbiAgICBzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyLCB3OiBudW1iZXIpID0+IHZvaWQ7XG4gICAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6ICh2YWx1ZTogUXVhZCkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndGNWZWN0b3JBcGkgPSB7XG4gICAgY29weTogKHsgeCwgeSwgeiB9OiBUSFJFRS5WZWN0b3IzIHwgVEhSRUUuRXVsZXIpID0+IHZvaWQ7XG4gICAgc2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcikgPT4gdm9pZDtcbiAgICBzdWJzY3JpYmU6IChjYWxsYmFjazogKHZhbHVlOiBUcmlwbGV0KSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0Y1dvcmtlckFwaSA9IHtcbiAgICBbSyBpbiBBdG9taWNOYW1lXTogTmd0Y0F0b21pY0FwaTxLPjtcbn0gJiB7XG4gICAgW0sgaW4gVmVjdG9yTmFtZV06IE5ndGNWZWN0b3JBcGk7XG59ICYge1xuICAgIGFwcGx5Rm9yY2U6IChmb3JjZTogVHJpcGxldCwgd29ybGRQb2ludDogVHJpcGxldCkgPT4gdm9pZDtcbiAgICBhcHBseUltcHVsc2U6IChpbXB1bHNlOiBUcmlwbGV0LCB3b3JsZFBvaW50OiBUcmlwbGV0KSA9PiB2b2lkO1xuICAgIGFwcGx5TG9jYWxGb3JjZTogKGZvcmNlOiBUcmlwbGV0LCBsb2NhbFBvaW50OiBUcmlwbGV0KSA9PiB2b2lkO1xuICAgIGFwcGx5TG9jYWxJbXB1bHNlOiAoaW1wdWxzZTogVHJpcGxldCwgbG9jYWxQb2ludDogVHJpcGxldCkgPT4gdm9pZDtcbiAgICBhcHBseVRvcnF1ZTogKHRvcnF1ZTogVHJpcGxldCkgPT4gdm9pZDtcbiAgICBxdWF0ZXJuaW9uOiBOZ3RjUXVhdGVybmlvbkFwaTtcbiAgICByb3RhdGlvbjogTmd0Y1ZlY3RvckFwaTtcbiAgICBzY2FsZU92ZXJyaWRlOiAoc2NhbGU6IFRyaXBsZXQpID0+IHZvaWQ7XG4gICAgc2xlZXA6ICgpID0+IHZvaWQ7XG4gICAgd2FrZVVwOiAoKSA9PiB2b2lkO1xuICAgIHJlbW92ZTogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0JvZHlQdWJsaWNBcGkgZXh0ZW5kcyBOZ3RjV29ya2VyQXBpIHtcbiAgICBhdDogKGluZGV4OiBudW1iZXIpID0+IE5ndGNXb3JrZXJBcGk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0JvZHlSZXR1cm48VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPiB7XG4gICAgcmVmOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0PjtcbiAgICBhcGk6IE5ndGNCb2R5UHVibGljQXBpO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RjR2V0QnlJbmRleDxUIGV4dGVuZHMgQm9keVByb3BzPiA9IChpbmRleDogbnVtYmVyKSA9PiBUIHwgT2JzZXJ2YWJsZTxUPjtcbmV4cG9ydCB0eXBlIE5ndGNBcmdGbjxUPiA9IChhcmdzOiBUKSA9PiB1bmtub3duW107XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQbGFuZTxUT2JqZWN0IGV4dGVuZHMgVEhSRUUuT2JqZWN0M0Q+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+IHtcbiAgICBsZXQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBhIFJlcGxheVN1YmplY3QgdGhhdCB3b3VsZCBlbWl0IG9uY2UgaW4gcXVldWVNaWNyb3Rhc2sgY2FsbFxuICAgIGNvbnN0IG1pY3JvUXVldWUkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG4gICAgLy8gYSBSZXBsYXlTdWJqZWN0IHRoYXQgd291bGQgZW1pdCB3aGVuZXZlciBvdXIgcHJvcHMgZW1pdHMuIFRoaXMgaXMgZG9uZSBzbyB0aGF0IHRoZSBjb25zdW1lcnMgY2FuIHBhc3MgaW5cbiAgICAvLyBPYnNlcnZhYmxlIHRvIGluamVjdEJvZHkgaWYgdGhleSBoYXZlIHJlYWN0aXZlIHByb3BzIChlZzogSW5wdXQpXG4gICAgY29uc3QgcHJvcHNTdWJqZWN0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PFRCb2R5UHJvcHM+KDEpO1xuXG4gICAgLy8gYW4gYXJyYXkgb2Ygc3RyZWFtcyB3ZSB3YW50IHRvIHdhaXQgdG8gZW1pdCB1bnRpbCB3ZSBkZWNpZGUgdG8gZ2l2ZSB0aGUgYm9keVJlZiBhbiBlbXB0eSBPYmplY3QzRFxuICAgIGNvbnN0IHdhaXRzJCA9IFttaWNyb1F1ZXVlJF0gYXMgT2JzZXJ2YWJsZTx1bmtub3duPltdO1xuXG4gICAgY29uc3QgZGVidWdBcGkgPSBpbmplY3QoTkdUQ19ERUJVR19BUEksIHsgc2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIGNvbnN0IHBoeXNpY3NTdG9yZSA9IGluamVjdChOZ3RjU3RvcmUsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG5cbiAgICAvLyBjbGVhbiB1cCBvdXIgc3RyZWFtcyBvbiBkZXN0cm95XG4gICAgaW5qZWN0Tmd0RGVzdHJveSgoKSA9PiB7XG4gICAgICAgIG1pY3JvUXVldWUkLmNvbXBsZXRlKCk7XG4gICAgICAgIHByb3BzU3ViamVjdCQuY29tcGxldGUoKTtcbiAgICAgICAgc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gZ2l2ZSBvdXIgYm9keVJlZiBhbiBOZ3RJbmplY3RlZFJlZlxuICAgIGxldCBib2R5UmVmID0gaW5qZWN0Tmd0UmVmPFRPYmplY3Q+KCk7XG5cbiAgICAvLyBhZGQgd2FpdEZvciBpZiB0aGUgY29uc3VtZXJzIHBhc3MgaXQgaW5cbiAgICBpZiAod2FpdEZvcikgd2FpdHMkLnB1c2god2FpdEZvcik7XG4gICAgLy8gcmUtYXNzaWduIGJvZHlSZWYgaWYgdGhlIGNvbnN1bWVycyBwYXNzIGEgcmVmIGluXG4gICAgaWYgKHJlZikgYm9keVJlZiA9IHJlZjtcblxuICAgIC8vIGZpcmUgbWljcm9RdWV1ZSRcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBtaWNyb1F1ZXVlJC5uZXh0KCkpO1xuXG4gICAgLy8gd2hlbiBhbGwgd2FpdHMkIGVtaXQsIHdlIGdpdmUgYm9keVJlZiBhbiBlbXB0eSBPYmplY3QzRCBpZiBpdCBkb2Vzbid0IGhhdmUgb25lLiBQaHlzaWMgT2JqZWN0IGNhbiBzdGlsbCBiZSBhZmZlY3RlZFxuICAgIC8vIGJ5IFBoeXNpY3Mgd2l0aG91dCBhIHZpc3VhbCByZXByZXNlbnRhdGlvblxuICAgIGNvbWJpbmVMYXRlc3Qod2FpdHMkKS5zdWJzY3JpYmUoKCkgPT4gKGJvZHlSZWYubmF0aXZlRWxlbWVudCB8fD0gbmV3IFRIUkVFLk9iamVjdDNEKCkgYXMgVE9iamVjdCkpO1xuXG4gICAgLy8gc3RhcnQgdGhlIHBpcGVsaW5lIGFzIHNvb24gYXMgYm9keVJlZiBoYXMgYSB0cnV0aHkgdmFsdWVcbiAgICBzdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtwaHlzaWNzU3RvcmUuc2VsZWN0KCd3b3JrZXInKSwgYm9keVJlZi4kXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKFt3b3JrZXIsIG9iamVjdF0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50V29ya2VyID0gd29ya2VyO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgeyBldmVudHMsIHJlZnMgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBsZXQgb2JqZWN0Q291bnQgPSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFRIUkVFLkluc3RhbmNlZE1lc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0Lmluc3RhbmNlTWF0cml4LnNldFVzYWdlKFRIUkVFLkR5bmFtaWNEcmF3VXNhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3RDb3VudCA9IG9iamVjdC5jb3VudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zb2xpZGF0ZSBvdXIgdXVpZHMgaW50byBhbiBBcnJheSBzbyB3ZSBjYW4gaGFuZGxlIHRoZW0gaW4gYSBtb3JlIGNvbnNpc3RlbnQgd2F5XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZHMgPVxuICAgICAgICAgICAgICAgICAgICBvYmplY3QgaW5zdGFuY2VvZiBUSFJFRS5JbnN0YW5jZWRNZXNoXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBBcnJheShvYmplY3RDb3VudCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGAke29iamVjdC51dWlkfS8ke2l9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogW29iamVjdC51dWlkXTtcblxuICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdCBhbiBBcnJheTxPYnNlcnZhYmxlPiBmcm9tIGdldFByb3BzRm5cbiAgICAgICAgICAgICAgICAvLyBzbyB3ZSBjYW4gcmVhY3QgdG8gcHJvcHMgY2hhbmdlZFxuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BzTGlzdCQgPSB1dWlkcy5tYXAoKHV1aWQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BzUmVzdWx0ID0gZ2V0UHJvcHNGbihpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gIHdlIHVzZSBhIHByb3BzU3ViamVjdCQgYmVjYXVzZSB3ZSB3YW50IHRvIGVuc3VyZSB0aGlzIHByb3BzUmVzdWx0IHN0cmVhbSBpcyBIT1RcbiAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCB0YXBFZmZlY3Qgd2lsbCByZW1vdmUgZXZlcnl0aGluZyBmcm9tIGN1cnJlbnRXb3JrZXIjYm9kaWVzIGJlY2F1c2UgdGhlIHN0cmVhbSBjb21wbGV0ZXNcbiAgICAgICAgICAgICAgICAgICAgKGlzT2JzZXJ2YWJsZShwcm9wc1Jlc3VsdCkgPyBwcm9wc1Jlc3VsdCA6IG9mKHByb3BzUmVzdWx0KSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IChwcm9wcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ndGNVdGlscy5wcmVwYXJlKHRlbXAsIHByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgVEhSRUUuSW5zdGFuY2VkTWVzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Quc2V0TWF0cml4QXQoaW5kZXgsIHRlbXAubWF0cml4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Lmluc3RhbmNlTWF0cml4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmc1t1dWlkXSA9IG9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z0FwaT8uYWRkKHV1aWQsIHByb3BzLCB0eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZ3RjVXRpbHMuc2V0dXBDb2xsaXNpb24oZXZlbnRzLCBwcm9wcywgdXVpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNTdWJqZWN0JC5uZXh0KHsgLi4ucHJvcHMsIGFyZ3M6IGFyZ3NGbihwcm9wcy5hcmdzKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW05HVCBDYW5ub25dIEVycm9yIHdpdGggcHJvY2Vzc2luZyBwcm9wczogJHtlcnJvcn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wc1N1YmplY3QkLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wc1N1YmplY3QkO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocHJvcHNMaXN0JCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFwRWZmZWN0KChwcm9wcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFdvcmtlci5hZGRCb2RpZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBwcm9wcy5tYXAoKHsgb25Db2xsaWRlLCBvbkNvbGxpZGVCZWdpbiwgb25Db2xsaWRlRW5kLCAuLi5zZXJpYWxpemFibGVQcm9wcyB9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbGxpZGU6IEJvb2xlYW4ob25Db2xsaWRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db2xsaWRlQmVnaW46IEJvb2xlYW4ob25Db2xsaWRlQmVnaW4pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbGxpZGVFbmQ6IEJvb2xlYW4ob25Db2xsaWRlRW5kKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc2VyaWFsaXphYmxlUHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXVpZDogdXVpZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFuIHVwIENhbm5vbldvcmtlciB3aGVuZXZlciBwcm9wcyBjaGFuZ2VzL2NvbXBsZXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dWlkcy5mb3JFYWNoKCh1dWlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWZzW3V1aWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z0FwaT8ucmVtb3ZlKHV1aWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZXZlbnRzW3V1aWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXb3JrZXIucmVtb3ZlQm9kaWVzKHsgdXVpZDogdXVpZHMgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGNvbnN0IG1ha2VBdG9taWMgPSA8VCBleHRlbmRzIEF0b21pY05hbWU+KHR5cGU6IFQsIGluZGV4PzogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wOiBTZXRPcE5hbWU8VD4gPSBgc2V0JHtOZ3RjVXRpbHMuY2FwaXRhbGl6ZSh0eXBlKX1gO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZXQ6ICh2YWx1ZTogUHJvcFZhbHVlPFQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyW29wXSh7IHByb3BzOiB2YWx1ZSwgdXVpZCB9IGFzIG5ldmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgc3Vic2NyaWJlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3Vic2NyaXB0aW9ucywgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE5ndGNVdGlscy5zdWJzY3JpYmUoYm9keVJlZiwgd29ya2VyLCBzdWJzY3JpcHRpb25zLCB0eXBlLCBpbmRleCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBtYWtlUXVhdGVybmlvbiA9IChpbmRleD86IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCB0eXBlID0gJ3F1YXRlcm5pb24nO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29weTogKHsgdywgeCwgeSwgeiB9OiBUSFJFRS5RdWF0ZXJuaW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLnNldFF1YXRlcm5pb24oeyBwcm9wczogW3gsIHksIHosIHddLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldDogKHg6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXIsIHc6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zZXRRdWF0ZXJuaW9uKHsgcHJvcHM6IFt4LCB5LCB6LCB3XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgc3Vic2NyaWJlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3Vic2NyaXB0aW9ucywgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE5ndGNVdGlscy5zdWJzY3JpYmUoYm9keVJlZiwgd29ya2VyLCBzdWJzY3JpcHRpb25zLCB0eXBlLCBpbmRleCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBtYWtlUm90YXRpb24gPSAoaW5kZXg/OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvcHk6ICh7IHgsIHksIHogfTogVEhSRUUuVmVjdG9yMyB8IFRIUkVFLkV1bGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLnNldFJvdGF0aW9uKHsgcHJvcHM6IFt4LCB5LCB6XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLnNldFJvdGF0aW9uKHsgcHJvcHM6IFt4LCB5LCB6XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdWJzY3JpYmU6IChjYWxsYmFjazogKHZhbHVlOiBUcmlwbGV0KSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdWJzY3JpcHRpb25zLCB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IE5ndGNVdGlscy5pbmNyZW1lbnRpbmdJZCsrO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9ICdib2RpZXMnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAncXVhdGVybmlvbic7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcblxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbnNbaWRdID0geyBbdHlwZV06IE5ndGNVdGlscy5xdWF0ZXJuaW9uVG9Sb3RhdGlvbihjYWxsYmFjaykgfTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zdWJzY3JpYmUoeyBwcm9wczogeyBpZCwgdGFyZ2V0LCB0eXBlIH0sIHV1aWQgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHN1YnNjcmlwdGlvbnNbaWRdO1xuICAgICAgICAgICAgICAgICAgICB3b3JrZXIudW5zdWJzY3JpYmUoeyBwcm9wczogaWQgfSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IG1ha2VWZWMgPSAodHlwZTogVmVjdG9yTmFtZSwgaW5kZXg/OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3Qgb3A6IFNldE9wTmFtZTxWZWN0b3JOYW1lPiA9IGBzZXQke05ndGNVdGlscy5jYXBpdGFsaXplKHR5cGUpfWA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3B5OiAoeyB4LCB5LCB6IH06IFRIUkVFLlZlY3RvcjMgfCBUSFJFRS5FdWxlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlcltvcF0oeyBwcm9wczogW3gsIHksIHpdLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldDogKHg6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXJbb3BdKHsgcHJvcHM6IFt4LCB5LCB6XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgc3Vic2NyaWJlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3Vic2NyaXB0aW9ucywgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE5ndGNVdGlscy5zdWJzY3JpYmUoYm9keVJlZiwgd29ya2VyLCBzdWJzY3JpcHRpb25zLCB0eXBlLCBpbmRleCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBtYWtlUmVtb3ZlID0gKGluZGV4PzogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodXVpZCkgd29ya2VyLnJlbW92ZUJvZGllcyh7IHV1aWQ6IFt1dWlkXSB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbWFrZUFwaShpbmRleD86IG51bWJlcik6IE5ndGNXb3JrZXJBcGkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWxsb3dTbGVlcDogbWFrZUF0b21pYygnYWxsb3dTbGVlcCcsIGluZGV4KSxcbiAgICAgICAgICAgIGFuZ3VsYXJEYW1waW5nOiBtYWtlQXRvbWljKCdhbmd1bGFyRGFtcGluZycsIGluZGV4KSxcbiAgICAgICAgICAgIGFuZ3VsYXJGYWN0b3I6IG1ha2VWZWMoJ2FuZ3VsYXJGYWN0b3InLCBpbmRleCksXG4gICAgICAgICAgICBhbmd1bGFyVmVsb2NpdHk6IG1ha2VWZWMoJ2FuZ3VsYXJWZWxvY2l0eScsIGluZGV4KSxcbiAgICAgICAgICAgIGFwcGx5Rm9yY2UoZm9yY2U6IFRyaXBsZXQsIHdvcmxkUG9pbnQ6IFRyaXBsZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuYXBwbHlGb3JjZSh7IHByb3BzOiBbZm9yY2UsIHdvcmxkUG9pbnRdLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFwcGx5SW1wdWxzZShpbXB1bHNlOiBUcmlwbGV0LCB3b3JsZFBvaW50OiBUcmlwbGV0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLmFwcGx5SW1wdWxzZSh7IHByb3BzOiBbaW1wdWxzZSwgd29ybGRQb2ludF0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBwbHlMb2NhbEZvcmNlKGZvcmNlOiBUcmlwbGV0LCBsb2NhbFBvaW50OiBUcmlwbGV0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLmFwcGx5TG9jYWxGb3JjZSh7IHByb3BzOiBbZm9yY2UsIGxvY2FsUG9pbnRdLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFwcGx5TG9jYWxJbXB1bHNlKGltcHVsc2U6IFRyaXBsZXQsIGxvY2FsUG9pbnQ6IFRyaXBsZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuYXBwbHlMb2NhbEltcHVsc2UoeyBwcm9wczogW2ltcHVsc2UsIGxvY2FsUG9pbnRdLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFwcGx5VG9ycXVlKHRvcnF1ZTogVHJpcGxldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5hcHBseVRvcnF1ZSh7IHByb3BzOiBbdG9ycXVlXSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb2xsaXNpb25GaWx0ZXJHcm91cDogbWFrZUF0b21pYygnY29sbGlzaW9uRmlsdGVyR3JvdXAnLCBpbmRleCksXG4gICAgICAgICAgICBjb2xsaXNpb25GaWx0ZXJNYXNrOiBtYWtlQXRvbWljKCdjb2xsaXNpb25GaWx0ZXJNYXNrJywgaW5kZXgpLFxuICAgICAgICAgICAgY29sbGlzaW9uUmVzcG9uc2U6IG1ha2VBdG9taWMoJ2NvbGxpc2lvblJlc3BvbnNlJywgaW5kZXgpLFxuICAgICAgICAgICAgZml4ZWRSb3RhdGlvbjogbWFrZUF0b21pYygnZml4ZWRSb3RhdGlvbicsIGluZGV4KSxcbiAgICAgICAgICAgIGlzVHJpZ2dlcjogbWFrZUF0b21pYygnaXNUcmlnZ2VyJywgaW5kZXgpLFxuICAgICAgICAgICAgbGluZWFyRGFtcGluZzogbWFrZUF0b21pYygnbGluZWFyRGFtcGluZycsIGluZGV4KSxcbiAgICAgICAgICAgIGxpbmVhckZhY3RvcjogbWFrZVZlYygnbGluZWFyRmFjdG9yJywgaW5kZXgpLFxuICAgICAgICAgICAgbWFzczogbWFrZUF0b21pYygnbWFzcycsIGluZGV4KSxcbiAgICAgICAgICAgIG1hdGVyaWFsOiBtYWtlQXRvbWljKCdtYXRlcmlhbCcsIGluZGV4KSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBtYWtlVmVjKCdwb3NpdGlvbicsIGluZGV4KSxcbiAgICAgICAgICAgIHF1YXRlcm5pb246IG1ha2VRdWF0ZXJuaW9uKGluZGV4KSxcbiAgICAgICAgICAgIHJlbW92ZTogbWFrZVJlbW92ZShpbmRleCksXG4gICAgICAgICAgICByb3RhdGlvbjogbWFrZVJvdGF0aW9uKGluZGV4KSxcbiAgICAgICAgICAgIHNjYWxlT3ZlcnJpZGUoc2NhbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNjYWxlT3ZlcnJpZGVzIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBpZiAodXVpZCkgc2NhbGVPdmVycmlkZXNbdXVpZF0gPSBuZXcgVEhSRUUuVmVjdG9yMyguLi5zY2FsZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2xlZXAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLnNsZWVwKHsgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzbGVlcFNwZWVkTGltaXQ6IG1ha2VBdG9taWMoJ3NsZWVwU3BlZWRMaW1pdCcsIGluZGV4KSxcbiAgICAgICAgICAgIHNsZWVwVGltZUxpbWl0OiBtYWtlQXRvbWljKCdzbGVlcFRpbWVMaW1pdCcsIGluZGV4KSxcbiAgICAgICAgICAgIHVzZXJEYXRhOiBtYWtlQXRvbWljKCd1c2VyRGF0YScsIGluZGV4KSxcbiAgICAgICAgICAgIHZlbG9jaXR5OiBtYWtlVmVjKCd2ZWxvY2l0eScsIGluZGV4KSxcbiAgICAgICAgICAgIHdha2VVcCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIud2FrZVVwKHsgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGU6IHsgW2luZGV4OiBudW1iZXJdOiBOZ3RjV29ya2VyQXBpIH0gPSB7fTtcbiAgICBjb25zdCBhcGkgPSB7IC4uLm1ha2VBcGkodW5kZWZpbmVkKSwgYXQ6IChpbmRleDogbnVtYmVyKSA9PiBjYWNoZVtpbmRleF0gfHwgKGNhY2hlW2luZGV4XSA9IG1ha2VBcGkoaW5kZXgpKSB9O1xuICAgIHJldHVybiB7IHJlZjogYm9keVJlZiwgYXBpIH07XG59XG4iXX0=
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1jYW5ub24vc2VydmljZXMvc3JjL2xpYi9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF1QnZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFjLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFpRC9CLE1BQU0sVUFBVSxXQUFXLENBQ3ZCLEVBQThCLEVBQzlCLElBQXVFO0lBRXZFLE9BQU8sVUFBVSxDQUFzQixPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FDckIsRUFBNEIsRUFDNUIsSUFBdUU7SUFFdkUsTUFBTSxjQUFjLEdBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sVUFBVSxDQUFvQixLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLGNBQWMsRUFBVyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BHLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUMxQixFQUFpQyxFQUNqQyxJQUF1RTtJQUV2RSxPQUFPLFVBQVUsQ0FBeUIsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBUSxF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QUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzlHLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQXRvbWljTmFtZSxcbiAgICBBdG9taWNQcm9wcyxcbiAgICBCb2R5UHJvcHMsXG4gICAgQm9keVNoYXBlVHlwZSxcbiAgICBCb3hQcm9wcyxcbiAgICBDb21wb3VuZEJvZHlQcm9wcyxcbiAgICBDb252ZXhQb2x5aGVkcm9uQXJncyxcbiAgICBDb252ZXhQb2x5aGVkcm9uUHJvcHMsXG4gICAgQ3lsaW5kZXJQcm9wcyxcbiAgICBIZWlnaHRmaWVsZFByb3BzLFxuICAgIFBhcnRpY2xlUHJvcHMsXG4gICAgUGxhbmVQcm9wcyxcbiAgICBQcm9wVmFsdWUsXG4gICAgUXVhZCxcbiAgICBTZXRPcE5hbWUsXG4gICAgU3BoZXJlQXJncyxcbiAgICBTcGhlcmVQcm9wcyxcbiAgICBUcmltZXNoUHJvcHMsXG4gICAgVHJpcGxldCxcbiAgICBWZWN0b3JOYW1lLFxufSBmcm9tICdAcG1uZHJzL2Nhbm5vbi13b3JrZXItYXBpJztcbmltcG9ydCB7IGluamVjdE5ndERlc3Ryb3ksIGluamVjdE5ndFJlZiwgTmd0SW5qZWN0ZWRSZWYsIHRhcEVmZmVjdCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTmd0Y1N0b3JlLCBOZ3RjVXRpbHMgfSBmcm9tICdhbmd1bGFyLXRocmVlLWNhbm5vbic7XG5pbXBvcnQgeyBOR1RDX0RFQlVHX0FQSSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uL2RlYnVnJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgdHlwZSBOZ3RjQXRvbWljQXBpPEsgZXh0ZW5kcyBBdG9taWNOYW1lPiA9IHtcbiAgICBzZXQ6ICh2YWx1ZTogQXRvbWljUHJvcHNbS10pID0+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+IHtcbiAgICBsZXQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBhIFJlcGxheVN1YmplY3QgdGhhdCB3b3VsZCBlbWl0IG9uY2UgaW4gcXVldWVNaWNyb3Rhc2sgY2FsbFxuICAgIGNvbnN0IG1pY3JvUXVldWUkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG4gICAgLy8gYSBSZXBsYXlTdWJqZWN0IHRoYXQgd291bGQgZW1pdCB3aGVuZXZlciBvdXIgcHJvcHMgZW1pdHMuIFRoaXMgaXMgZG9uZSBzbyB0aGF0IHRoZSBjb25zdW1lcnMgY2FuIHBhc3MgaW5cbiAgICAvLyBPYnNlcnZhYmxlIHRvIGluamVjdEJvZHkgaWYgdGhleSBoYXZlIHJlYWN0aXZlIHByb3BzIChlZzogSW5wdXQpXG4gICAgY29uc3QgcHJvcHNTdWJqZWN0TGlzdCA9IFtdIGFzIFJlcGxheVN1YmplY3Q8VEJvZHlQcm9wcz5bXTtcblxuICAgIC8vIGFuIGFycmF5IG9mIHN0cmVhbXMgd2Ugd2FudCB0byB3YWl0IHRvIGVtaXQgdW50aWwgd2UgZGVjaWRlIHRvIGdpdmUgdGhlIGJvZHlSZWYgYW4gZW1wdHkgT2JqZWN0M0RcbiAgICBjb25zdCB3YWl0cyQgPSBbbWljcm9RdWV1ZSRdIGFzIE9ic2VydmFibGU8dW5rbm93bj5bXTtcblxuICAgIGNvbnN0IGRlYnVnQXBpID0gaW5qZWN0KE5HVENfREVCVUdfQVBJLCB7IHNraXBTZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICBjb25zdCBwaHlzaWNzU3RvcmUgPSBpbmplY3QoTmd0Y1N0b3JlLCB7IHNraXBTZWxmOiB0cnVlIH0pO1xuXG4gICAgLy8gY2xlYW4gdXAgb3VyIHN0cmVhbXMgb24gZGVzdHJveVxuICAgIGluamVjdE5ndERlc3Ryb3koKCkgPT4ge1xuICAgICAgICBtaWNyb1F1ZXVlJC5jb21wbGV0ZSgpO1xuICAgICAgICBwcm9wc1N1YmplY3RMaXN0LmZvckVhY2goKHN1YikgPT4gc3ViLmNvbXBsZXRlKCkpO1xuICAgICAgICBzdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG5cbiAgICAvLyBnaXZlIG91ciBib2R5UmVmIGFuIE5ndEluamVjdGVkUmVmXG4gICAgbGV0IGJvZHlSZWYgPSBpbmplY3ROZ3RSZWY8VE9iamVjdD4oKTtcblxuICAgIC8vIGFkZCB3YWl0Rm9yIGlmIHRoZSBjb25zdW1lcnMgcGFzcyBpdCBpblxuICAgIGlmICh3YWl0Rm9yKSB3YWl0cyQucHVzaCh3YWl0Rm9yKTtcbiAgICAvLyByZS1hc3NpZ24gYm9keVJlZiBpZiB0aGUgY29uc3VtZXJzIHBhc3MgYSByZWYgaW5cbiAgICBpZiAocmVmKSBib2R5UmVmID0gcmVmO1xuXG4gICAgLy8gZmlyZSBtaWNyb1F1ZXVlJFxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IG1pY3JvUXVldWUkLm5leHQoKSk7XG5cbiAgICAvLyB3aGVuIGFsbCB3YWl0cyQgZW1pdCwgd2UgZ2l2ZSBib2R5UmVmIGFuIGVtcHR5IE9iamVjdDNEIGlmIGl0IGRvZXNuJ3QgaGF2ZSBvbmUuIFBoeXNpYyBPYmplY3QgY2FuIHN0aWxsIGJlIGFmZmVjdGVkXG4gICAgLy8gYnkgUGh5c2ljcyB3aXRob3V0IGEgdmlzdWFsIHJlcHJlc2VudGF0aW9uXG4gICAgY29tYmluZUxhdGVzdCh3YWl0cyQpLnN1YnNjcmliZSgoKSA9PiAoYm9keVJlZi5uYXRpdmVFbGVtZW50IHx8PSBuZXcgVEhSRUUuT2JqZWN0M0QoKSBhcyBUT2JqZWN0KSk7XG5cbiAgICAvLyBzdGFydCB0aGUgcGlwZWxpbmUgYXMgc29vbiBhcyBib2R5UmVmIGhhcyBhIHRydXRoeSB2YWx1ZVxuICAgIHN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW3BoeXNpY3NTdG9yZS5zZWxlY3QoJ3dvcmtlcicpLCBib2R5UmVmLiRdKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcEVmZmVjdCgoW3dvcmtlciwgb2JqZWN0XSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRXb3JrZXIgPSB3b3JrZXI7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB7IGV2ZW50cywgcmVmcyB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGxldCBvYmplY3RDb3VudCA9IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgVEhSRUUuSW5zdGFuY2VkTWVzaCkge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuaW5zdGFuY2VNYXRyaXguc2V0VXNhZ2UoVEhSRUUuRHluYW1pY0RyYXdVc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdENvdW50ID0gb2JqZWN0LmNvdW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGlkYXRlIG91ciB1dWlkcyBpbnRvIGFuIEFycmF5IHNvIHdlIGNhbiBoYW5kbGUgdGhlbSBpbiBhIG1vcmUgY29uc2lzdGVudCB3YXlcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkcyA9XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdCBpbnN0YW5jZW9mIFRIUkVFLkluc3RhbmNlZE1lc2hcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IEFycmF5KG9iamVjdENvdW50KS5maWxsKDApLm1hcCgoXywgaSkgPT4gYCR7b2JqZWN0LnV1aWR9LyR7aX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbb2JqZWN0LnV1aWRdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvcHNMaXN0ID0gdXVpZHMubWFwKCh1dWlkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wc1Jlc3VsdCA9IGdldFByb3BzRm4oaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBOZ3RjVXRpbHMucHJlcGFyZSh0ZW1wLCBwcm9wc1Jlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBUSFJFRS5JbnN0YW5jZWRNZXNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Quc2V0TWF0cml4QXQoaW5kZXgsIHRlbXAubWF0cml4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5pbnN0YW5jZU1hdHJpeC5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVmc1t1dWlkXSA9IG9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgZGVidWdBcGk/LmFkZCh1dWlkLCBwcm9wc1Jlc3VsdCwgdHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIE5ndGNVdGlscy5zZXR1cENvbGxpc2lvbihldmVudHMsIHByb3BzUmVzdWx0LCB1dWlkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJvcHNSZXN1bHQsIGFyZ3M6IGFyZ3NGbihwcm9wc1Jlc3VsdC5hcmdzKSB9O1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY3VycmVudFdvcmtlci5hZGRCb2RpZXMoe1xuICAgICAgICAgICAgICAgICAgICBwcm9wczogcHJvcHNMaXN0Lm1hcCgoeyBvbkNvbGxpZGUsIG9uQ29sbGlkZUJlZ2luLCBvbkNvbGxpZGVFbmQsIC4uLnNlcmlhbGl6YWJsZVByb3BzIH0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNvbGxpZGU6IEJvb2xlYW4ob25Db2xsaWRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29sbGlkZUJlZ2luOiBCb29sZWFuKG9uQ29sbGlkZUJlZ2luKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29sbGlkZUVuZDogQm9vbGVhbihvbkNvbGxpZGVFbmQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uc2VyaWFsaXphYmxlUHJvcHMsXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgdXVpZDogdXVpZHMsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB1dWlkcy5mb3JFYWNoKCh1dWlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVmc1t1dWlkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnQXBpPy5yZW1vdmUodXVpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZXZlbnRzW3V1aWRdO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFdvcmtlci5yZW1vdmVCb2RpZXMoeyB1dWlkOiB1dWlkcyB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBjb25zdCBtYWtlQXRvbWljID0gPFQgZXh0ZW5kcyBBdG9taWNOYW1lPih0eXBlOiBULCBpbmRleD86IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBvcDogU2V0T3BOYW1lPFQ+ID0gYHNldCR7Tmd0Y1V0aWxzLmNhcGl0YWxpemUodHlwZSl9YDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2V0OiAodmFsdWU6IFByb3BWYWx1ZTxUPikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlcltvcF0oeyBwcm9wczogdmFsdWUsIHV1aWQgfSBhcyBuZXZlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHN1YnNjcmliZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN1YnNjcmlwdGlvbnMsIHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBOZ3RjVXRpbHMuc3Vic2NyaWJlKGJvZHlSZWYsIHdvcmtlciwgc3Vic2NyaXB0aW9ucywgdHlwZSwgaW5kZXgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZVF1YXRlcm5pb24gPSAoaW5kZXg/OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgdHlwZSA9ICdxdWF0ZXJuaW9uJztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvcHk6ICh7IHcsIHgsIHksIHogfTogVEhSRUUuUXVhdGVybmlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zZXRRdWF0ZXJuaW9uKHsgcHJvcHM6IFt4LCB5LCB6LCB3XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyLCB3OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuc2V0UXVhdGVybmlvbih7IHByb3BzOiBbeCwgeSwgeiwgd10sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHN1YnNjcmliZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN1YnNjcmlwdGlvbnMsIHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBOZ3RjVXRpbHMuc3Vic2NyaWJlKGJvZHlSZWYsIHdvcmtlciwgc3Vic2NyaXB0aW9ucywgdHlwZSwgaW5kZXgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZVJvdGF0aW9uID0gKGluZGV4PzogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3B5OiAoeyB4LCB5LCB6IH06IFRIUkVFLlZlY3RvcjMgfCBUSFJFRS5FdWxlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zZXRSb3RhdGlvbih7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zZXRSb3RhdGlvbih7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6ICh2YWx1ZTogVHJpcGxldCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3Vic2NyaXB0aW9ucywgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBOZ3RjVXRpbHMuaW5jcmVtZW50aW5nSWQrKztcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAnYm9kaWVzJztcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gJ3F1YXRlcm5pb24nO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG5cbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25zW2lkXSA9IHsgW3R5cGVdOiBOZ3RjVXRpbHMucXVhdGVybmlvblRvUm90YXRpb24oY2FsbGJhY2spIH07XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuc3Vic2NyaWJlKHsgcHJvcHM6IHsgaWQsIHRhcmdldCwgdHlwZSB9LCB1dWlkIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzdWJzY3JpcHRpb25zW2lkXTtcbiAgICAgICAgICAgICAgICAgICAgd29ya2VyLnVuc3Vic2NyaWJlKHsgcHJvcHM6IGlkIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBtYWtlVmVjID0gKHR5cGU6IFZlY3Rvck5hbWUsIGluZGV4PzogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wOiBTZXRPcE5hbWU8VmVjdG9yTmFtZT4gPSBgc2V0JHtOZ3RjVXRpbHMuY2FwaXRhbGl6ZSh0eXBlKX1gO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29weTogKHsgeCwgeSwgeiB9OiBUSFJFRS5WZWN0b3IzIHwgVEhSRUUuRXVsZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXJbb3BdKHsgcHJvcHM6IFt4LCB5LCB6XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyW29wXSh7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHN1YnNjcmliZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN1YnNjcmlwdGlvbnMsIHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBOZ3RjVXRpbHMuc3Vic2NyaWJlKGJvZHlSZWYsIHdvcmtlciwgc3Vic2NyaXB0aW9ucywgdHlwZSwgaW5kZXgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZVJlbW92ZSA9IChpbmRleD86IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHV1aWQpIHdvcmtlci5yZW1vdmVCb2RpZXMoeyB1dWlkOiBbdXVpZF0gfSk7XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1ha2VBcGkoaW5kZXg/OiBudW1iZXIpOiBOZ3RjV29ya2VyQXBpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFsbG93U2xlZXA6IG1ha2VBdG9taWMoJ2FsbG93U2xlZXAnLCBpbmRleCksXG4gICAgICAgICAgICBhbmd1bGFyRGFtcGluZzogbWFrZUF0b21pYygnYW5ndWxhckRhbXBpbmcnLCBpbmRleCksXG4gICAgICAgICAgICBhbmd1bGFyRmFjdG9yOiBtYWtlVmVjKCdhbmd1bGFyRmFjdG9yJywgaW5kZXgpLFxuICAgICAgICAgICAgYW5ndWxhclZlbG9jaXR5OiBtYWtlVmVjKCdhbmd1bGFyVmVsb2NpdHknLCBpbmRleCksXG4gICAgICAgICAgICBhcHBseUZvcmNlKGZvcmNlOiBUcmlwbGV0LCB3b3JsZFBvaW50OiBUcmlwbGV0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLmFwcGx5Rm9yY2UoeyBwcm9wczogW2ZvcmNlLCB3b3JsZFBvaW50XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcHBseUltcHVsc2UoaW1wdWxzZTogVHJpcGxldCwgd29ybGRQb2ludDogVHJpcGxldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5hcHBseUltcHVsc2UoeyBwcm9wczogW2ltcHVsc2UsIHdvcmxkUG9pbnRdLCB1dWlkIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFwcGx5TG9jYWxGb3JjZShmb3JjZTogVHJpcGxldCwgbG9jYWxQb2ludDogVHJpcGxldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5hcHBseUxvY2FsRm9yY2UoeyBwcm9wczogW2ZvcmNlLCBsb2NhbFBvaW50XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcHBseUxvY2FsSW1wdWxzZShpbXB1bHNlOiBUcmlwbGV0LCBsb2NhbFBvaW50OiBUcmlwbGV0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLmFwcGx5TG9jYWxJbXB1bHNlKHsgcHJvcHM6IFtpbXB1bHNlLCBsb2NhbFBvaW50XSwgdXVpZCB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcHBseVRvcnF1ZSh0b3JxdWU6IFRyaXBsZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdvcmtlciB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgdXVpZCAmJiB3b3JrZXIuYXBwbHlUb3JxdWUoeyBwcm9wczogW3RvcnF1ZV0sIHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29sbGlzaW9uRmlsdGVyR3JvdXA6IG1ha2VBdG9taWMoJ2NvbGxpc2lvbkZpbHRlckdyb3VwJywgaW5kZXgpLFxuICAgICAgICAgICAgY29sbGlzaW9uRmlsdGVyTWFzazogbWFrZUF0b21pYygnY29sbGlzaW9uRmlsdGVyTWFzaycsIGluZGV4KSxcbiAgICAgICAgICAgIGNvbGxpc2lvblJlc3BvbnNlOiBtYWtlQXRvbWljKCdjb2xsaXNpb25SZXNwb25zZScsIGluZGV4KSxcbiAgICAgICAgICAgIGZpeGVkUm90YXRpb246IG1ha2VBdG9taWMoJ2ZpeGVkUm90YXRpb24nLCBpbmRleCksXG4gICAgICAgICAgICBpc1RyaWdnZXI6IG1ha2VBdG9taWMoJ2lzVHJpZ2dlcicsIGluZGV4KSxcbiAgICAgICAgICAgIGxpbmVhckRhbXBpbmc6IG1ha2VBdG9taWMoJ2xpbmVhckRhbXBpbmcnLCBpbmRleCksXG4gICAgICAgICAgICBsaW5lYXJGYWN0b3I6IG1ha2VWZWMoJ2xpbmVhckZhY3RvcicsIGluZGV4KSxcbiAgICAgICAgICAgIG1hc3M6IG1ha2VBdG9taWMoJ21hc3MnLCBpbmRleCksXG4gICAgICAgICAgICBtYXRlcmlhbDogbWFrZUF0b21pYygnbWF0ZXJpYWwnLCBpbmRleCksXG4gICAgICAgICAgICBwb3NpdGlvbjogbWFrZVZlYygncG9zaXRpb24nLCBpbmRleCksXG4gICAgICAgICAgICBxdWF0ZXJuaW9uOiBtYWtlUXVhdGVybmlvbihpbmRleCksXG4gICAgICAgICAgICByZW1vdmU6IG1ha2VSZW1vdmUoaW5kZXgpLFxuICAgICAgICAgICAgcm90YXRpb246IG1ha2VSb3RhdGlvbihpbmRleCksXG4gICAgICAgICAgICBzY2FsZU92ZXJyaWRlKHNjYWxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzY2FsZU92ZXJyaWRlcyB9ID0gcGh5c2ljc1N0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBOZ3RjVXRpbHMuZ2V0VVVJRChib2R5UmVmLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgaWYgKHV1aWQpIHNjYWxlT3ZlcnJpZGVzW3V1aWRdID0gbmV3IFRIUkVFLlZlY3RvcjMoLi4uc2NhbGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNsZWVwKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya2VyIH0gPSBwaHlzaWNzU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IE5ndGNVdGlscy5nZXRVVUlEKGJvZHlSZWYsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB1dWlkICYmIHdvcmtlci5zbGVlcCh7IHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2xlZXBTcGVlZExpbWl0OiBtYWtlQXRvbWljKCdzbGVlcFNwZWVkTGltaXQnLCBpbmRleCksXG4gICAgICAgICAgICBzbGVlcFRpbWVMaW1pdDogbWFrZUF0b21pYygnc2xlZXBUaW1lTGltaXQnLCBpbmRleCksXG4gICAgICAgICAgICB1c2VyRGF0YTogbWFrZUF0b21pYygndXNlckRhdGEnLCBpbmRleCksXG4gICAgICAgICAgICB2ZWxvY2l0eTogbWFrZVZlYygndmVsb2NpdHknLCBpbmRleCksXG4gICAgICAgICAgICB3YWtlVXAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3b3JrZXIgfSA9IHBoeXNpY3NTdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gTmd0Y1V0aWxzLmdldFVVSUQoYm9keVJlZiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHV1aWQgJiYgd29ya2VyLndha2VVcCh7IHV1aWQgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNhY2hlOiB7IFtpbmRleDogbnVtYmVyXTogTmd0Y1dvcmtlckFwaSB9ID0ge307XG4gICAgY29uc3QgYXBpID0geyAuLi5tYWtlQXBpKHVuZGVmaW5lZCksIGF0OiAoaW5kZXg6IG51bWJlcikgPT4gY2FjaGVbaW5kZXhdIHx8IChjYWNoZVtpbmRleF0gPSBtYWtlQXBpKGluZGV4KSkgfTtcbiAgICByZXR1cm4geyByZWY6IGJvZHlSZWYsIGFwaSB9O1xufVxuIl19
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { inject } from '@angular/core';
|
|
2
|
-
import { injectNgtRef, is, makeId, tapEffect } from 'angular-three';
|
|
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 { injectOptionsProcessor } from './utils';
|
|
6
5
|
export function injectPointToPointConstraint(bodyA, bodyB, optsFn) {
|
|
7
6
|
return injectConstraint('PointToPoint', bodyA, bodyB, optsFn);
|
|
8
7
|
}
|
|
@@ -19,13 +18,14 @@ export function injectLockConstraint(bodyA, bodyB, optsFn) {
|
|
|
19
18
|
return injectConstraint('Lock', bodyA, bodyB, optsFn);
|
|
20
19
|
}
|
|
21
20
|
function injectConstraint(type, bodyA, bodyB, optsFn = () => ({})) {
|
|
22
|
-
const {
|
|
21
|
+
const { destroy$ } = injectNgtDestroy();
|
|
23
22
|
const uuid = makeId();
|
|
24
23
|
const physicsStore = inject(NgtcStore, { skipSelf: true });
|
|
25
24
|
const bodyARef = !is.ref(bodyA) ? injectNgtRef(bodyA) : bodyA;
|
|
26
25
|
const bodyBRef = !is.ref(bodyB) ? injectNgtRef(bodyB) : bodyB;
|
|
27
|
-
combineLatest([physicsStore.select('worker'), bodyARef.$, bodyBRef
|
|
28
|
-
.pipe(tapEffect(([worker, bodyA, bodyB
|
|
26
|
+
combineLatest([physicsStore.select('worker'), bodyARef.$, bodyBRef.$])
|
|
27
|
+
.pipe(tapEffect(([worker, bodyA, bodyB]) => {
|
|
28
|
+
const opts = optsFn();
|
|
29
29
|
worker.addConstraint({ props: [bodyA.uuid, bodyB.uuid, opts], type, uuid });
|
|
30
30
|
return () => worker.removeConstraint({ uuid });
|
|
31
31
|
}), takeUntil(destroy$))
|
|
@@ -65,4 +65,4 @@ function injectConstraint(type, bodyA, bodyB, optsFn = () => ({})) {
|
|
|
65
65
|
}
|
|
66
66
|
return { bodyA: bodyARef, bodyB: bodyBRef, api };
|
|
67
67
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1jYW5ub24vc2VydmljZXMvc3JjL2xpYi9jb25zdHJhaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFrQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQW9DakQsTUFBTSxVQUFVLDRCQUE0QixDQUl4QyxLQUEwQyxFQUMxQyxLQUEwQyxFQUMxQyxNQUFxRTtJQUVyRSxPQUFPLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBSXJDLEtBQTBDLEVBQzFDLEtBQTBDLEVBQzFDLE1BQStEO0lBRS9ELE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FJcEMsS0FBMEMsRUFDMUMsS0FBMEMsRUFDMUMsTUFBNkQ7SUFFN0QsT0FBTyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUlqQyxLQUEwQyxFQUMxQyxLQUEwQyxFQUMxQyxNQUF1RDtJQUV2RCxPQUFPLGdCQUFn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TUFBTSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUM7UUFFRixRQUFRLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRTtZQUN4QixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDO1FBRUYsUUFBUSxDQUFDLGFBQWEsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQztRQUVGLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzFDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQztLQUNMO0lBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENvbmVUd2lzdENvbnN0cmFpbnRPcHRzLFxuICAgIENvbnN0cmFpbnRPcHRucyxcbiAgICBDb25zdHJhaW50VHlwZXMsXG4gICAgRGlzdGFuY2VDb25zdHJhaW50T3B0cyxcbiAgICBIaW5nZUNvbnN0cmFpbnRPcHRzLFxuICAgIExvY2tDb25zdHJhaW50T3B0cyxcbiAgICBQb2ludFRvUG9pbnRDb25zdHJhaW50T3B0cyxcbn0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RSZWYsIGlzLCBtYWtlSWQsIE5ndEluamVjdGVkUmVmLCB0YXBFZmZlY3QgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0T3B0aW9uc1Byb2Nlc3NvciB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNDb25zdHJhaW50QXBpIHtcbiAgICBkaXNhYmxlOiAoKSA9PiB2b2lkO1xuICAgIGVuYWJsZTogKCkgPT4gdm9pZDtcbiAgICByZW1vdmU6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0hpbmdlQ29uc3RyYWludEFwaSBleHRlbmRzIE5ndGNDb25zdHJhaW50QXBpIHtcbiAgICBkaXNhYmxlTW90b3I6ICgpID0+IHZvaWQ7XG4gICAgZW5hYmxlTW90b3I6ICgpID0+IHZvaWQ7XG4gICAgc2V0TW90b3JNYXhGb3JjZTogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQ7XG4gICAgc2V0TW90b3JTcGVlZDogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndGNDb25zdHJhaW50T1JIaW5nZUFwaTxUIGV4dGVuZHMgJ0hpbmdlJyB8IENvbnN0cmFpbnRUeXBlcz4gPSBUIGV4dGVuZHMgQ29uc3RyYWludFR5cGVzXG4gICAgPyBOZ3RjQ29uc3RyYWludEFwaVxuICAgIDogTmd0Y0hpbmdlQ29uc3RyYWludEFwaTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjQ29uc3RyYWludFJldHVybjxcbiAgICBUIGV4dGVuZHMgJ0hpbmdlJyB8IENvbnN0cmFpbnRUeXBlcyxcbiAgICBUT2JqZWN0QSBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0QsXG4gICAgVE9iamVjdEIgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNEXG4+IHtcbiAgICBib2R5QTogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEE+O1xuICAgIGJvZHlCOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Qj47XG4gICAgYXBpOiBOZ3RjQ29uc3RyYWludE9SSGluZ2VBcGk8VD47XG59XG5cbmV4cG9ydCB0eXBlIE5ndGNPcHRzRnVuY3Rpb248XG4gICAgVENvbnN0cmFpbnRUeXBlIGV4dGVuZHMgJ0hpbmdlJyB8IENvbnN0cmFpbnRUeXBlcyxcbiAgICBUT3B0aW9ucyBleHRlbmRzIEhpbmdlQ29uc3RyYWludE9wdHMgfCBDb25zdHJhaW50T3B0bnMgPSBUQ29uc3RyYWludFR5cGUgZXh0ZW5kcyAnSGluZ2UnXG4gICAgICAgID8gSGluZ2VDb25zdHJhaW50T3B0c1xuICAgICAgICA6IENvbnN0cmFpbnRPcHRuc1xuPiA9ICgpID0+IE9ic2VydmFibGU8VE9wdGlvbnM+IHwgVE9wdGlvbnM7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQb2ludFRvUG9pbnRDb25zdHJhaW50PFxuICAgIFRPYmplY3RBIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRCxcbiAgICBUT2JqZWN0QiBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0Rcbj4oXG4gICAgYm9keUE6IE5ndEluamVjdGVkUmVmPFRPYmplY3RBPiB8IFRPYmplY3RBLFxuICAgIGJvZHlCOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Qj4gfCBUT2JqZWN0QixcbiAgICBvcHRzRm4/OiBOZ3RjT3B0c0Z1bmN0aW9uPCdQb2ludFRvUG9pbnQnLCBQb2ludFRvUG9pbnRDb25zdHJhaW50T3B0cz5cbikge1xuICAgIHJldHVybiBpbmplY3RDb25zdHJhaW50KCdQb2ludFRvUG9pbnQnLCBib2R5QSwgYm9keUIsIG9wdHNGbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDb25lVHdpc3RDb25zdHJhaW50PFxuICAgIFRPYmplY3RBIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRCxcbiAgICBUT2JqZWN0QiBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0Rcbj4oXG4gICAgYm9keUE6IE5ndEluamVjdGVkUmVmPFRPYmplY3RBPiB8IFRPYmplY3RBLFxuICAgIGJvZHlCOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0Qj4gfCBUT2JqZWN0QixcbiAgICBvcHRzRm4/OiBOZ3RjT3B0c0Z1bmN0aW9uPCdDb25lVHdpc3QnLCBDb25lVHdpc3RDb25zdHJhaW50T3B0cz5cbikge1xuICAgIHJldHVybiBpbmplY3RDb25zdHJhaW50KCdDb25lVHdpc3QnLCBib2R5QSwgYm9keUIsIG9wdHNGbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3REaXN0YW5jZUNvbnN0cmFpbnQ8XG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRFxuPihcbiAgICBib2R5QTogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEE+IHwgVE9iamVjdEEsXG4gICAgYm9keUI6IE5ndEluamVjdGVkUmVmPFRPYmplY3RCPiB8IFRPYmplY3RCLFxuICAgIG9wdHNGbj86IE5ndGNPcHRzRnVuY3Rpb248J0Rpc3RhbmNlJywgRGlzdGFuY2VDb25zdHJhaW50T3B0cz5cbikge1xuICAgIHJldHVybiBpbmplY3RDb25zdHJhaW50KCdEaXN0YW5jZScsIGJvZHlBLCBib2R5Qiwgb3B0c0ZuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEhpbmdlQ29uc3RyYWludDxcbiAgICBUT2JqZWN0QSBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0QsXG4gICAgVE9iamVjdEIgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNEXG4+KFxuICAgIGJvZHlBOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0QT4gfCBUT2JqZWN0QSxcbiAgICBib2R5QjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEI+IHwgVE9iamVjdEIsXG4gICAgb3B0c0ZuPzogTmd0Y09wdHNGdW5jdGlvbjwnSGluZ2UnLCBIaW5nZUNvbnN0cmFpbnRPcHRzPlxuKSB7XG4gICAgcmV0dXJuIGluamVjdENvbnN0cmFpbnQoJ0hpbmdlJywgYm9keUEsIGJvZHlCLCBvcHRzRm4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TG9ja0NvbnN0cmFpbnQ8XG4gICAgVE9iamVjdEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuICAgIFRPYmplY3RCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRFxuPihcbiAgICBib2R5QTogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEE+IHwgVE9iamVjdEEsXG4gICAgYm9keUI6IE5ndEluamVjdGVkUmVmPFRPYmplY3RCPiB8IFRPYmplY3RCLFxuICAgIG9wdHNGbj86IE5ndGNPcHRzRnVuY3Rpb248J0xvY2snLCBMb2NrQ29uc3RyYWludE9wdHM+XG4pIHtcbiAgICByZXR1cm4gaW5qZWN0Q29uc3RyYWludCgnTG9jaycsIGJvZHlBLCBib2R5Qiwgb3B0c0ZuKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Q29uc3RyYWludDxcbiAgICBUQ29uc3RyYWludFR5cGUgZXh0ZW5kcyAnSGluZ2UnIHwgQ29uc3RyYWludFR5cGVzLFxuICAgIFRPYmplY3RBIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRCxcbiAgICBUT2JqZWN0QiBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0QsXG4gICAgVE9wdGlvbnMgZXh0ZW5kcyBIaW5nZUNvbnN0cmFpbnRPcHRzIHwgQ29uc3RyYWludE9wdG5zID0gVENvbnN0cmFpbnRUeXBlIGV4dGVuZHMgJ0hpbmdlJ1xuICAgICAgICA/IEhpbmdlQ29uc3RyYWludE9wdHNcbiAgICAgICAgOiBDb25zdHJhaW50T3B0bnNcbj4oXG4gICAgdHlwZTogVENvbnN0cmFpbnRUeXBlLFxuICAgIGJvZHlBOiBOZ3RJbmplY3RlZFJlZjxUT2JqZWN0QT4gfCBUT2JqZWN0QSxcbiAgICBib2R5QjogTmd0SW5qZWN0ZWRSZWY8VE9iamVjdEI+IHwgVE9iamVjdEIsXG4gICAgb3B0c0ZuOiBOZ3RjT3B0c0Z1bmN0aW9uPFRDb25zdHJhaW50VHlwZSwgVE9wdGlvbnM+ID0gKCkgPT4gKHt9IGFzIFRPcHRpb25zKVxuKTogTmd0Y0NvbnN0cmFpbnRSZXR1cm48VENvbnN0cmFpbnRUeXBlLCBUT2JqZWN0QSwgVE9iamVjdEI+IHtcbiAgICBjb25zdCB7IG9wdHMkLCBkZXN0cm95JCB9ID0gaW5qZWN0T3B0aW9uc1Byb2Nlc3NvcihvcHRzRm4pO1xuICAgIGNvbnN0IHV1aWQgPSBtYWtlSWQoKTtcblxuICAgIGNvbnN0IHBoeXNpY3NTdG9yZSA9IGluamVjdChOZ3RjU3RvcmUsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG5cbiAgICBjb25zdCBib2R5QVJlZiA9ICFpcy5yZWYoYm9keUEpID8gaW5qZWN0Tmd0UmVmKGJvZHlBKSA6IGJvZHlBO1xuICAgIGNvbnN0IGJvZHlCUmVmID0gIWlzLnJlZihib2R5QikgPyBpbmplY3ROZ3RSZWYoYm9keUIpIDogYm9keUI7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtwaHlzaWNzU3RvcmUuc2VsZWN0KCd3b3JrZXInKSwgYm9keUFSZWYuJCwgYm9keUJSZWYuJCwgb3B0cyRdKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcEVmZmVjdCgoW3dvcmtlciwgYm9keUEsIGJvZHlCLCBvcHRzXSkgPT4ge1xuICAgICAgICAgICAgICAgIHdvcmtlci5hZGRDb25zdHJhaW50KHsgcHJvcHM6IFtib2R5QS51dWlkLCBib2R5Qi51dWlkLCBvcHRzXSwgdHlwZSwgdXVpZCB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gd29ya2VyLnJlbW92ZUNvbnN0cmFpbnQoeyB1dWlkIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlVW50aWwoZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgY29uc3QgYXBpID0ge1xuICAgICAgICBkaXNhYmxlOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBwaHlzaWNzU3RvcmUuZ2V0KCd3b3JrZXInKTtcbiAgICAgICAgICAgIHdvcmtlci5kaXNhYmxlQ29uc3RyYWludCh7IHV1aWQgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVuYWJsZTogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gcGh5c2ljc1N0b3JlLmdldCgnd29ya2VyJyk7XG4gICAgICAgICAgICB3b3JrZXIuZW5hYmxlQ29uc3RyYWludCh7IHV1aWQgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZTogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gcGh5c2ljc1N0b3JlLmdldCgnd29ya2VyJyk7XG4gICAgICAgICAgICB3b3JrZXIucmVtb3ZlQ29uc3RyYWludCh7IHV1aWQgfSk7XG4gICAgICAgIH0sXG4gICAgfSBhcyBOZ3RjQ29uc3RyYWludE9SSGluZ2VBcGk8VENvbnN0cmFpbnRUeXBlPjtcblxuICAgIGlmICh0eXBlID09PSAnSGluZ2UnKSB7XG4gICAgICAgIGNvbnN0IGhpbmdlQXBpID0gYXBpIGFzIE5ndGNIaW5nZUNvbnN0cmFpbnRBcGk7XG4gICAgICAgIGhpbmdlQXBpLmRpc2FibGVNb3RvciA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IHBoeXNpY3NTdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgd29ya2VyLmRpc2FibGVDb25zdHJhaW50TW90b3IoeyB1dWlkIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGhpbmdlQXBpLmVuYWJsZU1vdG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gcGh5c2ljc1N0b3JlLmdldCgnd29ya2VyJyk7XG4gICAgICAgICAgICB3b3JrZXIuZW5hYmxlQ29uc3RyYWludE1vdG9yKHsgdXVpZCB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBoaW5nZUFwaS5zZXRNb3RvclNwZWVkID0gKHZhbHVlOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IHBoeXNpY3NTdG9yZS5nZXQoJ3dvcmtlcicpO1xuICAgICAgICAgICAgd29ya2VyLnNldENvbnN0cmFpbnRNb3RvclNwZWVkKHsgdXVpZCwgcHJvcHM6IHZhbHVlIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGhpbmdlQXBpLnNldE1vdG9yTWF4Rm9yY2UgPSAodmFsdWU6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gcGh5c2ljc1N0b3JlLmdldCgnd29ya2VyJyk7XG4gICAgICAgICAgICB3b3JrZXIuc2V0Q29uc3RyYWludE1vdG9yTWF4Rm9yY2UoeyB1dWlkLCBwcm9wczogdmFsdWUgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgYm9keUE6IGJvZHlBUmVmLCBib2R5QjogYm9keUJSZWYsIGFwaSB9O1xufVxuIl19
|
|
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==
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { inject } from '@angular/core';
|
|
2
|
-
import { makeId, tapEffect } from 'angular-three';
|
|
2
|
+
import { injectNgtDestroy, makeId, tapEffect } from 'angular-three';
|
|
3
3
|
import { NgtcStore } from 'angular-three-cannon';
|
|
4
|
-
import {
|
|
5
|
-
import { injectOptionsProcessor } from './utils';
|
|
4
|
+
import { takeUntil } from 'rxjs';
|
|
6
5
|
export function injectContactMaterial(materialA, materialB, optionsFn) {
|
|
7
|
-
const {
|
|
6
|
+
const { destroy$ } = injectNgtDestroy();
|
|
8
7
|
const physicsStore = inject(NgtcStore, { skipSelf: true });
|
|
9
8
|
const uuid = makeId();
|
|
10
|
-
|
|
11
|
-
.
|
|
9
|
+
physicsStore
|
|
10
|
+
.select('worker')
|
|
11
|
+
.pipe(tapEffect((worker) => {
|
|
12
|
+
const options = optionsFn();
|
|
12
13
|
worker.addContactMaterial({ props: [materialA, materialB, options], uuid });
|
|
13
14
|
return () => worker.removeContactMaterial({ uuid });
|
|
14
15
|
}), takeUntil(destroy$))
|
|
15
16
|
.subscribe();
|
|
16
17
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1jYW5ub24vc2VydmljZXMvc3JjL2xpYi9jb250YWN0LW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsTUFBTSxVQUFVLHFCQUFxQixDQUNqQyxTQUEwQixFQUMxQixTQUEwQixFQUMxQixTQUF1QztJQUV2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUV4QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFdEIsWUFBWTtTQUNQLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDaEIsSUFBSSxDQUNELFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2pCLE1BQU0sT0FBTyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RSxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUN0QjtTQUNBLFNBQVMsRUFBRSxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRhY3RNYXRlcmlhbE9wdGlvbnMsIE1hdGVyaWFsT3B0aW9ucyB9IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgaW5qZWN0Tmd0RGVzdHJveSwgbWFrZUlkLCB0YXBFZmZlY3QgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q29udGFjdE1hdGVyaWFsKFxuICAgIG1hdGVyaWFsQTogTWF0ZXJpYWxPcHRpb25zLFxuICAgIG1hdGVyaWFsQjogTWF0ZXJpYWxPcHRpb25zLFxuICAgIG9wdGlvbnNGbjogKCkgPT4gQ29udGFjdE1hdGVyaWFsT3B0aW9uc1xuKSB7XG4gICAgY29uc3QgeyBkZXN0cm95JCB9ID0gaW5qZWN0Tmd0RGVzdHJveSgpO1xuXG4gICAgY29uc3QgcGh5c2ljc1N0b3JlID0gaW5qZWN0KE5ndGNTdG9yZSwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgICBjb25zdCB1dWlkID0gbWFrZUlkKCk7XG5cbiAgICBwaHlzaWNzU3RvcmVcbiAgICAgICAgLnNlbGVjdCgnd29ya2VyJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXBFZmZlY3QoKHdvcmtlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBvcHRpb25zRm4oKTtcbiAgICAgICAgICAgICAgICB3b3JrZXIuYWRkQ29udGFjdE1hdGVyaWFsKHsgcHJvcHM6IFttYXRlcmlhbEEsIG1hdGVyaWFsQiwgb3B0aW9uc10sIHV1aWQgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHdvcmtlci5yZW1vdmVDb250YWN0TWF0ZXJpYWwoeyB1dWlkIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlVW50aWwoZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xufVxuIl19
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { inject } from '@angular/core';
|
|
2
|
-
import { makeId, tapEffect } from 'angular-three';
|
|
2
|
+
import { injectNgtDestroy, makeId, tapEffect } from 'angular-three';
|
|
3
3
|
import { NgtcStore } from 'angular-three-cannon';
|
|
4
|
-
import {
|
|
5
|
-
import { injectOptionsProcessor } from './utils';
|
|
4
|
+
import { takeUntil } from 'rxjs';
|
|
6
5
|
export function injectRaycastClosest(optionsFn, callback) {
|
|
7
6
|
injectRay('Closest', optionsFn, callback);
|
|
8
7
|
}
|
|
@@ -13,11 +12,13 @@ export function injectRaycastAll(optionsFn, callback) {
|
|
|
13
12
|
injectRay('All', optionsFn, callback);
|
|
14
13
|
}
|
|
15
14
|
function injectRay(mode, optionsFn, callback) {
|
|
16
|
-
const {
|
|
15
|
+
const { destroy$ } = injectNgtDestroy();
|
|
17
16
|
const uuid = makeId();
|
|
18
17
|
const physicsStore = inject(NgtcStore, { skipSelf: true });
|
|
19
|
-
|
|
20
|
-
.
|
|
18
|
+
physicsStore
|
|
19
|
+
.select('worker')
|
|
20
|
+
.pipe(tapEffect((worker) => {
|
|
21
|
+
const opts = optionsFn();
|
|
21
22
|
const events = physicsStore.get('events');
|
|
22
23
|
events[uuid] = { rayhit: callback };
|
|
23
24
|
worker.addRay({ props: { ...opts, mode }, uuid });
|
|
@@ -28,4 +29,4 @@ function injectRay(mode, optionsFn, callback) {
|
|
|
28
29
|
}), takeUntil(destroy$))
|
|
29
30
|
.subscribe();
|
|
30
31
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLWNhbm5vbi9zZXJ2aWNlcy9zcmMvbGliL3JheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpDLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxTQUEyQixFQUFFLFFBQWtDO0lBQ2hHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsU0FBMkIsRUFBRSxRQUFrQztJQUM1RixTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFNBQTJCLEVBQUUsUUFBa0M7SUFDNUYsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLElBQWEsRUFBRSxTQUEyQixFQUFFLFFBQXNDO0lBQ2pHLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ3RCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUzRCxZQUFZO1NBQ1AsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUNoQixJQUFJLENBQ0QsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDakIsTUFBTSxJQUFJLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxHQUFHLEVBQUU7WUFDUixNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMzQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsUUFBUSxDQUFDLENBQ3RCO1NBQ0EsU0FBUyxFQUFFLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmF5aGl0RXZlbnQsIFJheU1vZGUsIFJheU9wdGlvbnMgfSBmcm9tICdAcG1uZHJzL2Nhbm5vbi13b3JrZXItYXBpJztcbmltcG9ydCB7IGluamVjdE5ndERlc3Ryb3ksIG1ha2VJZCwgdGFwRWZmZWN0IH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RjU3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlLWNhbm5vbic7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJheWNhc3RDbG9zZXN0KG9wdGlvbnNGbjogKCkgPT4gUmF5T3B0aW9ucywgY2FsbGJhY2s6IChlOiBSYXloaXRFdmVudCkgPT4gdm9pZCkge1xuICAgIGluamVjdFJheSgnQ2xvc2VzdCcsIG9wdGlvbnNGbiwgY2FsbGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UmF5Y2FzdEFueShvcHRpb25zRm46ICgpID0+IFJheU9wdGlvbnMsIGNhbGxiYWNrOiAoZTogUmF5aGl0RXZlbnQpID0+IHZvaWQpIHtcbiAgICBpbmplY3RSYXkoJ0FueScsIG9wdGlvbnNGbiwgY2FsbGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UmF5Y2FzdEFsbChvcHRpb25zRm46ICgpID0+IFJheU9wdGlvbnMsIGNhbGxiYWNrOiAoZTogUmF5aGl0RXZlbnQpID0+IHZvaWQpIHtcbiAgICBpbmplY3RSYXkoJ0FsbCcsIG9wdGlvbnNGbiwgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBpbmplY3RSYXkobW9kZTogUmF5TW9kZSwgb3B0aW9uc0ZuOiAoKSA9PiBSYXlPcHRpb25zLCBjYWxsYmFjazogKGV2ZW50OiBSYXloaXRFdmVudCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZGVzdHJveSQgfSA9IGluamVjdE5ndERlc3Ryb3koKTtcbiAgICBjb25zdCB1dWlkID0gbWFrZUlkKCk7XG4gICAgY29uc3QgcGh5c2ljc1N0b3JlID0gaW5qZWN0KE5ndGNTdG9yZSwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcblxuICAgIHBoeXNpY3NTdG9yZVxuICAgICAgICAuc2VsZWN0KCd3b3JrZXInKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcEVmZmVjdCgod29ya2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0cyA9IG9wdGlvbnNGbigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50cyA9IHBoeXNpY3NTdG9yZS5nZXQoJ2V2ZW50cycpO1xuICAgICAgICAgICAgICAgIGV2ZW50c1t1dWlkXSA9IHsgcmF5aGl0OiBjYWxsYmFjayB9O1xuICAgICAgICAgICAgICAgIHdvcmtlci5hZGRSYXkoeyBwcm9wczogeyAuLi5vcHRzLCBtb2RlIH0sIHV1aWQgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgd29ya2VyLnJlbW92ZVJheSh7IHV1aWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBldmVudHNbdXVpZF07XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbn1cbiJdfQ==
|