@maptalks/transform-control 0.90.0 → 0.91.0

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.
@@ -1,13 +1,13 @@
1
1
  /*!
2
- * @maptalks/transform-control v0.90.0
2
+ * @maptalks/transform-control v0.91.0
3
3
  * LICENSE : UNLICENSED
4
4
  * (c) 2016-2023 maptalks.org
5
5
  */
6
- import { quat as A, mat4 as e, reshader as t, vec3 as s, vec2 as i, GroupGLLayer as I } from "@maptalks/gl";
6
+ import { quat as A, mat4 as e, reshader as t, vec3 as s, vec2 as i, GroupGLLayer as n } from "@maptalks/gl";
7
7
 
8
- import * as n from "maptalks";
8
+ import * as I from "maptalks";
9
9
 
10
- import { Coordinate as o, Eventable as g, Handlerable as r, Class as C, Point as a } from "maptalks";
10
+ import { Point as o, Coordinate as g, Eventable as r, Handlerable as C, Class as a } from "maptalks";
11
11
 
12
12
  import * as h from "@maptalks/gltf-loader";
13
13
 
@@ -1156,8 +1156,8 @@ const w = {
1156
1156
  }
1157
1157
  }, c = [];
1158
1158
 
1159
- function Q(s, i, I, n, o, g) {
1160
- const r = [], C = A.fromEuler([], I[0], I[1], I[2]), a = e.fromRotationTranslationScale([], C, i, n);
1159
+ function Q(s, i, n, I, o, g) {
1160
+ const r = [], C = A.fromEuler([], n[0], n[1], n[2]), a = e.fromRotationTranslationScale([], C, i, I);
1161
1161
  return function(A) {
1162
1162
  return new h.GLTFLoader("", w[A]).load().then(A => A);
1163
1163
  }(s).then(A => {
@@ -1167,7 +1167,7 @@ function Q(s, i, I, n, o, g) {
1167
1167
  }), h = new t.Mesh(A.geometry, C);
1168
1168
  h.setUniform("uPickingId", g + s);
1169
1169
  const w = h.getDefines();
1170
- w.HAS_PICKING_ID = 2, h.setDefines(w), h.translate = i, h.rotation = I, h.scaling = n,
1170
+ w.HAS_PICKING_ID = 2, h.setDefines(w), h.translate = i, h.rotation = n, h.scaling = I,
1171
1171
  e.multiply(h.localTransform, a, A.nodeMatrix), h.originTransform = e.copy([], h.localTransform),
1172
1172
  h.originColor = o || A.materialInfo.baseColorFactor, r.push(h);
1173
1173
  });
@@ -1178,21 +1178,21 @@ function f(A, e) {
1178
1178
  return Math.abs(A) * Math.sign(e);
1179
1179
  }
1180
1180
 
1181
- function P(A, t) {
1182
- const i = A.getCoordinates(), I = t.coordinateToPointAtRes(i, t.getGLRes()), o = [ I.x, I.y, 0 ], g = l(t, A.getTranslation());
1181
+ function l(A, t) {
1182
+ const i = A.getCoordinates(), n = t.coordinateToPointAtRes(i, t.getGLRes()), o = [ n.x, n.y, 0 ], g = P(t, A.getTranslation());
1183
1183
  s.add(o, o, g);
1184
1184
  const r = function(A, e, t, s) {
1185
1185
  return A._pointAtResToContainerPoint(e, t, s);
1186
- }(t, new n.Point(o[0], o[1]), t.getGLRes());
1187
- r.x += 170;
1188
- const C = function(A, t, i, I) {
1189
- if (I) {
1186
+ }(t, new I.Point(o[0], o[1]), t.getGLRes());
1187
+ r.x += 85;
1188
+ const C = function(A, t, i, n) {
1189
+ if (n) {
1190
1190
  const o = i / A._getResolution(), g = A.width / 2, r = A.height / 2;
1191
- c[0] = (t.x - g) / g, c[1] = t.y / r - 1, c[3] = I * o;
1191
+ c[0] = (t.x - g) / g, c[1] = t.y / r - 1, c[3] = n * o;
1192
1192
  const C = e.invert([], A.projViewMatrix);
1193
1193
  s.transformMat4(c, c, C);
1194
1194
  const a = A.getGLScale();
1195
- return s.set(c, c[0] / a, c[1] / a, c[2] / a), s.scale(c, c, 1 / o), new n.Point(c[0], c[1]);
1195
+ return s.set(c, c[0] / a, c[1] / a, c[2] / a), s.scale(c, c, 1 / o), new I.Point(c[0], c[1]);
1196
1196
  }
1197
1197
  {
1198
1198
  const e = A.containerPointToCoordinate(t);
@@ -1202,7 +1202,7 @@ function P(A, t) {
1202
1202
  return Math.sqrt(Math.pow(C.x - o[0], 2) + Math.pow(C.y - o[1], 2)) / 5.272881136101205;
1203
1203
  }
1204
1204
 
1205
- function l(A, e) {
1205
+ function P(A, e) {
1206
1206
  if (!A) return e;
1207
1207
  const t = A.distanceToPointAtRes(e[0], e[1], A.getGLRes()), i = A.altitudeToPoint(e[2], A.getGLRes());
1208
1208
  return s.set([], f(t.x, e[0]), f(t.y, e[1]), f(i, e[2]));
@@ -1216,8 +1216,8 @@ class D {
1216
1216
  this.A = A;
1217
1217
  }
1218
1218
  t() {
1219
- const A = [], e = 340 / 177, t = Q("jiantou", [ 1.2 * e, 0, 0 ], [ 0, 0, 90 ], [ e, e, e ], [ 89 / 255, 206 / 255, 147 / 255, 0 ], 7), s = Q("jiantou", [ 0, 1.2 * e, 0 ], [ 0, 0, 180 ], [ e, e, e ], [ 89 / 255, 206 / 255, 147 / 255, 0 ], 8), i = Q("jiantou", [ -1.2 * e, 0, 0 ], [ 0, 0, 270 ], [ e, e, e ], [ 89 / 255, 206 / 255, 147 / 255, 0 ], 9), I = Q("jiantou", [ 0, -1.2 * e, 0 ], [ 0, 0, 0 ], [ e, e, e ], [ 89 / 255, 206 / 255, 147 / 255, 0 ], 10);
1220
- return A.push(t, s, i, I), A;
1219
+ const A = [], e = 340 / 177, t = Q("jiantou", [ 1.2 * e, 0, 0 ], [ 0, 0, 90 ], [ e, e, e ], [ 89 / 255, 206 / 255, 147 / 255, 0 ], 7), s = Q("jiantou", [ 0, 1.2 * e, 0 ], [ 0, 0, 180 ], [ e, e, e ], [ 89 / 255, 206 / 255, 147 / 255, 0 ], 8), i = Q("jiantou", [ -1.2 * e, 0, 0 ], [ 0, 0, 270 ], [ e, e, e ], [ 89 / 255, 206 / 255, 147 / 255, 0 ], 9), n = Q("jiantou", [ 0, -1.2 * e, 0 ], [ 0, 0, 0 ], [ e, e, e ], [ 89 / 255, 206 / 255, 147 / 255, 0 ], 10);
1220
+ return A.push(t, s, i, n), A;
1221
1221
  }
1222
1222
  getMeshes() {
1223
1223
  return this._meshes;
@@ -1288,7 +1288,7 @@ class B {
1288
1288
  }
1289
1289
  }
1290
1290
 
1291
- const y = [], p = [], v = [], L = [], M = [], E = [ 177 / 170, 177 / 170, 177 / 170 ], d = [ 1, 2, 3, 4, 12 ];
1291
+ const y = [], p = [], v = [], L = [], M = [], d = [ 177 / 170, 177 / 170, 177 / 170 ], E = [ 1, 2, 3, 4, 12 ];
1292
1292
 
1293
1293
  class O {
1294
1294
  constructor() {
@@ -1300,27 +1300,27 @@ class O {
1300
1300
  A.translate = this.translate.getMeshes(), A.rotation = this.rotation.getMeshes(),
1301
1301
  A.scaling = this.scaling.getMeshes(), A.planeHelper = this.planeHelper.getMeshes(),
1302
1302
  A.xyzScale = this.xyzScaleHelper.getMeshes();
1303
- const e = 340 / 177, t = Q("yuanhuan41", [ -2.745 * e, 2.745 * e, 0 ], [ 90, 0, 0 ], [ .5 * e, .5 * e, .5 * e ], [ 149 / 255, 179 / 255, 199 / 255, .6 ], 1), s = Q("yuanhuan41", [ 2.745 * e, 2.745 * e, 0 ], [ -90, 0, 180 ], [ .5 * e, .5 * e, .5 * e ], [ 50 / 255, 130 / 255, 184 / 255, .5 ], 2), i = Q("yuanhuan41", [ 2.745 * e, -2.745 * e, 0 ], [ 90, 0, 180 ], [ .5 * e, .5 * e, .5 * e ], [ 149 / 255, 179 / 255, 199 / 255, .6 ], 3), I = Q("yuanhuan41", [ -2.745 * e, -2.745 * e, 0 ], [ -90, 0, 0 ], [ .5 * e, .5 * e, .5 * e ], [ 50 / 255, 130 / 255, 184 / 255, .5 ], 4), n = Q("yuanpan", [ 0, 0, 0 ], [ 90, 0, 0 ], [ .5 * e, .5 * e, .5 * e ], [ 89 / 255, 206 / 255, 147 / 255, .5 ], 5), o = Q("zzhou", [ 0, 0, 6.5 ], [ 90, 0, 0 ], [ 1, 1, 1 ], [ 14 / 255, 127 / 255, 191 / 255, 1 ], 6);
1304
- return A.translate.push(t, s, i, I, n, o), A;
1303
+ const e = 340 / 177, t = Q("yuanhuan41", [ -2.745 * e, 2.745 * e, 0 ], [ 90, 0, 0 ], [ .5 * e, .5 * e, .5 * e ], [ 149 / 255, 179 / 255, 199 / 255, .6 ], 1), s = Q("yuanhuan41", [ 2.745 * e, 2.745 * e, 0 ], [ -90, 0, 180 ], [ .5 * e, .5 * e, .5 * e ], [ 50 / 255, 130 / 255, 184 / 255, .5 ], 2), i = Q("yuanhuan41", [ 2.745 * e, -2.745 * e, 0 ], [ 90, 0, 180 ], [ .5 * e, .5 * e, .5 * e ], [ 149 / 255, 179 / 255, 199 / 255, .6 ], 3), n = Q("yuanhuan41", [ -2.745 * e, -2.745 * e, 0 ], [ -90, 0, 0 ], [ .5 * e, .5 * e, .5 * e ], [ 50 / 255, 130 / 255, 184 / 255, .5 ], 4), I = Q("yuanpan", [ 0, 0, 0 ], [ 90, 0, 0 ], [ .5 * e, .5 * e, .5 * e ], [ 89 / 255, 206 / 255, 147 / 255, .5 ], 5), o = Q("zzhou", [ 0, 0, 6.5 ], [ 90, 0, 0 ], [ 1, 1, 1 ], [ 14 / 255, 127 / 255, 191 / 255, 1 ], 6);
1304
+ return A.translate.push(t, s, i, n, I, o), A;
1305
1305
  }
1306
- updateMatrix(t, i, I, n, o) {
1306
+ updateMatrix(t, i, n, I, o) {
1307
1307
  const g = i.getCoordinates(), r = t.coordinateToPointAtRes(g, t.getGLRes()), C = i.i();
1308
1308
  s.set(p, r.x, r.y, C);
1309
- const a = s.copy(y, o), h = l(t, i.getTranslation());
1309
+ const a = s.copy(y, o), h = P(t, i.getTranslation());
1310
1310
  s.add(p, p, h), s.add(p, p, a);
1311
1311
  for (const o in this._meshes) for (let g = 0; g < this._meshes[o].length; g++) {
1312
1312
  const r = this._meshes[o][g];
1313
1313
  for (let g = 0; g < r.length; g++) {
1314
1314
  const C = r[g], a = C.getUniform("uPickingId"), h = s.copy(y, C.translate), w = [ C.rotation[0], C.rotation[1], C.rotation[2] ], c = C.scaling;
1315
- if (11 === a && (this.s ? (w[2] += I, C.rotation[2] += I) : this.s || (w[2] += I,
1316
- C.rotation[2] += I, w[0] = 360, w[2] -= 90)), d.indexOf(a) > -1) if (12 !== a) c[0] += n,
1317
- c[1] += n, c[2] += n; else {
1315
+ if (11 === a && (this.s ? (w[2] += n, C.rotation[2] += n) : this.s || (w[2] += n,
1316
+ C.rotation[2] += n, w[0] = 360, w[2] -= 90)), E.indexOf(a) > -1) if (12 !== a) c[0] += I,
1317
+ c[1] += I, c[2] += I; else {
1318
1318
  const A = this._meshes.translate[4][0];
1319
1319
  c[0] = 1.2 * A.scaling[0], c[1] = 1.2 * A.scaling[0], c[2] = 1.2 * A.scaling[0];
1320
1320
  }
1321
- let Q = P(i, t);
1321
+ let Q = l(i, t);
1322
1322
  if (Q = s.set(v, Q, Q, Q), s.multiply(h, h, Q), s.multiply(Q, Q, c), 1 === a || 2 === a || 3 === a || 4 === a) {
1323
- const A = s.multiply(M, c, E);
1323
+ const A = s.multiply(M, c, d);
1324
1324
  s.multiply(h, h, A);
1325
1325
  }
1326
1326
  const f = A.fromEuler(L, w[0], w[1], w[2]);
@@ -1350,16 +1350,16 @@ class O {
1350
1350
  }
1351
1351
  }
1352
1352
 
1353
- const F = [];
1353
+ const F = [], x = [], U = [], V = new o(0, 0), S = [], k = [], T = [];
1354
1354
 
1355
- class x {
1355
+ class H {
1356
1356
  constructor() {
1357
1357
  this.o = [], this.g = [ 0, 0, 0 ], this.C = [ 1, 1, 1 ], this.h = [ 0, 0, 0 ];
1358
1358
  }
1359
- P(A) {
1359
+ l(A) {
1360
1360
  Array.isArray(A) ? A.forEach(A => {
1361
- this.P(A);
1362
- }) : (A.on("remove", this.l, this), A.D = {
1361
+ this.l(A);
1362
+ }) : (A.on("remove", this.P, this), A.D = {
1363
1363
  coordinate: A.getCoordinates(),
1364
1364
  translation: A.getTranslation(),
1365
1365
  rotation: A.getRotation(),
@@ -1368,41 +1368,63 @@ class x {
1368
1368
  }
1369
1369
  u() {
1370
1370
  this.o.forEach(A => {
1371
- A.off("remove", this.l, this);
1371
+ A.off("remove", this.P, this);
1372
1372
  }), this.o = [];
1373
1373
  }
1374
- m(A, e, t, i, I, n, g) {
1375
- for (let r = 0; r < this.o.length; r++) {
1376
- const C = this.o[r], a = C.getCoordinates(), h = n.coordinateToPointAtRes(a, n.getGLRes()), w = C.getRotation(), c = C.getScale(), Q = s.set([], h.x, h.y, a.z || 0), f = s.add(Q, Q, e), P = n.pointAtResToCoordinate(new o(f[0], f[1]), n.getGLRes());
1377
- P.z = f[2];
1378
- let l = null;
1379
- l = i >= 0 ? i : i * (this.options && this.options.scaleStrength || 1);
1380
- const D = s.add([], s.set(F, l, l * (c[1] / c[0]), l * (c[2] / c[0])), c);
1381
- if (Math.min(...D) < I) {
1382
- const A = Math.min(...D);
1383
- D[0] = D[0] * (I / A), D[1] = D[1] * (I / A), D[2] = D[2] * (I / A);
1384
- }
1385
- const u = s.add(w, t, w);
1386
- if (A.indexOf("translate") > -1) g.fire("positionchange", {
1387
- action: A,
1388
- type: "positionchange",
1389
- target: this,
1390
- coordinate: P
1391
- }), C.setCoordinates(P); else {
1392
- this.B(A, D, c);
1393
- const e = C.getTranslation();
1394
- C.setTRS(e, u, D), g.fire("transforming", {
1395
- action: this.p,
1396
- type: "transforming",
1397
- target: this,
1398
- translate: e,
1399
- rotation: u,
1400
- scale: D
1401
- });
1374
+ m(A, e, t, i, n, I, o) {
1375
+ for (let o = 0; o < this.o.length; o++) {
1376
+ const g = this.o[o], r = g.getCoordinates(), C = I.coordinateToPointAtRes(r, I.getGLRes(), V), a = g.getRotation(), h = g.getScale(), w = s.set(F, C.x, C.y, r.z || 0), c = s.add(w, w, e), Q = this.B(I, g, i, t, e);
1377
+ Q.z = c[2];
1378
+ let f = null;
1379
+ f = i >= 0 ? i : i * (this.options && this.options.scaleStrength || 1);
1380
+ const l = s.add(T, s.set(F, f, f * (h[1] / h[0]), f * (h[2] / h[0])), h);
1381
+ if (Math.min(...l) < n) {
1382
+ const A = Math.min(...l);
1383
+ l[0] = l[0] * (n / A), l[1] = l[1] * (n / A), l[2] = l[2] * (n / A);
1402
1384
  }
1385
+ const P = s.add(a, t, a);
1386
+ g.setCoordinates(Q), this.p(A, l, h);
1387
+ const D = g.getTranslation();
1388
+ g.setTRS(D, P, l);
1403
1389
  }
1390
+ s.set(T, i, i, i), s.add(this.h, t, this.h), s.add(this.C, T, this.C), s.add(this.g, e, this.g),
1391
+ A.indexOf("translate") > -1 ? o.fire("positionchange", {
1392
+ action: A,
1393
+ type: "positionchange",
1394
+ target: this.o,
1395
+ center: this.getCoordinates(),
1396
+ scale: this.C,
1397
+ rotation: this.h,
1398
+ translation: this.g,
1399
+ deltaTranslate: e,
1400
+ deltaRotation: t,
1401
+ deltaScale: i
1402
+ }) : o.fire("transforming", {
1403
+ action: A,
1404
+ type: "transforming",
1405
+ target: this.o,
1406
+ center: this.o[0].getTransformOrigin(),
1407
+ scale: this.C,
1408
+ rotation: this.h,
1409
+ translation: this.g,
1410
+ deltaTranslate: e,
1411
+ deltaRotation: t,
1412
+ deltaScale: i
1413
+ });
1404
1414
  }
1405
- B(A, e, t) {
1415
+ B(t, i, n, I, o) {
1416
+ const g = i.getCenter(), r = i.getTransformOrigin(), C = t.getGLRes(), a = t.coordinateToPointAtRes(g, C, V);
1417
+ s.set(S, a.x, a.y, a.z || 0);
1418
+ const h = t.coordinateToPointAtRes(r, C, V);
1419
+ s.set(k, h.x, h.y, h.z || 0);
1420
+ const w = s.sub(F, S, k), c = A.fromEuler(x, 0, 0, I[2]);
1421
+ s.set(T, n + 1, n + 1, n + 1);
1422
+ const Q = e.fromRotationTranslationScale(U, c, o, T);
1423
+ s.transformMat4(w, w, Q), s.add(w, w, k), V.set(w[0], w[1]);
1424
+ const f = t.pointAtResToCoordinate(V, C);
1425
+ return f.z = w[2] / t.altitudeToPoint(1, C), f;
1426
+ }
1427
+ p(A, e, t) {
1406
1428
  return "x-scale" === A && (e[1] = t[1], e[2] = t[2]), "y-scale" === A && (e[0] = t[0],
1407
1429
  e[2] = t[2]), "z-scale" === A && (e[0] = t[0], e[1] = t[1]), e;
1408
1430
  }
@@ -1434,9 +1456,12 @@ class x {
1434
1456
  const s = this.o[i].getCenter();
1435
1457
  A += s.x, e += s.y, t += s.z || 0;
1436
1458
  }
1437
- return A /= s, e /= s, t /= s, new o(A, e, t);
1459
+ A /= s, e /= s, t /= s;
1460
+ const i = new g(A, e, t);
1461
+ for (let A = 0; A < s; A++) this.o[A].setTransformOrigin(i);
1462
+ return i;
1438
1463
  }
1439
- l(A) {
1464
+ P(A) {
1440
1465
  const e = A.target, t = this.o.indexOf(e);
1441
1466
  t > -1 && (delete e.D, this.o.splice(t, 1));
1442
1467
  }
@@ -1457,12 +1482,12 @@ class x {
1457
1482
  }
1458
1483
  }
1459
1484
 
1460
- const U = [ 5, 6, 7, 8, 9, 10 ], V = [ 5, 7, 8, 9, 10 ], S = [ 2, 4, 11 ], k = [ 1, 3, 12 ], T = [ 12, 16 ], H = [ 1, 2, 3, 4 ], J = [ 1, 2, 3, 4, 12 ], N = [], R = [], _ = [], K = [], z = [], G = [], j = [];
1485
+ const J = [ 5, 6, 7, 8, 9, 10 ], N = [ 5, 7, 8, 9, 10 ], R = [ 2, 4, 11 ], _ = [ 1, 3, 12 ], K = [ 12, 16 ], z = [ 1, 2, 3, 4 ], G = [ 1, 2, 3, 4, 12 ], j = [], Z = [], Y = [], W = [], q = [], X = [], $ = [];
1461
1486
 
1462
- class Z extends(g(r(C))){
1487
+ class AA extends(r(C(a))){
1463
1488
  constructor(A = {}) {
1464
1489
  super(A), this.options = A, this.mouseAction = "moving", this.O = this.options.mode || "translate",
1465
- this.F = !0, this.TransformHelper = new O, this.U = new x, this.helperScene = new t.Scene([]),
1490
+ this.F = !0, this.TransformHelper = new O, this.U = new H, this.helperScene = new t.Scene([]),
1466
1491
  this.addToMapCount = 0;
1467
1492
  }
1468
1493
  enable() {
@@ -1482,7 +1507,7 @@ class Z extends(g(r(C))){
1482
1507
  return this.F;
1483
1508
  }
1484
1509
  V(A) {
1485
- U.indexOf(A) > -1 ? this.O = "translate" : S.indexOf(A) > -1 ? this.O = "rotation" : k.indexOf(A) > -1 ? this.O = "scaling" : "xyzScale" !== this.O && (this.O = "translate");
1510
+ J.indexOf(A) > -1 ? this.O = "translate" : R.indexOf(A) > -1 ? this.O = "rotation" : _.indexOf(A) > -1 ? this.O = "scaling" : "xyzScale" !== this.O && (this.O = "translate");
1486
1511
  }
1487
1512
  S() {
1488
1513
  return this.O;
@@ -1533,16 +1558,16 @@ class Z extends(g(r(C))){
1533
1558
  J() {
1534
1559
  "transform" === this.mouseAction && (this.firstDownPoint = null, this.X(), this.W = !0,
1535
1560
  this.fire("transformend", {
1536
- action: this.p,
1561
+ action: this.$,
1537
1562
  type: "transformend"
1538
1563
  })), this.mouseAction = "moving", "xyzScale" !== this.O && (this.O = "translate"),
1539
1564
  this.map.config("zoomable", !0), this.map.config("draggable", !0), this.layerRenderer && this.layerRenderer.setToRedraw();
1540
1565
  }
1541
1566
  N() {
1542
1567
  const A = this.TransformHelper.planeHelper.getMeshes()[0][0], e = this.map.getBearing();
1543
- A.rotation[2] = -e, this.$();
1568
+ A.rotation[2] = -e, this.AA();
1544
1569
  }
1545
- $() {
1570
+ AA() {
1546
1571
  this._() && (this.TransformHelper.updateMatrix(this.map, this.U, 0, 0, [ 0, 0, 0 ]),
1547
1572
  this.W = !0);
1548
1573
  }
@@ -1550,44 +1575,44 @@ class Z extends(g(r(C))){
1550
1575
  if (!this.layerRenderer) return !1;
1551
1576
  const e = this.K(), t = this.map;
1552
1577
  let s = A;
1553
- A instanceof a || (s = t.coordinateToContainerPoint(new o(A)));
1578
+ A instanceof o || (s = t.coordinateToContainerPoint(new g(A)));
1554
1579
  const i = this.G(s, e, "picked");
1555
1580
  return !(!i || null === i.meshId);
1556
1581
  }
1557
1582
  X() {
1558
1583
  const A = this.TransformHelper.getMeshes("scaling").scaling[0][0];
1559
- A.scaling = [ 340 / 177 * .6, 340 / 177 * .6, 340 / 177 * .6 ], this.layerRenderer && (this.AA(A),
1560
- this.eA());
1584
+ A.scaling = [ 340 / 177 * .6, 340 / 177 * .6, 340 / 177 * .6 ], this.layerRenderer && (this.eA(A),
1585
+ this.tA());
1561
1586
  }
1562
- eA() {
1587
+ tA() {
1563
1588
  this.TransformHelper._meshes.translate.forEach(A => {
1564
1589
  for (let e = 0; e < A.length; e++) {
1565
1590
  const t = A[e];
1566
- H.indexOf(t.getUniform("uPickingId")) > -1 && t.material.set("color", t.originColor);
1591
+ z.indexOf(t.getUniform("uPickingId")) > -1 && t.material.set("color", t.originColor);
1567
1592
  }
1568
1593
  });
1569
1594
  }
1570
- AA(t) {
1571
- const i = this.U.getCoordinates(), I = this.map.coordinateToPointAtRes(i, this.map.getGLRes()), n = [ I.x, I.y, 0 ], o = l(this.map, this.U.getTranslation());
1572
- s.add(n, n, o);
1595
+ eA(t) {
1596
+ const i = this.U.getCoordinates(), n = this.map.coordinateToPointAtRes(i, this.map.getGLRes()), I = [ n.x, n.y, 0 ], o = P(this.map, this.U.getTranslation());
1597
+ s.add(I, I, o);
1573
1598
  const g = s.copy([], t.translate), r = t.scaling;
1574
- let C = P(this.U, this.map);
1575
- C = s.set([], C, C, C), s.multiply(g, g, C), s.multiply(C, C, r), s.add(g, g, n),
1599
+ let C = l(this.U, this.map);
1600
+ C = s.set([], C, C, C), s.multiply(g, g, C), s.multiply(C, C, r), s.add(g, g, I),
1576
1601
  e.fromRotationTranslationScale(t.localTransform, [ 0, 0, 0, 1 ], g, C);
1577
1602
  this.K().forEach(t => {
1578
1603
  const i = t.getUniform("uPickingId");
1579
1604
  if (1 === i || 3 === i || 2 === i || 4 === i) {
1580
- const i = s.copy([], t.translate), I = 170 / 177;
1581
- t.scaling = [ I, I, I ];
1605
+ const i = s.copy([], t.translate), n = 170 / 177;
1606
+ t.scaling = [ n, n, n ];
1582
1607
  const o = t.scaling, g = t.rotation;
1583
- let r = P(this.U, this.map);
1584
- r = s.set([], r, r, r), s.multiply(i, i, r), s.multiply(r, r, o), s.add(i, i, n);
1608
+ let r = l(this.U, this.map);
1609
+ r = s.set([], r, r, r), s.multiply(i, i, r), s.multiply(r, r, o), s.add(i, i, I);
1585
1610
  const C = A.fromEuler([], g[0], g[1], g[2]);
1586
1611
  e.fromRotationTranslationScale(t.localTransform, C, i, r);
1587
1612
  }
1588
1613
  });
1589
1614
  }
1590
- tA(A) {
1615
+ sA(A) {
1591
1616
  const e = this.map.containerPointToCoordinate(A), t = this.map.coordinateToPointAtRes(e, this.map.getGLRes());
1592
1617
  return {
1593
1618
  point: [ t.x, t.y ]
@@ -1595,101 +1620,101 @@ class Z extends(g(r(C))){
1595
1620
  }
1596
1621
  Y(A) {
1597
1622
  if ("transform" === this.mouseAction) {
1598
- const A = this.S(), e = l(this.map, this.U.getTranslation()), t = this.U.i();
1599
- let s = null, I = null;
1600
- if (e[2] + t < .01 && "z-translate" !== this.p) s = this.tA(this.currentMousePosition),
1601
- I = this.tA(this.lastMousePosition); else {
1623
+ const A = this.S(), e = P(this.map, this.U.getTranslation()), t = this.U.i();
1624
+ let s = null, n = null;
1625
+ if (e[2] + t < .01 && "z-translate" !== this.$) s = this.sA(this.currentMousePosition),
1626
+ n = this.sA(this.lastMousePosition); else {
1602
1627
  const A = this.TransformHelper.planeHelper.getMeshes()[0];
1603
- if (s = this.G(this.currentMousePosition, A, "plane"), I = this.G(this.lastMousePosition, A, "plane"),
1604
- !s || null === s.meshId || !I || null === I.meshId) return;
1628
+ if (s = this.G(this.currentMousePosition, A, "plane"), n = this.G(this.lastMousePosition, A, "plane"),
1629
+ !s || null === s.meshId || !n || null === n.meshId) return;
1605
1630
  }
1606
- const n = [ 0, 0, 0 ], o = [ 0, 0, 0 ];
1607
- let g = 0, r = 0, C = 0;
1631
+ const I = [ 0, 0, 0 ], g = [ 0, 0, 0 ];
1632
+ let r = 0, C = 0, a = 0;
1608
1633
  if ("translate" === A) {
1609
- if ("xy-translate" === this.p) {
1610
- const A = s.point[0] - I.point[0], e = s.point[1] - I.point[1];
1611
- n[0] = A, n[1] = e;
1612
- } else if ("x-translate" === this.p) {
1613
- const A = s.point[0] - I.point[0];
1614
- n[0] = A;
1615
- } else if ("y-translate" === this.p) {
1616
- const A = s.point[1] - I.point[1];
1617
- n[1] = A;
1618
- } else if ("z-translate" === this.p) {
1634
+ if ("xy-translate" === this.$) {
1635
+ const A = s.point[0] - n.point[0], e = s.point[1] - n.point[1];
1636
+ I[0] = A, I[1] = e;
1637
+ } else if ("x-translate" === this.$) {
1638
+ const A = s.point[0] - n.point[0];
1639
+ I[0] = A;
1640
+ } else if ("y-translate" === this.$) {
1641
+ const A = s.point[1] - n.point[1];
1642
+ I[1] = A;
1643
+ } else if ("z-translate" === this.$) {
1619
1644
  let A = 0;
1620
- if (this.sA()) {
1621
- const e = this.map.getGLRes(), t = this.map._pointAtResToContainerPoint(new a(I.point[0], I.point[1]), e), n = this.map._pointAtResToContainerPoint(new a(s.point[0], s.point[1]), e), o = i.length(i.set(K, s.point[0] - I.point[0], s.point[1] - I.point[1]));
1622
- A = n.y < t.y ? o : -o;
1623
- } else A = s.point[2] - I.point[2];
1624
- n[2] = Math.sign(A) * this.map.pointAtResToAltitude(A, this.map.getGLRes());
1645
+ if (this.iA()) {
1646
+ const e = this.map.getGLRes(), t = this.map._pointAtResToContainerPoint(new o(n.point[0], n.point[1]), e), I = this.map._pointAtResToContainerPoint(new o(s.point[0], s.point[1]), e), g = i.length(i.set(W, s.point[0] - n.point[0], s.point[1] - n.point[1]));
1647
+ A = I.y < t.y ? g : -g;
1648
+ } else A = s.point[2] - n.point[2];
1649
+ I[2] = Math.sign(A) * this.map.pointAtResToAltitude(A, this.map.getGLRes());
1625
1650
  }
1626
- } else if ("rotation" === A) r = this.iA(s.point, I.point), r >= 0 ? this.TransformHelper.I(!0) : this.TransformHelper.I(!1),
1627
- o[2] += r; else if ("scaling" === A || "xyzScale" === A) {
1628
- const A = this.IA(), e = i.length(i.set(K, this.firstDownPoint.point[0] - A[0], this.firstDownPoint.point[1] - A[1])), t = i.length(i.set(K, I.point[0] - A[0], I.point[1] - A[1]));
1629
- g = this.nA(s.point, I.point, A, t), C = this.nA(s.point, I.point, A, e);
1651
+ } else if ("rotation" === A) C = this.nA(s.point, n.point), C >= 0 ? this.TransformHelper.I(!0) : this.TransformHelper.I(!1),
1652
+ g[2] += C; else if ("scaling" === A || "xyzScale" === A) {
1653
+ const A = this.IA(), e = i.length(i.set(W, this.firstDownPoint.point[0] - A[0], this.firstDownPoint.point[1] - A[1])), t = i.length(i.set(W, n.point[0] - A[0], n.point[1] - A[1]));
1654
+ r = this.oA(s.point, n.point, A, t), a = this.oA(s.point, n.point, A, e);
1630
1655
  }
1631
- this.TransformHelper.updateMatrix(this.map, this.U, r, C, n), this.U.m(this.p, n, o, g, .01, this.map, this);
1656
+ this.TransformHelper.updateMatrix(this.map, this.U, C, a, I), this.U.m(this.$, I, g, r, .01, this.map, this);
1632
1657
  }
1633
1658
  this.lastMousePosition = A, this.lastPickingObject = this.currentPickingObject;
1634
1659
  const e = this.K();
1635
1660
  this.lastPickingMesh = e[this.currentPickingObject.meshId];
1636
1661
  }
1637
- nA(A, e, t, s, I) {
1638
- const n = (i.length(i.set(K, A[0] - t[0], A[1] - t[1])) - i.length(i.set(K, e[0] - t[0], e[1] - t[1]))) / s;
1639
- return I ? (I[0] - .01) * n : n;
1662
+ oA(A, e, t, s, n) {
1663
+ const I = (i.length(i.set(W, A[0] - t[0], A[1] - t[1])) - i.length(i.set(W, e[0] - t[0], e[1] - t[1]))) / s;
1664
+ return n ? (n[0] - .01) * I : I;
1640
1665
  }
1641
1666
  IA() {
1642
- const A = this.map, e = this.U.getCoordinates(), t = A.coordinateToPointAtRes(e, A.getGLRes()), i = s.set(z, t.x, t.y, 0), I = l(A, this.U.getTranslation());
1643
- return s.add(i, i, I), i;
1667
+ const A = this.map, e = this.U.getCoordinates(), t = A.coordinateToPointAtRes(e, A.getGLRes()), i = s.set(q, t.x, t.y, 0), n = P(A, this.U.getTranslation());
1668
+ return s.add(i, i, n), i;
1644
1669
  }
1645
1670
  j(t) {
1646
- const i = this.TransformHelper.planeHelper.getMeshes()[0][0], I = e.getTranslation(_, i.localTransform), n = e.getScaling(R, i.localTransform);
1647
- let o = A.fromEuler(N, 0, 0, 0);
1671
+ const i = this.TransformHelper.planeHelper.getMeshes()[0][0], n = e.getTranslation(Y, i.localTransform), I = e.getScaling(Z, i.localTransform);
1672
+ let o = A.fromEuler(j, 0, 0, 0);
1648
1673
  const g = this.map.getBearing();
1649
- t && !this.sA() ? (o = A.fromEuler(N, 90, 0, -g), 0 === i.rotation[0] && (this.W = !0),
1674
+ t && !this.iA() ? (o = A.fromEuler(j, 90, 0, -g), 0 === i.rotation[0] && (this.W = !0),
1650
1675
  s.set(i.rotation, 90, 0, -g)) : (90 === i.rotation[0] && (this.W = !0), s.set(i.rotation, 0, 0, -g)),
1651
- e.fromRotationTranslationScale(i.localTransform, o, I, n);
1676
+ e.fromRotationTranslationScale(i.localTransform, o, n, I);
1652
1677
  }
1653
- sA() {
1678
+ iA() {
1654
1679
  if (this.map.getPitch()) return !1;
1655
1680
  const A = this.map.cameraPosition, e = this.map.coordinateToPointAtRes(this.map.getCenter(), this.map.getGLRes());
1656
1681
  s.set(e, e.x, e.y, 0);
1657
- const t = this.U.getCoordinates(), i = this.map.coordinateToPointAtRes(t, this.map.getGLRes()), I = l(this.map, this.U.getTranslation()), n = s.set(_, i.x, i.y, 0), o = s.add(n, n, I), g = s.subtract([], A, o), r = s.subtract([], A, e);
1682
+ const t = this.U.getCoordinates(), i = this.map.coordinateToPointAtRes(t, this.map.getGLRes()), n = P(this.map, this.U.getTranslation()), I = s.set(Y, i.x, i.y, 0), o = s.add(I, I, n), g = s.subtract([], A, o), r = s.subtract([], A, e);
1658
1683
  return s.angle(g, r) < 1 / 180 * Math.PI;
1659
1684
  }
1660
1685
  Z() {
1661
1686
  const A = this.K();
1662
1687
  if (this.currentPickingObject && null != this.currentPickingObject.meshId) {
1663
- this.oA(), this.lastPickingObject && null != this.lastPickingObject.meshId && this.lastPickingObject.meshId !== this.currentPickingObject.meshId && this.gA();
1688
+ this.gA(), this.lastPickingObject && null != this.lastPickingObject.meshId && this.lastPickingObject.meshId !== this.currentPickingObject.meshId && this.rA();
1664
1689
  const e = A[this.currentPickingObject.meshId];
1665
- if (e && T.indexOf(this.currentPickingObject.pickingId) < 0) {
1690
+ if (e && K.indexOf(this.currentPickingObject.pickingId) < 0) {
1666
1691
  const A = [ e.originColor[0], e.originColor[1], e.originColor[2], .8 ];
1667
- e.material.set("color", A), this.rA(e, .5);
1692
+ e.material.set("color", A), this.CA(e, .5);
1668
1693
  }
1669
1694
  this.layerRenderer.setToRedraw();
1670
1695
  } else this.lastPickingObject && null != this.lastPickingObject.meshId && (this.map.resetCursor(),
1671
- this.gA(), this.layerRenderer.setToRedraw());
1672
- }
1673
- oA() {
1674
- 6 === this.currentPickingObject.pickingId ? this.map.setCursor("ns-resize") : V.indexOf(this.currentPickingObject.pickingId) > -1 ? this.map.setCursor("move") : this.map.setCursor("pointer");
1696
+ this.rA(), this.layerRenderer.setToRedraw());
1675
1697
  }
1676
1698
  gA() {
1699
+ 6 === this.currentPickingObject.pickingId ? this.map.setCursor("ns-resize") : N.indexOf(this.currentPickingObject.pickingId) > -1 ? this.map.setCursor("move") : this.map.setCursor("pointer");
1700
+ }
1701
+ rA() {
1677
1702
  const A = this.lastPickingMesh;
1678
1703
  if (!A) return;
1679
1704
  const e = A.getUniform("uPickingId"), t = this.K();
1680
- V.indexOf(e) > -1 ? t.forEach(A => {
1681
- V.indexOf(A.getUniform("uPickingId")) > -1 && A.material.set("color", A.originColor);
1682
- }) : J.indexOf(e) > -1 ? t.forEach(A => {
1705
+ N.indexOf(e) > -1 ? t.forEach(A => {
1706
+ N.indexOf(A.getUniform("uPickingId")) > -1 && A.material.set("color", A.originColor);
1707
+ }) : G.indexOf(e) > -1 ? t.forEach(A => {
1683
1708
  const e = A.getUniform("uPickingId");
1684
- H.indexOf(e) > -1 && A.material.set("color", A.originColor);
1709
+ z.indexOf(e) > -1 && A.material.set("color", A.originColor);
1685
1710
  }) : 11 === e && t.forEach(A => {
1686
- H.indexOf(A.getUniform("uPickingId")) > -1 && A.material.set("color", A.originColor);
1711
+ z.indexOf(A.getUniform("uPickingId")) > -1 && A.material.set("color", A.originColor);
1687
1712
  }), A.material.set("color", A.originColor);
1688
1713
  }
1689
- rA(A, e) {
1714
+ CA(A, e) {
1690
1715
  const t = A.getUniform("uPickingId"), s = this.K();
1691
- V.indexOf(t) > -1 ? s.forEach(t => {
1692
- if (V.indexOf(t.getUniform("uPickingId")) > -1 && t.getUniform("uPickingId") !== A.getUniform("uPickingId")) {
1716
+ N.indexOf(t) > -1 ? s.forEach(t => {
1717
+ if (N.indexOf(t.getUniform("uPickingId")) > -1 && t.getUniform("uPickingId") !== A.getUniform("uPickingId")) {
1693
1718
  const A = [ t.originColor[0], t.originColor[1], t.originColor[2], e ];
1694
1719
  t.material.set("color", A);
1695
1720
  }
@@ -1710,34 +1735,34 @@ class Z extends(g(r(C))){
1710
1735
  reset() {
1711
1736
  this.map && this.U && (this.U.v(), this.TransformHelper.updateMatrix(this.map, this.U, 0, 0, [ 0, 0, 0 ]));
1712
1737
  }
1713
- iA(A, e) {
1714
- const t = this.IA(), s = i.set(G, e[0] - t[0], e[1] - t[1]), I = i.set(j, A[0] - t[0], A[1] - t[1]), n = Math.atan2(s[1], s[0]);
1715
- return (Math.atan2(I[1], I[0]) - n) / Math.PI * 180;
1738
+ nA(A, e) {
1739
+ const t = this.IA(), s = i.set(X, e[0] - t[0], e[1] - t[1]), n = i.set($, A[0] - t[0], A[1] - t[1]), I = Math.atan2(s[1], s[0]);
1740
+ return (Math.atan2(n[1], n[0]) - I) / Math.PI * 180;
1716
1741
  }
1717
1742
  q(A) {
1718
- return this.p = 113 === A || 114 === A ? "x-scale" : 115 === A || 116 === A ? "z-scale" : 117 === A || 118 === A ? "y-scale" : 119 === A ? "xyz-scale" : 5 === A ? "xy-translate" : 6 === A ? "z-translate" : 7 === A || 9 === A ? "x-translate" : 8 === A || 10 === A ? "y-translate" : 11 === A ? "z-rotate" : "scale",
1719
- this.p;
1743
+ return this.$ = 113 === A || 114 === A ? "x-scale" : 115 === A || 116 === A ? "z-scale" : 117 === A || 118 === A ? "y-scale" : 119 === A ? "xyz-scale" : 5 === A ? "xy-translate" : 6 === A ? "z-translate" : 7 === A || 9 === A ? "x-translate" : 8 === A || 10 === A ? "y-translate" : 11 === A ? "z-rotate" : "scale",
1744
+ this.$;
1720
1745
  }
1721
1746
  transform(A) {
1722
1747
  if (!A) return;
1723
1748
  if (this.layerRenderer && this.layerRenderer.layer && (this.layerRenderer.layer.off("renderend", this.render),
1724
- this.layerRenderer.layer.off("resizeCanvas", this.CA)), !this.map) return void console.error("should add to a target first");
1725
- if (this.U && (this.U.u(), this.U.P(A)), !this.U.getTargets().length) return;
1749
+ this.layerRenderer.layer.off("resizeCanvas", this.aA)), !this.map) return void console.error("should add to a target first");
1750
+ if (this.U && (this.U.u(), this.U.l(A)), !this.U.getTargets().length) return;
1726
1751
  const e = this.map;
1727
- this.TransformHelper.updateMatrix(e, this.U, 0, 0, [ 0, 0, 0 ]), this.aA(), this.W = !0;
1752
+ this.TransformHelper.updateMatrix(e, this.U, 0, 0, [ 0, 0, 0 ]), this.hA(), this.W = !0;
1728
1753
  }
1729
1754
  getTransformTarget() {
1730
1755
  return this.U;
1731
1756
  }
1732
- l() {
1757
+ P() {
1733
1758
  delete this.U;
1734
1759
  }
1735
- aA() {
1760
+ hA() {
1736
1761
  const A = this.U.L();
1737
- A && (A.off("renderend", this.render), A.off("resizeCanvas", this.CA));
1762
+ A && (A.off("renderend", this.render), A.off("resizeCanvas", this.aA));
1738
1763
  const e = this.map.getLayers();
1739
1764
  let t = null;
1740
- for (let A = 0; A < e.length; A++) if (e[A] instanceof I) {
1765
+ for (let A = 0; A < e.length; A++) if (e[A] instanceof n) {
1741
1766
  t = e[A];
1742
1767
  break;
1743
1768
  }
@@ -1745,25 +1770,25 @@ class Z extends(g(r(C))){
1745
1770
  const s = t.getLayers(), i = s.indexOf(A);
1746
1771
  if (i < 0) return;
1747
1772
  s.splice(i, 1), s.push(A);
1748
- const n = this.map, o = A.getRenderer();
1749
- this.layerRenderer = o, this.regl = o.regl, this.renderer = o.renderer, this.hA = this.layerRenderer.getFBORayPicking(),
1750
- this.wA = {
1751
- projViewMatrix: n.projViewMatrix
1752
- }, A.on("renderend", this.render, this), A.on("resizeCanvas", this.CA, this), o.setToRedraw();
1773
+ const I = this.map, o = A.getRenderer();
1774
+ this.layerRenderer = o, this.regl = o.regl, this.renderer = o.renderer, this.wA = this.layerRenderer.getFBORayPicking(),
1775
+ this.cA = {
1776
+ projViewMatrix: I.projViewMatrix
1777
+ }, A.on("renderend", this.render, this), A.on("resizeCanvas", this.aA, this), o.setToRedraw();
1753
1778
  }
1754
- CA() {
1755
- this.hA.clear(), this.W = !0;
1779
+ aA() {
1780
+ this.wA.clear(), this.W = !0;
1756
1781
  }
1757
1782
  G(A, e, t) {
1758
1783
  const s = this.map;
1759
- if (!(s && this.hA && this.layerRenderer && this.layerRenderer.canvas)) return null;
1760
- const i = s.getDevicePixelRatio(), I = A.x * i, n = A.y * i, o = {
1784
+ if (!(s && this.wA && this.layerRenderer && this.layerRenderer.canvas)) return null;
1785
+ const i = s.getDevicePixelRatio(), n = A.x * i, I = A.y * i, o = {
1761
1786
  projViewMatrix: this.map.projViewMatrix,
1762
1787
  pointSize: 1
1763
1788
  }, g = this.layerRenderer.canvas.gl && this.layerRenderer.canvas.gl.wrap;
1764
- (this.W || g || !this.cA || this.cA !== t) && (this.hA.render(e, o, !0), this.cA = t,
1789
+ (this.W || g || !this.QA || this.QA !== t) && (this.wA.render(e, o, !0), this.QA = t,
1765
1790
  this.W = !1);
1766
- return this.hA.pick(I, n, 10, o, {
1791
+ return this.wA.pick(n, I, 10, o, {
1767
1792
  viewMatrix: this.map.viewMatrix,
1768
1793
  projMatrix: this.map.projMatrix,
1769
1794
  returnPoint: !0
@@ -1776,7 +1801,7 @@ class Z extends(g(r(C))){
1776
1801
  width: () => this.map ? this.map.width * A : 1,
1777
1802
  height: () => this.map ? this.map.height * A : 1
1778
1803
  };
1779
- this.QA = new t.MeshShader({
1804
+ this.fA = new t.MeshShader({
1780
1805
  vert: "attribute vec3 aPosition;\n\nuniform mat4 projViewModelMatrix;\n\n\n\nvoid main()\n\n{\n\n gl_Position = projViewModelMatrix * vec4(aPosition, 1.0);\n\n\n\n}\n\n",
1781
1806
  frag: "precision mediump float;\n\nuniform vec4 color;\n\n\n\nvoid main() {\n\n gl_FragColor = color;\n\n}\n\n",
1782
1807
  uniforms: [ "color", {
@@ -1812,9 +1837,9 @@ class Z extends(g(r(C))){
1812
1837
  this.helperScene.setMeshes(A);
1813
1838
  const e = this.layerRenderer.getFrameContext();
1814
1839
  if (e && e.renderTarget && this.layerRenderer.getFrameTimestamp() !== e.timestamp) return;
1815
- this.$(), this.QA.filter = e && e.sceneFilter;
1840
+ this.AA(), this.fA.filter = e && e.sceneFilter;
1816
1841
  const t = e && e.renderTarget && e.renderTarget.fbo;
1817
- this.renderer.render(this.QA, this.wA, this.helperScene, t);
1842
+ this.renderer.render(this.fA, this.cA, this.helperScene, t);
1818
1843
  }
1819
1844
  K() {
1820
1845
  let A = [];
@@ -1834,10 +1859,10 @@ class Z extends(g(r(C))){
1834
1859
  }
1835
1860
  }
1836
1861
 
1837
- Z.mergeOptions({
1862
+ AA.mergeOptions({
1838
1863
  scaleStrength: 2
1839
1864
  });
1840
1865
 
1841
- export { Z as TransformControl };
1866
+ export { AA as TransformControl };
1842
1867
 
1843
- "undefined" != typeof console && console.log("@maptalks/transform-control v0.90.0");
1868
+ "undefined" != typeof console && console.log("@maptalks/transform-control v0.91.0");
@@ -1,12 +1,12 @@
1
1
  /*!
2
- * @maptalks/transform-control v0.90.0
2
+ * @maptalks/transform-control v0.91.0
3
3
  * LICENSE : UNLICENSED
4
4
  * (c) 2016-2023 maptalks.org
5
5
  */
6
- !function(A,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@maptalks/gl"),require("maptalks")):"function"==typeof define&&define.amd?define(["exports","@maptalks/gl","maptalks"],t):t((A="undefined"!=typeof globalThis?globalThis:A||self).maptalks=A.maptalks||{},A.maptalksgl,A.maptalks)}(this,(function(A,t,e){"use strict";function s(A){if(A&&A.A)return A;var t=Object.create(null);return A&&Object.keys(A).forEach((function(e){if("default"!==e){var s=Object.getOwnPropertyDescriptor(A,e);Object.defineProperty(t,e,s.get?s:{enumerable:!0,get:function(){return A[e]}})}})),t.default=A,Object.freeze(t)}var n=s(e);const i={yuanhuan:{accessors:[{name:"����С��_1_0_positions",componentType:5126,count:104,min:[-5.407599925994873,-5.404099941253662,0],max:[5.405200004577637,5.406300067901611,0],type:"VEC3",bufferView:0,byteOffset:0},{name:"����С��_1_0_normals",componentType:5126,count:104,min:[0,0,1],max:[0,0,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"����С��_1_0_indices",componentType:5123,count:288,min:[0],max:[103],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"缩放圈-新",byteLength:3072,uri:"data:application/octet-stream;base64,KVyjQLbzPT4AAAAAZvesQLbzPT4AAAAAhsmqQC7/YT8AAAAAZ0ShQDC7Vz8AAAAA+u2lwGKhxr8AAAAArK2cwLpJvL8AAAAAEFihwB04V78AAAAAXdyqwE7RYb8AAAAAat6lQEaUxj8AAAAAApqcQG+BvD8AAAAAB18EQFOWlcAAAAAA+u0LQLBynsAAAAAARPoxQNSalMAAAAAAJzEoQIxKjMAAAAAAQBNVQFyPiMAAAAAAIEFJQMDsgMAAAAAA0950QK36dMAAAAAAejZnQFRSZ8AAAAAAXdyAQBBYScAAAAAA+n6IQI0oVcAAAAAAcoqUQAMJMsAAAAAAKjqMQIlBKMAAAAAAXdyAQFdbSUAAAAAA+n6IQDsBVUAAAAAA0950QBTQdEAAAAAAejZnQA5PZ0AAAAAA+n6IwI0oVcAAAAAAwOyAwBBYScAAAAAAXkuMwIlBKMAAAAAA0ZGUwAMJMsAAAAAA5j+8P9ejnMAAAAAAkDFXP65HocAAAAAA1JrGPz7opcAAAAAA/7I7PvhTo8AAAAAA/7I7PmPurMAAAAAAM8RhP/vLqsAAAAAADwutwLbzPT4AAAAA0m+jwLbzPT4AAAAAEFihwDC7Vz8AAAAAXdyqwC7/YT8AAAAArK2cwG+BvD8AAAAA+u2lwEaUxj8AAAAADXGewN/gC0AAAAAAa5qVwIV8BEAAAAAAXkuMwAFNKEAAAAAA0ZGUwD7oMUAAAAAAlIeVQIV8BEAAAAAAlWWeQN/gC0AAAAAAcoqUQD7oMUAAAAAAKjqMQAFNKEAAAAAAQBNVQBB6iEAAAAAAIEFJQKfogEAAAAAAW9N0wK36dMAAAAAAsVBnwFRSZ8AAAAAAlWWeQM/3C8AAAAAAlIeVQNxoBMAAAAAA+n6IwDsBVUAAAAAAwOyAwFdbSUAAAAAAsVBnwA5PZ0AAAAAAW9N0wBTQdEAAAAAAd74LwLBynsAAAAAAkxi8v9ejnMAAAAAAwFsEwFOWlcAAAAAARpRWv65HocAAAAAAayvGvz7opcAAAAAA2c43vvhTo8AAAAAA2c43vmPurMAAAAAAt9Fgv/vLqsAAAAAAt9Fgv7fRqkAAAAAAayvGvybkpUAAAAAAd74LwAponkAAAAAA2c43vv5lo0AAAAAA2c43vmkArUAAAAAARpRWvzxOoUAAAAAAkxi8v9ejnEAAAAAAOdYxwHKKlEAAAAAAwFsEwDqSlUAAAAAA+zoowNBEjEAAAAAAJlNJwKfogEAAAAAAUPxUwBB6iEAAAAAAat6lQGKhxr8AAAAAApqcQLpJvL8AAAAAhsmqQE7RYb8AAAAAZ0ShQB04V78AAAAAZvesQP+yO74AAAAAKVyjQP+yO74AAAAAM8RhP7fRqkAAAAAA/7I7PmkArUAAAAAA/7I7Pv5lo0AAAAAA+u0LQAponkAAAAAA1JrGPybkpUAAAAAAkDFXPzxOoUAAAAAA5j+8P9ejnEAAAAAARPoxQHKKlEAAAAAAB18EQDqSlUAAAAAAJzEoQNBEjEAAAAAA+zoowIxKjMAAAAAAOdYxwNSalMAAAAAAUPxUwFyPiMAAAAAAJlNJwMDsgMAAAAAAa5qVwNxoBMAAAAAADXGewM/3C8AAAAAA0m+jwP+yO74AAAAADwutwP+yO74AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMABAAFAAYABAAGAAcAAwACAAgAAwAIAAkACgALAAwACgAMAA0ADQAMAA4ADQAOAA8ADwAOABAADwAQABEAEgATABQAEgAUABUAFgAXABgAFgAYABkAGgAbABwAGgAcAB0AHgALAAoAHwALAB4AHwAgAAsAIQAgAB8AIgAjACAAIgAgACEAJAAlACYAJAAmACcAJwAmACgAJwAoACkAKgArACwAKgAsAC0ALgAvADAALgAwADEAGQAYADIAGQAyADMANAA1ABsANAAbABoAFQAUADYAFQA2ADcAOAA5ADoAOAA6ADsAPAA9AD4APAA/AD0AQAA/ADwAQABBAD8AQgBBAEAAQgBAAEMARABFAEYARABGAEcARABHAEgARgBJAEcARgBKAEkASwBKAEYASwBMAEoASwBNAEwACQAIAC8ACQAvAC4ALQAsADkALQA5ADgAOwA6AE4AOwBOAE8ATwBOAE0ATwBNAEsAKQAoACsAKQArACoANwA2AFAANwBQAFEAUQBQAFIAUQBSAFMAUwBSAFQAUwBUAFUAVgBXAFgAVgBYAFkAVgBZAFoAWwBZAFgAXABZAFsAXABdAFkAXgBdAFwAXwBdAF4APAA+AGAAPABgAGEAMQAwABcAMQAXABYAYgBjADUAYgA1ADQAYQBgAGMAYQBjAGIAMwAyAF0AMwBdAF8AHQAcAGQAHQBkAGUAZQBkAAUAZQAFAAQAZgBnAAcAZgAHAAYAEQAQABMAEQATABIA"}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:1248,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:1248,byteOffset:1248,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:576,byteOffset:2496,target:34963}],materials:[{name:"SVGMat_001",pbrMetallicRoughness:{baseColorFactor:[.5,.5,.5,1],metallicFactor:0,roughnessFactor:1},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"����С��_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"����С��",mesh:0}],scene:0,scenes:[{nodes:[0]}]},yuanhuan41:{accessors:[{name:"Բ��_1_0_positions",componentType:5126,count:39,min:[0,0,0],max:[5.489999771118164,0,5.488900184631348],type:"VEC3",bufferView:0,byteOffset:0},{name:"Բ��_1_0_normals",componentType:5126,count:39,min:[0,-.999939501285553,-1],max:[.13969914615154266,1,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"Բ��_1_0_indices",componentType:5123,count:105,min:[0],max:[38],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"yh41",byteLength:1148,uri:"data:application/octet-stream;base64,8tKXQAAAAACoNU09FK6vQAAAAAB1Ako/FK6vQAAAAAAAAACATfOAQAAAAAACmkg+K4dWQAAAAAAIrNw+WvUtQAAAAABbsT8/X5gIQAAAAACMSpI/OUWbQAAAAAD0/VQ/LbKHQAAAAAD0/XQ/W0JqQAAAAAC6SZQ/dLXNPwAAAACfq80/H4VHQAAAAAB0JLc/ZognQAAAAAA1XuI/YVSSPwAAAAAukAhABaMKQAAAAAB4nApABcU/PwAAAACF6y1Aw2TiPwAAAACRfidASS63PwAAAABKe0dAJLncPgAAAACze1ZAj1OUPwAAAADjNmpAAppIPgAAAADu64BAnRF1PwAAAAD8qYdAqDVNPQAAAADBypdAgQRVPwAAAAAIPZtAAAAAAAAAAAASpa9AAwlKPwAAAAASpa9AJJd/PAAAAAASpa9AAwlKPwAAAAASpa9AAAAAAAAAAAASpa9Asp1vPQAAAAASpa9AJLn8PQAAAAASpa9AqoJRPgAAAAASpa9ARwOYPgAAAAASpa9AHhbKPgAAAAASpa9A2hv8PgAAAAASpa9A5q4VPwAAAAASpa9A+n4qPwAAAAASpa9AQxw7PwAAAAASpa9AwhdGPwAAAAASpa9AAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAJ5X/OwL+fz8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/Kzs0PAn8f78AAACApLK/PA7uf78AAACAeJkZPefRfz8AAACA+ZldPQSgf78AAACA6XSTPelVfz8AAACALLO3PdT3fr8AAACAfkjZPR2Ofr8AAACANf32Paohfj8AAACAeUYHPqDBfT8AAACASw0PPlt9fb8AAACAAAABAAIAAwABAAAABAABAAMABQABAAQABgAHAAUABwABAAUABgAIAAcABgAJAAgACgAJAAYACgALAAkACgAMAAsADQAMAAoADQAOAAwADwAOAA0ADwAQAA4ADwARABAAEgARAA8AEgATABEAFAATABIAFAAVABMAFgAVABQAFgAXABUAGAAXABYAGAAZABcAGgAbABwAHQAbABoAHgAbAB0AHwAbAB4AIAAbAB8AIQAbACAAIgAbACEAIwAbACIAJAAbACMAJQAbACQAJgAbACUAAAA="}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:468,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:468,byteOffset:468,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:212,byteOffset:936,target:34963}],materials:[{name:"SVGMat_002",pbrMetallicRoughness:{baseColorFactor:[.588,.588,.588,1],metallicFactor:0,roughnessFactor:.99},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"Բ��_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"Բ��",mesh:0}],scene:0,scenes:[{nodes:[0]}]},yuanhuan411:{accessors:[{name:"����СȦ_1_0_positions",componentType:5126,count:28,min:[.026000000536441803,-4.6834001541137695,0],max:[4.696700096130371,-.014800000004470348,0],type:"VEC3",bufferView:0,byteOffset:0},{name:"����СȦ_1_0_normals",componentType:5126,count:28,min:[0,0,1],max:[0,0,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"����СȦ_1_0_indices",componentType:5123,count:78,min:[0],max:[27],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"yuanhuan411",byteLength:828,uri:"data:application/octet-stream;base64,ufwXQLN7Mr8AAAAAObRAQLFQK78AAAAA1ediQMWP8b4AAAAAGQQ6QCv2174AAAAAqFdeQHUCWr4AAAAA7FGCQL6fmr0AAAAAHHyDQDLmrr4AAAAAXkuWQJf/kL4AAAAAXkuWQLN7crwAAAAAMCrxP2RdhL8AAAAA/BgDQJeQn78AAAAADeARQAg9i78AAAAAukkIQISeXb8AAAAAZaogQH/Zbb8AAAAA7Q3ePr4wOcAAAAAA5IMuP9/gP8AAAAAAJQZxPwrXH8AAAAAAPZs1P6UsF8AAAAAAdy2hP0VHAsAAAAAAb/CFP5eQ778AAAAA0ES4P32utr8AAAAAAprQPyL9zr8AAAAAi/1lPqqCXcAAAAAA9dv3PtcSYsAAAAAADi2yPZvmgcAAAAAAYTK1PssQg8AAAAAA9P3UPGrelcAAAAAA4liXPmrelcAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMAAwACAAQABQAGAAcABQAHAAgABAACAAYABAAGAAUACQAKAAsACQALAAwAAAANAAEADgAPABAADgAQABEAEQAQABIAEQASABMAFAAVAAoAFAAKAAkADAALAA0ADAANAAAAFgAXAA8AFgAPAA4AGAAZABcAGAAXABYAGgAZABgAGgAbABkAEwASABUAEwAVABQA"}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:336,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:336,byteOffset:336,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:156,byteOffset:672,target:34963}],materials:[{name:"SVGMat",pbrMetallicRoughness:{baseColorFactor:[.588,.588,.588,1],metallicFactor:0,roughnessFactor:.99},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"����СȦ_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"����СȦ",mesh:0}],scene:0,scenes:[{nodes:[0]}]},yuanpan:{accessors:[{name:"Circle001_1_0_positions",componentType:5126,count:28,min:[-1.9510999917984009,0,-1.9510999917984009],max:[1.9510999917984009,0,1.9510999917984009],type:"VEC3",bufferView:0,byteOffset:0},{name:"Circle001_1_0_normals",componentType:5126,count:28,min:[0,1,0],max:[0,1,0],type:"VEC3",bufferView:1,byteOffset:0},{name:"Circle001_1_0_indices",componentType:5123,count:78,min:[0],max:[27],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"yuanpan",byteLength:828,uri:"data:application/octet-stream;base64,S+rkvgAAAADRIvM/AAAAAAAAAAClvfk/S+rkPgAAAADRIvM/0SLzvwAAAABL6uQ+MlXgvwAAAACsi1s/c9fCvwAAAACvJZw/pb35vwAAAAAAAAAA0SLzvwAAAABL6uS+MlXgvwAAAACsi1u/c9fCvwAAAACvJZy/ryWcvwAAAABz18K/rItbvwAAAAAyVeC/S+rkvgAAAADRIvO/AAAAgAAAAAClvfm/S+rkPgAAAADRIvO/rItbPwAAAAAyVeC/ryWcPwAAAABz18K/c9fCPwAAAACvJZy/MlXgPwAAAACsi1u/0SLzPwAAAABL6uS+pb35PwAAAAAAAACA0SLzPwAAAABL6uQ+MlXgPwAAAACsi1s/c9fCPwAAAACvJZw/ryWcvwAAAABz18I/ryWcPwAAAABz18I/rItbvwAAAAAyVeA/rItbPwAAAAAyVeA/AAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAABAAIAAwAEAAUABgADAAUABwAGAAUACAAHAAUACQAIAAUACgAJAAUACwAKAAUADAALAAUADQAMAAUADgANAAUADwAOAAUAEAAPAAUAEQAQAAUAEgARAAUAEwASAAUAFAATAAUAFQAUAAUAFgAVAAUAFwAWAAUAFwAFABgAGQAXABgAGQAYABoAGwAZABoAAgAbABoAAAACABoA"}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:336,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:336,byteOffset:336,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:156,byteOffset:672,target:34963}],materials:[{name:"wire_008110135",pbrMetallicRoughness:{baseColorFactor:[.0314,.4314,.5294,1],metallicFactor:0,roughnessFactor:.968},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"Circle001_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"Circle001",mesh:0}],scene:0,scenes:[{nodes:[0]}]},zzhou:{accessors:[{name:"Cube.001-Mesh_0_positions",componentType:5126,count:45,min:[-.2711470127105713,-5.473427772521973,-.2711470127105713],max:[.2711470127105713,.46298399567604065,.2711470127105713],type:"VEC3",bufferView:0,byteOffset:0},{name:"Cube.001-Mesh_0_normals",componentType:5126,count:45,min:[-1,-1,-1],max:[1,1,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"Cube.001-Mesh_0_texcoords",componentType:5126,count:45,min:[.125,0],max:[.875,1],type:"VEC2",bufferView:2,byteOffset:0},{name:"Cube.001-Mesh_0_indices",componentType:5123,count:72,min:[0],max:[44],type:"SCALAR",bufferView:3,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"Z",byteLength:1584,uri:"data:application/octet-stream;base64,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"}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:540,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:540,byteOffset:540,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:360,byteOffset:1080,byteStride:8,target:34962},{name:"bufferView_3",buffer:0,byteLength:144,byteOffset:1440,target:34963}],materials:[{name:"Material.001",pbrMetallicRoughness:{baseColorFactor:[.8,.8,.8,1],metallicFactor:0,roughnessFactor:.676000006},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"Cube.001-Mesh",primitives:[{attributes:{POSITION:0,NORMAL:1,TEXCOORD_0:2},indices:3,material:0,mode:4}]}],nodes:[{name:"Cube.001",mesh:0}],scene:0,scenes:[{nodes:[0]}]},jiantou:{accessors:[{name:"��ͷ_1_0_positions",componentType:5126,count:7,min:[-.47690001130104065,-.8044000267982483,0],max:[.47780001163482666,0,0],type:"VEC3",bufferView:0,byteOffset:0},{name:"��ͷ_1_0_normals",componentType:5126,count:7,min:[0,0,1],max:[0,0,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"��ͷ_1_0_indices",componentType:5123,count:15,min:[0],max:[6],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"jiantou",byteLength:200,uri:"data:application/octet-stream;base64,bxIDOintTb8AAAAAH/RsvsKGp74AAAAAPSz0vsKGp74AAAAANs17PsKGp74AAAAANKL0PsKGp74AAAAANs17PgAAAAAAAAAAH/RsvgAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAADAAEAAAAEAAMAAQAFAAYAAQADAAUAAAA="}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:84,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:84,byteOffset:84,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:32,byteOffset:168,target:34963}],materials:[{name:"SVGMat_003",pbrMetallicRoughness:{baseColorFactor:[.588,.588,.588,1],metallicFactor:0,roughnessFactor:.99},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"��ͷ_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"��ͷ",mesh:0}],scene:0,scenes:[{nodes:[0]}]},xuanzhuan:{accessors:[{name:"��ת001_1_0_positions",componentType:5126,count:369,min:[-6.572299957275391,-7.298999786376953,0],max:[6.5742998123168945,7.298299789428711,0],type:"VEC3",bufferView:0,byteOffset:0},{name:"��ת001_1_0_normals",componentType:5126,count:369,min:[0,-1,0],max:[0,0,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"��ת001_1_0_indices",componentType:5123,count:1089,min:[0],max:[368],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"旋转-新",byteLength:11036,uri:"data:application/octet-stream;base64,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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAwABAAAAAwAEAAEAAwAFAAQAAwAGAAUAAwAHAAYAAwAIAAcAAwAJAAgAAwAKAAkAAwALAAoAAwAMAAsADQAMAAMADQAOAAwADQAPAA4ADQAQAA8ADQARABAADQASABEADQATABIADQAUABMADQAVABQADQAWABUADQAXABYADQAYABcADQAZABgADQAaABkADQAbABoAHAAbAA0AHAAdABsAHAAeAB0AHAAfAB4AHAAgAB8AHAAhACAAHAAiACEAHAAjACIAHAAkACMAHAAlACQAHAAmACUAHAAnACYAHAAoACcAHAApACgAHAAqACkAHAArACoAHAAsACsAHAAtACwAHAAuAC0AHAAvAC4AHAAwAC8AHAAxADAAHAAyADEAHAAzADIAHAA0ADMAHAA1ADQAHAA2ADUAHAA3ADYAHAA4ADcAHAA5ADgAHAA6ADkAHAA7ADoAHAA8ADsAHAA9ADwAHAA+AD0AHAA/AD4AHABAAD8AQABBAD8AQQBCAD8AQgBDAD8AHABAAEQAHABEAEUAHABGAEUARgBHAEUARgBIAEcARgBJAEgARgBKAEkARgBLAEoARgBMAEsAHABNAEYAHABOAE0AHABPAE4AHABQAE8AHABRAFAAHABSAFEAUgBTAFEAUgBUAFMAUgBVAFQAUgBWAFUAUgBXAFYAUgBYAFcAHABZAFIAHABaAFkAHABbAFoAHABcAFsAHABdAFwAHABeAF0AHABfAF4AHABgAF8AHABhAGAAHABiAGEAHABjAGIAHABjAGQAZABlAGMAZQBmAGMAHABnAGQAaABpAGoAawBpAGgAbABpAGsAbQBpAGwAbgBpAG0AbwBpAG4AcABpAG8AcQBpAHAAcgBpAHEAcwBpAHIAdABnABwAdAB1AGcAdAB2AHUAdwB4AHkAdwB5AHoAegB5AHsAegB7AHwAfAB7AH0AfAB9AH4AfgB9AH8AfgB/AIAAgQCCAIMAgQCDAIQAhACDAIUAhACFAIYAhgCFAIcAhgCHAIgAiACHAIkAiACJAIoAiwCMAI0AiwCNAI4AjwCKAJAAigCJAJAAkQCSAJMAkQCTAJQAlACTAJUAlACVAJYAlgCVAJcAlgCXAJgAgAB/AIIAgACCAIEAmACXAJkAmACZAJoAmgCZAJsAmgCbAJwAnACbAJ0AnACdAJ4AngCdAHYAngB2AHQAnwB4AHcAoAB4AJ8AoAChAHgAogChAKAAowCkAKUAowCmAKQAowCnAKYAowCoAKcAowCpAKgAowCqAKkAowCrAKoAowCsAKsAowCtAKwAowCuAK0AowCvAK4AowCiAK8AowChAKIAsAChAKMAsQChALAAsgChALEAswChALIAtAChALMAtQChALQAtgChALUAtwChALYAuAChALcAuQChALgAugChALkAuwChALoAvAChALsAvQChALwAvgChAL0AvwChAL4AwAChAL8AwQChAMAAwgChAMEAwwChAMIAxAChAMMAxQChAMQAxgChAMUAxwChAMYAyAChAMcAyQChAMgAygChAMkAywChAMoAzAChAMsAzQChAMwAzgChAM0AzwChAM4A0AChAM8A0QChANAA0gChANEA0wChANIA1AChANMA1QChANQA1gChANUA1wChANYA2AChANcA2QChANgA2gChANkA2wChANoA3AChANsA3QChANwA3gChAN0A3wChAN4A4AChAN8A4QChAOAA4gChAOEA4wChAOIA5AChAOMA5QChAOQA5gChAOUA5wChAOYA6AChAOcA6QChAOgA6gChAOkA6wChAOoA7AChAOsA7QChAOwA7gChAO0A7wChAO4A8AChAO8A8QChAO8A8gChAPEA8wChAPIA9AChAPMA9QChAPQA9gChAPUA9gD3AKEA+AD3APYA+QD3APgA+gD3APkA+wD3APoA/AD3APsA/QD3APwA/gD3AP0A/wD3AP4AAAH3AP8AAQH3AAABAgH3AAEBAwH3AAIBBAH3AAMBBQH3AAQBBgH3AAUBBgEHAfcACAEHAQYBCQEHAQgBCgEHAQkBCwEHAQoBDAEHAQsBDQEHAQwBDgEHAQ0BDwEHAQ4BEAEHAQ8BEQESARMBFAESAREBFAEVARIBFgEVARQBFgEXARUBGAEXARYBGAEZARcBGgEbARgBGwEcARgBHAEZARgBHAEdARkBHQEeARkBHwEeAR0BGgEgARsBIQEeAR8BGgEiASABIwEiARoBIQEkAR4BJQEkASEBIwEmASIBJwEkASUBIwEoASYBKQEoASMBJwEqASQBKwEqAScBKQEsASgBLQEsASkBKwEuASoBLwEuASsBLQEwASwBMQEuAS8BLQEyATABjgCNADMBjgAzATQBNQE2ATcBNQE3ATgBOAE3ATkBOAE5AToBOwE8AT0BOwE9AT4BPwFAAUEBPwFBAUIBPgE9AUMBPgFDAUQBRQFGAUABRQFAAT8BRwFIAZIARwGSAJEASQFKAUYBSQFGAUUBRAFDAUsBRAFLAUwBOgE5AUoBOgFKAUkBTAFLAU0BTAFNAU4BTgFNAU8BTgFPAVABQgFBAVEBQgFRAVIBUgFRAS4BUgEuATEBNAEzATwBNAE8ATsBUwFUATYBUwE2ATUBUAFPATIBUAEyAS0BiwBVAYwAVgFUAVMBiwBXAVUBWAFUAVYBWAFZAVQBWgFXAYsAWgFbAVcBXAFZAVgBXAFdAVkBXgFbAVoBXgFfAVsBYAFdAVwBXgFhAV8BYgFdAWABYgFjAV0BZAFhAV4BZAFlAWEBZgFjAWIBZAFnAWUBZwFjAWYBZAFjAWcBZAFoAWMBaQFoAWQBaQFqAWgBawFqAWkBawFsAWoBbQFsAWsBbQFuAWwBbwFwAUgBbwFIAUcBAAA="}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:4428,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:4428,byteOffset:4428,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:2180,byteOffset:8856,target:34963}],materials:[{name:"SVGMat",pbrMetallicRoughness:{baseColorFactor:[.5,.5,.5,1],metallicFactor:0,roughnessFactor:1},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"��ת001_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"��ת001",mesh:0}],scene:0,scenes:[{nodes:[0]}]},plane:{accessors:[{name:"Rectangle001_1_0_positions",componentType:5126,count:4,min:[-5,-5,0],max:[5,5,0],type:"VEC3",bufferView:0,byteOffset:0},{name:"Rectangle001_1_0_normals",componentType:5126,count:4,min:[0,0,1],max:[0,0,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"Rectangle001_1_0_indices",componentType:5123,count:6,min:[0],max:[3],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"plane",byteLength:108,uri:"data:application/octet-stream;base64,AACgQAAAoEAAAAAAAACgwAAAoEAAAAAAAACgwAAAoMAAAAAAAACgQAAAoMAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAgADAAAA"}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:48,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:48,byteOffset:48,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:12,byteOffset:96,target:34963}],materials:[{name:"wire_225198087",pbrMetallicRoughness:{baseColorFactor:[.8824,.7765,.3412,1],metallicFactor:0,roughnessFactor:.968},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"Rectangle001_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"Rectangle001",mesh:0}],scene:0,scenes:[{nodes:[0]}]},xyzScale:{asset:{generator:"Khronos glTF Blender I/O v1.6.16",version:"2.0"},scene:0,scenes:[{name:"Scene",nodes:[0,1,2,3,4,5,6]}],nodes:[{mesh:0,name:"Cube",scale:[.7008190751075745,.014999999664723873,.014999999664723873]},{mesh:1,name:"Cube.001",scale:[.10000000149011612,.10000000149011612,.10000000149011612]},{mesh:2,name:"Cube.004",rotation:[0,-.7071068286895752,0,.7071068286895752],scale:[.7008190751075745,.014999999664723873,.014999999664723873]},{mesh:3,name:"Cube.003",rotation:[0,-.7071068286895752,0,.7071068286895752],scale:[.10000000149011612,.10000000149011612,.10000000149011612]},{mesh:4,name:"Cube.006",rotation:[0,0,.7071068286895752,.7071068286895752],scale:[.7008190751075745,.014999999664723873,.014999999664723873]},{mesh:5,name:"Cube.005",rotation:[0,0,.7071068286895752,.7071068286895752],scale:[.10000000149011612,.10000000149011612,.10000000149011612]},{mesh:6,name:"Cube.002",scale:[.10000000149011612,.10000000149011612,.10000000149011612]}],materials:[{doubleSided:!0,name:"Material",pbrMetallicRoughness:{baseColorFactor:[.6938720345497131,.020288480445742607,.011612260714173317,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.001",pbrMetallicRoughness:{baseColorFactor:[.6938720345497131,.020288480445742607,.011612260714173317,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.002",pbrMetallicRoughness:{baseColorFactor:[.226582869887352,.226582869887352,.226582869887352,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.006",pbrMetallicRoughness:{baseColorFactor:[.11193240433931351,.5583405494689941,.033104799687862396,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.005",pbrMetallicRoughness:{baseColorFactor:[.11193240433931351,.5583405494689941,.033104799687862396,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.010",pbrMetallicRoughness:{baseColorFactor:[.004391402006149292,.21223078668117523,.5209956169128418,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.009",pbrMetallicRoughness:{baseColorFactor:[.004391402006149292,.21223078668117523,.5209956169128418,1],metallicFactor:0,roughnessFactor:.4000000059604645}}],meshes:[{name:"Cube",primitives:[{attributes:{POSITION:0,NORMAL:1,TEXCOORD_0:2},indices:3,material:0}]},{name:"Cube.001",primitives:[{attributes:{POSITION:4,NORMAL:5,TEXCOORD_0:6},indices:3,material:1}]},{name:"Cube.006",primitives:[{attributes:{POSITION:10,NORMAL:11,TEXCOORD_0:12},indices:3,material:3}]},{name:"Cube.005",primitives:[{attributes:{POSITION:13,NORMAL:14,TEXCOORD_0:15},indices:3,material:4}]},{name:"Cube.010",primitives:[{attributes:{POSITION:16,NORMAL:17,TEXCOORD_0:18},indices:3,material:5}]},{name:"Cube.009",primitives:[{attributes:{POSITION:19,NORMAL:20,TEXCOORD_0:21},indices:3,material:6}]},{name:"Cube.002",primitives:[{attributes:{POSITION:7,NORMAL:8,TEXCOORD_0:9},indices:3,material:2}]}],accessors:[{bufferView:0,componentType:5126,count:24,max:[2.0003609657287598,1,1],min:[.0003610849380493164,-1,-1],type:"VEC3"},{bufferView:1,componentType:5126,count:24,type:"VEC3"},{bufferView:2,componentType:5126,count:24,type:"VEC2"},{bufferView:3,componentType:5123,count:36,type:"SCALAR"},{bufferView:4,componentType:5126,count:24,max:[14.549108505249023,1,1],min:[12.549108505249023,-1,-1],type:"VEC3"},{bufferView:5,componentType:5126,count:24,type:"VEC3"},{bufferView:6,componentType:5126,count:24,type:"VEC2"},{bufferView:7,componentType:5126,count:24,max:[1,1,1],min:[-1,-1,-1],type:"VEC3"},{bufferView:8,componentType:5126,count:24,type:"VEC3"},{bufferView:9,componentType:5126,count:24,type:"VEC2"},{bufferView:10,componentType:5126,count:24,max:[2.0003609657287598,1,1],min:[.0003610849380493164,-1,-1],type:"VEC3"},{bufferView:11,componentType:5126,count:24,type:"VEC3"},{bufferView:12,componentType:5126,count:24,type:"VEC2"},{bufferView:13,componentType:5126,count:24,max:[14.549108505249023,1,1],min:[12.549108505249023,-1,-1],type:"VEC3"},{bufferView:14,componentType:5126,count:24,type:"VEC3"},{bufferView:15,componentType:5126,count:24,type:"VEC2"},{bufferView:16,componentType:5126,count:24,max:[2.0003609657287598,1,1],min:[.0003610849380493164,-1,-1],type:"VEC3"},{bufferView:17,componentType:5126,count:24,type:"VEC3"},{bufferView:18,componentType:5126,count:24,type:"VEC2"},{bufferView:19,componentType:5126,count:24,max:[14.549108505249023,1,1],min:[12.549108505249023,-1,-1],type:"VEC3"},{bufferView:20,componentType:5126,count:24,type:"VEC3"},{bufferView:21,componentType:5126,count:24,type:"VEC2"}],bufferViews:[{buffer:0,byteLength:288,byteOffset:0},{buffer:0,byteLength:288,byteOffset:288},{buffer:0,byteLength:192,byteOffset:576},{buffer:0,byteLength:72,byteOffset:768},{buffer:0,byteLength:288,byteOffset:840},{buffer:0,byteLength:288,byteOffset:1128},{buffer:0,byteLength:192,byteOffset:1416},{buffer:0,byteLength:288,byteOffset:1608},{buffer:0,byteLength:288,byteOffset:1896},{buffer:0,byteLength:192,byteOffset:2184},{buffer:0,byteLength:288,byteOffset:2376},{buffer:0,byteLength:288,byteOffset:2664},{buffer:0,byteLength:192,byteOffset:2952},{buffer:0,byteLength:288,byteOffset:3144},{buffer:0,byteLength:288,byteOffset:3432},{buffer:0,byteLength:192,byteOffset:3720},{buffer:0,byteLength:288,byteOffset:3912},{buffer:0,byteLength:288,byteOffset:4200},{buffer:0,byteLength:192,byteOffset:4488},{buffer:0,byteLength:288,byteOffset:4680},{buffer:0,byteLength:288,byteOffset:4968},{buffer:0,byteLength:192,byteOffset:5256}],buffers:[{byteLength:5448,uri:"data:application/octet-stream;base64,6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAQAOABQAAQAUAAcACgAGABMACgATABcAFQASAAwAFQAMAA8AEAADAAkAEAAJABYABQACAAgABQAIAAsAEQANAAAAEQAAAAQAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA"}]}};var r="undefined"!=typeof Float32Array?Float32Array:Array;function o(A,t,e){var s=t[0],n=t[1],i=t[2],r=t[3],o=t[4],a=t[5],I=t[6],h=t[7],g=t[8],c=t[9],f=t[10],u=t[11],C=t[12],w=t[13],l=t[14],Q=t[15],m=e[0],P=e[1],b=e[2],D=e[3];return A[0]=m*s+P*o+b*g+D*C,A[1]=m*n+P*a+b*c+D*w,A[2]=m*i+P*I+b*f+D*l,A[3]=m*r+P*h+b*u+D*Q,m=e[4],P=e[5],b=e[6],D=e[7],A[4]=m*s+P*o+b*g+D*C,A[5]=m*n+P*a+b*c+D*w,A[6]=m*i+P*I+b*f+D*l,A[7]=m*r+P*h+b*u+D*Q,m=e[8],P=e[9],b=e[10],D=e[11],A[8]=m*s+P*o+b*g+D*C,A[9]=m*n+P*a+b*c+D*w,A[10]=m*i+P*I+b*f+D*l,A[11]=m*r+P*h+b*u+D*Q,m=e[12],P=e[13],b=e[14],D=e[15],A[12]=m*s+P*o+b*g+D*C,A[13]=m*n+P*a+b*c+D*w,A[14]=m*i+P*I+b*f+D*l,A[15]=m*r+P*h+b*u+D*Q,A}function a(){var A=new r(3);return r!=Float32Array&&(A[0]=0,A[1]=0,A[2]=0),A}function I(A,t,e){var s=new r(3);return s[0]=A,s[1]=t,s[2]=e,s}function h(A,t){return A[0]=t[0],A[1]=t[1],A[2]=t[2],A}function g(A,t,e,s){return A[0]=t,A[1]=e,A[2]=s,A}function c(A,t,e){return A[0]=t[0]+e[0],A[1]=t[1]+e[1],A[2]=t[2]+e[2],A}function f(A,t,e){return A[0]=t[0]*e,A[1]=t[1]*e,A[2]=t[2]*e,A}function u(A,t,e,s,n){return A[0]=t,A[1]=e,A[2]=s,A[3]=n,A}function C(A,t,e){var s=t[0],n=t[1],i=t[2],r=t[3];return A[0]=e[0]*s+e[4]*n+e[8]*i+e[12]*r,A[1]=e[1]*s+e[5]*n+e[9]*i+e[13]*r,A[2]=e[2]*s+e[6]*n+e[10]*i+e[14]*r,A[3]=e[3]*s+e[7]*n+e[11]*i+e[15]*r,A}function w(){var A=new r(4);return r!=Float32Array&&(A[0]=0,A[1]=0,A[2]=0),A[3]=1,A}function l(A,t,e,s){var n=t[0],i=t[1],r=t[2],o=t[3],a=e[0],I=e[1],h=e[2],g=e[3],c=void 0,f=void 0,u=void 0,C=void 0,w=void 0;return(f=n*a+i*I+r*h+o*g)<0&&(f=-f,a=-a,I=-I,h=-h,g=-g),1-f>1e-6?(c=Math.acos(f),u=Math.sin(c),C=Math.sin((1-s)*c)/u,w=Math.sin(s*c)/u):(C=1-s,w=s),A[0]=C*n+w*a,A[1]=C*i+w*I,A[2]=C*r+w*h,A[3]=C*o+w*g,A}a(),function(){var A,t=(A=new r(4),r!=Float32Array&&(A[0]=0,A[1]=0,A[2]=0,A[3]=0),A)}();var Q,m=function(A,t){return A[0]=t[0],A[1]=t[1],A[2]=t[2],A[3]=t[3],A};a(),I(1,0,0),I(0,1,0),w(),w(),Q=new r(9),r!=Float32Array&&(Q[1]=0,Q[2]=0,Q[3]=0,Q[5]=0,Q[6]=0,Q[7]=0),Q[0]=1,Q[4]=1,Q[8]=1;
6
+ !function(A,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@maptalks/gl"),require("maptalks")):"function"==typeof define&&define.amd?define(["exports","@maptalks/gl","maptalks"],t):t((A="undefined"!=typeof globalThis?globalThis:A||self).maptalks=A.maptalks||{},A.maptalksgl,A.maptalks)}(this,(function(A,t,e){"use strict";function s(A){if(A&&A.A)return A;var t=Object.create(null);return A&&Object.keys(A).forEach((function(e){if("default"!==e){var s=Object.getOwnPropertyDescriptor(A,e);Object.defineProperty(t,e,s.get?s:{enumerable:!0,get:function(){return A[e]}})}})),t.default=A,Object.freeze(t)}var n=s(e);const i={yuanhuan:{accessors:[{name:"����С��_1_0_positions",componentType:5126,count:104,min:[-5.407599925994873,-5.404099941253662,0],max:[5.405200004577637,5.406300067901611,0],type:"VEC3",bufferView:0,byteOffset:0},{name:"����С��_1_0_normals",componentType:5126,count:104,min:[0,0,1],max:[0,0,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"����С��_1_0_indices",componentType:5123,count:288,min:[0],max:[103],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"缩放圈-新",byteLength:3072,uri:"data:application/octet-stream;base64,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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMABAAFAAYABAAGAAcAAwACAAgAAwAIAAkACgALAAwACgAMAA0ADQAMAA4ADQAOAA8ADwAOABAADwAQABEAEgATABQAEgAUABUAFgAXABgAFgAYABkAGgAbABwAGgAcAB0AHgALAAoAHwALAB4AHwAgAAsAIQAgAB8AIgAjACAAIgAgACEAJAAlACYAJAAmACcAJwAmACgAJwAoACkAKgArACwAKgAsAC0ALgAvADAALgAwADEAGQAYADIAGQAyADMANAA1ABsANAAbABoAFQAUADYAFQA2ADcAOAA5ADoAOAA6ADsAPAA9AD4APAA/AD0AQAA/ADwAQABBAD8AQgBBAEAAQgBAAEMARABFAEYARABGAEcARABHAEgARgBJAEcARgBKAEkASwBKAEYASwBMAEoASwBNAEwACQAIAC8ACQAvAC4ALQAsADkALQA5ADgAOwA6AE4AOwBOAE8ATwBOAE0ATwBNAEsAKQAoACsAKQArACoANwA2AFAANwBQAFEAUQBQAFIAUQBSAFMAUwBSAFQAUwBUAFUAVgBXAFgAVgBYAFkAVgBZAFoAWwBZAFgAXABZAFsAXABdAFkAXgBdAFwAXwBdAF4APAA+AGAAPABgAGEAMQAwABcAMQAXABYAYgBjADUAYgA1ADQAYQBgAGMAYQBjAGIAMwAyAF0AMwBdAF8AHQAcAGQAHQBkAGUAZQBkAAUAZQAFAAQAZgBnAAcAZgAHAAYAEQAQABMAEQATABIA"}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:1248,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:1248,byteOffset:1248,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:576,byteOffset:2496,target:34963}],materials:[{name:"SVGMat_001",pbrMetallicRoughness:{baseColorFactor:[.5,.5,.5,1],metallicFactor:0,roughnessFactor:1},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"����С��_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"����С��",mesh:0}],scene:0,scenes:[{nodes:[0]}]},yuanhuan41:{accessors:[{name:"Բ��_1_0_positions",componentType:5126,count:39,min:[0,0,0],max:[5.489999771118164,0,5.488900184631348],type:"VEC3",bufferView:0,byteOffset:0},{name:"Բ��_1_0_normals",componentType:5126,count:39,min:[0,-.999939501285553,-1],max:[.13969914615154266,1,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"Բ��_1_0_indices",componentType:5123,count:105,min:[0],max:[38],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"yh41",byteLength:1148,uri:"data:application/octet-stream;base64,8tKXQAAAAACoNU09FK6vQAAAAAB1Ako/FK6vQAAAAAAAAACATfOAQAAAAAACmkg+K4dWQAAAAAAIrNw+WvUtQAAAAABbsT8/X5gIQAAAAACMSpI/OUWbQAAAAAD0/VQ/LbKHQAAAAAD0/XQ/W0JqQAAAAAC6SZQ/dLXNPwAAAACfq80/H4VHQAAAAAB0JLc/ZognQAAAAAA1XuI/YVSSPwAAAAAukAhABaMKQAAAAAB4nApABcU/PwAAAACF6y1Aw2TiPwAAAACRfidASS63PwAAAABKe0dAJLncPgAAAACze1ZAj1OUPwAAAADjNmpAAppIPgAAAADu64BAnRF1PwAAAAD8qYdAqDVNPQAAAADBypdAgQRVPwAAAAAIPZtAAAAAAAAAAAASpa9AAwlKPwAAAAASpa9AJJd/PAAAAAASpa9AAwlKPwAAAAASpa9AAAAAAAAAAAASpa9Asp1vPQAAAAASpa9AJLn8PQAAAAASpa9AqoJRPgAAAAASpa9ARwOYPgAAAAASpa9AHhbKPgAAAAASpa9A2hv8PgAAAAASpa9A5q4VPwAAAAASpa9A+n4qPwAAAAASpa9AQxw7PwAAAAASpa9AwhdGPwAAAAASpa9AAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAJ5X/OwL+fz8AAACAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/Kzs0PAn8f78AAACApLK/PA7uf78AAACAeJkZPefRfz8AAACA+ZldPQSgf78AAACA6XSTPelVfz8AAACALLO3PdT3fr8AAACAfkjZPR2Ofr8AAACANf32Paohfj8AAACAeUYHPqDBfT8AAACASw0PPlt9fb8AAACAAAABAAIAAwABAAAABAABAAMABQABAAQABgAHAAUABwABAAUABgAIAAcABgAJAAgACgAJAAYACgALAAkACgAMAAsADQAMAAoADQAOAAwADwAOAA0ADwAQAA4ADwARABAAEgARAA8AEgATABEAFAATABIAFAAVABMAFgAVABQAFgAXABUAGAAXABYAGAAZABcAGgAbABwAHQAbABoAHgAbAB0AHwAbAB4AIAAbAB8AIQAbACAAIgAbACEAIwAbACIAJAAbACMAJQAbACQAJgAbACUAAAA="}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:468,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:468,byteOffset:468,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:212,byteOffset:936,target:34963}],materials:[{name:"SVGMat_002",pbrMetallicRoughness:{baseColorFactor:[.588,.588,.588,1],metallicFactor:0,roughnessFactor:.99},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"Բ��_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"Բ��",mesh:0}],scene:0,scenes:[{nodes:[0]}]},yuanhuan411:{accessors:[{name:"����СȦ_1_0_positions",componentType:5126,count:28,min:[.026000000536441803,-4.6834001541137695,0],max:[4.696700096130371,-.014800000004470348,0],type:"VEC3",bufferView:0,byteOffset:0},{name:"����СȦ_1_0_normals",componentType:5126,count:28,min:[0,0,1],max:[0,0,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"����СȦ_1_0_indices",componentType:5123,count:78,min:[0],max:[27],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"yuanhuan411",byteLength:828,uri:"data:application/octet-stream;base64,ufwXQLN7Mr8AAAAAObRAQLFQK78AAAAA1ediQMWP8b4AAAAAGQQ6QCv2174AAAAAqFdeQHUCWr4AAAAA7FGCQL6fmr0AAAAAHHyDQDLmrr4AAAAAXkuWQJf/kL4AAAAAXkuWQLN7crwAAAAAMCrxP2RdhL8AAAAA/BgDQJeQn78AAAAADeARQAg9i78AAAAAukkIQISeXb8AAAAAZaogQH/Zbb8AAAAA7Q3ePr4wOcAAAAAA5IMuP9/gP8AAAAAAJQZxPwrXH8AAAAAAPZs1P6UsF8AAAAAAdy2hP0VHAsAAAAAAb/CFP5eQ778AAAAA0ES4P32utr8AAAAAAprQPyL9zr8AAAAAi/1lPqqCXcAAAAAA9dv3PtcSYsAAAAAADi2yPZvmgcAAAAAAYTK1PssQg8AAAAAA9P3UPGrelcAAAAAA4liXPmrelcAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAACAAMAAwACAAQABQAGAAcABQAHAAgABAACAAYABAAGAAUACQAKAAsACQALAAwAAAANAAEADgAPABAADgAQABEAEQAQABIAEQASABMAFAAVAAoAFAAKAAkADAALAA0ADAANAAAAFgAXAA8AFgAPAA4AGAAZABcAGAAXABYAGgAZABgAGgAbABkAEwASABUAEwAVABQA"}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:336,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:336,byteOffset:336,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:156,byteOffset:672,target:34963}],materials:[{name:"SVGMat",pbrMetallicRoughness:{baseColorFactor:[.588,.588,.588,1],metallicFactor:0,roughnessFactor:.99},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"����СȦ_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"����СȦ",mesh:0}],scene:0,scenes:[{nodes:[0]}]},yuanpan:{accessors:[{name:"Circle001_1_0_positions",componentType:5126,count:28,min:[-1.9510999917984009,0,-1.9510999917984009],max:[1.9510999917984009,0,1.9510999917984009],type:"VEC3",bufferView:0,byteOffset:0},{name:"Circle001_1_0_normals",componentType:5126,count:28,min:[0,1,0],max:[0,1,0],type:"VEC3",bufferView:1,byteOffset:0},{name:"Circle001_1_0_indices",componentType:5123,count:78,min:[0],max:[27],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"yuanpan",byteLength:828,uri:"data:application/octet-stream;base64,S+rkvgAAAADRIvM/AAAAAAAAAAClvfk/S+rkPgAAAADRIvM/0SLzvwAAAABL6uQ+MlXgvwAAAACsi1s/c9fCvwAAAACvJZw/pb35vwAAAAAAAAAA0SLzvwAAAABL6uS+MlXgvwAAAACsi1u/c9fCvwAAAACvJZy/ryWcvwAAAABz18K/rItbvwAAAAAyVeC/S+rkvgAAAADRIvO/AAAAgAAAAAClvfm/S+rkPgAAAADRIvO/rItbPwAAAAAyVeC/ryWcPwAAAABz18K/c9fCPwAAAACvJZy/MlXgPwAAAACsi1u/0SLzPwAAAABL6uS+pb35PwAAAAAAAACA0SLzPwAAAABL6uQ+MlXgPwAAAACsi1s/c9fCPwAAAACvJZw/ryWcvwAAAABz18I/ryWcPwAAAABz18I/rItbvwAAAAAyVeA/rItbPwAAAAAyVeA/AAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAABAAIAAwAEAAUABgADAAUABwAGAAUACAAHAAUACQAIAAUACgAJAAUACwAKAAUADAALAAUADQAMAAUADgANAAUADwAOAAUAEAAPAAUAEQAQAAUAEgARAAUAEwASAAUAFAATAAUAFQAUAAUAFgAVAAUAFwAWAAUAFwAFABgAGQAXABgAGQAYABoAGwAZABoAAgAbABoAAAACABoA"}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:336,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:336,byteOffset:336,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:156,byteOffset:672,target:34963}],materials:[{name:"wire_008110135",pbrMetallicRoughness:{baseColorFactor:[.0314,.4314,.5294,1],metallicFactor:0,roughnessFactor:.968},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"Circle001_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"Circle001",mesh:0}],scene:0,scenes:[{nodes:[0]}]},zzhou:{accessors:[{name:"Cube.001-Mesh_0_positions",componentType:5126,count:45,min:[-.2711470127105713,-5.473427772521973,-.2711470127105713],max:[.2711470127105713,.46298399567604065,.2711470127105713],type:"VEC3",bufferView:0,byteOffset:0},{name:"Cube.001-Mesh_0_normals",componentType:5126,count:45,min:[-1,-1,-1],max:[1,1,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"Cube.001-Mesh_0_texcoords",componentType:5126,count:45,min:[.125,0],max:[.875,1],type:"VEC2",bufferView:2,byteOffset:0},{name:"Cube.001-Mesh_0_indices",componentType:5123,count:72,min:[0],max:[44],type:"SCALAR",bufferView:3,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"Z",byteLength:1584,uri:"data:application/octet-stream;base64,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"}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:540,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:540,byteOffset:540,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:360,byteOffset:1080,byteStride:8,target:34962},{name:"bufferView_3",buffer:0,byteLength:144,byteOffset:1440,target:34963}],materials:[{name:"Material.001",pbrMetallicRoughness:{baseColorFactor:[.8,.8,.8,1],metallicFactor:0,roughnessFactor:.676000006},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"Cube.001-Mesh",primitives:[{attributes:{POSITION:0,NORMAL:1,TEXCOORD_0:2},indices:3,material:0,mode:4}]}],nodes:[{name:"Cube.001",mesh:0}],scene:0,scenes:[{nodes:[0]}]},jiantou:{accessors:[{name:"��ͷ_1_0_positions",componentType:5126,count:7,min:[-.47690001130104065,-.8044000267982483,0],max:[.47780001163482666,0,0],type:"VEC3",bufferView:0,byteOffset:0},{name:"��ͷ_1_0_normals",componentType:5126,count:7,min:[0,0,1],max:[0,0,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"��ͷ_1_0_indices",componentType:5123,count:15,min:[0],max:[6],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"jiantou",byteLength:200,uri:"data:application/octet-stream;base64,bxIDOintTb8AAAAAH/RsvsKGp74AAAAAPSz0vsKGp74AAAAANs17PsKGp74AAAAANKL0PsKGp74AAAAANs17PgAAAAAAAAAAH/RsvgAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAAADAAEAAAAEAAMAAQAFAAYAAQADAAUAAAA="}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:84,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:84,byteOffset:84,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:32,byteOffset:168,target:34963}],materials:[{name:"SVGMat_003",pbrMetallicRoughness:{baseColorFactor:[.588,.588,.588,1],metallicFactor:0,roughnessFactor:.99},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"��ͷ_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"��ͷ",mesh:0}],scene:0,scenes:[{nodes:[0]}]},xuanzhuan:{accessors:[{name:"��ת001_1_0_positions",componentType:5126,count:369,min:[-6.572299957275391,-7.298999786376953,0],max:[6.5742998123168945,7.298299789428711,0],type:"VEC3",bufferView:0,byteOffset:0},{name:"��ת001_1_0_normals",componentType:5126,count:369,min:[0,-1,0],max:[0,0,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"��ת001_1_0_indices",componentType:5123,count:1089,min:[0],max:[368],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"旋转-新",byteLength:11036,uri:"data:application/octet-stream;base64,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AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAwABAAAAAwAEAAEAAwAFAAQAAwAGAAUAAwAHAAYAAwAIAAcAAwAJAAgAAwAKAAkAAwALAAoAAwAMAAsADQAMAAMADQAOAAwADQAPAA4ADQAQAA8ADQARABAADQASABEADQATABIADQAUABMADQAVABQADQAWABUADQAXABYADQAYABcADQAZABgADQAaABkADQAbABoAHAAbAA0AHAAdABsAHAAeAB0AHAAfAB4AHAAgAB8AHAAhACAAHAAiACEAHAAjACIAHAAkACMAHAAlACQAHAAmACUAHAAnACYAHAAoACcAHAApACgAHAAqACkAHAArACoAHAAsACsAHAAtACwAHAAuAC0AHAAvAC4AHAAwAC8AHAAxADAAHAAyADEAHAAzADIAHAA0ADMAHAA1ADQAHAA2ADUAHAA3ADYAHAA4ADcAHAA5ADgAHAA6ADkAHAA7ADoAHAA8ADsAHAA9ADwAHAA+AD0AHAA/AD4AHABAAD8AQABBAD8AQQBCAD8AQgBDAD8AHABAAEQAHABEAEUAHABGAEUARgBHAEUARgBIAEcARgBJAEgARgBKAEkARgBLAEoARgBMAEsAHABNAEYAHABOAE0AHABPAE4AHABQAE8AHABRAFAAHABSAFEAUgBTAFEAUgBUAFMAUgBVAFQAUgBWAFUAUgBXAFYAUgBYAFcAHABZAFIAHABaAFkAHABbAFoAHABcAFsAHABdAFwAHABeAF0AHABfAF4AHABgAF8AHABhAGAAHABiAGEAHABjAGIAHABjAGQAZABlAGMAZQBmAGMAHABnAGQAaABpAGoAawBpAGgAbABpAGsAbQBpAGwAbgBpAG0AbwBpAG4AcABpAG8AcQBpAHAAcgBpAHEAcwBpAHIAdABnABwAdAB1AGcAdAB2AHUAdwB4AHkAdwB5AHoAegB5AHsAegB7AHwAfAB7AH0AfAB9AH4AfgB9AH8AfgB/AIAAgQCCAIMAgQCDAIQAhACDAIUAhACFAIYAhgCFAIcAhgCHAIgAiACHAIkAiACJAIoAiwCMAI0AiwCNAI4AjwCKAJAAigCJAJAAkQCSAJMAkQCTAJQAlACTAJUAlACVAJYAlgCVAJcAlgCXAJgAgAB/AIIAgACCAIEAmACXAJkAmACZAJoAmgCZAJsAmgCbAJwAnACbAJ0AnACdAJ4AngCdAHYAngB2AHQAnwB4AHcAoAB4AJ8AoAChAHgAogChAKAAowCkAKUAowCmAKQAowCnAKYAowCoAKcAowCpAKgAowCqAKkAowCrAKoAowCsAKsAowCtAKwAowCuAK0AowCvAK4AowCiAK8AowChAKIAsAChAKMAsQChALAAsgChALEAswChALIAtAChALMAtQChALQAtgChALUAtwChALYAuAChALcAuQChALgAugChALkAuwChALoAvAChALsAvQChALwAvgChAL0AvwChAL4AwAChAL8AwQChAMAAwgChAMEAwwChAMIAxAChAMMAxQChAMQAxgChAMUAxwChAMYAyAChAMcAyQChAMgAygChAMkAywChAMoAzAChAMsAzQChAMwAzgChAM0AzwChAM4A0AChAM8A0QChANAA0gChANEA0wChANIA1AChANMA1QChANQA1gChANUA1wChANYA2AChANcA2QChANgA2gChANkA2wChANoA3AChANsA3QChANwA3gChAN0A3wChAN4A4AChAN8A4QChAOAA4gChAOEA4wChAOIA5AChAOMA5QChAOQA5gChAOUA5wChAOYA6AChAOcA6QChAOgA6gChAOkA6wChAOoA7AChAOsA7QChAOwA7gChAO0A7wChAO4A8AChAO8A8QChAO8A8gChAPEA8wChAPIA9AChAPMA9QChAPQA9gChAPUA9gD3AKEA+AD3APYA+QD3APgA+gD3APkA+wD3APoA/AD3APsA/QD3APwA/gD3AP0A/wD3AP4AAAH3AP8AAQH3AAABAgH3AAEBAwH3AAIBBAH3AAMBBQH3AAQBBgH3AAUBBgEHAfcACAEHAQYBCQEHAQgBCgEHAQkBCwEHAQoBDAEHAQsBDQEHAQwBDgEHAQ0BDwEHAQ4BEAEHAQ8BEQESARMBFAESAREBFAEVARIBFgEVARQBFgEXARUBGAEXARYBGAEZARcBGgEbARgBGwEcARgBHAEZARgBHAEdARkBHQEeARkBHwEeAR0BGgEgARsBIQEeAR8BGgEiASABIwEiARoBIQEkAR4BJQEkASEBIwEmASIBJwEkASUBIwEoASYBKQEoASMBJwEqASQBKwEqAScBKQEsASgBLQEsASkBKwEuASoBLwEuASsBLQEwASwBMQEuAS8BLQEyATABjgCNADMBjgAzATQBNQE2ATcBNQE3ATgBOAE3ATkBOAE5AToBOwE8AT0BOwE9AT4BPwFAAUEBPwFBAUIBPgE9AUMBPgFDAUQBRQFGAUABRQFAAT8BRwFIAZIARwGSAJEASQFKAUYBSQFGAUUBRAFDAUsBRAFLAUwBOgE5AUoBOgFKAUkBTAFLAU0BTAFNAU4BTgFNAU8BTgFPAVABQgFBAVEBQgFRAVIBUgFRAS4BUgEuATEBNAEzATwBNAE8ATsBUwFUATYBUwE2ATUBUAFPATIBUAEyAS0BiwBVAYwAVgFUAVMBiwBXAVUBWAFUAVYBWAFZAVQBWgFXAYsAWgFbAVcBXAFZAVgBXAFdAVkBXgFbAVoBXgFfAVsBYAFdAVwBXgFhAV8BYgFdAWABYgFjAV0BZAFhAV4BZAFlAWEBZgFjAWIBZAFnAWUBZwFjAWYBZAFjAWcBZAFoAWMBaQFoAWQBaQFqAWgBawFqAWkBawFsAWoBbQFsAWsBbQFuAWwBbwFwAUgBbwFIAUcBAAA="}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:4428,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:4428,byteOffset:4428,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:2180,byteOffset:8856,target:34963}],materials:[{name:"SVGMat",pbrMetallicRoughness:{baseColorFactor:[.5,.5,.5,1],metallicFactor:0,roughnessFactor:1},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"��ת001_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"��ת001",mesh:0}],scene:0,scenes:[{nodes:[0]}]},plane:{accessors:[{name:"Rectangle001_1_0_positions",componentType:5126,count:4,min:[-5,-5,0],max:[5,5,0],type:"VEC3",bufferView:0,byteOffset:0},{name:"Rectangle001_1_0_normals",componentType:5126,count:4,min:[0,0,1],max:[0,0,1],type:"VEC3",bufferView:1,byteOffset:0},{name:"Rectangle001_1_0_indices",componentType:5123,count:6,min:[0],max:[3],type:"SCALAR",bufferView:2,byteOffset:0}],asset:{generator:"obj2gltf",version:"2.0"},buffers:[{name:"plane",byteLength:108,uri:"data:application/octet-stream;base64,AACgQAAAoEAAAAAAAACgwAAAoEAAAAAAAACgwAAAoMAAAAAAAACgQAAAoMAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAABAAIAAgADAAAA"}],bufferViews:[{name:"bufferView_0",buffer:0,byteLength:48,byteOffset:0,byteStride:12,target:34962},{name:"bufferView_1",buffer:0,byteLength:48,byteOffset:48,byteStride:12,target:34962},{name:"bufferView_2",buffer:0,byteLength:12,byteOffset:96,target:34963}],materials:[{name:"wire_225198087",pbrMetallicRoughness:{baseColorFactor:[.8824,.7765,.3412,1],metallicFactor:0,roughnessFactor:.968},emissiveFactor:[0,0,0],alphaMode:"OPAQUE",doubleSided:!1}],meshes:[{name:"Rectangle001_1",primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,material:0,mode:4}]}],nodes:[{name:"Rectangle001",mesh:0}],scene:0,scenes:[{nodes:[0]}]},xyzScale:{asset:{generator:"Khronos glTF Blender I/O v1.6.16",version:"2.0"},scene:0,scenes:[{name:"Scene",nodes:[0,1,2,3,4,5,6]}],nodes:[{mesh:0,name:"Cube",scale:[.7008190751075745,.014999999664723873,.014999999664723873]},{mesh:1,name:"Cube.001",scale:[.10000000149011612,.10000000149011612,.10000000149011612]},{mesh:2,name:"Cube.004",rotation:[0,-.7071068286895752,0,.7071068286895752],scale:[.7008190751075745,.014999999664723873,.014999999664723873]},{mesh:3,name:"Cube.003",rotation:[0,-.7071068286895752,0,.7071068286895752],scale:[.10000000149011612,.10000000149011612,.10000000149011612]},{mesh:4,name:"Cube.006",rotation:[0,0,.7071068286895752,.7071068286895752],scale:[.7008190751075745,.014999999664723873,.014999999664723873]},{mesh:5,name:"Cube.005",rotation:[0,0,.7071068286895752,.7071068286895752],scale:[.10000000149011612,.10000000149011612,.10000000149011612]},{mesh:6,name:"Cube.002",scale:[.10000000149011612,.10000000149011612,.10000000149011612]}],materials:[{doubleSided:!0,name:"Material",pbrMetallicRoughness:{baseColorFactor:[.6938720345497131,.020288480445742607,.011612260714173317,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.001",pbrMetallicRoughness:{baseColorFactor:[.6938720345497131,.020288480445742607,.011612260714173317,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.002",pbrMetallicRoughness:{baseColorFactor:[.226582869887352,.226582869887352,.226582869887352,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.006",pbrMetallicRoughness:{baseColorFactor:[.11193240433931351,.5583405494689941,.033104799687862396,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.005",pbrMetallicRoughness:{baseColorFactor:[.11193240433931351,.5583405494689941,.033104799687862396,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.010",pbrMetallicRoughness:{baseColorFactor:[.004391402006149292,.21223078668117523,.5209956169128418,1],metallicFactor:0,roughnessFactor:.4000000059604645}},{doubleSided:!0,name:"Material.009",pbrMetallicRoughness:{baseColorFactor:[.004391402006149292,.21223078668117523,.5209956169128418,1],metallicFactor:0,roughnessFactor:.4000000059604645}}],meshes:[{name:"Cube",primitives:[{attributes:{POSITION:0,NORMAL:1,TEXCOORD_0:2},indices:3,material:0}]},{name:"Cube.001",primitives:[{attributes:{POSITION:4,NORMAL:5,TEXCOORD_0:6},indices:3,material:1}]},{name:"Cube.006",primitives:[{attributes:{POSITION:10,NORMAL:11,TEXCOORD_0:12},indices:3,material:3}]},{name:"Cube.005",primitives:[{attributes:{POSITION:13,NORMAL:14,TEXCOORD_0:15},indices:3,material:4}]},{name:"Cube.010",primitives:[{attributes:{POSITION:16,NORMAL:17,TEXCOORD_0:18},indices:3,material:5}]},{name:"Cube.009",primitives:[{attributes:{POSITION:19,NORMAL:20,TEXCOORD_0:21},indices:3,material:6}]},{name:"Cube.002",primitives:[{attributes:{POSITION:7,NORMAL:8,TEXCOORD_0:9},indices:3,material:2}]}],accessors:[{bufferView:0,componentType:5126,count:24,max:[2.0003609657287598,1,1],min:[.0003610849380493164,-1,-1],type:"VEC3"},{bufferView:1,componentType:5126,count:24,type:"VEC3"},{bufferView:2,componentType:5126,count:24,type:"VEC2"},{bufferView:3,componentType:5123,count:36,type:"SCALAR"},{bufferView:4,componentType:5126,count:24,max:[14.549108505249023,1,1],min:[12.549108505249023,-1,-1],type:"VEC3"},{bufferView:5,componentType:5126,count:24,type:"VEC3"},{bufferView:6,componentType:5126,count:24,type:"VEC2"},{bufferView:7,componentType:5126,count:24,max:[1,1,1],min:[-1,-1,-1],type:"VEC3"},{bufferView:8,componentType:5126,count:24,type:"VEC3"},{bufferView:9,componentType:5126,count:24,type:"VEC2"},{bufferView:10,componentType:5126,count:24,max:[2.0003609657287598,1,1],min:[.0003610849380493164,-1,-1],type:"VEC3"},{bufferView:11,componentType:5126,count:24,type:"VEC3"},{bufferView:12,componentType:5126,count:24,type:"VEC2"},{bufferView:13,componentType:5126,count:24,max:[14.549108505249023,1,1],min:[12.549108505249023,-1,-1],type:"VEC3"},{bufferView:14,componentType:5126,count:24,type:"VEC3"},{bufferView:15,componentType:5126,count:24,type:"VEC2"},{bufferView:16,componentType:5126,count:24,max:[2.0003609657287598,1,1],min:[.0003610849380493164,-1,-1],type:"VEC3"},{bufferView:17,componentType:5126,count:24,type:"VEC3"},{bufferView:18,componentType:5126,count:24,type:"VEC2"},{bufferView:19,componentType:5126,count:24,max:[14.549108505249023,1,1],min:[12.549108505249023,-1,-1],type:"VEC3"},{bufferView:20,componentType:5126,count:24,type:"VEC3"},{bufferView:21,componentType:5126,count:24,type:"VEC2"}],bufferViews:[{buffer:0,byteLength:288,byteOffset:0},{buffer:0,byteLength:288,byteOffset:288},{buffer:0,byteLength:192,byteOffset:576},{buffer:0,byteLength:72,byteOffset:768},{buffer:0,byteLength:288,byteOffset:840},{buffer:0,byteLength:288,byteOffset:1128},{buffer:0,byteLength:192,byteOffset:1416},{buffer:0,byteLength:288,byteOffset:1608},{buffer:0,byteLength:288,byteOffset:1896},{buffer:0,byteLength:192,byteOffset:2184},{buffer:0,byteLength:288,byteOffset:2376},{buffer:0,byteLength:288,byteOffset:2664},{buffer:0,byteLength:192,byteOffset:2952},{buffer:0,byteLength:288,byteOffset:3144},{buffer:0,byteLength:288,byteOffset:3432},{buffer:0,byteLength:192,byteOffset:3720},{buffer:0,byteLength:288,byteOffset:3912},{buffer:0,byteLength:288,byteOffset:4200},{buffer:0,byteLength:192,byteOffset:4488},{buffer:0,byteLength:288,byteOffset:4680},{buffer:0,byteLength:288,byteOffset:4968},{buffer:0,byteLength:192,byteOffset:5256}],buffers:[{byteLength:5448,uri:"data:application/octet-stream;base64,6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAQAOABQAAQAUAAcACgAGABMACgATABcAFQASAAwAFQAMAA8AEAADAAkAEAAJABYABQACAAgABQAIAAsAEQANAAAAEQAAAAQAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAAACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgD8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgL8AAIC/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAPwAAgL8AAIA/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgD8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgL8AAIC/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgD8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AACAvwAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgD8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgL8AAIC/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgD8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/6gUAQAAAgL8AAIA/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgD8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgL8AAIC/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgD8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AFC9OQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAAJsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgD8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgL8AAIC/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgD8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JsloQQAAgL8AAIA/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgD8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgL8AAIC/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgD8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/JslIQQAAgL8AAIA/AAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAPwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAPwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AACAPwAAAAAAAACAAACAvwAAAAAAAACAAAAAAAAAAAAAAIC/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIC/AACAvwAAAAAAAACAAAAAAAAAAAAAAIA/AAAAAAAAgD8AAACAAACAvwAAAAAAAACAAAAAAAAAgL8AAACAAAAAAAAAAAAAAIA/AAAgPwAAAD8AACA/AAAAPwAAID8AAAA/AADAPgAAAD8AAMA+AAAAPwAAwD4AAAA/AAAgPwAAgD4AACA/AACAPgAAID8AAIA+AADAPgAAgD4AAMA+AACAPgAAwD4AAIA+AAAgPwAAQD8AACA/AABAPwAAYD8AAAA/AADAPgAAQD8AAAA+AAAAPwAAwD4AAEA/AAAgPwAAgD8AACA/AAAAAAAAYD8AAIA+AADAPgAAgD8AAAA+AACAPgAAwD4AAAAA"}]}};var r="undefined"!=typeof Float32Array?Float32Array:Array;function o(A,t,e){var s=t[0],n=t[1],i=t[2],r=t[3],o=t[4],a=t[5],I=t[6],h=t[7],g=t[8],c=t[9],f=t[10],u=t[11],C=t[12],l=t[13],w=t[14],Q=t[15],m=e[0],P=e[1],b=e[2],D=e[3];return A[0]=m*s+P*o+b*g+D*C,A[1]=m*n+P*a+b*c+D*l,A[2]=m*i+P*I+b*f+D*w,A[3]=m*r+P*h+b*u+D*Q,m=e[4],P=e[5],b=e[6],D=e[7],A[4]=m*s+P*o+b*g+D*C,A[5]=m*n+P*a+b*c+D*l,A[6]=m*i+P*I+b*f+D*w,A[7]=m*r+P*h+b*u+D*Q,m=e[8],P=e[9],b=e[10],D=e[11],A[8]=m*s+P*o+b*g+D*C,A[9]=m*n+P*a+b*c+D*l,A[10]=m*i+P*I+b*f+D*w,A[11]=m*r+P*h+b*u+D*Q,m=e[12],P=e[13],b=e[14],D=e[15],A[12]=m*s+P*o+b*g+D*C,A[13]=m*n+P*a+b*c+D*l,A[14]=m*i+P*I+b*f+D*w,A[15]=m*r+P*h+b*u+D*Q,A}function a(){var A=new r(3);return r!=Float32Array&&(A[0]=0,A[1]=0,A[2]=0),A}function I(A,t,e){var s=new r(3);return s[0]=A,s[1]=t,s[2]=e,s}function h(A,t){return A[0]=t[0],A[1]=t[1],A[2]=t[2],A}function g(A,t,e,s){return A[0]=t,A[1]=e,A[2]=s,A}function c(A,t,e){return A[0]=t[0]+e[0],A[1]=t[1]+e[1],A[2]=t[2]+e[2],A}function f(A,t,e){return A[0]=t[0]*e,A[1]=t[1]*e,A[2]=t[2]*e,A}function u(A,t,e,s,n){return A[0]=t,A[1]=e,A[2]=s,A[3]=n,A}function C(A,t,e){var s=t[0],n=t[1],i=t[2],r=t[3];return A[0]=e[0]*s+e[4]*n+e[8]*i+e[12]*r,A[1]=e[1]*s+e[5]*n+e[9]*i+e[13]*r,A[2]=e[2]*s+e[6]*n+e[10]*i+e[14]*r,A[3]=e[3]*s+e[7]*n+e[11]*i+e[15]*r,A}function l(){var A=new r(4);return r!=Float32Array&&(A[0]=0,A[1]=0,A[2]=0),A[3]=1,A}function w(A,t,e,s){var n=t[0],i=t[1],r=t[2],o=t[3],a=e[0],I=e[1],h=e[2],g=e[3],c=void 0,f=void 0,u=void 0,C=void 0,l=void 0;return(f=n*a+i*I+r*h+o*g)<0&&(f=-f,a=-a,I=-I,h=-h,g=-g),1-f>1e-6?(c=Math.acos(f),u=Math.sin(c),C=Math.sin((1-s)*c)/u,l=Math.sin(s*c)/u):(C=1-s,l=s),A[0]=C*n+l*a,A[1]=C*i+l*I,A[2]=C*r+l*h,A[3]=C*o+l*g,A}a(),function(){var A,t=(A=new r(4),r!=Float32Array&&(A[0]=0,A[1]=0,A[2]=0,A[3]=0),A)}();var Q,m=function(A,t){return A[0]=t[0],A[1]=t[1],A[2]=t[2],A[3]=t[3],A};a(),I(1,0,0),I(0,1,0),l(),l(),Q=new r(9),r!=Float32Array&&(Q[1]=0,Q[2]=0,Q[3]=0,Q[5]=0,Q[6]=0,Q[7]=0),Q[0]=1,Q[4]=1,Q[8]=1;
7
7
  /*!
8
- * @maptalks/gltf-loader v0.90.0
8
+ * @maptalks/gltf-loader v0.91.0
9
9
  * LICENSE : UNLICENSED
10
10
  * (c) 2016-2023 maptalks.org
11
11
  */
12
- let P=0;function b(A){return null==A}function D(A){return!b(A)}function y(A){return!b(A)&&("string"==typeof A||null!==A.constructor&&A.constructor===String)}function B(A){for(let t=1;t<arguments.length;t++){const e=arguments[t];for(const t in e)A[t]=e[t]}return A}function d(A){switch(A){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array}throw new Error("unsupported bufferView's component type: "+A)}function p(A){return 0===A.indexOf("data:")&&A.indexOf("base64,")>0}function v(A){const t=function(A){return"undefined"!=typeof self?self.atob(A):window.atob(A)}(A.substring(A.indexOf(",")+1)),e=t.length,s=new Uint8Array(e);for(let A=0;A<e;A++)s[A]=t.charCodeAt(A);return s.buffer}const M=[],L=[],E=[],O=[0,0,0],F=function(A){return A[0]=0,A[1]=0,A[2]=0,A[3]=1,A}([]),x=[1,1,1];function U(A,t,e,s,n,i,r){const o=d(r);if((0===n||n===s*o.BYTES_PER_ELEMENT)&&i%o.BYTES_PER_ELEMENT==0){const n=new o(t,i,e*s);return A.set(n),A}0===n&&(n=s*o.BYTES_PER_ELEMENT);const a=new Uint8Array(s*o.BYTES_PER_ELEMENT);for(let r=0;r<e;r++){let e=null;const I=new Uint8Array(t,n*r+i,s*o.BYTES_PER_ELEMENT);a.set(I),e=new o(a.buffer,0,s);for(let t=0;t<s;t++)A[r*s+t]=e[t]}return A}const V="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function T(A,t,e){const s=new Uint8Array(A,t,e);return V.decode(s)}const S={get:function(A,t={}){t||(t={});const e=new AbortController,s=e.signal,n=B({},t);n.signal=s,n.method||(n.method="GET");const i=fetch(A,n).then(A=>{const e=this.t(A,t.responseType);return e.message?e:e.then(e=>"arraybuffer"===t.responseType?{data:e,cacheControl:A.headers.get("Cache-Control"),expires:A.headers.get("Expires"),contentType:A.headers.get("Content-Type")}:e).catch(A=>{if(!A.code||A.code!==DOMException.ABORT_ERR)throw A})}).catch(A=>{if(!A.code||A.code!==DOMException.ABORT_ERR)throw A});return i.xhr=e,i},t:(A,t)=>200!==A.status?{status:A.status,statusText:A.statusText,message:`incorrect http request with status code(${A.status}): ${A.statusText}`}:"arraybuffer"===t?A.arrayBuffer():"json"===t?A.json():A.text(),getArrayBuffer:(A,t={})=>(t||(t={}),t.responseType="arraybuffer",S.get(A,t)),getJSON:function(A,t={}){return t&&t.jsonp?S.jsonp(A):((t=t||{}).responseType="json",S.get(A,t))},jsonp:function(A){const t="_maptalks_jsonp_"+P++;A.match(/\?/)?A+="&callback="+t:A+="?callback="+t;let e=document.createElement("script");return e.type="text/javascript",e.src=A,new Promise(A=>{window[t]=function(s){document.getElementsByTagName("head")[0].removeChild(e),e=null,delete window[t],A(s)},document.getElementsByTagName("head")[0].appendChild(e)})}};class k{constructor(A,t,e){this.s=A,this.decoders=t,this.i=e,this.images={},this.o={}}requestImageFromBufferURI(A,t,e){if(this.buffers[A.id]){const s=this.buffers[A.id],n=this.I(t,s);return this.getImageByBuffer(n,e)}if(this.o[A.id])return this.o[A.id].then(()=>{const s=this.buffers[A.id],n=this.I(t,s);return this.getImageByBuffer(n,e)});if(p(A.uri)){const s=this.buffers[A.id]=v(A.uri),n=this.I(t,s);return this.getImageByBuffer(n,e)}return this.o[A.id]=S.getArrayBuffer(A.uri,null).then(s=>{const n=this.buffers[A.id]=s.data,i=this.I(t,n);return this.getImageByBuffer(i,e)})}getImageByBuffer(A,t){if(this.images[t.id])return Promise.resolve(this.images[t.id]);const e=this.decoders;return e[t.mimeType]?e[t.mimeType](A,{supportedFormats:this.i}):"image/crn"===t.mimeType||"image/ktx2"===t.mimeType||"image/cttf"===t.mimeType?(console.warn("missing transcoder for "+t.mimeType,", visit https://maptalks.com/docs/transcoders for details"),Promise.resolve(null)):this.h(t.id,A)}requestExternalImage(A){if(this.images[A.id])return Promise.resolve(this.images[A.id]);const t=0===A.uri.indexOf("data:image/")?A.uri:this.rootPath+"/"+A.uri;return this.o[A.id]?this.o[A.id].then(()=>this.images[A.id]):this.o[A.id]=this.h(A.id,t)}h(A,t){return new Promise((e,s)=>{this.s(t,(n,i)=>{n?s(n):(URL.revokeObjectURL(t),this.images[A]=i,e(this.images[A]))})})}}const _=["SCALAR",1,"VEC2",2,"VEC3",3,"VEC4",4,"MAT2",4,"MAT3",9,"MAT4",16],N=[];class R{constructor(A,t,e){this.rootPath=A,this.gltf=t,this.g=!1,this.glbBuffer=e,this.buffers={},this.requests={},this.accessors={},this.u()}C(A,t){const e=this.gltf,s=e.accessors[t];if(void 0===s.bufferView)return this.accessors[s.id]=this.l(A,t,null,0),Promise.resolve(this.accessors[s.id]);if(s&&this.accessors[s.id])return Promise.resolve(this.accessors[s.id]);const n=e.bufferViews[s.bufferView];return this.m(n).then(e=>{const{buffer:n,byteOffset:i}=e;return this.accessors[s.id]=this.l(A,t,n,i)})}m(A){const t=this.gltf.buffers[A.buffer];if(this.buffers[t.id]){const A=this.buffers[t.id];return Promise.resolve({buffer:A,byteOffset:0})}if(this.requests[t.id])return this.requests[t.id].then(()=>{const A=this.buffers[t.id];return Promise.resolve({buffer:A,byteOffset:0})});if("binary_glTF"!==A.buffer&&"KHR_binary_glTF"!==A.buffer&&t.uri){if(p(t.uri)){const A=this.buffers[t.id]=v(t.uri);return Promise.resolve({buffer:A,byteOffset:0})}let A;const e=t.uri.indexOf("blob:")>=0;return A=t.uri.indexOf("://")>0||e?t.uri:this.rootPath+"/"+t.uri,this.requests[t.id]=S.getArrayBuffer(A,null).then(s=>(e&&URL.revokeObjectURL(A),{buffer:this.buffers[t.id]=s.data,byteOffset:0}))}return Promise.resolve({buffer:this.glbBuffer.buffer,byteOffset:this.glbBuffer.byteOffset})}l(A,t,e,s=0){const n=this.gltf,i=n.accessors[t],r=void 0!==i.bufferView?n.bufferViews[i.bufferView]:{},o=(r.byteOffset||0)+s,a=this.P(i.type),I=d(i.componentType),h=r.byteStride||0,g={array:void 0,name:A,accessorName:t,byteLength:i.count*a*I.BYTES_PER_ELEMENT,componentType:i.componentType,count:i.count,type:i.type,itemSize:a,max:i.max,min:i.min,extensions:i.extensions};if(i.min&&(g.min=i.min),i.max&&(g.max=i.max),e)if(this.g)g.byteStride=h,g.byteOffset=o+(i.byteOffset||0),!h||h===a*I.BYTES_PER_ELEMENT||"indices"===A||"input"===A||"output"===A||A.indexOf("morph")>=0?(g.array=this.D(e,i.count,a,o+(i.byteOffset||0),I),g.array.buffer.byteLength===g.byteLength&&(g.byteOffset=0)):g.array=new Uint8Array(e,o,r.byteLength);else if(i.interleaved){g.byteStride=0,g.byteOffset=0;const A=new I(i.count*a);if(g.array=U(A,e,i.count,a,h,o+(i.byteOffset||0),i.componentType),g.extensions&&g.extensions.WEB3D_quantized_attributes&&a>2){const A=new Float32Array(g.array.length),{decodeMatrix:t}=g.extensions.WEB3D_quantized_attributes;for(let e=0;e<g.array.length;e+=a){N[0]=g.array[e],N[1]=g.array[e+1],N[2]=g.array[e+2],N[3]=1;const s=C(N,N,t);A[e]=s[0],A[e+1]=s[1],A[e+2]=s[2]}g.componentType=5126,g.array=A}}else g.byteStride=0,g.array=this.D(e,i.count,a,o+(i.byteOffset||0),I),g.byteOffset=g.array.byteOffset;else{g.array=new I(i.count);const A=g.min||g.max;A&&(g.array[0]=A[0],g.array[1]=A[1],g.array[2]=A[2])}return g}u(){const A=this.gltf.accessors;if(Array.isArray(A))for(let t=0;t<A.length;t++)for(let e=0;e<A.length;e++)t!==e&&A[t].bufferView===A[e].bufferView&&(A[t].interleaved=A[e].interleaved=!0);else for(const t in A)for(const e in A)t!==e&&A[t].bufferView===A[e].bufferView&&(A[t].interleaved=A[e].interleaved=!0)}D(A,t,e,s,n){return s%n.BYTES_PER_ELEMENT!=0&&(A=A.slice(s,s+t*e*n.BYTES_PER_ELEMENT),s=0),new n(A,s,e*t)}P(A){const t=_.indexOf(A);return _[t+1]}requestKHRTechniquesWebgl(A){const{shaders:t}=A,e=t.map(A=>{if(void 0!==A.bufferView){const t=this.gltf.bufferViews[A.bufferView],{byteLength:e}=t;return this.m(t).then(s=>{const{buffer:n,byteOffset:i}=s,r=T(n,i+(t.byteOffset||0),e);return A.content=r,A})}if(A.uri){if(p(A.uri)){const t=v(A.uri),e=T(t,0,t.byteLength);return A.content=e,Promise.resolve(A)}{const t=this.rootPath+"/"+A.uri;return S.get(t).then(t=>(A.content=t,A))}}return Promise.resolve(A)});return Promise.all(e).then(()=>A)}}class H extends k{constructor(A,t,e,s,n,i){super(s,n,i),this.rootPath=A,this.gltf=t,this.requests={},this.buffers={},this.glbBuffer=e,this.accessor=new R(A,t,e)}iterate(A,t){const e=this.gltf[t];if(!e)return;let s=0;for(const t in e)A(t,e[t],s++)}createNode(A){const t={};if(D(A.name)&&(t.name=A.name),D(A.children)&&(t.children=A.children),D(A.jointName)&&(t.jointName=A.jointName),D(A.matrix)&&(t.matrix=A.matrix),D(A.rotation)&&(t.rotation=A.rotation),D(A.scale)&&(t.scale=A.scale),D(A.translation)&&(t.translation=A.translation),D(A.extras)&&(t.extras=A.extras),D(A.meshes)&&(t.mesh=A.meshes[0]),t.translation||t.rotation||t.scale){const A=function(A,t){if(t.matrix)return t.matrix;if(t.translation||t.scale||t.rotation){const e=function(A,t){return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=t[0],A[13]=t[1],A[14]=t[2],A[15]=1,A}(M,t.translation||O),s=function(A,t){var e=t[0],s=t[1],n=t[2],i=t[3],r=e+e,o=s+s,a=n+n,I=e*r,h=s*r,g=s*o,c=n*r,f=n*o,u=n*a,C=i*r,w=i*o,l=i*a;return A[0]=1-g-u,A[1]=h+l,A[2]=c-w,A[3]=0,A[4]=h-l,A[5]=1-I-u,A[6]=f+C,A[7]=0,A[8]=c+w,A[9]=f-C,A[10]=1-I-g,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}(L,t.rotation||F),n=function(A,t){return A[0]=t[0],A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=t[1],A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=t[2],A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}(E,t.scale||x);return o(n,s,n),o(A,e,n)}return function(A){return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}(A)}([],t);delete t.translation,delete t.rotation,delete t.scale,t.matrix=A}return t}B(A){const t={};for(const e in A){const s=A[e];let n,i;s.instanceTechnique&&s.instanceTechnique.values?(n=s.instanceTechnique,i=n.values.diffuse):(n=s,i=n.values.tex||n.values.diffuseTex||n.values.diffuse);const r={baseColorTexture:{index:i}};s.name&&(r.name=s.name),s.extensions&&(r.extensions=s.extensions),s.extras&&(r.extras=s.extras),t[e]=r}return t}p(A){if(A.bufferView||A.extensions&&(A.extensions.KHR_binary_glTF||A.extensions.binary_glTF)){const t=A.bufferView?A:A.extensions.KHR_binary_glTF||A.extensions.binary_glTF;A.extensions&&(A.mimeType=t.mimeType,A.width=t.width,A.height=t.height);const e=this.gltf.bufferViews[t.bufferView],s=(e.byteOffset||0)+this.glbBuffer.byteOffset,n=e.byteLength,i=this.buffers[t.bufferView]=new Uint8Array(this.glbBuffer.buffer,s,n);return this.getImageByBuffer(i,A)}return this.requestExternalImage(A)}v(A){const t=this.gltf.textures[A];if(!t)return null;const e=this.gltf.images[t.source];return this.p(e).then(A=>{const s=this.gltf.samplers[t.sampler];return{image:{array:A.data,width:A.width,height:A.height,index:t.source,mimeType:e.mimeType,name:e.name,extras:e.extras},sampler:s}})}getBaseColorTexture(A){const t=this.gltf.materials[A];let e,s;if(t.instanceTechnique&&t.instanceTechnique.values?(e=t.instanceTechnique,s=e.values.diffuse):(e=t,s=e.values.tex||e.values.diffuseTex||e.values.diffuse),void 0===s||void 0===this.gltf.textures)return null;const n=this.gltf.textures[s];if(!n)return null;const i=this.gltf.samplers[n.sampler];return{format:n.format||6408,internalFormat:n.internalFormat||6408,type:n.type||5121,sampler:i,source:this.gltf.images[n.source]}}getMaterial(){return null}getAnimations(){return null}}class J extends k{constructor(A,t,e,s,n,i){super(s,n,i),this.rootPath=A,this.gltf=t,this.glbBuffer=e,this.buffers={},this.requests={},this.accessor=new R(A,t,e)}iterate(A,t){const e=this.gltf[t];if(e)for(let t=0;t<e.length;t++)A(t,e[t],t)}createNode(A){const t={};return B(t,A),!D(A.weights)&&this.gltf.meshes&&D(t.mesh)?t.weights=this.gltf.meshes[t.mesh].weights:A.weights&&(t.weights=A.weights),t}v(A){const t=this.gltf.textures[A];if(!t)return null;let e=t.source;if(t.extensions&&t.extensions.EXT_texture_webp&&(e=t.extensions.EXT_texture_webp.source),!D(e))return null;const s=this.gltf.images[e];return this.p(s).then(A=>{if(!A)return null;const e={image:{array:A.data,mipmap:A.mipmap,width:A.width,height:A.height,index:t.source,mimeType:s.mimeType,name:s.name,extensions:s.extensions,extras:s.extras}};B(e,t);const n=D(t.sampler)?this.gltf.samplers[t.sampler]:void 0;return n&&(e.sampler=n,e.sampler.magFilter=n.magFilter||9729,e.sampler.minFilter=n.minFilter||9729,e.sampler.wrapS=n.wrapS||10497,e.sampler.wrapT=n.wrapT||10497),A.format&&(e.format=A.format),e})}p(A){if(!D(A.bufferView))return this.requestExternalImage(A);{const t=this.gltf.bufferViews[A.bufferView],e=this.gltf.buffers[t.buffer];if(e.uri)return this.requestImageFromBufferURI(e,t,A);if(this.glbBuffer)return this.M(t,A)}return null}M(A,t){const e=this.I(A,this.glbBuffer.buffer,this.glbBuffer.byteOffset);return this.getImageByBuffer(e,t)}I(A,t,e){e=e||0;const s=A.byteOffset+e,n=A.byteLength;return new Uint8Array(t,s,n)}L(A,t){const e=new Array(A.byteLength);for(let t=0;t<A.byteLength;t++)e[t]=String.fromCharCode(A[t]);return e.join(""),"data:"+(t=t||"image/png")+";base64,"+function(A){return"undefined"!=typeof self?self.btoa(A):window.btoa(A)}(unescape(encodeURIComponent(e)))}getAnimations(A){const t=[];return A.forEach(A=>{t.push(this.getSamplers(A.samplers))}),Promise.all(t).then(t=>{for(let e=0;e<t.length;e++)A[e].samplers=t[e];return A})}getSamplers(A){const t=[];for(let e=0;e<A.length;e++)(D(A[e].input)||D(A[e].output))&&(t.push(this.accessor.C("input",A[e].input)),t.push(this.accessor.C("output",A[e].output)));return Promise.all(t).then(t=>{for(let e=0;e<t.length/2;e++)A[e].input=t[2*e],A[e].output=t[2*e+1],A[e].interpolation||(A[e].interpolation="LINEAR");return A})}}const K="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;class j{static read(A,t=0,e=0){e||(e=A.byteLength);const s=new DataView(A,t,e),n=s.getUint32(4,!0);if(1===n)return j.readV1(s,t);if(2===n)return j.readV2(A,t);throw new Error("Unsupported glb version : "+n)}static readV1(A,t){const e=A.getUint32(8,!0),s=A.getUint32(12,!0);if(e!==A.byteLength)throw new Error("Length in GLB header is inconsistent with glb's byte length.");const n=z(A.buffer,20+t,s);return{json:JSON.parse(n),glbBuffer:{byteOffset:20+t+s,buffer:A.buffer,byteLength:e}}}static readV2(A,t){let e,s,n;const i=new DataView(A,t+12);let r=0;for(;r<i.byteLength;){const o=i.getUint32(r,!0);r+=4;const a=i.getUint32(r,!0);if(r+=4,1313821514===a)e=z(A,t+12+r,o);else if(5130562===a){n=t+12+r,s=o;break}r+=o}return{json:JSON.parse(e),glbBuffer:{byteOffset:n,buffer:A,byteLength:s}}}}function z(A,t,e){if(K){const s=new Uint8Array(A,t,e);return K.decode(s)}return function(A){const t=A.length;let e="";for(let s=0;s<t;){let n=A[s++];if(128&n){let e=G[n>>3&7];if(!(64&n)||!e||s+e>t)return null;for(n&=63>>e;e>0;e-=1){const t=A[s++];if(128!=(192&t))return null;n=n<<6|63&t}}e+=String.fromCharCode(n)}return e}(new Uint8Array(A,t,e))}const G=[1,1,1,1,2,2,3,0],Z=[0,0,0],Y=[0,0,0,1],q=[1,1,1],W={TRANSLATION:[0,0,0],ROTATION:[0,0,0,1],SCALE:[1,1,1]},X={PREVIOUS:null,NEXT:null,PREINDEX:null,NEXTINDEX:null,INTERPOLATION:null},$={O(A,t,e,s,n,i,r,o){const a=D(A)?t.animations:[t.animations[0]],I={};for(let t=0;t<a.length;t++){const g=a[t],c=g.name||t;if(D(A)&&c!==A)continue;const f=g.channelsMap[e];if(f)for(let A=0;A<f.length;A++){const t=f[A];"translation"===t.target.path?(this.F(n,g.samplers[t.sampler],s,1),I.translation=h(Z,n)):"rotation"===t.target.path?(this.U(i,g.samplers[t.sampler],s,1),I.rotation=m(Y,i)):"scale"===t.target.path?(this.F(r,g.samplers[t.sampler],s,1),I.scale=h(q,r)):"weights"===t.target.path&&o&&(this.F(o,g.samplers[t.sampler],s,o.length),I.weights=o)}}return I},F(A,t,e,s){switch(t.interpolation){case"LINEAR":{const n=this.V(X,t,e,1*s);n&&(A=function(A,t,e,s){for(let n=0;n<A.length;n++)A[n]=t[n]+s*(e[n]-t[n]);return A}(A,n.PREVIOUS,n.NEXT,n.INTERPOLATION));break}case"STEP":{const n=this.V(X,t,e,1*s);n&&(A=function(A,t){for(let e=0;e<A.length;e++)A[e]=t[e];return A}(A,...n.PREVIOUS));break}case"CUBICSPLINE":{const n=this.V(X,t,e,3*s);n&&(A=this.T(A,n,t.input.array,3*s));break}}return A},U(A,t,e){switch(t.interpolation){case"LINEAR":{const s=this.V(X,t,e,1);s&&l(A,s.PREVIOUS,s.NEXT,s.INTERPOLATION);break}case"STEP":{const s=this.V(X,t,e,1);s&&(A=u(A,...s.PREVIOUS));break}case"CUBICSPLINE":{const s=this.V(X,t,e,3);if(s){for(let A=0;A<s.PREVIOUS.length;A++)s.PREVIOUS[A]=Math.acos(s.PREVIOUS[A]),s.NEXT[A]=Math.acos(s.NEXT[A]);A=this.T(A,s,t.input.array,3);for(let t=0;t<A.length;t++)A[t]=Math.cos(A[t])}break}}return A},S(A,t){const e=A.length;let s,n,i,r=0,o=e-1,a=Math.floor((r+o)/2);for(;r<=e-1&&o>=0;){if(r===o)return null;if(A[a]<=t&&t<=A[a+1]){const e=A[a];return s=a,n=a+1,i=(t-e)/(A[a+1]-e),{preIndx:s,nextIndex:n,interpolation:i}}t<A[a]?(o=a,a=Math.floor((r+o)/2)):A[a+1]<t&&(r=a,a=Math.floor((r+o)/2))}return null},V(A,t,e,s){const n=t.input.array,i=t.output.array,r=t.output.itemSize;(e<n[0]||e>n[n.length-1])&&(e=Math.max(n[0],Math.min(n[n.length-1],e))),e===n[n.length-1]&&(e=n[0]);const o=this.S(n,e);if(!o||!o.nextIndex)return null;const{preIndx:a,nextIndex:I,interpolation:h}=o;A.PREINDEX=a,A.NEXTINDEX=I,A.INTERPOLATION=h;const g=r*s;return A.PREVIOUS=i.subarray(A.PREINDEX*g,(A.PREINDEX+1)*g),A.NEXT=i.subarray(A.NEXTINDEX*g,(A.NEXTINDEX+1)*g),A},T(A,t,e,s){const n=t.INTERPOLATION,i=e[t.PREINDEX],r=e[t.NEXTINDEX];for(let e=0;e<3;e++){const o=t.PREVIOUS[s+e],a=(r-i)*t.PREVIOUS[2*s+e],I=t.NEXT[3+e],h=(r-i)*t.NEXT[e],g=(2*Math.pow(n,3)-3*Math.pow(n,2)+1)*o+(Math.pow(n,3)-2*Math.pow(n,2)+n)*a+(2*-Math.pow(n,3)+3*Math.pow(n,2))*I+(Math.pow(n,3)-Math.pow(n,2))*h;A[e]=g}return A},getAnimationClip(A,t,e,s){const n=A.nodes[t]&&A.nodes[t].weights;return g(Z,...W.TRANSLATION),u(Y,...W.ROTATION),g(q,...W.SCALE),this.O(s,A,t,e,Z,Y,q,n)},getTimeSpan(A){if(!A.animations)return null;if(A.timeSpan)return A.timeSpan;const t=A.animations;return A.timeSpan={},t.forEach((t,e)=>{let s=-1/0,n=1/0;const i=t.channels;for(let A=0;A<i.length;A++){const e=i[A],r=t.samplers[e.sampler].input.array;r[r.length-1]>s&&(s=r[r.length-1]),r[0]<n&&(n=r[0])}const r=t.name||e;A.timeSpan[r]={max:s,min:n}}),A.timeSpan},getTimeSpanByName(A,t){const e=this.getTimeSpan(A);return e?D(t)?e[t]:e[Object.keys(e)[0]]:null}};let AA=!1;if("undefined"!=typeof OffscreenCanvas){let A;try{A=new OffscreenCanvas(2,2).getContext("2d")}catch(A){}A&&"undefined"!=typeof createImageBitmap&&(AA=!0)}const tA="undefined"==typeof document?null:document.createElement("canvas");class eA{constructor(A,t,e){if(this.options=e||{},this.options.decoders||(this.options.decoders={}),t.buffer instanceof ArrayBuffer){const{json:e,glbBuffer:s}=j.read(t.buffer,t.byteOffset,t.byteLength);this.k(A,e,s)}else this.k(A,t);this._=new R(this.rootPath,this.gltf,this.glbBuffer),this.N()}N(){const A=this.gltf.extensionsRequired;if(A){if(A.indexOf("KHR_draco_mesh_compression")>=0&&!this.options.decoders.draco)throw new Error("KHR_draco_mesh_compression is required but @maptalks/transcoders.draco is not loaded");if(A.indexOf("KHR_texture_basisu")>=0&&!this.options.decoders.ktx2)throw new Error("KHR_texture_basisu is required but @maptalks/transcoders.ktx2 is not loaded")}}R(){const A=this.gltf.extensions;return A&&A.KHR_techniques_webgl?this._.requestKHRTechniquesWebgl(A.KHR_techniques_webgl).then(t=>(A.KHR_techniques_webgl=t,A)):Promise.resolve(A)}load(A){A=A||{};const t=this.H(A),e=this.J(),s=this.K(),n=this.R();return Promise.all([t,e,s,n]).then(A=>(A[0].animations=A[1],A[0].textures=A[2],A[0].extensions=A[3],A[0].transferables=this.transferables||[],this.createChannelsMap(A[0]),A[0]))}createChannelsMap(A){const t=A.animations;if(t)for(let A=0;A<t.length;A++){const e=t[A];e.channelsMap={};for(let A=0;A<e.channels.length;A++){const t=e.channels[A];e.channelsMap[t.target.node]||(e.channelsMap[t.target.node]=[]),e.channelsMap[t.target.node].push(t)}}}getExternalResources(){const A=[];if(this.gltf){const{buffers:t,images:e}=this.gltf;for(let e=0;e<t.length;e++)t[e].uri&&t[e].uri.indexOf("data:application/octet-stream;base64")<0&&A.push({type:"buffer",uri:t[e].uri});for(let t=0;t<e.length;t++)e[t].uri&&e[t].uri.indexOf("data:image/")<0&&A.push({type:"image",uri:e[t].uri})}return A}static getAnimationClip(A,t,e,s){return $.getAnimationClip(A,t,e,s)}static getAnimationTimeSpan(A,t){return $.getTimeSpanByName(A,t)}static getTypedArrayCtor(A){return d(A)}static readInterleavedArray(A,t,e,s,n,i,r){return U(A,t,e,s,n,i,r)}k(A,t,e){this.gltf=t,this.glbBuffer=e,this.version=t.asset?+t.asset.version:1,this.rootPath=A,this.buffers={},this.requests={},this.options.requestImage=AA?rA.bind(this):this.options.requestImage||sA,this.options.transferable&&(this.transferables=[]),2===this.version?(this.adapter=new J(A,t,e,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{}),this.adapter.iterate((A,t,e)=>{t.id="buffer_"+e},"buffers"),this.adapter.iterate((A,t,e)=>{t.id="image_"+e},"images"),this.adapter.iterate((A,t,e)=>{t.id="accessor_"+e},"accessors")):(this.adapter=new H(A,t,e,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{}),this.adapter.iterate((A,t,e)=>{t.id="accessor_"+e},"accessors"),this.adapter.iterate((A,t,e)=>{t.id="image_"+e},"images"))}j(A,t){if(A.children&&A.children.length>0){if(!("number"==typeof(e=A.children[0])&&isFinite(e)||y(A.children[0])))return A;const s=A.children.map(A=>{const e=t[A];return e.nodeIndex=A,this.j(e,t)});A.children=s}var e;return A}H(A){return this.G(A).then(A=>{const t=this.scenes=[];let e;for(const t in A)A[t]=this.j(A[t],A),A[t].nodeIndex=Number(t)?Number(t):t;this.adapter.iterate((s,n,i)=>{const r={};n.name&&(r.name=n.name),n.nodes&&(r.nodes=n.nodes.map(t=>A[t])),this.gltf.scene===s&&(e=i),t.push(r)},"scenes");const s={textures:this.gltf.textures,asset:this.gltf.asset,scene:e,scenes:t,nodes:A,meshes:this.meshes,materials:this.gltf.materials,skins:this.skins,extensionsRequired:this.gltf.extensionsRequired,extensionsUsed:this.gltf.extensionsUsed};if(this.gltf.extensions&&(s.extensions=this.gltf.extensions),1===this.version){const A=this.adapter.B(this.gltf.materials);s.materials=A}return s})}G(A){return this.Z(A).then(()=>{const A=this.nodes={};return this.adapter.iterate((t,e)=>{const s=this.adapter.createNode(e,this.meshes,this.skins);A[t]=s},"nodes"),A})}Y(){this.skins=[];const A=[];return this.adapter.iterate((t,e,s)=>{A.push(this.q(e).then(A=>{A.index=s,this.skins.push(A)}))},"skins"),A}q(A){const t=A.inverseBindMatrices;return this.adapter.accessor.C("inverseBindMatrices",t).then(t=>(A.inverseBindMatrices=t,t&&t.buffer&&this.transferables&&this.transferables.indexOf(t.buffer)<0&&this.transferables.push(t.buffer),A))}J(){const A=this.gltf.animations;return D(A)?this.adapter.getAnimations(A):null}Z(A){this.meshes={};let t=[];return this.adapter.iterate((e,s,n)=>{t.push(this.W(s,A).then(A=>{A.index=n,this.meshes[e]=A}))},"meshes"),t=t.concat(this.Y()),Promise.all(t)}W(A,t){const e=A.primitives.map(A=>this.X(A,t)).filter(A=>!!A);return Promise.all(e).then(t=>{const e={};return B(e,A),e.primitives=t,e})}K(){const A=this.gltf.textures;if(!A)return null;const t=[];for(const e in A)t.push(this.adapter.v(e));return Promise.all(t).then(t=>{if(this.transferables)for(let A=0;A<t.length;A++){const e=t[A].image.array;if(t[A]&&e){let A;A=e instanceof ImageBitmap?e:e.buffer,A&&this.transferables.indexOf(A)<0&&this.transferables.push(A)}}if(!Array.isArray(A)){const e={},s=Object.keys(A);for(let A=0;A<t.length;A++)t[A]&&(e[s[A]]=t[A]);return e}return t})}X(A,t){let e;const s=[],n=A.extensions;if(D(A.targets))for(let t=0;t<A.targets.length;t++){const e=A.targets[t];for(const A in e){const n=this.adapter.accessor.C(`morphTargets_${A}_${t}`,e[A]);n&&s.push(n)}}if(n&&n.KHR_draco_mesh_compression){if(!this.options.decoders.draco&&(!this.gltf.extensionsRequired||!this.gltf.extensionsRequired.indexOf("KHR_draco_mesh_compression")<0))return null;const A=this.options.decoders.draco,{bufferView:i,attributes:r}=n.KHR_draco_mesh_compression,o=this.gltf.bufferViews[i],a=this._.m(o).then(e=>{const{buffer:s,byteOffset:n}=e;let{byteOffset:i}=o;const a=o.byteLength;i||(i=0);const I=new DataView(s,n+i,a),h={attributes:r,useUniqueIDs:!1,skipAttributeTransform:t.skipAttributeTransform};return A(I,h).then(A=>{const t=Object.values(A.attributes);return A.indices&&t.push(A.indices),t})});s.push(a),e=Promise.all(s)}else{const t=A.attributes;for(const A in t){const e=this.adapter.accessor.C(A,t[A]);e&&s.push(e)}if(D(A.indices)){const t=this.adapter.accessor.C("indices",A.indices);t&&s.push(t)}e=Promise.all(s)}return e.then(t=>{if(n&&n.KHR_draco_mesh_compression){const e=A.targets?A.targets.length:0;t[e]=t[e].concat(t.slice(0,e)),t=t[e]}let e,s;const i={attributes:t.reduce((A,t)=>{if("indices"===t.name)e=t;else if(t.name.indexOf("morphTargets_")>-1)s=s||{},s[t.name.slice(13)]=t;else{if(!("POSITION"!==t.name||t.min&&t.max)){const A=[1/0,1/0,1/0],e=[-1/0,-1/0,-1/0],{itemSize:s,array:n}=t,i=n.length/s;for(let t=0;t<i;t++)for(let i=0;i<s;i++){const r=t*s+i;n[r]<A[i]&&(A[i]=n[r]),n[r]>e[i]&&(e[i]=n[r])}if(t.quantization){const s=t.quantization,n=s.range/(1<<s.quantizationBits),i=s.minValues;f(A,A,n),c(A,A,i),f(e,e,n),c(e,e,i)}t.min=A,t.max=e}A[t.name]=t}return this.transferables&&t.array.buffer&&this.transferables.indexOf(t.array.buffer)<0&&this.transferables.push(t.array.buffer),A},{}),material:A.material};return e&&(i.indices=e),s&&(i.morphTargets=s),i.mode=D(A.mode)?A.mode:4,D(A.extras)&&(i.extras=A.extras),i})}}function sA(A,t){const e=new Image;e.crossOrigin="",e.onload=()=>{if(!tA)return void t(new Error("There is no canvas to draw image!"));tA.width=e.width,tA.height=e.height;const A=tA.getContext("2d",{willReadFrequently:!0});A.drawImage(e,0,0,e.width,e.height);const s=A.getImageData(0,0,e.width,e.height),n={width:e.width,height:e.height,data:new Uint8Array(s.data)};t(null,n)},e.onerror=function(A){t(A)},e.src=A}let nA,iA;function rA(A,t){nA||(nA=new OffscreenCanvas(2,2),iA=nA.getContext("2d",{willReadFrequently:!0}));let e=null;if(y(A))e=fetch(A).then(A=>A.arrayBuffer()).then(A=>{const t=new Blob([new Uint8Array(A)]);return createImageBitmap(t)});else{const t=new Blob([A]);e=createImageBitmap(t)}e.then(oA.bind(this)).then(A=>{t(null,A)}).catch(A=>{console.warn(A),t(A)})}function oA(A){let{width:t,height:e}=A;aA(t)||(t=IA(t)),aA(e)||(e=IA(e));const s=this.options.maxTextureSize;s&&(t=Math.min(s,t),e=Math.min(s,e)),nA.width=t,nA.height=e,iA.drawImage(A,0,0,t,e),A.close();const n=iA.getImageData(0,0,t,e);return{width:t,height:e,data:new Uint8Array(n.data)}}function aA(A){return 0==(A&A-1)&&0!==A}function IA(A){return Math.pow(2,Math.floor(Math.log(A)/Math.LN2))}const hA=[];function gA(A,e,s,n,r,o){const a=[],I=t.quat.fromEuler([],s[0],s[1],s[2]),h=t.mat4.fromRotationTranslationScale([],I,e,n);return function(A){return new eA("",i[A]).load().then(A=>A)}(A).then(A=>{t.reshader.GLTFHelper.exportGLTFPack(A).getMeshesInfo().forEach((A,i)=>{const I=new t.reshader.Material({color:r||A.materialInfo.baseColorFactor}),g=new t.reshader.Mesh(A.geometry,I);g.setUniform("uPickingId",o+i);const c=g.getDefines();c.HAS_PICKING_ID=2,g.setDefines(c),g.translate=e,g.rotation=s,g.scaling=n,t.mat4.multiply(g.localTransform,h,A.nodeMatrix),g.originTransform=t.mat4.copy([],g.localTransform),g.originColor=r||A.materialInfo.baseColorFactor,a.push(g)})}),a}function cA(A,t){return Math.abs(A)*Math.sign(t)}function fA(A,e){const s=A.getCoordinates(),i=e.coordinateToPointAtRes(s,e.getGLRes()),r=[i.x,i.y,0],o=uA(e,A.getTranslation());t.vec3.add(r,r,o);const a=function(A,t,e,s){return A._pointAtResToContainerPoint(t,e,s)}(e,new n.Point(r[0],r[1]),e.getGLRes());a.x+=170;const I=function(A,e,s,i){if(i){const r=s/A._getResolution(),o=A.width/2,a=A.height/2;hA[0]=(e.x-o)/o,hA[1]=e.y/a-1,hA[3]=i*r;const I=t.mat4.invert([],A.projViewMatrix);t.vec3.transformMat4(hA,hA,I);const h=A.getGLScale();return t.vec3.set(hA,hA[0]/h,hA[1]/h,hA[2]/h),t.vec3.scale(hA,hA,1/r),new n.Point(hA[0],hA[1])}{const t=A.containerPointToCoordinate(e);return A.coordinateToPointAtRes(t,s)}}(e,a,e.getGLRes());return Math.sqrt(Math.pow(I.x-r[0],2)+Math.pow(I.y-r[1],2))/5.272881136101205}function uA(A,e){if(!A)return e;const s=A.distanceToPointAtRes(e[0],e[1],A.getGLRes()),n=A.altitudeToPoint(e[2],A.getGLRes());return t.vec3.set([],cA(s.x,e[0]),cA(s.y,e[1]),cA(n,e[2]))}class CA{constructor(A){this.$=A,this._meshes=this.AA()}setCoordinate(A){this.$=A}AA(){const A=[],t=340/177,e=gA("jiantou",[1.2*t,0,0],[0,0,90],[t,t,t],[89/255,206/255,147/255,0],7),s=gA("jiantou",[0,1.2*t,0],[0,0,180],[t,t,t],[89/255,206/255,147/255,0],8),n=gA("jiantou",[-1.2*t,0,0],[0,0,270],[t,t,t],[89/255,206/255,147/255,0],9),i=gA("jiantou",[0,-1.2*t,0],[0,0,0],[t,t,t],[89/255,206/255,147/255,0],10);return A.push(e,s,n,i),A}getMeshes(){return this._meshes}}class wA{constructor(A){this.$=A,this._meshes=this.AA()}setCoordinate(A){this.$=A}AA(){const A=[],t=gA("xuanzhuan",[0,0,0],[180,0,0],[340/177*.5,340/177*.5,340/177*.5],[50/255,130/255,184/255,.8],11);return A.push(t),A}getMeshes(){return this._meshes}}class lA{constructor(A){this.$=A,this._meshes=this.AA()}setCoordinate(A){this.$=A}AA(){const A=[],t=gA("yuanhuan",[0,0,0],[0,0,0],[340/177*.5,340/177*.5,340/177*.5],[149/255,179/255,199/255,.5],12);return A.push(t),A}getMeshes(){return this._meshes}}class QA{constructor(A){this.$=A,this._meshes=this.AA()}setCoordinate(A){this.$=A}AA(){const A=[],t=gA("plane",[0,0,0],[0,0,0],[10,10,10],[1,0,0,.5],16);return A.push(t),A}getMeshes(){return this._meshes}}class mA{constructor(A){this.$=A,this._meshes=this.AA()}setCoordinate(A){this.$=A}AA(){const A=[],t=gA("xyzScale",[0,0,0],[0,0,0],[2,2,2],null,113);return A.push(t),A}getMeshes(){return this._meshes}}const PA=[],bA=[],DA=[],yA=[],BA=[],dA=[177/170,177/170,177/170],pA=[1,2,3,4,12];class vA{constructor(){this.translate=new CA,this.rotation=new wA,this.scaling=new lA,this.planeHelper=new QA,this.xyzScaleHelper=new mA,this._meshes=this.AA(),this.tA=!0}AA(){const A={};A.translate=this.translate.getMeshes(),A.rotation=this.rotation.getMeshes(),A.scaling=this.scaling.getMeshes(),A.planeHelper=this.planeHelper.getMeshes(),A.xyzScale=this.xyzScaleHelper.getMeshes();const t=340/177,e=gA("yuanhuan41",[-2.745*t,2.745*t,0],[90,0,0],[.5*t,.5*t,.5*t],[149/255,179/255,199/255,.6],1),s=gA("yuanhuan41",[2.745*t,2.745*t,0],[-90,0,180],[.5*t,.5*t,.5*t],[50/255,130/255,184/255,.5],2),n=gA("yuanhuan41",[2.745*t,-2.745*t,0],[90,0,180],[.5*t,.5*t,.5*t],[149/255,179/255,199/255,.6],3),i=gA("yuanhuan41",[-2.745*t,-2.745*t,0],[-90,0,0],[.5*t,.5*t,.5*t],[50/255,130/255,184/255,.5],4),r=gA("yuanpan",[0,0,0],[90,0,0],[.5*t,.5*t,.5*t],[89/255,206/255,147/255,.5],5),o=gA("zzhou",[0,0,6.5],[90,0,0],[1,1,1],[14/255,127/255,191/255,1],6);return A.translate.push(e,s,n,i,r,o),A}updateMatrix(A,e,s,n,i){const r=e.getCoordinates(),o=A.coordinateToPointAtRes(r,A.getGLRes()),a=e.eA();t.vec3.set(bA,o.x,o.y,a);const I=t.vec3.copy(PA,i),h=uA(A,e.getTranslation());t.vec3.add(bA,bA,h),t.vec3.add(bA,bA,I);for(const i in this._meshes)for(let r=0;r<this._meshes[i].length;r++){const o=this._meshes[i][r];for(let r=0;r<o.length;r++){const a=o[r],I=a.getUniform("uPickingId"),h=t.vec3.copy(PA,a.translate),g=[a.rotation[0],a.rotation[1],a.rotation[2]],c=a.scaling;if(11===I&&(this.tA?(g[2]+=s,a.rotation[2]+=s):this.tA||(g[2]+=s,a.rotation[2]+=s,g[0]=360,g[2]-=90)),pA.indexOf(I)>-1)if(12!==I)c[0]+=n,c[1]+=n,c[2]+=n;else{const A=this._meshes.translate[4][0];c[0]=1.2*A.scaling[0],c[1]=1.2*A.scaling[0],c[2]=1.2*A.scaling[0]}let f=fA(e,A);if(f=t.vec3.set(DA,f,f,f),t.vec3.multiply(h,h,f),t.vec3.multiply(f,f,c),1===I||2===I||3===I||4===I){const A=t.vec3.multiply(BA,c,dA);t.vec3.multiply(h,h,A)}const u=t.quat.fromEuler(yA,g[0],g[1],g[2]);if(t.vec3.add(h,h,bA),"xyzScale"===i){const A=t.mat4.fromRotationTranslationScale([],u,h,f);t.mat4.multiply(a.localTransform,A,a.originTransform)}else t.mat4.fromRotationTranslationScale(a.localTransform,u,h,f)}}}getMeshes(A){const t={};return A?("xyzScale"===A?t[A]=this._meshes[A]:(t.translate=this._meshes.translate,"translate"!==A&&(t[A]=this._meshes[A])),t):t}sA(A){this.tA=A}dispose(){for(const A in this._meshes)for(let t=0;t<this._meshes[A].length;t++){const e=this._meshes[A][t];for(let A=0;A<e.length;A++){const t=e[A];t.geometry.dispose(),t.dispose()}}}}const MA=[];class LA{constructor(){this.nA=[],this.iA=[0,0,0],this.rA=[1,1,1],this.oA=[0,0,0]}aA(A){Array.isArray(A)?A.forEach(A=>{this.aA(A)}):(A.on("remove",this.IA,this),A.hA={coordinate:A.getCoordinates(),translation:A.getTranslation(),rotation:A.getRotation(),scale:A.getScale()},this.nA.push(A))}gA(){this.nA.forEach(A=>{A.off("remove",this.IA,this)}),this.nA=[]}cA(A,s,n,i,r,o,a){for(let I=0;I<this.nA.length;I++){const h=this.nA[I],g=h.getCoordinates(),c=o.coordinateToPointAtRes(g,o.getGLRes()),f=h.getRotation(),u=h.getScale(),C=t.vec3.set([],c.x,c.y,g.z||0),w=t.vec3.add(C,C,s),l=o.pointAtResToCoordinate(new e.Coordinate(w[0],w[1]),o.getGLRes());l.z=w[2];let Q=null;Q=i>=0?i:i*(this.options&&this.options.scaleStrength||1);const m=t.vec3.add([],t.vec3.set(MA,Q,Q*(u[1]/u[0]),Q*(u[2]/u[0])),u);if(Math.min(...m)<r){const A=Math.min(...m);m[0]=m[0]*(r/A),m[1]=m[1]*(r/A),m[2]=m[2]*(r/A)}const P=t.vec3.add(f,n,f);if(A.indexOf("translate")>-1)a.fire("positionchange",{action:A,type:"positionchange",target:this,coordinate:l}),h.setCoordinates(l);else{this.fA(A,m,u);const t=h.getTranslation();h.setTRS(t,P,m),a.fire("transforming",{action:this.uA,type:"transforming",target:this,translate:t,rotation:P,scale:m})}}}fA(A,t,e){return"x-scale"===A&&(t[1]=e[1],t[2]=e[2]),"y-scale"===A&&(t[0]=e[0],t[2]=e[2]),"z-scale"===A&&(t[0]=e[0],t[1]=e[1]),t}CA(){this.nA.forEach(A=>{if(A.hA){const{coordinate:t,translation:e,rotation:s,scale:n}=A.hA;A.setCoordinates(t),A.setTRS(e,s,n)}})}getScale(){return this.rA}getTranslation(){return this.iA}getRotation(){return this.oA}wA(){return this.nA[0]?this.nA[0].getLayer():null}getCoordinates(){let A=0,t=0,s=0;const n=this.nA.length;if(!n)return null;for(let e=0;e<n;e++){const n=this.nA[e].getCenter();A+=n.x,t+=n.y,s+=n.z||0}return A/=n,t/=n,s/=n,new e.Coordinate(A,t,s)}IA(A){const t=A.target,e=this.nA.indexOf(t);e>-1&&(delete t.hA,this.nA.splice(e,1))}getTargets(){return this.nA}eA(){let A=0;const t=this.nA.length;for(let e=0;e<t;e++){A+=this.nA[e].getPointZ()}return A/=t,A}lA(){for(let A=0;A<this.nA.length;A++)if(this.nA[A].isVisible())return!0;return!1}}const EA=[5,6,7,8,9,10],OA=[5,7,8,9,10],FA=[2,4,11],xA=[1,3,12],UA=[12,16],VA=[1,2,3,4],TA=[1,2,3,4,12],SA=[],kA=[],_A=[],NA=[],RA=[],HA=[],JA=[];class KA extends(e.Eventable(e.Handlerable(e.Class))){constructor(A={}){super(A),this.options=A,this.mouseAction="moving",this.QA=this.options.mode||"translate",this.mA=!0,this.TransformHelper=new vA,this.PA=new LA,this.helperScene=new t.reshader.Scene([]),this.addToMapCount=0}enable(){return this.mA=!0,this.layerRenderer&&this.layerRenderer.setToRedraw(),this}disable(){return this.mA=!1,this.layerRenderer&&this.layerRenderer.setToRedraw(),this.map&&this.map.resetCursor(),this}setMode(A){this.QA=A,this.layerRenderer&&this.layerRenderer.setToRedraw()}getMode(){return this.QA}isEnable(){return this.mA}bA(A){EA.indexOf(A)>-1?this.QA="translate":FA.indexOf(A)>-1?this.QA="rotation":xA.indexOf(A)>-1?this.QA="scaling":"xyzScale"!==this.QA&&(this.QA="translate")}DA(){return this.QA}addTo(A){this.map&&(this.yA(),console.warn("transform control has been added to a map, it suggest remove from the map before")),this.addToMapCount++,this.map=A,this.container=A.getContainer(),A.on("dom:mousemove",this.BA,this),A.on("dom:mousedown",this.dA,this),A.on("dom:mouseup",this.pA,this),A.on("zooming moving dragrotating",this.vA,this),this.MA()}remove(){this.map&&this.container&&this.layerRenderer&&(this.yA(),this.TransformHelper.dispose(),this.layerRenderer.setToRedraw(),delete this.map,delete this.layer,delete this.layerRenderer,delete this.container,delete this.PA)}yA(){this.container&&this.map&&(this.map.off("dom:mousemove",this.BA,this),this.map.off("dom:mousedown",this.dA,this),this.map.off("dom:mouseup",this.pA,this),this.map.off("zooming moving dragrotating",this.vA,this),this.layer&&this.layer.off("renderend",this.render,this))}BA(A){if(this.LA()){if(this.currentMousePosition={x:A.containerPoint.x,y:A.containerPoint.y},"moving"===this.mouseAction){const A=this.EA();this.currentPickingObject=this.OA(this.currentMousePosition,A,"meshes"),this.currentPickingObject&&null!=this.currentPickingObject.pickingId?(this.bA(this.currentPickingObject.pickingId),6===this.currentPickingObject.pickingId?this.FA(!0):this.FA(!1)):(this.FA(!1),this.bA()),this.xA()}this.UA(this.currentMousePosition)}}dA(A){if(!this.LA())return;const t=this.EA();this.currentMousePosition={x:A.containerPoint.x,y:A.containerPoint.y},this.VA=!0,this.currentPickingObject=this.OA(this.currentMousePosition,t,"meshes"),this.firstDownPoint=this.OA(this.currentMousePosition,t,"meshes"),this.currentPickingObject&&null!=this.currentPickingObject.meshId?(this.mouseAction="transform",this.TA(this.currentPickingObject.pickingId),this.map.config("zoomable",!1),this.map.config("draggable",!1),this.layerRenderer&&this.layerRenderer.setToRedraw()):(this.mouseAction="pan",this.map.config("zoomable",!0),this.map.config("draggable",!0),this.SA()),this.lastMousePosition=this.currentMousePosition,this.lastPickingObject=this.currentPickingObject,this.lastPickingMesh=t[this.currentPickingObject.meshId]}pA(){"transform"===this.mouseAction&&(this.firstDownPoint=null,this.SA(),this.VA=!0,this.fire("transformend",{action:this.uA,type:"transformend"})),this.mouseAction="moving","xyzScale"!==this.QA&&(this.QA="translate"),this.map.config("zoomable",!0),this.map.config("draggable",!0),this.layerRenderer&&this.layerRenderer.setToRedraw()}vA(){const A=this.TransformHelper.planeHelper.getMeshes()[0][0],t=this.map.getBearing();A.rotation[2]=-t,this.kA()}kA(){this.LA()&&(this.TransformHelper.updateMatrix(this.map,this.PA,0,0,[0,0,0]),this.VA=!0)}picked(A){if(!this.layerRenderer)return!1;const t=this.EA(),s=this.map;let n=A;A instanceof e.Point||(n=s.coordinateToContainerPoint(new e.Coordinate(A)));const i=this.OA(n,t,"picked");return!(!i||null===i.meshId)}SA(){const A=this.TransformHelper.getMeshes("scaling").scaling[0][0];A.scaling=[340/177*.6,340/177*.6,340/177*.6],this.layerRenderer&&(this._A(A),this.NA())}NA(){this.TransformHelper._meshes.translate.forEach(A=>{for(let t=0;t<A.length;t++){const e=A[t];VA.indexOf(e.getUniform("uPickingId"))>-1&&e.material.set("color",e.originColor)}})}_A(A){const e=this.PA.getCoordinates(),s=this.map.coordinateToPointAtRes(e,this.map.getGLRes()),n=[s.x,s.y,0],i=uA(this.map,this.PA.getTranslation());t.vec3.add(n,n,i);const r=t.vec3.copy([],A.translate),o=A.scaling;let a=fA(this.PA,this.map);a=t.vec3.set([],a,a,a),t.vec3.multiply(r,r,a),t.vec3.multiply(a,a,o),t.vec3.add(r,r,n),t.mat4.fromRotationTranslationScale(A.localTransform,[0,0,0,1],r,a);this.EA().forEach(A=>{const e=A.getUniform("uPickingId");if(1===e||3===e||2===e||4===e){const e=t.vec3.copy([],A.translate),s=170/177;A.scaling=[s,s,s];const i=A.scaling,r=A.rotation;let o=fA(this.PA,this.map);o=t.vec3.set([],o,o,o),t.vec3.multiply(e,e,o),t.vec3.multiply(o,o,i),t.vec3.add(e,e,n);const a=t.quat.fromEuler([],r[0],r[1],r[2]);t.mat4.fromRotationTranslationScale(A.localTransform,a,e,o)}})}RA(A){const t=this.map.containerPointToCoordinate(A),e=this.map.coordinateToPointAtRes(t,this.map.getGLRes());return{point:[e.x,e.y]}}UA(A){if("transform"===this.mouseAction){const A=this.DA(),s=uA(this.map,this.PA.getTranslation()),n=this.PA.eA();let i=null,r=null;if(s[2]+n<.01&&"z-translate"!==this.uA)i=this.RA(this.currentMousePosition),r=this.RA(this.lastMousePosition);else{const A=this.TransformHelper.planeHelper.getMeshes()[0];if(i=this.OA(this.currentMousePosition,A,"plane"),r=this.OA(this.lastMousePosition,A,"plane"),!i||null===i.meshId||!r||null===r.meshId)return}const o=[0,0,0],a=[0,0,0];let I=0,h=0,g=0;if("translate"===A){if("xy-translate"===this.uA){const A=i.point[0]-r.point[0],t=i.point[1]-r.point[1];o[0]=A,o[1]=t}else if("x-translate"===this.uA){const A=i.point[0]-r.point[0];o[0]=A}else if("y-translate"===this.uA){const A=i.point[1]-r.point[1];o[1]=A}else if("z-translate"===this.uA){let A=0;if(this.HA()){const s=this.map.getGLRes(),n=this.map._pointAtResToContainerPoint(new e.Point(r.point[0],r.point[1]),s),o=this.map._pointAtResToContainerPoint(new e.Point(i.point[0],i.point[1]),s),a=t.vec2.length(t.vec2.set(NA,i.point[0]-r.point[0],i.point[1]-r.point[1]));A=o.y<n.y?a:-a}else A=i.point[2]-r.point[2];o[2]=Math.sign(A)*this.map.pointAtResToAltitude(A,this.map.getGLRes())}}else if("rotation"===A)h=this.JA(i.point,r.point),h>=0?this.TransformHelper.sA(!0):this.TransformHelper.sA(!1),a[2]+=h;else if("scaling"===A||"xyzScale"===A){const A=this.KA(),e=t.vec2.length(t.vec2.set(NA,this.firstDownPoint.point[0]-A[0],this.firstDownPoint.point[1]-A[1])),s=t.vec2.length(t.vec2.set(NA,r.point[0]-A[0],r.point[1]-A[1]));I=this.jA(i.point,r.point,A,s),g=this.jA(i.point,r.point,A,e)}this.TransformHelper.updateMatrix(this.map,this.PA,h,g,o),this.PA.cA(this.uA,o,a,I,.01,this.map,this)}this.lastMousePosition=A,this.lastPickingObject=this.currentPickingObject;const s=this.EA();this.lastPickingMesh=s[this.currentPickingObject.meshId]}jA(A,e,s,n,i){const r=(t.vec2.length(t.vec2.set(NA,A[0]-s[0],A[1]-s[1]))-t.vec2.length(t.vec2.set(NA,e[0]-s[0],e[1]-s[1])))/n;return i?(i[0]-.01)*r:r}KA(){const A=this.map,e=this.PA.getCoordinates(),s=A.coordinateToPointAtRes(e,A.getGLRes()),n=t.vec3.set(RA,s.x,s.y,0),i=uA(A,this.PA.getTranslation());return t.vec3.add(n,n,i),n}FA(A){const e=this.TransformHelper.planeHelper.getMeshes()[0][0],s=t.mat4.getTranslation(_A,e.localTransform),n=t.mat4.getScaling(kA,e.localTransform);let i=t.quat.fromEuler(SA,0,0,0);const r=this.map.getBearing();A&&!this.HA()?(i=t.quat.fromEuler(SA,90,0,-r),0===e.rotation[0]&&(this.VA=!0),t.vec3.set(e.rotation,90,0,-r)):(90===e.rotation[0]&&(this.VA=!0),t.vec3.set(e.rotation,0,0,-r)),t.mat4.fromRotationTranslationScale(e.localTransform,i,s,n)}HA(){if(this.map.getPitch())return!1;const A=this.map.cameraPosition,e=this.map.coordinateToPointAtRes(this.map.getCenter(),this.map.getGLRes());t.vec3.set(e,e.x,e.y,0);const s=this.PA.getCoordinates(),n=this.map.coordinateToPointAtRes(s,this.map.getGLRes()),i=uA(this.map,this.PA.getTranslation()),r=t.vec3.set(_A,n.x,n.y,0),o=t.vec3.add(r,r,i),a=t.vec3.subtract([],A,o),I=t.vec3.subtract([],A,e);return t.vec3.angle(a,I)<1/180*Math.PI}xA(){const A=this.EA();if(this.currentPickingObject&&null!=this.currentPickingObject.meshId){this.zA(),this.lastPickingObject&&null!=this.lastPickingObject.meshId&&this.lastPickingObject.meshId!==this.currentPickingObject.meshId&&this.GA();const t=A[this.currentPickingObject.meshId];if(t&&UA.indexOf(this.currentPickingObject.pickingId)<0){const A=[t.originColor[0],t.originColor[1],t.originColor[2],.8];t.material.set("color",A),this.ZA(t,.5)}this.layerRenderer.setToRedraw()}else this.lastPickingObject&&null!=this.lastPickingObject.meshId&&(this.map.resetCursor(),this.GA(),this.layerRenderer.setToRedraw())}zA(){6===this.currentPickingObject.pickingId?this.map.setCursor("ns-resize"):OA.indexOf(this.currentPickingObject.pickingId)>-1?this.map.setCursor("move"):this.map.setCursor("pointer")}GA(){const A=this.lastPickingMesh;if(!A)return;const t=A.getUniform("uPickingId"),e=this.EA();OA.indexOf(t)>-1?e.forEach(A=>{OA.indexOf(A.getUniform("uPickingId"))>-1&&A.material.set("color",A.originColor)}):TA.indexOf(t)>-1?e.forEach(A=>{const t=A.getUniform("uPickingId");VA.indexOf(t)>-1&&A.material.set("color",A.originColor)}):11===t&&e.forEach(A=>{VA.indexOf(A.getUniform("uPickingId"))>-1&&A.material.set("color",A.originColor)}),A.material.set("color",A.originColor)}ZA(A,t){const e=A.getUniform("uPickingId"),s=this.EA();OA.indexOf(e)>-1?s.forEach(e=>{if(OA.indexOf(e.getUniform("uPickingId"))>-1&&e.getUniform("uPickingId")!==A.getUniform("uPickingId")){const A=[e.originColor[0],e.originColor[1],e.originColor[2],t];e.material.set("color",A)}}):"scaling"===this.QA?s.forEach(A=>{const t=A.getUniform("uPickingId");if(1===t||3===t||2===t||4===t){const t=[149/255,179/255,199/255,.8];A.material.set("color",t)}}):"rotation"===this.QA&&s.forEach(A=>{const t=A.getUniform("uPickingId");if(1===t||3===t||2===t||4===t){const t=A.originColor;A.material.set("color",[t[0],t[1],t[2],0])}})}reset(){this.map&&this.PA&&(this.PA.CA(),this.TransformHelper.updateMatrix(this.map,this.PA,0,0,[0,0,0]))}JA(A,e){const s=this.KA(),n=t.vec2.set(HA,e[0]-s[0],e[1]-s[1]),i=t.vec2.set(JA,A[0]-s[0],A[1]-s[1]),r=Math.atan2(n[1],n[0]);return(Math.atan2(i[1],i[0])-r)/Math.PI*180}TA(A){return this.uA=113===A||114===A?"x-scale":115===A||116===A?"z-scale":117===A||118===A?"y-scale":119===A?"xyz-scale":5===A?"xy-translate":6===A?"z-translate":7===A||9===A?"x-translate":8===A||10===A?"y-translate":11===A?"z-rotate":"scale",this.uA}transform(A){if(!A)return;if(this.layerRenderer&&this.layerRenderer.layer&&(this.layerRenderer.layer.off("renderend",this.render),this.layerRenderer.layer.off("resizeCanvas",this.YA)),!this.map)return void console.error("should add to a target first");if(this.PA&&(this.PA.gA(),this.PA.aA(A)),!this.PA.getTargets().length)return;const t=this.map;this.TransformHelper.updateMatrix(t,this.PA,0,0,[0,0,0]),this.qA(),this.VA=!0}getTransformTarget(){return this.PA}IA(){delete this.PA}qA(){const A=this.PA.wA();A&&(A.off("renderend",this.render),A.off("resizeCanvas",this.YA));const e=this.map.getLayers();let s=null;for(let A=0;A<e.length;A++)if(e[A]instanceof t.GroupGLLayer){s=e[A];break}if(!s)return;const n=s.getLayers(),i=n.indexOf(A);if(i<0)return;n.splice(i,1),n.push(A);const r=this.map,o=A.getRenderer();this.layerRenderer=o,this.regl=o.regl,this.renderer=o.renderer,this.WA=this.layerRenderer.getFBORayPicking(),this.XA={projViewMatrix:r.projViewMatrix},A.on("renderend",this.render,this),A.on("resizeCanvas",this.YA,this),o.setToRedraw()}YA(){this.WA.clear(),this.VA=!0}OA(A,t,e){const s=this.map;if(!(s&&this.WA&&this.layerRenderer&&this.layerRenderer.canvas))return null;const n=s.getDevicePixelRatio(),i=A.x*n,r=A.y*n,o={projViewMatrix:this.map.projViewMatrix,pointSize:1},a=this.layerRenderer.canvas.gl&&this.layerRenderer.canvas.gl.wrap;(this.VA||a||!this.$A||this.$A!==e)&&(this.WA.render(t,o,!0),this.$A=e,this.VA=!1);return this.WA.pick(i,r,10,o,{viewMatrix:this.map.viewMatrix,projMatrix:this.map.projMatrix,returnPoint:!0})}MA(){const A=this.map.getDevicePixelRatio(),e={x:0,y:0,width:()=>this.map?this.map.width*A:1,height:()=>this.map?this.map.height*A:1};this.At=new t.reshader.MeshShader({vert:"attribute vec3 aPosition;\n\nuniform mat4 projViewModelMatrix;\n\n\n\nvoid main()\n\n{\n\n gl_Position = projViewModelMatrix * vec4(aPosition, 1.0);\n\n\n\n}\n\n",frag:"precision mediump float;\n\nuniform vec4 color;\n\n\n\nvoid main() {\n\n gl_FragColor = color;\n\n}\n\n",uniforms:["color",{name:"projViewModelMatrix",type:"function",fn:function(A,e){return t.mat4.multiply([],e.projViewMatrix,e.modelMatrix)}}],extraCommandProps:{viewport:e,depth:{enable:!0,func:"always",mask:!0,range:[0,0]},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"}},defines:{}})}render(){if(!this.LA())return;const A=this.EA();this.helperScene.setMeshes(A);const t=this.layerRenderer.getFrameContext();if(t&&t.renderTarget&&this.layerRenderer.getFrameTimestamp()!==t.timestamp)return;this.kA(),this.At.filter=t&&t.sceneFilter;const e=t&&t.renderTarget&&t.renderTarget.fbo;this.renderer.render(this.At,this.XA,this.helperScene,e)}EA(){let A=[];const t=this.TransformHelper.getMeshes(this.QA);for(const e in t){if("translate"===e)continue;const s=t[e];for(let t=0;t<s.length;t++)A=A.concat(s[t])}const e=t.translate;if(e)for(let t=0;t<e.length;t++)A=A.concat(e[t]);return A}LA(){const A=this.layerRenderer,t=A&&A.layer;return A&&this.PA&&t&&t.isVisible()&&this.PA.lA()&&this.regl&&this.mA}}KA.mergeOptions({scaleStrength:2}),A.TransformControl=KA,Object.defineProperty(A,"A",{value:!0}),"undefined"!=typeof console&&console.log("@maptalks/transform-control v0.90.0")}));
12
+ let P=0;function b(A){return null==A}function D(A){return!b(A)}function y(A){return!b(A)&&("string"==typeof A||null!==A.constructor&&A.constructor===String)}function B(A){for(let t=1;t<arguments.length;t++){const e=arguments[t];for(const t in e)A[t]=e[t]}return A}function d(A){switch(A){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array}throw new Error("unsupported bufferView's component type: "+A)}function p(A){return 0===A.indexOf("data:")&&A.indexOf("base64,")>0}function v(A){const t=function(A){return"undefined"!=typeof self?self.atob(A):window.atob(A)}(A.substring(A.indexOf(",")+1)),e=t.length,s=new Uint8Array(e);for(let A=0;A<e;A++)s[A]=t.charCodeAt(A);return s.buffer}const M=[],L=[],E=[],O=[0,0,0],F=function(A){return A[0]=0,A[1]=0,A[2]=0,A[3]=1,A}([]),x=[1,1,1];function U(A,t,e,s,n,i,r){const o=d(r);if((0===n||n===s*o.BYTES_PER_ELEMENT)&&i%o.BYTES_PER_ELEMENT==0){const n=new o(t,i,e*s);return A.set(n),A}0===n&&(n=s*o.BYTES_PER_ELEMENT);const a=new Uint8Array(s*o.BYTES_PER_ELEMENT);for(let r=0;r<e;r++){let e=null;const I=new Uint8Array(t,n*r+i,s*o.BYTES_PER_ELEMENT);a.set(I),e=new o(a.buffer,0,s);for(let t=0;t<s;t++)A[r*s+t]=e[t]}return A}const V="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function T(A,t,e){const s=new Uint8Array(A,t,e);return V.decode(s)}const S={get:function(A,t={}){t||(t={});const e=new AbortController,s=e.signal,n=B({},t);n.signal=s,n.method||(n.method="GET");const i=fetch(A,n).then(A=>{const e=this.t(A,t.responseType);return e.message?e:e.then(e=>"arraybuffer"===t.responseType?{data:e,cacheControl:A.headers.get("Cache-Control"),expires:A.headers.get("Expires"),contentType:A.headers.get("Content-Type")}:e).catch(A=>{if(!A.code||A.code!==DOMException.ABORT_ERR)throw A})}).catch(A=>{if(!A.code||A.code!==DOMException.ABORT_ERR)throw A});return i.xhr=e,i},t:(A,t)=>200!==A.status?{status:A.status,statusText:A.statusText,message:`incorrect http request with status code(${A.status}): ${A.statusText}`}:"arraybuffer"===t?A.arrayBuffer():"json"===t?A.json():A.text(),getArrayBuffer:(A,t={})=>(t||(t={}),t.responseType="arraybuffer",S.get(A,t)),getJSON:function(A,t={}){return t&&t.jsonp?S.jsonp(A):((t=t||{}).responseType="json",S.get(A,t))},jsonp:function(A){const t="_maptalks_jsonp_"+P++;A.match(/\?/)?A+="&callback="+t:A+="?callback="+t;let e=document.createElement("script");return e.type="text/javascript",e.src=A,new Promise(A=>{window[t]=function(s){document.getElementsByTagName("head")[0].removeChild(e),e=null,delete window[t],A(s)},document.getElementsByTagName("head")[0].appendChild(e)})}};class k{constructor(A,t,e){this.s=A,this.decoders=t,this.i=e,this.images={},this.o={}}requestImageFromBufferURI(A,t,e){if(this.buffers[A.id]){const s=this.buffers[A.id],n=this.I(t,s);return this.getImageByBuffer(n,e)}if(this.o[A.id])return this.o[A.id].then(()=>{const s=this.buffers[A.id],n=this.I(t,s);return this.getImageByBuffer(n,e)});if(p(A.uri)){const s=this.buffers[A.id]=v(A.uri),n=this.I(t,s);return this.getImageByBuffer(n,e)}return this.o[A.id]=S.getArrayBuffer(A.uri,null).then(s=>{const n=this.buffers[A.id]=s.data,i=this.I(t,n);return this.getImageByBuffer(i,e)})}getImageByBuffer(A,t){if(this.images[t.id])return Promise.resolve(this.images[t.id]);const e=this.decoders;return e[t.mimeType]?e[t.mimeType](A,{supportedFormats:this.i}):"image/crn"===t.mimeType||"image/ktx2"===t.mimeType||"image/cttf"===t.mimeType?(console.warn("missing transcoder for "+t.mimeType,", visit https://maptalks.com/docs/transcoders for details"),Promise.resolve(null)):this.h(t.id,A)}requestExternalImage(A){if(this.images[A.id])return Promise.resolve(this.images[A.id]);const t=0===A.uri.indexOf("data:image/")?A.uri:this.rootPath+"/"+A.uri;return this.o[A.id]?this.o[A.id].then(()=>this.images[A.id]):this.o[A.id]=this.h(A.id,t)}h(A,t){return new Promise((e,s)=>{this.s(t,(n,i)=>{n?s(n):(URL.revokeObjectURL(t),this.images[A]=i,e(this.images[A]))})})}}const _=["SCALAR",1,"VEC2",2,"VEC3",3,"VEC4",4,"MAT2",4,"MAT3",9,"MAT4",16],N=[];class R{constructor(A,t,e){this.rootPath=A,this.gltf=t,this.g=!1,this.glbBuffer=e,this.buffers={},this.requests={},this.accessors={},this.u()}C(A,t){const e=this.gltf,s=e.accessors[t];if(void 0===s.bufferView)return this.accessors[s.id]=this.l(A,t,null,0),Promise.resolve(this.accessors[s.id]);if(s&&this.accessors[s.id])return Promise.resolve(this.accessors[s.id]);const n=e.bufferViews[s.bufferView];return this.m(n).then(e=>{const{buffer:n,byteOffset:i}=e;return this.accessors[s.id]=this.l(A,t,n,i)})}m(A){const t=this.gltf.buffers[A.buffer];if(this.buffers[t.id]){const A=this.buffers[t.id];return Promise.resolve({buffer:A,byteOffset:0})}if(this.requests[t.id])return this.requests[t.id].then(()=>{const A=this.buffers[t.id];return Promise.resolve({buffer:A,byteOffset:0})});if("binary_glTF"!==A.buffer&&"KHR_binary_glTF"!==A.buffer&&t.uri){if(p(t.uri)){const A=this.buffers[t.id]=v(t.uri);return Promise.resolve({buffer:A,byteOffset:0})}let A;const e=t.uri.indexOf("blob:")>=0;return A=t.uri.indexOf("://")>0||e?t.uri:this.rootPath+"/"+t.uri,this.requests[t.id]=S.getArrayBuffer(A,null).then(s=>(e&&URL.revokeObjectURL(A),{buffer:this.buffers[t.id]=s.data,byteOffset:0}))}return Promise.resolve({buffer:this.glbBuffer.buffer,byteOffset:this.glbBuffer.byteOffset})}l(A,t,e,s=0){const n=this.gltf,i=n.accessors[t],r=void 0!==i.bufferView?n.bufferViews[i.bufferView]:{},o=(r.byteOffset||0)+s,a=this.P(i.type),I=d(i.componentType),h=r.byteStride||0,g={array:void 0,name:A,accessorName:t,byteLength:i.count*a*I.BYTES_PER_ELEMENT,componentType:i.componentType,count:i.count,type:i.type,itemSize:a,max:i.max,min:i.min,extensions:i.extensions};if(i.min&&(g.min=i.min),i.max&&(g.max=i.max),e)if(this.g)g.byteStride=h,g.byteOffset=o+(i.byteOffset||0),!h||h===a*I.BYTES_PER_ELEMENT||"indices"===A||"input"===A||"output"===A||A.indexOf("morph")>=0?(g.array=this.D(e,i.count,a,o+(i.byteOffset||0),I),g.array.buffer.byteLength===g.byteLength&&(g.byteOffset=0)):g.array=new Uint8Array(e,o,r.byteLength);else if(i.interleaved){g.byteStride=0,g.byteOffset=0;const A=new I(i.count*a);if(g.array=U(A,e,i.count,a,h,o+(i.byteOffset||0),i.componentType),g.extensions&&g.extensions.WEB3D_quantized_attributes&&a>2){const A=new Float32Array(g.array.length),{decodeMatrix:t}=g.extensions.WEB3D_quantized_attributes;for(let e=0;e<g.array.length;e+=a){N[0]=g.array[e],N[1]=g.array[e+1],N[2]=g.array[e+2],N[3]=1;const s=C(N,N,t);A[e]=s[0],A[e+1]=s[1],A[e+2]=s[2]}g.componentType=5126,g.array=A}}else g.byteStride=0,g.array=this.D(e,i.count,a,o+(i.byteOffset||0),I),g.byteOffset=g.array.byteOffset;else{g.array=new I(i.count);const A=g.min||g.max;A&&(g.array[0]=A[0],g.array[1]=A[1],g.array[2]=A[2])}return g}u(){const A=this.gltf.accessors;if(Array.isArray(A))for(let t=0;t<A.length;t++)for(let e=0;e<A.length;e++)t!==e&&A[t].bufferView===A[e].bufferView&&(A[t].interleaved=A[e].interleaved=!0);else for(const t in A)for(const e in A)t!==e&&A[t].bufferView===A[e].bufferView&&(A[t].interleaved=A[e].interleaved=!0)}D(A,t,e,s,n){return s%n.BYTES_PER_ELEMENT!=0&&(A=A.slice(s,s+t*e*n.BYTES_PER_ELEMENT),s=0),new n(A,s,e*t)}P(A){const t=_.indexOf(A);return _[t+1]}requestKHRTechniquesWebgl(A){const{shaders:t}=A,e=t.map(A=>{if(void 0!==A.bufferView){const t=this.gltf.bufferViews[A.bufferView],{byteLength:e}=t;return this.m(t).then(s=>{const{buffer:n,byteOffset:i}=s,r=T(n,i+(t.byteOffset||0),e);return A.content=r,A})}if(A.uri){if(p(A.uri)){const t=v(A.uri),e=T(t,0,t.byteLength);return A.content=e,Promise.resolve(A)}{const t=this.rootPath+"/"+A.uri;return S.get(t).then(t=>(A.content=t,A))}}return Promise.resolve(A)});return Promise.all(e).then(()=>A)}}class H extends k{constructor(A,t,e,s,n,i){super(s,n,i),this.rootPath=A,this.gltf=t,this.requests={},this.buffers={},this.glbBuffer=e,this.accessor=new R(A,t,e)}iterate(A,t){const e=this.gltf[t];if(!e)return;let s=0;for(const t in e)A(t,e[t],s++)}createNode(A){const t={};if(D(A.name)&&(t.name=A.name),D(A.children)&&(t.children=A.children),D(A.jointName)&&(t.jointName=A.jointName),D(A.matrix)&&(t.matrix=A.matrix),D(A.rotation)&&(t.rotation=A.rotation),D(A.scale)&&(t.scale=A.scale),D(A.translation)&&(t.translation=A.translation),D(A.extras)&&(t.extras=A.extras),D(A.meshes)&&(t.mesh=A.meshes[0]),t.translation||t.rotation||t.scale){const A=function(A,t){if(t.matrix)return t.matrix;if(t.translation||t.scale||t.rotation){const e=function(A,t){return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=t[0],A[13]=t[1],A[14]=t[2],A[15]=1,A}(M,t.translation||O),s=function(A,t){var e=t[0],s=t[1],n=t[2],i=t[3],r=e+e,o=s+s,a=n+n,I=e*r,h=s*r,g=s*o,c=n*r,f=n*o,u=n*a,C=i*r,l=i*o,w=i*a;return A[0]=1-g-u,A[1]=h+w,A[2]=c-l,A[3]=0,A[4]=h-w,A[5]=1-I-u,A[6]=f+C,A[7]=0,A[8]=c+l,A[9]=f-C,A[10]=1-I-g,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}(L,t.rotation||F),n=function(A,t){return A[0]=t[0],A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=t[1],A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=t[2],A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}(E,t.scale||x);return o(n,s,n),o(A,e,n)}return function(A){return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}(A)}([],t);delete t.translation,delete t.rotation,delete t.scale,t.matrix=A}return t}B(A){const t={};for(const e in A){const s=A[e];let n,i;s.instanceTechnique&&s.instanceTechnique.values?(n=s.instanceTechnique,i=n.values.diffuse):(n=s,i=n.values.tex||n.values.diffuseTex||n.values.diffuse);const r={baseColorTexture:{index:i}};s.name&&(r.name=s.name),s.extensions&&(r.extensions=s.extensions),s.extras&&(r.extras=s.extras),t[e]=r}return t}p(A){if(A.bufferView||A.extensions&&(A.extensions.KHR_binary_glTF||A.extensions.binary_glTF)){const t=A.bufferView?A:A.extensions.KHR_binary_glTF||A.extensions.binary_glTF;A.extensions&&(A.mimeType=t.mimeType,A.width=t.width,A.height=t.height);const e=this.gltf.bufferViews[t.bufferView],s=(e.byteOffset||0)+this.glbBuffer.byteOffset,n=e.byteLength,i=this.buffers[t.bufferView]=new Uint8Array(this.glbBuffer.buffer,s,n);return this.getImageByBuffer(i,A)}return this.requestExternalImage(A)}v(A){const t=this.gltf.textures[A];if(!t)return null;const e=this.gltf.images[t.source];return this.p(e).then(A=>{const s=this.gltf.samplers[t.sampler];return{image:{array:A.data,width:A.width,height:A.height,index:t.source,mimeType:e.mimeType,name:e.name,extras:e.extras},sampler:s}})}getBaseColorTexture(A){const t=this.gltf.materials[A];let e,s;if(t.instanceTechnique&&t.instanceTechnique.values?(e=t.instanceTechnique,s=e.values.diffuse):(e=t,s=e.values.tex||e.values.diffuseTex||e.values.diffuse),void 0===s||void 0===this.gltf.textures)return null;const n=this.gltf.textures[s];if(!n)return null;const i=this.gltf.samplers[n.sampler];return{format:n.format||6408,internalFormat:n.internalFormat||6408,type:n.type||5121,sampler:i,source:this.gltf.images[n.source]}}getMaterial(){return null}getAnimations(){return null}}class J extends k{constructor(A,t,e,s,n,i){super(s,n,i),this.rootPath=A,this.gltf=t,this.glbBuffer=e,this.buffers={},this.requests={},this.accessor=new R(A,t,e)}iterate(A,t){const e=this.gltf[t];if(e)for(let t=0;t<e.length;t++)A(t,e[t],t)}createNode(A){const t={};return B(t,A),!D(A.weights)&&this.gltf.meshes&&D(t.mesh)?t.weights=this.gltf.meshes[t.mesh].weights:A.weights&&(t.weights=A.weights),t}v(A){const t=this.gltf.textures[A];if(!t)return null;let e=t.source;if(t.extensions&&t.extensions.EXT_texture_webp&&(e=t.extensions.EXT_texture_webp.source),!D(e))return null;const s=this.gltf.images[e];return this.p(s).then(A=>{if(!A)return null;const e={image:{array:A.data,mipmap:A.mipmap,width:A.width,height:A.height,index:t.source,mimeType:s.mimeType,name:s.name,extensions:s.extensions,extras:s.extras}};B(e,t);const n=D(t.sampler)?this.gltf.samplers[t.sampler]:void 0;return n&&(e.sampler=n,e.sampler.magFilter=n.magFilter||9729,e.sampler.minFilter=n.minFilter||9729,e.sampler.wrapS=n.wrapS||10497,e.sampler.wrapT=n.wrapT||10497),A.format&&(e.format=A.format),e})}p(A){if(!D(A.bufferView))return this.requestExternalImage(A);{const t=this.gltf.bufferViews[A.bufferView],e=this.gltf.buffers[t.buffer];if(e.uri)return this.requestImageFromBufferURI(e,t,A);if(this.glbBuffer)return this.M(t,A)}return null}M(A,t){const e=this.I(A,this.glbBuffer.buffer,this.glbBuffer.byteOffset);return this.getImageByBuffer(e,t)}I(A,t,e){e=e||0;const s=A.byteOffset+e,n=A.byteLength;return new Uint8Array(t,s,n)}L(A,t){const e=new Array(A.byteLength);for(let t=0;t<A.byteLength;t++)e[t]=String.fromCharCode(A[t]);return e.join(""),"data:"+(t=t||"image/png")+";base64,"+function(A){return"undefined"!=typeof self?self.btoa(A):window.btoa(A)}(unescape(encodeURIComponent(e)))}getAnimations(A){const t=[];return A.forEach(A=>{t.push(this.getSamplers(A.samplers))}),Promise.all(t).then(t=>{for(let e=0;e<t.length;e++)A[e].samplers=t[e];return A})}getSamplers(A){const t=[];for(let e=0;e<A.length;e++)(D(A[e].input)||D(A[e].output))&&(t.push(this.accessor.C("input",A[e].input)),t.push(this.accessor.C("output",A[e].output)));return Promise.all(t).then(t=>{for(let e=0;e<t.length/2;e++)A[e].input=t[2*e],A[e].output=t[2*e+1],A[e].interpolation||(A[e].interpolation="LINEAR");return A})}}const K="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;class j{static read(A,t=0,e=0){e||(e=A.byteLength);const s=new DataView(A,t,e),n=s.getUint32(4,!0);if(1===n)return j.readV1(s,t);if(2===n)return j.readV2(A,t);throw new Error("Unsupported glb version : "+n)}static readV1(A,t){const e=A.getUint32(8,!0),s=A.getUint32(12,!0);if(e!==A.byteLength)throw new Error("Length in GLB header is inconsistent with glb's byte length.");const n=z(A.buffer,20+t,s);return{json:JSON.parse(n),glbBuffer:{byteOffset:20+t+s,buffer:A.buffer,byteLength:e}}}static readV2(A,t){let e,s,n;const i=new DataView(A,t+12);let r=0;for(;r<i.byteLength;){const o=i.getUint32(r,!0);r+=4;const a=i.getUint32(r,!0);if(r+=4,1313821514===a)e=z(A,t+12+r,o);else if(5130562===a){n=t+12+r,s=o;break}r+=o}return{json:JSON.parse(e),glbBuffer:{byteOffset:n,buffer:A,byteLength:s}}}}function z(A,t,e){if(K){const s=new Uint8Array(A,t,e);return K.decode(s)}return function(A){const t=A.length;let e="";for(let s=0;s<t;){let n=A[s++];if(128&n){let e=G[n>>3&7];if(!(64&n)||!e||s+e>t)return null;for(n&=63>>e;e>0;e-=1){const t=A[s++];if(128!=(192&t))return null;n=n<<6|63&t}}e+=String.fromCharCode(n)}return e}(new Uint8Array(A,t,e))}const G=[1,1,1,1,2,2,3,0],Z=[0,0,0],Y=[0,0,0,1],q=[1,1,1],W={TRANSLATION:[0,0,0],ROTATION:[0,0,0,1],SCALE:[1,1,1]},X={PREVIOUS:null,NEXT:null,PREINDEX:null,NEXTINDEX:null,INTERPOLATION:null},$={O(A,t,e,s,n,i,r,o){const a=D(A)?t.animations:[t.animations[0]],I={};for(let t=0;t<a.length;t++){const g=a[t],c=g.name||t;if(D(A)&&c!==A)continue;const f=g.channelsMap[e];if(f)for(let A=0;A<f.length;A++){const t=f[A];"translation"===t.target.path?(this.F(n,g.samplers[t.sampler],s,1),I.translation=h(Z,n)):"rotation"===t.target.path?(this.U(i,g.samplers[t.sampler],s,1),I.rotation=m(Y,i)):"scale"===t.target.path?(this.F(r,g.samplers[t.sampler],s,1),I.scale=h(q,r)):"weights"===t.target.path&&o&&(this.F(o,g.samplers[t.sampler],s,o.length),I.weights=o)}}return I},F(A,t,e,s){switch(t.interpolation){case"LINEAR":{const n=this.V(X,t,e,1*s);n&&(A=function(A,t,e,s){for(let n=0;n<A.length;n++)A[n]=t[n]+s*(e[n]-t[n]);return A}(A,n.PREVIOUS,n.NEXT,n.INTERPOLATION));break}case"STEP":{const n=this.V(X,t,e,1*s);n&&(A=function(A,t){for(let e=0;e<A.length;e++)A[e]=t[e];return A}(A,...n.PREVIOUS));break}case"CUBICSPLINE":{const n=this.V(X,t,e,3*s);n&&(A=this.T(A,n,t.input.array,3*s));break}}return A},U(A,t,e){switch(t.interpolation){case"LINEAR":{const s=this.V(X,t,e,1);s&&w(A,s.PREVIOUS,s.NEXT,s.INTERPOLATION);break}case"STEP":{const s=this.V(X,t,e,1);s&&(A=u(A,...s.PREVIOUS));break}case"CUBICSPLINE":{const s=this.V(X,t,e,3);if(s){for(let A=0;A<s.PREVIOUS.length;A++)s.PREVIOUS[A]=Math.acos(s.PREVIOUS[A]),s.NEXT[A]=Math.acos(s.NEXT[A]);A=this.T(A,s,t.input.array,3);for(let t=0;t<A.length;t++)A[t]=Math.cos(A[t])}break}}return A},S(A,t){const e=A.length;let s,n,i,r=0,o=e-1,a=Math.floor((r+o)/2);for(;r<=e-1&&o>=0;){if(r===o)return null;if(A[a]<=t&&t<=A[a+1]){const e=A[a];return s=a,n=a+1,i=(t-e)/(A[a+1]-e),{preIndx:s,nextIndex:n,interpolation:i}}t<A[a]?(o=a,a=Math.floor((r+o)/2)):A[a+1]<t&&(r=a,a=Math.floor((r+o)/2))}return null},V(A,t,e,s){const n=t.input.array,i=t.output.array,r=t.output.itemSize;(e<n[0]||e>n[n.length-1])&&(e=Math.max(n[0],Math.min(n[n.length-1],e))),e===n[n.length-1]&&(e=n[0]);const o=this.S(n,e);if(!o||!o.nextIndex)return null;const{preIndx:a,nextIndex:I,interpolation:h}=o;A.PREINDEX=a,A.NEXTINDEX=I,A.INTERPOLATION=h;const g=r*s;return A.PREVIOUS=i.subarray(A.PREINDEX*g,(A.PREINDEX+1)*g),A.NEXT=i.subarray(A.NEXTINDEX*g,(A.NEXTINDEX+1)*g),A},T(A,t,e,s){const n=t.INTERPOLATION,i=e[t.PREINDEX],r=e[t.NEXTINDEX];for(let e=0;e<3;e++){const o=t.PREVIOUS[s+e],a=(r-i)*t.PREVIOUS[2*s+e],I=t.NEXT[3+e],h=(r-i)*t.NEXT[e],g=(2*Math.pow(n,3)-3*Math.pow(n,2)+1)*o+(Math.pow(n,3)-2*Math.pow(n,2)+n)*a+(2*-Math.pow(n,3)+3*Math.pow(n,2))*I+(Math.pow(n,3)-Math.pow(n,2))*h;A[e]=g}return A},getAnimationClip(A,t,e,s){const n=A.nodes[t]&&A.nodes[t].weights;return g(Z,...W.TRANSLATION),u(Y,...W.ROTATION),g(q,...W.SCALE),this.O(s,A,t,e,Z,Y,q,n)},getTimeSpan(A){if(!A.animations)return null;if(A.timeSpan)return A.timeSpan;const t=A.animations;return A.timeSpan={},t.forEach((t,e)=>{let s=-1/0,n=1/0;const i=t.channels;for(let A=0;A<i.length;A++){const e=i[A],r=t.samplers[e.sampler].input.array;r[r.length-1]>s&&(s=r[r.length-1]),r[0]<n&&(n=r[0])}const r=t.name||e;A.timeSpan[r]={max:s,min:n}}),A.timeSpan},getTimeSpanByName(A,t){const e=this.getTimeSpan(A);return e?D(t)?e[t]:e[Object.keys(e)[0]]:null}};let AA=!1;if("undefined"!=typeof OffscreenCanvas){let A;try{A=new OffscreenCanvas(2,2).getContext("2d")}catch(A){}A&&"undefined"!=typeof createImageBitmap&&(AA=!0)}const tA="undefined"==typeof document?null:document.createElement("canvas");class eA{constructor(A,t,e){if(this.options=e||{},this.options.decoders||(this.options.decoders={}),t.buffer instanceof ArrayBuffer){const{json:e,glbBuffer:s}=j.read(t.buffer,t.byteOffset,t.byteLength);this.k(A,e,s)}else this.k(A,t);this._=new R(this.rootPath,this.gltf,this.glbBuffer),this.N()}N(){const A=this.gltf.extensionsRequired;if(A){if(A.indexOf("KHR_draco_mesh_compression")>=0&&!this.options.decoders.draco)throw new Error("KHR_draco_mesh_compression is required but @maptalks/transcoders.draco is not loaded");if(A.indexOf("KHR_texture_basisu")>=0&&!this.options.decoders.ktx2)throw new Error("KHR_texture_basisu is required but @maptalks/transcoders.ktx2 is not loaded")}}R(){const A=this.gltf.extensions;return A&&A.KHR_techniques_webgl?this._.requestKHRTechniquesWebgl(A.KHR_techniques_webgl).then(t=>(A.KHR_techniques_webgl=t,A)):Promise.resolve(A)}load(A){A=A||{};const t=this.H(A),e=this.J(),s=this.K(),n=this.R();return Promise.all([t,e,s,n]).then(A=>(A[0].animations=A[1],A[0].textures=A[2],A[0].extensions=A[3],A[0].transferables=this.transferables||[],this.createChannelsMap(A[0]),A[0]))}createChannelsMap(A){const t=A.animations;if(t)for(let A=0;A<t.length;A++){const e=t[A];e.channelsMap={};for(let A=0;A<e.channels.length;A++){const t=e.channels[A];e.channelsMap[t.target.node]||(e.channelsMap[t.target.node]=[]),e.channelsMap[t.target.node].push(t)}}}getExternalResources(){const A=[];if(this.gltf){const{buffers:t,images:e}=this.gltf;for(let e=0;e<t.length;e++)t[e].uri&&t[e].uri.indexOf("data:application/octet-stream;base64")<0&&A.push({type:"buffer",uri:t[e].uri});for(let t=0;t<e.length;t++)e[t].uri&&e[t].uri.indexOf("data:image/")<0&&A.push({type:"image",uri:e[t].uri})}return A}static getAnimationClip(A,t,e,s){return $.getAnimationClip(A,t,e,s)}static getAnimationTimeSpan(A,t){return $.getTimeSpanByName(A,t)}static getTypedArrayCtor(A){return d(A)}static readInterleavedArray(A,t,e,s,n,i,r){return U(A,t,e,s,n,i,r)}k(A,t,e){this.gltf=t,this.glbBuffer=e,this.version=t.asset?+t.asset.version:1,this.rootPath=A,this.buffers={},this.requests={},this.options.requestImage=AA?rA.bind(this):this.options.requestImage||sA,this.options.transferable&&(this.transferables=[]),2===this.version?(this.adapter=new J(A,t,e,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{}),this.adapter.iterate((A,t,e)=>{t.id="buffer_"+e},"buffers"),this.adapter.iterate((A,t,e)=>{t.id="image_"+e},"images"),this.adapter.iterate((A,t,e)=>{t.id="accessor_"+e},"accessors")):(this.adapter=new H(A,t,e,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{}),this.adapter.iterate((A,t,e)=>{t.id="accessor_"+e},"accessors"),this.adapter.iterate((A,t,e)=>{t.id="image_"+e},"images"))}j(A,t){if(A.children&&A.children.length>0){if(!("number"==typeof(e=A.children[0])&&isFinite(e)||y(A.children[0])))return A;const s=A.children.map(A=>{const e=t[A];return e.nodeIndex=A,this.j(e,t)});A.children=s}var e;return A}H(A){return this.G(A).then(A=>{const t=this.scenes=[];let e;for(const t in A)A[t]=this.j(A[t],A),A[t].nodeIndex=Number(t)?Number(t):t;this.adapter.iterate((s,n,i)=>{const r={};n.name&&(r.name=n.name),n.nodes&&(r.nodes=n.nodes.map(t=>A[t])),this.gltf.scene===s&&(e=i),t.push(r)},"scenes");const s={textures:this.gltf.textures,asset:this.gltf.asset,scene:e,scenes:t,nodes:A,meshes:this.meshes,materials:this.gltf.materials,skins:this.skins,extensionsRequired:this.gltf.extensionsRequired,extensionsUsed:this.gltf.extensionsUsed};if(this.gltf.extensions&&(s.extensions=this.gltf.extensions),1===this.version){const A=this.adapter.B(this.gltf.materials);s.materials=A}return s})}G(A){return this.Z(A).then(()=>{const A=this.nodes={};return this.adapter.iterate((t,e)=>{const s=this.adapter.createNode(e,this.meshes,this.skins);A[t]=s},"nodes"),A})}Y(){this.skins=[];const A=[];return this.adapter.iterate((t,e,s)=>{A.push(this.q(e).then(A=>{A.index=s,this.skins.push(A)}))},"skins"),A}q(A){const t=A.inverseBindMatrices;return this.adapter.accessor.C("inverseBindMatrices",t).then(t=>(A.inverseBindMatrices=t,t&&t.buffer&&this.transferables&&this.transferables.indexOf(t.buffer)<0&&this.transferables.push(t.buffer),A))}J(){const A=this.gltf.animations;return D(A)?this.adapter.getAnimations(A):null}Z(A){this.meshes={};let t=[];return this.adapter.iterate((e,s,n)=>{t.push(this.W(s,A).then(A=>{A.index=n,this.meshes[e]=A}))},"meshes"),t=t.concat(this.Y()),Promise.all(t)}W(A,t){const e=A.primitives.map(A=>this.X(A,t)).filter(A=>!!A);return Promise.all(e).then(t=>{const e={};return B(e,A),e.primitives=t,e})}K(){const A=this.gltf.textures;if(!A)return null;const t=[];for(const e in A)t.push(this.adapter.v(e));return Promise.all(t).then(t=>{if(this.transferables)for(let A=0;A<t.length;A++){const e=t[A].image.array;if(t[A]&&e){let A;A=e instanceof ImageBitmap?e:e.buffer,A&&this.transferables.indexOf(A)<0&&this.transferables.push(A)}}if(!Array.isArray(A)){const e={},s=Object.keys(A);for(let A=0;A<t.length;A++)t[A]&&(e[s[A]]=t[A]);return e}return t})}X(A,t){let e;const s=[],n=A.extensions;if(D(A.targets))for(let t=0;t<A.targets.length;t++){const e=A.targets[t];for(const A in e){const n=this.adapter.accessor.C(`morphTargets_${A}_${t}`,e[A]);n&&s.push(n)}}if(n&&n.KHR_draco_mesh_compression){if(!this.options.decoders.draco&&(!this.gltf.extensionsRequired||!this.gltf.extensionsRequired.indexOf("KHR_draco_mesh_compression")<0))return null;const A=this.options.decoders.draco,{bufferView:i,attributes:r}=n.KHR_draco_mesh_compression,o=this.gltf.bufferViews[i],a=this._.m(o).then(e=>{const{buffer:s,byteOffset:n}=e;let{byteOffset:i}=o;const a=o.byteLength;i||(i=0);const I=new DataView(s,n+i,a),h={attributes:r,useUniqueIDs:!1,skipAttributeTransform:t.skipAttributeTransform};return A(I,h).then(A=>{const t=Object.values(A.attributes);return A.indices&&t.push(A.indices),t})});s.push(a),e=Promise.all(s)}else{const t=A.attributes;for(const A in t){const e=this.adapter.accessor.C(A,t[A]);e&&s.push(e)}if(D(A.indices)){const t=this.adapter.accessor.C("indices",A.indices);t&&s.push(t)}e=Promise.all(s)}return e.then(t=>{if(n&&n.KHR_draco_mesh_compression){const e=A.targets?A.targets.length:0;t[e]=t[e].concat(t.slice(0,e)),t=t[e]}let e,s;const i={attributes:t.reduce((A,t)=>{if("indices"===t.name)e=t;else if(t.name.indexOf("morphTargets_")>-1)s=s||{},s[t.name.slice(13)]=t;else{if(!("POSITION"!==t.name||t.min&&t.max)){const A=[1/0,1/0,1/0],e=[-1/0,-1/0,-1/0],{itemSize:s,array:n}=t,i=n.length/s;for(let t=0;t<i;t++)for(let i=0;i<s;i++){const r=t*s+i;n[r]<A[i]&&(A[i]=n[r]),n[r]>e[i]&&(e[i]=n[r])}if(t.quantization){const s=t.quantization,n=s.range/(1<<s.quantizationBits),i=s.minValues;f(A,A,n),c(A,A,i),f(e,e,n),c(e,e,i)}t.min=A,t.max=e}A[t.name]=t}return this.transferables&&t.array.buffer&&this.transferables.indexOf(t.array.buffer)<0&&this.transferables.push(t.array.buffer),A},{}),material:A.material};return e&&(i.indices=e),s&&(i.morphTargets=s),i.mode=D(A.mode)?A.mode:4,D(A.extras)&&(i.extras=A.extras),i})}}function sA(A,t){const e=new Image;e.crossOrigin="",e.onload=()=>{if(!tA)return void t(new Error("There is no canvas to draw image!"));tA.width=e.width,tA.height=e.height;const A=tA.getContext("2d",{willReadFrequently:!0});A.drawImage(e,0,0,e.width,e.height);const s=A.getImageData(0,0,e.width,e.height),n={width:e.width,height:e.height,data:new Uint8Array(s.data)};t(null,n)},e.onerror=function(A){t(A)},e.src=A}let nA,iA;function rA(A,t){nA||(nA=new OffscreenCanvas(2,2),iA=nA.getContext("2d",{willReadFrequently:!0}));let e=null;if(y(A))e=fetch(A).then(A=>A.arrayBuffer()).then(A=>{const t=new Blob([new Uint8Array(A)]);return createImageBitmap(t)});else{const t=new Blob([A]);e=createImageBitmap(t)}e.then(oA.bind(this)).then(A=>{t(null,A)}).catch(A=>{console.warn(A),t(A)})}function oA(A){let{width:t,height:e}=A;aA(t)||(t=IA(t)),aA(e)||(e=IA(e));const s=this.options.maxTextureSize;s&&(t=Math.min(s,t),e=Math.min(s,e)),nA.width=t,nA.height=e,iA.drawImage(A,0,0,t,e),A.close();const n=iA.getImageData(0,0,t,e);return{width:t,height:e,data:new Uint8Array(n.data)}}function aA(A){return 0==(A&A-1)&&0!==A}function IA(A){return Math.pow(2,Math.floor(Math.log(A)/Math.LN2))}const hA=[];function gA(A,e,s,n,r,o){const a=[],I=t.quat.fromEuler([],s[0],s[1],s[2]),h=t.mat4.fromRotationTranslationScale([],I,e,n);return function(A){return new eA("",i[A]).load().then(A=>A)}(A).then(A=>{t.reshader.GLTFHelper.exportGLTFPack(A).getMeshesInfo().forEach((A,i)=>{const I=new t.reshader.Material({color:r||A.materialInfo.baseColorFactor}),g=new t.reshader.Mesh(A.geometry,I);g.setUniform("uPickingId",o+i);const c=g.getDefines();c.HAS_PICKING_ID=2,g.setDefines(c),g.translate=e,g.rotation=s,g.scaling=n,t.mat4.multiply(g.localTransform,h,A.nodeMatrix),g.originTransform=t.mat4.copy([],g.localTransform),g.originColor=r||A.materialInfo.baseColorFactor,a.push(g)})}),a}function cA(A,t){return Math.abs(A)*Math.sign(t)}function fA(A,e){const s=A.getCoordinates(),i=e.coordinateToPointAtRes(s,e.getGLRes()),r=[i.x,i.y,0],o=uA(e,A.getTranslation());t.vec3.add(r,r,o);const a=function(A,t,e,s){return A._pointAtResToContainerPoint(t,e,s)}(e,new n.Point(r[0],r[1]),e.getGLRes());a.x+=85;const I=function(A,e,s,i){if(i){const r=s/A._getResolution(),o=A.width/2,a=A.height/2;hA[0]=(e.x-o)/o,hA[1]=e.y/a-1,hA[3]=i*r;const I=t.mat4.invert([],A.projViewMatrix);t.vec3.transformMat4(hA,hA,I);const h=A.getGLScale();return t.vec3.set(hA,hA[0]/h,hA[1]/h,hA[2]/h),t.vec3.scale(hA,hA,1/r),new n.Point(hA[0],hA[1])}{const t=A.containerPointToCoordinate(e);return A.coordinateToPointAtRes(t,s)}}(e,a,e.getGLRes());return Math.sqrt(Math.pow(I.x-r[0],2)+Math.pow(I.y-r[1],2))/5.272881136101205}function uA(A,e){if(!A)return e;const s=A.distanceToPointAtRes(e[0],e[1],A.getGLRes()),n=A.altitudeToPoint(e[2],A.getGLRes());return t.vec3.set([],cA(s.x,e[0]),cA(s.y,e[1]),cA(n,e[2]))}class CA{constructor(A){this.$=A,this._meshes=this.AA()}setCoordinate(A){this.$=A}AA(){const A=[],t=340/177,e=gA("jiantou",[1.2*t,0,0],[0,0,90],[t,t,t],[89/255,206/255,147/255,0],7),s=gA("jiantou",[0,1.2*t,0],[0,0,180],[t,t,t],[89/255,206/255,147/255,0],8),n=gA("jiantou",[-1.2*t,0,0],[0,0,270],[t,t,t],[89/255,206/255,147/255,0],9),i=gA("jiantou",[0,-1.2*t,0],[0,0,0],[t,t,t],[89/255,206/255,147/255,0],10);return A.push(e,s,n,i),A}getMeshes(){return this._meshes}}class lA{constructor(A){this.$=A,this._meshes=this.AA()}setCoordinate(A){this.$=A}AA(){const A=[],t=gA("xuanzhuan",[0,0,0],[180,0,0],[340/177*.5,340/177*.5,340/177*.5],[50/255,130/255,184/255,.8],11);return A.push(t),A}getMeshes(){return this._meshes}}class wA{constructor(A){this.$=A,this._meshes=this.AA()}setCoordinate(A){this.$=A}AA(){const A=[],t=gA("yuanhuan",[0,0,0],[0,0,0],[340/177*.5,340/177*.5,340/177*.5],[149/255,179/255,199/255,.5],12);return A.push(t),A}getMeshes(){return this._meshes}}class QA{constructor(A){this.$=A,this._meshes=this.AA()}setCoordinate(A){this.$=A}AA(){const A=[],t=gA("plane",[0,0,0],[0,0,0],[10,10,10],[1,0,0,.5],16);return A.push(t),A}getMeshes(){return this._meshes}}class mA{constructor(A){this.$=A,this._meshes=this.AA()}setCoordinate(A){this.$=A}AA(){const A=[],t=gA("xyzScale",[0,0,0],[0,0,0],[2,2,2],null,113);return A.push(t),A}getMeshes(){return this._meshes}}const PA=[],bA=[],DA=[],yA=[],BA=[],dA=[177/170,177/170,177/170],pA=[1,2,3,4,12];class vA{constructor(){this.translate=new CA,this.rotation=new lA,this.scaling=new wA,this.planeHelper=new QA,this.xyzScaleHelper=new mA,this._meshes=this.AA(),this.tA=!0}AA(){const A={};A.translate=this.translate.getMeshes(),A.rotation=this.rotation.getMeshes(),A.scaling=this.scaling.getMeshes(),A.planeHelper=this.planeHelper.getMeshes(),A.xyzScale=this.xyzScaleHelper.getMeshes();const t=340/177,e=gA("yuanhuan41",[-2.745*t,2.745*t,0],[90,0,0],[.5*t,.5*t,.5*t],[149/255,179/255,199/255,.6],1),s=gA("yuanhuan41",[2.745*t,2.745*t,0],[-90,0,180],[.5*t,.5*t,.5*t],[50/255,130/255,184/255,.5],2),n=gA("yuanhuan41",[2.745*t,-2.745*t,0],[90,0,180],[.5*t,.5*t,.5*t],[149/255,179/255,199/255,.6],3),i=gA("yuanhuan41",[-2.745*t,-2.745*t,0],[-90,0,0],[.5*t,.5*t,.5*t],[50/255,130/255,184/255,.5],4),r=gA("yuanpan",[0,0,0],[90,0,0],[.5*t,.5*t,.5*t],[89/255,206/255,147/255,.5],5),o=gA("zzhou",[0,0,6.5],[90,0,0],[1,1,1],[14/255,127/255,191/255,1],6);return A.translate.push(e,s,n,i,r,o),A}updateMatrix(A,e,s,n,i){const r=e.getCoordinates(),o=A.coordinateToPointAtRes(r,A.getGLRes()),a=e.eA();t.vec3.set(bA,o.x,o.y,a);const I=t.vec3.copy(PA,i),h=uA(A,e.getTranslation());t.vec3.add(bA,bA,h),t.vec3.add(bA,bA,I);for(const i in this._meshes)for(let r=0;r<this._meshes[i].length;r++){const o=this._meshes[i][r];for(let r=0;r<o.length;r++){const a=o[r],I=a.getUniform("uPickingId"),h=t.vec3.copy(PA,a.translate),g=[a.rotation[0],a.rotation[1],a.rotation[2]],c=a.scaling;if(11===I&&(this.tA?(g[2]+=s,a.rotation[2]+=s):this.tA||(g[2]+=s,a.rotation[2]+=s,g[0]=360,g[2]-=90)),pA.indexOf(I)>-1)if(12!==I)c[0]+=n,c[1]+=n,c[2]+=n;else{const A=this._meshes.translate[4][0];c[0]=1.2*A.scaling[0],c[1]=1.2*A.scaling[0],c[2]=1.2*A.scaling[0]}let f=fA(e,A);if(f=t.vec3.set(DA,f,f,f),t.vec3.multiply(h,h,f),t.vec3.multiply(f,f,c),1===I||2===I||3===I||4===I){const A=t.vec3.multiply(BA,c,dA);t.vec3.multiply(h,h,A)}const u=t.quat.fromEuler(yA,g[0],g[1],g[2]);if(t.vec3.add(h,h,bA),"xyzScale"===i){const A=t.mat4.fromRotationTranslationScale([],u,h,f);t.mat4.multiply(a.localTransform,A,a.originTransform)}else t.mat4.fromRotationTranslationScale(a.localTransform,u,h,f)}}}getMeshes(A){const t={};return A?("xyzScale"===A?t[A]=this._meshes[A]:(t.translate=this._meshes.translate,"translate"!==A&&(t[A]=this._meshes[A])),t):t}sA(A){this.tA=A}dispose(){for(const A in this._meshes)for(let t=0;t<this._meshes[A].length;t++){const e=this._meshes[A][t];for(let A=0;A<e.length;A++){const t=e[A];t.geometry.dispose(),t.dispose()}}}}const MA=[],LA=[],EA=[],OA=new e.Point(0,0),FA=[],xA=[],UA=[];class VA{constructor(){this.nA=[],this.iA=[0,0,0],this.rA=[1,1,1],this.oA=[0,0,0]}aA(A){Array.isArray(A)?A.forEach(A=>{this.aA(A)}):(A.on("remove",this.IA,this),A.hA={coordinate:A.getCoordinates(),translation:A.getTranslation(),rotation:A.getRotation(),scale:A.getScale()},this.nA.push(A))}gA(){this.nA.forEach(A=>{A.off("remove",this.IA,this)}),this.nA=[]}cA(A,e,s,n,i,r,o){for(let o=0;o<this.nA.length;o++){const a=this.nA[o],I=a.getCoordinates(),h=r.coordinateToPointAtRes(I,r.getGLRes(),OA),g=a.getRotation(),c=a.getScale(),f=t.vec3.set(MA,h.x,h.y,I.z||0),u=t.vec3.add(f,f,e),C=this.fA(r,a,n,s,e);C.z=u[2];let l=null;l=n>=0?n:n*(this.options&&this.options.scaleStrength||1);const w=t.vec3.add(UA,t.vec3.set(MA,l,l*(c[1]/c[0]),l*(c[2]/c[0])),c);if(Math.min(...w)<i){const A=Math.min(...w);w[0]=w[0]*(i/A),w[1]=w[1]*(i/A),w[2]=w[2]*(i/A)}const Q=t.vec3.add(g,s,g);a.setCoordinates(C),this.uA(A,w,c);const m=a.getTranslation();a.setTRS(m,Q,w)}t.vec3.set(UA,n,n,n),t.vec3.add(this.oA,s,this.oA),t.vec3.add(this.rA,UA,this.rA),t.vec3.add(this.iA,e,this.iA),A.indexOf("translate")>-1?o.fire("positionchange",{action:A,type:"positionchange",target:this.nA,center:this.getCoordinates(),scale:this.rA,rotation:this.oA,translation:this.iA,deltaTranslate:e,deltaRotation:s,deltaScale:n}):o.fire("transforming",{action:A,type:"transforming",target:this.nA,center:this.nA[0].getTransformOrigin(),scale:this.rA,rotation:this.oA,translation:this.iA,deltaTranslate:e,deltaRotation:s,deltaScale:n})}fA(A,e,s,n,i){const r=e.getCenter(),o=e.getTransformOrigin(),a=A.getGLRes(),I=A.coordinateToPointAtRes(r,a,OA);t.vec3.set(FA,I.x,I.y,I.z||0);const h=A.coordinateToPointAtRes(o,a,OA);t.vec3.set(xA,h.x,h.y,h.z||0);const g=t.vec3.sub(MA,FA,xA),c=t.quat.fromEuler(LA,0,0,n[2]);t.vec3.set(UA,s+1,s+1,s+1);const f=t.mat4.fromRotationTranslationScale(EA,c,i,UA);t.vec3.transformMat4(g,g,f),t.vec3.add(g,g,xA),OA.set(g[0],g[1]);const u=A.pointAtResToCoordinate(OA,a);return u.z=g[2]/A.altitudeToPoint(1,a),u}uA(A,t,e){return"x-scale"===A&&(t[1]=e[1],t[2]=e[2]),"y-scale"===A&&(t[0]=e[0],t[2]=e[2]),"z-scale"===A&&(t[0]=e[0],t[1]=e[1]),t}CA(){this.nA.forEach(A=>{if(A.hA){const{coordinate:t,translation:e,rotation:s,scale:n}=A.hA;A.setCoordinates(t),A.setTRS(e,s,n)}})}getScale(){return this.rA}getTranslation(){return this.iA}getRotation(){return this.oA}lA(){return this.nA[0]?this.nA[0].getLayer():null}getCoordinates(){let A=0,t=0,s=0;const n=this.nA.length;if(!n)return null;for(let e=0;e<n;e++){const n=this.nA[e].getCenter();A+=n.x,t+=n.y,s+=n.z||0}A/=n,t/=n,s/=n;const i=new e.Coordinate(A,t,s);for(let A=0;A<n;A++)this.nA[A].setTransformOrigin(i);return i}IA(A){const t=A.target,e=this.nA.indexOf(t);e>-1&&(delete t.hA,this.nA.splice(e,1))}getTargets(){return this.nA}eA(){let A=0;const t=this.nA.length;for(let e=0;e<t;e++){A+=this.nA[e].getPointZ()}return A/=t,A}wA(){for(let A=0;A<this.nA.length;A++)if(this.nA[A].isVisible())return!0;return!1}}const TA=[5,6,7,8,9,10],SA=[5,7,8,9,10],kA=[2,4,11],_A=[1,3,12],NA=[12,16],RA=[1,2,3,4],HA=[1,2,3,4,12],JA=[],KA=[],jA=[],zA=[],GA=[],ZA=[],YA=[];class qA extends(e.Eventable(e.Handlerable(e.Class))){constructor(A={}){super(A),this.options=A,this.mouseAction="moving",this.QA=this.options.mode||"translate",this.mA=!0,this.TransformHelper=new vA,this.PA=new VA,this.helperScene=new t.reshader.Scene([]),this.addToMapCount=0}enable(){return this.mA=!0,this.layerRenderer&&this.layerRenderer.setToRedraw(),this}disable(){return this.mA=!1,this.layerRenderer&&this.layerRenderer.setToRedraw(),this.map&&this.map.resetCursor(),this}setMode(A){this.QA=A,this.layerRenderer&&this.layerRenderer.setToRedraw()}getMode(){return this.QA}isEnable(){return this.mA}bA(A){TA.indexOf(A)>-1?this.QA="translate":kA.indexOf(A)>-1?this.QA="rotation":_A.indexOf(A)>-1?this.QA="scaling":"xyzScale"!==this.QA&&(this.QA="translate")}DA(){return this.QA}addTo(A){this.map&&(this.yA(),console.warn("transform control has been added to a map, it suggest remove from the map before")),this.addToMapCount++,this.map=A,this.container=A.getContainer(),A.on("dom:mousemove",this.BA,this),A.on("dom:mousedown",this.dA,this),A.on("dom:mouseup",this.pA,this),A.on("zooming moving dragrotating",this.vA,this),this.MA()}remove(){this.map&&this.container&&this.layerRenderer&&(this.yA(),this.TransformHelper.dispose(),this.layerRenderer.setToRedraw(),delete this.map,delete this.layer,delete this.layerRenderer,delete this.container,delete this.PA)}yA(){this.container&&this.map&&(this.map.off("dom:mousemove",this.BA,this),this.map.off("dom:mousedown",this.dA,this),this.map.off("dom:mouseup",this.pA,this),this.map.off("zooming moving dragrotating",this.vA,this),this.layer&&this.layer.off("renderend",this.render,this))}BA(A){if(this.LA()){if(this.currentMousePosition={x:A.containerPoint.x,y:A.containerPoint.y},"moving"===this.mouseAction){const A=this.EA();this.currentPickingObject=this.OA(this.currentMousePosition,A,"meshes"),this.currentPickingObject&&null!=this.currentPickingObject.pickingId?(this.bA(this.currentPickingObject.pickingId),6===this.currentPickingObject.pickingId?this.FA(!0):this.FA(!1)):(this.FA(!1),this.bA()),this.xA()}this.UA(this.currentMousePosition)}}dA(A){if(!this.LA())return;const t=this.EA();this.currentMousePosition={x:A.containerPoint.x,y:A.containerPoint.y},this.VA=!0,this.currentPickingObject=this.OA(this.currentMousePosition,t,"meshes"),this.firstDownPoint=this.OA(this.currentMousePosition,t,"meshes"),this.currentPickingObject&&null!=this.currentPickingObject.meshId?(this.mouseAction="transform",this.TA(this.currentPickingObject.pickingId),this.map.config("zoomable",!1),this.map.config("draggable",!1),this.layerRenderer&&this.layerRenderer.setToRedraw()):(this.mouseAction="pan",this.map.config("zoomable",!0),this.map.config("draggable",!0),this.SA()),this.lastMousePosition=this.currentMousePosition,this.lastPickingObject=this.currentPickingObject,this.lastPickingMesh=t[this.currentPickingObject.meshId]}pA(){"transform"===this.mouseAction&&(this.firstDownPoint=null,this.SA(),this.VA=!0,this.fire("transformend",{action:this.kA,type:"transformend"})),this.mouseAction="moving","xyzScale"!==this.QA&&(this.QA="translate"),this.map.config("zoomable",!0),this.map.config("draggable",!0),this.layerRenderer&&this.layerRenderer.setToRedraw()}vA(){const A=this.TransformHelper.planeHelper.getMeshes()[0][0],t=this.map.getBearing();A.rotation[2]=-t,this._A()}_A(){this.LA()&&(this.TransformHelper.updateMatrix(this.map,this.PA,0,0,[0,0,0]),this.VA=!0)}picked(A){if(!this.layerRenderer)return!1;const t=this.EA(),s=this.map;let n=A;A instanceof e.Point||(n=s.coordinateToContainerPoint(new e.Coordinate(A)));const i=this.OA(n,t,"picked");return!(!i||null===i.meshId)}SA(){const A=this.TransformHelper.getMeshes("scaling").scaling[0][0];A.scaling=[340/177*.6,340/177*.6,340/177*.6],this.layerRenderer&&(this.NA(A),this.RA())}RA(){this.TransformHelper._meshes.translate.forEach(A=>{for(let t=0;t<A.length;t++){const e=A[t];RA.indexOf(e.getUniform("uPickingId"))>-1&&e.material.set("color",e.originColor)}})}NA(A){const e=this.PA.getCoordinates(),s=this.map.coordinateToPointAtRes(e,this.map.getGLRes()),n=[s.x,s.y,0],i=uA(this.map,this.PA.getTranslation());t.vec3.add(n,n,i);const r=t.vec3.copy([],A.translate),o=A.scaling;let a=fA(this.PA,this.map);a=t.vec3.set([],a,a,a),t.vec3.multiply(r,r,a),t.vec3.multiply(a,a,o),t.vec3.add(r,r,n),t.mat4.fromRotationTranslationScale(A.localTransform,[0,0,0,1],r,a);this.EA().forEach(A=>{const e=A.getUniform("uPickingId");if(1===e||3===e||2===e||4===e){const e=t.vec3.copy([],A.translate),s=170/177;A.scaling=[s,s,s];const i=A.scaling,r=A.rotation;let o=fA(this.PA,this.map);o=t.vec3.set([],o,o,o),t.vec3.multiply(e,e,o),t.vec3.multiply(o,o,i),t.vec3.add(e,e,n);const a=t.quat.fromEuler([],r[0],r[1],r[2]);t.mat4.fromRotationTranslationScale(A.localTransform,a,e,o)}})}HA(A){const t=this.map.containerPointToCoordinate(A),e=this.map.coordinateToPointAtRes(t,this.map.getGLRes());return{point:[e.x,e.y]}}UA(A){if("transform"===this.mouseAction){const A=this.DA(),s=uA(this.map,this.PA.getTranslation()),n=this.PA.eA();let i=null,r=null;if(s[2]+n<.01&&"z-translate"!==this.kA)i=this.HA(this.currentMousePosition),r=this.HA(this.lastMousePosition);else{const A=this.TransformHelper.planeHelper.getMeshes()[0];if(i=this.OA(this.currentMousePosition,A,"plane"),r=this.OA(this.lastMousePosition,A,"plane"),!i||null===i.meshId||!r||null===r.meshId)return}const o=[0,0,0],a=[0,0,0];let I=0,h=0,g=0;if("translate"===A){if("xy-translate"===this.kA){const A=i.point[0]-r.point[0],t=i.point[1]-r.point[1];o[0]=A,o[1]=t}else if("x-translate"===this.kA){const A=i.point[0]-r.point[0];o[0]=A}else if("y-translate"===this.kA){const A=i.point[1]-r.point[1];o[1]=A}else if("z-translate"===this.kA){let A=0;if(this.JA()){const s=this.map.getGLRes(),n=this.map._pointAtResToContainerPoint(new e.Point(r.point[0],r.point[1]),s),o=this.map._pointAtResToContainerPoint(new e.Point(i.point[0],i.point[1]),s),a=t.vec2.length(t.vec2.set(zA,i.point[0]-r.point[0],i.point[1]-r.point[1]));A=o.y<n.y?a:-a}else A=i.point[2]-r.point[2];o[2]=Math.sign(A)*this.map.pointAtResToAltitude(A,this.map.getGLRes())}}else if("rotation"===A)h=this.KA(i.point,r.point),h>=0?this.TransformHelper.sA(!0):this.TransformHelper.sA(!1),a[2]+=h;else if("scaling"===A||"xyzScale"===A){const A=this.jA(),e=t.vec2.length(t.vec2.set(zA,this.firstDownPoint.point[0]-A[0],this.firstDownPoint.point[1]-A[1])),s=t.vec2.length(t.vec2.set(zA,r.point[0]-A[0],r.point[1]-A[1]));I=this.zA(i.point,r.point,A,s),g=this.zA(i.point,r.point,A,e)}this.TransformHelper.updateMatrix(this.map,this.PA,h,g,o),this.PA.cA(this.kA,o,a,I,.01,this.map,this)}this.lastMousePosition=A,this.lastPickingObject=this.currentPickingObject;const s=this.EA();this.lastPickingMesh=s[this.currentPickingObject.meshId]}zA(A,e,s,n,i){const r=(t.vec2.length(t.vec2.set(zA,A[0]-s[0],A[1]-s[1]))-t.vec2.length(t.vec2.set(zA,e[0]-s[0],e[1]-s[1])))/n;return i?(i[0]-.01)*r:r}jA(){const A=this.map,e=this.PA.getCoordinates(),s=A.coordinateToPointAtRes(e,A.getGLRes()),n=t.vec3.set(GA,s.x,s.y,0),i=uA(A,this.PA.getTranslation());return t.vec3.add(n,n,i),n}FA(A){const e=this.TransformHelper.planeHelper.getMeshes()[0][0],s=t.mat4.getTranslation(jA,e.localTransform),n=t.mat4.getScaling(KA,e.localTransform);let i=t.quat.fromEuler(JA,0,0,0);const r=this.map.getBearing();A&&!this.JA()?(i=t.quat.fromEuler(JA,90,0,-r),0===e.rotation[0]&&(this.VA=!0),t.vec3.set(e.rotation,90,0,-r)):(90===e.rotation[0]&&(this.VA=!0),t.vec3.set(e.rotation,0,0,-r)),t.mat4.fromRotationTranslationScale(e.localTransform,i,s,n)}JA(){if(this.map.getPitch())return!1;const A=this.map.cameraPosition,e=this.map.coordinateToPointAtRes(this.map.getCenter(),this.map.getGLRes());t.vec3.set(e,e.x,e.y,0);const s=this.PA.getCoordinates(),n=this.map.coordinateToPointAtRes(s,this.map.getGLRes()),i=uA(this.map,this.PA.getTranslation()),r=t.vec3.set(jA,n.x,n.y,0),o=t.vec3.add(r,r,i),a=t.vec3.subtract([],A,o),I=t.vec3.subtract([],A,e);return t.vec3.angle(a,I)<1/180*Math.PI}xA(){const A=this.EA();if(this.currentPickingObject&&null!=this.currentPickingObject.meshId){this.GA(),this.lastPickingObject&&null!=this.lastPickingObject.meshId&&this.lastPickingObject.meshId!==this.currentPickingObject.meshId&&this.ZA();const t=A[this.currentPickingObject.meshId];if(t&&NA.indexOf(this.currentPickingObject.pickingId)<0){const A=[t.originColor[0],t.originColor[1],t.originColor[2],.8];t.material.set("color",A),this.YA(t,.5)}this.layerRenderer.setToRedraw()}else this.lastPickingObject&&null!=this.lastPickingObject.meshId&&(this.map.resetCursor(),this.ZA(),this.layerRenderer.setToRedraw())}GA(){6===this.currentPickingObject.pickingId?this.map.setCursor("ns-resize"):SA.indexOf(this.currentPickingObject.pickingId)>-1?this.map.setCursor("move"):this.map.setCursor("pointer")}ZA(){const A=this.lastPickingMesh;if(!A)return;const t=A.getUniform("uPickingId"),e=this.EA();SA.indexOf(t)>-1?e.forEach(A=>{SA.indexOf(A.getUniform("uPickingId"))>-1&&A.material.set("color",A.originColor)}):HA.indexOf(t)>-1?e.forEach(A=>{const t=A.getUniform("uPickingId");RA.indexOf(t)>-1&&A.material.set("color",A.originColor)}):11===t&&e.forEach(A=>{RA.indexOf(A.getUniform("uPickingId"))>-1&&A.material.set("color",A.originColor)}),A.material.set("color",A.originColor)}YA(A,t){const e=A.getUniform("uPickingId"),s=this.EA();SA.indexOf(e)>-1?s.forEach(e=>{if(SA.indexOf(e.getUniform("uPickingId"))>-1&&e.getUniform("uPickingId")!==A.getUniform("uPickingId")){const A=[e.originColor[0],e.originColor[1],e.originColor[2],t];e.material.set("color",A)}}):"scaling"===this.QA?s.forEach(A=>{const t=A.getUniform("uPickingId");if(1===t||3===t||2===t||4===t){const t=[149/255,179/255,199/255,.8];A.material.set("color",t)}}):"rotation"===this.QA&&s.forEach(A=>{const t=A.getUniform("uPickingId");if(1===t||3===t||2===t||4===t){const t=A.originColor;A.material.set("color",[t[0],t[1],t[2],0])}})}reset(){this.map&&this.PA&&(this.PA.CA(),this.TransformHelper.updateMatrix(this.map,this.PA,0,0,[0,0,0]))}KA(A,e){const s=this.jA(),n=t.vec2.set(ZA,e[0]-s[0],e[1]-s[1]),i=t.vec2.set(YA,A[0]-s[0],A[1]-s[1]),r=Math.atan2(n[1],n[0]);return(Math.atan2(i[1],i[0])-r)/Math.PI*180}TA(A){return this.kA=113===A||114===A?"x-scale":115===A||116===A?"z-scale":117===A||118===A?"y-scale":119===A?"xyz-scale":5===A?"xy-translate":6===A?"z-translate":7===A||9===A?"x-translate":8===A||10===A?"y-translate":11===A?"z-rotate":"scale",this.kA}transform(A){if(!A)return;if(this.layerRenderer&&this.layerRenderer.layer&&(this.layerRenderer.layer.off("renderend",this.render),this.layerRenderer.layer.off("resizeCanvas",this.qA)),!this.map)return void console.error("should add to a target first");if(this.PA&&(this.PA.gA(),this.PA.aA(A)),!this.PA.getTargets().length)return;const t=this.map;this.TransformHelper.updateMatrix(t,this.PA,0,0,[0,0,0]),this.WA(),this.VA=!0}getTransformTarget(){return this.PA}IA(){delete this.PA}WA(){const A=this.PA.lA();A&&(A.off("renderend",this.render),A.off("resizeCanvas",this.qA));const e=this.map.getLayers();let s=null;for(let A=0;A<e.length;A++)if(e[A]instanceof t.GroupGLLayer){s=e[A];break}if(!s)return;const n=s.getLayers(),i=n.indexOf(A);if(i<0)return;n.splice(i,1),n.push(A);const r=this.map,o=A.getRenderer();this.layerRenderer=o,this.regl=o.regl,this.renderer=o.renderer,this.XA=this.layerRenderer.getFBORayPicking(),this.$A={projViewMatrix:r.projViewMatrix},A.on("renderend",this.render,this),A.on("resizeCanvas",this.qA,this),o.setToRedraw()}qA(){this.XA.clear(),this.VA=!0}OA(A,t,e){const s=this.map;if(!(s&&this.XA&&this.layerRenderer&&this.layerRenderer.canvas))return null;const n=s.getDevicePixelRatio(),i=A.x*n,r=A.y*n,o={projViewMatrix:this.map.projViewMatrix,pointSize:1},a=this.layerRenderer.canvas.gl&&this.layerRenderer.canvas.gl.wrap;(this.VA||a||!this.At||this.At!==e)&&(this.XA.render(t,o,!0),this.At=e,this.VA=!1);return this.XA.pick(i,r,10,o,{viewMatrix:this.map.viewMatrix,projMatrix:this.map.projMatrix,returnPoint:!0})}MA(){const A=this.map.getDevicePixelRatio(),e={x:0,y:0,width:()=>this.map?this.map.width*A:1,height:()=>this.map?this.map.height*A:1};this.tt=new t.reshader.MeshShader({vert:"attribute vec3 aPosition;\n\nuniform mat4 projViewModelMatrix;\n\n\n\nvoid main()\n\n{\n\n gl_Position = projViewModelMatrix * vec4(aPosition, 1.0);\n\n\n\n}\n\n",frag:"precision mediump float;\n\nuniform vec4 color;\n\n\n\nvoid main() {\n\n gl_FragColor = color;\n\n}\n\n",uniforms:["color",{name:"projViewModelMatrix",type:"function",fn:function(A,e){return t.mat4.multiply([],e.projViewMatrix,e.modelMatrix)}}],extraCommandProps:{viewport:e,depth:{enable:!0,func:"always",mask:!0,range:[0,0]},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"}},defines:{}})}render(){if(!this.LA())return;const A=this.EA();this.helperScene.setMeshes(A);const t=this.layerRenderer.getFrameContext();if(t&&t.renderTarget&&this.layerRenderer.getFrameTimestamp()!==t.timestamp)return;this._A(),this.tt.filter=t&&t.sceneFilter;const e=t&&t.renderTarget&&t.renderTarget.fbo;this.renderer.render(this.tt,this.$A,this.helperScene,e)}EA(){let A=[];const t=this.TransformHelper.getMeshes(this.QA);for(const e in t){if("translate"===e)continue;const s=t[e];for(let t=0;t<s.length;t++)A=A.concat(s[t])}const e=t.translate;if(e)for(let t=0;t<e.length;t++)A=A.concat(e[t]);return A}LA(){const A=this.layerRenderer,t=A&&A.layer;return A&&this.PA&&t&&t.isVisible()&&this.PA.wA()&&this.regl&&this.mA}}qA.mergeOptions({scaleStrength:2}),A.TransformControl=qA,Object.defineProperty(A,"A",{value:!0}),"undefined"!=typeof console&&console.log("@maptalks/transform-control v0.91.0")}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maptalks/transform-control",
3
- "version": "0.90.0",
3
+ "version": "0.91.0",
4
4
  "description": "a plugin to control model's translate、rotation and scale",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -43,8 +43,8 @@
43
43
  "rollup-plugin-terser": "^5.3.1"
44
44
  },
45
45
  "dependencies": {
46
- "@maptalks/gl": "^0.90.0",
47
- "@maptalks/gltf-loader": "^0.89.1"
46
+ "@maptalks/gl": "^0.91.0",
47
+ "@maptalks/gltf-loader": "^0.91.0"
48
48
  },
49
- "gitHead": "7cb793eecd26fe744a1bd83bce6e2fc6a6205d03"
49
+ "gitHead": "6aa007f045dd41f53c9936d28dfb9e187aecf402"
50
50
  }