Spaces:
Running
Running
Upload 43 files
Browse files- dist/cameras/Camera.d.ts +10 -0
- dist/cameras/CameraData.d.ts +32 -0
- dist/controls/FPSControls.d.ts +10 -0
- dist/controls/OrbitControls.d.ts +17 -0
- dist/core/Object3D.d.ts +31 -0
- dist/core/Scene.d.ts +17 -0
- dist/events/EventDispatcher.d.ts +8 -0
- dist/events/Events.d.ts +14 -0
- dist/index.d.ts +28 -0
- dist/index.js +0 -0
- dist/index.js.map +0 -0
- dist/loaders/Loader.d.ts +8 -0
- dist/loaders/PLYLoader.d.ts +9 -0
- dist/loaders/SplatvLoader.d.ts +9 -0
- dist/math/BVH.d.ts +17 -0
- dist/math/Box3.d.ts +13 -0
- dist/math/Color32.d.ts +12 -0
- dist/math/Matrix3.d.ts +15 -0
- dist/math/Matrix4.d.ts +14 -0
- dist/math/Plane.d.ts +8 -0
- dist/math/Quaternion.d.ts +23 -0
- dist/math/Vector3.d.ts +33 -0
- dist/math/Vector4.d.ts +25 -0
- dist/renderers/WebGLRenderer.d.ts +24 -0
- dist/renderers/webgl/passes/FadeInPass.d.ts +9 -0
- dist/renderers/webgl/passes/ShaderPass.d.ts +7 -0
- dist/renderers/webgl/programs/RenderProgram.d.ts +31 -0
- dist/renderers/webgl/programs/ShaderProgram.d.ts +31 -0
- dist/renderers/webgl/programs/VideoRenderProgram.d.ts +18 -0
- dist/renderers/webgl/utils/DataWorker.d.ts +1 -0
- dist/renderers/webgl/utils/IntersectionTester.d.ts +7 -0
- dist/renderers/webgl/utils/RenderData.d.ts +60 -0
- dist/renderers/webgl/utils/SortWorker.d.ts +1 -0
- dist/splats/Splat.d.ts +24 -0
- dist/splats/SplatData.d.ts +28 -0
- dist/splats/Splatv.d.ts +8 -0
- dist/splats/SplatvData.d.ts +17 -0
- dist/utils/Converter.d.ts +5 -0
- dist/utils/LoaderUtils.d.ts +4 -0
- dist/wasm/data.d.ts +20 -0
- dist/wasm/data.js +15 -0
- dist/wasm/sort.d.ts +18 -0
- dist/wasm/sort.js +15 -0
dist/cameras/Camera.d.ts
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { CameraData } from "./CameraData";
|
2 |
+
import { Object3D } from "../core/Object3D";
|
3 |
+
import { Vector3 } from "../math/Vector3";
|
4 |
+
declare class Camera extends Object3D {
|
5 |
+
private _data;
|
6 |
+
screenPointToRay: (x: number, y: number) => Vector3;
|
7 |
+
constructor(camera?: CameraData | undefined);
|
8 |
+
get data(): CameraData;
|
9 |
+
}
|
10 |
+
export { Camera };
|
dist/cameras/CameraData.d.ts
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Quaternion } from "../math/Quaternion";
|
2 |
+
import { Matrix4 } from "../math/Matrix4";
|
3 |
+
import { Vector3 } from "../math/Vector3";
|
4 |
+
declare class CameraData {
|
5 |
+
private _fx;
|
6 |
+
private _fy;
|
7 |
+
private _near;
|
8 |
+
private _far;
|
9 |
+
private _width;
|
10 |
+
private _height;
|
11 |
+
private _projectionMatrix;
|
12 |
+
private _viewMatrix;
|
13 |
+
private _viewProj;
|
14 |
+
update: (position: Vector3, rotation: Quaternion) => void;
|
15 |
+
setSize: (width: number, height: number) => void;
|
16 |
+
private _updateProjectionMatrix;
|
17 |
+
constructor();
|
18 |
+
get fx(): number;
|
19 |
+
set fx(fx: number);
|
20 |
+
get fy(): number;
|
21 |
+
set fy(fy: number);
|
22 |
+
get near(): number;
|
23 |
+
set near(near: number);
|
24 |
+
get far(): number;
|
25 |
+
set far(far: number);
|
26 |
+
get width(): number;
|
27 |
+
get height(): number;
|
28 |
+
get projectionMatrix(): Matrix4;
|
29 |
+
get viewMatrix(): Matrix4;
|
30 |
+
get viewProj(): Matrix4;
|
31 |
+
}
|
32 |
+
export { CameraData };
|
dist/controls/FPSControls.d.ts
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Camera } from "../cameras/Camera";
|
2 |
+
declare class FPSControls {
|
3 |
+
moveSpeed: number;
|
4 |
+
lookSpeed: number;
|
5 |
+
dampening: number;
|
6 |
+
update: () => void;
|
7 |
+
dispose: () => void;
|
8 |
+
constructor(camera: Camera, canvas: HTMLCanvasElement);
|
9 |
+
}
|
10 |
+
export { FPSControls };
|
dist/controls/OrbitControls.d.ts
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Camera } from "../cameras/Camera";
|
2 |
+
import { Vector3 } from "../math/Vector3";
|
3 |
+
declare class OrbitControls {
|
4 |
+
minAngle: number;
|
5 |
+
maxAngle: number;
|
6 |
+
minZoom: number;
|
7 |
+
maxZoom: number;
|
8 |
+
orbitSpeed: number;
|
9 |
+
panSpeed: number;
|
10 |
+
zoomSpeed: number;
|
11 |
+
dampening: number;
|
12 |
+
setCameraTarget: (newTarget: Vector3) => void;
|
13 |
+
update: () => void;
|
14 |
+
dispose: () => void;
|
15 |
+
constructor(camera: Camera, canvas: HTMLElement, alpha?: number, beta?: number, radius?: number, enableKeyboardControls?: boolean, inputTarget?: Vector3);
|
16 |
+
}
|
17 |
+
export { OrbitControls };
|
dist/core/Object3D.d.ts
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Vector3 } from "../math/Vector3";
|
2 |
+
import { Quaternion } from "../math/Quaternion";
|
3 |
+
import { EventDispatcher } from "../events/EventDispatcher";
|
4 |
+
import { Matrix4 } from "../math/Matrix4";
|
5 |
+
import { ObjectChangedEvent } from "../events/Events";
|
6 |
+
declare abstract class Object3D extends EventDispatcher {
|
7 |
+
positionChanged: boolean;
|
8 |
+
rotationChanged: boolean;
|
9 |
+
scaleChanged: boolean;
|
10 |
+
protected _position: Vector3;
|
11 |
+
protected _rotation: Quaternion;
|
12 |
+
protected _scale: Vector3;
|
13 |
+
protected _transform: Matrix4;
|
14 |
+
protected _changeEvent: ObjectChangedEvent;
|
15 |
+
update: () => void;
|
16 |
+
applyPosition: () => void;
|
17 |
+
applyRotation: () => void;
|
18 |
+
applyScale: () => void;
|
19 |
+
raiseChangeEvent: () => void;
|
20 |
+
constructor();
|
21 |
+
protected _updateMatrix(): void;
|
22 |
+
get position(): Vector3;
|
23 |
+
set position(position: Vector3);
|
24 |
+
get rotation(): Quaternion;
|
25 |
+
set rotation(rotation: Quaternion);
|
26 |
+
get scale(): Vector3;
|
27 |
+
set scale(scale: Vector3);
|
28 |
+
get forward(): Vector3;
|
29 |
+
get transform(): Matrix4;
|
30 |
+
}
|
31 |
+
export { Object3D };
|
dist/core/Scene.d.ts
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Object3D } from "./Object3D";
|
2 |
+
import { EventDispatcher } from "../events/EventDispatcher";
|
3 |
+
declare class Scene extends EventDispatcher {
|
4 |
+
private _objects;
|
5 |
+
addObject: (object: Object3D) => void;
|
6 |
+
removeObject: (object: Object3D) => void;
|
7 |
+
findObject: (predicate: (object: Object3D) => boolean) => Object3D | undefined;
|
8 |
+
findObjectOfType: <T extends Object3D>(type: {
|
9 |
+
new (): T;
|
10 |
+
}) => T | undefined;
|
11 |
+
reset: () => void;
|
12 |
+
constructor();
|
13 |
+
getMergedSceneDataBuffer(format?: "splat" | "ply"): ArrayBuffer;
|
14 |
+
saveToFile(name?: string | null, format?: "splat" | "ply"): void;
|
15 |
+
get objects(): Object3D[];
|
16 |
+
}
|
17 |
+
export { Scene };
|
dist/events/EventDispatcher.d.ts
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
declare class EventDispatcher {
|
2 |
+
addEventListener: (type: string, listener: (event: Event) => void) => void;
|
3 |
+
removeEventListener: (type: string, listener: (event: Event) => void) => void;
|
4 |
+
hasEventListener: (type: string, listener: (event: Event) => void) => boolean;
|
5 |
+
dispatchEvent: (event: Event) => void;
|
6 |
+
constructor();
|
7 |
+
}
|
8 |
+
export { EventDispatcher };
|
dist/events/Events.d.ts
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Object3D } from "../core/Object3D";
|
2 |
+
declare class ObjectAddedEvent extends Event {
|
3 |
+
object: Object3D;
|
4 |
+
constructor(object: Object3D);
|
5 |
+
}
|
6 |
+
declare class ObjectRemovedEvent extends Event {
|
7 |
+
object: Object3D;
|
8 |
+
constructor(object: Object3D);
|
9 |
+
}
|
10 |
+
declare class ObjectChangedEvent extends Event {
|
11 |
+
object: Object3D;
|
12 |
+
constructor(object: Object3D);
|
13 |
+
}
|
14 |
+
export { ObjectAddedEvent, ObjectRemovedEvent, ObjectChangedEvent };
|
dist/index.d.ts
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
export { Object3D } from "./core/Object3D";
|
2 |
+
export { SplatData } from "./splats/SplatData";
|
3 |
+
export { SplatvData } from "./splats/SplatvData";
|
4 |
+
export { Splat } from "./splats/Splat";
|
5 |
+
export { Splatv } from "./splats/Splatv";
|
6 |
+
export { CameraData } from "./cameras/CameraData";
|
7 |
+
export { Camera } from "./cameras/Camera";
|
8 |
+
export { Scene } from "./core/Scene";
|
9 |
+
export { Loader } from "./loaders/Loader";
|
10 |
+
export { PLYLoader } from "./loaders/PLYLoader";
|
11 |
+
export { SplatvLoader } from "./loaders/SplatvLoader";
|
12 |
+
export { WebGLRenderer } from "./renderers/WebGLRenderer";
|
13 |
+
export { OrbitControls } from "./controls/OrbitControls";
|
14 |
+
export { FPSControls } from "./controls/FPSControls";
|
15 |
+
export { Quaternion } from "./math/Quaternion";
|
16 |
+
export { Vector3 } from "./math/Vector3";
|
17 |
+
export { Vector4 } from "./math/Vector4";
|
18 |
+
export { Matrix4 } from "./math/Matrix4";
|
19 |
+
export { Matrix3 } from "./math/Matrix3";
|
20 |
+
export { Color32 } from "./math/Color32";
|
21 |
+
export { Plane } from "./math/Plane";
|
22 |
+
export { ShaderPass } from "./renderers/webgl/passes/ShaderPass";
|
23 |
+
export { FadeInPass } from "./renderers/webgl/passes/FadeInPass";
|
24 |
+
export { RenderData } from "./renderers/webgl/utils/RenderData";
|
25 |
+
export { ShaderProgram } from "./renderers/webgl/programs/ShaderProgram";
|
26 |
+
export { RenderProgram } from "./renderers/webgl/programs/RenderProgram";
|
27 |
+
export { VideoRenderProgram } from "./renderers/webgl/programs/VideoRenderProgram";
|
28 |
+
export { IntersectionTester } from "./renderers/webgl/utils/IntersectionTester";
|
dist/index.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
dist/index.js.map
ADDED
The diff for this file is too large to render.
See raw diff
|
|
dist/loaders/Loader.d.ts
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import type { Scene } from "../core/Scene";
|
2 |
+
import { Splat } from "../splats/Splat";
|
3 |
+
declare class Loader {
|
4 |
+
static LoadAsync(url: string, scene: Scene, onProgress?: (progress: number) => void, useCache?: boolean): Promise<Splat>;
|
5 |
+
static LoadFromFileAsync(file: File, scene: Scene, onProgress?: (progress: number) => void): Promise<Splat>;
|
6 |
+
static LoadFromArrayBuffer(arrayBuffer: ArrayBufferLike, scene: Scene): Splat;
|
7 |
+
}
|
8 |
+
export { Loader };
|
dist/loaders/PLYLoader.d.ts
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Scene } from "../core/Scene";
|
2 |
+
import { Splat } from "../splats/Splat";
|
3 |
+
declare class PLYLoader {
|
4 |
+
static LoadAsync(url: string, scene: Scene, onProgress?: (progress: number) => void, format?: string, useCache?: boolean): Promise<Splat>;
|
5 |
+
static LoadFromFileAsync(file: File, scene: Scene, onProgress?: (progress: number) => void, format?: string): Promise<Splat>;
|
6 |
+
static LoadFromArrayBuffer(arrayBuffer: ArrayBufferLike, scene: Scene, format?: string): Splat;
|
7 |
+
private static _ParsePLYBuffer;
|
8 |
+
}
|
9 |
+
export { PLYLoader };
|
dist/loaders/SplatvLoader.d.ts
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Camera } from "../cameras/Camera";
|
2 |
+
import type { Scene } from "../core/Scene";
|
3 |
+
import { Splatv } from "../splats/Splatv";
|
4 |
+
declare class SplatvLoader {
|
5 |
+
static LoadAsync(url: string, scene: Scene, camera: Camera | null, onProgress?: (progress: number) => void, useCache?: boolean): Promise<Splatv>;
|
6 |
+
static LoadFromFileAsync(file: File, scene: Scene, camera: Camera | null, onProgress?: (progress: number) => void): Promise<Splatv>;
|
7 |
+
private static _ParseSplatvBuffer;
|
8 |
+
}
|
9 |
+
export { SplatvLoader };
|
dist/math/BVH.d.ts
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Box3 } from "./Box3";
|
2 |
+
declare class BVHNode {
|
3 |
+
bounds: Box3;
|
4 |
+
boxes: Box3[];
|
5 |
+
left: BVHNode | null;
|
6 |
+
right: BVHNode | null;
|
7 |
+
pointIndices: number[];
|
8 |
+
constructor(bounds: Box3, boxes: Box3[], pointIndices: number[]);
|
9 |
+
private split;
|
10 |
+
queryRange(range: Box3): number[];
|
11 |
+
}
|
12 |
+
declare class BVH {
|
13 |
+
root: BVHNode;
|
14 |
+
constructor(bounds: Box3, boxes: Box3[]);
|
15 |
+
queryRange(range: Box3): number[];
|
16 |
+
}
|
17 |
+
export { BVH };
|
dist/math/Box3.d.ts
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Vector3 } from "./Vector3";
|
2 |
+
declare class Box3 {
|
3 |
+
min: Vector3;
|
4 |
+
max: Vector3;
|
5 |
+
constructor(min: Vector3, max: Vector3);
|
6 |
+
contains(point: Vector3): boolean;
|
7 |
+
intersects(box: Box3): boolean;
|
8 |
+
size(): Vector3;
|
9 |
+
center(): Vector3;
|
10 |
+
expand(point: Vector3): void;
|
11 |
+
permute(): void;
|
12 |
+
}
|
13 |
+
export { Box3 };
|
dist/math/Color32.d.ts
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
declare class Color32 {
|
2 |
+
readonly r: number;
|
3 |
+
readonly g: number;
|
4 |
+
readonly b: number;
|
5 |
+
readonly a: number;
|
6 |
+
constructor(r?: number, g?: number, b?: number, a?: number);
|
7 |
+
flat(): number[];
|
8 |
+
flatNorm(): number[];
|
9 |
+
toHexString(): string;
|
10 |
+
toString(): string;
|
11 |
+
}
|
12 |
+
export { Color32 };
|
dist/math/Matrix3.d.ts
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Quaternion } from "./Quaternion";
|
2 |
+
import type { Vector3 } from "./Vector3";
|
3 |
+
declare class Matrix3 {
|
4 |
+
readonly buffer: number[];
|
5 |
+
constructor(n11?: number, n12?: number, n13?: number, n21?: number, n22?: number, n23?: number, n31?: number, n32?: number, n33?: number);
|
6 |
+
equals(m: Matrix3): boolean;
|
7 |
+
multiply(v: Matrix3): Matrix3;
|
8 |
+
clone(): Matrix3;
|
9 |
+
static Eye(v?: number): Matrix3;
|
10 |
+
static Diagonal(v: Vector3): Matrix3;
|
11 |
+
static RotationFromQuaternion(q: Quaternion): Matrix3;
|
12 |
+
static RotationFromEuler(m: Vector3): Matrix3;
|
13 |
+
toString(): string;
|
14 |
+
}
|
15 |
+
export { Matrix3 };
|
dist/math/Matrix4.d.ts
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Quaternion } from "./Quaternion";
|
2 |
+
import { Vector3 } from "./Vector3";
|
3 |
+
declare class Matrix4 {
|
4 |
+
readonly buffer: number[];
|
5 |
+
constructor(n11?: number, n12?: number, n13?: number, n14?: number, n21?: number, n22?: number, n23?: number, n24?: number, n31?: number, n32?: number, n33?: number, n34?: number, n41?: number, n42?: number, n43?: number, n44?: number);
|
6 |
+
equals(m: Matrix4): boolean;
|
7 |
+
multiply(m: Matrix4): Matrix4;
|
8 |
+
clone(): Matrix4;
|
9 |
+
determinant(): number;
|
10 |
+
invert(): Matrix4;
|
11 |
+
static Compose(position: Vector3, rotation: Quaternion, scale: Vector3): Matrix4;
|
12 |
+
toString(): string;
|
13 |
+
}
|
14 |
+
export { Matrix4 };
|
dist/math/Plane.d.ts
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Vector3 } from "./Vector3";
|
2 |
+
declare class Plane {
|
3 |
+
readonly normal: Vector3;
|
4 |
+
readonly point: Vector3;
|
5 |
+
constructor(normal: Vector3, point: Vector3);
|
6 |
+
intersect(origin: Vector3, direction: Vector3): Vector3 | null;
|
7 |
+
}
|
8 |
+
export { Plane };
|
dist/math/Quaternion.d.ts
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Matrix3 } from "./Matrix3";
|
2 |
+
import { Vector3 } from "./Vector3";
|
3 |
+
declare class Quaternion {
|
4 |
+
readonly x: number;
|
5 |
+
readonly y: number;
|
6 |
+
readonly z: number;
|
7 |
+
readonly w: number;
|
8 |
+
constructor(x?: number, y?: number, z?: number, w?: number);
|
9 |
+
equals(q: Quaternion): boolean;
|
10 |
+
normalize(): Quaternion;
|
11 |
+
multiply(q: Quaternion): Quaternion;
|
12 |
+
inverse(): Quaternion;
|
13 |
+
apply(v: Vector3): Vector3;
|
14 |
+
flat(): number[];
|
15 |
+
clone(): Quaternion;
|
16 |
+
static FromEuler(e: Vector3): Quaternion;
|
17 |
+
toEuler(): Vector3;
|
18 |
+
static FromMatrix3(matrix: Matrix3): Quaternion;
|
19 |
+
static FromAxisAngle(axis: Vector3, angle: number): Quaternion;
|
20 |
+
static LookRotation(direction: Vector3): Quaternion;
|
21 |
+
toString(): string;
|
22 |
+
}
|
23 |
+
export { Quaternion };
|
dist/math/Vector3.d.ts
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Matrix4 } from "./Matrix4";
|
2 |
+
declare class Vector3 {
|
3 |
+
readonly x: number;
|
4 |
+
readonly y: number;
|
5 |
+
readonly z: number;
|
6 |
+
constructor(x?: number, y?: number, z?: number);
|
7 |
+
equals(v: Vector3): boolean;
|
8 |
+
add(v: number): Vector3;
|
9 |
+
add(v: Vector3): Vector3;
|
10 |
+
subtract(v: number): Vector3;
|
11 |
+
subtract(v: Vector3): Vector3;
|
12 |
+
multiply(v: number): Vector3;
|
13 |
+
multiply(v: Vector3): Vector3;
|
14 |
+
multiply(v: Matrix4): Vector3;
|
15 |
+
divide(v: number): Vector3;
|
16 |
+
divide(v: Vector3): Vector3;
|
17 |
+
cross(v: Vector3): Vector3;
|
18 |
+
dot(v: Vector3): number;
|
19 |
+
lerp(v: Vector3, t: number): Vector3;
|
20 |
+
min(v: Vector3): Vector3;
|
21 |
+
max(v: Vector3): Vector3;
|
22 |
+
getComponent(axis: number): number;
|
23 |
+
minComponent(): number;
|
24 |
+
maxComponent(): number;
|
25 |
+
magnitude(): number;
|
26 |
+
distanceTo(v: Vector3): number;
|
27 |
+
normalize(): Vector3;
|
28 |
+
flat(): number[];
|
29 |
+
clone(): Vector3;
|
30 |
+
toString(): string;
|
31 |
+
static One(value?: number): Vector3;
|
32 |
+
}
|
33 |
+
export { Vector3 };
|
dist/math/Vector4.d.ts
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Matrix4 } from "./Matrix4";
|
2 |
+
declare class Vector4 {
|
3 |
+
readonly x: number;
|
4 |
+
readonly y: number;
|
5 |
+
readonly z: number;
|
6 |
+
readonly w: number;
|
7 |
+
constructor(x?: number, y?: number, z?: number, w?: number);
|
8 |
+
equals(v: Vector4): boolean;
|
9 |
+
add(v: number): Vector4;
|
10 |
+
add(v: Vector4): Vector4;
|
11 |
+
subtract(v: number): Vector4;
|
12 |
+
subtract(v: Vector4): Vector4;
|
13 |
+
multiply(v: number): Vector4;
|
14 |
+
multiply(v: Vector4): Vector4;
|
15 |
+
multiply(v: Matrix4): Vector4;
|
16 |
+
dot(v: Vector4): number;
|
17 |
+
lerp(v: Vector4, t: number): Vector4;
|
18 |
+
magnitude(): number;
|
19 |
+
distanceTo(v: Vector4): number;
|
20 |
+
normalize(): Vector4;
|
21 |
+
flat(): number[];
|
22 |
+
clone(): Vector4;
|
23 |
+
toString(): string;
|
24 |
+
}
|
25 |
+
export { Vector4 };
|
dist/renderers/WebGLRenderer.d.ts
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import type { Scene } from "../core/Scene";
|
2 |
+
import { Camera } from "../cameras/Camera";
|
3 |
+
import { Color32 } from "../math/Color32";
|
4 |
+
import { ShaderProgram } from "./webgl/programs/ShaderProgram";
|
5 |
+
import { RenderProgram } from "./webgl/programs/RenderProgram";
|
6 |
+
import { ShaderPass } from "./webgl/passes/ShaderPass";
|
7 |
+
export declare class WebGLRenderer {
|
8 |
+
private _canvas;
|
9 |
+
private _gl;
|
10 |
+
private _backgroundColor;
|
11 |
+
private _renderProgram;
|
12 |
+
addProgram: (program: ShaderProgram) => void;
|
13 |
+
removeProgram: (program: ShaderProgram) => void;
|
14 |
+
resize: () => void;
|
15 |
+
setSize: (width: number, height: number) => void;
|
16 |
+
render: (scene: Scene, camera: Camera) => void;
|
17 |
+
dispose: () => void;
|
18 |
+
constructor(optionalCanvas?: HTMLCanvasElement | null, optionalRenderPasses?: ShaderPass[] | null);
|
19 |
+
get canvas(): HTMLCanvasElement;
|
20 |
+
get gl(): WebGL2RenderingContext;
|
21 |
+
get renderProgram(): RenderProgram;
|
22 |
+
get backgroundColor(): Color32;
|
23 |
+
set backgroundColor(value: Color32);
|
24 |
+
}
|
dist/renderers/webgl/passes/FadeInPass.d.ts
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { ShaderProgram } from "../programs/ShaderProgram";
|
2 |
+
import { ShaderPass } from "./ShaderPass";
|
3 |
+
declare class FadeInPass implements ShaderPass {
|
4 |
+
initialize: (program: ShaderProgram) => void;
|
5 |
+
render: () => void;
|
6 |
+
constructor(speed?: number);
|
7 |
+
dispose(): void;
|
8 |
+
}
|
9 |
+
export { FadeInPass };
|
dist/renderers/webgl/passes/ShaderPass.d.ts
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { ShaderProgram } from "../programs/ShaderProgram";
|
2 |
+
declare class ShaderPass {
|
3 |
+
initialize(program: ShaderProgram): void;
|
4 |
+
render(): void;
|
5 |
+
dispose(): void;
|
6 |
+
}
|
7 |
+
export { ShaderPass };
|
dist/renderers/webgl/programs/RenderProgram.d.ts
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { ShaderProgram } from "./ShaderProgram";
|
2 |
+
import { ShaderPass } from "../passes/ShaderPass";
|
3 |
+
import { RenderData } from "../utils/RenderData";
|
4 |
+
import { Color32 } from "../../../math/Color32";
|
5 |
+
import { WebGLRenderer } from "../../WebGLRenderer";
|
6 |
+
declare class RenderProgram extends ShaderProgram {
|
7 |
+
private _outlineThickness;
|
8 |
+
private _outlineColor;
|
9 |
+
private _renderData;
|
10 |
+
private _depthIndex;
|
11 |
+
private _splatTexture;
|
12 |
+
private _worker;
|
13 |
+
protected _initialize: () => void;
|
14 |
+
protected _resize: () => void;
|
15 |
+
protected _render: () => void;
|
16 |
+
protected _dispose: () => void;
|
17 |
+
private _setOutlineThickness;
|
18 |
+
private _setOutlineColor;
|
19 |
+
constructor(renderer: WebGLRenderer, passes: ShaderPass[]);
|
20 |
+
get renderData(): RenderData | null;
|
21 |
+
get depthIndex(): Uint32Array;
|
22 |
+
get splatTexture(): WebGLTexture | null;
|
23 |
+
get outlineThickness(): number;
|
24 |
+
set outlineThickness(value: number);
|
25 |
+
get outlineColor(): Color32;
|
26 |
+
set outlineColor(value: Color32);
|
27 |
+
get worker(): Worker | null;
|
28 |
+
protected _getVertexSource(): string;
|
29 |
+
protected _getFragmentSource(): string;
|
30 |
+
}
|
31 |
+
export { RenderProgram };
|
dist/renderers/webgl/programs/ShaderProgram.d.ts
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Camera } from "../../../cameras/Camera";
|
2 |
+
import { Scene } from "../../../core/Scene";
|
3 |
+
import { WebGLRenderer } from "../../WebGLRenderer";
|
4 |
+
import { ShaderPass } from "../passes/ShaderPass";
|
5 |
+
declare abstract class ShaderProgram {
|
6 |
+
private _renderer;
|
7 |
+
private _program;
|
8 |
+
private _passes;
|
9 |
+
protected _scene: Scene | null;
|
10 |
+
protected _camera: Camera | null;
|
11 |
+
protected _started: boolean;
|
12 |
+
protected _initialized: boolean;
|
13 |
+
protected abstract _initialize: () => void;
|
14 |
+
protected abstract _resize: () => void;
|
15 |
+
protected abstract _render: () => void;
|
16 |
+
protected abstract _dispose: () => void;
|
17 |
+
initialize: () => void;
|
18 |
+
resize: () => void;
|
19 |
+
render: (scene: Scene, camera: Camera) => void;
|
20 |
+
dispose: () => void;
|
21 |
+
constructor(renderer: WebGLRenderer, passes: ShaderPass[]);
|
22 |
+
get renderer(): WebGLRenderer;
|
23 |
+
get scene(): Scene | null;
|
24 |
+
get camera(): Camera | null;
|
25 |
+
get program(): WebGLProgram;
|
26 |
+
get passes(): ShaderPass[];
|
27 |
+
get started(): boolean;
|
28 |
+
protected abstract _getVertexSource(): string;
|
29 |
+
protected abstract _getFragmentSource(): string;
|
30 |
+
}
|
31 |
+
export { ShaderProgram };
|
dist/renderers/webgl/programs/VideoRenderProgram.d.ts
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { SplatvData } from "../../../splats/SplatvData";
|
2 |
+
import { WebGLRenderer } from "../../WebGLRenderer";
|
3 |
+
import { ShaderPass } from "../passes/ShaderPass";
|
4 |
+
import { ShaderProgram } from "./ShaderProgram";
|
5 |
+
declare class VideoRenderProgram extends ShaderProgram {
|
6 |
+
private _renderData;
|
7 |
+
private _depthIndex;
|
8 |
+
private _splatTexture;
|
9 |
+
protected _initialize: () => void;
|
10 |
+
protected _resize: () => void;
|
11 |
+
protected _render: () => void;
|
12 |
+
protected _dispose: () => void;
|
13 |
+
constructor(renderer: WebGLRenderer, passes?: ShaderPass[]);
|
14 |
+
get renderData(): SplatvData | null;
|
15 |
+
protected _getVertexSource(): string;
|
16 |
+
protected _getFragmentSource(): string;
|
17 |
+
}
|
18 |
+
export { VideoRenderProgram };
|
dist/renderers/webgl/utils/DataWorker.d.ts
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
export {};
|
dist/renderers/webgl/utils/IntersectionTester.d.ts
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Splat } from "../../../splats/Splat";
|
2 |
+
import { RenderProgram } from "../programs/RenderProgram";
|
3 |
+
declare class IntersectionTester {
|
4 |
+
testPoint: (x: number, y: number) => Splat | null;
|
5 |
+
constructor(renderProgram: RenderProgram, maxDistance?: number, resolution?: number);
|
6 |
+
}
|
7 |
+
export { IntersectionTester };
|
dist/renderers/webgl/utils/RenderData.d.ts
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Scene } from "../../../core/Scene";
|
2 |
+
import { Splat } from "../../../splats/Splat";
|
3 |
+
declare class RenderData {
|
4 |
+
dataChanged: boolean;
|
5 |
+
transformsChanged: boolean;
|
6 |
+
colorTransformsChanged: boolean;
|
7 |
+
private _splatIndices;
|
8 |
+
private _offsets;
|
9 |
+
private _data;
|
10 |
+
private _width;
|
11 |
+
private _height;
|
12 |
+
private _transforms;
|
13 |
+
private _transformsWidth;
|
14 |
+
private _transformsHeight;
|
15 |
+
private _transformIndices;
|
16 |
+
private _transformIndicesWidth;
|
17 |
+
private _transformIndicesHeight;
|
18 |
+
private _colorTransforms;
|
19 |
+
private _colorTransformsWidth;
|
20 |
+
private _colorTransformsHeight;
|
21 |
+
private _colorTransformIndices;
|
22 |
+
private _colorTransformIndicesWidth;
|
23 |
+
private _colorTransformIndicesHeight;
|
24 |
+
private _positions;
|
25 |
+
private _rotations;
|
26 |
+
private _scales;
|
27 |
+
private _vertexCount;
|
28 |
+
private _updating;
|
29 |
+
private _dirty;
|
30 |
+
private _worker;
|
31 |
+
getSplat: (index: number) => Splat | null;
|
32 |
+
getLocalIndex: (splat: Splat, index: number) => number;
|
33 |
+
markDirty: (splat: Splat) => void;
|
34 |
+
rebuild: () => void;
|
35 |
+
dispose: () => void;
|
36 |
+
constructor(scene: Scene);
|
37 |
+
get offsets(): Map<Splat, number>;
|
38 |
+
get data(): Uint32Array;
|
39 |
+
get width(): number;
|
40 |
+
get height(): number;
|
41 |
+
get transforms(): Float32Array;
|
42 |
+
get transformsWidth(): number;
|
43 |
+
get transformsHeight(): number;
|
44 |
+
get transformIndices(): Uint32Array;
|
45 |
+
get transformIndicesWidth(): number;
|
46 |
+
get transformIndicesHeight(): number;
|
47 |
+
get colorTransforms(): Float32Array;
|
48 |
+
get colorTransformsWidth(): number;
|
49 |
+
get colorTransformsHeight(): number;
|
50 |
+
get colorTransformIndices(): Uint32Array;
|
51 |
+
get colorTransformIndicesWidth(): number;
|
52 |
+
get colorTransformIndicesHeight(): number;
|
53 |
+
get positions(): Float32Array;
|
54 |
+
get rotations(): Float32Array;
|
55 |
+
get scales(): Float32Array;
|
56 |
+
get vertexCount(): number;
|
57 |
+
get needsRebuild(): boolean;
|
58 |
+
get updating(): boolean;
|
59 |
+
}
|
60 |
+
export { RenderData };
|
dist/renderers/webgl/utils/SortWorker.d.ts
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
export {};
|
dist/splats/Splat.d.ts
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { SplatData } from "./SplatData";
|
2 |
+
import { Object3D } from "../core/Object3D";
|
3 |
+
import { Matrix4 } from "../math/Matrix4";
|
4 |
+
import { Box3 } from "../math/Box3";
|
5 |
+
declare class Splat extends Object3D {
|
6 |
+
selectedChanged: boolean;
|
7 |
+
colorTransformChanged: boolean;
|
8 |
+
private _data;
|
9 |
+
private _selected;
|
10 |
+
private _colorTransforms;
|
11 |
+
private _colorTransformsMap;
|
12 |
+
private _bounds;
|
13 |
+
recalculateBounds: () => void;
|
14 |
+
constructor(splat?: SplatData | undefined);
|
15 |
+
saveToFile(name?: string | null, format?: "splat" | "ply"): void;
|
16 |
+
get data(): SplatData;
|
17 |
+
get selected(): boolean;
|
18 |
+
set selected(selected: boolean);
|
19 |
+
get colorTransforms(): Matrix4[];
|
20 |
+
get colorTransformsMap(): Map<number, number>;
|
21 |
+
get bounds(): Box3;
|
22 |
+
clone(): Splat;
|
23 |
+
}
|
24 |
+
export { Splat };
|
dist/splats/SplatData.d.ts
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Vector3 } from "../math/Vector3";
|
2 |
+
import { Quaternion } from "../math/Quaternion";
|
3 |
+
declare class SplatData {
|
4 |
+
static RowLength: number;
|
5 |
+
changed: boolean;
|
6 |
+
detached: boolean;
|
7 |
+
private _vertexCount;
|
8 |
+
private _positions;
|
9 |
+
private _rotations;
|
10 |
+
private _scales;
|
11 |
+
private _colors;
|
12 |
+
private _selection;
|
13 |
+
translate: (translation: Vector3) => void;
|
14 |
+
rotate: (rotation: Quaternion) => void;
|
15 |
+
scale: (scale: Vector3) => void;
|
16 |
+
serialize: () => Uint8Array;
|
17 |
+
reattach: (positions: ArrayBufferLike, rotations: ArrayBufferLike, scales: ArrayBufferLike, colors: ArrayBufferLike, selection: ArrayBufferLike) => void;
|
18 |
+
constructor(vertexCount?: number, positions?: Float32Array | null, rotations?: Float32Array | null, scales?: Float32Array | null, colors?: Uint8Array | null);
|
19 |
+
static Deserialize(data: Uint8Array): SplatData;
|
20 |
+
get vertexCount(): number;
|
21 |
+
get positions(): Float32Array;
|
22 |
+
get rotations(): Float32Array;
|
23 |
+
get scales(): Float32Array;
|
24 |
+
get colors(): Uint8Array;
|
25 |
+
get selection(): Uint8Array;
|
26 |
+
clone(): SplatData;
|
27 |
+
}
|
28 |
+
export { SplatData };
|
dist/splats/Splatv.d.ts
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Object3D } from "../core/Object3D";
|
2 |
+
import { SplatvData } from "./SplatvData";
|
3 |
+
declare class Splatv extends Object3D {
|
4 |
+
private _data;
|
5 |
+
constructor(splat: SplatvData);
|
6 |
+
get data(): SplatvData;
|
7 |
+
}
|
8 |
+
export { Splatv };
|
dist/splats/SplatvData.d.ts
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
declare class SplatvData {
|
2 |
+
static RowLength: number;
|
3 |
+
private _vertexCount;
|
4 |
+
private _positions;
|
5 |
+
private _data;
|
6 |
+
private _width;
|
7 |
+
private _height;
|
8 |
+
serialize: () => Uint8Array;
|
9 |
+
constructor(vertexCount: number, positions: Float32Array, data: Uint32Array, width: number, height: number);
|
10 |
+
static Deserialize(data: Uint8Array, width: number, height: number): SplatvData;
|
11 |
+
get vertexCount(): number;
|
12 |
+
get positions(): Float32Array;
|
13 |
+
get data(): Uint32Array;
|
14 |
+
get width(): number;
|
15 |
+
get height(): number;
|
16 |
+
}
|
17 |
+
export { SplatvData };
|
dist/utils/Converter.d.ts
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
declare class Converter {
|
2 |
+
static SH_C0: number;
|
3 |
+
static SplatToPLY(buffer: ArrayBuffer, vertexCount: number): ArrayBuffer;
|
4 |
+
}
|
5 |
+
export { Converter };
|
dist/utils/LoaderUtils.d.ts
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
export declare function initiateFetchRequest(url: string, useCache: boolean): Promise<Response>;
|
2 |
+
export declare function loadDataIntoBuffer(res: Response, onProgress?: (progress: number) => void): Promise<Uint8Array>;
|
3 |
+
export declare function loadChunkedDataIntoBuffer(res: Response, onProgress?: (progress: number) => void): Promise<Uint8Array>;
|
4 |
+
export declare function loadRequestDataIntoBuffer(res: Response, onProgress?: (progress: number) => void): Promise<Uint8Array>;
|
dist/wasm/data.d.ts
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
interface WasmModule {
|
2 |
+
_malloc(size: number): number;
|
3 |
+
_free(ptr: number): void;
|
4 |
+
_pack(
|
5 |
+
selected: boolean,
|
6 |
+
vertexCount: number,
|
7 |
+
positions: number,
|
8 |
+
rotations: number,
|
9 |
+
scales: number,
|
10 |
+
colors: number,
|
11 |
+
selection: number,
|
12 |
+
data: number,
|
13 |
+
worldPositions: number,
|
14 |
+
worldRotations: number,
|
15 |
+
worldScales: number,
|
16 |
+
): void;
|
17 |
+
}
|
18 |
+
|
19 |
+
declare const loadWasm: () => Promise<WasmModule>;
|
20 |
+
export default loadWasm;
|
dist/wasm/data.js
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var loadWasm = (() => {
|
2 |
+
var _scriptName = import.meta.url;
|
3 |
+
|
4 |
+
return (
|
5 |
+
async function(moduleArg = {}) {
|
6 |
+
var moduleRtn;
|
7 |
+
|
8 |
+
var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=true;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var scriptDirectory="";var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["m"]()}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile="data:application/octet-stream;base64,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AkcNASABQQE6ADYPCyAAKAIIIgAgASACIAMgBCAAKAIAKAIYEQIACwsxACAAIAEoAghBABALBEAgASACIAMQFA8LIAAoAggiACABIAIgAyAAKAIAKAIcEQAACxgAIAAgASgCCEEAEAsEQCABIAIgAxAUCwulBQEGfyMAQdAAayIEJAACQAJ/QQEgACABQQAQCw0AGkEAIAFFDQAaIwBBEGsiBiQAIAYgASgCACIDQQhrKAIAIgU2AgwgBiABIAVqNgIEIAYgA0EEaygCADYCCCAGKAIIIgNByAhBABALIQUgBigCBCEHAkAgBQRAIAYoAgwhASMAQUBqIgMkACADQUBrJABBACAHIAEbIQMMAQsgAyEFIwBBQGoiAyQAIAEgB04EQCADQgA3AhwgA0IANwIkIANCADcCLCADQgA3AhQgA0EANgIQIANByAg2AgwgAyAFNgIEIANBADYCPCADQoGAgICAgICAATcCNCADIAE2AgggBSADQQRqIAcgB0EBQQAgBSgCACgCFBEDACABQQAgAygCHBshCAsgA0FAayQAIAgiAw0AIwBBQGoiAyQAIANBADYCECADQZgINgIMIAMgATYCCCADQcgINgIEQQAhASADQRRqQQBBJ/wLACADQQA2AjwgA0EBOgA7IAUgA0EEaiAHQQFBACAFKAIAKAIYEQIAAkACQAJAIAMoAigOAgABAgsgAygCGEEAIAMoAiRBAUYbQQAgAygCIEEBRhtBACADKAIsQQFGGyEBDAELIAMoAhxBAUcEQCADKAIsDQEgAygCIEEBRw0BIAMoAiRBAUcNAQsgAygCFCEBCyADQUBrJAAgASEDCyAGQRBqJABBACADRQ0AGiACKAIAIgFFDQEgBEEYakEAQTj8CwAgBEEBOgBLIARBfzYCICAEIAA2AhwgBCADNgIUIARBATYCRCADIARBFGogAUEBIAMoAgAoAhwRAAAgBCgCLCIAQQFGBEAgAiAEKAIkNgIACyAAQQFGCyAEQdAAaiQADwsgBEHPCjYCCCAEQeUDNgIEIARBuQk2AgAQCQALCgAgACABQQAQCwsEACAACwvbEQIAQYAIC8oRBAkAAAgEAABTdDl0eXBlX2luZm8AAAAALAkAACQEAAAABAAATjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAALAkAAFQEAAAYBAAATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHVuc2lnbmVkIHNob3J0AHVuc2lnbmVkIGludABmbG9hdAB1aW50NjRfdAAlczolZDogJXMAdW5zaWduZWQgY2hhcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAYm9vbAB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBkb3VibGUAdm9pZABjYXRjaGluZyBhIGNsYXNzIHdpdGhvdXQgYW4gb2JqZWN0PwBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgAAAAAAAAAAFAgAAAEAAAACAAAAAwAAAAQAAAAFAAAALAkAACAIAAAYBAAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAAAIAABQCAAAdgAAAAAIAABcCAAAYgAAAAAIAABoCAAAYwAAAAAIAAB0CAAAaAAAAAAIAACACAAAYQAAAAAIAACMCAAAcwAAAAAIAACYCAAAdAAAAAAIAACkCAAAaQAAAAAIAACwCAAAagAAAAAIAAC8CAAAbAAAAAAIAADICAAAbQAAAAAIAADUCAAAeAAAAAAIAADgCAAAeQAAAAAIAADsCAAAZgAAAAAIAAD4CAAAZAAAAAAAAABIBAAAAQAAAAYAAAADAAAABAAAAAcAAAAIAAAACQAAAAoAAAAAAAAATAkAAAEAAAALAAAAAwAAAAQAAAAHAAAADAAAAA0AAAAOAAAALAkAAFgJAABIBAAATjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FAAAAAAQJAACICQAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAAQJAADQCQAATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUAAAQJAAAYCgAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURzTlNfMTFjaGFyX3RyYWl0c0lEc0VFTlNfOWFsbG9jYXRvcklEc0VFRUUAAAAECQAAZAoAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEaU5TXzExY2hhcl90cmFpdHNJRGlFRU5TXzlhbGxvY2F0b3JJRGlFRUVFAAAABAkAALAKAABOMTBlbXNjcmlwdGVuM3ZhbEUAAAQJAADMCgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAAAECQAA9AoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWFFRQAABAkAABwLAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAAAQJAABECwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAAAECQAAbAsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXRFRQAABAkAAJQLAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUAAAQJAAC8CwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAAAECQAA5AsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWxFRQAABAkAAAwMAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUAAAQJAAA0DAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeEVFAAAECQAAXAwAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXlFRQAABAkAAIQMAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lmRUUAAAQJAACsDAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAEHMGQsD0A4B";function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["l"];updateMemoryViews();removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(mod,inst)=>{receiveInstance(mod,inst);resolve(mod.exports)})})}try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.unshift(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.unshift(cb);var noExitRuntime=Module["noExitRuntime"]||true;var base64Decode=b64=>{var b1,b2,i=0,j=0,bLength=b64.length;var output=new Uint8Array((bLength*3>>2)-(b64[bLength-2]=="=")-(b64[bLength-1]=="="));for(;i<bLength;i+=4,j+=3){b1=base64ReverseLookup[b64.charCodeAt(i+1)];b2=base64ReverseLookup[b64.charCodeAt(i+2)];output[j]=base64ReverseLookup[b64.charCodeAt(i)]<<2|b1>>4;output[j+1]=b1<<4|b2>>2;output[j+2]=b2<<6|base64ReverseLookup[b64.charCodeAt(i+3)]}return output};var isDataURI=filename=>filename.startsWith(dataURIPrefix);var dataURIPrefix="data:application/octet-stream;base64,";var tryParseAsDataURI=filename=>{if(isDataURI(filename)){return base64Decode(filename.slice(dataURIPrefix.length))}};var __abort_js=()=>abort("");var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);var isUnsignedType=name.indexOf("u")!=-1;if(isUnsignedType){maxRange=(1n<<64n)-1n}registerType(primitiveType,{name,fromWireType:value=>value,toWireType:function(destructors,value){if(typeof value!="bigint"&&typeof value!="number"){throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${this.name}`)}if(typeof value=="number"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<<bitshift>>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=true;registerType(rawType,{name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAPU8[payload+i])}str=a.join("")}_free(value);return str},toWireType(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var length;var valueIsOfTypeString=typeof value=="string";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError("Cannot pass non-string to std::string")}if(stdStringIsUTF8&&valueIsOfTypeString){length=lengthBytesUTF8(value)}else{length=value.length}var base=_malloc(4+length+1);var ptr=base+4;HEAPU32[base>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(base);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i<length;++i){HEAPU8[ptr+i]=value[i]}}}if(destructors!==null){destructors.push(_free,base)}return base},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>HEAPU16[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>HEAPU32[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=HEAPU32[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};for(var base64ReverseLookup=new Uint8Array(123),i=25;i>=0;--i){base64ReverseLookup[48+i]=52+i;base64ReverseLookup[65+i]=i;base64ReverseLookup[97+i]=26+i}base64ReverseLookup[43]=62;base64ReverseLookup[47]=63;embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_emval();var wasmImports={j:__abort_js,e:__embind_register_bigint,h:__embind_register_bool,f:__embind_register_emval,d:__embind_register_float,b:__embind_register_integer,a:__embind_register_memory_view,g:__embind_register_std_string,c:__embind_register_std_wstring,i:__embind_register_void,k:_emscripten_resize_heap};var wasmExports=await createWasm();var ___wasm_call_ctors=wasmExports["m"];var _pack=Module["_pack"]=wasmExports["n"];var _malloc=Module["_malloc"]=wasmExports["o"];var _free=Module["_free"]=wasmExports["p"];function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise;
|
9 |
+
|
10 |
+
|
11 |
+
return moduleRtn;
|
12 |
+
}
|
13 |
+
);
|
14 |
+
})();
|
15 |
+
export default loadWasm;
|
dist/wasm/sort.d.ts
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
interface WasmModule {
|
2 |
+
_malloc(size: number): number;
|
3 |
+
_free(ptr: number): void;
|
4 |
+
_sort(
|
5 |
+
viewProj: number,
|
6 |
+
transforms: number,
|
7 |
+
transformIndices: number,
|
8 |
+
vertexCount: number,
|
9 |
+
positions: number,
|
10 |
+
depthBuffer: number,
|
11 |
+
depthIndex: number,
|
12 |
+
starts: number,
|
13 |
+
counts: number,
|
14 |
+
): void;
|
15 |
+
}
|
16 |
+
|
17 |
+
declare const loadWasm: () => Promise<WasmModule>;
|
18 |
+
export default loadWasm;
|
dist/wasm/sort.js
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var loadWasm = (() => {
|
2 |
+
var _scriptName = import.meta.url;
|
3 |
+
|
4 |
+
return (
|
5 |
+
async function(moduleArg = {}) {
|
6 |
+
var moduleRtn;
|
7 |
+
|
8 |
+
var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=true;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var scriptDirectory="";var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["m"]()}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile="data:application/octet-stream;base64,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LAsL9QEAIAAgASgCCCAEEAsEQCABIAIgAxASDwsCQCAAIAEoAgAgBBALBEACQCABKAIQIAJHBEAgAiABKAIURw0BCyADQQFHDQIgAUEBNgIgDwsgASADNgIgAkAgASgCLEEERg0AIAFBADsBNCAAKAIIIgAgASACIAJBASAEIAAoAgAoAhQRAwAgAS0ANUEBRgRAIAFBAzYCLCABLQA0RQ0BDAMLIAFBBDYCLAsgASACNgIUIAEgASgCKEEBajYCKCABKAIkQQFHDQEgASgCGEECRw0BIAFBAToANg8LIAAoAggiACABIAIgAyAEIAAoAgAoAhgRAgALCzEAIAAgASgCCEEAEAsEQCABIAIgAxAUDwsgACgCCCIAIAEgAiADIAAoAgAoAhwRAAALGAAgACABKAIIQQAQCwRAIAEgAiADEBQLC6UFAQZ/IwBB0ABrIgQkAAJAAn9BASAAIAFBABALDQAaQQAgAUUNABojAEEQayIGJAAgBiABKAIAIgNBCGsoAgAiBTYCDCAGIAEgBWo2AgQgBiADQQRrKAIANgIIIAYoAggiA0HICEEAEAshBSAGKAIEIQcCQCAFBEAgBigCDCEBIwBBQGoiAyQAIANBQGskAEEAIAcgARshAwwBCyADIQUjAEFAaiIDJAAgASAHTgRAIANCADcCHCADQgA3AiQgA0IANwIsIANCADcCFCADQQA2AhAgA0HICDYCDCADIAU2AgQgA0EANgI8IANCgYCAgICAgIABNwI0IAMgATYCCCAFIANBBGogByAHQQFBACAFKAIAKAIUEQMAIAFBACADKAIcGyEICyADQUBrJAAgCCIDDQAjAEFAaiIDJAAgA0EANgIQIANBmAg2AgwgAyABNgIIIANByAg2AgRBACEBIANBFGpBAEEn/AsAIANBADYCPCADQQE6ADsgBSADQQRqIAdBAUEAIAUoAgAoAhgRAgACQAJAAkAgAygCKA4CAAECCyADKAIYQQAgAygCJEEBRhtBACADKAIgQQFGG0EAIAMoAixBAUYbIQEMAQsgAygCHEEBRwRAIAMoAiwNASADKAIgQQFHDQEgAygCJEEBRw0BCyADKAIUIQELIANBQGskACABIQMLIAZBEGokAEEAIANFDQAaIAIoAgAiAUUNASAEQRhqQQBBOPwLACAEQQE6AEsgBEF/NgIgIAQgADYCHCAEIAM2AhQgBEEBNgJEIAMgBEEUaiABQQEgAygCACgCHBEAACAEKAIsIgBBAUYEQCACIAQoAiQ2AgALIABBAUYLIARB0ABqJAAPCyAEQc8KNgIIIARB5QM2AgQgBEG5CTYCABAJAAsKACAAIAFBABALC8YEAgZ/Cn1B/////wchDEGAgICAeCENQX8hCQNAIAMgCkYEQEEAIQAgCEEAQYCAEPwLAEMA/39HIA0gDGuylSEPBSAEIApBDGxqIgsqAgAhEyALKgIIIRQgCyoCBCEVIAkgAiAKQQJ0Ig5qKAIAIgtHBEAgASALQdAAbGoiCSoCPCAAKgI4Ig+UIAkqAjggACoCKCIQlCAJKgIwIAAqAggiEZQgACoCGCISIAkqAjSUkpKSIRYgCSoCLCAPlCAJKgIoIBCUIAkqAiAgEZQgEiAJKgIklJKSkiEXIAkqAhwgD5QgCSoCGCAQlCAJKgIQIBGUIBIgCSoCFJSSkpIhGCAJKgIMIA+UIAkqAgggEJQgCSoCACARlCAJKgIEIBKUkpKSIQ8gCyEJCyAFIA5qIBYgFyAUlCAPIBOUIBUgGJSSkpJDAACARZT8ACILNgIAIAwgCyALIAxKGyEMIA0gCyALIA1IGyENIApBAWohCgwBCwsDQCAAIANGRQRAIAUgAEECdGoiASAPIAEoAgAgDGuzlPwBIgE2AgAgCCABQQJ0aiIBIAEoAgBBAWo2AgAgAEEBaiEADAELC0EAIQAgB0EANgIAIAhBBGshAUEAIQxBASEKA0AgCkGAgARGBEADQAJAIAAgA0YNACAHIAUgAEECdGooAgBBAnRqIgEgASgCACIBQQFqNgIAIAYgAUECdGogADYCACAAQQFqIQAMAQsLBSAHIApBAnQiAmogASACaigCACAMaiIMNgIAIApBAWohCgwBCwsLC9sRAgBBgAgLyhEECQAACAQAAFN0OXR5cGVfaW5mbwAAAAAsCQAAJAQAAAAEAABOMTBfX2N4eGFiaXYxMTZfX3NoaW1fdHlwZV9pbmZvRQAAAAAsCQAAVAQAABgEAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAdW5zaWduZWQgc2hvcnQAdW5zaWduZWQgaW50AGZsb2F0AHVpbnQ2NF90ACVzOiVkOiAlcwB1bnNpZ25lZCBjaGFyAC9lbXNkay9lbXNjcmlwdGVuL3N5c3RlbS9saWIvbGliY3h4YWJpL3NyYy9wcml2YXRlX3R5cGVpbmZvLmNwcABib29sAHVuc2lnbmVkIGxvbmcAc3RkOjp3c3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGRvdWJsZQB2b2lkAGNhdGNoaW5nIGEgY2xhc3Mgd2l0aG91dCBhbiBvYmplY3Q/AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AAAAAAAAAAAUCAAAAQAAAAIAAAADAAAABAAAAAUAAAAsCQAAIAgAABgEAABOMTBfX2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0UAAAgAAFAIAAB2AAAAAAgAAFwIAABiAAAAAAgAAGgIAABjAAAAAAgAAHQIAABoAAAAAAgAAIAIAABhAAAAAAgAAIwIAABzAAAAAAgAAJgIAAB0AAAAAAgAAKQIAABpAAAAAAgAALAIAABqAAAAAAgAALwIAABsAAAAAAgAAMgIAABtAAAAAAgAANQIAAB4AAAAAAgAAOAIAAB5AAAAAAgAAOwIAABmAAAAAAgAAPgIAABkAAAAAAAAAEgEAAABAAAABgAAAAMAAAAEAAAABwAAAAgAAAAJAAAACgAAAAAAAABMCQAAAQAAAAsAAAADAAAABAAAAAcAAAAMAAAADQAAAA4AAAAsCQAAWAkAAEgEAABOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UAAAAABAkAAIgJAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAABAkAANAJAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAABAkAABgKAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAAQJAABkCgAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAAAECQAAsAoAAE4xMGVtc2NyaXB0ZW4zdmFsRQAABAkAAMwKAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ljRUUAAAQJAAD0CgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAAAECQAAHAsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWhFRQAABAkAAEQLAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lzRUUAAAQJAABsCwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJdEVFAAAECQAAlAsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWlFRQAABAkAALwLAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lqRUUAAAQJAADkCwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbEVFAAAECQAADAwAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SW1FRQAABAkAADQMAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l4RUUAAAQJAABcDAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeUVFAAAECQAAhAwAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQAABAkAAKwMAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUAQcwZCwPQDgE=";function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["l"];updateMemoryViews();removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(mod,inst)=>{receiveInstance(mod,inst);resolve(mod.exports)})})}try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.unshift(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.unshift(cb);var noExitRuntime=Module["noExitRuntime"]||true;var base64Decode=b64=>{var b1,b2,i=0,j=0,bLength=b64.length;var output=new Uint8Array((bLength*3>>2)-(b64[bLength-2]=="=")-(b64[bLength-1]=="="));for(;i<bLength;i+=4,j+=3){b1=base64ReverseLookup[b64.charCodeAt(i+1)];b2=base64ReverseLookup[b64.charCodeAt(i+2)];output[j]=base64ReverseLookup[b64.charCodeAt(i)]<<2|b1>>4;output[j+1]=b1<<4|b2>>2;output[j+2]=b2<<6|base64ReverseLookup[b64.charCodeAt(i+3)]}return output};var isDataURI=filename=>filename.startsWith(dataURIPrefix);var dataURIPrefix="data:application/octet-stream;base64,";var tryParseAsDataURI=filename=>{if(isDataURI(filename)){return base64Decode(filename.slice(dataURIPrefix.length))}};var __abort_js=()=>abort("");var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);var isUnsignedType=name.indexOf("u")!=-1;if(isUnsignedType){maxRange=(1n<<64n)-1n}registerType(primitiveType,{name,fromWireType:value=>value,toWireType:function(destructors,value){if(typeof value!="bigint"&&typeof value!="number"){throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${this.name}`)}if(typeof value=="number"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<<bitshift>>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=true;registerType(rawType,{name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i<length;++i){a[i]=String.fromCharCode(HEAPU8[payload+i])}str=a.join("")}_free(value);return str},toWireType(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var length;var valueIsOfTypeString=typeof value=="string";if(!(valueIsOfTypeString||value instanceof Uint8Array||value instanceof Uint8ClampedArray||value instanceof Int8Array)){throwBindingError("Cannot pass non-string to std::string")}if(stdStringIsUTF8&&valueIsOfTypeString){length=lengthBytesUTF8(value)}else{length=value.length}var base=_malloc(4+length+1);var ptr=base+4;HEAPU32[base>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(base);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i<length;++i){HEAPU8[ptr+i]=value[i]}}}if(destructors!==null){destructors.push(_free,base)}return base},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>HEAPU16[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>HEAPU32[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=HEAPU32[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};for(var base64ReverseLookup=new Uint8Array(123),i=25;i>=0;--i){base64ReverseLookup[48+i]=52+i;base64ReverseLookup[65+i]=i;base64ReverseLookup[97+i]=26+i}base64ReverseLookup[43]=62;base64ReverseLookup[47]=63;embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_emval();var wasmImports={j:__abort_js,e:__embind_register_bigint,h:__embind_register_bool,f:__embind_register_emval,d:__embind_register_float,b:__embind_register_integer,a:__embind_register_memory_view,g:__embind_register_std_string,c:__embind_register_std_wstring,i:__embind_register_void,k:_emscripten_resize_heap};var wasmExports=await createWasm();var ___wasm_call_ctors=wasmExports["m"];var _sort=Module["_sort"]=wasmExports["n"];var _malloc=Module["_malloc"]=wasmExports["o"];var _free=Module["_free"]=wasmExports["p"];function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise;
|
9 |
+
|
10 |
+
|
11 |
+
return moduleRtn;
|
12 |
+
}
|
13 |
+
);
|
14 |
+
})();
|
15 |
+
export default loadWasm;
|