linearly 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/lib/esm/mat2.d.ts +1 -1
  2. package/lib/esm/mat2.d.ts.map +1 -1
  3. package/lib/esm/mat2.js +3 -2
  4. package/lib/esm/mat2d.d.ts.map +1 -1
  5. package/lib/esm/mat2d.js +4 -5
  6. package/lib/esm/mat3.d.ts.map +1 -1
  7. package/lib/esm/mat3.js +16 -15
  8. package/lib/esm/mat4.d.ts.map +1 -1
  9. package/lib/esm/mat4.js +18 -17
  10. package/lib/esm/quat.js +3 -3
  11. package/lib/esm/scalar.d.ts +6 -35
  12. package/lib/esm/scalar.d.ts.map +1 -1
  13. package/lib/esm/scalar.js +11 -53
  14. package/package.json +9 -4
  15. package/lib/cjs/common.d.ts +0 -16
  16. package/lib/cjs/common.d.ts.map +0 -1
  17. package/lib/cjs/common.js +0 -70
  18. package/lib/cjs/index.d.ts +0 -10
  19. package/lib/cjs/index.d.ts.map +0 -1
  20. package/lib/cjs/index.js +0 -22
  21. package/lib/cjs/mat2.d.ts +0 -272
  22. package/lib/cjs/mat2.d.ts.map +0 -1
  23. package/lib/cjs/mat2.js +0 -473
  24. package/lib/cjs/mat2d.d.ts +0 -329
  25. package/lib/cjs/mat2d.d.ts.map +0 -1
  26. package/lib/cjs/mat2d.js +0 -641
  27. package/lib/cjs/mat3.d.ts +0 -295
  28. package/lib/cjs/mat3.d.ts.map +0 -1
  29. package/lib/cjs/mat3.js +0 -670
  30. package/lib/cjs/mat4.d.ts +0 -532
  31. package/lib/cjs/mat4.d.ts.map +0 -1
  32. package/lib/cjs/mat4.js +0 -1576
  33. package/lib/cjs/quat.d.ts +0 -334
  34. package/lib/cjs/quat.d.ts.map +0 -1
  35. package/lib/cjs/quat.js +0 -802
  36. package/lib/cjs/scalar.d.ts +0 -501
  37. package/lib/cjs/scalar.d.ts.map +0 -1
  38. package/lib/cjs/scalar.js +0 -728
  39. package/lib/cjs/vec2.d.ts +0 -664
  40. package/lib/cjs/vec2.d.ts.map +0 -1
  41. package/lib/cjs/vec2.js +0 -1247
  42. package/lib/cjs/vec3.d.ts +0 -660
  43. package/lib/cjs/vec3.d.ts.map +0 -1
  44. package/lib/cjs/vec3.js +0 -1329
  45. package/lib/cjs/vec4.d.ts +0 -552
  46. package/lib/cjs/vec4.d.ts.map +0 -1
  47. package/lib/cjs/vec4.js +0 -1200
