@tscircuit/hypergraph 0.0.40 → 0.0.42

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.
Files changed (3) hide show
  1. package/dist/index.d.ts +118 -246
  2. package/dist/index.js +1834 -291
  3. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,3 +1,1471 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
+ // If the importer is in node compatibility mode or this is not an ESM
20
+ // file that has been converted to a CommonJS file using a Babel-
21
+ // compatible transform (i.e. "__esModule" has not been set), then set
22
+ // "default" to the CommonJS "module.exports" for node compatibility.
23
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
+ mod
25
+ ));
26
+
27
+ // node_modules/binary-search-bounds/search-bounds.js
28
+ var require_search_bounds = __commonJS({
29
+ "node_modules/binary-search-bounds/search-bounds.js"(exports, module) {
30
+ "use strict";
31
+ function ge(a, y, c, l, h) {
32
+ var i = h + 1;
33
+ while (l <= h) {
34
+ var m = l + h >>> 1, x = a[m];
35
+ var p = c !== void 0 ? c(x, y) : x - y;
36
+ if (p >= 0) {
37
+ i = m;
38
+ h = m - 1;
39
+ } else {
40
+ l = m + 1;
41
+ }
42
+ }
43
+ return i;
44
+ }
45
+ function gt(a, y, c, l, h) {
46
+ var i = h + 1;
47
+ while (l <= h) {
48
+ var m = l + h >>> 1, x = a[m];
49
+ var p = c !== void 0 ? c(x, y) : x - y;
50
+ if (p > 0) {
51
+ i = m;
52
+ h = m - 1;
53
+ } else {
54
+ l = m + 1;
55
+ }
56
+ }
57
+ return i;
58
+ }
59
+ function lt(a, y, c, l, h) {
60
+ var i = l - 1;
61
+ while (l <= h) {
62
+ var m = l + h >>> 1, x = a[m];
63
+ var p = c !== void 0 ? c(x, y) : x - y;
64
+ if (p < 0) {
65
+ i = m;
66
+ l = m + 1;
67
+ } else {
68
+ h = m - 1;
69
+ }
70
+ }
71
+ return i;
72
+ }
73
+ function le(a, y, c, l, h) {
74
+ var i = l - 1;
75
+ while (l <= h) {
76
+ var m = l + h >>> 1, x = a[m];
77
+ var p = c !== void 0 ? c(x, y) : x - y;
78
+ if (p <= 0) {
79
+ i = m;
80
+ l = m + 1;
81
+ } else {
82
+ h = m - 1;
83
+ }
84
+ }
85
+ return i;
86
+ }
87
+ function eq(a, y, c, l, h) {
88
+ while (l <= h) {
89
+ var m = l + h >>> 1, x = a[m];
90
+ var p = c !== void 0 ? c(x, y) : x - y;
91
+ if (p === 0) {
92
+ return m;
93
+ }
94
+ if (p <= 0) {
95
+ l = m + 1;
96
+ } else {
97
+ h = m - 1;
98
+ }
99
+ }
100
+ return -1;
101
+ }
102
+ function norm(a, y, c, l, h, f) {
103
+ if (typeof c === "function") {
104
+ return f(a, y, c, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0);
105
+ }
106
+ return f(a, y, void 0, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0);
107
+ }
108
+ module.exports = {
109
+ ge: function(a, y, c, l, h) {
110
+ return norm(a, y, c, l, h, ge);
111
+ },
112
+ gt: function(a, y, c, l, h) {
113
+ return norm(a, y, c, l, h, gt);
114
+ },
115
+ lt: function(a, y, c, l, h) {
116
+ return norm(a, y, c, l, h, lt);
117
+ },
118
+ le: function(a, y, c, l, h) {
119
+ return norm(a, y, c, l, h, le);
120
+ },
121
+ eq: function(a, y, c, l, h) {
122
+ return norm(a, y, c, l, h, eq);
123
+ }
124
+ };
125
+ }
126
+ });
127
+
128
+ // node_modules/two-product/two-product.js
129
+ var require_two_product = __commonJS({
130
+ "node_modules/two-product/two-product.js"(exports, module) {
131
+ "use strict";
132
+ module.exports = twoProduct;
133
+ var SPLITTER = +(Math.pow(2, 27) + 1);
134
+ function twoProduct(a, b, result) {
135
+ var x = a * b;
136
+ var c = SPLITTER * a;
137
+ var abig = c - a;
138
+ var ahi = c - abig;
139
+ var alo = a - ahi;
140
+ var d = SPLITTER * b;
141
+ var bbig = d - b;
142
+ var bhi = d - bbig;
143
+ var blo = b - bhi;
144
+ var err1 = x - ahi * bhi;
145
+ var err2 = err1 - alo * bhi;
146
+ var err3 = err2 - ahi * blo;
147
+ var y = alo * blo - err3;
148
+ if (result) {
149
+ result[0] = y;
150
+ result[1] = x;
151
+ return result;
152
+ }
153
+ return [y, x];
154
+ }
155
+ }
156
+ });
157
+
158
+ // node_modules/robust-sum/robust-sum.js
159
+ var require_robust_sum = __commonJS({
160
+ "node_modules/robust-sum/robust-sum.js"(exports, module) {
161
+ "use strict";
162
+ module.exports = linearExpansionSum;
163
+ function scalarScalar(a, b) {
164
+ var x = a + b;
165
+ var bv = x - a;
166
+ var av = x - bv;
167
+ var br = b - bv;
168
+ var ar = a - av;
169
+ var y = ar + br;
170
+ if (y) {
171
+ return [y, x];
172
+ }
173
+ return [x];
174
+ }
175
+ function linearExpansionSum(e, f) {
176
+ var ne = e.length | 0;
177
+ var nf = f.length | 0;
178
+ if (ne === 1 && nf === 1) {
179
+ return scalarScalar(e[0], f[0]);
180
+ }
181
+ var n = ne + nf;
182
+ var g = new Array(n);
183
+ var count = 0;
184
+ var eptr = 0;
185
+ var fptr = 0;
186
+ var abs = Math.abs;
187
+ var ei = e[eptr];
188
+ var ea = abs(ei);
189
+ var fi = f[fptr];
190
+ var fa = abs(fi);
191
+ var a, b;
192
+ if (ea < fa) {
193
+ b = ei;
194
+ eptr += 1;
195
+ if (eptr < ne) {
196
+ ei = e[eptr];
197
+ ea = abs(ei);
198
+ }
199
+ } else {
200
+ b = fi;
201
+ fptr += 1;
202
+ if (fptr < nf) {
203
+ fi = f[fptr];
204
+ fa = abs(fi);
205
+ }
206
+ }
207
+ if (eptr < ne && ea < fa || fptr >= nf) {
208
+ a = ei;
209
+ eptr += 1;
210
+ if (eptr < ne) {
211
+ ei = e[eptr];
212
+ ea = abs(ei);
213
+ }
214
+ } else {
215
+ a = fi;
216
+ fptr += 1;
217
+ if (fptr < nf) {
218
+ fi = f[fptr];
219
+ fa = abs(fi);
220
+ }
221
+ }
222
+ var x = a + b;
223
+ var bv = x - a;
224
+ var y = b - bv;
225
+ var q0 = y;
226
+ var q1 = x;
227
+ var _x, _bv, _av, _br, _ar;
228
+ while (eptr < ne && fptr < nf) {
229
+ if (ea < fa) {
230
+ a = ei;
231
+ eptr += 1;
232
+ if (eptr < ne) {
233
+ ei = e[eptr];
234
+ ea = abs(ei);
235
+ }
236
+ } else {
237
+ a = fi;
238
+ fptr += 1;
239
+ if (fptr < nf) {
240
+ fi = f[fptr];
241
+ fa = abs(fi);
242
+ }
243
+ }
244
+ b = q0;
245
+ x = a + b;
246
+ bv = x - a;
247
+ y = b - bv;
248
+ if (y) {
249
+ g[count++] = y;
250
+ }
251
+ _x = q1 + x;
252
+ _bv = _x - q1;
253
+ _av = _x - _bv;
254
+ _br = x - _bv;
255
+ _ar = q1 - _av;
256
+ q0 = _ar + _br;
257
+ q1 = _x;
258
+ }
259
+ while (eptr < ne) {
260
+ a = ei;
261
+ b = q0;
262
+ x = a + b;
263
+ bv = x - a;
264
+ y = b - bv;
265
+ if (y) {
266
+ g[count++] = y;
267
+ }
268
+ _x = q1 + x;
269
+ _bv = _x - q1;
270
+ _av = _x - _bv;
271
+ _br = x - _bv;
272
+ _ar = q1 - _av;
273
+ q0 = _ar + _br;
274
+ q1 = _x;
275
+ eptr += 1;
276
+ if (eptr < ne) {
277
+ ei = e[eptr];
278
+ }
279
+ }
280
+ while (fptr < nf) {
281
+ a = fi;
282
+ b = q0;
283
+ x = a + b;
284
+ bv = x - a;
285
+ y = b - bv;
286
+ if (y) {
287
+ g[count++] = y;
288
+ }
289
+ _x = q1 + x;
290
+ _bv = _x - q1;
291
+ _av = _x - _bv;
292
+ _br = x - _bv;
293
+ _ar = q1 - _av;
294
+ q0 = _ar + _br;
295
+ q1 = _x;
296
+ fptr += 1;
297
+ if (fptr < nf) {
298
+ fi = f[fptr];
299
+ }
300
+ }
301
+ if (q0) {
302
+ g[count++] = q0;
303
+ }
304
+ if (q1) {
305
+ g[count++] = q1;
306
+ }
307
+ if (!count) {
308
+ g[count++] = 0;
309
+ }
310
+ g.length = count;
311
+ return g;
312
+ }
313
+ }
314
+ });
315
+
316
+ // node_modules/two-sum/two-sum.js
317
+ var require_two_sum = __commonJS({
318
+ "node_modules/two-sum/two-sum.js"(exports, module) {
319
+ "use strict";
320
+ module.exports = fastTwoSum;
321
+ function fastTwoSum(a, b, result) {
322
+ var x = a + b;
323
+ var bv = x - a;
324
+ var av = x - bv;
325
+ var br = b - bv;
326
+ var ar = a - av;
327
+ if (result) {
328
+ result[0] = ar + br;
329
+ result[1] = x;
330
+ return result;
331
+ }
332
+ return [ar + br, x];
333
+ }
334
+ }
335
+ });
336
+
337
+ // node_modules/robust-scale/robust-scale.js
338
+ var require_robust_scale = __commonJS({
339
+ "node_modules/robust-scale/robust-scale.js"(exports, module) {
340
+ "use strict";
341
+ var twoProduct = require_two_product();
342
+ var twoSum = require_two_sum();
343
+ module.exports = scaleLinearExpansion;
344
+ function scaleLinearExpansion(e, scale2) {
345
+ var n = e.length;
346
+ if (n === 1) {
347
+ var ts = twoProduct(e[0], scale2);
348
+ if (ts[0]) {
349
+ return ts;
350
+ }
351
+ return [ts[1]];
352
+ }
353
+ var g = new Array(2 * n);
354
+ var q = [0.1, 0.1];
355
+ var t = [0.1, 0.1];
356
+ var count = 0;
357
+ twoProduct(e[0], scale2, q);
358
+ if (q[0]) {
359
+ g[count++] = q[0];
360
+ }
361
+ for (var i = 1; i < n; ++i) {
362
+ twoProduct(e[i], scale2, t);
363
+ var pq = q[1];
364
+ twoSum(pq, t[0], q);
365
+ if (q[0]) {
366
+ g[count++] = q[0];
367
+ }
368
+ var a = t[1];
369
+ var b = q[1];
370
+ var x = a + b;
371
+ var bv = x - a;
372
+ var y = b - bv;
373
+ q[1] = x;
374
+ if (y) {
375
+ g[count++] = y;
376
+ }
377
+ }
378
+ if (q[1]) {
379
+ g[count++] = q[1];
380
+ }
381
+ if (count === 0) {
382
+ g[count++] = 0;
383
+ }
384
+ g.length = count;
385
+ return g;
386
+ }
387
+ }
388
+ });
389
+
390
+ // node_modules/robust-subtract/robust-diff.js
391
+ var require_robust_diff = __commonJS({
392
+ "node_modules/robust-subtract/robust-diff.js"(exports, module) {
393
+ "use strict";
394
+ module.exports = robustSubtract;
395
+ function scalarScalar(a, b) {
396
+ var x = a + b;
397
+ var bv = x - a;
398
+ var av = x - bv;
399
+ var br = b - bv;
400
+ var ar = a - av;
401
+ var y = ar + br;
402
+ if (y) {
403
+ return [y, x];
404
+ }
405
+ return [x];
406
+ }
407
+ function robustSubtract(e, f) {
408
+ var ne = e.length | 0;
409
+ var nf = f.length | 0;
410
+ if (ne === 1 && nf === 1) {
411
+ return scalarScalar(e[0], -f[0]);
412
+ }
413
+ var n = ne + nf;
414
+ var g = new Array(n);
415
+ var count = 0;
416
+ var eptr = 0;
417
+ var fptr = 0;
418
+ var abs = Math.abs;
419
+ var ei = e[eptr];
420
+ var ea = abs(ei);
421
+ var fi = -f[fptr];
422
+ var fa = abs(fi);
423
+ var a, b;
424
+ if (ea < fa) {
425
+ b = ei;
426
+ eptr += 1;
427
+ if (eptr < ne) {
428
+ ei = e[eptr];
429
+ ea = abs(ei);
430
+ }
431
+ } else {
432
+ b = fi;
433
+ fptr += 1;
434
+ if (fptr < nf) {
435
+ fi = -f[fptr];
436
+ fa = abs(fi);
437
+ }
438
+ }
439
+ if (eptr < ne && ea < fa || fptr >= nf) {
440
+ a = ei;
441
+ eptr += 1;
442
+ if (eptr < ne) {
443
+ ei = e[eptr];
444
+ ea = abs(ei);
445
+ }
446
+ } else {
447
+ a = fi;
448
+ fptr += 1;
449
+ if (fptr < nf) {
450
+ fi = -f[fptr];
451
+ fa = abs(fi);
452
+ }
453
+ }
454
+ var x = a + b;
455
+ var bv = x - a;
456
+ var y = b - bv;
457
+ var q0 = y;
458
+ var q1 = x;
459
+ var _x, _bv, _av, _br, _ar;
460
+ while (eptr < ne && fptr < nf) {
461
+ if (ea < fa) {
462
+ a = ei;
463
+ eptr += 1;
464
+ if (eptr < ne) {
465
+ ei = e[eptr];
466
+ ea = abs(ei);
467
+ }
468
+ } else {
469
+ a = fi;
470
+ fptr += 1;
471
+ if (fptr < nf) {
472
+ fi = -f[fptr];
473
+ fa = abs(fi);
474
+ }
475
+ }
476
+ b = q0;
477
+ x = a + b;
478
+ bv = x - a;
479
+ y = b - bv;
480
+ if (y) {
481
+ g[count++] = y;
482
+ }
483
+ _x = q1 + x;
484
+ _bv = _x - q1;
485
+ _av = _x - _bv;
486
+ _br = x - _bv;
487
+ _ar = q1 - _av;
488
+ q0 = _ar + _br;
489
+ q1 = _x;
490
+ }
491
+ while (eptr < ne) {
492
+ a = ei;
493
+ b = q0;
494
+ x = a + b;
495
+ bv = x - a;
496
+ y = b - bv;
497
+ if (y) {
498
+ g[count++] = y;
499
+ }
500
+ _x = q1 + x;
501
+ _bv = _x - q1;
502
+ _av = _x - _bv;
503
+ _br = x - _bv;
504
+ _ar = q1 - _av;
505
+ q0 = _ar + _br;
506
+ q1 = _x;
507
+ eptr += 1;
508
+ if (eptr < ne) {
509
+ ei = e[eptr];
510
+ }
511
+ }
512
+ while (fptr < nf) {
513
+ a = fi;
514
+ b = q0;
515
+ x = a + b;
516
+ bv = x - a;
517
+ y = b - bv;
518
+ if (y) {
519
+ g[count++] = y;
520
+ }
521
+ _x = q1 + x;
522
+ _bv = _x - q1;
523
+ _av = _x - _bv;
524
+ _br = x - _bv;
525
+ _ar = q1 - _av;
526
+ q0 = _ar + _br;
527
+ q1 = _x;
528
+ fptr += 1;
529
+ if (fptr < nf) {
530
+ fi = -f[fptr];
531
+ }
532
+ }
533
+ if (q0) {
534
+ g[count++] = q0;
535
+ }
536
+ if (q1) {
537
+ g[count++] = q1;
538
+ }
539
+ if (!count) {
540
+ g[count++] = 0;
541
+ }
542
+ g.length = count;
543
+ return g;
544
+ }
545
+ }
546
+ });
547
+
548
+ // node_modules/robust-orientation/orientation.js
549
+ var require_orientation = __commonJS({
550
+ "node_modules/robust-orientation/orientation.js"(exports, module) {
551
+ "use strict";
552
+ var twoProduct = require_two_product();
553
+ var robustSum = require_robust_sum();
554
+ var robustScale = require_robust_scale();
555
+ var robustSubtract = require_robust_diff();
556
+ var NUM_EXPAND = 5;
557
+ var EPSILON = 11102230246251565e-32;
558
+ var ERRBOUND3 = (3 + 16 * EPSILON) * EPSILON;
559
+ var ERRBOUND4 = (7 + 56 * EPSILON) * EPSILON;
560
+ function orientation_3(sum, prod, scale2, sub) {
561
+ return function orientation3Exact2(m0, m1, m2) {
562
+ var p = sum(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])));
563
+ var n = sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0]));
564
+ var d = sub(p, n);
565
+ return d[d.length - 1];
566
+ };
567
+ }
568
+ function orientation_4(sum, prod, scale2, sub) {
569
+ return function orientation4Exact2(m0, m1, m2, m3) {
570
+ var p = sum(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))));
571
+ var n = sum(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), sum(scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))));
572
+ var d = sub(p, n);
573
+ return d[d.length - 1];
574
+ };
575
+ }
576
+ function orientation_5(sum, prod, scale2, sub) {
577
+ return function orientation5Exact(m0, m1, m2, m3, m4) {
578
+ var p = sum(sum(sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m2[2]), sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), -m3[2]), scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m4[2]))), m1[3]), sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m3[2]), scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m4[2]))), -m2[3]), scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m4[2]))), m3[3]))), sum(scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), -m4[3]), sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m3[2]), scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m4[2]))), m0[3]), scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m3[2]), scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), m4[2]))), -m1[3])))), sum(sum(scale2(sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m4[2]))), m3[3]), sum(scale2(sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))), -m4[3]), scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), m0[3]))), sum(scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), -m1[3]), sum(scale2(sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))), m2[3]), scale2(sum(scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))), -m3[3])))));
579
+ var n = sum(sum(sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m2[2]), sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), -m3[2]), scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m4[2]))), m0[3]), scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m3[2]), scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), m4[2]))), -m2[3])), sum(scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m4[2]))), m3[3]), scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), -m4[3]))), sum(sum(scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m4[2]))), m0[3]), scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m4[2]))), -m1[3])), sum(scale2(sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m4[2]))), m2[3]), scale2(sum(scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))), -m4[3]))));
580
+ var d = sub(p, n);
581
+ return d[d.length - 1];
582
+ };
583
+ }
584
+ function orientation2(n) {
585
+ var fn = n === 3 ? orientation_3 : n === 4 ? orientation_4 : orientation_5;
586
+ return fn(robustSum, twoProduct, robustScale, robustSubtract);
587
+ }
588
+ var orientation3Exact = orientation2(3);
589
+ var orientation4Exact = orientation2(4);
590
+ var CACHED = [
591
+ function orientation0() {
592
+ return 0;
593
+ },
594
+ function orientation1() {
595
+ return 0;
596
+ },
597
+ function orientation22(a, b) {
598
+ return b[0] - a[0];
599
+ },
600
+ function orientation3(a, b, c) {
601
+ var l = (a[1] - c[1]) * (b[0] - c[0]);
602
+ var r = (a[0] - c[0]) * (b[1] - c[1]);
603
+ var det = l - r;
604
+ var s;
605
+ if (l > 0) {
606
+ if (r <= 0) {
607
+ return det;
608
+ } else {
609
+ s = l + r;
610
+ }
611
+ } else if (l < 0) {
612
+ if (r >= 0) {
613
+ return det;
614
+ } else {
615
+ s = -(l + r);
616
+ }
617
+ } else {
618
+ return det;
619
+ }
620
+ var tol = ERRBOUND3 * s;
621
+ if (det >= tol || det <= -tol) {
622
+ return det;
623
+ }
624
+ return orientation3Exact(a, b, c);
625
+ },
626
+ function orientation4(a, b, c, d) {
627
+ var adx = a[0] - d[0];
628
+ var bdx = b[0] - d[0];
629
+ var cdx = c[0] - d[0];
630
+ var ady = a[1] - d[1];
631
+ var bdy = b[1] - d[1];
632
+ var cdy = c[1] - d[1];
633
+ var adz = a[2] - d[2];
634
+ var bdz = b[2] - d[2];
635
+ var cdz = c[2] - d[2];
636
+ var bdxcdy = bdx * cdy;
637
+ var cdxbdy = cdx * bdy;
638
+ var cdxady = cdx * ady;
639
+ var adxcdy = adx * cdy;
640
+ var adxbdy = adx * bdy;
641
+ var bdxady = bdx * ady;
642
+ var det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady);
643
+ var permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);
644
+ var tol = ERRBOUND4 * permanent;
645
+ if (det > tol || -det > tol) {
646
+ return det;
647
+ }
648
+ return orientation4Exact(a, b, c, d);
649
+ }
650
+ ];
651
+ function slowOrient(args) {
652
+ var proc2 = CACHED[args.length];
653
+ if (!proc2) {
654
+ proc2 = CACHED[args.length] = orientation2(args.length);
655
+ }
656
+ return proc2.apply(void 0, args);
657
+ }
658
+ function proc(slow, o0, o1, o2, o3, o4, o5) {
659
+ return function getOrientation(a0, a1, a2, a3, a4) {
660
+ switch (arguments.length) {
661
+ case 0:
662
+ case 1:
663
+ return 0;
664
+ case 2:
665
+ return o2(a0, a1);
666
+ case 3:
667
+ return o3(a0, a1, a2);
668
+ case 4:
669
+ return o4(a0, a1, a2, a3);
670
+ case 5:
671
+ return o5(a0, a1, a2, a3, a4);
672
+ }
673
+ var s = new Array(arguments.length);
674
+ for (var i = 0; i < arguments.length; ++i) {
675
+ s[i] = arguments[i];
676
+ }
677
+ return slow(s);
678
+ };
679
+ }
680
+ function generateOrientationProc() {
681
+ while (CACHED.length <= NUM_EXPAND) {
682
+ CACHED.push(orientation2(CACHED.length));
683
+ }
684
+ module.exports = proc.apply(void 0, [slowOrient].concat(CACHED));
685
+ for (var i = 0; i <= NUM_EXPAND; ++i) {
686
+ module.exports[i] = CACHED[i];
687
+ }
688
+ }
689
+ generateOrientationProc();
690
+ }
691
+ });
692
+
693
+ // node_modules/cdt2d/lib/monotone.js
694
+ var require_monotone = __commonJS({
695
+ "node_modules/cdt2d/lib/monotone.js"(exports, module) {
696
+ "use strict";
697
+ var bsearch = require_search_bounds();
698
+ var orient = require_orientation()[3];
699
+ var EVENT_POINT = 0;
700
+ var EVENT_END = 1;
701
+ var EVENT_START = 2;
702
+ module.exports = monotoneTriangulate;
703
+ function PartialHull(a, b, idx, lowerIds, upperIds) {
704
+ this.a = a;
705
+ this.b = b;
706
+ this.idx = idx;
707
+ this.lowerIds = lowerIds;
708
+ this.upperIds = upperIds;
709
+ }
710
+ function Event(a, b, type, idx) {
711
+ this.a = a;
712
+ this.b = b;
713
+ this.type = type;
714
+ this.idx = idx;
715
+ }
716
+ function compareEvent(a, b) {
717
+ var d = a.a[0] - b.a[0] || a.a[1] - b.a[1] || a.type - b.type;
718
+ if (d) {
719
+ return d;
720
+ }
721
+ if (a.type !== EVENT_POINT) {
722
+ d = orient(a.a, a.b, b.b);
723
+ if (d) {
724
+ return d;
725
+ }
726
+ }
727
+ return a.idx - b.idx;
728
+ }
729
+ function testPoint(hull, p) {
730
+ return orient(hull.a, hull.b, p);
731
+ }
732
+ function addPoint(cells, hulls, points, p, idx) {
733
+ var lo = bsearch.lt(hulls, p, testPoint);
734
+ var hi = bsearch.gt(hulls, p, testPoint);
735
+ for (var i = lo; i < hi; ++i) {
736
+ var hull = hulls[i];
737
+ var lowerIds = hull.lowerIds;
738
+ var m = lowerIds.length;
739
+ while (m > 1 && orient(
740
+ points[lowerIds[m - 2]],
741
+ points[lowerIds[m - 1]],
742
+ p
743
+ ) > 0) {
744
+ cells.push(
745
+ [
746
+ lowerIds[m - 1],
747
+ lowerIds[m - 2],
748
+ idx
749
+ ]
750
+ );
751
+ m -= 1;
752
+ }
753
+ lowerIds.length = m;
754
+ lowerIds.push(idx);
755
+ var upperIds = hull.upperIds;
756
+ var m = upperIds.length;
757
+ while (m > 1 && orient(
758
+ points[upperIds[m - 2]],
759
+ points[upperIds[m - 1]],
760
+ p
761
+ ) < 0) {
762
+ cells.push(
763
+ [
764
+ upperIds[m - 2],
765
+ upperIds[m - 1],
766
+ idx
767
+ ]
768
+ );
769
+ m -= 1;
770
+ }
771
+ upperIds.length = m;
772
+ upperIds.push(idx);
773
+ }
774
+ }
775
+ function findSplit(hull, edge) {
776
+ var d;
777
+ if (hull.a[0] < edge.a[0]) {
778
+ d = orient(hull.a, hull.b, edge.a);
779
+ } else {
780
+ d = orient(edge.b, edge.a, hull.a);
781
+ }
782
+ if (d) {
783
+ return d;
784
+ }
785
+ if (edge.b[0] < hull.b[0]) {
786
+ d = orient(hull.a, hull.b, edge.b);
787
+ } else {
788
+ d = orient(edge.b, edge.a, hull.b);
789
+ }
790
+ return d || hull.idx - edge.idx;
791
+ }
792
+ function splitHulls(hulls, points, event) {
793
+ var splitIdx = bsearch.le(hulls, event, findSplit);
794
+ var hull = hulls[splitIdx];
795
+ var upperIds = hull.upperIds;
796
+ var x = upperIds[upperIds.length - 1];
797
+ hull.upperIds = [x];
798
+ hulls.splice(
799
+ splitIdx + 1,
800
+ 0,
801
+ new PartialHull(event.a, event.b, event.idx, [x], upperIds)
802
+ );
803
+ }
804
+ function mergeHulls(hulls, points, event) {
805
+ var tmp = event.a;
806
+ event.a = event.b;
807
+ event.b = tmp;
808
+ var mergeIdx = bsearch.eq(hulls, event, findSplit);
809
+ var upper = hulls[mergeIdx];
810
+ var lower = hulls[mergeIdx - 1];
811
+ lower.upperIds = upper.upperIds;
812
+ hulls.splice(mergeIdx, 1);
813
+ }
814
+ function monotoneTriangulate(points, edges) {
815
+ var numPoints = points.length;
816
+ var numEdges = edges.length;
817
+ var events = [];
818
+ for (var i = 0; i < numPoints; ++i) {
819
+ events.push(new Event(
820
+ points[i],
821
+ null,
822
+ EVENT_POINT,
823
+ i
824
+ ));
825
+ }
826
+ for (var i = 0; i < numEdges; ++i) {
827
+ var e = edges[i];
828
+ var a = points[e[0]];
829
+ var b = points[e[1]];
830
+ if (a[0] < b[0]) {
831
+ events.push(
832
+ new Event(a, b, EVENT_START, i),
833
+ new Event(b, a, EVENT_END, i)
834
+ );
835
+ } else if (a[0] > b[0]) {
836
+ events.push(
837
+ new Event(b, a, EVENT_START, i),
838
+ new Event(a, b, EVENT_END, i)
839
+ );
840
+ }
841
+ }
842
+ events.sort(compareEvent);
843
+ var minX = events[0].a[0] - (1 + Math.abs(events[0].a[0])) * Math.pow(2, -52);
844
+ var hull = [new PartialHull([minX, 1], [minX, 0], -1, [], [], [], [])];
845
+ var cells = [];
846
+ for (var i = 0, numEvents = events.length; i < numEvents; ++i) {
847
+ var event = events[i];
848
+ var type = event.type;
849
+ if (type === EVENT_POINT) {
850
+ addPoint(cells, hull, points, event.a, event.idx);
851
+ } else if (type === EVENT_START) {
852
+ splitHulls(hull, points, event);
853
+ } else {
854
+ mergeHulls(hull, points, event);
855
+ }
856
+ }
857
+ return cells;
858
+ }
859
+ }
860
+ });
861
+
862
+ // node_modules/cdt2d/lib/triangulation.js
863
+ var require_triangulation = __commonJS({
864
+ "node_modules/cdt2d/lib/triangulation.js"(exports, module) {
865
+ "use strict";
866
+ var bsearch = require_search_bounds();
867
+ module.exports = createTriangulation;
868
+ function Triangulation(stars, edges) {
869
+ this.stars = stars;
870
+ this.edges = edges;
871
+ }
872
+ var proto = Triangulation.prototype;
873
+ function removePair(list, j, k) {
874
+ for (var i = 1, n = list.length; i < n; i += 2) {
875
+ if (list[i - 1] === j && list[i] === k) {
876
+ list[i - 1] = list[n - 2];
877
+ list[i] = list[n - 1];
878
+ list.length = n - 2;
879
+ return;
880
+ }
881
+ }
882
+ }
883
+ proto.isConstraint = /* @__PURE__ */ (function() {
884
+ var e = [0, 0];
885
+ function compareLex(a, b) {
886
+ return a[0] - b[0] || a[1] - b[1];
887
+ }
888
+ return function(i, j) {
889
+ e[0] = Math.min(i, j);
890
+ e[1] = Math.max(i, j);
891
+ return bsearch.eq(this.edges, e, compareLex) >= 0;
892
+ };
893
+ })();
894
+ proto.removeTriangle = function(i, j, k) {
895
+ var stars = this.stars;
896
+ removePair(stars[i], j, k);
897
+ removePair(stars[j], k, i);
898
+ removePair(stars[k], i, j);
899
+ };
900
+ proto.addTriangle = function(i, j, k) {
901
+ var stars = this.stars;
902
+ stars[i].push(j, k);
903
+ stars[j].push(k, i);
904
+ stars[k].push(i, j);
905
+ };
906
+ proto.opposite = function(j, i) {
907
+ var list = this.stars[i];
908
+ for (var k = 1, n = list.length; k < n; k += 2) {
909
+ if (list[k] === j) {
910
+ return list[k - 1];
911
+ }
912
+ }
913
+ return -1;
914
+ };
915
+ proto.flip = function(i, j) {
916
+ var a = this.opposite(i, j);
917
+ var b = this.opposite(j, i);
918
+ this.removeTriangle(i, j, a);
919
+ this.removeTriangle(j, i, b);
920
+ this.addTriangle(i, b, a);
921
+ this.addTriangle(j, a, b);
922
+ };
923
+ proto.edges = function() {
924
+ var stars = this.stars;
925
+ var result = [];
926
+ for (var i = 0, n = stars.length; i < n; ++i) {
927
+ var list = stars[i];
928
+ for (var j = 0, m = list.length; j < m; j += 2) {
929
+ result.push([list[j], list[j + 1]]);
930
+ }
931
+ }
932
+ return result;
933
+ };
934
+ proto.cells = function() {
935
+ var stars = this.stars;
936
+ var result = [];
937
+ for (var i = 0, n = stars.length; i < n; ++i) {
938
+ var list = stars[i];
939
+ for (var j = 0, m = list.length; j < m; j += 2) {
940
+ var s = list[j];
941
+ var t = list[j + 1];
942
+ if (i < Math.min(s, t)) {
943
+ result.push([i, s, t]);
944
+ }
945
+ }
946
+ }
947
+ return result;
948
+ };
949
+ function createTriangulation(numVerts, edges) {
950
+ var stars = new Array(numVerts);
951
+ for (var i = 0; i < numVerts; ++i) {
952
+ stars[i] = [];
953
+ }
954
+ return new Triangulation(stars, edges);
955
+ }
956
+ }
957
+ });
958
+
959
+ // node_modules/robust-in-sphere/in-sphere.js
960
+ var require_in_sphere = __commonJS({
961
+ "node_modules/robust-in-sphere/in-sphere.js"(exports, module) {
962
+ "use strict";
963
+ var twoProduct = require_two_product();
964
+ var robustSum = require_robust_sum();
965
+ var robustDiff = require_robust_diff();
966
+ var robustScale = require_robust_scale();
967
+ var NUM_EXPAND = 6;
968
+ function orientation2(n) {
969
+ var fn = n === 3 ? inSphere3 : n === 4 ? inSphere4 : n === 5 ? inSphere5 : inSphere6;
970
+ return fn(robustSum, robustDiff, twoProduct, robustScale);
971
+ }
972
+ function inSphere0() {
973
+ return 0;
974
+ }
975
+ function inSphere1() {
976
+ return 0;
977
+ }
978
+ function inSphere2() {
979
+ return 0;
980
+ }
981
+ function inSphere3(sum, diff, prod, scale2) {
982
+ function exactInSphere3(m0, m1, m2) {
983
+ var w0 = prod(m0[0], m0[0]);
984
+ var w0m1 = scale2(w0, m1[0]);
985
+ var w0m2 = scale2(w0, m2[0]);
986
+ var w1 = prod(m1[0], m1[0]);
987
+ var w1m0 = scale2(w1, m0[0]);
988
+ var w1m2 = scale2(w1, m2[0]);
989
+ var w2 = prod(m2[0], m2[0]);
990
+ var w2m0 = scale2(w2, m0[0]);
991
+ var w2m1 = scale2(w2, m1[0]);
992
+ var p = sum(diff(w2m1, w1m2), diff(w1m0, w0m1));
993
+ var n = diff(w2m0, w0m2);
994
+ var d = diff(p, n);
995
+ return d[d.length - 1];
996
+ }
997
+ return exactInSphere3;
998
+ }
999
+ function inSphere4(sum, diff, prod, scale2) {
1000
+ function exactInSphere4(m0, m1, m2, m3) {
1001
+ var w0 = sum(prod(m0[0], m0[0]), prod(m0[1], m0[1]));
1002
+ var w0m1 = scale2(w0, m1[0]);
1003
+ var w0m2 = scale2(w0, m2[0]);
1004
+ var w0m3 = scale2(w0, m3[0]);
1005
+ var w1 = sum(prod(m1[0], m1[0]), prod(m1[1], m1[1]));
1006
+ var w1m0 = scale2(w1, m0[0]);
1007
+ var w1m2 = scale2(w1, m2[0]);
1008
+ var w1m3 = scale2(w1, m3[0]);
1009
+ var w2 = sum(prod(m2[0], m2[0]), prod(m2[1], m2[1]));
1010
+ var w2m0 = scale2(w2, m0[0]);
1011
+ var w2m1 = scale2(w2, m1[0]);
1012
+ var w2m3 = scale2(w2, m3[0]);
1013
+ var w3 = sum(prod(m3[0], m3[0]), prod(m3[1], m3[1]));
1014
+ var w3m0 = scale2(w3, m0[0]);
1015
+ var w3m1 = scale2(w3, m1[0]);
1016
+ var w3m2 = scale2(w3, m2[0]);
1017
+ var p = sum(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))));
1018
+ var n = sum(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))));
1019
+ var d = diff(p, n);
1020
+ return d[d.length - 1];
1021
+ }
1022
+ return exactInSphere4;
1023
+ }
1024
+ function inSphere5(sum, diff, prod, scale2) {
1025
+ function exactInSphere5(m0, m1, m2, m3, m4) {
1026
+ var w0 = sum(prod(m0[0], m0[0]), sum(prod(m0[1], m0[1]), prod(m0[2], m0[2])));
1027
+ var w0m1 = scale2(w0, m1[0]);
1028
+ var w0m2 = scale2(w0, m2[0]);
1029
+ var w0m3 = scale2(w0, m3[0]);
1030
+ var w0m4 = scale2(w0, m4[0]);
1031
+ var w1 = sum(prod(m1[0], m1[0]), sum(prod(m1[1], m1[1]), prod(m1[2], m1[2])));
1032
+ var w1m0 = scale2(w1, m0[0]);
1033
+ var w1m2 = scale2(w1, m2[0]);
1034
+ var w1m3 = scale2(w1, m3[0]);
1035
+ var w1m4 = scale2(w1, m4[0]);
1036
+ var w2 = sum(prod(m2[0], m2[0]), sum(prod(m2[1], m2[1]), prod(m2[2], m2[2])));
1037
+ var w2m0 = scale2(w2, m0[0]);
1038
+ var w2m1 = scale2(w2, m1[0]);
1039
+ var w2m3 = scale2(w2, m3[0]);
1040
+ var w2m4 = scale2(w2, m4[0]);
1041
+ var w3 = sum(prod(m3[0], m3[0]), sum(prod(m3[1], m3[1]), prod(m3[2], m3[2])));
1042
+ var w3m0 = scale2(w3, m0[0]);
1043
+ var w3m1 = scale2(w3, m1[0]);
1044
+ var w3m2 = scale2(w3, m2[0]);
1045
+ var w3m4 = scale2(w3, m4[0]);
1046
+ var w4 = sum(prod(m4[0], m4[0]), sum(prod(m4[1], m4[1]), prod(m4[2], m4[2])));
1047
+ var w4m0 = scale2(w4, m0[0]);
1048
+ var w4m1 = scale2(w4, m1[0]);
1049
+ var w4m2 = scale2(w4, m2[0]);
1050
+ var w4m3 = scale2(w4, m3[0]);
1051
+ var p = sum(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m1[2]), sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m2[2]), scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m3[2]))), sum(scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m4[2]), sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m1[2])))), sum(sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m3[2]), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m4[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), m0[2]))), sum(scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m1[2]), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m3[2])))));
1052
+ var n = sum(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m4[2]))), sum(sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m4[2]))));
1053
+ var d = diff(p, n);
1054
+ return d[d.length - 1];
1055
+ }
1056
+ return exactInSphere5;
1057
+ }
1058
+ function inSphere6(sum, diff, prod, scale2) {
1059
+ function exactInSphere6(m0, m1, m2, m3, m4, m5) {
1060
+ var w0 = sum(sum(prod(m0[0], m0[0]), prod(m0[1], m0[1])), sum(prod(m0[2], m0[2]), prod(m0[3], m0[3])));
1061
+ var w0m1 = scale2(w0, m1[0]);
1062
+ var w0m2 = scale2(w0, m2[0]);
1063
+ var w0m3 = scale2(w0, m3[0]);
1064
+ var w0m4 = scale2(w0, m4[0]);
1065
+ var w0m5 = scale2(w0, m5[0]);
1066
+ var w1 = sum(sum(prod(m1[0], m1[0]), prod(m1[1], m1[1])), sum(prod(m1[2], m1[2]), prod(m1[3], m1[3])));
1067
+ var w1m0 = scale2(w1, m0[0]);
1068
+ var w1m2 = scale2(w1, m2[0]);
1069
+ var w1m3 = scale2(w1, m3[0]);
1070
+ var w1m4 = scale2(w1, m4[0]);
1071
+ var w1m5 = scale2(w1, m5[0]);
1072
+ var w2 = sum(sum(prod(m2[0], m2[0]), prod(m2[1], m2[1])), sum(prod(m2[2], m2[2]), prod(m2[3], m2[3])));
1073
+ var w2m0 = scale2(w2, m0[0]);
1074
+ var w2m1 = scale2(w2, m1[0]);
1075
+ var w2m3 = scale2(w2, m3[0]);
1076
+ var w2m4 = scale2(w2, m4[0]);
1077
+ var w2m5 = scale2(w2, m5[0]);
1078
+ var w3 = sum(sum(prod(m3[0], m3[0]), prod(m3[1], m3[1])), sum(prod(m3[2], m3[2]), prod(m3[3], m3[3])));
1079
+ var w3m0 = scale2(w3, m0[0]);
1080
+ var w3m1 = scale2(w3, m1[0]);
1081
+ var w3m2 = scale2(w3, m2[0]);
1082
+ var w3m4 = scale2(w3, m4[0]);
1083
+ var w3m5 = scale2(w3, m5[0]);
1084
+ var w4 = sum(sum(prod(m4[0], m4[0]), prod(m4[1], m4[1])), sum(prod(m4[2], m4[2]), prod(m4[3], m4[3])));
1085
+ var w4m0 = scale2(w4, m0[0]);
1086
+ var w4m1 = scale2(w4, m1[0]);
1087
+ var w4m2 = scale2(w4, m2[0]);
1088
+ var w4m3 = scale2(w4, m3[0]);
1089
+ var w4m5 = scale2(w4, m5[0]);
1090
+ var w5 = sum(sum(prod(m5[0], m5[0]), prod(m5[1], m5[1])), sum(prod(m5[2], m5[2]), prod(m5[3], m5[3])));
1091
+ var w5m0 = scale2(w5, m0[0]);
1092
+ var w5m1 = scale2(w5, m1[0]);
1093
+ var w5m2 = scale2(w5, m2[0]);
1094
+ var w5m3 = scale2(w5, m3[0]);
1095
+ var w5m4 = scale2(w5, m4[0]);
1096
+ var p = sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m2[2]), scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), -m5[2]))), m1[3]), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m5[2]))), -m2[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), -m5[2]))), m3[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m5[2]))), -m4[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m1[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m4[2]))), m5[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m5[2]))), m0[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m5[2]))), -m1[3])))), sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), -m5[2]))), m3[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m5[2]))), -m4[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m4[2]))), m5[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m5[2]))), m0[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m5[2]))), -m1[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m5[2]))), m2[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m5[2]))), -m3[3]), scale2(sum(sum(scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), m0[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m3[2]))), m5[3])))));
1097
+ var n = sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m2[2]), scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), -m5[2]))), m0[3]), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m5[2]))), -m2[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m5[2]))), m3[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m5[2]))), -m4[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m4[2]))), m5[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), -m5[2]))), m0[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m5[2]))), -m1[3])))), sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), -m5[2]))), m2[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m5[2]))), -m4[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m4[2]))), m5[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m1[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m4[2]))), m0[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m4[2]))), -m1[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m4[2]))), m2[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m4[2]))), -m3[3]), scale2(sum(sum(scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), m0[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m3[2]))), m4[3])))));
1098
+ var d = diff(p, n);
1099
+ return d[d.length - 1];
1100
+ }
1101
+ return exactInSphere6;
1102
+ }
1103
+ var CACHED = [
1104
+ inSphere0,
1105
+ inSphere1,
1106
+ inSphere2
1107
+ ];
1108
+ function slowInSphere(args) {
1109
+ var proc2 = CACHED[args.length];
1110
+ if (!proc2) {
1111
+ proc2 = CACHED[args.length] = orientation2(args.length);
1112
+ }
1113
+ return proc2.apply(void 0, args);
1114
+ }
1115
+ function proc(slow, o0, o1, o2, o3, o4, o5, o6) {
1116
+ function testInSphere(a0, a1, a2, a3, a4, a5) {
1117
+ switch (arguments.length) {
1118
+ case 0:
1119
+ case 1:
1120
+ return 0;
1121
+ case 2:
1122
+ return o2(a0, a1);
1123
+ case 3:
1124
+ return o3(a0, a1, a2);
1125
+ case 4:
1126
+ return o4(a0, a1, a2, a3);
1127
+ case 5:
1128
+ return o5(a0, a1, a2, a3, a4);
1129
+ case 6:
1130
+ return o6(a0, a1, a2, a3, a4, a5);
1131
+ }
1132
+ var s = new Array(arguments.length);
1133
+ for (var i = 0; i < arguments.length; ++i) {
1134
+ s[i] = arguments[i];
1135
+ }
1136
+ return slow(s);
1137
+ }
1138
+ return testInSphere;
1139
+ }
1140
+ function generateInSphereTest() {
1141
+ while (CACHED.length <= NUM_EXPAND) {
1142
+ CACHED.push(orientation2(CACHED.length));
1143
+ }
1144
+ module.exports = proc.apply(void 0, [slowInSphere].concat(CACHED));
1145
+ for (var i = 0; i <= NUM_EXPAND; ++i) {
1146
+ module.exports[i] = CACHED[i];
1147
+ }
1148
+ }
1149
+ generateInSphereTest();
1150
+ }
1151
+ });
1152
+
1153
+ // node_modules/cdt2d/lib/delaunay.js
1154
+ var require_delaunay = __commonJS({
1155
+ "node_modules/cdt2d/lib/delaunay.js"(exports, module) {
1156
+ "use strict";
1157
+ var inCircle = require_in_sphere()[4];
1158
+ var bsearch = require_search_bounds();
1159
+ module.exports = delaunayRefine;
1160
+ function testFlip(points, triangulation, stack, a, b, x) {
1161
+ var y = triangulation.opposite(a, b);
1162
+ if (y < 0) {
1163
+ return;
1164
+ }
1165
+ if (b < a) {
1166
+ var tmp = a;
1167
+ a = b;
1168
+ b = tmp;
1169
+ tmp = x;
1170
+ x = y;
1171
+ y = tmp;
1172
+ }
1173
+ if (triangulation.isConstraint(a, b)) {
1174
+ return;
1175
+ }
1176
+ if (inCircle(points[a], points[b], points[x], points[y]) < 0) {
1177
+ stack.push(a, b);
1178
+ }
1179
+ }
1180
+ function delaunayRefine(points, triangulation) {
1181
+ var stack = [];
1182
+ var numPoints = points.length;
1183
+ var stars = triangulation.stars;
1184
+ for (var a = 0; a < numPoints; ++a) {
1185
+ var star = stars[a];
1186
+ for (var j = 1; j < star.length; j += 2) {
1187
+ var b = star[j];
1188
+ if (b < a) {
1189
+ continue;
1190
+ }
1191
+ if (triangulation.isConstraint(a, b)) {
1192
+ continue;
1193
+ }
1194
+ var x = star[j - 1], y = -1;
1195
+ for (var k = 1; k < star.length; k += 2) {
1196
+ if (star[k - 1] === b) {
1197
+ y = star[k];
1198
+ break;
1199
+ }
1200
+ }
1201
+ if (y < 0) {
1202
+ continue;
1203
+ }
1204
+ if (inCircle(points[a], points[b], points[x], points[y]) < 0) {
1205
+ stack.push(a, b);
1206
+ }
1207
+ }
1208
+ }
1209
+ while (stack.length > 0) {
1210
+ var b = stack.pop();
1211
+ var a = stack.pop();
1212
+ var x = -1, y = -1;
1213
+ var star = stars[a];
1214
+ for (var i = 1; i < star.length; i += 2) {
1215
+ var s = star[i - 1];
1216
+ var t = star[i];
1217
+ if (s === b) {
1218
+ y = t;
1219
+ } else if (t === b) {
1220
+ x = s;
1221
+ }
1222
+ }
1223
+ if (x < 0 || y < 0) {
1224
+ continue;
1225
+ }
1226
+ if (inCircle(points[a], points[b], points[x], points[y]) >= 0) {
1227
+ continue;
1228
+ }
1229
+ triangulation.flip(a, b);
1230
+ testFlip(points, triangulation, stack, x, a, y);
1231
+ testFlip(points, triangulation, stack, a, y, x);
1232
+ testFlip(points, triangulation, stack, y, b, x);
1233
+ testFlip(points, triangulation, stack, b, x, y);
1234
+ }
1235
+ }
1236
+ }
1237
+ });
1238
+
1239
+ // node_modules/cdt2d/lib/filter.js
1240
+ var require_filter = __commonJS({
1241
+ "node_modules/cdt2d/lib/filter.js"(exports, module) {
1242
+ "use strict";
1243
+ var bsearch = require_search_bounds();
1244
+ module.exports = classifyFaces;
1245
+ function FaceIndex(cells, neighbor, constraint, flags, active, next, boundary) {
1246
+ this.cells = cells;
1247
+ this.neighbor = neighbor;
1248
+ this.flags = flags;
1249
+ this.constraint = constraint;
1250
+ this.active = active;
1251
+ this.next = next;
1252
+ this.boundary = boundary;
1253
+ }
1254
+ var proto = FaceIndex.prototype;
1255
+ function compareCell(a, b) {
1256
+ return a[0] - b[0] || a[1] - b[1] || a[2] - b[2];
1257
+ }
1258
+ proto.locate = /* @__PURE__ */ (function() {
1259
+ var key = [0, 0, 0];
1260
+ return function(a, b, c) {
1261
+ var x = a, y = b, z = c;
1262
+ if (b < c) {
1263
+ if (b < a) {
1264
+ x = b;
1265
+ y = c;
1266
+ z = a;
1267
+ }
1268
+ } else if (c < a) {
1269
+ x = c;
1270
+ y = a;
1271
+ z = b;
1272
+ }
1273
+ if (x < 0) {
1274
+ return -1;
1275
+ }
1276
+ key[0] = x;
1277
+ key[1] = y;
1278
+ key[2] = z;
1279
+ return bsearch.eq(this.cells, key, compareCell);
1280
+ };
1281
+ })();
1282
+ function indexCells(triangulation, infinity) {
1283
+ var cells = triangulation.cells();
1284
+ var nc = cells.length;
1285
+ for (var i = 0; i < nc; ++i) {
1286
+ var c = cells[i];
1287
+ var x = c[0], y = c[1], z = c[2];
1288
+ if (y < z) {
1289
+ if (y < x) {
1290
+ c[0] = y;
1291
+ c[1] = z;
1292
+ c[2] = x;
1293
+ }
1294
+ } else if (z < x) {
1295
+ c[0] = z;
1296
+ c[1] = x;
1297
+ c[2] = y;
1298
+ }
1299
+ }
1300
+ cells.sort(compareCell);
1301
+ var flags = new Array(nc);
1302
+ for (var i = 0; i < flags.length; ++i) {
1303
+ flags[i] = 0;
1304
+ }
1305
+ var active = [];
1306
+ var next = [];
1307
+ var neighbor = new Array(3 * nc);
1308
+ var constraint = new Array(3 * nc);
1309
+ var boundary = null;
1310
+ if (infinity) {
1311
+ boundary = [];
1312
+ }
1313
+ var index = new FaceIndex(
1314
+ cells,
1315
+ neighbor,
1316
+ constraint,
1317
+ flags,
1318
+ active,
1319
+ next,
1320
+ boundary
1321
+ );
1322
+ for (var i = 0; i < nc; ++i) {
1323
+ var c = cells[i];
1324
+ for (var j = 0; j < 3; ++j) {
1325
+ var x = c[j], y = c[(j + 1) % 3];
1326
+ var a = neighbor[3 * i + j] = index.locate(y, x, triangulation.opposite(y, x));
1327
+ var b = constraint[3 * i + j] = triangulation.isConstraint(x, y);
1328
+ if (a < 0) {
1329
+ if (b) {
1330
+ next.push(i);
1331
+ } else {
1332
+ active.push(i);
1333
+ flags[i] = 1;
1334
+ }
1335
+ if (infinity) {
1336
+ boundary.push([y, x, -1]);
1337
+ }
1338
+ }
1339
+ }
1340
+ }
1341
+ return index;
1342
+ }
1343
+ function filterCells(cells, flags, target) {
1344
+ var ptr = 0;
1345
+ for (var i = 0; i < cells.length; ++i) {
1346
+ if (flags[i] === target) {
1347
+ cells[ptr++] = cells[i];
1348
+ }
1349
+ }
1350
+ cells.length = ptr;
1351
+ return cells;
1352
+ }
1353
+ function classifyFaces(triangulation, target, infinity) {
1354
+ var index = indexCells(triangulation, infinity);
1355
+ if (target === 0) {
1356
+ if (infinity) {
1357
+ return index.cells.concat(index.boundary);
1358
+ } else {
1359
+ return index.cells;
1360
+ }
1361
+ }
1362
+ var side = 1;
1363
+ var active = index.active;
1364
+ var next = index.next;
1365
+ var flags = index.flags;
1366
+ var cells = index.cells;
1367
+ var constraint = index.constraint;
1368
+ var neighbor = index.neighbor;
1369
+ while (active.length > 0 || next.length > 0) {
1370
+ while (active.length > 0) {
1371
+ var t = active.pop();
1372
+ if (flags[t] === -side) {
1373
+ continue;
1374
+ }
1375
+ flags[t] = side;
1376
+ var c = cells[t];
1377
+ for (var j = 0; j < 3; ++j) {
1378
+ var f = neighbor[3 * t + j];
1379
+ if (f >= 0 && flags[f] === 0) {
1380
+ if (constraint[3 * t + j]) {
1381
+ next.push(f);
1382
+ } else {
1383
+ active.push(f);
1384
+ flags[f] = side;
1385
+ }
1386
+ }
1387
+ }
1388
+ }
1389
+ var tmp = next;
1390
+ next = active;
1391
+ active = tmp;
1392
+ next.length = 0;
1393
+ side = -side;
1394
+ }
1395
+ var result = filterCells(cells, flags, target);
1396
+ if (infinity) {
1397
+ return result.concat(index.boundary);
1398
+ }
1399
+ return result;
1400
+ }
1401
+ }
1402
+ });
1403
+
1404
+ // node_modules/cdt2d/cdt2d.js
1405
+ var require_cdt2d = __commonJS({
1406
+ "node_modules/cdt2d/cdt2d.js"(exports, module) {
1407
+ "use strict";
1408
+ var monotoneTriangulate = require_monotone();
1409
+ var makeIndex = require_triangulation();
1410
+ var delaunayFlip = require_delaunay();
1411
+ var filterTriangulation = require_filter();
1412
+ module.exports = cdt2d2;
1413
+ function canonicalizeEdge(e) {
1414
+ return [Math.min(e[0], e[1]), Math.max(e[0], e[1])];
1415
+ }
1416
+ function compareEdge(a, b) {
1417
+ return a[0] - b[0] || a[1] - b[1];
1418
+ }
1419
+ function canonicalizeEdges(edges) {
1420
+ return edges.map(canonicalizeEdge).sort(compareEdge);
1421
+ }
1422
+ function getDefault(options, property, dflt) {
1423
+ if (property in options) {
1424
+ return options[property];
1425
+ }
1426
+ return dflt;
1427
+ }
1428
+ function cdt2d2(points, edges, options) {
1429
+ if (!Array.isArray(edges)) {
1430
+ options = edges || {};
1431
+ edges = [];
1432
+ } else {
1433
+ options = options || {};
1434
+ edges = edges || [];
1435
+ }
1436
+ var delaunay2 = !!getDefault(options, "delaunay", true);
1437
+ var interior = !!getDefault(options, "interior", true);
1438
+ var exterior = !!getDefault(options, "exterior", true);
1439
+ var infinity = !!getDefault(options, "infinity", false);
1440
+ if (!interior && !exterior || points.length === 0) {
1441
+ return [];
1442
+ }
1443
+ var cells = monotoneTriangulate(points, edges);
1444
+ if (delaunay2 || interior !== exterior || infinity) {
1445
+ var triangulation = makeIndex(points.length, canonicalizeEdges(edges));
1446
+ for (var i = 0; i < cells.length; ++i) {
1447
+ var f = cells[i];
1448
+ triangulation.addTriangle(f[0], f[1], f[2]);
1449
+ }
1450
+ if (delaunay2) {
1451
+ delaunayFlip(points, triangulation);
1452
+ }
1453
+ if (!exterior) {
1454
+ return filterTriangulation(triangulation, -1);
1455
+ } else if (!interior) {
1456
+ return filterTriangulation(triangulation, 1, infinity);
1457
+ } else if (infinity) {
1458
+ return filterTriangulation(triangulation, 0, infinity);
1459
+ } else {
1460
+ return triangulation.cells();
1461
+ }
1462
+ } else {
1463
+ return cells;
1464
+ }
1465
+ }
1466
+ }
1467
+ });
1468
+
1
1469
  // lib/convertConnectionsToSerializedConnections.ts
