@minicode-dev/chat 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/sounds/tanks/big_explosion.mp3 +0 -0
- package/assets/sounds/tanks/big_explosion.ogg +0 -0
- package/assets/sounds/tanks/cannon_fire.mp3 +0 -0
- package/assets/sounds/tanks/cannon_fire.ogg +0 -0
- package/assets/sounds/tanks/defeat.mp3 +0 -0
- package/assets/sounds/tanks/defeat.ogg +0 -0
- package/assets/sounds/tanks/engine_loop.mp3 +0 -0
- package/assets/sounds/tanks/engine_loop.ogg +0 -0
- package/assets/sounds/tanks/engine_start.mp3 +0 -0
- package/assets/sounds/tanks/engine_start.ogg +0 -0
- package/assets/sounds/tanks/projectile_whistle.mp3 +0 -0
- package/assets/sounds/tanks/projectile_whistle.ogg +0 -0
- package/assets/sounds/tanks/tank_destroyed.mp3 +0 -0
- package/assets/sounds/tanks/tank_destroyed.ogg +0 -0
- package/assets/sounds/tanks/tank_hit.mp3 +0 -0
- package/assets/sounds/tanks/tank_hit.ogg +0 -0
- package/assets/sounds/tanks/terrain_impact.mp3 +0 -0
- package/assets/sounds/tanks/terrain_impact.ogg +0 -0
- package/assets/sounds/tanks/tracks_loop.mp3 +0 -0
- package/assets/sounds/tanks/tracks_loop.ogg +0 -0
- package/assets/sounds/tanks/turret_loop.mp3 +0 -0
- package/assets/sounds/tanks/turret_loop.ogg +0 -0
- package/assets/sounds/tanks/victory.mp3 +0 -0
- package/assets/sounds/tanks/victory.ogg +0 -0
- package/dist/chunks/{BattleshipGameCard-S-UdM6rn.js → BattleshipGameCard-CAWHxqJE.js} +231 -230
- package/dist/chunks/{BattleshipGameCard-S-UdM6rn.js.map → BattleshipGameCard-CAWHxqJE.js.map} +1 -1
- package/dist/chunks/{BattleshipPrototype-Dm6U_mCr.js → BattleshipPrototype-CmQd5AUO.js} +4 -3
- package/dist/chunks/{BattleshipPrototype-Dm6U_mCr.js.map → BattleshipPrototype-CmQd5AUO.js.map} +1 -1
- package/dist/chunks/ChatContext-CUiEAMKK.js +90 -0
- package/dist/chunks/ChatContext-CUiEAMKK.js.map +1 -0
- package/dist/chunks/TanksGameCard-BEnXTz_J.js +1705 -0
- package/dist/chunks/TanksGameCard-BEnXTz_J.js.map +1 -0
- package/dist/chunks/{battleship-DXKuIZ1I.js → board-DXKuIZ1I.js} +1 -1
- package/dist/chunks/board-DXKuIZ1I.js.map +1 -0
- package/dist/chunks/connect4Sounds-BDXQAvU1.js +3199 -0
- package/dist/chunks/connect4Sounds-BDXQAvU1.js.map +1 -0
- package/dist/chunks/core-geo-UJY-tH9L.js +361 -0
- package/dist/chunks/core-geo-UJY-tH9L.js.map +1 -0
- package/dist/chunks/createBattleScene-L4ZRWDED.js +1265 -0
- package/dist/chunks/createBattleScene-L4ZRWDED.js.map +1 -0
- package/dist/chunks/createTankScene-BuliAxwR.js +2150 -0
- package/dist/chunks/createTankScene-BuliAxwR.js.map +1 -0
- package/dist/index.js +2393 -2448
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/index.d.ts +2 -0
- package/package.json +1 -1
- package/dist/chunks/battleship-DXKuIZ1I.js.map +0 -1
- package/dist/chunks/connect4Sounds-9u0p-dAf.js +0 -1847
- package/dist/chunks/connect4Sounds-9u0p-dAf.js.map +0 -1
- package/dist/chunks/createBattleScene-HIAvjixn.js +0 -1621
- package/dist/chunks/createBattleScene-HIAvjixn.js.map +0 -1
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
import { BufferAttribute as e, BufferGeometry as t, Color as n } from "three";
|
|
2
|
+
// src/games/battleship/scene/core-geo.js
|
|
3
|
+
var r = (e) => new n(e).convertSRGBToLinear(), i = {
|
|
4
|
+
hull: r("#1a2232"),
|
|
5
|
+
deck: r("#2c3549"),
|
|
6
|
+
sup: r("#3d4962"),
|
|
7
|
+
metal: r("#5a6782"),
|
|
8
|
+
glow: r("#ffffff")
|
|
9
|
+
}, a = class {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.p = [], this.n = [], this.c = [], this.g = [];
|
|
12
|
+
}
|
|
13
|
+
tri(e, t, n, r, i, a = 0) {
|
|
14
|
+
let o = t[0] - e[0], s = t[1] - e[1], c = t[2] - e[2], l = n[0] - e[0], u = n[1] - e[1], d = n[2] - e[2], f = s * d - c * u, p = c * l - o * d, m = o * u - s * l, h = Math.hypot(f, p, m);
|
|
15
|
+
if (h < 1e-9) return;
|
|
16
|
+
f /= h, p /= h, m /= h;
|
|
17
|
+
let g = (e[0] + t[0] + n[0]) / 3 - r[0], _ = (e[1] + t[1] + n[1]) / 3 - r[1], v = (e[2] + t[2] + n[2]) / 3 - r[2], y = t, b = n;
|
|
18
|
+
f * g + p * _ + m * v < 0 && (y = n, b = t, f = -f, p = -p, m = -m), this.p.push(e[0], e[1], e[2], y[0], y[1], y[2], b[0], b[1], b[2]);
|
|
19
|
+
for (let e = 0; e < 3; e++) this.n.push(f, p, m), this.c.push(i.r, i.g, i.b), this.g.push(a);
|
|
20
|
+
}
|
|
21
|
+
quad(e, t, n, r, i, a, o = 0) {
|
|
22
|
+
this.tri(e, t, n, i, a, o), this.tri(e, n, r, i, a, o);
|
|
23
|
+
}
|
|
24
|
+
box(e, t, n, r, i, a, o, s = 0) {
|
|
25
|
+
let c = e - r / 2, l = e + r / 2, u = t - i / 2, d = t + i / 2, f = n - a / 2, p = n + a / 2, m = [
|
|
26
|
+
e,
|
|
27
|
+
t,
|
|
28
|
+
n
|
|
29
|
+
];
|
|
30
|
+
this.quad([
|
|
31
|
+
c,
|
|
32
|
+
d,
|
|
33
|
+
f
|
|
34
|
+
], [
|
|
35
|
+
l,
|
|
36
|
+
d,
|
|
37
|
+
f
|
|
38
|
+
], [
|
|
39
|
+
l,
|
|
40
|
+
d,
|
|
41
|
+
p
|
|
42
|
+
], [
|
|
43
|
+
c,
|
|
44
|
+
d,
|
|
45
|
+
p
|
|
46
|
+
], m, o, s), this.quad([
|
|
47
|
+
c,
|
|
48
|
+
u,
|
|
49
|
+
f
|
|
50
|
+
], [
|
|
51
|
+
l,
|
|
52
|
+
u,
|
|
53
|
+
f
|
|
54
|
+
], [
|
|
55
|
+
l,
|
|
56
|
+
d,
|
|
57
|
+
f
|
|
58
|
+
], [
|
|
59
|
+
c,
|
|
60
|
+
d,
|
|
61
|
+
f
|
|
62
|
+
], m, o, s), this.quad([
|
|
63
|
+
c,
|
|
64
|
+
u,
|
|
65
|
+
p
|
|
66
|
+
], [
|
|
67
|
+
l,
|
|
68
|
+
u,
|
|
69
|
+
p
|
|
70
|
+
], [
|
|
71
|
+
l,
|
|
72
|
+
d,
|
|
73
|
+
p
|
|
74
|
+
], [
|
|
75
|
+
c,
|
|
76
|
+
d,
|
|
77
|
+
p
|
|
78
|
+
], m, o, s), this.quad([
|
|
79
|
+
c,
|
|
80
|
+
u,
|
|
81
|
+
f
|
|
82
|
+
], [
|
|
83
|
+
c,
|
|
84
|
+
u,
|
|
85
|
+
p
|
|
86
|
+
], [
|
|
87
|
+
c,
|
|
88
|
+
d,
|
|
89
|
+
p
|
|
90
|
+
], [
|
|
91
|
+
c,
|
|
92
|
+
d,
|
|
93
|
+
f
|
|
94
|
+
], m, o, s), this.quad([
|
|
95
|
+
l,
|
|
96
|
+
u,
|
|
97
|
+
f
|
|
98
|
+
], [
|
|
99
|
+
l,
|
|
100
|
+
u,
|
|
101
|
+
p
|
|
102
|
+
], [
|
|
103
|
+
l,
|
|
104
|
+
d,
|
|
105
|
+
p
|
|
106
|
+
], [
|
|
107
|
+
l,
|
|
108
|
+
d,
|
|
109
|
+
f
|
|
110
|
+
], m, o, s), this.quad([
|
|
111
|
+
c,
|
|
112
|
+
u,
|
|
113
|
+
f
|
|
114
|
+
], [
|
|
115
|
+
l,
|
|
116
|
+
u,
|
|
117
|
+
f
|
|
118
|
+
], [
|
|
119
|
+
l,
|
|
120
|
+
u,
|
|
121
|
+
p
|
|
122
|
+
], [
|
|
123
|
+
c,
|
|
124
|
+
u,
|
|
125
|
+
p
|
|
126
|
+
], m, o, s);
|
|
127
|
+
}
|
|
128
|
+
prism(e, t, n, r, i, a, o, s, c = 0, l = 1) {
|
|
129
|
+
let u = [
|
|
130
|
+
e,
|
|
131
|
+
t + a * .5,
|
|
132
|
+
n
|
|
133
|
+
], d = [
|
|
134
|
+
e,
|
|
135
|
+
t + a,
|
|
136
|
+
n
|
|
137
|
+
];
|
|
138
|
+
for (let f = 0; f < o; f++) {
|
|
139
|
+
let p = f / o * Math.PI * 2, m = (f + 1) / o * Math.PI * 2, h = [
|
|
140
|
+
e + Math.cos(p) * r,
|
|
141
|
+
t,
|
|
142
|
+
n + Math.sin(p) * i
|
|
143
|
+
], g = [
|
|
144
|
+
e + Math.cos(m) * r,
|
|
145
|
+
t,
|
|
146
|
+
n + Math.sin(m) * i
|
|
147
|
+
], _ = [
|
|
148
|
+
e + Math.cos(p) * r * l,
|
|
149
|
+
t + a,
|
|
150
|
+
n + Math.sin(p) * i * l
|
|
151
|
+
], v = [
|
|
152
|
+
e + Math.cos(m) * r * l,
|
|
153
|
+
t + a,
|
|
154
|
+
n + Math.sin(m) * i * l
|
|
155
|
+
];
|
|
156
|
+
this.quad(h, g, v, _, u, s, c), this.tri(d, _, v, [
|
|
157
|
+
e,
|
|
158
|
+
t,
|
|
159
|
+
n
|
|
160
|
+
], s, c);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
annulus(e, t, n, r, i, a, o, s = 0) {
|
|
164
|
+
let c = [
|
|
165
|
+
e,
|
|
166
|
+
t - 1,
|
|
167
|
+
n
|
|
168
|
+
];
|
|
169
|
+
for (let l = 0; l < a; l++) {
|
|
170
|
+
let u = l / a * Math.PI * 2, d = (l + 1) / a * Math.PI * 2, f = Math.cos(u), p = Math.sin(u), m = Math.cos(d), h = Math.sin(d);
|
|
171
|
+
this.quad([
|
|
172
|
+
e + f * r,
|
|
173
|
+
t,
|
|
174
|
+
n + p * r
|
|
175
|
+
], [
|
|
176
|
+
e + m * r,
|
|
177
|
+
t,
|
|
178
|
+
n + h * r
|
|
179
|
+
], [
|
|
180
|
+
e + m * i,
|
|
181
|
+
t,
|
|
182
|
+
n + h * i
|
|
183
|
+
], [
|
|
184
|
+
e + f * i,
|
|
185
|
+
t,
|
|
186
|
+
n + p * i
|
|
187
|
+
], c, o, s);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
build() {
|
|
191
|
+
let n = new t();
|
|
192
|
+
return n.setAttribute("position", new e(new Float32Array(this.p), 3)), n.setAttribute("normal", new e(new Float32Array(this.n), 3)), n.setAttribute("color", new e(new Float32Array(this.c), 3)), n.setAttribute("aGlow", new e(new Float32Array(this.g), 1)), n.computeBoundingSphere(), n.computeBoundingBox(), n;
|
|
193
|
+
}
|
|
194
|
+
}, o = (e, t, n) => {
|
|
195
|
+
let r = Math.min(1, Math.max(0, (n - e) / (t - e)));
|
|
196
|
+
return r * r * (3 - 2 * r);
|
|
197
|
+
};
|
|
198
|
+
function s(e, { L: t, hw: n, H: r, draft: a, bowStart: s = .68, sternScale: c = .82, sternTaper: l = !1, trim: u = !0 }) {
|
|
199
|
+
let d = i, f = [];
|
|
200
|
+
for (let e = 0; e < 10; e++) {
|
|
201
|
+
let i = e / 9, u = -t / 2 + i * t, d, p = 0;
|
|
202
|
+
if (i > s) {
|
|
203
|
+
let e = (i - s) / (1 - s);
|
|
204
|
+
d = Math.sqrt(Math.max(0, 1 - e * e)) * .95 + .05, p = e * e;
|
|
205
|
+
} else if (l && i < 1 - s) {
|
|
206
|
+
let e = (1 - s - i) / (1 - s);
|
|
207
|
+
d = Math.sqrt(Math.max(0, 1 - e * e)) * .9 + .1;
|
|
208
|
+
} else d = c + (1 - c) * o(0, .2, i);
|
|
209
|
+
let m = r + .05 * p, h = -a * (.5 + .5 * d);
|
|
210
|
+
f.push([
|
|
211
|
+
[
|
|
212
|
+
u,
|
|
213
|
+
m,
|
|
214
|
+
n * d
|
|
215
|
+
],
|
|
216
|
+
[
|
|
217
|
+
u,
|
|
218
|
+
-a * .45,
|
|
219
|
+
n * d * .84
|
|
220
|
+
],
|
|
221
|
+
[
|
|
222
|
+
u,
|
|
223
|
+
h,
|
|
224
|
+
0
|
|
225
|
+
],
|
|
226
|
+
[
|
|
227
|
+
u,
|
|
228
|
+
-a * .45,
|
|
229
|
+
-n * d * .84
|
|
230
|
+
],
|
|
231
|
+
[
|
|
232
|
+
u,
|
|
233
|
+
m,
|
|
234
|
+
-n * d
|
|
235
|
+
]
|
|
236
|
+
]);
|
|
237
|
+
}
|
|
238
|
+
for (let t = 0; t < 9; t++) {
|
|
239
|
+
let n = f[t], i = f[t + 1], o = (n[0][0] + i[0][0]) / 2, s = [
|
|
240
|
+
o,
|
|
241
|
+
(r - a) * .3,
|
|
242
|
+
0
|
|
243
|
+
];
|
|
244
|
+
for (let t = 0; t < 4; t++) e.quad(n[t], i[t], i[t + 1], n[t + 1], s, d.hull);
|
|
245
|
+
e.quad(n[0], i[0], i[4], n[4], [
|
|
246
|
+
o,
|
|
247
|
+
-1,
|
|
248
|
+
0
|
|
249
|
+
], d.deck);
|
|
250
|
+
}
|
|
251
|
+
let p = f[0], m = f[9];
|
|
252
|
+
for (let t = 1; t < 4; t++) e.tri(p[0], p[t], p[t + 1], [
|
|
253
|
+
p[0][0] + 1,
|
|
254
|
+
0,
|
|
255
|
+
0
|
|
256
|
+
], d.hull), e.tri(m[0], m[t], m[t + 1], [
|
|
257
|
+
m[0][0] - 1,
|
|
258
|
+
0,
|
|
259
|
+
0
|
|
260
|
+
], d.hull);
|
|
261
|
+
if (u) {
|
|
262
|
+
let i = t * .56, a = -t / 2 + t * .38;
|
|
263
|
+
e.box(a, r + .008, n * .93, i, .014, .018, d.glow, 1), e.box(a, r + .008, -n * .93, i, .014, .018, d.glow, 1);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function c(e, t, n, r) {
|
|
267
|
+
let a = i;
|
|
268
|
+
e.prism(t, n, 0, .095, .085, .06, 8, a.sup, 0, .82), e.box(t + r * .17, n + .035, .028, .22, .022, .022, a.metal), e.box(t + r * .17, n + .035, -.028, .22, .022, .022, a.metal), e.box(t - r * .03, n + .064, 0, .04, .008, .04, a.glow, 1);
|
|
269
|
+
}
|
|
270
|
+
function l(e, t, n, r, a, o = 1) {
|
|
271
|
+
let s = i;
|
|
272
|
+
e.box(t, n + a / 2, 0, r * 1.4, a, r, s.sup), e.box(t + .02, n + a + .05, 0, r * .9, .1, r * .72, s.sup), e.box(t + r * .45 * o + .025, n + a + .055, 0, .012, .026, r * .6, s.glow, 1), e.prism(t - .05, n + a + .1, 0, .012, .012, .2, 4, s.metal), e.box(t - .05, n + a + .27, 0, .012, .012, .16, s.metal), e.box(t - .05, n + a + .3, 0, .02, .02, .02, s.glow, 1);
|
|
273
|
+
}
|
|
274
|
+
var u = {
|
|
275
|
+
carrier: "carrier",
|
|
276
|
+
battleship: "battleship",
|
|
277
|
+
cruiser: "cruiser",
|
|
278
|
+
submarine: "submarine",
|
|
279
|
+
destroyer: "destroyer"
|
|
280
|
+
}, d = {
|
|
281
|
+
5: "carrier",
|
|
282
|
+
4: "battleship",
|
|
283
|
+
3: "cruiser",
|
|
284
|
+
2: "destroyer",
|
|
285
|
+
1: "destroyer"
|
|
286
|
+
};
|
|
287
|
+
function f(e, t) {
|
|
288
|
+
let n = typeof e == "string" ? e.toLowerCase() : "";
|
|
289
|
+
for (let e in u) if (n.includes(e)) return u[e];
|
|
290
|
+
return d[t] || "cruiser";
|
|
291
|
+
}
|
|
292
|
+
function p(e, t) {
|
|
293
|
+
let n = new a(), r = i, o = Math.max(1, t) - .14;
|
|
294
|
+
switch (e) {
|
|
295
|
+
case "carrier":
|
|
296
|
+
s(n, {
|
|
297
|
+
L: o,
|
|
298
|
+
hw: .22,
|
|
299
|
+
H: .12,
|
|
300
|
+
draft: .12,
|
|
301
|
+
bowStart: .78,
|
|
302
|
+
trim: !1
|
|
303
|
+
}), n.box(.04, .15, .02, o * .95, .035, .52, r.deck), n.box(0, .16899999999999998, .06, o * .8, .004, .02, r.glow, 1), n.box(0, .16899999999999998, .255, o * .86, .006, .012, r.glow, 1), n.box(0, .16899999999999998, -.215, o * .86, .006, .012, r.glow, 1), n.box(.35, .29000000000000004, -.19, .44, .22, .1, r.sup), n.box(.3, .43, -.19, .26, .08, .09, r.sup), n.box(.58, .36, -.19, .012, .03, .08, r.glow, 1), n.prism(.28, .46, -.19, .012, .012, .22, 4, r.metal), n.box(.28, .68, -.19, .025, .025, .025, r.glow, 1);
|
|
304
|
+
for (let e = 0; e < 4; e++) n.box(-1.5 + e * .32, .18, .12, .16, .018, .12, r.metal);
|
|
305
|
+
break;
|
|
306
|
+
case "battleship": {
|
|
307
|
+
let e = .13;
|
|
308
|
+
s(n, {
|
|
309
|
+
L: o,
|
|
310
|
+
hw: .19,
|
|
311
|
+
H: e,
|
|
312
|
+
draft: .11
|
|
313
|
+
}), l(n, -.05, e, .24, .14), n.prism(-.45, e, 0, .07, .06, .2, 7, r.sup, 0, .85), n.box(-.45, .33499999999999996, 0, .1, .01, .08, r.glow, 1), c(n, .72, e, 1), c(n, 1.08, .15, 1), c(n, -1, e, -1);
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
case "submarine": {
|
|
317
|
+
let e = .05;
|
|
318
|
+
s(n, {
|
|
319
|
+
L: o,
|
|
320
|
+
hw: .13,
|
|
321
|
+
H: e,
|
|
322
|
+
draft: .13,
|
|
323
|
+
bowStart: .72,
|
|
324
|
+
sternTaper: !0,
|
|
325
|
+
trim: !1
|
|
326
|
+
}), n.prism(.2, e, 0, .18, .06, .17, 10, r.sup, 0, .85), n.box(.2, .16999999999999998, .052, .18, .012, .01, r.glow, 1), n.box(.2, .16999999999999998, -.052, .18, .012, .01, r.glow, 1), n.box(.22, .16, 0, .04, .012, .32, r.metal), n.box(-o / 2 + .12, 0, 0, .06, .01, .3, r.metal), n.box(-o / 2 + .12, 0, 0, .06, .2, .01, r.metal), n.box(0, .054000000000000006, 0, o * .6, .006, .012, r.glow, 1);
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
case "destroyer": {
|
|
330
|
+
let e = .12;
|
|
331
|
+
s(n, {
|
|
332
|
+
L: o,
|
|
333
|
+
hw: .14,
|
|
334
|
+
H: e,
|
|
335
|
+
draft: .1
|
|
336
|
+
}), l(n, .05, e, .17, .1), n.prism(-.3, e, 0, .05, .045, .16, 6, r.sup, 0, .85), c(n, .5, e, 1);
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
default: {
|
|
340
|
+
let e = .12;
|
|
341
|
+
s(n, {
|
|
342
|
+
L: o,
|
|
343
|
+
hw: .165,
|
|
344
|
+
H: e,
|
|
345
|
+
draft: .1
|
|
346
|
+
}), l(n, .05, e, .2, .12), n.prism(-.32, e, 0, .06, .05, .18, 7, r.sup, 0, .85), c(n, .72, e, 1), c(n, -.78, e, -1);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return n.build();
|
|
350
|
+
}
|
|
351
|
+
function m() {
|
|
352
|
+
let e = new a(), t = r("#e8f6ff");
|
|
353
|
+
return e.prism(0, 0, 0, .065, .065, .2, 8, t, .35, .8), e.annulus(0, .004, 0, .17, .23, 20, t, 1), e.build();
|
|
354
|
+
}
|
|
355
|
+
function h() {
|
|
356
|
+
let e = new a(), t = r("#f43f5e"), n = r("#fb923c");
|
|
357
|
+
return e.prism(0, 0, 0, .075, .075, .24, 8, t, .6, .85), e.prism(0, .24, 0, .065, .065, .1, 8, n, 1, .05), e.build();
|
|
358
|
+
}
|
|
359
|
+
export { f as a, p as i, h as n, m as r, a as t };
|
|
360
|
+
|
|
361
|
+
//# sourceMappingURL=core-geo-UJY-tH9L.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-geo-UJY-tH9L.js","names":["lin","Color","hex","SHIP_COLORS","GeoBuilder","e1x","b","a","e1y","e1z","e2x","c","e2y","e2z","nx","ny","nz","len","cx","inside","cy","cz","v1","v2","i","color","glow","d","x0","sx","x1","y0","sy","y1","z0","sz","z1","ins","h","top","seg","a0","a1","b0","rx","rz","b1","t0","topScale","t1","c0","s0","c1","s1","r0","r1","geo","BufferGeometry","BufferAttribute","smooth","t","x","e0","e1","hull","C","stations","L","s","sheer","bowStart","u","sternTaper","sternScale","deckY","H","keel","draft","hw","A","B","xm","k","S","E","trim","turret","y","dir","bridge","w","glowSide","CLASS_BY_ID","CLASS_BY_SIZE","shipClassOf","key","id","name","size","buildShipGeometry","cls","buildMissPegGeometry","white","buildHitPegGeometry","red","orange"],"sources":["../../src/games/battleship/scene/core-geo.js"],"sourcesContent":["// Low-poly geometry builder (flat shaded, non-indexed) + ship class geometry.\n// Everything here runs at build time only; nothing is called per frame.\nimport { BufferAttribute, BufferGeometry, Color } from 'three'\n\nconst lin = (hex) => new Color(hex).convertSRGBToLinear()\n\nexport const SHIP_COLORS = {\n hull: lin('#1a2232'),\n deck: lin('#2c3549'),\n sup: lin('#3d4962'),\n metal: lin('#5a6782'),\n glow: lin('#ffffff'),\n}\n\n/**\n * Accumulates flat-shaded triangles with color + glow (emissive trim weight) per vertex.\n * Triangles are auto-oriented so their normal points away from an \"inside\" reference point.\n */\nexport class GeoBuilder {\n constructor() {\n this.p = []\n this.n = []\n this.c = []\n this.g = []\n }\n\n tri(a, b, c, inside, color, glow = 0) {\n const e1x = b[0] - a[0], e1y = b[1] - a[1], e1z = b[2] - a[2]\n const e2x = c[0] - a[0], e2y = c[1] - a[1], e2z = c[2] - a[2]\n let nx = e1y * e2z - e1z * e2y\n let ny = e1z * e2x - e1x * e2z\n let nz = e1x * e2y - e1y * e2x\n const len = Math.hypot(nx, ny, nz)\n if (len < 1e-9) return\n nx /= len\n ny /= len\n nz /= len\n const cx = (a[0] + b[0] + c[0]) / 3 - inside[0]\n const cy = (a[1] + b[1] + c[1]) / 3 - inside[1]\n const cz = (a[2] + b[2] + c[2]) / 3 - inside[2]\n let v1 = b\n let v2 = c\n if (nx * cx + ny * cy + nz * cz < 0) {\n v1 = c\n v2 = b\n nx = -nx\n ny = -ny\n nz = -nz\n }\n this.p.push(a[0], a[1], a[2], v1[0], v1[1], v1[2], v2[0], v2[1], v2[2])\n for (let i = 0; i < 3; i++) {\n this.n.push(nx, ny, nz)\n this.c.push(color.r, color.g, color.b)\n this.g.push(glow)\n }\n }\n\n quad(a, b, c, d, inside, color, glow = 0) {\n this.tri(a, b, c, inside, color, glow)\n this.tri(a, c, d, inside, color, glow)\n }\n\n box(cx, cy, cz, sx, sy, sz, color, glow = 0) {\n const x0 = cx - sx / 2, x1 = cx + sx / 2\n const y0 = cy - sy / 2, y1 = cy + sy / 2\n const z0 = cz - sz / 2, z1 = cz + sz / 2\n const ins = [cx, cy, cz]\n this.quad([x0, y1, z0], [x1, y1, z0], [x1, y1, z1], [x0, y1, z1], ins, color, glow)\n this.quad([x0, y0, z0], [x1, y0, z0], [x1, y1, z0], [x0, y1, z0], ins, color, glow)\n this.quad([x0, y0, z1], [x1, y0, z1], [x1, y1, z1], [x0, y1, z1], ins, color, glow)\n this.quad([x0, y0, z0], [x0, y0, z1], [x0, y1, z1], [x0, y1, z0], ins, color, glow)\n this.quad([x1, y0, z0], [x1, y0, z1], [x1, y1, z1], [x1, y1, z0], ins, color, glow)\n this.quad([x0, y0, z0], [x1, y0, z0], [x1, y0, z1], [x0, y0, z1], ins, color, glow)\n }\n\n // Vertical n-gon prism (elliptic if rz != rx); top optionally scaled (taper). No bottom cap.\n prism(cx, cy, cz, rx, rz, h, seg, color, glow = 0, topScale = 1) {\n const ins = [cx, cy + h * 0.5, cz]\n const top = [cx, cy + h, cz]\n for (let i = 0; i < seg; i++) {\n const a0 = (i / seg) * Math.PI * 2\n const a1 = ((i + 1) / seg) * Math.PI * 2\n const b0 = [cx + Math.cos(a0) * rx, cy, cz + Math.sin(a0) * rz]\n const b1 = [cx + Math.cos(a1) * rx, cy, cz + Math.sin(a1) * rz]\n const t0 = [cx + Math.cos(a0) * rx * topScale, cy + h, cz + Math.sin(a0) * rz * topScale]\n const t1 = [cx + Math.cos(a1) * rx * topScale, cy + h, cz + Math.sin(a1) * rz * topScale]\n this.quad(b0, b1, t1, t0, ins, color, glow)\n this.tri(top, t0, t1, [cx, cy, cz], color, glow)\n }\n }\n\n // Flat ring facing +y.\n annulus(cx, cy, cz, r0, r1, seg, color, glow = 0) {\n const ins = [cx, cy - 1, cz]\n for (let i = 0; i < seg; i++) {\n const a0 = (i / seg) * Math.PI * 2\n const a1 = ((i + 1) / seg) * Math.PI * 2\n const c0 = Math.cos(a0), s0 = Math.sin(a0), c1 = Math.cos(a1), s1 = Math.sin(a1)\n this.quad(\n [cx + c0 * r0, cy, cz + s0 * r0],\n [cx + c1 * r0, cy, cz + s1 * r0],\n [cx + c1 * r1, cy, cz + s1 * r1],\n [cx + c0 * r1, cy, cz + s0 * r1],\n ins,\n color,\n glow,\n )\n }\n }\n\n build() {\n const geo = new BufferGeometry()\n geo.setAttribute('position', new BufferAttribute(new Float32Array(this.p), 3))\n geo.setAttribute('normal', new BufferAttribute(new Float32Array(this.n), 3))\n geo.setAttribute('color', new BufferAttribute(new Float32Array(this.c), 3))\n geo.setAttribute('aGlow', new BufferAttribute(new Float32Array(this.g), 1))\n geo.computeBoundingSphere()\n geo.computeBoundingBox()\n return geo\n }\n}\n\nconst smooth = (e0, e1, x) => {\n const t = Math.min(1, Math.max(0, (x - e0) / (e1 - e0)))\n return t * t * (3 - 2 * t)\n}\n\n// Tapered hull along +x (bow at +x), waterline at y = 0.\nfunction hull(b, { L, hw, H, draft, bowStart = 0.68, sternScale = 0.82, sternTaper = false, trim = true }) {\n const N = 10\n const C = SHIP_COLORS\n const stations = []\n for (let i = 0; i < N; i++) {\n const t = i / (N - 1)\n const x = -L / 2 + t * L\n let s\n let sheer = 0\n if (t > bowStart) {\n const u = (t - bowStart) / (1 - bowStart)\n s = Math.sqrt(Math.max(0, 1 - u * u)) * 0.95 + 0.05\n sheer = u * u\n } else if (sternTaper && t < 1 - bowStart) {\n const u = (1 - bowStart - t) / (1 - bowStart)\n s = Math.sqrt(Math.max(0, 1 - u * u)) * 0.9 + 0.1\n } else {\n s = sternScale + (1 - sternScale) * smooth(0, 0.2, t)\n }\n const deckY = H + 0.05 * sheer\n const keel = -draft * (0.5 + 0.5 * s)\n stations.push([\n [x, deckY, hw * s],\n [x, -draft * 0.45, hw * s * 0.84],\n [x, keel, 0],\n [x, -draft * 0.45, -hw * s * 0.84],\n [x, deckY, -hw * s],\n ])\n }\n for (let i = 0; i < N - 1; i++) {\n const A = stations[i]\n const B = stations[i + 1]\n const xm = (A[0][0] + B[0][0]) / 2\n const ins = [xm, (H - draft) * 0.3, 0]\n for (let k = 0; k < 4; k++) b.quad(A[k], B[k], B[k + 1], A[k + 1], ins, C.hull)\n b.quad(A[0], B[0], B[4], A[4], [xm, -1, 0], C.deck)\n }\n const S = stations[0]\n const E = stations[N - 1]\n for (let k = 1; k < 4; k++) {\n b.tri(S[0], S[k], S[k + 1], [S[0][0] + 1, 0, 0], C.hull)\n b.tri(E[0], E[k], E[k + 1], [E[0][0] - 1, 0, 0], C.hull)\n }\n if (trim) {\n // emissive deck-edge trims\n const len = L * 0.56\n const cx = -L / 2 + L * 0.38\n b.box(cx, H + 0.008, hw * 0.93, len, 0.014, 0.018, C.glow, 1)\n b.box(cx, H + 0.008, -hw * 0.93, len, 0.014, 0.018, C.glow, 1)\n }\n}\n\nfunction turret(b, x, y, dir) {\n const C = SHIP_COLORS\n b.prism(x, y, 0, 0.095, 0.085, 0.06, 8, C.sup, 0, 0.82)\n b.box(x + dir * 0.17, y + 0.035, 0.028, 0.22, 0.022, 0.022, C.metal)\n b.box(x + dir * 0.17, y + 0.035, -0.028, 0.22, 0.022, 0.022, C.metal)\n b.box(x - dir * 0.03, y + 0.064, 0, 0.04, 0.008, 0.04, C.glow, 1)\n}\n\nfunction bridge(b, x, H, w, h, glowSide = 1) {\n const C = SHIP_COLORS\n b.box(x, H + h / 2, 0, w * 1.4, h, w, C.sup)\n b.box(x + 0.02, H + h + 0.05, 0, w * 0.9, 0.1, w * 0.72, C.sup)\n // window band (emissive)\n b.box(x + w * 0.45 * glowSide + 0.025, H + h + 0.055, 0, 0.012, 0.026, w * 0.6, C.glow, 1)\n b.prism(x - 0.05, H + h + 0.1, 0, 0.012, 0.012, 0.2, 4, C.metal)\n b.box(x - 0.05, H + h + 0.27, 0, 0.012, 0.012, 0.16, C.metal)\n b.box(x - 0.05, H + h + 0.3, 0, 0.02, 0.02, 0.02, C.glow, 1)\n}\n\nconst CLASS_BY_ID = {\n carrier: 'carrier',\n battleship: 'battleship',\n cruiser: 'cruiser',\n submarine: 'submarine',\n destroyer: 'destroyer',\n}\nconst CLASS_BY_SIZE = { 5: 'carrier', 4: 'battleship', 3: 'cruiser', 2: 'destroyer', 1: 'destroyer' }\n\nexport function shipClassOf(id, size) {\n const key = typeof id === 'string' ? id.toLowerCase() : ''\n for (const name in CLASS_BY_ID) if (key.includes(name)) return CLASS_BY_ID[name]\n return CLASS_BY_SIZE[size] || 'cruiser'\n}\n\nexport function buildShipGeometry(cls, size) {\n const b = new GeoBuilder()\n const C = SHIP_COLORS\n const L = Math.max(1, size) - 0.14\n switch (cls) {\n case 'carrier': {\n const H = 0.12\n hull(b, { L, hw: 0.22, H, draft: 0.12, bowStart: 0.78, trim: false })\n b.box(0.04, H + 0.03, 0.02, L * 0.95, 0.035, 0.52, C.deck)\n b.box(0.0, H + 0.049, 0.06, L * 0.8, 0.004, 0.02, C.glow, 1)\n b.box(0.0, H + 0.049, 0.255, L * 0.86, 0.006, 0.012, C.glow, 1)\n b.box(0.0, H + 0.049, -0.215, L * 0.86, 0.006, 0.012, C.glow, 1)\n b.box(0.35, H + 0.17, -0.19, 0.44, 0.22, 0.1, C.sup)\n b.box(0.3, H + 0.31, -0.19, 0.26, 0.08, 0.09, C.sup)\n b.box(0.58, H + 0.24, -0.19, 0.012, 0.03, 0.08, C.glow, 1)\n b.prism(0.28, H + 0.34, -0.19, 0.012, 0.012, 0.22, 4, C.metal)\n b.box(0.28, H + 0.56, -0.19, 0.025, 0.025, 0.025, C.glow, 1)\n // parked aircraft silhouettes\n for (let i = 0; i < 4; i++) b.box(-1.5 + i * 0.32, H + 0.06, 0.12, 0.16, 0.018, 0.12, C.metal)\n break\n }\n case 'battleship': {\n const H = 0.13\n hull(b, { L, hw: 0.19, H, draft: 0.11 })\n bridge(b, -0.05, H, 0.24, 0.14)\n b.prism(-0.45, H, 0, 0.07, 0.06, 0.2, 7, C.sup, 0, 0.85)\n b.box(-0.45, H + 0.205, 0, 0.1, 0.01, 0.08, C.glow, 1)\n turret(b, 0.72, H, 1)\n turret(b, 1.08, H + 0.02, 1)\n turret(b, -1.0, H, -1)\n break\n }\n case 'submarine': {\n const H = 0.05\n hull(b, { L, hw: 0.13, H, draft: 0.13, bowStart: 0.72, sternTaper: true, trim: false })\n b.prism(0.2, H, 0, 0.18, 0.06, 0.17, 10, C.sup, 0, 0.85)\n b.box(0.2, H + 0.12, 0.052, 0.18, 0.012, 0.01, C.glow, 1)\n b.box(0.2, H + 0.12, -0.052, 0.18, 0.012, 0.01, C.glow, 1)\n b.box(0.22, H + 0.11, 0, 0.04, 0.012, 0.32, C.metal)\n b.box(-L / 2 + 0.12, 0.0, 0, 0.06, 0.01, 0.3, C.metal)\n b.box(-L / 2 + 0.12, 0.0, 0, 0.06, 0.2, 0.01, C.metal)\n b.box(0.0, H + 0.004, 0, L * 0.6, 0.006, 0.012, C.glow, 1)\n break\n }\n case 'destroyer': {\n const H = 0.12\n hull(b, { L, hw: 0.14, H, draft: 0.1 })\n bridge(b, 0.05, H, 0.17, 0.1)\n b.prism(-0.3, H, 0, 0.05, 0.045, 0.16, 6, C.sup, 0, 0.85)\n turret(b, 0.5, H, 1)\n break\n }\n default: {\n // cruiser\n const H = 0.12\n hull(b, { L, hw: 0.165, H, draft: 0.1 })\n bridge(b, 0.05, H, 0.2, 0.12)\n b.prism(-0.32, H, 0, 0.06, 0.05, 0.18, 7, C.sup, 0, 0.85)\n turret(b, 0.72, H, 1)\n turret(b, -0.78, H, -1)\n }\n }\n return b.build()\n}\n\nexport function buildMissPegGeometry() {\n const b = new GeoBuilder()\n const white = lin('#e8f6ff')\n b.prism(0, 0, 0, 0.065, 0.065, 0.2, 8, white, 0.35, 0.8)\n b.annulus(0, 0.004, 0, 0.17, 0.23, 20, white, 1)\n return b.build()\n}\n\nexport function buildHitPegGeometry() {\n const b = new GeoBuilder()\n const red = lin('#f43f5e')\n const orange = lin('#fb923c')\n b.prism(0, 0, 0, 0.075, 0.075, 0.24, 8, red, 0.6, 0.85)\n b.prism(0, 0.24, 0, 0.065, 0.065, 0.1, 8, orange, 1, 0.05)\n return b.build()\n}\n"],"mappings":";;AAIA,IAAMA,KAAO,MAAQ,IAAIC,EAAMC,CAAG,CAAC,CAAC,oBAAoB,GAE3CC,IAAc;CACzB,MAAMH,EAAI,SAAS;CACnB,MAAMA,EAAI,SAAS;CACnB,KAAKA,EAAI,SAAS;CAClB,OAAOA,EAAI,SAAS;CACpB,MAAMA,EAAI,SAAS;AACrB,GAMaI,IAAb,MAAwB;CACtB,cAAc;EAIZ,AAHA,KAAK,IAAI,CAAC,GACV,KAAK,IAAI,CAAC,GACV,KAAK,IAAI,CAAC,GACV,KAAK,IAAI,CAAC;CACZ;CAEA,IAAI,GAAG,GAAG,GAAG,GAAQ,GAAO,IAAO,GAAG;EACpC,IAAMC,IAAMC,EAAE,KAAKC,EAAE,IAAIC,IAAMF,EAAE,KAAKC,EAAE,IAAIE,IAAMH,EAAE,KAAKC,EAAE,IACrDG,IAAMC,EAAE,KAAKJ,EAAE,IAAIK,IAAMD,EAAE,KAAKJ,EAAE,IAAIM,IAAMF,EAAE,KAAKJ,EAAE,IACvDO,IAAKN,IAAMK,IAAMJ,IAAMG,GACvBG,IAAKN,IAAMC,IAAML,IAAMQ,GACvBG,IAAKX,IAAMO,IAAMJ,IAAME,GACrBO,IAAM,KAAK,MAAMH,GAAIC,GAAIC,CAAE;EACjC,IAAIC,IAAM,MAAM;EAGhB,AAFA,KAAMA,GACN,KAAMA,GACN,KAAMA;EACN,IAAMC,KAAMX,EAAE,KAAKD,EAAE,KAAKK,EAAE,MAAM,IAAIQ,EAAO,IACvCC,KAAMb,EAAE,KAAKD,EAAE,KAAKK,EAAE,MAAM,IAAIQ,EAAO,IACvCE,KAAMd,EAAE,KAAKD,EAAE,KAAKK,EAAE,MAAM,IAAIQ,EAAO,IACzCG,IAAKhB,GACLiB,IAAKZ;EAQT,AAPIG,IAAKI,IAAKH,IAAKK,IAAKJ,IAAKK,IAAK,MAChC,IAAKV,GACL,IAAKL,GACL,IAAK,CAACQ,GACN,IAAK,CAACC,GACN,IAAK,CAACC,IAER,KAAK,EAAE,KAAKT,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIe,EAAG,IAAIA,EAAG,IAAIA,EAAG,IAAIC,EAAG,IAAIA,EAAG,IAAIA,EAAG,EAAE;EACtE,KAAK,IAAIC,IAAI,GAAGA,IAAI,GAAG,KAGrB,AAFA,KAAK,EAAE,KAAKV,GAAIC,GAAIC,CAAE,GACtB,KAAK,EAAE,KAAKS,EAAM,GAAGA,EAAM,GAAGA,EAAM,CAAC,GACrC,KAAK,EAAE,KAAKC,CAAI;CAEpB;CAEA,KAAK,GAAG,GAAG,GAAG,GAAG,GAAQ,GAAO,IAAO,GAAG;EAExC,AADA,KAAK,IAAInB,GAAGD,GAAGK,GAAGQ,GAAQM,GAAOC,CAAI,GACrC,KAAK,IAAInB,GAAGI,GAAGgB,GAAGR,GAAQM,GAAOC,CAAI;CACvC;CAEA,IAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAO,IAAO,GAAG;EAC3C,IAAME,IAAKV,IAAKW,IAAK,GAAGC,IAAKZ,IAAKW,IAAK,GACjCE,IAAKX,IAAKY,IAAK,GAAGC,IAAKb,IAAKY,IAAK,GACjCE,IAAKb,IAAKc,IAAK,GAAGC,IAAKf,IAAKc,IAAK,GACjCE,IAAM;GAACnB;GAAIE;GAAIC;EAAE;EAMvB,AALA,KAAK,KAAK;GAACO;GAAIK;GAAIC;EAAE,GAAG;GAACJ;GAAIG;GAAIC;EAAE,GAAG;GAACJ;GAAIG;GAAIG;EAAE,GAAG;GAACR;GAAIK;GAAIG;EAAE,GAAGC,GAAKZ,GAAOC,CAAI,GAClF,KAAK,KAAK;GAACE;GAAIG;GAAIG;EAAE,GAAG;GAACJ;GAAIC;GAAIG;EAAE,GAAG;GAACJ;GAAIG;GAAIC;EAAE,GAAG;GAACN;GAAIK;GAAIC;EAAE,GAAGG,GAAKZ,GAAOC,CAAI,GAClF,KAAK,KAAK;GAACE;GAAIG;GAAIK;EAAE,GAAG;GAACN;GAAIC;GAAIK;EAAE,GAAG;GAACN;GAAIG;GAAIG;EAAE,GAAG;GAACR;GAAIK;GAAIG;EAAE,GAAGC,GAAKZ,GAAOC,CAAI,GAClF,KAAK,KAAK;GAACE;GAAIG;GAAIG;EAAE,GAAG;GAACN;GAAIG;GAAIK;EAAE,GAAG;GAACR;GAAIK;GAAIG;EAAE,GAAG;GAACR;GAAIK;GAAIC;EAAE,GAAGG,GAAKZ,GAAOC,CAAI,GAClF,KAAK,KAAK;GAACI;GAAIC;GAAIG;EAAE,GAAG;GAACJ;GAAIC;GAAIK;EAAE,GAAG;GAACN;GAAIG;GAAIG;EAAE,GAAG;GAACN;GAAIG;GAAIC;EAAE,GAAGG,GAAKZ,GAAOC,CAAI,GAClF,KAAK,KAAK;GAACE;GAAIG;GAAIG;EAAE,GAAG;GAACJ;GAAIC;GAAIG;EAAE,GAAG;GAACJ;GAAIC;GAAIK;EAAE,GAAG;GAACR;GAAIG;GAAIK;EAAE,GAAGC,GAAKZ,GAAOC,CAAI;CACpF;CAGA,MAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAG,GAAK,GAAO,IAAO,GAAG,IAAW,GAAG;EAC/D,IAAMW,IAAM;GAACnB;GAAIE,IAAKkB,IAAI;GAAKjB;EAAE,GAC3BkB,IAAM;GAACrB;GAAIE,IAAKkB;GAAGjB;EAAE;EAC3B,KAAK,IAAIG,IAAI,GAAGA,IAAIgB,GAAK,KAAK;GAC5B,IAAMC,IAAMjB,IAAIgB,IAAO,KAAK,KAAK,GAC3BE,KAAOlB,IAAI,KAAKgB,IAAO,KAAK,KAAK,GACjCG,IAAK;IAACzB,IAAK,KAAK,IAAIuB,CAAE,IAAIG;IAAIxB;IAAIC,IAAK,KAAK,IAAIoB,CAAE,IAAII;GAAE,GACxDC,IAAK;IAAC5B,IAAK,KAAK,IAAIwB,CAAE,IAAIE;IAAIxB;IAAIC,IAAK,KAAK,IAAIqB,CAAE,IAAIG;GAAE,GACxDE,IAAK;IAAC7B,IAAK,KAAK,IAAIuB,CAAE,IAAIG,IAAKI;IAAU5B,IAAKkB;IAAGjB,IAAK,KAAK,IAAIoB,CAAE,IAAII,IAAKG;GAAQ,GAClFC,IAAK;IAAC/B,IAAK,KAAK,IAAIwB,CAAE,IAAIE,IAAKI;IAAU5B,IAAKkB;IAAGjB,IAAK,KAAK,IAAIqB,CAAE,IAAIG,IAAKG;GAAQ;GAExF,AADA,KAAK,KAAKL,GAAIG,GAAIG,GAAIF,GAAIV,GAAKZ,GAAOC,CAAI,GAC1C,KAAK,IAAIa,GAAKQ,GAAIE,GAAI;IAAC/B;IAAIE;IAAIC;GAAE,GAAGI,GAAOC,CAAI;EACjD;CACF;CAGA,QAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAK,GAAO,IAAO,GAAG;EAChD,IAAMW,IAAM;GAACnB;GAAIE,IAAK;GAAGC;EAAE;EAC3B,KAAK,IAAIG,IAAI,GAAGA,IAAIgB,GAAK,KAAK;GAC5B,IAAMC,IAAMjB,IAAIgB,IAAO,KAAK,KAAK,GAC3BE,KAAOlB,IAAI,KAAKgB,IAAO,KAAK,KAAK,GACjCU,IAAK,KAAK,IAAIT,CAAE,GAAGU,IAAK,KAAK,IAAIV,CAAE,GAAGW,IAAK,KAAK,IAAIV,CAAE,GAAGW,IAAK,KAAK,IAAIX,CAAE;GAC/E,KAAK,KACH;IAACxB,IAAKgC,IAAKI;IAAIlC;IAAIC,IAAK8B,IAAKG;GAAE,GAC/B;IAACpC,IAAKkC,IAAKE;IAAIlC;IAAIC,IAAKgC,IAAKC;GAAE,GAC/B;IAACpC,IAAKkC,IAAKG;IAAInC;IAAIC,IAAKgC,IAAKE;GAAE,GAC/B;IAACrC,IAAKgC,IAAKK;IAAInC;IAAIC,IAAK8B,IAAKI;GAAE,GAC/BlB,GACAZ,GACAC,CACF;EACF;CACF;CAEA,QAAQ;EACN,IAAM8B,IAAM,IAAIC,EAAe;EAO/B,OANAD,EAAI,aAAa,YAAY,IAAIE,EAAgB,IAAI,aAAa,KAAK,CAAC,GAAG,CAAC,CAAC,GAC7EF,EAAI,aAAa,UAAU,IAAIE,EAAgB,IAAI,aAAa,KAAK,CAAC,GAAG,CAAC,CAAC,GAC3EF,EAAI,aAAa,SAAS,IAAIE,EAAgB,IAAI,aAAa,KAAK,CAAC,GAAG,CAAC,CAAC,GAC1EF,EAAI,aAAa,SAAS,IAAIE,EAAgB,IAAI,aAAa,KAAK,CAAC,GAAG,CAAC,CAAC,GAC1EF,EAAI,sBAAsB,GAC1BA,EAAI,mBAAmB,GAChBA;CACT;AACF,GAEMG,KAAU,GAAI,GAAI,MAAM;CAC5B,IAAMC,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,IAAIC,IAAIC,MAAOC,IAAKD,EAAG,CAAC;CACvD,OAAOF,IAAIA,KAAK,IAAI,IAAIA;AAC1B;AAGA,SAASI,EAAK,GAAG,EAAE,MAAG,OAAI,MAAG,UAAO,cAAW,KAAM,gBAAa,KAAM,gBAAa,IAAO,UAAO,MAAQ;CACzG,IACMC,IAAI9D,GACJ+D,IAAW,CAAC;CAClB,KAAK,IAAI1C,IAAI,GAAGA,IAAI,IAAG,KAAK;EAC1B,IAAMoC,IAAIpC,IAAK,GACTqC,IAAI,CAACM,IAAI,IAAIP,IAAIO,GACnBC,GACAC,IAAQ;EACZ,IAAIT,IAAIU,GAAU;GAChB,IAAMC,KAAKX,IAAIU,MAAa,IAAIA;GAEhC,AADA,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,IAAIC,IAAIA,CAAC,CAAC,IAAI,MAAO,KAC/C,IAAQA,IAAIA;EACd,OAAO,IAAIC,KAAcZ,IAAI,IAAIU,GAAU;GACzC,IAAMC,KAAK,IAAID,IAAWV,MAAM,IAAIU;GACpC,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,IAAIC,IAAIA,CAAC,CAAC,IAAI,KAAM;EAChD,OACE,IAAIE,KAAc,IAAIA,KAAcd,EAAO,GAAG,IAAKC,CAAC;EAEtD,IAAMc,IAAQC,IAAI,MAAON,GACnBO,IAAO,CAACC,KAAS,KAAM,KAAMT;EACnC,EAAS,KAAK;GACZ;IAACP;IAAGa;IAAOI,IAAKV;GAAC;GACjB;IAACP;IAAG,CAACgB,IAAQ;IAAMC,IAAKV,IAAI;GAAI;GAChC;IAACP;IAAGe;IAAM;GAAC;GACX;IAACf;IAAG,CAACgB,IAAQ;IAAM,CAACC,IAAKV,IAAI;GAAI;GACjC;IAACP;IAAGa;IAAO,CAACI,IAAKV;GAAC;EACpB,CAAC;CACH;CACA,KAAK,IAAI5C,IAAI,GAAGA,IAAI,GAAO,KAAK;EAC9B,IAAMuD,IAAIb,EAAS1C,IACbwD,IAAId,EAAS1C,IAAI,IACjByD,KAAMF,EAAE,EAAE,CAAC,KAAKC,EAAE,EAAE,CAAC,MAAM,GAC3B3C,IAAM;GAAC4C;IAAKN,IAAIE,KAAS;GAAK;EAAC;EACrC,KAAK,IAAIK,IAAI,GAAGA,IAAI,GAAG,KAAK,EAAE,KAAKH,EAAEG,IAAIF,EAAEE,IAAIF,EAAEE,IAAI,IAAIH,EAAEG,IAAI,IAAI7C,GAAK4B,EAAE,IAAI;EAC9E,EAAE,KAAKc,EAAE,IAAIC,EAAE,IAAIA,EAAE,IAAID,EAAE,IAAI;GAACE;GAAI;GAAI;EAAC,GAAGhB,EAAE,IAAI;CACpD;CACA,IAAMkB,IAAIjB,EAAS,IACbkB,IAAIlB,EAAS;CACnB,KAAK,IAAIgB,IAAI,GAAGA,IAAI,GAAG,KAErB,AADA5E,EAAE,IAAI6E,EAAE,IAAIA,EAAED,IAAIC,EAAED,IAAI,IAAI;EAACC,EAAE,EAAE,CAAC,KAAK;EAAG;EAAG;CAAC,GAAGlB,EAAE,IAAI,GACvD3D,EAAE,IAAI8E,EAAE,IAAIA,EAAEF,IAAIE,EAAEF,IAAI,IAAI;EAACE,EAAE,EAAE,CAAC,KAAK;EAAG;EAAG;CAAC,GAAGnB,EAAE,IAAI;CAEzD,IAAIoB,GAAM;EAER,IAAMpE,IAAMkD,IAAI,KACVjD,IAAK,CAACiD,IAAI,IAAIA,IAAI;EAExB,AADA7D,EAAE,IAAIY,GAAIyD,IAAI,MAAOG,IAAK,KAAM7D,GAAK,MAAO,MAAOgD,EAAE,MAAM,CAAC,GAC5D3D,EAAE,IAAIY,GAAIyD,IAAI,MAAO,CAACG,IAAK,KAAM7D,GAAK,MAAO,MAAOgD,EAAE,MAAM,CAAC;CAC/D;AACF;AAEA,SAASqB,EAAO,GAAG,GAAG,GAAG,GAAK;CAC5B,IAAMrB,IAAI9D;CAIV,AAHAG,EAAE,MAAMuD,GAAG0B,GAAG,GAAG,MAAO,MAAO,KAAM,GAAGtB,EAAE,KAAK,GAAG,GAAI,GACtD3D,EAAE,IAAIuD,IAAI2B,IAAM,KAAMD,IAAI,MAAO,MAAO,KAAM,MAAO,MAAOtB,EAAE,KAAK,GACnE3D,EAAE,IAAIuD,IAAI2B,IAAM,KAAMD,IAAI,MAAO,OAAQ,KAAM,MAAO,MAAOtB,EAAE,KAAK,GACpE3D,EAAE,IAAIuD,IAAI2B,IAAM,KAAMD,IAAI,MAAO,GAAG,KAAM,MAAO,KAAMtB,EAAE,MAAM,CAAC;AAClE;AAEA,SAASwB,EAAO,GAAG,GAAG,GAAG,GAAG,GAAG,IAAW,GAAG;CAC3C,IAAMxB,IAAI9D;CAOV,AANAG,EAAE,IAAIuD,GAAGc,IAAIrC,IAAI,GAAG,GAAGoD,IAAI,KAAKpD,GAAGoD,GAAGzB,EAAE,GAAG,GAC3C3D,EAAE,IAAIuD,IAAI,KAAMc,IAAIrC,IAAI,KAAM,GAAGoD,IAAI,IAAK,IAAKA,IAAI,KAAMzB,EAAE,GAAG,GAE9D3D,EAAE,IAAIuD,IAAI6B,IAAI,MAAOC,IAAW,MAAOhB,IAAIrC,IAAI,MAAO,GAAG,MAAO,MAAOoD,IAAI,IAAKzB,EAAE,MAAM,CAAC,GACzF3D,EAAE,MAAMuD,IAAI,KAAMc,IAAIrC,IAAI,IAAK,GAAG,MAAO,MAAO,IAAK,GAAG2B,EAAE,KAAK,GAC/D3D,EAAE,IAAIuD,IAAI,KAAMc,IAAIrC,IAAI,KAAM,GAAG,MAAO,MAAO,KAAM2B,EAAE,KAAK,GAC5D3D,EAAE,IAAIuD,IAAI,KAAMc,IAAIrC,IAAI,IAAK,GAAG,KAAM,KAAM,KAAM2B,EAAE,MAAM,CAAC;AAC7D;AAEA,IAAM2B,IAAc;CAClB,SAAS;CACT,YAAY;CACZ,SAAS;CACT,WAAW;CACX,WAAW;AACb,GACMC,IAAgB;CAAE,GAAG;CAAW,GAAG;CAAc,GAAG;CAAW,GAAG;CAAa,GAAG;AAAY;AAEpG,SAAgBC,EAAY,GAAI,GAAM;CACpC,IAAMC,IAAM,OAAOC,KAAO,WAAWA,EAAG,YAAY,IAAI;CACxD,KAAK,IAAMC,KAAQL,GAAa,IAAIG,EAAI,SAASE,CAAI,GAAG,OAAOL,EAAYK;CAC3E,OAAOJ,EAAcK,MAAS;AAChC;AAEA,SAAgBC,EAAkB,GAAK,GAAM;CAC3C,IAAM7F,IAAI,IAAIF,EAAW,GACnB6D,IAAI9D,GACJgE,IAAI,KAAK,IAAI,GAAG+B,CAAI,IAAI;CAC9B,QAAQE,GAAR;EACE,KAAK;GAWH,AATApC,EAAK1D,GAAG;IAAE;IAAG,IAAI;IAAM,GAAA;IAAG,OAAO;IAAM,UAAU;IAAM,MAAM;GAAM,CAAC,GACpEA,EAAE,IAAI,KAAM,KAAU,KAAM6D,IAAI,KAAM,MAAO,KAAMF,EAAE,IAAI,GACzD3D,EAAE,IAAI,GAAK,oBAAW,KAAM6D,IAAI,IAAK,MAAO,KAAMF,EAAE,MAAM,CAAC,GAC3D3D,EAAE,IAAI,GAAK,oBAAW,MAAO6D,IAAI,KAAM,MAAO,MAAOF,EAAE,MAAM,CAAC,GAC9D3D,EAAE,IAAI,GAAK,oBAAW,OAAQ6D,IAAI,KAAM,MAAO,MAAOF,EAAE,MAAM,CAAC,GAC/D3D,EAAE,IAAI,KAAM,oBAAU,MAAO,KAAM,KAAM,IAAK2D,EAAE,GAAG,GACnD3D,EAAE,IAAI,IAAK,KAAU,MAAO,KAAM,KAAM,KAAM2D,EAAE,GAAG,GACnD3D,EAAE,IAAI,KAAM,KAAU,MAAO,MAAO,KAAM,KAAM2D,EAAE,MAAM,CAAC,GACzD3D,EAAE,MAAM,KAAM,KAAU,MAAO,MAAO,MAAO,KAAM,GAAG2D,EAAE,KAAK,GAC7D3D,EAAE,IAAI,KAAM,KAAU,MAAO,MAAO,MAAO,MAAO2D,EAAE,MAAM,CAAC;GAE3D,KAAK,IAAIzC,IAAI,GAAGA,IAAI,GAAG,KAAK,EAAE,IAAI,OAAOA,IAAI,KAAM,KAAU,KAAM,KAAM,MAAO,KAAMyC,EAAE,KAAK;GAC7F;EAEF,KAAK,cAAc;GACjB,IAAMU,IAAI;GAOV,AANAX,EAAK1D,GAAG;IAAE;IAAG,IAAI;IAAM;IAAG,OAAO;GAAK,CAAC,GACvCmF,EAAOnF,GAAG,MAAOqE,GAAG,KAAM,GAAI,GAC9BrE,EAAE,MAAM,MAAOqE,GAAG,GAAG,KAAM,KAAM,IAAK,GAAGV,EAAE,KAAK,GAAG,GAAI,GACvD3D,EAAE,IAAI,MAAO,oBAAW,GAAG,IAAK,KAAM,KAAM2D,EAAE,MAAM,CAAC,GACrDqB,EAAOhF,GAAG,KAAMqE,GAAG,CAAC,GACpBW,EAAOhF,GAAG,MAAM,KAAU,CAAC,GAC3BgF,EAAOhF,GAAG,IAAMqE,GAAG,EAAE;GACrB;EACF;EACA,KAAK,aAAa;GAChB,IAAMA,IAAI;GAQV,AAPAX,EAAK1D,GAAG;IAAE;IAAG,IAAI;IAAM;IAAG,OAAO;IAAM,UAAU;IAAM,YAAY;IAAM,MAAM;GAAM,CAAC,GACtFA,EAAE,MAAM,IAAKqE,GAAG,GAAG,KAAM,KAAM,KAAM,IAAIV,EAAE,KAAK,GAAG,GAAI,GACvD3D,EAAE,IAAI,IAAK,oBAAU,MAAO,KAAM,MAAO,KAAM2D,EAAE,MAAM,CAAC,GACxD3D,EAAE,IAAI,IAAK,oBAAU,OAAQ,KAAM,MAAO,KAAM2D,EAAE,MAAM,CAAC,GACzD3D,EAAE,IAAI,KAAM,KAAU,GAAG,KAAM,MAAO,KAAM2D,EAAE,KAAK,GACnD3D,EAAE,IAAI,CAAC6D,IAAI,IAAI,KAAM,GAAK,GAAG,KAAM,KAAM,IAAKF,EAAE,KAAK,GACrD3D,EAAE,IAAI,CAAC6D,IAAI,IAAI,KAAM,GAAK,GAAG,KAAM,IAAK,KAAMF,EAAE,KAAK,GACrD3D,EAAE,IAAI,GAAK,qBAAW,GAAG6D,IAAI,IAAK,MAAO,MAAOF,EAAE,MAAM,CAAC;GACzD;EACF;EACA,KAAK,aAAa;GAChB,IAAMU,IAAI;GAIV,AAHAX,EAAK1D,GAAG;IAAE;IAAG,IAAI;IAAM;IAAG,OAAO;GAAI,CAAC,GACtCmF,EAAOnF,GAAG,KAAMqE,GAAG,KAAM,EAAG,GAC5BrE,EAAE,MAAM,KAAMqE,GAAG,GAAG,KAAM,MAAO,KAAM,GAAGV,EAAE,KAAK,GAAG,GAAI,GACxDqB,EAAOhF,GAAG,IAAKqE,GAAG,CAAC;GACnB;EACF;EACA,SAAS;GAEP,IAAMA,IAAI;GAKV,AAJAX,EAAK1D,GAAG;IAAE;IAAG,IAAI;IAAO;IAAG,OAAO;GAAI,CAAC,GACvCmF,EAAOnF,GAAG,KAAMqE,GAAG,IAAK,GAAI,GAC5BrE,EAAE,MAAM,MAAOqE,GAAG,GAAG,KAAM,KAAM,KAAM,GAAGV,EAAE,KAAK,GAAG,GAAI,GACxDqB,EAAOhF,GAAG,KAAMqE,GAAG,CAAC,GACpBW,EAAOhF,GAAG,MAAOqE,GAAG,EAAE;EACxB;CACF;CACA,OAAOrE,EAAE,MAAM;AACjB;AAEA,SAAgB+F,IAAuB;CACrC,IAAM/F,IAAI,IAAIF,EAAW,GACnBkG,IAAQtG,EAAI,SAAS;CAG3B,OAFAM,EAAE,MAAM,GAAG,GAAG,GAAG,MAAO,MAAO,IAAK,GAAGgG,GAAO,KAAM,EAAG,GACvDhG,EAAE,QAAQ,GAAG,MAAO,GAAG,KAAM,KAAM,IAAIgG,GAAO,CAAC,GACxChG,EAAE,MAAM;AACjB;AAEA,SAAgBiG,IAAsB;CACpC,IAAMjG,IAAI,IAAIF,EAAW,GACnBoG,IAAMxG,EAAI,SAAS,GACnByG,IAASzG,EAAI,SAAS;CAG5B,OAFAM,EAAE,MAAM,GAAG,GAAG,GAAG,MAAO,MAAO,KAAM,GAAGkG,GAAK,IAAK,GAAI,GACtDlG,EAAE,MAAM,GAAG,KAAM,GAAG,MAAO,MAAO,IAAK,GAAGmG,GAAQ,GAAG,GAAI,GAClDnG,EAAE,MAAM;AACjB"}
|