@galacean/effects-core 2.0.0-alpha.3 → 2.0.0-alpha.4
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/dist/asset-loader.d.ts +30 -22
- package/dist/index.js +723 -250
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +758 -286
- package/dist/index.mjs.map +1 -1
- package/dist/material/material.d.ts +3 -3
- package/dist/plugins/interact/interact-mesh.d.ts +1 -1
- package/dist/plugins/particle/particle-mesh.d.ts +3 -3
- package/dist/plugins/particle/trail-mesh.d.ts +6 -6
- package/dist/render/shader.d.ts +9 -2
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/utils.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector2.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/quaternion.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/matrix4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/euler.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/matrix3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/ray.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/color.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/box3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/sphere.js","../../../node_modules/.pnpm/@galacean+effects-specification@1.0.1/node_modules/@galacean/effects-specification/dist/index.mjs","../src/libs/earcut.js","../../../node_modules/.pnpm/@galacean+effects-specification@1.0.1/node_modules/@galacean/effects-specification/dist/fallback.mjs"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","export var PI2 = Math.PI * 2;\nexport var DEG2RAD = Math.PI / 180;\nexport var RAD2DEG = 180 / Math.PI;\nexport var NumberEpsilon = 1e-6;\nexport function isZero(v) {\n return isNaN(v) || Math.abs(v) < NumberEpsilon;\n}\nexport function isEqual(a, b) {\n return Math.abs(a - b) < NumberEpsilon || (a === Infinity && b === Infinity) || (a === -Infinity && b === -Infinity);\n}\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nexport var damp = function (x, y, lambda, dt) { return lerp(x, y, 1 - Math.exp(-lambda * dt)); };\n// https://en.wikipedia.org/wiki/Linear_interpolation\nexport var lerp = function (x, y, t) { return (1 - t) * x + t * y; };\nexport var degToRad = function (degrees) { return degrees * DEG2RAD; };\nexport var radToDeg = function (radians) { return radians * RAD2DEG; };\nexport function clamp(value, min, max) {\n var fixedMin = isNaN(min) ? -Infinity : min;\n var fixedMax = isNaN(max) ? Infinity : max;\n var lower = Math.min(fixedMin, fixedMax);\n var upper = Math.max(fixedMin, fixedMax);\n return Math.min(Math.max(value, lower), upper);\n}\n","import { NumberEpsilon } from './utils';\n/**\n * 二维向量\n */\nexport var Vector2 = /** @class */ (function () {\n /**\n * 构造函数,默认为零向量\n * @param [x=0] - x 分量\n * @param [y=0] - y 分量\n */\n function Vector2(x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n this.x = x;\n this.y = y;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @returns\n */\n Vector2.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector2.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n return this;\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector2.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n return this;\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector2.prototype.setFromArray = function (array, offset) {\n var _a, _b;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param src - 要拷贝的对象\n * @returns 向量\n */\n Vector2.prototype.copyFrom = function (src) {\n this.x = src.x;\n this.y = src.y;\n return this;\n };\n /**\n * 克隆向量\n * @returns 克隆结果\n */\n Vector2.prototype.clone = function () {\n return new Vector2(this.x, this.y);\n };\n /**\n * 根据下标设置元素值\n * @param index - 下标值\n * @param value - 数字\n * @returns 向量\n */\n Vector2.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取值\n * @param index - 下标\n * @returns 值\n */\n Vector2.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 向量 | 数字\n * @returns 向量\n */\n Vector2.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 相加结果\n */\n Vector2.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n return this;\n };\n /**\n * 向量相减\n * @param right - 向量 | 数字\n * @returns 相减结果\n */\n Vector2.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 相减结果\n */\n Vector2.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 向量 | 数字\n * @returns 相乘结果\n */\n Vector2.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 相乘结果\n */\n Vector2.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n return this;\n };\n /**\n * 向量相除\n * @param right - 向量 | 数字\n * @returns 相除结果\n */\n Vector2.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector2.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector2.prototype.sum = function () {\n return this.x + this.y;\n };\n /**\n * 向量求最小值\n * @param v - 向量\n * @returns 最小值\n */\n Vector2.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量\n * @returns 最大值\n */\n Vector2.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 极小值\n * @param max - 极大值\n * @returns 向量\n */\n Vector2.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector2.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector2.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n return this;\n };\n /**\n * 向量取四舍五入\n * @returns 四舍五入结果\n */\n Vector2.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector2.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n return this;\n };\n /**\n * 向量取反\n * @returns 取反结果\n */\n Vector2.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n };\n /**\n * 向量长度\n * @returns 求值结果\n */\n Vector2.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n };\n /**\n * 向量长度平方\n * @returns 求值结果\n */\n Vector2.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y;\n };\n /**\n * 向量归一化\n * @returns 归一化结果\n */\n Vector2.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector2.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量线性插值\n * @param other - 向量\n * @param alpha - 插值比\n * @returns 计算结果\n */\n Vector2.prototype.lerp = function (other, alpha) {\n this.x += (other.x - this.x) * alpha;\n this.y += (other.y - this.y) * alpha;\n return this;\n };\n /**\n * 向量线性插值\n * @param v1 - 向量\n * @param v2 - 向量\n * @param alpha - 插值比\n * @returns 计算结果\n */\n Vector2.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n return this;\n };\n /**\n * 向量点乘\n * @param v - 向量\n * @returns 点乘结果\n */\n Vector2.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y;\n };\n /**\n * 向量叉乘\n * @param v - 向量\n * @returns 叉乘结果\n */\n Vector2.prototype.cross = function (v) {\n return this.x * v.y - this.y * v.x;\n };\n /**\n * 点距离\n * @param v - 点\n * @returns 距离\n */\n Vector2.prototype.distance = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n /**\n * 点距离平方\n * @param v - 点\n * @returns 距离平方\n */\n Vector2.prototype.distanceSquared = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n return dx * dx + dy * dy;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector2.prototype.equals = function (v) {\n return this.x === v.x && this.y === v.y;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector2.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y;\n return Math.abs(x) <= eps && Math.abs(y) <= eps;\n };\n /**\n * 向量转数组\n * @returns 数组\n */\n Vector2.prototype.toArray = function () {\n return [this.x, this.y];\n };\n Vector2.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n };\n /**\n * 随机生成向量\n * @returns 向量\n */\n Vector2.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n return this;\n };\n /**\n * 通过标量创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector2.fromNumber = function (num) {\n return new Vector2().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector2.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector2().setFromArray(array, offset);\n };\n /**\n * 二维向量的常量\n */\n Vector2.ONE = new Vector2(1.0, 1.0);\n Vector2.ZERO = new Vector2(0.0, 0.0);\n return Vector2;\n}());\n","import { NumberEpsilon } from './utils';\nimport { Vector2 } from './vector2';\n/**\n * 三维向量\n */\nexport var Vector3 = /** @class */ (function () {\n /**\n * 构造函数,默认值为零向量\n * @param [x=0]\n * @param [y=0]\n * @param [z=0]\n */\n function Vector3(x, y, z) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n this.x = x;\n this.y = y;\n this.z = z;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @param z - z 轴分量\n * @returns 向量\n */\n Vector3.prototype.set = function (x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector3.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n return this;\n };\n /**\n * 通过标量数值设置向量\n * @param num - 数值\n * @returns 向量\n */\n Vector3.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n this.z = num;\n return this;\n };\n /**\n * 通过数组设置向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector3.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param v - 要拷贝的对象\n * @returns 向量\n */\n Vector3.prototype.copyFrom = function (v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n };\n /**\n * 克隆向量\n * @returns 向量\n */\n Vector3.prototype.clone = function () {\n return new Vector3(this.x, this.y, this.z);\n };\n /**\n * 根据下标设置向量分量\n * @param index - 下标值\n * @param value - 数字\n * @returns 向量\n */\n Vector3.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取向量分量\n * @param index - 下标\n * @returns\n */\n Vector3.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n case 2: return this.z;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 向量 | 数字\n * @returns 相加结果\n */\n Vector3.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n this.z += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n this.z += right[2];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n this.z += right.z;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 相加结果\n */\n Vector3.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n return this;\n };\n /**\n * 向量乘比例后相加\n * @param right - 向量\n * @param s - 比例\n * @returns 相加结果\n */\n Vector3.prototype.addScaledVector = function (right, s) {\n this.x += right.x * s;\n this.y += right.y * s;\n this.z += right.z * s;\n return this;\n };\n /**\n * 向量相减\n * @param right - 向量 | 数字\n * @returns 相减\n */\n Vector3.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n this.z -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n this.z -= right[2];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n this.z -= right.z;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 相减结果\n */\n Vector3.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n this.z = left.z - right.z;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 向量 | 数字\n * @returns 相乘结果\n */\n Vector3.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n this.z *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n this.z *= right[2];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n this.z *= right.z;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 相乘结果\n */\n Vector3.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n this.z = left.z * right.z;\n return this;\n };\n /**\n * 向量相除\n * @param right - 向量 | 数字\n * @returns 相除结果\n */\n Vector3.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n this.z /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n this.z /= right[2];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n this.z /= right.z;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector3.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector3.prototype.sum = function () {\n return this.x + this.y + this.z;\n };\n /**\n * 向量求最小值\n * @param v - 向量或数值\n * @returns 求值结果\n */\n Vector3.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n this.z = Math.min(this.z, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量或数值\n * @returns 求值结果\n */\n Vector3.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n this.z = Math.max(this.z, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 向量\n * @param max - 向量\n * @returns 求值结果\n */\n Vector3.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector3.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector3.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n return this;\n };\n /**\n * 向量四舍五入\n * @returns 计算结果\n */\n Vector3.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector3.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n this.z = Math.abs(this.z);\n return this;\n };\n /**\n * 向量取反\n * @returns 向量\n */\n Vector3.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 向量长度\n * @returns 长度\n */\n Vector3.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n };\n /**\n * 向量长度平方\n * @returns 长度平方\n */\n Vector3.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n };\n /**\n * 向量归一化\n * @returns 向量\n */\n Vector3.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector3.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量间求线性插值\n * @param other - 向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector3.prototype.lerp = function (other, alpha) {\n this.x += (other.x - this.x) * alpha;\n this.y += (other.y - this.y) * alpha;\n this.z += (other.z - this.z) * alpha;\n return this;\n };\n /**\n * 向量间求线性插值\n * @param v1 - 第一个向量\n * @param v2 - 第二个向量\n * @param alpha - 插值比例\n * @returns 求值结果\n */\n Vector3.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n return this;\n };\n /**\n * 向量求点积,点积为零表示两向量垂直\n * @param v - 向量\n * @returns 点积结果\n */\n Vector3.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n };\n /**\n * 向量求叉积\n * @param right - 向量\n * @returns 叉积结果\n */\n Vector3.prototype.cross = function (right) {\n return this.crossVectors(this, right);\n };\n /**\n * 向量(a 与 b)求叉积\n * @param left - 向量\n * @param right - 向量\n * @returns 叉积结果\n */\n Vector3.prototype.crossVectors = function (left, right) {\n var ax = left.x, ay = left.y, az = left.z;\n var bx = right.x, by = right.y, bz = right.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n };\n /**\n * 向量反射\n * @param normal - 法线\n * @returns 反射结果\n */\n Vector3.prototype.reflect = function (normal) {\n // reflect incident vector off plane orthogonal to normal\n // normal is assumed to have unit length\n return this.subtract(normal.clone().multiply(2 * this.dot(normal)));\n };\n /**\n * 计算向量距离\n * @param v - 向量\n * @returns 距离\n */\n Vector3.prototype.distance = function (v) {\n return Math.sqrt(this.distanceSquared(v));\n };\n /**\n * 计算向量距离平方\n * @param v - 向量\n * @returns 距离平方\n */\n Vector3.prototype.distanceSquared = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n var dz = this.z - v.z;\n return dx * dx + dy * dy + dz * dz;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector3.prototype.equals = function (v) {\n return v.x === this.x && v.y === this.y && v.z === this.z;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector3.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z;\n return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps;\n };\n /**\n * 向量转数组\n * @param array - 目标保存对象\n * @returns 数组\n */\n Vector3.prototype.toArray = function () {\n return [this.x, this.y, this.z];\n };\n Vector3.prototype.toVector2 = function () {\n return new Vector2(this.x, this.y);\n };\n Vector3.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n };\n /**\n * 获取随机向量\n * @returns\n */\n Vector3.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n return this;\n };\n /**\n * 用欧拉角旋转向量\n * @param euler - 欧拉角\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 旋转结果\n */\n Vector3.prototype.applyEuler = function (euler, out) {\n return euler.rotateVector3(this, out);\n };\n /**\n * 用四元数旋转向量\n * @param q - 四元数\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 旋转结果\n */\n Vector3.prototype.applyQuaternion = function (q, out) {\n return q.rotateVector3(this, out);\n };\n /**\n * 用矩阵变换点\n * @param m - 变换矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 结果点\n */\n Vector3.prototype.applyMatrix = function (m, out) {\n return m.transformPoint(this, out);\n };\n /**\n * 用法向量矩阵变换法向量\n * @param m - 法向量矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 向量\n */\n Vector3.prototype.applyNormalMatrix = function (m, out) {\n return m.transformNormal(this, out);\n };\n /**\n * 用投影矩阵变换点\n * @param m - 投影矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 结果点\n */\n Vector3.prototype.applyProjectionMatrix = function (m, out) {\n return m.projectPoint(this, out);\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector3.fromNumber = function (num) {\n return new Vector3().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector3.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector3().setFromArray(array, offset);\n };\n /**\n * 三维向量的常量\n */\n Vector3.X = new Vector3(1.0, 0.0, 0.0);\n Vector3.Y = new Vector3(0.0, 1.0, 0.0);\n Vector3.Z = new Vector3(0.0, 0.0, 1.0);\n Vector3.ONE = new Vector3(1.0, 1.0, 1.0);\n Vector3.ZERO = new Vector3(0.0, 0.0, 0.0);\n return Vector3;\n}());\n","import { clamp } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四元数\n */\nexport var Quaternion = /** @class */ (function () {\n /**\n * 构造函数\n * @param [x=0] - x 分量\n * @param [y=0] - y 分量\n * @param [z=0] - z 分量\n * @param [w=1] - w 分量\n */\n function Quaternion(x, y, z, w) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (w === void 0) { w = 1; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n /**\n * 四元数设置\n * @param x - x 分量\n * @param y - y 分量\n * @param z - z 分量\n * @param w - w 分量\n * @returns 四元数\n */\n Quaternion.prototype.set = function (x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n };\n /**\n * 通过欧拉角设置四元数\n * @param euler - 欧拉角\n * @returns\n */\n Quaternion.prototype.setFromEuler = function (euler) {\n euler.toQuaternion(this);\n return this;\n };\n /**\n * 通过旋转轴和旋转角度设置四元数\n * @param axis - 旋转轴\n * @param angle - 旋转角度(弧度)\n * @returns\n */\n Quaternion.prototype.setFromAxisAngle = function (axis, angle) {\n var halfAngle = angle / 2;\n var s = Math.sin(halfAngle);\n var v = Quaternion.tempVec0;\n v.copyFrom(axis).normalize();\n this.x = v.x * s;\n this.y = v.y * s;\n this.z = v.z * s;\n this.w = Math.cos(halfAngle);\n return this;\n };\n /**\n * 通过数组设置四元数\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Quaternion.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n this.w = array[offset + 3];\n return this;\n };\n /**\n * 通过矩阵设置四元数\n * @param m - 矩阵\n * @returns\n */\n Quaternion.prototype.setFromRotationMatrix = function (m) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n var te = m.elements;\n var m11 = te[0];\n var m12 = te[4];\n var m13 = te[8];\n var m21 = te[1];\n var m22 = te[5];\n var m23 = te[9];\n var m31 = te[2];\n var m32 = te[6];\n var m33 = te[10];\n var trace = m11 + m22 + m33;\n if (trace > 0) {\n var s = 0.5 / Math.sqrt(trace + 1.0);\n this.w = 0.25 / s;\n this.x = (m32 - m23) * s;\n this.y = (m13 - m31) * s;\n this.z = (m21 - m12) * s;\n }\n else if (m11 > m22 && m11 > m33) {\n var s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n this.w = (m32 - m23) / s;\n this.x = 0.25 * s;\n this.y = (m12 + m21) / s;\n this.z = (m13 + m31) / s;\n this.negate();\n }\n else if (m22 > m33) {\n var s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n this.w = (m13 - m31) / s;\n this.x = (m12 + m21) / s;\n this.y = 0.25 * s;\n this.z = (m23 + m32) / s;\n this.negate();\n }\n else {\n var s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n this.w = (m21 - m12) / s;\n this.x = (m13 + m31) / s;\n this.y = (m23 + m32) / s;\n this.z = 0.25 * s;\n this.negate();\n }\n // 兼容原先数学库\n return this;\n };\n /**\n * 通过开始和结束向量设置四元数\n * @param from - 开始向量\n * @param to - 结束向量\n * @returns\n */\n Quaternion.prototype.setFromUnitVectors = function (from, to) {\n // assumes direction vectors vFrom and vTo are normalized\n var r = from.dot(to) + 1;\n if (r < Number.EPSILON) {\n r = 0;\n if (Math.abs(from.x) > Math.abs(from.z)) {\n this.x = -from.y;\n this.y = from.x;\n this.z = 0;\n this.w = r;\n }\n else {\n this.x = 0;\n this.y = -from.z;\n this.z = from.y;\n this.w = r;\n }\n }\n else {\n this.x = from.y * to.z - from.z * to.y;\n this.y = from.z * to.x - from.x * to.z;\n this.z = from.x * to.y - from.y * to.x;\n this.w = r;\n }\n return this.normalize();\n };\n /**\n * 四元数拷贝\n * @param quat - 拷贝目标四元数\n * @returns 拷贝四元数\n */\n Quaternion.prototype.copyFrom = function (quat) {\n this.x = quat.x;\n this.y = quat.y;\n this.z = quat.z;\n this.w = quat.w;\n return this;\n };\n /**\n * 四元数克隆\n * @returns 克隆结果\n */\n Quaternion.prototype.clone = function () {\n return new Quaternion(this.x, this.y, this.z, this.w);\n };\n /**\n * 四元数间的夹角计算\n * @param other - 其他四元数\n * @returns 夹角\n */\n Quaternion.prototype.angleTo = function (other) {\n return 2 * Math.acos(Math.abs(clamp(this.dot(other), -1, 1)));\n };\n /**\n * 四元数向目标旋转\n * @param q - 四元数\n * @param step - 旋转弧度\n * @returns 目标四元数\n */\n Quaternion.prototype.rotateTowards = function (q, step) {\n var angle = this.angleTo(q);\n if (angle === 0) {\n return this;\n }\n var t = Math.min(1, step / angle);\n this.slerp(q, t);\n return this;\n };\n /**\n * 四元数单位化\n * @returns 单位四元数\n */\n Quaternion.prototype.identity = function () {\n return this.set(0, 0, 0, 1);\n };\n /**\n * 四元数求逆\n * @returns 四元数的逆\n */\n Quaternion.prototype.invert = function () {\n return this.conjugate();\n };\n /**\n * 四元数取负\n * @returns 负四元数\n */\n Quaternion.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n };\n /**\n * 四元数求共轭值\n * @returns 四元数的共轭值\n */\n Quaternion.prototype.conjugate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 四元数点乘结果\n * @param v\n * @return\n */\n Quaternion.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n };\n /**\n * 四元数的模平方\n * @return\n */\n Quaternion.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n };\n /**\n * 四元数的欧式长度\n * @returns 长度\n */\n Quaternion.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n };\n /**\n * 四元数归一化\n * @returns 归一化值\n */\n Quaternion.prototype.normalize = function () {\n var l = this.length();\n if (l === 0) {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 1;\n }\n else {\n l = 1 / l;\n this.x = this.x * l;\n this.y = this.y * l;\n this.z = this.z * l;\n this.w = this.w * l;\n }\n return this;\n };\n /**\n * 四元数右乘\n * @param right - 右乘的四元数\n * @returns\n */\n Quaternion.prototype.multiply = function (right) {\n return this.multiplyQuaternions(this, right);\n };\n /**\n * 四元数左乘\n * @param left - 左乘的四元数\n * @returns\n */\n Quaternion.prototype.premultiply = function (left) {\n return this.multiplyQuaternions(left, this);\n };\n /**\n * 四元数乘法\n * @param left - 四元数\n * @param right - 四元数\n * @returns 四元数\n */\n Quaternion.prototype.multiplyQuaternions = function (left, right) {\n // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n var qax = left.x;\n var qay = left.y;\n var qaz = left.z;\n var qaw = left.w;\n var qbx = right.x;\n var qby = right.y;\n var qbz = right.z;\n var qbw = right.w;\n this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n return this;\n };\n /**\n * 四元数线性插值\n * @see http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n * @param other - 四元数\n * @param t - 插值比\n * @returns 插值结果\n */\n Quaternion.prototype.slerp = function (other, t) {\n var _a;\n if (t === 0) {\n return this;\n }\n if (t === 1) {\n return this.copyFrom(other);\n }\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, w = _a.w;\n var cosHalfTheta = w * other.w + x * other.x + y * other.y + z * other.z;\n if (cosHalfTheta < 0) {\n this.w = -other.w;\n this.x = -other.x;\n this.y = -other.y;\n this.z = -other.z;\n cosHalfTheta = -cosHalfTheta;\n }\n else {\n this.copyFrom(other);\n }\n if (cosHalfTheta >= 1.0) {\n this.w = w;\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n if (sqrSinHalfTheta <= Number.EPSILON) {\n var s = 1 - t;\n this.w = s * w + t * this.w;\n this.x = s * x + t * this.x;\n this.y = s * y + t * this.y;\n this.z = s * z + t * this.z;\n this.normalize();\n return this;\n }\n var sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n var halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n var ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;\n var ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this.w = (w * ratioA + this.w * ratioB);\n this.x = (x * ratioA + this.x * ratioB);\n this.y = (y * ratioA + this.y * ratioB);\n this.z = (z * ratioA + this.z * ratioB);\n return this;\n };\n /**\n * 两个四元数的线性插值\n * @param qa - 四元数\n * @param qb - 四元数\n * @param t - 插值比\n */\n Quaternion.prototype.slerpQuaternions = function (qa, qb, t) {\n this.copyFrom(qa).slerp(qb, t);\n };\n /**\n * 通过四元数旋转向量\n * @param v - 待旋转向量\n * @param [out] - 旋转结果,如果没有传入直接覆盖输入值\n * @returns\n */\n Quaternion.prototype.rotateVector3 = function (v, out) {\n var _a;\n var qx = (_a = this, _a.x), qy = _a.y, qz = _a.z, qw = _a.w;\n var vx = v.x, vy = v.y, vz = v.z;\n var ix = qw * vx + qy * vz - qz * vy;\n var iy = qw * vy + qz * vx - qx * vz;\n var iz = qw * vz + qx * vy - qy * vx;\n var iw = -qx * vx - qy * vy - qz * vz;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n res.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n res.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return res;\n };\n /**\n * 四元数判等\n * @param quaternion - 四元数\n * @returns 判等结果\n */\n Quaternion.prototype.equals = function (quaternion) {\n return quaternion.x === this.x\n && quaternion.y === this.y\n && quaternion.z === this.z\n && quaternion.w === this.w;\n };\n /**\n * 四元数保存为数组\n * @returns\n */\n Quaternion.prototype.toArray = function () {\n return [this.x, this.y, this.z, this.w];\n };\n /**\n * 四元数转四维向量数组\n * @param vec - 目标保存对象\n * @returns 保存结果\n */\n Quaternion.prototype.toVector4 = function (vec) {\n return vec.set(this.x, this.y, this.z, this.w);\n };\n /**\n * 四元数转欧拉角\n * @param euler - 目标欧拉角\n * @returns 欧拉角\n */\n Quaternion.prototype.toEuler = function (euler) {\n return euler.setFromQuaternion(this);\n };\n /**\n * 四元数转矩阵\n * @param mat - 目标矩阵\n * @returns\n */\n Quaternion.prototype.toMatrix4 = function (mat) {\n return mat.compose(Vector3.ZERO, this, Vector3.ONE);\n };\n /**\n * 通过欧拉角创建四元数\n * @param euler - 欧拉角\n * @returns 四元数\n */\n Quaternion.fromEuler = function (euler) {\n return new Quaternion().setFromEuler(euler);\n };\n /**\n * 通过旋转轴和旋转角度创建四元数\n * @param axis - 旋转轴\n * @param angle - 旋转角(弧度值)\n * @returns 四元数\n */\n Quaternion.fromAxisAngle = function (axis, angle) {\n return new Quaternion().setFromAxisAngle(axis, angle);\n };\n /**\n * 通过数组获取四元数\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 四元数\n */\n Quaternion.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Quaternion().setFromArray(array, offset);\n };\n /**\n * 通过旋转矩阵创建四元数\n * @param m - 旋转矩阵\n * @returns 四元数\n */\n Quaternion.fromRotationMatrix = function (m) {\n return new Quaternion().setFromRotationMatrix(m);\n };\n /**\n * 通过开始和结束向量创建四元数\n * @param from - 开始向量\n * @param to - 结束向量\n * @returns\n */\n Quaternion.fromUnitVectors = function (from, to) {\n return new Quaternion().setFromUnitVectors(from, to);\n };\n Quaternion.tempVec0 = new Vector3();\n return Quaternion;\n}());\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { Vector3 } from './vector3';\nimport { isEqual } from './utils';\nimport { Quaternion } from './quaternion';\n/**\n * 四阶矩阵(列优先矩阵)\n */\nexport var Matrix4 = /** @class */ (function () {\n /**\n * 构造函数,初始值为单位矩阵\n * @param [m11=1] - 第 1 行,第 1 列\n * @param [m21=0] - 第 2 行,第 1 列\n * @param [m31=0] - 第 3 行,第 1 列\n * @param [m41=0] - 第 4 行,第 1 列\n * @param [m12=0] - 第 1 行,第 2 列\n * @param [m22=1] - 第 2 行,第 2 列\n * @param [m32=0] - 第 3 行,第 2 列\n * @param [m42=0] - 第 4 行,第 2 列\n * @param [m13=0] - 第 1 行,第 3 列\n * @param [m23=0] - 第 2 行,第 3 列\n * @param [m33=1] - 第 3 行,第 3 列\n * @param [m43=0] - 第 4 行,第 3 列\n * @param [m14=0] - 第 1 行,第 4 列\n * @param [m24=0] - 第 2 行,第 4 列\n * @param [m34=0] - 第 3 行,第 4 列\n * @param [m44=1] - 第 4 行,第 4 列\n */\n function Matrix4(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44) {\n if (m11 === void 0) { m11 = 1; }\n if (m21 === void 0) { m21 = 0; }\n if (m31 === void 0) { m31 = 0; }\n if (m41 === void 0) { m41 = 0; }\n if (m12 === void 0) { m12 = 0; }\n if (m22 === void 0) { m22 = 1; }\n if (m32 === void 0) { m32 = 0; }\n if (m42 === void 0) { m42 = 0; }\n if (m13 === void 0) { m13 = 0; }\n if (m23 === void 0) { m23 = 0; }\n if (m33 === void 0) { m33 = 1; }\n if (m43 === void 0) { m43 = 0; }\n if (m14 === void 0) { m14 = 0; }\n if (m24 === void 0) { m24 = 0; }\n if (m34 === void 0) { m34 = 0; }\n if (m44 === void 0) { m44 = 1; }\n this.elements = [\n m11, m21, m31, m41,\n m12, m22, m32, m42,\n m13, m23, m33, m43,\n m14, m24, m34, m44,\n ];\n }\n /**\n * 设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m21 - 第 2 行,第 1 列\n * @param m31 - 第 3 行,第 1 列\n * @param m41 - 第 4 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m22 - 第 2 行,第 2 列\n * @param m32 - 第 3 行,第 2 列\n * @param m42 - 第 4 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m23 - 第 2 行,第 3 列\n * @param m33 - 第 3 行,第 3 列\n * @param m43 - 第 4 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m24 - 第 2 行,第 4 列\n * @param m34 - 第 3 行,第 4 列\n * @param m44 - 第 4 行,第 4 列\n * @returns 矩阵\n */\n Matrix4.prototype.set = function (m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44) {\n var e = this.elements;\n e[0] = m11;\n e[1] = m21;\n e[2] = m31;\n e[3] = m41;\n e[4] = m12;\n e[5] = m22;\n e[6] = m32;\n e[7] = m42;\n e[8] = m13;\n e[9] = m23;\n e[10] = m33;\n e[11] = m43;\n e[12] = m14;\n e[13] = m24;\n e[14] = m34;\n e[15] = m44;\n return this;\n };\n /**\n * 通过行优先数据设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m24 - 第 2 行,第 4 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @param m34 - 第 3 行,第 4 列\n * @param m41 - 第 4 行,第 1 列\n * @param m42 - 第 4 行,第 2 列\n * @param m43 - 第 4 行,第 3 列\n * @param m44 - 第 4 行,第 4 列\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRowMajorData = function (m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n var e = this.elements;\n e[0] = m11;\n e[4] = m12;\n e[8] = m13;\n e[12] = m14;\n e[1] = m21;\n e[5] = m22;\n e[9] = m23;\n e[13] = m24;\n e[2] = m31;\n e[6] = m32;\n e[10] = m33;\n e[14] = m34;\n e[3] = m41;\n e[7] = m42;\n e[11] = m43;\n e[15] = m44;\n return this;\n };\n /**\n * 通过四个列向量设置矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @param c4 - 第四列\n * @returns 矩阵\n */\n Matrix4.prototype.setFromColumnVectors = function (c1, c2, c3, c4) {\n return this.set(c1.x, c1.y, c1.z, c1.w, c2.x, c2.y, c2.z, c2.w, c3.x, c3.y, c3.z, c3.w, c4.x, c4.y, c4.z, c4.w);\n };\n /**\n * 通过三维矩阵设置矩阵\n * @param m - 三维矩阵\n * @returns 设置结果\n */\n Matrix4.prototype.setFromMatrix3 = function (m) {\n var me = m.elements;\n this.set(me[0], me[1], me[2], 0, me[3], me[4], me[5], 0, me[6], me[7], me[8], 0, 0, 0, 0, 1);\n return this;\n };\n /**\n * 通过数组设置矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix4.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n for (var i = 0; i < 16; i++) {\n this.elements[i] = array[offset + i];\n }\n return this;\n };\n /**\n * 通过缩放设置矩阵\n * @param x - x 方向缩放\n * @param y - y 方向缩放\n * @param z - z 方向缩放\n * @returns 缩放矩阵\n */\n Matrix4.prototype.setFromScale = function (x, y, z) {\n return this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n };\n /**\n * 通过平移设置矩阵\n * @param x - x 方向平移\n * @param y - y 方向平移\n * @param z - z 方向平移\n * @returns 平移矩阵\n */\n Matrix4.prototype.setFromTranslation = function (x, y, z) {\n return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1);\n };\n /**\n * 通过 x 轴旋转角度设置矩阵\n * @param theta - x 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationX = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过 y 轴旋转角度设置矩阵\n * @param theta - y 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationY = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过 z 轴旋转角度设置矩阵\n * @param theta - z 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationZ = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 根据三维旋转轴与弧度设置矩阵\n * @param axis - 三维旋转轴\n * @param angle - 旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationAxis = function (axis, angle) {\n // Based on http://www.gamedev.net/reference/articles/article1199.asp\n var v = Matrix4.tempVec0;\n v.copyFrom(axis).normalize();\n var c = Math.cos(angle);\n var s = Math.sin(angle);\n var t = 1 - c;\n var x = v.x, y = v.y, z = v.z;\n var tx = t * x;\n var ty = t * y;\n return this.set(tx * x + c, tx * y + s * z, tx * z - s * y, 0, tx * y - s * z, ty * y + c, ty * z + s * x, 0, tx * z + s * y, ty * z - s * x, t * z * z + c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过欧拉角设置矩阵\n * @param euler - 欧拉角\n * @returns 矩阵\n */\n Matrix4.prototype.setFromEuler = function (euler) {\n euler.toMatrix4(this);\n return this;\n };\n /**\n * 通过四元数设置矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix4.prototype.setFromQuaternion = function (quat) {\n return this.compose(Vector3.ZERO, quat, Vector3.ONE);\n };\n /**\n * 通过倾斜参数设置矩阵\n * @param x - x 方向倾斜分量\n * @param y - y 方向倾斜分量\n * @param z - z 方向倾斜分量\n * @returns 倾斜矩阵\n */\n Matrix4.prototype.setFromShear = function (x, y, z) {\n return this.set(1, x, x, 0, y, 1, y, 0, z, z, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 通过基轴设置矩阵\n * @param xAxis - x 轴\n * @param yAxis - y 轴\n * @param zAxis - z 轴\n * @returns 倾斜矩阵\n */\n Matrix4.prototype.setFromBasis = function (xAxis, yAxis, zAxis) {\n return this.set(xAxis.x, xAxis.y, xAxis.z, 0, yAxis.x, yAxis.y, yAxis.z, 0, zAxis.x, zAxis.y, zAxis.z, 0, 0, 0, 0, 1);\n };\n /**\n * 矩阵清零\n * @returns 零矩阵\n */\n Matrix4.prototype.setZero = function () {\n for (var i = 0; i < 16; i++) {\n this.elements[i] = 0;\n }\n return this;\n };\n /**\n * 矩阵单位化\n * @returns 单位矩阵\n */\n Matrix4.prototype.identity = function () {\n return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 单位阵判断\n * @returns 判断结果\n */\n Matrix4.prototype.isIdentity = function () {\n var e = this.elements;\n return e[0] === 1 && e[4] === 0 && e[8] === 0 && e[12] === 0\n && e[1] === 0 && e[5] === 1 && e[9] === 0 && e[13] === 0\n && e[2] === 0 && e[6] === 0 && e[10] === 1 && e[14] === 0\n && e[3] === 0 && e[7] === 0 && e[11] === 0 && e[15] === 1;\n };\n /**\n * 矩阵克隆\n * @returns 克隆结果\n */\n Matrix4.prototype.clone = function () {\n var e = this.elements;\n return new Matrix4(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8], e[9], e[10], e[11], e[12], e[13], e[14], e[15]);\n };\n /**\n * 矩阵复制\n * @param m - 复制对象\n * @returns 复制结果\n */\n Matrix4.prototype.copyFrom = function (m) {\n this.elements = __spreadArray([], __read(m.elements), false);\n return this;\n };\n /**\n * 得到列向量\n * @param i - 列向量索引,从 0 开始\n * @param v\n * @returns 矩阵\n */\n Matrix4.prototype.getColumnVector = function (i, v) {\n return v.set(this.elements[i * 4], this.elements[i * 4 + 1], this.elements[i * 4 + 2], this.elements[i * 4 + 3]);\n };\n /**\n * 设置相机矩阵\n * @param eye - 相机位置\n * @param target - 目标位置\n * @param up - 相机方向\n * @returns 矩阵\n */\n Matrix4.prototype.lookAt = function (eye, target, up) {\n var vX = Matrix4.tempVec0;\n var vY = Matrix4.tempVec1;\n var vZ = Matrix4.tempVec2;\n vZ.subtractVectors(eye, target);\n vZ.normalize();\n vX.crossVectors(up, vZ);\n vX.normalize();\n vY.crossVectors(vZ, vX);\n var te = this.elements;\n te[0] = vX.x;\n te[1] = vY.x;\n te[2] = vZ.x;\n te[3] = 0;\n te[4] = vX.y;\n te[5] = vY.y;\n te[6] = vZ.y;\n te[7] = 0;\n te[8] = vX.z;\n te[9] = vY.z;\n te[10] = vZ.z;\n te[11] = 0;\n te[12] = -vX.dot(eye);\n te[13] = -vY.dot(eye);\n te[14] = -vZ.dot(eye);\n te[15] = 1;\n return this;\n };\n /**\n * 矩阵乘比例后相加\n * @param right - 矩阵\n * @param s - 比例\n * @returns 相加结果\n */\n Matrix4.prototype.addScaledMatrix = function (right, s) {\n var te = this.elements;\n var re = right.elements;\n for (var i = 0; i < 16; i++) {\n te[i] += re[i] * s;\n }\n return this;\n };\n /**\n * 矩阵右乘\n * @param right - 右侧矩阵或数值\n * @returns 右乘结果\n */\n Matrix4.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n for (var i = 0; i < 16; i++) {\n this.elements[i] *= right;\n }\n return this;\n }\n else {\n return this.multiplyMatrices(this, right);\n }\n };\n /**\n * 矩阵左乘\n * @param left - 左侧矩阵\n * @returns 左乘结果\n */\n Matrix4.prototype.premultiply = function (left) {\n return this.multiplyMatrices(left, this);\n };\n /**\n * 矩阵相乘\n * @param left - 矩阵\n * @param right - 矩阵\n * @returns 相乘结果\n */\n Matrix4.prototype.multiplyMatrices = function (left, right) {\n var ae = left.elements;\n var be = right.elements;\n var te = this.elements;\n var a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n var a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n var a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n var a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n var b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n var b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n var b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n var b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n return this;\n };\n /**\n * 矩阵缩放\n * @param s - 缩放比例\n * @returns 缩放结果\n */\n Matrix4.prototype.multiplyScalar = function (s) {\n var e = this.elements;\n e[0] *= s;\n e[4] *= s;\n e[8] *= s;\n e[12] *= s;\n e[1] *= s;\n e[5] *= s;\n e[9] *= s;\n e[13] *= s;\n e[2] *= s;\n e[6] *= s;\n e[10] *= s;\n e[14] *= s;\n e[3] *= s;\n e[7] *= s;\n e[11] *= s;\n e[15] *= s;\n return this;\n };\n /**\n * 矩阵求行列式值\n * @returns 行列式值\n */\n Matrix4.prototype.determinant = function () {\n var e = this.elements;\n var m11 = e[0], m12 = e[4], m13 = e[8], m14 = e[12];\n var m21 = e[1], m22 = e[5], m23 = e[9], m24 = e[13];\n var m31 = e[2], m32 = e[6], m33 = e[10], m34 = e[14];\n var m41 = e[3], m42 = e[7], m43 = e[11], m44 = e[15];\n return (m41 * (+m14 * m23 * m32\n - m13 * m24 * m32\n - m14 * m22 * m33\n + m12 * m24 * m33\n + m13 * m22 * m34\n - m12 * m23 * m34) +\n m42 * (+m11 * m23 * m34\n - m11 * m24 * m33\n + m14 * m21 * m33\n - m13 * m21 * m34\n + m13 * m24 * m31\n - m14 * m23 * m31) +\n m43 * (+m11 * m24 * m32\n - m11 * m22 * m34\n - m14 * m21 * m32\n + m12 * m21 * m34\n + m14 * m22 * m31\n - m12 * m24 * m31) +\n m44 * (-m13 * m22 * m31\n - m11 * m23 * m32\n + m11 * m22 * m33\n + m13 * m21 * m32\n - m12 * m21 * m33\n + m12 * m23 * m31));\n };\n /**\n * 矩阵转置\n * @returns 转置结果\n */\n Matrix4.prototype.transpose = function () {\n var e = this.elements;\n var t;\n t = e[1];\n e[1] = e[4];\n e[4] = t;\n t = e[2];\n e[2] = e[8];\n e[8] = t;\n t = e[3];\n e[3] = e[12];\n e[12] = t;\n //\n t = e[6];\n e[6] = e[9];\n e[9] = t;\n t = e[7];\n e[7] = e[13];\n e[13] = t;\n t = e[11];\n e[11] = e[14];\n e[14] = t;\n return this;\n };\n /**\n * 矩阵求逆\n * @returns 逆矩阵\n */\n Matrix4.prototype.invert = function () {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n var e = this.elements;\n var m11 = e[0], m21 = e[1], m31 = e[2], m41 = e[3];\n var m12 = e[4], m22 = e[5], m32 = e[6], m42 = e[7];\n var m13 = e[8], m23 = e[9], m33 = e[10], m43 = e[11];\n var m14 = e[12], m24 = e[13], m34 = e[14], m44 = e[15];\n var t11 = m23 * m34 * m42 - m24 * m33 * m42 + m24 * m32 * m43 - m22 * m34 * m43 - m23 * m32 * m44 + m22 * m33 * m44;\n var t12 = m14 * m33 * m42 - m13 * m34 * m42 - m14 * m32 * m43 + m12 * m34 * m43 + m13 * m32 * m44 - m12 * m33 * m44;\n var t13 = m13 * m24 * m42 - m14 * m23 * m42 + m14 * m22 * m43 - m12 * m24 * m43 - m13 * m22 * m44 + m12 * m23 * m44;\n var t14 = m14 * m23 * m32 - m13 * m24 * m32 - m14 * m22 * m33 + m12 * m24 * m33 + m13 * m22 * m34 - m12 * m23 * m34;\n var det = m11 * t11 + m21 * t12 + m31 * t13 + m41 * t14;\n if (det === 0) {\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n var detInv = 1 / det;\n e[0] = t11 * detInv;\n e[1] = (m24 * m33 * m41 - m23 * m34 * m41 - m24 * m31 * m43 + m21 * m34 * m43 + m23 * m31 * m44 - m21 * m33 * m44) * detInv;\n e[2] = (m22 * m34 * m41 - m24 * m32 * m41 + m24 * m31 * m42 - m21 * m34 * m42 - m22 * m31 * m44 + m21 * m32 * m44) * detInv;\n e[3] = (m23 * m32 * m41 - m22 * m33 * m41 - m23 * m31 * m42 + m21 * m33 * m42 + m22 * m31 * m43 - m21 * m32 * m43) * detInv;\n e[4] = t12 * detInv;\n e[5] = (m13 * m34 * m41 - m14 * m33 * m41 + m14 * m31 * m43 - m11 * m34 * m43 - m13 * m31 * m44 + m11 * m33 * m44) * detInv;\n e[6] = (m14 * m32 * m41 - m12 * m34 * m41 - m14 * m31 * m42 + m11 * m34 * m42 + m12 * m31 * m44 - m11 * m32 * m44) * detInv;\n e[7] = (m12 * m33 * m41 - m13 * m32 * m41 + m13 * m31 * m42 - m11 * m33 * m42 - m12 * m31 * m43 + m11 * m32 * m43) * detInv;\n e[8] = t13 * detInv;\n e[9] = (m14 * m23 * m41 - m13 * m24 * m41 - m14 * m21 * m43 + m11 * m24 * m43 + m13 * m21 * m44 - m11 * m23 * m44) * detInv;\n e[10] = (m12 * m24 * m41 - m14 * m22 * m41 + m14 * m21 * m42 - m11 * m24 * m42 - m12 * m21 * m44 + m11 * m22 * m44) * detInv;\n e[11] = (m13 * m22 * m41 - m12 * m23 * m41 - m13 * m21 * m42 + m11 * m23 * m42 + m12 * m21 * m43 - m11 * m22 * m43) * detInv;\n e[12] = t14 * detInv;\n e[13] = (m13 * m24 * m31 - m14 * m23 * m31 + m14 * m21 * m33 - m11 * m24 * m33 - m13 * m21 * m34 + m11 * m23 * m34) * detInv;\n e[14] = (m14 * m22 * m31 - m12 * m24 * m31 - m14 * m21 * m32 + m11 * m24 * m32 + m12 * m21 * m34 - m11 * m22 * m34) * detInv;\n e[15] = (m12 * m23 * m31 - m13 * m22 * m31 + m13 * m21 * m32 - m11 * m23 * m32 - m12 * m21 * m33 + m11 * m22 * m33) * detInv;\n return this;\n };\n /**\n * 提取基轴\n * @param xAxis - 提取的 x 轴\n * @param yAxis - 提取的 y 轴\n * @param zAxis - 提取的 z 轴\n * @returns\n */\n Matrix4.prototype.extractBasis = function (xAxis, yAxis, zAxis) {\n var te = this.elements;\n xAxis.set(te[0], te[1], te[2]);\n yAxis.set(te[4], te[5], te[6]);\n zAxis.set(te[8], te[9], te[10]);\n return this;\n };\n /**\n * 根据基础信息组装矩阵\n * @param translation - 位置信息\n * @param rotation - 旋转信息\n * @param scale - 缩放信息\n * @param [anchor] - 锚点信息\n * @returns 矩阵\n */\n Matrix4.prototype.compose = function (translation, rotation, scale, anchor) {\n if (anchor === void 0) { anchor = Vector3.ZERO; }\n var te = this.elements;\n var x = rotation.x, y = rotation.y, z = rotation.z, w = rotation.w;\n var l = -anchor.x;\n var m = -anchor.y;\n var n = -anchor.z;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = scale.x, sy = scale.y, sz = scale.z;\n te[0] = (1 - (yy + zz)) * sx;\n te[1] = (xy + wz) * sx;\n te[2] = (xz - wy) * sx;\n te[3] = 0;\n te[4] = (xy - wz) * sy;\n te[5] = (1 - (xx + zz)) * sy;\n te[6] = (yz + wx) * sy;\n te[7] = 0;\n te[8] = (xz + wy) * sz;\n te[9] = (yz - wx) * sz;\n te[10] = (1 - (xx + yy)) * sz;\n te[11] = 0;\n te[12] = l * te[0] + m * te[4] + n * te[8] - l + translation.x;\n te[13] = l * te[1] + m * te[5] + n * te[9] - m + translation.y;\n te[14] = l * te[2] + m * te[6] + n * te[10] - n + translation.z;\n return this;\n };\n /**\n * 矩阵拆分为基础信息\n * @param translation - 位置信息\n * @param rotation - 旋转信息\n * @param scale - 缩放信息\n * @returns 矩阵\n */\n Matrix4.prototype.decompose = function (translation, rotation, scale) {\n var v = Matrix4.tempVec0;\n var te = this.elements;\n var sx = v.set(te[0], te[1], te[2]).length();\n var sy = v.set(te[4], te[5], te[6]).length();\n var sz = v.set(te[8], te[9], te[10]).length();\n // if determine is negative, we need to invert one scale\n var det = this.determinant();\n if (det < 0) {\n sx = -sx;\n }\n translation.x = te[12];\n translation.y = te[13];\n translation.z = te[14];\n // scale the rotation part\n var m = Matrix4.tempMat0;\n m.copyFrom(this);\n var invSX = 1 / sx;\n var invSY = 1 / sy;\n var invSZ = 1 / sz;\n m.elements[0] *= invSX;\n m.elements[1] *= invSX;\n m.elements[2] *= invSX;\n m.elements[4] *= invSY;\n m.elements[5] *= invSY;\n m.elements[6] *= invSY;\n m.elements[8] *= invSZ;\n m.elements[9] *= invSZ;\n m.elements[10] *= invSZ;\n rotation.setFromRotationMatrix(m);\n scale.x = sx;\n scale.y = sy;\n scale.z = sz;\n return this;\n };\n Matrix4.prototype.getTranslation = function (translation) {\n var te = this.elements;\n return translation.set(te[12], te[13], te[14]);\n };\n Matrix4.prototype.getScale = function (scale) {\n var te = this.elements;\n return scale.set(Math.hypot(te[0], te[1], te[2]), Math.hypot(te[4], te[5], te[6]), Math.hypot(te[8], te[9], te[10]));\n };\n /**\n * 获得矩阵分解的结果\n * @returns 分解的结果\n */\n Matrix4.prototype.getTransform = function () {\n var translation = new Vector3();\n var rotation = new Quaternion();\n var scale = new Vector3();\n this.decompose(translation, rotation, scale);\n return { translation: translation, rotation: rotation, scale: scale };\n };\n /**\n * 根据视窗信息设置正交相机投影矩阵\n * @param left - 视窗左平面位置\n * @param right - 视窗右平面位置\n * @param top - 视窗上平面位置\n * @param bottom - 视窗下平面位置\n * @param near - 视窗近平面位置\n * @param far - 视窗远平面位置\n * @returns 矩阵\n */\n Matrix4.prototype.orthographic = function (left, right, top, bottom, near, far) {\n var a = 1.0 / (right - left);\n var b = 1.0 / (top - bottom);\n var c = 1.0 / (far - near);\n var tx = -(right + left) * a;\n var ty = -(top + bottom) * b;\n var tz = -(far + near) * c;\n a *= 2.0;\n b *= 2.0;\n c *= -2.0;\n var te = this.elements;\n te[0] = a;\n te[1] = 0.0;\n te[2] = 0.0;\n te[3] = 0.0;\n //\n te[4] = 0.0;\n te[5] = b;\n te[6] = 0.0;\n te[7] = 0.0;\n //\n te[8] = 0.0;\n te[9] = 0.0;\n te[10] = c;\n te[11] = 0.0;\n //\n te[12] = tx;\n te[13] = ty;\n te[14] = tz;\n te[15] = 1.0;\n return this;\n };\n /**\n * 通过透视相机基础参数设置投影矩阵\n * @param fov - 视角(弧度)\n * @param aspect - 视窗比例\n * @param near - 近平面\n * @param far - 远平面\n * @param [reverse] - 视锥体长宽反转(3D这里反了?)\n * @returns 投影矩阵\n */\n Matrix4.prototype.perspective = function (fov, aspect, near, far, reverse) {\n var f = 1.0 / Math.tan(fov * 0.5);\n var nf = 1 / (near - far);\n var te = this.elements;\n te[0] = reverse ? f : f / aspect;\n te[1] = 0;\n te[2] = 0;\n te[3] = 0;\n //\n te[4] = 0;\n te[5] = reverse ? f * aspect : f;\n te[6] = 0;\n te[7] = 0;\n //\n te[8] = 0;\n te[9] = 0;\n te[10] = (far + near) * nf;\n te[11] = -1;\n //\n te[12] = 0;\n te[13] = 0;\n te[14] = 2 * far * near * nf;\n te[15] = 0;\n if (far === null || far === Infinity) {\n te[10] = -1;\n te[14] = -2 * near;\n }\n return this;\n };\n /**\n * 对点进行投影变换\n * @param v - 输入点\n * @param [out] - 输出点,如果没有就覆盖输入的数据\n * @returns 投影后的点\n */\n Matrix4.prototype.projectPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n var w = e[3] * x + e[7] * y + e[11] * z + e[15];\n return res.multiply(1 / w);\n };\n /**\n * 对点进行矩阵变换\n * @param v - 输入点\n * @param [out] - 输出点,如果没有就覆盖输入的数据\n * @returns 变换后的点\n */\n Matrix4.prototype.transformPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n return res;\n };\n /**\n * 对法向量进行矩阵变换\n * @param v - 输入法向量\n * @param [out] - 输出法向量,如果没有就覆盖输入的数据\n * @returns 变换后的法向量\n */\n Matrix4.prototype.transformNormal = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z;\n res.y = e[1] * x + e[5] * y + e[9] * z;\n res.z = e[2] * x + e[6] * y + e[10] * z;\n return res.normalize();\n };\n /**\n * 对四维向量进行矩阵变换\n * @param v - 输入向量\n * @param [out] - 输出向量,如果没有就覆盖输入的数据\n * @returns 变换后向量\n */\n Matrix4.prototype.transformVector4 = function (v, out) {\n var x = v.x, y = v.y, z = v.z, w = v.w;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n res.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n return res;\n };\n /**\n * 矩阵判等\n * @param matrix - 矩阵\n * @returns 判等结果\n */\n Matrix4.prototype.equals = function (matrix) {\n var te = this.elements;\n var me = matrix.elements;\n for (var i = 0; i < 16; i++) {\n if (!isEqual(te[i], me[i])) {\n return false;\n }\n }\n return true;\n };\n /**\n * 矩阵转数组\n * @returns\n */\n Matrix4.prototype.toArray = function () {\n return __spreadArray([], __read(this.elements), false);\n };\n Matrix4.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n var te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n array[offset + 9] = te[9];\n array[offset + 10] = te[10];\n array[offset + 11] = te[11];\n array[offset + 12] = te[12];\n array[offset + 13] = te[13];\n array[offset + 14] = te[14];\n array[offset + 15] = te[15];\n };\n /**\n * 创建单位阵\n * @returns 单位矩阵\n */\n Matrix4.fromIdentity = function () {\n return new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 创建相机矩阵\n * @param eye - 相机位置\n * @param target - 目标位置\n * @param up - 相机方向\n * @returns 矩阵\n */\n Matrix4.fromLookAt = function (eye, target, up) {\n return new Matrix4().lookAt(eye, target, up);\n };\n /**\n * 创建投影矩阵\n * @param fov - 视角\n * @param aspect - 视窗比例\n * @param near - 近平面\n * @param far - 远平面\n * @param [reverse] - 视锥体长宽反转\n * @returns 投影矩阵\n */\n Matrix4.fromPerspective = function (fov, aspect, near, far, reverse) {\n return new Matrix4().perspective(fov, aspect, near, far, reverse);\n };\n /**\n * 通过四个列向量创建矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @param c4 - 第四列\n * @returns\n */\n Matrix4.fromColumnVectors = function (c1, c2, c3, c4) {\n return new Matrix4().setFromColumnVectors(c1, c2, c3, c4);\n };\n /**\n * 通过三阶矩阵创建矩阵\n * @param m - 三阶矩阵\n * @returns 创建的矩阵\n */\n Matrix4.fromMatrix3 = function (m) {\n return new Matrix4().setFromMatrix3(m);\n };\n /**\n * 通过数组创建矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix4.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Matrix4().setFromArray(array, offset);\n };\n /**\n * 通过缩放创建矩阵\n * @param x - x 缩放\n * @param y - y 缩放\n * @param z - z 缩放\n * @returns 缩放结果\n */\n Matrix4.fromScale = function (x, y, z) {\n return new Matrix4().setFromScale(x, y, z);\n };\n /**\n * 通过平移创建矩阵\n * @param x - x 平移\n * @param y - y 平移\n * @param z - z 平移\n * @returns 平移结果\n */\n Matrix4.fromTranslation = function (x, y, z) {\n return new Matrix4().setFromTranslation(x, y, z);\n };\n /**\n * 通过 x 轴旋转创建矩阵\n * @param theta - x 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.fromRotationX = function (theta) {\n return new Matrix4().setFromRotationX(theta);\n };\n /**\n * 通过 y 轴旋转创建矩阵\n * @param theta - y 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.fromRotationY = function (theta) {\n return new Matrix4().setFromRotationY(theta);\n };\n /**\n * 通过 z 轴旋转创建矩阵\n * @param theta - z 轴旋转弧度\n * @returns\n */\n Matrix4.fromRotationZ = function (theta) {\n return new Matrix4().setFromRotationZ(theta);\n };\n /**\n * 通过旋转轴与旋转弧度创建矩阵\n * @param axis - 旋转轴\n * @param angle - 旋转弧度\n * @returns\n */\n Matrix4.fromRotationAxis = function (axis, angle) {\n return new Matrix4().setFromRotationAxis(axis, angle);\n };\n /**\n * 通过欧拉角创建矩阵\n * @param euler - 欧拉角\n * @returns\n */\n Matrix4.fromEuler = function (euler) {\n return new Matrix4().setFromEuler(euler);\n };\n /**\n * 通过四元数创建矩阵\n * @param quat - 四元数\n * @returns\n */\n Matrix4.fromQuaternion = function (quat) {\n return new Matrix4().setFromQuaternion(quat);\n };\n /**\n * 通过倾斜创建矩阵\n * @param x - x 方向倾斜分量\n * @param y - y 方向倾斜分量\n * @param z - z 方向倾斜分量\n * @returns 倾斜矩阵\n */\n Matrix4.fromShear = function (x, y, z) {\n return new Matrix4().setFromShear(x, y, z);\n };\n /**\n * 通过基轴创建矩阵\n * @param xAxis - x 轴\n * @param yAxis - y 轴\n * @param zAxis - z 轴\n * @returns\n */\n Matrix4.fromBasis = function (xAxis, yAxis, zAxis) {\n return new Matrix4().setFromBasis(xAxis, yAxis, zAxis);\n };\n /**\n * 通过行优先数据设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m24 - 第 2 行,第 4 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @param m34 - 第 3 行,第 4 列\n * @param m41 - 第 4 行,第 1 列\n * @param m42 - 第 4 行,第 2 列\n * @param m43 - 第 4 行,第 3 列\n * @param m44 - 第 4 行,第 4 列\n * @returns\n */\n Matrix4.fromRowMajorData = function (m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n return new Matrix4(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44);\n };\n Matrix4.IDENTITY = new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n Matrix4.ZERO = new Matrix4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n Matrix4.tempVec0 = new Vector3();\n Matrix4.tempVec1 = new Vector3();\n Matrix4.tempVec2 = new Vector3();\n Matrix4.tempMat0 = new Matrix4();\n return Matrix4;\n}());\n","import { Quaternion } from './quaternion';\nimport { Matrix4 } from './matrix4';\nimport { RAD2DEG, clamp } from './utils';\nimport { DEG2RAD } from './utils';\n/**\n * 欧拉角顺序\n */\nexport var EulerOrder;\n(function (EulerOrder) {\n EulerOrder[EulerOrder[\"XYZ\"] = 0] = \"XYZ\";\n EulerOrder[EulerOrder[\"XZY\"] = 1] = \"XZY\";\n EulerOrder[EulerOrder[\"YXZ\"] = 2] = \"YXZ\";\n EulerOrder[EulerOrder[\"YZX\"] = 3] = \"YZX\";\n EulerOrder[EulerOrder[\"ZXY\"] = 4] = \"ZXY\";\n EulerOrder[EulerOrder[\"ZYX\"] = 5] = \"ZYX\";\n})(EulerOrder || (EulerOrder = {}));\n/**\n * 欧拉角\n */\nexport var Euler = /** @class */ (function () {\n /**\n * 构造函数,传入值为 x, y, z 方向分量以及欧拉角顺序\n * @param [x=0] - x 方向分量\n * @param [y=0] - y 方向分量\n * @param [z=0] - z 方向分量\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n */\n function Euler(x, y, z, order) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.order = order;\n }\n /**\n * 设置欧拉角\n * @param x - x 方向分量\n * @param y - y 方向分量\n * @param z - z 方向分量\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.set = function (x, y, z, order) {\n if (order === void 0) { order = this.order; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.order = order;\n return this;\n };\n Euler.prototype.setZero = function (order) {\n if (order === void 0) { order = this.order; }\n return this.set(0, 0, 0, order);\n };\n /**\n * 通过矩阵设置欧拉角\n * @param m - 矩阵\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromRotationMatrix4 = function (m, order) {\n if (order === void 0) { order = this.order; }\n var te = m.elements;\n var m11 = te[0];\n var m12 = te[4];\n var m13 = te[8];\n var m21 = te[1];\n var m22 = te[5];\n var m23 = te[9];\n var m31 = te[2];\n var m32 = te[6];\n var m33 = te[10];\n switch (order) {\n case EulerOrder.XYZ:\n this.y = Math.asin(clamp(m13, -1, 1));\n if (Math.abs(m13) < 0.9999999) {\n this.x = Math.atan2(-m23, m33);\n this.z = Math.atan2(-m12, m11);\n }\n else {\n this.x = Math.atan2(m32, m22);\n this.z = 0;\n }\n break;\n case EulerOrder.YXZ:\n this.x = Math.asin(-clamp(m23, -1, 1));\n if (Math.abs(m23) < 0.9999999) {\n this.y = Math.atan2(m13, m33);\n this.z = Math.atan2(m21, m22);\n }\n else {\n this.y = Math.atan2(-m31, m11);\n this.z = 0;\n }\n break;\n case EulerOrder.ZXY:\n this.x = Math.asin(clamp(m32, -1, 1));\n if (Math.abs(m32) < 0.9999999) {\n this.y = Math.atan2(-m31, m33);\n this.z = Math.atan2(-m12, m22);\n }\n else {\n this.y = 0;\n this.z = Math.atan2(m21, m11);\n }\n break;\n case EulerOrder.ZYX:\n this.y = Math.asin(-clamp(m31, -1, 1));\n if (Math.abs(m31) < 0.9999999) {\n this.x = Math.atan2(m32, m33);\n this.z = Math.atan2(m21, m11);\n }\n else {\n this.x = 0;\n this.z = Math.atan2(-m12, m22);\n }\n break;\n case EulerOrder.YZX:\n this.z = Math.asin(clamp(m21, -1, 1));\n if (Math.abs(m21) < 0.9999999) {\n this.x = Math.atan2(-m23, m22);\n this.y = Math.atan2(-m31, m11);\n }\n else {\n this.x = 0;\n this.y = Math.atan2(m13, m33);\n }\n break;\n case EulerOrder.XZY:\n this.z = Math.asin(-clamp(m12, -1, 1));\n if (Math.abs(m12) < 0.9999999) {\n this.x = Math.atan2(m32, m22);\n this.y = Math.atan2(m13, m11);\n }\n else {\n this.x = Math.atan2(-m23, m33);\n this.y = 0;\n }\n break;\n default:\n console.error('setFromRotationMatrix: unknown order: ' + order);\n }\n this.x *= RAD2DEG;\n this.y *= RAD2DEG;\n this.z *= RAD2DEG;\n this.order = order;\n return this;\n };\n /**\n * 通过四元数设置欧拉角\n * @param quat - 四元数\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromQuaternion = function (quat, order) {\n if (order === void 0) { order = this.order; }\n var matrix = Euler.tempMat0;\n matrix.setFromQuaternion(quat);\n return this.setFromRotationMatrix4(matrix, order);\n };\n /**\n * 通过三维向量设置欧拉角\n * @param v - 三维向量\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromVector3 = function (v, order) {\n if (order === void 0) { order = this.order; }\n return this.set(v.x, v.y, v.z, order);\n };\n /**\n * 通过数组设置欧拉角\n * @param array - 数组\n * @param [offset=0] - 偏移\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromArray = function (array, offset, order) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n if (order === void 0) { order = this.order; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.order = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : order;\n return this;\n };\n /**\n * 克隆欧拉角\n * @returns 克隆结果\n */\n Euler.prototype.clone = function () {\n return new Euler(this.x, this.y, this.z, this.order);\n };\n /**\n * 复制欧拉角\n * @param euler - 复制对象\n * @returns 复制结果\n */\n Euler.prototype.copyFrom = function (euler) {\n this.x = euler.x;\n this.y = euler.y;\n this.z = euler.z;\n this.order = euler.order;\n return this;\n };\n Euler.prototype.add = function (euler) {\n if (this.order != euler.order) {\n console.error('add euler with different order');\n return this;\n }\n this.x += euler.x;\n this.y += euler.y;\n this.z += euler.z;\n return this;\n };\n Euler.prototype.addEulers = function (left, right) {\n if (left.order != right.order) {\n console.error('add euler with different order');\n return this;\n }\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n this.order = left.order;\n return this;\n };\n Euler.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 修改欧拉角顺序\n * @param newOrder - 欧拉角顺序\n * @returns 修改结果\n */\n Euler.prototype.reorder = function (newOrder) {\n var quaternion = new Quaternion();\n quaternion.setFromEuler(this);\n return this.setFromQuaternion(quaternion, newOrder);\n };\n /**\n * 通过四元数旋转向量\n * @param v - 待旋转向量\n * @param out - 旋转结果,如果没有传入直接覆盖输入值\n * @returns\n */\n Euler.prototype.rotateVector3 = function (v, out) {\n var q = Euler.tempQuat0;\n return q.setFromEuler(this).rotateVector3(v, out);\n };\n /**\n * 欧拉角相等判断\n * @param euler - 欧拉角\n * @returns 判断结果\n */\n Euler.prototype.equals = function (euler) {\n return euler.x === this.x\n && euler.y === this.y\n && euler.z === this.z\n && euler.order === this.order;\n };\n /**\n * 欧拉角保存于三维向量\n * @param vec - 目标保存对象\n * @returns 保存结果\n */\n Euler.prototype.toVector3 = function (vec) {\n return vec.set(this.x, this.y, this.z);\n };\n /**\n * 欧拉角转数组\n * @returns 保存结果\n */\n Euler.prototype.toArray = function () {\n return [this.x, this.y, this.z];\n };\n /**\n * 欧拉角转四元数\n * @param quat - 目标四元数\n * @returns 目标四元数\n */\n Euler.prototype.toQuaternion = function (quat) {\n var _a;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, order = _a.order;\n var c1 = Math.cos(x * DEG2RAD * 0.5);\n var c2 = Math.cos(y * DEG2RAD * 0.5);\n var c3 = Math.cos(z * DEG2RAD * 0.5);\n var s1 = Math.sin(x * DEG2RAD * 0.5);\n var s2 = Math.sin(y * DEG2RAD * 0.5);\n var s3 = Math.sin(z * DEG2RAD * 0.5);\n switch (order) {\n case EulerOrder.XYZ:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.YXZ:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n case EulerOrder.ZXY:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.ZYX:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n case EulerOrder.YZX:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.XZY:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n default:\n console.error('unknown euler order: ' + order);\n }\n return quat;\n };\n /**\n * 欧拉角转矩阵\n * @param mat - 目标矩阵\n * @returns 返回目标矩阵\n */\n Euler.prototype.toMatrix4 = function (mat) {\n var _a;\n var me = mat.elements;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, order = _a.order;\n var cosX = Math.cos(x * DEG2RAD), sinX = Math.sin(x * DEG2RAD);\n var cosY = Math.cos(y * DEG2RAD), sinY = Math.sin(y * DEG2RAD);\n var cosZ = Math.cos(z * DEG2RAD), sinZ = Math.sin(z * DEG2RAD);\n if (order === EulerOrder.XYZ) {\n var cosXcosZ = cosX * cosZ;\n var cosXsinZ = cosX * sinZ;\n var sinXcosZ = sinX * cosZ;\n var sinXsinZ = sinX * sinZ;\n me[0] = cosY * cosZ;\n me[4] = -cosY * sinZ;\n me[8] = sinY;\n me[1] = cosXsinZ + sinXcosZ * sinY;\n me[5] = cosXcosZ - sinXsinZ * sinY;\n me[9] = -sinX * cosY;\n me[2] = sinXsinZ - cosXcosZ * sinY;\n me[6] = sinXcosZ + cosXsinZ * sinY;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.YXZ) {\n var cosYcosZ = cosY * cosZ;\n var cosYsinZ = cosY * sinZ;\n var sinYcosZ = sinY * cosZ;\n var sinYsinZ = sinY * sinZ;\n me[0] = cosYcosZ + sinYsinZ * sinX;\n me[4] = sinYcosZ * sinX - cosYsinZ;\n me[8] = cosX * sinY;\n me[1] = cosX * sinZ;\n me[5] = cosX * cosZ;\n me[9] = -sinX;\n me[2] = cosYsinZ * sinX - sinYcosZ;\n me[6] = sinYsinZ + cosYcosZ * sinX;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.ZXY) {\n var cosYcosZ = cosY * cosZ;\n var cosYsinZ = cosY * sinZ;\n var sinYcosZ = sinY * cosZ;\n var sinYsinZ = sinY * sinZ;\n me[0] = cosYcosZ - sinYsinZ * sinX;\n me[4] = -cosX * sinZ;\n me[8] = sinYcosZ + cosYsinZ * sinX;\n me[1] = cosYsinZ + sinYcosZ * sinX;\n me[5] = cosX * cosZ;\n me[9] = sinYsinZ - cosYcosZ * sinX;\n me[2] = -cosX * sinY;\n me[6] = sinX;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.ZYX) {\n var cosXcosZ = cosX * cosZ;\n var cosXsinZ = cosX * sinZ;\n var sinXcosZ = sinX * cosZ;\n var sinXsinZ = sinX * sinZ;\n me[0] = cosY * cosZ;\n me[4] = sinXcosZ * sinY - cosXsinZ;\n me[8] = cosXcosZ * sinY + sinXsinZ;\n me[1] = cosY * sinZ;\n me[5] = sinXsinZ * sinY + cosXcosZ;\n me[9] = cosXsinZ * sinY - sinXcosZ;\n me[2] = -sinY;\n me[6] = sinX * cosY;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.YZX) {\n var cosXcosY = cosX * cosY;\n var cosXsinY = cosX * sinY;\n var sinXcosY = sinX * cosY;\n var sinXsinY = sinX * sinY;\n me[0] = cosY * cosZ;\n me[4] = sinXsinY - cosXcosY * sinZ;\n me[8] = sinXcosY * sinZ + cosXsinY;\n me[1] = sinZ;\n me[5] = cosX * cosZ;\n me[9] = -sinX * cosZ;\n me[2] = -sinY * cosZ;\n me[6] = cosXsinY * sinZ + sinXcosY;\n me[10] = cosXcosY - sinXsinY * sinZ;\n }\n else if (order === EulerOrder.XZY) {\n var cosXcosY = cosX * cosY;\n var cosXsinY = cosX * sinY;\n var sinXcosY = sinX * cosY;\n var sinXsinY = sinX * sinY;\n me[0] = cosY * cosZ;\n me[4] = -sinZ;\n me[8] = sinY * cosZ;\n me[1] = cosXcosY * sinZ + sinXsinY;\n me[5] = cosX * cosZ;\n me[9] = cosXsinY * sinZ - sinXcosY;\n me[2] = sinXcosY * sinZ - cosXsinY;\n me[6] = sinX * cosZ;\n me[10] = sinXsinY * sinZ + cosXcosY;\n }\n else {\n console.error('toMatrix4: Invalid order ' + order);\n }\n // bottom row\n me[3] = 0;\n me[7] = 0;\n me[11] = 0;\n // last column\n me[12] = 0;\n me[13] = 0;\n me[14] = 0;\n me[15] = 1;\n return mat;\n };\n /**\n * 通过矩阵创建欧拉角\n * @param m - 矩阵\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromRotationMatrix4 = function (m, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromRotationMatrix4(m, order);\n };\n /**\n * 通过四元数创建欧拉角\n * @param quat - 四元数\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromQuaternion = function (quat, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromQuaternion(quat, order);\n };\n /**\n * 通过三维向量创建欧拉角\n * @param v - 三维向量\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromVector3 = function (v, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromVector3(v, order);\n };\n /**\n * 通过数组创建欧拉角\n * @param array - 数组\n * @param [offset=0] - 偏移\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromArray = function (array, offset, order) {\n if (offset === void 0) { offset = 0; }\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromArray(array, offset, order);\n };\n Euler.DEFAULT_ORDER = EulerOrder.ZYX;\n Euler.tempQuat0 = new Quaternion();\n Euler.tempMat0 = new Matrix4();\n return Euler;\n}());\n","import { NumberEpsilon } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四维向量\n */\nexport var Vector4 = /** @class */ (function () {\n /**\n * 构造函数\n * @param [x=0] - x 轴分量\n * @param [y=0] - y 轴分量\n * @param [z=0] - z 轴分量\n * @param [w=1] - w 轴分量\n */\n function Vector4(x, y, z, w) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (w === void 0) { w = 0; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @param z - z 轴分量\n * @param w - w 轴分量\n * @returns\n */\n Vector4.prototype.set = function (x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector4.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 0;\n return this;\n };\n /**\n * 通过标量数值设置向量\n * @param num - 数值\n * @returns 向量\n */\n Vector4.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n this.z = num;\n this.w = num;\n return this;\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector4.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.w = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param v - 复制对象\n * @returns 拷贝结果\n */\n Vector4.prototype.copyFrom = function (v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n this.w = v.w;\n return this;\n };\n /**\n * 克隆向量\n * @returns 克隆结果\n */\n Vector4.prototype.clone = function () {\n return new Vector4(this.x, this.y, this.z, this.w);\n };\n /**\n * 根据下标设置向量分量\n * @param index - 下标值\n * @param value - 分量值\n * @returns 向量\n */\n Vector4.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n case 3:\n this.w = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取向量分量\n * @param index - 下标\n * @returns 分量值\n */\n Vector4.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n case 2: return this.z;\n case 3: return this.w;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 相加对象,向量 | 数字\n * @returns 相加结果\n */\n Vector4.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n this.z += right;\n this.w += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n this.z += right[2];\n this.w += right[3];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n this.z += right.z;\n this.w += right.w;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 求和结果\n */\n Vector4.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n this.w = left.w + right.w;\n return this;\n };\n /**\n * 向量比例缩放后相加\n * @param right - 向量\n * @param s - 比例\n * @returns 求和结果\n */\n Vector4.prototype.addScaledVector = function (right, s) {\n this.x += right.x * s;\n this.y += right.y * s;\n this.z += right.z * s;\n this.w += right.w * s;\n return this;\n };\n /**\n * 向量相减\n * @param right - 相减对象,向量 | 数字\n * @returns 相减结果\n */\n Vector4.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n this.z -= right;\n this.w -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n this.z -= right[2];\n this.w -= right[3];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n this.z -= right.z;\n this.w -= right.w;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 向量\n */\n Vector4.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n this.z = left.z - right.z;\n this.w = left.w - right.w;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 相乘对象,对象 | 数字\n * @returns 向量\n */\n Vector4.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n this.z *= right;\n this.w *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n this.z *= right[2];\n this.w *= right[3];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n this.z *= right.z;\n this.w *= right.w;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 向量\n */\n Vector4.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n this.z = left.z * right.z;\n this.w = left.w * right.w;\n return this;\n };\n /**\n * 向量相除\n * @param right - 相除对象,对象 | 数字\n * @returns 向量\n */\n Vector4.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n this.z /= right;\n this.w /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n this.z /= right[2];\n this.w /= right[3];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n this.z /= right.z;\n this.w /= right.w;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector4.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n this.w *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector4.prototype.sum = function () {\n return this.x + this.y + this.z + this.w;\n };\n /**\n * 向量求最小值\n * @param v - 向量或数值\n * @returns 最小值\n */\n Vector4.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n this.z = Math.min(this.z, v);\n this.w = Math.min(this.w, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n this.w = Math.min(this.w, v.w);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量或数值\n * @returns 最大值\n */\n Vector4.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n this.z = Math.max(this.z, v);\n this.w = Math.max(this.w, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n this.w = Math.max(this.w, v.w);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 最小值\n * @param max - 最大值\n * @returns 向量\n */\n Vector4.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector4.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n this.w = Math.floor(this.w);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector4.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n this.w = Math.ceil(this.w);\n return this;\n };\n /**\n * 向量四舍五入\n * @returns 求值结果\n */\n Vector4.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n this.w = Math.round(this.w);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector4.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n this.z = Math.abs(this.z);\n this.w = Math.abs(this.w);\n return this;\n };\n /**\n * 向量取反\n * @returns 取反结果\n */\n Vector4.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n };\n /**\n * 向量长度平方\n * @returns 长度平方\n */\n Vector4.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n };\n /**\n * 向量长度\n * @returns 长度\n */\n Vector4.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n };\n /**\n * 向量归一化\n * @returns 归一化结果\n */\n Vector4.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector4.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量求线性插值\n * @param v - 向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector4.prototype.lerp = function (v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n this.w += (v.w - this.w) * alpha;\n return this;\n };\n /**\n * 两向量求线性插值\n * @param v1 - 第一个向量\n * @param v2 - 第二个向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector4.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n this.w = v1.w + (v2.w - v1.w) * alpha;\n return this;\n };\n /**\n * 向量求点积\n * @param v - 向量\n * @returns 点积结果\n */\n Vector4.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector4.prototype.equals = function (v) {\n return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector4.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, w = _a.w;\n return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps && Math.abs(w) <= eps;\n };\n /**\n * 向量转数组\n * @returns 数组\n */\n Vector4.prototype.toArray = function () {\n return [this.x, this.y, this.z, this.w];\n };\n Vector4.prototype.toVector3 = function () {\n return new Vector3(this.x, this.y, this.z);\n };\n Vector4.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n array[offset + 3] = this.w;\n };\n /**\n * 生成随机向量\n * @returns 向量\n */\n Vector4.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n this.w = Math.random();\n return this;\n };\n /**\n * 变换矩阵作用于向量\n * @param m - 变换矩阵\n * @param [out] - 输出结果,如果没有设置就直接覆盖当前值\n * @returns 向量\n */\n Vector4.prototype.applyMatrix = function (m, out) {\n return m.transformVector4(this, out);\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector4.fromNumber = function (num) {\n return new Vector4().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector4.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector4().setFromArray(array, offset);\n };\n /**\n * 四维向量的常量\n */\n Vector4.ONE = new Vector4(1.0, 1.0, 1.0, 1.0);\n Vector4.ZERO = new Vector4(0.0, 0.0, 0.0, 0.0);\n return Vector4;\n}());\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { isEqual } from './utils';\n/**\n * 三维矩阵(列优先矩阵)\n */\nvar Matrix3 = /** @class */ (function () {\n /**\n * 构造函数,初始值为零矩阵\n * @param [m11=1] - 第 1 行,第 1 列\n * @param [m21=0] - 第 2 行,第 1 列\n * @param [m31=0] - 第 3 行,第 1 列\n * @param [m12=0] - 第 1 行,第 2 列\n * @param [m22=1] - 第 2 行,第 2 列\n * @param [m32=0] - 第 3 行,第 2 列\n * @param [m13=0] - 第 1 行,第 3 列\n * @param [m23=0] - 第 2 行,第 3 列\n * @param [m33=1] - 第 3 行,第 3 列\n */\n function Matrix3(m11, m21, m31, m12, m22, m32, m13, m23, m33) {\n if (m11 === void 0) { m11 = 1; }\n if (m21 === void 0) { m21 = 0; }\n if (m31 === void 0) { m31 = 0; }\n if (m12 === void 0) { m12 = 0; }\n if (m22 === void 0) { m22 = 1; }\n if (m32 === void 0) { m32 = 0; }\n if (m13 === void 0) { m13 = 0; }\n if (m23 === void 0) { m23 = 0; }\n if (m33 === void 0) { m33 = 1; }\n this.elements = [\n m11, m21, m31,\n m12, m22, m32,\n m13, m23, m33,\n ];\n }\n /**\n * 设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m21 - 第 2 行,第 1 列\n * @param m31 - 第 3 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m22 - 第 2 行,第 2 列\n * @param m32 - 第 3 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m23 - 第 2 行,第 3 列\n * @param m33 - 第 3 行,第 3 列\n * @returns\n */\n Matrix3.prototype.set = function (m11, m21, m31, m12, m22, m32, m13, m23, m33) {\n var e = this.elements;\n e[0] = m11;\n e[3] = m12;\n e[6] = m13;\n e[1] = m21;\n e[4] = m22;\n e[7] = m23;\n e[2] = m31;\n e[5] = m32;\n e[8] = m33;\n return this;\n };\n /**\n * 设置矩阵通过行优先数据\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @returns 矩阵\n */\n Matrix3.prototype.setFromRowMajorData = function (m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n var e = this.elements;\n e[0] = m11;\n e[3] = m12;\n e[6] = m13;\n e[1] = m21;\n e[4] = m22;\n e[7] = m23;\n e[2] = m31;\n e[5] = m32;\n e[8] = m33;\n return this;\n };\n /**\n * 通过列向量设置矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @returns 矩阵\n */\n Matrix3.prototype.setFromColumnVectors = function (c1, c2, c3) {\n return this.set(c1.x, c1.y, c1.z, c2.x, c2.y, c2.z, c3.x, c3.y, c3.z);\n };\n /**\n * 通过四阶矩阵设置三阶矩阵\n * @param m - 四阶矩阵\n * @returns 矩阵\n */\n Matrix3.prototype.setFromMatrix4 = function (m) {\n var me = m.elements;\n return this.set(me[0], me[1], me[2], me[4], me[5], me[6], me[8], me[9], me[10]);\n };\n /**\n * 通过数组设置矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix3.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n for (var i = 0; i < 9; i++) {\n this.elements[i] = array[offset + i];\n }\n return this;\n };\n /**\n * 通过四元数设置矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix3.prototype.setFromQuaternion = function (quat) {\n var x = quat.x, y = quat.y, z = quat.z, w = quat.w;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var te = this.elements;\n te[0] = 1 - (yy + zz);\n te[1] = xy + wz;\n te[2] = xz - wy;\n te[3] = xy - wz;\n te[4] = 1 - (xx + zz);\n te[5] = yz + wx;\n te[6] = xz + wy;\n te[7] = yz - wx;\n te[8] = 1 - (xx + yy);\n return this;\n };\n /**\n * 矩阵清零\n * @returns 零矩阵\n */\n Matrix3.prototype.setZero = function () {\n for (var i = 0; i < 9; i++) {\n this.elements[i] = 0;\n }\n return this;\n };\n /**\n * 矩阵单位化\n * @returns 单位矩阵\n */\n Matrix3.prototype.identity = function () {\n return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1);\n };\n /**\n * 矩阵克隆\n * @returns 克隆结果\n */\n Matrix3.prototype.clone = function () {\n var e = this.elements;\n return new Matrix3(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8]);\n };\n /**\n * 矩阵复制\n * @param m - 复制对象\n * @returns 复制结果\n */\n Matrix3.prototype.copyFrom = function (m) {\n this.elements = __spreadArray([], __read(m.elements), false);\n return this;\n };\n /**\n * 得到列向量\n * @param i - 列向量索引,从 0 开始\n * @returns 列向量\n */\n Matrix3.prototype.getColumnVector = function (i, v) {\n return v.set(this.elements[i * 3], this.elements[i * 3 + 1], this.elements[i * 3 + 2]);\n };\n /**\n * 矩阵缩放\n * @param sx - x 轴缩放分量\n * @param sy - y 轴缩放分量\n * @returns 缩放结果\n */\n Matrix3.prototype.scale = function (sx, sy) {\n var e = this.elements;\n e[0] *= sx;\n e[3] *= sx;\n e[6] *= sx;\n e[1] *= sy;\n e[4] *= sy;\n e[7] *= sy;\n return this;\n };\n /**\n * 矩阵旋转\n * @param theta - 旋转角度(弧度)\n * @returns 旋转结果\n */\n Matrix3.prototype.rotate = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var e = this.elements;\n var m11 = e[0], m12 = e[3], m13 = e[6];\n var m21 = e[1], m22 = e[4], m23 = e[7];\n e[0] = c * m11 + s * m21;\n e[3] = c * m12 + s * m22;\n e[6] = c * m13 + s * m23;\n e[1] = -s * m11 + c * m21;\n e[4] = -s * m12 + c * m22;\n e[7] = -s * m13 + c * m23;\n return this;\n };\n /**\n * 矩阵平移\n * @param x - x 轴平移分量\n * @param y - y 轴平移分量\n * @returns 平移结果\n */\n Matrix3.prototype.translate = function (x, y) {\n var e = this.elements;\n e[0] += x * e[2];\n e[3] += x * e[5];\n e[6] += x * e[8];\n e[1] += y * e[2];\n e[4] += y * e[5];\n e[7] += y * e[8];\n return this;\n };\n /**\n * 矩阵右乘\n * @param right - 相乘矩阵\n * @returns 右乘结果\n */\n Matrix3.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n for (var i = 0; i < 9; i++) {\n this.elements[i] *= right;\n }\n return this;\n }\n else {\n return this.multiplyMatrices(this, right);\n }\n };\n /**\n * 矩阵左乘\n * @param left - 相乘矩阵\n * @returns 左乘结果\n */\n Matrix3.prototype.premultiply = function (left) {\n return this.multiplyMatrices(left, this);\n };\n /**\n * 矩阵乘法\n * @param left - 矩阵\n * @param right - 矩阵\n * @returns 相乘结果\n */\n Matrix3.prototype.multiplyMatrices = function (left, right) {\n var ae = left.elements;\n var be = right.elements;\n var te = this.elements;\n var a11 = ae[0], a12 = ae[3], a13 = ae[6];\n var a21 = ae[1], a22 = ae[4], a23 = ae[7];\n var a31 = ae[2], a32 = ae[5], a33 = ae[8];\n var b11 = be[0], b12 = be[3], b13 = be[6];\n var b21 = be[1], b22 = be[4], b23 = be[7];\n var b31 = be[2], b32 = be[5], b33 = be[8];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return this;\n };\n /**\n * 矩阵求行列式值\n * @returns 行列式结果\n */\n Matrix3.prototype.determinant = function () {\n var e = this.elements;\n var m11 = e[0], m21 = e[3], m31 = e[6];\n var m12 = e[1], m22 = e[4], m32 = e[7];\n var m13 = e[2], m23 = e[5], m33 = e[8];\n return (m11 * (m22 * m33 - m23 * m32) +\n m12 * (m23 * m31 - m21 * m33) +\n m13 * (m21 * m32 - m22 * m31));\n };\n /**\n * 矩阵求逆\n * @returns 逆矩阵\n */\n Matrix3.prototype.invert = function () {\n var e = this.elements;\n var m11 = e[0], m12 = e[3], m13 = e[6];\n var m21 = e[1], m22 = e[4], m23 = e[7];\n var m31 = e[2], m32 = e[5], m33 = e[8];\n var t11 = m33 * m22 - m32 * m23;\n var t12 = m32 * m13 - m33 * m12;\n var t13 = m23 * m12 - m22 * m13;\n var det = m11 * t11 + m21 * t12 + m31 * t13;\n if (det === 0) {\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n var detInv = 1 / det;\n e[0] = t11 * detInv;\n e[1] = (m31 * m23 - m33 * m21) * detInv;\n e[2] = (m32 * m21 - m31 * m22) * detInv;\n e[3] = t12 * detInv;\n e[4] = (m33 * m11 - m31 * m13) * detInv;\n e[5] = (m31 * m12 - m32 * m11) * detInv;\n e[6] = t13 * detInv;\n e[7] = (m21 * m13 - m23 * m11) * detInv;\n e[8] = (m22 * m11 - m21 * m12) * detInv;\n return this;\n };\n /**\n * 矩阵转置\n * @returns 转置结果\n */\n Matrix3.prototype.transpose = function () {\n var t;\n var m = this.elements;\n t = m[1];\n m[1] = m[3];\n m[3] = t;\n t = m[2];\n m[2] = m[6];\n m[6] = t;\n t = m[5];\n m[5] = m[7];\n m[7] = t;\n return this;\n };\n /**\n * 对点进行矩阵变换\n * @param v - 输入点\n * @param out - 输出点,如果没有会覆盖输入的数据\n * @returns 变换后的结果\n */\n Matrix3.prototype.transformPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[3] * y + e[6] * z;\n res.y = e[1] * x + e[4] * y + e[7] * z;\n res.z = e[2] * x + e[5] * y + e[8] * z;\n return res;\n };\n /**\n * 对法向量进行矩阵变换\n * @param v - 输入向量\n * @param out - 输出向量,如果没有会覆盖输入的数据\n * @returns 变换后的结果\n */\n Matrix3.prototype.transformNormal = function (v, out) {\n return this.transformPoint(v, out).normalize();\n };\n /**\n * 矩阵判等\n * @param matrix - 矩阵\n * @returns 判等结果\n */\n Matrix3.prototype.equals = function (matrix) {\n var te = this.elements;\n var me = matrix.elements;\n for (var i = 0; i < 9; i++) {\n if (!isEqual(te[i], me[i])) {\n return false;\n }\n }\n return true;\n };\n /**\n * 矩阵转为数组\n * @returns\n */\n Matrix3.prototype.toArray = function () {\n return __spreadArray([], __read(this.elements), false);\n };\n Matrix3.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n var e = this.elements;\n array[offset] = e[0];\n array[offset + 1] = e[1];\n array[offset + 2] = e[2];\n array[offset + 3] = e[3];\n array[offset + 4] = e[4];\n array[offset + 5] = e[5];\n array[offset + 6] = e[6];\n array[offset + 7] = e[7];\n array[offset + 8] = e[8];\n };\n /**\n * 创建单位阵\n * @returns 单位矩阵\n */\n Matrix3.fromIdentity = function () {\n return new Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1);\n };\n /**\n * 通过列向量创建矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @returns 矩阵\n */\n Matrix3.fromColumnVectors = function (c1, c2, c3) {\n return new Matrix3().setFromColumnVectors(c1, c2, c3);\n };\n /**\n * 通过四阶矩阵创建矩阵(获取空间变换矩阵旋转缩放部分)\n * @param m - 四阶矩阵\n * @returns 矩阵\n */\n Matrix3.fromMatrix4 = function (m) {\n return new Matrix3().setFromMatrix4(m);\n };\n /**\n * 通过数组创建矩阵\n * @param array - 数组(列优先)\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix3.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Matrix3().setFromArray(array, offset);\n };\n /**\n * 通过四元数创建矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix3.fromQuaternion = function (quat) {\n return new Matrix3().setFromQuaternion(quat);\n };\n /**\n * 设置矩阵通过行优先数据\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @returns 矩阵\n */\n Matrix3.fromRowMajorData = function (m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n return new Matrix3(m11, m21, m31, m12, m22, m32, m13, m23, m33);\n };\n return Matrix3;\n}());\nexport { Matrix3 };\n","import { Vector3 } from './vector3';\n/**\n * 光线类\n */\nexport var Ray = /** @class */ (function () {\n /**\n * 构造函数\n * @param [origin] - 原点,默认是 (0, 0, 0)\n * @param [direction] - 方向,默认是 (1, 0, 0)\n */\n function Ray(origin, direction) {\n if (origin === void 0) { origin = Vector3.ZERO; }\n if (direction === void 0) { direction = Vector3.X; }\n /**\n * 光线的原点\n */\n this.origin = new Vector3();\n /**\n * 光线的方向\n */\n this.direction = new Vector3();\n // 注意这里必须拷贝\n this.origin.copyFrom(origin);\n this.direction.copyFrom(direction).normalize();\n }\n /**\n * 光线设置\n * @param origin - 原点\n * @param direction - 方向\n * @returns\n */\n Ray.prototype.set = function (origin, direction) {\n this.origin.copyFrom(origin);\n this.direction.copyFrom(direction).normalize();\n return this;\n };\n /**\n * 光线克隆\n * @returns 克隆结果\n */\n Ray.prototype.clone = function () {\n return new Ray(this.origin, this.direction);\n };\n /**\n * 光线拷贝\n * @param ray - 要拷贝对象\n * @returns 拷贝结果\n */\n Ray.prototype.copyFrom = function (ray) {\n return this.set(ray.origin, ray.direction);\n };\n /**\n * 根据t计算新的光线原点\n * @param t - 光线的系数 t\n * @returns\n */\n Ray.prototype.recast = function (t) {\n this.origin.copyFrom(this.at(t, Ray.tempVec0));\n return this;\n };\n /**\n * 根据t值计算光线上的点\n * @param t - 光线的系数 t\n * @param [out] - 计算的点\n * @returns\n */\n Ray.prototype.at = function (t, out) {\n var ret = out ? out : new Vector3();\n ret.copyFrom(this.origin);\n return ret.addScaledVector(this.direction, t);\n };\n /**\n * 光线相等判断\n * @param other - 其他对象\n * @returns\n */\n Ray.prototype.equals = function (other) {\n return this.origin.equals(other.origin) && this.direction.equals(other.direction);\n };\n /**\n * 根据矩阵对光线进行变换\n * @param m - 变换矩阵\n * @returns\n */\n Ray.prototype.applyMatrix = function (m) {\n this.origin.applyProjectionMatrix(m);\n this.direction.applyNormalMatrix(m);\n return this;\n };\n /**\n * 光线和包围盒求交\n * @param box - 类包围盒对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectBox = function (box, out) {\n var _a, _b, _c, _d;\n var ox = (_a = this.origin, _a.x), oy = _a.y, oz = _a.z;\n var dx = (_b = this.direction, _b.x), dy = _b.y, dz = _b.z;\n var bxmin = (_c = box.min, _c.x), bymin = _c.y, bzmin = _c.z;\n var bxmax = (_d = box.max, _d.x), bymax = _d.y, bzmax = _d.z;\n var tmin, tmax, tymin, tymax, tzmin, tzmax;\n var invdirx = 1 / dx;\n var invdiry = 1 / dy;\n var invdirz = 1 / dz;\n if (invdirx >= 0) {\n tmin = (bxmin - ox) * invdirx;\n tmax = (bxmax - ox) * invdirx;\n }\n else {\n tmin = (bxmax - ox) * invdirx;\n tmax = (bxmin - ox) * invdirx;\n }\n if (invdiry >= 0) {\n tymin = (bymin - oy) * invdiry;\n tymax = (bymax - oy) * invdiry;\n }\n else {\n tymin = (bymax - oy) * invdiry;\n tymax = (bymin - oy) * invdiry;\n }\n if ((tmin > tymax) || (tymin > tmax)) {\n return;\n }\n if (tymin > tmin || tmin !== tmin) {\n tmin = tymin;\n }\n if (tymax < tmax || tmax !== tmax) {\n tmax = tymax;\n }\n if (tymin > tmin || tmin !== tmin) {\n tmin = tymin;\n }\n if (tymax < tmax || tmax !== tmax) {\n tmax = tymax;\n }\n if (invdirz >= 0) {\n tzmin = (bzmin - oz) * invdirz;\n tzmax = (bzmax - oz) * invdirz;\n }\n else {\n tzmin = (bzmax - oz) * invdirz;\n tzmax = (bzmin - oz) * invdirz;\n }\n if ((tmin > tzmax) || (tzmin > tmax)) {\n return;\n }\n if (tzmin > tmin || tmin !== tmin) {\n tmin = tzmin;\n }\n if (tzmax < tmax || tmax !== tmax) {\n tmax = tzmax;\n }\n if (tmax < 0) {\n return;\n }\n return tmin >= 0 ? this.at(tmin, out) : this.at(tmax, out);\n };\n /**\n * 光线和平面求交\n * @param plane - 类平面对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectPlane = function (plane, out) {\n var normal = plane.normal;\n var distance = plane.distance;\n var denominator = normal.dot(this.direction);\n if (denominator === 0) {\n // line is coplanar, return origin\n var t_1 = normal.dot(this.origin) + distance;\n if (t_1 === 0) {\n var ret = out ? out : new Vector3();\n return ret.copyFrom(this.origin);\n }\n // Null is preferable to undefined since undefined means.... it is undefined\n return;\n }\n var t = -(this.origin.dot(normal) + distance) / denominator;\n // Return if the ray never intersects the plane\n return t >= 0 ? this.at(t, out) : undefined;\n };\n /**\n * 光线和圆求交\n * @param sphere - 类球对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectSphere = function (sphere, out) {\n var center = sphere.center;\n var vector = Ray.tempVec0.subtractVectors(center, this.origin);\n var tca = vector.dot(this.direction);\n var d2 = vector.dot(vector) - tca * tca;\n var radius2 = sphere.radius * sphere.radius;\n if (d2 > radius2) {\n return;\n }\n var thc = Math.sqrt(radius2 - d2);\n // t0 = first intersect point - entrance on front of sphere\n var t0 = tca - thc;\n // t1 = second intersect point - exit point on back of sphere\n var t1 = tca + thc;\n // test to see if t1 is behind the ray - if so, return null\n if (t1 < 0) {\n return;\n }\n // test to see if t0 is behind the ray:\n // if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n // in order to always return an intersect point that is in front of the ray.\n // else t0 is in front of the ray, so return the first collision point scaled by t0\n return t0 >= 0 ? this.at(t0, out) : this.at(t1, out);\n };\n /**\n * 光线和三角形求交\n * @param triangle - 类三角形对象\n * @param [out] - 交点\n * @param [backfaceCulling] - 是否背面剔除\n * @returns\n */\n Ray.prototype.intersectTriangle = function (triangle, out, backfaceCulling) {\n // FIXME: 交换out和backfaceCulling\n // Compute the offset origin, edges, and normal.\n // from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n var a = triangle.p0;\n var b = triangle.p1;\n var c = triangle.p2;\n var edge1 = Ray.tempVec0.subtractVectors(b, a);\n var edge2 = Ray.tempVec1.subtractVectors(c, a);\n var diff = Ray.tempVec2.subtractVectors(this.origin, a);\n var normal = Ray.tempVec3.crossVectors(edge1, edge2);\n // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n var DdN = this.direction.dot(normal);\n var sign;\n if (DdN > 0) {\n if (backfaceCulling) {\n return;\n }\n sign = 1;\n }\n else if (DdN < 0) {\n sign = -1;\n DdN = -DdN;\n }\n else {\n return;\n }\n edge2.crossVectors(diff, edge2);\n var DdQxE2 = sign * this.direction.dot(edge2);\n // b1 < 0, no intersection\n if (DdQxE2 < 0) {\n return;\n }\n edge1.cross(diff);\n var DdE1xQ = sign * this.direction.dot(edge1);\n // b2 < 0, no intersection\n if (DdE1xQ < 0) {\n return;\n }\n // b1+b2 > 1, no intersection\n if (DdQxE2 + DdE1xQ > DdN) {\n return;\n }\n // Line intersects triangle, check if ray does.\n var QdN = -sign * diff.dot(normal);\n // t < 0, no intersection\n if (QdN < 0) {\n return;\n }\n // Ray intersects triangle.\n return this.at(QdN / DdN, out);\n };\n Ray.tempVec0 = new Vector3();\n Ray.tempVec1 = new Vector3();\n Ray.tempVec2 = new Vector3();\n Ray.tempVec3 = new Vector3();\n return Ray;\n}());\n","import { Vector4 } from './vector4';\nexport var Color = /** @class */ (function () {\n /**\n * 构造函数,默认值为黑色\n * @param [r=0]\n * @param [g=0]\n * @param [b=0]\n * @param [a=0]\n */\n function Color(r, g, b, a) {\n if (r === void 0) { r = 0; }\n if (g === void 0) { g = 0; }\n if (b === void 0) { b = 0; }\n if (a === void 0) { a = 0; }\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n /**\n * 设置颜色\n * @param r - r 分量\n * @param g - g 分量\n * @param b - b 分量\n * @param a - a 分量\n * @returns\n */\n Color.prototype.set = function (r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n return this;\n };\n /**\n * 设置零颜色\n * @returns\n */\n Color.prototype.setZero = function () {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n return this;\n };\n /**\n * 通过标量数值设置颜色\n * @param num - 数值\n * @returns\n */\n Color.prototype.setFromNumber = function (num) {\n this.r = num;\n this.g = num;\n this.b = num;\n this.a = num;\n return this;\n };\n /**\n * 通过Vector4创建颜色\n * @param v - Vector4\n * @returns\n */\n Color.prototype.setFromVector4 = function (v) {\n this.r = v.x;\n this.g = v.y;\n this.b = v.z;\n this.a = v.w;\n return this;\n };\n /**\n * 通过数组创建颜色\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Color.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n this.r = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.g = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.b = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.a = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : 0;\n return this;\n };\n Color.prototype.setFromHSV = function (hue, saturation, value, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var chroma = value * saturation;\n var h = hue / 60;\n var x = chroma * (1 - Math.abs((h % 2) - 1));\n var r = 0;\n var g = 0;\n var b = 0;\n if (h >= 0 && h <= 1) {\n r = chroma;\n g = x;\n }\n else if (h >= 1 && h <= 2) {\n r = x;\n g = chroma;\n }\n else if (h >= 2 && h <= 3) {\n g = chroma;\n b = x;\n }\n else if (h >= 3 && h <= 4) {\n g = x;\n b = chroma;\n }\n else if (h >= 4 && h <= 5) {\n r = x;\n b = chroma;\n }\n else if (h >= 5 && h <= 6) {\n r = chroma;\n b = x;\n }\n var m = value - chroma;\n return this.set(r + m, g + m, b + m, alpha);\n };\n Color.prototype.setFromHexString = function (hex) {\n if (hex.substring(0, 1) !== '#' || (hex.length !== 9 && hex.length !== 7)) {\n return this;\n }\n var r = parseInt(hex.substring(1, 3), 16) / 255.0;\n var g = parseInt(hex.substring(3, 5), 16) / 255.0;\n var b = parseInt(hex.substring(5, 7), 16) / 255.0;\n var a = hex.length === 9 ? parseInt(hex.substring(7, 9), 16) / 255.0 : 1.0;\n return this.set(r, g, b, a);\n };\n /**\n * 拷贝颜色\n * @param v - 复制对象\n * @returns 拷贝结果\n */\n Color.prototype.copyFrom = function (v) {\n this.r = v.r;\n this.g = v.g;\n this.b = v.b;\n this.a = v.a;\n return this;\n };\n /**\n * 克隆颜色\n * @returns 克隆结果\n */\n Color.prototype.clone = function () {\n return new Color(this.r, this.g, this.b, this.a);\n };\n /**\n * 根据下标设置颜色分量\n * @param index - 下标值\n * @param value - 分量值\n * @returns\n */\n Color.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.r = value;\n break;\n case 1:\n this.g = value;\n break;\n case 2:\n this.b = value;\n break;\n case 3:\n this.a = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取颜色分量\n * @param index - 下标\n * @returns 分量值\n */\n Color.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.r;\n case 1: return this.g;\n case 2: return this.b;\n case 3: return this.a;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 颜色相加\n * @param right - 相加对象,颜色 | 数字\n * @returns 相加结果\n */\n Color.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.r += right;\n this.g += right;\n this.b += right;\n this.a += right;\n }\n else if (right instanceof Array) {\n this.r += right[0];\n this.g += right[1];\n this.b += right[2];\n this.a += right[3];\n }\n else {\n this.r += right.r;\n this.g += right.g;\n this.b += right.b;\n this.a += right.a;\n }\n return this;\n };\n /**\n * 颜色相减\n * @param right - 相减对象,颜色 | 数字\n * @returns 相减结果\n */\n Color.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.r -= right;\n this.g -= right;\n this.b -= right;\n this.a -= right;\n }\n else if (right instanceof Array) {\n this.r -= right[0];\n this.g -= right[1];\n this.b -= right[2];\n this.a -= right[3];\n }\n else {\n this.r -= right.r;\n this.g -= right.g;\n this.b -= right.b;\n this.a -= right.a;\n }\n return this;\n };\n /**\n * 颜色相乘\n * @param right - 相乘对象,对象 | 数字\n * @returns 颜色\n */\n Color.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.r *= right;\n this.g *= right;\n this.b *= right;\n this.a *= right;\n }\n else if (right instanceof Array) {\n this.r *= right[0];\n this.g *= right[1];\n this.b *= right[2];\n this.a *= right[3];\n }\n else {\n this.r *= right.r;\n this.g *= right.g;\n this.b *= right.b;\n this.a *= right.a;\n }\n return this;\n };\n /**\n * 颜色相除\n * @param right - 相除对象,对象 | 数字\n * @returns 颜色\n */\n Color.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.r /= right;\n this.g /= right;\n this.b /= right;\n this.a /= right;\n }\n else if (right instanceof Array) {\n this.r /= right[0];\n this.g /= right[1];\n this.b /= right[2];\n this.a /= right[3];\n }\n else {\n this.r /= right.r;\n this.g /= right.g;\n this.b /= right.b;\n this.a /= right.a;\n }\n return this;\n };\n /**\n * 颜色缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Color.prototype.scale = function (v) {\n this.r *= v;\n this.g *= v;\n this.b *= v;\n this.a *= v;\n return this;\n };\n /**\n * 颜色求最小值\n * @param v - 颜色或数值\n * @returns 最小值\n */\n Color.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.r = Math.min(this.r, v);\n this.g = Math.min(this.g, v);\n this.b = Math.min(this.b, v);\n this.a = Math.min(this.a, v);\n }\n else {\n this.r = Math.min(this.r, v.r);\n this.g = Math.min(this.g, v.g);\n this.b = Math.min(this.b, v.b);\n this.a = Math.min(this.a, v.a);\n }\n return this;\n };\n /**\n * 颜色求最大值\n * @param v - 颜色或数值\n * @returns 最大值\n */\n Color.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.r = Math.max(this.r, v);\n this.g = Math.max(this.g, v);\n this.b = Math.max(this.b, v);\n this.a = Math.max(this.a, v);\n }\n else {\n this.r = Math.max(this.r, v.r);\n this.g = Math.max(this.g, v.g);\n this.b = Math.max(this.b, v.b);\n this.a = Math.max(this.a, v.a);\n }\n return this;\n };\n /**\n * 颜色阈值约束\n * @param min - 最小值\n * @param max - 最大值\n * @returns 颜色\n */\n Color.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 颜色求线性插值\n * @param v - 颜色\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Color.prototype.lerp = function (v, alpha) {\n this.r += (v.r - this.r) * alpha;\n this.g += (v.g - this.g) * alpha;\n this.b += (v.b - this.b) * alpha;\n this.a += (v.a - this.a) * alpha;\n return this;\n };\n /**\n * 计算颜色亮度值\n * @returns 亮度值\n */\n Color.prototype.luminance = function () {\n return this.r * 0.3 + this.g * 0.59 + this.b * 0.11;\n };\n /**\n * 颜色判等\n * @param v - 颜色\n * @returns 判等结果\n */\n Color.prototype.equals = function (v) {\n return v.r === this.r && v.g === this.g && v.b === this.b && v.a === this.a;\n };\n Color.prototype.toLinear = function () {\n this.r = Color.gammaToLinear(this.r);\n this.g = Color.gammaToLinear(this.g);\n this.b = Color.gammaToLinear(this.b);\n return this;\n };\n Color.prototype.toGamma = function () {\n this.r = Color.linearToGamma(this.r);\n this.g = Color.linearToGamma(this.g);\n this.b = Color.linearToGamma(this.b);\n return this;\n };\n /**\n * 颜色转数组\n * @returns 数组\n */\n Color.prototype.toArray = function () {\n return [this.r, this.g, this.b, this.a];\n };\n Color.prototype.toVector4 = function () {\n return new Vector4(this.r, this.g, this.b, this.a);\n };\n /**\n * RGB 颜色空间转 HSV\n * @param result HSV 值\n */\n Color.prototype.toHSV = function () {\n var _a;\n var r = (_a = this, _a.r), g = _a.g, b = _a.b, a = _a.a;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var v = max;\n var dm = max - min;\n var h = 0;\n var s = 0;\n if (max !== 0) {\n s = dm / max;\n }\n if (max != min) {\n if (max == r) {\n h = (g - b) / dm;\n if (g < b) {\n h += 6;\n }\n }\n else if (max == g) {\n h = (b - r) / dm + 2;\n }\n else if (max == b) {\n h = (r - g) / dm + 4;\n }\n h *= 60;\n }\n return new Color(h, s, v, a);\n };\n Color.prototype.toHexString = function (includeAlpha) {\n if (includeAlpha === void 0) { includeAlpha = true; }\n var R = Color.ToHex(Math.round(this.r * 255));\n var G = Color.ToHex(Math.round(this.g * 255));\n var B = Color.ToHex(Math.round(this.b * 255));\n var A = Color.ToHex(Math.round(this.a * 255));\n if (includeAlpha) {\n return '#' + R + G + B + A;\n }\n else {\n return '#' + R + G + B;\n }\n };\n Color.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.r;\n array[offset + 1] = this.g;\n array[offset + 2] = this.b;\n array[offset + 3] = this.a;\n };\n /**\n * 通过标量数值创建颜色\n * @param num - 数值\n * @returns\n */\n Color.fromNumber = function (num) {\n return new Color().setFromNumber(num);\n };\n /**\n * 通过数组创建颜色\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Color.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Color().setFromArray(array, offset);\n };\n /**\n * 通过 hex 字符串创建颜色\n * @param hex - hex 字符串\n * @returns\n */\n Color.fromHexString = function (hex) {\n return new Color().setFromHexString(hex);\n };\n Color.fromHSV = function (hue, saturation, value, alpha) {\n if (alpha === void 0) { alpha = 1; }\n return new Color().setFromHSV(hue, saturation, value, alpha);\n };\n /**\n * 颜色值从 Gamma 空间转到线性空间\n * @param v - Gamma 空间颜色值\n * @returns 线性空间颜色值\n */\n Color.gammaToLinear = function (v) {\n if (v <= 0.0) {\n return 0.0;\n }\n else if (v <= 0.04045) {\n return v / 12.92;\n }\n else if (v < 1.0) {\n return Math.pow((v + 0.055) / 1.055, 2.4);\n }\n else {\n return Math.pow(v, 2.4);\n }\n };\n /**\n * 颜色值从线性空间转到 Gamma 空间\n * @param value - 线性空间颜色值\n * @returns Gamma 空间颜色值\n */\n Color.linearToGamma = function (value) {\n if (value <= 0.0) {\n return 0.0;\n }\n else if (value < 0.0031308) {\n return 12.92 * value;\n }\n else if (value < 1.0) {\n return 1.055 * Math.pow(value, 0.41666) - 0.055;\n }\n else {\n return Math.pow(value, 0.41666);\n }\n };\n Color.ToHex = function (i) {\n var str = i.toString(16);\n if (i <= 15) {\n return ('0' + str).toUpperCase();\n }\n return str.toUpperCase();\n };\n /**\n * 颜色的常量\n */\n Color.BLACK = new Color(0, 0, 0, 1); // 纯黑色\n Color.BLUE = new Color(0, 0, 1, 1); // 纯蓝色\n Color.CLEAR = new Color(0, 0, 0, 0); // 完全透明\n Color.CYAN = new Color(0, 1, 1, 1); // 青色\n Color.GRAY = new Color(0.5, 0.5, 0.5, 1); // 灰色\n Color.GREEN = new Color(0, 1, 0, 1); // 纯绿色\n Color.MAGENTA = new Color(1, 0, 1, 1); // 洋红色\n Color.RED = new Color(1, 0, 0, 1); // 纯红色\n Color.WHITE = new Color(1, 1, 1, 1); // 纯白色\n Color.YELLOW = new Color(1, 0.92, 0.016, 1); // 黄色\n return Color;\n}());\n","import { Vector3 } from './vector3';\n/**\n * 三维包围盒\n */\nvar Box3 = /** @class */ (function () {\n /**\n * 构造函数,传入值为空时表示空包围盒\n * @param [min=new Vector3(Infinity)] - 最小角点\n * @param [max=new Vector3(-Infinity)] - 最大角点\n */\n function Box3(min, max) {\n if (min === void 0) { min = new Vector3(Infinity, Infinity, Infinity); }\n if (max === void 0) { max = new Vector3(-Infinity, -Infinity, -Infinity); }\n this.min = min.clone();\n this.max = max.clone();\n }\n /**\n * 设置三维包围盒的值\n * @param min - 三维包围盒最小点\n * @param max - 三维包围盒最大点\n * @returns\n */\n Box3.prototype.set = function (min, max) {\n this.min.copyFrom(min);\n this.max.copyFrom(max);\n return this;\n };\n /**\n * 通过数组构建三维包围盒\n * @param array - 数组集合(每三个数视为一个三维空间点)\n * @returns 三维包围盒\n */\n Box3.prototype.setFromArray = function (array) {\n var minX = Number(Infinity);\n var minY = Number(Infinity);\n var minZ = Number(Infinity);\n var maxX = -Infinity;\n var maxY = -Infinity;\n var maxZ = -Infinity;\n for (var i = 0, l = array.length; i < l; i += 3) {\n var x = array[i];\n var y = array[i + 1];\n var z = array[i + 2];\n if (x < minX) {\n minX = x;\n }\n if (y < minY) {\n minY = y;\n }\n if (z < minZ) {\n minZ = z;\n }\n if (x > maxX) {\n maxX = x;\n }\n if (y > maxY) {\n maxY = y;\n }\n if (z > maxZ) {\n maxZ = z;\n }\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n };\n /**\n * 通过三维空间点构建三维包围盒\n * @param points - 三维空间点集合\n * @returns 三维包围盒\n */\n Box3.prototype.setFromPoints = function (points) {\n this.makeEmpty();\n for (var i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n };\n /**\n * 通过三维空间点(包围盒中心)和大小确定包围盒\n * @param center - 三维包围盒中心点\n * @param size - 三维包围盒大小值\n * @returns 三维包围盒\n */\n Box3.prototype.setFromCenterAndSize = function (center, size) {\n var halfSize = size.clone().multiply(0.5);\n this.min.copyFrom(center).subtract(halfSize);\n this.max.copyFrom(center).add(halfSize);\n return this;\n };\n // TODO\n /**\n * 通过实体构建包围盒\n * @param object - 构件实体\n * @returns 三维包围盒\n */\n Box3.prototype.setFromObject = function (object) {\n this.makeEmpty();\n return this.expandByObject(object);\n };\n /**\n * 克隆三维包围盒\n * @returns 克隆结果\n */\n Box3.prototype.clone = function () {\n return new Box3().copyFrom(this);\n };\n /**\n * 复制三维包围盒\n * @param box - 复制对象\n * @returns 复制结果\n */\n Box3.prototype.copyFrom = function (box) {\n this.min.copyFrom(box.min);\n this.max.copyFrom(box.max);\n return this;\n };\n /**\n * 三维包围盒置空\n * @returns 置空结果\n */\n Box3.prototype.makeEmpty = function () {\n this.min.x = this.min.y = this.min.z = Number(Infinity);\n this.max.x = this.max.y = this.max.z = -Infinity;\n return this;\n };\n /**\n * 三维包围盒判空\n * @returns 判空结果\n */\n Box3.prototype.isEmpty = function () {\n // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n return this.max.x < this.min.x\n || this.max.y < this.min.y\n || this.max.z < this.min.z;\n };\n /**\n * 获取三维包围盒中心\n * @param [target=new Vector3()]\n * @returns\n */\n Box3.prototype.getCenter = function (target) {\n if (target === void 0) { target = new Vector3(); }\n return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiply(0.5);\n };\n /**\n * 获取三维包围盒大小\n * @param [target=new Vector3()] - 结果保存对象\n * @returns 三维包围盒大小\n */\n Box3.prototype.getSize = function (target) {\n if (target === void 0) { target = new Vector3(); }\n return this.isEmpty() ? target.set(0, 0, 0) : target.subtractVectors(this.max, this.min);\n };\n /**\n * 通过三维空间点扩展三维包围盒\n * @param point - 三维空间点\n * @returns 扩展结果\n */\n Box3.prototype.expandByPoint = function (point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n };\n /**\n * 通过三维向量扩展三维包围盒\n * @param vector - 三维向量\n * @returns 扩展结果\n */\n Box3.prototype.expandByVector = function (vector) {\n this.min.subtract(vector);\n this.max.add(vector);\n return this;\n };\n /**\n * 通过实数扩展三维包围盒\n * @param scalar - 扩展大小\n * @returns 扩展结果\n */\n Box3.prototype.expandByScalar = function (scalar) {\n this.min.add(-scalar);\n this.max.add(scalar);\n return this;\n };\n /**\n * 通过包围盒扩展三维包围盒\n * @param box\n * @returns\n */\n Box3.prototype.expandByBox = function (box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n };\n // TODO\n /**\n * 通过实体扩展三维包围盒\n * @param object - 构件实体\n * @returns 扩展结果\n */\n Box3.prototype.expandByObject = function (object) {\n // Computes the world-axis-aligned bounding box of an object (including its children),\n // accounting for both the object's, and children's, world transforms\n object.updateWorldMatrix(false, false);\n var geometry = object.geometry;\n if (geometry !== undefined) {\n if (geometry.boundingBox === null) {\n geometry.computeBoundingBox();\n }\n var box3 = new Box3();\n box3.copyFrom(geometry.boundingBox);\n box3.applyMatrix4(object.matrixWorld);\n this.union(box3);\n }\n var children = object.children;\n for (var i = 0, l = children.length; i < l; i++) {\n this.expandByObject(children[i]);\n }\n return this;\n };\n /**\n * 判断三维包围盒相交关系(if this intersect other)\n * @param point - 三维空间点\n * @returns 点包含判断结果\n */\n Box3.prototype.containsPoint = function (point) {\n return !(point.x < this.min.x\n || point.x > this.max.x\n || point.y < this.min.y\n || point.y > this.max.y\n || point.z < this.min.z\n || point.z > this.max.z);\n };\n /**\n * 判断三维包围盒与三维包围盒的包含关系\n * @param other - 三维包围盒\n * @returns 包围盒包含结果(true 表示包含 other, false 表示不包含 other)\n */\n Box3.prototype.containsBox = function (other) {\n return this.min.x <= other.min.x\n && this.max.x >= other.max.x\n && this.min.y <= other.min.y\n && this.max.y >= other.max.y\n && this.min.z <= other.min.z\n && this.max.z >= other.max.z;\n };\n // TODO\n /**\n * 获取点在三维包围盒的比例位置\n * @param point - 三维空间点\n * @param [target=new Vector3()] - 结果保存对象\n * @returns 点在包围盒比例位置\n */\n Box3.prototype.getParameter = function (point, target) {\n if (target === void 0) { target = new Vector3(); }\n // This can potentially have a divide by zero if the box\n // has a size dimension of 0.\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n };\n /**\n * 判断三维包围盒相交关系(if this intersect other)\n * @param other - 三维包围盒\n * @returns 相交判断结果\n */\n Box3.prototype.intersectsBox = function (other) {\n // using 6 splitting planes to rule out intersections.\n return !(other.max.x < this.min.x || other.min.x > this.max.x\n || other.max.y < this.min.y || other.min.y > this.max.y\n || other.max.z < this.min.z || other.min.z > this.max.z);\n };\n /**\n * 判断三维包围盒和球是否相交\n * @param sphere\n * @returns\n */\n Box3.prototype.intersectsSphere = function (sphere) {\n // Find the point on the AABB closest to the sphere center.\n var vector = new Vector3();\n this.clampPoint(sphere.center, vector);\n // If that point is inside the sphere, the AABB and sphere intersect.\n return vector.distanceSquared(sphere.center) <= (sphere.radius * sphere.radius);\n };\n /**\n * 求点与三维包围盒的最近点\n * @param point - 三维空间点\n * @param [target=new Vector3()] - 结果存放对象\n * @returns 计算结果\n */\n Box3.prototype.clampPoint = function (point, target) {\n if (target === void 0) { target = new Vector3(); }\n return target.copyFrom(point).clamp(this.min, this.max);\n };\n /**\n * 三维空间点到三维包围盒的距离\n * @param point - 三维包围盒\n * @returns 距离结果\n */\n Box3.prototype.distanceToPoint = function (point) {\n var clampedPoint = point.clone().clamp(this.min, this.max);\n return clampedPoint.subtract(point).length();\n };\n /**\n * 三维包围盒求交集\n * @param box - 三维包围盒\n * @returns 求交结果\n */\n Box3.prototype.intersect = function (box) {\n this.min.max(box.min);\n this.max.min(box.max);\n // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n if (this.isEmpty()) {\n this.makeEmpty();\n }\n return this;\n };\n /**\n * 三维包围盒求并集\n * @param box - 三维包围盒\n * @returns 求并结果\n */\n Box3.prototype.union = function (box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n };\n /**\n * 通过三维变换矩阵变化三维包围盒\n * @param matrix - 三维变换矩阵\n * @returns 变换结果\n */\n Box3.prototype.applyMatrix4 = function (matrix, center) {\n if (center === void 0) { center = new Vector3(); }\n // transform of empty box is an empty box.\n if (this.isEmpty()) {\n return this;\n }\n var points = this.getOBBPoints(matrix, center);\n this.setFromPoints(points);\n return this;\n };\n Box3.prototype.getOBBPoints = function (matrix, center) {\n if (center === void 0) { center = new Vector3(); }\n // transform of empty box is an empty box.\n if (this.isEmpty()) {\n return [];\n }\n var points = [];\n // NOTE: I am using a binary pattern to specify all 2^3 combinations below\n points[0] = new Vector3(this.min.x, this.min.y, this.min.z); // 000\n points[1] = new Vector3(this.min.x, this.min.y, this.max.z); // 001\n points[2] = new Vector3(this.min.x, this.max.y, this.min.z); // 010\n points[3] = new Vector3(this.min.x, this.max.y, this.max.z); // 011\n points[4] = new Vector3(this.max.x, this.min.y, this.min.z); // 100\n points[5] = new Vector3(this.max.x, this.min.y, this.max.z); // 101\n points[6] = new Vector3(this.max.x, this.max.y, this.min.z); // 110\n points[7] = new Vector3(this.max.x, this.max.y, this.max.z); // 111\n points.forEach(function (p) {\n p.subtract(center);\n p.applyMatrix(matrix);\n p.add(center);\n });\n return points;\n };\n /**\n * 通过包围盒获取包围球\n * @param target\n * @returns\n */\n Box3.prototype.getBoundingSphere = function (target) {\n this.getCenter(target.center);\n var vector = new Vector3();\n target.radius = this.getSize(vector).length() * 0.5;\n return target;\n };\n /**\n * 三维包围盒位移\n * @param offset - 三维位移向量\n * @returns 位移结果\n */\n Box3.prototype.translate = function (offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n };\n /**\n * 三维包围盒判等\n * @param other - 三维包围盒\n * @returns 判等结果\n */\n Box3.prototype.equals = function (other) {\n return other.min.equals(this.min) && other.max.equals(this.max);\n };\n return Box3;\n}());\nexport { Box3 };\n","import { Box3 } from './box3';\nimport { Vector3 } from './vector3';\n/**\n * 球\n */\nvar Sphere = /** @class */ (function () {\n /**\n * 构造函数\n * @param [center=Vector3.ZERO] - 球心,默认值为(0, 0, 0)\n * @param [radius=-1] - 半径\n */\n function Sphere(center, radius) {\n if (center === void 0) { center = Vector3.ZERO; }\n if (radius === void 0) { radius = -1; }\n this.center = center.clone();\n this.radius = radius;\n }\n /**\n * 通过参数设置球\n * @param center - 球心\n * @param radius - 半径\n * @returns\n */\n Sphere.prototype.set = function (center, radius) {\n this.center.copyFrom(center);\n this.radius = radius;\n return this;\n };\n /**\n * 通过空间点与球心设置球\n * @param points - 三维空间点\n * @param [optionalCenter] - 指定球心\n * @returns\n */\n Sphere.prototype.setFromPoints = function (points, optionalCenter) {\n var center = this.center;\n if (optionalCenter !== undefined) {\n center.copyFrom(optionalCenter);\n var maxRadiusSq = 0;\n for (var i = 0; i < points.length; i++) {\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceSquared(points[i]));\n }\n this.radius = Math.sqrt(maxRadiusSq);\n }\n else {\n var box = new Box3().setFromPoints(points);\n box.getCenter(center);\n this.radius = box.getSize().length() / 2;\n }\n return this;\n };\n /**\n * 复制球\n * @param sphere - 球信息\n * @returns 复制结果\n */\n Sphere.prototype.copyFrom = function (sphere) {\n this.center.copyFrom(sphere.center);\n this.radius = sphere.radius;\n return this;\n };\n /**\n * 球判空\n * @returns 判空结果\n */\n Sphere.prototype.isEmpty = function () {\n return this.radius < 0;\n };\n /**\n * 球置空\n * @returns 置空结果\n */\n Sphere.prototype.makeEmpty = function () {\n this.center.set(0, 0, 0);\n this.radius = -1;\n return this;\n };\n /**\n * 三维空间点包围判断\n * @param point - 三维空间点\n * @returns 空间点包含判断\n */\n Sphere.prototype.containsPoint = function (point) {\n return point.distanceSquared(this.center) <= (this.radius * this.radius);\n };\n /**\n * 空间点与球表面的最短距离\n * @param point - 三维空间点\n * @returns 距离结果\n */\n Sphere.prototype.distanceToPoint = function (point) {\n return (point.distance(this.center) - this.radius);\n };\n /**\n * 与球相交判断\n * @param sphere - 球\n * @returns 相交判断结果\n */\n Sphere.prototype.intersectsSphere = function (sphere) {\n var radiusSum = this.radius + sphere.radius;\n return sphere.center.distanceSquared(this.center) <= (radiusSum * radiusSum);\n };\n /**\n * 与包围盒相交判断\n * @param box - 三维包围盒\n * @returns 相交判断结果\n */\n Sphere.prototype.intersectsBox = function (box) {\n return box.intersectsSphere(this);\n };\n /**\n * 收敛空间点在球范围内\n * 注:乘法的效率要比开方高很多\n * @param point - 三维空间点\n * @param [target] - 结果保存对象\n * @returns 收敛结果\n */\n Sphere.prototype.clampPoint = function (point, target) {\n var deltaLengthSq = this.center.distanceSquared(point);\n if (target === undefined) {\n target = new Vector3();\n }\n target.copyFrom(point);\n if (deltaLengthSq > (this.radius * this.radius)) {\n target.subtract(this.center).normalize();\n target.multiply(this.radius).add(this.center);\n }\n return target;\n };\n /**\n * 根据包围盒获取球\n * @param target - 包围盒\n * @returns 球\n */\n Sphere.prototype.getBoundingBox = function (target) {\n if (target === undefined) {\n target = new Box3();\n }\n if (this.isEmpty()) {\n // Empty sphere produces empty bounding box\n target.makeEmpty();\n return target;\n }\n target.set(this.center, this.center);\n target.expandByScalar(this.radius);\n return target;\n };\n /**\n * 球空间变换\n * @param matrix - 空间变化矩阵\n * @returns 变换结果\n */\n Sphere.prototype.applyMatrix4 = function (matrix) {\n var mt = matrix.elements;\n var scaleXSq = mt[0] * mt[0] + mt[1] * mt[1] + mt[2] * mt[2];\n var scaleYSq = mt[4] * mt[4] + mt[5] * mt[5] + mt[6] * mt[6];\n var scaleZSq = mt[8] * mt[8] + mt[9] * mt[9] + mt[10] * mt[10];\n var maxScale = Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n this.center.applyMatrix(matrix);\n this.radius = this.radius * maxScale;\n return this;\n };\n /**\n * 球位移\n * @param offset - 位移信息\n * @returns 位移结果\n */\n Sphere.prototype.translate = function (offset) {\n this.center.add(offset);\n return this;\n };\n /**\n * 通过三维空间点对球进行扩展\n * @param point - 扩展点\n * @returns 扩展结果\n */\n Sphere.prototype.expandByPoint = function (point) {\n var vector = new Vector3().subtractVectors(point, this.center);\n var lengthSquared = vector.lengthSquared();\n if (lengthSquared > (this.radius * this.radius)) {\n var length_1 = Math.sqrt(lengthSquared);\n var missingRadiusHalf = (length_1 - this.radius) * 0.5;\n // Nudge this sphere towards the target point. Add half the missing distance to radius,\n // and the other half to position. This gives a tighter enclosure, instead of if\n // the whole missing distance were just added to radius.\n this.center.add(vector.multiply(missingRadiusHalf / length_1));\n this.radius += missingRadiusHalf;\n }\n return this;\n };\n /**\n * 包围球求并集\n * @param sphere - 包围球\n * @returns 求并结果\n */\n Sphere.prototype.union = function (sphere) {\n // To enclose another sphere into this sphere, we only need to enclose two points:\n // 1) Enclose the farthest point on the other sphere into this sphere.\n // 2) Enclose the opposite point of the farthest point into this sphere.\n var v1 = new Vector3();\n var toFarthestPoint = new Vector3();\n toFarthestPoint.subtractVectors(sphere.center, this.center).normalize().multiply(sphere.radius);\n this.expandByPoint(v1.copyFrom(sphere.center).add(toFarthestPoint));\n this.expandByPoint(v1.copyFrom(sphere.center).subtract(toFarthestPoint));\n return this;\n };\n /**\n * 包围球求交集\n * @param other - 其它包围球\n * @returns 求交结果\n */\n Sphere.prototype.intersect = function (other) {\n var vector = new Vector3().subtractVectors(this.center, other.center);\n var distance = vector.length();\n var radiusSum = this.radius + other.radius;\n if (distance > radiusSum) {\n return this.makeEmpty();\n }\n this.center = this.center.add(vector.normalize().multiply(distance / 2));\n this.radius = this.radius + other.radius - distance;\n return this;\n };\n /**\n * 包围球判等\n * @param sphere - 包围球\n * @returns 判等结果\n */\n Sphere.prototype.equals = function (sphere) {\n return sphere.center.equals(this.center) && (sphere.radius === this.radius);\n };\n /**\n * 包围球克隆\n * @returns 克隆结果\n */\n Sphere.prototype.clone = function () {\n return new Sphere().copyFrom(this);\n };\n return Sphere;\n}());\nexport { Sphere };\n","/*!\n * Name: @galacean/effects-specification\n * Description: Galacean Effects JSON Specification\n * Author: Ant Group CO., Ltd.\n * Version: v1.0.1\n */\n\n/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n/**\n * 渲染等级\n */\nvar RenderLevel;\n(function (RenderLevel) {\n RenderLevel[\"S\"] = \"S\";\n RenderLevel[\"APlus\"] = \"A+\";\n RenderLevel[\"A\"] = \"A\";\n RenderLevel[\"BPlus\"] = \"B+\";\n RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nvar BlendingMode;\n(function (BlendingMode) {\n /**\n * 普通混合模式\n */\n BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n /**\n * 叠加混合模式\n */\n BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n /**\n * 相乘混合模式\n */\n BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n /**\n * 亮度混合模式\n */\n BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n /**\n * 减色混合模式\n */\n BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n /**\n * 强光混合模式\n */\n BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n /**\n * 弱光混合模式\n */\n BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n /**\n * 亮度叠加混合模式\n */\n BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nvar SideMode;\n(function (SideMode) {\n /**\n * 双面模式\n */\n SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n /**\n * 正面模式\n */\n SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n /**\n * 背面模式\n */\n SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n * 蒙版模式\n */\nvar MaskMode;\n(function (MaskMode) {\n /**\n * 无蒙版\n */\n MaskMode[MaskMode[\"NONE\"] = 0] = \"NONE\";\n /**\n * 蒙版\n */\n MaskMode[MaskMode[\"MASK\"] = 1] = \"MASK\";\n /**\n * 被遮挡\n */\n MaskMode[MaskMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n /**\n * 被反向遮挡\n */\n MaskMode[MaskMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(MaskMode || (MaskMode = {}));\n/**\n * 发射器形状\n */\nvar ShapeType;\n(function (ShapeType) {\n /**\n * 没有类型\n */\n ShapeType[ShapeType[\"NONE\"] = 0] = \"NONE\";\n /**\n * 圆球\n */\n ShapeType[ShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n /**\n * 圆锥\n */\n ShapeType[ShapeType[\"CONE\"] = 2] = \"CONE\";\n /**\n * 半球\n */\n ShapeType[ShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n /**\n * 圆\n */\n ShapeType[ShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n /**\n * 圆环\n */\n ShapeType[ShapeType[\"DONUT\"] = 5] = \"DONUT\";\n /**\n * 矩形\n */\n ShapeType[ShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n /**\n * 矩形框\n */\n ShapeType[ShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n /**\n * 直线\n */\n ShapeType[ShapeType[\"EDGE\"] = 8] = \"EDGE\";\n /**\n * 贴图\n */\n ShapeType[ShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ShapeType || (ShapeType = {}));\n/**\n * 插件类型\n */\nvar PluginType;\n(function (PluginType) {\n /**\n * 陀螺仪\n */\n PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n /**\n * Spine\n */\n PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nvar InteractType;\n(function (InteractType) {\n /**\n * 点击\n */\n InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n /**\n * 拖拽\n */\n InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nvar InteractBehavior;\n(function (InteractBehavior) {\n /**\n * 无\n */\n InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n /**\n * 通知\n */\n InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n /**\n * 重置播放器\n */\n InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n /**\n * 清除元素\n */\n InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n /**\n * 暂停播放器\n */\n InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nvar ItemType;\n(function (ItemType) {\n /**\n * 错误元素\n */\n ItemType[\"base\"] = \"0\";\n /**\n * 图层元素\n */\n ItemType[\"sprite\"] = \"1\";\n /**\n * 粒子元素\n */\n ItemType[\"particle\"] = \"2\";\n /**\n * 空节点元素\n */\n ItemType[\"null\"] = \"3\";\n /**\n * 交互元素\n */\n ItemType[\"interact\"] = \"4\";\n /**\n * 插件元素\n */\n ItemType[\"plugin\"] = \"5\";\n /**\n * 相机元素\n */\n ItemType[\"camera\"] = \"6\";\n /**\n * 预合成元素\n */\n ItemType[\"composition\"] = \"7\";\n /**\n * 滤镜图层\n */\n ItemType[\"filter\"] = \"8\";\n /**\n * Spine 元素\n */\n ItemType[\"spine\"] = \"spine\";\n /**\n * Mesh 元素\n */\n ItemType[\"mesh\"] = \"mesh\";\n /**\n * 节点树元素\n */\n ItemType[\"tree\"] = \"tree\";\n /**\n * 文本元素\n */\n ItemType[\"text\"] = \"text\";\n /**\n * 灯光元素\n */\n ItemType[\"light\"] = \"light\";\n /**\n * 天空盒元素\n */\n ItemType[\"skybox\"] = \"skybox\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nvar RenderMode;\n(function (RenderMode) {\n /**\n * 广告牌模式\n */\n RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n /**\n * 网格模式\n */\n RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n /**\n * 垂直广告牌模式\n */\n RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n /**\n * 水平广告牌模式\n */\n RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nvar ParticleOrigin;\n(function (ParticleOrigin) {\n /**\n * 水平和垂直中点\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n /**\n * 水平左侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n /**\n * 水平左侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n /**\n * 水平左侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n /**\n * 水平中间 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n /**\n * 水平中间 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n /**\n * 水平右侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n /**\n * 水平右侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n /**\n * 水平右侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\n\nvar END_BEHAVIOR_DESTROY = 0;\nvar END_BEHAVIOR_PAUSE = 1;\nvar END_BEHAVIOR_FORWARD = 2;\nvar END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\nvar END_BEHAVIOR_FREEZE = 4;\nvar END_BEHAVIOR_RESTART = 5;\nvar END_BEHAVIOR_DESTROY_CHILDREN = 6;\nvar CAMERA_CLIP_MODE_VERTICAL = 1;\nvar CAMERA_CLIP_MODE_NORMAL = 0;\nvar MESSAGE_ITEM_PHRASE_BEGIN = 2;\nvar MESSAGE_ITEM_PHRASE_END = 1;\n\nvar CameraClipMode;\n(function (CameraClipMode) {\n /**\n * 剪裁上下\n */\n CameraClipMode[CameraClipMode[\"portrait\"] = CAMERA_CLIP_MODE_VERTICAL] = \"portrait\";\n /**\n * 剪裁左右\n */\n CameraClipMode[CameraClipMode[\"landscape\"] = CAMERA_CLIP_MODE_NORMAL] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n/**\n * 结束行为\n */\nvar CompositionEndBehavior;\n(function (CompositionEndBehavior) {\n /**\n * 销毁\n */\n CompositionEndBehavior[CompositionEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n /**\n * 暂停\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause\"] = END_BEHAVIOR_PAUSE] = \"pause\";\n /**\n * 重播\n */\n CompositionEndBehavior[CompositionEndBehavior[\"restart\"] = END_BEHAVIOR_RESTART] = \"restart\";\n /**\n * 无限播放\n */\n CompositionEndBehavior[CompositionEndBehavior[\"forward\"] = END_BEHAVIOR_FORWARD] = \"forward\";\n /**\n * 销毁并保留最后一帧\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause_destroy\"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = \"pause_destroy\";\n})(CompositionEndBehavior || (CompositionEndBehavior = {}));\n\n/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\nvar ValueType;\n(function (ValueType) {\n /**\n * 常数\n */\n ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n /**\n * 二维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n /**\n * 三维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n /**\n * 四维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n /**\n * 随机数\n */\n ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n /**\n * 直线\n */\n ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n /**\n * 曲线\n */\n ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n /**\n * 贝塞尔路径\n */\n ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n /**\n * 颜色\n */\n ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n /**\n * 渐变色\n */\n ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n /**\n * 蒙版形状点集\n */\n ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n /**\n * 蒙版形状切分\n */\n ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n /**\n *直线路径\n */\n ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n /**\n * 多色\n */\n ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n /**\n * 二进制指针\n */\n ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n /**\n * 贝塞尔曲线\n */\n ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n /**\n * 贝塞尔曲线路径\n */\n ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nvar BezierKeyframeType;\n(function (BezierKeyframeType) {\n BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n\nvar ItemEndBehavior;\n(function (ItemEndBehavior) {\n ItemEndBehavior[ItemEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n ItemEndBehavior[ItemEndBehavior[\"loop\"] = END_BEHAVIOR_RESTART] = \"loop\";\n ItemEndBehavior[ItemEndBehavior[\"freeze\"] = END_BEHAVIOR_FREEZE] = \"freeze\";\n})(ItemEndBehavior || (ItemEndBehavior = {}));\nvar ParentItemEndBehavior;\n(function (ParentItemEndBehavior) {\n ParentItemEndBehavior[ParentItemEndBehavior[\"destroyChildren\"] = END_BEHAVIOR_DESTROY_CHILDREN] = \"destroyChildren\";\n})(ParentItemEndBehavior || (ParentItemEndBehavior = {}));\n\n/**\n * 粒子交互行为\n */\nvar ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n /**\n * 无\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n /**\n * 移出粒子\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n\nvar ShapeArcMode;\n(function (ShapeArcMode) {\n /**\n * 随机\n */\n ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n /**\n * 单向循环\n */\n ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n /**\n * 双向循环\n */\n ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n /**\n * 均匀爆发\n */\n ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n\nvar BloomFilterThresholdAvgColor = 0;\n\nvar ModelBoundingType;\n(function (ModelBoundingType) {\n ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n\n// 材质类型\nvar MaterialType;\n(function (MaterialType) {\n MaterialType[\"unlit\"] = \"unlit\";\n MaterialType[\"pbr\"] = \"pbr\";\n // 头发材质,在 pbr 材质基础上扩展\n MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nvar MaterialBlending;\n(function (MaterialBlending) {\n MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n\n/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nvar RenderMode3D;\n(function (RenderMode3D) {\n /**\n * 正常渲染\n */\n RenderMode3D[\"none\"] = \"none\";\n /**\n * 纹理坐标\n */\n RenderMode3D[\"uv\"] = \"uv\";\n /**\n * 世界坐标法线\n */\n RenderMode3D[\"normal\"] = \"normal\";\n /**\n * 基础颜色\n */\n RenderMode3D[\"basecolor\"] = \"basecolor\";\n /**\n * 基础颜色 Alpha\n */\n RenderMode3D[\"alpha\"] = \"alpha\";\n /**\n * 金属度\n */\n RenderMode3D[\"metallic\"] = \"metallic\";\n /**\n * 粗超度\n */\n RenderMode3D[\"roughness\"] = \"roughness\";\n /**\n * 环境遮蔽\n */\n RenderMode3D[\"ao\"] = \"ao\";\n /**\n * 自发光\n */\n RenderMode3D[\"emissive\"] = \"emissive\";\n})(RenderMode3D || (RenderMode3D = {}));\n\nvar TextOverflow;\n(function (TextOverflow) {\n /**\n * display 模式下,会显示所有文本,存在文本超过边界框的情况。\n */\n TextOverflow[TextOverflow[\"display\"] = 0] = \"display\";\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n TextOverflow[TextOverflow[\"clip\"] = 1] = \"clip\";\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n TextOverflow[TextOverflow[\"ellipsis\"] = 2] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nvar TextBaseline;\n(function (TextBaseline) {\n /**\n * 文本顶对齐。\n */\n TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nvar TextAlignment;\n(function (TextAlignment) {\n /**\n * text alignment starts from(x,y) to right direction\n * 从(x,y)开始第一个字符,向右边延伸\n */\n TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * text alignment ends with(x,y) from left direction\n * 从(x,y)结束最后一个字符,向左边延伸\n */\n TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\n/**\n * 文本字重\n */\nvar TextWeight;\n(function (TextWeight) {\n /**\n * 正常\n */\n TextWeight[\"normal\"] = \"normal\";\n /**\n * 粗体\n */\n TextWeight[\"bold\"] = \"bold\";\n /**\n * 瘦体\n */\n TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nvar FontStyle;\n(function (FontStyle) {\n /**\n * 正常\n */\n FontStyle[\"normal\"] = \"normal\";\n /**\n * 斜体\n */\n FontStyle[\"italic\"] = \"italic\";\n /**\n * 倾斜体\n */\n FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n\nexport { BezierKeyframeType, BlendingMode, BloomFilterThresholdAvgColor, CAMERA_CLIP_MODE_NORMAL, CAMERA_CLIP_MODE_VERTICAL, CameraClipMode, CompositionEndBehavior, END_BEHAVIOR_DESTROY, END_BEHAVIOR_DESTROY_CHILDREN, END_BEHAVIOR_FORWARD, END_BEHAVIOR_FREEZE, END_BEHAVIOR_PAUSE, END_BEHAVIOR_PAUSE_AND_DESTROY, END_BEHAVIOR_RESTART, FontStyle, InteractBehavior, InteractType, ItemEndBehavior, ItemType, MESSAGE_ITEM_PHRASE_BEGIN, MESSAGE_ITEM_PHRASE_END, MaskMode, MaterialBlending, MaterialType, ModelBoundingType, ParentItemEndBehavior, ParticleInteractionBehavior, ParticleOrigin, PluginType, RenderLevel, RenderMode, RenderMode3D, ShapeArcMode, ShapeType, SideMode, TextAlignment, TextBaseline, TextOverflow, TextWeight, ValueType };\n//# sourceMappingURL=index.mjs.map\n","/**\n * Earcut.js from: https://github.com/mapbox/earcut/tree/v2.2.2\n */\n\nexport function earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nexport function linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nexport function filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nexport function isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nexport function isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nexport function eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n var b = splitPolygon(outerNode, hole);\n\n // filter collinear points around the cuts\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nexport function indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nexport function isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nexport function equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nexport function intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nexport function locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nexport function splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nexport function removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nexport function Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","/*!\n * Name: @galacean/effects-specification\n * Description: Galacean Effects JSON Specification\n * Author: Ant Group CO., Ltd.\n * Version: v1.0.1\n */\n\n/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n/**\n * 渲染等级\n */\nvar RenderLevel;\n(function (RenderLevel) {\n RenderLevel[\"S\"] = \"S\";\n RenderLevel[\"APlus\"] = \"A+\";\n RenderLevel[\"A\"] = \"A\";\n RenderLevel[\"BPlus\"] = \"B+\";\n RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nvar BlendingMode;\n(function (BlendingMode) {\n /**\n * 普通混合模式\n */\n BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n /**\n * 叠加混合模式\n */\n BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n /**\n * 相乘混合模式\n */\n BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n /**\n * 亮度混合模式\n */\n BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n /**\n * 减色混合模式\n */\n BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n /**\n * 强光混合模式\n */\n BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n /**\n * 弱光混合模式\n */\n BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n /**\n * 亮度叠加混合模式\n */\n BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nvar SideMode;\n(function (SideMode) {\n /**\n * 双面模式\n */\n SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n /**\n * 正面模式\n */\n SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n /**\n * 背面模式\n */\n SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n * 蒙版模式\n */\nvar MaskMode;\n(function (MaskMode) {\n /**\n * 无蒙版\n */\n MaskMode[MaskMode[\"NONE\"] = 0] = \"NONE\";\n /**\n * 蒙版\n */\n MaskMode[MaskMode[\"MASK\"] = 1] = \"MASK\";\n /**\n * 被遮挡\n */\n MaskMode[MaskMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n /**\n * 被反向遮挡\n */\n MaskMode[MaskMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(MaskMode || (MaskMode = {}));\n/**\n * 发射器形状\n */\nvar ShapeType;\n(function (ShapeType) {\n /**\n * 没有类型\n */\n ShapeType[ShapeType[\"NONE\"] = 0] = \"NONE\";\n /**\n * 圆球\n */\n ShapeType[ShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n /**\n * 圆锥\n */\n ShapeType[ShapeType[\"CONE\"] = 2] = \"CONE\";\n /**\n * 半球\n */\n ShapeType[ShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n /**\n * 圆\n */\n ShapeType[ShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n /**\n * 圆环\n */\n ShapeType[ShapeType[\"DONUT\"] = 5] = \"DONUT\";\n /**\n * 矩形\n */\n ShapeType[ShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n /**\n * 矩形框\n */\n ShapeType[ShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n /**\n * 直线\n */\n ShapeType[ShapeType[\"EDGE\"] = 8] = \"EDGE\";\n /**\n * 贴图\n */\n ShapeType[ShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ShapeType || (ShapeType = {}));\n/**\n * 插件类型\n */\nvar PluginType;\n(function (PluginType) {\n /**\n * 陀螺仪\n */\n PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n /**\n * Spine\n */\n PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nvar InteractType;\n(function (InteractType) {\n /**\n * 点击\n */\n InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n /**\n * 拖拽\n */\n InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nvar InteractBehavior;\n(function (InteractBehavior) {\n /**\n * 无\n */\n InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n /**\n * 通知\n */\n InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n /**\n * 重置播放器\n */\n InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n /**\n * 清除元素\n */\n InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n /**\n * 暂停播放器\n */\n InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nvar ItemType;\n(function (ItemType) {\n /**\n * 错误元素\n */\n ItemType[\"base\"] = \"0\";\n /**\n * 图层元素\n */\n ItemType[\"sprite\"] = \"1\";\n /**\n * 粒子元素\n */\n ItemType[\"particle\"] = \"2\";\n /**\n * 空节点元素\n */\n ItemType[\"null\"] = \"3\";\n /**\n * 交互元素\n */\n ItemType[\"interact\"] = \"4\";\n /**\n * 插件元素\n */\n ItemType[\"plugin\"] = \"5\";\n /**\n * 相机元素\n */\n ItemType[\"camera\"] = \"6\";\n /**\n * 预合成元素\n */\n ItemType[\"composition\"] = \"7\";\n /**\n * 滤镜图层\n */\n ItemType[\"filter\"] = \"8\";\n /**\n * Spine 元素\n */\n ItemType[\"spine\"] = \"spine\";\n /**\n * Mesh 元素\n */\n ItemType[\"mesh\"] = \"mesh\";\n /**\n * 节点树元素\n */\n ItemType[\"tree\"] = \"tree\";\n /**\n * 文本元素\n */\n ItemType[\"text\"] = \"text\";\n /**\n * 灯光元素\n */\n ItemType[\"light\"] = \"light\";\n /**\n * 天空盒元素\n */\n ItemType[\"skybox\"] = \"skybox\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nvar RenderMode;\n(function (RenderMode) {\n /**\n * 广告牌模式\n */\n RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n /**\n * 网格模式\n */\n RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n /**\n * 垂直广告牌模式\n */\n RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n /**\n * 水平广告牌模式\n */\n RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nvar ParticleOrigin;\n(function (ParticleOrigin) {\n /**\n * 水平和垂直中点\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n /**\n * 水平左侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n /**\n * 水平左侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n /**\n * 水平左侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n /**\n * 水平中间 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n /**\n * 水平中间 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n /**\n * 水平右侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n /**\n * 水平右侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n /**\n * 水平右侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\n\nvar END_BEHAVIOR_DESTROY = 0;\nvar END_BEHAVIOR_PAUSE = 1;\nvar END_BEHAVIOR_FORWARD = 2;\nvar END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\nvar END_BEHAVIOR_FREEZE = 4;\nvar END_BEHAVIOR_RESTART = 5;\nvar END_BEHAVIOR_DESTROY_CHILDREN = 6;\nvar CAMERA_CLIP_MODE_VERTICAL = 1;\nvar CAMERA_CLIP_MODE_NORMAL = 0;\n\nvar CameraClipMode;\n(function (CameraClipMode) {\n /**\n * 剪裁上下\n */\n CameraClipMode[CameraClipMode[\"portrait\"] = CAMERA_CLIP_MODE_VERTICAL] = \"portrait\";\n /**\n * 剪裁左右\n */\n CameraClipMode[CameraClipMode[\"landscape\"] = CAMERA_CLIP_MODE_NORMAL] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n/**\n * 结束行为\n */\nvar CompositionEndBehavior;\n(function (CompositionEndBehavior) {\n /**\n * 销毁\n */\n CompositionEndBehavior[CompositionEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n /**\n * 暂停\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause\"] = END_BEHAVIOR_PAUSE] = \"pause\";\n /**\n * 重播\n */\n CompositionEndBehavior[CompositionEndBehavior[\"restart\"] = END_BEHAVIOR_RESTART] = \"restart\";\n /**\n * 无限播放\n */\n CompositionEndBehavior[CompositionEndBehavior[\"forward\"] = END_BEHAVIOR_FORWARD] = \"forward\";\n /**\n * 销毁并保留最后一帧\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause_destroy\"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = \"pause_destroy\";\n})(CompositionEndBehavior || (CompositionEndBehavior = {}));\n\n/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\nvar ValueType;\n(function (ValueType) {\n /**\n * 常数\n */\n ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n /**\n * 二维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n /**\n * 三维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n /**\n * 四维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n /**\n * 随机数\n */\n ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n /**\n * 直线\n */\n ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n /**\n * 曲线\n */\n ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n /**\n * 贝塞尔路径\n */\n ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n /**\n * 颜色\n */\n ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n /**\n * 渐变色\n */\n ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n /**\n * 蒙版形状点集\n */\n ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n /**\n * 蒙版形状切分\n */\n ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n /**\n *直线路径\n */\n ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n /**\n * 多色\n */\n ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n /**\n * 二进制指针\n */\n ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n /**\n * 贝塞尔曲线\n */\n ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n /**\n * 贝塞尔曲线路径\n */\n ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nvar BezierKeyframeType;\n(function (BezierKeyframeType) {\n BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n\nvar ItemEndBehavior;\n(function (ItemEndBehavior) {\n ItemEndBehavior[ItemEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n ItemEndBehavior[ItemEndBehavior[\"loop\"] = END_BEHAVIOR_RESTART] = \"loop\";\n ItemEndBehavior[ItemEndBehavior[\"freeze\"] = END_BEHAVIOR_FREEZE] = \"freeze\";\n})(ItemEndBehavior || (ItemEndBehavior = {}));\nvar ParentItemEndBehavior;\n(function (ParentItemEndBehavior) {\n ParentItemEndBehavior[ParentItemEndBehavior[\"destroyChildren\"] = END_BEHAVIOR_DESTROY_CHILDREN] = \"destroyChildren\";\n})(ParentItemEndBehavior || (ParentItemEndBehavior = {}));\n\n/**\n * 粒子交互行为\n */\nvar ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n /**\n * 无\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n /**\n * 移出粒子\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n\nvar ShapeArcMode;\n(function (ShapeArcMode) {\n /**\n * 随机\n */\n ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n /**\n * 单向循环\n */\n ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n /**\n * 双向循环\n */\n ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n /**\n * 均匀爆发\n */\n ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n\nvar ModelBoundingType;\n(function (ModelBoundingType) {\n ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n\n// 材质类型\nvar MaterialType;\n(function (MaterialType) {\n MaterialType[\"unlit\"] = \"unlit\";\n MaterialType[\"pbr\"] = \"pbr\";\n // 头发材质,在 pbr 材质基础上扩展\n MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nvar MaterialBlending;\n(function (MaterialBlending) {\n MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n\n/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nvar RenderMode3D;\n(function (RenderMode3D) {\n /**\n * 正常渲染\n */\n RenderMode3D[\"none\"] = \"none\";\n /**\n * 纹理坐标\n */\n RenderMode3D[\"uv\"] = \"uv\";\n /**\n * 世界坐标法线\n */\n RenderMode3D[\"normal\"] = \"normal\";\n /**\n * 基础颜色\n */\n RenderMode3D[\"basecolor\"] = \"basecolor\";\n /**\n * 基础颜色 Alpha\n */\n RenderMode3D[\"alpha\"] = \"alpha\";\n /**\n * 金属度\n */\n RenderMode3D[\"metallic\"] = \"metallic\";\n /**\n * 粗超度\n */\n RenderMode3D[\"roughness\"] = \"roughness\";\n /**\n * 环境遮蔽\n */\n RenderMode3D[\"ao\"] = \"ao\";\n /**\n * 自发光\n */\n RenderMode3D[\"emissive\"] = \"emissive\";\n})(RenderMode3D || (RenderMode3D = {}));\n\nvar TextOverflow;\n(function (TextOverflow) {\n /**\n * display 模式下,会显示所有文本,存在文本超过边界框的情况。\n */\n TextOverflow[TextOverflow[\"display\"] = 0] = \"display\";\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n TextOverflow[TextOverflow[\"clip\"] = 1] = \"clip\";\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n TextOverflow[TextOverflow[\"ellipsis\"] = 2] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nvar TextBaseline;\n(function (TextBaseline) {\n /**\n * 文本顶对齐。\n */\n TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nvar TextAlignment;\n(function (TextAlignment) {\n /**\n * text alignment starts from(x,y) to right direction\n * 从(x,y)开始第一个字符,向右边延伸\n */\n TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * text alignment ends with(x,y) from left direction\n * 从(x,y)结束最后一个字符,向左边延伸\n */\n TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\n/**\n * 文本字重\n */\nvar TextWeight;\n(function (TextWeight) {\n /**\n * 正常\n */\n TextWeight[\"normal\"] = \"normal\";\n /**\n * 粗体\n */\n TextWeight[\"bold\"] = \"bold\";\n /**\n * 瘦体\n */\n TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nvar FontStyle;\n(function (FontStyle) {\n /**\n * 正常\n */\n FontStyle[\"normal\"] = \"normal\";\n /**\n * 斜体\n */\n FontStyle[\"italic\"] = \"italic\";\n /**\n * 倾斜体\n */\n FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction arrAdd(arr, item) {\n if (!arr.includes(item)) {\n arr.push(item);\n return true;\n }\n}\n/**\n * @deprecated 请直接使用 Array.prototype.forEach 或 for...of\n * @param object\n * @param callback\n * @returns the mutated input object\n */\nfunction forEach(object, callback, thisObj) {\n if (object) {\n for (var name_1 in object) {\n if (Object.hasOwnProperty.call(object, name_1)) {\n callback.call(thisObj, object[name_1], name_1);\n }\n }\n }\n return object;\n}\nfunction ensureFixedNumber(a) {\n if (Number.isFinite(a)) {\n return [ValueType.CONSTANT, a];\n }\n if (a) {\n if (a[0] === 'lines') {\n return [ValueType.LINE, a[1]];\n }\n if (a[0] === 'curve') {\n return [ValueType.CURVE, a[1]];\n }\n if (a[0] === 'static') {\n return [ValueType.CONSTANT, a[1]];\n }\n }\n}\nfunction ensureFixedNumberWithRandom(a, p) {\n if (Array.isArray(a) && a[0] === 'random') {\n return [ValueType.CONSTANT, a[1][p]];\n }\n return ensureFixedNumber(a);\n}\nfunction ensureRGBAValue(a) {\n if (a && a[0] === 'color') {\n return colorToArr(a[1], true);\n }\n return [1, 1, 1, 1];\n}\nfunction ensureColorExpression(a, normalized) {\n if (a) {\n if (a[0] === 'colors') {\n return [ValueType.COLORS, a[1].map(function (color) { return colorToArr(color, normalized); })];\n }\n else if (a[0] === 'gradient') {\n return ensureGradient(a[1], normalized);\n }\n else if (a[0] === 'color') {\n return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];\n }\n }\n}\nfunction ensureNumberExpression(a) {\n if (a && a[0] === 'random') {\n return [ValueType.RANDOM, a[1]];\n }\n return ensureFixedNumber(a);\n}\nfunction ensureValueGetter(a) {\n if (Array.isArray(a) && typeof a[0] === 'string') {\n return ensureNumberExpression(a) || ensureFixedVec3(a) || ensureColorExpression(a) || a;\n }\n return a;\n}\nfunction ensureGradient(a, normalized) {\n if (a) {\n var stops_1 = [];\n Object.getOwnPropertyNames(a).forEach(function (p) {\n var stop = parsePercent(p);\n var color = colorToArr(a[p], normalized);\n stops_1.push([stop, color[0], color[1], color[2], color[3]]);\n });\n stops_1 = stops_1.sort(function (a, b) { return a[0] - b[0]; });\n return [ValueType.GRADIENT_COLOR, stops_1];\n }\n}\nfunction colorToArr(hex, normalized) {\n var ret;\n if (typeof hex === 'string') {\n hex = hex.replace(/[\\s\\t\\r\\n]/g, '');\n var m = /rgba?\\(([.\\d]+),([.\\d]+),([.\\d]+),?([.\\d]+)?\\)/.exec(hex);\n if (m) {\n var a = +m[4];\n ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : Math.round(a * 255)];\n }\n else if (/^#[a-f\\d]{3}$/i.test(hex)) {\n ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];\n // eslint-disable-next-line no-cond-assign\n }\n else if (m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)) {\n ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255] || [0, 0, 0, 255];\n }\n }\n else if (hex instanceof Array) {\n ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : Math.round(hex[3] * 255)];\n }\n if (normalized) {\n // @ts-expect-error\n ret = normalizeColor(ret);\n }\n // @ts-expect-error\n return ret;\n}\nfunction normalizeColor(a) {\n if (Array.isArray(a)) {\n return a.map(function (i) { return Number.isFinite(i / 255) ? Number((i / 255).toFixed(6)) : 0; });\n }\n}\nfunction parsePercent(c) {\n var match = /^(-)?([\\d+.]+)%$/.exec(c);\n if (match) {\n return +match[2] / 100 * (match[1] ? -1 : 1);\n }\n return +c;\n}\nfunction getGradientColor(color, normalized) {\n if (Array.isArray(color)) {\n // @ts-expect-error\n return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);\n }\n else {\n return ensureGradient(color, normalized);\n }\n}\nfunction ensureFixedVec3(a) {\n if (a) {\n if (a.length === 3) {\n return [ValueType.CONSTANT_VEC3, a];\n }\n if (a[0] === 'path') {\n return [ValueType.LINEAR_PATH, a[1]];\n }\n if (a[0] === 'bezier') {\n return [ValueType.BEZIER_PATH, a[1]];\n }\n }\n}\nfunction objectValueToNumber(o) {\n var e_1, _a;\n try {\n for (var _b = __values(Object.keys(o)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n o[key] = Number(o[key]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return o;\n}\nfunction deleteEmptyValue(o) {\n var e_2, _a;\n try {\n for (var _b = __values(Object.keys(o)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (o[key] === undefined) {\n delete o[key];\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return o;\n}\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar d2r = Math.PI / 180;\nvar r2d = 180 / Math.PI;\nfunction quatFromXYZRotation(out, x, y, z) {\n var c1 = cos((x * d2r) / 2);\n var c2 = cos((y * d2r) / 2);\n var c3 = cos((z * d2r) / 2);\n var s1 = sin((x * d2r) / 2);\n var s2 = sin((y * d2r) / 2);\n var s3 = sin((z * d2r) / 2);\n out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n return out;\n}\nfunction clamp(v, min, max) {\n return v > max ? max : (v < min ? min : v);\n}\nfunction rotationZYXFromQuat(out, quat) {\n var x = quat[0];\n var y = quat[1];\n var z = quat[2];\n var w = quat[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var m11 = 1 - yy - zz, m12 = yx - wz;\n var m21 = yx + wz, m22 = 1 - xx - zz;\n var m31 = zx - wy, m32 = zy + wx, m33 = 1 - xx - yy;\n out[1] = Math.asin(clamp(-m31, -1, 1)) * r2d;\n if (Math.abs(m31) < 0.9999999) {\n out[0] = Math.atan2(m32, m33) * r2d;\n out[2] = Math.atan2(m21, m11) * r2d;\n }\n else {\n out[0] = 0;\n out[2] = Math.atan2(-m12, m22) * r2d;\n }\n return out;\n}\n\nfunction getStandardParticleContent(particle) {\n var _a;\n var options = particle.options;\n var transform = particle.transform;\n var shape = {\n type: ShapeType.NONE,\n };\n if (particle.shape) {\n var shapeType = (_a = particle.shape.shape) === null || _a === void 0 ? void 0 : _a.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');\n shape = __assign(__assign({}, particle.shape), { type: ShapeType[shapeType] });\n if (particle.shape.upDirection) {\n var _b = __read(particle.shape.upDirection, 3), x = _b[0], y = _b[1], z = _b[2];\n if (x === 0 && y === 0 && z === 0) {\n delete shape.upDirection;\n }\n }\n }\n if (options.startTurbulence) {\n shape.turbulenceX = ensureNumberExpression(options.turbulenceX);\n shape.turbulenceY = ensureNumberExpression(options.turbulenceY);\n shape.turbulenceZ = ensureNumberExpression(options.turbulenceZ);\n }\n var emission = particle.emission;\n if (emission.bursts && emission.bursts.length > 0) {\n emission.bursts = emission.bursts.map(function (b) { return objectValueToNumber(b); });\n }\n if (emission.burstOffsets && emission.burstOffsets.length > 0) {\n emission.burstOffsets = emission.burstOffsets.map(function (b) { return objectValueToNumber(b); });\n }\n if (emission.rateOverTime) {\n emission.rateOverTime = ensureNumberExpression(emission.rateOverTime);\n }\n var ret = {\n renderer: particle.renderer,\n shape: shape,\n splits: particle.splits,\n emission: emission,\n options: {\n startLifetime: ensureNumberExpression(options.startLifetime),\n start3DSize: !!options.start3DSize,\n startSize: ensureNumberExpression(options.startSize),\n startSizeX: ensureNumberExpression(options.startSizeX),\n startSizeY: ensureNumberExpression(options.startSizeY),\n sizeAspect: ensureNumberExpression(options.sizeAspect),\n maxCount: options.maxCount,\n startDelay: ensureNumberExpression(options.startDelay),\n startColor: ensureColorExpression(options.startColor, true),\n startRotationZ: ensureNumberExpression(options.startRotation || options.startRotationZ),\n particleFollowParent: options.particleFollowParent,\n },\n };\n if (options.start3DRotation) {\n ret.options.startRotationX = ensureNumberExpression(options.startRotationX);\n ret.options.startRotationY = ensureNumberExpression(options.startRotationY);\n }\n if (particle.filter) {\n var filter_1 = {};\n forEach(particle.filter, function (val, key) {\n // @ts-expect-error\n filter_1[key] = ensureValueGetter(val);\n });\n ret.filter = filter_1;\n }\n if (transform && transform.path) {\n ret.emitterTransform = {\n path: ensureFixedVec3(transform.path),\n };\n }\n var sizeOverLifetime = particle.sizeOverLifetime;\n if (sizeOverLifetime) {\n if (sizeOverLifetime.separateAxes) {\n ret.sizeOverLifetime = {\n separateAxes: true,\n x: ensureNumberExpression(sizeOverLifetime.x),\n y: ensureNumberExpression(sizeOverLifetime.y),\n };\n }\n else {\n ret.sizeOverLifetime = {\n size: ensureNumberExpression(sizeOverLifetime.size),\n };\n }\n }\n var velocityOverLifetime = particle.velocityOverLifetime || {};\n var sol = velocityOverLifetime.speedOverLifetime;\n if (sol) {\n sol = ensureFixedNumber(sol);\n }\n else {\n sol = undefined;\n }\n ret.positionOverLifetime = {\n gravity: options.gravity,\n gravityOverLifetime: ensureFixedNumber(options.gravityModifier),\n startSpeed: ensureNumberExpression(options.startSpeed),\n speedOverLifetime: sol,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureNumberExpression(velocityOverLifetime.linearX),\n linearY: ensureNumberExpression(velocityOverLifetime.linearY),\n linearZ: ensureNumberExpression(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureNumberExpression(velocityOverLifetime.orbitalX),\n orbitalY: ensureNumberExpression(velocityOverLifetime.orbitalY),\n orbitalZ: ensureNumberExpression(velocityOverLifetime.orbitalZ),\n forceTarget: velocityOverLifetime.forceTarget,\n target: velocityOverLifetime.target,\n forceCurve: ensureFixedNumber(velocityOverLifetime.forceCurve),\n };\n deleteEmptyValue(ret.positionOverLifetime);\n var rotationOverLifetime = particle.rotationOverLifetime;\n if (rotationOverLifetime) {\n ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n z: ensureNumberExpression(rotationOverLifetime.separateAxes ? rotationOverLifetime.z : rotationOverLifetime.angularVelocity),\n };\n if (rotationOverLifetime.separateAxes) {\n ret.rotationOverLifetime.y = ensureFixedNumber(rotationOverLifetime.y);\n ret.rotationOverLifetime.x = ensureFixedNumber(rotationOverLifetime.x);\n }\n }\n var colorOverLifetime = particle.colorOverLifetime;\n if (colorOverLifetime) {\n var col = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n var textureSheetAnimation = particle.textureSheetAnimation;\n if (textureSheetAnimation) {\n ret.textureSheetAnimation = {\n row: textureSheetAnimation.row,\n col: textureSheetAnimation.col,\n total: textureSheetAnimation.total,\n animate: textureSheetAnimation.animate,\n cycles: ensureFixedNumber(textureSheetAnimation.cycles),\n animationDelay: ensureFixedNumberWithRandom(textureSheetAnimation.animationDelay, 0),\n animationDuration: ensureFixedNumberWithRandom(textureSheetAnimation.animationDuration, 0),\n };\n }\n var trials = particle.trails;\n if (trials) {\n ret.trails = {\n lifetime: ensureNumberExpression(trials.lifetime),\n dieWithParticles: trials.dieWithParticles,\n maxPointPerTrail: trials.maxPointPerTrail,\n minimumVertexDistance: trials.minimumVertexDistance,\n widthOverTrail: ensureFixedNumber(trials.widthOverTrail),\n colorOverTrail: trials.colorOverTrail && getGradientColor(trials.colorOverTrail, false),\n blending: trials.blending,\n colorOverLifetime: trials.colorOverLifetime && getGradientColor(trials.colorOverLifetime, false),\n inheritParticleColor: trials.inheritParticleColor,\n occlusion: trials.occlusion,\n transparentOcclusion: trials.transparentOcclusion,\n orderOffset: trials.orderOffset,\n sizeAffectsLifetime: trials.sizeAffectsLifetime,\n sizeAffectsWidth: trials.sizeAffectsWidth,\n texture: trials.texture,\n parentAffectsPosition: trials.parentAffectsPosition,\n opacityOverLifetime: ensureNumberExpression(trials.opacityOverLifetime),\n };\n }\n ret.trails && deleteEmptyValue(ret.trails);\n var interaction = particle.interaction;\n if (interaction) {\n ret.interaction = {\n behavior: interaction.behavior,\n radius: interaction.radius,\n multiple: interaction.multiple,\n };\n }\n return ret;\n}\n\nfunction getStandardNullContent(sprite, transform) {\n var _a;\n var opt = sprite.options;\n var velocityOverLifetime = sprite.velocityOverLifetime || {};\n var positionOverLifetime = {\n path: ensureFixedVec3((_a = sprite.transform) === null || _a === void 0 ? void 0 : _a.path),\n gravity: opt.gravity,\n gravityOverLifetime: ensureFixedNumber(opt.gravityModifier),\n direction: opt.direction,\n startSpeed: opt.startSpeed,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureFixedNumber(velocityOverLifetime.linearX),\n linearY: ensureFixedNumber(velocityOverLifetime.linearY),\n linearZ: ensureFixedNumber(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureFixedNumber(velocityOverLifetime.orbitalX),\n orbitalY: ensureFixedNumber(velocityOverLifetime.orbitalY),\n orbitalZ: ensureFixedNumber(velocityOverLifetime.orbitalZ),\n speedOverLifetime: ensureFixedNumber(velocityOverLifetime.speedOverLifetime),\n };\n deleteEmptyValue(positionOverLifetime);\n var ret = {\n options: {\n startColor: ensureRGBAValue(opt.startColor),\n },\n positionOverLifetime: positionOverLifetime,\n };\n if (opt.startSize) {\n transform.scale = [opt.startSize, opt.startSize / (opt.sizeAspect || 1), 1];\n }\n if (opt.startRotation) {\n if (!transform.rotation) {\n transform.rotation = [0, 0, opt.startRotation];\n }\n else {\n transform.rotation[2] += opt.startRotation;\n }\n }\n var rotationOverLifetime = sprite.rotationOverLifetime;\n if (rotationOverLifetime) {\n var rot = ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n };\n if (rot.separateAxes) {\n rot.x = ensureFixedNumber(rotationOverLifetime.x);\n rot.y = ensureFixedNumber(rotationOverLifetime.y);\n rot.z = ensureFixedNumber(rotationOverLifetime.z);\n }\n else {\n rot.z = ensureFixedNumber(rotationOverLifetime.angularVelocity);\n }\n }\n var colorOverLifetime = sprite.colorOverLifetime;\n if (colorOverLifetime) {\n var col = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n var sizeOverLifetime = sprite.sizeOverLifetime;\n if (sizeOverLifetime) {\n ret.sizeOverLifetime = {\n separateAxes: sizeOverLifetime.separateAxes,\n size: ensureFixedNumber(sizeOverLifetime.size),\n x: ensureFixedNumber(sizeOverLifetime.x),\n y: ensureFixedNumber(sizeOverLifetime.y),\n z: ensureFixedNumber(sizeOverLifetime.z),\n };\n }\n return ret;\n}\nfunction getStandardSpriteContent(sprite, transform) {\n var ret = getStandardNullContent(sprite, transform);\n var texAni = sprite.textureSheetAnimation;\n if (texAni) {\n ret.textureSheetAnimation = {\n row: texAni.row,\n col: texAni.col,\n total: texAni.total || undefined,\n animate: texAni.animate,\n };\n }\n ret.renderer = sprite.renderer;\n if (sprite.splits) {\n ret.splits = sprite.splits;\n }\n if (sprite.interaction) {\n ret.interaction = sprite.interaction;\n }\n return ret;\n}\n\nfunction getStandardInteractContent(ui) {\n var options = ui.options;\n var option;\n switch (options.type) {\n case 'click': {\n option = {\n type: InteractType.CLICK,\n showPreview: options.showPreview,\n previewColor: options.previewColor && ensureRGBAValue(options.previewColor),\n behavior: options.behavior || InteractBehavior.NOTIFY,\n };\n break;\n }\n case 'drag': {\n option = {\n type: InteractType.DRAG,\n enableInEditor: !!options.enableInEditor,\n dxRange: options.dxRange,\n dyRange: options.dyRange,\n target: options.target,\n };\n break;\n }\n case 'message': {\n option = {\n type: InteractType.MESSAGE,\n };\n break;\n }\n }\n var ret = {\n // @ts-expect-error\n options: option,\n };\n return ret;\n}\n\nfunction getStandardCameraContent(model) {\n var _a, _b;\n var opt = model.options;\n var ret = {\n options: {\n fov: opt.fov,\n far: opt.far,\n near: opt.near,\n clipMode: opt.clipMode,\n },\n };\n var velocityOverLifetime = model.velocityOverLifetime;\n if (velocityOverLifetime || ((_a = model.transform) === null || _a === void 0 ? void 0 : _a.path)) {\n var positionOverLifetime = {\n path: ensureFixedVec3((_b = model.transform) === null || _b === void 0 ? void 0 : _b.path),\n linearX: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateX),\n linearY: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateY),\n linearZ: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateZ),\n };\n deleteEmptyValue(positionOverLifetime);\n ret.positionOverLifetime = positionOverLifetime;\n }\n var rol = model.rotationOverLifetime;\n if (rol) {\n var rotationOverLifetime = {\n separateAxes: rol.separateAxes,\n x: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateX),\n y: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateY),\n z: rol.separateAxes ? ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateZ) : ensureFixedNumber(rol.rotation),\n };\n deleteEmptyValue(rotationOverLifetime);\n ret.rotationOverLifetime = rotationOverLifetime;\n }\n return ret;\n}\n\nvar convertParams = [\n 'strength',\n 'bloomAddon',\n 'colorAddon',\n 'period',\n 'waveMovement',\n 'colorThreshold',\n 'xOpacity',\n 'yOpacity',\n 'feather',\n];\nvar pathParams = [\n 'path', 'position',\n];\nfunction getStandardFilterContent(filter) {\n var ret = {};\n forEach(filter, function (val, key) {\n if (convertParams.includes(key)) {\n ret[key] = ensureFixedNumber(val);\n }\n else if (pathParams.includes(key)) {\n ret[key] = ensureFixedVec3(val);\n }\n else {\n ret[key] = val;\n }\n });\n return ret;\n}\n\n/**\n * 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)\n */\nfunction version21Migration(json) {\n json.compositions.forEach(function (composition) {\n composition.items.forEach(function (item) {\n if (item.type === ItemType.null) {\n if (item.endBehavior === ItemEndBehavior.destroy) {\n item.endBehavior = ItemEndBehavior.freeze;\n }\n }\n });\n });\n json.version = '2.1';\n return json;\n}\n/**\n * 2.2 以下版本数据适配(mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配)\n */\nfunction version22Migration(json) {\n var _a;\n var singleVersion = (_a = json.version) === null || _a === void 0 ? void 0 : _a.split('.');\n if (!singleVersion || Number(singleVersion[0]) > 2 || (Number(singleVersion[0]) === 2 && Number(singleVersion[1]) >= 2)) {\n return json;\n }\n json.compositions.forEach(function (composition) {\n composition.items.forEach(function (item) {\n if (item.type === ItemType.mesh || item.type === ItemType.light) {\n item.endBehavior = item.endBehavior === 1 ? ItemEndBehavior.destroy : item.endBehavior;\n }\n });\n });\n return json;\n}\n\nvar v0 = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(\\w+)\\.\\d+)?$/;\nvar standardVersion = /^(\\d+)\\.(\\d+)$/;\nvar reverseParticle = false;\nfunction getStandardJSON(json) {\n var _a, _b;\n if (!json || typeof json !== 'object') {\n throw Error('expect a json object');\n }\n // 修正老版本数据中,meshItem以及lightItem结束行为错误问题\n version22Migration(json);\n if (v0.test(json.version)) {\n reverseParticle = ((_a = (/^(\\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';\n return version21Migration(getStandardJSONFromV0(json));\n }\n var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];\n if (mainVersion) {\n if (Number(mainVersion) < 2) {\n return version21Migration(json);\n }\n return json;\n }\n throw Error('invalid json version ' + json.version);\n}\nvar currentVersion = '1.0';\nfunction getStandardJSONFromV0(json) {\n var _a, _b;\n currentVersion = '1.0';\n var plugins = json.plugins || [];\n if ((_a = json.bins) === null || _a === void 0 ? void 0 : _a.length) {\n currentVersion = '1.3';\n }\n var requires = (json.requires || []).slice();\n var images = json.images.map(function (img, index) { return getStandardImage(img, index, json.imageTags || []); });\n var textures = json.textures || images.map(function (img, i) { return ({ source: i, flipY: true }); });\n var ret = {\n plugins: plugins,\n shapes: json.shapes || [],\n type: 'ge',\n version: currentVersion,\n playerVersion: (_b = json.playerVersion) !== null && _b !== void 0 ? _b : {\n web: '',\n native: '',\n },\n compositionId: json.compositionId + '',\n compositions: json.compositions.map(function (comp) { return getStandardComposition(comp, { plugins: plugins, requires: requires }); }),\n images: images,\n imgUsage: json._imgs,\n binUsage: json.binUsage,\n spines: json.spines,\n requires: json.requires,\n textures: textures,\n bins: (json.bins || []).slice(),\n };\n if (json._textures) {\n ret._textures = json._textures;\n }\n return ret;\n}\nfunction getStandardImage(image, index, imageTags) {\n var renderLevel = imageTags[index];\n var oriY = image.oriY;\n if (typeof image === 'string') {\n return {\n renderLevel: renderLevel,\n url: image,\n oriY: oriY,\n };\n }\n else if (image.template) {\n return {\n url: image.url,\n template: image.template,\n webp: image.webp,\n renderLevel: renderLevel,\n oriY: oriY,\n };\n }\n else if (image.compressed) {\n return {\n url: image.url,\n oriY: oriY,\n compressed: {\n astc: image.compressed.android,\n pvrtc: image.compressed.iOS,\n },\n webp: image.webp,\n renderLevel: renderLevel,\n };\n }\n else if (image.url) {\n return {\n url: image.url,\n type: image.type,\n webp: image.webp,\n renderLevel: renderLevel,\n oriY: oriY,\n loop: image.loop,\n };\n }\n else if (image && image.sourceType) {\n return image;\n }\n throw Error('invalid image type');\n}\nfunction getStandardComposition(composition, opt) {\n var _a;\n if (opt === void 0) { opt = {}; }\n var ret = {\n id: composition.id + '',\n camera: Object.assign({ clipMode: CAMERA_CLIP_MODE_NORMAL }, composition.camera),\n duration: composition.duration,\n endBehavior: composition.endBehavior,\n items: composition.items.map(function (item) { return getStandardItem(item, opt); }),\n name: composition.name,\n };\n var startTime = composition.startTime || composition.st;\n if (startTime) {\n ret.startTime = startTime;\n }\n var previewSize = (_a = composition.meta) === null || _a === void 0 ? void 0 : _a.previewSize;\n if (previewSize && previewSize[0] === previewSize[1] && previewSize[0] === 0) {\n previewSize = undefined;\n }\n if (previewSize) {\n ret.previewSize = previewSize;\n }\n return ret;\n}\nvar tempQuat = [0, 0, 0, 1];\nvar stdAnchor = 0.5;\nfunction getStandardItem(item, opt) {\n var _a, _b, _c;\n if (opt === void 0) { opt = {}; }\n var type = ItemType.base;\n var transform;\n var originContent;\n var content;\n var endBehavior = item.endBehavior;\n var renderLevel;\n var pluginName;\n var duration = NaN;\n var pn;\n if (item.content) {\n type = item.type || ItemType.plugin;\n pn = item.pn;\n pluginName = item.pluginName;\n content = item.content;\n originContent = item.content;\n if (isNaN(pn) && !pluginName) {\n pluginName = content.options.type;\n }\n if (item.duration) {\n duration = item.duration;\n }\n transform = item.transform || getTransform(originContent.transform);\n if (type === ItemType.filter) {\n if (currentVersion < '1.1') {\n currentVersion = '1.1';\n }\n content = getStandardSpriteContent(originContent, transform);\n // @ts-expect-error\n content.filter = getStandardFilterContent(originContent.filter);\n }\n }\n else if (item.particle) {\n type = ItemType.particle;\n originContent = item.particle;\n transform = getTransform(originContent.transform, reverseParticle, true);\n content = getStandardParticleContent(originContent);\n }\n else if (item.sprite) {\n type = ItemType.sprite;\n originContent = item.sprite;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardSpriteContent(originContent, transform);\n }\n else if (item.cal) {\n type = ItemType.null;\n originContent = item.cal;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardNullContent(originContent, transform);\n }\n else if (item.ui) {\n type = ItemType.interact;\n originContent = item.ui;\n transform = getTransform(originContent.transform);\n content = getStandardInteractContent(originContent);\n transform.scale = [originContent.options.width || 1, originContent.options.height || 1, 1];\n }\n else if (item.model) {\n originContent = item.model;\n if (item.model.options.type === 1) {\n type = ItemType.camera;\n transform = getTransform(originContent.transform);\n content = getStandardCameraContent(originContent);\n }\n }\n if ((_a = content.renderer) === null || _a === void 0 ? void 0 : _a.anchor) {\n var anchor = new Float32Array(content.renderer.anchor);\n if (anchor[0] == stdAnchor && anchor[1] == stdAnchor) {\n delete content.renderer.anchor;\n }\n else if (opt.requires) {\n arrAdd(opt.requires, 'anchor');\n }\n }\n if (originContent) {\n var looping = (_b = originContent.options) === null || _b === void 0 ? void 0 : _b.looping;\n if (looping) {\n if (Array.isArray(looping)) {\n endBehavior = looping[1] ? ItemEndBehavior.loop : ItemEndBehavior.destroy;\n }\n else {\n endBehavior = ItemEndBehavior.loop;\n }\n }\n else {\n endBehavior = endBehavior || ((_c = originContent === null || originContent === void 0 ? void 0 : originContent.options) === null || _c === void 0 ? void 0 : _c.endBehavior) || ItemEndBehavior.destroy;\n }\n if (originContent.options.renderLevel) {\n renderLevel = originContent.options.renderLevel;\n }\n if (isNaN(duration)) {\n duration = originContent.options.duration;\n }\n }\n var ret = {\n type: type,\n name: item.name,\n delay: item.delay,\n duration: duration,\n id: item.id + '',\n // @ts-expect-error\n transform: transform,\n endBehavior: endBehavior,\n // @ts-expect-error\n renderLevel: renderLevel,\n content: content,\n };\n // @ts-expect-error\n if (pluginName) {\n if (opt.plugins) {\n arrAdd(opt.plugins, pluginName);\n ret.pn = opt.plugins.indexOf(pluginName);\n }\n else {\n ret.pluginName = pluginName;\n }\n // @ts-expect-error\n }\n else if (Number.isInteger(pn)) {\n // @ts-expect-error\n ret.pn = pn;\n }\n if (item.parentId) {\n ret.parentId = item.parentId + '';\n }\n return ret;\n function getTransform(originTransform, inverseRotation, changeOrder) {\n if (originTransform) {\n var transform_1 = {};\n var rotation = originTransform.rotation;\n if (rotation) {\n if (inverseRotation) {\n transform_1.rotation = [-rotation[0], -rotation[1], -rotation[2]];\n }\n else {\n transform_1.rotation = [rotation[0], rotation[1], rotation[2]];\n }\n if (changeOrder) {\n var q = quatFromXYZRotation(tempQuat, transform_1.rotation[0], transform_1.rotation[1], transform_1.rotation[2]);\n transform_1.rotation = rotationZYXFromQuat([], q);\n }\n }\n var position = originTransform.position;\n if (position) {\n transform_1.position = originTransform.position;\n }\n if (Array.isArray(originTransform.scale)) {\n transform_1.scale = [originTransform.scale[0] || 1, originTransform.scale[1] || 1, originTransform.scale[2] || 1];\n }\n return transform_1;\n }\n return {};\n }\n}\n\nexport { arrAdd, colorToArr, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, quatFromXYZRotation, rotationZYXFromQuat };\n//# sourceMappingURL=fallback.mjs.map\n"],"names":["clamp","__read","this","__spreadArray","Sphere","RenderLevel","BlendingMode","SideMode","MaskMode","ShapeType","PluginType","InteractType","InteractBehavior","ItemType","RenderMode","ParticleOrigin","END_BEHAVIOR_DESTROY","END_BEHAVIOR_PAUSE","END_BEHAVIOR_FORWARD","END_BEHAVIOR_PAUSE_AND_DESTROY","END_BEHAVIOR_FREEZE","END_BEHAVIOR_RESTART","END_BEHAVIOR_DESTROY_CHILDREN","CAMERA_CLIP_MODE_VERTICAL","CAMERA_CLIP_MODE_NORMAL","CameraClipMode","CompositionEndBehavior","ValueType","BezierKeyframeType","ItemEndBehavior","ParentItemEndBehavior","ParticleInteractionBehavior","ShapeArcMode","ModelBoundingType","MaterialType","MaterialBlending","RenderMode3D","TextOverflow","TextBaseline","TextAlignment","TextWeight","FontStyle"],"mappings":"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AAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC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E,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7D,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/D,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5H,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5H,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5H,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5H,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAChE,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;AACvB,YAAY,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;AAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;AAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;AAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GA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AAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9pBjC;AACA;AACA;AAwCA;AACA;AACO,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE;AAC7D,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC;AAChB;AACA,IAAI,IAAI,SAAS,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/D,QAAQ,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5F,KAAK,MAAM;AACX,QAAQ,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnG,KAAK;AACL;AACA,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACzC,QAAQ,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,QAAQ,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA;AACO,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;AACzC,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC;AAC1B;AACA,IAAI,IAAI,CAAC,GAAG,KAAK;AACjB,QAAQ,KAAK,CAAC;AACd,IAAI,GAAG;AACP,QAAQ,KAAK,GAAG,KAAK,CAAC;AACtB;AACA,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAChF,YAAY,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;AAC7B,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM;AACpC,YAAY,KAAK,GAAG,IAAI,CAAC;AACzB;AACA,SAAS,MAAM;AACf,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACvB,SAAS;AACT,KAAK,QAAQ,KAAK,IAAI,CAAC,KAAK,GAAG,EAAE;AACjC;AACA,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AAsDD;AACA;AACO,SAAS,KAAK,CAAC,GAAG,EAAE;AAC3B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI;AACpB,QAAQ,CAAC,GAAG,GAAG;AACf,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AACrB;AACA,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACzC;AACA;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B;AACA,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE;AAC3B,QAAQ,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACO,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AACtD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI;AACpB,QAAQ,CAAC,GAAG,GAAG;AACf,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AACrB;AACA,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACzC;AACA;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7E,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7E,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7E,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E;AACA;AACA,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AACxD,QAAQ,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACzD;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK;AACrB,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB;AACA;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;AACjD,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI;AAC5C,YAAY,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvD,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACpB;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI;AAC5C,YAAY,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvD,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACpB,KAAK;AACL;AACA;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI;AAC5C,YAAY,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvD,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACpB,KAAK;AACL;AACA;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI;AAC5C,YAAY,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvD,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACpB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AAoDD;AACA;AACO,SAAS,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE;AAClE,IAAI,IAAI,KAAK,GAAG,EAAE;AAClB,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;AACjC;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACxD,QAAQ,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACrC,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AACnE,QAAQ,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACxD,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpD,QAAQ,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB;AACA;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,QAAQ,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC3C,QAAQ,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5D,KAAK;AACL;AACA,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AACD;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE;AACxC,IAAI,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAChD,IAAI,IAAI,SAAS,EAAE;AACnB,QAAQ,IAAI,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9C;AACA;AACA,QAAQ,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAChD,QAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChC,KAAK;AACL,CAAC;AACD;AACA;AACA,SAAS,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AACzC,IAAI,IAAI,CAAC,GAAG,SAAS;AACrB,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;AACnB,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;AACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACtB,QAAQ,CAAC,CAAC;AACV;AACA;AACA;AACA,IAAI,GAAG;AACP,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC7D,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,YAAY,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;AACnC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AACvB,gBAAgB,IAAI,CAAC,KAAK,EAAE,EAAE;AAC9B,oBAAoB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7C,oBAAoB,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;AACvD,iBAAiB;AACjB,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAChD,aAAa;AACb,SAAS;AACT,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,KAAK,QAAQ,CAAC,KAAK,SAAS,EAAE;AAC9B;AACA,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC;AACxB;AACA,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG,CAAC;AAChB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAChB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAChB,QAAQ,MAAM,GAAG,QAAQ;AACzB,QAAQ,GAAG,CAAC;AACZ;AACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV;AACA,IAAI,GAAG;AACP,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAChD,gBAAgB,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACjG;AACA,YAAY,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD;AACA,YAAY,IAAI,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC;AACtC,iBAAiB,GAAG,GAAG,MAAM,KAAK,GAAG,KAAK,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClH,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACtB,gBAAgB,MAAM,GAAG,GAAG,CAAC;AAC7B,aAAa;AACb,SAAS;AACT;AACA,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,KAAK,QAAQ,CAAC,KAAK,IAAI,EAAE;AACzB;AACA,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD;AACA;AACA,SAAS,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE;AACpC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtE,CAAC;AACD;AACA;AACO,SAAS,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AACvD,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;AAClB,IAAI,GAAG;AACP,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACtE,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;AACzB,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;AACzB,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,KAAK,QAAQ,CAAC,KAAK,KAAK,EAAE;AAC1B;AACA,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AACzB,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB;AACA,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AACD;AACA;AACA;AACA,SAAS,UAAU,CAAC,IAAI,EAAE;AAC1B,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK;AACjD,QAAQ,MAAM,GAAG,CAAC,CAAC;AACnB;AACA,IAAI,GAAG;AACP,QAAQ,CAAC,GAAG,IAAI,CAAC;AACjB,QAAQ,IAAI,GAAG,IAAI,CAAC;AACpB,QAAQ,IAAI,GAAG,IAAI,CAAC;AACpB,QAAQ,SAAS,GAAG,CAAC,CAAC;AACtB;AACA,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,SAAS,EAAE,CAAC;AACxB,YAAY,CAAC,GAAG,CAAC,CAAC;AAClB,YAAY,KAAK,GAAG,CAAC,CAAC;AACtB,YAAY,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAC5B,gBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM;AAC9B,aAAa;AACb,YAAY,KAAK,GAAG,MAAM,CAAC;AAC3B;AACA,YAAY,OAAO,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD;AACA,gBAAgB,IAAI,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACtE,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC1B,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAChC,oBAAoB,KAAK,EAAE,CAAC;AAC5B,iBAAiB,MAAM;AACvB,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC1B,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAChC,oBAAoB,KAAK,EAAE,CAAC;AAC5B,iBAAiB;AACjB;AACA,gBAAgB,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACzC,qBAAqB,IAAI,GAAG,CAAC,CAAC;AAC9B;AACA,gBAAgB,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,gBAAgB,IAAI,GAAG,CAAC,CAAC;AACzB,aAAa;AACb;AACA,YAAY,CAAC,GAAG,CAAC,CAAC;AAClB,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,MAAM,IAAI,CAAC,CAAC;AACpB;AACA,KAAK,QAAQ,SAAS,GAAG,CAAC,EAAE;AAC5B;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA;AACA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3C;AACA,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;AACrC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;AACrC;AACA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC;AACpC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC;AACpC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC;AACpC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC;AACpC;AACA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC;AACpC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC;AACpC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC;AACpC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC;AACpC;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,CAAC;AACD;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,IAAI,CAAC,GAAG,KAAK;AACjB,QAAQ,QAAQ,GAAG,KAAK,CAAC;AACzB,IAAI,GAAG;AACP,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC;AACvF,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,KAAK,QAAQ,CAAC,KAAK,KAAK,EAAE;AAC1B;AACA,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AACD;AACA;AACA,SAAS,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACzD,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;AAC7D,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;AAC7D,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AACD;AACA;AACO,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;AACtC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,YAAY,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5E,aAAa,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3D,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxF,CAAC;AACD;AACA;AACA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AACD;AACA;AACO,SAAS,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;AAC/B,IAAI,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AACD;AACA;AACO,SAAS,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC3C,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACpC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACpC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACpC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACpC;AACA,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC;AAC5C;AACA,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,IAAI,CAAC;AACvD,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,IAAI,CAAC;AACvD,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,IAAI,CAAC;AACvD,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,IAAI,CAAC;AACvD;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA;AACA,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5H,CAAC;AACD;AACA,SAAS,IAAI,CAAC,GAAG,EAAE;AACnB,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AACD;AACA;AACA,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,GAAG;AACP,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,gBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC;AACzD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,KAAK,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtB;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA;AACO,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;AACpC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC1D,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACzD,CAAC;AACD;AACA;AACA,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,QAAQ,MAAM,GAAG,KAAK;AACtB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI,GAAG;AACP,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7E,YAAY,MAAM,GAAG,CAAC,MAAM,CAAC;AAC7B,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,KAAK,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtB;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA;AACA;AACO,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AACnC,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI;AACnB,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;AACpB;AACA,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACf,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACf;AACA,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,OAAO,EAAE,CAAC;AACd,CAAC;AACD;AACA;AACA,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACnC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B;AACA,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACnB,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACnB;AACA,KAAK,MAAM;AACX,QAAQ,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAQ,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACtB,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD;AACO,SAAS,UAAU,CAAC,CAAC,EAAE;AAC9B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACzB,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACzB;AACA,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACzC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACzC,CAAC;AACD;AACO,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9B;AACA,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;AACA;AACA,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;AACA;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB;AACA;AACA,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAClB;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB;AACA;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACzB,CAAC;AA8BD;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3C,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE;AAC1D,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjE,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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ClB,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/utils.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector2.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/quaternion.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/matrix4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/euler.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/vector4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/matrix3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/ray.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/color.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/box3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.0.1/node_modules/@galacean/effects-math/es/core/sphere.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.0.0-alpha.2/node_modules/@galacean/effects-specification/dist/index.mjs","../src/libs/earcut.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.0.0-alpha.2/node_modules/@galacean/effects-specification/dist/fallback.mjs"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","export var PI2 = Math.PI * 2;\nexport var DEG2RAD = Math.PI / 180;\nexport var RAD2DEG = 180 / Math.PI;\nexport var NumberEpsilon = 1e-6;\nexport function isZero(v) {\n return isNaN(v) || Math.abs(v) < NumberEpsilon;\n}\nexport function isEqual(a, b) {\n return Math.abs(a - b) < NumberEpsilon || (a === Infinity && b === Infinity) || (a === -Infinity && b === -Infinity);\n}\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nexport var damp = function (x, y, lambda, dt) { return lerp(x, y, 1 - Math.exp(-lambda * dt)); };\n// https://en.wikipedia.org/wiki/Linear_interpolation\nexport var lerp = function (x, y, t) { return (1 - t) * x + t * y; };\nexport var degToRad = function (degrees) { return degrees * DEG2RAD; };\nexport var radToDeg = function (radians) { return radians * RAD2DEG; };\nexport function clamp(value, min, max) {\n var fixedMin = isNaN(min) ? -Infinity : min;\n var fixedMax = isNaN(max) ? Infinity : max;\n var lower = Math.min(fixedMin, fixedMax);\n var upper = Math.max(fixedMin, fixedMax);\n return Math.min(Math.max(value, lower), upper);\n}\n","import { NumberEpsilon } from './utils';\n/**\n * 二维向量\n */\nexport var Vector2 = /** @class */ (function () {\n /**\n * 构造函数,默认为零向量\n * @param [x=0] - x 分量\n * @param [y=0] - y 分量\n */\n function Vector2(x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n this.x = x;\n this.y = y;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @returns\n */\n Vector2.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector2.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n return this;\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector2.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n return this;\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector2.prototype.setFromArray = function (array, offset) {\n var _a, _b;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param src - 要拷贝的对象\n * @returns 向量\n */\n Vector2.prototype.copyFrom = function (src) {\n this.x = src.x;\n this.y = src.y;\n return this;\n };\n /**\n * 克隆向量\n * @returns 克隆结果\n */\n Vector2.prototype.clone = function () {\n return new Vector2(this.x, this.y);\n };\n /**\n * 根据下标设置元素值\n * @param index - 下标值\n * @param value - 数字\n * @returns 向量\n */\n Vector2.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取值\n * @param index - 下标\n * @returns 值\n */\n Vector2.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 向量 | 数字\n * @returns 向量\n */\n Vector2.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 相加结果\n */\n Vector2.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n return this;\n };\n /**\n * 向量相减\n * @param right - 向量 | 数字\n * @returns 相减结果\n */\n Vector2.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 相减结果\n */\n Vector2.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 向量 | 数字\n * @returns 相乘结果\n */\n Vector2.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 相乘结果\n */\n Vector2.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n return this;\n };\n /**\n * 向量相除\n * @param right - 向量 | 数字\n * @returns 相除结果\n */\n Vector2.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector2.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector2.prototype.sum = function () {\n return this.x + this.y;\n };\n /**\n * 向量求最小值\n * @param v - 向量\n * @returns 最小值\n */\n Vector2.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量\n * @returns 最大值\n */\n Vector2.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 极小值\n * @param max - 极大值\n * @returns 向量\n */\n Vector2.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector2.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector2.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n return this;\n };\n /**\n * 向量取四舍五入\n * @returns 四舍五入结果\n */\n Vector2.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector2.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n return this;\n };\n /**\n * 向量取反\n * @returns 取反结果\n */\n Vector2.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n };\n /**\n * 向量长度\n * @returns 求值结果\n */\n Vector2.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n };\n /**\n * 向量长度平方\n * @returns 求值结果\n */\n Vector2.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y;\n };\n /**\n * 向量归一化\n * @returns 归一化结果\n */\n Vector2.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector2.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量线性插值\n * @param other - 向量\n * @param alpha - 插值比\n * @returns 计算结果\n */\n Vector2.prototype.lerp = function (other, alpha) {\n this.x += (other.x - this.x) * alpha;\n this.y += (other.y - this.y) * alpha;\n return this;\n };\n /**\n * 向量线性插值\n * @param v1 - 向量\n * @param v2 - 向量\n * @param alpha - 插值比\n * @returns 计算结果\n */\n Vector2.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n return this;\n };\n /**\n * 向量点乘\n * @param v - 向量\n * @returns 点乘结果\n */\n Vector2.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y;\n };\n /**\n * 向量叉乘\n * @param v - 向量\n * @returns 叉乘结果\n */\n Vector2.prototype.cross = function (v) {\n return this.x * v.y - this.y * v.x;\n };\n /**\n * 点距离\n * @param v - 点\n * @returns 距离\n */\n Vector2.prototype.distance = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n /**\n * 点距离平方\n * @param v - 点\n * @returns 距离平方\n */\n Vector2.prototype.distanceSquared = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n return dx * dx + dy * dy;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector2.prototype.equals = function (v) {\n return this.x === v.x && this.y === v.y;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector2.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y;\n return Math.abs(x) <= eps && Math.abs(y) <= eps;\n };\n /**\n * 向量转数组\n * @returns 数组\n */\n Vector2.prototype.toArray = function () {\n return [this.x, this.y];\n };\n Vector2.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n };\n /**\n * 随机生成向量\n * @returns 向量\n */\n Vector2.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n return this;\n };\n /**\n * 通过标量创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector2.fromNumber = function (num) {\n return new Vector2().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector2.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector2().setFromArray(array, offset);\n };\n /**\n * 二维向量的常量\n */\n Vector2.ONE = new Vector2(1.0, 1.0);\n Vector2.ZERO = new Vector2(0.0, 0.0);\n return Vector2;\n}());\n","import { NumberEpsilon } from './utils';\nimport { Vector2 } from './vector2';\n/**\n * 三维向量\n */\nexport var Vector3 = /** @class */ (function () {\n /**\n * 构造函数,默认值为零向量\n * @param [x=0]\n * @param [y=0]\n * @param [z=0]\n */\n function Vector3(x, y, z) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n this.x = x;\n this.y = y;\n this.z = z;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @param z - z 轴分量\n * @returns 向量\n */\n Vector3.prototype.set = function (x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector3.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n return this;\n };\n /**\n * 通过标量数值设置向量\n * @param num - 数值\n * @returns 向量\n */\n Vector3.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n this.z = num;\n return this;\n };\n /**\n * 通过数组设置向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector3.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param v - 要拷贝的对象\n * @returns 向量\n */\n Vector3.prototype.copyFrom = function (v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n };\n /**\n * 克隆向量\n * @returns 向量\n */\n Vector3.prototype.clone = function () {\n return new Vector3(this.x, this.y, this.z);\n };\n /**\n * 根据下标设置向量分量\n * @param index - 下标值\n * @param value - 数字\n * @returns 向量\n */\n Vector3.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取向量分量\n * @param index - 下标\n * @returns\n */\n Vector3.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n case 2: return this.z;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 向量 | 数字\n * @returns 相加结果\n */\n Vector3.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n this.z += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n this.z += right[2];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n this.z += right.z;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 相加结果\n */\n Vector3.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n return this;\n };\n /**\n * 向量乘比例后相加\n * @param right - 向量\n * @param s - 比例\n * @returns 相加结果\n */\n Vector3.prototype.addScaledVector = function (right, s) {\n this.x += right.x * s;\n this.y += right.y * s;\n this.z += right.z * s;\n return this;\n };\n /**\n * 向量相减\n * @param right - 向量 | 数字\n * @returns 相减\n */\n Vector3.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n this.z -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n this.z -= right[2];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n this.z -= right.z;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 相减结果\n */\n Vector3.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n this.z = left.z - right.z;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 向量 | 数字\n * @returns 相乘结果\n */\n Vector3.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n this.z *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n this.z *= right[2];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n this.z *= right.z;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 相乘结果\n */\n Vector3.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n this.z = left.z * right.z;\n return this;\n };\n /**\n * 向量相除\n * @param right - 向量 | 数字\n * @returns 相除结果\n */\n Vector3.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n this.z /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n this.z /= right[2];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n this.z /= right.z;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector3.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector3.prototype.sum = function () {\n return this.x + this.y + this.z;\n };\n /**\n * 向量求最小值\n * @param v - 向量或数值\n * @returns 求值结果\n */\n Vector3.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n this.z = Math.min(this.z, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量或数值\n * @returns 求值结果\n */\n Vector3.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n this.z = Math.max(this.z, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 向量\n * @param max - 向量\n * @returns 求值结果\n */\n Vector3.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector3.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector3.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n return this;\n };\n /**\n * 向量四舍五入\n * @returns 计算结果\n */\n Vector3.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector3.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n this.z = Math.abs(this.z);\n return this;\n };\n /**\n * 向量取反\n * @returns 向量\n */\n Vector3.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 向量长度\n * @returns 长度\n */\n Vector3.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n };\n /**\n * 向量长度平方\n * @returns 长度平方\n */\n Vector3.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n };\n /**\n * 向量归一化\n * @returns 向量\n */\n Vector3.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector3.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量间求线性插值\n * @param other - 向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector3.prototype.lerp = function (other, alpha) {\n this.x += (other.x - this.x) * alpha;\n this.y += (other.y - this.y) * alpha;\n this.z += (other.z - this.z) * alpha;\n return this;\n };\n /**\n * 向量间求线性插值\n * @param v1 - 第一个向量\n * @param v2 - 第二个向量\n * @param alpha - 插值比例\n * @returns 求值结果\n */\n Vector3.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n return this;\n };\n /**\n * 向量求点积,点积为零表示两向量垂直\n * @param v - 向量\n * @returns 点积结果\n */\n Vector3.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n };\n /**\n * 向量求叉积\n * @param right - 向量\n * @returns 叉积结果\n */\n Vector3.prototype.cross = function (right) {\n return this.crossVectors(this, right);\n };\n /**\n * 向量(a 与 b)求叉积\n * @param left - 向量\n * @param right - 向量\n * @returns 叉积结果\n */\n Vector3.prototype.crossVectors = function (left, right) {\n var ax = left.x, ay = left.y, az = left.z;\n var bx = right.x, by = right.y, bz = right.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n };\n /**\n * 向量反射\n * @param normal - 法线\n * @returns 反射结果\n */\n Vector3.prototype.reflect = function (normal) {\n // reflect incident vector off plane orthogonal to normal\n // normal is assumed to have unit length\n return this.subtract(normal.clone().multiply(2 * this.dot(normal)));\n };\n /**\n * 计算向量距离\n * @param v - 向量\n * @returns 距离\n */\n Vector3.prototype.distance = function (v) {\n return Math.sqrt(this.distanceSquared(v));\n };\n /**\n * 计算向量距离平方\n * @param v - 向量\n * @returns 距离平方\n */\n Vector3.prototype.distanceSquared = function (v) {\n var dx = this.x - v.x;\n var dy = this.y - v.y;\n var dz = this.z - v.z;\n return dx * dx + dy * dy + dz * dz;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector3.prototype.equals = function (v) {\n return v.x === this.x && v.y === this.y && v.z === this.z;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector3.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z;\n return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps;\n };\n /**\n * 向量转数组\n * @param array - 目标保存对象\n * @returns 数组\n */\n Vector3.prototype.toArray = function () {\n return [this.x, this.y, this.z];\n };\n Vector3.prototype.toVector2 = function () {\n return new Vector2(this.x, this.y);\n };\n Vector3.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n };\n /**\n * 获取随机向量\n * @returns\n */\n Vector3.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n return this;\n };\n /**\n * 用欧拉角旋转向量\n * @param euler - 欧拉角\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 旋转结果\n */\n Vector3.prototype.applyEuler = function (euler, out) {\n return euler.rotateVector3(this, out);\n };\n /**\n * 用四元数旋转向量\n * @param q - 四元数\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 旋转结果\n */\n Vector3.prototype.applyQuaternion = function (q, out) {\n return q.rotateVector3(this, out);\n };\n /**\n * 用矩阵变换点\n * @param m - 变换矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 结果点\n */\n Vector3.prototype.applyMatrix = function (m, out) {\n return m.transformPoint(this, out);\n };\n /**\n * 用法向量矩阵变换法向量\n * @param m - 法向量矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 向量\n */\n Vector3.prototype.applyNormalMatrix = function (m, out) {\n return m.transformNormal(this, out);\n };\n /**\n * 用投影矩阵变换点\n * @param m - 投影矩阵\n * @param [out] - 输出结果,如果没有就覆盖当前向量值\n * @returns 结果点\n */\n Vector3.prototype.applyProjectionMatrix = function (m, out) {\n return m.projectPoint(this, out);\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector3.fromNumber = function (num) {\n return new Vector3().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector3.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector3().setFromArray(array, offset);\n };\n /**\n * 三维向量的常量\n */\n Vector3.X = new Vector3(1.0, 0.0, 0.0);\n Vector3.Y = new Vector3(0.0, 1.0, 0.0);\n Vector3.Z = new Vector3(0.0, 0.0, 1.0);\n Vector3.ONE = new Vector3(1.0, 1.0, 1.0);\n Vector3.ZERO = new Vector3(0.0, 0.0, 0.0);\n return Vector3;\n}());\n","import { clamp } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四元数\n */\nexport var Quaternion = /** @class */ (function () {\n /**\n * 构造函数\n * @param [x=0] - x 分量\n * @param [y=0] - y 分量\n * @param [z=0] - z 分量\n * @param [w=1] - w 分量\n */\n function Quaternion(x, y, z, w) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (w === void 0) { w = 1; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n /**\n * 四元数设置\n * @param x - x 分量\n * @param y - y 分量\n * @param z - z 分量\n * @param w - w 分量\n * @returns 四元数\n */\n Quaternion.prototype.set = function (x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n };\n /**\n * 通过欧拉角设置四元数\n * @param euler - 欧拉角\n * @returns\n */\n Quaternion.prototype.setFromEuler = function (euler) {\n euler.toQuaternion(this);\n return this;\n };\n /**\n * 通过旋转轴和旋转角度设置四元数\n * @param axis - 旋转轴\n * @param angle - 旋转角度(弧度)\n * @returns\n */\n Quaternion.prototype.setFromAxisAngle = function (axis, angle) {\n var halfAngle = angle / 2;\n var s = Math.sin(halfAngle);\n var v = Quaternion.tempVec0;\n v.copyFrom(axis).normalize();\n this.x = v.x * s;\n this.y = v.y * s;\n this.z = v.z * s;\n this.w = Math.cos(halfAngle);\n return this;\n };\n /**\n * 通过数组设置四元数\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Quaternion.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n this.w = array[offset + 3];\n return this;\n };\n /**\n * 通过矩阵设置四元数\n * @param m - 矩阵\n * @returns\n */\n Quaternion.prototype.setFromRotationMatrix = function (m) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n var te = m.elements;\n var m11 = te[0];\n var m12 = te[4];\n var m13 = te[8];\n var m21 = te[1];\n var m22 = te[5];\n var m23 = te[9];\n var m31 = te[2];\n var m32 = te[6];\n var m33 = te[10];\n var trace = m11 + m22 + m33;\n if (trace > 0) {\n var s = 0.5 / Math.sqrt(trace + 1.0);\n this.w = 0.25 / s;\n this.x = (m32 - m23) * s;\n this.y = (m13 - m31) * s;\n this.z = (m21 - m12) * s;\n }\n else if (m11 > m22 && m11 > m33) {\n var s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n this.w = (m32 - m23) / s;\n this.x = 0.25 * s;\n this.y = (m12 + m21) / s;\n this.z = (m13 + m31) / s;\n this.negate();\n }\n else if (m22 > m33) {\n var s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n this.w = (m13 - m31) / s;\n this.x = (m12 + m21) / s;\n this.y = 0.25 * s;\n this.z = (m23 + m32) / s;\n this.negate();\n }\n else {\n var s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n this.w = (m21 - m12) / s;\n this.x = (m13 + m31) / s;\n this.y = (m23 + m32) / s;\n this.z = 0.25 * s;\n this.negate();\n }\n // 兼容原先数学库\n return this;\n };\n /**\n * 通过开始和结束向量设置四元数\n * @param from - 开始向量\n * @param to - 结束向量\n * @returns\n */\n Quaternion.prototype.setFromUnitVectors = function (from, to) {\n // assumes direction vectors vFrom and vTo are normalized\n var r = from.dot(to) + 1;\n if (r < Number.EPSILON) {\n r = 0;\n if (Math.abs(from.x) > Math.abs(from.z)) {\n this.x = -from.y;\n this.y = from.x;\n this.z = 0;\n this.w = r;\n }\n else {\n this.x = 0;\n this.y = -from.z;\n this.z = from.y;\n this.w = r;\n }\n }\n else {\n this.x = from.y * to.z - from.z * to.y;\n this.y = from.z * to.x - from.x * to.z;\n this.z = from.x * to.y - from.y * to.x;\n this.w = r;\n }\n return this.normalize();\n };\n /**\n * 四元数拷贝\n * @param quat - 拷贝目标四元数\n * @returns 拷贝四元数\n */\n Quaternion.prototype.copyFrom = function (quat) {\n this.x = quat.x;\n this.y = quat.y;\n this.z = quat.z;\n this.w = quat.w;\n return this;\n };\n /**\n * 四元数克隆\n * @returns 克隆结果\n */\n Quaternion.prototype.clone = function () {\n return new Quaternion(this.x, this.y, this.z, this.w);\n };\n /**\n * 四元数间的夹角计算\n * @param other - 其他四元数\n * @returns 夹角\n */\n Quaternion.prototype.angleTo = function (other) {\n return 2 * Math.acos(Math.abs(clamp(this.dot(other), -1, 1)));\n };\n /**\n * 四元数向目标旋转\n * @param q - 四元数\n * @param step - 旋转弧度\n * @returns 目标四元数\n */\n Quaternion.prototype.rotateTowards = function (q, step) {\n var angle = this.angleTo(q);\n if (angle === 0) {\n return this;\n }\n var t = Math.min(1, step / angle);\n this.slerp(q, t);\n return this;\n };\n /**\n * 四元数单位化\n * @returns 单位四元数\n */\n Quaternion.prototype.identity = function () {\n return this.set(0, 0, 0, 1);\n };\n /**\n * 四元数求逆\n * @returns 四元数的逆\n */\n Quaternion.prototype.invert = function () {\n return this.conjugate();\n };\n /**\n * 四元数取负\n * @returns 负四元数\n */\n Quaternion.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n };\n /**\n * 四元数求共轭值\n * @returns 四元数的共轭值\n */\n Quaternion.prototype.conjugate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 四元数点乘结果\n * @param v\n * @return\n */\n Quaternion.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n };\n /**\n * 四元数的模平方\n * @return\n */\n Quaternion.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n };\n /**\n * 四元数的欧式长度\n * @returns 长度\n */\n Quaternion.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n };\n /**\n * 四元数归一化\n * @returns 归一化值\n */\n Quaternion.prototype.normalize = function () {\n var l = this.length();\n if (l === 0) {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 1;\n }\n else {\n l = 1 / l;\n this.x = this.x * l;\n this.y = this.y * l;\n this.z = this.z * l;\n this.w = this.w * l;\n }\n return this;\n };\n /**\n * 四元数右乘\n * @param right - 右乘的四元数\n * @returns\n */\n Quaternion.prototype.multiply = function (right) {\n return this.multiplyQuaternions(this, right);\n };\n /**\n * 四元数左乘\n * @param left - 左乘的四元数\n * @returns\n */\n Quaternion.prototype.premultiply = function (left) {\n return this.multiplyQuaternions(left, this);\n };\n /**\n * 四元数乘法\n * @param left - 四元数\n * @param right - 四元数\n * @returns 四元数\n */\n Quaternion.prototype.multiplyQuaternions = function (left, right) {\n // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n var qax = left.x;\n var qay = left.y;\n var qaz = left.z;\n var qaw = left.w;\n var qbx = right.x;\n var qby = right.y;\n var qbz = right.z;\n var qbw = right.w;\n this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n return this;\n };\n /**\n * 四元数线性插值\n * @see http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n * @param other - 四元数\n * @param t - 插值比\n * @returns 插值结果\n */\n Quaternion.prototype.slerp = function (other, t) {\n var _a;\n if (t === 0) {\n return this;\n }\n if (t === 1) {\n return this.copyFrom(other);\n }\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, w = _a.w;\n var cosHalfTheta = w * other.w + x * other.x + y * other.y + z * other.z;\n if (cosHalfTheta < 0) {\n this.w = -other.w;\n this.x = -other.x;\n this.y = -other.y;\n this.z = -other.z;\n cosHalfTheta = -cosHalfTheta;\n }\n else {\n this.copyFrom(other);\n }\n if (cosHalfTheta >= 1.0) {\n this.w = w;\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n if (sqrSinHalfTheta <= Number.EPSILON) {\n var s = 1 - t;\n this.w = s * w + t * this.w;\n this.x = s * x + t * this.x;\n this.y = s * y + t * this.y;\n this.z = s * z + t * this.z;\n this.normalize();\n return this;\n }\n var sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n var halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n var ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;\n var ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this.w = (w * ratioA + this.w * ratioB);\n this.x = (x * ratioA + this.x * ratioB);\n this.y = (y * ratioA + this.y * ratioB);\n this.z = (z * ratioA + this.z * ratioB);\n return this;\n };\n /**\n * 两个四元数的线性插值\n * @param qa - 四元数\n * @param qb - 四元数\n * @param t - 插值比\n */\n Quaternion.prototype.slerpQuaternions = function (qa, qb, t) {\n this.copyFrom(qa).slerp(qb, t);\n };\n /**\n * 通过四元数旋转向量\n * @param v - 待旋转向量\n * @param [out] - 旋转结果,如果没有传入直接覆盖输入值\n * @returns\n */\n Quaternion.prototype.rotateVector3 = function (v, out) {\n var _a;\n var qx = (_a = this, _a.x), qy = _a.y, qz = _a.z, qw = _a.w;\n var vx = v.x, vy = v.y, vz = v.z;\n var ix = qw * vx + qy * vz - qz * vy;\n var iy = qw * vy + qz * vx - qx * vz;\n var iz = qw * vz + qx * vy - qy * vx;\n var iw = -qx * vx - qy * vy - qz * vz;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n res.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n res.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return res;\n };\n /**\n * 四元数判等\n * @param quaternion - 四元数\n * @returns 判等结果\n */\n Quaternion.prototype.equals = function (quaternion) {\n return quaternion.x === this.x\n && quaternion.y === this.y\n && quaternion.z === this.z\n && quaternion.w === this.w;\n };\n /**\n * 四元数保存为数组\n * @returns\n */\n Quaternion.prototype.toArray = function () {\n return [this.x, this.y, this.z, this.w];\n };\n /**\n * 四元数转四维向量数组\n * @param vec - 目标保存对象\n * @returns 保存结果\n */\n Quaternion.prototype.toVector4 = function (vec) {\n return vec.set(this.x, this.y, this.z, this.w);\n };\n /**\n * 四元数转欧拉角\n * @param euler - 目标欧拉角\n * @returns 欧拉角\n */\n Quaternion.prototype.toEuler = function (euler) {\n return euler.setFromQuaternion(this);\n };\n /**\n * 四元数转矩阵\n * @param mat - 目标矩阵\n * @returns\n */\n Quaternion.prototype.toMatrix4 = function (mat) {\n return mat.compose(Vector3.ZERO, this, Vector3.ONE);\n };\n /**\n * 通过欧拉角创建四元数\n * @param euler - 欧拉角\n * @returns 四元数\n */\n Quaternion.fromEuler = function (euler) {\n return new Quaternion().setFromEuler(euler);\n };\n /**\n * 通过旋转轴和旋转角度创建四元数\n * @param axis - 旋转轴\n * @param angle - 旋转角(弧度值)\n * @returns 四元数\n */\n Quaternion.fromAxisAngle = function (axis, angle) {\n return new Quaternion().setFromAxisAngle(axis, angle);\n };\n /**\n * 通过数组获取四元数\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 四元数\n */\n Quaternion.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Quaternion().setFromArray(array, offset);\n };\n /**\n * 通过旋转矩阵创建四元数\n * @param m - 旋转矩阵\n * @returns 四元数\n */\n Quaternion.fromRotationMatrix = function (m) {\n return new Quaternion().setFromRotationMatrix(m);\n };\n /**\n * 通过开始和结束向量创建四元数\n * @param from - 开始向量\n * @param to - 结束向量\n * @returns\n */\n Quaternion.fromUnitVectors = function (from, to) {\n return new Quaternion().setFromUnitVectors(from, to);\n };\n Quaternion.tempVec0 = new Vector3();\n return Quaternion;\n}());\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { Vector3 } from './vector3';\nimport { isEqual } from './utils';\nimport { Quaternion } from './quaternion';\n/**\n * 四阶矩阵(列优先矩阵)\n */\nexport var Matrix4 = /** @class */ (function () {\n /**\n * 构造函数,初始值为单位矩阵\n * @param [m11=1] - 第 1 行,第 1 列\n * @param [m21=0] - 第 2 行,第 1 列\n * @param [m31=0] - 第 3 行,第 1 列\n * @param [m41=0] - 第 4 行,第 1 列\n * @param [m12=0] - 第 1 行,第 2 列\n * @param [m22=1] - 第 2 行,第 2 列\n * @param [m32=0] - 第 3 行,第 2 列\n * @param [m42=0] - 第 4 行,第 2 列\n * @param [m13=0] - 第 1 行,第 3 列\n * @param [m23=0] - 第 2 行,第 3 列\n * @param [m33=1] - 第 3 行,第 3 列\n * @param [m43=0] - 第 4 行,第 3 列\n * @param [m14=0] - 第 1 行,第 4 列\n * @param [m24=0] - 第 2 行,第 4 列\n * @param [m34=0] - 第 3 行,第 4 列\n * @param [m44=1] - 第 4 行,第 4 列\n */\n function Matrix4(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44) {\n if (m11 === void 0) { m11 = 1; }\n if (m21 === void 0) { m21 = 0; }\n if (m31 === void 0) { m31 = 0; }\n if (m41 === void 0) { m41 = 0; }\n if (m12 === void 0) { m12 = 0; }\n if (m22 === void 0) { m22 = 1; }\n if (m32 === void 0) { m32 = 0; }\n if (m42 === void 0) { m42 = 0; }\n if (m13 === void 0) { m13 = 0; }\n if (m23 === void 0) { m23 = 0; }\n if (m33 === void 0) { m33 = 1; }\n if (m43 === void 0) { m43 = 0; }\n if (m14 === void 0) { m14 = 0; }\n if (m24 === void 0) { m24 = 0; }\n if (m34 === void 0) { m34 = 0; }\n if (m44 === void 0) { m44 = 1; }\n this.elements = [\n m11, m21, m31, m41,\n m12, m22, m32, m42,\n m13, m23, m33, m43,\n m14, m24, m34, m44,\n ];\n }\n /**\n * 设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m21 - 第 2 行,第 1 列\n * @param m31 - 第 3 行,第 1 列\n * @param m41 - 第 4 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m22 - 第 2 行,第 2 列\n * @param m32 - 第 3 行,第 2 列\n * @param m42 - 第 4 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m23 - 第 2 行,第 3 列\n * @param m33 - 第 3 行,第 3 列\n * @param m43 - 第 4 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m24 - 第 2 行,第 4 列\n * @param m34 - 第 3 行,第 4 列\n * @param m44 - 第 4 行,第 4 列\n * @returns 矩阵\n */\n Matrix4.prototype.set = function (m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44) {\n var e = this.elements;\n e[0] = m11;\n e[1] = m21;\n e[2] = m31;\n e[3] = m41;\n e[4] = m12;\n e[5] = m22;\n e[6] = m32;\n e[7] = m42;\n e[8] = m13;\n e[9] = m23;\n e[10] = m33;\n e[11] = m43;\n e[12] = m14;\n e[13] = m24;\n e[14] = m34;\n e[15] = m44;\n return this;\n };\n /**\n * 通过行优先数据设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m24 - 第 2 行,第 4 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @param m34 - 第 3 行,第 4 列\n * @param m41 - 第 4 行,第 1 列\n * @param m42 - 第 4 行,第 2 列\n * @param m43 - 第 4 行,第 3 列\n * @param m44 - 第 4 行,第 4 列\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRowMajorData = function (m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n var e = this.elements;\n e[0] = m11;\n e[4] = m12;\n e[8] = m13;\n e[12] = m14;\n e[1] = m21;\n e[5] = m22;\n e[9] = m23;\n e[13] = m24;\n e[2] = m31;\n e[6] = m32;\n e[10] = m33;\n e[14] = m34;\n e[3] = m41;\n e[7] = m42;\n e[11] = m43;\n e[15] = m44;\n return this;\n };\n /**\n * 通过四个列向量设置矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @param c4 - 第四列\n * @returns 矩阵\n */\n Matrix4.prototype.setFromColumnVectors = function (c1, c2, c3, c4) {\n return this.set(c1.x, c1.y, c1.z, c1.w, c2.x, c2.y, c2.z, c2.w, c3.x, c3.y, c3.z, c3.w, c4.x, c4.y, c4.z, c4.w);\n };\n /**\n * 通过三维矩阵设置矩阵\n * @param m - 三维矩阵\n * @returns 设置结果\n */\n Matrix4.prototype.setFromMatrix3 = function (m) {\n var me = m.elements;\n this.set(me[0], me[1], me[2], 0, me[3], me[4], me[5], 0, me[6], me[7], me[8], 0, 0, 0, 0, 1);\n return this;\n };\n /**\n * 通过数组设置矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix4.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n for (var i = 0; i < 16; i++) {\n this.elements[i] = array[offset + i];\n }\n return this;\n };\n /**\n * 通过缩放设置矩阵\n * @param x - x 方向缩放\n * @param y - y 方向缩放\n * @param z - z 方向缩放\n * @returns 缩放矩阵\n */\n Matrix4.prototype.setFromScale = function (x, y, z) {\n return this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n };\n /**\n * 通过平移设置矩阵\n * @param x - x 方向平移\n * @param y - y 方向平移\n * @param z - z 方向平移\n * @returns 平移矩阵\n */\n Matrix4.prototype.setFromTranslation = function (x, y, z) {\n return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1);\n };\n /**\n * 通过 x 轴旋转角度设置矩阵\n * @param theta - x 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationX = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过 y 轴旋转角度设置矩阵\n * @param theta - y 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationY = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过 z 轴旋转角度设置矩阵\n * @param theta - z 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationZ = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n return this.set(c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 根据三维旋转轴与弧度设置矩阵\n * @param axis - 三维旋转轴\n * @param angle - 旋转弧度\n * @returns 矩阵\n */\n Matrix4.prototype.setFromRotationAxis = function (axis, angle) {\n // Based on http://www.gamedev.net/reference/articles/article1199.asp\n var v = Matrix4.tempVec0;\n v.copyFrom(axis).normalize();\n var c = Math.cos(angle);\n var s = Math.sin(angle);\n var t = 1 - c;\n var x = v.x, y = v.y, z = v.z;\n var tx = t * x;\n var ty = t * y;\n return this.set(tx * x + c, tx * y + s * z, tx * z - s * y, 0, tx * y - s * z, ty * y + c, ty * z + s * x, 0, tx * z + s * y, ty * z - s * x, t * z * z + c, 0, 0, 0, 0, 1);\n };\n /**\n * 通过欧拉角设置矩阵\n * @param euler - 欧拉角\n * @returns 矩阵\n */\n Matrix4.prototype.setFromEuler = function (euler) {\n euler.toMatrix4(this);\n return this;\n };\n /**\n * 通过四元数设置矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix4.prototype.setFromQuaternion = function (quat) {\n return this.compose(Vector3.ZERO, quat, Vector3.ONE);\n };\n /**\n * 通过倾斜参数设置矩阵\n * @param x - x 方向倾斜分量\n * @param y - y 方向倾斜分量\n * @param z - z 方向倾斜分量\n * @returns 倾斜矩阵\n */\n Matrix4.prototype.setFromShear = function (x, y, z) {\n return this.set(1, x, x, 0, y, 1, y, 0, z, z, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 通过基轴设置矩阵\n * @param xAxis - x 轴\n * @param yAxis - y 轴\n * @param zAxis - z 轴\n * @returns 倾斜矩阵\n */\n Matrix4.prototype.setFromBasis = function (xAxis, yAxis, zAxis) {\n return this.set(xAxis.x, xAxis.y, xAxis.z, 0, yAxis.x, yAxis.y, yAxis.z, 0, zAxis.x, zAxis.y, zAxis.z, 0, 0, 0, 0, 1);\n };\n /**\n * 矩阵清零\n * @returns 零矩阵\n */\n Matrix4.prototype.setZero = function () {\n for (var i = 0; i < 16; i++) {\n this.elements[i] = 0;\n }\n return this;\n };\n /**\n * 矩阵单位化\n * @returns 单位矩阵\n */\n Matrix4.prototype.identity = function () {\n return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 单位阵判断\n * @returns 判断结果\n */\n Matrix4.prototype.isIdentity = function () {\n var e = this.elements;\n return e[0] === 1 && e[4] === 0 && e[8] === 0 && e[12] === 0\n && e[1] === 0 && e[5] === 1 && e[9] === 0 && e[13] === 0\n && e[2] === 0 && e[6] === 0 && e[10] === 1 && e[14] === 0\n && e[3] === 0 && e[7] === 0 && e[11] === 0 && e[15] === 1;\n };\n /**\n * 矩阵克隆\n * @returns 克隆结果\n */\n Matrix4.prototype.clone = function () {\n var e = this.elements;\n return new Matrix4(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8], e[9], e[10], e[11], e[12], e[13], e[14], e[15]);\n };\n /**\n * 矩阵复制\n * @param m - 复制对象\n * @returns 复制结果\n */\n Matrix4.prototype.copyFrom = function (m) {\n this.elements = __spreadArray([], __read(m.elements), false);\n return this;\n };\n /**\n * 得到列向量\n * @param i - 列向量索引,从 0 开始\n * @param v\n * @returns 矩阵\n */\n Matrix4.prototype.getColumnVector = function (i, v) {\n return v.set(this.elements[i * 4], this.elements[i * 4 + 1], this.elements[i * 4 + 2], this.elements[i * 4 + 3]);\n };\n /**\n * 设置相机矩阵\n * @param eye - 相机位置\n * @param target - 目标位置\n * @param up - 相机方向\n * @returns 矩阵\n */\n Matrix4.prototype.lookAt = function (eye, target, up) {\n var vX = Matrix4.tempVec0;\n var vY = Matrix4.tempVec1;\n var vZ = Matrix4.tempVec2;\n vZ.subtractVectors(eye, target);\n vZ.normalize();\n vX.crossVectors(up, vZ);\n vX.normalize();\n vY.crossVectors(vZ, vX);\n var te = this.elements;\n te[0] = vX.x;\n te[1] = vY.x;\n te[2] = vZ.x;\n te[3] = 0;\n te[4] = vX.y;\n te[5] = vY.y;\n te[6] = vZ.y;\n te[7] = 0;\n te[8] = vX.z;\n te[9] = vY.z;\n te[10] = vZ.z;\n te[11] = 0;\n te[12] = -vX.dot(eye);\n te[13] = -vY.dot(eye);\n te[14] = -vZ.dot(eye);\n te[15] = 1;\n return this;\n };\n /**\n * 矩阵乘比例后相加\n * @param right - 矩阵\n * @param s - 比例\n * @returns 相加结果\n */\n Matrix4.prototype.addScaledMatrix = function (right, s) {\n var te = this.elements;\n var re = right.elements;\n for (var i = 0; i < 16; i++) {\n te[i] += re[i] * s;\n }\n return this;\n };\n /**\n * 矩阵右乘\n * @param right - 右侧矩阵或数值\n * @returns 右乘结果\n */\n Matrix4.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n for (var i = 0; i < 16; i++) {\n this.elements[i] *= right;\n }\n return this;\n }\n else {\n return this.multiplyMatrices(this, right);\n }\n };\n /**\n * 矩阵左乘\n * @param left - 左侧矩阵\n * @returns 左乘结果\n */\n Matrix4.prototype.premultiply = function (left) {\n return this.multiplyMatrices(left, this);\n };\n /**\n * 矩阵相乘\n * @param left - 矩阵\n * @param right - 矩阵\n * @returns 相乘结果\n */\n Matrix4.prototype.multiplyMatrices = function (left, right) {\n var ae = left.elements;\n var be = right.elements;\n var te = this.elements;\n var a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n var a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n var a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n var a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n var b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n var b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n var b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n var b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n return this;\n };\n /**\n * 矩阵缩放\n * @param s - 缩放比例\n * @returns 缩放结果\n */\n Matrix4.prototype.multiplyScalar = function (s) {\n var e = this.elements;\n e[0] *= s;\n e[4] *= s;\n e[8] *= s;\n e[12] *= s;\n e[1] *= s;\n e[5] *= s;\n e[9] *= s;\n e[13] *= s;\n e[2] *= s;\n e[6] *= s;\n e[10] *= s;\n e[14] *= s;\n e[3] *= s;\n e[7] *= s;\n e[11] *= s;\n e[15] *= s;\n return this;\n };\n /**\n * 矩阵求行列式值\n * @returns 行列式值\n */\n Matrix4.prototype.determinant = function () {\n var e = this.elements;\n var m11 = e[0], m12 = e[4], m13 = e[8], m14 = e[12];\n var m21 = e[1], m22 = e[5], m23 = e[9], m24 = e[13];\n var m31 = e[2], m32 = e[6], m33 = e[10], m34 = e[14];\n var m41 = e[3], m42 = e[7], m43 = e[11], m44 = e[15];\n return (m41 * (+m14 * m23 * m32\n - m13 * m24 * m32\n - m14 * m22 * m33\n + m12 * m24 * m33\n + m13 * m22 * m34\n - m12 * m23 * m34) +\n m42 * (+m11 * m23 * m34\n - m11 * m24 * m33\n + m14 * m21 * m33\n - m13 * m21 * m34\n + m13 * m24 * m31\n - m14 * m23 * m31) +\n m43 * (+m11 * m24 * m32\n - m11 * m22 * m34\n - m14 * m21 * m32\n + m12 * m21 * m34\n + m14 * m22 * m31\n - m12 * m24 * m31) +\n m44 * (-m13 * m22 * m31\n - m11 * m23 * m32\n + m11 * m22 * m33\n + m13 * m21 * m32\n - m12 * m21 * m33\n + m12 * m23 * m31));\n };\n /**\n * 矩阵转置\n * @returns 转置结果\n */\n Matrix4.prototype.transpose = function () {\n var e = this.elements;\n var t;\n t = e[1];\n e[1] = e[4];\n e[4] = t;\n t = e[2];\n e[2] = e[8];\n e[8] = t;\n t = e[3];\n e[3] = e[12];\n e[12] = t;\n //\n t = e[6];\n e[6] = e[9];\n e[9] = t;\n t = e[7];\n e[7] = e[13];\n e[13] = t;\n t = e[11];\n e[11] = e[14];\n e[14] = t;\n return this;\n };\n /**\n * 矩阵求逆\n * @returns 逆矩阵\n */\n Matrix4.prototype.invert = function () {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n var e = this.elements;\n var m11 = e[0], m21 = e[1], m31 = e[2], m41 = e[3];\n var m12 = e[4], m22 = e[5], m32 = e[6], m42 = e[7];\n var m13 = e[8], m23 = e[9], m33 = e[10], m43 = e[11];\n var m14 = e[12], m24 = e[13], m34 = e[14], m44 = e[15];\n var t11 = m23 * m34 * m42 - m24 * m33 * m42 + m24 * m32 * m43 - m22 * m34 * m43 - m23 * m32 * m44 + m22 * m33 * m44;\n var t12 = m14 * m33 * m42 - m13 * m34 * m42 - m14 * m32 * m43 + m12 * m34 * m43 + m13 * m32 * m44 - m12 * m33 * m44;\n var t13 = m13 * m24 * m42 - m14 * m23 * m42 + m14 * m22 * m43 - m12 * m24 * m43 - m13 * m22 * m44 + m12 * m23 * m44;\n var t14 = m14 * m23 * m32 - m13 * m24 * m32 - m14 * m22 * m33 + m12 * m24 * m33 + m13 * m22 * m34 - m12 * m23 * m34;\n var det = m11 * t11 + m21 * t12 + m31 * t13 + m41 * t14;\n if (det === 0) {\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n var detInv = 1 / det;\n e[0] = t11 * detInv;\n e[1] = (m24 * m33 * m41 - m23 * m34 * m41 - m24 * m31 * m43 + m21 * m34 * m43 + m23 * m31 * m44 - m21 * m33 * m44) * detInv;\n e[2] = (m22 * m34 * m41 - m24 * m32 * m41 + m24 * m31 * m42 - m21 * m34 * m42 - m22 * m31 * m44 + m21 * m32 * m44) * detInv;\n e[3] = (m23 * m32 * m41 - m22 * m33 * m41 - m23 * m31 * m42 + m21 * m33 * m42 + m22 * m31 * m43 - m21 * m32 * m43) * detInv;\n e[4] = t12 * detInv;\n e[5] = (m13 * m34 * m41 - m14 * m33 * m41 + m14 * m31 * m43 - m11 * m34 * m43 - m13 * m31 * m44 + m11 * m33 * m44) * detInv;\n e[6] = (m14 * m32 * m41 - m12 * m34 * m41 - m14 * m31 * m42 + m11 * m34 * m42 + m12 * m31 * m44 - m11 * m32 * m44) * detInv;\n e[7] = (m12 * m33 * m41 - m13 * m32 * m41 + m13 * m31 * m42 - m11 * m33 * m42 - m12 * m31 * m43 + m11 * m32 * m43) * detInv;\n e[8] = t13 * detInv;\n e[9] = (m14 * m23 * m41 - m13 * m24 * m41 - m14 * m21 * m43 + m11 * m24 * m43 + m13 * m21 * m44 - m11 * m23 * m44) * detInv;\n e[10] = (m12 * m24 * m41 - m14 * m22 * m41 + m14 * m21 * m42 - m11 * m24 * m42 - m12 * m21 * m44 + m11 * m22 * m44) * detInv;\n e[11] = (m13 * m22 * m41 - m12 * m23 * m41 - m13 * m21 * m42 + m11 * m23 * m42 + m12 * m21 * m43 - m11 * m22 * m43) * detInv;\n e[12] = t14 * detInv;\n e[13] = (m13 * m24 * m31 - m14 * m23 * m31 + m14 * m21 * m33 - m11 * m24 * m33 - m13 * m21 * m34 + m11 * m23 * m34) * detInv;\n e[14] = (m14 * m22 * m31 - m12 * m24 * m31 - m14 * m21 * m32 + m11 * m24 * m32 + m12 * m21 * m34 - m11 * m22 * m34) * detInv;\n e[15] = (m12 * m23 * m31 - m13 * m22 * m31 + m13 * m21 * m32 - m11 * m23 * m32 - m12 * m21 * m33 + m11 * m22 * m33) * detInv;\n return this;\n };\n /**\n * 提取基轴\n * @param xAxis - 提取的 x 轴\n * @param yAxis - 提取的 y 轴\n * @param zAxis - 提取的 z 轴\n * @returns\n */\n Matrix4.prototype.extractBasis = function (xAxis, yAxis, zAxis) {\n var te = this.elements;\n xAxis.set(te[0], te[1], te[2]);\n yAxis.set(te[4], te[5], te[6]);\n zAxis.set(te[8], te[9], te[10]);\n return this;\n };\n /**\n * 根据基础信息组装矩阵\n * @param translation - 位置信息\n * @param rotation - 旋转信息\n * @param scale - 缩放信息\n * @param [anchor] - 锚点信息\n * @returns 矩阵\n */\n Matrix4.prototype.compose = function (translation, rotation, scale, anchor) {\n if (anchor === void 0) { anchor = Vector3.ZERO; }\n var te = this.elements;\n var x = rotation.x, y = rotation.y, z = rotation.z, w = rotation.w;\n var l = -anchor.x;\n var m = -anchor.y;\n var n = -anchor.z;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = scale.x, sy = scale.y, sz = scale.z;\n te[0] = (1 - (yy + zz)) * sx;\n te[1] = (xy + wz) * sx;\n te[2] = (xz - wy) * sx;\n te[3] = 0;\n te[4] = (xy - wz) * sy;\n te[5] = (1 - (xx + zz)) * sy;\n te[6] = (yz + wx) * sy;\n te[7] = 0;\n te[8] = (xz + wy) * sz;\n te[9] = (yz - wx) * sz;\n te[10] = (1 - (xx + yy)) * sz;\n te[11] = 0;\n te[12] = l * te[0] + m * te[4] + n * te[8] - l + translation.x;\n te[13] = l * te[1] + m * te[5] + n * te[9] - m + translation.y;\n te[14] = l * te[2] + m * te[6] + n * te[10] - n + translation.z;\n return this;\n };\n /**\n * 矩阵拆分为基础信息\n * @param translation - 位置信息\n * @param rotation - 旋转信息\n * @param scale - 缩放信息\n * @returns 矩阵\n */\n Matrix4.prototype.decompose = function (translation, rotation, scale) {\n var v = Matrix4.tempVec0;\n var te = this.elements;\n var sx = v.set(te[0], te[1], te[2]).length();\n var sy = v.set(te[4], te[5], te[6]).length();\n var sz = v.set(te[8], te[9], te[10]).length();\n // if determine is negative, we need to invert one scale\n var det = this.determinant();\n if (det < 0) {\n sx = -sx;\n }\n translation.x = te[12];\n translation.y = te[13];\n translation.z = te[14];\n // scale the rotation part\n var m = Matrix4.tempMat0;\n m.copyFrom(this);\n var invSX = 1 / sx;\n var invSY = 1 / sy;\n var invSZ = 1 / sz;\n m.elements[0] *= invSX;\n m.elements[1] *= invSX;\n m.elements[2] *= invSX;\n m.elements[4] *= invSY;\n m.elements[5] *= invSY;\n m.elements[6] *= invSY;\n m.elements[8] *= invSZ;\n m.elements[9] *= invSZ;\n m.elements[10] *= invSZ;\n rotation.setFromRotationMatrix(m);\n scale.x = sx;\n scale.y = sy;\n scale.z = sz;\n return this;\n };\n Matrix4.prototype.getTranslation = function (translation) {\n var te = this.elements;\n return translation.set(te[12], te[13], te[14]);\n };\n Matrix4.prototype.getScale = function (scale) {\n var te = this.elements;\n return scale.set(Math.hypot(te[0], te[1], te[2]), Math.hypot(te[4], te[5], te[6]), Math.hypot(te[8], te[9], te[10]));\n };\n /**\n * 获得矩阵分解的结果\n * @returns 分解的结果\n */\n Matrix4.prototype.getTransform = function () {\n var translation = new Vector3();\n var rotation = new Quaternion();\n var scale = new Vector3();\n this.decompose(translation, rotation, scale);\n return { translation: translation, rotation: rotation, scale: scale };\n };\n /**\n * 根据视窗信息设置正交相机投影矩阵\n * @param left - 视窗左平面位置\n * @param right - 视窗右平面位置\n * @param top - 视窗上平面位置\n * @param bottom - 视窗下平面位置\n * @param near - 视窗近平面位置\n * @param far - 视窗远平面位置\n * @returns 矩阵\n */\n Matrix4.prototype.orthographic = function (left, right, top, bottom, near, far) {\n var a = 1.0 / (right - left);\n var b = 1.0 / (top - bottom);\n var c = 1.0 / (far - near);\n var tx = -(right + left) * a;\n var ty = -(top + bottom) * b;\n var tz = -(far + near) * c;\n a *= 2.0;\n b *= 2.0;\n c *= -2.0;\n var te = this.elements;\n te[0] = a;\n te[1] = 0.0;\n te[2] = 0.0;\n te[3] = 0.0;\n //\n te[4] = 0.0;\n te[5] = b;\n te[6] = 0.0;\n te[7] = 0.0;\n //\n te[8] = 0.0;\n te[9] = 0.0;\n te[10] = c;\n te[11] = 0.0;\n //\n te[12] = tx;\n te[13] = ty;\n te[14] = tz;\n te[15] = 1.0;\n return this;\n };\n /**\n * 通过透视相机基础参数设置投影矩阵\n * @param fov - 视角(弧度)\n * @param aspect - 视窗比例\n * @param near - 近平面\n * @param far - 远平面\n * @param [reverse] - 视锥体长宽反转(3D这里反了?)\n * @returns 投影矩阵\n */\n Matrix4.prototype.perspective = function (fov, aspect, near, far, reverse) {\n var f = 1.0 / Math.tan(fov * 0.5);\n var nf = 1 / (near - far);\n var te = this.elements;\n te[0] = reverse ? f : f / aspect;\n te[1] = 0;\n te[2] = 0;\n te[3] = 0;\n //\n te[4] = 0;\n te[5] = reverse ? f * aspect : f;\n te[6] = 0;\n te[7] = 0;\n //\n te[8] = 0;\n te[9] = 0;\n te[10] = (far + near) * nf;\n te[11] = -1;\n //\n te[12] = 0;\n te[13] = 0;\n te[14] = 2 * far * near * nf;\n te[15] = 0;\n if (far === null || far === Infinity) {\n te[10] = -1;\n te[14] = -2 * near;\n }\n return this;\n };\n /**\n * 对点进行投影变换\n * @param v - 输入点\n * @param [out] - 输出点,如果没有就覆盖输入的数据\n * @returns 投影后的点\n */\n Matrix4.prototype.projectPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n var w = e[3] * x + e[7] * y + e[11] * z + e[15];\n return res.multiply(1 / w);\n };\n /**\n * 对点进行矩阵变换\n * @param v - 输入点\n * @param [out] - 输出点,如果没有就覆盖输入的数据\n * @returns 变换后的点\n */\n Matrix4.prototype.transformPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n return res;\n };\n /**\n * 对法向量进行矩阵变换\n * @param v - 输入法向量\n * @param [out] - 输出法向量,如果没有就覆盖输入的数据\n * @returns 变换后的法向量\n */\n Matrix4.prototype.transformNormal = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z;\n res.y = e[1] * x + e[5] * y + e[9] * z;\n res.z = e[2] * x + e[6] * y + e[10] * z;\n return res.normalize();\n };\n /**\n * 对四维向量进行矩阵变换\n * @param v - 输入向量\n * @param [out] - 输出向量,如果没有就覆盖输入的数据\n * @returns 变换后向量\n */\n Matrix4.prototype.transformVector4 = function (v, out) {\n var x = v.x, y = v.y, z = v.z, w = v.w;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n res.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n res.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n res.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n return res;\n };\n /**\n * 矩阵判等\n * @param matrix - 矩阵\n * @returns 判等结果\n */\n Matrix4.prototype.equals = function (matrix) {\n var te = this.elements;\n var me = matrix.elements;\n for (var i = 0; i < 16; i++) {\n if (!isEqual(te[i], me[i])) {\n return false;\n }\n }\n return true;\n };\n /**\n * 矩阵转数组\n * @returns\n */\n Matrix4.prototype.toArray = function () {\n return __spreadArray([], __read(this.elements), false);\n };\n Matrix4.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n var te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n array[offset + 9] = te[9];\n array[offset + 10] = te[10];\n array[offset + 11] = te[11];\n array[offset + 12] = te[12];\n array[offset + 13] = te[13];\n array[offset + 14] = te[14];\n array[offset + 15] = te[15];\n };\n /**\n * 创建单位阵\n * @returns 单位矩阵\n */\n Matrix4.fromIdentity = function () {\n return new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n };\n /**\n * 创建相机矩阵\n * @param eye - 相机位置\n * @param target - 目标位置\n * @param up - 相机方向\n * @returns 矩阵\n */\n Matrix4.fromLookAt = function (eye, target, up) {\n return new Matrix4().lookAt(eye, target, up);\n };\n /**\n * 创建投影矩阵\n * @param fov - 视角\n * @param aspect - 视窗比例\n * @param near - 近平面\n * @param far - 远平面\n * @param [reverse] - 视锥体长宽反转\n * @returns 投影矩阵\n */\n Matrix4.fromPerspective = function (fov, aspect, near, far, reverse) {\n return new Matrix4().perspective(fov, aspect, near, far, reverse);\n };\n /**\n * 通过四个列向量创建矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @param c4 - 第四列\n * @returns\n */\n Matrix4.fromColumnVectors = function (c1, c2, c3, c4) {\n return new Matrix4().setFromColumnVectors(c1, c2, c3, c4);\n };\n /**\n * 通过三阶矩阵创建矩阵\n * @param m - 三阶矩阵\n * @returns 创建的矩阵\n */\n Matrix4.fromMatrix3 = function (m) {\n return new Matrix4().setFromMatrix3(m);\n };\n /**\n * 通过数组创建矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix4.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Matrix4().setFromArray(array, offset);\n };\n /**\n * 通过缩放创建矩阵\n * @param x - x 缩放\n * @param y - y 缩放\n * @param z - z 缩放\n * @returns 缩放结果\n */\n Matrix4.fromScale = function (x, y, z) {\n return new Matrix4().setFromScale(x, y, z);\n };\n /**\n * 通过平移创建矩阵\n * @param x - x 平移\n * @param y - y 平移\n * @param z - z 平移\n * @returns 平移结果\n */\n Matrix4.fromTranslation = function (x, y, z) {\n return new Matrix4().setFromTranslation(x, y, z);\n };\n /**\n * 通过 x 轴旋转创建矩阵\n * @param theta - x 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.fromRotationX = function (theta) {\n return new Matrix4().setFromRotationX(theta);\n };\n /**\n * 通过 y 轴旋转创建矩阵\n * @param theta - y 轴旋转弧度\n * @returns 矩阵\n */\n Matrix4.fromRotationY = function (theta) {\n return new Matrix4().setFromRotationY(theta);\n };\n /**\n * 通过 z 轴旋转创建矩阵\n * @param theta - z 轴旋转弧度\n * @returns\n */\n Matrix4.fromRotationZ = function (theta) {\n return new Matrix4().setFromRotationZ(theta);\n };\n /**\n * 通过旋转轴与旋转弧度创建矩阵\n * @param axis - 旋转轴\n * @param angle - 旋转弧度\n * @returns\n */\n Matrix4.fromRotationAxis = function (axis, angle) {\n return new Matrix4().setFromRotationAxis(axis, angle);\n };\n /**\n * 通过欧拉角创建矩阵\n * @param euler - 欧拉角\n * @returns\n */\n Matrix4.fromEuler = function (euler) {\n return new Matrix4().setFromEuler(euler);\n };\n /**\n * 通过四元数创建矩阵\n * @param quat - 四元数\n * @returns\n */\n Matrix4.fromQuaternion = function (quat) {\n return new Matrix4().setFromQuaternion(quat);\n };\n /**\n * 通过倾斜创建矩阵\n * @param x - x 方向倾斜分量\n * @param y - y 方向倾斜分量\n * @param z - z 方向倾斜分量\n * @returns 倾斜矩阵\n */\n Matrix4.fromShear = function (x, y, z) {\n return new Matrix4().setFromShear(x, y, z);\n };\n /**\n * 通过基轴创建矩阵\n * @param xAxis - x 轴\n * @param yAxis - y 轴\n * @param zAxis - z 轴\n * @returns\n */\n Matrix4.fromBasis = function (xAxis, yAxis, zAxis) {\n return new Matrix4().setFromBasis(xAxis, yAxis, zAxis);\n };\n /**\n * 通过行优先数据设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m14 - 第 1 行,第 4 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m24 - 第 2 行,第 4 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @param m34 - 第 3 行,第 4 列\n * @param m41 - 第 4 行,第 1 列\n * @param m42 - 第 4 行,第 2 列\n * @param m43 - 第 4 行,第 3 列\n * @param m44 - 第 4 行,第 4 列\n * @returns\n */\n Matrix4.fromRowMajorData = function (m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n return new Matrix4(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44);\n };\n Matrix4.IDENTITY = new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n Matrix4.ZERO = new Matrix4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n Matrix4.tempVec0 = new Vector3();\n Matrix4.tempVec1 = new Vector3();\n Matrix4.tempVec2 = new Vector3();\n Matrix4.tempMat0 = new Matrix4();\n return Matrix4;\n}());\n","import { Quaternion } from './quaternion';\nimport { Matrix4 } from './matrix4';\nimport { RAD2DEG, clamp } from './utils';\nimport { DEG2RAD } from './utils';\n/**\n * 欧拉角顺序\n */\nexport var EulerOrder;\n(function (EulerOrder) {\n EulerOrder[EulerOrder[\"XYZ\"] = 0] = \"XYZ\";\n EulerOrder[EulerOrder[\"XZY\"] = 1] = \"XZY\";\n EulerOrder[EulerOrder[\"YXZ\"] = 2] = \"YXZ\";\n EulerOrder[EulerOrder[\"YZX\"] = 3] = \"YZX\";\n EulerOrder[EulerOrder[\"ZXY\"] = 4] = \"ZXY\";\n EulerOrder[EulerOrder[\"ZYX\"] = 5] = \"ZYX\";\n})(EulerOrder || (EulerOrder = {}));\n/**\n * 欧拉角\n */\nexport var Euler = /** @class */ (function () {\n /**\n * 构造函数,传入值为 x, y, z 方向分量以及欧拉角顺序\n * @param [x=0] - x 方向分量\n * @param [y=0] - y 方向分量\n * @param [z=0] - z 方向分量\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n */\n function Euler(x, y, z, order) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.order = order;\n }\n /**\n * 设置欧拉角\n * @param x - x 方向分量\n * @param y - y 方向分量\n * @param z - z 方向分量\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.set = function (x, y, z, order) {\n if (order === void 0) { order = this.order; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.order = order;\n return this;\n };\n Euler.prototype.setZero = function (order) {\n if (order === void 0) { order = this.order; }\n return this.set(0, 0, 0, order);\n };\n /**\n * 通过矩阵设置欧拉角\n * @param m - 矩阵\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromRotationMatrix4 = function (m, order) {\n if (order === void 0) { order = this.order; }\n var te = m.elements;\n var m11 = te[0];\n var m12 = te[4];\n var m13 = te[8];\n var m21 = te[1];\n var m22 = te[5];\n var m23 = te[9];\n var m31 = te[2];\n var m32 = te[6];\n var m33 = te[10];\n switch (order) {\n case EulerOrder.XYZ:\n this.y = Math.asin(clamp(m13, -1, 1));\n if (Math.abs(m13) < 0.9999999) {\n this.x = Math.atan2(-m23, m33);\n this.z = Math.atan2(-m12, m11);\n }\n else {\n this.x = Math.atan2(m32, m22);\n this.z = 0;\n }\n break;\n case EulerOrder.YXZ:\n this.x = Math.asin(-clamp(m23, -1, 1));\n if (Math.abs(m23) < 0.9999999) {\n this.y = Math.atan2(m13, m33);\n this.z = Math.atan2(m21, m22);\n }\n else {\n this.y = Math.atan2(-m31, m11);\n this.z = 0;\n }\n break;\n case EulerOrder.ZXY:\n this.x = Math.asin(clamp(m32, -1, 1));\n if (Math.abs(m32) < 0.9999999) {\n this.y = Math.atan2(-m31, m33);\n this.z = Math.atan2(-m12, m22);\n }\n else {\n this.y = 0;\n this.z = Math.atan2(m21, m11);\n }\n break;\n case EulerOrder.ZYX:\n this.y = Math.asin(-clamp(m31, -1, 1));\n if (Math.abs(m31) < 0.9999999) {\n this.x = Math.atan2(m32, m33);\n this.z = Math.atan2(m21, m11);\n }\n else {\n this.x = 0;\n this.z = Math.atan2(-m12, m22);\n }\n break;\n case EulerOrder.YZX:\n this.z = Math.asin(clamp(m21, -1, 1));\n if (Math.abs(m21) < 0.9999999) {\n this.x = Math.atan2(-m23, m22);\n this.y = Math.atan2(-m31, m11);\n }\n else {\n this.x = 0;\n this.y = Math.atan2(m13, m33);\n }\n break;\n case EulerOrder.XZY:\n this.z = Math.asin(-clamp(m12, -1, 1));\n if (Math.abs(m12) < 0.9999999) {\n this.x = Math.atan2(m32, m22);\n this.y = Math.atan2(m13, m11);\n }\n else {\n this.x = Math.atan2(-m23, m33);\n this.y = 0;\n }\n break;\n default:\n console.error('setFromRotationMatrix: unknown order: ' + order);\n }\n this.x *= RAD2DEG;\n this.y *= RAD2DEG;\n this.z *= RAD2DEG;\n this.order = order;\n return this;\n };\n /**\n * 通过四元数设置欧拉角\n * @param quat - 四元数\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromQuaternion = function (quat, order) {\n if (order === void 0) { order = this.order; }\n var matrix = Euler.tempMat0;\n matrix.setFromQuaternion(quat);\n return this.setFromRotationMatrix4(matrix, order);\n };\n /**\n * 通过三维向量设置欧拉角\n * @param v - 三维向量\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromVector3 = function (v, order) {\n if (order === void 0) { order = this.order; }\n return this.set(v.x, v.y, v.z, order);\n };\n /**\n * 通过数组设置欧拉角\n * @param array - 数组\n * @param [offset=0] - 偏移\n * @param [order] - 欧拉角顺序\n * @returns\n */\n Euler.prototype.setFromArray = function (array, offset, order) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n if (order === void 0) { order = this.order; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.order = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : order;\n return this;\n };\n /**\n * 克隆欧拉角\n * @returns 克隆结果\n */\n Euler.prototype.clone = function () {\n return new Euler(this.x, this.y, this.z, this.order);\n };\n /**\n * 复制欧拉角\n * @param euler - 复制对象\n * @returns 复制结果\n */\n Euler.prototype.copyFrom = function (euler) {\n this.x = euler.x;\n this.y = euler.y;\n this.z = euler.z;\n this.order = euler.order;\n return this;\n };\n Euler.prototype.add = function (euler) {\n if (this.order != euler.order) {\n console.error('add euler with different order');\n return this;\n }\n this.x += euler.x;\n this.y += euler.y;\n this.z += euler.z;\n return this;\n };\n Euler.prototype.addEulers = function (left, right) {\n if (left.order != right.order) {\n console.error('add euler with different order');\n return this;\n }\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n this.order = left.order;\n return this;\n };\n Euler.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n };\n /**\n * 修改欧拉角顺序\n * @param newOrder - 欧拉角顺序\n * @returns 修改结果\n */\n Euler.prototype.reorder = function (newOrder) {\n var quaternion = new Quaternion();\n quaternion.setFromEuler(this);\n return this.setFromQuaternion(quaternion, newOrder);\n };\n /**\n * 通过四元数旋转向量\n * @param v - 待旋转向量\n * @param out - 旋转结果,如果没有传入直接覆盖输入值\n * @returns\n */\n Euler.prototype.rotateVector3 = function (v, out) {\n var q = Euler.tempQuat0;\n return q.setFromEuler(this).rotateVector3(v, out);\n };\n /**\n * 欧拉角相等判断\n * @param euler - 欧拉角\n * @returns 判断结果\n */\n Euler.prototype.equals = function (euler) {\n return euler.x === this.x\n && euler.y === this.y\n && euler.z === this.z\n && euler.order === this.order;\n };\n /**\n * 欧拉角保存于三维向量\n * @param vec - 目标保存对象\n * @returns 保存结果\n */\n Euler.prototype.toVector3 = function (vec) {\n return vec.set(this.x, this.y, this.z);\n };\n /**\n * 欧拉角转数组\n * @returns 保存结果\n */\n Euler.prototype.toArray = function () {\n return [this.x, this.y, this.z];\n };\n /**\n * 欧拉角转四元数\n * @param quat - 目标四元数\n * @returns 目标四元数\n */\n Euler.prototype.toQuaternion = function (quat) {\n var _a;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, order = _a.order;\n var c1 = Math.cos(x * DEG2RAD * 0.5);\n var c2 = Math.cos(y * DEG2RAD * 0.5);\n var c3 = Math.cos(z * DEG2RAD * 0.5);\n var s1 = Math.sin(x * DEG2RAD * 0.5);\n var s2 = Math.sin(y * DEG2RAD * 0.5);\n var s3 = Math.sin(z * DEG2RAD * 0.5);\n switch (order) {\n case EulerOrder.XYZ:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.YXZ:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n case EulerOrder.ZXY:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.ZYX:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n case EulerOrder.YZX:\n quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n break;\n case EulerOrder.XZY:\n quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n break;\n default:\n console.error('unknown euler order: ' + order);\n }\n return quat;\n };\n /**\n * 欧拉角转矩阵\n * @param mat - 目标矩阵\n * @returns 返回目标矩阵\n */\n Euler.prototype.toMatrix4 = function (mat) {\n var _a;\n var me = mat.elements;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, order = _a.order;\n var cosX = Math.cos(x * DEG2RAD), sinX = Math.sin(x * DEG2RAD);\n var cosY = Math.cos(y * DEG2RAD), sinY = Math.sin(y * DEG2RAD);\n var cosZ = Math.cos(z * DEG2RAD), sinZ = Math.sin(z * DEG2RAD);\n if (order === EulerOrder.XYZ) {\n var cosXcosZ = cosX * cosZ;\n var cosXsinZ = cosX * sinZ;\n var sinXcosZ = sinX * cosZ;\n var sinXsinZ = sinX * sinZ;\n me[0] = cosY * cosZ;\n me[4] = -cosY * sinZ;\n me[8] = sinY;\n me[1] = cosXsinZ + sinXcosZ * sinY;\n me[5] = cosXcosZ - sinXsinZ * sinY;\n me[9] = -sinX * cosY;\n me[2] = sinXsinZ - cosXcosZ * sinY;\n me[6] = sinXcosZ + cosXsinZ * sinY;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.YXZ) {\n var cosYcosZ = cosY * cosZ;\n var cosYsinZ = cosY * sinZ;\n var sinYcosZ = sinY * cosZ;\n var sinYsinZ = sinY * sinZ;\n me[0] = cosYcosZ + sinYsinZ * sinX;\n me[4] = sinYcosZ * sinX - cosYsinZ;\n me[8] = cosX * sinY;\n me[1] = cosX * sinZ;\n me[5] = cosX * cosZ;\n me[9] = -sinX;\n me[2] = cosYsinZ * sinX - sinYcosZ;\n me[6] = sinYsinZ + cosYcosZ * sinX;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.ZXY) {\n var cosYcosZ = cosY * cosZ;\n var cosYsinZ = cosY * sinZ;\n var sinYcosZ = sinY * cosZ;\n var sinYsinZ = sinY * sinZ;\n me[0] = cosYcosZ - sinYsinZ * sinX;\n me[4] = -cosX * sinZ;\n me[8] = sinYcosZ + cosYsinZ * sinX;\n me[1] = cosYsinZ + sinYcosZ * sinX;\n me[5] = cosX * cosZ;\n me[9] = sinYsinZ - cosYcosZ * sinX;\n me[2] = -cosX * sinY;\n me[6] = sinX;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.ZYX) {\n var cosXcosZ = cosX * cosZ;\n var cosXsinZ = cosX * sinZ;\n var sinXcosZ = sinX * cosZ;\n var sinXsinZ = sinX * sinZ;\n me[0] = cosY * cosZ;\n me[4] = sinXcosZ * sinY - cosXsinZ;\n me[8] = cosXcosZ * sinY + sinXsinZ;\n me[1] = cosY * sinZ;\n me[5] = sinXsinZ * sinY + cosXcosZ;\n me[9] = cosXsinZ * sinY - sinXcosZ;\n me[2] = -sinY;\n me[6] = sinX * cosY;\n me[10] = cosX * cosY;\n }\n else if (order === EulerOrder.YZX) {\n var cosXcosY = cosX * cosY;\n var cosXsinY = cosX * sinY;\n var sinXcosY = sinX * cosY;\n var sinXsinY = sinX * sinY;\n me[0] = cosY * cosZ;\n me[4] = sinXsinY - cosXcosY * sinZ;\n me[8] = sinXcosY * sinZ + cosXsinY;\n me[1] = sinZ;\n me[5] = cosX * cosZ;\n me[9] = -sinX * cosZ;\n me[2] = -sinY * cosZ;\n me[6] = cosXsinY * sinZ + sinXcosY;\n me[10] = cosXcosY - sinXsinY * sinZ;\n }\n else if (order === EulerOrder.XZY) {\n var cosXcosY = cosX * cosY;\n var cosXsinY = cosX * sinY;\n var sinXcosY = sinX * cosY;\n var sinXsinY = sinX * sinY;\n me[0] = cosY * cosZ;\n me[4] = -sinZ;\n me[8] = sinY * cosZ;\n me[1] = cosXcosY * sinZ + sinXsinY;\n me[5] = cosX * cosZ;\n me[9] = cosXsinY * sinZ - sinXcosY;\n me[2] = sinXcosY * sinZ - cosXsinY;\n me[6] = sinX * cosZ;\n me[10] = sinXsinY * sinZ + cosXcosY;\n }\n else {\n console.error('toMatrix4: Invalid order ' + order);\n }\n // bottom row\n me[3] = 0;\n me[7] = 0;\n me[11] = 0;\n // last column\n me[12] = 0;\n me[13] = 0;\n me[14] = 0;\n me[15] = 1;\n return mat;\n };\n /**\n * 通过矩阵创建欧拉角\n * @param m - 矩阵\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromRotationMatrix4 = function (m, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromRotationMatrix4(m, order);\n };\n /**\n * 通过四元数创建欧拉角\n * @param quat - 四元数\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromQuaternion = function (quat, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromQuaternion(quat, order);\n };\n /**\n * 通过三维向量创建欧拉角\n * @param v - 三维向量\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromVector3 = function (v, order) {\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromVector3(v, order);\n };\n /**\n * 通过数组创建欧拉角\n * @param array - 数组\n * @param [offset=0] - 偏移\n * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n * @returns 创建结果\n */\n Euler.fromArray = function (array, offset, order) {\n if (offset === void 0) { offset = 0; }\n if (order === void 0) { order = Euler.DEFAULT_ORDER; }\n return new Euler().setFromArray(array, offset, order);\n };\n Euler.DEFAULT_ORDER = EulerOrder.ZYX;\n Euler.tempQuat0 = new Quaternion();\n Euler.tempMat0 = new Matrix4();\n return Euler;\n}());\n","import { NumberEpsilon } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四维向量\n */\nexport var Vector4 = /** @class */ (function () {\n /**\n * 构造函数\n * @param [x=0] - x 轴分量\n * @param [y=0] - y 轴分量\n * @param [z=0] - z 轴分量\n * @param [w=1] - w 轴分量\n */\n function Vector4(x, y, z, w) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n if (z === void 0) { z = 0; }\n if (w === void 0) { w = 0; }\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n /**\n * 设置向量\n * @param x - x 轴分量\n * @param y - y 轴分量\n * @param z - z 轴分量\n * @param w - w 轴分量\n * @returns\n */\n Vector4.prototype.set = function (x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n };\n /**\n * 设置零向量\n * @returns 向量\n */\n Vector4.prototype.setZero = function () {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 0;\n return this;\n };\n /**\n * 通过标量数值设置向量\n * @param num - 数值\n * @returns 向量\n */\n Vector4.prototype.setFromNumber = function (num) {\n this.x = num;\n this.y = num;\n this.z = num;\n this.w = num;\n return this;\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector4.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n this.x = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.y = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.z = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.w = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : 0;\n return this;\n };\n /**\n * 拷贝向量\n * @param v - 复制对象\n * @returns 拷贝结果\n */\n Vector4.prototype.copyFrom = function (v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n this.w = v.w;\n return this;\n };\n /**\n * 克隆向量\n * @returns 克隆结果\n */\n Vector4.prototype.clone = function () {\n return new Vector4(this.x, this.y, this.z, this.w);\n };\n /**\n * 根据下标设置向量分量\n * @param index - 下标值\n * @param value - 分量值\n * @returns 向量\n */\n Vector4.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n case 3:\n this.w = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取向量分量\n * @param index - 下标\n * @returns 分量值\n */\n Vector4.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.x;\n case 1: return this.y;\n case 2: return this.z;\n case 3: return this.w;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 向量相加\n * @param right - 相加对象,向量 | 数字\n * @returns 相加结果\n */\n Vector4.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.x += right;\n this.y += right;\n this.z += right;\n this.w += right;\n }\n else if (right instanceof Array) {\n this.x += right[0];\n this.y += right[1];\n this.z += right[2];\n this.w += right[3];\n }\n else {\n this.x += right.x;\n this.y += right.y;\n this.z += right.z;\n this.w += right.w;\n }\n return this;\n };\n /**\n * 向量相加\n * @param left - 向量\n * @param right - 向量\n * @returns 求和结果\n */\n Vector4.prototype.addVectors = function (left, right) {\n this.x = left.x + right.x;\n this.y = left.y + right.y;\n this.z = left.z + right.z;\n this.w = left.w + right.w;\n return this;\n };\n /**\n * 向量比例缩放后相加\n * @param right - 向量\n * @param s - 比例\n * @returns 求和结果\n */\n Vector4.prototype.addScaledVector = function (right, s) {\n this.x += right.x * s;\n this.y += right.y * s;\n this.z += right.z * s;\n this.w += right.w * s;\n return this;\n };\n /**\n * 向量相减\n * @param right - 相减对象,向量 | 数字\n * @returns 相减结果\n */\n Vector4.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.x -= right;\n this.y -= right;\n this.z -= right;\n this.w -= right;\n }\n else if (right instanceof Array) {\n this.x -= right[0];\n this.y -= right[1];\n this.z -= right[2];\n this.w -= right[3];\n }\n else {\n this.x -= right.x;\n this.y -= right.y;\n this.z -= right.z;\n this.w -= right.w;\n }\n return this;\n };\n /**\n * 向量相减\n * @param left - 向量\n * @param right - 向量\n * @returns 向量\n */\n Vector4.prototype.subtractVectors = function (left, right) {\n this.x = left.x - right.x;\n this.y = left.y - right.y;\n this.z = left.z - right.z;\n this.w = left.w - right.w;\n return this;\n };\n /**\n * 向量相乘\n * @param right - 相乘对象,对象 | 数字\n * @returns 向量\n */\n Vector4.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.x *= right;\n this.y *= right;\n this.z *= right;\n this.w *= right;\n }\n else if (right instanceof Array) {\n this.x *= right[0];\n this.y *= right[1];\n this.z *= right[2];\n this.w *= right[3];\n }\n else {\n this.x *= right.x;\n this.y *= right.y;\n this.z *= right.z;\n this.w *= right.w;\n }\n return this;\n };\n /**\n * 向量相乘\n * @param left - 向量\n * @param right - 向量\n * @returns 向量\n */\n Vector4.prototype.multiplyVectors = function (left, right) {\n this.x = left.x * right.x;\n this.y = left.y * right.y;\n this.z = left.z * right.z;\n this.w = left.w * right.w;\n return this;\n };\n /**\n * 向量相除\n * @param right - 相除对象,对象 | 数字\n * @returns 向量\n */\n Vector4.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.x /= right;\n this.y /= right;\n this.z /= right;\n this.w /= right;\n }\n else if (right instanceof Array) {\n this.x /= right[0];\n this.y /= right[1];\n this.z /= right[2];\n this.w /= right[3];\n }\n else {\n this.x /= right.x;\n this.y /= right.y;\n this.z /= right.z;\n this.w /= right.w;\n }\n return this;\n };\n /**\n * 向量缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Vector4.prototype.scale = function (v) {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n this.w *= v;\n return this;\n };\n /**\n * 分量求和\n * @returns 求和结果\n */\n Vector4.prototype.sum = function () {\n return this.x + this.y + this.z + this.w;\n };\n /**\n * 向量求最小值\n * @param v - 向量或数值\n * @returns 最小值\n */\n Vector4.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.x = Math.min(this.x, v);\n this.y = Math.min(this.y, v);\n this.z = Math.min(this.z, v);\n this.w = Math.min(this.w, v);\n }\n else {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n this.w = Math.min(this.w, v.w);\n }\n return this;\n };\n /**\n * 向量求最大值\n * @param v - 向量或数值\n * @returns 最大值\n */\n Vector4.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.x = Math.max(this.x, v);\n this.y = Math.max(this.y, v);\n this.z = Math.max(this.z, v);\n this.w = Math.max(this.w, v);\n }\n else {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n this.w = Math.max(this.w, v.w);\n }\n return this;\n };\n /**\n * 向量阈值约束\n * @param min - 最小值\n * @param max - 最大值\n * @returns 向量\n */\n Vector4.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 向量向下取整\n * @returns 取整结果\n */\n Vector4.prototype.floor = function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n this.w = Math.floor(this.w);\n return this;\n };\n /**\n * 向量向上取整\n * @returns 取整结果\n */\n Vector4.prototype.ceil = function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n this.w = Math.ceil(this.w);\n return this;\n };\n /**\n * 向量四舍五入\n * @returns 求值结果\n */\n Vector4.prototype.round = function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n this.w = Math.round(this.w);\n return this;\n };\n /**\n * 向量取绝对值\n * @returns 向量\n */\n Vector4.prototype.abs = function () {\n this.x = Math.abs(this.x);\n this.y = Math.abs(this.y);\n this.z = Math.abs(this.z);\n this.w = Math.abs(this.w);\n return this;\n };\n /**\n * 向量取反\n * @returns 取反结果\n */\n Vector4.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n };\n /**\n * 向量长度平方\n * @returns 长度平方\n */\n Vector4.prototype.lengthSquared = function () {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n };\n /**\n * 向量长度\n * @returns 长度\n */\n Vector4.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n };\n /**\n * 向量归一化\n * @returns 归一化结果\n */\n Vector4.prototype.normalize = function () {\n return this.divide(this.length() || 1);\n };\n /**\n * 设置向量长度\n * @param length - 长度\n * @returns 向量\n */\n Vector4.prototype.setLength = function (length) {\n return this.normalize().multiply(length);\n };\n /**\n * 向量求线性插值\n * @param v - 向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector4.prototype.lerp = function (v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n this.w += (v.w - this.w) * alpha;\n return this;\n };\n /**\n * 两向量求线性插值\n * @param v1 - 第一个向量\n * @param v2 - 第二个向量\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Vector4.prototype.lerpVectors = function (v1, v2, alpha) {\n this.x = v1.x + (v2.x - v1.x) * alpha;\n this.y = v1.y + (v2.y - v1.y) * alpha;\n this.z = v1.z + (v2.z - v1.z) * alpha;\n this.w = v1.w + (v2.w - v1.w) * alpha;\n return this;\n };\n /**\n * 向量求点积\n * @param v - 向量\n * @returns 点积结果\n */\n Vector4.prototype.dot = function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n };\n /**\n * 向量判等\n * @param v - 向量\n * @returns 判等结果\n */\n Vector4.prototype.equals = function (v) {\n return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n };\n /**\n * 是否零向量\n * @returns 是否零向量\n */\n Vector4.prototype.isZero = function () {\n var _a;\n var eps = NumberEpsilon;\n var x = (_a = this, _a.x), y = _a.y, z = _a.z, w = _a.w;\n return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps && Math.abs(w) <= eps;\n };\n /**\n * 向量转数组\n * @returns 数组\n */\n Vector4.prototype.toArray = function () {\n return [this.x, this.y, this.z, this.w];\n };\n Vector4.prototype.toVector3 = function () {\n return new Vector3(this.x, this.y, this.z);\n };\n Vector4.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n array[offset + 3] = this.w;\n };\n /**\n * 生成随机向量\n * @returns 向量\n */\n Vector4.prototype.random = function () {\n this.x = Math.random();\n this.y = Math.random();\n this.z = Math.random();\n this.w = Math.random();\n return this;\n };\n /**\n * 变换矩阵作用于向量\n * @param m - 变换矩阵\n * @param [out] - 输出结果,如果没有设置就直接覆盖当前值\n * @returns 向量\n */\n Vector4.prototype.applyMatrix = function (m, out) {\n return m.transformVector4(this, out);\n };\n /**\n * 通过标量数值创建向量\n * @param num - 数值\n * @returns 向量\n */\n Vector4.fromNumber = function (num) {\n return new Vector4().setFromNumber(num);\n };\n /**\n * 通过数组创建向量\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 向量\n */\n Vector4.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Vector4().setFromArray(array, offset);\n };\n /**\n * 四维向量的常量\n */\n Vector4.ONE = new Vector4(1.0, 1.0, 1.0, 1.0);\n Vector4.ZERO = new Vector4(0.0, 0.0, 0.0, 0.0);\n return Vector4;\n}());\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { isEqual } from './utils';\n/**\n * 三维矩阵(列优先矩阵)\n */\nvar Matrix3 = /** @class */ (function () {\n /**\n * 构造函数,初始值为零矩阵\n * @param [m11=1] - 第 1 行,第 1 列\n * @param [m21=0] - 第 2 行,第 1 列\n * @param [m31=0] - 第 3 行,第 1 列\n * @param [m12=0] - 第 1 行,第 2 列\n * @param [m22=1] - 第 2 行,第 2 列\n * @param [m32=0] - 第 3 行,第 2 列\n * @param [m13=0] - 第 1 行,第 3 列\n * @param [m23=0] - 第 2 行,第 3 列\n * @param [m33=1] - 第 3 行,第 3 列\n */\n function Matrix3(m11, m21, m31, m12, m22, m32, m13, m23, m33) {\n if (m11 === void 0) { m11 = 1; }\n if (m21 === void 0) { m21 = 0; }\n if (m31 === void 0) { m31 = 0; }\n if (m12 === void 0) { m12 = 0; }\n if (m22 === void 0) { m22 = 1; }\n if (m32 === void 0) { m32 = 0; }\n if (m13 === void 0) { m13 = 0; }\n if (m23 === void 0) { m23 = 0; }\n if (m33 === void 0) { m33 = 1; }\n this.elements = [\n m11, m21, m31,\n m12, m22, m32,\n m13, m23, m33,\n ];\n }\n /**\n * 设置矩阵\n * @param m11 - 第 1 行,第 1 列\n * @param m21 - 第 2 行,第 1 列\n * @param m31 - 第 3 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m22 - 第 2 行,第 2 列\n * @param m32 - 第 3 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m23 - 第 2 行,第 3 列\n * @param m33 - 第 3 行,第 3 列\n * @returns\n */\n Matrix3.prototype.set = function (m11, m21, m31, m12, m22, m32, m13, m23, m33) {\n var e = this.elements;\n e[0] = m11;\n e[3] = m12;\n e[6] = m13;\n e[1] = m21;\n e[4] = m22;\n e[7] = m23;\n e[2] = m31;\n e[5] = m32;\n e[8] = m33;\n return this;\n };\n /**\n * 设置矩阵通过行优先数据\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @returns 矩阵\n */\n Matrix3.prototype.setFromRowMajorData = function (m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n var e = this.elements;\n e[0] = m11;\n e[3] = m12;\n e[6] = m13;\n e[1] = m21;\n e[4] = m22;\n e[7] = m23;\n e[2] = m31;\n e[5] = m32;\n e[8] = m33;\n return this;\n };\n /**\n * 通过列向量设置矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @returns 矩阵\n */\n Matrix3.prototype.setFromColumnVectors = function (c1, c2, c3) {\n return this.set(c1.x, c1.y, c1.z, c2.x, c2.y, c2.z, c3.x, c3.y, c3.z);\n };\n /**\n * 通过四阶矩阵设置三阶矩阵\n * @param m - 四阶矩阵\n * @returns 矩阵\n */\n Matrix3.prototype.setFromMatrix4 = function (m) {\n var me = m.elements;\n return this.set(me[0], me[1], me[2], me[4], me[5], me[6], me[8], me[9], me[10]);\n };\n /**\n * 通过数组设置矩阵\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix3.prototype.setFromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n for (var i = 0; i < 9; i++) {\n this.elements[i] = array[offset + i];\n }\n return this;\n };\n /**\n * 通过四元数设置矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix3.prototype.setFromQuaternion = function (quat) {\n var x = quat.x, y = quat.y, z = quat.z, w = quat.w;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var te = this.elements;\n te[0] = 1 - (yy + zz);\n te[1] = xy + wz;\n te[2] = xz - wy;\n te[3] = xy - wz;\n te[4] = 1 - (xx + zz);\n te[5] = yz + wx;\n te[6] = xz + wy;\n te[7] = yz - wx;\n te[8] = 1 - (xx + yy);\n return this;\n };\n /**\n * 矩阵清零\n * @returns 零矩阵\n */\n Matrix3.prototype.setZero = function () {\n for (var i = 0; i < 9; i++) {\n this.elements[i] = 0;\n }\n return this;\n };\n /**\n * 矩阵单位化\n * @returns 单位矩阵\n */\n Matrix3.prototype.identity = function () {\n return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1);\n };\n /**\n * 矩阵克隆\n * @returns 克隆结果\n */\n Matrix3.prototype.clone = function () {\n var e = this.elements;\n return new Matrix3(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8]);\n };\n /**\n * 矩阵复制\n * @param m - 复制对象\n * @returns 复制结果\n */\n Matrix3.prototype.copyFrom = function (m) {\n this.elements = __spreadArray([], __read(m.elements), false);\n return this;\n };\n /**\n * 得到列向量\n * @param i - 列向量索引,从 0 开始\n * @returns 列向量\n */\n Matrix3.prototype.getColumnVector = function (i, v) {\n return v.set(this.elements[i * 3], this.elements[i * 3 + 1], this.elements[i * 3 + 2]);\n };\n /**\n * 矩阵缩放\n * @param sx - x 轴缩放分量\n * @param sy - y 轴缩放分量\n * @returns 缩放结果\n */\n Matrix3.prototype.scale = function (sx, sy) {\n var e = this.elements;\n e[0] *= sx;\n e[3] *= sx;\n e[6] *= sx;\n e[1] *= sy;\n e[4] *= sy;\n e[7] *= sy;\n return this;\n };\n /**\n * 矩阵旋转\n * @param theta - 旋转角度(弧度)\n * @returns 旋转结果\n */\n Matrix3.prototype.rotate = function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var e = this.elements;\n var m11 = e[0], m12 = e[3], m13 = e[6];\n var m21 = e[1], m22 = e[4], m23 = e[7];\n e[0] = c * m11 + s * m21;\n e[3] = c * m12 + s * m22;\n e[6] = c * m13 + s * m23;\n e[1] = -s * m11 + c * m21;\n e[4] = -s * m12 + c * m22;\n e[7] = -s * m13 + c * m23;\n return this;\n };\n /**\n * 矩阵平移\n * @param x - x 轴平移分量\n * @param y - y 轴平移分量\n * @returns 平移结果\n */\n Matrix3.prototype.translate = function (x, y) {\n var e = this.elements;\n e[0] += x * e[2];\n e[3] += x * e[5];\n e[6] += x * e[8];\n e[1] += y * e[2];\n e[4] += y * e[5];\n e[7] += y * e[8];\n return this;\n };\n /**\n * 矩阵右乘\n * @param right - 相乘矩阵\n * @returns 右乘结果\n */\n Matrix3.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n for (var i = 0; i < 9; i++) {\n this.elements[i] *= right;\n }\n return this;\n }\n else {\n return this.multiplyMatrices(this, right);\n }\n };\n /**\n * 矩阵左乘\n * @param left - 相乘矩阵\n * @returns 左乘结果\n */\n Matrix3.prototype.premultiply = function (left) {\n return this.multiplyMatrices(left, this);\n };\n /**\n * 矩阵乘法\n * @param left - 矩阵\n * @param right - 矩阵\n * @returns 相乘结果\n */\n Matrix3.prototype.multiplyMatrices = function (left, right) {\n var ae = left.elements;\n var be = right.elements;\n var te = this.elements;\n var a11 = ae[0], a12 = ae[3], a13 = ae[6];\n var a21 = ae[1], a22 = ae[4], a23 = ae[7];\n var a31 = ae[2], a32 = ae[5], a33 = ae[8];\n var b11 = be[0], b12 = be[3], b13 = be[6];\n var b21 = be[1], b22 = be[4], b23 = be[7];\n var b31 = be[2], b32 = be[5], b33 = be[8];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return this;\n };\n /**\n * 矩阵求行列式值\n * @returns 行列式结果\n */\n Matrix3.prototype.determinant = function () {\n var e = this.elements;\n var m11 = e[0], m21 = e[3], m31 = e[6];\n var m12 = e[1], m22 = e[4], m32 = e[7];\n var m13 = e[2], m23 = e[5], m33 = e[8];\n return (m11 * (m22 * m33 - m23 * m32) +\n m12 * (m23 * m31 - m21 * m33) +\n m13 * (m21 * m32 - m22 * m31));\n };\n /**\n * 矩阵求逆\n * @returns 逆矩阵\n */\n Matrix3.prototype.invert = function () {\n var e = this.elements;\n var m11 = e[0], m12 = e[3], m13 = e[6];\n var m21 = e[1], m22 = e[4], m23 = e[7];\n var m31 = e[2], m32 = e[5], m33 = e[8];\n var t11 = m33 * m22 - m32 * m23;\n var t12 = m32 * m13 - m33 * m12;\n var t13 = m23 * m12 - m22 * m13;\n var det = m11 * t11 + m21 * t12 + m31 * t13;\n if (det === 0) {\n return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n var detInv = 1 / det;\n e[0] = t11 * detInv;\n e[1] = (m31 * m23 - m33 * m21) * detInv;\n e[2] = (m32 * m21 - m31 * m22) * detInv;\n e[3] = t12 * detInv;\n e[4] = (m33 * m11 - m31 * m13) * detInv;\n e[5] = (m31 * m12 - m32 * m11) * detInv;\n e[6] = t13 * detInv;\n e[7] = (m21 * m13 - m23 * m11) * detInv;\n e[8] = (m22 * m11 - m21 * m12) * detInv;\n return this;\n };\n /**\n * 矩阵转置\n * @returns 转置结果\n */\n Matrix3.prototype.transpose = function () {\n var t;\n var m = this.elements;\n t = m[1];\n m[1] = m[3];\n m[3] = t;\n t = m[2];\n m[2] = m[6];\n m[6] = t;\n t = m[5];\n m[5] = m[7];\n m[7] = t;\n return this;\n };\n /**\n * 对点进行矩阵变换\n * @param v - 输入点\n * @param out - 输出点,如果没有会覆盖输入的数据\n * @returns 变换后的结果\n */\n Matrix3.prototype.transformPoint = function (v, out) {\n var x = v.x, y = v.y, z = v.z;\n var e = this.elements;\n var res = out !== null && out !== void 0 ? out : v;\n res.x = e[0] * x + e[3] * y + e[6] * z;\n res.y = e[1] * x + e[4] * y + e[7] * z;\n res.z = e[2] * x + e[5] * y + e[8] * z;\n return res;\n };\n /**\n * 对法向量进行矩阵变换\n * @param v - 输入向量\n * @param out - 输出向量,如果没有会覆盖输入的数据\n * @returns 变换后的结果\n */\n Matrix3.prototype.transformNormal = function (v, out) {\n return this.transformPoint(v, out).normalize();\n };\n /**\n * 矩阵判等\n * @param matrix - 矩阵\n * @returns 判等结果\n */\n Matrix3.prototype.equals = function (matrix) {\n var te = this.elements;\n var me = matrix.elements;\n for (var i = 0; i < 9; i++) {\n if (!isEqual(te[i], me[i])) {\n return false;\n }\n }\n return true;\n };\n /**\n * 矩阵转为数组\n * @returns\n */\n Matrix3.prototype.toArray = function () {\n return __spreadArray([], __read(this.elements), false);\n };\n Matrix3.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n var e = this.elements;\n array[offset] = e[0];\n array[offset + 1] = e[1];\n array[offset + 2] = e[2];\n array[offset + 3] = e[3];\n array[offset + 4] = e[4];\n array[offset + 5] = e[5];\n array[offset + 6] = e[6];\n array[offset + 7] = e[7];\n array[offset + 8] = e[8];\n };\n /**\n * 创建单位阵\n * @returns 单位矩阵\n */\n Matrix3.fromIdentity = function () {\n return new Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1);\n };\n /**\n * 通过列向量创建矩阵\n * @param c1 - 第一列\n * @param c2 - 第二列\n * @param c3 - 第三列\n * @returns 矩阵\n */\n Matrix3.fromColumnVectors = function (c1, c2, c3) {\n return new Matrix3().setFromColumnVectors(c1, c2, c3);\n };\n /**\n * 通过四阶矩阵创建矩阵(获取空间变换矩阵旋转缩放部分)\n * @param m - 四阶矩阵\n * @returns 矩阵\n */\n Matrix3.fromMatrix4 = function (m) {\n return new Matrix3().setFromMatrix4(m);\n };\n /**\n * 通过数组创建矩阵\n * @param array - 数组(列优先)\n * @param [offset=0] - 起始偏移值\n * @returns 矩阵\n */\n Matrix3.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Matrix3().setFromArray(array, offset);\n };\n /**\n * 通过四元数创建矩阵\n * @param quat - 四元数\n * @returns 矩阵\n */\n Matrix3.fromQuaternion = function (quat) {\n return new Matrix3().setFromQuaternion(quat);\n };\n /**\n * 设置矩阵通过行优先数据\n * @param m11 - 第 1 行,第 1 列\n * @param m12 - 第 1 行,第 2 列\n * @param m13 - 第 1 行,第 3 列\n * @param m21 - 第 2 行,第 1 列\n * @param m22 - 第 2 行,第 2 列\n * @param m23 - 第 2 行,第 3 列\n * @param m31 - 第 3 行,第 1 列\n * @param m32 - 第 3 行,第 2 列\n * @param m33 - 第 3 行,第 3 列\n * @returns 矩阵\n */\n Matrix3.fromRowMajorData = function (m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n return new Matrix3(m11, m21, m31, m12, m22, m32, m13, m23, m33);\n };\n return Matrix3;\n}());\nexport { Matrix3 };\n","import { Vector3 } from './vector3';\n/**\n * 光线类\n */\nexport var Ray = /** @class */ (function () {\n /**\n * 构造函数\n * @param [origin] - 原点,默认是 (0, 0, 0)\n * @param [direction] - 方向,默认是 (1, 0, 0)\n */\n function Ray(origin, direction) {\n if (origin === void 0) { origin = Vector3.ZERO; }\n if (direction === void 0) { direction = Vector3.X; }\n /**\n * 光线的原点\n */\n this.origin = new Vector3();\n /**\n * 光线的方向\n */\n this.direction = new Vector3();\n // 注意这里必须拷贝\n this.origin.copyFrom(origin);\n this.direction.copyFrom(direction).normalize();\n }\n /**\n * 光线设置\n * @param origin - 原点\n * @param direction - 方向\n * @returns\n */\n Ray.prototype.set = function (origin, direction) {\n this.origin.copyFrom(origin);\n this.direction.copyFrom(direction).normalize();\n return this;\n };\n /**\n * 光线克隆\n * @returns 克隆结果\n */\n Ray.prototype.clone = function () {\n return new Ray(this.origin, this.direction);\n };\n /**\n * 光线拷贝\n * @param ray - 要拷贝对象\n * @returns 拷贝结果\n */\n Ray.prototype.copyFrom = function (ray) {\n return this.set(ray.origin, ray.direction);\n };\n /**\n * 根据t计算新的光线原点\n * @param t - 光线的系数 t\n * @returns\n */\n Ray.prototype.recast = function (t) {\n this.origin.copyFrom(this.at(t, Ray.tempVec0));\n return this;\n };\n /**\n * 根据t值计算光线上的点\n * @param t - 光线的系数 t\n * @param [out] - 计算的点\n * @returns\n */\n Ray.prototype.at = function (t, out) {\n var ret = out ? out : new Vector3();\n ret.copyFrom(this.origin);\n return ret.addScaledVector(this.direction, t);\n };\n /**\n * 光线相等判断\n * @param other - 其他对象\n * @returns\n */\n Ray.prototype.equals = function (other) {\n return this.origin.equals(other.origin) && this.direction.equals(other.direction);\n };\n /**\n * 根据矩阵对光线进行变换\n * @param m - 变换矩阵\n * @returns\n */\n Ray.prototype.applyMatrix = function (m) {\n this.origin.applyProjectionMatrix(m);\n this.direction.applyNormalMatrix(m);\n return this;\n };\n /**\n * 光线和包围盒求交\n * @param box - 类包围盒对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectBox = function (box, out) {\n var _a, _b, _c, _d;\n var ox = (_a = this.origin, _a.x), oy = _a.y, oz = _a.z;\n var dx = (_b = this.direction, _b.x), dy = _b.y, dz = _b.z;\n var bxmin = (_c = box.min, _c.x), bymin = _c.y, bzmin = _c.z;\n var bxmax = (_d = box.max, _d.x), bymax = _d.y, bzmax = _d.z;\n var tmin, tmax, tymin, tymax, tzmin, tzmax;\n var invdirx = 1 / dx;\n var invdiry = 1 / dy;\n var invdirz = 1 / dz;\n if (invdirx >= 0) {\n tmin = (bxmin - ox) * invdirx;\n tmax = (bxmax - ox) * invdirx;\n }\n else {\n tmin = (bxmax - ox) * invdirx;\n tmax = (bxmin - ox) * invdirx;\n }\n if (invdiry >= 0) {\n tymin = (bymin - oy) * invdiry;\n tymax = (bymax - oy) * invdiry;\n }\n else {\n tymin = (bymax - oy) * invdiry;\n tymax = (bymin - oy) * invdiry;\n }\n if ((tmin > tymax) || (tymin > tmax)) {\n return;\n }\n if (tymin > tmin || tmin !== tmin) {\n tmin = tymin;\n }\n if (tymax < tmax || tmax !== tmax) {\n tmax = tymax;\n }\n if (tymin > tmin || tmin !== tmin) {\n tmin = tymin;\n }\n if (tymax < tmax || tmax !== tmax) {\n tmax = tymax;\n }\n if (invdirz >= 0) {\n tzmin = (bzmin - oz) * invdirz;\n tzmax = (bzmax - oz) * invdirz;\n }\n else {\n tzmin = (bzmax - oz) * invdirz;\n tzmax = (bzmin - oz) * invdirz;\n }\n if ((tmin > tzmax) || (tzmin > tmax)) {\n return;\n }\n if (tzmin > tmin || tmin !== tmin) {\n tmin = tzmin;\n }\n if (tzmax < tmax || tmax !== tmax) {\n tmax = tzmax;\n }\n if (tmax < 0) {\n return;\n }\n return tmin >= 0 ? this.at(tmin, out) : this.at(tmax, out);\n };\n /**\n * 光线和平面求交\n * @param plane - 类平面对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectPlane = function (plane, out) {\n var normal = plane.normal;\n var distance = plane.distance;\n var denominator = normal.dot(this.direction);\n if (denominator === 0) {\n // line is coplanar, return origin\n var t_1 = normal.dot(this.origin) + distance;\n if (t_1 === 0) {\n var ret = out ? out : new Vector3();\n return ret.copyFrom(this.origin);\n }\n // Null is preferable to undefined since undefined means.... it is undefined\n return;\n }\n var t = -(this.origin.dot(normal) + distance) / denominator;\n // Return if the ray never intersects the plane\n return t >= 0 ? this.at(t, out) : undefined;\n };\n /**\n * 光线和圆求交\n * @param sphere - 类球对象\n * @param [out] - 交点\n * @returns\n */\n Ray.prototype.intersectSphere = function (sphere, out) {\n var center = sphere.center;\n var vector = Ray.tempVec0.subtractVectors(center, this.origin);\n var tca = vector.dot(this.direction);\n var d2 = vector.dot(vector) - tca * tca;\n var radius2 = sphere.radius * sphere.radius;\n if (d2 > radius2) {\n return;\n }\n var thc = Math.sqrt(radius2 - d2);\n // t0 = first intersect point - entrance on front of sphere\n var t0 = tca - thc;\n // t1 = second intersect point - exit point on back of sphere\n var t1 = tca + thc;\n // test to see if t1 is behind the ray - if so, return null\n if (t1 < 0) {\n return;\n }\n // test to see if t0 is behind the ray:\n // if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n // in order to always return an intersect point that is in front of the ray.\n // else t0 is in front of the ray, so return the first collision point scaled by t0\n return t0 >= 0 ? this.at(t0, out) : this.at(t1, out);\n };\n /**\n * 光线和三角形求交\n * @param triangle - 类三角形对象\n * @param [out] - 交点\n * @param [backfaceCulling] - 是否背面剔除\n * @returns\n */\n Ray.prototype.intersectTriangle = function (triangle, out, backfaceCulling) {\n // FIXME: 交换out和backfaceCulling\n // Compute the offset origin, edges, and normal.\n // from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n var a = triangle.p0;\n var b = triangle.p1;\n var c = triangle.p2;\n var edge1 = Ray.tempVec0.subtractVectors(b, a);\n var edge2 = Ray.tempVec1.subtractVectors(c, a);\n var diff = Ray.tempVec2.subtractVectors(this.origin, a);\n var normal = Ray.tempVec3.crossVectors(edge1, edge2);\n // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n var DdN = this.direction.dot(normal);\n var sign;\n if (DdN > 0) {\n if (backfaceCulling) {\n return;\n }\n sign = 1;\n }\n else if (DdN < 0) {\n sign = -1;\n DdN = -DdN;\n }\n else {\n return;\n }\n edge2.crossVectors(diff, edge2);\n var DdQxE2 = sign * this.direction.dot(edge2);\n // b1 < 0, no intersection\n if (DdQxE2 < 0) {\n return;\n }\n edge1.cross(diff);\n var DdE1xQ = sign * this.direction.dot(edge1);\n // b2 < 0, no intersection\n if (DdE1xQ < 0) {\n return;\n }\n // b1+b2 > 1, no intersection\n if (DdQxE2 + DdE1xQ > DdN) {\n return;\n }\n // Line intersects triangle, check if ray does.\n var QdN = -sign * diff.dot(normal);\n // t < 0, no intersection\n if (QdN < 0) {\n return;\n }\n // Ray intersects triangle.\n return this.at(QdN / DdN, out);\n };\n Ray.tempVec0 = new Vector3();\n Ray.tempVec1 = new Vector3();\n Ray.tempVec2 = new Vector3();\n Ray.tempVec3 = new Vector3();\n return Ray;\n}());\n","import { Vector4 } from './vector4';\nexport var Color = /** @class */ (function () {\n /**\n * 构造函数,默认值为黑色\n * @param [r=0]\n * @param [g=0]\n * @param [b=0]\n * @param [a=0]\n */\n function Color(r, g, b, a) {\n if (r === void 0) { r = 0; }\n if (g === void 0) { g = 0; }\n if (b === void 0) { b = 0; }\n if (a === void 0) { a = 0; }\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n /**\n * 设置颜色\n * @param r - r 分量\n * @param g - g 分量\n * @param b - b 分量\n * @param a - a 分量\n * @returns\n */\n Color.prototype.set = function (r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n return this;\n };\n /**\n * 设置零颜色\n * @returns\n */\n Color.prototype.setZero = function () {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n return this;\n };\n /**\n * 通过标量数值设置颜色\n * @param num - 数值\n * @returns\n */\n Color.prototype.setFromNumber = function (num) {\n this.r = num;\n this.g = num;\n this.b = num;\n this.a = num;\n return this;\n };\n /**\n * 通过Vector4创建颜色\n * @param v - Vector4\n * @returns\n */\n Color.prototype.setFromVector4 = function (v) {\n this.r = v.x;\n this.g = v.y;\n this.b = v.z;\n this.a = v.w;\n return this;\n };\n /**\n * 通过数组创建颜色\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Color.prototype.setFromArray = function (array, offset) {\n var _a, _b, _c, _d;\n if (offset === void 0) { offset = 0; }\n this.r = (_a = array[offset]) !== null && _a !== void 0 ? _a : 0;\n this.g = (_b = array[offset + 1]) !== null && _b !== void 0 ? _b : 0;\n this.b = (_c = array[offset + 2]) !== null && _c !== void 0 ? _c : 0;\n this.a = (_d = array[offset + 3]) !== null && _d !== void 0 ? _d : 0;\n return this;\n };\n Color.prototype.setFromHSV = function (hue, saturation, value, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var chroma = value * saturation;\n var h = hue / 60;\n var x = chroma * (1 - Math.abs((h % 2) - 1));\n var r = 0;\n var g = 0;\n var b = 0;\n if (h >= 0 && h <= 1) {\n r = chroma;\n g = x;\n }\n else if (h >= 1 && h <= 2) {\n r = x;\n g = chroma;\n }\n else if (h >= 2 && h <= 3) {\n g = chroma;\n b = x;\n }\n else if (h >= 3 && h <= 4) {\n g = x;\n b = chroma;\n }\n else if (h >= 4 && h <= 5) {\n r = x;\n b = chroma;\n }\n else if (h >= 5 && h <= 6) {\n r = chroma;\n b = x;\n }\n var m = value - chroma;\n return this.set(r + m, g + m, b + m, alpha);\n };\n Color.prototype.setFromHexString = function (hex) {\n if (hex.substring(0, 1) !== '#' || (hex.length !== 9 && hex.length !== 7)) {\n return this;\n }\n var r = parseInt(hex.substring(1, 3), 16) / 255.0;\n var g = parseInt(hex.substring(3, 5), 16) / 255.0;\n var b = parseInt(hex.substring(5, 7), 16) / 255.0;\n var a = hex.length === 9 ? parseInt(hex.substring(7, 9), 16) / 255.0 : 1.0;\n return this.set(r, g, b, a);\n };\n /**\n * 拷贝颜色\n * @param v - 复制对象\n * @returns 拷贝结果\n */\n Color.prototype.copyFrom = function (v) {\n this.r = v.r;\n this.g = v.g;\n this.b = v.b;\n this.a = v.a;\n return this;\n };\n /**\n * 克隆颜色\n * @returns 克隆结果\n */\n Color.prototype.clone = function () {\n return new Color(this.r, this.g, this.b, this.a);\n };\n /**\n * 根据下标设置颜色分量\n * @param index - 下标值\n * @param value - 分量值\n * @returns\n */\n Color.prototype.setElement = function (index, value) {\n switch (index) {\n case 0:\n this.r = value;\n break;\n case 1:\n this.g = value;\n break;\n case 2:\n this.b = value;\n break;\n case 3:\n this.a = value;\n break;\n default: console.error('index is out of range: ' + index);\n }\n return this;\n };\n /**\n * 根据下标获取颜色分量\n * @param index - 下标\n * @returns 分量值\n */\n Color.prototype.getElement = function (index) {\n switch (index) {\n case 0: return this.r;\n case 1: return this.g;\n case 2: return this.b;\n case 3: return this.a;\n default: console.error('index is out of range: ' + index);\n }\n return 0;\n };\n /**\n * 颜色相加\n * @param right - 相加对象,颜色 | 数字\n * @returns 相加结果\n */\n Color.prototype.add = function (right) {\n if (typeof right === 'number') {\n this.r += right;\n this.g += right;\n this.b += right;\n this.a += right;\n }\n else if (right instanceof Array) {\n this.r += right[0];\n this.g += right[1];\n this.b += right[2];\n this.a += right[3];\n }\n else {\n this.r += right.r;\n this.g += right.g;\n this.b += right.b;\n this.a += right.a;\n }\n return this;\n };\n /**\n * 颜色相减\n * @param right - 相减对象,颜色 | 数字\n * @returns 相减结果\n */\n Color.prototype.subtract = function (right) {\n if (typeof right === 'number') {\n this.r -= right;\n this.g -= right;\n this.b -= right;\n this.a -= right;\n }\n else if (right instanceof Array) {\n this.r -= right[0];\n this.g -= right[1];\n this.b -= right[2];\n this.a -= right[3];\n }\n else {\n this.r -= right.r;\n this.g -= right.g;\n this.b -= right.b;\n this.a -= right.a;\n }\n return this;\n };\n /**\n * 颜色相乘\n * @param right - 相乘对象,对象 | 数字\n * @returns 颜色\n */\n Color.prototype.multiply = function (right) {\n if (typeof right === 'number') {\n this.r *= right;\n this.g *= right;\n this.b *= right;\n this.a *= right;\n }\n else if (right instanceof Array) {\n this.r *= right[0];\n this.g *= right[1];\n this.b *= right[2];\n this.a *= right[3];\n }\n else {\n this.r *= right.r;\n this.g *= right.g;\n this.b *= right.b;\n this.a *= right.a;\n }\n return this;\n };\n /**\n * 颜色相除\n * @param right - 相除对象,对象 | 数字\n * @returns 颜色\n */\n Color.prototype.divide = function (right) {\n if (typeof right === 'number') {\n this.r /= right;\n this.g /= right;\n this.b /= right;\n this.a /= right;\n }\n else if (right instanceof Array) {\n this.r /= right[0];\n this.g /= right[1];\n this.b /= right[2];\n this.a /= right[3];\n }\n else {\n this.r /= right.r;\n this.g /= right.g;\n this.b /= right.b;\n this.a /= right.a;\n }\n return this;\n };\n /**\n * 颜色缩放\n * @param v - 数字\n * @returns 缩放结果\n */\n Color.prototype.scale = function (v) {\n this.r *= v;\n this.g *= v;\n this.b *= v;\n this.a *= v;\n return this;\n };\n /**\n * 颜色求最小值\n * @param v - 颜色或数值\n * @returns 最小值\n */\n Color.prototype.min = function (v) {\n if (typeof v === 'number') {\n this.r = Math.min(this.r, v);\n this.g = Math.min(this.g, v);\n this.b = Math.min(this.b, v);\n this.a = Math.min(this.a, v);\n }\n else {\n this.r = Math.min(this.r, v.r);\n this.g = Math.min(this.g, v.g);\n this.b = Math.min(this.b, v.b);\n this.a = Math.min(this.a, v.a);\n }\n return this;\n };\n /**\n * 颜色求最大值\n * @param v - 颜色或数值\n * @returns 最大值\n */\n Color.prototype.max = function (v) {\n if (typeof v === 'number') {\n this.r = Math.max(this.r, v);\n this.g = Math.max(this.g, v);\n this.b = Math.max(this.b, v);\n this.a = Math.max(this.a, v);\n }\n else {\n this.r = Math.max(this.r, v.r);\n this.g = Math.max(this.g, v.g);\n this.b = Math.max(this.b, v.b);\n this.a = Math.max(this.a, v.a);\n }\n return this;\n };\n /**\n * 颜色阈值约束\n * @param min - 最小值\n * @param max - 最大值\n * @returns 颜色\n */\n Color.prototype.clamp = function (min, max) {\n return this.max(min).min(max);\n };\n /**\n * 颜色求线性插值\n * @param v - 颜色\n * @param alpha - 插值比例\n * @returns 插值结果\n */\n Color.prototype.lerp = function (v, alpha) {\n this.r += (v.r - this.r) * alpha;\n this.g += (v.g - this.g) * alpha;\n this.b += (v.b - this.b) * alpha;\n this.a += (v.a - this.a) * alpha;\n return this;\n };\n /**\n * 计算颜色亮度值\n * @returns 亮度值\n */\n Color.prototype.luminance = function () {\n return this.r * 0.3 + this.g * 0.59 + this.b * 0.11;\n };\n /**\n * 颜色判等\n * @param v - 颜色\n * @returns 判等结果\n */\n Color.prototype.equals = function (v) {\n return v.r === this.r && v.g === this.g && v.b === this.b && v.a === this.a;\n };\n Color.prototype.toLinear = function () {\n this.r = Color.gammaToLinear(this.r);\n this.g = Color.gammaToLinear(this.g);\n this.b = Color.gammaToLinear(this.b);\n return this;\n };\n Color.prototype.toGamma = function () {\n this.r = Color.linearToGamma(this.r);\n this.g = Color.linearToGamma(this.g);\n this.b = Color.linearToGamma(this.b);\n return this;\n };\n /**\n * 颜色转数组\n * @returns 数组\n */\n Color.prototype.toArray = function () {\n return [this.r, this.g, this.b, this.a];\n };\n Color.prototype.toVector4 = function () {\n return new Vector4(this.r, this.g, this.b, this.a);\n };\n /**\n * RGB 颜色空间转 HSV\n * @param result HSV 值\n */\n Color.prototype.toHSV = function () {\n var _a;\n var r = (_a = this, _a.r), g = _a.g, b = _a.b, a = _a.a;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var v = max;\n var dm = max - min;\n var h = 0;\n var s = 0;\n if (max !== 0) {\n s = dm / max;\n }\n if (max != min) {\n if (max == r) {\n h = (g - b) / dm;\n if (g < b) {\n h += 6;\n }\n }\n else if (max == g) {\n h = (b - r) / dm + 2;\n }\n else if (max == b) {\n h = (r - g) / dm + 4;\n }\n h *= 60;\n }\n return new Color(h, s, v, a);\n };\n Color.prototype.toHexString = function (includeAlpha) {\n if (includeAlpha === void 0) { includeAlpha = true; }\n var R = Color.ToHex(Math.round(this.r * 255));\n var G = Color.ToHex(Math.round(this.g * 255));\n var B = Color.ToHex(Math.round(this.b * 255));\n var A = Color.ToHex(Math.round(this.a * 255));\n if (includeAlpha) {\n return '#' + R + G + B + A;\n }\n else {\n return '#' + R + G + B;\n }\n };\n Color.prototype.fill = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n array[offset] = this.r;\n array[offset + 1] = this.g;\n array[offset + 2] = this.b;\n array[offset + 3] = this.a;\n };\n /**\n * 通过标量数值创建颜色\n * @param num - 数值\n * @returns\n */\n Color.fromNumber = function (num) {\n return new Color().setFromNumber(num);\n };\n /**\n * 通过数组创建颜色\n * @param array - 数组\n * @param [offset=0] - 起始偏移值\n * @returns\n */\n Color.fromArray = function (array, offset) {\n if (offset === void 0) { offset = 0; }\n return new Color().setFromArray(array, offset);\n };\n /**\n * 通过 hex 字符串创建颜色\n * @param hex - hex 字符串\n * @returns\n */\n Color.fromHexString = function (hex) {\n return new Color().setFromHexString(hex);\n };\n Color.fromHSV = function (hue, saturation, value, alpha) {\n if (alpha === void 0) { alpha = 1; }\n return new Color().setFromHSV(hue, saturation, value, alpha);\n };\n /**\n * 颜色值从 Gamma 空间转到线性空间\n * @param v - Gamma 空间颜色值\n * @returns 线性空间颜色值\n */\n Color.gammaToLinear = function (v) {\n if (v <= 0.0) {\n return 0.0;\n }\n else if (v <= 0.04045) {\n return v / 12.92;\n }\n else if (v < 1.0) {\n return Math.pow((v + 0.055) / 1.055, 2.4);\n }\n else {\n return Math.pow(v, 2.4);\n }\n };\n /**\n * 颜色值从线性空间转到 Gamma 空间\n * @param value - 线性空间颜色值\n * @returns Gamma 空间颜色值\n */\n Color.linearToGamma = function (value) {\n if (value <= 0.0) {\n return 0.0;\n }\n else if (value < 0.0031308) {\n return 12.92 * value;\n }\n else if (value < 1.0) {\n return 1.055 * Math.pow(value, 0.41666) - 0.055;\n }\n else {\n return Math.pow(value, 0.41666);\n }\n };\n Color.ToHex = function (i) {\n var str = i.toString(16);\n if (i <= 15) {\n return ('0' + str).toUpperCase();\n }\n return str.toUpperCase();\n };\n /**\n * 颜色的常量\n */\n Color.BLACK = new Color(0, 0, 0, 1); // 纯黑色\n Color.BLUE = new Color(0, 0, 1, 1); // 纯蓝色\n Color.CLEAR = new Color(0, 0, 0, 0); // 完全透明\n Color.CYAN = new Color(0, 1, 1, 1); // 青色\n Color.GRAY = new Color(0.5, 0.5, 0.5, 1); // 灰色\n Color.GREEN = new Color(0, 1, 0, 1); // 纯绿色\n Color.MAGENTA = new Color(1, 0, 1, 1); // 洋红色\n Color.RED = new Color(1, 0, 0, 1); // 纯红色\n Color.WHITE = new Color(1, 1, 1, 1); // 纯白色\n Color.YELLOW = new Color(1, 0.92, 0.016, 1); // 黄色\n return Color;\n}());\n","import { Vector3 } from './vector3';\n/**\n * 三维包围盒\n */\nvar Box3 = /** @class */ (function () {\n /**\n * 构造函数,传入值为空时表示空包围盒\n * @param [min=new Vector3(Infinity)] - 最小角点\n * @param [max=new Vector3(-Infinity)] - 最大角点\n */\n function Box3(min, max) {\n if (min === void 0) { min = new Vector3(Infinity, Infinity, Infinity); }\n if (max === void 0) { max = new Vector3(-Infinity, -Infinity, -Infinity); }\n this.min = min.clone();\n this.max = max.clone();\n }\n /**\n * 设置三维包围盒的值\n * @param min - 三维包围盒最小点\n * @param max - 三维包围盒最大点\n * @returns\n */\n Box3.prototype.set = function (min, max) {\n this.min.copyFrom(min);\n this.max.copyFrom(max);\n return this;\n };\n /**\n * 通过数组构建三维包围盒\n * @param array - 数组集合(每三个数视为一个三维空间点)\n * @returns 三维包围盒\n */\n Box3.prototype.setFromArray = function (array) {\n var minX = Number(Infinity);\n var minY = Number(Infinity);\n var minZ = Number(Infinity);\n var maxX = -Infinity;\n var maxY = -Infinity;\n var maxZ = -Infinity;\n for (var i = 0, l = array.length; i < l; i += 3) {\n var x = array[i];\n var y = array[i + 1];\n var z = array[i + 2];\n if (x < minX) {\n minX = x;\n }\n if (y < minY) {\n minY = y;\n }\n if (z < minZ) {\n minZ = z;\n }\n if (x > maxX) {\n maxX = x;\n }\n if (y > maxY) {\n maxY = y;\n }\n if (z > maxZ) {\n maxZ = z;\n }\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n };\n /**\n * 通过三维空间点构建三维包围盒\n * @param points - 三维空间点集合\n * @returns 三维包围盒\n */\n Box3.prototype.setFromPoints = function (points) {\n this.makeEmpty();\n for (var i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n };\n /**\n * 通过三维空间点(包围盒中心)和大小确定包围盒\n * @param center - 三维包围盒中心点\n * @param size - 三维包围盒大小值\n * @returns 三维包围盒\n */\n Box3.prototype.setFromCenterAndSize = function (center, size) {\n var halfSize = size.clone().multiply(0.5);\n this.min.copyFrom(center).subtract(halfSize);\n this.max.copyFrom(center).add(halfSize);\n return this;\n };\n // TODO\n /**\n * 通过实体构建包围盒\n * @param object - 构件实体\n * @returns 三维包围盒\n */\n Box3.prototype.setFromObject = function (object) {\n this.makeEmpty();\n return this.expandByObject(object);\n };\n /**\n * 克隆三维包围盒\n * @returns 克隆结果\n */\n Box3.prototype.clone = function () {\n return new Box3().copyFrom(this);\n };\n /**\n * 复制三维包围盒\n * @param box - 复制对象\n * @returns 复制结果\n */\n Box3.prototype.copyFrom = function (box) {\n this.min.copyFrom(box.min);\n this.max.copyFrom(box.max);\n return this;\n };\n /**\n * 三维包围盒置空\n * @returns 置空结果\n */\n Box3.prototype.makeEmpty = function () {\n this.min.x = this.min.y = this.min.z = Number(Infinity);\n this.max.x = this.max.y = this.max.z = -Infinity;\n return this;\n };\n /**\n * 三维包围盒判空\n * @returns 判空结果\n */\n Box3.prototype.isEmpty = function () {\n // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n return this.max.x < this.min.x\n || this.max.y < this.min.y\n || this.max.z < this.min.z;\n };\n /**\n * 获取三维包围盒中心\n * @param [target=new Vector3()]\n * @returns\n */\n Box3.prototype.getCenter = function (target) {\n if (target === void 0) { target = new Vector3(); }\n return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiply(0.5);\n };\n /**\n * 获取三维包围盒大小\n * @param [target=new Vector3()] - 结果保存对象\n * @returns 三维包围盒大小\n */\n Box3.prototype.getSize = function (target) {\n if (target === void 0) { target = new Vector3(); }\n return this.isEmpty() ? target.set(0, 0, 0) : target.subtractVectors(this.max, this.min);\n };\n /**\n * 通过三维空间点扩展三维包围盒\n * @param point - 三维空间点\n * @returns 扩展结果\n */\n Box3.prototype.expandByPoint = function (point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n };\n /**\n * 通过三维向量扩展三维包围盒\n * @param vector - 三维向量\n * @returns 扩展结果\n */\n Box3.prototype.expandByVector = function (vector) {\n this.min.subtract(vector);\n this.max.add(vector);\n return this;\n };\n /**\n * 通过实数扩展三维包围盒\n * @param scalar - 扩展大小\n * @returns 扩展结果\n */\n Box3.prototype.expandByScalar = function (scalar) {\n this.min.add(-scalar);\n this.max.add(scalar);\n return this;\n };\n /**\n * 通过包围盒扩展三维包围盒\n * @param box\n * @returns\n */\n Box3.prototype.expandByBox = function (box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n };\n // TODO\n /**\n * 通过实体扩展三维包围盒\n * @param object - 构件实体\n * @returns 扩展结果\n */\n Box3.prototype.expandByObject = function (object) {\n // Computes the world-axis-aligned bounding box of an object (including its children),\n // accounting for both the object's, and children's, world transforms\n object.updateWorldMatrix(false, false);\n var geometry = object.geometry;\n if (geometry !== undefined) {\n if (geometry.boundingBox === null) {\n geometry.computeBoundingBox();\n }\n var box3 = new Box3();\n box3.copyFrom(geometry.boundingBox);\n box3.applyMatrix4(object.matrixWorld);\n this.union(box3);\n }\n var children = object.children;\n for (var i = 0, l = children.length; i < l; i++) {\n this.expandByObject(children[i]);\n }\n return this;\n };\n /**\n * 判断三维包围盒相交关系(if this intersect other)\n * @param point - 三维空间点\n * @returns 点包含判断结果\n */\n Box3.prototype.containsPoint = function (point) {\n return !(point.x < this.min.x\n || point.x > this.max.x\n || point.y < this.min.y\n || point.y > this.max.y\n || point.z < this.min.z\n || point.z > this.max.z);\n };\n /**\n * 判断三维包围盒与三维包围盒的包含关系\n * @param other - 三维包围盒\n * @returns 包围盒包含结果(true 表示包含 other, false 表示不包含 other)\n */\n Box3.prototype.containsBox = function (other) {\n return this.min.x <= other.min.x\n && this.max.x >= other.max.x\n && this.min.y <= other.min.y\n && this.max.y >= other.max.y\n && this.min.z <= other.min.z\n && this.max.z >= other.max.z;\n };\n // TODO\n /**\n * 获取点在三维包围盒的比例位置\n * @param point - 三维空间点\n * @param [target=new Vector3()] - 结果保存对象\n * @returns 点在包围盒比例位置\n */\n Box3.prototype.getParameter = function (point, target) {\n if (target === void 0) { target = new Vector3(); }\n // This can potentially have a divide by zero if the box\n // has a size dimension of 0.\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n };\n /**\n * 判断三维包围盒相交关系(if this intersect other)\n * @param other - 三维包围盒\n * @returns 相交判断结果\n */\n Box3.prototype.intersectsBox = function (other) {\n // using 6 splitting planes to rule out intersections.\n return !(other.max.x < this.min.x || other.min.x > this.max.x\n || other.max.y < this.min.y || other.min.y > this.max.y\n || other.max.z < this.min.z || other.min.z > this.max.z);\n };\n /**\n * 判断三维包围盒和球是否相交\n * @param sphere\n * @returns\n */\n Box3.prototype.intersectsSphere = function (sphere) {\n // Find the point on the AABB closest to the sphere center.\n var vector = new Vector3();\n this.clampPoint(sphere.center, vector);\n // If that point is inside the sphere, the AABB and sphere intersect.\n return vector.distanceSquared(sphere.center) <= (sphere.radius * sphere.radius);\n };\n /**\n * 求点与三维包围盒的最近点\n * @param point - 三维空间点\n * @param [target=new Vector3()] - 结果存放对象\n * @returns 计算结果\n */\n Box3.prototype.clampPoint = function (point, target) {\n if (target === void 0) { target = new Vector3(); }\n return target.copyFrom(point).clamp(this.min, this.max);\n };\n /**\n * 三维空间点到三维包围盒的距离\n * @param point - 三维包围盒\n * @returns 距离结果\n */\n Box3.prototype.distanceToPoint = function (point) {\n var clampedPoint = point.clone().clamp(this.min, this.max);\n return clampedPoint.subtract(point).length();\n };\n /**\n * 三维包围盒求交集\n * @param box - 三维包围盒\n * @returns 求交结果\n */\n Box3.prototype.intersect = function (box) {\n this.min.max(box.min);\n this.max.min(box.max);\n // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n if (this.isEmpty()) {\n this.makeEmpty();\n }\n return this;\n };\n /**\n * 三维包围盒求并集\n * @param box - 三维包围盒\n * @returns 求并结果\n */\n Box3.prototype.union = function (box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n };\n /**\n * 通过三维变换矩阵变化三维包围盒\n * @param matrix - 三维变换矩阵\n * @returns 变换结果\n */\n Box3.prototype.applyMatrix4 = function (matrix, center) {\n if (center === void 0) { center = new Vector3(); }\n // transform of empty box is an empty box.\n if (this.isEmpty()) {\n return this;\n }\n var points = this.getOBBPoints(matrix, center);\n this.setFromPoints(points);\n return this;\n };\n Box3.prototype.getOBBPoints = function (matrix, center) {\n if (center === void 0) { center = new Vector3(); }\n // transform of empty box is an empty box.\n if (this.isEmpty()) {\n return [];\n }\n var points = [];\n // NOTE: I am using a binary pattern to specify all 2^3 combinations below\n points[0] = new Vector3(this.min.x, this.min.y, this.min.z); // 000\n points[1] = new Vector3(this.min.x, this.min.y, this.max.z); // 001\n points[2] = new Vector3(this.min.x, this.max.y, this.min.z); // 010\n points[3] = new Vector3(this.min.x, this.max.y, this.max.z); // 011\n points[4] = new Vector3(this.max.x, this.min.y, this.min.z); // 100\n points[5] = new Vector3(this.max.x, this.min.y, this.max.z); // 101\n points[6] = new Vector3(this.max.x, this.max.y, this.min.z); // 110\n points[7] = new Vector3(this.max.x, this.max.y, this.max.z); // 111\n points.forEach(function (p) {\n p.subtract(center);\n p.applyMatrix(matrix);\n p.add(center);\n });\n return points;\n };\n /**\n * 通过包围盒获取包围球\n * @param target\n * @returns\n */\n Box3.prototype.getBoundingSphere = function (target) {\n this.getCenter(target.center);\n var vector = new Vector3();\n target.radius = this.getSize(vector).length() * 0.5;\n return target;\n };\n /**\n * 三维包围盒位移\n * @param offset - 三维位移向量\n * @returns 位移结果\n */\n Box3.prototype.translate = function (offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n };\n /**\n * 三维包围盒判等\n * @param other - 三维包围盒\n * @returns 判等结果\n */\n Box3.prototype.equals = function (other) {\n return other.min.equals(this.min) && other.max.equals(this.max);\n };\n return Box3;\n}());\nexport { Box3 };\n","import { Box3 } from './box3';\nimport { Vector3 } from './vector3';\n/**\n * 球\n */\nvar Sphere = /** @class */ (function () {\n /**\n * 构造函数\n * @param [center=Vector3.ZERO] - 球心,默认值为(0, 0, 0)\n * @param [radius=-1] - 半径\n */\n function Sphere(center, radius) {\n if (center === void 0) { center = Vector3.ZERO; }\n if (radius === void 0) { radius = -1; }\n this.center = center.clone();\n this.radius = radius;\n }\n /**\n * 通过参数设置球\n * @param center - 球心\n * @param radius - 半径\n * @returns\n */\n Sphere.prototype.set = function (center, radius) {\n this.center.copyFrom(center);\n this.radius = radius;\n return this;\n };\n /**\n * 通过空间点与球心设置球\n * @param points - 三维空间点\n * @param [optionalCenter] - 指定球心\n * @returns\n */\n Sphere.prototype.setFromPoints = function (points, optionalCenter) {\n var center = this.center;\n if (optionalCenter !== undefined) {\n center.copyFrom(optionalCenter);\n var maxRadiusSq = 0;\n for (var i = 0; i < points.length; i++) {\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceSquared(points[i]));\n }\n this.radius = Math.sqrt(maxRadiusSq);\n }\n else {\n var box = new Box3().setFromPoints(points);\n box.getCenter(center);\n this.radius = box.getSize().length() / 2;\n }\n return this;\n };\n /**\n * 复制球\n * @param sphere - 球信息\n * @returns 复制结果\n */\n Sphere.prototype.copyFrom = function (sphere) {\n this.center.copyFrom(sphere.center);\n this.radius = sphere.radius;\n return this;\n };\n /**\n * 球判空\n * @returns 判空结果\n */\n Sphere.prototype.isEmpty = function () {\n return this.radius < 0;\n };\n /**\n * 球置空\n * @returns 置空结果\n */\n Sphere.prototype.makeEmpty = function () {\n this.center.set(0, 0, 0);\n this.radius = -1;\n return this;\n };\n /**\n * 三维空间点包围判断\n * @param point - 三维空间点\n * @returns 空间点包含判断\n */\n Sphere.prototype.containsPoint = function (point) {\n return point.distanceSquared(this.center) <= (this.radius * this.radius);\n };\n /**\n * 空间点与球表面的最短距离\n * @param point - 三维空间点\n * @returns 距离结果\n */\n Sphere.prototype.distanceToPoint = function (point) {\n return (point.distance(this.center) - this.radius);\n };\n /**\n * 与球相交判断\n * @param sphere - 球\n * @returns 相交判断结果\n */\n Sphere.prototype.intersectsSphere = function (sphere) {\n var radiusSum = this.radius + sphere.radius;\n return sphere.center.distanceSquared(this.center) <= (radiusSum * radiusSum);\n };\n /**\n * 与包围盒相交判断\n * @param box - 三维包围盒\n * @returns 相交判断结果\n */\n Sphere.prototype.intersectsBox = function (box) {\n return box.intersectsSphere(this);\n };\n /**\n * 收敛空间点在球范围内\n * 注:乘法的效率要比开方高很多\n * @param point - 三维空间点\n * @param [target] - 结果保存对象\n * @returns 收敛结果\n */\n Sphere.prototype.clampPoint = function (point, target) {\n var deltaLengthSq = this.center.distanceSquared(point);\n if (target === undefined) {\n target = new Vector3();\n }\n target.copyFrom(point);\n if (deltaLengthSq > (this.radius * this.radius)) {\n target.subtract(this.center).normalize();\n target.multiply(this.radius).add(this.center);\n }\n return target;\n };\n /**\n * 根据包围盒获取球\n * @param target - 包围盒\n * @returns 球\n */\n Sphere.prototype.getBoundingBox = function (target) {\n if (target === undefined) {\n target = new Box3();\n }\n if (this.isEmpty()) {\n // Empty sphere produces empty bounding box\n target.makeEmpty();\n return target;\n }\n target.set(this.center, this.center);\n target.expandByScalar(this.radius);\n return target;\n };\n /**\n * 球空间变换\n * @param matrix - 空间变化矩阵\n * @returns 变换结果\n */\n Sphere.prototype.applyMatrix4 = function (matrix) {\n var mt = matrix.elements;\n var scaleXSq = mt[0] * mt[0] + mt[1] * mt[1] + mt[2] * mt[2];\n var scaleYSq = mt[4] * mt[4] + mt[5] * mt[5] + mt[6] * mt[6];\n var scaleZSq = mt[8] * mt[8] + mt[9] * mt[9] + mt[10] * mt[10];\n var maxScale = Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n this.center.applyMatrix(matrix);\n this.radius = this.radius * maxScale;\n return this;\n };\n /**\n * 球位移\n * @param offset - 位移信息\n * @returns 位移结果\n */\n Sphere.prototype.translate = function (offset) {\n this.center.add(offset);\n return this;\n };\n /**\n * 通过三维空间点对球进行扩展\n * @param point - 扩展点\n * @returns 扩展结果\n */\n Sphere.prototype.expandByPoint = function (point) {\n var vector = new Vector3().subtractVectors(point, this.center);\n var lengthSquared = vector.lengthSquared();\n if (lengthSquared > (this.radius * this.radius)) {\n var length_1 = Math.sqrt(lengthSquared);\n var missingRadiusHalf = (length_1 - this.radius) * 0.5;\n // Nudge this sphere towards the target point. Add half the missing distance to radius,\n // and the other half to position. This gives a tighter enclosure, instead of if\n // the whole missing distance were just added to radius.\n this.center.add(vector.multiply(missingRadiusHalf / length_1));\n this.radius += missingRadiusHalf;\n }\n return this;\n };\n /**\n * 包围球求并集\n * @param sphere - 包围球\n * @returns 求并结果\n */\n Sphere.prototype.union = function (sphere) {\n // To enclose another sphere into this sphere, we only need to enclose two points:\n // 1) Enclose the farthest point on the other sphere into this sphere.\n // 2) Enclose the opposite point of the farthest point into this sphere.\n var v1 = new Vector3();\n var toFarthestPoint = new Vector3();\n toFarthestPoint.subtractVectors(sphere.center, this.center).normalize().multiply(sphere.radius);\n this.expandByPoint(v1.copyFrom(sphere.center).add(toFarthestPoint));\n this.expandByPoint(v1.copyFrom(sphere.center).subtract(toFarthestPoint));\n return this;\n };\n /**\n * 包围球求交集\n * @param other - 其它包围球\n * @returns 求交结果\n */\n Sphere.prototype.intersect = function (other) {\n var vector = new Vector3().subtractVectors(this.center, other.center);\n var distance = vector.length();\n var radiusSum = this.radius + other.radius;\n if (distance > radiusSum) {\n return this.makeEmpty();\n }\n this.center = this.center.add(vector.normalize().multiply(distance / 2));\n this.radius = this.radius + other.radius - distance;\n return this;\n };\n /**\n * 包围球判等\n * @param sphere - 包围球\n * @returns 判等结果\n */\n Sphere.prototype.equals = function (sphere) {\n return sphere.center.equals(this.center) && (sphere.radius === this.radius);\n };\n /**\n * 包围球克隆\n * @returns 克隆结果\n */\n Sphere.prototype.clone = function () {\n return new Sphere().copyFrom(this);\n };\n return Sphere;\n}());\nexport { Sphere };\n","/*!\n * Name: @galacean/effects-specification\n * Description: Galacean Effects JSON Specification\n * Author: Ant Group CO., Ltd.\n * Version: v2.0.0-alpha.2\n */\n\ntypeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\n/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n/**\n * 渲染等级\n */\nvar RenderLevel;\n(function (RenderLevel) {\n RenderLevel[\"S\"] = \"S\";\n RenderLevel[\"APlus\"] = \"A+\";\n RenderLevel[\"A\"] = \"A\";\n RenderLevel[\"BPlus\"] = \"B+\";\n RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nvar BlendingMode;\n(function (BlendingMode) {\n /**\n * 普通混合模式\n */\n BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n /**\n * 叠加混合模式\n */\n BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n /**\n * 相乘混合模式\n */\n BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n /**\n * 亮度混合模式\n */\n BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n /**\n * 减色混合模式\n */\n BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n /**\n * 强光混合模式\n */\n BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n /**\n * 弱光混合模式\n */\n BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n /**\n * 亮度叠加混合模式\n */\n BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nvar SideMode;\n(function (SideMode) {\n /**\n * 双面模式\n */\n SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n /**\n * 正面模式\n */\n SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n /**\n * 背面模式\n */\n SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n * 蒙版模式\n */\nvar MaskMode;\n(function (MaskMode) {\n /**\n * 无蒙版\n */\n MaskMode[MaskMode[\"NONE\"] = 0] = \"NONE\";\n /**\n * 蒙版\n */\n MaskMode[MaskMode[\"MASK\"] = 1] = \"MASK\";\n /**\n * 被遮挡\n */\n MaskMode[MaskMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n /**\n * 被反向遮挡\n */\n MaskMode[MaskMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(MaskMode || (MaskMode = {}));\n/**\n * 发射器形状\n */\nvar ShapeType;\n(function (ShapeType) {\n /**\n * 没有类型\n */\n ShapeType[ShapeType[\"NONE\"] = 0] = \"NONE\";\n /**\n * 圆球\n */\n ShapeType[ShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n /**\n * 圆锥\n */\n ShapeType[ShapeType[\"CONE\"] = 2] = \"CONE\";\n /**\n * 半球\n */\n ShapeType[ShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n /**\n * 圆\n */\n ShapeType[ShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n /**\n * 圆环\n */\n ShapeType[ShapeType[\"DONUT\"] = 5] = \"DONUT\";\n /**\n * 矩形\n */\n ShapeType[ShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n /**\n * 矩形框\n */\n ShapeType[ShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n /**\n * 直线\n */\n ShapeType[ShapeType[\"EDGE\"] = 8] = \"EDGE\";\n /**\n * 贴图\n */\n ShapeType[ShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ShapeType || (ShapeType = {}));\n/**\n * 插件类型\n */\nvar PluginType;\n(function (PluginType) {\n /**\n * 陀螺仪\n */\n PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n /**\n * Spine\n */\n PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nvar InteractType;\n(function (InteractType) {\n /**\n * 点击\n */\n InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n /**\n * 拖拽\n */\n InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nvar InteractBehavior;\n(function (InteractBehavior) {\n /**\n * 无\n */\n InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n /**\n * 通知\n */\n InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n /**\n * 重置播放器\n */\n InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n /**\n * 清除元素\n */\n InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n /**\n * 暂停播放器\n */\n InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nvar ItemType;\n(function (ItemType) {\n /**\n * 错误元素\n */\n ItemType[\"base\"] = \"0\";\n /**\n * 图层元素\n */\n ItemType[\"sprite\"] = \"1\";\n /**\n * 粒子元素\n */\n ItemType[\"particle\"] = \"2\";\n /**\n * 空节点元素\n */\n ItemType[\"null\"] = \"3\";\n /**\n * 交互元素\n */\n ItemType[\"interact\"] = \"4\";\n /**\n * 插件元素\n */\n ItemType[\"plugin\"] = \"5\";\n /**\n * 相机元素\n */\n ItemType[\"camera\"] = \"6\";\n /**\n * 预合成元素\n */\n ItemType[\"composition\"] = \"7\";\n /**\n * 滤镜图层\n */\n ItemType[\"filter\"] = \"8\";\n /**\n * Spine 元素\n */\n ItemType[\"spine\"] = \"spine\";\n /**\n * Mesh 元素\n */\n ItemType[\"mesh\"] = \"mesh\";\n /**\n * 节点树元素\n */\n ItemType[\"tree\"] = \"tree\";\n /**\n * 文本元素\n */\n ItemType[\"text\"] = \"text\";\n /**\n * 灯光元素\n */\n ItemType[\"light\"] = \"light\";\n /**\n * 天空盒元素\n */\n ItemType[\"skybox\"] = \"skybox\";\n /**\n * 特效元素\n */\n ItemType[\"effect\"] = \"effect\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nvar RenderMode;\n(function (RenderMode) {\n /**\n * 广告牌模式\n */\n RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n /**\n * 网格模式\n */\n RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n /**\n * 垂直广告牌模式\n */\n RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n /**\n * 水平广告牌模式\n */\n RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nvar ParticleOrigin;\n(function (ParticleOrigin) {\n /**\n * 水平和垂直中点\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n /**\n * 水平左侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n /**\n * 水平左侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n /**\n * 水平左侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n /**\n * 水平中间 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n /**\n * 水平中间 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n /**\n * 水平右侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n /**\n * 水平右侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n /**\n * 水平右侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\n\nvar END_BEHAVIOR_DESTROY = 0;\nvar END_BEHAVIOR_PAUSE = 1;\nvar END_BEHAVIOR_FORWARD = 2;\nvar END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\nvar END_BEHAVIOR_FREEZE = 4;\nvar END_BEHAVIOR_RESTART = 5;\nvar END_BEHAVIOR_DESTROY_CHILDREN = 6;\nvar CAMERA_CLIP_MODE_VERTICAL = 1;\nvar CAMERA_CLIP_MODE_NORMAL = 0;\nvar MESSAGE_ITEM_PHRASE_BEGIN = 2;\nvar MESSAGE_ITEM_PHRASE_END = 1;\n\nvar CameraClipMode;\n(function (CameraClipMode) {\n /**\n * 剪裁上下\n */\n CameraClipMode[CameraClipMode[\"portrait\"] = CAMERA_CLIP_MODE_VERTICAL] = \"portrait\";\n /**\n * 剪裁左右\n */\n CameraClipMode[CameraClipMode[\"landscape\"] = CAMERA_CLIP_MODE_NORMAL] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n/**\n * 结束行为\n */\nvar CompositionEndBehavior;\n(function (CompositionEndBehavior) {\n /**\n * 销毁\n */\n CompositionEndBehavior[CompositionEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n /**\n * 暂停\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause\"] = END_BEHAVIOR_PAUSE] = \"pause\";\n /**\n * 重播\n */\n CompositionEndBehavior[CompositionEndBehavior[\"restart\"] = END_BEHAVIOR_RESTART] = \"restart\";\n /**\n * 无限播放\n */\n CompositionEndBehavior[CompositionEndBehavior[\"forward\"] = END_BEHAVIOR_FORWARD] = \"forward\";\n /**\n * 销毁并保留最后一帧\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause_destroy\"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = \"pause_destroy\";\n /**\n * 冻结\n */\n CompositionEndBehavior[CompositionEndBehavior[\"freeze\"] = END_BEHAVIOR_FREEZE] = \"freeze\";\n})(CompositionEndBehavior || (CompositionEndBehavior = {}));\n\n/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\nvar ValueType;\n(function (ValueType) {\n /**\n * 常数\n */\n ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n /**\n * 二维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n /**\n * 三维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n /**\n * 四维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n /**\n * 随机数\n */\n ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n /**\n * 直线\n */\n ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n /**\n * 曲线\n */\n ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n /**\n * 贝塞尔路径\n */\n ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n /**\n * 颜色\n */\n ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n /**\n * 渐变色\n */\n ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n /**\n * 蒙版形状点集\n */\n ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n /**\n * 蒙版形状切分\n */\n ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n /**\n *直线路径\n */\n ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n /**\n * 多色\n */\n ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n /**\n * 二进制指针\n */\n ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n /**\n * 贝塞尔曲线\n */\n ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n /**\n * 贝塞尔曲线路径\n */\n ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nvar BezierKeyframeType;\n(function (BezierKeyframeType) {\n BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n\nvar ItemEndBehavior;\n(function (ItemEndBehavior) {\n ItemEndBehavior[ItemEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n ItemEndBehavior[ItemEndBehavior[\"loop\"] = END_BEHAVIOR_RESTART] = \"loop\";\n ItemEndBehavior[ItemEndBehavior[\"freeze\"] = END_BEHAVIOR_FREEZE] = \"freeze\";\n})(ItemEndBehavior || (ItemEndBehavior = {}));\nvar ParentItemEndBehavior;\n(function (ParentItemEndBehavior) {\n ParentItemEndBehavior[ParentItemEndBehavior[\"destroyChildren\"] = END_BEHAVIOR_DESTROY_CHILDREN] = \"destroyChildren\";\n})(ParentItemEndBehavior || (ParentItemEndBehavior = {}));\n\n/**\n * 粒子交互行为\n */\nvar ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n /**\n * 无\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n /**\n * 移出粒子\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n\nvar ShapeArcMode;\n(function (ShapeArcMode) {\n /**\n * 随机\n */\n ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n /**\n * 单向循环\n */\n ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n /**\n * 双向循环\n */\n ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n /**\n * 均匀爆发\n */\n ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n\nvar BloomFilterThresholdAvgColor = 0;\n\nvar LightType;\n(function (LightType) {\n /**\n * 点光源\n */\n LightType[\"point\"] = \"point\";\n /**\n * 聚光灯\n */\n LightType[\"spot\"] = \"spot\";\n /**\n * 方向光\n */\n LightType[\"directional\"] = \"directional\";\n /**\n * 环境光\n */\n LightType[\"ambient\"] = \"ambient\";\n})(LightType || (LightType = {}));\n\nvar ModelBoundingType;\n(function (ModelBoundingType) {\n ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n\nvar CameraType;\n(function (CameraType) {\n CameraType[\"orthographic\"] = \"orthographic\";\n CameraType[\"perspective\"] = \"perspective\";\n})(CameraType || (CameraType = {}));\n\n// 材质类型\nvar MaterialType;\n(function (MaterialType) {\n MaterialType[\"unlit\"] = \"unlit\";\n MaterialType[\"pbr\"] = \"pbr\";\n // 头发材质,在 pbr 材质基础上扩展\n MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nvar MaterialBlending;\n(function (MaterialBlending) {\n MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n\n/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nvar RenderMode3D;\n(function (RenderMode3D) {\n /**\n * 正常渲染\n */\n RenderMode3D[\"none\"] = \"none\";\n /**\n * 纹理坐标\n */\n RenderMode3D[\"uv\"] = \"uv\";\n /**\n * 世界坐标法线\n */\n RenderMode3D[\"normal\"] = \"normal\";\n /**\n * 基础颜色\n */\n RenderMode3D[\"basecolor\"] = \"basecolor\";\n /**\n * 基础颜色 Alpha\n */\n RenderMode3D[\"alpha\"] = \"alpha\";\n /**\n * 金属度\n */\n RenderMode3D[\"metallic\"] = \"metallic\";\n /**\n * 粗超度\n */\n RenderMode3D[\"roughness\"] = \"roughness\";\n /**\n * 环境遮蔽\n */\n RenderMode3D[\"ao\"] = \"ao\";\n /**\n * 自发光\n */\n RenderMode3D[\"emissive\"] = \"emissive\";\n})(RenderMode3D || (RenderMode3D = {}));\n\nvar TextOverflow;\n(function (TextOverflow) {\n /**\n * display 模式下,会显示所有文本,存在文本超过边界框的情况。\n */\n TextOverflow[TextOverflow[\"display\"] = 0] = \"display\";\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n TextOverflow[TextOverflow[\"clip\"] = 1] = \"clip\";\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n TextOverflow[TextOverflow[\"ellipsis\"] = 2] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nvar TextBaseline;\n(function (TextBaseline) {\n /**\n * 文本顶对齐。\n */\n TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nvar TextAlignment;\n(function (TextAlignment) {\n /**\n * text alignment starts from(x,y) to right direction\n * 从(x,y)开始第一个字符,向右边延伸\n */\n TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * text alignment ends with(x,y) from left direction\n * 从(x,y)结束最后一个字符,向左边延伸\n */\n TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\n/**\n * 文本字重\n */\nvar TextWeight;\n(function (TextWeight) {\n /**\n * 正常\n */\n TextWeight[\"normal\"] = \"normal\";\n /**\n * 粗体\n */\n TextWeight[\"bold\"] = \"bold\";\n /**\n * 瘦体\n */\n TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nvar FontStyle;\n(function (FontStyle) {\n /**\n * 正常\n */\n FontStyle[\"normal\"] = \"normal\";\n /**\n * 斜体\n */\n FontStyle[\"italic\"] = \"italic\";\n /**\n * 倾斜体\n */\n FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n\nvar DataType;\n(function (DataType) {\n DataType[\"VFXItemData\"] = \"VFXItemData\";\n DataType[\"EffectComponent\"] = \"EffectComponent\";\n DataType[\"Material\"] = \"Material\";\n DataType[\"Shader\"] = \"Shader\";\n DataType[\"SpriteComponent\"] = \"SpriteComponent\";\n DataType[\"ParticleSystem\"] = \"ParticleSystem\";\n DataType[\"InteractComponent\"] = \"InteractComponent\";\n DataType[\"CameraController\"] = \"CameraController\";\n DataType[\"Geometry\"] = \"Geometry\";\n DataType[\"Texture\"] = \"Texture\";\n DataType[\"TextComponent\"] = \"TextComponent\";\n // FIXME: 先完成ECS的场景转换,后面移到spec中\n DataType[\"MeshComponent\"] = \"MeshComponent\";\n DataType[\"SkyboxComponent\"] = \"SkyboxComponent\";\n DataType[\"LightComponent\"] = \"LightComponent\";\n DataType[\"CameraComponent\"] = \"CameraComponent\";\n DataType[\"ModelPluginComponent\"] = \"ModelPluginComponent\";\n DataType[\"TreeComponent\"] = \"TreeComponent\";\n})(DataType || (DataType = {}));\n\nexport { BezierKeyframeType, BlendingMode, BloomFilterThresholdAvgColor, CAMERA_CLIP_MODE_NORMAL, CAMERA_CLIP_MODE_VERTICAL, CameraClipMode, CameraType, CompositionEndBehavior, DataType, END_BEHAVIOR_DESTROY, END_BEHAVIOR_DESTROY_CHILDREN, END_BEHAVIOR_FORWARD, END_BEHAVIOR_FREEZE, END_BEHAVIOR_PAUSE, END_BEHAVIOR_PAUSE_AND_DESTROY, END_BEHAVIOR_RESTART, FontStyle, InteractBehavior, InteractType, ItemEndBehavior, ItemType, LightType, MESSAGE_ITEM_PHRASE_BEGIN, MESSAGE_ITEM_PHRASE_END, MaskMode, MaterialBlending, MaterialType, ModelBoundingType, ParentItemEndBehavior, ParticleInteractionBehavior, ParticleOrigin, PluginType, RenderLevel, RenderMode, RenderMode3D, ShapeArcMode, ShapeType, SideMode, TextAlignment, TextBaseline, TextOverflow, TextWeight, ValueType };\n//# sourceMappingURL=index.mjs.map\n","/**\n * Earcut.js from: https://github.com/mapbox/earcut/tree/v2.2.2\n */\n\nexport function earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nexport function linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nexport function filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nexport function isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nexport function isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nexport function eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n var b = splitPolygon(outerNode, hole);\n\n // filter collinear points around the cuts\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nexport function indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nexport function isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nexport function equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nexport function intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nexport function locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nexport function splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nexport function removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nexport function Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","/*!\n * Name: @galacean/effects-specification\n * Description: Galacean Effects JSON Specification\n * Author: Ant Group CO., Ltd.\n * Version: v2.0.0-alpha.2\n */\n\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar native = {\n randomUUID\n};\n\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\n/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n/**\n * 渲染等级\n */\nvar RenderLevel;\n(function (RenderLevel) {\n RenderLevel[\"S\"] = \"S\";\n RenderLevel[\"APlus\"] = \"A+\";\n RenderLevel[\"A\"] = \"A\";\n RenderLevel[\"BPlus\"] = \"B+\";\n RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nvar BlendingMode;\n(function (BlendingMode) {\n /**\n * 普通混合模式\n */\n BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n /**\n * 叠加混合模式\n */\n BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n /**\n * 相乘混合模式\n */\n BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n /**\n * 亮度混合模式\n */\n BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n /**\n * 减色混合模式\n */\n BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n /**\n * 强光混合模式\n */\n BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n /**\n * 弱光混合模式\n */\n BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n /**\n * 亮度叠加混合模式\n */\n BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nvar SideMode;\n(function (SideMode) {\n /**\n * 双面模式\n */\n SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n /**\n * 正面模式\n */\n SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n /**\n * 背面模式\n */\n SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n * 蒙版模式\n */\nvar MaskMode;\n(function (MaskMode) {\n /**\n * 无蒙版\n */\n MaskMode[MaskMode[\"NONE\"] = 0] = \"NONE\";\n /**\n * 蒙版\n */\n MaskMode[MaskMode[\"MASK\"] = 1] = \"MASK\";\n /**\n * 被遮挡\n */\n MaskMode[MaskMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n /**\n * 被反向遮挡\n */\n MaskMode[MaskMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(MaskMode || (MaskMode = {}));\n/**\n * 发射器形状\n */\nvar ShapeType;\n(function (ShapeType) {\n /**\n * 没有类型\n */\n ShapeType[ShapeType[\"NONE\"] = 0] = \"NONE\";\n /**\n * 圆球\n */\n ShapeType[ShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n /**\n * 圆锥\n */\n ShapeType[ShapeType[\"CONE\"] = 2] = \"CONE\";\n /**\n * 半球\n */\n ShapeType[ShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n /**\n * 圆\n */\n ShapeType[ShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n /**\n * 圆环\n */\n ShapeType[ShapeType[\"DONUT\"] = 5] = \"DONUT\";\n /**\n * 矩形\n */\n ShapeType[ShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n /**\n * 矩形框\n */\n ShapeType[ShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n /**\n * 直线\n */\n ShapeType[ShapeType[\"EDGE\"] = 8] = \"EDGE\";\n /**\n * 贴图\n */\n ShapeType[ShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ShapeType || (ShapeType = {}));\n/**\n * 插件类型\n */\nvar PluginType;\n(function (PluginType) {\n /**\n * 陀螺仪\n */\n PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n /**\n * Spine\n */\n PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nvar InteractType;\n(function (InteractType) {\n /**\n * 点击\n */\n InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n /**\n * 拖拽\n */\n InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nvar InteractBehavior;\n(function (InteractBehavior) {\n /**\n * 无\n */\n InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n /**\n * 通知\n */\n InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n /**\n * 重置播放器\n */\n InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n /**\n * 清除元素\n */\n InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n /**\n * 暂停播放器\n */\n InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nvar ItemType;\n(function (ItemType) {\n /**\n * 错误元素\n */\n ItemType[\"base\"] = \"0\";\n /**\n * 图层元素\n */\n ItemType[\"sprite\"] = \"1\";\n /**\n * 粒子元素\n */\n ItemType[\"particle\"] = \"2\";\n /**\n * 空节点元素\n */\n ItemType[\"null\"] = \"3\";\n /**\n * 交互元素\n */\n ItemType[\"interact\"] = \"4\";\n /**\n * 插件元素\n */\n ItemType[\"plugin\"] = \"5\";\n /**\n * 相机元素\n */\n ItemType[\"camera\"] = \"6\";\n /**\n * 预合成元素\n */\n ItemType[\"composition\"] = \"7\";\n /**\n * 滤镜图层\n */\n ItemType[\"filter\"] = \"8\";\n /**\n * Spine 元素\n */\n ItemType[\"spine\"] = \"spine\";\n /**\n * Mesh 元素\n */\n ItemType[\"mesh\"] = \"mesh\";\n /**\n * 节点树元素\n */\n ItemType[\"tree\"] = \"tree\";\n /**\n * 文本元素\n */\n ItemType[\"text\"] = \"text\";\n /**\n * 灯光元素\n */\n ItemType[\"light\"] = \"light\";\n /**\n * 天空盒元素\n */\n ItemType[\"skybox\"] = \"skybox\";\n /**\n * 特效元素\n */\n ItemType[\"effect\"] = \"effect\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nvar RenderMode;\n(function (RenderMode) {\n /**\n * 广告牌模式\n */\n RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n /**\n * 网格模式\n */\n RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n /**\n * 垂直广告牌模式\n */\n RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n /**\n * 水平广告牌模式\n */\n RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nvar ParticleOrigin;\n(function (ParticleOrigin) {\n /**\n * 水平和垂直中点\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n /**\n * 水平左侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n /**\n * 水平左侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n /**\n * 水平左侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n /**\n * 水平中间 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n /**\n * 水平中间 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n /**\n * 水平右侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n /**\n * 水平右侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n /**\n * 水平右侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\n\nvar END_BEHAVIOR_DESTROY = 0;\nvar END_BEHAVIOR_PAUSE = 1;\nvar END_BEHAVIOR_FORWARD = 2;\nvar END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\nvar END_BEHAVIOR_FREEZE = 4;\nvar END_BEHAVIOR_RESTART = 5;\nvar END_BEHAVIOR_DESTROY_CHILDREN = 6;\nvar CAMERA_CLIP_MODE_VERTICAL = 1;\nvar CAMERA_CLIP_MODE_NORMAL = 0;\n\nvar CameraClipMode;\n(function (CameraClipMode) {\n /**\n * 剪裁上下\n */\n CameraClipMode[CameraClipMode[\"portrait\"] = CAMERA_CLIP_MODE_VERTICAL] = \"portrait\";\n /**\n * 剪裁左右\n */\n CameraClipMode[CameraClipMode[\"landscape\"] = CAMERA_CLIP_MODE_NORMAL] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n/**\n * 结束行为\n */\nvar CompositionEndBehavior;\n(function (CompositionEndBehavior) {\n /**\n * 销毁\n */\n CompositionEndBehavior[CompositionEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n /**\n * 暂停\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause\"] = END_BEHAVIOR_PAUSE] = \"pause\";\n /**\n * 重播\n */\n CompositionEndBehavior[CompositionEndBehavior[\"restart\"] = END_BEHAVIOR_RESTART] = \"restart\";\n /**\n * 无限播放\n */\n CompositionEndBehavior[CompositionEndBehavior[\"forward\"] = END_BEHAVIOR_FORWARD] = \"forward\";\n /**\n * 销毁并保留最后一帧\n */\n CompositionEndBehavior[CompositionEndBehavior[\"pause_destroy\"] = END_BEHAVIOR_PAUSE_AND_DESTROY] = \"pause_destroy\";\n /**\n * 冻结\n */\n CompositionEndBehavior[CompositionEndBehavior[\"freeze\"] = END_BEHAVIOR_FREEZE] = \"freeze\";\n})(CompositionEndBehavior || (CompositionEndBehavior = {}));\n\n/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\nvar ValueType;\n(function (ValueType) {\n /**\n * 常数\n */\n ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n /**\n * 二维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n /**\n * 三维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n /**\n * 四维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n /**\n * 随机数\n */\n ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n /**\n * 直线\n */\n ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n /**\n * 曲线\n */\n ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n /**\n * 贝塞尔路径\n */\n ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n /**\n * 颜色\n */\n ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n /**\n * 渐变色\n */\n ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n /**\n * 蒙版形状点集\n */\n ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n /**\n * 蒙版形状切分\n */\n ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n /**\n *直线路径\n */\n ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n /**\n * 多色\n */\n ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n /**\n * 二进制指针\n */\n ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n /**\n * 贝塞尔曲线\n */\n ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n /**\n * 贝塞尔曲线路径\n */\n ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nvar BezierKeyframeType;\n(function (BezierKeyframeType) {\n BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n\nvar ItemEndBehavior;\n(function (ItemEndBehavior) {\n ItemEndBehavior[ItemEndBehavior[\"destroy\"] = END_BEHAVIOR_DESTROY] = \"destroy\";\n ItemEndBehavior[ItemEndBehavior[\"loop\"] = END_BEHAVIOR_RESTART] = \"loop\";\n ItemEndBehavior[ItemEndBehavior[\"freeze\"] = END_BEHAVIOR_FREEZE] = \"freeze\";\n})(ItemEndBehavior || (ItemEndBehavior = {}));\nvar ParentItemEndBehavior;\n(function (ParentItemEndBehavior) {\n ParentItemEndBehavior[ParentItemEndBehavior[\"destroyChildren\"] = END_BEHAVIOR_DESTROY_CHILDREN] = \"destroyChildren\";\n})(ParentItemEndBehavior || (ParentItemEndBehavior = {}));\n\n/**\n * 粒子交互行为\n */\nvar ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n /**\n * 无\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n /**\n * 移出粒子\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n\nvar ShapeArcMode;\n(function (ShapeArcMode) {\n /**\n * 随机\n */\n ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n /**\n * 单向循环\n */\n ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n /**\n * 双向循环\n */\n ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n /**\n * 均匀爆发\n */\n ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n\nvar LightType;\n(function (LightType) {\n /**\n * 点光源\n */\n LightType[\"point\"] = \"point\";\n /**\n * 聚光灯\n */\n LightType[\"spot\"] = \"spot\";\n /**\n * 方向光\n */\n LightType[\"directional\"] = \"directional\";\n /**\n * 环境光\n */\n LightType[\"ambient\"] = \"ambient\";\n})(LightType || (LightType = {}));\n\nvar ModelBoundingType;\n(function (ModelBoundingType) {\n ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n\nvar CameraType;\n(function (CameraType) {\n CameraType[\"orthographic\"] = \"orthographic\";\n CameraType[\"perspective\"] = \"perspective\";\n})(CameraType || (CameraType = {}));\n\n// 材质类型\nvar MaterialType;\n(function (MaterialType) {\n MaterialType[\"unlit\"] = \"unlit\";\n MaterialType[\"pbr\"] = \"pbr\";\n // 头发材质,在 pbr 材质基础上扩展\n MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nvar MaterialBlending;\n(function (MaterialBlending) {\n MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n\n/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nvar RenderMode3D;\n(function (RenderMode3D) {\n /**\n * 正常渲染\n */\n RenderMode3D[\"none\"] = \"none\";\n /**\n * 纹理坐标\n */\n RenderMode3D[\"uv\"] = \"uv\";\n /**\n * 世界坐标法线\n */\n RenderMode3D[\"normal\"] = \"normal\";\n /**\n * 基础颜色\n */\n RenderMode3D[\"basecolor\"] = \"basecolor\";\n /**\n * 基础颜色 Alpha\n */\n RenderMode3D[\"alpha\"] = \"alpha\";\n /**\n * 金属度\n */\n RenderMode3D[\"metallic\"] = \"metallic\";\n /**\n * 粗超度\n */\n RenderMode3D[\"roughness\"] = \"roughness\";\n /**\n * 环境遮蔽\n */\n RenderMode3D[\"ao\"] = \"ao\";\n /**\n * 自发光\n */\n RenderMode3D[\"emissive\"] = \"emissive\";\n})(RenderMode3D || (RenderMode3D = {}));\n\nvar TextOverflow;\n(function (TextOverflow) {\n /**\n * display 模式下,会显示所有文本,存在文本超过边界框的情况。\n */\n TextOverflow[TextOverflow[\"display\"] = 0] = \"display\";\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n TextOverflow[TextOverflow[\"clip\"] = 1] = \"clip\";\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n TextOverflow[TextOverflow[\"ellipsis\"] = 2] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nvar TextBaseline;\n(function (TextBaseline) {\n /**\n * 文本顶对齐。\n */\n TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nvar TextAlignment;\n(function (TextAlignment) {\n /**\n * text alignment starts from(x,y) to right direction\n * 从(x,y)开始第一个字符,向右边延伸\n */\n TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * text alignment ends with(x,y) from left direction\n * 从(x,y)结束最后一个字符,向左边延伸\n */\n TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\n/**\n * 文本字重\n */\nvar TextWeight;\n(function (TextWeight) {\n /**\n * 正常\n */\n TextWeight[\"normal\"] = \"normal\";\n /**\n * 粗体\n */\n TextWeight[\"bold\"] = \"bold\";\n /**\n * 瘦体\n */\n TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nvar FontStyle;\n(function (FontStyle) {\n /**\n * 正常\n */\n FontStyle[\"normal\"] = \"normal\";\n /**\n * 斜体\n */\n FontStyle[\"italic\"] = \"italic\";\n /**\n * 倾斜体\n */\n FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n\nvar DataType;\n(function (DataType) {\n DataType[\"VFXItemData\"] = \"VFXItemData\";\n DataType[\"EffectComponent\"] = \"EffectComponent\";\n DataType[\"Material\"] = \"Material\";\n DataType[\"Shader\"] = \"Shader\";\n DataType[\"SpriteComponent\"] = \"SpriteComponent\";\n DataType[\"ParticleSystem\"] = \"ParticleSystem\";\n DataType[\"InteractComponent\"] = \"InteractComponent\";\n DataType[\"CameraController\"] = \"CameraController\";\n DataType[\"Geometry\"] = \"Geometry\";\n DataType[\"Texture\"] = \"Texture\";\n DataType[\"TextComponent\"] = \"TextComponent\";\n // FIXME: 先完成ECS的场景转换,后面移到spec中\n DataType[\"MeshComponent\"] = \"MeshComponent\";\n DataType[\"SkyboxComponent\"] = \"SkyboxComponent\";\n DataType[\"LightComponent\"] = \"LightComponent\";\n DataType[\"CameraComponent\"] = \"CameraComponent\";\n DataType[\"ModelPluginComponent\"] = \"ModelPluginComponent\";\n DataType[\"TreeComponent\"] = \"TreeComponent\";\n})(DataType || (DataType = {}));\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar _a;\nfunction arrAdd(arr, item) {\n if (!arr.includes(item)) {\n arr.push(item);\n return true;\n }\n}\n/**\n * @deprecated 请直接使用 Array.prototype.forEach 或 for...of\n * @param object\n * @param callback\n * @returns the mutated input object\n */\nfunction forEach(object, callback, thisObj) {\n if (object) {\n for (var name_1 in object) {\n if (Object.hasOwnProperty.call(object, name_1)) {\n callback.call(thisObj, object[name_1], name_1);\n }\n }\n }\n return object;\n}\nfunction ensureFixedNumber(a) {\n if (Number.isFinite(a)) {\n return [ValueType.CONSTANT, a];\n }\n if (a) {\n if (a[0] === 'lines') {\n return [ValueType.LINE, a[1]];\n }\n if (a[0] === 'curve') {\n return [ValueType.CURVE, a[1]];\n }\n if (a[0] === 'static') {\n return [ValueType.CONSTANT, a[1]];\n }\n }\n}\nfunction ensureFixedNumberWithRandom(a, p) {\n if (Array.isArray(a) && a[0] === 'random') {\n return [ValueType.CONSTANT, a[1][p]];\n }\n return ensureFixedNumber(a);\n}\nfunction ensureRGBAValue(a) {\n if (a && a[0] === 'color') {\n return colorToArr(a[1], true);\n }\n return [1, 1, 1, 1];\n}\nfunction ensureColorExpression(a, normalized) {\n if (a) {\n if (a[0] === 'colors') {\n return [ValueType.COLORS, a[1].map(function (color) { return colorToArr(color, normalized); })];\n }\n else if (a[0] === 'gradient') {\n return ensureGradient(a[1], normalized);\n }\n else if (a[0] === 'color') {\n return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];\n }\n }\n}\nfunction ensureNumberExpression(a) {\n if (a && a[0] === 'random') {\n return [ValueType.RANDOM, a[1]];\n }\n return ensureFixedNumber(a);\n}\nfunction ensureValueGetter(a) {\n if (Array.isArray(a) && typeof a[0] === 'string') {\n return ensureNumberExpression(a) || ensureFixedVec3(a) || ensureColorExpression(a) || a;\n }\n return a;\n}\nfunction ensureGradient(a, normalized) {\n if (a) {\n var stops_1 = [];\n Object.getOwnPropertyNames(a).forEach(function (p) {\n var stop = parsePercent(p);\n var color = colorToArr(a[p], normalized);\n stops_1.push([stop, color[0], color[1], color[2], color[3]]);\n });\n stops_1 = stops_1.sort(function (a, b) { return a[0] - b[0]; });\n return [ValueType.GRADIENT_COLOR, stops_1];\n }\n}\nfunction colorToArr(hex, normalized) {\n var ret;\n if (typeof hex === 'string') {\n hex = hex.replace(/[\\s\\t\\r\\n]/g, '');\n var m = /rgba?\\(([.\\d]+),([.\\d]+),([.\\d]+),?([.\\d]+)?\\)/.exec(hex);\n if (m) {\n var a = +m[4];\n ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : Math.round(a * 255)];\n }\n else if (/^#[a-f\\d]{3}$/i.test(hex)) {\n ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];\n // eslint-disable-next-line no-cond-assign\n }\n else if (m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)) {\n ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255] || [0, 0, 0, 255];\n }\n }\n else if (hex instanceof Array) {\n ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : Math.round(hex[3] * 255)];\n }\n if (normalized) {\n // @ts-expect-error\n ret = normalizeColor(ret);\n }\n // @ts-expect-error\n return ret;\n}\nfunction normalizeColor(a) {\n if (Array.isArray(a)) {\n return a.map(function (i) { return Number.isFinite(i / 255) ? Number((i / 255).toFixed(6)) : 0; });\n }\n}\nfunction parsePercent(c) {\n var match = /^(-)?([\\d+.]+)%$/.exec(c);\n if (match) {\n return +match[2] / 100 * (match[1] ? -1 : 1);\n }\n return +c;\n}\nfunction getGradientColor(color, normalized) {\n if (Array.isArray(color)) {\n // @ts-expect-error\n return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);\n }\n else {\n return ensureGradient(color, normalized);\n }\n}\nfunction ensureFixedVec3(a) {\n if (a) {\n if (a.length === 3) {\n return [ValueType.CONSTANT_VEC3, a];\n }\n if (a[0] === 'path') {\n return [ValueType.LINEAR_PATH, a[1]];\n }\n if (a[0] === 'bezier') {\n return [ValueType.BEZIER_PATH, a[1]];\n }\n }\n}\nfunction objectValueToNumber(o) {\n var e_1, _a;\n try {\n for (var _b = __values(Object.keys(o)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n o[key] = Number(o[key]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return o;\n}\nfunction deleteEmptyValue(o) {\n var e_2, _a;\n try {\n for (var _b = __values(Object.keys(o)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (o[key] === undefined) {\n delete o[key];\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return o;\n}\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar d2r = Math.PI / 180;\nvar r2d = 180 / Math.PI;\nfunction quatFromXYZRotation(out, x, y, z) {\n var c1 = cos((x * d2r) / 2);\n var c2 = cos((y * d2r) / 2);\n var c3 = cos((z * d2r) / 2);\n var s1 = sin((x * d2r) / 2);\n var s2 = sin((y * d2r) / 2);\n var s3 = sin((z * d2r) / 2);\n out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n return out;\n}\nfunction clamp(v, min, max) {\n return v > max ? max : (v < min ? min : v);\n}\nfunction rotationZYXFromQuat(out, quat) {\n var x = quat[0];\n var y = quat[1];\n var z = quat[2];\n var w = quat[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var m11 = 1 - yy - zz, m12 = yx - wz;\n var m21 = yx + wz, m22 = 1 - xx - zz;\n var m31 = zx - wy, m32 = zy + wx, m33 = 1 - xx - yy;\n out[1] = Math.asin(clamp(-m31, -1, 1)) * r2d;\n if (Math.abs(m31) < 0.9999999) {\n out[0] = Math.atan2(m32, m33) * r2d;\n out[2] = Math.atan2(m21, m11) * r2d;\n }\n else {\n out[0] = 0;\n out[2] = Math.atan2(-m12, m22) * r2d;\n }\n return out;\n}\nfunction generateGUID() {\n return v4().replace(/-/g, '');\n}\n/**\n * 提取并转换 JSON 数据中的 anchor 值\n */\nfunction convertAnchor(anchor, particleOrigin) {\n if (anchor) {\n return [anchor[0] - 0.5, 0.5 - anchor[1]];\n }\n else if (particleOrigin) {\n return particleOriginTranslateMap[particleOrigin];\n }\n else {\n return [0, 0];\n }\n}\nvar particleOriginTranslateMap = (_a = {},\n _a[ParticleOrigin.PARTICLE_ORIGIN_CENTER] = [0, 0],\n _a[ParticleOrigin.PARTICLE_ORIGIN_CENTER_BOTTOM] = [0, -0.5],\n _a[ParticleOrigin.PARTICLE_ORIGIN_CENTER_TOP] = [0, 0.5],\n _a[ParticleOrigin.PARTICLE_ORIGIN_LEFT_TOP] = [-0.5, 0.5],\n _a[ParticleOrigin.PARTICLE_ORIGIN_LEFT_CENTER] = [-0.5, 0],\n _a[ParticleOrigin.PARTICLE_ORIGIN_LEFT_BOTTOM] = [-0.5, -0.5],\n _a[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_CENTER] = [0.5, 0],\n _a[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM] = [0.5, -0.5],\n _a[ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP] = [0.5, 0.5],\n _a);\n\nfunction getStandardParticleContent(particle) {\n var _a;\n var options = particle.options;\n var transform = particle.transform;\n var shape = {\n type: ShapeType.NONE,\n };\n if (particle.shape) {\n var shapeType = (_a = particle.shape.shape) === null || _a === void 0 ? void 0 : _a.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');\n shape = __assign(__assign({}, particle.shape), { type: ShapeType[shapeType] });\n if (particle.shape.upDirection) {\n var _b = __read(particle.shape.upDirection, 3), x = _b[0], y = _b[1], z = _b[2];\n if (x === 0 && y === 0 && z === 0) {\n delete shape.upDirection;\n }\n }\n }\n if (options.startTurbulence) {\n shape.turbulenceX = ensureNumberExpression(options.turbulenceX);\n shape.turbulenceY = ensureNumberExpression(options.turbulenceY);\n shape.turbulenceZ = ensureNumberExpression(options.turbulenceZ);\n }\n var emission = particle.emission;\n if (emission.bursts && emission.bursts.length > 0) {\n emission.bursts = emission.bursts.map(function (b) { return objectValueToNumber(b); });\n }\n if (emission.burstOffsets && emission.burstOffsets.length > 0) {\n emission.burstOffsets = emission.burstOffsets.map(function (b) { return objectValueToNumber(b); });\n }\n if (emission.rateOverTime) {\n emission.rateOverTime = ensureNumberExpression(emission.rateOverTime);\n }\n var ret = {\n renderer: particle.renderer,\n shape: shape,\n splits: particle.splits,\n emission: emission,\n options: {\n startLifetime: ensureNumberExpression(options.startLifetime),\n start3DSize: !!options.start3DSize,\n startSize: ensureNumberExpression(options.startSize),\n startSizeX: ensureNumberExpression(options.startSizeX),\n startSizeY: ensureNumberExpression(options.startSizeY),\n sizeAspect: ensureNumberExpression(options.sizeAspect),\n maxCount: options.maxCount,\n startDelay: ensureNumberExpression(options.startDelay),\n startColor: ensureColorExpression(options.startColor, true),\n startRotationZ: ensureNumberExpression(options.startRotation || options.startRotationZ),\n particleFollowParent: options.particleFollowParent,\n },\n };\n if (options.start3DRotation) {\n ret.options.startRotationX = ensureNumberExpression(options.startRotationX);\n ret.options.startRotationY = ensureNumberExpression(options.startRotationY);\n }\n if (particle.filter) {\n var filter_1 = {};\n forEach(particle.filter, function (val, key) {\n // @ts-expect-error\n filter_1[key] = ensureValueGetter(val);\n });\n ret.filter = filter_1;\n }\n if (transform && transform.path) {\n ret.emitterTransform = {\n path: ensureFixedVec3(transform.path),\n };\n }\n var sizeOverLifetime = particle.sizeOverLifetime;\n if (sizeOverLifetime) {\n if (sizeOverLifetime.separateAxes) {\n ret.sizeOverLifetime = {\n separateAxes: true,\n x: ensureNumberExpression(sizeOverLifetime.x),\n y: ensureNumberExpression(sizeOverLifetime.y),\n };\n }\n else {\n ret.sizeOverLifetime = {\n size: ensureNumberExpression(sizeOverLifetime.size),\n };\n }\n }\n var velocityOverLifetime = particle.velocityOverLifetime || {};\n var sol = velocityOverLifetime.speedOverLifetime;\n if (sol) {\n sol = ensureFixedNumber(sol);\n }\n else {\n sol = undefined;\n }\n ret.positionOverLifetime = {\n gravity: options.gravity,\n gravityOverLifetime: ensureFixedNumber(options.gravityModifier),\n startSpeed: ensureNumberExpression(options.startSpeed),\n speedOverLifetime: sol,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureNumberExpression(velocityOverLifetime.linearX),\n linearY: ensureNumberExpression(velocityOverLifetime.linearY),\n linearZ: ensureNumberExpression(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureNumberExpression(velocityOverLifetime.orbitalX),\n orbitalY: ensureNumberExpression(velocityOverLifetime.orbitalY),\n orbitalZ: ensureNumberExpression(velocityOverLifetime.orbitalZ),\n forceTarget: velocityOverLifetime.forceTarget,\n target: velocityOverLifetime.target,\n forceCurve: ensureFixedNumber(velocityOverLifetime.forceCurve),\n };\n deleteEmptyValue(ret.positionOverLifetime);\n var rotationOverLifetime = particle.rotationOverLifetime;\n if (rotationOverLifetime) {\n ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n z: ensureNumberExpression(rotationOverLifetime.separateAxes ? rotationOverLifetime.z : rotationOverLifetime.angularVelocity),\n };\n if (rotationOverLifetime.separateAxes) {\n ret.rotationOverLifetime.y = ensureFixedNumber(rotationOverLifetime.y);\n ret.rotationOverLifetime.x = ensureFixedNumber(rotationOverLifetime.x);\n }\n }\n var colorOverLifetime = particle.colorOverLifetime;\n if (colorOverLifetime) {\n var col = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n var textureSheetAnimation = particle.textureSheetAnimation;\n if (textureSheetAnimation) {\n ret.textureSheetAnimation = {\n row: textureSheetAnimation.row,\n col: textureSheetAnimation.col,\n total: textureSheetAnimation.total,\n animate: textureSheetAnimation.animate,\n cycles: ensureFixedNumber(textureSheetAnimation.cycles),\n animationDelay: ensureFixedNumberWithRandom(textureSheetAnimation.animationDelay, 0),\n animationDuration: ensureFixedNumberWithRandom(textureSheetAnimation.animationDuration, 0),\n };\n }\n var trials = particle.trails;\n if (trials) {\n ret.trails = {\n lifetime: ensureNumberExpression(trials.lifetime),\n dieWithParticles: trials.dieWithParticles,\n maxPointPerTrail: trials.maxPointPerTrail,\n minimumVertexDistance: trials.minimumVertexDistance,\n widthOverTrail: ensureFixedNumber(trials.widthOverTrail),\n colorOverTrail: trials.colorOverTrail && getGradientColor(trials.colorOverTrail, false),\n blending: trials.blending,\n colorOverLifetime: trials.colorOverLifetime && getGradientColor(trials.colorOverLifetime, false),\n inheritParticleColor: trials.inheritParticleColor,\n occlusion: trials.occlusion,\n transparentOcclusion: trials.transparentOcclusion,\n orderOffset: trials.orderOffset,\n sizeAffectsLifetime: trials.sizeAffectsLifetime,\n sizeAffectsWidth: trials.sizeAffectsWidth,\n texture: trials.texture,\n parentAffectsPosition: trials.parentAffectsPosition,\n opacityOverLifetime: ensureNumberExpression(trials.opacityOverLifetime),\n };\n }\n ret.trails && deleteEmptyValue(ret.trails);\n var interaction = particle.interaction;\n if (interaction) {\n ret.interaction = {\n behavior: interaction.behavior,\n radius: interaction.radius,\n multiple: interaction.multiple,\n };\n }\n return ret;\n}\n\nfunction getStandardNullContent(sprite, transform) {\n var _a;\n var opt = sprite.options;\n var velocityOverLifetime = sprite.velocityOverLifetime || {};\n var positionOverLifetime = {\n path: ensureFixedVec3((_a = sprite.transform) === null || _a === void 0 ? void 0 : _a.path),\n gravity: opt.gravity,\n gravityOverLifetime: ensureFixedNumber(opt.gravityModifier),\n direction: opt.direction,\n startSpeed: opt.startSpeed,\n asMovement: velocityOverLifetime.asMovement,\n linearX: ensureFixedNumber(velocityOverLifetime.linearX),\n linearY: ensureFixedNumber(velocityOverLifetime.linearY),\n linearZ: ensureFixedNumber(velocityOverLifetime.linearZ),\n asRotation: velocityOverLifetime.asRotation,\n orbCenter: velocityOverLifetime.orbCenter,\n orbitalX: ensureFixedNumber(velocityOverLifetime.orbitalX),\n orbitalY: ensureFixedNumber(velocityOverLifetime.orbitalY),\n orbitalZ: ensureFixedNumber(velocityOverLifetime.orbitalZ),\n speedOverLifetime: ensureFixedNumber(velocityOverLifetime.speedOverLifetime),\n };\n deleteEmptyValue(positionOverLifetime);\n var ret = {\n options: {\n startColor: ensureRGBAValue(opt.startColor),\n },\n positionOverLifetime: positionOverLifetime,\n };\n if (opt.startSize) {\n transform.scale = [opt.startSize, opt.startSize / (opt.sizeAspect || 1), 1];\n }\n if (opt.startRotation) {\n if (!transform.rotation) {\n transform.rotation = [0, 0, opt.startRotation];\n }\n else {\n transform.rotation[2] += opt.startRotation;\n }\n }\n var rotationOverLifetime = sprite.rotationOverLifetime;\n if (rotationOverLifetime) {\n var rot = ret.rotationOverLifetime = {\n separateAxes: rotationOverLifetime.separateAxes,\n asRotation: rotationOverLifetime.asRotation,\n };\n if (rot.separateAxes) {\n rot.x = ensureFixedNumber(rotationOverLifetime.x);\n rot.y = ensureFixedNumber(rotationOverLifetime.y);\n rot.z = ensureFixedNumber(rotationOverLifetime.z);\n }\n else {\n rot.z = ensureFixedNumber(rotationOverLifetime.angularVelocity);\n }\n }\n var colorOverLifetime = sprite.colorOverLifetime;\n if (colorOverLifetime) {\n var col = ret.colorOverLifetime = {\n opacity: ensureFixedNumber(colorOverLifetime.opacity),\n };\n if (colorOverLifetime.color) {\n col.color = getGradientColor(colorOverLifetime.color);\n }\n }\n var sizeOverLifetime = sprite.sizeOverLifetime;\n if (sizeOverLifetime) {\n ret.sizeOverLifetime = {\n separateAxes: sizeOverLifetime.separateAxes,\n size: ensureFixedNumber(sizeOverLifetime.size),\n x: ensureFixedNumber(sizeOverLifetime.x),\n y: ensureFixedNumber(sizeOverLifetime.y),\n z: ensureFixedNumber(sizeOverLifetime.z),\n };\n }\n return ret;\n}\nfunction getStandardSpriteContent(sprite, transform) {\n var ret = getStandardNullContent(sprite, transform);\n var texAni = sprite.textureSheetAnimation;\n if (texAni) {\n ret.textureSheetAnimation = {\n row: texAni.row,\n col: texAni.col,\n total: texAni.total || undefined,\n animate: texAni.animate,\n };\n }\n ret.renderer = sprite.renderer;\n if (sprite.splits) {\n ret.splits = sprite.splits;\n }\n if (sprite.interaction) {\n ret.interaction = sprite.interaction;\n }\n return ret;\n}\n\nfunction getStandardInteractContent(ui) {\n var options = ui.options;\n var option;\n switch (options.type) {\n case 'click': {\n option = {\n type: InteractType.CLICK,\n showPreview: options.showPreview,\n previewColor: options.previewColor && ensureRGBAValue(options.previewColor),\n behavior: options.behavior || InteractBehavior.NOTIFY,\n };\n break;\n }\n case 'drag': {\n option = {\n type: InteractType.DRAG,\n enableInEditor: !!options.enableInEditor,\n dxRange: options.dxRange,\n dyRange: options.dyRange,\n target: options.target,\n };\n break;\n }\n case 'message': {\n option = {\n type: InteractType.MESSAGE,\n };\n break;\n }\n }\n var ret = {\n // @ts-expect-error\n options: option,\n };\n return ret;\n}\n\nfunction getStandardCameraContent(model) {\n var _a, _b;\n var opt = model.options;\n var ret = {\n options: {\n fov: opt.fov,\n far: opt.far,\n near: opt.near,\n clipMode: opt.clipMode,\n },\n };\n var velocityOverLifetime = model.velocityOverLifetime;\n if (velocityOverLifetime || ((_a = model.transform) === null || _a === void 0 ? void 0 : _a.path)) {\n var positionOverLifetime = {\n path: ensureFixedVec3((_b = model.transform) === null || _b === void 0 ? void 0 : _b.path),\n linearX: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateX),\n linearY: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateY),\n linearZ: ensureFixedNumber(velocityOverLifetime === null || velocityOverLifetime === void 0 ? void 0 : velocityOverLifetime.translateZ),\n };\n deleteEmptyValue(positionOverLifetime);\n ret.positionOverLifetime = positionOverLifetime;\n }\n var rol = model.rotationOverLifetime;\n if (rol) {\n var rotationOverLifetime = {\n separateAxes: rol.separateAxes,\n x: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateX),\n y: ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateY),\n z: rol.separateAxes ? ensureFixedNumber(rol === null || rol === void 0 ? void 0 : rol.rotateZ) : ensureFixedNumber(rol.rotation),\n };\n deleteEmptyValue(rotationOverLifetime);\n ret.rotationOverLifetime = rotationOverLifetime;\n }\n return ret;\n}\n\nvar convertParams = [\n 'strength',\n 'bloomAddon',\n 'colorAddon',\n 'period',\n 'waveMovement',\n 'colorThreshold',\n 'xOpacity',\n 'yOpacity',\n 'feather',\n];\nvar pathParams = [\n 'path', 'position',\n];\nfunction getStandardFilterContent(filter) {\n var ret = {};\n forEach(filter, function (val, key) {\n if (convertParams.includes(key)) {\n ret[key] = ensureFixedNumber(val);\n }\n else if (pathParams.includes(key)) {\n ret[key] = ensureFixedVec3(val);\n }\n else {\n ret[key] = val;\n }\n });\n return ret;\n}\n\n/**\n * 2.1 以下版本数据适配(mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配)\n */\nfunction version21Migration(json) {\n json.compositions.forEach(function (composition) {\n composition.items.forEach(function (item) {\n if (item.type === ItemType.null) {\n if (item.endBehavior === ItemEndBehavior.destroy) {\n item.endBehavior = ItemEndBehavior.freeze;\n }\n }\n });\n });\n json.version = '2.1';\n return json;\n}\n/**\n * 2.2 以下版本数据适配(mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配)\n */\nfunction version22Migration(json) {\n var _a;\n var singleVersion = (_a = json.version) === null || _a === void 0 ? void 0 : _a.split('.');\n if (!singleVersion || Number(singleVersion[0]) > 2 || (Number(singleVersion[0]) === 2 && Number(singleVersion[1]) >= 2)) {\n return json;\n }\n json.compositions.forEach(function (composition) {\n composition.items.forEach(function (item) {\n if (item.type === ItemType.mesh || item.type === ItemType.light) {\n item.endBehavior = item.endBehavior === 1 ? ItemEndBehavior.destroy : item.endBehavior;\n }\n });\n });\n return json;\n}\n/**\n * 3.0 以下版本数据适配(runtime 2.0及以上版本支持)\n */\nfunction version30Migration(json) {\n var e_1, _a;\n var _b, _c, _d, _e;\n var result = Object.assign({}, json, {\n items: [],\n components: [],\n materials: [],\n shaders: [],\n geometries: [],\n });\n // 兼容老版本数据中不存在textures的情况\n (_b = result.textures) !== null && _b !== void 0 ? _b : (result.textures = []);\n result.textures.forEach(function (textureOptions) {\n Object.assign(textureOptions, {\n id: generateGUID(),\n dataType: DataType.Texture,\n });\n });\n if (result.textures.length < result.images.length) {\n for (var i = result.textures.length; i < result.images.length; i++) {\n result.textures.push({\n //@ts-expect-error\n id: generateGUID(),\n dataType: DataType.Texture,\n source: i,\n flipY: true,\n });\n }\n }\n var _loop_1 = function (composition) {\n var e_2, _h, e_3, _j;\n // composition 的 endbehaviour 兼容\n if (composition.endBehavior === END_BEHAVIOR_PAUSE_AND_DESTROY || composition.endBehavior === END_BEHAVIOR_PAUSE) {\n composition.endBehavior = END_BEHAVIOR_FREEZE;\n }\n var itemGuidMap = {};\n try {\n for (var _k = (e_2 = void 0, __values(composition.items)), _l = _k.next(); !_l.done; _l = _k.next()) {\n var item = _l.value;\n itemGuidMap[item.id] = generateGUID();\n // TODO: 编辑器测试用,上线后删除\n //@ts-expect-error\n item.oldId = item.id;\n item.id = itemGuidMap[item.id];\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_l && !_l.done && (_h = _k.return)) _h.call(_k);\n }\n finally { if (e_2) throw e_2.error; }\n }\n composition.items.forEach(function (item, index) {\n if (item.parentId) {\n if (item.parentId.includes('^')) {\n var parentId = (item.parentId).split('^')[0];\n var nodeId = (item.parentId).split('^')[1];\n item.parentId = itemGuidMap[parentId] + '^' + nodeId;\n }\n else {\n item.parentId = itemGuidMap[item.parentId];\n }\n }\n // @ts-expect-error fix item type\n result.items.push(item);\n // @ts-expect-error fix item type\n composition.items[index] = { id: item.id };\n });\n try {\n for (var _m = (e_3 = void 0, __values(result.items)), _o = _m.next(); !_o.done; _o = _m.next()) {\n var item = _o.value;\n // 原 texture 索引转为统一 guid 索引\n if (item.content) {\n if (item.content.renderer) {\n if (item.content.renderer.texture !== undefined) {\n var oldTextureId = item.content.renderer.texture;\n //@ts-expect-error\n item.content.renderer.texture = { id: result.textures[oldTextureId].id };\n }\n }\n if (item.content.trails) {\n if (item.content.trails.texture !== undefined) {\n var oldTextureId = item.content.trails.texture;\n //@ts-expect-error\n item.content.trails.texture = { id: result.textures[oldTextureId].id };\n }\n }\n }\n // item 的 transform 属性由数组转为 {x:n, y:n, z:n}\n if (item.transform) {\n //@ts-expect-error\n var position = __spreadArray([], __read((_c = item.transform.position) !== null && _c !== void 0 ? _c : [0, 0, 0]), false);\n //@ts-expect-error\n var rotation = __spreadArray([], __read((_d = item.transform.rotation) !== null && _d !== void 0 ? _d : [0, 0, 0]), false);\n //@ts-expect-error\n var scale = __spreadArray([], __read((_e = item.transform.scale) !== null && _e !== void 0 ? _e : [1, 1, 1]), false);\n Object.assign(item, {\n transform: {\n position: { x: position[0], y: position[1], z: position[2] },\n rotation: { x: rotation[0], y: rotation[1], z: rotation[2] },\n scale: { x: scale[0], y: scale[1], z: scale[0] },\n },\n });\n // sprite 的 scale 转为 size\n if (item.type === ItemType.sprite) {\n item.transform.size = { x: scale[0], y: scale[1] };\n item.transform.scale = { x: 1, y: 1, z: 1 };\n }\n // sprite 的 anchor 修正\n if (item.type === ItemType.sprite) {\n var content = item.content;\n if (!content.renderer) {\n content.renderer = {};\n }\n var renderer = content.renderer;\n var realAnchor = convertAnchor(renderer.anchor, renderer.particleOrigin);\n var startSize = item.transform.size;\n // 兼容旧JSON(anchor和particleOrigin可能同时存在)\n if (!renderer.anchor && renderer.particleOrigin !== undefined) {\n //@ts-expect-error\n item.transform.position.x += -realAnchor[0] * startSize.x;\n //@ts-expect-error\n item.transform.position.y += -realAnchor[1] * startSize.y;\n }\n //@ts-expect-error\n item.transform.anchor = { x: realAnchor[0] * startSize.x, y: realAnchor[1] * startSize.y };\n }\n }\n if (item.type === ItemType.particle) {\n var content = item.content;\n if (!content.renderer) {\n content.renderer = {};\n }\n var renderer = content.renderer;\n content.renderer.anchor = convertAnchor(renderer.anchor, renderer.particleOrigin);\n }\n // 动画数据转化 TODO: 动画数据移到 TimelineComponentData\n item.content.tracks = [];\n var tracks = item.content.tracks;\n if (item.type !== ItemType.particle) {\n tracks.push({\n clips: [\n {\n dataType: 'TransformAnimationPlayableAsset',\n animationClip: {\n sizeOverLifetime: item.content.sizeOverLifetime,\n rotationOverLifetime: item.content.rotationOverLifetime,\n positionOverLifetime: item.content.positionOverLifetime,\n },\n },\n ],\n });\n }\n if (item.type === ItemType.sprite) {\n tracks.push({\n clips: [\n {\n dataType: 'SpriteColorAnimationPlayableAsset',\n animationClip: {\n colorOverLifetime: item.content.colorOverLifetime,\n startColor: item.content.options.startColor,\n },\n },\n ],\n });\n }\n // gizmo 的 target id 转换为新的 item guid\n if (item.content.options.target) {\n item.content.options.target = itemGuidMap[item.content.options.target];\n }\n // item 的 content 转为 component data 加入 JSONScene.components\n var uuid = generateGUID();\n if (item.type === ItemType.sprite) {\n item.components = [];\n result.components.push(item.content);\n item.content.id = uuid;\n item.content.dataType = DataType.SpriteComponent;\n item.content.item = { id: item.id };\n item.dataType = DataType.VFXItemData;\n //@ts-expect-error\n item.components.push({ id: item.content.id });\n }\n else if (item.type === ItemType.particle) {\n item.components = [];\n result.components.push(item.content);\n item.content.id = uuid;\n item.content.dataType = DataType.ParticleSystem;\n item.content.item = { id: item.id };\n item.dataType = DataType.VFXItemData;\n //@ts-expect-error\n item.components.push({ id: item.content.id });\n }\n else if (item.type === ItemType.mesh) {\n item.components = [];\n result.components.push(item.content);\n item.content.id = uuid;\n item.content.dataType = DataType.MeshComponent;\n item.content.item = { id: item.id };\n item.dataType = DataType.VFXItemData;\n //@ts-expect-error\n item.components.push({ id: item.content.id });\n }\n else if (item.type === ItemType.skybox) {\n item.components = [];\n result.components.push(item.content);\n item.content.id = uuid;\n item.content.dataType = DataType.SkyboxComponent;\n item.content.item = { id: item.id };\n item.dataType = DataType.VFXItemData;\n //@ts-expect-error\n item.components.push({ id: item.content.id });\n }\n else if (item.type === ItemType.light) {\n item.components = [];\n result.components.push(item.content);\n item.content.id = uuid;\n item.content.dataType = DataType.LightComponent;\n item.content.item = { id: item.id };\n item.dataType = DataType.VFXItemData;\n //@ts-expect-error\n item.components.push({ id: item.content.id });\n }\n else if (item.type === 'camera') {\n item.components = [];\n result.components.push(item.content);\n item.content.id = uuid;\n item.content.dataType = DataType.CameraComponent;\n item.content.item = { id: item.id };\n item.dataType = DataType.VFXItemData;\n //@ts-expect-error\n item.components.push({ id: item.content.id });\n }\n else if (item.type === ItemType.tree) {\n item.components = [];\n result.components.push(item.content);\n item.content.id = uuid;\n item.content.dataType = DataType.TreeComponent;\n item.content.item = { id: item.id };\n item.dataType = DataType.VFXItemData;\n //@ts-expect-error\n item.components.push({ id: item.content.id });\n }\n else if (item.type === ItemType.interact) {\n item.components = [];\n result.components.push(item.content);\n item.content.id = uuid;\n item.content.dataType = DataType.InteractComponent;\n item.content.item = { id: item.id };\n item.dataType = DataType.VFXItemData;\n //@ts-expect-error\n item.components.push({ id: item.content.id });\n }\n else if (item.type === ItemType.camera) {\n item.components = [];\n result.components.push(item.content);\n item.content.id = uuid;\n item.content.dataType = DataType.CameraController;\n item.content.item = { id: item.id };\n item.dataType = DataType.VFXItemData;\n //@ts-expect-error\n item.components.push({ id: item.content.id });\n }\n else if (item.type === ItemType.text) {\n item.components = [];\n result.components.push(item.content);\n item.content.id = uuid;\n item.content.dataType = DataType.TextComponent;\n item.content.item = { id: item.id };\n item.dataType = DataType.VFXItemData;\n //@ts-expect-error\n item.components.push({ id: item.content.id });\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_o && !_o.done && (_j = _m.return)) _j.call(_m);\n }\n finally { if (e_3) throw e_3.error; }\n }\n };\n try {\n // 更正Composition.endBehavior\n for (var _f = __values(json.compositions), _g = _f.next(); !_g.done; _g = _f.next()) {\n var composition = _g.value;\n _loop_1(composition);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n }\n finally { if (e_1) throw e_1.error; }\n }\n result.version = '3.0';\n return result;\n}\n\nvar v0 = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(\\w+)\\.\\d+)?$/;\nvar standardVersion = /^(\\d+)\\.(\\d+)$/;\nvar reverseParticle = false;\nfunction getStandardJSON(json) {\n var _a, _b;\n if (!json || typeof json !== 'object') {\n throw Error('expect a json object');\n }\n // 修正老版本数据中,meshItem 以及 lightItem 结束行为错误问题\n version22Migration(json);\n if (v0.test(json.version)) {\n reverseParticle = ((_a = (/^(\\d+)/).exec(json.version)) === null || _a === void 0 ? void 0 : _a[0]) === '0';\n return version30Migration(version21Migration(getStandardJSONFromV0(json)));\n }\n var mainVersion = (_b = standardVersion.exec(json.version)) === null || _b === void 0 ? void 0 : _b[1];\n if (mainVersion) {\n if (Number(mainVersion) < 3) {\n return version30Migration(version21Migration(json));\n }\n return json;\n }\n throw Error('invalid json version ' + json.version);\n}\nvar currentVersion = '1.0';\nfunction getStandardJSONFromV0(json) {\n var _a, _b;\n currentVersion = '1.0';\n var plugins = json.plugins || [];\n if ((_a = json.bins) === null || _a === void 0 ? void 0 : _a.length) {\n currentVersion = '1.3';\n }\n var requires = (json.requires || []).slice();\n var images = json.images.map(function (img, index) { return getStandardImage(img, index, json.imageTags || []); });\n var textures = json.textures || images.map(function (img, i) { return ({ source: i, flipY: true }); });\n var ret = {\n plugins: plugins,\n shapes: json.shapes || [],\n type: 'ge',\n version: currentVersion,\n playerVersion: (_b = json.playerVersion) !== null && _b !== void 0 ? _b : {\n web: '',\n native: '',\n },\n compositionId: json.compositionId + '',\n compositions: json.compositions.map(function (comp) { return getStandardComposition(comp, { plugins: plugins, requires: requires }); }),\n images: images,\n imgUsage: json._imgs,\n binUsage: json.binUsage,\n spines: json.spines,\n requires: json.requires,\n textures: textures,\n bins: (json.bins || []).slice(),\n };\n if (json._textures) {\n ret._textures = json._textures;\n }\n return ret;\n}\nfunction getStandardImage(image, index, imageTags) {\n var renderLevel = imageTags[index];\n var oriY = image.oriY;\n if (typeof image === 'string') {\n return {\n renderLevel: renderLevel,\n url: image,\n oriY: oriY,\n };\n }\n else if (image.template) {\n return {\n url: image.url,\n template: image.template,\n webp: image.webp,\n renderLevel: renderLevel,\n oriY: oriY,\n };\n }\n else if (image.compressed) {\n return {\n url: image.url,\n oriY: oriY,\n compressed: {\n astc: image.compressed.android,\n pvrtc: image.compressed.iOS,\n },\n webp: image.webp,\n renderLevel: renderLevel,\n };\n }\n else if (image.url) {\n return {\n url: image.url,\n type: image.type,\n webp: image.webp,\n renderLevel: renderLevel,\n oriY: oriY,\n loop: image.loop,\n };\n }\n else if (image && image.sourceType) {\n return image;\n }\n throw Error('invalid image type');\n}\nfunction getStandardComposition(composition, opt) {\n var _a;\n if (opt === void 0) { opt = {}; }\n var ret = {\n id: composition.id + '',\n camera: Object.assign({ clipMode: CAMERA_CLIP_MODE_NORMAL }, composition.camera),\n duration: composition.duration,\n endBehavior: composition.endBehavior,\n items: composition.items.map(function (item) { return getStandardItem(item, opt); }),\n name: composition.name,\n };\n var startTime = composition.startTime || composition.st;\n if (startTime) {\n ret.startTime = startTime;\n }\n var previewSize = (_a = composition.meta) === null || _a === void 0 ? void 0 : _a.previewSize;\n if (previewSize && previewSize[0] === previewSize[1] && previewSize[0] === 0) {\n previewSize = undefined;\n }\n if (previewSize) {\n ret.previewSize = previewSize;\n }\n return ret;\n}\nvar tempQuat = [0, 0, 0, 1];\nvar stdAnchor = 0.5;\nfunction getStandardItem(item, opt) {\n var _a, _b, _c;\n if (opt === void 0) { opt = {}; }\n var type = ItemType.base;\n var transform;\n var originContent;\n var content;\n var endBehavior = item.endBehavior;\n var renderLevel;\n var pluginName;\n var duration = NaN;\n var pn;\n if (item.content) {\n type = item.type || ItemType.plugin;\n pn = item.pn;\n pluginName = item.pluginName;\n content = item.content;\n originContent = item.content;\n if (isNaN(pn) && !pluginName) {\n pluginName = content.options.type;\n }\n if (item.duration) {\n duration = item.duration;\n }\n transform = item.transform || getTransform(originContent.transform);\n if (type === ItemType.filter) {\n if (currentVersion < '1.1') {\n currentVersion = '1.1';\n }\n content = getStandardSpriteContent(originContent, transform);\n // @ts-expect-error\n content.filter = getStandardFilterContent(originContent.filter);\n }\n }\n else if (item.particle) {\n type = ItemType.particle;\n originContent = item.particle;\n transform = getTransform(originContent.transform, reverseParticle, true);\n content = getStandardParticleContent(originContent);\n }\n else if (item.sprite) {\n type = ItemType.sprite;\n originContent = item.sprite;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardSpriteContent(originContent, transform);\n }\n else if (item.cal) {\n type = ItemType.null;\n originContent = item.cal;\n transform = getTransform(originContent.transform, false, true);\n content = getStandardNullContent(originContent, transform);\n }\n else if (item.ui) {\n type = ItemType.interact;\n originContent = item.ui;\n transform = getTransform(originContent.transform);\n content = getStandardInteractContent(originContent);\n transform.scale = [originContent.options.width || 1, originContent.options.height || 1, 1];\n }\n else if (item.model) {\n originContent = item.model;\n if (item.model.options.type === 1) {\n type = ItemType.camera;\n transform = getTransform(originContent.transform);\n content = getStandardCameraContent(originContent);\n }\n }\n if ((_a = content.renderer) === null || _a === void 0 ? void 0 : _a.anchor) {\n var anchor = new Float32Array(content.renderer.anchor);\n if (anchor[0] == stdAnchor && anchor[1] == stdAnchor) {\n delete content.renderer.anchor;\n }\n else if (opt.requires) {\n arrAdd(opt.requires, 'anchor');\n }\n }\n if (originContent) {\n var looping = (_b = originContent.options) === null || _b === void 0 ? void 0 : _b.looping;\n if (looping) {\n if (Array.isArray(looping)) {\n endBehavior = looping[1] ? ItemEndBehavior.loop : ItemEndBehavior.destroy;\n }\n else {\n endBehavior = ItemEndBehavior.loop;\n }\n }\n else {\n endBehavior = endBehavior || ((_c = originContent === null || originContent === void 0 ? void 0 : originContent.options) === null || _c === void 0 ? void 0 : _c.endBehavior) || ItemEndBehavior.destroy;\n }\n if (originContent.options.renderLevel) {\n renderLevel = originContent.options.renderLevel;\n }\n if (isNaN(duration)) {\n duration = originContent.options.duration;\n }\n }\n var ret = {\n type: type,\n name: item.name,\n delay: item.delay,\n duration: duration,\n id: item.id + '',\n // @ts-expect-error\n transform: transform,\n endBehavior: endBehavior,\n // @ts-expect-error\n renderLevel: renderLevel,\n content: content,\n };\n // @ts-expect-error\n if (pluginName) {\n if (opt.plugins) {\n arrAdd(opt.plugins, pluginName);\n ret.pn = opt.plugins.indexOf(pluginName);\n }\n else {\n ret.pluginName = pluginName;\n }\n // @ts-expect-error\n }\n else if (Number.isInteger(pn)) {\n // @ts-expect-error\n ret.pn = pn;\n }\n if (item.parentId) {\n ret.parentId = item.parentId + '';\n }\n return ret;\n function getTransform(originTransform, inverseRotation, changeOrder) {\n if (originTransform) {\n var transform_1 = {};\n var rotation = originTransform.rotation;\n if (rotation) {\n if (inverseRotation) {\n transform_1.rotation = [-rotation[0], -rotation[1], -rotation[2]];\n }\n else {\n transform_1.rotation = [rotation[0], rotation[1], rotation[2]];\n }\n if (changeOrder) {\n var q = quatFromXYZRotation(tempQuat, transform_1.rotation[0], transform_1.rotation[1], transform_1.rotation[2]);\n transform_1.rotation = rotationZYXFromQuat([], q);\n }\n }\n var position = originTransform.position;\n if (position) {\n transform_1.position = originTransform.position;\n }\n if (Array.isArray(originTransform.scale)) {\n transform_1.scale = [originTransform.scale[0] || 1, originTransform.scale[1] || 1, originTransform.scale[2] || 1];\n }\n return transform_1;\n }\n return {};\n }\n}\n\nexport { arrAdd, colorToArr, convertAnchor, deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom, ensureFixedVec3, ensureGradient, ensureNumberExpression, ensureRGBAValue, ensureValueGetter, forEach, generateGUID, getGradientColor, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, normalizeColor, objectValueToNumber, parsePercent, particleOriginTranslateMap, quatFromXYZRotation, rotationZYXFromQuat };\n//# sourceMappingURL=fallback.mjs.map\n"],"names":["getRandomValues","rnds8","rng","byteToHex","unsafeStringify","randomUUID","v4","native","clamp","__read","this","__spreadArray","Sphere","RenderLevel","BlendingMode","SideMode","MaskMode","ShapeType","PluginType","InteractType","InteractBehavior","ItemType","RenderMode","ParticleOrigin","END_BEHAVIOR_DESTROY","END_BEHAVIOR_PAUSE","END_BEHAVIOR_FORWARD","END_BEHAVIOR_PAUSE_AND_DESTROY","END_BEHAVIOR_FREEZE","END_BEHAVIOR_RESTART","END_BEHAVIOR_DESTROY_CHILDREN","CAMERA_CLIP_MODE_VERTICAL","CAMERA_CLIP_MODE_NORMAL","CameraClipMode","CompositionEndBehavior","ValueType","BezierKeyframeType","ItemEndBehavior","ParentItemEndBehavior","ParticleInteractionBehavior","ShapeArcMode","LightType","ModelBoundingType","CameraType","MaterialType","MaterialBlending","RenderMode3D","TextOverflow","TextBaseline","TextAlignment","TextWeight","FontStyle","DataType","_a","convertAnchor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA,IAAIA,iBAAe,CAAC;AACpB,MAAMC,OAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAClB,SAASC,KAAG,GAAG;AAC9B;AACA,EAAE,IAAI,CAACF,iBAAe,EAAE;AACxB;AACA,IAAIA,iBAAe,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrH;AACA,IAAI,IAAI,CAACA,iBAAe,EAAE;AAC1B,MAAM,MAAM,IAAI,KAAK,CAAC,0GAA0G,CAAC,CAAC;AAClI,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAOA,iBAAe,CAACC,OAAK,CAAC,CAAC;AAChC;;AChBA;AACA;AACA;AACA;AACA;AACA,MAAME,WAAS,GAAG,EAAE,CAAC;AACrB;AACA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;AAC9B,EAAEA,WAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AACD;AACO,SAASC,iBAAe,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;AACjD;AACA;AACA,EAAE,OAAOD,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAGA,WAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACrf;;AChBA,MAAME,YAAU,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxG,eAAe;AACf,cAAEA,YAAU;AACZ,CAAC;;ACCD,SAASC,IAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE;AAClC,EAAE,IAAIC,QAAM,CAAC,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AAC7C,IAAI,OAAOA,QAAM,CAAC,UAAU,EAAE,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,IAAIL,KAAG,GAAG,CAAC;AACxD;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAClC;AACA,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;AACzB;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;AACjC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAOE,iBAAe,CAAC,IAAI,CAAC,CAAC;AAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BO,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACtB,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AAC5B,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;AAC5B,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,SAAS,MAAM,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;AACnD,CAAC;AACM,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACzH,CAAC;AACD;AACO,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjG;AACO,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9D,IAAI,QAAQ,GAAG,UAAU,OAAO,EAAE,EAAE,OAAO,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;AAChE,IAAI,QAAQ,GAAG,UAAU,OAAO,EAAE,EAAE,OAAO,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;AAChE,SAASI,OAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AACvC,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;AAChD,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC;AAC/C,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7C,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7C,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACnD;;ACrBA;AACA;AACA;AACO,IAAI,OAAO,kBAAkB,YAAY;AAChD;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC5C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC5C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,GAAG,EAAE;AACrD,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AACrB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC9D,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE;AAChD,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAC1C,QAAQ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE;AAC3D,QAAQ,QAAQ,KAAK;AACrB,YAAY,KAAK,CAAC;AAClB,gBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/B,gBAAgB,MAAM;AACtB,YAAY,KAAK,CAAC;AAClB,gBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/B,gBAAgB,MAAM;AACtB,YAAY,SAAS,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE;AACpD,QAAQ,QAAQ,KAAK;AACrB,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,SAAS,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;AAC7C,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAC1D,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AAClD,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAC/D,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AAClD,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAC/D,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE;AAChD,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;AAC3C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;AACxC,QAAQ,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/B,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AACzC,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACnC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AACzC,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACnC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;AAClD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAC1C,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACzC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAC1C,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;AACxC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AAClD,QAAQ,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC9C,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,MAAM,EAAE;AACpD,QAAQ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE;AACrD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC7C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC7C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;AAC7D,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;AAC9C,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;AAC9C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;AAC3C,QAAQ,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE;AAC9C,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,CAAC,EAAE;AACrD,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACjC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE;AAC5C,QAAQ,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,GAAG,GAAG,aAAa,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5C,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACxD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC5C,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACtD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/B,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAChD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACjD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzD,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACzC,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,EAAE,CAAC;;ACxdJ;AACA;AACA;AACO,IAAI,OAAO,kBAAkB,YAAY;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9B,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC/C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC5C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,GAAG,EAAE;AACrD,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AACrB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC9D,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE;AAC9C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAC1C,QAAQ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE;AAC3D,QAAQ,QAAQ,KAAK;AACrB,YAAY,KAAK,CAAC;AAClB,gBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/B,gBAAgB,MAAM;AACtB,YAAY,KAAK,CAAC;AAClB,gBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/B,gBAAgB,MAAM;AACtB,YAAY,KAAK,CAAC;AAClB,gBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/B,gBAAgB,MAAM;AACtB,YAAY,SAAS,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE;AACpD,QAAQ,QAAQ,KAAK;AACrB,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,SAAS,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;AAC7C,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAC1D,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,KAAK,EAAE,CAAC,EAAE;AAC5D,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AAClD,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAC/D,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AAClD,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAC/D,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE;AAChD,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;AAC3C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;AACxC,QAAQ,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACxC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AACzC,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACnC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AACzC,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACnC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;AAClD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAC1C,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACzC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAC1C,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;AACxC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AAClD,QAAQ,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACnE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC9C,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,MAAM,EAAE;AACpD,QAAQ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE;AACrD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC7C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC7C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC7C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;AAC7D,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;AAC9C,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;AAC9C,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;AAC9C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE;AAC/C,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAC5D,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClD,QAAQ,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACnC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,MAAM,EAAE;AAClD;AACA;AACA,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5E,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE;AAC9C,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,CAAC,EAAE;AACrD,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC3C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE;AAC5C,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAClE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,GAAG,GAAG,aAAa,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACtD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC9E,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC5C,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC9C,QAAQ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACtD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/B,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACnC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE;AACzD,QAAQ,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE;AAC1D,QAAQ,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE;AACtD,QAAQ,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE;AAC5D,QAAQ,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE;AAChE,QAAQ,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACzC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAChD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACjD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzD,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7C,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9C,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,EAAE,CAAC;;AC1lBJ;AACA;AACA;AACO,IAAI,UAAU,kBAAkB,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrD,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;AACzD,QAAQ,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACjC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AACnE,QAAQ,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;AACpC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACrC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACjE,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,CAAC,EAAE;AAC9D;AACA;AACA,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC5B,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACzB,QAAQ,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACpC,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB,YAAY,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AACjD,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,SAAS;AACT,aAAa,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE;AACzC,YAAY,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1B,SAAS;AACT,aAAa,IAAI,GAAG,GAAG,GAAG,EAAE;AAC5B,YAAY,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1B,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE;AAClE;AACA,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE;AAChC,YAAY,CAAC,GAAG,CAAC,CAAC;AAClB,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACrD,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,gBAAgB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAChC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3B,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3B,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,gBAAgB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAChC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3B,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACnD,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACnD,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACnD,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAChC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE;AACpD,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACxB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAC7C,QAAQ,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;AACpD,QAAQ,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,OAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE;AAC5D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,KAAK,KAAK,CAAC,EAAE;AACzB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;AAChD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC9C,QAAQ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAChC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC9C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AACjD,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AAC5C,QAAQ,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AACrD,QAAQ,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACrF,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC9C,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAChG,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AACjD,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC9B,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE;AACrB,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,SAAS;AACT,aAAa;AACb,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAChC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAChC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAChC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAChC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AACrD,QAAQ,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE;AACvD,QAAQ,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AACtE;AACA,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1B,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1B,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1B,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1B,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/D,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/D,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/D,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/D,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,CAAC,EAAE;AACrD,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE;AACrB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE;AACrB,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChE,QAAQ,IAAI,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACjF,QAAQ,IAAI,YAAY,GAAG,CAAC,EAAE;AAC9B,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,YAAY,GAAG,CAAC,YAAY,CAAC;AACzC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,YAAY,IAAI,GAAG,EAAE;AACjC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,IAAI,eAAe,GAAG,GAAG,GAAG,YAAY,GAAG,YAAY,CAAC;AAChE,QAAQ,IAAI,eAAe,IAAI,MAAM,CAAC,OAAO,EAAE;AAC/C,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACxC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACxC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACxC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACxC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;AAC7B,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtD,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC/D,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,YAAY,CAAC;AAClE,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,YAAY,CAAC;AAC5D,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAChD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;AACjE,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE;AAC3D,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpE,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC7C,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC7C,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC7C,QAAQ,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC9C,QAAQ,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3D,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AACzD,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AACzD,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AACzD,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,UAAU,EAAE;AACxD,QAAQ,OAAO,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACtC,eAAe,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACtC,eAAe,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACtC,eAAe,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC/C,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,GAAG,EAAE;AACpD,QAAQ,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACvD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;AACpD,QAAQ,OAAO,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC7C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,GAAG,EAAE;AACpD,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;AAC5C,QAAQ,OAAO,IAAI,UAAU,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACpD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AACtD,QAAQ,OAAO,IAAI,UAAU,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACpD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,OAAO,IAAI,UAAU,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,kBAAkB,GAAG,UAAU,CAAC,EAAE;AACjD,QAAQ,OAAO,IAAI,UAAU,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACzD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE;AACrD,QAAQ,OAAO,IAAI,UAAU,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7D,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AACxC,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC,EAAE,CAAC;;AC5eJ,IAAIC,QAAM,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE,CAAC,EAAE;AACtD,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;AAC3C,YAAY;AACZ,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,SAAS;AACT,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACzC,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AACF,IAAIC,eAAa,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,aAAa,KAAK,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9E,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzF,QAAQ,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;AAChC,YAAY,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAIF;AACA;AACA;AACO,IAAI,OAAO,kBAAkB,YAAY;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACrG,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACxC,QAAQ,IAAI,CAAC,QAAQ,GAAG;AACxB,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9B,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9B,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9B,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9B,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACtH,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACtI,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACvE,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACxH,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE;AACpD,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrG,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC9D,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACrC,YAAY,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9D,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,KAAK,EAAE;AAC1D,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,KAAK,EAAE;AAC1D,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,KAAK,EAAE;AAC1D,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AACnE;AACA,QAAQ,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;AACjC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,QAAQ,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpL,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;AACtD,QAAQ,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE;AAC1D,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACpE,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9H,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC5C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACrC,YAAY,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;AAC7C,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;AAC/C,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACpE,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACpE,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACrE,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACtE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAC1C,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjI,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE;AAC9C,QAAQ,IAAI,CAAC,QAAQ,GAAGC,eAAa,CAAC,EAAE,EAAEF,QAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;AACrE,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACxD,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzH,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;AAC1D,QAAQ,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;AAClC,QAAQ,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;AAClC,QAAQ,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;AAClC,QAAQ,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACxC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;AACvB,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;AACvB,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACtB,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,KAAK,EAAE,CAAC,EAAE;AAC5D,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAQ,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;AAChC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACrC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AAClD,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACzC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAC1C,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,aAAa;AACb,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtD,SAAS;AACT,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE;AACpD,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAChE,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAQ,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;AAChC,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAA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AQ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7D,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/D,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5H,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5H,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5H,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5H,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAChE,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;AACvB,YAAY,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;AAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;AAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;AAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AACpI,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,G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,CAAC;AAClD,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAClD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;AAChD,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,QAAQ,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7C,YAAY,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACzC,YAAY,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE;AAC3C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxC,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxC,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxC,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACpD,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;AACvB,YAAY,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;AAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AAChD,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AAChD,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;AAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AAChD,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AAChD,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;AAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AAChD,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AAChD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC9C,QAAQ,IAAI,CAAC,CAAC;AACd,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE;AACzD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAQ,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3D,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE;AAC1D,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;AACvD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,MAAM,EAAE;AACjD,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAQ,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpC,YAAY,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACxC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC5C,QAAQ,OAAOE,eAAa,CAAC,EAAE,EAAEF,QAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACtD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,YAAY,GAAG,YAAY;AACvC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,iBAAiB,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtD,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE;AACvC,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACjD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE;AAC7C,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACrD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,gBAAgB,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACtF,QAAQ,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxE,KAAK,CAAC;AACN,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,EAAE,CAAC;;AC9eJ;AACA;AACA;AACO,IAAI,GAAG,kBAAkB,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE;AACpC,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE;AACzD,QAAQ,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE;AAC5D;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AACpC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AACvC;AACA,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;AACvD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE;AACrD,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;AACvD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACtC,QAAQ,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACpD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE;AAC5C,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;AACnD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE;AACxC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE;AACzC,QAAQ,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;AAC5C,QAAQ,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,QAAQ,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACtD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE;AAC5C,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC1F,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE;AAC7C,QAAQ,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;AACrD,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,QAAQ,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAChE,QAAQ,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACnE,QAAQ,IAAI,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;AACrE,QAAQ,IAAI,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;AACrE,QAAQ,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACnD,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,OAAO,IAAI,CAAC,EAAE;AAC1B,YAAY,IAAI,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC1C,YAAY,IAAI,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC1C,SAAS;AACT,aAAa;AACb,YAAY,IAAI,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC1C,YAAY,IAAI,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,CAAC,EAAE;AAC1B,YAAY,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC3C,YAAY,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC3C,SAAS;AACT,aAAa;AACb,YAAY,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC3C,YAAY,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE;AAC9C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3C,YAAY,IAAI,GAAG,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3C,YAAY,IAAI,GAAG,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3C,YAAY,IAAI,GAAG,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3C,YAAY,IAAI,GAAG,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,CAAC,EAAE;AAC1B,YAAY,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC3C,YAAY,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC3C,SAAS;AACT,aAAa;AACb,YAAY,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC3C,YAAY,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE;AAC9C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3C,YAAY,IAAI,GAAG,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3C,YAAY,IAAI,GAAG,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;AACtB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE;AACzD,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,QAAQ,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AACtC,QAAQ,IAAI,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrD,QAAQ,IAAI,WAAW,KAAK,CAAC,EAAE;AAC/B;AACA,YAAY,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACzD,YAAY,IAAI,GAAG,KAAK,CAAC,EAAE;AAC3B,gBAAgB,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;AACpD,gBAAgB,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,aAAa;AACb;AACA,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;AACpE;AACA,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AACpD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,MAAM,EAAE,GAAG,EAAE;AAC3D,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,QAAQ,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACvE,QAAQ,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7C,QAAQ,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAChD,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpD,QAAQ,IAAI,EAAE,GAAG,OAAO,EAAE;AAC1B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAC1C;AACA,QAAQ,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B;AACA,QAAQ,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B;AACA,QAAQ,IAAI,EAAE,GAAG,CAAC,EAAE;AACpB,YAAY,OAAO;AACnB,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE,eAAe,EAAE;AAChF;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC5B,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAChE,QAAQ,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7C,QAAQ,IAAI,IAAI,CAAC;AACjB,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE;AACrB,YAAY,IAAI,eAAe,EAAE;AACjC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,GAAG,CAAC,CAAC;AACrB,SAAS;AACT,aAAa,IAAI,GAAG,GAAG,CAAC,EAAE;AAC1B,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC;AACtB,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC;AACvB,SAAS;AACT,aAAa;AACb,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,QAAQ,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtD;AACA,QAAQ,IAAI,MAAM,GAAG,CAAC,EAAE;AACxB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAQ,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtD;AACA,QAAQ,IAAI,MAAM,GAAG,CAAC,EAAE;AACxB,YAAY,OAAO;AACnB,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE;AACnC,YAAY,OAAO;AACnB,SAAS;AACT;AACA,QAAQ,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3C;AACA,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE;AACrB,YAAY,OAAO;AACnB,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,KAAK,CAAC;AACN,IAAI,GAAG,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AACjC,IAAI,GAAG,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AACjC,IAAI,GAAG,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AACjC,IAAI,GAAG,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AACjC,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,EAAE,CAAC;;ACvRG,IAAI,KAAK,kBAAkB,YAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC/B,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChD,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC1C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,GAAG,EAAE;AACnD,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AACrB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE;AAClD,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC5D,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1E,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;AAC5C,QAAQ,IAAI,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;AACxC,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACzB,QAAQ,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAY,CAAC,GAAG,MAAM,CAAC;AACvB,YAAY,CAAC,GAAG,CAAC,CAAC;AAClB,SAAS;AACT,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnC,YAAY,CAAC,GAAG,CAAC,CAAC;AAClB,YAAY,CAAC,GAAG,MAAM,CAAC;AACvB,SAAS;AACT,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnC,YAAY,CAAC,GAAG,MAAM,CAAC;AACvB,YAAY,CAAC,GAAG,CAAC,CAAC;AAClB,SAAS;AACT,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnC,YAAY,CAAC,GAAG,CAAC,CAAC;AAClB,YAAY,CAAC,GAAG,MAAM,CAAC;AACvB,SAAS;AACT,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnC,YAAY,CAAC,GAAG,CAAC,CAAC;AAClB,YAAY,CAAC,GAAG,MAAM,CAAC;AACvB,SAAS;AACT,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnC,YAAY,CAAC,GAAG,MAAM,CAAC;AACvB,YAAY,CAAC,GAAG,CAAC,CAAC;AAClB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC;AAC/B,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACpD,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,GAAG,EAAE;AACtD,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACnF,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;AAC1D,QAAQ,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;AAC1D,QAAQ,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;AAC1D,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;AACnF,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE;AAC5C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACxC,QAAQ,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACzD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,KAAK,EAAE;AACzD,QAAQ,QAAQ,KAAK;AACrB,YAAY,KAAK,CAAC;AAClB,gBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/B,gBAAgB,MAAM;AACtB,YAAY,KAAK,CAAC;AAClB,gBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/B,gBAAgB,MAAM;AACtB,YAAY,KAAK,CAAC;AAClB,gBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/B,gBAAgB,MAAM;AACtB,YAAY,KAAK,CAAC;AAClB,gBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAC/B,gBAAgB,MAAM;AACtB,YAAY,SAAS,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE;AAClD,QAAQ,QAAQ,KAAK;AACrB,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,SAAS,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;AAC3C,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AAChD,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AAChD,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE;AAC9C,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,KAAK,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;AACzC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AACvC,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACnC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AACvC,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACnC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;AAChD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE;AAC/C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AACzC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC5C,QAAQ,OAAO,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAC5D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE;AAC1C,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AACpF,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;AAC3C,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC1C,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC1C,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC5C,QAAQ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACxC,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChE,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;AACvB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE;AACxB,YAAY,IAAI,GAAG,IAAI,CAAC,EAAE;AAC1B,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACjC,gBAAgB,IAAI,CAAC,GAAG,CAAC,EAAE;AAC3B,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC3B,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,GAAG,IAAI,CAAC,EAAE;AAC/B,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,aAAa;AACb,iBAAiB,IAAI,GAAG,IAAI,CAAC,EAAE;AAC/B,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,aAAa;AACb,YAAY,CAAC,IAAI,EAAE,CAAC;AACpB,SAAS;AACT,QAAQ,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,YAAY,EAAE;AAC1D,QAAQ,IAAI,YAAY,KAAK,KAAK,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAAC,EAAE;AAC7D,QAAQ,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACtD,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvC,SAAS;AACT,aAAa;AACb,YAAY,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC,SAAS;AACT,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACpD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/B,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACnC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACnC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE;AACtC,QAAQ,OAAO,IAAI,KAAK,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC9C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC/C,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,OAAO,IAAI,KAAK,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,aAAa,GAAG,UAAU,GAAG,EAAE;AACzC,QAAQ,OAAO,IAAI,KAAK,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACjD,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;AAC7D,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;AAC5C,QAAQ,OAAO,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACrE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE;AACvC,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE;AACtB,YAAY,OAAO,GAAG,CAAC;AACvB,SAAS;AACT,aAAa,IAAI,CAAC,IAAI,OAAO,EAAE;AAC/B,YAAY,OAAO,CAAC,GAAG,KAAK,CAAC;AAC7B,SAAS;AACT,aAAa,IAAI,CAAC,GAAG,GAAG,EAAE;AAC1B,YAAY,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;AACtD,SAAS;AACT,aAAa;AACb,YAAY,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACpC,SAAS;AACT,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;AAC3C,QAAQ,IAAI,KAAK,IAAI,GAAG,EAAE;AAC1B,YAAY,OAAO,GAAG,CAAC;AACvB,SAAS;AACT,aAAa,IAAI,KAAK,GAAG,SAAS,EAAE;AACpC,YAAY,OAAO,KAAK,GAAG,KAAK,CAAC;AACjC,SAAS;AACT,aAAa,IAAI,KAAK,GAAG,GAAG,EAAE;AAC9B,YAAY,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;AAC5D,SAAS;AACT,aAAa;AACb,YAAY,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5C,SAAS;AACT,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;AAC/B,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE;AACrB,YAAY,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AACjC,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7C,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAChD,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,EAAE,CAAC;;AC/hBJ;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,YAAY;AACtC;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5B,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE;AAChF,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE;AACnF,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;AAC7C,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;AACnD,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACpC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACpC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACpC,QAAQ,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;AAC7B,QAAQ,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;AAC7B,QAAQ,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;AAC7B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,YAAY,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,GAAG,IAAI,EAAE;AAC1B,gBAAgB,IAAI,GAAG,CAAC,CAAC;AACzB,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,IAAI,EAAE;AAC1B,gBAAgB,IAAI,GAAG,CAAC,CAAC;AACzB,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,IAAI,EAAE;AAC1B,gBAAgB,IAAI,GAAG,CAAC,CAAC;AACzB,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,IAAI,EAAE;AAC1B,gBAAgB,IAAI,GAAG,CAAC,CAAC;AACzB,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,IAAI,EAAE;AAC1B,gBAAgB,IAAI,GAAG,CAAC,CAAC;AACzB,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,IAAI,EAAE;AAC1B,gBAAgB,IAAI,GAAG,CAAC,CAAC;AACzB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE;AACrD,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACzD,YAAY,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE;AAClE,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE;AACrD,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC3C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACvC,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE;AAC7C,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC3C,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AACzC;AACA,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,MAAM,EAAE;AACjD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE;AAC1D,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC1G,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,MAAM,EAAE;AAC/C,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE;AAC1D,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACjG,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;AACpD,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE;AACtD,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE;AACtD,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,GAAG,EAAE;AAChD,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE;AACtD;AACA;AACA,QAAQ,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/C,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACvC,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE;AACpC,YAAY,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,EAAE;AAC/C,gBAAgB,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AAC9C,aAAa;AACb,YAAY,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAClC,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAChD,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAClD,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACvC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzD,YAAY,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;AACpD,QAAQ,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,eAAe,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,eAAe,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,eAAe,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,eAAe,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,eAAe,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;AAClD,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC3D,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE;AAC1D;AACA;AACA,QAAQ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtL,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;AACpD;AACA,QAAQ,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACrE,eAAe,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,eAAe,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,MAAM,EAAE;AACxD;AACA,QAAQ,IAAI,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AACnC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/C;AACA,QAAQ,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxF,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AACzD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE;AAC1D,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,KAAK,EAAE;AACtD,QAAQ,IAAI,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,QAAQ,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AACrD,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,GAAG,EAAE;AAC9C,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5B,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE;AAC1C,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE;AAC5D,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE;AAC1D;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5B,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE;AAC5D,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE;AAC1D;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5B,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB;AACA,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,QAAQ,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACpC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/B,YAAY,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAClC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1B,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,MAAM,EAAE;AACzD,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,QAAQ,IAAI,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AACnC,QAAQ,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;AAC5D,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,MAAM,EAAE;AACjD,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE;AAC7C,QAAQ,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxE,KAAK,CAAC;AACN,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC,EAAE,CAAC;;ACvYJ;AACA;AACA;AACA,IAAIG,QAAM,kBAAkB,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;AACpC,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE;AACzD,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;AAC/C,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE;AACrD,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,cAAc,EAAE;AACvE,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACjC,QAAQ,IAAI,cAAc,KAAK,SAAS,EAAE;AAC1C,YAAY,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC5C,YAAY,IAAI,WAAW,GAAG,CAAC,CAAC;AAChC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,gBAAgB,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,aAAa;AACb,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjD,SAAS;AACT,aAAa;AACb,YAAY,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,YAAY,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,MAAM,EAAE;AAClD,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC3C,QAAQ,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/B,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC7C,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;AACtD,QAAQ,OAAO,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACjF,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,KAAK,EAAE;AACxD,QAAQ,QAAQ,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3D,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,MAAM,EAAE;AAC1D,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpD,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC;AACrF,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,GAAG,EAAE;AACpD,QAAQ,OAAO,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,MAAM,EAAE;AAC3D,QAAQ,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC/D,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;AAClC,YAAY,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AACnC,SAAS;AACT,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE;AACzD,YAAY,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;AACrD,YAAY,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE;AACxD,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;AAClC,YAAY,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;AAChC,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5B;AACA,YAAY,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/B,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,QAAQ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE;AACtD,QAAQ,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACvE,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzE,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC7C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,MAAM,EAAE;AACnD,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;AACtD,QAAQ,IAAI,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACvE,QAAQ,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;AACnD,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE;AACzD,YAAY,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACpD,YAAY,IAAI,iBAAiB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;AACnE;AACA;AACA;AACA,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC3E,YAAY,IAAI,CAAC,MAAM,IAAI,iBAAiB,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,MAAM,EAAE;AAC/C;AACA;AACA;AACA,QAAQ,IAAI,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/B,QAAQ,IAAI,eAAe,GAAG,IAAI,OAAO,EAAE,CAAC;AAC5C,QAAQ,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxG,QAAQ,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AAC5E,QAAQ,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AACjF,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;AAClD,QAAQ,IAAI,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9E,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AACvC,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACnD,QAAQ,IAAI,QAAQ,GAAG,SAAS,EAAE;AAClC,YAAY,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AACpC,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC5D,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,MAAM,EAAE;AAChD,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;AACpF,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACzC,QAAQ,OAAO,IAAI,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9OJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,MAAMT,WAAS,GAAG,EAAE,CAAC;AACrB;AACA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;AAC9B,EAAEA,WAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIU,aAAW,CAAC;AAChB,CAAC,UAAU,WAAW,EAAE;AACxB,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3B,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AAChC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3B,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AAChC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3B,CAAC,EAAEA,aAAW,KAAKA,aAAW,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC;AACA;AACA;AACA,IAAIC,cAAY,CAAC;AACjB,CAAC,UAAU,YAAY,EAAE;AACzB;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AACtD;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAClD;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AAC5D;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AAChE;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC;AAClE;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;AACpE;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AAChE;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;AACtE,CAAC,EAAEA,cAAY,KAAKA,cAAY,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAIC,UAAQ,CAAC;AACb,CAAC,UAAU,QAAQ,EAAE;AACrB;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC;AACnD;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;AACjD;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;AAC/C,CAAC,EAAEA,UAAQ,KAAKA,UAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;AAChC;AACA;AACA;AACA,IAAIC,UAAQ,CAAC;AACb,CAAC,UAAU,QAAQ,EAAE;AACrB;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC5C;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC5C;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AACpD;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC;AACpE,CAAC,EAAEA,UAAQ,KAAKA,UAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;AAChC;AACA;AACA;AACA,IAAIC,WAAS,CAAC;AACd,CAAC,UAAU,SAAS,EAAE;AACtB;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC9C;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAClD;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC9C;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AAC1D;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAClD;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAChD;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;AACxD;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC;AAClE;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC9C;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AACpD,CAAC,EAAEA,WAAS,KAAKA,WAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AAClC;AACA;AACA;AACA,IAAIC,YAAU,CAAC;AACf,CAAC,UAAU,UAAU,EAAE;AACvB;AACA;AACA;AACA,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;AAC1D;AACA;AACA;AACA,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAClD,CAAC,EAAEA,YAAU,KAAKA,YAAU,GAAG,EAAE,CAAC,CAAC,CAAC;AACpC;AACA;AACA;AACA,IAAIC,cAAY,CAAC;AACjB,CAAC,UAAU,YAAY,EAAE;AACzB;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AACtD;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAC1D;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AACpD,CAAC,EAAEA,cAAY,KAAKA,cAAY,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,IAAIC,kBAAgB,CAAC;AACrB,CAAC,UAAU,gBAAgB,EAAE;AAC7B;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC5D;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAChE;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;AAC9E;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAChE;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAC9D,CAAC,EAAEA,kBAAgB,KAAKA,kBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD;AACA;AACA;AACA,IAAIC,UAAQ,CAAC;AACb,CAAC,UAAU,QAAQ,EAAE;AACrB;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AAC3B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;AAC7B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;AAC/B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AAC3B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;AAC/B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;AAC7B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;AAC7B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;AAClC;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;AAC7B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAChC;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9B;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAChC;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAClC;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAClC,CAAC,EAAEA,UAAQ,KAAKA,UAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;AAChC;AACA;AACA;AACA,IAAIC,YAAU,CAAC;AACf,CAAC,UAAU,UAAU,EAAE;AACvB;AACA;AACA;AACA,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;AAC1D;AACA;AACA;AACA,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAChD;AACA;AACA;AACA,IAAI,UAAU,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,oBAAoB,CAAC;AAC5E;AACA;AACA;AACA,IAAI,UAAU,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,GAAG,sBAAsB,CAAC;AAChF,CAAC,EAAEA,YAAU,KAAKA,YAAU,GAAG,EAAE,CAAC,CAAC,CAAC;AACpC;AACA;AACA;AACA,IAAIC,gBAAc,CAAC;AACnB,CAAC,UAAU,cAAc,EAAE;AAC3B;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,GAAG,wBAAwB,CAAC;AAC5F;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,0BAA0B,CAAC;AAChG;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,GAAG,6BAA6B,CAAC;AACtG;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,GAAG,6BAA6B,CAAC;AACtG;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,4BAA4B,CAAC;AACpG;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,GAAG,+BAA+B,CAAC;AAC1G;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,GAAG,2BAA2B,CAAC;AAClG;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,GAAG,8BAA8B,CAAC;AACxG;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,GAAG,8BAA8B,CAAC;AACxG,CAAC,EAAEA,gBAAc,KAAKA,gBAAc,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5C;AACA,IAAIC,sBAAoB,GAAG,CAAC,CAAC;AAC7B,IAAIC,oBAAkB,GAAG,CAAC,CAAC;AAC3B,IAAIC,sBAAoB,GAAG,CAAC,CAAC;AAC7B,IAAIC,gCAA8B,GAAG,CAAC,CAAC;AACvC,IAAIC,qBAAmB,GAAG,CAAC,CAAC;AAC5B,IAAIC,sBAAoB,GAAG,CAAC,CAAC;AAC7B,IAAIC,+BAA6B,GAAG,CAAC,CAAC;AACtC,IAAIC,2BAAyB,GAAG,CAAC,CAAC;AAClC,IAAIC,yBAAuB,GAAG,CAAC,CAAC;AAChC,IAAI,yBAAyB,GAAG,CAAC,CAAC;AAClC,IAAI,uBAAuB,GAAG,CAAC,CAAC;AAChC;AACA,IAAIC,gBAAc,CAAC;AACnB,CAAC,UAAU,cAAc,EAAE;AAC3B;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,GAAGF,2BAAyB,CAAC,GAAG,UAAU,CAAC;AACxF;AACA;AACA;AACA,IAAI,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,GAAGC,yBAAuB,CAAC,GAAG,WAAW,CAAC;AACxF,CAAC,EAAEC,gBAAc,KAAKA,gBAAc,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5C;AACA;AACA;AACA,IAAIC,wBAAsB,CAAC;AAC3B,CAAC,UAAU,sBAAsB,EAAE;AACnC;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAGV,sBAAoB,CAAC,GAAG,SAAS,CAAC;AACjG;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAGC,oBAAkB,CAAC,GAAG,OAAO,CAAC;AAC3F;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAGI,sBAAoB,CAAC,GAAG,SAAS,CAAC;AACjG;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAGH,sBAAoB,CAAC,GAAG,SAAS,CAAC;AACjG;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,eAAe,CAAC,GAAGC,gCAA8B,CAAC,GAAG,eAAe,CAAC;AACvH;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAGC,qBAAmB,CAAC,GAAG,QAAQ,CAAC;AAC9F,CAAC,EAAEM,wBAAsB,KAAKA,wBAAsB,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5D;AACA;AACA;AACA;AACA,IAAIC,WAAS,CAAC;AACd,CAAC,UAAU,SAAS,EAAE;AACtB;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AACtD;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;AAChE;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;AAChE;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;AAChE;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAClD;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC9C;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAChD;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC;AAC5D;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AAC1D;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC;AAClE;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC;AAC/D;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC;AAC/D;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,aAAa,CAAC;AAC7D;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC;AACnD;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC;AACnD;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,cAAc,CAAC;AAC/D;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,GAAG,mBAAmB,CAAC;AACzE,CAAC,EAAEA,WAAS,KAAKA,WAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AAClC;AACA;AACA;AACA,IAAIC,oBAAkB,CAAC;AACvB,CAAC,UAAU,kBAAkB,EAAE;AAC/B,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAChE,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAChE,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AACtE,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AACxE,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAChE,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAChE,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AACxE,CAAC,EAAEA,oBAAkB,KAAKA,oBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD;AACA,IAAIC,iBAAe,CAAC;AACpB,CAAC,UAAU,eAAe,EAAE;AAC5B,IAAI,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,GAAGb,sBAAoB,CAAC,GAAG,SAAS,CAAC;AACnF,IAAI,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,GAAGK,sBAAoB,CAAC,GAAG,MAAM,CAAC;AAC7E,IAAI,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAGD,qBAAmB,CAAC,GAAG,QAAQ,CAAC;AAChF,CAAC,EAAES,iBAAe,KAAKA,iBAAe,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9C,IAAIC,uBAAqB,CAAC;AAC1B,CAAC,UAAU,qBAAqB,EAAE;AAClC,IAAI,qBAAqB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,GAAGR,+BAA6B,CAAC,GAAG,iBAAiB,CAAC;AACxH,CAAC,EAAEQ,uBAAqB,KAAKA,uBAAqB,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1D;AACA;AACA;AACA;AACA,IAAIC,6BAA2B,CAAC;AAChC,CAAC,UAAU,2BAA2B,EAAE;AACxC;AACA;AACA;AACA,IAAI,2BAA2B,CAAC,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAClF;AACA;AACA;AACA,IAAI,2BAA2B,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC;AACtG,CAAC,EAAEA,6BAA2B,KAAKA,6BAA2B,GAAG,EAAE,CAAC,CAAC,CAAC;AACtE;AACA,IAAIC,cAAY,CAAC;AACjB,CAAC,UAAU,YAAY,EAAE;AACzB;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AACxD;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,GAAG,sBAAsB,CAAC;AACpF;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,qBAAqB,CAAC;AAClF;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;AACtE,CAAC,EAAEA,cAAY,KAAKA,cAAY,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC;AACA,IAAI,4BAA4B,GAAG,CAAC,CAAC;AACrC;AACA,IAAIC,WAAS,CAAC;AACd,CAAC,UAAU,SAAS,EAAE;AACtB;AACA;AACA;AACA,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AACjC;AACA;AACA;AACA,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC/B;AACA;AACA;AACA,IAAI,SAAS,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AAC7C;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACrC,CAAC,EAAEA,WAAS,KAAKA,WAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AAClC;AACA,IAAIC,mBAAiB,CAAC;AACtB,CAAC,UAAU,iBAAiB,EAAE;AAC9B,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5D,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAClE,CAAC,EAAEA,mBAAiB,KAAKA,mBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC;AAClD;AACA,IAAIC,YAAU,CAAC;AACf,CAAC,UAAU,UAAU,EAAE;AACvB,IAAI,UAAU,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;AAChD,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AAC9C,CAAC,EAAEA,YAAU,KAAKA,YAAU,GAAG,EAAE,CAAC,CAAC,CAAC;AACpC;AACA;AACA,IAAIC,cAAY,CAAC;AACjB,CAAC,UAAU,YAAY,EAAE;AACzB,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AACpC,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAChC;AACA,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAClC,CAAC,EAAEA,cAAY,KAAKA,cAAY,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC;AACA,IAAIC,kBAAgB,CAAC;AACrB,CAAC,UAAU,gBAAgB,EAAE;AAC7B,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC;AAClE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC;AAClE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,GAAG,aAAa,CAAC;AAC5E,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC;AACtE,CAAC,EAAEA,kBAAgB,KAAKA,kBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA,IAAIC,cAAY,CAAC;AACjB,CAAC,UAAU,YAAY,EAAE;AACzB;AACA;AACA;AACA,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAClC;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC9B;AACA;AACA;AACA,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACtC;AACA;AACA;AACA,IAAI,YAAY,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AAC5C;AACA;AACA;AACA,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AACpC;AACA;AACA;AACA,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AAC1C;AACA;AACA;AACA,IAAI,YAAY,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AAC5C;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC9B;AACA;AACA;AACA,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AAC1C,CAAC,EAAEA,cAAY,KAAKA,cAAY,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC;AACA,IAAIC,cAAY,CAAC;AACjB,CAAC,UAAU,YAAY,EAAE;AACzB;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAC1D;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AACpD;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AAC5D,CAAC,EAAEA,cAAY,KAAKA,cAAY,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC,IAAIC,cAAY,CAAC;AACjB,CAAC,UAAU,YAAY,EAAE;AACzB;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAClD;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AACxD;AACA;AACA;AACA,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AACxD,CAAC,EAAEA,cAAY,KAAKA,cAAY,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC,IAAIC,eAAa,CAAC;AAClB,CAAC,UAAU,aAAa,EAAE;AAC1B;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AACtD;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC1D;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AACxD,CAAC,EAAEA,eAAa,KAAKA,eAAa,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C;AACA;AACA;AACA,IAAIC,YAAU,CAAC;AACf,CAAC,UAAU,UAAU,EAAE;AACvB;AACA;AACA;AACA,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACpC;AACA;AACA;AACA,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAChC;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACtC,CAAC,EAAEA,YAAU,KAAKA,YAAU,GAAG,EAAE,CAAC,CAAC,CAAC;AACpC;AACA;AACA;AACA,IAAIC,WAAS,CAAC;AACd,CAAC,UAAU,SAAS,EAAE;AACtB;AACA;AACA;AACA,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACnC;AACA;AACA;AACA,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACnC;AACA;AACA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACrC,CAAC,EAAEA,WAAS,KAAKA,WAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AAClC;AACA,IAAIC,UAAQ,CAAC;AACb,CAAC,UAAU,QAAQ,EAAE;AACrB,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AAC5C,IAAI,QAAQ,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AACpD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AACtC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAClC,IAAI,QAAQ,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AACpD,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AAClD,IAAI,QAAQ,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC;AACxD,IAAI,QAAQ,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAAC;AACtD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AACtC,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACpC,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AAChD;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AAChD,IAAI,QAAQ,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AACpD,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AAClD,IAAI,QAAQ,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AACpD,IAAI,QAAQ,CAAC,sBAAsB,CAAC,GAAG,sBAAsB,CAAC;AAC9D,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AAChD,CAAC,EAAEA,UAAQ,KAAKA,UAAQ,GAAG,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|