2
1470
  var convertConnectionsToSerializedConnections = (connections) => {
3
1471
  return connections.map((conn) => ({
@@ -3766,401 +5234,273 @@ ${errors.map((e) => ` - ${e}`).join("\n")}`
3766
5234
  // assets/ViaGraphSolver/via-tile-4-regions.json
3767
5235
  var via_tile_4_regions_default = {
3768
5236
  viasByNet: {
3769
- Net6: [
5237
+ net1: [
3770
5238
  {
3771
- viaId: "4ef04070-bacf-4a8a-8ac9-ea222cf4bf2c",
5239
+ viaId: "14ee4bf1-e7e7-4351-ad16-ba1a8aac0af3",
3772
5240
  diameter: 0.6,
3773
5241
  position: {
3774
- x: 1.483834,
3775
- y: 0.582296
5242
+ x: 1.187494,
5243
+ y: 0.226901
3776
5244
  }
3777
5245
  },
3778
5246
  {
3779
- viaId: "79364d38-c966-4eff-aa4a-e3ff6cca6339",
5247
+ viaId: "8a898812-db2b-4b81-899d-f953b3222f9a",
3780
5248
  diameter: 0.6,
3781
5249
  position: {
3782
- x: -0.695585,
3783
- y: -1.475
3784
- }
3785
- },
3786
- {
3787
- viaId: "f1d52fd5-ddd2-4440-8772-da3d096b033f",
3788
- diameter: 0.6,
3789
- position: {
3790
- x: -0.428066,
3791
- y: 1.185303
5250
+ x: -0.890462,
5251
+ y: 1.024371
3792
5252
  }
3793
5253
  }
3794
5254
  ],
3795
- Net5: [
5255
+ net3: [
3796
5256
  {
3797
- viaId: "4e57cee8-0910-4c83-9ec1-1ed2c9d16dcc",
5257
+ viaId: "13cd75da-d582-4eed-bc2c-fee6fa78bc6a",
3798
5258
  diameter: 0.6,
3799
5259
  position: {
3800
- x: 0.981466,
3801
- y: -1.472559
5260
+ x: -1.229928,
5261
+ y: -1.159683
3802
5262
  }
3803
5263
  },
3804
5264
  {
3805
- viaId: "a3797f13-73f9-48c3-a448-bea3980cdd65",
5265
+ viaId: "9f188f9d-bce8-46c7-b9e8-542b8599d48d",
3806
5266
  diameter: 0.6,
3807
5267
  position: {
3808
- x: -1.276,
3809
- y: -0.834191
3810
- }
3811
- },
3812
- {
3813
- viaId: "b0c56bb1-ea80-4154-9bb7-cb0fd760de8f",
3814
- diameter: 0.6,
3815
- position: {
3816
- x: 0.685025,
3817
- y: 1.338478
5268
+ x: 1.364053,
5269
+ y: 1.083575
3818
5270
  }
3819
5271
  }
3820
5272
  ],
3821
- Net7: [
5273
+ net4: [
3822
5274
  {
3823
- viaId: "3719876b-17c8-4ee3-9cce-5b5c073d6614",
5275
+ viaId: "2ef3b96b-58c4-4150-b5d1-e90f74b92b25",
3824
5276
  diameter: 0.6,
3825
5277
  position: {
3826
- x: 1.434987,
3827
- y: 1.330707
5278
+ x: -0.134894,
5279
+ y: 1.042149
3828
5280
  }
3829
5281
  },
3830
5282
  {
3831
- viaId: "4e46d759-a04a-4f7e-99cd-9e05adf5fa23",
5283
+ viaId: "37a70467-7553-415f-8ad7-8b88a5e56ca8",
3832
5284
  diameter: 0.6,
3833
5285
  position: {
3834
- x: -1.275,
3835
- y: 0
5286
+ x: -1.195947,
5287
+ y: 0.339403
3836
5288
  }
3837
5289
  },
3838
5290
  {
3839
- viaId: "63afce65-b94e-47da-ae14-51ff0ee8eb39",
5291
+ viaId: "6d182b7d-a260-427b-8c43-a09409422252",
3840
5292
  diameter: 0.6,
3841
5293
  position: {
3842
- x: 1.478363,
3843
- y: -0.910782
5294
+ x: -0.141929,
5295
+ y: -1.050896
3844
5296
  }
3845
5297
  }
3846
5298
  ],
3847
- Net8: [
5299
+ net5: [
3848
5300
  {
3849
- viaId: "26d3bef1-a78f-4947-b551-c48f04289a98",
5301
+ viaId: "346c301a-f2b4-44d7-b975-5438ddaa0bde",
3850
5302
  diameter: 0.6,
3851
5303
  position: {
3852
- x: 1.553029,
3853
- y: -0.164505
5304
+ x: 0.587494,
5305
+ y: -0.438741
3854
5306
  }
3855
5307
  },
3856
5308
  {
3857
- viaId: "548acbca-8b68-4186-a589-681ec44fba42",
5309
+ viaId: "c54b4b94-90e0-4240-97ef-883cf097d79d",
3858
5310
  diameter: 0.6,
3859
5311
  position: {
3860
- x: 0.251271,
3861
- y: -1.643783
5312
+ x: 0.614052,
5313
+ y: 1.081959
3862
5314
  }
3863
5315
  },
3864
5316
  {
3865
- viaId: "d6bf60bf-4b90-4967-a295-fc930b1f2549",
5317
+ viaId: "f3cb916e-b0fd-4c5e-b14b-3779f4f9bd01",
3866
5318
  diameter: 0.6,
3867
5319
  position: {
3868
- x: -1.168748,
3869
- y: 1.067434
5320
+ x: -1.192929,
5321
+ y: -0.410594
3870
5322
  }
3871
5323
  }
3872
5324
  ]
3873
5325
  },
3874
5326
  routeSegments: [
3875
5327
  {
3876
- routeId: "Net6:route_0",
3877
- fromPort: "4ef04070-bacf-4a8a-8ac9-ea222cf4bf2c",
3878
- toPort: "f1d52fd5-ddd2-4440-8772-da3d096b033f",
3879
- layer: "bottom",
3880
- segments: [
3881
- {
3882
- x: 1.483834,
3883
- y: 0.582296
3884
- },
3885
- {
3886
- x: 1.960987,
3887
- y: 1.059449
3888
- },
3889
- {
3890
- x: 1.960987,
3891
- y: 1.548584
3892
- },
3893
- {
3894
- x: 1.344093,
3895
- y: 2.165478
3896
- },
3897
- {
3898
- x: 0.165478,
3899
- y: 2.165478
3900
- },
3901
- {
3902
- x: -0.428066,
3903
- y: 1.571934
3904
- },
3905
- {
3906
- x: -0.428066,
3907
- y: 1.185303
3908
- }
3909
- ]
3910
- },
3911
- {
3912
- routeId: "Net6:route_1",
3913
- fromPort: "79364d38-c966-4eff-aa4a-e3ff6cca6339",
3914
- toPort: "f1d52fd5-ddd2-4440-8772-da3d096b033f",
5328
+ routeId: "net1:route_0",
5329
+ fromPort: "14ee4bf1-e7e7-4351-ad16-ba1a8aac0af3",
5330
+ toPort: "8a898812-db2b-4b81-899d-f953b3222f9a",
3915
5331
  layer: "bottom",
3916
5332
  segments: [
3917
5333
  {
3918
- x: -0.695585,
3919
- y: -1.475
3920
- },
3921
- {
3922
- x: -0.810394,
3923
- y: -1.360191
3924
- },
3925
- {
3926
- x: -1.493877,
3927
- y: -1.360191
3928
- },
3929
- {
3930
- x: -1.80445,
3931
- y: -1.049618
3932
- },
3933
- {
3934
- x: -1.80445,
3935
- y: 0.214427
3936
- },
3937
- {
3938
- x: -1.801,
3939
- y: 0.210977
3940
- },
3941
- {
3942
- x: -1.801,
3943
- y: 0.217877
3944
- },
3945
- {
3946
- x: -1.492877,
3947
- y: 0.526
3948
- },
3949
- {
3950
- x: -1.057123,
3951
- y: 0.526
3952
- },
3953
- {
3954
- x: -0.849428,
3955
- y: 0.318305
5334
+ x: 1.187494,
5335
+ y: 0.226901
3956
5336
  },
3957
5337
  {
3958
- x: -0.5,
3959
- y: 0.667733
5338
+ x: 1.187494,
5339
+ y: -0.582618
3960
5340
  },
3961
5341
  {
3962
- x: -0.5,
3963
- y: 0.678735
5342
+ x: 0.193216,
5343
+ y: -1.576896
3964
5344
  },
3965
5345
  {
3966
- x: -0.479066,
3967
- y: 0.699669
5346
+ x: -0.359806,
5347
+ y: -1.576896
3968
5348
  },
3969
5349
  {
3970
- x: -0.479066,
3971
- y: 1.134303
5350
+ x: -0.667929,
5351
+ y: -1.268773
3972
5352
  },
3973
5353
  {
3974
- x: -0.428066,
3975
- y: 1.185303
3976
- }
3977
- ]
3978
- },
3979
- {
3980
- routeId: "Net5:route_0",
3981
- fromPort: "4e57cee8-0910-4c83-9ec1-1ed2c9d16dcc",
3982
- toPort: "a3797f13-73f9-48c3-a448-bea3980cdd65",
3983
- layer: "bottom",
3984
- segments: [
3985
- {
3986
- x: 0.981466,
3987
- y: -1.472559
5354
+ x: -0.667929,
5355
+ y: 0.561982
3988
5356
  },
3989
5357
  {
3990
- x: 0.343098,
3991
- y: -0.834191
5358
+ x: -0.890462,
5359
+ y: 0.784515
3992
5360
  },
3993
5361
  {
3994
- x: -1.276,
3995
- y: -0.834191
5362
+ x: -0.890462,
5363
+ y: 1.024371
3996
5364
  }
3997
5365
  ]
3998
5366
  },
3999
5367
  {
4000
- routeId: "Net5:route_1",
4001
- fromPort: "a3797f13-73f9-48c3-a448-bea3980cdd65",
4002
- toPort: "b0c56bb1-ea80-4154-9bb7-cb0fd760de8f",
5368
+ routeId: "net3:route_0",
5369
+ fromPort: "13cd75da-d582-4eed-bc2c-fee6fa78bc6a",
5370
+ toPort: "9f188f9d-bce8-46c7-b9e8-542b8599d48d",
4003
5371
  layer: "bottom",
4004
5372
  segments: [
4005
5373
  {
4006
- x: -1.276,
4007
- y: -0.834191
5374
+ x: -1.229928,
5375
+ y: -1.159683
4008
5376
  },
4009
5377
  {
4010
- x: -1.156476,
4011
- y: -0.834191
5378
+ x: -0.511715,
5379
+ y: -1.877896
4012
5380
  },
4013
5381
  {
4014
- x: -0.809571,
4015
- y: -0.487286
5382
+ x: 0.317894,
5383
+ y: -1.877896
4016
5384
  },
4017
5385
  {
4018
- x: -0.803663,
4019
- y: -0.487286
5386
+ x: 1.713494,
5387
+ y: -0.482296
4020
5388
  },
4021
5389
  {
4022
- x: 0.397934,
4023
- y: 0.714311
5390
+ x: 1.713494,
5391
+ y: 0.734134
4024
5392
  },
4025
5393
  {
4026
- x: 0.397934,
4027
- y: 1.051387
4028
- },
4029
- {
4030
- x: 0.685025,
4031
- y: 1.338478
5394
+ x: 1.364053,
5395
+ y: 1.083575
4032
5396
  }
4033
5397
  ]
4034
5398
  },
4035
5399
  {
4036
- routeId: "Net7:route_0",
4037
- fromPort: "3719876b-17c8-4ee3-9cce-5b5c073d6614",
4038
- toPort: "63afce65-b94e-47da-ae14-51ff0ee8eb39",
5400
+ routeId: "net4:route_0",
5401
+ fromPort: "2ef3b96b-58c4-4150-b5d1-e90f74b92b25",
5402
+ toPort: "6d182b7d-a260-427b-8c43-a09409422252",
4039
5403
  layer: "bottom",
4040
5404
  segments: [
4041
5405
  {
4042
- x: 1.434987,
4043
- y: 1.330707
4044
- },
4045
- {
4046
- x: 0.957834,
4047
- y: 0.853554
5406
+ x: -0.134894,
5407
+ y: 1.042149
4048
5408
  },
4049
5409
  {
4050
- x: 0.957834,
4051
- y: -0.390253
5410
+ x: -0.141929,
5411
+ y: 1.035114
4052
5412
  },
4053
5413
  {
4054
- x: 1.478363,
4055
- y: -0.910782
5414
+ x: -0.141929,
5415
+ y: -1.050896
4056
5416
  }
4057
5417
  ]
4058
5418
  },
4059
5419
  {
4060
- routeId: "Net7:route_1",
4061
- fromPort: "3719876b-17c8-4ee3-9cce-5b5c073d6614",
4062
- toPort: "4e46d759-a04a-4f7e-99cd-9e05adf5fa23",
5420
+ routeId: "net4:route_1",
5421
+ fromPort: "2ef3b96b-58c4-4150-b5d1-e90f74b92b25",
5422
+ toPort: "37a70467-7553-415f-8ad7-8b88a5e56ca8",
4063
5423
  layer: "bottom",
4064
5424
  segments: [
4065
5425
  {
4066
- x: 1.434987,
4067
- y: 1.330707
5426
+ x: -0.134894,
5427
+ y: 1.042149
4068
5428
  },
4069
5429
  {
4070
- x: 1.434987,
4071
- y: 1.332393
5430
+ x: -0.643116,
5431
+ y: 1.550371
4072
5432
  },
4073
5433
  {
4074
- x: 0.902902,
4075
- y: 1.864478
5434
+ x: -1.108339,
5435
+ y: 1.550371
4076
5436
  },
4077
5437
  {
4078
- x: 0.467148,
4079
- y: 1.864478
5438
+ x: -1.416462,
5439
+ y: 1.242248
4080
5440
  },
4081
5441
  {
4082
- x: 0.096934,
4083
- y: 1.494264
5442
+ x: -1.416462,
5443
+ y: 0.559918
4084
5444
  },
4085
5445
  {
4086
- x: 0.096934,
4087
- y: 0.838989
4088
- },
4089
- {
4090
- x: -0.742055,
4091
- y: 0
4092
- },
4093
- {
4094
- x: -1.275,
4095
- y: 0
5446
+ x: -1.195947,
5447
+ y: 0.339403
4096
5448
  }
4097
5449
  ]
4098
5450
  },
4099
5451
  {
4100
- routeId: "Net8:route_0",
4101
- fromPort: "26d3bef1-a78f-4947-b551-c48f04289a98",
4102
- toPort: "548acbca-8b68-4186-a589-681ec44fba42",
5452
+ routeId: "net5:route_0",
5453
+ fromPort: "346c301a-f2b4-44d7-b975-5438ddaa0bde",
5454
+ toPort: "c54b4b94-90e0-4240-97ef-883cf097d79d",
4103
5455
  layer: "bottom",
4104
5456
  segments: [
4105
5457
  {
4106
- x: 1.553029,
4107
- y: -0.164505
4108
- },
4109
- {
4110
- x: 2.004363,
4111
- y: -0.615839
4112
- },
4113
- {
4114
- x: 2.004363,
4115
- y: -1.193539
5458
+ x: 0.587494,
5459
+ y: -0.438741
4116
5460
  },
4117
5461
  {
4118
- x: 1.197902,
4119
- y: -2
5462
+ x: 0.587494,
5463
+ y: 1.080547
4120
5464
  },
4121
5465
  {
4122
- x: 0.607488,
4123
- y: -2
5466
+ x: 0.588906,
5467
+ y: 1.081959
4124
5468
  },
4125
5469
  {
4126
- x: 0.251271,
4127
- y: -1.643783
5470
+ x: 0.614052,
5471
+ y: 1.081959
4128
5472
  }
4129
5473
  ]
4130
5474
  },
4131
5475
  {
4132
- routeId: "Net8:route_1",
4133
- fromPort: "548acbca-8b68-4186-a589-681ec44fba42",
4134
- toPort: "d6bf60bf-4b90-4967-a295-fc930b1f2549",
5476
+ routeId: "net5:route_1",
5477
+ fromPort: "c54b4b94-90e0-4240-97ef-883cf097d79d",
5478
+ toPort: "f3cb916e-b0fd-4c5e-b14b-3779f4f9bd01",
4135
5479
  layer: "bottom",
4136
5480
  segments: [
4137
5481
  {
4138
- x: 0.251271,
4139
- y: -1.643783
5482
+ x: 0.614052,
5483
+ y: 1.081959
4140
5484
  },
4141
5485
  {
4142
- x: -0.105946,
4143
- y: -2.001
5486
+ x: -0.15536,
5487
+ y: 1.851371
4144
5488
  },
4145
5489
  {
4146
- x: -1.278746,
4147
- y: -2.001
5490
+ x: -1.233017,
5491
+ y: 1.851371
4148
5492
  },
4149
5493
  {
4150
- x: -2.10545,
4151
- y: -1.174296
5494
+ x: -1.721947,
5495
+ y: 1.362441
4152
5496
  },
4153
5497
  {
4154
- x: -2.10545,
4155
- y: 0.339105
5498
+ x: -1.721947,
5499
+ y: 0.118424
4156
5500
  },
4157
5501
  {
4158
- x: -1.377121,
4159
- y: 1.067434
4160
- },
4161
- {
4162
- x: -1.168748,
4163
- y: 1.067434
5502
+ x: -1.192929,
5503
+ y: -0.410594
4164
5504
  }
4165
5505
  ]
4166
5506
  }
@@ -12828,32 +14168,33 @@ Flatten.BooleanOperations = BooleanOperations;
12828
14168
  Flatten.Relations = Relations;
12829
14169
 
12830
14170
  // node_modules/@tscircuit/find-convex-regions/dist/index.js
12831
- var __create = Object.create;
12832
- var __defProp = Object.defineProperty;
12833
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12834
- var __getOwnPropNames = Object.getOwnPropertyNames;
12835
- var __getProtoOf = Object.getPrototypeOf;
12836
- var __hasOwnProp = Object.prototype.hasOwnProperty;
12837
- var __commonJS = (cb, mod) => function __require() {
12838
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
14171
+ var import_cdt2d = __toESM(require_cdt2d(), 1);
14172
+ var __create2 = Object.create;
14173
+ var __defProp2 = Object.defineProperty;
14174
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
14175
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
14176
+ var __getProtoOf2 = Object.getPrototypeOf;
14177
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
14178
+ var __commonJS2 = (cb, mod) => function __require() {
14179
+ return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12839
14180
  };
12840
- var __copyProps = (to, from, except, desc) => {
14181
+ var __copyProps2 = (to, from, except, desc) => {
12841
14182
  if (from && typeof from === "object" || typeof from === "function") {
12842
- for (let key of __getOwnPropNames(from))
12843
- if (!__hasOwnProp.call(to, key) && key !== except)
12844
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14183
+ for (let key of __getOwnPropNames2(from))
14184
+ if (!__hasOwnProp2.call(to, key) && key !== except)
14185
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
12845
14186
  }
12846
14187
  return to;
12847
14188
  };
12848
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
14189
+ var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
12849
14190
  // If the importer is in node compatibility mode or this is not an ESM
12850
14191
  // file that has been converted to a CommonJS file using a Babel-
12851
14192
  // compatible transform (i.e. "__esModule" has not been set), then set
12852
14193
  // "default" to the CommonJS "module.exports" for node compatibility.
12853
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
14194
+ isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
12854
14195
  mod
12855
14196
  ));
12856
- var require_is_buffer = __commonJS({
14197
+ var require_is_buffer = __commonJS2({
12857
14198
  "node_modules/is-buffer/index.js"(exports, module) {
12858
14199
  "use strict";
12859
14200
  module.exports = function(obj) {
@@ -12867,7 +14208,7 @@ var require_is_buffer = __commonJS({
12867
14208
  }
12868
14209
  }
12869
14210
  });
12870
- var require_kind_of = __commonJS({
14211
+ var require_kind_of = __commonJS2({
12871
14212
  "node_modules/kind-of/index.js"(exports, module) {
12872
14213
  "use strict";
12873
14214
  var isBuffer = require_is_buffer();
@@ -12962,7 +14303,7 @@ var require_kind_of = __commonJS({
12962
14303
  };
12963
14304
  }
12964
14305
  });
12965
- var require_rename_keys = __commonJS({
14306
+ var require_rename_keys = __commonJS2({
12966
14307
  "node_modules/rename-keys/index.js"(exports, module) {
12967
14308
  "use strict";
12968
14309
  (function() {
@@ -12993,7 +14334,7 @@ var require_rename_keys = __commonJS({
12993
14334
  })();
12994
14335
  }
12995
14336
  });
12996
- var require_deep_rename_keys = __commonJS({
14337
+ var require_deep_rename_keys = __commonJS2({
12997
14338
  "node_modules/deep-rename-keys/index.js"(exports, module) {
12998
14339
  "use strict";
12999
14340
  var typeOf = require_kind_of();
@@ -13022,7 +14363,7 @@ var require_deep_rename_keys = __commonJS({
13022
14363
  };
13023
14364
  }
13024
14365
  });
13025
- var require_eventemitter3 = __commonJS({
14366
+ var require_eventemitter3 = __commonJS2({
13026
14367
  "node_modules/eventemitter3/index.js"(exports, module) {
13027
14368
  "use strict";
13028
14369
  var has = Object.prototype.hasOwnProperty;
@@ -13180,7 +14521,7 @@ var require_eventemitter3 = __commonJS({
13180
14521
  }
13181
14522
  }
13182
14523
  });
13183
- var require_lexer = __commonJS({
14524
+ var require_lexer = __commonJS2({
13184
14525
  "node_modules/xml-lexer/dist/lexer.js"(exports, module) {
13185
14526
  "use strict";
13186
14527
  function _defineProperty(obj, key, value) {
@@ -13423,7 +14764,7 @@ var require_lexer = __commonJS({
13423
14764
  };
13424
14765
  }
13425
14766
  });
13426
- var require_reader = __commonJS({
14767
+ var require_reader = __commonJS2({
13427
14768
  "node_modules/xml-reader/dist/reader.js"(exports, module) {
13428
14769
  "use strict";
13429
14770
  var EventEmitter = require_eventemitter3();
@@ -13540,8 +14881,8 @@ var require_reader = __commonJS({
13540
14881
  });
13541
14882
  var { cos: cos2, sin: sin2, PI: PI2 } = Math;
13542
14883
  var { tan: tan2 } = Math;
13543
- var import_deep_rename_keys = __toESM(require_deep_rename_keys());
13544
- var import_xml_reader = __toESM(require_reader());
14884
+ var import_deep_rename_keys = __toESM2(require_deep_rename_keys());
14885
+ var import_xml_reader = __toESM2(require_reader());
13545
14886
  function setStepOfAllObjects(graphics, step) {
13546
14887
  if (graphics.points) {
13547
14888
  for (const p of graphics.points) {
@@ -13951,7 +15292,7 @@ var BuildRegionsSolver = class extends BaseSolver2 {
13951
15292
  }
13952
15293
  };
13953
15294
  var getOffsetPolygonPoints = (params) => {
13954
- const { polygon: polygon2, clearance } = params;
15295
+ const { polygon: polygon2, clearance, verticesOnly = false } = params;
13955
15296
  const pts = polygon2.points;
13956
15297
  const n = pts.length;
13957
15298
  if (n < 3) return [];
@@ -13987,6 +15328,9 @@ var getOffsetPolygonPoints = (params) => {
13987
15328
  offsetVertices.push({ x: currLine.pt.x, y: currLine.pt.y });
13988
15329
  }
13989
15330
  }
15331
+ if (verticesOnly) {
15332
+ return offsetVertices;
15333
+ }
13990
15334
  const result = [];
13991
15335
  for (let i = 0; i < n; i++) {
13992
15336
  const v1 = offsetVertices[i];
@@ -14014,7 +15358,14 @@ var rotatePoint = (params) => {
14014
15358
  };
14015
15359
  };
14016
15360
  var generateBoundaryPoints = (params) => {
14017
- const { bounds, vias, clearance, rects, polygons = [] } = params;
15361
+ const {
15362
+ bounds,
15363
+ vias,
15364
+ clearance,
15365
+ rects,
15366
+ polygons = [],
15367
+ viaSegments = 24
15368
+ } = params;
14018
15369
  const points = [];
14019
15370
  const { minX: x0, maxX: x1, minY: y0, maxY: y1 } = bounds;
14020
15371
  points.push(
@@ -14031,7 +15382,6 @@ var generateBoundaryPoints = (params) => {
14031
15382
  points.push({ x: x1 - t * (x1 - x0), y: y1 });
14032
15383
  points.push({ x: x0, y: y1 - t * (y1 - y0) });
14033
15384
  }
14034
- const viaSegments = 24;
14035
15385
  for (const via of vias) {
14036
15386
  const radius = via.diameter / 2 + clearance;
14037
15387
  for (let i = 0; i < viaSegments; i++) {
@@ -14091,6 +15441,159 @@ var generateBoundaryPoints = (params) => {
14091
15441
  y: pt.y + (i % 5 - 2) * 1e-6
14092
15442
  }));
14093
15443
  };
15444
+ var resolveConstraintCrossings = (pts, constraintEdges, ringBoundaries) => {
15445
+ const edgeRing = new Array(constraintEdges.length);
15446
+ for (let ei = 0; ei < constraintEdges.length; ei++) {
15447
+ for (let ri = ringBoundaries.length - 1; ri >= 0; ri--) {
15448
+ if (ei >= ringBoundaries[ri]) {
15449
+ edgeRing[ei] = ri;
15450
+ break;
15451
+ }
15452
+ }
15453
+ }
15454
+ const edgeSplits = /* @__PURE__ */ new Map();
15455
+ const outPts = pts.slice();
15456
+ for (let i = 0; i < constraintEdges.length; i++) {
15457
+ for (let j = i + 1; j < constraintEdges.length; j++) {
15458
+ if (edgeRing[i] === edgeRing[j]) continue;
15459
+ const [a1, a2] = constraintEdges[i];
15460
+ const [b1, b2] = constraintEdges[j];
15461
+ const p1 = outPts[a1];
15462
+ const p2 = outPts[a2];
15463
+ const p3 = outPts[b1];
15464
+ const p4 = outPts[b2];
15465
+ const d1x = p2.x - p1.x;
15466
+ const d1y = p2.y - p1.y;
15467
+ const d2x = p4.x - p3.x;
15468
+ const d2y = p4.y - p3.y;
15469
+ const denom = d1x * d2y - d1y * d2x;
15470
+ if (Math.abs(denom) < 1e-10) continue;
15471
+ const t = ((p3.x - p1.x) * d2y - (p3.y - p1.y) * d2x) / denom;
15472
+ const u = ((p3.x - p1.x) * d1y - (p3.y - p1.y) * d1x) / denom;
15473
+ if (t > 1e-6 && t < 1 - 1e-6 && u > 1e-6 && u < 1 - 1e-6) {
15474
+ const ix = p1.x + t * d1x;
15475
+ const iy = p1.y + t * d1y;
15476
+ const newIdx = outPts.length;
15477
+ outPts.push({ x: ix, y: iy });
15478
+ if (!edgeSplits.has(i)) edgeSplits.set(i, []);
15479
+ edgeSplits.get(i).push({ t, idx: newIdx });
15480
+ if (!edgeSplits.has(j)) edgeSplits.set(j, []);
15481
+ edgeSplits.get(j).push({ t: u, idx: newIdx });
15482
+ }
15483
+ }
15484
+ }
15485
+ if (edgeSplits.size === 0) {
15486
+ return { pts, constraintEdges, hadCrossings: false };
15487
+ }
15488
+ const outEdges = [];
15489
+ for (let ei = 0; ei < constraintEdges.length; ei++) {
15490
+ const splits = edgeSplits.get(ei);
15491
+ if (!splits || splits.length === 0) {
15492
+ outEdges.push(constraintEdges[ei]);
15493
+ continue;
15494
+ }
15495
+ splits.sort((a, b) => a.t - b.t);
15496
+ const [startIdx, endIdx] = constraintEdges[ei];
15497
+ let prev = startIdx;
15498
+ for (const split of splits) {
15499
+ outEdges.push([prev, split.idx]);
15500
+ prev = split.idx;
15501
+ }
15502
+ outEdges.push([prev, endIdx]);
15503
+ }
15504
+ return { pts: outPts, constraintEdges: outEdges, hadCrossings: true };
15505
+ };
15506
+ var addRing = (ringPts, allPts, constraintEdges) => {
15507
+ const startIdx = allPts.length;
15508
+ allPts.push(...ringPts);
15509
+ const n = ringPts.length;
15510
+ for (let i = 0; i < n; i++) {
15511
+ constraintEdges.push([startIdx + i, startIdx + (i + 1) % n]);
15512
+ }
15513
+ };
15514
+ var generateBoundaryPointsWithEdges = (params) => {
15515
+ const {
15516
+ bounds,
15517
+ vias,
15518
+ clearance,
15519
+ rects,
15520
+ polygons = [],
15521
+ viaSegments = 8
15522
+ } = params;
15523
+ const allPts = [];
15524
+ const constraintEdges = [];
15525
+ const ringBoundaries = [];
15526
+ const { minX: x0, maxX: x1, minY: y0, maxY: y1 } = bounds;
15527
+ const edgeSegments = 10;
15528
+ const boundsPts = [];
15529
+ for (let i = 0; i < edgeSegments; i++) {
15530
+ const t = i / edgeSegments;
15531
+ boundsPts.push({ x: x0 + t * (x1 - x0), y: y0 });
15532
+ }
15533
+ for (let i = 0; i < edgeSegments; i++) {
15534
+ const t = i / edgeSegments;
15535
+ boundsPts.push({ x: x1, y: y0 + t * (y1 - y0) });
15536
+ }
15537
+ for (let i = 0; i < edgeSegments; i++) {
15538
+ const t = i / edgeSegments;
15539
+ boundsPts.push({ x: x1 - t * (x1 - x0), y: y1 });
15540
+ }
15541
+ for (let i = 0; i < edgeSegments; i++) {
15542
+ const t = i / edgeSegments;
15543
+ boundsPts.push({ x: x0, y: y1 - t * (y1 - y0) });
15544
+ }
15545
+ ringBoundaries.push(constraintEdges.length);
15546
+ addRing(boundsPts, allPts, constraintEdges);
15547
+ for (const via of vias) {
15548
+ const radius = via.diameter / 2 + clearance;
15549
+ const viaPts = [];
15550
+ for (let i = 0; i < viaSegments; i++) {
15551
+ const angle = 2 * Math.PI * i / viaSegments;
15552
+ viaPts.push({
15553
+ x: via.center.x + radius * Math.cos(angle),
15554
+ y: via.center.y + radius * Math.sin(angle)
15555
+ });
15556
+ }
15557
+ ringBoundaries.push(constraintEdges.length);
15558
+ addRing(viaPts, allPts, constraintEdges);
15559
+ }
15560
+ for (const rect of rects) {
15561
+ const halfWidth = rect.width / 2 + clearance;
15562
+ const halfHeight = rect.height / 2 + clearance;
15563
+ const rectPts = [
15564
+ rotatePoint({ localX: -halfWidth, localY: -halfHeight, rect }),
15565
+ rotatePoint({ localX: halfWidth, localY: -halfHeight, rect }),
15566
+ rotatePoint({ localX: halfWidth, localY: halfHeight, rect }),
15567
+ rotatePoint({ localX: -halfWidth, localY: halfHeight, rect })
15568
+ ];
15569
+ ringBoundaries.push(constraintEdges.length);
15570
+ addRing(rectPts, allPts, constraintEdges);
15571
+ }
15572
+ for (const polygon2 of polygons) {
15573
+ if (polygon2.points.length < 3) continue;
15574
+ const offsetPoints = getOffsetPolygonPoints({
15575
+ polygon: polygon2,
15576
+ clearance,
15577
+ verticesOnly: true
15578
+ });
15579
+ ringBoundaries.push(constraintEdges.length);
15580
+ addRing(offsetPoints, allPts, constraintEdges);
15581
+ }
15582
+ const resolved = resolveConstraintCrossings(
15583
+ allPts,
15584
+ constraintEdges,
15585
+ ringBoundaries
15586
+ );
15587
+ const jitteredPts = resolved.pts.map((pt, i) => ({
15588
+ x: pt.x + (i % 7 - 3) * 1e-6,
15589
+ y: pt.y + (i % 5 - 2) * 1e-6
15590
+ }));
15591
+ return {
15592
+ pts: jitteredPts,
15593
+ constraintEdges: resolved.constraintEdges,
15594
+ hadCrossings: resolved.hadCrossings
15595
+ };
15596
+ };
14094
15597
  var GeneratePointsSolver = class extends BaseSolver2 {
14095
15598
  input;
14096
15599
  output = null;
@@ -14102,15 +15605,32 @@ var GeneratePointsSolver = class extends BaseSolver2 {
14102
15605
  const vias = this.input.vias ?? [];
14103
15606
  const rects = this.input.rects ?? [];
14104
15607
  const polygons = this.input.polygons ?? [];
14105
- this.output = {
14106
- pts: generateBoundaryPoints({
15608
+ if (this.input.useConstrainedDelaunay !== false) {
15609
+ const result = generateBoundaryPointsWithEdges({
14107
15610
  bounds: this.input.bounds,
14108
15611
  vias,
14109
15612
  clearance: this.input.clearance,
14110
15613
  rects,
14111
- polygons
14112
- })
14113
- };
15614
+ polygons,
15615
+ viaSegments: this.input.viaSegments
15616
+ });
15617
+ this.output = {
15618
+ pts: result.pts,
15619
+ constraintEdges: result.constraintEdges,
15620
+ hadCrossings: result.hadCrossings
15621
+ };
15622
+ } else {
15623
+ this.output = {
15624
+ pts: generateBoundaryPoints({
15625
+ bounds: this.input.bounds,
15626
+ vias,
15627
+ clearance: this.input.clearance,
15628
+ rects,
15629
+ polygons,
15630
+ viaSegments: this.input.viaSegments
15631
+ })
15632
+ };
15633
+ }
14114
15634
  this.stats = { points: this.output.pts.length };
14115
15635
  this.solved = true;
14116
15636
  }
@@ -14340,6 +15860,10 @@ var MergeCellsSolver = class extends BaseSolver2 {
14340
15860
  };
14341
15861
  }
14342
15862
  };
15863
+ var constrainedDelaunay = (pts, constraintEdges) => {
15864
+ const coords = pts.map((p) => [p.x, p.y]);
15865
+ return (0, import_cdt2d.default)(coords, constraintEdges, { exterior: false });
15866
+ };
14343
15867
  var circumcircle = (params) => {
14344
15868
  const { a, b, c } = params;
14345
15869
  const d = 2 * (a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y));
@@ -14535,22 +16059,38 @@ var TriangulateSolver = class extends BaseSolver2 {
14535
16059
  const vias = this.input.vias ?? [];
14536
16060
  const rects = this.input.rects ?? [];
14537
16061
  const polygons = this.input.polygons ?? [];
14538
- const allTriangles = delaunay(this.input.pts);
14539
- const validTris = filterTris({
14540
- triangles: allTriangles,
14541
- pts: this.input.pts,
14542
- bounds: this.input.bounds,
14543
- vias,
14544
- clearance: this.input.clearance,
14545
- rects,
14546
- polygons
14547
- });
16062
+ let validTris;
16063
+ if (this.input.useConstrainedDelaunay !== false && this.input.constraintEdges) {
16064
+ const cdtTris = constrainedDelaunay(
16065
+ this.input.pts,
16066
+ this.input.constraintEdges
16067
+ );
16068
+ validTris = this.input.hadCrossings ? filterTris({
16069
+ triangles: cdtTris,
16070
+ pts: this.input.pts,
16071
+ bounds: this.input.bounds,
16072
+ vias,
16073
+ clearance: this.input.clearance,
16074
+ rects,
16075
+ polygons
16076
+ }) : cdtTris;
16077
+ } else {
16078
+ const allTriangles = delaunay(this.input.pts);
16079
+ validTris = filterTris({
16080
+ triangles: allTriangles,
16081
+ pts: this.input.pts,
16082
+ bounds: this.input.bounds,
16083
+ vias,
16084
+ clearance: this.input.clearance,
16085
+ rects,
16086
+ polygons
16087
+ });
16088
+ }
14548
16089
  this.output = {
14549
16090
  pts: this.input.pts,
14550
16091
  validTris
14551
16092
  };
14552
16093
  this.stats = {
14553
- candidateTriangles: allTriangles.length,
14554
16094
  validTriangles: validTris.length
14555
16095
  };
14556
16096
  this.solved = true;
@@ -14608,7 +16148,10 @@ var ConvexRegionsSolver = class extends BasePipelineSolver {
14608
16148
  vias: instance.inputProblem.vias,
14609
16149
  rects: instance.inputProblem.rects,
14610
16150
  polygons: instance.inputProblem.polygons,
14611
- clearance: instance.inputProblem.clearance
16151
+ clearance: instance.inputProblem.clearance,
16152
+ useConstrainedDelaunay: instance.inputProblem.useConstrainedDelaunay,
16153
+ constraintEdges: generated.constraintEdges,
16154
+ hadCrossings: generated.hadCrossings
14612
16155
  }
14613
16156
  ];
14614
16157
  }),
@@ -14814,8 +16357,8 @@ function createPortsAlongEdge(edge, portPitch = 0.4) {
14814
16357
 
14815
16358
  // lib/ViaGraphSolver/via-graph-generator/generateConvexViaTopologyRegions.ts
14816
16359
  var DEFAULT_PORT_PITCH2 = 0.4;
14817
- var DEFAULT_TILE_WIDTH = 4.417;
14818
- var DEFAULT_TILE_HEIGHT = 4.494;
16360
+ var DEFAULT_TILE_WIDTH = 3.727;
16361
+ var DEFAULT_TILE_HEIGHT = 4.03;
14819
16362
  var DEFAULT_CLEARANCE = 0.1;
14820
16363
  function deduplicateConsecutivePoints(points, tolerance = 1e-3) {
14821
16364
  if (points.length <= 1) return points;