linearly 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{common.d.ts → cjs/common.d.ts} +1 -0
- package/lib/cjs/common.d.ts.map +1 -0
- package/lib/cjs/common.js +20 -0
- package/lib/{index.d.ts → cjs/index.d.ts} +1 -0
- package/lib/cjs/index.d.ts.map +1 -0
- package/lib/cjs/index.js +35 -0
- package/lib/{mat2.d.ts → cjs/mat2.d.ts} +1 -0
- package/lib/cjs/mat2.d.ts.map +1 -0
- package/lib/cjs/mat2.js +224 -0
- package/lib/{mat2d.d.ts → cjs/mat2d.d.ts} +1 -0
- package/lib/cjs/mat2d.d.ts.map +1 -0
- package/lib/cjs/mat2d.js +291 -0
- package/lib/{mat3.d.ts → cjs/mat3.d.ts} +1 -0
- package/lib/cjs/mat3.d.ts.map +1 -0
- package/lib/cjs/mat3.js +450 -0
- package/lib/{mat4.d.ts → cjs/mat4.d.ts} +1 -0
- package/lib/cjs/mat4.d.ts.map +1 -0
- package/lib/cjs/mat4.js +1250 -0
- package/lib/{quat.d.ts → cjs/quat.d.ts} +1 -0
- package/lib/cjs/quat.d.ts.map +1 -0
- package/lib/cjs/quat.js +504 -0
- package/lib/{vec2.d.ts → cjs/vec2.d.ts} +1 -0
- package/lib/cjs/vec2.d.ts.map +1 -0
- package/lib/cjs/vec2.js +205 -0
- package/lib/{vec3.d.ts → cjs/vec3.d.ts} +1 -0
- package/lib/cjs/vec3.d.ts.map +1 -0
- package/lib/cjs/vec3.js +409 -0
- package/lib/{vec4.d.ts → cjs/vec4.d.ts} +1 -0
- package/lib/cjs/vec4.d.ts.map +1 -0
- package/lib/cjs/vec4.js +319 -0
- package/lib/esm/common.d.ts +12 -0
- package/lib/esm/common.d.ts.map +1 -0
- package/lib/esm/common.js +16 -0
- package/lib/esm/index.d.ts +17 -0
- package/lib/esm/index.d.ts.map +1 -0
- package/lib/esm/index.js +9 -0
- package/lib/esm/mat2.d.ts +91 -0
- package/lib/esm/mat2.d.ts.map +1 -0
- package/lib/esm/mat2.js +179 -0
- package/lib/esm/mat2d.d.ts +102 -0
- package/lib/esm/mat2d.d.ts.map +1 -0
- package/lib/esm/mat2d.js +246 -0
- package/lib/esm/mat3.d.ts +120 -0
- package/lib/esm/mat3.d.ts.map +1 -0
- package/lib/esm/mat3.js +400 -0
- package/lib/esm/mat4.d.ts +313 -0
- package/lib/esm/mat4.d.ts.map +1 -0
- package/lib/esm/mat4.js +1183 -0
- package/lib/esm/quat.d.ts +220 -0
- package/lib/esm/quat.d.ts.map +1 -0
- package/lib/esm/quat.js +458 -0
- package/lib/esm/vec2.d.ts +66 -0
- package/lib/esm/vec2.d.ts.map +1 -0
- package/lib/esm/vec2.js +149 -0
- package/lib/esm/vec3.d.ts +167 -0
- package/lib/esm/vec3.d.ts.map +1 -0
- package/lib/esm/vec3.js +348 -0
- package/lib/esm/vec4.d.ts +116 -0
- package/lib/esm/vec4.d.ts.map +1 -0
- package/lib/esm/vec4.js +266 -0
- package/package.json +6 -4
- package/lib/common.js +0 -30
- package/lib/index.js +0 -45
- package/lib/mat2.js +0 -234
- package/lib/mat2d.js +0 -301
- package/lib/mat2d.test.d.ts +0 -1
- package/lib/mat2d.test.js +0 -123
- package/lib/mat3.js +0 -460
- package/lib/mat4.js +0 -1260
- package/lib/quat.js +0 -514
- package/lib/vec2.js +0 -215
- package/lib/vec2.test.d.ts +0 -1
- package/lib/vec2.test.js +0 -147
- package/lib/vec3.js +0 -419
- package/lib/vec3.test.d.ts +0 -1
- package/lib/vec3.test.js +0 -149
- package/lib/vec4.js +0 -329
- package/lib/vec4.test.d.ts +0 -1
- package/lib/vec4.test.js +0 -45
package/lib/cjs/vec2.js
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.equals = exports.exactEquals = exports.angle = exports.rotate = exports.transformMat3 = exports.transformMat2d = exports.transformMat2 = exports.lerp = exports.cross = exports.dot = exports.normalize = exports.inverse = exports.negate = exports.squaredLength = exports.length = exports.squaredDistance = exports.distance = exports.scaleAndAdd = exports.scale = exports.round = exports.clamp = exports.max = exports.min = exports.floor = exports.ceil = exports.divide = exports.multiply = exports.subtract = exports.add = exports.one = exports.zero = exports.of = void 0;
|
|
27
|
+
const Common = __importStar(require("./common"));
|
|
28
|
+
function of(x, y = x) {
|
|
29
|
+
return [x, y];
|
|
30
|
+
}
|
|
31
|
+
exports.of = of;
|
|
32
|
+
exports.zero = Object.freeze([0, 0]);
|
|
33
|
+
exports.one = Object.freeze([1, 1]);
|
|
34
|
+
function add(a, b) {
|
|
35
|
+
return [a[0] + b[0], a[1] + b[1]];
|
|
36
|
+
}
|
|
37
|
+
exports.add = add;
|
|
38
|
+
function subtract(a, b) {
|
|
39
|
+
return [a[0] - b[0], a[1] - b[1]];
|
|
40
|
+
}
|
|
41
|
+
exports.subtract = subtract;
|
|
42
|
+
function multiply(a, b) {
|
|
43
|
+
return [a[0] * b[0], a[1] * b[1]];
|
|
44
|
+
}
|
|
45
|
+
exports.multiply = multiply;
|
|
46
|
+
function divide(a, b) {
|
|
47
|
+
return [a[0] / b[0], a[1] / b[1]];
|
|
48
|
+
}
|
|
49
|
+
exports.divide = divide;
|
|
50
|
+
function ceil(a) {
|
|
51
|
+
return [Math.ceil(a[0]), Math.ceil(a[1])];
|
|
52
|
+
}
|
|
53
|
+
exports.ceil = ceil;
|
|
54
|
+
function floor(a) {
|
|
55
|
+
return [Math.floor(a[0]), Math.floor(a[1])];
|
|
56
|
+
}
|
|
57
|
+
exports.floor = floor;
|
|
58
|
+
function min(a, b) {
|
|
59
|
+
return [Math.min(a[0], b[0]), Math.min(a[1], b[1])];
|
|
60
|
+
}
|
|
61
|
+
exports.min = min;
|
|
62
|
+
function max(a, b) {
|
|
63
|
+
return [Math.max(a[0], b[0]), Math.max(a[1], b[1])];
|
|
64
|
+
}
|
|
65
|
+
exports.max = max;
|
|
66
|
+
/**
|
|
67
|
+
* Constrain a value to lie between two further values
|
|
68
|
+
*/
|
|
69
|
+
function clamp(a, min, max) {
|
|
70
|
+
return [
|
|
71
|
+
Math.min(Math.max(a[0], min[0]), max[0]),
|
|
72
|
+
Math.min(Math.max(a[1], min[1]), max[1]),
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
exports.clamp = clamp;
|
|
76
|
+
/**
|
|
77
|
+
* symmetric round the components of a vec2
|
|
78
|
+
*/
|
|
79
|
+
function round(a) {
|
|
80
|
+
return [Common.round(a[0]), Common.round(a[1])];
|
|
81
|
+
}
|
|
82
|
+
exports.round = round;
|
|
83
|
+
function scale(a, s) {
|
|
84
|
+
return [a[0] * s, a[1] * s];
|
|
85
|
+
}
|
|
86
|
+
exports.scale = scale;
|
|
87
|
+
/**
|
|
88
|
+
* Adds two vec2's after scaling the second operand by a scalar value
|
|
89
|
+
*/
|
|
90
|
+
function scaleAndAdd(a, b, scale) {
|
|
91
|
+
return [a[0] + b[0] * scale, a[1] + b[1] * scale];
|
|
92
|
+
}
|
|
93
|
+
exports.scaleAndAdd = scaleAndAdd;
|
|
94
|
+
function distance(a, b) {
|
|
95
|
+
const x = b[0] - a[0], y = b[1] - a[1];
|
|
96
|
+
return Math.sqrt(x * x + y * y);
|
|
97
|
+
}
|
|
98
|
+
exports.distance = distance;
|
|
99
|
+
function squaredDistance(a, b) {
|
|
100
|
+
const x = b[0] - a[0], y = b[1] - a[1];
|
|
101
|
+
return x * x + y * y;
|
|
102
|
+
}
|
|
103
|
+
exports.squaredDistance = squaredDistance;
|
|
104
|
+
function length(v) {
|
|
105
|
+
return Math.sqrt(v[0] ** 2 + v[1] ** 2);
|
|
106
|
+
}
|
|
107
|
+
exports.length = length;
|
|
108
|
+
function squaredLength(v) {
|
|
109
|
+
return v[0] ** 2 + v[1] ** 2;
|
|
110
|
+
}
|
|
111
|
+
exports.squaredLength = squaredLength;
|
|
112
|
+
function negate(v) {
|
|
113
|
+
return [-v[0], -v[1]];
|
|
114
|
+
}
|
|
115
|
+
exports.negate = negate;
|
|
116
|
+
function inverse(v) {
|
|
117
|
+
return [1 / v[0], 1 / v[1]];
|
|
118
|
+
}
|
|
119
|
+
exports.inverse = inverse;
|
|
120
|
+
function normalize(v) {
|
|
121
|
+
const hyp = v[0] ** 2 + v[1] ** 2;
|
|
122
|
+
const len = hyp === 0 ? 0 : 1 / Math.sqrt(hyp);
|
|
123
|
+
return [v[0] * len, v[1] * len];
|
|
124
|
+
}
|
|
125
|
+
exports.normalize = normalize;
|
|
126
|
+
function dot(a, b) {
|
|
127
|
+
return a[0] * b[0] + a[1] * b[1];
|
|
128
|
+
}
|
|
129
|
+
exports.dot = dot;
|
|
130
|
+
function cross(a, b) {
|
|
131
|
+
const z = a[0] * b[1] - a[1] * b[0];
|
|
132
|
+
return [0, 0, z];
|
|
133
|
+
}
|
|
134
|
+
exports.cross = cross;
|
|
135
|
+
/**
|
|
136
|
+
* Performs a linear interpolation between two Vec2's
|
|
137
|
+
*/
|
|
138
|
+
function lerp(a, b, t) {
|
|
139
|
+
const [ax, ay] = a;
|
|
140
|
+
return [ax + t * (b[0] - ax), ay + t * (b[1] - ay)];
|
|
141
|
+
}
|
|
142
|
+
exports.lerp = lerp;
|
|
143
|
+
function transformMat2(a, m) {
|
|
144
|
+
const [x, y] = a;
|
|
145
|
+
return [m[0] * x + m[2] * y, m[1] * x + m[3] * y];
|
|
146
|
+
}
|
|
147
|
+
exports.transformMat2 = transformMat2;
|
|
148
|
+
function transformMat2d(a, m) {
|
|
149
|
+
const [x, y] = a;
|
|
150
|
+
return [m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]];
|
|
151
|
+
}
|
|
152
|
+
exports.transformMat2d = transformMat2d;
|
|
153
|
+
/**
|
|
154
|
+
* Transforms the vec2 with a mat3
|
|
155
|
+
* 3rd vector component is implicitly '1'
|
|
156
|
+
*/
|
|
157
|
+
function transformMat3(a, m) {
|
|
158
|
+
const [x, y] = a;
|
|
159
|
+
return [m[0] * x + m[3] * y + m[6], m[1] * x + m[4] * y + m[7]];
|
|
160
|
+
}
|
|
161
|
+
exports.transformMat3 = transformMat3;
|
|
162
|
+
/**
|
|
163
|
+
* Rotate a 2D vector
|
|
164
|
+
*/
|
|
165
|
+
function rotate(a, origin, rad) {
|
|
166
|
+
// Translate point to the origin
|
|
167
|
+
const p0 = a[0] - origin[0], p1 = a[1] - origin[1], sinC = Math.sin(rad), cosC = Math.cos(rad);
|
|
168
|
+
// Perform rotation and translate to correct position
|
|
169
|
+
return [p0 * cosC - p1 * sinC + origin[0], p0 * sinC + p1 * cosC + origin[1]];
|
|
170
|
+
}
|
|
171
|
+
exports.rotate = rotate;
|
|
172
|
+
/**
|
|
173
|
+
* Get the angle between two 2D vectors
|
|
174
|
+
*/
|
|
175
|
+
function angle(a, b) {
|
|
176
|
+
const [x1, y1] = a;
|
|
177
|
+
const [x2, y2] = b;
|
|
178
|
+
// mag is the product of the magnitudes of a and b
|
|
179
|
+
const mag = Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2));
|
|
180
|
+
// mag &&.. short circuits if mag == 0
|
|
181
|
+
const cosine = mag && (x1 * x2 + y1 * y2) / mag;
|
|
182
|
+
// Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1
|
|
183
|
+
return Math.acos(Math.min(Math.max(cosine, -1), 1));
|
|
184
|
+
}
|
|
185
|
+
exports.angle = angle;
|
|
186
|
+
/**
|
|
187
|
+
* Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)
|
|
188
|
+
*/
|
|
189
|
+
function exactEquals(a, b) {
|
|
190
|
+
return a[0] === b[0] && a[1] === b[1];
|
|
191
|
+
}
|
|
192
|
+
exports.exactEquals = exactEquals;
|
|
193
|
+
/**
|
|
194
|
+
* Returns whether or not the vectors have approximately the same elements in the same position.
|
|
195
|
+
*/
|
|
196
|
+
function equals(a, b) {
|
|
197
|
+
const [a0, a1] = a;
|
|
198
|
+
const [b0, b1] = b;
|
|
199
|
+
return (Math.abs(a0 - b0) <=
|
|
200
|
+
Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
|
|
201
|
+
Math.abs(a1 - b1) <=
|
|
202
|
+
Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)));
|
|
203
|
+
}
|
|
204
|
+
exports.equals = equals;
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjMi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZWMyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQWtDO0FBUWxDLFNBQWdCLEVBQUUsQ0FBQyxDQUFTLEVBQUUsSUFBWSxDQUFDO0lBQzFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDZCxDQUFDO0FBRkQsZ0JBRUM7QUFFWSxRQUFBLElBQUksR0FBUyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFbEMsUUFBQSxHQUFHLEdBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBRTlDLFNBQWdCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQUZELGtCQUVDO0FBRUQsU0FBZ0IsUUFBUSxDQUFDLENBQU8sRUFBRSxDQUFPO0lBQ3hDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNsQyxDQUFDO0FBRkQsNEJBRUM7QUFFRCxTQUFnQixRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDeEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMs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
|
|
@@ -164,3 +164,4 @@ export declare function exactEquals(a: Vec3, b: Vec3): boolean;
|
|
|
164
164
|
* Returns whether or not the vectors have approximately the same elements in the same position.
|
|
165
165
|
*/
|
|
166
166
|
export declare function equals(a: Vec3, b: Vec3): boolean;
|
|
167
|
+
//# sourceMappingURL=vec3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vec3.d.ts","sourceRoot":"","sources":["../../src/vec3.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/vec3.js
ADDED
|
@@ -0,0 +1,409 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.equals = exports.exactEquals = exports.angle = exports.rotateZ = exports.rotateY = exports.rotateX = exports.transformQuat = exports.transformMat3 = exports.transformMat4 = exports.bezier = exports.hermite = exports.slerp = exports.lerp = exports.cross = exports.dot = exports.normalize = exports.inverse = exports.negate = exports.squaredLength = exports.length = exports.squaredDistance = exports.distance = exports.scaleAndAdd = exports.scale = exports.round = exports.clamp = exports.max = exports.min = exports.floor = exports.ceil = exports.divide = exports.multiply = exports.subtract = exports.add = exports.one = exports.zero = exports.of = void 0;
|
|
27
|
+
const Common = __importStar(require("./common"));
|
|
28
|
+
function of(x, y, z) {
|
|
29
|
+
if (y === undefined && z === undefined) {
|
|
30
|
+
y = z = x;
|
|
31
|
+
}
|
|
32
|
+
if (y === undefined)
|
|
33
|
+
y = 0;
|
|
34
|
+
if (z === undefined)
|
|
35
|
+
z = 0;
|
|
36
|
+
return [x, y, z];
|
|
37
|
+
}
|
|
38
|
+
exports.of = of;
|
|
39
|
+
exports.zero = Object.freeze([0, 0, 0]);
|
|
40
|
+
exports.one = Object.freeze([1, 1, 1]);
|
|
41
|
+
/**
|
|
42
|
+
* Adds two vec3's
|
|
43
|
+
*/
|
|
44
|
+
function add(a, b) {
|
|
45
|
+
return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
|
|
46
|
+
}
|
|
47
|
+
exports.add = add;
|
|
48
|
+
/**
|
|
49
|
+
* Subtracts vector b from vector a
|
|
50
|
+
*/
|
|
51
|
+
function subtract(a, b) {
|
|
52
|
+
return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
53
|
+
}
|
|
54
|
+
exports.subtract = subtract;
|
|
55
|
+
/**
|
|
56
|
+
* Multiplies two vec3's
|
|
57
|
+
*/
|
|
58
|
+
function multiply(a, b) {
|
|
59
|
+
return [a[0] * b[0], a[1] * b[1], a[2] * b[2]];
|
|
60
|
+
}
|
|
61
|
+
exports.multiply = multiply;
|
|
62
|
+
/**
|
|
63
|
+
* Divides two vec3's
|
|
64
|
+
*/
|
|
65
|
+
function divide(a, b) {
|
|
66
|
+
return [a[0] / b[0], a[1] / b[1], a[2] / b[2]];
|
|
67
|
+
}
|
|
68
|
+
exports.divide = divide;
|
|
69
|
+
/**
|
|
70
|
+
* Math.ceil the components of a vec3
|
|
71
|
+
*/
|
|
72
|
+
function ceil(a) {
|
|
73
|
+
return [Math.ceil(a[0]), Math.ceil(a[1]), Math.ceil(a[2])];
|
|
74
|
+
}
|
|
75
|
+
exports.ceil = ceil;
|
|
76
|
+
/**
|
|
77
|
+
* Math.floor the components of a vec3
|
|
78
|
+
*/
|
|
79
|
+
function floor(a) {
|
|
80
|
+
return [Math.floor(a[0]), Math.floor(a[1]), Math.floor(a[2])];
|
|
81
|
+
}
|
|
82
|
+
exports.floor = floor;
|
|
83
|
+
/**
|
|
84
|
+
* Returns the minimum of two vec3's
|
|
85
|
+
*/
|
|
86
|
+
function min(a, b) {
|
|
87
|
+
return [Math.min(a[0], b[0]), Math.min(a[1], b[1]), Math.min(a[2], b[2])];
|
|
88
|
+
}
|
|
89
|
+
exports.min = min;
|
|
90
|
+
/**
|
|
91
|
+
* Returns the maximum of two vec3's
|
|
92
|
+
*/
|
|
93
|
+
function max(a, b) {
|
|
94
|
+
return [Math.max(a[0], b[0]), Math.max(a[1], b[1]), Math.max(a[2], b[2])];
|
|
95
|
+
}
|
|
96
|
+
exports.max = max;
|
|
97
|
+
/**
|
|
98
|
+
* Constrain a value to lie between two further values
|
|
99
|
+
*/
|
|
100
|
+
function clamp(a, min, max) {
|
|
101
|
+
return [
|
|
102
|
+
Math.min(Math.max(a[0], min[0]), max[0]),
|
|
103
|
+
Math.min(Math.max(a[1], min[1]), max[1]),
|
|
104
|
+
Math.min(Math.max(a[2], min[2]), max[2]),
|
|
105
|
+
];
|
|
106
|
+
}
|
|
107
|
+
exports.clamp = clamp;
|
|
108
|
+
/**
|
|
109
|
+
* symmetric round the components of a vec3
|
|
110
|
+
*/
|
|
111
|
+
function round(a) {
|
|
112
|
+
return [Common.round(a[0]), Common.round(a[1]), Common.round(a[2])];
|
|
113
|
+
}
|
|
114
|
+
exports.round = round;
|
|
115
|
+
/**
|
|
116
|
+
* Scales a vec3 by a scalar number
|
|
117
|
+
*/
|
|
118
|
+
function scale(a, s) {
|
|
119
|
+
return [a[0] * s, a[1] * s, a[2] * s];
|
|
120
|
+
}
|
|
121
|
+
exports.scale = scale;
|
|
122
|
+
/**
|
|
123
|
+
* Adds two vec3's after scaling the second operand by a scalar value
|
|
124
|
+
*/
|
|
125
|
+
function scaleAndAdd(a, b, scale) {
|
|
126
|
+
return [a[0] + b[0] * scale, a[1] + b[1] * scale, a[2] + b[2] * scale];
|
|
127
|
+
}
|
|
128
|
+
exports.scaleAndAdd = scaleAndAdd;
|
|
129
|
+
/**
|
|
130
|
+
* Calculates the euclidian distance between two vec3's
|
|
131
|
+
*/
|
|
132
|
+
function distance(a, b) {
|
|
133
|
+
const x = b[0] - a[0];
|
|
134
|
+
const y = b[1] - a[1];
|
|
135
|
+
const z = b[2] - a[2];
|
|
136
|
+
return Math.sqrt(x * x + y * y + z * z);
|
|
137
|
+
}
|
|
138
|
+
exports.distance = distance;
|
|
139
|
+
/**
|
|
140
|
+
* Calculates the squared euclidian distance between two vec3's
|
|
141
|
+
*/
|
|
142
|
+
function squaredDistance(a, b) {
|
|
143
|
+
const x = b[0] - a[0];
|
|
144
|
+
const y = b[1] - a[1];
|
|
145
|
+
const z = b[2] - a[2];
|
|
146
|
+
return x * x + y * y + z * z;
|
|
147
|
+
}
|
|
148
|
+
exports.squaredDistance = squaredDistance;
|
|
149
|
+
/**
|
|
150
|
+
* Calculates the length of a vec3
|
|
151
|
+
*/
|
|
152
|
+
function length(a) {
|
|
153
|
+
const [x, y, z] = a;
|
|
154
|
+
return Math.sqrt(x * x + y * y + z * z);
|
|
155
|
+
}
|
|
156
|
+
exports.length = length;
|
|
157
|
+
/**
|
|
158
|
+
* Calculates the squared length of a vec3
|
|
159
|
+
*/
|
|
160
|
+
function squaredLength(a) {
|
|
161
|
+
const x = a[0];
|
|
162
|
+
const y = a[1];
|
|
163
|
+
const z = a[2];
|
|
164
|
+
return x * x + y * y + z * z;
|
|
165
|
+
}
|
|
166
|
+
exports.squaredLength = squaredLength;
|
|
167
|
+
/**
|
|
168
|
+
* Negates the components of a vec3
|
|
169
|
+
*/
|
|
170
|
+
function negate(a) {
|
|
171
|
+
return [-a[0], -a[1], -a[2]];
|
|
172
|
+
}
|
|
173
|
+
exports.negate = negate;
|
|
174
|
+
/**
|
|
175
|
+
* Returns the inverse of the components of a vec3
|
|
176
|
+
*/
|
|
177
|
+
function inverse(a) {
|
|
178
|
+
return [1 / a[0], 1 / a[1], 1 / a[2]];
|
|
179
|
+
}
|
|
180
|
+
exports.inverse = inverse;
|
|
181
|
+
/**
|
|
182
|
+
* Normalize a vec3
|
|
183
|
+
*/
|
|
184
|
+
function normalize(a) {
|
|
185
|
+
const [x, y, z] = a;
|
|
186
|
+
const hyp = x * x + y * y + z * z;
|
|
187
|
+
const len = hyp === 0 ? 0 : 1 / Math.sqrt(hyp);
|
|
188
|
+
return [a[0] * len, a[1] * len, a[2] * len];
|
|
189
|
+
}
|
|
190
|
+
exports.normalize = normalize;
|
|
191
|
+
/**
|
|
192
|
+
* Calculates the dot product of two vec3's
|
|
193
|
+
*/
|
|
194
|
+
function dot(a, b) {
|
|
195
|
+
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
|
|
196
|
+
}
|
|
197
|
+
exports.dot = dot;
|
|
198
|
+
/**
|
|
199
|
+
* Computes the cross product of two vec3's
|
|
200
|
+
*/
|
|
201
|
+
function cross(a, b) {
|
|
202
|
+
const [ax, ay, az] = a;
|
|
203
|
+
const [bx, by, bz] = b;
|
|
204
|
+
return [ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx];
|
|
205
|
+
}
|
|
206
|
+
exports.cross = cross;
|
|
207
|
+
/**
|
|
208
|
+
* Performs a linear interpolation between two vec3's
|
|
209
|
+
*/
|
|
210
|
+
function lerp(a, b, t) {
|
|
211
|
+
const [ax, ay, az] = a;
|
|
212
|
+
return [ax + t * (b[0] - ax), ay + t * (b[1] - ay), az + t * (b[2] - az)];
|
|
213
|
+
}
|
|
214
|
+
exports.lerp = lerp;
|
|
215
|
+
/**
|
|
216
|
+
* Performs a spherical linear interpolation between two vec3's
|
|
217
|
+
*/
|
|
218
|
+
function slerp(a, b, t) {
|
|
219
|
+
const angle = Math.acos(Math.min(Math.max(dot(a, b), -1), 1));
|
|
220
|
+
const sinTotal = Math.sin(angle);
|
|
221
|
+
const ratioA = Math.sin((1 - t) * angle) / sinTotal;
|
|
222
|
+
const ratioB = Math.sin(t * angle) / sinTotal;
|
|
223
|
+
return [
|
|
224
|
+
ratioA * a[0] + ratioB * b[0],
|
|
225
|
+
ratioA * a[1] + ratioB * b[1],
|
|
226
|
+
ratioA * a[2] + ratioB * b[2],
|
|
227
|
+
];
|
|
228
|
+
}
|
|
229
|
+
exports.slerp = slerp;
|
|
230
|
+
/**
|
|
231
|
+
* Performs a hermite interpolation with two control points
|
|
232
|
+
*
|
|
233
|
+
* @param a the first operand
|
|
234
|
+
* @param b the second operand
|
|
235
|
+
* @param c the third operand
|
|
236
|
+
* @param d the fourth operand
|
|
237
|
+
* @param t interpolation amount, in the range [0-1], between the two inputs
|
|
238
|
+
*/
|
|
239
|
+
function hermite(a, b, c, d, t) {
|
|
240
|
+
const factorTimes2 = t * t;
|
|
241
|
+
const factor1 = factorTimes2 * (2 * t - 3) + 1;
|
|
242
|
+
const factor2 = factorTimes2 * (t - 2) + t;
|
|
243
|
+
const factor3 = factorTimes2 * (t - 1);
|
|
244
|
+
const factor4 = factorTimes2 * (3 - 2 * t);
|
|
245
|
+
return [
|
|
246
|
+
a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4,
|
|
247
|
+
a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4,
|
|
248
|
+
a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4,
|
|
249
|
+
];
|
|
250
|
+
}
|
|
251
|
+
exports.hermite = hermite;
|
|
252
|
+
/**
|
|
253
|
+
* Performs a bezier interpolation with two control points
|
|
254
|
+
*/
|
|
255
|
+
function bezier(a, b, c, d, t) {
|
|
256
|
+
const inverseFactor = 1 - t;
|
|
257
|
+
const inverseFactorTimesTwo = inverseFactor * inverseFactor;
|
|
258
|
+
const factorTimes2 = t * t;
|
|
259
|
+
const factor1 = inverseFactorTimesTwo * inverseFactor;
|
|
260
|
+
const factor2 = 3 * t * inverseFactorTimesTwo;
|
|
261
|
+
const factor3 = 3 * factorTimes2 * inverseFactor;
|
|
262
|
+
const factor4 = factorTimes2 * t;
|
|
263
|
+
return [
|
|
264
|
+
a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4,
|
|
265
|
+
a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4,
|
|
266
|
+
a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4,
|
|
267
|
+
];
|
|
268
|
+
}
|
|
269
|
+
exports.bezier = bezier;
|
|
270
|
+
/**
|
|
271
|
+
* Transforms the vec3 with a mat4.
|
|
272
|
+
* 4th vector component is implicitly '1'
|
|
273
|
+
*/
|
|
274
|
+
function transformMat4(a, m) {
|
|
275
|
+
const [x, y, z] = a;
|
|
276
|
+
const w = m[3] * x + m[7] * y + m[11] * z + m[15] || 1;
|
|
277
|
+
return [
|
|
278
|
+
(m[0] * x + m[4] * y + m[8] * z + m[12]) / w,
|
|
279
|
+
(m[1] * x + m[5] * y + m[9] * z + m[13]) / w,
|
|
280
|
+
(m[2] * x + m[6] * y + m[10] * z + m[14]) / w,
|
|
281
|
+
];
|
|
282
|
+
}
|
|
283
|
+
exports.transformMat4 = transformMat4;
|
|
284
|
+
/**
|
|
285
|
+
* Transforms the vec3 with a mat3.
|
|
286
|
+
*/
|
|
287
|
+
function transformMat3(a, m) {
|
|
288
|
+
const x = a[0], y = a[1], z = a[2];
|
|
289
|
+
return [
|
|
290
|
+
x * m[0] + y * m[3] + z * m[6],
|
|
291
|
+
x * m[1] + y * m[4] + z * m[7],
|
|
292
|
+
x * m[2] + y * m[5] + z * m[8],
|
|
293
|
+
];
|
|
294
|
+
}
|
|
295
|
+
exports.transformMat3 = transformMat3;
|
|
296
|
+
/**
|
|
297
|
+
* Transforms the vec3 with a quat
|
|
298
|
+
* Can also be used for dual quaternions. (Multiply it with the real part)
|
|
299
|
+
*
|
|
300
|
+
* @param a the vector to transform
|
|
301
|
+
* @param q quaternion to transform with
|
|
302
|
+
*/
|
|
303
|
+
// https://github.com/stackgl/gl-vec3/blob/master/transformQuat.js
|
|
304
|
+
function transformQuat(a, q) {
|
|
305
|
+
// benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations
|
|
306
|
+
const x = a[0], y = a[1], z = a[2], qx = q[0], qy = q[1], qz = q[2], qw = q[3],
|
|
307
|
+
// calculate quat * vec
|
|
308
|
+
ix = qw * x + qy * z - qz * y, iy = qw * y + qz * x - qx * z, iz = qw * z + qx * y - qy * x, iw = -qx * x - qy * y - qz * z;
|
|
309
|
+
// calculate result * inverse quat
|
|
310
|
+
return [
|
|
311
|
+
ix * qw + iw * -qx + iy * -qz - iz * -qy,
|
|
312
|
+
iy * qw + iw * -qy + iz * -qx - ix * -qz,
|
|
313
|
+
iz * qw + iw * -qz + ix * -qy - iy * -qx,
|
|
314
|
+
];
|
|
315
|
+
}
|
|
316
|
+
exports.transformQuat = transformQuat;
|
|
317
|
+
/**
|
|
318
|
+
* Rotate a 3D vector around the x-axis
|
|
319
|
+
* @param a The vec3 point to rotate
|
|
320
|
+
* @param b The origin of the rotation
|
|
321
|
+
* @param rad The angle of rotation in radians
|
|
322
|
+
*/
|
|
323
|
+
function rotateX(a, b, rad) {
|
|
324
|
+
//Translate point to the origin
|
|
325
|
+
const p = [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
326
|
+
//perform rotation
|
|
327
|
+
const r = [
|
|
328
|
+
p[0],
|
|
329
|
+
p[1] * Math.cos(rad) - p[2] * Math.sin(rad),
|
|
330
|
+
p[1] * Math.sin(rad) + p[2] * Math.cos(rad),
|
|
331
|
+
];
|
|
332
|
+
//translate to correct position
|
|
333
|
+
return [r[0] + b[0], r[1] + b[1], r[2] + b[2]];
|
|
334
|
+
}
|
|
335
|
+
exports.rotateX = rotateX;
|
|
336
|
+
/**
|
|
337
|
+
* Rotate a 3D vector around the y-axis
|
|
338
|
+
* @param a The vec3 point to rotate
|
|
339
|
+
* @param origin The origin of the rotation
|
|
340
|
+
* @param rad The angle of rotation in radians
|
|
341
|
+
*/
|
|
342
|
+
function rotateY(a, origin, rad) {
|
|
343
|
+
//Translate point to the origin
|
|
344
|
+
const p = [a[0] - origin[0], a[1] - origin[1], a[2] - origin[2]];
|
|
345
|
+
//perform rotation
|
|
346
|
+
const r = [
|
|
347
|
+
p[2] * Math.sin(rad) + p[0] * Math.cos(rad),
|
|
348
|
+
p[1],
|
|
349
|
+
p[2] * Math.cos(rad) - p[0] * Math.sin(rad),
|
|
350
|
+
];
|
|
351
|
+
//translate to correct position
|
|
352
|
+
return [r[0] + origin[0], r[1] + origin[1], r[2] + origin[2]];
|
|
353
|
+
}
|
|
354
|
+
exports.rotateY = rotateY;
|
|
355
|
+
/**
|
|
356
|
+
* Rotate a 3D vector around the z-axis
|
|
357
|
+
* @param a The vec3 point to rotate
|
|
358
|
+
* @param b The origin of the rotation
|
|
359
|
+
* @param rad The angle of rotation in radians
|
|
360
|
+
*/
|
|
361
|
+
function rotateZ(a, b, rad) {
|
|
362
|
+
//Translate point to the origin
|
|
363
|
+
const p = [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
364
|
+
//perform rotation
|
|
365
|
+
const r = [
|
|
366
|
+
p[0] * Math.cos(rad) - p[1] * Math.sin(rad),
|
|
367
|
+
p[0] * Math.sin(rad) + p[1] * Math.cos(rad),
|
|
368
|
+
p[2],
|
|
369
|
+
];
|
|
370
|
+
//translate to correct position
|
|
371
|
+
return [r[0] + b[0], r[1] + b[1], r[2] + b[2]];
|
|
372
|
+
}
|
|
373
|
+
exports.rotateZ = rotateZ;
|
|
374
|
+
/**
|
|
375
|
+
* Get the angle between two 3D vectors
|
|
376
|
+
* @param a The first operand
|
|
377
|
+
* @param b The second operand
|
|
378
|
+
* @returns The angle in radians
|
|
379
|
+
*/
|
|
380
|
+
function angle(a, b) {
|
|
381
|
+
const [ax, ay, az] = a;
|
|
382
|
+
const [bx, by, bz] = b;
|
|
383
|
+
const mag = Math.sqrt((ax * ax + ay * ay + az * az) * (bx * bx + by * by + bz * bz));
|
|
384
|
+
const cosine = mag && dot(a, b) / mag;
|
|
385
|
+
return Math.acos(Math.min(Math.max(cosine, -1), 1));
|
|
386
|
+
}
|
|
387
|
+
exports.angle = angle;
|
|
388
|
+
/**
|
|
389
|
+
* Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)
|
|
390
|
+
*/
|
|
391
|
+
function exactEquals(a, b) {
|
|
392
|
+
return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];
|
|
393
|
+
}
|
|
394
|
+
exports.exactEquals = exactEquals;
|
|
395
|
+
/**
|
|
396
|
+
* Returns whether or not the vectors have approximately the same elements in the same position.
|
|
397
|
+
*/
|
|
398
|
+
function equals(a, b) {
|
|
399
|
+
const [a0, a1, a2] = a;
|
|
400
|
+
const [b0, b1, b2] = b;
|
|
401
|
+
return (Math.abs(a0 - b0) <=
|
|
402
|
+
Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
|
|
403
|
+
Math.abs(a1 - b1) <=
|
|
404
|
+
Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
|
|
405
|
+
Math.abs(a2 - b2) <=
|
|
406
|
+
Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)));
|
|
407
|
+
}
|
|
408
|
+
exports.equals = equals;
|
|
409
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjMy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZWMzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQWtDO0FBT2xDLFNBQWdCLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBVSxFQUFFLENBQVU7SUFDbkQsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUU7UUFDdkMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDVDtJQUNELElBQUksQ0FBQyxLQUFLLFNBQVM7UUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFCLElBQUksQ0FBQyxLQUFLLFNBQVM7UUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTFCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ2pCLENBQUM7QUFSRCxnQkFRQztBQUVZLFFBQUEsSUFBSSxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFckMsUUFBQSxHQUFHLEdBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUVqRDs7R0FFRztBQUNILFNBQWdCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRkQsa0JBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUN4QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRkQsNEJBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUN4QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRkQsNEJBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLE1BQU0sQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUN0QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRkQsd0JBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLElBQUksQ0FBQyxDQUFPO0lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzNELENBQUM7QUFGRCxvQkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLENBQU87SUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUZELHNCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixHQUFHLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDMUUsQ0FBQztBQUZELGtCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixHQUFHLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDMUUsQ0FBQztBQUZELGtCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBTyxFQUFFLEdBQVMsRUFBRSxHQUFTO0lBQ2xELE9BQU87UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN4QyxDQUFBO0FBQ0YsQ0FBQztBQU5ELHNCQU1DO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixLQUFLLENBQUMsQ0FBTztJQUM1QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNwRSxDQUFDO0FBRkQsc0JBRUM7QUFDRDs7R0FFRztBQUNILFNBQWdCLEtBQUssQ0FBQyxDQUFPLEVBQUUsQ0FBUztJQUN2QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUN0QyxDQUFDO0FBRkQsc0JBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxDQUFPLEVBQUUsQ0FBTyxFQUFFLEtBQWE7SUFDMUQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7QUFDdkUsQ0FBQztBQUZELGtDQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDeEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDeEMsQ0FBQztBQUxELDRCQUtDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckIs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
|