@jdultra/threedtiles 13.0.7 → 13.0.9
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/dist/threedtiles.cjs.js +14 -19
- package/dist/threedtiles.cjs.js.map +1 -1
- package/dist/threedtiles.es.js +658 -638
- package/dist/threedtiles.es.js.map +1 -1
- package/dist/threedtiles.umd.js +14 -19
- package/dist/threedtiles.umd.js.map +1 -1
- package/package.json +2 -1
package/dist/threedtiles.es.js
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var Je = (o, e, t) =>
|
|
1
|
+
var GA = Object.defineProperty;
|
|
2
|
+
var NA = (o, e, t) => e in o ? GA(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
|
|
3
|
+
var Je = (o, e, t) => NA(o, typeof e != "symbol" ? e + "" : e, t);
|
|
4
4
|
import * as j from "three";
|
|
5
|
-
import { Matrix3 as
|
|
6
|
-
|
|
5
|
+
import { Matrix3 as na, Vector3 as K, Box3 as oa, Matrix4 as it, Ray as _A, BufferGeometry as ca, BufferAttribute as Pe, TrianglesDrawMode as PA, TriangleFanDrawMode as Xt, TriangleStripDrawMode as eA, Loader as da, LoaderUtils as lt, FileLoader as Xe, Color as Oe, LinearSRGBColorSpace as be, SpotLight as OA, PointLight as HA, DirectionalLight as qA, MeshBasicMaterial as ot, SRGBColorSpace as ve, MeshPhysicalMaterial as me, Vector2 as tA, Quaternion as aA, InstancedMesh as JA, InstancedBufferAttribute as Zt, Object3D as AA, TextureLoader as KA, ImageBitmapLoader as zA, InterleavedBuffer as VA, InterleavedBufferAttribute as YA, LinearFilter as ut, LinearMipmapLinearFilter as ha, RepeatWrapping as $t, NearestFilter as P, PointsMaterial as WA, Material as jt, LineBasicMaterial as XA, MeshStandardMaterial as fa, DoubleSide as ZA, PropertyBinding as $A, SkinnedMesh as ei, Mesh as ea, LineSegments as ti, Line as ai, LineLoop as Ai, Points as ii, Group as Rt, PerspectiveCamera as si, MathUtils as ri, OrthographicCamera as iA, Skeleton as ni, AnimationClip as oi, Bone as ci, InterpolateLinear as sA, ColorManagement as ta, NearestMipmapNearestFilter as di, LinearMipmapNearestFilter as hi, NearestMipmapLinearFilter as li, ClampToEdgeWrapping as bi, MirroredRepeatWrapping as gi, InterpolateDiscrete as fi, FrontSide as wt, Texture as ua, VectorKeyframeTrack as Ia, NumberKeyframeTrack as pa, QuaternionKeyframeTrack as Ba, Sphere as ui, Interpolant as Ii, CompressedCubeTexture as pi, CompressedArrayTexture as Bi, CompressedTexture as ma, RGBAFormat as Be, RGBA_ASTC_4x4_Format as rA, RGB_BPTC_UNSIGNED_Format as mi, RGBA_BPTC_Format as Ci, RGBA_ETC2_EAC_Format as Ei, RGBA_PVRTC_4BPPV1_Format as Qi, RGBA_S3TC_DXT5_Format as yi, RGB_ETC1_Format as wi, RGB_ETC2_Format as xi, RGB_PVRTC_4BPPV1_Format as ki, RGBA_S3TC_DXT1_Format as Di, UnsignedByteType as ue, HalfFloatType as et, FloatType as W, DataTexture as ct, Data3DTexture as ji, NoColorSpace as Ri, RGFormat as dt, RedFormat as ht, RGBA_ASTC_6x6_Format as Ca, WebGL3DRenderTarget as Ue, ShaderMaterial as Mt, AlwaysDepth as Mi, InstancedBufferGeometry as Ea, DynamicDrawUsage as Qa, Scene as vi, PlaneGeometry as Ti } from "three";
|
|
6
|
+
function It(o, e) {
|
|
7
|
+
for (var t = 0; t < e.length; t++) {
|
|
8
|
+
const a = e[t];
|
|
9
|
+
if (typeof a != "string" && !Array.isArray(a)) {
|
|
10
|
+
for (const A in a) if (A !== "default" && !(A in o)) {
|
|
11
|
+
const s = Object.getOwnPropertyDescriptor(a, A);
|
|
12
|
+
s && Object.defineProperty(o, A, s.get ? s : { enumerable: !0, get: () => a[A] });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return Object.freeze(Object.defineProperty(o, Symbol.toStringTag, { value: "Module" }));
|
|
17
|
+
}
|
|
18
|
+
class $s {
|
|
7
19
|
constructor() {
|
|
8
20
|
this.cullMap = [], this.cullMaterial = new j.MeshBasicMaterial({ vertexColors: !0 }), this.cullMaterial.side = j.FrontSide, this.cullTarget = this._createCullTarget(), this.cullPixels = new Uint8Array(4 * this.cullTarget.width * this.cullTarget.height);
|
|
9
21
|
}
|
|
@@ -26,10 +38,10 @@ class Ps {
|
|
|
26
38
|
return this.cullMap[e];
|
|
27
39
|
}
|
|
28
40
|
}
|
|
29
|
-
const le = new
|
|
41
|
+
const le = new na(), te = new K(), ya = new K(), wa = new oa(), Bt = new it(), xa = new it(), ka = new _A();
|
|
30
42
|
class Re {
|
|
31
43
|
constructor(e) {
|
|
32
|
-
this.center = new K(e[0], e[1], e[2]), this.e1 = new K(e[3], e[4], e[5]), this.e2 = new K(e[6], e[7], e[8]), this.e3 = new K(e[9], e[10], e[11]), this.halfSize = new K(this.e1.length(), this.e2.length(), this.e3.length()), this.e1.normalize(), this.e2.normalize(), this.e3.normalize(), this.rotationMatrix = new
|
|
44
|
+
this.center = new K(e[0], e[1], e[2]), this.e1 = new K(e[3], e[4], e[5]), this.e2 = new K(e[6], e[7], e[8]), this.e3 = new K(e[9], e[10], e[11]), this.halfSize = new K(this.e1.length(), this.e2.length(), this.e3.length()), this.e1.normalize(), this.e2.normalize(), this.e3.normalize(), this.rotationMatrix = new na(), this.rotationMatrix.set(this.e1.x, this.e1.y, this.e1.z, this.e2.x, this.e2.y, this.e2.z, this.e3.x, this.e3.y, this.e3.z);
|
|
33
45
|
}
|
|
34
46
|
copy(e) {
|
|
35
47
|
this.center.copy(e.center), this.rotationMatrix.copy(e.rotationMatrix), this.halfSize.copy(e.halfSize);
|
|
@@ -46,7 +58,7 @@ class Re {
|
|
|
46
58
|
return le.elements[0] *= i, le.elements[1] *= i, le.elements[2] *= i, le.elements[3] *= n, le.elements[4] *= n, le.elements[5] *= n, le.elements[6] *= l, le.elements[7] *= l, le.elements[8] *= l, this.rotationMatrix.multiply(le), this.halfSize.x *= a, this.halfSize.y *= A, this.halfSize.z *= s, te.setFromMatrixPosition(e), this.center.applyMatrix4(e), this;
|
|
47
59
|
}
|
|
48
60
|
intersectRay(e, t) {
|
|
49
|
-
return this.getSize(
|
|
61
|
+
return this.getSize(ya), wa.setFromCenterAndSize(te.set(0, 0, 0), ya), Bt.setFromMatrix3(this.rotationMatrix), Bt.setPosition(this.center), xa.copy(Bt).invert(), ka.copy(e).applyMatrix4(xa), ka.intersectBox(wa, t) ? t.applyMatrix4(Bt) : null;
|
|
50
62
|
}
|
|
51
63
|
intersectsRay(e) {
|
|
52
64
|
return this.intersectRay(e, te) !== null;
|
|
@@ -69,9 +81,25 @@ class Re {
|
|
|
69
81
|
return Math.sqrt(t * t + a * a + A * A);
|
|
70
82
|
}
|
|
71
83
|
}
|
|
72
|
-
function
|
|
84
|
+
function Dt(o) {
|
|
73
85
|
return o && o.__esModule && Object.prototype.hasOwnProperty.call(o, "default") ? o.default : o;
|
|
74
86
|
}
|
|
87
|
+
function pt(o) {
|
|
88
|
+
if (o.__esModule) return o;
|
|
89
|
+
var e = o.default;
|
|
90
|
+
if (typeof e == "function") {
|
|
91
|
+
var t = function a() {
|
|
92
|
+
return this instanceof a ? Reflect.construct(e, arguments, this.constructor) : e.apply(this, arguments);
|
|
93
|
+
};
|
|
94
|
+
t.prototype = e.prototype;
|
|
95
|
+
} else t = {};
|
|
96
|
+
return Object.defineProperty(t, "__esModule", { value: !0 }), Object.keys(o).forEach(function(a) {
|
|
97
|
+
var A = Object.getOwnPropertyDescriptor(o, a);
|
|
98
|
+
Object.defineProperty(t, a, A.get ? A : { enumerable: !0, get: function() {
|
|
99
|
+
return o[a];
|
|
100
|
+
} });
|
|
101
|
+
}), t;
|
|
102
|
+
}
|
|
75
103
|
/**
|
|
76
104
|
* @copyright 2021 Aaron Zhao <yujianzhao2013@gmail.com>
|
|
77
105
|
* @license MIT
|
|
@@ -80,7 +108,7 @@ function ki(o) {
|
|
|
80
108
|
* Parent is math.floor((m - 1) / 2) where m is is the child index
|
|
81
109
|
* @class Heap
|
|
82
110
|
*/
|
|
83
|
-
var
|
|
111
|
+
var Da = class {
|
|
84
112
|
constructor(o, e) {
|
|
85
113
|
if (this._data = [], this._comparator = function(t, a) {
|
|
86
114
|
return t >= a;
|
|
@@ -128,13 +156,8 @@ var Di = class {
|
|
|
128
156
|
this._comparator(this._data[o], this._data[a]) && (this.swap(o, a), this.heapifyDown(a));
|
|
129
157
|
}
|
|
130
158
|
};
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
* @license MIT
|
|
134
|
-
* FIFO queue data structure
|
|
135
|
-
* @class Queue
|
|
136
|
-
*/
|
|
137
|
-
var ji = class {
|
|
159
|
+
const Si = pt(It({ __proto__: null, default: Dt(Da) }, [Da]));
|
|
160
|
+
var ja = class {
|
|
138
161
|
constructor(o, e) {
|
|
139
162
|
if (this._data = [], this._head = 0, this._cap = null, o != null) {
|
|
140
163
|
if (!Array.isArray(o)) throw Error("Constructor expects data to be an array");
|
|
@@ -172,13 +195,8 @@ var ji = class {
|
|
|
172
195
|
return this._data.slice(this._head);
|
|
173
196
|
}
|
|
174
197
|
};
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
* @license MIT
|
|
178
|
-
* Linked hash map data structure
|
|
179
|
-
* @class LinkedHashMap
|
|
180
|
-
*/
|
|
181
|
-
var eA = { Heap: Di, Queue: ji, LinkedHashMap: class {
|
|
198
|
+
const Fi = pt(It({ __proto__: null, default: Dt(ja) }, [ja]));
|
|
199
|
+
var Ra = class {
|
|
182
200
|
constructor() {
|
|
183
201
|
this._data = /* @__PURE__ */ new Map(), this._link = /* @__PURE__ */ new Map(), this._head = void 0, this._tail = void 0;
|
|
184
202
|
}
|
|
@@ -261,15 +279,15 @@ var eA = { Heap: Di, Queue: ji, LinkedHashMap: class {
|
|
|
261
279
|
}
|
|
262
280
|
return Array.from(this.keys()).map((e) => ({ key: e, value: this.get(e) }));
|
|
263
281
|
}
|
|
264
|
-
} };
|
|
265
|
-
const
|
|
266
|
-
class
|
|
282
|
+
}, nA = { Heap: Si, Queue: Fi, LinkedHashMap: pt(It({ __proto__: null, default: Dt(Ra) }, [Ra])) };
|
|
283
|
+
const Li = new TextDecoder();
|
|
284
|
+
class oA {
|
|
267
285
|
constructor(e, t, a, A) {
|
|
268
286
|
this.buffer = e, this.binOffset = t + a, this.binLength = A;
|
|
269
287
|
let s = null;
|
|
270
288
|
if (a !== 0) try {
|
|
271
289
|
const i = new Uint8Array(e, t, a);
|
|
272
|
-
s = JSON.parse(
|
|
290
|
+
s = JSON.parse(Li.decode(i));
|
|
273
291
|
} catch {
|
|
274
292
|
s = {};
|
|
275
293
|
}
|
|
@@ -341,7 +359,7 @@ class tA {
|
|
|
341
359
|
return i;
|
|
342
360
|
}
|
|
343
361
|
}
|
|
344
|
-
class
|
|
362
|
+
class Ui extends oA {
|
|
345
363
|
constructor(e, t, a, A, s) {
|
|
346
364
|
super(e, a, A, s), this.batchSize = t;
|
|
347
365
|
}
|
|
@@ -349,7 +367,7 @@ class Mi extends tA {
|
|
|
349
367
|
return super.getData(e, this.batchSize, t, a);
|
|
350
368
|
}
|
|
351
369
|
}
|
|
352
|
-
function
|
|
370
|
+
function Ma(o) {
|
|
353
371
|
let e, t, a, A = -1, s = 0;
|
|
354
372
|
for (let h = 0; h < o.length; ++h) {
|
|
355
373
|
const b = o[h];
|
|
@@ -374,9 +392,9 @@ function ya(o) {
|
|
|
374
392
|
}
|
|
375
393
|
return A !== void 0 && (n.gpuType = A), n;
|
|
376
394
|
}
|
|
377
|
-
function
|
|
378
|
-
if (e ===
|
|
379
|
-
if (e ===
|
|
395
|
+
function va(o, e) {
|
|
396
|
+
if (e === PA) return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), o;
|
|
397
|
+
if (e === Xt || e === eA) {
|
|
380
398
|
let t = o.getIndex();
|
|
381
399
|
if (t === null) {
|
|
382
400
|
const i = [], n = o.getAttribute("position");
|
|
@@ -385,7 +403,7 @@ function wa(o, e) {
|
|
|
385
403
|
o.setIndex(i), t = o.getIndex();
|
|
386
404
|
}
|
|
387
405
|
const a = t.count - 2, A = [];
|
|
388
|
-
if (e ===
|
|
406
|
+
if (e === Xt) for (let i = 1; i <= a; i++) A.push(t.getX(0)), A.push(t.getX(i)), A.push(t.getX(i + 1));
|
|
389
407
|
else for (let i = 0; i < a; i++) i % 2 == 0 ? (A.push(t.getX(i)), A.push(t.getX(i + 1)), A.push(t.getX(i + 2))) : (A.push(t.getX(i + 2)), A.push(t.getX(i + 1)), A.push(t.getX(i)));
|
|
390
408
|
A.length / 3 !== a && console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");
|
|
391
409
|
const s = o.clone();
|
|
@@ -393,7 +411,7 @@ function wa(o, e) {
|
|
|
393
411
|
}
|
|
394
412
|
return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:", e), o;
|
|
395
413
|
}
|
|
396
|
-
class
|
|
414
|
+
class cA {
|
|
397
415
|
constructor(e) {
|
|
398
416
|
Je(this, "checkLoaderInitialized", async () => new Promise((e) => {
|
|
399
417
|
const t = setInterval(() => {
|
|
@@ -407,15 +425,15 @@ class aA {
|
|
|
407
425
|
console.assert(n === "b3dm");
|
|
408
426
|
const l = i.getUint32(8, !0);
|
|
409
427
|
console.assert(l === e.byteLength);
|
|
410
|
-
const h = i.getUint32(12, !0), b = i.getUint32(16, !0), g = i.getUint32(20, !0), f = i.getUint32(24, !0), I = new
|
|
411
|
-
new
|
|
428
|
+
const h = i.getUint32(12, !0), b = i.getUint32(16, !0), g = i.getUint32(20, !0), f = i.getUint32(24, !0), I = new oA(e, 28, h, b), u = 28 + h + b;
|
|
429
|
+
new Ui(e, I.getData("BATCH_LENGTH"), u, g, f);
|
|
412
430
|
const p = u + g + f, m = new Uint8Array(e, p, l - p).slice().buffer;
|
|
413
|
-
return new Promise(async (
|
|
431
|
+
return new Promise(async (C, E) => {
|
|
414
432
|
await this.checkLoaderInitialized(), this.gltfLoader.parse(m, null, (x) => {
|
|
415
433
|
const w = I.getData("RTC_CENTER");
|
|
416
434
|
w ? (this.tempMatrix.makeTranslation(w[0], w[1], w[2]), x.scene.applyMatrix4(this.tempMatrix)) : x.userData.gltfExtensions && x.userData.gltfExtensions.CESIUM_RTC && (this.tempMatrix.makeTranslation(x.userData.gltfExtensions.CESIUM_RTC.center[0], x.userData.gltfExtensions.CESIUM_RTC.center[1], x.userData.gltfExtensions.CESIUM_RTC.center[2]), x.scene.applyMatrix4(this.tempMatrix)), a && x.scene.applyMatrix4(s.zUpToYUpMatrix), x.scene.asset = x.asset, x.scene.traverse((M) => {
|
|
417
435
|
M.isMesh && (A && M.applyMatrix4(s.zUpToYUpMatrix), t && t(M));
|
|
418
|
-
}),
|
|
436
|
+
}), C(x.scene);
|
|
419
437
|
}, (x) => {
|
|
420
438
|
console.error(x);
|
|
421
439
|
});
|
|
@@ -434,8 +452,8 @@ class aA {
|
|
|
434
452
|
}), g.forEach((u) => {
|
|
435
453
|
f.forEach((p) => {
|
|
436
454
|
if (!u.attributes[p]) {
|
|
437
|
-
const m = function(
|
|
438
|
-
switch (
|
|
455
|
+
const m = function(E) {
|
|
456
|
+
switch (E) {
|
|
439
457
|
case "position":
|
|
440
458
|
case "normal":
|
|
441
459
|
case "color":
|
|
@@ -444,27 +462,27 @@ class aA {
|
|
|
444
462
|
case "uv2":
|
|
445
463
|
return 2;
|
|
446
464
|
default:
|
|
447
|
-
throw new Error(`Unknown attribute ${
|
|
465
|
+
throw new Error(`Unknown attribute ${E}`);
|
|
448
466
|
}
|
|
449
|
-
}(p),
|
|
450
|
-
u.setAttribute(p, new j.BufferAttribute(
|
|
467
|
+
}(p), C = new Float32Array(m * u.getAttribute("position").count).fill(0);
|
|
468
|
+
u.setAttribute(p, new j.BufferAttribute(C, m));
|
|
451
469
|
}
|
|
452
470
|
});
|
|
453
471
|
}), function(u, p = !1) {
|
|
454
|
-
const m = u[0].index !== null,
|
|
472
|
+
const m = u[0].index !== null, C = new Set(Object.keys(u[0].attributes)), E = new Set(Object.keys(u[0].morphAttributes)), x = {}, w = {}, M = u[0].morphTargetsRelative, T = new ca();
|
|
455
473
|
let v = 0;
|
|
456
474
|
for (let k = 0; k < u.length; ++k) {
|
|
457
475
|
const R = u[k];
|
|
458
476
|
let S = 0;
|
|
459
477
|
if (m !== (R.index !== null)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + k + ". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."), null;
|
|
460
478
|
for (const F in R.attributes) {
|
|
461
|
-
if (!
|
|
479
|
+
if (!C.has(F)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + k + '. All geometries must have compatible attributes; make sure "' + F + '" attribute exists among all geometries, or in none of them.'), null;
|
|
462
480
|
x[F] === void 0 && (x[F] = []), x[F].push(R.attributes[F]), S++;
|
|
463
481
|
}
|
|
464
|
-
if (S !==
|
|
482
|
+
if (S !== C.size) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + k + ". Make sure all geometries have the same number of attributes."), null;
|
|
465
483
|
if (M !== R.morphTargetsRelative) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + k + ". .morphTargetsRelative must be consistent throughout all geometries."), null;
|
|
466
484
|
for (const F in R.morphAttributes) {
|
|
467
|
-
if (!
|
|
485
|
+
if (!E.has(F)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + k + ". .morphAttributes must be consistent throughout all geometries."), null;
|
|
468
486
|
w[F] === void 0 && (w[F] = []), w[F].push(R.morphAttributes[F]);
|
|
469
487
|
}
|
|
470
488
|
if (p) {
|
|
@@ -488,7 +506,7 @@ class aA {
|
|
|
488
506
|
T.setIndex(R);
|
|
489
507
|
}
|
|
490
508
|
for (const k in x) {
|
|
491
|
-
const R =
|
|
509
|
+
const R = Ma(x[k]);
|
|
492
510
|
if (!R) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + k + " attribute."), null;
|
|
493
511
|
T.setAttribute(k, R);
|
|
494
512
|
}
|
|
@@ -499,7 +517,7 @@ class aA {
|
|
|
499
517
|
for (let S = 0; S < R; ++S) {
|
|
500
518
|
const F = [];
|
|
501
519
|
for (let Ae = 0; Ae < w[k].length; ++Ae) F.push(w[k][Ae][S]);
|
|
502
|
-
const z =
|
|
520
|
+
const z = Ma(F);
|
|
503
521
|
if (!z) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + k + " morphAttribute."), null;
|
|
504
522
|
T.morphAttributes[k].push(z);
|
|
505
523
|
}
|
|
@@ -511,25 +529,25 @@ class aA {
|
|
|
511
529
|
});
|
|
512
530
|
}
|
|
513
531
|
}
|
|
514
|
-
var
|
|
515
|
-
function
|
|
516
|
-
if (!
|
|
517
|
-
return
|
|
532
|
+
var vt, Gi = new Uint8Array(16);
|
|
533
|
+
function Ni() {
|
|
534
|
+
if (!vt && !(vt = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto < "u" && typeof msCrypto.getRandomValues == "function" && msCrypto.getRandomValues.bind(msCrypto))) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
535
|
+
return vt(Gi);
|
|
518
536
|
}
|
|
519
|
-
const
|
|
520
|
-
for (var $ = [],
|
|
521
|
-
function
|
|
537
|
+
const _i = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
|
|
538
|
+
for (var $ = [], Tt = 0; Tt < 256; ++Tt) $.push((Tt + 256).toString(16).substr(1));
|
|
539
|
+
function Pi(o) {
|
|
522
540
|
var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, t = ($[o[e + 0]] + $[o[e + 1]] + $[o[e + 2]] + $[o[e + 3]] + "-" + $[o[e + 4]] + $[o[e + 5]] + "-" + $[o[e + 6]] + $[o[e + 7]] + "-" + $[o[e + 8]] + $[o[e + 9]] + "-" + $[o[e + 10]] + $[o[e + 11]] + $[o[e + 12]] + $[o[e + 13]] + $[o[e + 14]] + $[o[e + 15]]).toLowerCase();
|
|
523
541
|
if (!function(a) {
|
|
524
|
-
return typeof a == "string" &&
|
|
542
|
+
return typeof a == "string" && _i.test(a);
|
|
525
543
|
}(t)) throw TypeError("Stringified UUID is invalid");
|
|
526
544
|
return t;
|
|
527
545
|
}
|
|
528
|
-
function
|
|
529
|
-
var a = (o = o || {}).random || (o.rng ||
|
|
530
|
-
return a[6] = 15 & a[6] | 64, a[8] = 63 & a[8] | 128,
|
|
546
|
+
function dA(o, e, t) {
|
|
547
|
+
var a = (o = o || {}).random || (o.rng || Ni)();
|
|
548
|
+
return a[6] = 15 & a[6] | 64, a[8] = 63 & a[8] | 128, Pi(a);
|
|
531
549
|
}
|
|
532
|
-
class
|
|
550
|
+
class Oi {
|
|
533
551
|
constructor(e, t) {
|
|
534
552
|
Je(this, "checkLoaderInitialized", async () => {
|
|
535
553
|
const e = this;
|
|
@@ -556,42 +574,42 @@ class Li {
|
|
|
556
574
|
});
|
|
557
575
|
}
|
|
558
576
|
}
|
|
559
|
-
class
|
|
577
|
+
class hA extends da {
|
|
560
578
|
constructor(e) {
|
|
561
579
|
super(e), this.dracoLoader = null, this.ktx2Loader = null, this.meshoptDecoder = null, this.pluginCallbacks = [], this.register(function(t) {
|
|
562
|
-
return new
|
|
580
|
+
return new zi(t);
|
|
563
581
|
}), this.register(function(t) {
|
|
564
|
-
return new
|
|
582
|
+
return new Vi(t);
|
|
565
583
|
}), this.register(function(t) {
|
|
566
|
-
return new
|
|
584
|
+
return new As(t);
|
|
567
585
|
}), this.register(function(t) {
|
|
568
|
-
return new
|
|
586
|
+
return new is(t);
|
|
569
587
|
}), this.register(function(t) {
|
|
570
|
-
return new
|
|
588
|
+
return new ss(t);
|
|
571
589
|
}), this.register(function(t) {
|
|
572
|
-
return new
|
|
590
|
+
return new Wi(t);
|
|
573
591
|
}), this.register(function(t) {
|
|
574
|
-
return new
|
|
592
|
+
return new Xi(t);
|
|
575
593
|
}), this.register(function(t) {
|
|
576
|
-
return new
|
|
594
|
+
return new Zi(t);
|
|
577
595
|
}), this.register(function(t) {
|
|
578
|
-
return new
|
|
596
|
+
return new $i(t);
|
|
579
597
|
}), this.register(function(t) {
|
|
580
|
-
return new
|
|
598
|
+
return new Ki(t);
|
|
581
599
|
}), this.register(function(t) {
|
|
582
|
-
return new
|
|
600
|
+
return new es(t);
|
|
583
601
|
}), this.register(function(t) {
|
|
584
|
-
return new
|
|
602
|
+
return new Yi(t);
|
|
585
603
|
}), this.register(function(t) {
|
|
586
|
-
return new
|
|
604
|
+
return new as(t);
|
|
587
605
|
}), this.register(function(t) {
|
|
588
|
-
return new
|
|
606
|
+
return new ts(t);
|
|
589
607
|
}), this.register(function(t) {
|
|
590
|
-
return new
|
|
608
|
+
return new qi(t);
|
|
591
609
|
}), this.register(function(t) {
|
|
592
|
-
return new
|
|
610
|
+
return new rs(t);
|
|
593
611
|
}), this.register(function(t) {
|
|
594
|
-
return new
|
|
612
|
+
return new ns(t);
|
|
595
613
|
});
|
|
596
614
|
}
|
|
597
615
|
load(e, t, a, A) {
|
|
@@ -599,13 +617,13 @@ class iA extends na {
|
|
|
599
617
|
let i;
|
|
600
618
|
if (this.resourcePath !== "") i = this.resourcePath;
|
|
601
619
|
else if (this.path !== "") {
|
|
602
|
-
const h =
|
|
603
|
-
i =
|
|
604
|
-
} else i =
|
|
620
|
+
const h = lt.extractUrlBase(e);
|
|
621
|
+
i = lt.resolveURL(h, this.path);
|
|
622
|
+
} else i = lt.extractUrlBase(e);
|
|
605
623
|
this.manager.itemStart(e);
|
|
606
624
|
const n = function(h) {
|
|
607
625
|
A ? A(h) : console.error(h), s.manager.itemError(e), s.manager.itemEnd(e);
|
|
608
|
-
}, l = new
|
|
626
|
+
}, l = new Xe(this.manager);
|
|
609
627
|
l.setPath(this.path), l.setResponseType("arraybuffer"), l.setRequestHeader(this.requestHeader), l.setWithCredentials(this.withCredentials), l.load(e, function(h) {
|
|
610
628
|
try {
|
|
611
629
|
s.parse(h, i, function(b) {
|
|
@@ -636,9 +654,9 @@ class iA extends na {
|
|
|
636
654
|
const i = {}, n = {}, l = new TextDecoder();
|
|
637
655
|
if (typeof e == "string") s = JSON.parse(e);
|
|
638
656
|
else if (e instanceof ArrayBuffer)
|
|
639
|
-
if (l.decode(new Uint8Array(e, 0, 4)) ===
|
|
657
|
+
if (l.decode(new Uint8Array(e, 0, 4)) === lA) {
|
|
640
658
|
try {
|
|
641
|
-
i[U.KHR_BINARY_GLTF] = new
|
|
659
|
+
i[U.KHR_BINARY_GLTF] = new ds(e);
|
|
642
660
|
} catch (b) {
|
|
643
661
|
return void (A && A(b));
|
|
644
662
|
}
|
|
@@ -646,7 +664,7 @@ class iA extends na {
|
|
|
646
664
|
} else s = JSON.parse(l.decode(e));
|
|
647
665
|
else s = e;
|
|
648
666
|
if (s.asset === void 0 || s.asset.version[0] < 2) return void (A && A(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));
|
|
649
|
-
const h = new
|
|
667
|
+
const h = new Qs(s, { path: t || this.resourcePath || "", crossOrigin: this.crossOrigin, requestHeader: this.requestHeader, manager: this.manager, ktx2Loader: this.ktx2Loader, meshoptDecoder: this.meshoptDecoder });
|
|
650
668
|
h.fileLoader.setRequestHeader(this.requestHeader);
|
|
651
669
|
for (let b = 0; b < this.pluginCallbacks.length; b++) {
|
|
652
670
|
const g = this.pluginCallbacks[b](h);
|
|
@@ -656,16 +674,16 @@ class iA extends na {
|
|
|
656
674
|
const g = s.extensionsUsed[b], f = s.extensionsRequired || [];
|
|
657
675
|
switch (g) {
|
|
658
676
|
case U.KHR_MATERIALS_UNLIT:
|
|
659
|
-
i[g] = new
|
|
677
|
+
i[g] = new Ji();
|
|
660
678
|
break;
|
|
661
679
|
case U.KHR_DRACO_MESH_COMPRESSION:
|
|
662
|
-
i[g] = new
|
|
680
|
+
i[g] = new hs(s, this.dracoLoader);
|
|
663
681
|
break;
|
|
664
682
|
case U.KHR_TEXTURE_TRANSFORM:
|
|
665
|
-
i[g] = new
|
|
683
|
+
i[g] = new ls();
|
|
666
684
|
break;
|
|
667
685
|
case U.KHR_MESH_QUANTIZATION:
|
|
668
|
-
i[g] = new
|
|
686
|
+
i[g] = new bs();
|
|
669
687
|
break;
|
|
670
688
|
default:
|
|
671
689
|
f.indexOf(g) >= 0 && n[g] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + g + '".');
|
|
@@ -680,7 +698,7 @@ class iA extends na {
|
|
|
680
698
|
});
|
|
681
699
|
}
|
|
682
700
|
}
|
|
683
|
-
function
|
|
701
|
+
function Hi() {
|
|
684
702
|
let o = {};
|
|
685
703
|
return { get: function(e) {
|
|
686
704
|
return o[e];
|
|
@@ -693,7 +711,7 @@ function Ui() {
|
|
|
693
711
|
} };
|
|
694
712
|
}
|
|
695
713
|
const U = { KHR_BINARY_GLTF: "KHR_binary_glTF", KHR_DRACO_MESH_COMPRESSION: "KHR_draco_mesh_compression", KHR_LIGHTS_PUNCTUAL: "KHR_lights_punctual", KHR_MATERIALS_CLEARCOAT: "KHR_materials_clearcoat", KHR_MATERIALS_DISPERSION: "KHR_materials_dispersion", KHR_MATERIALS_IOR: "KHR_materials_ior", KHR_MATERIALS_SHEEN: "KHR_materials_sheen", KHR_MATERIALS_SPECULAR: "KHR_materials_specular", KHR_MATERIALS_TRANSMISSION: "KHR_materials_transmission", KHR_MATERIALS_IRIDESCENCE: "KHR_materials_iridescence", KHR_MATERIALS_ANISOTROPY: "KHR_materials_anisotropy", KHR_MATERIALS_UNLIT: "KHR_materials_unlit", KHR_MATERIALS_VOLUME: "KHR_materials_volume", KHR_TEXTURE_BASISU: "KHR_texture_basisu", KHR_TEXTURE_TRANSFORM: "KHR_texture_transform", KHR_MESH_QUANTIZATION: "KHR_mesh_quantization", KHR_MATERIALS_EMISSIVE_STRENGTH: "KHR_materials_emissive_strength", EXT_MATERIALS_BUMP: "EXT_materials_bump", EXT_TEXTURE_WEBP: "EXT_texture_webp", EXT_TEXTURE_AVIF: "EXT_texture_avif", EXT_MESHOPT_COMPRESSION: "EXT_meshopt_compression", EXT_MESH_GPU_INSTANCING: "EXT_mesh_gpu_instancing" };
|
|
696
|
-
class
|
|
714
|
+
class qi {
|
|
697
715
|
constructor(e) {
|
|
698
716
|
this.parser = e, this.name = U.KHR_LIGHTS_PUNCTUAL, this.cache = { refs: {}, uses: {} };
|
|
699
717
|
}
|
|
@@ -710,18 +728,18 @@ class Gi {
|
|
|
710
728
|
if (A) return A;
|
|
711
729
|
const s = t.json, i = ((s.extensions && s.extensions[this.name] || {}).lights || [])[e];
|
|
712
730
|
let n;
|
|
713
|
-
const l = new
|
|
731
|
+
const l = new Oe(16777215);
|
|
714
732
|
i.color !== void 0 && l.setRGB(i.color[0], i.color[1], i.color[2], be);
|
|
715
733
|
const h = i.range !== void 0 ? i.range : 0;
|
|
716
734
|
switch (i.type) {
|
|
717
735
|
case "directional":
|
|
718
|
-
n = new
|
|
736
|
+
n = new qA(l), n.target.position.set(0, 0, -1), n.add(n.target);
|
|
719
737
|
break;
|
|
720
738
|
case "point":
|
|
721
|
-
n = new
|
|
739
|
+
n = new HA(l), n.distance = h;
|
|
722
740
|
break;
|
|
723
741
|
case "spot":
|
|
724
|
-
n = new
|
|
742
|
+
n = new OA(l), n.distance = h, i.spot = i.spot || {}, i.spot.innerConeAngle = i.spot.innerConeAngle !== void 0 ? i.spot.innerConeAngle : 0, i.spot.outerConeAngle = i.spot.outerConeAngle !== void 0 ? i.spot.outerConeAngle : Math.PI / 4, n.angle = i.spot.outerConeAngle, n.penumbra = 1 - i.spot.innerConeAngle / i.spot.outerConeAngle, n.target.position.set(0, 0, -1), n.add(n.target);
|
|
725
743
|
break;
|
|
726
744
|
default:
|
|
727
745
|
throw new Error("THREE.GLTFLoader: Unexpected light type: " + i.type);
|
|
@@ -738,16 +756,16 @@ class Gi {
|
|
|
738
756
|
});
|
|
739
757
|
}
|
|
740
758
|
}
|
|
741
|
-
class
|
|
759
|
+
class Ji {
|
|
742
760
|
constructor() {
|
|
743
761
|
this.name = U.KHR_MATERIALS_UNLIT;
|
|
744
762
|
}
|
|
745
763
|
getMaterialType() {
|
|
746
|
-
return
|
|
764
|
+
return ot;
|
|
747
765
|
}
|
|
748
766
|
extendParams(e, t, a) {
|
|
749
767
|
const A = [];
|
|
750
|
-
e.color = new
|
|
768
|
+
e.color = new Oe(1, 1, 1), e.opacity = 1;
|
|
751
769
|
const s = t.pbrMetallicRoughness;
|
|
752
770
|
if (s) {
|
|
753
771
|
if (Array.isArray(s.baseColorFactor)) {
|
|
@@ -759,7 +777,7 @@ class Ni {
|
|
|
759
777
|
return Promise.all(A);
|
|
760
778
|
}
|
|
761
779
|
}
|
|
762
|
-
class
|
|
780
|
+
class Ki {
|
|
763
781
|
constructor(e) {
|
|
764
782
|
this.parser = e, this.name = U.KHR_MATERIALS_EMISSIVE_STRENGTH;
|
|
765
783
|
}
|
|
@@ -770,7 +788,7 @@ class _i {
|
|
|
770
788
|
return A !== void 0 && (t.emissiveIntensity = A), Promise.resolve();
|
|
771
789
|
}
|
|
772
790
|
}
|
|
773
|
-
class
|
|
791
|
+
class zi {
|
|
774
792
|
constructor(e) {
|
|
775
793
|
this.parser = e, this.name = U.KHR_MATERIALS_CLEARCOAT;
|
|
776
794
|
}
|
|
@@ -784,12 +802,12 @@ class Pi {
|
|
|
784
802
|
const s = [], i = A.extensions[this.name];
|
|
785
803
|
if (i.clearcoatFactor !== void 0 && (t.clearcoat = i.clearcoatFactor), i.clearcoatTexture !== void 0 && s.push(a.assignTexture(t, "clearcoatMap", i.clearcoatTexture)), i.clearcoatRoughnessFactor !== void 0 && (t.clearcoatRoughness = i.clearcoatRoughnessFactor), i.clearcoatRoughnessTexture !== void 0 && s.push(a.assignTexture(t, "clearcoatRoughnessMap", i.clearcoatRoughnessTexture)), i.clearcoatNormalTexture !== void 0 && (s.push(a.assignTexture(t, "clearcoatNormalMap", i.clearcoatNormalTexture)), i.clearcoatNormalTexture.scale !== void 0)) {
|
|
786
804
|
const n = i.clearcoatNormalTexture.scale;
|
|
787
|
-
t.clearcoatNormalScale = new
|
|
805
|
+
t.clearcoatNormalScale = new tA(n, n);
|
|
788
806
|
}
|
|
789
807
|
return Promise.all(s);
|
|
790
808
|
}
|
|
791
809
|
}
|
|
792
|
-
class
|
|
810
|
+
class Vi {
|
|
793
811
|
constructor(e) {
|
|
794
812
|
this.parser = e, this.name = U.KHR_MATERIALS_DISPERSION;
|
|
795
813
|
}
|
|
@@ -804,7 +822,7 @@ class Hi {
|
|
|
804
822
|
return t.dispersion = A.dispersion !== void 0 ? A.dispersion : 0, Promise.resolve();
|
|
805
823
|
}
|
|
806
824
|
}
|
|
807
|
-
class
|
|
825
|
+
class Yi {
|
|
808
826
|
constructor(e) {
|
|
809
827
|
this.parser = e, this.name = U.KHR_MATERIALS_IRIDESCENCE;
|
|
810
828
|
}
|
|
@@ -819,7 +837,7 @@ class Oi {
|
|
|
819
837
|
return i.iridescenceFactor !== void 0 && (t.iridescence = i.iridescenceFactor), i.iridescenceTexture !== void 0 && s.push(a.assignTexture(t, "iridescenceMap", i.iridescenceTexture)), i.iridescenceIor !== void 0 && (t.iridescenceIOR = i.iridescenceIor), t.iridescenceThicknessRange === void 0 && (t.iridescenceThicknessRange = [100, 400]), i.iridescenceThicknessMinimum !== void 0 && (t.iridescenceThicknessRange[0] = i.iridescenceThicknessMinimum), i.iridescenceThicknessMaximum !== void 0 && (t.iridescenceThicknessRange[1] = i.iridescenceThicknessMaximum), i.iridescenceThicknessTexture !== void 0 && s.push(a.assignTexture(t, "iridescenceThicknessMap", i.iridescenceThicknessTexture)), Promise.all(s);
|
|
820
838
|
}
|
|
821
839
|
}
|
|
822
|
-
class
|
|
840
|
+
class Wi {
|
|
823
841
|
constructor(e) {
|
|
824
842
|
this.parser = e, this.name = U.KHR_MATERIALS_SHEEN;
|
|
825
843
|
}
|
|
@@ -831,7 +849,7 @@ class qi {
|
|
|
831
849
|
const a = this.parser, A = a.json.materials[e];
|
|
832
850
|
if (!A.extensions || !A.extensions[this.name]) return Promise.resolve();
|
|
833
851
|
const s = [];
|
|
834
|
-
t.sheenColor = new
|
|
852
|
+
t.sheenColor = new Oe(0, 0, 0), t.sheenRoughness = 0, t.sheen = 1;
|
|
835
853
|
const i = A.extensions[this.name];
|
|
836
854
|
if (i.sheenColorFactor !== void 0) {
|
|
837
855
|
const n = i.sheenColorFactor;
|
|
@@ -840,7 +858,7 @@ class qi {
|
|
|
840
858
|
return i.sheenRoughnessFactor !== void 0 && (t.sheenRoughness = i.sheenRoughnessFactor), i.sheenColorTexture !== void 0 && s.push(a.assignTexture(t, "sheenColorMap", i.sheenColorTexture, ve)), i.sheenRoughnessTexture !== void 0 && s.push(a.assignTexture(t, "sheenRoughnessMap", i.sheenRoughnessTexture)), Promise.all(s);
|
|
841
859
|
}
|
|
842
860
|
}
|
|
843
|
-
class
|
|
861
|
+
class Xi {
|
|
844
862
|
constructor(e) {
|
|
845
863
|
this.parser = e, this.name = U.KHR_MATERIALS_TRANSMISSION;
|
|
846
864
|
}
|
|
@@ -855,7 +873,7 @@ class Ji {
|
|
|
855
873
|
return i.transmissionFactor !== void 0 && (t.transmission = i.transmissionFactor), i.transmissionTexture !== void 0 && s.push(a.assignTexture(t, "transmissionMap", i.transmissionTexture)), Promise.all(s);
|
|
856
874
|
}
|
|
857
875
|
}
|
|
858
|
-
class
|
|
876
|
+
class Zi {
|
|
859
877
|
constructor(e) {
|
|
860
878
|
this.parser = e, this.name = U.KHR_MATERIALS_VOLUME;
|
|
861
879
|
}
|
|
@@ -869,10 +887,10 @@ class Ki {
|
|
|
869
887
|
const s = [], i = A.extensions[this.name];
|
|
870
888
|
t.thickness = i.thicknessFactor !== void 0 ? i.thicknessFactor : 0, i.thicknessTexture !== void 0 && s.push(a.assignTexture(t, "thicknessMap", i.thicknessTexture)), t.attenuationDistance = i.attenuationDistance || 1 / 0;
|
|
871
889
|
const n = i.attenuationColor || [1, 1, 1];
|
|
872
|
-
return t.attenuationColor = new
|
|
890
|
+
return t.attenuationColor = new Oe().setRGB(n[0], n[1], n[2], be), Promise.all(s);
|
|
873
891
|
}
|
|
874
892
|
}
|
|
875
|
-
class
|
|
893
|
+
class $i {
|
|
876
894
|
constructor(e) {
|
|
877
895
|
this.parser = e, this.name = U.KHR_MATERIALS_IOR;
|
|
878
896
|
}
|
|
@@ -887,7 +905,7 @@ class zi {
|
|
|
887
905
|
return t.ior = A.ior !== void 0 ? A.ior : 1.5, Promise.resolve();
|
|
888
906
|
}
|
|
889
907
|
}
|
|
890
|
-
class
|
|
908
|
+
class es {
|
|
891
909
|
constructor(e) {
|
|
892
910
|
this.parser = e, this.name = U.KHR_MATERIALS_SPECULAR;
|
|
893
911
|
}
|
|
@@ -901,10 +919,10 @@ class Vi {
|
|
|
901
919
|
const s = [], i = A.extensions[this.name];
|
|
902
920
|
t.specularIntensity = i.specularFactor !== void 0 ? i.specularFactor : 1, i.specularTexture !== void 0 && s.push(a.assignTexture(t, "specularIntensityMap", i.specularTexture));
|
|
903
921
|
const n = i.specularColorFactor || [1, 1, 1];
|
|
904
|
-
return t.specularColor = new
|
|
922
|
+
return t.specularColor = new Oe().setRGB(n[0], n[1], n[2], be), i.specularColorTexture !== void 0 && s.push(a.assignTexture(t, "specularColorMap", i.specularColorTexture, ve)), Promise.all(s);
|
|
905
923
|
}
|
|
906
924
|
}
|
|
907
|
-
class
|
|
925
|
+
class ts {
|
|
908
926
|
constructor(e) {
|
|
909
927
|
this.parser = e, this.name = U.EXT_MATERIALS_BUMP;
|
|
910
928
|
}
|
|
@@ -919,7 +937,7 @@ class Yi {
|
|
|
919
937
|
return t.bumpScale = i.bumpFactor !== void 0 ? i.bumpFactor : 1, i.bumpTexture !== void 0 && s.push(a.assignTexture(t, "bumpMap", i.bumpTexture)), Promise.all(s);
|
|
920
938
|
}
|
|
921
939
|
}
|
|
922
|
-
class
|
|
940
|
+
class as {
|
|
923
941
|
constructor(e) {
|
|
924
942
|
this.parser = e, this.name = U.KHR_MATERIALS_ANISOTROPY;
|
|
925
943
|
}
|
|
@@ -934,7 +952,7 @@ class Wi {
|
|
|
934
952
|
return i.anisotropyStrength !== void 0 && (t.anisotropy = i.anisotropyStrength), i.anisotropyRotation !== void 0 && (t.anisotropyRotation = i.anisotropyRotation), i.anisotropyTexture !== void 0 && s.push(a.assignTexture(t, "anisotropyMap", i.anisotropyTexture)), Promise.all(s);
|
|
935
953
|
}
|
|
936
954
|
}
|
|
937
|
-
class
|
|
955
|
+
class As {
|
|
938
956
|
constructor(e) {
|
|
939
957
|
this.parser = e, this.name = U.KHR_TEXTURE_BASISU;
|
|
940
958
|
}
|
|
@@ -949,7 +967,7 @@ class Xi {
|
|
|
949
967
|
return t.loadTextureImage(e, s.source, i);
|
|
950
968
|
}
|
|
951
969
|
}
|
|
952
|
-
class
|
|
970
|
+
class is {
|
|
953
971
|
constructor(e) {
|
|
954
972
|
this.parser = e, this.name = U.EXT_TEXTURE_WEBP, this.isSupported = null;
|
|
955
973
|
}
|
|
@@ -977,7 +995,7 @@ class Zi {
|
|
|
977
995
|
})), this.isSupported;
|
|
978
996
|
}
|
|
979
997
|
}
|
|
980
|
-
class
|
|
998
|
+
class ss {
|
|
981
999
|
constructor(e) {
|
|
982
1000
|
this.parser = e, this.name = U.EXT_TEXTURE_AVIF, this.isSupported = null;
|
|
983
1001
|
}
|
|
@@ -1005,7 +1023,7 @@ class $i {
|
|
|
1005
1023
|
})), this.isSupported;
|
|
1006
1024
|
}
|
|
1007
1025
|
}
|
|
1008
|
-
class
|
|
1026
|
+
class rs {
|
|
1009
1027
|
constructor(e) {
|
|
1010
1028
|
this.name = U.EXT_MESHOPT_COMPRESSION, this.parser = e;
|
|
1011
1029
|
}
|
|
@@ -1030,7 +1048,7 @@ class es {
|
|
|
1030
1048
|
return null;
|
|
1031
1049
|
}
|
|
1032
1050
|
}
|
|
1033
|
-
class
|
|
1051
|
+
class ns {
|
|
1034
1052
|
constructor(e) {
|
|
1035
1053
|
this.name = U.EXT_MESH_GPU_INSTANCING, this.parser = e;
|
|
1036
1054
|
}
|
|
@@ -1044,24 +1062,24 @@ class ts {
|
|
|
1044
1062
|
return i.length < 1 ? null : (i.push(this.parser.createNodeMesh(e)), Promise.all(i).then((l) => {
|
|
1045
1063
|
const h = l.pop(), b = h.isGroup ? h.children : [h], g = l[0].count, f = [];
|
|
1046
1064
|
for (const I of b) {
|
|
1047
|
-
const u = new
|
|
1048
|
-
for (let x = 0; x < g; x++) n.TRANSLATION && p.fromBufferAttribute(n.TRANSLATION, x), n.ROTATION && m.fromBufferAttribute(n.ROTATION, x), n.SCALE &&
|
|
1065
|
+
const u = new it(), p = new K(), m = new aA(), C = new K(1, 1, 1), E = new JA(I.geometry, I.material, g);
|
|
1066
|
+
for (let x = 0; x < g; x++) n.TRANSLATION && p.fromBufferAttribute(n.TRANSLATION, x), n.ROTATION && m.fromBufferAttribute(n.ROTATION, x), n.SCALE && C.fromBufferAttribute(n.SCALE, x), E.setMatrixAt(x, u.compose(p, m, C));
|
|
1049
1067
|
for (const x in n) if (x === "_COLOR_0") {
|
|
1050
1068
|
const w = n[x];
|
|
1051
|
-
|
|
1069
|
+
E.instanceColor = new Zt(w.array, w.itemSize, w.normalized);
|
|
1052
1070
|
} else x !== "TRANSLATION" && x !== "ROTATION" && x !== "SCALE" && I.geometry.setAttribute(x, n[x]);
|
|
1053
|
-
|
|
1071
|
+
AA.prototype.copy.call(E, I), this.parser.assignFinalMaterial(E), f.push(E);
|
|
1054
1072
|
}
|
|
1055
1073
|
return h.isGroup ? (h.clear(), h.add(...f), h) : f[0];
|
|
1056
1074
|
}));
|
|
1057
1075
|
}
|
|
1058
1076
|
}
|
|
1059
|
-
const
|
|
1060
|
-
class
|
|
1077
|
+
const lA = "glTF", os = 1313821514, cs = 5130562;
|
|
1078
|
+
class ds {
|
|
1061
1079
|
constructor(e) {
|
|
1062
1080
|
this.name = U.KHR_BINARY_GLTF, this.content = null, this.body = null;
|
|
1063
1081
|
const t = new DataView(e, 0, 12), a = new TextDecoder();
|
|
1064
|
-
if (this.header = { magic: a.decode(new Uint8Array(e.slice(0, 4))), version: t.getUint32(4, !0), length: t.getUint32(8, !0) }, this.header.magic !==
|
|
1082
|
+
if (this.header = { magic: a.decode(new Uint8Array(e.slice(0, 4))), version: t.getUint32(4, !0), length: t.getUint32(8, !0) }, this.header.magic !== lA) throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");
|
|
1065
1083
|
if (this.header.version < 2) throw new Error("THREE.GLTFLoader: Legacy binary file detected.");
|
|
1066
1084
|
const A = this.header.length - 12, s = new DataView(e, 12);
|
|
1067
1085
|
let i = 0;
|
|
@@ -1069,10 +1087,10 @@ class is {
|
|
|
1069
1087
|
const n = s.getUint32(i, !0);
|
|
1070
1088
|
i += 4;
|
|
1071
1089
|
const l = s.getUint32(i, !0);
|
|
1072
|
-
if (i += 4, l ===
|
|
1090
|
+
if (i += 4, l === os) {
|
|
1073
1091
|
const h = new Uint8Array(e, 12 + i, n);
|
|
1074
1092
|
this.content = a.decode(h);
|
|
1075
|
-
} else if (l ===
|
|
1093
|
+
} else if (l === cs) {
|
|
1076
1094
|
const h = 12 + i;
|
|
1077
1095
|
this.body = e.slice(h, h + n);
|
|
1078
1096
|
}
|
|
@@ -1081,7 +1099,7 @@ class is {
|
|
|
1081
1099
|
if (this.content === null) throw new Error("THREE.GLTFLoader: JSON content not found.");
|
|
1082
1100
|
}
|
|
1083
1101
|
}
|
|
1084
|
-
class
|
|
1102
|
+
class hs {
|
|
1085
1103
|
constructor(e, t) {
|
|
1086
1104
|
if (!t) throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");
|
|
1087
1105
|
this.name = U.KHR_DRACO_MESH_COMPRESSION, this.json = e, this.dracoLoader = t, this.dracoLoader.preload();
|
|
@@ -1089,13 +1107,13 @@ class ss {
|
|
|
1089
1107
|
decodePrimitive(e, t) {
|
|
1090
1108
|
const a = this.json, A = this.dracoLoader, s = e.extensions[this.name].bufferView, i = e.extensions[this.name].attributes, n = {}, l = {}, h = {};
|
|
1091
1109
|
for (const b in i) {
|
|
1092
|
-
const g =
|
|
1110
|
+
const g = aa[b] || b.toLowerCase();
|
|
1093
1111
|
n[g] = i[b];
|
|
1094
1112
|
}
|
|
1095
1113
|
for (const b in e.attributes) {
|
|
1096
|
-
const g =
|
|
1114
|
+
const g = aa[b] || b.toLowerCase();
|
|
1097
1115
|
if (i[b] !== void 0) {
|
|
1098
|
-
const f = a.accessors[e.attributes[b]], I =
|
|
1116
|
+
const f = a.accessors[e.attributes[b]], I = tt[f.componentType];
|
|
1099
1117
|
h[g] = I.name, l[g] = f.normalized === !0;
|
|
1100
1118
|
}
|
|
1101
1119
|
}
|
|
@@ -1112,7 +1130,7 @@ class ss {
|
|
|
1112
1130
|
});
|
|
1113
1131
|
}
|
|
1114
1132
|
}
|
|
1115
|
-
class
|
|
1133
|
+
class ls {
|
|
1116
1134
|
constructor() {
|
|
1117
1135
|
this.name = U.KHR_TEXTURE_TRANSFORM;
|
|
1118
1136
|
}
|
|
@@ -1120,12 +1138,12 @@ class rs {
|
|
|
1120
1138
|
return (t.texCoord !== void 0 && t.texCoord !== e.channel || t.offset !== void 0 || t.rotation !== void 0 || t.scale !== void 0) && (e = e.clone(), t.texCoord !== void 0 && (e.channel = t.texCoord), t.offset !== void 0 && e.offset.fromArray(t.offset), t.rotation !== void 0 && (e.rotation = t.rotation), t.scale !== void 0 && e.repeat.fromArray(t.scale), e.needsUpdate = !0), e;
|
|
1121
1139
|
}
|
|
1122
1140
|
}
|
|
1123
|
-
class
|
|
1141
|
+
class bs {
|
|
1124
1142
|
constructor() {
|
|
1125
1143
|
this.name = U.KHR_MESH_QUANTIZATION;
|
|
1126
1144
|
}
|
|
1127
1145
|
}
|
|
1128
|
-
class
|
|
1146
|
+
class bA extends Ii {
|
|
1129
1147
|
constructor(e, t, a, A) {
|
|
1130
1148
|
super(e, t, a, A);
|
|
1131
1149
|
}
|
|
@@ -1135,29 +1153,29 @@ class rA extends di {
|
|
|
1135
1153
|
return t;
|
|
1136
1154
|
}
|
|
1137
1155
|
interpolate_(e, t, a, A) {
|
|
1138
|
-
const s = this.resultBuffer, i = this.sampleValues, n = this.valueSize, l = 2 * n, h = 3 * n, b = A - t, g = (a - t) / b, f = g * g, I = f * g, u = e * h, p = u - h, m = -2 * I + 3 * f,
|
|
1156
|
+
const s = this.resultBuffer, i = this.sampleValues, n = this.valueSize, l = 2 * n, h = 3 * n, b = A - t, g = (a - t) / b, f = g * g, I = f * g, u = e * h, p = u - h, m = -2 * I + 3 * f, C = I - f, E = 1 - m, x = C - f + g;
|
|
1139
1157
|
for (let w = 0; w !== n; w++) {
|
|
1140
1158
|
const M = i[p + w + n], T = i[p + w + l] * b, v = i[u + w + n], k = i[u + w] * b;
|
|
1141
|
-
s[w] =
|
|
1159
|
+
s[w] = E * M + x * T + m * v + C * k;
|
|
1142
1160
|
}
|
|
1143
1161
|
return s;
|
|
1144
1162
|
}
|
|
1145
1163
|
}
|
|
1146
|
-
const
|
|
1147
|
-
class
|
|
1164
|
+
const gs = new aA();
|
|
1165
|
+
class fs extends bA {
|
|
1148
1166
|
interpolate_(e, t, a, A) {
|
|
1149
1167
|
const s = super.interpolate_(e, t, a, A);
|
|
1150
|
-
return
|
|
1168
|
+
return gs.fromArray(s).normalize().toArray(s), s;
|
|
1151
1169
|
}
|
|
1152
1170
|
}
|
|
1153
|
-
const ce = { FLOAT: 5126, FLOAT_MAT3: 35675, FLOAT_MAT4: 35676, FLOAT_VEC2: 35664, FLOAT_VEC3: 35665, FLOAT_VEC4: 35666, LINEAR: 9729, REPEAT: 10497, SAMPLER_2D: 35678, POINTS: 0, LINES: 1, LINE_LOOP: 2, LINE_STRIP: 3, TRIANGLES: 4, TRIANGLE_STRIP: 5, TRIANGLE_FAN: 6, UNSIGNED_BYTE: 5121, UNSIGNED_SHORT: 5123 },
|
|
1171
|
+
const ce = { FLOAT: 5126, FLOAT_MAT3: 35675, FLOAT_MAT4: 35676, FLOAT_VEC2: 35664, FLOAT_VEC3: 35665, FLOAT_VEC4: 35666, LINEAR: 9729, REPEAT: 10497, SAMPLER_2D: 35678, POINTS: 0, LINES: 1, LINE_LOOP: 2, LINE_STRIP: 3, TRIANGLES: 4, TRIANGLE_STRIP: 5, TRIANGLE_FAN: 6, UNSIGNED_BYTE: 5121, UNSIGNED_SHORT: 5123 }, tt = { 5120: Int8Array, 5121: Uint8Array, 5122: Int16Array, 5123: Uint16Array, 5125: Uint32Array, 5126: Float32Array }, Ta = { 9728: P, 9729: ut, 9984: di, 9985: hi, 9986: li, 9987: ha }, Sa = { 33071: bi, 33648: gi, 10497: $t }, St = { SCALAR: 1, VEC2: 2, VEC3: 3, VEC4: 4, MAT2: 4, MAT3: 9, MAT4: 16 }, aa = { POSITION: "position", NORMAL: "normal", TANGENT: "tangent", TEXCOORD_0: "uv", TEXCOORD_1: "uv1", TEXCOORD_2: "uv2", TEXCOORD_3: "uv3", COLOR_0: "color", WEIGHTS_0: "skinWeight", JOINTS_0: "skinIndex" }, Ge = { scale: "scale", translation: "position", rotation: "quaternion", weights: "morphTargetInfluences" }, us = { CUBICSPLINE: void 0, LINEAR: sA, STEP: fi }, Is = "OPAQUE", ps = "MASK", Bs = "BLEND";
|
|
1154
1172
|
function Ke(o, e, t) {
|
|
1155
1173
|
for (const a in t.extensions) o[a] === void 0 && (e.userData.gltfExtensions = e.userData.gltfExtensions || {}, e.userData.gltfExtensions[a] = t.extensions[a]);
|
|
1156
1174
|
}
|
|
1157
1175
|
function ke(o, e) {
|
|
1158
1176
|
e.extras !== void 0 && (typeof e.extras == "object" ? Object.assign(o.userData, e.extras) : console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + e.extras));
|
|
1159
1177
|
}
|
|
1160
|
-
function
|
|
1178
|
+
function ms(o, e) {
|
|
1161
1179
|
if (o.updateMorphTargets(), e.weights !== void 0) for (let t = 0, a = e.weights.length; t < a; t++) o.morphTargetInfluences[t] = e.weights[t];
|
|
1162
1180
|
if (e.extras && Array.isArray(e.extras.targetNames)) {
|
|
1163
1181
|
const t = e.extras.targetNames;
|
|
@@ -1167,19 +1185,19 @@ function gs(o, e) {
|
|
|
1167
1185
|
} else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.");
|
|
1168
1186
|
}
|
|
1169
1187
|
}
|
|
1170
|
-
function
|
|
1188
|
+
function Cs(o) {
|
|
1171
1189
|
let e;
|
|
1172
1190
|
const t = o.extensions && o.extensions[U.KHR_DRACO_MESH_COMPRESSION];
|
|
1173
|
-
if (e = t ? "draco:" + t.bufferView + ":" + t.indices + ":" +
|
|
1191
|
+
if (e = t ? "draco:" + t.bufferView + ":" + t.indices + ":" + Ft(t.attributes) : o.indices + ":" + Ft(o.attributes) + ":" + o.mode, o.targets !== void 0) for (let a = 0, A = o.targets.length; a < A; a++) e += ":" + Ft(o.targets[a]);
|
|
1174
1192
|
return e;
|
|
1175
1193
|
}
|
|
1176
|
-
function
|
|
1194
|
+
function Ft(o) {
|
|
1177
1195
|
let e = "";
|
|
1178
1196
|
const t = Object.keys(o).sort();
|
|
1179
1197
|
for (let a = 0, A = t.length; a < A; a++) e += t[a] + ":" + o[t[a]] + ";";
|
|
1180
1198
|
return e;
|
|
1181
1199
|
}
|
|
1182
|
-
function
|
|
1200
|
+
function Aa(o) {
|
|
1183
1201
|
switch (o) {
|
|
1184
1202
|
case Int8Array:
|
|
1185
1203
|
return 1 / 127;
|
|
@@ -1193,10 +1211,10 @@ function ea(o) {
|
|
|
1193
1211
|
throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.");
|
|
1194
1212
|
}
|
|
1195
1213
|
}
|
|
1196
|
-
const
|
|
1197
|
-
class
|
|
1214
|
+
const Es = new it();
|
|
1215
|
+
class Qs {
|
|
1198
1216
|
constructor(e = {}, t = {}) {
|
|
1199
|
-
this.json = e, this.extensions = {}, this.plugins = {}, this.options = t, this.cache = new
|
|
1217
|
+
this.json = e, this.extensions = {}, this.plugins = {}, this.options = t, this.cache = new Hi(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
|
|
1200
1218
|
let a = !1, A = -1, s = !1, i = -1;
|
|
1201
1219
|
if (typeof navigator < "u") {
|
|
1202
1220
|
const n = navigator.userAgent;
|
|
@@ -1204,7 +1222,7 @@ class Is {
|
|
|
1204
1222
|
const l = n.match(/Version\/(\d+)/);
|
|
1205
1223
|
A = a && l ? parseInt(l[1], 10) : -1, s = n.indexOf("Firefox") > -1, i = s ? n.match(/Firefox\/([0-9]+)\./)[1] : -1;
|
|
1206
1224
|
}
|
|
1207
|
-
typeof createImageBitmap > "u" || a && A < 17 || s && i < 98 ? this.textureLoader = new
|
|
1225
|
+
typeof createImageBitmap > "u" || a && A < 17 || s && i < 98 ? this.textureLoader = new KA(this.options.manager) : this.textureLoader = new zA(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new Xe(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
|
|
1208
1226
|
}
|
|
1209
1227
|
setExtensions(e) {
|
|
1210
1228
|
this.extensions = e;
|
|
@@ -1347,7 +1365,7 @@ class Is {
|
|
|
1347
1365
|
if (t.uri === void 0 && e === 0) return Promise.resolve(this.extensions[U.KHR_BINARY_GLTF].body);
|
|
1348
1366
|
const A = this.options;
|
|
1349
1367
|
return new Promise(function(s, i) {
|
|
1350
|
-
a.load(
|
|
1368
|
+
a.load(lt.resolveURL(t.uri, A.path), s, void 0, function() {
|
|
1351
1369
|
i(new Error('THREE.GLTFLoader: Failed to load buffer "' + t.uri + '".'));
|
|
1352
1370
|
});
|
|
1353
1371
|
});
|
|
@@ -1362,20 +1380,20 @@ class Is {
|
|
|
1362
1380
|
loadAccessor(e) {
|
|
1363
1381
|
const t = this, a = this.json, A = this.json.accessors[e];
|
|
1364
1382
|
if (A.bufferView === void 0 && A.sparse === void 0) {
|
|
1365
|
-
const i =
|
|
1383
|
+
const i = St[A.type], n = tt[A.componentType], l = A.normalized === !0, h = new n(A.count * i);
|
|
1366
1384
|
return Promise.resolve(new Pe(h, i, l));
|
|
1367
1385
|
}
|
|
1368
1386
|
const s = [];
|
|
1369
1387
|
return A.bufferView !== void 0 ? s.push(this.getDependency("bufferView", A.bufferView)) : s.push(null), A.sparse !== void 0 && (s.push(this.getDependency("bufferView", A.sparse.indices.bufferView)), s.push(this.getDependency("bufferView", A.sparse.values.bufferView))), Promise.all(s).then(function(i) {
|
|
1370
|
-
const n = i[0], l =
|
|
1388
|
+
const n = i[0], l = St[A.type], h = tt[A.componentType], b = h.BYTES_PER_ELEMENT, g = b * l, f = A.byteOffset || 0, I = A.bufferView !== void 0 ? a.bufferViews[A.bufferView].byteStride : void 0, u = A.normalized === !0;
|
|
1371
1389
|
let p, m;
|
|
1372
1390
|
if (I && I !== g) {
|
|
1373
|
-
const
|
|
1374
|
-
let x = t.cache.get(
|
|
1375
|
-
x || (p = new h(n,
|
|
1391
|
+
const C = Math.floor(f / I), E = "InterleavedBuffer:" + A.bufferView + ":" + A.componentType + ":" + C + ":" + A.count;
|
|
1392
|
+
let x = t.cache.get(E);
|
|
1393
|
+
x || (p = new h(n, C * I, A.count * I / b), x = new VA(p, I / b), t.cache.add(E, x)), m = new YA(x, l, f % I / b, u);
|
|
1376
1394
|
} else p = n === null ? new h(A.count * l) : new h(n, f, A.count * l), m = new Pe(p, l, u);
|
|
1377
1395
|
if (A.sparse !== void 0) {
|
|
1378
|
-
const
|
|
1396
|
+
const C = St.SCALAR, E = tt[A.sparse.indices.componentType], x = A.sparse.indices.byteOffset || 0, w = A.sparse.values.byteOffset || 0, M = new E(i[1], x, A.sparse.count * C), T = new h(i[2], w, A.sparse.count * l);
|
|
1379
1397
|
n !== null && (m = new Pe(m.array.slice(), m.itemSize, m.normalized)), m.normalized = !1;
|
|
1380
1398
|
for (let v = 0, k = M.length; v < k; v++) {
|
|
1381
1399
|
const R = M[v];
|
|
@@ -1401,7 +1419,7 @@ class Is {
|
|
|
1401
1419
|
const h = this.loadImageSource(t, a).then(function(b) {
|
|
1402
1420
|
b.flipY = !1, b.name = i.name || n.name || "", b.name === "" && typeof n.uri == "string" && n.uri.startsWith("data:image/") === !1 && (b.name = n.uri);
|
|
1403
1421
|
const g = (s.samplers || {})[i.sampler] || {};
|
|
1404
|
-
return b.magFilter =
|
|
1422
|
+
return b.magFilter = Ta[g.magFilter] || ut, b.minFilter = Ta[g.minFilter] || ha, b.wrapS = Sa[g.wrapS] || $t, b.wrapT = Sa[g.wrapT] || $t, b.generateMipmaps = !b.isCompressedTexture && b.minFilter !== P && b.minFilter !== ut, A.associations.set(b, { textures: e }), b;
|
|
1405
1423
|
}).catch(function() {
|
|
1406
1424
|
return null;
|
|
1407
1425
|
});
|
|
@@ -1422,9 +1440,9 @@ class Is {
|
|
|
1422
1440
|
return new Promise(function(f, I) {
|
|
1423
1441
|
let u = f;
|
|
1424
1442
|
t.isImageBitmapLoader === !0 && (u = function(p) {
|
|
1425
|
-
const m = new
|
|
1443
|
+
const m = new ua(p);
|
|
1426
1444
|
m.needsUpdate = !0, f(m);
|
|
1427
|
-
}), t.load(
|
|
1445
|
+
}), t.load(lt.resolveURL(g, s.path), u, void 0, I);
|
|
1428
1446
|
});
|
|
1429
1447
|
}).then(function(g) {
|
|
1430
1448
|
var f;
|
|
@@ -1455,11 +1473,11 @@ class Is {
|
|
|
1455
1473
|
if (e.isPoints) {
|
|
1456
1474
|
const n = "PointsMaterial:" + a.uuid;
|
|
1457
1475
|
let l = this.cache.get(n);
|
|
1458
|
-
l || (l = new
|
|
1476
|
+
l || (l = new WA(), jt.prototype.copy.call(l, a), l.color.copy(a.color), l.map = a.map, l.sizeAttenuation = !1, this.cache.add(n, l)), a = l;
|
|
1459
1477
|
} else if (e.isLine) {
|
|
1460
1478
|
const n = "LineBasicMaterial:" + a.uuid;
|
|
1461
1479
|
let l = this.cache.get(n);
|
|
1462
|
-
l || (l = new
|
|
1480
|
+
l || (l = new XA(), jt.prototype.copy.call(l, a), l.color.copy(a.color), l.map = a.map, this.cache.add(n, l)), a = l;
|
|
1463
1481
|
}
|
|
1464
1482
|
if (A || s || i) {
|
|
1465
1483
|
let n = "ClonedMaterial:" + a.uuid + ":";
|
|
@@ -1470,7 +1488,7 @@ class Is {
|
|
|
1470
1488
|
e.material = a;
|
|
1471
1489
|
}
|
|
1472
1490
|
getMaterialType() {
|
|
1473
|
-
return
|
|
1491
|
+
return fa;
|
|
1474
1492
|
}
|
|
1475
1493
|
loadMaterial(e) {
|
|
1476
1494
|
const t = this, a = this.json, A = this.extensions, s = a.materials[e];
|
|
@@ -1481,7 +1499,7 @@ class Is {
|
|
|
1481
1499
|
i = b.getMaterialType(), l.push(b.extendParams(n, s, t));
|
|
1482
1500
|
} else {
|
|
1483
1501
|
const b = s.pbrMetallicRoughness || {};
|
|
1484
|
-
if (n.color = new
|
|
1502
|
+
if (n.color = new Oe(1, 1, 1), n.opacity = 1, Array.isArray(b.baseColorFactor)) {
|
|
1485
1503
|
const g = b.baseColorFactor;
|
|
1486
1504
|
n.color.setRGB(g[0], g[1], g[2], be), n.opacity = g[3];
|
|
1487
1505
|
}
|
|
@@ -1491,39 +1509,39 @@ class Is {
|
|
|
1491
1509
|
return g.extendMaterialParams && g.extendMaterialParams(e, n);
|
|
1492
1510
|
})));
|
|
1493
1511
|
}
|
|
1494
|
-
s.doubleSided === !0 && (n.side =
|
|
1495
|
-
const h = s.alphaMode ||
|
|
1496
|
-
if (h ===
|
|
1512
|
+
s.doubleSided === !0 && (n.side = ZA);
|
|
1513
|
+
const h = s.alphaMode || Is;
|
|
1514
|
+
if (h === Bs ? (n.transparent = !0, n.depthWrite = !1) : (n.transparent = !1, h === ps && (n.alphaTest = s.alphaCutoff !== void 0 ? s.alphaCutoff : 0.5)), s.normalTexture !== void 0 && i !== ot && (l.push(t.assignTexture(n, "normalMap", s.normalTexture)), n.normalScale = new tA(1, 1), s.normalTexture.scale !== void 0)) {
|
|
1497
1515
|
const b = s.normalTexture.scale;
|
|
1498
1516
|
n.normalScale.set(b, b);
|
|
1499
1517
|
}
|
|
1500
|
-
if (s.occlusionTexture !== void 0 && i !==
|
|
1518
|
+
if (s.occlusionTexture !== void 0 && i !== ot && (l.push(t.assignTexture(n, "aoMap", s.occlusionTexture)), s.occlusionTexture.strength !== void 0 && (n.aoMapIntensity = s.occlusionTexture.strength)), s.emissiveFactor !== void 0 && i !== ot) {
|
|
1501
1519
|
const b = s.emissiveFactor;
|
|
1502
|
-
n.emissive = new
|
|
1520
|
+
n.emissive = new Oe().setRGB(b[0], b[1], b[2], be);
|
|
1503
1521
|
}
|
|
1504
|
-
return s.emissiveTexture !== void 0 && i !==
|
|
1522
|
+
return s.emissiveTexture !== void 0 && i !== ot && l.push(t.assignTexture(n, "emissiveMap", s.emissiveTexture, ve)), Promise.all(l).then(function() {
|
|
1505
1523
|
const b = new i(n);
|
|
1506
1524
|
return s.name && (b.name = s.name), ke(b, s), t.associations.set(b, { materials: e }), s.extensions && Ke(A, b, s), b;
|
|
1507
1525
|
});
|
|
1508
1526
|
}
|
|
1509
1527
|
createUniqueName(e) {
|
|
1510
|
-
const t =
|
|
1528
|
+
const t = $A.sanitizeNodeName(e || "");
|
|
1511
1529
|
return t in this.nodeNamesUsed ? t + "_" + ++this.nodeNamesUsed[t] : (this.nodeNamesUsed[t] = 0, t);
|
|
1512
1530
|
}
|
|
1513
1531
|
loadGeometries(e) {
|
|
1514
1532
|
const t = this, a = this.extensions, A = this.primitiveCache;
|
|
1515
1533
|
function s(n) {
|
|
1516
1534
|
return a[U.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(n, t).then(function(l) {
|
|
1517
|
-
return
|
|
1535
|
+
return Fa(l, n, t);
|
|
1518
1536
|
});
|
|
1519
1537
|
}
|
|
1520
1538
|
const i = [];
|
|
1521
1539
|
for (let n = 0, l = e.length; n < l; n++) {
|
|
1522
|
-
const h = e[n], b =
|
|
1540
|
+
const h = e[n], b = Cs(h), g = A[b];
|
|
1523
1541
|
if (g) i.push(g.promise);
|
|
1524
1542
|
else {
|
|
1525
1543
|
let f;
|
|
1526
|
-
f = h.extensions && h.extensions[U.KHR_DRACO_MESH_COMPRESSION] ? s(h) :
|
|
1544
|
+
f = h.extensions && h.extensions[U.KHR_DRACO_MESH_COMPRESSION] ? s(h) : Fa(new ca(), h, t), A[b] = { primitive: h, promise: f }, i.push(f);
|
|
1527
1545
|
}
|
|
1528
1546
|
}
|
|
1529
1547
|
return Promise.all(i);
|
|
@@ -1531,29 +1549,29 @@ class Is {
|
|
|
1531
1549
|
loadMesh(e) {
|
|
1532
1550
|
const t = this, a = this.json, A = this.extensions, s = a.meshes[e], i = s.primitives, n = [];
|
|
1533
1551
|
for (let h = 0, b = i.length; h < b; h++) {
|
|
1534
|
-
const g = i[h].material === void 0 ? ((l = this.cache).DefaultMaterial === void 0 && (l.DefaultMaterial = new
|
|
1552
|
+
const g = i[h].material === void 0 ? ((l = this.cache).DefaultMaterial === void 0 && (l.DefaultMaterial = new fa({ color: 16777215, emissive: 0, metalness: 1, roughness: 1, transparent: !1, depthTest: !0, side: wt })), l.DefaultMaterial) : this.getDependency("material", i[h].material);
|
|
1535
1553
|
n.push(g);
|
|
1536
1554
|
}
|
|
1537
1555
|
var l;
|
|
1538
1556
|
return n.push(t.loadGeometries(i)), Promise.all(n).then(function(h) {
|
|
1539
1557
|
const b = h.slice(0, h.length - 1), g = h[h.length - 1], f = [];
|
|
1540
1558
|
for (let u = 0, p = g.length; u < p; u++) {
|
|
1541
|
-
const m = g[u],
|
|
1542
|
-
let
|
|
1559
|
+
const m = g[u], C = i[u];
|
|
1560
|
+
let E;
|
|
1543
1561
|
const x = b[u];
|
|
1544
|
-
if (
|
|
1545
|
-
else if (
|
|
1546
|
-
else if (
|
|
1547
|
-
else if (
|
|
1562
|
+
if (C.mode === ce.TRIANGLES || C.mode === ce.TRIANGLE_STRIP || C.mode === ce.TRIANGLE_FAN || C.mode === void 0) E = s.isSkinnedMesh === !0 ? new ei(m, x) : new ea(m, x), E.isSkinnedMesh === !0 && E.normalizeSkinWeights(), C.mode === ce.TRIANGLE_STRIP ? E.geometry = va(E.geometry, eA) : C.mode === ce.TRIANGLE_FAN && (E.geometry = va(E.geometry, Xt));
|
|
1563
|
+
else if (C.mode === ce.LINES) E = new ti(m, x);
|
|
1564
|
+
else if (C.mode === ce.LINE_STRIP) E = new ai(m, x);
|
|
1565
|
+
else if (C.mode === ce.LINE_LOOP) E = new Ai(m, x);
|
|
1548
1566
|
else {
|
|
1549
|
-
if (
|
|
1550
|
-
|
|
1567
|
+
if (C.mode !== ce.POINTS) throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + C.mode);
|
|
1568
|
+
E = new ii(m, x);
|
|
1551
1569
|
}
|
|
1552
|
-
Object.keys(
|
|
1570
|
+
Object.keys(E.geometry.morphAttributes).length > 0 && ms(E, s), E.name = t.createUniqueName(s.name || "mesh_" + e), ke(E, s), C.extensions && Ke(A, E, C), t.assignFinalMaterial(E), f.push(E);
|
|
1553
1571
|
}
|
|
1554
1572
|
for (let u = 0, p = f.length; u < p; u++) t.associations.set(f[u], { meshes: e, primitives: u });
|
|
1555
1573
|
if (f.length === 1) return s.extensions && Ke(A, f[0], s), f[0];
|
|
1556
|
-
const I = new
|
|
1574
|
+
const I = new Rt();
|
|
1557
1575
|
s.extensions && Ke(A, I, s), t.associations.set(I, { meshes: e });
|
|
1558
1576
|
for (let u = 0, p = f.length; u < p; u++) I.add(f[u]);
|
|
1559
1577
|
return I;
|
|
@@ -1562,7 +1580,7 @@ class Is {
|
|
|
1562
1580
|
loadCamera(e) {
|
|
1563
1581
|
let t;
|
|
1564
1582
|
const a = this.json.cameras[e], A = a[a.type];
|
|
1565
|
-
if (A) return a.type === "perspective" ? t = new
|
|
1583
|
+
if (A) return a.type === "perspective" ? t = new si(ri.radToDeg(A.yfov), A.aspectRatio || 1, A.znear || 1, A.zfar || 2e6) : a.type === "orthographic" && (t = new iA(-A.xmag, A.xmag, A.ymag, -A.ymag, A.znear, A.zfar)), a.name && (t.name = this.createUniqueName(a.name)), ke(t, a), Promise.resolve(t);
|
|
1566
1584
|
console.warn("THREE.GLTFLoader: Missing camera parameters.");
|
|
1567
1585
|
}
|
|
1568
1586
|
loadSkin(e) {
|
|
@@ -1574,29 +1592,29 @@ class Is {
|
|
|
1574
1592
|
const g = i[h];
|
|
1575
1593
|
if (g) {
|
|
1576
1594
|
n.push(g);
|
|
1577
|
-
const f = new
|
|
1595
|
+
const f = new it();
|
|
1578
1596
|
s !== null && f.fromArray(s.array, 16 * h), l.push(f);
|
|
1579
1597
|
} else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', t.joints[h]);
|
|
1580
1598
|
}
|
|
1581
|
-
return new
|
|
1599
|
+
return new ni(n, l);
|
|
1582
1600
|
});
|
|
1583
1601
|
}
|
|
1584
1602
|
loadAnimation(e) {
|
|
1585
1603
|
const t = this.json, a = this, A = t.animations[e], s = A.name ? A.name : "animation_" + e, i = [], n = [], l = [], h = [], b = [];
|
|
1586
1604
|
for (let g = 0, f = A.channels.length; g < f; g++) {
|
|
1587
|
-
const I = A.channels[g], u = A.samplers[I.sampler], p = I.target, m = p.node,
|
|
1588
|
-
p.node !== void 0 && (i.push(this.getDependency("node", m)), n.push(this.getDependency("accessor",
|
|
1605
|
+
const I = A.channels[g], u = A.samplers[I.sampler], p = I.target, m = p.node, C = A.parameters !== void 0 ? A.parameters[u.input] : u.input, E = A.parameters !== void 0 ? A.parameters[u.output] : u.output;
|
|
1606
|
+
p.node !== void 0 && (i.push(this.getDependency("node", m)), n.push(this.getDependency("accessor", C)), l.push(this.getDependency("accessor", E)), h.push(u), b.push(p));
|
|
1589
1607
|
}
|
|
1590
1608
|
return Promise.all([Promise.all(i), Promise.all(n), Promise.all(l), Promise.all(h), Promise.all(b)]).then(function(g) {
|
|
1591
|
-
const f = g[0], I = g[1], u = g[2], p = g[3], m = g[4],
|
|
1592
|
-
for (let
|
|
1593
|
-
const w = f[
|
|
1609
|
+
const f = g[0], I = g[1], u = g[2], p = g[3], m = g[4], C = [];
|
|
1610
|
+
for (let E = 0, x = f.length; E < x; E++) {
|
|
1611
|
+
const w = f[E], M = I[E], T = u[E], v = p[E], k = m[E];
|
|
1594
1612
|
if (w === void 0) continue;
|
|
1595
1613
|
w.updateMatrix && w.updateMatrix();
|
|
1596
1614
|
const R = a._createAnimationTracks(w, M, T, v, k);
|
|
1597
|
-
if (R) for (let S = 0; S < R.length; S++)
|
|
1615
|
+
if (R) for (let S = 0; S < R.length; S++) C.push(R[S]);
|
|
1598
1616
|
}
|
|
1599
|
-
return new
|
|
1617
|
+
return new oi(s, void 0, C);
|
|
1600
1618
|
});
|
|
1601
1619
|
}
|
|
1602
1620
|
createNodeMesh(e) {
|
|
@@ -1615,7 +1633,7 @@ class Is {
|
|
|
1615
1633
|
return Promise.all([A, Promise.all(s), n]).then(function(l) {
|
|
1616
1634
|
const h = l[0], b = l[1], g = l[2];
|
|
1617
1635
|
g !== null && h.traverse(function(f) {
|
|
1618
|
-
f.isSkinnedMesh && f.bind(g,
|
|
1636
|
+
f.isSkinnedMesh && f.bind(g, Es);
|
|
1619
1637
|
});
|
|
1620
1638
|
for (let f = 0, I = b.length; f < I; f++) h.add(b[f]);
|
|
1621
1639
|
return h;
|
|
@@ -1635,16 +1653,16 @@ class Is {
|
|
|
1635
1653
|
n.push(h);
|
|
1636
1654
|
}), this.nodeCache[e] = Promise.all(n).then(function(h) {
|
|
1637
1655
|
let b;
|
|
1638
|
-
if (b = s.isBone === !0 ? new
|
|
1656
|
+
if (b = s.isBone === !0 ? new ci() : h.length > 1 ? new Rt() : h.length === 1 ? h[0] : new AA(), b !== h[0]) for (let g = 0, f = h.length; g < f; g++) b.add(h[g]);
|
|
1639
1657
|
if (s.name && (b.userData.name = s.name, b.name = i), ke(b, s), s.extensions && Ke(a, b, s), s.matrix !== void 0) {
|
|
1640
|
-
const g = new
|
|
1658
|
+
const g = new it();
|
|
1641
1659
|
g.fromArray(s.matrix), b.applyMatrix4(g);
|
|
1642
1660
|
} else s.translation !== void 0 && b.position.fromArray(s.translation), s.rotation !== void 0 && b.quaternion.fromArray(s.rotation), s.scale !== void 0 && b.scale.fromArray(s.scale);
|
|
1643
1661
|
return A.associations.has(b) || A.associations.set(b, {}), A.associations.get(b).nodes = e, b;
|
|
1644
1662
|
}), this.nodeCache[e];
|
|
1645
1663
|
}
|
|
1646
1664
|
loadScene(e) {
|
|
1647
|
-
const t = this.extensions, a = this.json.scenes[e], A = this, s = new
|
|
1665
|
+
const t = this.extensions, a = this.json.scenes[e], A = this, s = new Rt();
|
|
1648
1666
|
a.name && (s.name = A.createUniqueName(a.name)), ke(s, a), a.extensions && Ke(t, s, a);
|
|
1649
1667
|
const i = a.nodes || [], n = [];
|
|
1650
1668
|
for (let l = 0, h = i.length; l < h; l++) n.push(A.getDependency("node", i[l]));
|
|
@@ -1652,7 +1670,7 @@ class Is {
|
|
|
1652
1670
|
for (let h = 0, b = l.length; h < b; h++) s.add(l[h]);
|
|
1653
1671
|
return A.associations = ((h) => {
|
|
1654
1672
|
const b = /* @__PURE__ */ new Map();
|
|
1655
|
-
for (const [g, f] of A.associations) (g instanceof
|
|
1673
|
+
for (const [g, f] of A.associations) (g instanceof jt || g instanceof ua) && b.set(g, f);
|
|
1656
1674
|
return h.traverse((g) => {
|
|
1657
1675
|
const f = A.associations.get(g);
|
|
1658
1676
|
f != null && b.set(g, f);
|
|
@@ -1667,19 +1685,19 @@ class Is {
|
|
|
1667
1685
|
f.morphTargetInfluences && l.push(f.name ? f.name : f.uuid);
|
|
1668
1686
|
}) : l.push(n), Ge[s.path]) {
|
|
1669
1687
|
case Ge.weights:
|
|
1670
|
-
h =
|
|
1688
|
+
h = pa;
|
|
1671
1689
|
break;
|
|
1672
1690
|
case Ge.rotation:
|
|
1673
|
-
h =
|
|
1691
|
+
h = Ba;
|
|
1674
1692
|
break;
|
|
1675
1693
|
case Ge.position:
|
|
1676
1694
|
case Ge.scale:
|
|
1677
|
-
h =
|
|
1695
|
+
h = Ia;
|
|
1678
1696
|
break;
|
|
1679
1697
|
default:
|
|
1680
|
-
a.itemSize === 1 ? h =
|
|
1698
|
+
a.itemSize === 1 ? h = pa : h = Ia;
|
|
1681
1699
|
}
|
|
1682
|
-
const b = A.interpolation !== void 0 ?
|
|
1700
|
+
const b = A.interpolation !== void 0 ? us[A.interpolation] : sA, g = this._getArrayFromAccessor(a);
|
|
1683
1701
|
for (let f = 0, I = l.length; f < I; f++) {
|
|
1684
1702
|
const u = new h(l[f] + "." + Ge[s.path], t.array, g, b);
|
|
1685
1703
|
A.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(u), i.push(u);
|
|
@@ -1689,7 +1707,7 @@ class Is {
|
|
|
1689
1707
|
_getArrayFromAccessor(e) {
|
|
1690
1708
|
let t = e.array;
|
|
1691
1709
|
if (e.normalized) {
|
|
1692
|
-
const a =
|
|
1710
|
+
const a = Aa(t.constructor), A = new Float32Array(t.length);
|
|
1693
1711
|
for (let s = 0, i = t.length; s < i; s++) A[s] = t[s] * a;
|
|
1694
1712
|
t = A;
|
|
1695
1713
|
}
|
|
@@ -1697,11 +1715,11 @@ class Is {
|
|
|
1697
1715
|
}
|
|
1698
1716
|
_createCubicSplineTrackInterpolant(e) {
|
|
1699
1717
|
e.createInterpolant = function(t) {
|
|
1700
|
-
return new (this instanceof
|
|
1718
|
+
return new (this instanceof Ba ? fs : bA)(this.times, this.values, this.getValueSize() / 3, t);
|
|
1701
1719
|
}, e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = !0;
|
|
1702
1720
|
}
|
|
1703
1721
|
}
|
|
1704
|
-
function
|
|
1722
|
+
function Fa(o, e, t) {
|
|
1705
1723
|
const a = e.attributes, A = [];
|
|
1706
1724
|
function s(i, n) {
|
|
1707
1725
|
return t.getDependency("accessor", i).then(function(l) {
|
|
@@ -1709,7 +1727,7 @@ function Da(o, e, t) {
|
|
|
1709
1727
|
});
|
|
1710
1728
|
}
|
|
1711
1729
|
for (const i in a) {
|
|
1712
|
-
const n =
|
|
1730
|
+
const n = aa[i] || i.toLowerCase();
|
|
1713
1731
|
n in o.attributes || A.push(s(a[i], n));
|
|
1714
1732
|
}
|
|
1715
1733
|
if (e.indices !== void 0 && !o.index) {
|
|
@@ -1718,14 +1736,14 @@ function Da(o, e, t) {
|
|
|
1718
1736
|
});
|
|
1719
1737
|
A.push(i);
|
|
1720
1738
|
}
|
|
1721
|
-
return
|
|
1722
|
-
const h = n.attributes, b = new
|
|
1739
|
+
return ta.workingColorSpace !== be && "COLOR_0" in a && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ta.workingColorSpace}" not supported.`), ke(o, e), function(i, n, l) {
|
|
1740
|
+
const h = n.attributes, b = new oa();
|
|
1723
1741
|
if (h.POSITION === void 0) return;
|
|
1724
1742
|
{
|
|
1725
1743
|
const I = l.json.accessors[h.POSITION], u = I.min, p = I.max;
|
|
1726
1744
|
if (u === void 0 || p === void 0) return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
|
|
1727
1745
|
if (b.set(new K(u[0], u[1], u[2]), new K(p[0], p[1], p[2])), I.normalized) {
|
|
1728
|
-
const m =
|
|
1746
|
+
const m = Aa(tt[I.componentType]);
|
|
1729
1747
|
b.min.multiplyScalar(m), b.max.multiplyScalar(m);
|
|
1730
1748
|
}
|
|
1731
1749
|
}
|
|
@@ -1733,12 +1751,12 @@ function Da(o, e, t) {
|
|
|
1733
1751
|
if (g !== void 0) {
|
|
1734
1752
|
const I = new K(), u = new K();
|
|
1735
1753
|
for (let p = 0, m = g.length; p < m; p++) {
|
|
1736
|
-
const
|
|
1737
|
-
if (
|
|
1738
|
-
const
|
|
1754
|
+
const C = g[p];
|
|
1755
|
+
if (C.POSITION !== void 0) {
|
|
1756
|
+
const E = l.json.accessors[C.POSITION], x = E.min, w = E.max;
|
|
1739
1757
|
if (x !== void 0 && w !== void 0) {
|
|
1740
|
-
if (u.setX(Math.max(Math.abs(x[0]), Math.abs(w[0]))), u.setY(Math.max(Math.abs(x[1]), Math.abs(w[1]))), u.setZ(Math.max(Math.abs(x[2]), Math.abs(w[2]))),
|
|
1741
|
-
const M =
|
|
1758
|
+
if (u.setX(Math.max(Math.abs(x[0]), Math.abs(w[0]))), u.setY(Math.max(Math.abs(x[1]), Math.abs(w[1]))), u.setZ(Math.max(Math.abs(x[2]), Math.abs(w[2]))), E.normalized) {
|
|
1759
|
+
const M = Aa(tt[E.componentType]);
|
|
1742
1760
|
u.multiplyScalar(M);
|
|
1743
1761
|
}
|
|
1744
1762
|
I.max(u);
|
|
@@ -1748,41 +1766,41 @@ function Da(o, e, t) {
|
|
|
1748
1766
|
b.expandByVector(I);
|
|
1749
1767
|
}
|
|
1750
1768
|
i.boundingBox = b;
|
|
1751
|
-
const f = new
|
|
1769
|
+
const f = new ui();
|
|
1752
1770
|
b.getCenter(f.center), f.radius = b.min.distanceTo(b.max) / 2, i.boundingSphere = f;
|
|
1753
1771
|
}(o, e, t), Promise.all(A).then(function() {
|
|
1754
1772
|
return e.targets !== void 0 ? function(i, n, l) {
|
|
1755
1773
|
let h = !1, b = !1, g = !1;
|
|
1756
1774
|
for (let p = 0, m = n.length; p < m; p++) {
|
|
1757
|
-
const
|
|
1758
|
-
if (
|
|
1775
|
+
const C = n[p];
|
|
1776
|
+
if (C.POSITION !== void 0 && (h = !0), C.NORMAL !== void 0 && (b = !0), C.COLOR_0 !== void 0 && (g = !0), h && b && g) break;
|
|
1759
1777
|
}
|
|
1760
1778
|
if (!h && !b && !g) return Promise.resolve(i);
|
|
1761
1779
|
const f = [], I = [], u = [];
|
|
1762
1780
|
for (let p = 0, m = n.length; p < m; p++) {
|
|
1763
|
-
const
|
|
1781
|
+
const C = n[p];
|
|
1764
1782
|
if (h) {
|
|
1765
|
-
const
|
|
1766
|
-
f.push(
|
|
1783
|
+
const E = C.POSITION !== void 0 ? l.getDependency("accessor", C.POSITION) : i.attributes.position;
|
|
1784
|
+
f.push(E);
|
|
1767
1785
|
}
|
|
1768
1786
|
if (b) {
|
|
1769
|
-
const
|
|
1770
|
-
I.push(
|
|
1787
|
+
const E = C.NORMAL !== void 0 ? l.getDependency("accessor", C.NORMAL) : i.attributes.normal;
|
|
1788
|
+
I.push(E);
|
|
1771
1789
|
}
|
|
1772
1790
|
if (g) {
|
|
1773
|
-
const
|
|
1774
|
-
u.push(
|
|
1791
|
+
const E = C.COLOR_0 !== void 0 ? l.getDependency("accessor", C.COLOR_0) : i.attributes.color;
|
|
1792
|
+
u.push(E);
|
|
1775
1793
|
}
|
|
1776
1794
|
}
|
|
1777
1795
|
return Promise.all([Promise.all(f), Promise.all(I), Promise.all(u)]).then(function(p) {
|
|
1778
|
-
const m = p[0],
|
|
1779
|
-
return h && (i.morphAttributes.position = m), b && (i.morphAttributes.normal =
|
|
1796
|
+
const m = p[0], C = p[1], E = p[2];
|
|
1797
|
+
return h && (i.morphAttributes.position = m), b && (i.morphAttributes.normal = C), g && (i.morphAttributes.color = E), i.morphTargetsRelative = !0, i;
|
|
1780
1798
|
});
|
|
1781
1799
|
}(o, e.targets, t) : o;
|
|
1782
1800
|
});
|
|
1783
1801
|
}
|
|
1784
|
-
const
|
|
1785
|
-
class
|
|
1802
|
+
const Lt = /* @__PURE__ */ new WeakMap();
|
|
1803
|
+
class gA extends da {
|
|
1786
1804
|
constructor(e) {
|
|
1787
1805
|
super(e), this.decoderPath = "", this.decoderConfig = {}, this.decoderBinary = null, this.decoderPending = null, this.workerLimit = 4, this.workerPool = [], this.workerNextTaskID = 1, this.workerSourceURL = "", this.defaultAttributeIDs = { position: "POSITION", normal: "NORMAL", color: "COLOR", uv: "TEX_COORD" }, this.defaultAttributeTypes = { position: "Float32Array", normal: "Float32Array", color: "Float32Array", uv: "Float32Array" };
|
|
1788
1806
|
}
|
|
@@ -1796,7 +1814,7 @@ class nA extends na {
|
|
|
1796
1814
|
return this.workerLimit = e, this;
|
|
1797
1815
|
}
|
|
1798
1816
|
load(e, t, a, A) {
|
|
1799
|
-
const s = new
|
|
1817
|
+
const s = new Xe(this.manager);
|
|
1800
1818
|
s.setPath(this.path), s.setResponseType("arraybuffer"), s.setRequestHeader(this.requestHeader), s.setWithCredentials(this.withCredentials), s.load(e, (i) => {
|
|
1801
1819
|
this.parse(i, t, A);
|
|
1802
1820
|
}, a, A);
|
|
@@ -1812,8 +1830,8 @@ class nA extends na {
|
|
|
1812
1830
|
}
|
|
1813
1831
|
decodeGeometry(e, t) {
|
|
1814
1832
|
const a = JSON.stringify(t);
|
|
1815
|
-
if (
|
|
1816
|
-
const l =
|
|
1833
|
+
if (Lt.has(e)) {
|
|
1834
|
+
const l = Lt.get(e);
|
|
1817
1835
|
if (l.key === a) return l.promise;
|
|
1818
1836
|
if (e.byteLength === 0) throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.");
|
|
1819
1837
|
}
|
|
@@ -1823,10 +1841,10 @@ class nA extends na {
|
|
|
1823
1841
|
}))).then((l) => this._createGeometry(l.geometry));
|
|
1824
1842
|
return n.catch(() => !0).then(() => {
|
|
1825
1843
|
A && s && this._releaseTask(A, s);
|
|
1826
|
-
}),
|
|
1844
|
+
}), Lt.set(e, { key: a, promise: n }), n;
|
|
1827
1845
|
}
|
|
1828
1846
|
_createGeometry(e) {
|
|
1829
|
-
const t = new
|
|
1847
|
+
const t = new ca();
|
|
1830
1848
|
e.index && t.setIndex(new Pe(e.index.array, 1));
|
|
1831
1849
|
for (let a = 0; a < e.attributes.length; a++) {
|
|
1832
1850
|
const A = e.attributes[a], s = A.name, i = A.array, n = A.itemSize, l = new Pe(i, n);
|
|
@@ -1836,11 +1854,11 @@ class nA extends na {
|
|
|
1836
1854
|
}
|
|
1837
1855
|
_assignVertexColorSpace(e, t) {
|
|
1838
1856
|
if (t !== ve) return;
|
|
1839
|
-
const a = new
|
|
1840
|
-
for (let A = 0, s = e.count; A < s; A++) a.fromBufferAttribute(e, A),
|
|
1857
|
+
const a = new Oe();
|
|
1858
|
+
for (let A = 0, s = e.count; A < s; A++) a.fromBufferAttribute(e, A), ta.toWorkingColorSpace(a, ve), e.setXYZ(A, a.r, a.g, a.b);
|
|
1841
1859
|
}
|
|
1842
1860
|
_loadLibrary(e, t) {
|
|
1843
|
-
const a = new
|
|
1861
|
+
const a = new Xe(this.manager);
|
|
1844
1862
|
return a.setPath(this.decoderPath), a.setResponseType(t), a.setWithCredentials(this.withCredentials), new Promise((A, s) => {
|
|
1845
1863
|
a.load(e, A, void 0, s);
|
|
1846
1864
|
});
|
|
@@ -1854,7 +1872,7 @@ class nA extends na {
|
|
|
1854
1872
|
return e ? t.push(this._loadLibrary("draco_decoder.js", "text")) : (t.push(this._loadLibrary("draco_wasm_wrapper.js", "text")), t.push(this._loadLibrary("draco_decoder.wasm", "arraybuffer"))), this.decoderPending = Promise.all(t).then((a) => {
|
|
1855
1873
|
const A = a[0];
|
|
1856
1874
|
e || (this.decoderConfig.wasmBinary = a[1]);
|
|
1857
|
-
const s =
|
|
1875
|
+
const s = ys.toString(), i = ["/* draco decoder */", A, "", "/* worker */", s.substring(s.indexOf("{") + 1, s.lastIndexOf("}"))].join(`
|
|
1858
1876
|
`);
|
|
1859
1877
|
this.workerSourceURL = URL.createObjectURL(new Blob([i]));
|
|
1860
1878
|
}), this.decoderPending;
|
|
@@ -1894,7 +1912,7 @@ class nA extends na {
|
|
|
1894
1912
|
return this.workerPool.length = 0, this.workerSourceURL !== "" && URL.revokeObjectURL(this.workerSourceURL), this;
|
|
1895
1913
|
}
|
|
1896
1914
|
}
|
|
1897
|
-
function
|
|
1915
|
+
function ys() {
|
|
1898
1916
|
let o, e;
|
|
1899
1917
|
function t(a, A, s, i, n, l) {
|
|
1900
1918
|
const h = l.num_components(), b = s.num_points() * h, g = b * n.BYTES_PER_ELEMENT, f = function(p, m) {
|
|
@@ -1935,25 +1953,25 @@ function ps() {
|
|
|
1935
1953
|
const l = n.draco, h = new l.Decoder();
|
|
1936
1954
|
try {
|
|
1937
1955
|
const b = function(f, I, u, p) {
|
|
1938
|
-
const m = p.attributeIDs,
|
|
1939
|
-
let
|
|
1956
|
+
const m = p.attributeIDs, C = p.attributeTypes;
|
|
1957
|
+
let E, x;
|
|
1940
1958
|
const w = I.GetEncodedGeometryType(u);
|
|
1941
|
-
if (w === f.TRIANGULAR_MESH)
|
|
1959
|
+
if (w === f.TRIANGULAR_MESH) E = new f.Mesh(), x = I.DecodeArrayToMesh(u, u.byteLength, E);
|
|
1942
1960
|
else {
|
|
1943
1961
|
if (w !== f.POINT_CLOUD) throw new Error("THREE.DRACOLoader: Unexpected geometry type.");
|
|
1944
|
-
|
|
1962
|
+
E = new f.PointCloud(), x = I.DecodeArrayToPointCloud(u, u.byteLength, E);
|
|
1945
1963
|
}
|
|
1946
|
-
if (!x.ok() ||
|
|
1964
|
+
if (!x.ok() || E.ptr === 0) throw new Error("THREE.DRACOLoader: Decoding failed: " + x.error_msg());
|
|
1947
1965
|
const M = { index: null, attributes: [] };
|
|
1948
1966
|
for (const T in m) {
|
|
1949
|
-
const v = self[
|
|
1967
|
+
const v = self[C[T]];
|
|
1950
1968
|
let k, R;
|
|
1951
|
-
if (p.useUniqueIDs) R = m[T], k = I.GetAttributeByUniqueId(
|
|
1969
|
+
if (p.useUniqueIDs) R = m[T], k = I.GetAttributeByUniqueId(E, R);
|
|
1952
1970
|
else {
|
|
1953
|
-
if (R = I.GetAttributeId(
|
|
1954
|
-
k = I.GetAttribute(
|
|
1971
|
+
if (R = I.GetAttributeId(E, f[m[T]]), R === -1) continue;
|
|
1972
|
+
k = I.GetAttribute(E, R);
|
|
1955
1973
|
}
|
|
1956
|
-
const S = t(f, I,
|
|
1974
|
+
const S = t(f, I, E, T, v, k);
|
|
1957
1975
|
T === "color" && (S.vertexColorSpace = p.vertexColorSpace), M.attributes.push(S);
|
|
1958
1976
|
}
|
|
1959
1977
|
return w === f.TRIANGULAR_MESH && (M.index = function(T, v, k) {
|
|
@@ -1961,7 +1979,7 @@ function ps() {
|
|
|
1961
1979
|
v.GetTrianglesUInt32Array(k, F, z);
|
|
1962
1980
|
const Ae = new Uint32Array(T.HEAPF32.buffer, z, S).slice();
|
|
1963
1981
|
return T._free(z), { array: Ae, itemSize: 1 };
|
|
1964
|
-
}(f, I,
|
|
1982
|
+
}(f, I, E)), f.destroy(E), M;
|
|
1965
1983
|
}(l, h, new Int8Array(s), i), g = b.attributes.map((f) => f.array.buffer);
|
|
1966
1984
|
b.index && g.push(b.index.array.buffer), self.postMessage({ type: "decode", id: A.id, geometry: b }, g);
|
|
1967
1985
|
} catch (b) {
|
|
@@ -1973,7 +1991,7 @@ function ps() {
|
|
|
1973
1991
|
}
|
|
1974
1992
|
};
|
|
1975
1993
|
}
|
|
1976
|
-
class
|
|
1994
|
+
class ws {
|
|
1977
1995
|
constructor(e = 4) {
|
|
1978
1996
|
this.pool = e, this.queue = [], this.workers = [], this.workersResolve = [], this.workerStatus = 0;
|
|
1979
1997
|
}
|
|
@@ -2010,13 +2028,13 @@ class Bs {
|
|
|
2010
2028
|
this.workers.forEach((e) => e.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
|
|
2011
2029
|
}
|
|
2012
2030
|
}
|
|
2013
|
-
const
|
|
2014
|
-
class
|
|
2031
|
+
const fA = 9, uA = 15, IA = 16, pA = 22, BA = 37, mA = 43, CA = 76, EA = 83, QA = 97, yA = 100, wA = 103, xA = 109, kA = 165, DA = 166, la = 1000066e3;
|
|
2032
|
+
class xs {
|
|
2015
2033
|
constructor() {
|
|
2016
2034
|
this.vkFormat = 0, this.typeSize = 1, this.pixelWidth = 0, this.pixelHeight = 0, this.pixelDepth = 0, this.layerCount = 0, this.faceCount = 1, this.supercompressionScheme = 0, this.levels = [], this.dataFormatDescriptor = [{ vendorId: 0, descriptorType: 0, descriptorBlockSize: 0, versionNumber: 2, colorModel: 0, colorPrimaries: 1, transferFunction: 2, flags: 0, texelBlockDimension: [0, 0, 0, 0], bytesPlane: [0, 0, 0, 0, 0, 0, 0, 0], samples: [] }], this.keyValue = {}, this.globalData = null;
|
|
2017
2035
|
}
|
|
2018
2036
|
}
|
|
2019
|
-
class
|
|
2037
|
+
class rt {
|
|
2020
2038
|
constructor(e, t, a, A) {
|
|
2021
2039
|
this._dataView = void 0, this._littleEndian = void 0, this._offset = void 0, this._dataView = new DataView(e.buffer, e.byteOffset + t, a), this._littleEndian = A, this._offset = 0;
|
|
2022
2040
|
}
|
|
@@ -2056,37 +2074,35 @@ class nt {
|
|
|
2056
2074
|
}
|
|
2057
2075
|
}
|
|
2058
2076
|
const ae = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
|
|
2059
|
-
function
|
|
2077
|
+
function La(o) {
|
|
2060
2078
|
return new TextDecoder().decode(o);
|
|
2061
2079
|
}
|
|
2062
|
-
for (var
|
|
2063
|
-
var e =
|
|
2080
|
+
for (var jA = {}, bt = {}, ks = bt.byteLength = function(o) {
|
|
2081
|
+
var e = Ga(o), t = e[0], a = e[1];
|
|
2064
2082
|
return 3 * (t + a) / 4 - a;
|
|
2065
|
-
}, toByteArray
|
|
2066
|
-
var e, t, a =
|
|
2083
|
+
}, Ds = bt.toByteArray = function(o) {
|
|
2084
|
+
var e, t, a = Ga(o), A = a[0], s = a[1], i = new Rs(function(h, b, g) {
|
|
2067
2085
|
return 3 * (b + g) / 4 - g;
|
|
2068
2086
|
}(0, A, s)), n = 0, l = s > 0 ? A - 4 : A;
|
|
2069
2087
|
for (t = 0; t < l; t += 4) e = oe[o.charCodeAt(t)] << 18 | oe[o.charCodeAt(t + 1)] << 12 | oe[o.charCodeAt(t + 2)] << 6 | oe[o.charCodeAt(t + 3)], i[n++] = e >> 16 & 255, i[n++] = e >> 8 & 255, i[n++] = 255 & e;
|
|
2070
2088
|
return s === 2 && (e = oe[o.charCodeAt(t)] << 2 | oe[o.charCodeAt(t + 1)] >> 4, i[n++] = 255 & e), s === 1 && (e = oe[o.charCodeAt(t)] << 10 | oe[o.charCodeAt(t + 1)] << 4 | oe[o.charCodeAt(t + 2)] >> 2, i[n++] = e >> 8 & 255, i[n++] = 255 & e), i;
|
|
2071
|
-
}, fromByteArray
|
|
2072
|
-
for (var e, t = o.length, a = t % 3, A = [], s = 16383, i = 0, n = t - a; i < n; i += s) A.push(
|
|
2089
|
+
}, js = bt.fromByteArray = function(o) {
|
|
2090
|
+
for (var e, t = o.length, a = t % 3, A = [], s = 16383, i = 0, n = t - a; i < n; i += s) A.push(Ms(o, i, i + s > n ? n : i + s));
|
|
2073
2091
|
return a === 1 ? (e = o[t - 1], A.push(pe[e >> 2] + pe[e << 4 & 63] + "==")) : a === 2 && (e = (o[t - 2] << 8) + o[t - 1], A.push(pe[e >> 10] + pe[e >> 4 & 63] + pe[e << 2 & 63] + "=")), A.join("");
|
|
2074
|
-
}
|
|
2075
|
-
function
|
|
2092
|
+
}, pe = [], oe = [], Rs = typeof Uint8Array < "u" ? Uint8Array : Array, Ua = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", Ze = 0; Ze < 64; ++Ze) pe[Ze] = Ua[Ze], oe[Ua.charCodeAt(Ze)] = Ze;
|
|
2093
|
+
function Ga(o) {
|
|
2076
2094
|
var e = o.length;
|
|
2077
2095
|
if (e % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4");
|
|
2078
2096
|
var t = o.indexOf("=");
|
|
2079
2097
|
return t === -1 && (t = e), [t, t === e ? 0 : 4 - t % 4];
|
|
2080
2098
|
}
|
|
2081
|
-
function
|
|
2099
|
+
function Ms(o, e, t) {
|
|
2082
2100
|
for (var a, A, s = [], i = e; i < t; i += 3) a = (o[i] << 16 & 16711680) + (o[i + 1] << 8 & 65280) + (255 & o[i + 2]), s.push(pe[(A = a) >> 18 & 63] + pe[A >> 12 & 63] + pe[A >> 6 & 63] + pe[63 & A]);
|
|
2083
2101
|
return s.join("");
|
|
2084
2102
|
}
|
|
2085
2103
|
oe[45] = 62, oe[95] = 63;
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
let St, xe, ta;
|
|
2089
|
-
Tt.read = function(o, e, t, a, A) {
|
|
2104
|
+
const vs = pt(It({ __proto__: null, byteLength: ks, default: bt, fromByteArray: js, toByteArray: Ds }, [bt]));
|
|
2105
|
+
var kt = {}, Ts = kt.read = function(o, e, t, a, A) {
|
|
2090
2106
|
var s, i, n = 8 * A - a - 1, l = (1 << n) - 1, h = l >> 1, b = -7, g = t ? A - 1 : 0, f = t ? -1 : 1, I = o[e + g];
|
|
2091
2107
|
for (g += f, s = I & (1 << -b) - 1, I >>= -b, b += n; b > 0; s = 256 * s + o[e + g], g += f, b -= 8) ;
|
|
2092
2108
|
for (i = s & (1 << -b) - 1, s >>= -b, b += a; b > 0; i = 256 * i + o[e + g], g += f, b -= 8) ;
|
|
@@ -2096,19 +2112,23 @@ Tt.read = function(o, e, t, a, A) {
|
|
|
2096
2112
|
i += Math.pow(2, a), s -= h;
|
|
2097
2113
|
}
|
|
2098
2114
|
return (I ? -1 : 1) * i * Math.pow(2, s - a);
|
|
2099
|
-
},
|
|
2115
|
+
}, Ss = kt.write = function(o, e, t, a, A, s) {
|
|
2100
2116
|
var i, n, l, h = 8 * s - A - 1, b = (1 << h) - 1, g = b >> 1, f = A === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0, I = a ? 0 : s - 1, u = a ? 1 : -1, p = e < 0 || e === 0 && 1 / e < 0 ? 1 : 0;
|
|
2101
2117
|
for (e = Math.abs(e), isNaN(e) || e === 1 / 0 ? (n = isNaN(e) ? 1 : 0, i = b) : (i = Math.floor(Math.log(e) / Math.LN2), e * (l = Math.pow(2, -i)) < 1 && (i--, l *= 2), (e += i + g >= 1 ? f / l : f * Math.pow(2, 1 - g)) * l >= 2 && (i++, l /= 2), i + g >= b ? (n = 0, i = b) : i + g >= 1 ? (n = (e * l - 1) * Math.pow(2, A), i += g) : (n = e * Math.pow(2, g - 1) * Math.pow(2, A), i = 0)); A >= 8; o[t + I] = 255 & n, I += u, n /= 256, A -= 8) ;
|
|
2102
2118
|
for (i = i << A | n, h += A; h > 0; o[t + I] = 255 & i, I += u, i /= 256, h -= 8) ;
|
|
2103
2119
|
o[t + I - u] |= 128 * p;
|
|
2104
|
-
}
|
|
2120
|
+
};
|
|
2121
|
+
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
|
2122
|
+
const Fs = pt(It({ __proto__: null, default: kt, read: Ts, write: Ss }, [kt]));
|
|
2123
|
+
let Ut, xe, ia;
|
|
2124
|
+
/*!
|
|
2105
2125
|
* The buffer module from node.js, for the browser.
|
|
2106
2126
|
*
|
|
2107
2127
|
* @author Feross Aboukhadijeh <https://feross.org>
|
|
2108
2128
|
* @license MIT
|
|
2109
2129
|
*/
|
|
2110
|
-
function(o) {
|
|
2111
|
-
const e =
|
|
2130
|
+
(function(o) {
|
|
2131
|
+
const e = vs, t = Fs, a = typeof Symbol == "function" && typeof Symbol.for == "function" ? Symbol.for("nodejs.util.inspect.custom") : null;
|
|
2112
2132
|
o.Buffer = i, o.SlowBuffer = function(r) {
|
|
2113
2133
|
return +r != r && (r = 0), i.alloc(+r);
|
|
2114
2134
|
}, o.INSPECT_MAX_BYTES = 50;
|
|
@@ -2150,7 +2170,7 @@ function(o) {
|
|
|
2150
2170
|
const D = 0 | f(y.length), L = s(D);
|
|
2151
2171
|
return L.length === 0 || y.copy(L, 0, 0, D), L;
|
|
2152
2172
|
}
|
|
2153
|
-
if (y.length !== void 0) return typeof y.length != "number" ||
|
|
2173
|
+
if (y.length !== void 0) return typeof y.length != "number" || st(y.length) ? s(0) : b(y);
|
|
2154
2174
|
if (y.type === "Buffer" && Array.isArray(y.data)) return b(y.data);
|
|
2155
2175
|
}(r);
|
|
2156
2176
|
if (Q) return Q;
|
|
@@ -2202,7 +2222,7 @@ function(o) {
|
|
|
2202
2222
|
case "hex":
|
|
2203
2223
|
return d >>> 1;
|
|
2204
2224
|
case "base64":
|
|
2205
|
-
return
|
|
2225
|
+
return Ee(r).length;
|
|
2206
2226
|
default:
|
|
2207
2227
|
if (Q) return B ? -1 : ee(r).length;
|
|
2208
2228
|
c = ("" + c).toLowerCase(), Q = !0;
|
|
@@ -2240,18 +2260,18 @@ function(o) {
|
|
|
2240
2260
|
}
|
|
2241
2261
|
function m(r, c, d, B, Q) {
|
|
2242
2262
|
if (r.length === 0) return -1;
|
|
2243
|
-
if (typeof d == "string" ? (B = d, d = 0) : d > 2147483647 ? d = 2147483647 : d < -2147483648 && (d = -2147483648),
|
|
2263
|
+
if (typeof d == "string" ? (B = d, d = 0) : d > 2147483647 ? d = 2147483647 : d < -2147483648 && (d = -2147483648), st(d = +d) && (d = Q ? 0 : r.length - 1), d < 0 && (d = r.length + d), d >= r.length) {
|
|
2244
2264
|
if (Q) return -1;
|
|
2245
2265
|
d = r.length - 1;
|
|
2246
2266
|
} else if (d < 0) {
|
|
2247
2267
|
if (!Q) return -1;
|
|
2248
2268
|
d = 0;
|
|
2249
2269
|
}
|
|
2250
|
-
if (typeof c == "string" && (c = i.from(c, B)), i.isBuffer(c)) return c.length === 0 ? -1 :
|
|
2251
|
-
if (typeof c == "number") return c &= 255, typeof Uint8Array.prototype.indexOf == "function" ? Q ? Uint8Array.prototype.indexOf.call(r, c, d) : Uint8Array.prototype.lastIndexOf.call(r, c, d) :
|
|
2270
|
+
if (typeof c == "string" && (c = i.from(c, B)), i.isBuffer(c)) return c.length === 0 ? -1 : C(r, c, d, B, Q);
|
|
2271
|
+
if (typeof c == "number") return c &= 255, typeof Uint8Array.prototype.indexOf == "function" ? Q ? Uint8Array.prototype.indexOf.call(r, c, d) : Uint8Array.prototype.lastIndexOf.call(r, c, d) : C(r, [c], d, B, Q);
|
|
2252
2272
|
throw new TypeError("val must be string, number or Buffer");
|
|
2253
2273
|
}
|
|
2254
|
-
function
|
|
2274
|
+
function C(r, c, d, B, Q) {
|
|
2255
2275
|
let y, D = 1, L = r.length, G = c.length;
|
|
2256
2276
|
if (B !== void 0 && ((B = String(B).toLowerCase()) === "ucs2" || B === "ucs-2" || B === "utf16le" || B === "utf-16le")) {
|
|
2257
2277
|
if (r.length < 2 || c.length < 2) return -1;
|
|
@@ -2275,7 +2295,7 @@ function(o) {
|
|
|
2275
2295
|
}
|
|
2276
2296
|
return -1;
|
|
2277
2297
|
}
|
|
2278
|
-
function
|
|
2298
|
+
function E(r, c, d, B) {
|
|
2279
2299
|
d = Number(d) || 0;
|
|
2280
2300
|
const Q = r.length - d;
|
|
2281
2301
|
B ? (B = Number(B)) > Q && (B = Q) : B = Q;
|
|
@@ -2283,7 +2303,7 @@ function(o) {
|
|
|
2283
2303
|
let D;
|
|
2284
2304
|
for (B > y / 2 && (B = y / 2), D = 0; D < B; ++D) {
|
|
2285
2305
|
const L = parseInt(c.substr(2 * D, 2), 16);
|
|
2286
|
-
if (
|
|
2306
|
+
if (st(L)) return D;
|
|
2287
2307
|
r[d + D] = L;
|
|
2288
2308
|
}
|
|
2289
2309
|
return D;
|
|
@@ -2299,7 +2319,7 @@ function(o) {
|
|
|
2299
2319
|
}(c), r, d, B);
|
|
2300
2320
|
}
|
|
2301
2321
|
function M(r, c, d, B) {
|
|
2302
|
-
return he(
|
|
2322
|
+
return he(Ee(c), r, d, B);
|
|
2303
2323
|
}
|
|
2304
2324
|
function T(r, c, d, B) {
|
|
2305
2325
|
return he(function(Q, y) {
|
|
@@ -2471,7 +2491,7 @@ function(o) {
|
|
|
2471
2491
|
let y = !1;
|
|
2472
2492
|
for (; ; ) switch (B) {
|
|
2473
2493
|
case "hex":
|
|
2474
|
-
return
|
|
2494
|
+
return E(this, r, c, d);
|
|
2475
2495
|
case "utf8":
|
|
2476
2496
|
case "utf-8":
|
|
2477
2497
|
return x(this, r, c, d);
|
|
@@ -2510,7 +2530,7 @@ function(o) {
|
|
|
2510
2530
|
const B = r.length;
|
|
2511
2531
|
(!c || c < 0) && (c = 0), (!d || d < 0 || d > B) && (d = B);
|
|
2512
2532
|
let Q = "";
|
|
2513
|
-
for (let y = c; y < d; ++y) Q +=
|
|
2533
|
+
for (let y = c; y < d; ++y) Q += LA[r[y]];
|
|
2514
2534
|
return Q;
|
|
2515
2535
|
}
|
|
2516
2536
|
function Ae(r, c, d) {
|
|
@@ -2519,7 +2539,7 @@ function(o) {
|
|
|
2519
2539
|
for (let y = 0; y < B.length - 1; y += 2) Q += String.fromCharCode(B[y] + 256 * B[y + 1]);
|
|
2520
2540
|
return Q;
|
|
2521
2541
|
}
|
|
2522
|
-
function
|
|
2542
|
+
function H(r, c, d) {
|
|
2523
2543
|
if (r % 1 != 0 || r < 0) throw new RangeError("offset is not uint");
|
|
2524
2544
|
if (r + c > d) throw new RangeError("Trying to access beyond buffer length");
|
|
2525
2545
|
}
|
|
@@ -2528,7 +2548,7 @@ function(o) {
|
|
|
2528
2548
|
if (c > Q || c < y) throw new RangeError('"value" argument is out of bounds');
|
|
2529
2549
|
if (d + B > r.length) throw new RangeError("Index out of range");
|
|
2530
2550
|
}
|
|
2531
|
-
function
|
|
2551
|
+
function He(r, c, d, B, Q) {
|
|
2532
2552
|
_(c, B, Q, r, d, 7);
|
|
2533
2553
|
let y = Number(c & BigInt(4294967295));
|
|
2534
2554
|
r[d++] = y, y >>= 8, r[d++] = y, y >>= 8, r[d++] = y, y >>= 8, r[d++] = y;
|
|
@@ -2558,81 +2578,81 @@ function(o) {
|
|
|
2558
2578
|
const B = this.subarray(r, c);
|
|
2559
2579
|
return Object.setPrototypeOf(B, i.prototype), B;
|
|
2560
2580
|
}, i.prototype.readUintLE = i.prototype.readUIntLE = function(r, c, d) {
|
|
2561
|
-
r >>>= 0, c >>>= 0, d ||
|
|
2581
|
+
r >>>= 0, c >>>= 0, d || H(r, c, this.length);
|
|
2562
2582
|
let B = this[r], Q = 1, y = 0;
|
|
2563
2583
|
for (; ++y < c && (Q *= 256); ) B += this[r + y] * Q;
|
|
2564
2584
|
return B;
|
|
2565
2585
|
}, i.prototype.readUintBE = i.prototype.readUIntBE = function(r, c, d) {
|
|
2566
|
-
r >>>= 0, c >>>= 0, d ||
|
|
2586
|
+
r >>>= 0, c >>>= 0, d || H(r, c, this.length);
|
|
2567
2587
|
let B = this[r + --c], Q = 1;
|
|
2568
2588
|
for (; c > 0 && (Q *= 256); ) B += this[r + --c] * Q;
|
|
2569
2589
|
return B;
|
|
2570
2590
|
}, i.prototype.readUint8 = i.prototype.readUInt8 = function(r, c) {
|
|
2571
|
-
return r >>>= 0, c ||
|
|
2591
|
+
return r >>>= 0, c || H(r, 1, this.length), this[r];
|
|
2572
2592
|
}, i.prototype.readUint16LE = i.prototype.readUInt16LE = function(r, c) {
|
|
2573
|
-
return r >>>= 0, c ||
|
|
2593
|
+
return r >>>= 0, c || H(r, 2, this.length), this[r] | this[r + 1] << 8;
|
|
2574
2594
|
}, i.prototype.readUint16BE = i.prototype.readUInt16BE = function(r, c) {
|
|
2575
|
-
return r >>>= 0, c ||
|
|
2595
|
+
return r >>>= 0, c || H(r, 2, this.length), this[r] << 8 | this[r + 1];
|
|
2576
2596
|
}, i.prototype.readUint32LE = i.prototype.readUInt32LE = function(r, c) {
|
|
2577
|
-
return r >>>= 0, c ||
|
|
2597
|
+
return r >>>= 0, c || H(r, 4, this.length), (this[r] | this[r + 1] << 8 | this[r + 2] << 16) + 16777216 * this[r + 3];
|
|
2578
2598
|
}, i.prototype.readUint32BE = i.prototype.readUInt32BE = function(r, c) {
|
|
2579
|
-
return r >>>= 0, c ||
|
|
2599
|
+
return r >>>= 0, c || H(r, 4, this.length), 16777216 * this[r] + (this[r + 1] << 16 | this[r + 2] << 8 | this[r + 3]);
|
|
2580
2600
|
}, i.prototype.readBigUInt64LE = Le(function(r) {
|
|
2581
|
-
|
|
2601
|
+
O(r >>>= 0, "offset");
|
|
2582
2602
|
const c = this[r], d = this[r + 7];
|
|
2583
2603
|
c !== void 0 && d !== void 0 || X(r, this.length - 8);
|
|
2584
2604
|
const B = c + 256 * this[++r] + 65536 * this[++r] + this[++r] * 2 ** 24, Q = this[++r] + 256 * this[++r] + 65536 * this[++r] + d * 2 ** 24;
|
|
2585
2605
|
return BigInt(B) + (BigInt(Q) << BigInt(32));
|
|
2586
2606
|
}), i.prototype.readBigUInt64BE = Le(function(r) {
|
|
2587
|
-
|
|
2607
|
+
O(r >>>= 0, "offset");
|
|
2588
2608
|
const c = this[r], d = this[r + 7];
|
|
2589
2609
|
c !== void 0 && d !== void 0 || X(r, this.length - 8);
|
|
2590
2610
|
const B = c * 2 ** 24 + 65536 * this[++r] + 256 * this[++r] + this[++r], Q = this[++r] * 2 ** 24 + 65536 * this[++r] + 256 * this[++r] + d;
|
|
2591
2611
|
return (BigInt(B) << BigInt(32)) + BigInt(Q);
|
|
2592
2612
|
}), i.prototype.readIntLE = function(r, c, d) {
|
|
2593
|
-
r >>>= 0, c >>>= 0, d ||
|
|
2613
|
+
r >>>= 0, c >>>= 0, d || H(r, c, this.length);
|
|
2594
2614
|
let B = this[r], Q = 1, y = 0;
|
|
2595
2615
|
for (; ++y < c && (Q *= 256); ) B += this[r + y] * Q;
|
|
2596
2616
|
return Q *= 128, B >= Q && (B -= Math.pow(2, 8 * c)), B;
|
|
2597
2617
|
}, i.prototype.readIntBE = function(r, c, d) {
|
|
2598
|
-
r >>>= 0, c >>>= 0, d ||
|
|
2618
|
+
r >>>= 0, c >>>= 0, d || H(r, c, this.length);
|
|
2599
2619
|
let B = c, Q = 1, y = this[r + --B];
|
|
2600
2620
|
for (; B > 0 && (Q *= 256); ) y += this[r + --B] * Q;
|
|
2601
2621
|
return Q *= 128, y >= Q && (y -= Math.pow(2, 8 * c)), y;
|
|
2602
2622
|
}, i.prototype.readInt8 = function(r, c) {
|
|
2603
|
-
return r >>>= 0, c ||
|
|
2623
|
+
return r >>>= 0, c || H(r, 1, this.length), 128 & this[r] ? -1 * (255 - this[r] + 1) : this[r];
|
|
2604
2624
|
}, i.prototype.readInt16LE = function(r, c) {
|
|
2605
|
-
r >>>= 0, c ||
|
|
2625
|
+
r >>>= 0, c || H(r, 2, this.length);
|
|
2606
2626
|
const d = this[r] | this[r + 1] << 8;
|
|
2607
2627
|
return 32768 & d ? 4294901760 | d : d;
|
|
2608
2628
|
}, i.prototype.readInt16BE = function(r, c) {
|
|
2609
|
-
r >>>= 0, c ||
|
|
2629
|
+
r >>>= 0, c || H(r, 2, this.length);
|
|
2610
2630
|
const d = this[r + 1] | this[r] << 8;
|
|
2611
2631
|
return 32768 & d ? 4294901760 | d : d;
|
|
2612
2632
|
}, i.prototype.readInt32LE = function(r, c) {
|
|
2613
|
-
return r >>>= 0, c ||
|
|
2633
|
+
return r >>>= 0, c || H(r, 4, this.length), this[r] | this[r + 1] << 8 | this[r + 2] << 16 | this[r + 3] << 24;
|
|
2614
2634
|
}, i.prototype.readInt32BE = function(r, c) {
|
|
2615
|
-
return r >>>= 0, c ||
|
|
2635
|
+
return r >>>= 0, c || H(r, 4, this.length), this[r] << 24 | this[r + 1] << 16 | this[r + 2] << 8 | this[r + 3];
|
|
2616
2636
|
}, i.prototype.readBigInt64LE = Le(function(r) {
|
|
2617
|
-
|
|
2637
|
+
O(r >>>= 0, "offset");
|
|
2618
2638
|
const c = this[r], d = this[r + 7];
|
|
2619
2639
|
c !== void 0 && d !== void 0 || X(r, this.length - 8);
|
|
2620
2640
|
const B = this[r + 4] + 256 * this[r + 5] + 65536 * this[r + 6] + (d << 24);
|
|
2621
2641
|
return (BigInt(B) << BigInt(32)) + BigInt(c + 256 * this[++r] + 65536 * this[++r] + this[++r] * 2 ** 24);
|
|
2622
2642
|
}), i.prototype.readBigInt64BE = Le(function(r) {
|
|
2623
|
-
|
|
2643
|
+
O(r >>>= 0, "offset");
|
|
2624
2644
|
const c = this[r], d = this[r + 7];
|
|
2625
2645
|
c !== void 0 && d !== void 0 || X(r, this.length - 8);
|
|
2626
2646
|
const B = (c << 24) + 65536 * this[++r] + 256 * this[++r] + this[++r];
|
|
2627
2647
|
return (BigInt(B) << BigInt(32)) + BigInt(this[++r] * 2 ** 24 + 65536 * this[++r] + 256 * this[++r] + d);
|
|
2628
2648
|
}), i.prototype.readFloatLE = function(r, c) {
|
|
2629
|
-
return r >>>= 0, c ||
|
|
2649
|
+
return r >>>= 0, c || H(r, 4, this.length), t.read(this, r, !0, 23, 4);
|
|
2630
2650
|
}, i.prototype.readFloatBE = function(r, c) {
|
|
2631
|
-
return r >>>= 0, c ||
|
|
2651
|
+
return r >>>= 0, c || H(r, 4, this.length), t.read(this, r, !1, 23, 4);
|
|
2632
2652
|
}, i.prototype.readDoubleLE = function(r, c) {
|
|
2633
|
-
return r >>>= 0, c ||
|
|
2653
|
+
return r >>>= 0, c || H(r, 8, this.length), t.read(this, r, !0, 52, 8);
|
|
2634
2654
|
}, i.prototype.readDoubleBE = function(r, c) {
|
|
2635
|
-
return r >>>= 0, c ||
|
|
2655
|
+
return r >>>= 0, c || H(r, 8, this.length), t.read(this, r, !1, 52, 8);
|
|
2636
2656
|
}, i.prototype.writeUintLE = i.prototype.writeUIntLE = function(r, c, d, B) {
|
|
2637
2657
|
r = +r, c >>>= 0, d >>>= 0, !B && V(this, r, c, d, Math.pow(2, 8 * d) - 1, 0);
|
|
2638
2658
|
let Q = 1, y = 0;
|
|
@@ -2654,7 +2674,7 @@ function(o) {
|
|
|
2654
2674
|
}, i.prototype.writeUint32BE = i.prototype.writeUInt32BE = function(r, c, d) {
|
|
2655
2675
|
return r = +r, c >>>= 0, d || V(this, r, c, 4, 4294967295, 0), this[c] = r >>> 24, this[c + 1] = r >>> 16, this[c + 2] = r >>> 8, this[c + 3] = 255 & r, c + 4;
|
|
2656
2676
|
}, i.prototype.writeBigUInt64LE = Le(function(r, c = 0) {
|
|
2657
|
-
return
|
|
2677
|
+
return He(this, r, c, BigInt(0), BigInt("0xffffffffffffffff"));
|
|
2658
2678
|
}), i.prototype.writeBigUInt64BE = Le(function(r, c = 0) {
|
|
2659
2679
|
return Te(this, r, c, BigInt(0), BigInt("0xffffffffffffffff"));
|
|
2660
2680
|
}), i.prototype.writeIntLE = function(r, c, d, B) {
|
|
@@ -2684,7 +2704,7 @@ function(o) {
|
|
|
2684
2704
|
}, i.prototype.writeInt32BE = function(r, c, d) {
|
|
2685
2705
|
return r = +r, c >>>= 0, d || V(this, r, c, 4, 2147483647, -2147483648), r < 0 && (r = 4294967295 + r + 1), this[c] = r >>> 24, this[c + 1] = r >>> 16, this[c + 2] = r >>> 8, this[c + 3] = 255 & r, c + 4;
|
|
2686
2706
|
}, i.prototype.writeBigInt64LE = Le(function(r, c = 0) {
|
|
2687
|
-
return
|
|
2707
|
+
return He(this, r, c, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
|
|
2688
2708
|
}), i.prototype.writeBigInt64BE = Le(function(r, c = 0) {
|
|
2689
2709
|
return Te(this, r, c, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
|
|
2690
2710
|
}), i.prototype.writeFloatLE = function(r, c, d) {
|
|
@@ -2741,7 +2761,7 @@ function(o) {
|
|
|
2741
2761
|
}
|
|
2742
2762
|
};
|
|
2743
2763
|
}
|
|
2744
|
-
function
|
|
2764
|
+
function Ce(r) {
|
|
2745
2765
|
let c = "", d = r.length;
|
|
2746
2766
|
const B = r[0] === "-" ? 1 : 0;
|
|
2747
2767
|
for (; d >= B + 4; d -= 3) c = `_${r.slice(d - 3, d)}${c}`;
|
|
@@ -2754,14 +2774,14 @@ function(o) {
|
|
|
2754
2774
|
throw L = c === 0 || c === BigInt(0) ? `>= 0${D} and < 2${D} ** ${8 * (y + 1)}${D}` : `>= -(2${D} ** ${8 * (y + 1) - 1}${D}) and < 2 ** ${8 * (y + 1) - 1}${D}`, new de.ERR_OUT_OF_RANGE("value", L, r);
|
|
2755
2775
|
}
|
|
2756
2776
|
(function(D, L, G) {
|
|
2757
|
-
|
|
2777
|
+
O(L, "offset"), D[L] !== void 0 && D[L + G] !== void 0 || X(L, D.length - (G + 1));
|
|
2758
2778
|
})(B, Q, y);
|
|
2759
2779
|
}
|
|
2760
|
-
function
|
|
2780
|
+
function O(r, c) {
|
|
2761
2781
|
if (typeof r != "number") throw new de.ERR_INVALID_ARG_TYPE(c, "number", r);
|
|
2762
2782
|
}
|
|
2763
2783
|
function X(r, c, d) {
|
|
2764
|
-
throw Math.floor(r) !== r ? (
|
|
2784
|
+
throw Math.floor(r) !== r ? (O(r, d), new de.ERR_OUT_OF_RANGE("offset", "an integer", r)) : c < 0 ? new de.ERR_BUFFER_OUT_OF_BOUNDS() : new de.ERR_OUT_OF_RANGE("offset", `>= 0 and <= ${c}`, r);
|
|
2765
2785
|
}
|
|
2766
2786
|
ie("ERR_BUFFER_OUT_OF_BOUNDS", function(r) {
|
|
2767
2787
|
return r ? `${r} is outside of buffer bounds` : "Attempt to access memory outside buffer bounds";
|
|
@@ -2769,7 +2789,7 @@ function(o) {
|
|
|
2769
2789
|
return `The "${r}" argument must be of type number. Received type ${typeof c}`;
|
|
2770
2790
|
}, TypeError), ie("ERR_OUT_OF_RANGE", function(r, c, d) {
|
|
2771
2791
|
let B = `The value of "${r}" is out of range.`, Q = d;
|
|
2772
|
-
return Number.isInteger(d) && Math.abs(d) > 2 ** 32 ? Q =
|
|
2792
|
+
return Number.isInteger(d) && Math.abs(d) > 2 ** 32 ? Q = Ce(String(d)) : typeof d == "bigint" && (Q = String(d), (d > BigInt(2) ** BigInt(32) || d < -(BigInt(2) ** BigInt(32))) && (Q = Ce(Q)), Q += "n"), B += ` It must be ${c}. Received ${Q}`, B;
|
|
2773
2793
|
}, RangeError);
|
|
2774
2794
|
const ne = /[^+/0-9A-Za-z-_]/g;
|
|
2775
2795
|
function ee(r, c) {
|
|
@@ -2815,7 +2835,7 @@ function(o) {
|
|
|
2815
2835
|
}
|
|
2816
2836
|
return y;
|
|
2817
2837
|
}
|
|
2818
|
-
function
|
|
2838
|
+
function Ee(r) {
|
|
2819
2839
|
return e.toByteArray(function(c) {
|
|
2820
2840
|
if ((c = (c = c.split("=")[0]).trim().replace(ne, "")).length < 2) return "";
|
|
2821
2841
|
for (; c.length % 4 != 0; ) c += "=";
|
|
@@ -2830,10 +2850,10 @@ function(o) {
|
|
|
2830
2850
|
function Z(r, c) {
|
|
2831
2851
|
return r instanceof c || r != null && r.constructor != null && r.constructor.name != null && r.constructor.name === c.name;
|
|
2832
2852
|
}
|
|
2833
|
-
function
|
|
2853
|
+
function st(r) {
|
|
2834
2854
|
return r != r;
|
|
2835
2855
|
}
|
|
2836
|
-
const
|
|
2856
|
+
const LA = function() {
|
|
2837
2857
|
const r = "0123456789abcdef", c = new Array(256);
|
|
2838
2858
|
for (let d = 0; d < 16; ++d) {
|
|
2839
2859
|
const B = 16 * d;
|
|
@@ -2842,35 +2862,35 @@ function(o) {
|
|
|
2842
2862
|
return c;
|
|
2843
2863
|
}();
|
|
2844
2864
|
function Le(r) {
|
|
2845
|
-
return typeof BigInt > "u" ?
|
|
2865
|
+
return typeof BigInt > "u" ? UA : r;
|
|
2846
2866
|
}
|
|
2847
|
-
function
|
|
2867
|
+
function UA() {
|
|
2848
2868
|
throw new Error("BigInt not supported");
|
|
2849
2869
|
}
|
|
2850
|
-
}(
|
|
2851
|
-
const
|
|
2852
|
-
|
|
2870
|
+
})(jA);
|
|
2871
|
+
const Gt = { env: { emscripten_notify_memory_growth: function(o) {
|
|
2872
|
+
ia = new Uint8Array(xe.exports.memory.buffer);
|
|
2853
2873
|
} } };
|
|
2854
|
-
class
|
|
2874
|
+
class Ls {
|
|
2855
2875
|
init() {
|
|
2856
|
-
return
|
|
2876
|
+
return Ut || (Ut = typeof fetch < "u" ? fetch("data:application/wasm;base64," + Na).then((e) => e.arrayBuffer()).then((e) => WebAssembly.instantiate(e, Gt)).then(this._init) : WebAssembly.instantiate(jA.Buffer.from(Na, "base64"), Gt).then(this._init), Ut);
|
|
2857
2877
|
}
|
|
2858
2878
|
_init(e) {
|
|
2859
|
-
xe = e.instance,
|
|
2879
|
+
xe = e.instance, Gt.env.emscripten_notify_memory_growth(0);
|
|
2860
2880
|
}
|
|
2861
2881
|
decode(e, t = 0) {
|
|
2862
2882
|
if (!xe) throw new Error("ZSTDDecoder: Await .init() before decoding.");
|
|
2863
2883
|
const a = e.byteLength, A = xe.exports.malloc(a);
|
|
2864
|
-
|
|
2865
|
-
const s = xe.exports.malloc(t), i = xe.exports.ZSTD_decompress(s, t, A, a), n =
|
|
2884
|
+
ia.set(e, A), t = t || Number(xe.exports.ZSTD_findDecompressedSize(A, a));
|
|
2885
|
+
const s = xe.exports.malloc(t), i = xe.exports.ZSTD_decompress(s, t, A, a), n = ia.slice(s, s + i);
|
|
2866
2886
|
return xe.exports.free(A), xe.exports.free(s), n;
|
|
2867
2887
|
}
|
|
2868
2888
|
}
|
|
2869
|
-
const va = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigCACACaiAAQQZ2IgFBAnRBsB5qKAIAaiAAQSBxIgBFaiABRSAAQQV2cWoFQbh/CwsdACAAKAKQ4gEQWiAAQQA2AqDiASAAQgA3A5DiAQu1AwEFfyMAQZACayIKJABBuH8hBgJAIAVFDQAgBCwAACIIQf8BcSEHAkAgCEF/TARAIAdBgn9qQQF2IgggBU8NAkFsIQYgB0GBf2oiBUGAAk8NAiAEQQFqIQdBACEGA0AgBiAFTwRAIAUhBiAIIQcMAwUgACAGaiAHIAZBAXZqIgQtAABBBHY6AAAgACAGQQFyaiAELQAAQQ9xOgAAIAZBAmohBgwBCwAACwALIAcgBU8NASAAIARBAWogByAKEFMiBhADDQELIAYhBEEAIQYgAUEAQTQQECEJQQAhBQNAIAQgBkcEQCAAIAZqIggtAAAiAUELSwRAQWwhBgwDBSAJIAFBAnRqIgEgASgCAEEBajYCACAGQQFqIQZBASAILQAAdEEBdSAFaiEFDAILAAsLQWwhBiAFRQ0AIAUQFEEBaiIBQQxLDQAgAyABNgIAQQFBASABdCAFayIDEBQiAXQgA0cNACAAIARqIAFBAWoiADoAACAJIABBAnRqIgAgACgCAEEBajYCACAJKAIEIgBBAkkgAEEBcXINACACIARBAWo2AgAgB0EBaiEGCyAKQZACaiQAIAYLxhEBDH8jAEHwAGsiBSQAQWwhCwJAIANBCkkNACACLwAAIQogAi8AAiEJIAIvAAQhByAFQQhqIAQQDgJAIAMgByAJIApqakEGaiIMSQ0AIAUtAAohCCAFQdgAaiACQQZqIgIgChAGIgsQAw0BIAVBQGsgAiAKaiICIAkQBiILEAMNASAFQShqIAIgCWoiAiAHEAYiCxADDQEgBUEQaiACIAdqIAMgDGsQBiILEAMNASAAIAFqIg9BfWohECAEQQRqIQZBASELIAAgAUEDakECdiIDaiIMIANqIgIgA2oiDiEDIAIhBCAMIQcDQCALIAMgEElxBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgCS0AAyELIAcgBiAFQUBrIAgQAkECdGoiCS8BADsAACAFQUBrIAktAAIQASAJLQADIQogBCAGIAVBKGogCBACQQJ0aiIJLwEAOwAAIAVBKGogCS0AAhABIAktAAMhCSADIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgDS0AAyENIAAgC2oiCyAGIAVB2ABqIAgQAkECdGoiAC8BADsAACAFQdgAaiAALQACEAEgAC0AAyEAIAcgCmoiCiAGIAVBQGsgCBACQQJ0aiIHLwEAOwAAIAVBQGsgBy0AAhABIActAAMhByAEIAlqIgkgBiAFQShqIAgQAkECdGoiBC8BADsAACAFQShqIAQtAAIQASAELQADIQQgAyANaiIDIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgACALaiEAIAcgCmohByAEIAlqIQQgAyANLQADaiEDIAVB2ABqEA0gBUFAaxANciAFQShqEA1yIAVBEGoQDXJFIQsMAQsLIAQgDksgByACS3INAEFsIQsgACAMSw0BIAxBfWohCQNAQQAgACAJSSAFQdgAahAEGwRAIAAgBiAFQdgAaiAIEAJBAnRqIgovAQA7AAAgBUHYAGogCi0AAhABIAAgCi0AA2oiACAGIAVB2ABqIAgQAkECdGoiCi8BADsAACAFQdgAaiAKLQACEAEgACAKLQADaiEADAEFIAxBfmohCgNAIAVB2ABqEAQgACAKS3JFBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgACAJLQADaiEADAELCwNAIAAgCk0EQCAAIAYgBUHYAGogCBACQQJ0aiIJLwEAOwAAIAVB2ABqIAktAAIQASAAIAktAANqIQAMAQsLAkAgACAMTw0AIAAgBiAFQdgAaiAIEAIiAEECdGoiDC0AADoAACAMLQADQQFGBEAgBUHYAGogDC0AAhABDAELIAUoAlxBH0sNACAFQdgAaiAGIABBAnRqLQACEAEgBSgCXEEhSQ0AIAVBIDYCXAsgAkF9aiEMA0BBACAHIAxJIAVBQGsQBBsEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiIAIAYgBUFAayAIEAJBAnRqIgcvAQA7AAAgBUFAayAHLQACEAEgACAHLQADaiEHDAEFIAJBfmohDANAIAVBQGsQBCAHIAxLckUEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwNAIAcgDE0EQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwJAIAcgAk8NACAHIAYgBUFAayAIEAIiAEECdGoiAi0AADoAACACLQADQQFGBEAgBUFAayACLQACEAEMAQsgBSgCREEfSw0AIAVBQGsgBiAAQQJ0ai0AAhABIAUoAkRBIUkNACAFQSA2AkQLIA5BfWohAgNAQQAgBCACSSAFQShqEAQbBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2oiACAGIAVBKGogCBACQQJ0aiIELwEAOwAAIAVBKGogBC0AAhABIAAgBC0AA2ohBAwBBSAOQX5qIQIDQCAFQShqEAQgBCACS3JFBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsDQCAEIAJNBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsCQCAEIA5PDQAgBCAGIAVBKGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBKGogAi0AAhABDAELIAUoAixBH0sNACAFQShqIAYgAEECdGotAAIQASAFKAIsQSFJDQAgBUEgNgIsCwNAQQAgAyAQSSAFQRBqEAQbBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2oiACAGIAVBEGogCBACQQJ0aiICLwEAOwAAIAVBEGogAi0AAhABIAAgAi0AA2ohAwwBBSAPQX5qIQIDQCAFQRBqEAQgAyACS3JFBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsDQCADIAJNBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsCQCADIA9PDQAgAyAGIAVBEGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBEGogAi0AAhABDAELIAUoAhRBH0sNACAFQRBqIAYgAEECdGotAAIQASAFKAIUQSFJDQAgBUEgNgIUCyABQWwgBUHYAGoQCiAFQUBrEApxIAVBKGoQCnEgBUEQahAKcRshCwwJCwAACwALAAALAAsAAAsACwAACwALQWwhCwsgBUHwAGokACALC7UEAQ5/IwBBEGsiBiQAIAZBBGogABAOQVQhBQJAIARB3AtJDQAgBi0ABCEHIANB8ARqQQBB7AAQECEIIAdBDEsNACADQdwJaiIJIAggBkEIaiAGQQxqIAEgAhAxIhAQA0UEQCAGKAIMIgQgB0sNASADQdwFaiEPIANBpAVqIREgAEEEaiESIANBqAVqIQEgBCEFA0AgBSICQX9qIQUgCCACQQJ0aigCAEUNAAsgAkEBaiEOQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgASALaiAKNgIAIAVBAWohBSAKIAxqIQoMAQsLIAEgCjYCAEEAIQUgBigCCCELA0AgBSALRkUEQCABIAUgCWotAAAiDEECdGoiDSANKAIAIg1BAWo2AgAgDyANQQF0aiINIAw6AAEgDSAFOgAAIAVBAWohBQwBCwtBACEBIANBADYCqAUgBEF/cyAHaiEJQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgAyALaiABNgIAIAwgBSAJanQgAWohASAFQQFqIQUMAQsLIAcgBEEBaiIBIAJrIgRrQQFqIQgDQEEBIQUgBCAIT0UEQANAIAUgDk9FBEAgBUECdCIJIAMgBEE0bGpqIAMgCWooAgAgBHY2AgAgBUEBaiEFDAELCyAEQQFqIQQMAQsLIBIgByAPIAogESADIAIgARBkIAZBAToABSAGIAc6AAYgACAGKAIENgIACyAQIQULIAZBEGokACAFC8ENAQt/IwBB8ABrIgUkAEFsIQkCQCADQQpJDQAgAi8AACEKIAIvAAIhDCACLwAEIQYgBUEIaiAEEA4CQCADIAYgCiAMampBBmoiDUkNACAFLQAKIQcgBUHYAGogAkEGaiICIAoQBiIJEAMNASAFQUBrIAIgCmoiAiAMEAYiCRADDQEgBUEoaiACIAxqIgIgBhAGIgkQAw0BIAVBEGogAiAGaiADIA1rEAYiCRADDQEgACABaiIOQX1qIQ8gBEEEaiEGQQEhCSAAIAFBA2pBAnYiAmoiCiACaiIMIAJqIg0hAyAMIQQgCiECA0AgCSADIA9JcQRAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAACAGIAVBQGsgBxACQQF0aiIILQAAIQsgBUFAayAILQABEAEgAiALOgAAIAYgBUEoaiAHEAJBAXRqIggtAAAhCyAFQShqIAgtAAEQASAEIAs6AAAgBiAFQRBqIAcQAkEBdGoiCC0AACELIAVBEGogCC0AARABIAMgCzoAACAGIAVB2ABqIAcQAkEBdGoiCC0AACELIAVB2ABqIAgtAAEQASAAIAs6AAEgBiAFQUBrIAcQAkEBdGoiCC0AACELIAVBQGsgCC0AARABIAIgCzoAASAGIAVBKGogBxACQQF0aiIILQAAIQsgBUEoaiAILQABEAEgBCALOgABIAYgBUEQaiAHEAJBAXRqIggtAAAhCyAFQRBqIAgtAAEQASADIAs6AAEgA0ECaiEDIARBAmohBCACQQJqIQIgAEECaiEAIAkgBUHYAGoQDUVxIAVBQGsQDUVxIAVBKGoQDUVxIAVBEGoQDUVxIQkMAQsLIAQgDUsgAiAMS3INAEFsIQkgACAKSw0BIApBfWohCQNAIAVB2ABqEAQgACAJT3JFBEAgBiAFQdgAaiAHEAJBAXRqIggtAAAhCyAFQdgAaiAILQABEAEgACALOgAAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAASAAQQJqIQAMAQsLA0AgBUHYAGoQBCAAIApPckUEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCwNAIAAgCkkEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCyAMQX1qIQADQCAFQUBrEAQgAiAAT3JFBEAgBiAFQUBrIAcQAkEBdGoiCi0AACEJIAVBQGsgCi0AARABIAIgCToAACAGIAVBQGsgBxACQQF0aiIKLQAAIQkgBUFAayAKLQABEAEgAiAJOgABIAJBAmohAgwBCwsDQCAFQUBrEAQgAiAMT3JFBEAgBiAFQUBrIAcQAkEBdGoiAC0AACEKIAVBQGsgAC0AARABIAIgCjoAACACQQFqIQIMAQsLA0AgAiAMSQRAIAYgBUFAayAHEAJBAXRqIgAtAAAhCiAFQUBrIAAtAAEQASACIAo6AAAgAkEBaiECDAELCyANQX1qIQADQCAFQShqEAQgBCAAT3JFBEAgBiAFQShqIAcQAkEBdGoiAi0AACEKIAVBKGogAi0AARABIAQgCjoAACAGIAVBKGogBxACQQF0aiICLQAAIQogBUEoaiACLQABEAEgBCAKOgABIARBAmohBAwBCwsDQCAFQShqEAQgBCANT3JFBEAgBiAFQShqIAcQAkEBdGoiAC0AACECIAVBKGogAC0AARABIAQgAjoAACAEQQFqIQQMAQsLA0AgBCANSQRAIAYgBUEoaiAHEAJBAXRqIgAtAAAhAiAFQShqIAAtAAEQASAEIAI6AAAgBEEBaiEEDAELCwNAIAVBEGoQBCADIA9PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIAYgBUEQaiAHEAJBAXRqIgAtAAAhAiAFQRBqIAAtAAEQASADIAI6AAEgA0ECaiEDDAELCwNAIAVBEGoQBCADIA5PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIANBAWohAwwBCwsDQCADIA5JBEAgBiAFQRBqIAcQAkEBdGoiAC0AACECIAVBEGogAC0AARABIAMgAjoAACADQQFqIQMMAQsLIAFBbCAFQdgAahAKIAVBQGsQCnEgBUEoahAKcSAFQRBqEApxGyEJDAELQWwhCQsgBUHwAGokACAJC8oCAQR/IwBBIGsiBSQAIAUgBBAOIAUtAAIhByAFQQhqIAIgAxAGIgIQA0UEQCAEQQRqIQIgACABaiIDQX1qIQQDQCAFQQhqEAQgACAET3JFBEAgAiAFQQhqIAcQAkEBdGoiBi0AACEIIAVBCGogBi0AARABIAAgCDoAACACIAVBCGogBxACQQF0aiIGLQAAIQggBUEIaiAGLQABEAEgACAIOgABIABBAmohAAwBCwsDQCAFQQhqEAQgACADT3JFBEAgAiAFQQhqIAcQAkEBdGoiBC0AACEGIAVBCGogBC0AARABIAAgBjoAACAAQQFqIQAMAQsLA0AgACADT0UEQCACIAVBCGogBxACQQF0aiIELQAAIQYgBUEIaiAELQABEAEgACAGOgAAIABBAWohAAwBCwsgAUFsIAVBCGoQChshAgsgBUEgaiQAIAILtgMBCX8jAEEQayIGJAAgBkEANgIMIAZBADYCCEFUIQQCQAJAIANBQGsiDCADIAZBCGogBkEMaiABIAIQMSICEAMNACAGQQRqIAAQDiAGKAIMIgcgBi0ABEEBaksNASAAQQRqIQogBkEAOgAFIAYgBzoABiAAIAYoAgQ2AgAgB0EBaiEJQQEhBANAIAQgCUkEQCADIARBAnRqIgEoAgAhACABIAU2AgAgACAEQX9qdCAFaiEFIARBAWohBAwBCwsgB0EBaiEHQQAhBSAGKAIIIQkDQCAFIAlGDQEgAyAFIAxqLQAAIgRBAnRqIgBBASAEdEEBdSILIAAoAgAiAWoiADYCACAHIARrIQhBACEEAkAgC0EDTQRAA0AgBCALRg0CIAogASAEakEBdGoiACAIOgABIAAgBToAACAEQQFqIQQMAAALAAsDQCABIABPDQEgCiABQQF0aiIEIAg6AAEgBCAFOgAAIAQgCDoAAyAEIAU6AAIgBCAIOgAFIAQgBToABCAEIAg6AAcgBCAFOgAGIAFBBGohAQwAAAsACyAFQQFqIQUMAAALAAsgAiEECyAGQRBqJAAgBAutAQECfwJAQYQgKAIAIABHIAAoAgBBAXYiAyABa0F4aiICQXhxQQhHcgR/IAIFIAMQJ0UNASACQQhqC0EQSQ0AIAAgACgCACICQQFxIAAgAWpBD2pBeHEiASAAa0EBdHI2AgAgASAANgIEIAEgASgCAEEBcSAAIAJBAXZqIAFrIgJBAXRyNgIAQYQgIAEgAkH/////B3FqQQRqQYQgKAIAIABGGyABNgIAIAEQJQsLygIBBX8CQAJAAkAgAEEIIABBCEsbZ0EfcyAAaUEBR2oiAUEESSAAIAF2cg0AIAFBAnRB/B5qKAIAIgJFDQADQCACQXhqIgMoAgBBAXZBeGoiBSAATwRAIAIgBUEIIAVBCEsbZ0Efc0ECdEGAH2oiASgCAEYEQCABIAIoAgQ2AgALDAMLIARBHksNASAEQQFqIQQgAigCBCICDQALC0EAIQMgAUEgTw0BA0AgAUECdEGAH2ooAgAiAkUEQCABQR5LIQIgAUEBaiEBIAJFDQEMAwsLIAIgAkF4aiIDKAIAQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgBGBEAgASACKAIENgIACwsgAigCACIBBEAgASACKAIENgIECyACKAIEIgEEQCABIAIoAgA2AgALIAMgAygCAEEBcjYCACADIAAQNwsgAwvhCwINfwV+IwBB8ABrIgckACAHIAAoAvDhASIINgJcIAEgAmohDSAIIAAoAoDiAWohDwJAAkAgBUUEQCABIQQMAQsgACgCxOABIRAgACgCwOABIREgACgCvOABIQ4gAEEBNgKM4QFBACEIA0AgCEEDRwRAIAcgCEECdCICaiAAIAJqQazQAWooAgA2AkQgCEEBaiEIDAELC0FsIQwgB0EYaiADIAQQBhADDQEgB0EsaiAHQRhqIAAoAgAQEyAHQTRqIAdBGGogACgCCBATIAdBPGogB0EYaiAAKAIEEBMgDUFgaiESIAEhBEEAIQwDQCAHKAIwIAcoAixBA3RqKQIAIhRCEIinQf8BcSEIIAcoAkAgBygCPEEDdGopAgAiFUIQiKdB/wFxIQsgBygCOCAHKAI0QQN0aikCACIWQiCIpyEJIBVCIIghFyAUQiCIpyECAkAgFkIQiKdB/wFxIgNBAk8EQAJAIAZFIANBGUlyRQRAIAkgB0EYaiADQSAgBygCHGsiCiAKIANLGyIKEAUgAyAKayIDdGohCSAHQRhqEAQaIANFDQEgB0EYaiADEAUgCWohCQwBCyAHQRhqIAMQBSAJaiEJIAdBGGoQBBoLIAcpAkQhGCAHIAk2AkQgByAYNwNIDAELAkAgA0UEQCACBEAgBygCRCEJDAMLIAcoAkghCQwBCwJAAkAgB0EYakEBEAUgCSACRWpqIgNBA0YEQCAHKAJEQX9qIgMgA0VqIQkMAQsgA0ECdCAHaigCRCIJIAlFaiEJIANBAUYNAQsgByAHKAJINgJMCwsgByAHKAJENgJIIAcgCTYCRAsgF6chAyALBEAgB0EYaiALEAUgA2ohAwsgCCALakEUTwRAIAdBGGoQBBoLIAgEQCAHQRhqIAgQBSACaiECCyAHQRhqEAQaIAcgB0EYaiAUQhiIp0H/AXEQCCAUp0H//wNxajYCLCAHIAdBGGogFUIYiKdB/wFxEAggFadB//8DcWo2AjwgB0EYahAEGiAHIAdBGGogFkIYiKdB/wFxEAggFqdB//8DcWo2AjQgByACNgJgIAcoAlwhCiAHIAk2AmggByADNgJkAkACQAJAIAQgAiADaiILaiASSw0AIAIgCmoiEyAPSw0AIA0gBGsgC0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", Lt = /* @__PURE__ */ new WeakMap();
|
|
2870
|
-
let
|
|
2871
|
-
class re extends
|
|
2889
|
+
const Na = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", Nt = /* @__PURE__ */ new WeakMap();
|
|
2890
|
+
let _t, Pt = 0;
|
|
2891
|
+
class re extends da {
|
|
2872
2892
|
constructor(e) {
|
|
2873
|
-
super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new
|
|
2893
|
+
super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new ws(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER < "u" && console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.');
|
|
2874
2894
|
}
|
|
2875
2895
|
setTranscoderPath(e) {
|
|
2876
2896
|
return this.transcoderPath = e, this;
|
|
@@ -2886,9 +2906,9 @@ class re extends na {
|
|
|
2886
2906
|
}
|
|
2887
2907
|
init() {
|
|
2888
2908
|
if (!this.transcoderPending) {
|
|
2889
|
-
const e = new
|
|
2909
|
+
const e = new Xe(this.manager);
|
|
2890
2910
|
e.setPath(this.transcoderPath), e.setWithCredentials(this.withCredentials);
|
|
2891
|
-
const t = e.loadAsync("basis_transcoder.js"), a = new
|
|
2911
|
+
const t = e.loadAsync("basis_transcoder.js"), a = new Xe(this.manager);
|
|
2892
2912
|
a.setPath(this.transcoderPath), a.setResponseType("arraybuffer"), a.setWithCredentials(this.withCredentials);
|
|
2893
2913
|
const A = a.loadAsync("basis_transcoder.wasm");
|
|
2894
2914
|
this.transcoderPending = Promise.all([t, A]).then(([s, i]) => {
|
|
@@ -2898,100 +2918,100 @@ class re extends na {
|
|
|
2898
2918
|
const h = new Worker(this.workerSourceURL), b = this.transcoderBinary.slice(0);
|
|
2899
2919
|
return h.postMessage({ type: "init", config: this.workerConfig, transcoderBinary: b }, [b]), h;
|
|
2900
2920
|
});
|
|
2901
|
-
}),
|
|
2921
|
+
}), Pt > 0 && console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."), Pt++;
|
|
2902
2922
|
}
|
|
2903
2923
|
return this.transcoderPending;
|
|
2904
2924
|
}
|
|
2905
2925
|
load(e, t, a, A) {
|
|
2906
2926
|
if (this.workerConfig === null) throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
|
|
2907
|
-
const s = new
|
|
2927
|
+
const s = new Xe(this.manager);
|
|
2908
2928
|
s.setResponseType("arraybuffer"), s.setWithCredentials(this.withCredentials), s.load(e, (i) => {
|
|
2909
2929
|
this.parse(i, t, A);
|
|
2910
2930
|
}, a, A);
|
|
2911
2931
|
}
|
|
2912
2932
|
parse(e, t, a) {
|
|
2913
2933
|
if (this.workerConfig === null) throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
|
|
2914
|
-
if (
|
|
2915
|
-
return
|
|
2934
|
+
if (Nt.has(e))
|
|
2935
|
+
return Nt.get(e).promise.then(t).catch(a);
|
|
2916
2936
|
this._createTexture(e).then((A) => t ? t(A) : null).catch(a);
|
|
2917
2937
|
}
|
|
2918
2938
|
_createTextureFrom(e, t) {
|
|
2919
2939
|
const { type: a, error: A, data: { faces: s, width: i, height: n, format: l, type: h, dfdFlags: b } } = e;
|
|
2920
2940
|
if (a === "error") return Promise.reject(A);
|
|
2921
2941
|
let g;
|
|
2922
|
-
if (t.faceCount === 6) g = new
|
|
2942
|
+
if (t.faceCount === 6) g = new pi(s, l, h);
|
|
2923
2943
|
else {
|
|
2924
2944
|
const f = s[0].mipmaps;
|
|
2925
|
-
g = t.layerCount > 1 ? new
|
|
2945
|
+
g = t.layerCount > 1 ? new Bi(f, i, n, t.layerCount, l, h) : new ma(f, i, n, l, h);
|
|
2926
2946
|
}
|
|
2927
|
-
return g.minFilter = s[0].mipmaps.length === 1 ?
|
|
2947
|
+
return g.minFilter = s[0].mipmaps.length === 1 ? ut : ha, g.magFilter = ut, g.generateMipmaps = !1, g.needsUpdate = !0, g.colorSpace = _a(t), g.premultiplyAlpha = !!(1 & b), g;
|
|
2928
2948
|
}
|
|
2929
2949
|
async _createTexture(e, t = {}) {
|
|
2930
2950
|
const a = function(n) {
|
|
2931
2951
|
const l = new Uint8Array(n.buffer, n.byteOffset, ae.length);
|
|
2932
2952
|
if (l[0] !== ae[0] || l[1] !== ae[1] || l[2] !== ae[2] || l[3] !== ae[3] || l[4] !== ae[4] || l[5] !== ae[5] || l[6] !== ae[6] || l[7] !== ae[7] || l[8] !== ae[8] || l[9] !== ae[9] || l[10] !== ae[10] || l[11] !== ae[11]) throw new Error("Missing KTX 2.0 identifier.");
|
|
2933
|
-
const h = new
|
|
2953
|
+
const h = new xs(), b = 17 * Uint32Array.BYTES_PER_ELEMENT, g = new rt(n, ae.length, b, !0);
|
|
2934
2954
|
h.vkFormat = g._nextUint32(), h.typeSize = g._nextUint32(), h.pixelWidth = g._nextUint32(), h.pixelHeight = g._nextUint32(), h.pixelDepth = g._nextUint32(), h.layerCount = g._nextUint32(), h.faceCount = g._nextUint32();
|
|
2935
2955
|
const f = g._nextUint32();
|
|
2936
2956
|
h.supercompressionScheme = g._nextUint32();
|
|
2937
|
-
const I = g._nextUint32(), u = g._nextUint32(), p = g._nextUint32(), m = g._nextUint32(),
|
|
2957
|
+
const I = g._nextUint32(), u = g._nextUint32(), p = g._nextUint32(), m = g._nextUint32(), C = g._nextUint64(), E = g._nextUint64(), x = new rt(n, ae.length + b, 3 * f * 8, !0);
|
|
2938
2958
|
for (let _ = 0; _ < f; _++) h.levels.push({ levelData: new Uint8Array(n.buffer, n.byteOffset + x._nextUint64(), x._nextUint64()), uncompressedByteLength: x._nextUint64() });
|
|
2939
|
-
const w = new
|
|
2959
|
+
const w = new rt(n, I, u, !0), M = { vendorId: w._skip(4)._nextUint16(), descriptorType: w._nextUint16(), versionNumber: w._nextUint16(), descriptorBlockSize: w._nextUint16(), colorModel: w._nextUint8(), colorPrimaries: w._nextUint8(), transferFunction: w._nextUint8(), flags: w._nextUint8(), texelBlockDimension: [w._nextUint8(), w._nextUint8(), w._nextUint8(), w._nextUint8()], bytesPlane: [w._nextUint8(), w._nextUint8(), w._nextUint8(), w._nextUint8(), w._nextUint8(), w._nextUint8(), w._nextUint8(), w._nextUint8()], samples: [] }, T = (M.descriptorBlockSize / 4 - 6) / 4;
|
|
2940
2960
|
for (let _ = 0; _ < T; _++) {
|
|
2941
|
-
const
|
|
2942
|
-
64 &
|
|
2961
|
+
const O = { bitOffset: w._nextUint16(), bitLength: w._nextUint8(), channelType: w._nextUint8(), samplePosition: [w._nextUint8(), w._nextUint8(), w._nextUint8(), w._nextUint8()], sampleLower: -1 / 0, sampleUpper: 1 / 0 };
|
|
2962
|
+
64 & O.channelType ? (O.sampleLower = w._nextInt32(), O.sampleUpper = w._nextInt32()) : (O.sampleLower = w._nextUint32(), O.sampleUpper = w._nextUint32()), M.samples[_] = O;
|
|
2943
2963
|
}
|
|
2944
2964
|
h.dataFormatDescriptor.length = 0, h.dataFormatDescriptor.push(M);
|
|
2945
|
-
const v = new
|
|
2965
|
+
const v = new rt(n, p, m, !0);
|
|
2946
2966
|
for (; v._offset < m; ) {
|
|
2947
|
-
const _ = v._nextUint32(),
|
|
2948
|
-
if (h.keyValue[X] = v._nextUint8Array(_ -
|
|
2949
|
-
const ne =
|
|
2967
|
+
const _ = v._nextUint32(), O = v._scan(_), X = La(O);
|
|
2968
|
+
if (h.keyValue[X] = v._nextUint8Array(_ - O.byteLength - 1), X.match(/^ktx/i)) {
|
|
2969
|
+
const ne = La(h.keyValue[X]);
|
|
2950
2970
|
h.keyValue[X] = ne.substring(0, ne.lastIndexOf("\0"));
|
|
2951
2971
|
}
|
|
2952
2972
|
v._skip(_ % 4 ? 4 - _ % 4 : 0);
|
|
2953
2973
|
}
|
|
2954
|
-
if (
|
|
2955
|
-
const k = new
|
|
2974
|
+
if (E <= 0) return h;
|
|
2975
|
+
const k = new rt(n, C, E, !0), R = k._nextUint16(), S = k._nextUint16(), F = k._nextUint32(), z = k._nextUint32(), Ae = k._nextUint32(), H = k._nextUint32(), V = [];
|
|
2956
2976
|
for (let _ = 0; _ < f; _++) V.push({ imageFlags: k._nextUint32(), rgbSliceByteOffset: k._nextUint32(), rgbSliceByteLength: k._nextUint32(), alphaSliceByteOffset: k._nextUint32(), alphaSliceByteLength: k._nextUint32() });
|
|
2957
|
-
const
|
|
2958
|
-
return h.globalData = { endpointCount: R, selectorCount: S, imageDescs: V, endpointsData: qe, selectorsData: de, tablesData: ie, extendedData:
|
|
2959
|
-
}(new Uint8Array(e)), A = a.vkFormat ===
|
|
2977
|
+
const He = C + k._offset, Te = He + F, Se = Te + z, Fe = Se + Ae, qe = new Uint8Array(n.buffer, n.byteOffset + He, F), de = new Uint8Array(n.buffer, n.byteOffset + Te, z), ie = new Uint8Array(n.buffer, n.byteOffset + Se, Ae), Ce = new Uint8Array(n.buffer, n.byteOffset + Fe, H);
|
|
2978
|
+
return h.globalData = { endpointCount: R, selectorCount: S, imageDescs: V, endpointsData: qe, selectorsData: de, tablesData: ie, extendedData: Ce }, h;
|
|
2979
|
+
}(new Uint8Array(e)), A = a.vkFormat === la && a.dataFormatDescriptor[0].colorModel === 167;
|
|
2960
2980
|
if (!(a.vkFormat === 0 || A && !this.workerConfig.astcHDRSupported)) return async function(n) {
|
|
2961
2981
|
const { vkFormat: l } = n;
|
|
2962
|
-
if (
|
|
2982
|
+
if (Ot[l] === void 0) throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
|
|
2963
2983
|
let h;
|
|
2964
|
-
n.supercompressionScheme === 2 && (
|
|
2965
|
-
const I = new
|
|
2984
|
+
n.supercompressionScheme === 2 && (_t || (_t = new Promise(async (f) => {
|
|
2985
|
+
const I = new Ls();
|
|
2966
2986
|
await I.init(), f(I);
|
|
2967
|
-
})), h = await
|
|
2987
|
+
})), h = await _t);
|
|
2968
2988
|
const b = [];
|
|
2969
2989
|
for (let f = 0; f < n.levels.length; f++) {
|
|
2970
2990
|
const I = Math.max(1, n.pixelWidth >> f), u = Math.max(1, n.pixelHeight >> f), p = n.pixelDepth ? Math.max(1, n.pixelDepth >> f) : 0, m = n.levels[f];
|
|
2971
|
-
let
|
|
2972
|
-
if (n.supercompressionScheme === 0)
|
|
2991
|
+
let C, E;
|
|
2992
|
+
if (n.supercompressionScheme === 0) C = m.levelData;
|
|
2973
2993
|
else {
|
|
2974
2994
|
if (n.supercompressionScheme !== 2) throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");
|
|
2975
|
-
|
|
2995
|
+
C = h.decode(m.levelData, m.uncompressedByteLength);
|
|
2976
2996
|
}
|
|
2977
|
-
|
|
2997
|
+
E = Ht[l] === W ? new Float32Array(C.buffer, C.byteOffset, C.byteLength / Float32Array.BYTES_PER_ELEMENT) : Ht[l] === et ? new Uint16Array(C.buffer, C.byteOffset, C.byteLength / Uint16Array.BYTES_PER_ELEMENT) : C, b.push({ data: E, width: I, height: u, depth: p });
|
|
2978
2998
|
}
|
|
2979
2999
|
let g;
|
|
2980
|
-
if (
|
|
3000
|
+
if (Us.has(Ot[l])) g = n.pixelDepth === 0 ? new ct(b[0].data, n.pixelWidth, n.pixelHeight) : new ji(b[0].data, n.pixelWidth, n.pixelHeight, n.pixelDepth);
|
|
2981
3001
|
else {
|
|
2982
3002
|
if (n.pixelDepth > 0) throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
|
|
2983
|
-
g = new
|
|
3003
|
+
g = new ma(b, n.pixelWidth, n.pixelHeight);
|
|
2984
3004
|
}
|
|
2985
|
-
return g.mipmaps = b, g.type =
|
|
3005
|
+
return g.mipmaps = b, g.type = Ht[l], g.format = Ot[l], g.colorSpace = _a(n), g.needsUpdate = !0, Promise.resolve(g);
|
|
2986
3006
|
}(a);
|
|
2987
3007
|
const s = t, i = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: e, taskConfig: s }, [e])).then((n) => this._createTextureFrom(n.data, a));
|
|
2988
|
-
return
|
|
3008
|
+
return Nt.set(e, { promise: i }), i;
|
|
2989
3009
|
}
|
|
2990
3010
|
dispose() {
|
|
2991
|
-
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL),
|
|
3011
|
+
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), Pt--, this;
|
|
2992
3012
|
}
|
|
2993
3013
|
}
|
|
2994
|
-
re.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, re.TranscoderFormat = { ETC1: 0, ETC2: 1, BC1: 2, BC3: 3, BC4: 4, BC5: 5, BC7_M6_OPAQUE_ONLY: 6, BC7_M5: 7, PVRTC1_4_RGB: 8, PVRTC1_4_RGBA: 9, ASTC_4x4: 10, ATC_RGB: 11, ATC_RGBA_INTERPOLATED_ALPHA: 12, RGBA32: 13, RGB565: 14, BGR565: 15, RGBA4444: 16, BC6H: 22, RGB_HALF: 24, RGBA_HALF: 25 }, re.EngineFormat = { RGBAFormat: Be, RGBA_ASTC_4x4_Format:
|
|
3014
|
+
re.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, re.TranscoderFormat = { ETC1: 0, ETC2: 1, BC1: 2, BC3: 3, BC4: 4, BC5: 5, BC7_M6_OPAQUE_ONLY: 6, BC7_M5: 7, PVRTC1_4_RGB: 8, PVRTC1_4_RGBA: 9, ASTC_4x4: 10, ATC_RGB: 11, ATC_RGBA_INTERPOLATED_ALPHA: 12, RGBA32: 13, RGB565: 14, BGR565: 15, RGBA4444: 16, BC6H: 22, RGB_HALF: 24, RGBA_HALF: 25 }, re.EngineFormat = { RGBAFormat: Be, RGBA_ASTC_4x4_Format: rA, RGB_BPTC_UNSIGNED_Format: mi, RGBA_BPTC_Format: Ci, RGBA_ETC2_EAC_Format: Ei, RGBA_PVRTC_4BPPV1_Format: Qi, RGBA_S3TC_DXT5_Format: yi, RGB_ETC1_Format: wi, RGB_ETC2_Format: xi, RGB_PVRTC_4BPPV1_Format: ki, RGBA_S3TC_DXT1_Format: Di }, re.EngineType = { UnsignedByteType: ue, HalfFloatType: et, FloatType: W }, re.BasisWorker = function() {
|
|
2995
3015
|
let o, e, t;
|
|
2996
3016
|
const a = _EngineFormat, A = _EngineType, s = _TranscoderFormat, i = _BasisFormat;
|
|
2997
3017
|
self.addEventListener("message", function(g) {
|
|
@@ -3007,7 +3027,7 @@ re.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, re.TranscoderFormat = { E
|
|
|
3007
3027
|
case "transcode":
|
|
3008
3028
|
e.then(() => {
|
|
3009
3029
|
try {
|
|
3010
|
-
const { faces: u, buffers: p, width: m, height:
|
|
3030
|
+
const { faces: u, buffers: p, width: m, height: C, hasAlpha: E, format: x, type: w, dfdFlags: M } = function(T) {
|
|
3011
3031
|
const v = new t.KTX2File(new Uint8Array(T));
|
|
3012
3032
|
function k() {
|
|
3013
3033
|
v.close(), v.delete();
|
|
@@ -3020,39 +3040,39 @@ re.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, re.TranscoderFormat = { E
|
|
|
3020
3040
|
if (!v.isHDR()) throw new Error("THREE.KTX2Loader: Unknown Basis encoding");
|
|
3021
3041
|
R = i.UASTC_HDR;
|
|
3022
3042
|
}
|
|
3023
|
-
const S = v.getWidth(), F = v.getHeight(), z = v.getLayers() || 1, Ae = v.getLevels(),
|
|
3043
|
+
const S = v.getWidth(), F = v.getHeight(), z = v.getLayers() || 1, Ae = v.getLevels(), H = v.getFaces(), V = v.getHasAlpha(), He = v.getDFDFlags(), { transcoderFormat: Te, engineFormat: Se, engineType: Fe } = function(ie, Ce, _, O) {
|
|
3024
3044
|
const X = l[ie];
|
|
3025
3045
|
for (let ne = 0; ne < X.length; ne++) {
|
|
3026
3046
|
const ee = X[ne];
|
|
3027
|
-
if (!(ee.if && !o[ee.if]) && ee.basisFormat.includes(ie) && !(
|
|
3028
|
-
return { transcoderFormat: ee.transcoderFormat[
|
|
3047
|
+
if (!(ee.if && !o[ee.if]) && ee.basisFormat.includes(ie) && !(O && ee.transcoderFormat.length < 2) && !(ee.needsPowerOfTwo && (!h(Ce) || !h(_))))
|
|
3048
|
+
return { transcoderFormat: ee.transcoderFormat[O ? 1 : 0], engineFormat: ee.engineFormat[O ? 1 : 0], engineType: ee.engineType[0] };
|
|
3029
3049
|
}
|
|
3030
3050
|
throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.");
|
|
3031
3051
|
}(R, S, F, V);
|
|
3032
3052
|
if (!S || !F || !Ae) throw k(), new Error("THREE.KTX2Loader: Invalid texture");
|
|
3033
3053
|
if (!v.startTranscoding()) throw k(), new Error("THREE.KTX2Loader: .startTranscoding failed");
|
|
3034
3054
|
const qe = [], de = [];
|
|
3035
|
-
for (let ie = 0; ie <
|
|
3036
|
-
const
|
|
3055
|
+
for (let ie = 0; ie < H; ie++) {
|
|
3056
|
+
const Ce = [];
|
|
3037
3057
|
for (let _ = 0; _ < Ae; _++) {
|
|
3038
|
-
const
|
|
3058
|
+
const O = [];
|
|
3039
3059
|
let X, ne;
|
|
3040
|
-
for (let
|
|
3041
|
-
const he = v.getImageLevelInfo(_,
|
|
3042
|
-
ie !== 0 || _ !== 0 ||
|
|
3043
|
-
let Z = new Uint8Array(v.getImageTranscodedSizeInBytes(_,
|
|
3044
|
-
const
|
|
3045
|
-
if (Fe === A.HalfFloatType && (Z = new Uint16Array(Z.buffer, Z.byteOffset, Z.byteLength / Uint16Array.BYTES_PER_ELEMENT)), !
|
|
3046
|
-
|
|
3060
|
+
for (let Ee = 0; Ee < z; Ee++) {
|
|
3061
|
+
const he = v.getImageLevelInfo(_, Ee, ie);
|
|
3062
|
+
ie !== 0 || _ !== 0 || Ee !== 0 || he.origWidth % 4 == 0 && he.origHeight % 4 == 0 || console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), Ae > 1 ? (X = he.origWidth, ne = he.origHeight) : (X = he.width, ne = he.height);
|
|
3063
|
+
let Z = new Uint8Array(v.getImageTranscodedSizeInBytes(_, Ee, 0, Te));
|
|
3064
|
+
const st = v.transcodeImage(Z, _, Ee, ie, Te, 0, -1, -1);
|
|
3065
|
+
if (Fe === A.HalfFloatType && (Z = new Uint16Array(Z.buffer, Z.byteOffset, Z.byteLength / Uint16Array.BYTES_PER_ELEMENT)), !st) throw k(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
|
|
3066
|
+
O.push(Z);
|
|
3047
3067
|
}
|
|
3048
|
-
const ee = b(
|
|
3049
|
-
|
|
3068
|
+
const ee = b(O);
|
|
3069
|
+
Ce.push({ data: ee, width: X, height: ne }), de.push(ee.buffer);
|
|
3050
3070
|
}
|
|
3051
|
-
qe.push({ mipmaps:
|
|
3071
|
+
qe.push({ mipmaps: Ce, width: S, height: F, format: Se, type: Fe });
|
|
3052
3072
|
}
|
|
3053
|
-
return k(), { faces: qe, buffers: de, width: S, height: F, hasAlpha: V, dfdFlags:
|
|
3073
|
+
return k(), { faces: qe, buffers: de, width: S, height: F, hasAlpha: V, dfdFlags: He, format: Se, type: Fe };
|
|
3054
3074
|
}(f.buffer);
|
|
3055
|
-
self.postMessage({ type: "transcode", id: f.id, data: { faces: u, width: m, height:
|
|
3075
|
+
self.postMessage({ type: "transcode", id: f.id, data: { faces: u, width: m, height: C, hasAlpha: E, format: x, type: w, dfdFlags: M } }, p);
|
|
3056
3076
|
} catch (u) {
|
|
3057
3077
|
console.error(u), self.postMessage({ type: "error", id: f.id, error: u.message });
|
|
3058
3078
|
}
|
|
@@ -3078,31 +3098,31 @@ re.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, re.TranscoderFormat = { E
|
|
|
3078
3098
|
return I;
|
|
3079
3099
|
}
|
|
3080
3100
|
};
|
|
3081
|
-
const
|
|
3082
|
-
function
|
|
3101
|
+
const Us = /* @__PURE__ */ new Set([Be, dt, ht]), Ot = { [xA]: Be, [QA]: Be, [BA]: Be, [mA]: Be, [wA]: dt, [EA]: dt, [IA]: dt, [pA]: dt, [yA]: ht, [CA]: ht, [uA]: ht, [fA]: ht, [la]: rA, [DA]: Ca, [kA]: Ca }, Ht = { [xA]: W, [QA]: et, [BA]: ue, [mA]: ue, [wA]: W, [EA]: et, [IA]: ue, [pA]: ue, [yA]: W, [CA]: et, [uA]: ue, [fA]: ue, [la]: et, [DA]: ue, [kA]: ue };
|
|
3102
|
+
function _a(o) {
|
|
3083
3103
|
const e = o.dataFormatDescriptor[0];
|
|
3084
|
-
return e.colorPrimaries === 1 ? e.transferFunction === 2 ? ve : be : e.colorPrimaries === 10 ? e.transferFunction === 2 ? "display-p3" : "display-p3-linear" : (e.colorPrimaries === 0 || console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),
|
|
3104
|
+
return e.colorPrimaries === 1 ? e.transferFunction === 2 ? ve : be : e.colorPrimaries === 10 ? e.transferFunction === 2 ? "display-p3" : "display-p3-linear" : (e.colorPrimaries === 0 || console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`), Ri);
|
|
3085
3105
|
}
|
|
3086
|
-
async function
|
|
3106
|
+
async function Pa(o) {
|
|
3087
3107
|
const e = o.split("?")[0].split(".").pop(), t = await fetch(o);
|
|
3088
3108
|
if (!t.ok) throw new Error(`Failed to fetch ${o}: ${t.statusText}`);
|
|
3089
3109
|
if (e === "json") {
|
|
3090
3110
|
const a = await t.json();
|
|
3091
|
-
return handleJSONSubtree(a,
|
|
3111
|
+
return handleJSONSubtree(a, Oa(o));
|
|
3092
3112
|
}
|
|
3093
3113
|
if (e === "subtree")
|
|
3094
3114
|
return async function(a, A) {
|
|
3095
3115
|
const s = new DataView(a), i = s.getBigUint64(8, !0), n = s.getBigUint64(16, !0), l = 24, h = l + Number(i), b = h + (8 - h % 8) % 8, g = b + Number(n), f = a.slice(l, h), I = new TextDecoder().decode(f).trim(), u = JSON.parse(I);
|
|
3096
3116
|
if (!u.buffers) throw new Error("subtree has no buffers");
|
|
3097
|
-
const p = u.buffers.map(async (
|
|
3098
|
-
if (
|
|
3099
|
-
const
|
|
3100
|
-
if (!x.ok) throw new Error(`Failed to fetch binary file ${
|
|
3117
|
+
const p = u.buffers.map(async (C) => {
|
|
3118
|
+
if (C.uri) {
|
|
3119
|
+
const E = new URL(C.uri, A).href, x = await fetch(E);
|
|
3120
|
+
if (!x.ok) throw new Error(`Failed to fetch binary file ${E}: ${x.statusText}`);
|
|
3101
3121
|
return new Uint8Array(await x.arrayBuffer());
|
|
3102
3122
|
}
|
|
3103
3123
|
return new Uint8Array(a.slice(b, g));
|
|
3104
3124
|
}), m = await Promise.all(p);
|
|
3105
|
-
return /* @__PURE__ */ function(
|
|
3125
|
+
return /* @__PURE__ */ function(C, E) {
|
|
3106
3126
|
function x(k, R) {
|
|
3107
3127
|
if (!k) throw new Error("incomplete json subtree");
|
|
3108
3128
|
if (k.constant) {
|
|
@@ -3110,9 +3130,9 @@ async function Sa(o) {
|
|
|
3110
3130
|
if (k.constant == 1) return !0;
|
|
3111
3131
|
}
|
|
3112
3132
|
if (k.bitstream == null) throw new Error('json subtree "tileAvailability" does not specify a bitstream');
|
|
3113
|
-
if (!
|
|
3114
|
-
const S =
|
|
3115
|
-
return w(
|
|
3133
|
+
if (!C.bufferViews || !C.bufferViews[k.bitstream]) throw new Error('json subtree "bufferViews" does not specify a bitstream');
|
|
3134
|
+
const S = C.bufferViews[k.bitstream];
|
|
3135
|
+
return w(E[S.buffer], S.byteOffset, R);
|
|
3116
3136
|
}
|
|
3117
3137
|
function w(k, R, S) {
|
|
3118
3138
|
const F = S % 8;
|
|
@@ -3120,45 +3140,45 @@ async function Sa(o) {
|
|
|
3120
3140
|
}
|
|
3121
3141
|
function M(k) {
|
|
3122
3142
|
let R = 0;
|
|
3123
|
-
return R = k.z == null ?
|
|
3143
|
+
return R = k.z == null ? qt(k.x, k.y, k.level) : Kt(k.x, k.y, k.z, k.level), x(C.tileAvailability, R);
|
|
3124
3144
|
}
|
|
3125
3145
|
function T(k) {
|
|
3126
3146
|
let R = 0;
|
|
3127
|
-
R = k.z == null ?
|
|
3147
|
+
R = k.z == null ? qt(k.x, k.y, k.level) : Kt(k.x, k.y, k.z, k.level);
|
|
3128
3148
|
const S = [];
|
|
3129
|
-
return
|
|
3149
|
+
return C.contentAvailability.forEach((F) => {
|
|
3130
3150
|
S.push(x(F, R));
|
|
3131
3151
|
}), S;
|
|
3132
3152
|
}
|
|
3133
3153
|
function v(k) {
|
|
3134
3154
|
let R = 0;
|
|
3135
|
-
return R = k.z == null ?
|
|
3155
|
+
return R = k.z == null ? qt(k.x, k.y) : Kt(k.x, k.y, k.z), x(C.childSubtreeAvailability, R);
|
|
3136
3156
|
}
|
|
3137
3157
|
return { isTileAvailable: M, isContentAvailable: T, isChildSubtreeAvailable: v };
|
|
3138
3158
|
}(u, m);
|
|
3139
|
-
}(await t.arrayBuffer(),
|
|
3159
|
+
}(await t.arrayBuffer(), Oa(o));
|
|
3140
3160
|
throw new Error(`Unsupported file extension: ${e}`);
|
|
3141
3161
|
}
|
|
3142
|
-
function
|
|
3162
|
+
function Oa(o) {
|
|
3143
3163
|
const e = o.split("?")[0];
|
|
3144
3164
|
return e.substring(0, e.lastIndexOf("/") + 1);
|
|
3145
3165
|
}
|
|
3146
|
-
function
|
|
3166
|
+
function Ha(o) {
|
|
3147
3167
|
return o = 1431655765 & ((o = 858993459 & ((o = 252645135 & ((o = 16711935 & ((o &= 65535) ^ o << 8)) ^ o << 4)) ^ o << 2)) ^ o << 1);
|
|
3148
3168
|
}
|
|
3149
|
-
function
|
|
3169
|
+
function qt(o, e, t) {
|
|
3150
3170
|
let a = 0;
|
|
3151
|
-
return t && (a = (Math.pow(4, t) - 1) / 3), a + (
|
|
3171
|
+
return t && (a = (Math.pow(4, t) - 1) / 3), a + (Ha(o) | Ha(e) << 1);
|
|
3152
3172
|
}
|
|
3153
|
-
function
|
|
3173
|
+
function Jt(o) {
|
|
3154
3174
|
return o = 153391689 & ((o = 51130563 & ((o = 50393103 & ((o = 4278190335 & ((o &= 1023) ^ o << 16)) ^ o << 8)) ^ o << 4)) ^ o << 2);
|
|
3155
3175
|
}
|
|
3156
|
-
function
|
|
3176
|
+
function Kt(o, e, t, a) {
|
|
3157
3177
|
let A = 0;
|
|
3158
|
-
return a && (A = (Math.pow(8, a) - 1) / 7), A + (
|
|
3178
|
+
return a && (A = (Math.pow(8, a) - 1) / 7), A + (Jt(o) | Jt(e) << 1 | Jt(t) << 2);
|
|
3159
3179
|
}
|
|
3160
|
-
const
|
|
3161
|
-
async function
|
|
3180
|
+
const nt = /* @__PURE__ */ new Map();
|
|
3181
|
+
async function ba(o, e) {
|
|
3162
3182
|
if (!o.root || !o.root.implicitTiling) return o;
|
|
3163
3183
|
if (!o.root.content && !o.root.contents) throw new Error("implicit tiling requires a Template URI");
|
|
3164
3184
|
let t = !0;
|
|
@@ -3176,8 +3196,8 @@ async function ca(o, e) {
|
|
|
3176
3196
|
let i;
|
|
3177
3197
|
t && (i = a.replace("{level}", 0).replace("{x}", 0).replace("{y}", 0)), t || (i = a.replace("{level}", 0).replace("{x}", 0).replace("{y}", 0).replace("{z}", 0));
|
|
3178
3198
|
const n = { level: 0, x: 0, y: 0 }, l = { level: 0, x: 0, y: 0 };
|
|
3179
|
-
t || (n.z = 0, l.z = 0),
|
|
3180
|
-
const h =
|
|
3199
|
+
t || (n.z = 0, l.z = 0), nt.set(i, await Pa(s + i));
|
|
3200
|
+
const h = nt.get(i), b = [];
|
|
3181
3201
|
h.isContentAvailable(l) && A.forEach((I) => {
|
|
3182
3202
|
let u;
|
|
3183
3203
|
t && (u = I.replace("{level}", n.level).replace("{x}", n.x).replace("{y}", n.y)), t || (u = I.replace("{level}", n.level).replace("{x}", n.x).replace("{y}", n.y).replace("{z}", n.z)), b.push({ uri: u });
|
|
@@ -3188,24 +3208,24 @@ async function ca(o, e) {
|
|
|
3188
3208
|
const u = [];
|
|
3189
3209
|
if (I.localAddress.level == o.root.implicitTiling.availableLevels - 1) return u;
|
|
3190
3210
|
if ((I.localAddress.level + 1) % o.root.implicitTiling.subtreeLevels == 0) {
|
|
3191
|
-
const p =
|
|
3192
|
-
for (let
|
|
3193
|
-
const x = p[
|
|
3194
|
-
I.subtree.isChildSubtreeAvailable(x) && (t && a.replace("{level}", w.level).replace("{x}", w.x).replace("{y}", w.y), t || a.replace("{level}", w.level).replace("{x}", w.x).replace("{y}", w.y).replace("{z}", w.z)),
|
|
3195
|
-
const M =
|
|
3211
|
+
const p = mt(I.localAddress), m = mt(I.globalAddress), C = qa(t, o.root.boundingVolume, m);
|
|
3212
|
+
for (let E = 0; E < p.length; E++) {
|
|
3213
|
+
const x = p[E], w = m[E];
|
|
3214
|
+
I.subtree.isChildSubtreeAvailable(x) && (t && a.replace("{level}", w.level).replace("{x}", w.x).replace("{y}", w.y), t || a.replace("{level}", w.level).replace("{x}", w.x).replace("{y}", w.y).replace("{z}", w.z)), nt.has(i) || nt.set(i, await Pa(s + i));
|
|
3215
|
+
const M = nt.get(i), T = { level: 0, x: 0, y: 0 };
|
|
3196
3216
|
t || (T.z = 0);
|
|
3197
3217
|
const v = [];
|
|
3198
3218
|
M.isContentAvailable(T) && A.forEach((R) => {
|
|
3199
3219
|
let S;
|
|
3200
3220
|
t && (S = R.replace("{level}", w.level).replace("{x}", w.x).replace("{y}", w.y)), t || (S = R.replace("{level}", w.level).replace("{x}", w.x).replace("{y}", w.y).replace("{z}", w.z)), v.push({ uri: S });
|
|
3201
3221
|
});
|
|
3202
|
-
const k = { geometricError: I.geometricError / 2, boundingVolume: E
|
|
3222
|
+
const k = { geometricError: I.geometricError / 2, boundingVolume: C[E], refine: o.root.refine, globalAddress: w, localAddress: T, subtree: M, contents: v, getChildren: async () => f(k) };
|
|
3203
3223
|
u.push(k);
|
|
3204
3224
|
}
|
|
3205
3225
|
} else {
|
|
3206
|
-
const p =
|
|
3207
|
-
for (let
|
|
3208
|
-
const x = p[
|
|
3226
|
+
const p = mt(I.localAddress), m = mt(I.globalAddress), C = qa(t, o.root.boundingVolume, m);
|
|
3227
|
+
for (let E = 0; E < p.length; E++) {
|
|
3228
|
+
const x = p[E], w = m[E];
|
|
3209
3229
|
if (!I.subtree.isTileAvailable(x)) continue;
|
|
3210
3230
|
const M = [], T = I.subtree.isContentAvailable(x);
|
|
3211
3231
|
for (let k = 0; k < A.length; k++) {
|
|
@@ -3214,27 +3234,27 @@ async function ca(o, e) {
|
|
|
3214
3234
|
let S;
|
|
3215
3235
|
t && (S = R.replace("{level}", w.level).replace("{x}", w.x).replace("{y}", w.y)), t || (S = R.replace("{level}", w.level).replace("{x}", w.x).replace("{y}", w.y).replace("{z}", w.z)), M.push({ uri: S });
|
|
3216
3236
|
}
|
|
3217
|
-
const v = { geometricError: I.geometricError / 2, boundingVolume: E
|
|
3237
|
+
const v = { geometricError: I.geometricError / 2, boundingVolume: C[E], refine: o.root.refine, globalAddress: w, localAddress: x, subtree: I.subtree, contents: M, getChildren: async () => f(v) };
|
|
3218
3238
|
u.push(v);
|
|
3219
3239
|
}
|
|
3220
3240
|
}
|
|
3221
3241
|
return u.length > 0 ? u : void 0;
|
|
3222
3242
|
}
|
|
3223
3243
|
}
|
|
3224
|
-
function
|
|
3244
|
+
function mt(o) {
|
|
3225
3245
|
const { level: e, x: t, y: a, z: A } = o, s = e + 1;
|
|
3226
3246
|
let i = [];
|
|
3227
3247
|
return i = A === void 0 ? [{ level: s, x: 2 * t, y: 2 * a }, { level: s, x: 2 * t + 1, y: 2 * a }, { level: s, x: 2 * t, y: 2 * a + 1 }, { level: s, x: 2 * t + 1, y: 2 * a + 1 }] : [{ level: s, x: 2 * t, y: 2 * a, z: 2 * A }, { level: s, x: 2 * t + 1, y: 2 * a, z: 2 * A }, { level: s, x: 2 * t, y: 2 * a + 1, z: 2 * A }, { level: s, x: 2 * t + 1, y: 2 * a + 1, z: 2 * A }, { level: s, x: 2 * t, y: 2 * a, z: 2 * A + 1 }, { level: s, x: 2 * t + 1, y: 2 * a, z: 2 * A + 1 }, { level: s, x: 2 * t, y: 2 * a + 1, z: 2 * A + 1 }, { level: s, x: 2 * t + 1, y: 2 * a + 1, z: 2 * A + 1 }], i;
|
|
3228
3248
|
}
|
|
3229
|
-
function
|
|
3249
|
+
function qa(o, e, t) {
|
|
3230
3250
|
const a = [];
|
|
3231
|
-
for (let A = 0; A < t.length; A++) a.push(
|
|
3251
|
+
for (let A = 0; A < t.length; A++) a.push(Gs(o, e, t[A]));
|
|
3232
3252
|
return a;
|
|
3233
3253
|
}
|
|
3234
|
-
function
|
|
3254
|
+
function Gs(o, e, t) {
|
|
3235
3255
|
if (e.region) return function(a, A, s) {
|
|
3236
|
-
const [i, n, l, h, b, g] = A, f = (l - i) / 2 ** s.level, I = (h - n) / 2 ** s.level, u = a ? 0 : (g - b) / 2 ** s.level, p = i + f * s.x, m = n + I * s.y,
|
|
3237
|
-
return { region: [p, m,
|
|
3256
|
+
const [i, n, l, h, b, g] = A, f = (l - i) / 2 ** s.level, I = (h - n) / 2 ** s.level, u = a ? 0 : (g - b) / 2 ** s.level, p = i + f * s.x, m = n + I * s.y, C = p + f, E = m + I, x = a ? b : b + u * s.z, w = a ? g : x + u;
|
|
3257
|
+
return { region: [p, m, C, E, x, w] };
|
|
3238
3258
|
}(o, e.region, t);
|
|
3239
3259
|
if (e.box) return function(a, A, s) {
|
|
3240
3260
|
const i = A.slice(0, 3), n = [A.slice(3, 6), A.slice(6, 9), A.slice(9, 12)], l = 1 / Math.pow(2, s.level), h = [l, l, a ? 1 : l], b = n.map((I, u) => I.map((p) => p * h[u])), g = [i[0] - n[0][0] - n[1][0] - n[2][0], i[1] - n[0][1] - n[1][1] - n[2][1], i[2] - n[0][2] - n[1][2] - n[2][2]];
|
|
@@ -3263,10 +3283,10 @@ function xs(o, e, t) {
|
|
|
3263
3283
|
return new Uint8Array(h.buffer, h.byteOffset, h.byteLength);
|
|
3264
3284
|
}
|
|
3265
3285
|
function s(h, b, g, f, I) {
|
|
3266
|
-
var u = o.exports.sbrk, p = u(b), m = u(f * I),
|
|
3267
|
-
|
|
3268
|
-
var
|
|
3269
|
-
return x.set(
|
|
3286
|
+
var u = o.exports.sbrk, p = u(b), m = u(f * I), C = new Uint8Array(o.exports.memory.buffer);
|
|
3287
|
+
C.set(A(g), m);
|
|
3288
|
+
var E = h(p, b, m, f, I), x = new Uint8Array(E);
|
|
3289
|
+
return x.set(C.subarray(p, p + E)), u(p - u(0)), x;
|
|
3270
3290
|
}
|
|
3271
3291
|
function i(h) {
|
|
3272
3292
|
for (var b = 0, g = 0; g < h.length; ++g)
|
|
@@ -3279,13 +3299,13 @@ function xs(o, e, t) {
|
|
|
3279
3299
|
return new Uint32Array(g);
|
|
3280
3300
|
}
|
|
3281
3301
|
function l(h, b, g, f, I, u, p) {
|
|
3282
|
-
var m = o.exports.sbrk,
|
|
3283
|
-
x.set(A(b),
|
|
3302
|
+
var m = o.exports.sbrk, C = m(g * f), E = m(g * u), x = new Uint8Array(o.exports.memory.buffer);
|
|
3303
|
+
x.set(A(b), E), h(C, g, f, I, E, p);
|
|
3284
3304
|
var w = new Uint8Array(g * f);
|
|
3285
|
-
return w.set(x.subarray(
|
|
3305
|
+
return w.set(x.subarray(C, C + g * f)), m(C - m(0)), w;
|
|
3286
3306
|
}
|
|
3287
3307
|
})();
|
|
3288
|
-
var
|
|
3308
|
+
var RA = function() {
|
|
3289
3309
|
var o = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2, 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11]), e = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]);
|
|
3290
3310
|
if (typeof WebAssembly != "object") return { supported: !1 };
|
|
3291
3311
|
var t, a = WebAssembly.validate(o) ? "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;b9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;e8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincbhHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAcd0hHalhOaAcefgAclSmdxekkcbhlaHceGTmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;tzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnaval9pmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb" : "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;d8Yqdbk:yzeHu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhlaicefhodnadTmbalc;WFbGglcjdalcjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxdndndndnalc9WGgmTmbcbhPcehsawcjdfhzaohHinaraH9Rax6midnaraHaxfgo9RcK6mbczhlcbhOinalgic9WfgAawcj;cbffhldndndndndnaHaAco4fRbbaOcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgAco4gCaCciSgCE86bbawcj;cbfaifglcGfaoclfaCfgCRbbaAcl4ciGgXaXciSgXE86bbalcVfaCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc7faCaXfgCRbbaAciGgAaAciSgAE86bbalctfaCaAfgCRbbaoRbegAco4gXaXciSgXE86bbalc91faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc4faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc93faCaXfgCRbbaAciGgAaAciSgAE86bbalc94faCaAfgCRbbaoRbdgAco4gXaXciSgXE86bbalc95faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc96faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc97faCaXfgCRbbaAciGgAaAciSgAE86bbalc98faCaAfgARbbaoRbigoco4gCaCciSgCE86bbalc99faAaCfgARbbaocl4ciGgCaCciSgCE86bbalc9:faAaCfgARbbaocd4ciGgCaCciSgCE86bbalcufaAaCfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgAcl4gCaCcsSgCE86bbawcj;cbfaifglcGfaocwfaCfgCRbbaAcsGgAaAcsSgAE86bbalcVfaCaAfgARbbaoRbegCcl4gXaXcsSgXE86bbalc7faAaXfgARbbaCcsGgCaCcsSgCE86bbalctfaAaCfgARbbaoRbdgCcl4gXaXcsSgXE86bbalc91faAaXfgARbbaCcsGgCaCcsSgCE86bbalc4faAaCfgARbbaoRbigCcl4gXaXcsSgXE86bbalc93faAaXfgARbbaCcsGgCaCcsSgCE86bbalc94faAaCfgARbbaoRblgCcl4gXaXcsSgXE86bbalc95faAaXfgARbbaCcsGgCaCcsSgCE86bbalc96faAaCfgARbbaoRbvgCcl4gXaXcsSgXE86bbalc97faAaXfgARbbaCcsGgCaCcsSgCE86bbalc98faAaCfgARbbaoRbogCcl4gXaXcsSgXE86bbalc99faAaXfgARbbaCcsGgCaCcsSgCE86bbalc9:faAaCfgARbbaoRbrgocl4gCaCcsSgCE86bbalcufaAaCfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaOcdfhOaiczfhlarao9RcL0mekkaiam6miaoTmidnakTmbawaPfRbbhOawcj;cbfhlazhiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkkazcefhzaPcefgPad6hsaohHaPad9hmexvkkcbhoasceGmdxikaoaxad2fhXdnakTmbcbhmcehsawcjdfhCinarao9Rax6miaoTmdaoaxfhoawamfRbbhOawcj;cbfhlaChiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkaCcefhCamcefgmad6hsamad9hmbkaXhoxikcbhlcehsinarao9Rax6mdaoTmeaoaxfhoalcefglad6hsadal9hmbkaXhoxdkcbhoasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekcbc99arao9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;xzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabaiavcdfciGfcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabaiavcufciGfcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabaiavciGfcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb", A = WebAssembly.instantiate(s(a), {}).then(function(I) {
|
|
@@ -3296,15 +3316,15 @@ var QA = function() {
|
|
|
3296
3316
|
var m = I.charCodeAt(p);
|
|
3297
3317
|
u[p] = m > 96 ? m - 97 : m > 64 ? m - 39 : m + 4;
|
|
3298
3318
|
}
|
|
3299
|
-
var
|
|
3300
|
-
for (p = 0; p < I.length; ++p) u[
|
|
3301
|
-
return u.buffer.slice(0,
|
|
3319
|
+
var C = 0;
|
|
3320
|
+
for (p = 0; p < I.length; ++p) u[C++] = u[p] < 60 ? e[u[p]] : 64 * (u[p] - 60) + u[++p];
|
|
3321
|
+
return u.buffer.slice(0, C);
|
|
3302
3322
|
}
|
|
3303
|
-
function i(I, u, p, m,
|
|
3304
|
-
var w = I.exports.sbrk, M = m + 3 & -4, T = w(M *
|
|
3305
|
-
k.set(
|
|
3306
|
-
var R = u(T, m,
|
|
3307
|
-
if (R == 0 && x && x(T, M,
|
|
3323
|
+
function i(I, u, p, m, C, E, x) {
|
|
3324
|
+
var w = I.exports.sbrk, M = m + 3 & -4, T = w(M * C), v = w(E.length), k = new Uint8Array(I.exports.memory.buffer);
|
|
3325
|
+
k.set(E, v);
|
|
3326
|
+
var R = u(T, m, C, v, E.length);
|
|
3327
|
+
if (R == 0 && x && x(T, M, C), p.set(k.subarray(T, T + m * C)), w(T - w(0)), R != 0) throw new Error("Malformed buffer data: " + R);
|
|
3308
3328
|
}
|
|
3309
3329
|
var n = { NONE: "", OCTAHEDRAL: "meshopt_decodeFilterOct", QUATERNION: "meshopt_decodeFilterQuat", EXPONENTIAL: "meshopt_decodeFilterExp" }, l = { ATTRIBUTES: "meshopt_decodeVertexBuffer", TRIANGLES: "meshopt_decodeIndexBuffer", INDICES: "meshopt_decodeIndexSequence" }, h = [], b = 0;
|
|
3310
3330
|
function g(I) {
|
|
@@ -3321,35 +3341,35 @@ var QA = function() {
|
|
|
3321
3341
|
try {
|
|
3322
3342
|
var m = new Uint8Array(u.count * u.size);
|
|
3323
3343
|
i(p, p.exports[u.mode], m, u.count, u.size, u.source, p.exports[u.filter]), self.postMessage({ id: u.id, count: u.count, action: "resolve", value: m }, [m.buffer]);
|
|
3324
|
-
} catch (
|
|
3325
|
-
self.postMessage({ id: u.id, count: u.count, action: "reject", value:
|
|
3344
|
+
} catch (C) {
|
|
3345
|
+
self.postMessage({ id: u.id, count: u.count, action: "reject", value: C });
|
|
3326
3346
|
}
|
|
3327
3347
|
});
|
|
3328
3348
|
}
|
|
3329
3349
|
return { ready: A, supported: !0, useWorkers: function(I) {
|
|
3330
3350
|
(function(u) {
|
|
3331
|
-
for (var p = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(s(a)) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + f.name + ";" + i.toString() + f.toString(), m = new Blob([p], { type: "text/javascript" }),
|
|
3332
|
-
for (
|
|
3333
|
-
h.length = u, URL.revokeObjectURL(
|
|
3351
|
+
for (var p = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(s(a)) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + f.name + ";" + i.toString() + f.toString(), m = new Blob([p], { type: "text/javascript" }), C = URL.createObjectURL(m), E = h.length; E < u; ++E) h[E] = g(C);
|
|
3352
|
+
for (E = u; E < h.length; ++E) h[E].object.postMessage({});
|
|
3353
|
+
h.length = u, URL.revokeObjectURL(C);
|
|
3334
3354
|
})(I);
|
|
3335
|
-
}, decodeVertexBuffer: function(I, u, p, m,
|
|
3336
|
-
i(t, t.exports.meshopt_decodeVertexBuffer, I, u, p, m, t.exports[n[
|
|
3355
|
+
}, decodeVertexBuffer: function(I, u, p, m, C) {
|
|
3356
|
+
i(t, t.exports.meshopt_decodeVertexBuffer, I, u, p, m, t.exports[n[C]]);
|
|
3337
3357
|
}, decodeIndexBuffer: function(I, u, p, m) {
|
|
3338
3358
|
i(t, t.exports.meshopt_decodeIndexBuffer, I, u, p, m);
|
|
3339
3359
|
}, decodeIndexSequence: function(I, u, p, m) {
|
|
3340
3360
|
i(t, t.exports.meshopt_decodeIndexSequence, I, u, p, m);
|
|
3341
|
-
}, decodeGltfBuffer: function(I, u, p, m,
|
|
3342
|
-
i(t, t.exports[l[
|
|
3343
|
-
}, decodeGltfBufferAsync: function(I, u, p, m,
|
|
3344
|
-
return h.length > 0 ? function(
|
|
3361
|
+
}, decodeGltfBuffer: function(I, u, p, m, C, E) {
|
|
3362
|
+
i(t, t.exports[l[C]], I, u, p, m, t.exports[n[E]]);
|
|
3363
|
+
}, decodeGltfBufferAsync: function(I, u, p, m, C) {
|
|
3364
|
+
return h.length > 0 ? function(E, x, w, M, T) {
|
|
3345
3365
|
for (var v = h[0], k = 1; k < h.length; ++k) h[k].pending < v.pending && (v = h[k]);
|
|
3346
3366
|
return new Promise(function(R, S) {
|
|
3347
3367
|
var F = new Uint8Array(w), z = ++b;
|
|
3348
|
-
v.pending +=
|
|
3368
|
+
v.pending += E, v.requests[z] = { resolve: R, reject: S }, v.object.postMessage({ id: z, count: E, size: x, source: F, mode: M, filter: T }, [F.buffer]);
|
|
3349
3369
|
});
|
|
3350
|
-
}(I, u, p, l[m], n[
|
|
3351
|
-
var
|
|
3352
|
-
return i(t, t.exports[l[m]],
|
|
3370
|
+
}(I, u, p, l[m], n[C]) : A.then(function() {
|
|
3371
|
+
var E = new Uint8Array(I * u);
|
|
3372
|
+
return i(t, t.exports[l[m]], E, I, u, p, t.exports[n[C]]), E;
|
|
3353
3373
|
});
|
|
3354
3374
|
} };
|
|
3355
3375
|
}();
|
|
@@ -3374,9 +3394,9 @@ var QA = function() {
|
|
|
3374
3394
|
return new Uint8Array(n.buffer, n.byteOffset, n.byteLength);
|
|
3375
3395
|
}
|
|
3376
3396
|
function s(n, l, h, b, g, f, I, u) {
|
|
3377
|
-
var p = o.exports.sbrk, m = p(4 * u),
|
|
3378
|
-
x.set(A(l),
|
|
3379
|
-
var w = n(m,
|
|
3397
|
+
var p = o.exports.sbrk, m = p(4 * u), C = p(h * b), E = p(h * f), x = new Uint8Array(o.exports.memory.buffer);
|
|
3398
|
+
x.set(A(l), C), g && x.set(A(g), E);
|
|
3399
|
+
var w = n(m, C, h, b, E, f, I, u);
|
|
3380
3400
|
new Uint8Array(o.exports.memory.buffer);
|
|
3381
3401
|
var M = new Uint32Array(w);
|
|
3382
3402
|
return A(M).set(x.subarray(m, m + 4 * w)), p(m - p(0)), M;
|
|
@@ -3384,11 +3404,11 @@ var QA = function() {
|
|
|
3384
3404
|
var i = { LockBorder: 1 };
|
|
3385
3405
|
})();
|
|
3386
3406
|
let Qe = 0;
|
|
3387
|
-
class
|
|
3407
|
+
class Ns {
|
|
3388
3408
|
constructor(e) {
|
|
3389
|
-
if (this.renderer = e.renderer, this.zUpToYUpMatrix = new j.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.proxy = e.proxy, e && (this.meshCallback = e.meshCallback, this.pointsCallback = e.pointsCallback, e.maxCachedItems != null && (this.maxCachedItems = e.maxCachedItems)), this.gltfLoader = new
|
|
3409
|
+
if (this.renderer = e.renderer, this.zUpToYUpMatrix = new j.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.proxy = e.proxy, e && (this.meshCallback = e.meshCallback, this.pointsCallback = e.pointsCallback, e.maxCachedItems != null && (this.maxCachedItems = e.maxCachedItems)), this.gltfLoader = new hA(), e && e.dracoLoader) this.gltfLoader.setDRACOLoader(e.dracoLoader), this.hasDracoLoader = !0;
|
|
3390
3410
|
else {
|
|
3391
|
-
const t = new
|
|
3411
|
+
const t = new gA();
|
|
3392
3412
|
t.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"), this.gltfLoader.setDRACOLoader(t), this.gltfLoader.hasDracoLoader = !0;
|
|
3393
3413
|
}
|
|
3394
3414
|
if (e && e.ktx2Loader) this.gltfLoader.setKTX2Loader(e.ktx2Loader), this.hasKTX2Loader = !0;
|
|
@@ -3396,7 +3416,7 @@ class ks {
|
|
|
3396
3416
|
const t = new re();
|
|
3397
3417
|
t.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer), this.gltfLoader.setKTX2Loader(t), this.gltfLoader.hasKTX2Loader = !0;
|
|
3398
3418
|
}
|
|
3399
|
-
this.gltfLoader.setMeshoptDecoder(
|
|
3419
|
+
this.gltfLoader.setMeshoptDecoder(RA), this.hasMeshOptDecoder = !0, this.b3dmDecoder = new cA(this.gltfLoader), this.splatsDecoder = new Oi(this.gltfLoader, this.renderer), this.cache = new nA.LinkedHashMap(), this.register = {}, this.ready = [], this.downloads = [], this.nextReady = [], this.nextDownloads = [];
|
|
3400
3420
|
}
|
|
3401
3421
|
update() {
|
|
3402
3422
|
const e = this;
|
|
@@ -3458,7 +3478,7 @@ class ks {
|
|
|
3458
3478
|
}
|
|
3459
3479
|
}
|
|
3460
3480
|
get(e, t, a, A, s, i, n, l, h, b, g) {
|
|
3461
|
-
const f = this, I =
|
|
3481
|
+
const f = this, I = Ja(a), u = new AbortController();
|
|
3462
3482
|
if (e.signal.addEventListener("abort", () => {
|
|
3463
3483
|
f.register[I] && Object.keys(f.register[I]).length != 0 || u.abort("user abort");
|
|
3464
3484
|
}), !(a.includes(".b3dm") || a.includes(".json") || a.includes(".gltf") || a.includes(".glb"))) return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");
|
|
@@ -3467,58 +3487,58 @@ class ks {
|
|
|
3467
3487
|
let p;
|
|
3468
3488
|
a.includes(".b3dm") ? p = () => {
|
|
3469
3489
|
var m;
|
|
3470
|
-
m = f.proxy ? () => fetch(f.proxy, { method: "POST", body: a, signal: u.signal }) : () => fetch(a, { signal: u.signal }), Qe++, m().then((
|
|
3471
|
-
if (!
|
|
3472
|
-
return
|
|
3473
|
-
}).then((
|
|
3474
|
-
f.meshCallback(
|
|
3475
|
-
}, l, h)).then((
|
|
3476
|
-
f.cache.put(I,
|
|
3477
|
-
}).catch((
|
|
3490
|
+
m = f.proxy ? () => fetch(f.proxy, { method: "POST", body: a, signal: u.signal }) : () => fetch(a, { signal: u.signal }), Qe++, m().then((C) => {
|
|
3491
|
+
if (!C.ok) throw console.error("could not load tile with path : " + a), new Error(`couldn't load "${a}". Request failed with status ${C.status} : ${C.statusText}`);
|
|
3492
|
+
return C.arrayBuffer();
|
|
3493
|
+
}).then((C) => this.b3dmDecoder.parseB3DM(C, (E) => {
|
|
3494
|
+
f.meshCallback(E, b);
|
|
3495
|
+
}, l, h)).then((C) => {
|
|
3496
|
+
f.cache.put(I, C), f._checkSize(), this._meshReceived(f.cache, f.register, I, s, i, n, t);
|
|
3497
|
+
}).catch((C) => {
|
|
3478
3498
|
}).finally(() => {
|
|
3479
3499
|
Qe--;
|
|
3480
3500
|
});
|
|
3481
3501
|
} : a.includes(".glb") || a.includes(".gltf") ? p = g ? () => {
|
|
3482
3502
|
var m;
|
|
3483
|
-
m = f.proxy ? () => fetch(f.proxy, { method: "POST", body: a, signal: u.signal }) : () => fetch(a, { signal: u.signal }), Qe++, m().then((
|
|
3484
|
-
if (!
|
|
3485
|
-
return
|
|
3486
|
-
}).then((
|
|
3487
|
-
f.cache.put(I,
|
|
3488
|
-
}).catch((
|
|
3503
|
+
m = f.proxy ? () => fetch(f.proxy, { method: "POST", body: a, signal: u.signal }) : () => fetch(a, { signal: u.signal }), Qe++, m().then((C) => {
|
|
3504
|
+
if (!C.ok) throw console.error("could not load tile with path : " + a), new Error(`couldn't load "${a}". Request failed with status ${C.status} : ${C.statusText}`);
|
|
3505
|
+
return C.arrayBuffer();
|
|
3506
|
+
}).then((C) => this.splatsDecoder.parseSplats(C, l, h, g)).then((C) => {
|
|
3507
|
+
f.cache.put(I, C), f._checkSize(), f._meshReceived(f.cache, f.register, I, s, i, n, t);
|
|
3508
|
+
}).catch((C) => {
|
|
3489
3509
|
}).finally(() => {
|
|
3490
3510
|
Qe--;
|
|
3491
3511
|
});
|
|
3492
3512
|
} : () => {
|
|
3493
3513
|
var m;
|
|
3494
|
-
m = f.proxy ? () => fetch(f.proxy, { method: "POST", body: a, signal: u.signal }) : () => fetch(a, { signal: u.signal }), Qe++, m().then((
|
|
3495
|
-
if (!
|
|
3496
|
-
return
|
|
3497
|
-
}).then(async (
|
|
3498
|
-
await async function(
|
|
3514
|
+
m = f.proxy ? () => fetch(f.proxy, { method: "POST", body: a, signal: u.signal }) : () => fetch(a, { signal: u.signal }), Qe++, m().then((C) => {
|
|
3515
|
+
if (!C.ok) throw console.error("could not load tile with path : " + a), new Error(`couldn't load "${a}". Request failed with status ${C.status} : ${C.statusText}`);
|
|
3516
|
+
return C.arrayBuffer();
|
|
3517
|
+
}).then(async (C) => {
|
|
3518
|
+
await async function(E) {
|
|
3499
3519
|
return new Promise((x) => {
|
|
3500
3520
|
const w = setInterval(() => {
|
|
3501
|
-
|
|
3521
|
+
E.hasDracoLoader && !E.dracoLoader || E.hasKTX2Loader && !E.ktx2Loader || (clearInterval(w), x());
|
|
3502
3522
|
}, 10);
|
|
3503
3523
|
});
|
|
3504
|
-
}(this.gltfLoader), this.gltfLoader.parse(
|
|
3505
|
-
|
|
3524
|
+
}(this.gltfLoader), this.gltfLoader.parse(C, null, (E) => {
|
|
3525
|
+
E.scene.asset = E.asset, l && E.scene.applyMatrix4(this.zUpToYUpMatrix), E.scene.traverse((x) => {
|
|
3506
3526
|
x.isMesh && (h && x.applyMatrix4(this.zUpToYUpMatrix), f.meshCallback && f.meshCallback(x, b)), x.isPoints && f.pointsCallback && f.pointsCallback(x, b);
|
|
3507
|
-
}), f.cache.put(I,
|
|
3527
|
+
}), f.cache.put(I, E.scene), f._checkSize(), f._meshReceived(f.cache, f.register, I, s, i, n, t);
|
|
3508
3528
|
});
|
|
3509
|
-
}).catch((
|
|
3510
|
-
|
|
3529
|
+
}).catch((C) => {
|
|
3530
|
+
C !== "user abort" && C.code;
|
|
3511
3531
|
}).finally(() => {
|
|
3512
3532
|
Qe--;
|
|
3513
3533
|
});
|
|
3514
3534
|
} : a.includes(".json") && (p = () => {
|
|
3515
3535
|
var m;
|
|
3516
|
-
m = f.proxy ? () => fetch(f.proxy, { method: "POST", body: a, signal: u.signal }) : () => fetch(a, { signal: u.signal }), Qe++, m().then((
|
|
3517
|
-
if (!
|
|
3518
|
-
return
|
|
3519
|
-
}).then((
|
|
3520
|
-
f.cache.put(I,
|
|
3521
|
-
}).catch((
|
|
3536
|
+
m = f.proxy ? () => fetch(f.proxy, { method: "POST", body: a, signal: u.signal }) : () => fetch(a, { signal: u.signal }), Qe++, m().then((C) => {
|
|
3537
|
+
if (!C.ok) throw console.error("could not load tile with path : " + a), new Error(`couldn't load "${a}". Request failed with status ${C.status} : ${C.statusText}`);
|
|
3538
|
+
return C.json();
|
|
3539
|
+
}).then((C) => ba(C, a)).then((C) => {
|
|
3540
|
+
f.cache.put(I, C), f._checkSize(), f._meshReceived(f.cache, f.register, I);
|
|
3541
|
+
}).catch((C) => {
|
|
3522
3542
|
}).finally(() => {
|
|
3523
3543
|
Qe--;
|
|
3524
3544
|
});
|
|
@@ -3530,7 +3550,7 @@ class ks {
|
|
|
3530
3550
|
this.maxCachedItems = 0, this._checkSize(), this.maxCachedItems = e;
|
|
3531
3551
|
}
|
|
3532
3552
|
invalidate(e, t) {
|
|
3533
|
-
const a =
|
|
3553
|
+
const a = Ja(e);
|
|
3534
3554
|
this.register[a] && (delete this.register[a][t], this._checkSize());
|
|
3535
3555
|
}
|
|
3536
3556
|
_checkSize() {
|
|
@@ -3547,7 +3567,7 @@ class ks {
|
|
|
3547
3567
|
}
|
|
3548
3568
|
}
|
|
3549
3569
|
}
|
|
3550
|
-
function
|
|
3570
|
+
function Ja(o) {
|
|
3551
3571
|
for (var e = o.split("/"), t = [], a = 0, A = 0; A < e.length; A++) {
|
|
3552
3572
|
var s = e[A];
|
|
3553
3573
|
s !== "." && s !== "" && s !== ".." ? t[a++] = s : s === ".." && a > 0 && a--;
|
|
@@ -3557,16 +3577,16 @@ function Ga(o) {
|
|
|
3557
3577
|
for (A = 0; A < a; A++) i += "/" + t[A];
|
|
3558
3578
|
return i;
|
|
3559
3579
|
}
|
|
3560
|
-
var De, je,
|
|
3561
|
-
function
|
|
3580
|
+
var De, je, MA = { exports: {} }, J = MA.exports = {};
|
|
3581
|
+
function sa() {
|
|
3562
3582
|
throw new Error("setTimeout has not been defined");
|
|
3563
3583
|
}
|
|
3564
|
-
function
|
|
3584
|
+
function ra() {
|
|
3565
3585
|
throw new Error("clearTimeout has not been defined");
|
|
3566
3586
|
}
|
|
3567
|
-
function
|
|
3587
|
+
function vA(o) {
|
|
3568
3588
|
if (De === setTimeout) return setTimeout(o, 0);
|
|
3569
|
-
if ((De ===
|
|
3589
|
+
if ((De === sa || !De) && setTimeout) return De = setTimeout, setTimeout(o, 0);
|
|
3570
3590
|
try {
|
|
3571
3591
|
return De(o, 0);
|
|
3572
3592
|
} catch {
|
|
@@ -3579,31 +3599,31 @@ function wA(o) {
|
|
|
3579
3599
|
}
|
|
3580
3600
|
(function() {
|
|
3581
3601
|
try {
|
|
3582
|
-
De = typeof setTimeout == "function" ? setTimeout :
|
|
3602
|
+
De = typeof setTimeout == "function" ? setTimeout : sa;
|
|
3583
3603
|
} catch {
|
|
3584
|
-
De =
|
|
3604
|
+
De = sa;
|
|
3585
3605
|
}
|
|
3586
3606
|
try {
|
|
3587
|
-
je = typeof clearTimeout == "function" ? clearTimeout :
|
|
3607
|
+
je = typeof clearTimeout == "function" ? clearTimeout : ra;
|
|
3588
3608
|
} catch {
|
|
3589
|
-
je =
|
|
3609
|
+
je = ra;
|
|
3590
3610
|
}
|
|
3591
3611
|
})();
|
|
3592
|
-
var
|
|
3593
|
-
function
|
|
3594
|
-
|
|
3612
|
+
var We, Me = [], at = !1, xt = -1;
|
|
3613
|
+
function _s() {
|
|
3614
|
+
at && We && (at = !1, We.length ? Me = We.concat(Me) : xt = -1, Me.length && TA());
|
|
3595
3615
|
}
|
|
3596
|
-
function
|
|
3597
|
-
if (!
|
|
3598
|
-
var o =
|
|
3599
|
-
|
|
3616
|
+
function TA() {
|
|
3617
|
+
if (!at) {
|
|
3618
|
+
var o = vA(_s);
|
|
3619
|
+
at = !0;
|
|
3600
3620
|
for (var e = Me.length; e; ) {
|
|
3601
|
-
for (
|
|
3602
|
-
|
|
3621
|
+
for (We = Me, Me = []; ++xt < e; ) We && We[xt].run();
|
|
3622
|
+
xt = -1, e = Me.length;
|
|
3603
3623
|
}
|
|
3604
|
-
|
|
3624
|
+
We = null, at = !1, function(t) {
|
|
3605
3625
|
if (je === clearTimeout) return clearTimeout(t);
|
|
3606
|
-
if ((je ===
|
|
3626
|
+
if ((je === ra || !je) && clearTimeout) return je = clearTimeout, clearTimeout(t);
|
|
3607
3627
|
try {
|
|
3608
3628
|
return je(t);
|
|
3609
3629
|
} catch {
|
|
@@ -3616,7 +3636,7 @@ function xA() {
|
|
|
3616
3636
|
}(o);
|
|
3617
3637
|
}
|
|
3618
3638
|
}
|
|
3619
|
-
function
|
|
3639
|
+
function Ka(o, e) {
|
|
3620
3640
|
this.fun = o, this.array = e;
|
|
3621
3641
|
}
|
|
3622
3642
|
function ye() {
|
|
@@ -3624,8 +3644,8 @@ function ye() {
|
|
|
3624
3644
|
J.nextTick = function(o) {
|
|
3625
3645
|
var e = new Array(arguments.length - 1);
|
|
3626
3646
|
if (arguments.length > 1) for (var t = 1; t < arguments.length; t++) e[t - 1] = arguments[t];
|
|
3627
|
-
Me.push(new
|
|
3628
|
-
},
|
|
3647
|
+
Me.push(new Ka(o, e)), Me.length !== 1 || at || vA(TA);
|
|
3648
|
+
}, Ka.prototype.run = function() {
|
|
3629
3649
|
this.fun.apply(null, this.array);
|
|
3630
3650
|
}, J.title = "browser", J.browser = !0, J.env = {}, J.argv = [], J.version = "", J.versions = {}, J.on = ye, J.addListener = ye, J.once = ye, J.off = ye, J.removeListener = ye, J.removeAllListeners = ye, J.emit = ye, J.prependListener = ye, J.prependOnceListener = ye, J.listeners = function(o) {
|
|
3631
3651
|
return [];
|
|
@@ -3638,11 +3658,11 @@ J.nextTick = function(o) {
|
|
|
3638
3658
|
}, J.umask = function() {
|
|
3639
3659
|
return 0;
|
|
3640
3660
|
};
|
|
3641
|
-
const
|
|
3661
|
+
const Ps = Dt(MA.exports);
|
|
3642
3662
|
function ge(o) {
|
|
3643
3663
|
if (typeof o != "string") throw new TypeError("Path must be a string. Received " + JSON.stringify(o));
|
|
3644
3664
|
}
|
|
3645
|
-
function
|
|
3665
|
+
function za(o, e) {
|
|
3646
3666
|
for (var t, a = "", A = 0, s = -1, i = 0, n = 0; n <= o.length; ++n) {
|
|
3647
3667
|
if (n < o.length) t = o.charCodeAt(n);
|
|
3648
3668
|
else {
|
|
@@ -3670,16 +3690,16 @@ function _a(o, e) {
|
|
|
3670
3690
|
}
|
|
3671
3691
|
return a;
|
|
3672
3692
|
}
|
|
3673
|
-
var
|
|
3693
|
+
var Va, At = { resolve: function() {
|
|
3674
3694
|
for (var o, e = "", t = !1, a = arguments.length - 1; a >= -1 && !t; a--) {
|
|
3675
3695
|
var A;
|
|
3676
|
-
a >= 0 ? A = arguments[a] : (o === void 0 && (o =
|
|
3696
|
+
a >= 0 ? A = arguments[a] : (o === void 0 && (o = Ps.cwd()), A = o), ge(A), A.length !== 0 && (e = A + "/" + e, t = A.charCodeAt(0) === 47);
|
|
3677
3697
|
}
|
|
3678
|
-
return e =
|
|
3698
|
+
return e = za(e, !t), t ? e.length > 0 ? "/" + e : "/" : e.length > 0 ? e : ".";
|
|
3679
3699
|
}, normalize: function(o) {
|
|
3680
3700
|
if (ge(o), o.length === 0) return ".";
|
|
3681
3701
|
var e = o.charCodeAt(0) === 47, t = o.charCodeAt(o.length - 1) === 47;
|
|
3682
|
-
return (o =
|
|
3702
|
+
return (o = za(o, !e)).length !== 0 || e || (o = "."), o.length > 0 && t && (o += "/"), e ? "/" + o : o;
|
|
3683
3703
|
}, isAbsolute: function(o) {
|
|
3684
3704
|
return ge(o), o.length > 0 && o.charCodeAt(0) === 47;
|
|
3685
3705
|
}, join: function() {
|
|
@@ -3688,9 +3708,9 @@ var Pa, it = { resolve: function() {
|
|
|
3688
3708
|
var t = arguments[e];
|
|
3689
3709
|
ge(t), t.length > 0 && (o === void 0 ? o = t : o += "/" + t);
|
|
3690
3710
|
}
|
|
3691
|
-
return o === void 0 ? "." :
|
|
3711
|
+
return o === void 0 ? "." : At.normalize(o);
|
|
3692
3712
|
}, relative: function(o, e) {
|
|
3693
|
-
if (ge(o), ge(e), o === e || (o =
|
|
3713
|
+
if (ge(o), ge(e), o === e || (o = At.resolve(o)) === (e = At.resolve(e))) return "";
|
|
3694
3714
|
for (var t = 1; t < o.length && o.charCodeAt(t) === 47; ++t) ;
|
|
3695
3715
|
for (var a = o.length, A = a - t, s = 1; s < e.length && e.charCodeAt(s) === 47; ++s) ;
|
|
3696
3716
|
for (var i = e.length - s, n = A < i ? A : i, l = -1, h = 0; h <= n; ++h) {
|
|
@@ -3774,8 +3794,8 @@ var Pa, it = { resolve: function() {
|
|
|
3774
3794
|
}
|
|
3775
3795
|
return s === -1 || n === -1 || b === 0 || b === 1 && s === n - 1 && s === i + 1 ? n !== -1 && (e.base = e.name = i === 0 && A ? o.slice(1, n) : o.slice(i, n)) : (i === 0 && A ? (e.name = o.slice(1, s), e.base = o.slice(1, n)) : (e.name = o.slice(i, s), e.base = o.slice(i, n)), e.ext = o.slice(s, n)), i > 0 ? e.dir = o.slice(0, i - 1) : A && (e.dir = "/"), e;
|
|
3776
3796
|
}, sep: "/", delimiter: ":", win32: null, posix: null };
|
|
3777
|
-
|
|
3778
|
-
class
|
|
3797
|
+
At.posix = At, module.exports = At;
|
|
3798
|
+
class Os {
|
|
3779
3799
|
constructor(e) {
|
|
3780
3800
|
Je(this, "_toElementFn");
|
|
3781
3801
|
if (e) {
|
|
@@ -3833,7 +3853,7 @@ class Rs {
|
|
|
3833
3853
|
* @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
|
|
3834
3854
|
* @license MIT License
|
|
3835
3855
|
*/
|
|
3836
|
-
class Ye extends
|
|
3856
|
+
class Ye extends Os {
|
|
3837
3857
|
constructor(t = [], a) {
|
|
3838
3858
|
super(a);
|
|
3839
3859
|
Je(this, "_elements", []);
|
|
@@ -3954,7 +3974,7 @@ class Ye extends Rs {
|
|
|
3954
3974
|
}
|
|
3955
3975
|
(function(o) {
|
|
3956
3976
|
o[o.VISIT = 0] = "VISIT", o[o.PROCESS = 1] = "PROCESS";
|
|
3957
|
-
})(
|
|
3977
|
+
})(Va || (Va = {}));
|
|
3958
3978
|
class gt extends Ye {
|
|
3959
3979
|
constructor(e = [], t) {
|
|
3960
3980
|
super(e, t);
|
|
@@ -3995,10 +4015,10 @@ class ft extends gt {
|
|
|
3995
4015
|
return s;
|
|
3996
4016
|
}
|
|
3997
4017
|
}
|
|
3998
|
-
new
|
|
3999
|
-
const
|
|
4000
|
-
|
|
4001
|
-
class
|
|
4018
|
+
new oa(), new K(), new K(), new K(), new K();
|
|
4019
|
+
const Ct = new K(), Hs = new K(), SA = new na();
|
|
4020
|
+
SA.set(1, 0, 0, 0, 0, 1, 0, -1, 0);
|
|
4021
|
+
class qs extends ea {
|
|
4002
4022
|
constructor(e) {
|
|
4003
4023
|
const a = Math.min(Math.ceil(8) * 512, Math.pow(512, 2));
|
|
4004
4024
|
let A = 1 * Math.pow(512, 2);
|
|
@@ -4011,7 +4031,7 @@ class vs extends Xt {
|
|
|
4011
4031
|
n.texture.type = W, e.initRenderTarget(n);
|
|
4012
4032
|
const l = new Ue(512, 512, 1, { magFilter: P, minFilter: P, anisotropy: 0, type: W, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
4013
4033
|
l.texture.type = W, e.initRenderTarget(l);
|
|
4014
|
-
const h = new
|
|
4034
|
+
const h = new Mt({ uniforms: { textureSize: { value: 512 }, numSlices: { value: 1 }, cov1Texture: { value: n.texture }, cov2Texture: { value: l.texture }, colorTexture: { value: s.texture }, positionTexture: { value: i.texture }, zUpToYUpMatrix3x3: { value: SA }, sizeMultiplier: { value: 1 }, cropRadius: { value: Number.MAX_VALUE } }, vertexShader: `
|
|
4015
4035
|
precision highp float;
|
|
4016
4036
|
precision highp int;
|
|
4017
4037
|
|
|
@@ -4170,23 +4190,23 @@ void main() {
|
|
|
4170
4190
|
|
|
4171
4191
|
gl_FragColor = vec4(pow(color.xyz,vec3(1.0/2.2)), color.w * pow(alpha, 1.8));
|
|
4172
4192
|
|
|
4173
|
-
}`, transparent: !0, side:
|
|
4193
|
+
}`, transparent: !0, side: wt, depthTest: !0, depthWrite: !0, depthFunc: Mi }), b = new Ea(), g = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]);
|
|
4174
4194
|
b.setIndex([0, 2, 1, 2, 3, 1]), b.setAttribute("position", new Pe(g, 3));
|
|
4175
|
-
const f = new Uint32Array(A), I = new
|
|
4176
|
-
I.needsUpdate = !0, I.setUsage(
|
|
4195
|
+
const f = new Uint32Array(A), I = new Zt(f, 1, !1);
|
|
4196
|
+
I.needsUpdate = !0, I.setUsage(Qa), b.setAttribute("order", I), b.instanceCount = 0, super(b, h), this.orderAttribute = I, this.textureSize = 512, this.numTextures = 1, this.batchSize = a, this.maxSplats = A, this.colorRenderTarget = s, this.positionRenderTarget = i, this.cov1RenderTarget = n, this.cov2RenderTarget = l, this.renderer = e, this.sortID = 0, this.freeAddresses = new ft();
|
|
4177
4197
|
for (let m = 0; m < this.maxSplats; m += a) this.freeAddresses.add(m);
|
|
4178
4198
|
this.worker = new Worker(new URL("" + new URL("assets/PointsManager.worker-5fpGpVvf.js", import.meta.url).href, import.meta.url), { type: "module" }), this.sortListeners = [], this.worker.onmessage = (m) => {
|
|
4179
|
-
const
|
|
4180
|
-
if (
|
|
4181
|
-
const
|
|
4182
|
-
|
|
4183
|
-
const M = new Uint32Array(this.maxSplats), T = new
|
|
4184
|
-
T.needsUpdate = !0, T.setUsage(
|
|
4199
|
+
const C = new Uint32Array(m.data.order);
|
|
4200
|
+
if (C.length > this.orderAttribute.count) {
|
|
4201
|
+
const E = new Ea(), x = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]), w = [0, 2, 1, 2, 3, 1];
|
|
4202
|
+
E.setIndex(w), E.setAttribute("position", new Pe(x, 3));
|
|
4203
|
+
const M = new Uint32Array(this.maxSplats), T = new Zt(M, 1, !1);
|
|
4204
|
+
T.needsUpdate = !0, T.setUsage(Qa), E.setAttribute("order", T), E.instanceCount = 0, this.geometry.dispose(), this.geometry = E, this.orderAttribute = T;
|
|
4185
4205
|
}
|
|
4186
|
-
this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(
|
|
4187
|
-
for (let
|
|
4188
|
-
this.sortListeners[
|
|
4189
|
-
}, this.cameraPosition = new K(0, 0, 0), this.rotateOnAxis(new K(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new
|
|
4206
|
+
this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(C), this.orderAttribute.addUpdateRange(0, C.length), this.orderAttribute.needsUpdate = !0, this.geometry.instanceCount = m.data.count, this.geometry.needsUpdate = !0;
|
|
4207
|
+
for (let E = this.sortListeners.length - 1; E >= 0; E--)
|
|
4208
|
+
this.sortListeners[E](m.data.id) && this.sortListeners.splice(E, 1);
|
|
4209
|
+
}, this.cameraPosition = new K(0, 0, 0), this.rotateOnAxis(new K(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new Mt({ uniforms: { sourceTexture: {} }, vertexShader: Ya(), fragmentShader: `
|
|
4190
4210
|
precision highp float;
|
|
4191
4211
|
|
|
4192
4212
|
uniform sampler2D sourceTexture;
|
|
@@ -4195,7 +4215,7 @@ in vec2 vUv;
|
|
|
4195
4215
|
|
|
4196
4216
|
void main() {
|
|
4197
4217
|
gl_FragColor = texture( sourceTexture, vUv );
|
|
4198
|
-
}`, transparent: !1, side:
|
|
4218
|
+
}`, transparent: !1, side: wt, depthTest: !1, depthWrite: !1 }), this.copyMaterial3D = new Mt({ uniforms: { sourceTexture: {}, w: { value: 0 } }, vertexShader: Ya(), fragmentShader: `
|
|
4199
4219
|
precision highp float;
|
|
4200
4220
|
|
|
4201
4221
|
uniform sampler3D sourceTexture;
|
|
@@ -4205,9 +4225,9 @@ in vec2 vUv;
|
|
|
4205
4225
|
|
|
4206
4226
|
void main() {
|
|
4207
4227
|
gl_FragColor = texture( sourceTexture, vec3(vUv, w) );
|
|
4208
|
-
}`, transparent: !1, side:
|
|
4209
|
-
const u = new
|
|
4210
|
-
this.copyQuad = new
|
|
4228
|
+
}`, transparent: !1, side: wt, depthTest: !1, depthWrite: !1 }), this.copyCamera = new iA(-0.5, 0.5, 0.5, -0.5, 0.1, 10), this.copyCamera.position.z = 1, this.copyScene = new vi();
|
|
4229
|
+
const u = new Ti(1, 1);
|
|
4230
|
+
this.copyQuad = new ea(u, this.copyMaterial2D), this.copyScene.add(this.copyQuad), this.copyScene.matrixAutoUpdate = !1, this.copyQuad.matrixAutoUpdate = !1;
|
|
4211
4231
|
const p = this;
|
|
4212
4232
|
document.addEventListener("keyup", function(m) {
|
|
4213
4233
|
m.key === "a" && (p.growTextures(), console.log(p.positionRenderTarget.depth));
|
|
@@ -4249,19 +4269,19 @@ void main() {
|
|
|
4249
4269
|
};
|
|
4250
4270
|
const I = new Float32Array(i.length / n * 3);
|
|
4251
4271
|
for (let p = 0; p < i.length / 3; p++) I[3 * p] = i[p * n + l], I[3 * p + 1] = i[p * n + l + 1], I[3 * p + 2] = i[p * n + l + 2];
|
|
4252
|
-
f = (p, m,
|
|
4253
|
-
const
|
|
4272
|
+
f = (p, m, C) => {
|
|
4273
|
+
const E = C * C;
|
|
4254
4274
|
for (let x = 0; x < I.length; x += 3) {
|
|
4255
|
-
|
|
4256
|
-
const w =
|
|
4257
|
-
w > 0 && p.distanceSqToPoint(
|
|
4275
|
+
Ct.set(I[x], -I[x + 2], I[x + 1]);
|
|
4276
|
+
const w = Hs.copy(Ct).sub(p.origin).dot(p.direction);
|
|
4277
|
+
w > 0 && p.distanceSqToPoint(Ct) < E && m.push({ distance: w, point: Ct.clone(), type: "splat" });
|
|
4258
4278
|
}
|
|
4259
4279
|
}, h > this.freeAddresses.size && this.growTextures();
|
|
4260
4280
|
for (let p = 0; p < h; p++) {
|
|
4261
4281
|
const m = this.freeAddresses.poll();
|
|
4262
4282
|
isNaN(m) && console.log("insuficient texture size to store splats info"), b.push(m), g.push(3 * m);
|
|
4263
|
-
const
|
|
4264
|
-
this.addSplatsBatch(
|
|
4283
|
+
const C = p * this.batchSize;
|
|
4284
|
+
this.addSplatsBatch(C, m, e, t, a, A);
|
|
4265
4285
|
}
|
|
4266
4286
|
s.worker.postMessage({ method: "addBatches", insertionIndexes: g, positions: i.buffer, offset: l, stride: n, batchSize: s.batchSize }, [i.buffer]);
|
|
4267
4287
|
let u = !1;
|
|
@@ -4270,28 +4290,28 @@ void main() {
|
|
|
4270
4290
|
}, show: (p) => {
|
|
4271
4291
|
u == 0 && (u = !0);
|
|
4272
4292
|
const m = s.sortID;
|
|
4273
|
-
s.sortListeners.push((
|
|
4293
|
+
s.sortListeners.push((C) => C >= m && (p(), !0)), s.worker.postMessage({ method: "showBatches", insertionIndexes: g, xyz: [s.cameraPosition.x, s.cameraPosition.z, -s.cameraPosition.y], id: s.sortID++ });
|
|
4274
4294
|
}, remove: () => {
|
|
4275
4295
|
f = void 0, s.worker.postMessage({ method: "removeBatches", insertionIndexes: g, xyz: [s.cameraPosition.x, s.cameraPosition.z, -s.cameraPosition.y], id: s.sortID++ }), b.forEach((p) => s.freeAddresses.add(p));
|
|
4276
4296
|
}, sort: this.sort, raycast: f, isSplatsBatch: !0 };
|
|
4277
4297
|
}
|
|
4278
4298
|
addSplatsBatch(e, t, a, A, s, i) {
|
|
4279
4299
|
const n = new Float32Array(4 * this.batchSize), l = new Uint8Array(4 * this.batchSize), h = new Float32Array(4 * this.batchSize), b = new Float32Array(4 * this.batchSize);
|
|
4280
|
-
for (let
|
|
4281
|
-
const x =
|
|
4300
|
+
for (let E = t; E < t + this.batchSize; E++) {
|
|
4301
|
+
const x = E - t, w = 4 * x, M = e + x;
|
|
4282
4302
|
if (M >= a.count) break;
|
|
4283
4303
|
n[w] = a.getX(M), n[w + 1] = a.getY(M), n[w + 2] = a.getZ(M), Math.floor(255 * A.getX(M)), Math.floor(255 * A.getY(M)), Math.floor(255 * A.getZ(M)), Math.floor(255 * A.getW(M)), l[w] = Math.floor(255 * A.getX(M)), l[w + 1] = Math.floor(255 * A.getY(M)), l[w + 2] = Math.floor(255 * A.getZ(M)), l[w + 3] = Math.floor(255 * A.getW(M)), h[w] = s.getX(M), h[w + 1] = s.getY(M), h[w + 2] = s.getZ(M), b[w] = i.getX(M), b[w + 1] = i.getY(M), b[w + 2] = i.getZ(M);
|
|
4284
4304
|
}
|
|
4285
4305
|
const g = Math.floor(t / Math.pow(this.textureSize, 2)), f = Math.ceil(this.batchSize / this.textureSize), I = [0, t / this.textureSize - g * this.textureSize, this.textureSize];
|
|
4286
4306
|
I.push(I[1] + f);
|
|
4287
|
-
const u = new
|
|
4307
|
+
const u = new ct(n, this.textureSize, f, Be, W);
|
|
4288
4308
|
u.generateMipmaps = !1, u.magFilter = P, u.minFilter = P, u.anisotropy = 0, u.needsUpdate = !0, this.renderer.initTexture(u), this.renderer.initRenderTarget(this.positionRenderTarget), this.copyTex2D(u, this.positionRenderTarget, I, g), u.dispose();
|
|
4289
|
-
const p = new
|
|
4309
|
+
const p = new ct(l, this.textureSize, f, Be, ue);
|
|
4290
4310
|
p.generateMipmaps = !1, p.magFilter = P, p.minFilter = P, p.anisotropy = 0, p.needsUpdate = !0, this.renderer.initTexture(p), this.copyTex2D(p, this.colorRenderTarget, I, g), p.dispose();
|
|
4291
|
-
const m = new
|
|
4311
|
+
const m = new ct(h, this.textureSize, f, Be, W);
|
|
4292
4312
|
m.generateMipmaps = !1, m.magFilter = P, m.minFilter = P, m.anisotropy = 0, m.needsUpdate = !0, this.renderer.initTexture(m), this.copyTex2D(m, this.cov1RenderTarget, I, g), m.dispose();
|
|
4293
|
-
const
|
|
4294
|
-
|
|
4313
|
+
const C = new ct(b, this.textureSize, f, Be, W);
|
|
4314
|
+
C.generateMipmaps = !1, C.magFilter = P, C.minFilter = P, C.anisotropy = 0, C.needsUpdate = !0, this.renderer.initTexture(C), this.copyTex2D(C, this.cov2RenderTarget, I, g), C.dispose();
|
|
4295
4315
|
}
|
|
4296
4316
|
growTextures() {
|
|
4297
4317
|
for (let i = this.maxSplats; i < this.maxSplats + this.textureSize * this.textureSize; i += this.batchSize) this.freeAddresses.add(i);
|
|
@@ -4306,7 +4326,7 @@ void main() {
|
|
|
4306
4326
|
s.texture.type = W, this.renderer.initRenderTarget(s), this.copyTex3D(this.cov2RenderTarget.texture, s, this.numTextures), this.cov2RenderTarget.dispose(), this.cov2RenderTarget = s, this.material.uniforms.cov2Texture.value = this.cov2RenderTarget.texture, this.numTextures = e, this.material.uniforms.numSlices.value = this.numTextures;
|
|
4307
4327
|
}
|
|
4308
4328
|
}
|
|
4309
|
-
function
|
|
4329
|
+
function Ya() {
|
|
4310
4330
|
return `
|
|
4311
4331
|
|
|
4312
4332
|
out vec2 vUv;
|
|
@@ -4319,26 +4339,26 @@ void main() {
|
|
|
4319
4339
|
var fe;
|
|
4320
4340
|
const we = new j.Sphere(new j.Vector3(0, 0, 0), 1), ze = new Re([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1]);
|
|
4321
4341
|
new j.Box3();
|
|
4322
|
-
const Ne = new j.Vector3(0, 0, 0),
|
|
4342
|
+
const Ne = new j.Vector3(0, 0, 0), $e = new j.Vector3(0, 0, 0), Js = new j.Vector3(0, 1, 0), Et = new j.Ray(), Qt = new j.Matrix4();
|
|
4323
4343
|
new j.Matrix4(), new j.Frustum();
|
|
4324
|
-
const
|
|
4325
|
-
function
|
|
4344
|
+
const zt = new j.Vector3(), yt = [], Wa = new j.Quaternion(), Ie = {};
|
|
4345
|
+
function Ks() {
|
|
4326
4346
|
var o = [];
|
|
4327
4347
|
for (let e in Ie) Ie.hasOwnProperty(e) && Ie[e] > 0 && o.push(e);
|
|
4328
4348
|
return o;
|
|
4329
4349
|
}
|
|
4330
|
-
class
|
|
4350
|
+
class FA extends j.Object3D {
|
|
4331
4351
|
constructor(e) {
|
|
4332
4352
|
super();
|
|
4333
4353
|
const t = this;
|
|
4334
|
-
if (t.splatsMesh = e.splatsMesh, this.contentURL = [], e.domWidth && e.domHeight ? this.rendererSize = new j.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new j.Vector2(1e3, 1e3), this.loadingStrategy = e.loadingStrategy ? e.loadingStrategy.toUpperCase() : "INCREMENTAL", this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.proxy = e.proxy, this.drawBoundingVolume = !!e.drawBoundingVolume && e.drawBoundingVolume, this.displayErrors = e.displayErrors, this.displayCopyright = e.displayCopyright, e.queryParams && (this.queryParams = { ...e.queryParams }), this.uuid =
|
|
4354
|
+
if (t.splatsMesh = e.splatsMesh, this.contentURL = [], e.domWidth && e.domHeight ? this.rendererSize = new j.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new j.Vector2(1e3, 1e3), this.loadingStrategy = e.loadingStrategy ? e.loadingStrategy.toUpperCase() : "INCREMENTAL", this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.proxy = e.proxy, this.drawBoundingVolume = !!e.drawBoundingVolume && e.drawBoundingVolume, this.displayErrors = e.displayErrors, this.displayCopyright = e.displayCopyright, e.queryParams && (this.queryParams = { ...e.queryParams }), this.uuid = dA(), e.tileLoader) this.tileLoader = e.tileLoader;
|
|
4335
4355
|
else {
|
|
4336
4356
|
const s = {};
|
|
4337
4357
|
s.meshCallback = e.meshCallback ? e.meshCallback : (i, n) => {
|
|
4338
4358
|
i.material.wireframe = !1, i.material.side = j.DoubleSide;
|
|
4339
4359
|
}, s.pointsCallback = e.pointsCallback ? e.pointsCallback : (i, n) => {
|
|
4340
4360
|
i.material.size = Math.pow(n, 0.33), i.material.sizeAttenuation = !0;
|
|
4341
|
-
}, s.proxy = this.proxy, s.renderer = e.renderer, s.dracoLoader = e.dracoLoader, s.ktx2Loader = e.ktx2Loader, this.tileLoader = new
|
|
4361
|
+
}, s.proxy = this.proxy, s.renderer = e.renderer, s.dracoLoader = e.dracoLoader, s.ktx2Loader = e.ktx2Loader, this.tileLoader = new Ns(s), this.update = (i) => {
|
|
4342
4362
|
this.update(i), this.tileLoader.update();
|
|
4343
4363
|
};
|
|
4344
4364
|
}
|
|
@@ -4352,11 +4372,11 @@ class DA extends j.Object3D {
|
|
|
4352
4372
|
}
|
|
4353
4373
|
(t.proxy ? () => fetch(t.proxy, { method: "POST", body: a, signal: t.abortController.signal }) : () => fetch(a, { signal: t.abortController.signal }))().then((s) => {
|
|
4354
4374
|
if (!s.ok) throw new Error(`couldn't load "${e.url}". Request failed with status ${s.status} : ${s.statusText}`);
|
|
4355
|
-
s.json().then((i) =>
|
|
4375
|
+
s.json().then((i) => ba(i, a)).then((i) => {
|
|
4356
4376
|
t._setup({ rootPath: (void 0)(e.url), json: i });
|
|
4357
4377
|
});
|
|
4358
4378
|
}).catch((s) => {
|
|
4359
|
-
t.displayErrors &&
|
|
4379
|
+
t.displayErrors && Xa(s);
|
|
4360
4380
|
});
|
|
4361
4381
|
}
|
|
4362
4382
|
}
|
|
@@ -4378,14 +4398,14 @@ class DA extends j.Object3D {
|
|
|
4378
4398
|
}
|
|
4379
4399
|
async _setup(e) {
|
|
4380
4400
|
const t = this;
|
|
4381
|
-
if (e.json.extensionsRequired && e.json.extensionsRequired.includes("JDULTRA_gaussian_splats") && (t.splatsMesh = new
|
|
4401
|
+
if (e.json.extensionsRequired && e.json.extensionsRequired.includes("JDULTRA_gaussian_splats") && (t.splatsMesh = new qs(t.tileLoader.renderer), this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius), this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier), t.add(t.splatsMesh)), e.json.root ? (t.json = e.json.root, t.json.refine || (t.json.refine = e.json.refine), t.json.geometricError || (t.json.geometricError = e.json.geometricError), t.json.transform || (t.json.transform = e.json.transform), t.json.boundingVolume || (t.json.boundingVolume = e.json.boundingVolume)) : t.json = e.json, t.json.children || (t.json.getChildren ? t.json.children = await t.json.getChildren() : t.json.children = []), t.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, t.json.refine ? t.refine = t.json.refine : t.refine = e.parentRefine, t.json.geometricError ? t.geometricError = t.json.geometricError : t.geometricError = e.parentGeometricError, t.json.transform) {
|
|
4382
4402
|
let A = new j.Matrix4();
|
|
4383
4403
|
A.elements = t.json.transform, t.applyMatrix4(A);
|
|
4384
4404
|
}
|
|
4385
4405
|
if (t.json.boundingVolume) if (t.json.boundingVolume.box) t.boundingVolume = new Re(t.json.boundingVolume.box);
|
|
4386
4406
|
else if (t.json.boundingVolume.region) {
|
|
4387
4407
|
const A = t.json.boundingVolume.region;
|
|
4388
|
-
t._transformWGS84ToCartesian(A[0], A[1], A[4], Ne), t._transformWGS84ToCartesian(A[2], A[3], A[5],
|
|
4408
|
+
t._transformWGS84ToCartesian(A[0], A[1], A[4], Ne), t._transformWGS84ToCartesian(A[2], A[3], A[5], $e), Ne.lerp($e, 0.5), t.boundingVolume = new j.Sphere(new j.Vector3(Ne.x, Ne.y, Ne.z), Ne.distanceTo($e));
|
|
4389
4409
|
} else if (t.json.boundingVolume.sphere) {
|
|
4390
4410
|
const A = t.json.boundingVolume.sphere;
|
|
4391
4411
|
t.boundingVolume = new j.Sphere(new j.Vector3(A[0], A[1], A[2]), A[3]);
|
|
@@ -4394,7 +4414,7 @@ class DA extends j.Object3D {
|
|
|
4394
4414
|
function a(A) {
|
|
4395
4415
|
A.uri && A.uri.includes("json") || A.url && A.url.includes("json") ? t.hasUnloadedJSONContent++ : t.hasMeshContent++;
|
|
4396
4416
|
}
|
|
4397
|
-
if (t.json.content ? (a(t.json.content), t.hasMeshContent == 0 && (t.level = Math.max(0, t.parentTile ? t.parentTile.level + 0.01 : 0)), t.loadingStrategy === "IMMEDIATE" ? t._load(!0, !1) : t._load()) : t.json.contents && (t.json.contents.forEach((A) => a(A)), t.hasMeshContent == 0 && (t.level = Math.max(0, t.parentTile ? t.parentTile.level + 0.01 : 0)), t.loadingStrategy === "IMMEDIATE" ? t._load(!0, !1) : t._load()), t.centerModel && (
|
|
4417
|
+
if (t.json.content ? (a(t.json.content), t.hasMeshContent == 0 && (t.level = Math.max(0, t.parentTile ? t.parentTile.level + 0.01 : 0)), t.loadingStrategy === "IMMEDIATE" ? t._load(!0, !1) : t._load()) : t.json.contents && (t.json.contents.forEach((A) => a(A)), t.hasMeshContent == 0 && (t.level = Math.max(0, t.parentTile ? t.parentTile.level + 0.01 : 0)), t.loadingStrategy === "IMMEDIATE" ? t._load(!0, !1) : t._load()), t.centerModel && ($e.copy(t.boundingVolume.center), this.json.boundingVolume.region && (this._transformWGS84ToCartesian(0.5 * (this.json.boundingVolume.region[0] + this.json.boundingVolume.region[2]), 0.5 * (this.json.boundingVolume.region[1] + this.json.boundingVolume.region[3]), 0.5 * (this.json.boundingVolume.region[4] + this.json.boundingVolume.region[5]), Ne), Wa.setFromUnitVectors(Ne.normalize(), Js.normalize()), t.applyQuaternion(Wa)), $e.applyMatrix4(t.matrix), t.position.sub($e), t.updateMatrices()), e.onLoadCallback && t.onLoadCallback(t), t.isSetup = !0, t.level > 0 && t.drawBoundingVolume && (t.bbox && console.log("double setup"), this.boundingVolume.aabb)) {
|
|
4398
4418
|
let A = this.boundingVolume.aabb.clone();
|
|
4399
4419
|
A.applyMatrix4(this.matrixWorld), t.bbox = new j.Box3Helper(A, new j.Color(Math.random(), Math.random(), Math.random())), t.add(t.bbox), t.bbox.material.visible = !1;
|
|
4400
4420
|
}
|
|
@@ -4440,7 +4460,7 @@ class DA extends j.Object3D {
|
|
|
4440
4460
|
a.tileLoader.get(a.abortController, a.uuid, h, (f) => {
|
|
4441
4461
|
a.deleted || (f.asset && f.asset.copyright && (f.asset.copyright.split(";").forEach((I) => {
|
|
4442
4462
|
Ie[I] ? Ie[I]++ : Ie[I] = 1;
|
|
4443
|
-
}), a.displayCopyright &&
|
|
4463
|
+
}), a.displayCopyright && Vt()), a.meshContent.push(f), a.splatsMesh || (f.traverse((I) => {
|
|
4444
4464
|
if ((I.isMesh || I.isPoints) && I.layers.disable(0), I.isMesh && a.occlusionCullingService) {
|
|
4445
4465
|
const u = I.geometry.attributes.position, p = [];
|
|
4446
4466
|
for (let m = 0; m < u.count; m++) p.push(a.color.r, a.color.g, a.color.b);
|
|
@@ -4452,7 +4472,7 @@ class DA extends j.Object3D {
|
|
|
4452
4472
|
return (a.metric && a.metric < 0 || a.deleted) && (f = 2), a.parentTile ? a.parentTile._calculateDistanceToCamera(a.cameraOnLoad) * f * a.level : a._calculateDistanceToCamera(a.cameraOnLoad) * f * a.level;
|
|
4453
4473
|
} : () => 0, () => a._getSiblings(), a.level, !a.json.boundingVolume.region, !!a.json.boundingVolume.region, a.geometricError, a.splatsMesh);
|
|
4454
4474
|
} catch (f) {
|
|
4455
|
-
a.displayErrors &&
|
|
4475
|
+
a.displayErrors && Xa(f);
|
|
4456
4476
|
}
|
|
4457
4477
|
} else n && h.includes(".json") && (a.jsonRequested = h, a.tileLoader.get(a.abortController, a.uuid, h, async (f) => {
|
|
4458
4478
|
a.deleted || (f.rootPath = (void 0)(h), a.json.children.push(f), i == null ? delete a.json.content : a.json.contents.splice(i, 1), a.hasUnloadedJSONContent--);
|
|
@@ -4464,7 +4484,7 @@ class DA extends j.Object3D {
|
|
|
4464
4484
|
e.meshContent.forEach((t) => {
|
|
4465
4485
|
t && t.asset && t.asset.copyright && (t.asset.copyright.split(";").forEach((a) => {
|
|
4466
4486
|
Ie[a] && Ie[a]--;
|
|
4467
|
-
}), e.displayCopyright &&
|
|
4487
|
+
}), e.displayCopyright && Vt());
|
|
4468
4488
|
}), e.meshContent = [], e.bbox && e.bbox.dispose(), e.childrenTiles.forEach((t) => t.dispose()), e.deleted = !0, e.splatsMesh && (e.meshContent.forEach((t) => t.hide()), e.parentTile || e.splatsMesh.dispose()), e.contentURL && (e.contentURL.forEach((t) => {
|
|
4469
4489
|
e.tileLoader.invalidate(t, e.uuid);
|
|
4470
4490
|
}), e.contentURL = []), e.abortController && e.abortController.abort("tile not needed"), this.parent = null, this.dispatchEvent({ type: "removed" });
|
|
@@ -4477,7 +4497,7 @@ class DA extends j.Object3D {
|
|
|
4477
4497
|
const a = e.meshContent[t];
|
|
4478
4498
|
a && a.asset && a.asset.copyright && (a.asset.copyright.split(";").forEach((A) => {
|
|
4479
4499
|
Ie[A] && Ie[A]--;
|
|
4480
|
-
}), e.displayCopyright &&
|
|
4500
|
+
}), e.displayCopyright && Vt()), e.remove(a);
|
|
4481
4501
|
}
|
|
4482
4502
|
e.splatsMesh && e.meshContent.forEach((t) => t.hide()), e.meshContent = [], e.contentURL.forEach((t) => {
|
|
4483
4503
|
e.tileLoader.invalidate(t, e.uuid);
|
|
@@ -4492,17 +4512,17 @@ class DA extends j.Object3D {
|
|
|
4492
4512
|
}
|
|
4493
4513
|
raycast(e, t) {
|
|
4494
4514
|
if (this.splatsMesh) {
|
|
4495
|
-
|
|
4515
|
+
Et.copy(e.ray), Qt.copy(this.matrixWorld).invert(), Et.applyMatrix4(Qt);
|
|
4496
4516
|
let a = !1;
|
|
4497
|
-
if (this.boundingVolume instanceof Re) a = this.boundingVolume.intersectsRay(
|
|
4517
|
+
if (this.boundingVolume instanceof Re) a = this.boundingVolume.intersectsRay(Et);
|
|
4498
4518
|
else {
|
|
4499
4519
|
if (!(this.boundingVolume instanceof j.Sphere)) return !1;
|
|
4500
4520
|
a = ray.intersectsSphere(this.boundingVolume);
|
|
4501
4521
|
}
|
|
4502
|
-
return a && this.materialVisibility && this.splatsReady && (
|
|
4503
|
-
A.isSplatsBatch && (A.raycast(
|
|
4522
|
+
return a && this.materialVisibility && this.splatsReady && (yt.length = 0, this.meshContent.forEach((A) => {
|
|
4523
|
+
A.isSplatsBatch && (A.raycast(Et, yt, e.params.Points.threshold), yt.forEach((s) => {
|
|
4504
4524
|
s.point.applyMatrix4(this.matrixWorld);
|
|
4505
|
-
}), t.push(...
|
|
4525
|
+
}), t.push(...yt));
|
|
4506
4526
|
})), a;
|
|
4507
4527
|
}
|
|
4508
4528
|
return super.raycast(e, t);
|
|
@@ -4511,7 +4531,7 @@ class DA extends j.Object3D {
|
|
|
4511
4531
|
const t = new j.Frustum();
|
|
4512
4532
|
t.setFromProjectionMatrix(new j.Matrix4().multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse));
|
|
4513
4533
|
let a = [0], A = [0], s = [0], i = [0];
|
|
4514
|
-
return this.refine == "REPLACE" ? this.loadingStrategy === "IMMEDIATE" ? (this._updateImmediate(e, t), this._statsImmediate(s, a, i, A)) : (this._update(e, t), this._stats(s, a, i, A)) : (this._update(e, t), this._stats(s, a, i, A)), a > 0 && (i[0] /= a[0]), this.splatsMesh && (
|
|
4534
|
+
return this.refine == "REPLACE" ? this.loadingStrategy === "IMMEDIATE" ? (this._updateImmediate(e, t), this._statsImmediate(s, a, i, A)) : (this._update(e, t), this._stats(s, a, i, A)) : (this._update(e, t), this._stats(s, a, i, A)), a > 0 && (i[0] /= a[0]), this.splatsMesh && (zt.copy(e.position), Qt.copy(this.matrixWorld).invert(), zt.applyMatrix4(Qt), this.splatsMesh.sort(zt)), { numTilesLoaded: a[0], numTilesRendered: A[0], maxLOD: s[0], percentageLoaded: i[0] };
|
|
4515
4535
|
}
|
|
4516
4536
|
_updateImmediate(e, t) {
|
|
4517
4537
|
this._computeMetricRecursive(e, t), this._updateNodeVisibilityImmediate(), this._expandTreeImmediate(e), this.shouldBeVisible = this.metric > 0 || !!this.loadOutsideView, this._shouldBeVisibleUpdateImmediate(), this._trimTreeImmediate(), this._loadMeshImmediate();
|
|
@@ -4629,7 +4649,7 @@ class DA extends j.Object3D {
|
|
|
4629
4649
|
const t = this;
|
|
4630
4650
|
for (let a = t.json.children.length - 1; a >= 0; a--) t.json.children[a].root || t.json.children[a].children || t.json.children[a].getChildren || t.json.children[a].content || t.json.children[a].contents || t.json.children.splice(a, 1);
|
|
4631
4651
|
t.json.children.forEach((a) => {
|
|
4632
|
-
let A = new
|
|
4652
|
+
let A = new FA({ parentTile: t, queryParams: t.queryParams, parentGeometricError: t.geometricError, parentBoundingVolume: t.boundingVolume, parentRefine: t.refine, json: a, rootPath: t.rootPath, geometricErrorMultiplier: t.geometricErrorMultiplier, loadOutsideView: t.loadOutsideView, level: Math.floor(t.level) + 1, tileLoader: t.tileLoader, cameraOnLoad: e, occlusionCullingService: t.occlusionCullingService, renderer: t.renderer, static: t.static, centerModel: !1, displayErrors: t.displayErrors, displayCopyright: t.displayCopyright, distanceBias: t.distanceBias, loadingStrategy: t.loadingStrategy, drawBoundingVolume: t.drawBoundingVolume, splatsMesh: t.splatsMesh });
|
|
4633
4653
|
t.childrenTiles.push(A), t.add(A);
|
|
4634
4654
|
}), t.updateMatrices(!0);
|
|
4635
4655
|
}
|
|
@@ -4726,26 +4746,26 @@ class DA extends j.Object3D {
|
|
|
4726
4746
|
A.set(b, g, f);
|
|
4727
4747
|
}
|
|
4728
4748
|
}
|
|
4729
|
-
function
|
|
4749
|
+
function Xa(o) {
|
|
4730
4750
|
var e = document.createElement("div");
|
|
4731
4751
|
e.textContent = o, e.style.position = "fixed", e.style.top = "10px", e.style.left = "50%", e.style.transform = "translateX(-50%)", e.style.padding = "10px", e.style.backgroundColor = "#ff8800", e.style.color = "#ffffff", e.style.zIndex = "9999", document.body.appendChild(e), setTimeout(function() {
|
|
4732
4752
|
e.remove();
|
|
4733
4753
|
}, 8e3);
|
|
4734
4754
|
}
|
|
4735
|
-
function
|
|
4755
|
+
function Vt() {
|
|
4736
4756
|
fe || ((fe = document.createElement("div")).style.position = "fixed", fe.style.bottom = "20px", fe.style.left = "20px", fe.style.color = "white", fe.style.textShadow = "2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000", fe.style.padding = "10px", fe.style.backgroundColor = "rgba(0, 0, 0, 0.1)", document.body.appendChild(fe));
|
|
4737
|
-
const o =
|
|
4757
|
+
const o = Ks();
|
|
4738
4758
|
let e = "";
|
|
4739
4759
|
o.forEach((t) => {
|
|
4740
4760
|
e += t + ", ";
|
|
4741
4761
|
}), e = e.slice(0, -2), fe.textContent = e;
|
|
4742
4762
|
}
|
|
4743
|
-
const se = new j.Sphere(new j.Vector3(0, 0, 0), 1), _e = new j.Vector3(0, 0, 0),
|
|
4744
|
-
class
|
|
4763
|
+
const se = new j.Sphere(new j.Vector3(0, 0, 0), 1), _e = new j.Vector3(0, 0, 0), Yt = new j.Vector3(0, 0, 0), zs = new j.Vector3(0, 1, 0), Wt = new j.Vector2(), Za = new j.Quaternion(), $a = new j.Matrix4();
|
|
4764
|
+
class ga extends j.Object3D {
|
|
4745
4765
|
constructor(e) {
|
|
4746
4766
|
super();
|
|
4747
4767
|
const t = this;
|
|
4748
|
-
if (e.queryParams && (this.queryParams = { ...e.queryParams }), this.uuid =
|
|
4768
|
+
if (e.queryParams && (this.queryParams = { ...e.queryParams }), this.uuid = dA(), e.tileLoader ? this.tileLoader = e.tileLoader : console.error("an instanced tileset must be provided an InstancedTilesetLoader"), this.master = e.master, this.loadOutsideView = e.loadOutsideView, this.cameraOnLoad = e.cameraOnLoad, this.parentTile = e.parentTile, this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.childrenTiles = [], this.jsonChildren = [], this.meshContent = /* @__PURE__ */ new Set(), this.static = e.static, this.static && (this.matrixAutoUpdate = !1, this.matrixWorldAutoUpdate = !1), this.tileContent, this.refinement, this.rootPath, this.geometricError, this.boundingVolume, this.json, this.materialVisibility = !1, this.inFrustum = !0, this.level = e.level ? e.level : 0, this.hasMeshContent = 0, this.hasUnloadedJSONContent = 0, this.centerModel = e.centerModel, this.deleted = !1, this.abortController = new AbortController(), e.json) this.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, e.json.children && (this.jsonChildren = e.json.children), t.setup(e);
|
|
4749
4769
|
else if (e.url) {
|
|
4750
4770
|
this.loadJson = (s, i) => {
|
|
4751
4771
|
const n = (void 0)(i);
|
|
@@ -4767,7 +4787,7 @@ class da extends j.Object3D {
|
|
|
4767
4787
|
if (t.json.transform && !t.centerModel && (a.elements = t.json.transform), t.applyMatrix4(a), t.parentTile && t.parentTile.matrix && (t.matrix.premultiply(t.parentTile.matrix), t.matrix.decompose(t.position, t.quaternion, t.scale)), t.matrixWorldNeedsUpdate = !0, t.updateWorldMatrix(!0, !0), t.json.boundingVolume) if (t.json.boundingVolume.box) t.boundingVolume = new Re(t.json.boundingVolume.box);
|
|
4768
4788
|
else if (t.json.boundingVolume.region) {
|
|
4769
4789
|
const s = t.json.boundingVolume.region;
|
|
4770
|
-
t.transformWGS84ToCartesian(s[0], s[1], s[4], _e), t.transformWGS84ToCartesian(s[2], s[3], s[5],
|
|
4790
|
+
t.transformWGS84ToCartesian(s[0], s[1], s[4], _e), t.transformWGS84ToCartesian(s[2], s[3], s[5], Yt), _e.lerp(Yt, 0.5), t.boundingVolume = new j.Sphere(new j.Vector3(_e.x, _e.y, _e.z), _e.distanceTo(Yt));
|
|
4771
4791
|
} else if (t.json.boundingVolume.sphere) {
|
|
4772
4792
|
const s = t.json.boundingVolume.sphere;
|
|
4773
4793
|
t.boundingVolume = new j.Sphere(new j.Vector3(s[0], s[1], s[2]), s[3]);
|
|
@@ -4778,7 +4798,7 @@ class da extends j.Object3D {
|
|
|
4778
4798
|
}
|
|
4779
4799
|
if (t.json.content ? (A(t.json.content), t.load()) : t.json.contents && (t.json.contents.forEach((s) => A(s)), t.load()), t.centerModel) {
|
|
4780
4800
|
const s = new j.Sphere();
|
|
4781
|
-
t.boundingVolume instanceof Re ? s.copy(t.boundingVolume.sphere) : t.boundingVolume instanceof j.Sphere && s.copy(t.boundingVolume), this.json.boundingVolume.region && (t.transformWGS84ToCartesian(0.5 * (t.json.boundingVolume.region[0] + t.json.boundingVolume.region[2]), 0.5 * (t.json.boundingVolume.region[1] + t.json.boundingVolume.region[3]), 0.5 * (t.json.boundingVolume.region[4] + t.json.boundingVolume.region[5]), _e),
|
|
4801
|
+
t.boundingVolume instanceof Re ? s.copy(t.boundingVolume.sphere) : t.boundingVolume instanceof j.Sphere && s.copy(t.boundingVolume), this.json.boundingVolume.region && (t.transformWGS84ToCartesian(0.5 * (t.json.boundingVolume.region[0] + t.json.boundingVolume.region[2]), 0.5 * (t.json.boundingVolume.region[1] + t.json.boundingVolume.region[3]), 0.5 * (t.json.boundingVolume.region[4] + t.json.boundingVolume.region[5]), _e), Za.setFromUnitVectors(_e.normalize(), zs.normalize()), t.master.applyQuaternion(Za), t.master.updateWorldMatrix(!1, !1)), $a.makeTranslation(-s.center.x * t.scale.x, -s.center.y * t.scale.y, -s.center.z * t.scale.z), t.master.matrix.multiply($a), t.master.matrix.decompose(t.master.position, t.master.quaternion, t.master.scale);
|
|
4782
4802
|
}
|
|
4783
4803
|
t.isSetup = !0, e.onLoadCallback && e.onLoadCallback(t);
|
|
4784
4804
|
}
|
|
@@ -4848,7 +4868,7 @@ class da extends j.Object3D {
|
|
|
4848
4868
|
a.isSetup && (a.materialVisibility, a.boundingVolume && a.geometricError && (a.metric = a.calculateUpdateMetric(e, t)), a.childrenTiles.forEach((s) => s._update(e, t)), A(a.metric), function(s) {
|
|
4849
4869
|
s < 0 && a.hasMeshContent || (!a.hasMeshContent && a.rootPath || s < a.master.geometricErrorMultiplier * a.geometricError && a.meshContent.size > 0) && a.json && a.jsonChildren && a.childrenTiles.length != a.jsonChildren.length && a.jsonChildren.forEach((i) => {
|
|
4850
4870
|
if (!(i.root || i.children || i.getChildren || i.content || i.contents)) return;
|
|
4851
|
-
let n = new
|
|
4871
|
+
let n = new ga({ parentTile: a, queryParams: a.queryParams, parentGeometricError: a.geometricError, parentBoundingVolume: a.boundingVolume, parentRefinement: a.refinement, json: i, rootPath: a.rootPath, loadOutsideView: a.loadOutsideView, level: a.level + 1, tileLoader: a.tileLoader, cameraOnLoad: e, master: a.master, centerModel: !1 });
|
|
4852
4872
|
a.childrenTiles.push(n);
|
|
4853
4873
|
});
|
|
4854
4874
|
}(a.metric), function(s) {
|
|
@@ -4894,9 +4914,9 @@ class da extends j.Object3D {
|
|
|
4894
4914
|
let a = Math.max(0, e.position.distanceTo(se.center) - se.radius);
|
|
4895
4915
|
if (a = Math.pow(a, this.distanceBias), a == 0) return 0;
|
|
4896
4916
|
const A = this.matrixWorld.getMaxScaleOnAxis();
|
|
4897
|
-
this.master._renderSize(
|
|
4898
|
-
let s =
|
|
4899
|
-
e.aspect < 1 && (i *= e.aspect, s =
|
|
4917
|
+
this.master._renderSize(Wt);
|
|
4918
|
+
let s = Wt.y, i = e.fov;
|
|
4919
|
+
e.aspect < 1 && (i *= e.aspect, s = Wt.x);
|
|
4900
4920
|
let n = 2 * Math.tan(0.5 * i * 0.017453292519943295) * a;
|
|
4901
4921
|
return 16 * window.devicePixelRatio * n / (s * A);
|
|
4902
4922
|
}
|
|
@@ -4923,9 +4943,9 @@ class da extends j.Object3D {
|
|
|
4923
4943
|
A.set(b, g, f);
|
|
4924
4944
|
}
|
|
4925
4945
|
}
|
|
4926
|
-
class
|
|
4946
|
+
class er extends j.Object3D {
|
|
4927
4947
|
constructor(e) {
|
|
4928
|
-
super(), e.master = this, e.domWidth && e.domHeight ? this.rendererSize = new j.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new j.Vector2(1e3, 1e3), this.renderer = e.renderer, this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.tileset = new
|
|
4948
|
+
super(), e.master = this, e.domWidth && e.domHeight ? this.rendererSize = new j.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new j.Vector2(1e3, 1e3), this.renderer = e.renderer, this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.tileset = new ga(e), e.static && (this.matrixAutoUpdate = !1), this.tileLoader = e.tileLoader;
|
|
4929
4949
|
}
|
|
4930
4950
|
_renderSize(e) {
|
|
4931
4951
|
this.renderer ? this.renderer.getDrawingBufferSize(e) : e.copy(this.rendererSize);
|
|
@@ -4944,7 +4964,7 @@ class Hs extends j.Object3D {
|
|
|
4944
4964
|
this.geometricErrorMultiplier = e || 1;
|
|
4945
4965
|
}
|
|
4946
4966
|
}
|
|
4947
|
-
class
|
|
4967
|
+
class Vs {
|
|
4948
4968
|
constructor(e) {
|
|
4949
4969
|
const t = this;
|
|
4950
4970
|
t.scene = e, t.instancedTiles = [], t.instancedMesh, t.reuseableMatrix = new j.Matrix4();
|
|
@@ -4985,7 +5005,7 @@ class Ls {
|
|
|
4985
5005
|
}), e.instancedMesh.dispose(), !0);
|
|
4986
5006
|
}
|
|
4987
5007
|
}
|
|
4988
|
-
class
|
|
5008
|
+
class Ys {
|
|
4989
5009
|
constructor() {
|
|
4990
5010
|
const e = this;
|
|
4991
5011
|
e.count = 0, e.json, e.instancedTiles = [];
|
|
@@ -5010,11 +5030,11 @@ class Us {
|
|
|
5010
5030
|
}
|
|
5011
5031
|
}
|
|
5012
5032
|
let Ve = 0;
|
|
5013
|
-
class
|
|
5033
|
+
class tr {
|
|
5014
5034
|
constructor(e, t) {
|
|
5015
|
-
if (this.zUpToYUpMatrix = new j.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.maxInstances = 1, this.proxy = t.proxy, t && (this.meshCallback = t.meshCallback, this.pointsCallback = t.pointsCallback, t.maxCachedItems && (this.maxCachedItems = t.maxCachedItems), t.maxInstances && (this.maxInstances = t.maxInstances)), this.gltfLoader = new
|
|
5035
|
+
if (this.zUpToYUpMatrix = new j.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.maxInstances = 1, this.proxy = t.proxy, t && (this.meshCallback = t.meshCallback, this.pointsCallback = t.pointsCallback, t.maxCachedItems && (this.maxCachedItems = t.maxCachedItems), t.maxInstances && (this.maxInstances = t.maxInstances)), this.gltfLoader = new hA(), t && t.dracoLoader) this.gltfLoader.setDRACOLoader(t.dracoLoader), this.hasDracoLoader = !0;
|
|
5016
5036
|
else {
|
|
5017
|
-
const a = new
|
|
5037
|
+
const a = new gA();
|
|
5018
5038
|
a.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"), this.gltfLoader.setDRACOLoader(a), this.gltfLoader.hasDracoLoader = !0;
|
|
5019
5039
|
}
|
|
5020
5040
|
if (t && t.ktx2Loader) this.gltfLoader.setKTX2Loader(t.ktx2Loader), this.hasKTX2Loader = !0;
|
|
@@ -5022,7 +5042,7 @@ class Os {
|
|
|
5022
5042
|
const a = new re();
|
|
5023
5043
|
a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(t.renderer), this.gltfLoader.setKTX2Loader(a), this.gltfLoader.hasKTX2Loader = !0;
|
|
5024
5044
|
}
|
|
5025
|
-
this.gltfLoader.setMeshoptDecoder(
|
|
5045
|
+
this.gltfLoader.setMeshoptDecoder(RA), this.hasMeshOptDecoder = !0, this.b3dmDecoder = new cA(this.gltfLoader), this.cache = new nA.LinkedHashMap(), this.scene = e, this.ready = [], this.downloads = [], this.nextReady = [], this.nextDownloads = [];
|
|
5026
5046
|
}
|
|
5027
5047
|
update() {
|
|
5028
5048
|
const e = this;
|
|
@@ -5048,7 +5068,7 @@ class Os {
|
|
|
5048
5068
|
if (!A.ok) throw new Error("missing content");
|
|
5049
5069
|
return A.arrayBuffer();
|
|
5050
5070
|
}).then(async (A) => {
|
|
5051
|
-
await
|
|
5071
|
+
await Ws(this.gltfLoader), this.gltfLoader.parse(A, null, (s) => {
|
|
5052
5072
|
let i;
|
|
5053
5073
|
s.scene.asset = s.asset, a.sceneZupToYup && s.scene.applyMatrix4(this.zUpToYUpMatrix), s.scene.traverse((n) => {
|
|
5054
5074
|
n.geometricError = a.geometricError, n.isMesh && (a.meshZupToYup && n.applyMatrix4(this.zUpToYUpMatrix), e.meshCallback && e.meshCallback(n, n.geometricError)), n.isPoints && console.error("instanced point cloud is not supported");
|
|
@@ -5068,7 +5088,7 @@ class Os {
|
|
|
5068
5088
|
t = e.proxy ? () => fetch(e.proxy, { method: "POST", body: a.path }) : () => fetch(a.path), Ve++, t().then((A) => {
|
|
5069
5089
|
if (!A.ok) throw console.error("could not load tile with path : " + a.path), new Error(`couldn't load "${a.path}". Request failed with status ${A.status} : ${A.statusText}`);
|
|
5070
5090
|
return A.json();
|
|
5071
|
-
}).then((A) =>
|
|
5091
|
+
}).then((A) => ba(A, a.path)).then((A) => {
|
|
5072
5092
|
a.tile.setObject(A, a.path), e.ready.unshift(a);
|
|
5073
5093
|
}).catch((A) => console.error(A)).finally(() => {
|
|
5074
5094
|
Ve--;
|
|
@@ -5098,27 +5118,27 @@ class Os {
|
|
|
5098
5118
|
}
|
|
5099
5119
|
get(e, t, a, A, s, i, n, l, h, b) {
|
|
5100
5120
|
const g = this, f = function(u) {
|
|
5101
|
-
for (var p = u.split("/"), m = [],
|
|
5102
|
-
var x = p[
|
|
5103
|
-
x !== "." && x !== "" && x !== ".." ? m[
|
|
5121
|
+
for (var p = u.split("/"), m = [], C = 0, E = 0; E < p.length; E++) {
|
|
5122
|
+
var x = p[E];
|
|
5123
|
+
x !== "." && x !== "" && x !== ".." ? m[C++] = x : x === ".." && C > 0 && C--;
|
|
5104
5124
|
}
|
|
5105
|
-
if (
|
|
5125
|
+
if (C === 0) return "/";
|
|
5106
5126
|
var w = "";
|
|
5107
|
-
for (
|
|
5127
|
+
for (E = 0; E < C; E++) w += "/" + m[E];
|
|
5108
5128
|
return w;
|
|
5109
5129
|
}(t);
|
|
5110
5130
|
if (!(t.includes(".b3dm") || t.includes(".json") || t.includes(".glb") || t.includes(".gltf"))) return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");
|
|
5111
5131
|
const I = g.cache.get(f);
|
|
5112
5132
|
if (I) I.addInstance(A);
|
|
5113
5133
|
else if (t.includes(".b3dm") || t.includes(".glb") || t.includes(".gltf")) {
|
|
5114
|
-
const u = new
|
|
5134
|
+
const u = new Vs(g.scene);
|
|
5115
5135
|
u.addInstance(A), g.cache.put(f, u);
|
|
5116
5136
|
const p = new AbortController();
|
|
5117
5137
|
e.signal.addEventListener("abort", () => {
|
|
5118
5138
|
u.getCount() == 0 && p.abort();
|
|
5119
5139
|
}), this.downloads.push({ abortController: p, tile: u, key: f, path: t, distanceFunction: s, getSiblings: i, level: n, uuid: a, sceneZupToYup: l, meshZupToYup: h, geometricError: b, shouldDoDownload: () => !0 });
|
|
5120
5140
|
} else if (t.includes(".json")) {
|
|
5121
|
-
const u = new
|
|
5141
|
+
const u = new Ys();
|
|
5122
5142
|
u.addInstance(A), g.cache.put(f, u);
|
|
5123
5143
|
const p = new AbortController();
|
|
5124
5144
|
e.signal.addEventListener("abort", () => {
|
|
@@ -5155,7 +5175,7 @@ class Os {
|
|
|
5155
5175
|
}
|
|
5156
5176
|
}
|
|
5157
5177
|
}
|
|
5158
|
-
async function
|
|
5178
|
+
async function Ws(o) {
|
|
5159
5179
|
return new Promise((e) => {
|
|
5160
5180
|
const t = setInterval(() => {
|
|
5161
5181
|
o.hasDracoLoader && !o.dracoLoader || o.hasKTX2Loader && !o.ktx2Loader || (clearInterval(t), e());
|
|
@@ -5163,11 +5183,11 @@ async function Gs(o) {
|
|
|
5163
5183
|
});
|
|
5164
5184
|
}
|
|
5165
5185
|
export {
|
|
5166
|
-
|
|
5167
|
-
|
|
5168
|
-
|
|
5169
|
-
|
|
5170
|
-
|
|
5171
|
-
|
|
5186
|
+
er as InstancedOGC3DTile,
|
|
5187
|
+
tr as InstancedTileLoader,
|
|
5188
|
+
FA as OGC3DTile,
|
|
5189
|
+
$s as OcclusionCullingService,
|
|
5190
|
+
Ns as TileLoader,
|
|
5191
|
+
Ks as getOGC3DTilesCopyrightInfo
|
|
5172
5192
|
};
|
|
5173
5193
|
//# sourceMappingURL=threedtiles.es.js.map
|