aptechka 0.5.42 → 0.5.44
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/lib/DRACOLoader-C2CFpMGS.cjs +2 -0
- package/lib/DRACOLoader-D2KY2dku.js +241 -0
- package/lib/KTX2Loader-DdUl1XiY.cjs +2 -0
- package/lib/KTX2Loader-DqpAffDj.js +536 -0
- package/lib/MeshoptDecoder-6XfTpOG2.js +201 -0
- package/lib/MeshoptDecoder-CMeN3oU0.cjs +1 -0
- package/lib/accordion/AccordionElement.d.ts +2 -2
- package/lib/accordion/index.cjs +1 -1
- package/lib/accordion/index.js +26 -26
- package/lib/animation/Animation.d.ts +2 -2
- package/lib/animation/AnimationLink.d.ts +1 -1
- package/lib/animation/Damped.d.ts +1 -1
- package/lib/animation/Tweened.d.ts +2 -2
- package/lib/attribute/index.d.ts +1 -1
- package/lib/canvas/index.cjs +1 -1
- package/lib/canvas/index.d.ts +1 -1
- package/lib/canvas/index.js +26 -26
- package/lib/checkbox/index.cjs +1 -1
- package/lib/checkbox/index.js +17 -17
- package/lib/controls/AutoplayControls.d.ts +1 -1
- package/lib/controls/DragControls.d.ts +1 -1
- package/lib/controls/WheelControls.d.ts +1 -1
- package/lib/css-property/index.d.ts +1 -1
- package/lib/custom-element/index.d.ts +1 -4
- package/lib/element-constructor/ElementConstructor.d.ts +2 -2
- package/lib/en3/attachments/En3SourceManager.d.ts +2 -2
- package/lib/en3/core/En3View.d.ts +2 -2
- package/lib/en3/core/en3.d.ts +2 -2
- package/lib/en3/index.cjs +22 -24
- package/lib/en3/index.js +1811 -2733
- package/lib/en3/loaders/en3GLTFLoader.d.ts +5 -5
- package/lib/en3/objects/En3Clip.d.ts +2 -2
- package/lib/en3/objects/En3ClipHelpers.d.ts +1 -1
- package/lib/en3/objects/En3GLTF.d.ts +3 -3
- package/lib/en3/objects/En3Image.d.ts +1 -1
- package/lib/en3/objects/En3ImageLike.d.ts +2 -2
- package/lib/en3/objects/En3Video.d.ts +1 -1
- package/lib/en3/objects/fluid/Advection.d.ts +1 -1
- package/lib/en3/objects/fluid/Divergence.d.ts +1 -1
- package/lib/en3/objects/fluid/En3Fluid.d.ts +1 -1
- package/lib/en3/objects/fluid/En3FluidElement.d.ts +1 -1
- package/lib/en3/objects/fluid/ExternalForce.d.ts +1 -1
- package/lib/en3/objects/fluid/Poisson.d.ts +1 -1
- package/lib/en3/objects/fluid/Pressure.d.ts +1 -1
- package/lib/en3/objects/fluid/Simulation.d.ts +1 -1
- package/lib/en3/objects/fluid/Viscous.d.ts +1 -1
- package/lib/en3/utils/coverTexture.d.ts +1 -1
- package/lib/{index-BtsOv9u0.js → index-BN9X-l9M.js} +63 -63
- package/lib/index-BbgmbQ-5.cjs +9 -0
- package/lib/layout-box/index.d.ts +2 -2
- package/lib/modal/index.cjs +1 -1
- package/lib/modal/index.js +9 -9
- package/lib/pointer/Pointer.d.ts +1 -1
- package/lib/pointer/PointerElement.d.ts +1 -1
- package/lib/pointer/index.cjs +1 -1
- package/lib/pointer/index.js +1 -1
- package/lib/popover/PopoverButtonElement.d.ts +1 -1
- package/lib/popover/PopoverElement.d.ts +2 -2
- package/lib/popover/index.cjs +1 -1
- package/lib/popover/index.js +48 -48
- package/lib/scroll/ScrollElement.d.ts +6 -6
- package/lib/scroll/ScrollSegmentElement.d.ts +3 -3
- package/lib/scroll/ScrollUserElement.d.ts +1 -1
- package/lib/scroll/index.cjs +1 -1
- package/lib/scroll/index.js +10 -10
- package/lib/scroll-entries/index.d.ts +1 -1
- package/lib/select/SelectUserElement.d.ts +1 -1
- package/lib/select/index.cjs +1 -1
- package/lib/select/index.js +1 -1
- package/lib/sequence/index.cjs +1 -1
- package/lib/sequence/index.d.ts +1 -1
- package/lib/sequence/index.js +7 -7
- package/lib/slicer/SlicerElement.d.ts +2 -2
- package/lib/slicer/index.cjs +4 -4
- package/lib/slicer/index.js +31 -31
- package/lib/source/SourceElement.d.ts +2 -2
- package/lib/source/SourceManager.d.ts +1 -1
- package/lib/tweaker/TweakerBooleanManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerColorManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerElement.d.ts +1 -1
- package/lib/tweaker/TweakerFieldElement.d.ts +2 -2
- package/lib/tweaker/TweakerFolderElement.d.ts +3 -3
- package/lib/tweaker/TweakerLinkManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerNumberManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerRangeManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerSelectManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerStoreManagerElement.d.ts +1 -1
- package/lib/tweaker/TweakerStringManagerElement.d.ts +1 -1
- package/lib/tweaker/index.cjs +2 -2
- package/lib/tweaker/index.js +125 -125
- package/lib/tweaker/tweakerManagerConstructors.d.ts +1 -1
- package/lib/utils/function.d.ts +2 -2
- package/lib/utils/layout.d.ts +1 -1
- package/lib/video/index.cjs +1 -1
- package/lib/video/index.js +13 -13
- package/package.json +4 -12
- package/lib/index-Buf76Qoq.cjs +0 -9
- package/lib/resized/index.cjs +0 -1
- package/lib/resized/index.d.ts +0 -12
- package/lib/resized/index.js +0 -30
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
var m = (g, A, B) => new Promise((C, I) => {
|
|
2
|
+
var Q = (n) => {
|
|
3
|
+
try {
|
|
4
|
+
r(B.next(n));
|
|
5
|
+
} catch (w) {
|
|
6
|
+
I(w);
|
|
7
|
+
}
|
|
8
|
+
}, t = (n) => {
|
|
9
|
+
try {
|
|
10
|
+
r(B.throw(n));
|
|
11
|
+
} catch (w) {
|
|
12
|
+
I(w);
|
|
13
|
+
}
|
|
14
|
+
}, r = (n) => n.done ? C(n.value) : Promise.resolve(n.value).then(Q, t);
|
|
15
|
+
r((B = B.apply(g, A)).next());
|
|
16
|
+
});
|
|
17
|
+
import { Loader as fA, FileLoader as Z, CompressedCubeTexture as dA, UnsignedByteType as U, CompressedArrayTexture as JA, CompressedTexture as aA, LinearFilter as QA, LinearMipmapLinearFilter as MA, RGBAFormat as p, RGBA_ASTC_4x4_Format as qA, RGBA_BPTC_Format as pA, RGBA_ETC2_EAC_Format as lA, RGBA_PVRTC_4BPPV1_Format as YA, RGBA_S3TC_DXT5_Format as HA, RGB_ETC1_Format as xA, RGB_ETC2_Format as mA, RGB_PVRTC_4BPPV1_Format as KA, RGBA_S3TC_DXT1_Format as uA, FloatType as W, HalfFloatType as b, DataTexture as _A, Data3DTexture as TA, SRGBColorSpace as OA, LinearSRGBColorSpace as VA, DisplayP3ColorSpace as PA, LinearDisplayP3ColorSpace as XA, NoColorSpace as EA, RGFormat as u, RedFormat as _, RGBA_ASTC_6x6_Format as iA } from "three";
|
|
18
|
+
class WA {
|
|
19
|
+
constructor(A = 4) {
|
|
20
|
+
this.pool = A, this.queue = [], this.workers = [], this.workersResolve = [], this.workerStatus = 0;
|
|
21
|
+
}
|
|
22
|
+
_initWorker(A) {
|
|
23
|
+
if (!this.workers[A]) {
|
|
24
|
+
const B = this.workerCreator();
|
|
25
|
+
B.addEventListener("message", this._onMessage.bind(this, A)), this.workers[A] = B;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
_getIdleWorker() {
|
|
29
|
+
for (let A = 0; A < this.pool; A++)
|
|
30
|
+
if (!(this.workerStatus & 1 << A))
|
|
31
|
+
return A;
|
|
32
|
+
return -1;
|
|
33
|
+
}
|
|
34
|
+
_onMessage(A, B) {
|
|
35
|
+
const C = this.workersResolve[A];
|
|
36
|
+
if (C && C(B), this.queue.length) {
|
|
37
|
+
const { resolve: I, msg: Q, transfer: t } = this.queue.shift();
|
|
38
|
+
this.workersResolve[A] = I, this.workers[A].postMessage(Q, t);
|
|
39
|
+
} else
|
|
40
|
+
this.workerStatus ^= 1 << A;
|
|
41
|
+
}
|
|
42
|
+
setWorkerCreator(A) {
|
|
43
|
+
this.workerCreator = A;
|
|
44
|
+
}
|
|
45
|
+
setWorkerLimit(A) {
|
|
46
|
+
this.pool = A;
|
|
47
|
+
}
|
|
48
|
+
postMessage(A, B) {
|
|
49
|
+
return new Promise((C) => {
|
|
50
|
+
const I = this._getIdleWorker();
|
|
51
|
+
I !== -1 ? (this._initWorker(I), this.workerStatus |= 1 << I, this.workersResolve[I] = C, this.workers[I].postMessage(A, B)) : this.queue.push({ resolve: C, msg: A, transfer: B });
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
dispose() {
|
|
55
|
+
this.workers.forEach((A) => A.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const bA = 0, oA = 2, ZA = 1, tA = 2, vA = 0, jA = 1, zA = 10, $A = 0, rA = 9, DA = 15, nA = 16, hA = 22, wA = 37, FA = 43, GA = 76, cA = 83, SA = 97, yA = 100, RA = 103, UA = 109, LA = 165, kA = 166;
|
|
59
|
+
class AI {
|
|
60
|
+
constructor() {
|
|
61
|
+
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;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
class K {
|
|
65
|
+
constructor(A, B, C, I) {
|
|
66
|
+
this._dataView = new DataView(A.buffer, A.byteOffset + B, C), this._littleEndian = I, this._offset = 0;
|
|
67
|
+
}
|
|
68
|
+
_nextUint8() {
|
|
69
|
+
const A = this._dataView.getUint8(this._offset);
|
|
70
|
+
return this._offset += 1, A;
|
|
71
|
+
}
|
|
72
|
+
_nextUint16() {
|
|
73
|
+
const A = this._dataView.getUint16(this._offset, this._littleEndian);
|
|
74
|
+
return this._offset += 2, A;
|
|
75
|
+
}
|
|
76
|
+
_nextUint32() {
|
|
77
|
+
const A = this._dataView.getUint32(this._offset, this._littleEndian);
|
|
78
|
+
return this._offset += 4, A;
|
|
79
|
+
}
|
|
80
|
+
_nextUint64() {
|
|
81
|
+
const A = this._dataView.getUint32(this._offset, this._littleEndian) + 4294967296 * this._dataView.getUint32(this._offset + 4, this._littleEndian);
|
|
82
|
+
return this._offset += 8, A;
|
|
83
|
+
}
|
|
84
|
+
_nextInt32() {
|
|
85
|
+
const A = this._dataView.getInt32(this._offset, this._littleEndian);
|
|
86
|
+
return this._offset += 4, A;
|
|
87
|
+
}
|
|
88
|
+
_skip(A) {
|
|
89
|
+
return this._offset += A, this;
|
|
90
|
+
}
|
|
91
|
+
_scan(A, B = 0) {
|
|
92
|
+
const C = this._offset;
|
|
93
|
+
let I = 0;
|
|
94
|
+
for (; this._dataView.getUint8(this._offset) !== B && I < A; )
|
|
95
|
+
I++, this._offset++;
|
|
96
|
+
return I < A && this._offset++, new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + C, I);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const G = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
|
|
100
|
+
function eA(g) {
|
|
101
|
+
return typeof TextDecoder != "undefined" ? new TextDecoder().decode(g) : Buffer.from(g).toString("utf8");
|
|
102
|
+
}
|
|
103
|
+
function II(g) {
|
|
104
|
+
const A = new Uint8Array(g.buffer, g.byteOffset, G.length);
|
|
105
|
+
if (A[0] !== G[0] || A[1] !== G[1] || A[2] !== G[2] || A[3] !== G[3] || A[4] !== G[4] || A[5] !== G[5] || A[6] !== G[6] || A[7] !== G[7] || A[8] !== G[8] || A[9] !== G[9] || A[10] !== G[10] || A[11] !== G[11])
|
|
106
|
+
throw new Error("Missing KTX 2.0 identifier.");
|
|
107
|
+
const B = new AI(), C = 17 * Uint32Array.BYTES_PER_ELEMENT, I = new K(g, G.length, C, !0);
|
|
108
|
+
B.vkFormat = I._nextUint32(), B.typeSize = I._nextUint32(), B.pixelWidth = I._nextUint32(), B.pixelHeight = I._nextUint32(), B.pixelDepth = I._nextUint32(), B.layerCount = I._nextUint32(), B.faceCount = I._nextUint32();
|
|
109
|
+
const Q = I._nextUint32();
|
|
110
|
+
B.supercompressionScheme = I._nextUint32();
|
|
111
|
+
const t = I._nextUint32(), r = I._nextUint32(), n = I._nextUint32(), w = I._nextUint32(), e = I._nextUint64(), y = I._nextUint64(), M = new K(g, G.length + C, 3 * Q * 8, !0);
|
|
112
|
+
for (let F = 0; F < Q; F++)
|
|
113
|
+
B.levels.push({ levelData: new Uint8Array(g.buffer, g.byteOffset + M._nextUint64(), M._nextUint64()), uncompressedByteLength: M._nextUint64() });
|
|
114
|
+
const i = new K(g, t, r, !0), o = { vendorId: i._skip(4)._nextUint16(), descriptorType: i._nextUint16(), versionNumber: i._nextUint16(), descriptorBlockSize: i._nextUint16(), colorModel: i._nextUint8(), colorPrimaries: i._nextUint8(), transferFunction: i._nextUint8(), flags: i._nextUint8(), texelBlockDimension: [i._nextUint8(), i._nextUint8(), i._nextUint8(), i._nextUint8()], bytesPlane: [i._nextUint8(), i._nextUint8(), i._nextUint8(), i._nextUint8(), i._nextUint8(), i._nextUint8(), i._nextUint8(), i._nextUint8()], samples: [] }, E = (o.descriptorBlockSize / 4 - 6) / 4;
|
|
115
|
+
for (let F = 0; F < E; F++) {
|
|
116
|
+
const S = { bitOffset: i._nextUint16(), bitLength: i._nextUint8(), channelType: i._nextUint8(), samplePosition: [i._nextUint8(), i._nextUint8(), i._nextUint8(), i._nextUint8()], sampleLower: -1 / 0, sampleUpper: 1 / 0 };
|
|
117
|
+
64 & S.channelType ? (S.sampleLower = i._nextInt32(), S.sampleUpper = i._nextInt32()) : (S.sampleLower = i._nextUint32(), S.sampleUpper = i._nextUint32()), o.samples[F] = S;
|
|
118
|
+
}
|
|
119
|
+
B.dataFormatDescriptor.length = 0, B.dataFormatDescriptor.push(o);
|
|
120
|
+
const s = new K(g, n, w, !0);
|
|
121
|
+
for (; s._offset < w; ) {
|
|
122
|
+
const F = s._nextUint32(), S = s._scan(F), x = eA(S), k = s._scan(F - S.byteLength);
|
|
123
|
+
B.keyValue[x] = x.match(/^ktx/i) ? eA(k) : k, s._offset % 4 && s._skip(4 - s._offset % 4);
|
|
124
|
+
}
|
|
125
|
+
if (y <= 0)
|
|
126
|
+
return B;
|
|
127
|
+
const a = new K(g, e, y, !0), D = a._nextUint16(), h = a._nextUint16(), L = a._nextUint32(), R = a._nextUint32(), c = a._nextUint32(), T = a._nextUint32(), O = [];
|
|
128
|
+
for (let F = 0; F < Q; F++)
|
|
129
|
+
O.push({ imageFlags: a._nextUint32(), rgbSliceByteOffset: a._nextUint32(), rgbSliceByteLength: a._nextUint32(), alphaSliceByteOffset: a._nextUint32(), alphaSliceByteLength: a._nextUint32() });
|
|
130
|
+
const l = e + a._offset, Y = l + L, H = Y + R, V = H + c, J = new Uint8Array(g.buffer, g.byteOffset + l, L), P = new Uint8Array(g.buffer, g.byteOffset + Y, R), d = new Uint8Array(g.buffer, g.byteOffset + H, c), X = new Uint8Array(g.buffer, g.byteOffset + V, T);
|
|
131
|
+
return B.globalData = { endpointCount: D, selectorCount: h, imageDescs: O, endpointsData: J, selectorsData: P, tablesData: d, extendedData: X }, B;
|
|
132
|
+
}
|
|
133
|
+
let v, N, gA;
|
|
134
|
+
const j = { env: { emscripten_notify_memory_growth: function(g) {
|
|
135
|
+
gA = new Uint8Array(N.exports.memory.buffer);
|
|
136
|
+
} } };
|
|
137
|
+
class BI {
|
|
138
|
+
init() {
|
|
139
|
+
return v || (v = typeof fetch != "undefined" ? fetch("data:application/wasm;base64," + sA).then((A) => A.arrayBuffer()).then((A) => WebAssembly.instantiate(A, j)).then(this._init) : WebAssembly.instantiate(Buffer.from(sA, "base64"), j).then(this._init), v);
|
|
140
|
+
}
|
|
141
|
+
_init(A) {
|
|
142
|
+
N = A.instance, j.env.emscripten_notify_memory_growth(0);
|
|
143
|
+
}
|
|
144
|
+
decode(A, B = 0) {
|
|
145
|
+
if (!N)
|
|
146
|
+
throw new Error("ZSTDDecoder: Await .init() before decoding.");
|
|
147
|
+
const C = A.byteLength, I = N.exports.malloc(C);
|
|
148
|
+
gA.set(A, I), B = B || Number(N.exports.ZSTD_findDecompressedSize(I, C));
|
|
149
|
+
const Q = N.exports.malloc(B), t = N.exports.ZSTD_decompress(Q, B, I, C), r = gA.slice(Q, Q + t);
|
|
150
|
+
return N.exports.free(I), N.exports.free(Q), r;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
const sA = "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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+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", z = /* @__PURE__ */ new WeakMap();
|
|
154
|
+
let $ = 0, AA;
|
|
155
|
+
class f extends fA {
|
|
156
|
+
constructor(A) {
|
|
157
|
+
super(A), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new WA(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER != "undefined" && console.warn(
|
|
158
|
+
'THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.'
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
setTranscoderPath(A) {
|
|
162
|
+
return this.transcoderPath = A, this;
|
|
163
|
+
}
|
|
164
|
+
setWorkerLimit(A) {
|
|
165
|
+
return this.workerPool.setWorkerLimit(A), this;
|
|
166
|
+
}
|
|
167
|
+
detectSupportAsync(A) {
|
|
168
|
+
return m(this, null, function* () {
|
|
169
|
+
return this.workerConfig = {
|
|
170
|
+
astcSupported: yield A.hasFeatureAsync("texture-compression-astc"),
|
|
171
|
+
etc1Supported: yield A.hasFeatureAsync("texture-compression-etc1"),
|
|
172
|
+
etc2Supported: yield A.hasFeatureAsync("texture-compression-etc2"),
|
|
173
|
+
dxtSupported: yield A.hasFeatureAsync("texture-compression-bc"),
|
|
174
|
+
bptcSupported: yield A.hasFeatureAsync("texture-compression-bptc"),
|
|
175
|
+
pvrtcSupported: yield A.hasFeatureAsync("texture-compression-pvrtc")
|
|
176
|
+
}, this;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
detectSupport(A) {
|
|
180
|
+
return A.isWebGPURenderer === !0 ? this.workerConfig = {
|
|
181
|
+
astcSupported: A.hasFeature("texture-compression-astc"),
|
|
182
|
+
etc1Supported: A.hasFeature("texture-compression-etc1"),
|
|
183
|
+
etc2Supported: A.hasFeature("texture-compression-etc2"),
|
|
184
|
+
dxtSupported: A.hasFeature("texture-compression-bc"),
|
|
185
|
+
bptcSupported: A.hasFeature("texture-compression-bptc"),
|
|
186
|
+
pvrtcSupported: A.hasFeature("texture-compression-pvrtc")
|
|
187
|
+
} : this.workerConfig = {
|
|
188
|
+
astcSupported: A.extensions.has("WEBGL_compressed_texture_astc"),
|
|
189
|
+
etc1Supported: A.extensions.has("WEBGL_compressed_texture_etc1"),
|
|
190
|
+
etc2Supported: A.extensions.has("WEBGL_compressed_texture_etc"),
|
|
191
|
+
dxtSupported: A.extensions.has("WEBGL_compressed_texture_s3tc"),
|
|
192
|
+
bptcSupported: A.extensions.has("EXT_texture_compression_bptc"),
|
|
193
|
+
pvrtcSupported: A.extensions.has("WEBGL_compressed_texture_pvrtc") || A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")
|
|
194
|
+
}, this;
|
|
195
|
+
}
|
|
196
|
+
init() {
|
|
197
|
+
if (!this.transcoderPending) {
|
|
198
|
+
const A = new Z(this.manager);
|
|
199
|
+
A.setPath(this.transcoderPath), A.setWithCredentials(this.withCredentials);
|
|
200
|
+
const B = A.loadAsync("basis_transcoder.js"), C = new Z(this.manager);
|
|
201
|
+
C.setPath(this.transcoderPath), C.setResponseType("arraybuffer"), C.setWithCredentials(this.withCredentials);
|
|
202
|
+
const I = C.loadAsync("basis_transcoder.wasm");
|
|
203
|
+
this.transcoderPending = Promise.all([B, I]).then(([Q, t]) => {
|
|
204
|
+
const r = f.BasisWorker.toString(), n = [
|
|
205
|
+
"/* constants */",
|
|
206
|
+
"let _EngineFormat = " + JSON.stringify(f.EngineFormat),
|
|
207
|
+
"let _TranscoderFormat = " + JSON.stringify(f.TranscoderFormat),
|
|
208
|
+
"let _BasisFormat = " + JSON.stringify(f.BasisFormat),
|
|
209
|
+
"/* basis_transcoder.js */",
|
|
210
|
+
Q,
|
|
211
|
+
"/* worker */",
|
|
212
|
+
r.substring(r.indexOf("{") + 1, r.lastIndexOf("}"))
|
|
213
|
+
].join(`
|
|
214
|
+
`);
|
|
215
|
+
this.workerSourceURL = URL.createObjectURL(new Blob([n])), this.transcoderBinary = t, this.workerPool.setWorkerCreator(() => {
|
|
216
|
+
const w = new Worker(this.workerSourceURL), e = this.transcoderBinary.slice(0);
|
|
217
|
+
return w.postMessage({ type: "init", config: this.workerConfig, transcoderBinary: e }, [e]), w;
|
|
218
|
+
});
|
|
219
|
+
}), $ > 0 && console.warn(
|
|
220
|
+
"THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."
|
|
221
|
+
), $++;
|
|
222
|
+
}
|
|
223
|
+
return this.transcoderPending;
|
|
224
|
+
}
|
|
225
|
+
load(A, B, C, I) {
|
|
226
|
+
if (this.workerConfig === null)
|
|
227
|
+
throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
|
|
228
|
+
const Q = new Z(this.manager);
|
|
229
|
+
Q.setResponseType("arraybuffer"), Q.setWithCredentials(this.withCredentials), Q.load(A, (t) => {
|
|
230
|
+
if (z.has(t))
|
|
231
|
+
return z.get(t).promise.then(B).catch(I);
|
|
232
|
+
this._createTexture(t).then((r) => B ? B(r) : null).catch(I);
|
|
233
|
+
}, C, I);
|
|
234
|
+
}
|
|
235
|
+
_createTextureFrom(A, B) {
|
|
236
|
+
const { faces: C, width: I, height: Q, format: t, type: r, error: n, dfdFlags: w } = A;
|
|
237
|
+
if (r === "error")
|
|
238
|
+
return Promise.reject(n);
|
|
239
|
+
let e;
|
|
240
|
+
if (B.faceCount === 6)
|
|
241
|
+
e = new dA(C, t, U);
|
|
242
|
+
else {
|
|
243
|
+
const y = C[0].mipmaps;
|
|
244
|
+
e = B.layerCount > 1 ? new JA(y, I, Q, B.layerCount, t, U) : new aA(y, I, Q, t, U);
|
|
245
|
+
}
|
|
246
|
+
return e.minFilter = C[0].mipmaps.length === 1 ? QA : MA, e.magFilter = QA, e.generateMipmaps = !1, e.needsUpdate = !0, e.colorSpace = NA(B), e.premultiplyAlpha = !!(w & ZA), e;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* @param {ArrayBuffer} buffer
|
|
250
|
+
* @param {object?} config
|
|
251
|
+
* @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}
|
|
252
|
+
*/
|
|
253
|
+
_createTexture(C) {
|
|
254
|
+
return m(this, arguments, function* (A, B = {}) {
|
|
255
|
+
const I = II(new Uint8Array(A));
|
|
256
|
+
if (I.vkFormat !== $A)
|
|
257
|
+
return CI(I);
|
|
258
|
+
const Q = B, t = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: A, taskConfig: Q }, [A])).then((r) => this._createTextureFrom(r.data, I));
|
|
259
|
+
return z.set(A, { promise: t }), t;
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
dispose() {
|
|
263
|
+
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), $--, this;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
f.BasisFormat = {
|
|
267
|
+
ETC1S: 0,
|
|
268
|
+
UASTC_4x4: 1
|
|
269
|
+
};
|
|
270
|
+
f.TranscoderFormat = {
|
|
271
|
+
ETC1: 0,
|
|
272
|
+
ETC2: 1,
|
|
273
|
+
BC1: 2,
|
|
274
|
+
BC3: 3,
|
|
275
|
+
BC4: 4,
|
|
276
|
+
BC5: 5,
|
|
277
|
+
BC7_M6_OPAQUE_ONLY: 6,
|
|
278
|
+
BC7_M5: 7,
|
|
279
|
+
PVRTC1_4_RGB: 8,
|
|
280
|
+
PVRTC1_4_RGBA: 9,
|
|
281
|
+
ASTC_4x4: 10,
|
|
282
|
+
ATC_RGB: 11,
|
|
283
|
+
ATC_RGBA_INTERPOLATED_ALPHA: 12,
|
|
284
|
+
RGBA32: 13,
|
|
285
|
+
RGB565: 14,
|
|
286
|
+
BGR565: 15,
|
|
287
|
+
RGBA4444: 16
|
|
288
|
+
};
|
|
289
|
+
f.EngineFormat = {
|
|
290
|
+
RGBAFormat: p,
|
|
291
|
+
RGBA_ASTC_4x4_Format: qA,
|
|
292
|
+
RGBA_BPTC_Format: pA,
|
|
293
|
+
RGBA_ETC2_EAC_Format: lA,
|
|
294
|
+
RGBA_PVRTC_4BPPV1_Format: YA,
|
|
295
|
+
RGBA_S3TC_DXT5_Format: HA,
|
|
296
|
+
RGB_ETC1_Format: xA,
|
|
297
|
+
RGB_ETC2_Format: mA,
|
|
298
|
+
RGB_PVRTC_4BPPV1_Format: KA,
|
|
299
|
+
RGBA_S3TC_DXT1_Format: uA
|
|
300
|
+
};
|
|
301
|
+
f.BasisWorker = function() {
|
|
302
|
+
let g, A, B;
|
|
303
|
+
const C = _EngineFormat, I = _TranscoderFormat, Q = _BasisFormat;
|
|
304
|
+
self.addEventListener("message", function(o) {
|
|
305
|
+
const E = o.data;
|
|
306
|
+
switch (E.type) {
|
|
307
|
+
case "init":
|
|
308
|
+
g = E.config, t(E.transcoderBinary);
|
|
309
|
+
break;
|
|
310
|
+
case "transcode":
|
|
311
|
+
A.then(() => {
|
|
312
|
+
try {
|
|
313
|
+
const { faces: s, buffers: a, width: D, height: h, hasAlpha: L, format: R, dfdFlags: c } = r(E.buffer);
|
|
314
|
+
self.postMessage({ type: "transcode", id: E.id, faces: s, width: D, height: h, hasAlpha: L, format: R, dfdFlags: c }, a);
|
|
315
|
+
} catch (s) {
|
|
316
|
+
console.error(s), self.postMessage({ type: "error", id: E.id, error: s.message });
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
function t(o) {
|
|
323
|
+
A = new Promise((E) => {
|
|
324
|
+
B = { wasmBinary: o, onRuntimeInitialized: E }, BASIS(B);
|
|
325
|
+
}).then(() => {
|
|
326
|
+
B.initializeBasis(), B.KTX2File === void 0 && console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.");
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
function r(o) {
|
|
330
|
+
const E = new B.KTX2File(new Uint8Array(o));
|
|
331
|
+
function s() {
|
|
332
|
+
E.close(), E.delete();
|
|
333
|
+
}
|
|
334
|
+
if (!E.isValid())
|
|
335
|
+
throw s(), new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");
|
|
336
|
+
const a = E.isUASTC() ? Q.UASTC_4x4 : Q.ETC1S, D = E.getWidth(), h = E.getHeight(), L = E.getLayers() || 1, R = E.getLevels(), c = E.getFaces(), T = E.getHasAlpha(), O = E.getDFDFlags(), { transcoderFormat: l, engineFormat: Y } = y(a, D, h, T);
|
|
337
|
+
if (!D || !h || !R)
|
|
338
|
+
throw s(), new Error("THREE.KTX2Loader: Invalid texture");
|
|
339
|
+
if (!E.startTranscoding())
|
|
340
|
+
throw s(), new Error("THREE.KTX2Loader: .startTranscoding failed");
|
|
341
|
+
const H = [], V = [];
|
|
342
|
+
for (let J = 0; J < c; J++) {
|
|
343
|
+
const P = [];
|
|
344
|
+
for (let d = 0; d < R; d++) {
|
|
345
|
+
const X = [];
|
|
346
|
+
let F, S;
|
|
347
|
+
for (let k = 0; k < L; k++) {
|
|
348
|
+
const q = E.getImageLevelInfo(d, k, J);
|
|
349
|
+
J === 0 && d === 0 && k === 0 && (q.origWidth % 4 !== 0 || q.origHeight % 4 !== 0) && console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), R > 1 ? (F = q.origWidth, S = q.origHeight) : (F = q.width, S = q.height);
|
|
350
|
+
const CA = new Uint8Array(E.getImageTranscodedSizeInBytes(d, k, 0, l));
|
|
351
|
+
if (!E.transcodeImage(CA, d, k, J, l, 0, -1, -1))
|
|
352
|
+
throw s(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
|
|
353
|
+
X.push(CA);
|
|
354
|
+
}
|
|
355
|
+
const x = i(X);
|
|
356
|
+
P.push({ data: x, width: F, height: S }), V.push(x.buffer);
|
|
357
|
+
}
|
|
358
|
+
H.push({ mipmaps: P, width: D, height: h, format: Y });
|
|
359
|
+
}
|
|
360
|
+
return s(), { faces: H, buffers: V, width: D, height: h, hasAlpha: T, format: Y, dfdFlags: O };
|
|
361
|
+
}
|
|
362
|
+
const n = [
|
|
363
|
+
{
|
|
364
|
+
if: "astcSupported",
|
|
365
|
+
basisFormat: [Q.UASTC_4x4],
|
|
366
|
+
transcoderFormat: [I.ASTC_4x4, I.ASTC_4x4],
|
|
367
|
+
engineFormat: [C.RGBA_ASTC_4x4_Format, C.RGBA_ASTC_4x4_Format],
|
|
368
|
+
priorityETC1S: 1 / 0,
|
|
369
|
+
priorityUASTC: 1,
|
|
370
|
+
needsPowerOfTwo: !1
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
if: "bptcSupported",
|
|
374
|
+
basisFormat: [Q.ETC1S, Q.UASTC_4x4],
|
|
375
|
+
transcoderFormat: [I.BC7_M5, I.BC7_M5],
|
|
376
|
+
engineFormat: [C.RGBA_BPTC_Format, C.RGBA_BPTC_Format],
|
|
377
|
+
priorityETC1S: 3,
|
|
378
|
+
priorityUASTC: 2,
|
|
379
|
+
needsPowerOfTwo: !1
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
if: "dxtSupported",
|
|
383
|
+
basisFormat: [Q.ETC1S, Q.UASTC_4x4],
|
|
384
|
+
transcoderFormat: [I.BC1, I.BC3],
|
|
385
|
+
engineFormat: [C.RGBA_S3TC_DXT1_Format, C.RGBA_S3TC_DXT5_Format],
|
|
386
|
+
priorityETC1S: 4,
|
|
387
|
+
priorityUASTC: 5,
|
|
388
|
+
needsPowerOfTwo: !1
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
if: "etc2Supported",
|
|
392
|
+
basisFormat: [Q.ETC1S, Q.UASTC_4x4],
|
|
393
|
+
transcoderFormat: [I.ETC1, I.ETC2],
|
|
394
|
+
engineFormat: [C.RGB_ETC2_Format, C.RGBA_ETC2_EAC_Format],
|
|
395
|
+
priorityETC1S: 1,
|
|
396
|
+
priorityUASTC: 3,
|
|
397
|
+
needsPowerOfTwo: !1
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
if: "etc1Supported",
|
|
401
|
+
basisFormat: [Q.ETC1S, Q.UASTC_4x4],
|
|
402
|
+
transcoderFormat: [I.ETC1],
|
|
403
|
+
engineFormat: [C.RGB_ETC1_Format],
|
|
404
|
+
priorityETC1S: 2,
|
|
405
|
+
priorityUASTC: 4,
|
|
406
|
+
needsPowerOfTwo: !1
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
if: "pvrtcSupported",
|
|
410
|
+
basisFormat: [Q.ETC1S, Q.UASTC_4x4],
|
|
411
|
+
transcoderFormat: [I.PVRTC1_4_RGB, I.PVRTC1_4_RGBA],
|
|
412
|
+
engineFormat: [C.RGB_PVRTC_4BPPV1_Format, C.RGBA_PVRTC_4BPPV1_Format],
|
|
413
|
+
priorityETC1S: 5,
|
|
414
|
+
priorityUASTC: 6,
|
|
415
|
+
needsPowerOfTwo: !0
|
|
416
|
+
}
|
|
417
|
+
], w = n.sort(function(o, E) {
|
|
418
|
+
return o.priorityETC1S - E.priorityETC1S;
|
|
419
|
+
}), e = n.sort(function(o, E) {
|
|
420
|
+
return o.priorityUASTC - E.priorityUASTC;
|
|
421
|
+
});
|
|
422
|
+
function y(o, E, s, a) {
|
|
423
|
+
let D, h;
|
|
424
|
+
const L = o === Q.ETC1S ? w : e;
|
|
425
|
+
for (let R = 0; R < L.length; R++) {
|
|
426
|
+
const c = L[R];
|
|
427
|
+
if (g[c.if] && c.basisFormat.includes(o) && !(a && c.transcoderFormat.length < 2) && !(c.needsPowerOfTwo && !(M(E) && M(s))))
|
|
428
|
+
return D = c.transcoderFormat[a ? 1 : 0], h = c.engineFormat[a ? 1 : 0], { transcoderFormat: D, engineFormat: h };
|
|
429
|
+
}
|
|
430
|
+
return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."), D = I.RGBA32, h = C.RGBAFormat, { transcoderFormat: D, engineFormat: h };
|
|
431
|
+
}
|
|
432
|
+
function M(o) {
|
|
433
|
+
return o <= 2 ? !0 : (o & o - 1) === 0 && o !== 0;
|
|
434
|
+
}
|
|
435
|
+
function i(o) {
|
|
436
|
+
if (o.length === 1)
|
|
437
|
+
return o[0];
|
|
438
|
+
let E = 0;
|
|
439
|
+
for (let D = 0; D < o.length; D++) {
|
|
440
|
+
const h = o[D];
|
|
441
|
+
E += h.byteLength;
|
|
442
|
+
}
|
|
443
|
+
const s = new Uint8Array(E);
|
|
444
|
+
let a = 0;
|
|
445
|
+
for (let D = 0; D < o.length; D++) {
|
|
446
|
+
const h = o[D];
|
|
447
|
+
s.set(h, a), a += h.byteLength;
|
|
448
|
+
}
|
|
449
|
+
return s;
|
|
450
|
+
}
|
|
451
|
+
};
|
|
452
|
+
const gI = /* @__PURE__ */ new Set([p, u, _]), IA = {
|
|
453
|
+
[UA]: p,
|
|
454
|
+
[SA]: p,
|
|
455
|
+
[wA]: p,
|
|
456
|
+
[FA]: p,
|
|
457
|
+
[RA]: u,
|
|
458
|
+
[cA]: u,
|
|
459
|
+
[nA]: u,
|
|
460
|
+
[hA]: u,
|
|
461
|
+
[yA]: _,
|
|
462
|
+
[GA]: _,
|
|
463
|
+
[DA]: _,
|
|
464
|
+
[rA]: _,
|
|
465
|
+
[kA]: iA,
|
|
466
|
+
[LA]: iA
|
|
467
|
+
}, BA = {
|
|
468
|
+
[UA]: W,
|
|
469
|
+
[SA]: b,
|
|
470
|
+
[wA]: U,
|
|
471
|
+
[FA]: U,
|
|
472
|
+
[RA]: W,
|
|
473
|
+
[cA]: b,
|
|
474
|
+
[nA]: U,
|
|
475
|
+
[hA]: U,
|
|
476
|
+
[yA]: W,
|
|
477
|
+
[GA]: b,
|
|
478
|
+
[DA]: U,
|
|
479
|
+
[rA]: U,
|
|
480
|
+
[kA]: U,
|
|
481
|
+
[LA]: U
|
|
482
|
+
};
|
|
483
|
+
function CI(g) {
|
|
484
|
+
return m(this, null, function* () {
|
|
485
|
+
const { vkFormat: A } = g;
|
|
486
|
+
if (IA[A] === void 0)
|
|
487
|
+
throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
|
|
488
|
+
let B;
|
|
489
|
+
g.supercompressionScheme === oA && (AA || (AA = new Promise((Q) => m(this, null, function* () {
|
|
490
|
+
const t = new BI();
|
|
491
|
+
yield t.init(), Q(t);
|
|
492
|
+
}))), B = yield AA);
|
|
493
|
+
const C = [];
|
|
494
|
+
for (let Q = 0; Q < g.levels.length; Q++) {
|
|
495
|
+
const t = Math.max(1, g.pixelWidth >> Q), r = Math.max(1, g.pixelHeight >> Q), n = g.pixelDepth ? Math.max(1, g.pixelDepth >> Q) : 0, w = g.levels[Q];
|
|
496
|
+
let e;
|
|
497
|
+
if (g.supercompressionScheme === bA)
|
|
498
|
+
e = w.levelData;
|
|
499
|
+
else if (g.supercompressionScheme === oA)
|
|
500
|
+
e = B.decode(w.levelData, w.uncompressedByteLength);
|
|
501
|
+
else
|
|
502
|
+
throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");
|
|
503
|
+
let y;
|
|
504
|
+
BA[A] === W ? y = new Float32Array(
|
|
505
|
+
e.buffer,
|
|
506
|
+
e.byteOffset,
|
|
507
|
+
e.byteLength / Float32Array.BYTES_PER_ELEMENT
|
|
508
|
+
) : BA[A] === b ? y = new Uint16Array(
|
|
509
|
+
e.buffer,
|
|
510
|
+
e.byteOffset,
|
|
511
|
+
e.byteLength / Uint16Array.BYTES_PER_ELEMENT
|
|
512
|
+
) : y = e, C.push({
|
|
513
|
+
data: y,
|
|
514
|
+
width: t,
|
|
515
|
+
height: r,
|
|
516
|
+
depth: n
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
let I;
|
|
520
|
+
if (gI.has(IA[A]))
|
|
521
|
+
I = g.pixelDepth === 0 ? new _A(C[0].data, g.pixelWidth, g.pixelHeight) : new TA(C[0].data, g.pixelWidth, g.pixelHeight, g.pixelDepth);
|
|
522
|
+
else {
|
|
523
|
+
if (g.pixelDepth > 0)
|
|
524
|
+
throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
|
|
525
|
+
I = new aA(C, g.pixelWidth, g.pixelHeight);
|
|
526
|
+
}
|
|
527
|
+
return I.mipmaps = C, I.type = BA[A], I.format = IA[A], I.colorSpace = NA(g), I.needsUpdate = !0, Promise.resolve(I);
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
function NA(g) {
|
|
531
|
+
const A = g.dataFormatDescriptor[0];
|
|
532
|
+
return A.colorPrimaries === jA ? A.transferFunction === tA ? OA : VA : A.colorPrimaries === zA ? A.transferFunction === tA ? PA : XA : A.colorPrimaries === vA ? EA : (console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`), EA);
|
|
533
|
+
}
|
|
534
|
+
export {
|
|
535
|
+
f as KTX2Loader
|
|
536
|
+
};
|