package/lib/cjs/vec4.js DELETED
@@ -1,1200 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.vec4 = void 0;
37
- const Common = __importStar(require("./common"));
38
- const scalar_1 = require("./scalar");
39
- /**
40
- * Functions for {@link vec4}, a 4D vector.
41
- * @category Modules
42
- */
43
- var vec4;
44
- (function (vec4) {
45
- /**
46
- * Creates a new vector from given elements
47
- * @category Generators
48
- */
49
- function of(x, y, z, w) {
50
- if (y === undefined && z === undefined && w === undefined) {
51
- y = z = w = x;
52
- }
53
- if (y === undefined)
54
- y = 0;
55
- if (z === undefined)
56
- z = 0;
57
- if (w === undefined)
58
- w = 0;
59
- return [x, y, z, w];
60
- }
61
- vec4.of = of;
62
- /**
63
- * Creates a mutable clone of given vec4
64
- * @category Generators
65
- */
66
- function clone(a) {
67
- return [...a];
68
- }
69
- vec4.clone = clone;
70
- /**
71
- * @category Constants
72
- */
73
- vec4.zero = Object.freeze([0, 0, 0, 0]);
74
- /**
75
- * @category Constants
76
- */
77
- vec4.one = Object.freeze([1, 1, 1, 1]);
78
- /**
79
- * An unit vector pointing towards positive X. Same as `[1, 0, 0, 0]`
80
- * @category Constants
81
- */
82
- vec4.unitX = Object.freeze([1, 0, 0, 0]);
83
- /**
84
- * An unit vector pointing towards positive Y. Same as `[0, 1, 0, 0]`
85
- * @category Constants
86
- */
87
- vec4.unitY = Object.freeze([0, 1, 0, 0]);
88
- /**
89
- * An unit vector pointing towards positive Z. Same as `[0, 0, 1, 0]`
90
- * @category Constants
91
- */
92
- vec4.unitZ = Object.freeze([0, 0, 1, 0]);
93
- /**
94
- * An unit vector pointing towards positive W. Same as `[0, 0, 0, 1]`
95
- * @category Constants
96
- */
97
- vec4.unitW = Object.freeze([0, 0, 0, 1]);
98
- /**
99
- * Adds given vec4's
100
- */
101
- function add(...vs) {
102
- let x = 0, y = 0, z = 0, w = 0;
103
- for (const v of vs) {
104
- if (typeof v === 'number') {
105
- x += v;
106
- y += v;
107
- z += v;
108
- w += v;
109
- }
110
- else {
111
- x += v[0];
112
- y += v[1];
113
- z += v[2];
114
- w += v[3];
115
- }
116
- }
117
- return [x, y, z, w];
118
- }
119
- vec4.add = add;
120
- /**
121
- * Subtracts given vec4's. When the argument is a single vector, it negates it. Otherwise, it subtracts from left to right.
122
- *
123
- * @shorthands
124
- * - {@link sub}
125
- */
126
- function subtract(...vs) {
127
- if (vs.length === 0) {
128
- return vec4.zero;
129
- }
130
- if (vs.length === 1) {
131
- const v = vs[0];
132
- if (typeof v === 'number')
133
- return [-v, -v, -v, -v];
134
- return [-v[0], -v[1], -v[2], -v[3]];
135
- }
136
- const first = vs[0];
137
- let x = typeof first === 'number' ? first : first[0];
138
- let y = typeof first === 'number' ? first : first[1];
139
- let z = typeof first === 'number' ? first : first[2];
140
- let w = typeof first === 'number' ? first : first[3];
141
- for (let i = 1; i < vs.length; i++) {
142
- const v = vs[i];
143
- if (typeof v === 'number') {
144
- x -= v;
145
- y -= v;
146
- z -= v;
147
- w -= v;
148
- }
149
- else {
150
- x -= v[0];
151
- y -= v[1];
152
- z -= v[2];
153
- w -= v[3];
154
- }
155
- }
156
- return [x, y, z, w];
157
- }
158
- vec4.subtract = subtract;
159
- /**
160
- * Alias for {@link subtract}
161
- */
162
- vec4.sub = subtract;
163
- /**
164
- * Subtracts a from b
165
- */
166
- function delta(a, b) {
167
- const ax = typeof a === 'number' ? a : a[0];
168
- const ay = typeof a === 'number' ? a : a[1];
169
- const az = typeof a === 'number' ? a : a[2];
170
- const aw = typeof a === 'number' ? a : a[3];
171
- const bx = typeof b === 'number' ? b : b[0];
172
- const by = typeof b === 'number' ? b : b[1];
173
- const bz = typeof b === 'number' ? b : b[2];
174
- const bw = typeof b === 'number' ? b : b[3];
175
- return [bx - ax, by - ay, bz - az, bw - aw];
176
- }
177
- vec4.delta = delta;
178
- /**
179
- * Multiplies given vec4's
180
- * @shorthands
181
- * - {@link mul}
182
- */
183
- function multiply(...vs) {
184
- let x = 1, y = 1, z = 1, w = 1;
185
- for (const v of vs) {
186
- if (typeof v === 'number') {
187
- x *= v;
188
- y *= v;
189
- z *= v;
190
- w *= v;
191
- }
192
- else {
193
- x *= v[0];
194
- y *= v[1];
195
- z *= v[2];
196
- w *= v[3];
197
- }
198
- }
199
- return [x, y, z, w];
200
- }
201
- vec4.multiply = multiply;
202
- /**
203
- * Alias for {@link multiply}
204
- */
205
- vec4.mul = multiply;
206
- /**
207
- * Divides given vec4's
208
- *
209
- * @shorthands
210
- * - {@link div}
211
- */
212
- function divide(...vs) {
213
- if (vs.length === 0) {
214
- return vec4.one;
215
- }
216
- if (vs.length === 1) {
217
- const v = vs[0];
218
- if (typeof v === 'number')
219
- return [1 / v, 1 / v, 1 / v, 1 / v];
220
- return [1 / v[0], 1 / v[1], 1 / v[2], 1 / v[3]];
221
- }
222
- const first = vs[0];
223
- let x = typeof first === 'number' ? first : first[0];
224
- let y = typeof first === 'number' ? first : first[1];
225
- let z = typeof first === 'number' ? first : first[2];
226
- let w = typeof first === 'number' ? first : first[3];
227
- for (let i = 1; i < vs.length; i++) {
228
- const v = vs[i];
229
- if (typeof v === 'number') {
230
- x /= v;
231
- y /= v;
232
- z /= v;
233
- w /= v;
234
- }
235
- else {
236
- x /= v[0];
237
- y /= v[1];
238
- z /= v[2];
239
- w /= v[3];
240
- }
241
- }
242
- return [x, y, z, w];
243
- }
244
- vec4.divide = divide;
245
- /**
246
- * Alias for {@link divide}
247
- */
248
- vec4.div = divide;
249
- /**
250
- * Returns the absolute value of each component of a vec4
251
- */
252
- function abs(v) {
253
- return [Math.abs(v[0]), Math.abs(v[1]), Math.abs(v[2]), Math.abs(v[3])];
254
- }
255
- vec4.abs = abs;
256
- /**
257
- * Symmetric round the components of a vec4
258
- */
259
- function round(a) {
260
- return [
261
- Common.round(a[0]),
262
- Common.round(a[1]),
263
- Common.round(a[2]),
264
- Common.round(a[3]),
265
- ];
266
- }
267
- vec4.round = round;
268
- /**
269
- * Applies Math.ceil to each component of a vec4
270
- */
271
- function ceil(a) {
272
- return [Math.ceil(a[0]), Math.ceil(a[1]), Math.ceil(a[2]), Math.ceil(a[3])];
273
- }
274
- vec4.ceil = ceil;
275
- /**
276
- * Applies Math.floor to each component of a vec4
277
- */
278
- function floor(a) {
279
- return [
280
- Math.floor(a[0]),
281
- Math.floor(a[1]),
282
- Math.floor(a[2]),
283
- Math.floor(a[3]),
284
- ];
285
- }
286
- vec4.floor = floor;
287
- /**
288
- * Applies Math.sign to each component of a vec4
289
- */
290
- function sign(v) {
291
- return [Math.sign(v[0]), Math.sign(v[1]), Math.sign(v[2]), Math.sign(v[3])];
292
- }
293
- vec4.sign = sign;
294
- /**
295
- * Removes the fractional part
296
- * @see https://www.sidefx.com/docs/houdini/vex/functions/trunc.html
297
- */
298
- function trunc(v) {
299
- return [
300
- v[0] < 0 ? Math.ceil(v[0]) : Math.floor(v[0]),
301
- v[1] < 0 ? Math.ceil(v[1]) : Math.floor(v[1]),
302
- v[2] < 0 ? Math.ceil(v[2]) : Math.floor(v[2]),
303
- v[3] < 0 ? Math.ceil(v[3]) : Math.floor(v[3]),
304
- ];
305
- }
306
- vec4.trunc = trunc;
307
- /**
308
- * Computes the fractional part of the argument
309
- * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/fract.xhtml
310
- */
311
- function fract(a) {
312
- return vec4.sub(a, floor(a));
313
- }
314
- vec4.fract = fract;
315
- /**
316
- * Compute value of one parameter modulo another. This is computed as x - y * floor(x/y). Unlike JavaScript's `%` operator, the sign of result always matches to `b`.
317
- * @see https://thebookofshaders.com/glossary/?search=mod
318
- */
319
- function mod(a, b) {
320
- if (typeof b === 'number')
321
- b = [b, b, b, b];
322
- return [
323
- a[0] - b[0] * Math.floor(a[0] / b[0]),
324
- a[1] - b[1] * Math.floor(a[1] / b[1]),
325
- a[2] - b[2] * Math.floor(a[2] / b[2]),
326
- a[3] - b[3] * Math.floor(a[3] / b[3]),
327
- ];
328
- }
329
- vec4.mod = mod;
330
- /**
331
- * Quantize a vec4 to a given step and offset. If the step is 0, the value is returned unchanged.
332
- * @param v The value to quantize
333
- * @param step The step size
334
- * @param offset The offset
335
- * @returns The quantized value
336
- */
337
- function quantize(v, step, offset = vec4.zero) {
338
- if (typeof step === 'number')
339
- step = [step, step, step, step];
340
- if (typeof offset === 'number')
341
- offset = [offset, offset, offset, offset];
342
- return [
343
- scalar_1.scalar.quantize(v[0], step[0], offset[0]),
344
- scalar_1.scalar.quantize(v[1], step[1], offset[1]),
345
- scalar_1.scalar.quantize(v[2], step[2], offset[2]),
346
- scalar_1.scalar.quantize(v[3], step[3], offset[3]),
347
- ];
348
- }
349
- vec4.quantize = quantize;
350
- /**
351
- * Returns the minimum of given vec4's
352
- */
353
- function min(...vs) {
354
- if (vs.length === 0) {
355
- return [Infinity, Infinity, Infinity, Infinity];
356
- }
357
- else if (vs.length === 1) {
358
- const v = vs[0];
359
- return typeof v === 'number' ? [v, v, v, v] : v;
360
- }
361
- else if (vs.length > 2) {
362
- const [a, b, ...rest] = vs;
363
- return min(min(a, b), ...rest);
364
- }
365
- let [a, b] = vs;
366
- if (typeof a === 'number')
367
- a = [a, a, a, a];
368
- if (typeof b === 'number')
369
- b = [b, b, b, b];
370
- return [
371
- Math.min(a[0], b[0]),
372
- Math.min(a[1], b[1]),
373
- Math.min(a[2], b[2]),
374
- Math.min(a[3], b[3]),
375
- ];
376
- }
377
- vec4.min = min;
378
- /**
379
- * Returns the maximum of given vec4's
380
- */
381
- function max(...vs) {
382
- if (vs.length === 0) {
383
- return [-Infinity, -Infinity, -Infinity, -Infinity];
384
- }
385
- else if (vs.length === 1) {
386
- const v = vs[0];
387
- return typeof v === 'number' ? [v, v, v, v] : v;
388
- }
389
- else if (vs.length > 2) {
390
- const [a, b, ...rest] = vs;
391
- return max(max(a, b), ...rest);
392
- }
393
- let [a, b] = vs;
394
- if (typeof a === 'number')
395
- a = [a, a, a, a];
396
- if (typeof b === 'number')
397
- b = [b, b, b, b];
398
- return [
399
- Math.max(a[0], b[0]),
400
- Math.max(a[1], b[1]),
401
- Math.max(a[2], b[2]),
402
- Math.max(a[3], b[3]),
403
- ];
404
- }
405
- vec4.max = max;
406
- /**
407
- * Constrain a value to lie between two further values
408
- * @see https://thebookofshaders.com/glossary/?search=clamp
409
- * @param v the value to constrain
410
- * @param min the lower end of the range into which to constrain `v`
411
- * @param max the upper end of the range into which to constrain `v`
412
- */
413
- function clamp(a, min, max) {
414
- if (typeof min === 'number')
415
- min = [min, min, min, min];
416
- if (typeof max === 'number')
417
- max = [max, max, max, max];
418
- return [
419
- Math.min(Math.max(a[0], min[0]), max[0]),
420
- Math.min(Math.max(a[1], min[1]), max[1]),
421
- Math.min(Math.max(a[2], min[2]), max[2]),
422
- Math.min(Math.max(a[3], min[3]), max[3]),
423
- ];
424
- }
425
- vec4.clamp = clamp;
426
- /**
427
- * Clamps each component to [0, 1]. Equivalent to {@link saturate}.
428
- */
429
- function clamp01(v) {
430
- return clamp(v, 0, 1);
431
- }
432
- vec4.clamp01 = clamp01;
433
- /**
434
- * Clamps each component to [-1, 1]
435
- */
436
- function clamp11(v) {
437
- return clamp(v, -1, 1);
438
- }
439
- vec4.clamp11 = clamp11;
440
- /**
441
- * Scales a vec4 by a scalar number
442
- *
443
- * @param a the vector to scale
444
- * @param s amount to scale the vector by
445
- */
446
- function scale(a, s) {
447
- return [a[0] * s, a[1] * s, a[2] * s, a[3] * s];
448
- }
449
- vec4.scale = scale;
450
- /**
451
- * Returns the average value of the input(s)
452
- * @see https://www.sidefx.com/docs/houdini/vex/functions/avg.html
453
- *
454
- * @shorthands
455
- * - {@link avg}
456
- */
457
- function average(...vs) {
458
- let x = 0, y = 0, z = 0, w = 0;
459
- const len = vs.length || 1;
460
- for (const v of vs) {
461
- x += v[0];
462
- y += v[1];
463
- z += v[2];
464
- w += v[3];
465
- }
466
- return [x / len, y / len, z / len, w / len];
467
- }
468
- vec4.average = average;
469
- /**
470
- * Alias for {@link average}
471
- */
472
- vec4.avg = average;
473
- /**
474
- * Adds given vec4's after scaling the second operand by a scalar value
475
- * @param scale the amount to scale b by before adding
476
- */
477
- function scaleAndAdd(a, b, scale) {
478
- return [
479
- a[0] + b[0] * scale,
480
- a[1] + b[1] * scale,
481
- a[2] + b[2] * scale,
482
- a[3] + b[3] * scale,
483
- ];
484
- }
485
- vec4.scaleAndAdd = scaleAndAdd;
486
- /**
487
- * Calculates the euclidian distance between two vec4's
488
- */
489
- function distance(a, b) {
490
- const x = b[0] - a[0];
491
- const y = b[1] - a[1];
492
- const z = b[2] - a[2];
493
- const w = b[3] - a[3];
494
- return Math.hypot(x, y, z, w);
495
- }
496
- vec4.distance = distance;
497
- /**
498
- * Alias for {@link distance}
499
- */
500
- vec4.dist = distance;
501
- /**
502
- * Calculates the squared euclidian distance between two vec4's
503
- *
504
- * @shorthands
505
- * - {@link sqrDist}
506
- */
507
- function squaredDistance(a, b) {
508
- const x = b[0] - a[0];
509
- const y = b[1] - a[1];
510
- const z = b[2] - a[2];
511
- const w = b[3] - a[3];
512
- return x * x + y * y + z * z + w * w;
513
- }
514
- vec4.squaredDistance = squaredDistance;
515
- /**
516
- * Alias for {@link squaredDistance}
517
- */
518
- vec4.sqrDist = squaredDistance;
519
- /**
520
- * Returns the absolute difference between corresponding components of two vec4's
521
- *
522
- * @shorthands
523
- * - {@link diff}
524
- */
525
- function difference(a, b) {
526
- return [
527
- Math.abs(b[0] - a[0]),
528
- Math.abs(b[1] - a[1]),
529
- Math.abs(b[2] - a[2]),
530
- Math.abs(b[3] - a[3]),
531
- ];
532
- }
533
- vec4.difference = difference;
534
- /**
535
- * Alias for {@link vec4.difference}
536
- * @category Shorthands
537
- */
538
- vec4.diff = difference;
539
- /**
540
- * Calculates the length of a vec4
541
- *
542
- * @shorthands
543
- * - {@link len}
544
- */
545
- function length(a) {
546
- const [x, y, z, w] = a;
547
- return Math.hypot(x, y, z, w);
548
- }
549
- vec4.length = length;
550
- /**
551
- * Alias for {@link length}
552
- */
553
- vec4.len = length;
554
- /**
555
- * Calculates the squared length of a vec4
556
- *
557
- * @shorthands
558
- * - {@link sqrLen}
559
- */
560
- function squaredLength(a) {
561
- const [x, y, z, w] = a;
562
- return x * x + y * y + z * z + w * w;
563
- }
564
- vec4.squaredLength = squaredLength;
565
- /**
566
- * Alias for {@link squaredLength}
567
- */
568
- vec4.sqrLen = squaredLength;
569
- /**
570
- * Negates the components of a vec4
571
- * @shorthands
572
- * - {@link neg}
573
- */
574
- function negate(a) {
575
- return [-a[0], -a[1], -a[2], -a[3]];
576
- }
577
- vec4.negate = negate;
578
- /**
579
- * Alias for {@link negate}
580
- */
581
- vec4.neg = negate;
582
- /**
583
- * Returns the inverse of the components of a vec4
584
- *
585
- * @shorthands
586
- * - {@link inv}
587
- */
588
- function invert(a) {
589
- return [1 / a[0], 1 / a[1], 1 / a[2], 1 / a[3]];
590
- }
591
- vec4.invert = invert;
592
- /**
593
- * Alias for {@link invert}
594
- * @category Shorthands
595
- */
596
- vec4.inv = invert;
597
- /**
598
- * Returns the result of `v` subtracted from {@link one}.
599
- */
600
- function oneMinus(v) {
601
- return subtract(vec4.one, v);
602
- }
603
- vec4.oneMinus = oneMinus;
604
- /**
605
- * Takes the value in the range `(omin, omax)` and shifts it to the corresponding value in the new range `(nmin, nmax)`. The function clamps the given value the range `(omin, omax)` before fitting, so the resulting value will be guaranteed to be in the range `(nmin, nmax)`. To avoid clamping use efit instead.
606
- * @see https://www.sidefx.com/docs/houdini/vex/functions/fit.html
607
- * @param value
608
- * @param omin
609
- * @param omax
610
- * @param nmin
611
- * @param nmax
612
- * @returns
613
- */
614
- function fit(value, omin, omax, nmin, nmax) {
615
- return [
616
- scalar_1.scalar.fit(value[0], omin[0], omax[0], nmin[0], nmax[0]),
617
- scalar_1.scalar.fit(value[1], omin[1], omax[1], nmin[1], nmax[1]),
618
- scalar_1.scalar.fit(value[2], omin[2], omax[2], nmin[2], nmax[2]),
619
- scalar_1.scalar.fit(value[3], omin[3], omax[3], nmin[3], nmax[3]),
620
- ];
621
- }
622
- vec4.fit = fit;
623
- /**
624
- * Takes the value in the range `(omin, omax)` and shifts it to the corresponding value in the new range `(nmin, nmax)`. Unlike `fit`, this function does not clamp values to the given range. If `omin` and `omax` are the same, the function returns the average of `nmin` and `nmax`.
625
- * @see https://www.sidefx.com/docs/houdini/vex/functions/fit.html
626
- * @param value
627
- * @param omin
628
- * @param omax
629
- * @param nmin
630
- * @param nmax
631
- * @returns
632
- */
633
- function efit(value, omin, omax, nmin, nmax) {
634
- return [
635
- scalar_1.scalar.efit(value[0], omin[0], omax[0], nmin[0], nmax[0]),
636
- scalar_1.scalar.efit(value[1], omin[1], omax[1], nmin[1], nmax[1]),
637
- scalar_1.scalar.efit(value[2], omin[2], omax[2], nmin[2], nmax[2]),
638
- scalar_1.scalar.efit(value[3], omin[3], omax[3], nmin[3], nmax[3]),
639
- ];
640
- }
641
- vec4.efit = efit;
642
- /**
643
- * Takes the value in the range `(0, 1)` and shifts it to the corresponding value in the new range `(nmin, nmax)`.
644
- * @see https://www.sidefx.com/docs/houdini/vex/functions/fit01.html
645
- */
646
- function fit01(value, nmin, nmax) {
647
- return [
648
- scalar_1.scalar.fit01(value[0], nmin[0], nmax[0]),
649
- scalar_1.scalar.fit01(value[1], nmin[1], nmax[1]),
650
- scalar_1.scalar.fit01(value[2], nmin[2], nmax[2]),
651
- scalar_1.scalar.fit01(value[3], nmin[3], nmax[3]),
652
- ];
653
- }
654
- vec4.fit01 = fit01;
655
- /**
656
- * Takes the value in the range `(-1, 1)` and shifts it to the corresponding value in the new range `(nmin, nmax)`.
657
- * @see https://www.sidefx.com/docs/houdini/vex/functions/fit11.html
658
- */
659
- function fit11(value, nmin, nmax) {
660
- return [
661
- scalar_1.scalar.fit11(value[0], nmin[0], nmax[0]),
662
- scalar_1.scalar.fit11(value[1], nmin[1], nmax[1]),
663
- scalar_1.scalar.fit11(value[2], nmin[2], nmax[2]),
664
- scalar_1.scalar.fit11(value[3], nmin[3], nmax[3]),
665
- ];
666
- }
667
- vec4.fit11 = fit11;
668
- /**
669
- * Normalize a vec4
670
- */
671
- function normalize(a) {
672
- const [x, y, z, w] = a;
673
- const isZeroLength = x === 0 && y === 0 && z === 0 && w === 0;
674
- const len = isZeroLength ? 0 : 1 / Math.hypot(x, y, z, w);
675
- return [x * len, y * len, z * len, w * len];
676
- }
677
- vec4.normalize = normalize;
678
- /**
679
- * Calculates the dot product of two vec4's
680
- */
681
- function dot(a, b) {
682
- return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
683
- }
684
- vec4.dot = dot;
685
- /**
686
- * Returns the cross-product of three vectors in a 4-dimensional space
687
- */
688
- function cross(u, v, w) {
689
- const A = v[0] * w[1] - v[1] * w[0];
690
- const B = v[0] * w[2] - v[2] * w[0];
691
- const C = v[0] * w[3] - v[3] * w[0];
692
- const D = v[1] * w[2] - v[2] * w[1];
693
- const E = v[1] * w[3] - v[3] * w[1];
694
- const F = v[2] * w[3] - v[3] * w[2];
695
- const [G, H, I, J] = u;
696
- return [
697
- H * F - I * E + J * D,
698
- -(G * F) + I * C - J * B,
699
- G * E - H * C + J * A,
700
- -(G * D) + H * B - I * A,
701
- ];
702
- }
703
- vec4.cross = cross;
704
- /**
705
- * Linearly interpolate between two vec4's. Same as GLSL's built-in `mix` function.
706
- * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/mix.xhtml
707
- *
708
- * @shorthands
709
- * - {@link mix}
710
- */
711
- function lerp(a, b, t) {
712
- if (typeof t === 'number')
713
- t = [t, t, t, t];
714
- return [
715
- a[0] + t[0] * (b[0] - a[0]),
716
- a[1] + t[1] * (b[1] - a[1]),
717
- a[2] + t[2] * (b[2] - a[2]),
718
- a[3] + t[3] * (b[3] - a[3]),
719
- ];
720
- }
721
- vec4.lerp = lerp;
722
- /**
723
- * Alias for {@link lerp}
724
- * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/mix.xhtml
725
- */
726
- vec4.mix = lerp;
727
- /**
728
- * Returns the amount to mix `min` and `max` to generate the input value `t`. This is the inverse of the `lerp` function. If `min` and `max` are equal, the mixing value is `0.5`.
729
- * @see https://docs.unity3d.com/Packages/com.unity.shadergraph@6.9/manual/Inverse-Lerp-Node.html
730
- * @see https://www.sidefx.com/docs/houdini/vex/functions/invlerp.html
731
- *
732
- * @shorthands
733
- * - {@link invlerp}
734
- */
735
- function inverseLerp(a, b, t) {
736
- return [
737
- a[0] === b[0] ? 0.5 : (t[0] - a[0]) / (b[0] - a[0]),
738
- a[1] === b[1] ? 0.5 : (t[1] - a[1]) / (b[1] - a[1]),
739
- a[2] === b[2] ? 0.5 : (t[2] - a[2]) / (b[2] - a[2]),
740
- a[3] === b[3] ? 0.5 : (t[3] - a[3]) / (b[3] - a[3]),
741
- ];
742
- }
743
- vec4.inverseLerp = inverseLerp;
744
- /**
745
- * Alias for {@link inverseSqrt}
746
- * @category Shorthands
747
- */
748
- vec4.invsqrt = inverseSqrt;
749
- /**
750
- * Alias for {@link inverseLerp}
751
- */
752
- vec4.invlerp = inverseLerp;
753
- /**
754
- * Transforms the vec4 with a mat4.
755
- */
756
- function transformMat4(a, m) {
757
- const [x, y, z, w] = a;
758
- return [
759
- m[0] * x + m[4] * y + m[8] * z + m[12] * w,
760
- m[1] * x + m[5] * y + m[9] * z + m[13] * w,
761
- m[2] * x + m[6] * y + m[10] * z + m[14] * w,
762
- m[3] * x + m[7] * y + m[11] * z + m[15] * w,
763
- ];
764
- }
765
- vec4.transformMat4 = transformMat4;
766
- /**
767
- * Transforms the vec4 with a quat
768
- */
769
- function transformQuat(a, q) {
770
- const [x, y, z] = a;
771
- const [qx, qy, qz, qw] = q;
772
- // calculate quat * vec
773
- const ix = qw * x + qy * z - qz * y;
774
- const iy = qw * y + qz * x - qx * z;
775
- const iz = qw * z + qx * y - qy * x;
776
- const iw = -qx * x - qy * y - qz * z;
777
- // calculate result * inverse quat
778
- return [
779
- ix * qw + iw * -qx + iy * -qz - iz * -qy,
780
- iy * qw + iw * -qy + iz * -qx - ix * -qz,
781
- iz * qw + iw * -qz + ix * -qy - iy * -qx,
782
- a[3],
783
- ];
784
- }
785
- vec4.transformQuat = transformQuat;
786
- /**
787
- * Transforms a vec4 with a matrix or quaternion, automatically choosing the appropriate transformation function
788
- * @param p The vector to transform
789
- * @param m The transformation (mat4 or quat)
790
- * @returns The transformed vector
791
- *
792
- * @shorthands
793
- * - {@link xform}
794
- */
795
- function transform(p, m) {
796
- if (m.length === 4) {
797
- return transformQuat(p, m);
798
- }
799
- return transformMat4(p, m);
800
- }
801
- vec4.transform = transform;
802
- /**
803
- * Alias for {@link vec4.transform}
804
- * @category Shorthands
805
- */
806
- vec4.xform = transform;
807
- /**
808
- * Apply a step function by comparing two values
809
- * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/step.xhtml
810
- * @param edge The location of the edge of the step function.
811
- * @param x The value to be used to generate the step function.
812
- * @returns
813
- */
814
- function step(edge, v) {
815
- if (typeof edge === 'number')
816
- edge = [edge, edge, edge, edge];
817
- if (typeof v === 'number')
818
- v = [v, v, v, v];
819
- return [
820
- v[0] < edge[0] ? 0 : 1,
821
- v[1] < edge[1] ? 0 : 1,
822
- v[2] < edge[2] ? 0 : 1,
823
- v[3] < edge[3] ? 0 : 1,
824
- ];
825
- }
826
- vec4.step = step;
827
- /**
828
- * Perform Hermite interpolation between two values.
829
- * @see https://registry.khronos.org/OpenGL-Refpages/gl4/html/smoothstep.xhtml
830
- * @param edge0 Lower edge of the Hermite function.
831
- * @param edge1 Upper edge of the Hermite function.
832
- * @param x Source value for interpolation.
833
- * @returns
834
- */
835
- function smoothstep(edge0, edge1, x) {
836
- if (typeof edge0 === 'number')
837
- edge0 = [edge0, edge0, edge0, edge0];
838
- if (typeof edge1 === 'number')
839
- edge1 = [edge1, edge1, edge1, edge1];
840
- const t0 = scalar_1.scalar.clamp((x[0] - edge0[0]) / (edge1[0] - edge0[0]), 0, 1);
841
- const t1 = scalar_1.scalar.clamp((x[1] - edge0[1]) / (edge1[1] - edge0[1]), 0, 1);
842
- const t2 = scalar_1.scalar.clamp((x[2] - edge0[2]) / (edge1[2] - edge0[2]), 0, 1);
843
- const t3 = scalar_1.scalar.clamp((x[3] - edge0[3]) / (edge1[3] - edge0[3]), 0, 1);
844
- return [
845
- t0 * t0 * (3 - 2 * t0),
846
- t1 * t1 * (3 - 2 * t1),
847
- t2 * t2 * (3 - 2 * t2),
848
- t3 * t3 * (3 - 2 * t3),
849
- ];
850
- }
851
- vec4.smoothstep = smoothstep;
852
- /**
853
- * Converts the components of a vec4 from radians to degrees
854
- * @param rad The input vec4 in radians
855
- * @returns The degrees equivalent of the input
856
- *
857
- * @shorthands
858
- * - {@link deg}
859
- */
860
- function degrees(rad) {
861
- return [
862
- (rad[0] * 180) / Math.PI,
863
- (rad[1] * 180) / Math.PI,
864
- (rad[2] * 180) / Math.PI,
865
- (rad[3] * 180) / Math.PI,
866
- ];
867
- }
868
- vec4.degrees = degrees;
869
- /**
870
- * Alias for {@link degrees}
871
- * @category Shorthands
872
- */
873
- vec4.deg = degrees;
874
- /**
875
- * Converts the components of a vec4 from degrees to radians
876
- * @param deg The input vec4 in degrees
877
- * @returns The radians equivalent of the input
878
- *
879
- * @shorthands
880
- * - {@link rad}
881
- */
882
- function radians(deg) {
883
- return [
884
- (deg[0] * Math.PI) / 180,
885
- (deg[1] * Math.PI) / 180,
886
- (deg[2] * Math.PI) / 180,
887
- (deg[3] * Math.PI) / 180,
888
- ];
889
- }
890
- vec4.radians = radians;
891
- /**
892
- * Alias for {@link radians}
893
- * @category Shorthands
894
- */
895
- vec4.rad = radians;
896
- /**
897
- * Returns the sine of each component, which are angles in degrees
898
- */
899
- function sin(deg) {
900
- return [
901
- Math.sin(deg[0] * Common.DEG2RAD),
902
- Math.sin(deg[1] * Common.DEG2RAD),
903
- Math.sin(deg[2] * Common.DEG2RAD),
904
- Math.sin(deg[3] * Common.DEG2RAD),
905
- ];
906
- }
907
- vec4.sin = sin;
908
- /**
909
- * Returns the cosine of each component, which are angles in degrees
910
- */
911
- function cos(deg) {
912
- return [
913
- Math.cos(deg[0] * Common.DEG2RAD),
914
- Math.cos(deg[1] * Common.DEG2RAD),
915
- Math.cos(deg[2] * Common.DEG2RAD),
916
- Math.cos(deg[3] * Common.DEG2RAD),
917
- ];
918
- }
919
- vec4.cos = cos;
920
- /**
921
- * Returns the tangent of each component, which are angles in degrees
922
- */
923
- function tan(deg) {
924
- return [
925
- Math.tan(deg[0] * Common.DEG2RAD),
926
- Math.tan(deg[1] * Common.DEG2RAD),
927
- Math.tan(deg[2] * Common.DEG2RAD),
928
- Math.tan(deg[3] * Common.DEG2RAD),
929
- ];
930
- }
931
- vec4.tan = tan;
932
- /**
933
- * Returns the arcsine of each component, in degrees
934
- */
935
- function asin(v) {
936
- return [
937
- Math.asin(v[0]) * Common.RAD2DEG,
938
- Math.asin(v[1]) * Common.RAD2DEG,
939
- Math.asin(v[2]) * Common.RAD2DEG,
940
- Math.asin(v[3]) * Common.RAD2DEG,
941
- ];
942
- }
943
- vec4.asin = asin;
944
- /**
945
- * Returns the arc cosine of each component, in degrees
946
- */
947
- function acos(v) {
948
- return [
949
- Math.acos(v[0]) * Common.RAD2DEG,
950
- Math.acos(v[1]) * Common.RAD2DEG,
951
- Math.acos(v[2]) * Common.RAD2DEG,
952
- Math.acos(v[3]) * Common.RAD2DEG,
953
- ];
954
- }
955
- vec4.acos = acos;
956
- /**
957
- * Returns the arc-tangent of the parameters. If `x` is not provided, `y` is regarded as a value of `y/x`.
958
- * @param y the values of the y-coordinate
959
- * @param x the values of the x-coordinate
960
- * @returns the angle in degrees
961
- * @see https://thebookofshaders.com/glossary/?search=atan
962
- * */
963
- function atan(y, x) {
964
- if (x === undefined) {
965
- return [
966
- Math.atan(y[0]) * Common.RAD2DEG,
967
- Math.atan(y[1]) * Common.RAD2DEG,
968
- Math.atan(y[2]) * Common.RAD2DEG,
969
- Math.atan(y[3]) * Common.RAD2DEG,
970
- ];
971
- }
972
- else {
973
- return [
974
- Math.atan2(y[0], x[0]) * Common.RAD2DEG,
975
- Math.atan2(y[1], x[1]) * Common.RAD2DEG,
976
- Math.atan2(y[2], x[2]) * Common.RAD2DEG,
977
- Math.atan2(y[3], x[3]) * Common.RAD2DEG,
978
- ];
979
- }
980
- }
981
- vec4.atan = atan;
982
- /**
983
- * Returns the arc-tangent of the parameters.
984
- * @param y the values of the y-coordinate
985
- * @param x the values of the x-coordinate
986
- * @returns the angle in degrees
987
- * @see https://thebookofshaders.com/glossary/?search=atan
988
- * */
989
- function atan2(y, x) {
990
- return [
991
- Math.atan2(y[0], x[0]) * Common.RAD2DEG,
992
- Math.atan2(y[1], x[1]) * Common.RAD2DEG,
993
- Math.atan2(y[2], x[2]) * Common.RAD2DEG,
994
- Math.atan2(y[3], x[3]) * Common.RAD2DEG,
995
- ];
996
- }
997
- vec4.atan2 = atan2;
998
- /**
999
- * Returns the base to the exponent power, component-wise
1000
- */
1001
- function pow(a, b) {
1002
- if (typeof b === 'number')
1003
- b = [b, b, b, b];
1004
- return [
1005
- Math.pow(a[0], b[0]),
1006
- Math.pow(a[1], b[1]),
1007
- Math.pow(a[2], b[2]),
1008
- Math.pow(a[3], b[3]),
1009
- ];
1010
- }
1011
- vec4.pow = pow;
1012
- /**
1013
- * Returns e raised to the power of each component
1014
- */
1015
- function exp(v) {
1016
- return [Math.exp(v[0]), Math.exp(v[1]), Math.exp(v[2]), Math.exp(v[3])];
1017
- }
1018
- vec4.exp = exp;
1019
- /**
1020
- * Returns the natural logarithm of each component
1021
- */
1022
- function log(v) {
1023
- return [Math.log(v[0]), Math.log(v[1]), Math.log(v[2]), Math.log(v[3])];
1024
- }
1025
- vec4.log = log;
1026
- /**
1027
- * Returns 2 raised to the power of the parameter
1028
- * @param v the value of the power to which 2 will be raised
1029
- */
1030
- function exp2(v) {
1031
- return [2 ** v[0], 2 ** v[1], 2 ** v[2], 2 ** v[3]];
1032
- }
1033
- vec4.exp2 = exp2;
1034
- /**
1035
- * Returns the base-2 logarithm of each component
1036
- */
1037
- function log2(v) {
1038
- return [Math.log2(v[0]), Math.log2(v[1]), Math.log2(v[2]), Math.log2(v[3])];
1039
- }
1040
- vec4.log2 = log2;
1041
- /**
1042
- * Returns the square root of each component
1043
- */
1044
- function sqrt(v) {
1045
- return [Math.sqrt(v[0]), Math.sqrt(v[1]), Math.sqrt(v[2]), Math.sqrt(v[3])];
1046
- }
1047
- vec4.sqrt = sqrt;
1048
- /**
1049
- * Returns the inverse of the square root of the parameter
1050
- * @param v the value of which to take the inverse of the square root
1051
- * @see https://thebookofshaders.com/glossary/?search=inversesqrt
1052
- */
1053
- function inverseSqrt(v) {
1054
- return [
1055
- 1 / Math.sqrt(v[0]),
1056
- 1 / Math.sqrt(v[1]),
1057
- 1 / Math.sqrt(v[2]),
1058
- 1 / Math.sqrt(v[3]),
1059
- ];
1060
- }
1061
- vec4.inverseSqrt = inverseSqrt;
1062
- /**
1063
- * Returns the hyperbolic sine of each component
1064
- */
1065
- function sinh(v) {
1066
- return [Math.sinh(v[0]), Math.sinh(v[1]), Math.sinh(v[2]), Math.sinh(v[3])];
1067
- }
1068
- vec4.sinh = sinh;
1069
- /**
1070
- * Returns the hyperbolic cosine of each component
1071
- */
1072
- function cosh(v) {
1073
- return [Math.cosh(v[0]), Math.cosh(v[1]), Math.cosh(v[2]), Math.cosh(v[3])];
1074
- }
1075
- vec4.cosh = cosh;
1076
- /**
1077
- * Returns the hyperbolic tangent of each component
1078
- */
1079
- function tanh(v) {
1080
- return [Math.tanh(v[0]), Math.tanh(v[1]), Math.tanh(v[2]), Math.tanh(v[3])];
1081
- }
1082
- vec4.tanh = tanh;
1083
- /**
1084
- * Returns the inverse hyperbolic sine of each component
1085
- */
1086
- function asinh(v) {
1087
- return [
1088
- Math.asinh(v[0]),
1089
- Math.asinh(v[1]),
1090
- Math.asinh(v[2]),
1091
- Math.asinh(v[3]),
1092
- ];
1093
- }
1094
- vec4.asinh = asinh;
1095
- /**
1096
- * Returns the inverse hyperbolic cosine of each component
1097
- */
1098
- function acosh(v) {
1099
- return [
1100
- Math.acosh(v[0]),
1101
- Math.acosh(v[1]),
1102
- Math.acosh(v[2]),
1103
- Math.acosh(v[3]),
1104
- ];
1105
- }
1106
- vec4.acosh = acosh;
1107
- /**
1108
- * Returns the inverse hyperbolic tangent of each component
1109
- */
1110
- function atanh(v) {
1111
- return [
1112
- Math.atanh(v[0]),
1113
- Math.atanh(v[1]),
1114
- Math.atanh(v[2]),
1115
- Math.atanh(v[3]),
1116
- ];
1117
- }
1118
- vec4.atanh = atanh;
1119
- /**
1120
- * Clamps each component to [0, 1]. Equivalent to HLSL's `saturate`.
1121
- */
1122
- function saturate(v) {
1123
- return [
1124
- Math.max(0, Math.min(1, v[0])),
1125
- Math.max(0, Math.min(1, v[1])),
1126
- Math.max(0, Math.min(1, v[2])),
1127
- Math.max(0, Math.min(1, v[3])),
1128
- ];
1129
- }
1130
- vec4.saturate = saturate;
1131
- /**
1132
- * Returns the sum of all components of a vector.
1133
- * Equivalent to GLM's `glm::compAdd`.
1134
- */
1135
- function compAdd(v) {
1136
- return v[0] + v[1] + v[2] + v[3];
1137
- }
1138
- vec4.compAdd = compAdd;
1139
- /**
1140
- * Returns the product of all components of a vector.
1141
- * Equivalent to GLM's `glm::compMul`.
1142
- */
1143
- function compMul(v) {
1144
- return v[0] * v[1] * v[2] * v[3];
1145
- }
1146
- vec4.compMul = compMul;
1147
- /**
1148
- * Returns whether or not the vectors have exactly the same elements in the same position (when compared with `===`)
1149
- *
1150
- * @shorthands
1151
- * - {@link eq}
1152
- */
1153
- function exactEquals(a, b) {
1154
- return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
1155
- }
1156
- vec4.exactEquals = exactEquals;
1157
- /**
1158
- * Alias for {@link exactEquals}
1159
- * @category Shorthands
1160
- */
1161
- vec4.eq = exactEquals;
1162
- /**
1163
- * Returns whether or not the vectors have approximately the same elements in the same position.
1164
- *
1165
- * @shorthands
1166
- * - {@link approx}
1167
- * - {@link equals}
1168
- */
1169
- function approxEquals(a, b) {
1170
- const [a0, a1, a2, a3] = a;
1171
- const [b0, b1, b2, b3] = b;
1172
- return (Math.abs(a0 - b0) <=
1173
- Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
1174
- Math.abs(a1 - b1) <=
1175
- Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
1176
- Math.abs(a2 - b2) <=
1177
- Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
1178
- Math.abs(a3 - b3) <=
1179
- Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)));
1180
- }
1181
- vec4.approxEquals = approxEquals;
1182
- /**
1183
- * Alias for {@link approxEquals}
1184
- * @category Shorthands
1185
- */
1186
- vec4.approx = approxEquals;
1187
- /**
1188
- * Alias for {@link approxEquals}. This is provided for compatibility with gl-matrix.
1189
- * @category Shorthands
1190
- * @deprecated Use {@link approxEquals} instead
1191
- */
1192
- vec4.equals = approxEquals;
1193
- /**
1194
- * Returns the string representation of a vec4
1195
- * @param v vector to represent as a string
1196
- * @param fractionDigits number of digits to appear after the decimal point
1197
- */
1198
- vec4.toString = Common.vecToString;
1199
- })(vec4 || (exports.vec4 = vec4 = {}));
1200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjNC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZWM0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUFrQztBQUdsQyxxQ0FBK0I7QUFRL0I7OztHQUdHO0FBQ0gsSUFBaUIsSUFBSSxDQW1zQ3BCO0FBbnNDRCxXQUFpQixJQUFJO0lBT3BCOzs7T0FHRztJQUNILFNBQWdCLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBVSxFQUFFLENBQVUsRUFBRSxDQUFVO1FBQy9ELElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzRCxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssU0FBUztZQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUIsSUFBSSxDQUFDLEtBQUssU0FBUztZQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUIsSUFBSSxDQUFDLEtBQUssU0FBUztZQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFMUIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFUZSxPQUFFLEtBU2pCLENBQUE7SUFFRDs7O09BR0c7SUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBTztRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNkLENBQUM7SUFGZSxVQUFLLFFBRXBCLENBQUE7SUFFRDs7T0FFRztJQUNVLFNBQUksR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVyRDs7T0FFRztJQUNVLFFBQUcsR0FBUyxNQUFN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RCxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDM0MsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDM0MsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDM0MsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMs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QUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzVFLENBQUM7SUFGZSxTQUFJLE9BRW5CLENBQUE7SUFFRDs7O09BR0c7SUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBTztRQUM1QixPQUFPO1lBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0MsQ0FBQTtJQUNGLENBQUM7SUFQZSxVQUFLLFFBT3BCLENBQUE7SUFFRDs7O09BR0c7SUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBTztRQUM1QixPQUFPLEtB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QWdCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsQ0FBTztRQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUZlLFFBQUcsTUFFbEIsQ0FBQTtJQUVEOztPQUVHO0lBQ0gsU0FBZ0IsS0FBSyxDQUFDLENBQU8sRUFBRSxDQUFPLEVBQUUsQ0FBTztRQUM5QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxD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