@galacean/effects-plugin-editor-gizmo 2.9.1 → 2.9.2
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/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/constants.ts","../src/util.ts","../src/define.ts","../src/gizmo-vfx-item.ts","../src/math-utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/geometry/geometry.ts","../src/geometry/sphere.ts","../src/geometry/box.ts","../src/geometry/cylinder.ts","../src/geometry/cone.ts","../src/geometry/torus.ts","../src/geometry/plane.ts","../src/geometry/frustum.ts","../src/geometry/direction-light.ts","../src/geometry/point-light.ts","../src/geometry/spot-light.ts","../src/geometry/floor-line-edge.ts","../src/geometry/index.ts","../src/mesh.ts","../src/raycast.ts","../src/shape.ts","../src/wireframe.ts","../src/gizmo-component.ts","../src/gizmo-loader.ts","../src/index.ts"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\nexport { _async_to_generator as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(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}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(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}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { glContext } from '@galacean/effects';\n\n// 坐标轴默认颜色\nexport const color = {\n xAxisColor: [216 / 255, 178 / 255, 76 / 255],\n yAxisColor: [38 / 255, 149 / 255, 235 / 255],\n zAxisColor: [134 / 255, 74 / 255, 245 / 255],\n};\nexport const renderMode = glContext.TRIANGLES;\n// 坐标轴默认图标\nexport const axisIconMap: Map<string, string> = new Map();\n\naxisIconMap.set(\n 'light', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'camera', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'posX', `data:image/png;base64,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\n RK5CYII=`\n);\naxisIconMap.set(\n 'posY', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'posZ', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'negX', `data:image/png;base64,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\n 5ErkJggg==`\n);\naxisIconMap.set(\n 'negY', `data:image/png;base64,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\n 5ErkJggg==`\n);\naxisIconMap.set(\n 'negZ', `data:image/png;base64,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`\n);\n","import { Texture, noop } from '@galacean/effects';\nimport type { Engine, math } from '@galacean/effects';\n\ntype Vector3 = math.Vector3;\n\n/**\n * 下载图片\n * @param imageUrl - 图片url\n * @returns 图片对象\n */\nexport async function createImage (imageUrl: string): Promise<HTMLImageElement> {\n const image = new Image();\n\n image.src = imageUrl;\n\n return new Promise<HTMLImageElement>((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n image.onerror = reject;\n });\n}\n\n/**\n * 创建 Texture 对象\n * @param engine - engine 对象\n * @param image - 图片对象\n * @returns 纹理\n */\nexport function createTexture (engine: Engine, image: HTMLImageElement, hookDestroy?: boolean): Texture {\n\n const texture = Texture.create(engine, { image });\n\n if (hookDestroy) {\n texture.dispose = noop;\n }\n\n return texture;\n}\n\n/**\n * 移动到距离目标点指定距离的位置\n * @param targetPos - 目标点\n * @param currentPos - 当前点\n * @returns 指定点\n */\nexport function moveToPointWidthFixDistance (targetPos: Vector3, currentPos: Vector3): Vector3 {\n const vecCameraItem = currentPos.clone().subtract(targetPos);\n\n const normalVecCameraItem = vecCameraItem.clone().normalize();\n const scalerVecCameraItem = normalVecCameraItem.clone().multiply(20);\n\n const vecScalerItem = vecCameraItem.clone().subtract(scalerVecCameraItem);\n const vecItemScaler = vecScalerItem.clone().multiply(-1);\n\n return currentPos.clone().add(vecItemScaler);\n}\n","import type { GeometryDrawMode, spec } from '@galacean/effects';\n\nexport interface GizmoVFXItemOptions {\n target: string,\n subType: GizmoSubType,\n renderMode?: GeometryDrawMode,\n type: 'editor-gizmo',\n color: spec.vec3,\n size?: number,\n depthTest?: boolean,\n}\n\nexport const GizmoVFXItemType = 'gizmo' as spec.ItemType;\n\n/**\n * Gizmo 类型\n */\nexport enum GizmoSubType {\n particleEmitter = 1,\n modelWireframe = 2,\n box,\n sphere,\n cylinder,\n cone,\n torus,\n sprite,\n plane,\n rotation,\n translation,\n scale,\n viewHelper,\n camera,\n frustum,\n light,\n directionLight,\n pointLight,\n spotLight,\n boundingBox,\n floorGrid,\n}\n","import { math } from '@galacean/effects';\n\nexport type Ray = math.Ray;\nexport type TriangleLike = math.TriangleLike;\ntype Vector3 = math.Vector3;\n\nconst { Vector3, Ray } = math;\n\n/**\n * 包围盒类型\n */\nexport enum BoundingType {\n box,\n sphere,\n triangle,\n line\n}\n\n/**\n * 线条包围盒类型\n */\nexport interface GizmoItemBoundingLine {\n type: BoundingType.line,\n // 线条包围盒两端点\n points: [Vector3, Vector3],\n // 射线与线条距离阈值\n width: number,\n}\n\n/**\n * 立方体包围盒类型\n */\nexport interface GizmoItemBoundingBox {\n type: BoundingType.box,\n //包围形状相对于元素位置的偏移,默认[0,0,0]\n center?: Vector3,\n //包围盒的xyz长度,当type为box时生效\n size: Vector3,\n}\n\n/**\n * 球体包围盒类型\n */\nexport interface GizmoItemBoundingSphere {\n type: BoundingType.sphere,\n //包围形状相对于元素位置的偏移,默认[0,0,0]\n center?: Vector3,\n //包围球的半径,当type为sphere时生效\n radius: number,\n}\n\n/**\n * 三角数组包围盒类型\n */\nexport interface GizmoItemBoundingTriangle {\n type: BoundingType.triangle,\n triangles: TriangleLike[],\n backfaceCulling?: boolean,\n}\n\nexport type GizmoItemBounding =\n | GizmoItemBoundingBox\n | GizmoItemBoundingSphere\n | GizmoItemBoundingTriangle\n | GizmoItemBoundingLine\n ;\n","import { math } from '@galacean/effects';\n\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\n\nconst { Matrix4, Vector2 } = math;\n\nexport function distanceOfPointAndLine (point: Vector2, line: [Vector2, Vector2]): { distance: number, isInLine: boolean } {\n //三角形三个边长\n const AC = new Vector2();\n const BC = new Vector2();\n const AB = new Vector2();\n\n AC.subtractVectors(point, line[0]);\n BC.subtractVectors(point, line[1]);\n AB.subtractVectors(line[1], line[0]);\n const lengthAC = AC.length();\n const lengthBC = BC.length();\n const lengthAB = AB.length();\n\n //利用海伦公式计算三角形面积\n //周长的一半\n const P = (lengthAC + lengthBC + lengthAB) / 2;\n const allArea = Math.abs(Math.sqrt(P * (P - lengthAC) * (P - lengthBC) * (P - lengthAB)));\n //普通公式计算三角形面积反推点到线的垂直距离\n const distance = (2 * allArea) / lengthAB;\n const l1 = Math.sqrt(Math.pow(lengthAC, 2) - Math.pow(distance, 2));\n const l2 = Math.sqrt(Math.pow(lengthBC, 2) - Math.pow(distance, 2));\n let isInLine = false;\n\n if (l1 <= lengthAB && l2 <= lengthAB) {\n isInLine = true;\n }\n\n return {\n distance,\n isInLine,\n };\n}\n\nexport function projectionOfPointAndLine (point: Vector2, line: [Vector3, Vector3]): Vector3 {\n const AC = new Vector2();\n const BC = new Vector2();\n const AB = new Vector2();\n const line0 = line[0].toVector2();\n const line1 = line[1].toVector2();\n\n AC.subtractVectors(point, line0);\n BC.subtractVectors(point, line1);\n AB.subtractVectors(line1, line0);\n const lengthAC = AC.length();\n const lengthBC = BC.length();\n const lengthAB = AB.length();\n\n //利用海伦公式计算三角形面积\n //周长的一半\n const P = (lengthAC + lengthBC + lengthAB) / 2;\n const allArea = Math.abs(Math.sqrt(P * (P - lengthAC) * (P - lengthBC) * (P - lengthAB)));\n //普通公式计算三角形面积反推点到线的垂直距离\n const distance = (2 * allArea) / lengthAB;\n const l1 = Math.sqrt(Math.pow(lengthAC, 2) - Math.pow(distance, 2));\n const l2 = Math.sqrt(Math.pow(lengthBC, 2) - Math.pow(distance, 2));\n\n const worldAB = line[1].clone().subtract(line[0]);\n\n const worldAP = worldAB.clone().multiply(l1 / (l1 + l2));\n\n const worldP = line[0].clone().add(worldAP);\n\n return worldP;\n}\n\nexport function computeOrthographicOffCenter (\n left: number,\n right: number,\n bottom: number,\n top: number,\n near: number,\n far: number\n) {\n let a = 1.0 / (right - left);\n let b = 1.0 / (top - bottom);\n let c = 1.0 / (far - near);\n\n const tx = -(right + left) * a;\n const ty = -(top + bottom) * b;\n const tz = -(far + near) * c;\n\n a *= 2.0;\n b *= 2.0;\n c *= -2.0;\n\n return new Matrix4(\n a,\n 0.0,\n 0.0,\n 0.0,\n //\n 0.0,\n b,\n 0.0,\n 0.0,\n //\n 0.0,\n 0.0,\n c,\n 0.0,\n //\n tx,\n ty,\n tz,\n 1.0,\n );\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","/**\n * 基础几何数据[抽象类,不可以直接用来初始化]\n */\nexport abstract class GeometryData {\n points: number[] = [];\n uvs: number[] = [];\n normals: number[] = [];\n indices: number[] = [];\n\n /**\n * 构件 XY 平面圆(圆心为(0, 0, z))\n * @param radius - 圆半径\n * @param z - z 值\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n * @param startIndex - 索引起始值\n * @param points - 点数据\n * @param indices - 索引数据\n */\n createXYPlaneCircle (\n radius: number,\n z: number,\n segments: number,\n thetaStart: number,\n thetaLength: number,\n startIndex: number,\n points: number[],\n indices: number[],\n ) {\n for (let i = 0; i < segments; i++) {\n const theta = thetaStart + i * thetaLength / segments;\n const x = radius * Math.cos(theta);\n const y = radius * Math.sin(theta);\n\n points.push(x, y, z);\n indices.push(startIndex + i, startIndex + (i + 1) % segments);\n }\n }\n\n /**\n * 构件 XZ 平面圆(圆心为(0, y, 0))\n * @param radius - 圆半径\n * @param y - y 值\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n * @param startIndex - 索引起始值\n * @param points - 点数据\n * @param indices - 索引数据\n */\n createXZPlaneCircle (\n radius: number,\n y: number,\n segments: number,\n thetaStart: number,\n thetaLength: number,\n startIndex: number,\n points: number[],\n indices: number[],\n ) {\n for (let i = 0; i < segments; i++) {\n const theta = thetaStart + i * thetaLength / segments;\n const x = radius * Math.cos(theta);\n const z = radius * Math.sin(theta);\n\n points.push(x, y, z);\n indices.push(startIndex + i, startIndex + (i + 1) % segments);\n }\n }\n\n /**\n * 构件 YZ 平面圆(圆心为(x, 0, 0))\n * @param radius - 圆半径\n * @param x - x 值\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n * @param startIndex - 索引起始值\n * @param points - 点数据\n * @param indices - 索引数据\n */\n createYZPlaneCircle (\n radius: number,\n x: number,\n segments: number,\n thetaStart: number,\n thetaLength: number,\n startIndex: number,\n points: number[],\n indices: number[],\n ) {\n for (let i = 0; i < segments; i++) {\n const theta = thetaStart + i * thetaLength / segments;\n const z = radius * Math.cos(theta);\n const y = radius * Math.sin(theta);\n\n points.push(x, y, z);\n indices.push(startIndex + i, startIndex + (i + 1) % segments);\n }\n }\n}\n","import { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Vector3 } = math;\n\n/**\n *\n */\nexport class SphereGeometryData extends GeometryData {\n /**\n *\n * @param radius\n * @param widthSegments\n * @param heightSegments\n * @param phiStart\n * @param phiLength\n * @param thetaStart\n * @param thetaLength\n */\n constructor (\n radius = 1,\n widthSegments = 8,\n heightSegments = 6,\n phiStart = 0,\n phiLength = Math.PI * 2,\n thetaStart = 0,\n thetaLength = Math.PI,\n ) {\n super();\n\n // 限制至少需要分为六块以保持形状\n widthSegments = Math.max(3, Math.floor(widthSegments));\n heightSegments = Math.max(2, Math.floor(heightSegments));\n\n const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n const grid = [];\n let index = 0;\n\n for (let iy = 0; iy <= heightSegments; iy++) {\n const verticesRow = [];\n const v = iy / heightSegments;\n\n let uOffset = 0;\n\n if (iy == 0 && thetaStart == 0) {\n uOffset = 0.5 / widthSegments;\n } else if (iy == heightSegments && thetaEnd == Math.PI) {\n uOffset = - 0.5 / widthSegments;\n }\n\n for (let ix = 0; ix <= widthSegments; ix++) {\n const u = ix / widthSegments;\n\n // point\n const x = - radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n const y = radius * Math.cos(thetaStart + v * thetaLength);\n const z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n\n this.points.push(x, y, z);\n\n // normal\n const normal = new Vector3(x, y, z).normalize();\n\n this.normals.push(...normal.toArray());\n\n // uv\n this.uvs.push(u + uOffset, 1 - v);\n\n verticesRow.push(index++);\n }\n\n grid.push(verticesRow);\n }\n\n // indices\n for (let iy = 0; iy < heightSegments; iy++) {\n for (let ix = 0; ix < widthSegments; ix++) {\n const a = grid[iy][ix + 1];\n const b = grid[iy][ix];\n const c = grid[iy + 1][ix];\n const d = grid[iy + 1][ix + 1];\n\n if (iy !== 0 || thetaStart > 0) { this.indices.push(a, b, d); }\n if (iy !== heightSegments - 1 || thetaEnd < Math.PI) { this.indices.push(b, c, d); }\n }\n }\n }\n}\n","import type { spec } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\n// 面造型未单独抽离, 整个包围盒只接受一个材质\nexport class BoxGeometryData extends GeometryData {\n /**\n *\n * @param width\n * @param height\n * @param depth\n */\n constructor (width = 1, height = 1, depth = 1) {\n super();\n\n let numberOfVertices = 0;\n\n buildPlane(2, 1, 0, - 1, - 1, depth, height, width, this.points, this.uvs, this.normals, this.indices); // px\n buildPlane(2, 1, 0, 1, - 1, depth, height, - width, this.points, this.uvs, this.normals, this.indices); // nx\n buildPlane(0, 2, 1, 1, 1, width, depth, height, this.points, this.uvs, this.normals, this.indices); // py\n buildPlane(0, 2, 1, 1, - 1, width, depth, - height, this.points, this.uvs, this.normals, this.indices); // ny\n buildPlane(0, 1, 2, 1, - 1, width, height, depth, this.points, this.uvs, this.normals, this.indices); // pz\n buildPlane(0, 1, 2, - 1, - 1, width, height, - depth, this.points, this.uvs, this.normals, this.indices); // nz\n\n function buildPlane (u: number, v: number, w: number, uDir: number,\n vDir: number, width: number, height: number, depth: number,\n points: number[], uvs: number[], normals: number[], indices: number[]) {\n\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n const depthHalf = depth / 2;\n const point: spec.vec3 = [0, 0, 0];\n let vertexCounter = 0;\n\n for (let iy = 0; iy < 2; iy++) {\n const y = iy * height - heightHalf;\n\n for (let ix = 0; ix < 2; ix++) {\n const x = ix * width - widthHalf;\n\n point[u] = x * uDir;\n point[v] = y * vDir;\n point[w] = depthHalf;\n\n points.push(...point);\n\n point[u] = 0;\n point[v] = 0;\n point[w] = depth > 0 ? 1 : - 1;\n\n normals.push(...point);\n\n uvs.push(ix);\n uvs.push(1 - iy);\n\n vertexCounter += 1;\n }\n }\n\n for (let iy = 0; iy < 1; iy++) {\n for (let ix = 0; ix < 1; ix++) {\n const a = numberOfVertices + ix + 2 * iy;\n const b = numberOfVertices + ix + 2 * (iy + 1);\n const c = numberOfVertices + (ix + 1) + 2 * (iy + 1);\n const d = numberOfVertices + (ix + 1) + 2 * iy;\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n numberOfVertices += vertexCounter;\n }\n }\n}\n","import { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Vector3 } = math;\n\n/**\n *\n */\nexport class CylinderGeometryData extends GeometryData {\n /**\n *\n * @param radiusTop\n * @param radiusBottom\n * @param height\n * @param radialSegments\n * @param heightSegments\n * @param openEnded\n * @param thetaStart\n * @param thetaLength\n */\n constructor (\n radiusTop = 1,\n radiusBottom = 1,\n height = 1,\n radialSegments = 8,\n heightSegments = 1,\n openEnded = false,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n radialSegments = Math.floor(radialSegments);\n heightSegments = Math.floor(heightSegments);\n\n let index = 0;\n const indexArray: number[][] = [];\n const halfHeight = height / 2;\n\n generateTorso(this.points, this.uvs, this.normals, this.indices);\n\n if (openEnded === false) {\n if (radiusTop > 0) { generateCap(true, this.points, this.uvs, this.normals, this.indices); }\n if (radiusBottom > 0) { generateCap(false, this.points, this.uvs, this.normals, this.indices); }\n }\n\n function generateTorso (points: number[], uvs: number[], normals: number[], indices: number[]) {\n // this will be used to calculate the normal\n const slope = (radiusBottom - radiusTop) / height;\n\n for (let y = 0; y <= heightSegments; y++) {\n const indexRow = [];\n const v = y / heightSegments;\n\n const radius = v * (radiusBottom - radiusTop) + radiusTop;\n\n for (let x = 0; x <= radialSegments; x++) {\n const u = x / radialSegments;\n const theta = u * thetaLength + thetaStart;\n const sinTheta = Math.sin(theta);\n const cosTheta = Math.cos(theta);\n\n const px = radius * sinTheta;\n const py = - v * height + halfHeight;\n const pz = radius * cosTheta;\n\n points.push(px, py, pz);\n\n const normal = new Vector3(sinTheta, slope, cosTheta).normalize();\n\n normals.push(...normal.toArray());\n\n uvs.push(u, 1 - v);\n\n indexRow.push(index++);\n }\n indexArray.push(indexRow);\n }\n\n for (let x = 0; x < radialSegments; x++) {\n for (let y = 0; y < heightSegments; y++) {\n const a = indexArray[y][x];\n const b = indexArray[y + 1][x];\n const c = indexArray[y + 1][x + 1];\n const d = indexArray[y][x + 1];\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n }\n\n function generateCap (top: boolean, points: number[], uvs: number[], normals: number[], indices: number[]) {\n const centerIndexStart = index;\n\n const radius = (top === true) ? radiusTop : radiusBottom;\n const sign = (top === true) ? 1 : - 1;\n\n for (let x = 1; x <= radialSegments; x++) {\n points.push(0, halfHeight * sign, 0);\n normals.push(0, sign, 0);\n uvs.push(0.5, 0.5);\n\n index++;\n }\n\n const centerIndexEnd = index;\n\n for (let x = 0; x <= radialSegments; x++) {\n\n const u = x / radialSegments;\n const theta = u * thetaLength + thetaStart;\n\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n const px = radius * sinTheta;\n const py = halfHeight * sign;\n const pz = radius * cosTheta;\n\n points.push(px, py, pz);\n\n normals.push(0, sign, 0);\n\n const uvU = (cosTheta * 0.5) + 0.5;\n const uvV = (sinTheta * 0.5 * sign) + 0.5;\n\n uvs.push(uvU, uvV);\n\n index++;\n }\n\n for (let x = 0; x < radialSegments; x++) {\n const c = centerIndexStart + x;\n const i = centerIndexEnd + x;\n\n if (top === true) {\n indices.push(i, i + 1, c);\n } else {\n indices.push(i + 1, i, c);\n }\n }\n }\n }\n}\n","import { CylinderGeometryData } from './cylinder';\n\n/**\n *\n */\nexport class ConeGeometryData extends CylinderGeometryData {\n /**\n *\n * @param radius\n * @param height\n * @param radialSegments\n * @param heightSegments\n * @param openEnded\n * @param thetaStart\n * @param thetaLength\n */\n constructor (\n radius = 1,\n height = 1,\n radialSegments = 8,\n heightSegments = 1,\n openEnded = false,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n }\n}\n","import { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Vector3 } = math;\n\n/**\n *\n */\nexport class TorusGeometryData extends GeometryData {\n /**\n *\n * @param radius\n * @param tube\n * @param radialSegments\n * @param tubularSegments\n * @param arc\n */\n constructor (\n radius = 1,\n tube = 0.4,\n radialSegments = 64,\n tubularSegments = 64,\n arc = Math.PI * 2,\n ) {\n super();\n\n radialSegments = Math.floor(radialSegments);\n tubularSegments = Math.floor(tubularSegments);\n\n for (let j = 0; j <= radialSegments; j++) {\n for (let i = 0; i <= tubularSegments; i++) {\n\n const u = i / tubularSegments * arc;\n const v = j / radialSegments * Math.PI * 2;\n\n const px = (radius + tube * Math.cos(v)) * Math.cos(u);\n const py = (radius + tube * Math.cos(v)) * Math.sin(u);\n const pz = tube * Math.sin(v);\n\n this.points.push(px, py, pz);\n\n const cx = radius * Math.cos(u);\n const cy = radius * Math.sin(u);\n const p = new Vector3(px, py, pz);\n const c = new Vector3(cx, cy, 0);\n const normal = p.subtract(c).normalize();\n\n this.normals.push(...normal.toArray());\n\n this.uvs.push(i / tubularSegments);\n this.uvs.push(j / radialSegments);\n }\n }\n\n for (let j = 1; j <= radialSegments; j++) {\n for (let i = 1; i <= tubularSegments; i++) {\n const a = (tubularSegments + 1) * j + i - 1;\n const b = (tubularSegments + 1) * (j - 1) + i - 1;\n const c = (tubularSegments + 1) * (j - 1) + i;\n const d = (tubularSegments + 1) * j + i;\n\n this.indices.push(a, b, d);\n this.indices.push(b, c, d);\n }\n }\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n *\n */\nexport class PlaneGeometryData extends GeometryData {\n /**\n *\n * @param width\n * @param height\n * @param widthSegments\n * @param heightSegments\n */\n constructor (\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n ) {\n super();\n\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const segmentWidth = width / gridX;\n const segmentHeight = height / gridY;\n\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n\n this.points.push(x, - y, 0);\n this.normals.push(0, 0, 1);\n this.uvs.push(ix / gridX);\n this.uvs.push(1 - (iy / gridY));\n }\n }\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = (ix + 1) + gridX1 * (iy + 1);\n const d = (ix + 1) + gridX1 * iy;\n\n this.indices.push(a, b, d);\n this.indices.push(b, c, d);\n }\n }\n }\n}\n","import type { spec } from '@galacean/effects';\nimport { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Euler, Vector3, Matrix4 } = math;\n\n/**\n *\n */\nexport class FrustumGeometryData extends GeometryData {\n /**\n *\n * @param position\n * @param rotation\n * @param fov\n * @param aspect\n * @param near\n * @param far\n */\n constructor (\n position: spec.vec3,\n rotation: spec.vec3,\n fov: number,\n aspect: number,\n near: number,\n far: number,\n ) {\n super();\n\n const fovY = fov / 180 * Math.PI;\n const ratio = aspect;\n const halfY = far * Math.tan(fovY / 2);\n const halfX = halfY * ratio;\n const point1 = new Vector3(halfX, halfY, far);\n const point2 = new Vector3(-halfX, halfY, far);\n const point3 = new Vector3(-halfX, -halfY, far);\n const point4 = new Vector3(halfX, -halfY, far);\n const matrix = Euler.fromArray(rotation).toMatrix4(new Matrix4());\n const result1 = matrix.transformPoint(point1).add(position);\n const result2 = matrix.transformPoint(point2).add(position);\n const result3 = matrix.transformPoint(point3).add(position);\n const result4 = matrix.transformPoint(point4).add(position);\n\n this.points.push(\n ...position,\n ...result1.toArray(), ...result2.toArray(),\n ...result3.toArray(), ...result4.toArray()\n );\n this.indices.push(0, 1, 0, 2, 0, 3, 0, 4, 1, 2, 2, 3, 3, 4, 4, 1);\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 方向光造型数据\n * lines\n */\nexport class DirectionLightData extends GeometryData {\n /**\n * 构造函数\n * @param radius - 圆半径\n * @param length - 光线长度\n * @param segments - 圆精度\n * @param linesNumber - 光线数量\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n */\n constructor (\n radius = 1,\n length = 2,\n segments = 64,\n linesNumber = 8,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n\n this.createXYPlaneCircle(radius, 0, segments, thetaStart, thetaLength, 0, this.points, this.indices);\n const start = segments % linesNumber / 2;\n const step = segments / linesNumber;\n\n for (let i = 0; i < linesNumber; i++) {\n const index = start + i * step;\n const x = this.points[3 * index];\n const y = this.points[3 * index + 1];\n const z = -length;\n\n this.points.push(x, y, z);\n this.indices.push(index, segments + i);\n }\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 点光源造型数据\n * lines\n */\nexport class PointLightData extends GeometryData {\n /**\n * 构造函数\n * @param range - 光照范围\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n */\n constructor (\n range = 10,\n segments = 64,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n this.createXYPlaneCircle(range, 0, segments, thetaStart, thetaLength, 0, this.points, this.indices);\n this.createXZPlaneCircle(range, 0, segments, thetaStart, thetaLength, segments, this.points, this.indices);\n this.createYZPlaneCircle(range, 0, segments, thetaStart, thetaLength, 2 * segments, this.points, this.indices);\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 聚光灯造型数据\n * lines\n */\nexport class SpotLightData extends GeometryData {\n /**\n * 构造函数\n * @param range - 光线范围\n * @param spotAngle - 光线范围[角度]\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n */\n constructor (\n range = 10,\n spotAngle = 30,\n segments = 64,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n\n const angle = spotAngle / 2 / 180 * Math.PI;\n const radius = range * Math.tan(angle);\n\n this.createXYPlaneCircle(radius, -range, segments, thetaStart, thetaLength, 0, this.points, this.indices);\n this.points.push(0, 0, 0);\n const step = segments / 4;\n const start = segments % 4 / 2;\n\n for (let i = 0; i < 4; i++) {\n this.indices.push(segments, start + i * step);\n }\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 地板线边框造型数据\n * lines\n */\nexport class FloorLineEdgeGeometryData extends GeometryData {\n /**\n *\n * @param sideLength\n * @param parts\n */\n constructor (sideLength = 12, parts = 6) {\n super();\n\n let index = 0;\n\n const z = 0;\n const end = sideLength / 2;\n const start = -sideLength / 2;\n\n for (let i = 0; i <= parts; i++) {\n const v = start + i * sideLength / parts;\n\n this.points.push(v, start, z, v, end, z, start, v, z, end, v, z);\n this.indices.push(index, index + 1, index + 2, index + 3);\n index += 4;\n }\n }\n}\n","import type { Engine, GeometryDrawMode, spec } from '@galacean/effects';\nimport { Geometry } from '@galacean/effects';\nimport { SphereGeometryData } from './sphere';\nimport { BoxGeometryData } from './box';\nimport type { GeometryData } from './geometry';\nimport { CylinderGeometryData } from './cylinder';\nimport { ConeGeometryData } from './cone';\nimport { TorusGeometryData } from './torus';\nimport { PlaneGeometryData } from './plane';\nimport { FrustumGeometryData } from './frustum';\nimport { DirectionLightData } from './direction-light';\nimport { PointLightData } from './point-light';\nimport { SpotLightData } from './spot-light';\nimport { FloorLineEdgeGeometryData } from './floor-line-edge';\n\n/**\n * 几何体类型\n */\nexport enum GeometryType {\n Box,\n Sphere,\n Cylinder,\n Cone,\n Torus,\n Frustum,\n Sprite,\n Plane,\n DirectionLight,\n SpotLight,\n PointLight,\n FloorGrid,\n}\n\n/**\n * 几何体参数\n */\nexport interface MeshOption {\n size: any,\n color?: spec.vec3,\n renderMode: GeometryDrawMode,\n depthTest?: boolean,\n name?: string,\n alpha?: number,\n}\n\n/**\n * 合并多个几何体数据\n * @param geometries - 几何体数据数组\n * @returns 合并后的几何体数据\n */\n// export function combineGeometries (geometries: GeometryData[]): GeometryData {\n// const points: number[] = [];\n// const indices: number[] = [];\n// const uvs: number[] = [];\n// const normals: number[] = [];\n\n// for (let i = 0, indicesBase = 0; i < geometries.length; i++) {\n// const geometryData = geometries[i];\n// if (geometryData) {\n// points.push(...geometryData.points);\n// uvs.push(...geometryData.uvs);\n// normals.push(...geometryData.normals);\n// geometryData.indices.forEach(index => indices.push(index + indicesBase));\n// indicesBase += geometryData.points.length;\n// }\n// }\n\n// return {\n// points,\n// indices,\n// uvs,\n// normals,\n// };\n// }\n\n/**\n * 创建几何体对象\n * @param type - 几何体类型\n * @param size - 几何体尺寸\n * @param renderMode - 绘制模式:`gl.TRIANGLES`、`gl.LINES`\n * @returns\n */\nexport function createGeometry (engine: Engine, type: GeometryType, size: Record<string, any>, renderMode?: GeometryDrawMode): Geometry {\n let geometryData: GeometryData;\n\n switch (type) {\n case GeometryType.Sphere:\n geometryData = new SphereGeometryData(size.radius, size.widthSegments, size.heightSegments);\n\n break;\n case GeometryType.Cylinder:\n geometryData = new CylinderGeometryData(size.radius, size.radius, size.height);\n\n break;\n case GeometryType.Cone:\n geometryData = new ConeGeometryData(size.radius, size.height);\n\n break;\n case GeometryType.Torus:\n geometryData = new TorusGeometryData(size.radius, size.tube, size.radialSegments, size.tubularSegments, size.arc);\n\n break;\n case GeometryType.Sprite:\n case GeometryType.Plane:\n geometryData = new PlaneGeometryData(size.width, size.height);\n\n break;\n case GeometryType.Frustum:\n geometryData = new FrustumGeometryData(size.position, size.rotation, size.fov, size.aspect, size.near, size.far);\n\n break;\n case GeometryType.DirectionLight:\n geometryData = new DirectionLightData(size.radius, size.length, size.segments4, size.linesNumber, size.thetaStart, size.thetaLength);\n\n break;\n case GeometryType.PointLight:\n geometryData = new PointLightData(size.range, size.segments, size.thetaStart, size.thetaLength);\n\n break;\n case GeometryType.SpotLight:\n geometryData = new SpotLightData(size.range, size.spotAngle, size.segments, size.thetaStart, size.thetaLength);\n\n break;\n case GeometryType.FloorGrid:\n geometryData = new FloorLineEdgeGeometryData(size.sideLength, size.parts);\n\n break;\n default:\n geometryData = new BoxGeometryData(size.width, size.height, size.depth);\n\n break;\n }\n const result = Geometry.create(\n engine,\n {\n attributes: {\n a_Position: {\n size: 3,\n data: new Float32Array(geometryData.points),\n },\n a_Normal: {\n size: 3,\n data: new Float32Array(geometryData.normals),\n },\n a_UV1: {\n size: 2,\n data: new Float32Array(geometryData.uvs),\n },\n },\n indices: {\n data: new Uint16Array(geometryData.indices),\n },\n mode: renderMode,\n drawCount: geometryData.indices.length,\n });\n\n return result;\n}\n","import type { Engine, Geometry, spec } from '@galacean/effects';\nimport { glContext, Material, Mesh, Texture, Transform, math } from '@galacean/effects';\nimport type { MeshOption } from './geometry';\nimport { createGeometry, GeometryType } from './geometry';\nimport { GizmoSubType } from './define';\nimport type { GizmoItemBounding } from './gizmo-vfx-item';\nimport { BoundingType } from './gizmo-vfx-item';\nimport { color, renderMode } from './constants';\n\ntype vec3 = spec.vec3;\ntype Vector3 = math.Vector3;\ntype TriangleLike = math.TriangleLike;\nconst { Vector2, Vector3, Matrix4 } = math;\n\n/**\n * 根据 gizmoSubType 类型创建几何体 Mesh\n * @param subType - gizmoSubType 类型\n * @param boundingMap - 包围盒 Map\n * @param iconTexture - 图标纹理\n * @param options - 几何体参数\n * @returns 基础几何体 Mesh | 组合几何体 Map<Mesh, Transform>\n */\nexport function createMeshFromSubType (\n engine: Engine,\n subType: GizmoSubType,\n boundingMap: Map<string, GizmoItemBounding>,\n iconTexture?: Map<string, Texture>,\n options?: MeshOption\n): Mesh | Map<Mesh, Transform> {\n let result: Mesh | Map<Mesh, Transform>;\n\n if (!options) {\n options = { size: 0, renderMode: WebGLRenderingContext['TRIANGLES'] };\n }\n\n switch (subType) {\n case GizmoSubType.sprite:\n result = createSpriteMesh(engine, options);\n\n break;\n case GizmoSubType.camera:\n result = createSpriteMesh(engine, options, iconTexture ? iconTexture.get('camera') : undefined, boundingMap);\n\n break;\n case GizmoSubType.light:\n result = createSpriteMesh(engine, options, iconTexture ? iconTexture.get('light') : undefined, boundingMap);\n\n break;\n case GizmoSubType.translation:\n result = createTranslationMesh(engine, options, boundingMap);\n\n break;\n case GizmoSubType.scale:\n result = createScaleMesh(engine, options, boundingMap);\n\n break;\n case GizmoSubType.viewHelper:\n result = createViewHelperMesh(engine, options, boundingMap, iconTexture as Map<string, Texture>);\n\n break;\n case GizmoSubType.rotation:\n result = createRotationMesh(engine, options, boundingMap);\n\n break;\n default:\n result = createBasicMesh(engine, subType, options);\n\n break;\n }\n\n return result;\n}\n\n/**\n * 创建旋转组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createRotationMesh (\n engine: Engine,\n options: MeshOption,\n boundingMap: Map<string, GizmoItemBounding>,\n): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const size = {\n radius: 0.8 * scale,\n tube: 0.02 * scale,\n radiusSegments: 10 * scale,\n widthSegments: 20,\n heightSegments: 20,\n };\n const boundSize = { ...size, tube: size.tube * 2 };\n const name = 'rotation';\n const xCircle = createBasicMesh(engine, GizmoSubType.torus, {\n size, color: color.xAxisColor as vec3, renderMode, name,\n }, 'hideBack');\n const yCircle = createBasicMesh(engine, GizmoSubType.torus, {\n size, color: color.yAxisColor as vec3, renderMode, name,\n }, 'hideBack');\n const zCircle = createBasicMesh(engine, GizmoSubType.torus, {\n size, color: color.zAxisColor as vec3, renderMode, name,\n }, 'hideBack');\n const center = createBasicMesh(engine, GizmoSubType.sphere, {\n size, color: [0.3, 0.3, 0.3], alpha: 0.1, renderMode, name,\n }, 'blend');\n const xCircleBounding = createBasicMesh(engine, GizmoSubType.torus, {\n size: boundSize,\n color: color.xAxisColor as vec3,\n renderMode,\n });\n const yCircleBounding = createBasicMesh(engine, GizmoSubType.torus, {\n size: boundSize,\n color: color.yAxisColor as vec3,\n renderMode,\n });\n const zCircleBounding = createBasicMesh(engine, GizmoSubType.torus, {\n size: boundSize,\n color: color.zAxisColor as vec3,\n renderMode,\n });\n\n const xCircleTransform = new Transform({\n valid: true,\n });\n const yCircleTransform = new Transform({\n valid: true,\n });\n const zCircleTransform = new Transform({\n valid: true,\n });\n const centerTransform = new Transform({\n valid: true,\n });\n\n xCircleTransform.setRotation(0, 90, 0);\n yCircleTransform.setRotation(-90, 0, 0);\n zCircleTransform.setRotation(0, 0, 0);\n result.set(center, centerTransform);\n result.set(xCircle, xCircleTransform);\n result.set(yCircle, yCircleTransform);\n result.set(zCircle, zCircleTransform);\n\n boundingMap.set('xAxis', {\n type: BoundingType.triangle,\n triangles: xCircleBounding.firstGeometry() ? getTriangle(xCircleBounding.firstGeometry(), xCircleTransform) : [],\n backfaceCulling: true,\n });\n boundingMap.set('yAxis', {\n type: BoundingType.triangle,\n triangles: yCircleBounding.firstGeometry() ? getTriangle(yCircleBounding.firstGeometry(), yCircleTransform) : [],\n backfaceCulling: true,\n });\n boundingMap.set('zAxis', {\n type: BoundingType.triangle,\n triangles: zCircleBounding.firstGeometry() ? getTriangle(zCircleBounding.firstGeometry(), zCircleTransform) : [],\n backfaceCulling: true,\n });\n\n return result;\n}\n\n/**\n * 获取几何体的三角面数组\n * @internal\n * @param geometry - 几何体\n * @param transform - 变换式\n * @returns 三角面数组\n */\nfunction getTriangle (geometry: Geometry, transform: Transform): TriangleLike[] {\n const result: TriangleLike[] = [];\n const indices = geometry.getIndexData();\n const points = geometry.getAttributeData('a_Position');\n const mat4 = transform.getWorldMatrix();\n\n if (points && indices && indices.length > 0) {\n for (let i = 0; i < indices.length; i += 3) {\n const i0 = indices[i] * 3;\n const i1 = indices[i + 1] * 3;\n const i2 = indices[i + 2] * 3;\n const p0 = new Vector3(points[i0], points[i0 + 1], points[i0 + 2]);\n const p1 = new Vector3(points[i1], points[i1 + 1], points[i1 + 2]);\n const p2 = new Vector3(points[i2], points[i2 + 1], points[i2 + 2]);\n\n result.push({\n p0: mat4.projectPoint(p0),\n p1: mat4.projectPoint(p1),\n p2: mat4.projectPoint(p2),\n });\n\n }\n }\n\n return result;\n}\n\n/**\n * 创建位移组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createTranslationMesh (engine: Engine, options: MeshOption, boundingMap: Map<string, GizmoItemBounding>): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const axisSize = {\n width: 0.8 * scale,\n height: 0.02 * scale,\n depth: 0.02 * scale,\n };\n const name = 'translation';\n const axisMesh = createAxisMesh(engine, axisSize, false, name);\n\n for (const [mesh, transform] of axisMesh) {\n result.set(mesh, transform);\n }\n\n const arrowSize = {\n radius: 0.05 * scale,\n height: 0.2 * scale,\n };\n const xArrow = createBasicMesh(engine, GizmoSubType.cone, {\n size: arrowSize,\n color: color.xAxisColor as vec3,\n renderMode,\n depthTest: true,\n name,\n }, 'blend');\n const yArrow = createBasicMesh(engine, GizmoSubType.cone, {\n size: arrowSize,\n color: color.yAxisColor as vec3,\n renderMode,\n depthTest: true,\n name,\n }, 'blend');\n const zArrow = createBasicMesh(engine, GizmoSubType.cone, {\n size: arrowSize,\n color: color.zAxisColor as vec3,\n renderMode,\n name,\n depthTest: true,\n }, 'blend');\n const xArrowTransform = new Transform({\n valid: true,\n });\n const yArrowTransform = new Transform({\n valid: true,\n });\n const zArrowTransform = new Transform({\n valid: true,\n });\n\n xArrowTransform.setRotation(0, 0, 90);\n yArrowTransform.setRotation(0, 0, 0);\n zArrowTransform.setRotation(-90, 0, 0);\n xArrowTransform.translate(axisSize.width, 0, 0);\n yArrowTransform.translate(0, axisSize.width, 0);\n zArrowTransform.translate(0, 0, axisSize.width);\n\n const planeSize = {\n width: 0.2 * scale,\n height: 0.2 * scale,\n };\n const xyPlane = createBasicMesh(engine, GizmoSubType.plane, {\n size: planeSize, color: color.zAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const yzPlane = createBasicMesh(engine, GizmoSubType.plane, {\n size: planeSize, color: color.xAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const zxPlane = createBasicMesh(engine, GizmoSubType.plane, {\n size: planeSize, color: color.yAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const xyPlaneTransform = new Transform({\n valid: true,\n });\n const yzPlaneTransform = new Transform({\n valid: true,\n });\n const zxPlaneTransform = new Transform({\n valid: true,\n });\n const delta = axisSize.width / 8;\n\n xyPlaneTransform.translate(planeSize.width / 2 + delta, planeSize.height / 2 + delta, 0);\n yzPlaneTransform.setRotation(0, 90, 0);\n yzPlaneTransform.translate(0, planeSize.height / 2 + delta, planeSize.width / 2 + delta);\n zxPlaneTransform.setRotation(-90, 0, 0);\n zxPlaneTransform.translate(planeSize.width / 2 + delta, 0, planeSize.height / 2 + delta);\n\n result.set(xArrow, xArrowTransform);\n result.set(yArrow, yArrowTransform);\n result.set(zArrow, zArrowTransform);\n result.set(xyPlane, xyPlaneTransform);\n result.set(yzPlane, yzPlaneTransform);\n result.set(zxPlane, zxPlaneTransform);\n\n createAxisBounding({ width: arrowSize.radius * 2.4, length: axisSize.width + arrowSize.height / 2 }, boundingMap);\n boundingMap.set('xyPlane', {\n type: BoundingType.triangle,\n triangles: xyPlane.firstGeometry() ? getTriangle(xyPlane.firstGeometry(), xyPlaneTransform) : [],\n backfaceCulling: false,\n });\n\n // FIXME: getTriangle 函数调用 getWorldMatrix 后 worldMatrix被修改\n boundingMap.set('yzPlane', {\n type: BoundingType.triangle,\n triangles: yzPlane.firstGeometry() ? getTriangle(yzPlane.firstGeometry(), yzPlaneTransform) : [],\n backfaceCulling: false,\n });\n boundingMap.set('zxPlane', {\n type: BoundingType.triangle,\n triangles: zxPlane.firstGeometry() ? getTriangle(zxPlane.firstGeometry(), zxPlaneTransform) : [],\n backfaceCulling: false,\n });\n\n return result;\n}\n\n/**\n * 创建缩放组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createScaleMesh (engine: Engine, options: MeshOption, boundingMap: Map<string, GizmoItemBounding>): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const axisSize = {\n width: 0.8 * scale,\n height: 0.02 * scale,\n depth: 0.02 * scale,\n };\n const name = 'scale';\n const axisMesh = createAxisMesh(engine, axisSize, false, name);\n\n for (const [mesh, transform] of axisMesh) {\n result.set(mesh, transform);\n }\n const boxSize = {\n width: 0.1 * scale,\n height: 0.1 * scale,\n depth: 0.1 * scale,\n };\n const centerBoxSize = {\n width: 0.2 * scale,\n height: 0.2 * scale,\n depth: 0.2 * scale,\n };\n const xCube = createBasicMesh(engine, GizmoSubType.box, {\n size: boxSize, color: color.xAxisColor as vec3, renderMode, depthTest: true, name,\n }, 'blend');\n const yCube = createBasicMesh(engine, GizmoSubType.box, {\n size: boxSize, color: color.yAxisColor as vec3, renderMode, depthTest: true, name,\n }, 'blend');\n const zCube = createBasicMesh(engine, GizmoSubType.box, {\n size: boxSize, color: color.zAxisColor as vec3, renderMode, depthTest: true, name,\n }, 'blend');\n const centerCube = createBasicMesh(engine, GizmoSubType.box, {\n size: centerBoxSize,\n color: [0.8, 0.8, 0.8],\n renderMode,\n depthTest: true,\n name,\n }, 'blend');\n const xCubeTransform = new Transform({\n valid: true,\n });\n const yCubeTransform = new Transform({\n valid: true,\n });\n const zCubeTransform = new Transform({\n valid: true,\n });\n const centerCubeTransform = new Transform({\n valid: true,\n });\n\n xCubeTransform.translate(axisSize.width, 0, 0);\n yCubeTransform.translate(0, axisSize.width, 0);\n zCubeTransform.translate(0, 0, axisSize.width);\n result.set(centerCube, centerCubeTransform);\n result.set(xCube, xCubeTransform);\n result.set(yCube, yCubeTransform);\n result.set(zCube, zCubeTransform);\n\n createAxisBounding({ width: boxSize.width * 1.2, length: axisSize.width + boxSize.width / 2 }, boundingMap);\n boundingMap.set('center', {\n type: BoundingType.sphere,\n center: new Vector3(),\n radius: Math.pow(Math.pow(centerBoxSize.width, 2) + Math.pow(centerBoxSize.height, 2) + Math.pow(centerBoxSize.depth, 2), 0.5) / 2,\n });\n\n return result;\n}\n\n/**\n * 创建视图辅助组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createViewHelperMesh (engine: Engine, options: MeshOption, boundingMap: Map<string, GizmoItemBounding>, texture: Map<string, Texture>): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const axisSize = {\n width: 0.8 * scale,\n height: 0.02 * scale,\n depth: 0.02 * scale,\n };\n const axisMesh = createAxisMesh(engine, axisSize, true);\n\n for (const [mesh, transform] of axisMesh) {\n result.set(mesh, transform);\n }\n const planeSize = {\n width: 0.14 * scale,\n height: 0.14 * scale,\n };\n const length = (axisSize.width + planeSize.width) / 2;\n const depthTest = true;\n const posXSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('posX'));\n const posYSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('posY'));\n const posZSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('posZ'));\n const posXSphereTransform = new Transform({\n valid: true,\n });\n const posYSphereTransform = new Transform({\n valid: true,\n });\n const posZSphereTransform = new Transform({\n valid: true,\n });\n\n posXSphereTransform.translate(length, 0, 0);\n posYSphereTransform.translate(0, length, 0);\n posZSphereTransform.translate(0, 0, length);\n const negXSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('negX'));\n const negYSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('negY'));\n const negZSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('negZ'));\n const negXSphereTransform = new Transform({\n valid: true,\n });\n const negYSphereTransform = new Transform({\n valid: true,\n });\n const negZSphereTransform = new Transform({\n valid: true,\n });\n\n negXSphereTransform.translate(-length, 0, 0);\n negYSphereTransform.translate(0, -length, 0);\n negZSphereTransform.translate(0, 0, -length);\n\n result.set(posXSphere, posXSphereTransform);\n result.set(posYSphere, posYSphereTransform);\n result.set(posZSphere, posZSphereTransform);\n result.set(negXSphere, negXSphereTransform);\n result.set(negYSphere, negYSphereTransform);\n result.set(negZSphere, negZSphereTransform);\n\n const radius = (planeSize.height / 2) * 1.2;\n\n boundingMap.set('posX', {\n type: BoundingType.sphere,\n center: posXSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('posY', {\n type: BoundingType.sphere,\n center: posYSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('posZ', {\n type: BoundingType.sphere,\n center: posZSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('negX', {\n type: BoundingType.sphere,\n center: negXSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('negY', {\n type: BoundingType.sphere,\n center: negYSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('negZ', {\n type: BoundingType.sphere,\n center: negZSphereTransform.position,\n radius: radius,\n });\n\n return result;\n}\n\n/**\n * 创建坐标轴 Mesh 数组\n * @internal\n * @param axisSize - 坐标轴尺寸\n * @param isCentered - 是否居中,默认 false\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createAxisMesh (engine: Engine, axisSize: { width: number, height: number, depth: number }, isCentered = false, name?: string): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const xAxis = createBasicMesh(engine, GizmoSubType.box, {\n size: axisSize, color: color.xAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const yAxis = createBasicMesh(engine, GizmoSubType.box, {\n size: axisSize, color: color.yAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const zAxis = createBasicMesh(engine, GizmoSubType.box, {\n size: axisSize, color: color.zAxisColor as vec3, renderMode, depthTest: true, name,\n });\n\n const xAxisTransform = new Transform({\n valid: true,\n });\n const yAxisTransform = new Transform({\n valid: true,\n });\n const zAxisTransform = new Transform({\n valid: true,\n });\n\n yAxisTransform.setRotation(0, 0, 90);\n zAxisTransform.setRotation(0, -90, 0);\n if (!isCentered) {\n xAxisTransform.translate(axisSize.width / 2, 0, 0);\n yAxisTransform.translate(0, axisSize.width / 2, 0);\n zAxisTransform.translate(0, 0, axisSize.width / 2);\n }\n result.set(xAxis, xAxisTransform);\n result.set(yAxis, yAxisTransform);\n result.set(zAxis, zAxisTransform);\n\n return result;\n}\n\n/**\n * 创建基础几何体 Mesh\n * @internal\n * @param subType - gizmoSubType 类型\n * @param options - 几何体参数\n * @returns 几何体 Mesh\n */\nfunction createBasicMesh (engine: Engine, subType: GizmoSubType, options: MeshOption, materialType = 'default'): Mesh {\n const {\n size, color, alpha, renderMode, depthTest, name,\n } = options;\n let geometryType: GeometryType;\n\n switch (subType) {\n case GizmoSubType.sphere:\n geometryType = GeometryType.Sphere;\n\n break;\n case GizmoSubType.cylinder:\n geometryType = GeometryType.Cylinder;\n\n break;\n case GizmoSubType.cone:\n geometryType = GeometryType.Cone;\n\n break;\n case GizmoSubType.torus:\n geometryType = GeometryType.Torus;\n\n break;\n case GizmoSubType.sprite:\n geometryType = GeometryType.Sprite;\n\n break;\n case GizmoSubType.plane:\n geometryType = GeometryType.Plane;\n\n break;\n case GizmoSubType.frustum:\n geometryType = GeometryType.Frustum;\n\n break;\n case GizmoSubType.directionLight:\n geometryType = GeometryType.DirectionLight;\n\n break;\n case GizmoSubType.spotLight:\n geometryType = GeometryType.SpotLight;\n\n break;\n case GizmoSubType.pointLight:\n geometryType = GeometryType.PointLight;\n\n break;\n case GizmoSubType.floorGrid:\n geometryType = GeometryType.FloorGrid;\n\n break;\n default:\n geometryType = GeometryType.Box;\n\n break;\n }\n const geometry = createGeometry(engine, geometryType, size, renderMode);\n let material;\n\n switch (materialType) {\n case 'blend':\n material = createBlendMaterial(engine, color, depthTest, alpha);\n\n break;\n case 'hideBack':\n material = createHideBackMaterial(engine, color, depthTest);\n\n break;\n default:\n material = createMaterial(engine, color, depthTest);\n\n break;\n }\n\n return Mesh.create(\n engine,\n {\n name: name ? name : geometryType.toString(),\n geometry,\n material,\n priority: 3000,\n });\n}\n\n/**\n * @internal\n * @param options\n * @param texture\n * @param boundingMap\n * @returns\n */\nfunction createSpriteMesh (engine: Engine, options: MeshOption, texture?: Texture, boundingMap?: Map<string, GizmoItemBounding>): Mesh {\n const geometry = createGeometry(engine, GeometryType.Sprite, options.size, renderMode);\n let spriteColor;\n\n if (texture) {\n spriteColor = texture;\n } else {\n spriteColor = options.color;\n }\n\n const material = createSpriteMaterial(engine, spriteColor, options.depthTest);\n\n if (boundingMap) {\n boundingMap.set('sprite', {\n type: BoundingType.sphere,\n radius: Math.pow(Math.pow(options.size.width, 2) + Math.pow(options.size.height, 2), 0.5) / 2,\n });\n }\n\n return Mesh.create(\n engine,\n {\n name: options.name || 'sprite',\n geometry,\n material,\n priority: 3000,\n });\n}\n\n/**\n * 创建材质\n * @internal\n * @param color - 颜色\n * @param depthTest\n * @returns 纯色材质,无光照,无透明\n */\nfunction createMaterial (engine: Engine, color?: vec3, depthTest?: boolean): Material {\n const myColor = color ? Vector3.fromArray(color) : new Vector3(255, 255, 255);\n const myDepthTest = depthTest ? depthTest : false;\n\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(myColor.toArray()),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n },\n shader: {\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n\n void main(){\n gl_FragColor = vec4(u_color,1.0);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n\n void main(){\n gl_Position = _MatrixP * effects_MatrixV * u_model * vec4(a_Position,1.0);\n }`,\n shared: true,\n },\n });\n\n material.setVector3('u_color', myColor);\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = false;\n material.depthMask = true;\n\n return material;\n}\n\n/**\n *\n * @internal\n * @param color\n * @param depthTest\n * @returns\n */\nfunction createHideBackMaterial (engine: Engine, color?: vec3, depthTest?: boolean): Material {\n const myColor = color ? Vector3.fromArray(color) : new Vector3(255, 255, 255);\n const myDepthTest = depthTest ? depthTest : false;\n\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(myColor.toArray()),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n u_cameraPos: new Float32Array([0, 0, 0]),\n u_center: new Float32Array([0, 0, 0]),\n },\n shader: {\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n\n varying float flag;\n\n void main(){\n if(flag > 0.0) {\n discard;\n }\n\n gl_FragColor = vec4(u_color,1.0);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n\n uniform vec3 u_cameraPos;\n uniform vec3 u_center;\n\n varying float flag;\n void main(){\n float distance = length(u_cameraPos - u_center);\n vec3 worldPosition = (u_model * vec4(a_Position,1.0)).xyz;\n flag = length(u_cameraPos - worldPosition) - distance;\n gl_Position = _MatrixP * effects_MatrixV * u_model * vec4(a_Position,1.0);\n }`,\n shared: true,\n },\n });\n\n material.setVector3('u_color', myColor);\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.setVector3('u_cameraPos', Vector3.ZERO);\n material.setVector3('u_center', Vector3.ZERO);\n\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = false;\n material.depthMask = true;\n\n return material;\n}\n\n/**\n *\n * @internal\n * @param color\n * @param depthTest\n * @param alpha\n * @returns\n */\nfunction createBlendMaterial (engine: Engine, color?: vec3, depthTest?: boolean, alpha?: number): Material {\n const myColor = color ? Vector3.fromArray(color) : new Vector3(255, 255, 255);\n const myDepthTest = depthTest ? depthTest : false;\n const myAlpha = alpha ? alpha : 1;\n\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(myColor.toArray()),\n u_alpha: new Float32Array([myAlpha, 0]),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n },\n shader: {\n shared: true,\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n uniform vec2 u_alpha;\n\n void main(){\n gl_FragColor = vec4(u_color,u_alpha);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n void main(){\n gl_Position = _MatrixP * effects_MatrixV * u_model * vec4(a_Position,1.0);\n }`,\n },\n });\n\n material.setVector3('u_color', myColor);\n material.setVector2('u_alpha', new Vector2(myAlpha, 0));\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = true;\n material.blendEquation = [glContext.FUNC_ADD, glContext.FUNC_ADD];\n material.blendFunction = [glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA, glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA];\n material.depthMask = true;\n\n return material;\n}\n\nfunction createSpriteMaterial (engine: Engine, data?: vec3 | Texture, depthTest?: boolean): Material {\n const myDepthTest = depthTest ? depthTest : false;\n const uniformValues = {\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n u_alpha: new Float32Array([1, 0]),\n };\n\n const material = Material.create(\n engine,\n {\n uniformValues,\n shader: {\n shared: true,\n fragment: `\n precision highp float;\n\n uniform vec2 u_alpha;\n uniform vec3 u_color;\n uniform sampler2D u_iconTex;\n\n varying vec2 v_uv;\n\n void main(){\n vec4 color = texture2D(u_iconTex, vec2(v_uv.x, 1.0 - v_uv.y));\n if(color.a < 0.001)\n {\n discard;\n }\n gl_FragColor = vec4(color.xyz, color.w * u_alpha.x);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n attribute vec2 a_UV1;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n uniform mat4 effects_MatrixInvV;\n varying vec2 v_uv;\n\n void main(){\n v_uv = a_UV1;\n vec4 pos = u_model * vec4(0., 0., 0., 1.0);\n // vec4 pos = u_model * vec4(a_Position,1.0);\n\n pos.xyz += effects_MatrixInvV[0].xyz * a_Position.x + effects_MatrixInvV[1].xyz * a_Position.y;\n gl_Position = _MatrixP * effects_MatrixV * pos;\n }`,\n },\n });\n\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.setVector2('u_alpha', new Vector2(1, 0));\n\n if (data instanceof Texture) {\n material.setTexture('u_iconTex', data);\n // uniformValues.u_iconTex = data;\n } else {\n let color: Vector3;\n\n if (data === undefined) {\n color = new Vector3(255, 255, 255);\n } else {\n color = Vector3.fromArray(data);\n }\n material.setVector3('u_color', color);\n // uniformValues.u_color = new Float32Array(color);\n }\n\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = true;\n material.blendEquation = [glContext.FUNC_ADD, glContext.FUNC_ADD];\n material.blendFunction = [glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA, glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA];\n\n return material;\n}\n\n/**\n * 创建坐标轴包围盒\n * @internal\n * @param size 包围盒尺寸\n * @param boundingMap 包围盒 Map\n */\nfunction createAxisBounding (size: { width: number, length: number }, boundingMap: Map<string, GizmoItemBounding>) {\n boundingMap.set('xAxis', {\n type: BoundingType.line,\n points: [new Vector3(0, 0, 0), new Vector3(size.length, 0, 0)],\n width: size.width,\n });\n boundingMap.set('yAxis', {\n type: BoundingType.line,\n points: [new Vector3(0, 0, 0), new Vector3(0, size.length, 0)],\n width: size.width,\n });\n boundingMap.set('zAxis', {\n type: BoundingType.line,\n points: [new Vector3(0, 0, 0), new Vector3(0, 0, size.length)],\n width: size.width,\n });\n}\n","import type { Camera } from '@galacean/effects';\nimport { math } from '@galacean/effects';\nimport { distanceOfPointAndLine, projectionOfPointAndLine } from './math-utils';\n\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\ntype Matrix4 = math.Matrix4;\n\nconst { Matrix4, Vector2, Vector3 } = math;\n\n/**\n * 线条包围盒射线检测算法\n * @param out - 射线与包围盒交点位置\n * @param pointInCanvas - 归一化的画布交互点坐标\n * @param points - 线条包围盒两端点位置\n * @param radius - 线条包围盒辐射半径\n * @param camera - 相机对象\n * @returns 射线与包围盒交点位置 | undefined\n */\nexport function intersectRayLine (\n out: Vector3,\n pointInCanvas: Vector2,\n points: [p0: Vector3, p1: Vector3],\n radius: number,\n worldMat4: Matrix4,\n camera: Camera,\n): Vector3 | undefined {\n // 构造一个辐射半径边缘的点 radiusPoint\n const up = new Vector3(\n worldMat4.elements[1],\n worldMat4.elements[5],\n worldMat4.elements[9],\n ).normalize();\n\n const radiusPoint = up.clone().multiply(radius);\n\n radiusPoint.add(points[0]);\n\n // 计算 start、end、radius 在屏幕空间上的投影\n const mvpMat4 = camera.getModelViewProjection(new Matrix4(), worldMat4);\n\n const screenStart = mvpMat4.projectPoint(points[0], new Vector3());\n const screenEnd = mvpMat4.projectPoint(points[1], new Vector3());\n const screenRadiusPoint = mvpMat4.projectPoint(radiusPoint, new Vector3());\n\n const screenRadiusVector = screenRadiusPoint.clone().subtract(screenStart);\n\n const screenRadius = screenRadiusVector.length();\n\n // 计算屏幕交互点与线条的距离\n const { distance, isInLine } = distanceOfPointAndLine(pointInCanvas, [screenStart.toVector2(), screenEnd.toVector2()]);\n\n if (distance <= screenRadius && isInLine) { // 距离小于阈值且交互点在线条上的投影位于线段内\n // 计算交互点在线条上的投影并转换为世界坐标\n const screenPosition = projectionOfPointAndLine(pointInCanvas, [screenStart, screenEnd]);\n const inverseViewProjection = camera.getInverseViewProjectionMatrix();\n\n inverseViewProjection.projectPoint(screenPosition, out);\n\n return out;\n }\n}\n","import type { Engine, spec } from '@galacean/effects';\nimport { Geometry, Material, Mesh, glContext, math } from '@galacean/effects';\n\ntype vec3 = spec.vec3;\ntype Vector3 = math.Vector3;\ntype Matrix4 = math.Matrix4;\n\nconst { Euler, Vector3, Matrix4 } = math;\n\nconst rectSize = 0.04;\nconst DEG2RAD = Math.PI / 180;\n\ninterface GeometryData {\n points: Vector3[],\n indices: number[],\n}\n\ninterface ArcPathOptions {\n plane?: string,\n translate?: vec3,\n rotate?: vec3,\n}\n\nfunction arcPath (radius: number, arc: number, options: ArcPathOptions = {}): GeometryData {\n const { plane, translate = [0, 0, 0], rotate = [0, 0, 0] } = options;\n const rotMat4 = Euler.fromArray(rotate).negate().toMatrix4(new Matrix4());\n const points: Vector3[] = [];\n const indices = [];\n\n addPoint(radius, 0);\n let i = 1;\n\n for (; i <= arc; i++) {\n const angle = i * DEG2RAD;\n\n indices.push(i - 1, i);\n addPoint(Math.cos(angle) * radius, Math.sin(angle) * radius);\n }\n\n return {\n points,\n indices,\n };\n\n function addPoint (cos: number, sin: number) {\n const point = new Vector3();\n\n if (plane === 'xz') {\n point.set(cos, 0, sin);\n } else if (plane === 'yz') {\n point.set(0, cos, sin);\n } else {\n point.set(cos, sin, 0);\n }\n rotMat4.transformNormal(point);\n points.push(point.add(translate));\n }\n}\n\nfunction line (p0: vec3, p1: vec3): GeometryData {\n return {\n points: [\n Vector3.fromArray(p0),\n Vector3.fromArray(p1),\n ],\n indices: [0, 1],\n };\n}\n\nfunction box (width: number, height: number, depth: number, center?: number[]): GeometryData {\n const w = width / 2;\n const h = height / 2;\n const d = depth / 2;\n const myCenter = center ?? [0, 0, 0];\n const points: Vector3[] = [\n [-w, h, -d], [-w, -h, -d], [-w, h, d], [-w, -h, d],\n [w, h, -d], [w, -h, -d], [w, h, d], [w, -h, d],\n ].map(item => {\n return new Vector3(item[0] + myCenter[0], item[1] + myCenter[1], item[2] + myCenter[2]);\n });\n\n return {\n points,\n indices: [\n 0, 1, 1, 3, 3, 2, 2, 0,\n 4, 5, 5, 7, 7, 6, 6, 4,\n 0, 4, 2, 6, 3, 7, 1, 5,\n ],\n };\n}\n\nfunction rect (width: number, height: number, pos?: vec3): GeometryData {\n const w = width / 2;\n const h = height / 2;\n const points: Vector3[] = [\n new Vector3(-w, h, 0),\n new Vector3(w, h, 0),\n new Vector3(w, -h, 0),\n new Vector3(-w, -h, 0),\n ];\n\n if (pos) {\n points.forEach(vec => {\n vec.add(pos);\n });\n }\n\n return {\n points,\n indices: [\n 0, 1, 1, 2, 2, 3, 3, 0,\n ],\n };\n}\n\nfunction combineGeometries (geometries: GeometryData[]) {\n const points: number[] = [];\n const indices: number[] = [];\n\n for (let i = 0, indicesBase = 0; i < geometries.length; i++) {\n const geometry = geometries[i];\n\n if (geometry) {\n geometry.points.forEach(point => {\n points.push(point.x, point.y, point.z);\n });\n geometry.indices.forEach(index => indices.push(index + indicesBase));\n indicesBase += geometry.points.length;\n }\n }\n\n return {\n points: new Float32Array(points),\n indices: new Uint16Array(indices),\n };\n}\n\nconst Shapes: Record<string, (arg: any) => GeometryData[]> = {\n Texture (arg: any) {\n const ret = [];\n\n if (arg.detail) {\n const anchors = arg.detail.anchors;\n const block = arg.detail.block;\n const width = arg.width;\n const height = arg.height;\n\n for (let i = 0; i < anchors.length; i += 2) {\n ret.push(rect(block[0] * width, block[1] * height, [\n width * (anchors[i] - 0.5),\n height * (anchors[i + 1] - 0.5),\n 0,\n ]));\n }\n } else {\n ret.unshift(Shapes.Rectangle(arg)[0]);\n }\n\n return ret;\n },\n Circle (arg: any) {\n const { radius, arc } = arg;\n\n return [\n arcPath(radius, arc),\n arc !== 360 && line([0, 0, 0], [radius, 0, 0]),\n arc !== 360 && line([0, 0, 0], [Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0]),\n ] as GeometryData[];\n },\n Box: function (arg: any) {\n const {\n width, height, depth, center,\n } = arg;\n const data = box(width, height, depth, center);\n\n return [data];\n },\n Sphere: function (arg) {\n const { radius, arc } = arg;\n const ret = [\n line([0, 0, -radius], [0, 0, radius]),\n arcPath(radius, arc > 180 ? 360 : 180, { plane: 'xz', rotate: [0, 90, 0] }),\n arcPath(radius, arc, { plane: 'xy' }),\n arcPath(radius, 180, { plane: 'xz', rotate: [0, 90, arc] }),\n ];\n\n if (arc > 90) {\n ret.push(arcPath(radius, arc > 270 ? 360 : 180, { plane: 'yz', rotate: [-90, 0, 0] }));\n }\n\n return ret;\n },\n Hemisphere (arg) {\n const { radius, arc } = arg;\n const ret = [\n line([0, 0, radius], [0, 0, 0]), //z\n line([arc > 180 ? -radius : 0, 0, 0], [radius, 0, 0]), //x\n arg > 90 && line([0, arc > 270 ? -radius : 0, 0], [0, radius, 0]), //y\n arcPath(radius, (arc > 180 ? 360 : 180) / 2, { plane: 'xz' }),\n arcPath(radius, arc, { plane: 'xy' }),\n arcPath(radius, 90, { plane: 'xz', rotate: [0, 0, arc] }),\n line([0, 0, 0], [Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0]),\n ] as GeometryData[];\n\n if (arc > 90) {\n ret.push(arcPath(radius, arc > 270 ? 180 : 90, { plane: 'yz' }));\n }\n\n return ret;\n },\n Cone (arg) {\n const { radius, arc } = arg;\n const outerRadius = radius * Math.tan(arg.angle * DEG2RAD) + radius;\n\n return [\n arcPath(outerRadius, arc, { translate: [0, 0, radius] }),\n line([radius, 0, 0], [outerRadius, 0, radius]),\n arc > 90 && line([0, radius, 0], [0, outerRadius, radius]),\n arc > 180 && line([-radius, 0, 0], [-outerRadius, 0, radius]),\n arc > 270 && line([0, -radius, 0], [0, -outerRadius, radius]),\n line([Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0],\n [Math.cos(arc * DEG2RAD) * outerRadius, Math.sin(arc * DEG2RAD) * outerRadius, radius]),\n ].concat(Shapes.Circle(arg)) as GeometryData[];\n },\n Edge (arg) {\n const hw = arg.width / 2;\n\n return [\n line([-hw, 0, 0], [hw, 0, 0]),\n ];\n },\n Rectangle (arg) {\n return [\n rect(arg.width, arg.height),\n ];\n },\n RectangleEdge (arg) {\n return [\n rect(arg.width, arg.height),\n ];\n },\n Donut (arg) {\n const { arc, radius, donutRadius } = arg;\n\n return [\n arcPath(donutRadius, 360, { translate: [radius, 0, 0], rotate: [90, 0, 0] }),\n arcPath(radius - donutRadius, arc),\n arcPath(radius + donutRadius, arc),\n arcPath(radius, arc, { translate: [0, 0, donutRadius] }),\n arcPath(radius, arc, { translate: [0, 0, -donutRadius] }),\n arc % 360 === 0 ? arcPath(donutRadius, 360, {\n translate: [-radius, 0, 0],\n rotate: [90, 0, 0],\n }) : arcPath(donutRadius, 360, {\n translate: [Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0],\n rotate: [90, 0, arc],\n }),\n ];\n },\n path (arg) {\n const positions = arg.keys;\n const ret = [];\n\n for (let i = 0; i < positions.length - 1; i++) {\n ret.push(rect(rectSize, rectSize, positions[i]));\n ret.push(line(positions[i], positions[i + 1]));\n }\n ret.push(rect(rectSize, rectSize, positions[positions.length - 1]));\n\n return ret;\n },\n};\n\nShapes['0'] = Shapes.None;\nShapes['1'] = Shapes.Sphere;\nShapes['2'] = Shapes.Cone;\nShapes['3'] = Shapes.Hemisphere;\nShapes['4'] = Shapes.Circle;\nShapes['5'] = Shapes.Donut;\nShapes['6'] = Shapes.Rectangle;\nShapes['7'] = Shapes.RectangleEdge;\nShapes['8'] = Shapes.Edge;\nShapes['9'] = Shapes.Texture;\n\nexport function createMeshFromShape (engine: Engine, args: { shape: string, type?: number }, options: { color?: vec3, depthTest?: boolean }): Mesh {\n const ret = Shapes[args.type || args.shape](args);\n const geo = combineGeometries(ret);\n\n return createMesh(engine, geo.points, geo.indices, options.color || [1, 0, 0], options.depthTest, args.shape);\n}\n\nfunction createMesh (engine: Engine, points: Float32Array, indices: Uint16Array, color: vec3, depthTest = false, name?: string): Mesh {\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(color),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n },\n shader: {\n shared: true,\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n\n void main(){\n gl_FragColor = vec4(u_color,1.0);\n }`,\n vertex: `precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixVP;\n void main(){\n gl_Position = effects_MatrixVP * u_model * vec4(a_Position,1.0);\n }`,\n },\n });\n\n material.setVector3('u_color', Vector3.fromArray(color));\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.depthTest = depthTest;\n material.stencilTest = false;\n material.blending = false;\n material.depthMask = true;\n const geometry = Geometry.create(\n engine,\n {\n attributes: {\n a_Position: {\n size: 3,\n data: points,\n },\n },\n indices: {\n data: indices,\n },\n mode: glContext.LINES,\n drawCount: indices.length,\n });\n\n return Mesh.create(\n engine,\n {\n name,\n geometry,\n material,\n priority: 3000,\n });\n}\n","import type { ShaderMacros, Geometry, GeometryDrawMode, Engine, spec } from '@galacean/effects';\nimport { GLSLVersion, glContext, GLGeometry, DestroyOptions, Material, Mesh, math } from '@galacean/effects';\n\nconst { Vector4 } = math;\n\nexport function createParticleWireframe (engine: Engine, mesh: Mesh, color: spec.vec3): Mesh {\n const geometry = new SharedGeometry(\n engine,\n {\n geometry: mesh.firstGeometry(),\n mode: glContext.LINES,\n index: {\n data: new Uint16Array(0),\n },\n name: 'testtest',\n });\n\n const { vertex, fragment, macros, name } = mesh.material.props.shader;\n const materialOptions = { ...mesh.material.props };\n const newMacros = [...(macros || [] as ShaderMacros), ['PREVIEW_BORDER', 1]] as ShaderMacros;\n\n materialOptions.shader = {\n vertex,\n fragment,\n macros: newMacros,\n shared: true,\n name: name + '_wireframe',\n glslVersion: engine.gpuCapability.level === 2 ? GLSLVersion.GLSL3 : GLSLVersion.GLSL1,\n };\n const material = Material.create(engine, materialOptions);\n\n material.depthTest = mesh.material.depthTest;\n material.setVector4('uPreviewColor', new Vector4(color[0], color[1], color[2], 1));\n\n return updateWireframeMesh(mesh.geometry, mesh.material, Mesh.create(\n engine,\n {\n geometry,\n material,\n priority: 3000,\n name: materialOptions.shader.name,\n }), WireframeGeometryType.quad);\n}\n\nexport enum WireframeGeometryType {\n triangle,\n quad,\n}\n\nexport function destroyWireframeMesh (mesh: Mesh) {\n mesh.geometry?.dispose();\n mesh.dispose({ geometries: DestroyOptions.keep });\n}\n\nexport function updateWireframeMesh (originGeometry: Geometry, originMaterial: Material, wireframe: Mesh, type: WireframeGeometryType) {\n wireframe.material.cloneUniforms(originMaterial);\n\n const geometry = originGeometry;\n const wireframeGeometry = wireframe.firstGeometry();\n\n for (const macro of Object.keys(originMaterial.enabledMacros)) {\n wireframe.material.enableMacro(macro, originMaterial.enabledMacros[macro]);\n }\n\n if (type === WireframeGeometryType.triangle) {\n // 线框模式不绘制模型的时候,drawCount 为负数\n const drawCount = Math.abs(geometry.getDrawCount());\n\n if (drawCount !== 0) {\n if (drawCount !== wireframeGeometry.getDrawCount() / 2) {\n const indexData = geometry.getIndexData() as Uint16Array | undefined;\n const data = indexData ? getTriangleIndexData(indexData) : getTriangleIndexDataByCount(drawCount);\n\n wireframeGeometry.setIndexData(data);\n wireframeGeometry.setDrawCount(data.length);\n }\n }\n } else if (type === WireframeGeometryType.quad) {\n if (geometry.getDrawCount() / 6 !== wireframeGeometry.getDrawCount() / 8) {\n const data = getQuadIndexData(geometry.getDrawCount() / 6, geometry.getIndexData() as Uint16Array);\n\n wireframeGeometry.setIndexData(data);\n wireframeGeometry.setDrawCount(data.length);\n }\n }\n\n return wireframe;\n}\n\nfunction getQuadIndexData (faceCount: number, oid: Uint16Array): Uint16Array {\n const indexData = new Uint16Array(faceCount * 8);\n\n for (let i = 0; i < faceCount; i++) {\n const idx = i * 8;\n const base = i * 4;\n\n indexData[idx] = base;\n indexData[idx + 1] = 1 + base;\n indexData[idx + 2] = 1 + base;\n indexData[idx + 3] = 3 + base;\n indexData[idx + 4] = 3 + base;\n indexData[idx + 5] = 2 + base;\n indexData[idx + 6] = 2 + base;\n indexData[idx + 7] = base;\n }\n\n return indexData;\n}\n\nexport function createModeWireframe (engine: Engine, mesh: Mesh, color: spec.vec3): Mesh {\n const geometry = new SharedGeometry(\n engine,\n {\n geometry: mesh.firstGeometry(),\n mode: glContext.LINES,\n index: {\n data: new Uint32Array(0),\n },\n });\n const { vertex, fragment } = mesh.material.shader.shaderData;\n const materialOptions = { ...mesh.material.props };\n\n const newMacros = [['PREVIEW_BORDER', 1]] as ShaderMacros;\n\n materialOptions.shader = {\n vertex,\n fragment,\n macros: newMacros,\n shared: true,\n name: (mesh.name ?? 'unamedmesh') + '_wireframe',\n glslVersion: engine.gpuCapability.level === 2 ? GLSLVersion.GLSL3 : GLSLVersion.GLSL1,\n };\n\n const material = Material.create(engine, materialOptions);\n\n material.depthTest = true;\n material.setVector4('uPreviewColor', new Vector4(color[0], color[1], color[2], 1));\n\n return updateWireframeMesh(mesh.geometry, mesh.material, Mesh.create(\n engine,\n {\n geometry,\n material,\n priority: 3000,\n name: materialOptions.shader.name,\n }), WireframeGeometryType.triangle);\n}\n\nfunction getTriangleIndexDataByCount (drawCount: number): Uint32Array {\n const faceCount = drawCount / 3;\n const indexData = new Uint32Array(faceCount * 6);\n\n for (let i = 0; i < faceCount; i++) {\n const idx = i * 6;\n const p0 = i * 3;\n const p1 = p0 + 1;\n const p2 = p0 + 2;\n\n indexData[idx] = p0;\n indexData[idx + 1] = p1;\n indexData[idx + 2] = p1;\n indexData[idx + 3] = p2;\n indexData[idx + 4] = p2;\n indexData[idx + 5] = p0;\n }\n\n return indexData;\n}\n\nfunction getTriangleIndexData (oid: Uint16Array): Uint32Array {\n const faceCount = oid.length / 3;\n const indexData = new Uint32Array(faceCount * 6);\n\n for (let i = 0; i < faceCount; i++) {\n const idx = i * 6;\n const base = i * 3;\n const p0 = oid[base];\n const p1 = oid[base + 1];\n const p2 = oid[base + 2];\n\n indexData[idx] = p0;\n indexData[idx + 1] = p1;\n indexData[idx + 2] = p1;\n indexData[idx + 3] = p2;\n indexData[idx + 4] = p2;\n indexData[idx + 5] = p0;\n }\n\n return indexData;\n}\n\nexport interface SharedGeometryOptions {\n name?: string,\n drawStart?: number,\n drawCount?: number,\n mode?: GeometryDrawMode,\n index?: { data: Uint8Array | Uint16Array | Uint32Array, releasable?: boolean },\n geometry: Geometry,\n}\n\nexport class SharedGeometry extends GLGeometry {\n private readonly source: GLGeometry;\n\n constructor (engine: Engine, options: SharedGeometryOptions) {\n super(engine, { attributes: {}, ...options });\n let indexData = options.index ? options.index.data : options.geometry.getIndexData();\n\n if (indexData) {\n //@ts-expect-error safe to assign\n indexData = new indexData.constructor(indexData) as Uint16Array;\n }\n this.indices = indexData;\n this.source = options.geometry as GLGeometry;\n this.drawCount = options.drawCount || 0;\n this.drawStart = options.drawStart || 0;\n this.mode = options.mode || 0;\n for (const name in this.source.attributes) {\n this.attributes[name] = { ...this.source.attributes[name] };\n }\n }\n\n override initialize () {\n if (!this.isInitialized) {\n const geometry = this.source;\n\n geometry.initialize();\n //this.indicesBuffer = this._source.indicesBuffer;\n this.buffers = this.source.buffers;\n this.bufferProps = this.source.bufferProps;\n //this.dirtyFlags = this._source.dirtyFlags;\n //this.vaos = this._source.vaos;\n //创建ibo\n if (this.indices) {\n this.indicesBuffer = this.createIndicesBuffer(this.indices);\n }\n this.flush();\n this.initialized = true;\n }\n }\n\n override getAttributeNames (): string[] {\n return this.source.getAttributeNames();\n }\n\n override flush () {\n this.source.flush();\n\n super.flush();\n }\n\n override dispose () {\n // from source geometry\n this.buffers = {};\n this.bufferProps = {};\n super.dispose();\n // @ts-expect-error\n this.source = null;\n }\n}\n","import type { GeometryDrawMode, HitTestCustomParams, RenderFrame, Renderer, Texture, VFXItem } from '@galacean/effects';\nimport {\n RenderPass, Mesh, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, HitTestType,\n TextureLoadAction, ParticleSystemRenderer, RendererComponent, Transform, assertExist,\n effectsClass, glContext, math, serialize, spec, PluginSystem,\n} from '@galacean/effects';\nimport type { GizmoVFXItemOptions } from './define';\nimport { GizmoSubType } from './define';\nimport type { EditorGizmoPlugin } from './gizmo-loader';\nimport { iconTextures } from './gizmo-loader';\nimport type { GizmoItemBoundingSphere, GizmoItemBounding, Ray, TriangleLike } from './gizmo-vfx-item';\nimport { BoundingType } from './gizmo-vfx-item';\nimport { computeOrthographicOffCenter } from './math-utils';\nimport { createMeshFromSubType } from './mesh';\nimport { intersectRayLine } from './raycast';\nimport { createMeshFromShape } from './shape';\nimport { moveToPointWidthFixDistance } from './util';\nimport { WireframeGeometryType, createModeWireframe, destroyWireframeMesh, updateWireframeMesh } from './wireframe';\nimport { GeometryType } from './geometry';\n\n// TODO: Move to spec\ninterface GizmoComponentData extends spec.ComponentData {\n options: GizmoVFXItemOptions,\n transform?: Record<string, unknown>,\n}\n\nconst editorRenderPassName = 'editor-gizmo';\nconst frontRenderPassName = 'front-gizmo';\nconst behindRenderPassName = 'behind-gizmo';\n\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\ntype Matrix4 = math.Matrix4;\n\nconst { Vector2, Vector3, Matrix4, Quaternion } = math;\nconst constants = glContext;\n\n@effectsClass('GizmoComponent')\nexport class GizmoComponent extends RendererComponent {\n gizmoPlugin: EditorGizmoPlugin;\n targetItem: VFXItem;\n needCreateModelContent: boolean;\n target: string;\n subType: GizmoSubType;\n size: any;\n contents?: Map<Mesh, Transform>;\n boundingMap: Map<string, GizmoItemBounding> = new Map();\n hitBounding?: { key: string, position: Vector3 };\n wireframeMesh: Mesh;\n @serialize()\n coordinateSpace: CoordinateSpace = CoordinateSpace.Local;\n\n color: spec.vec3;\n renderMode!: GeometryDrawMode;\n depthTest?: boolean;\n mat = Matrix4.fromIdentity();\n wireframeMeshes: Mesh[] = [];\n meshes: Mesh[] = [];\n mesh: Mesh | null = null;\n\n override onStart (): void {\n this.item.getHitTestParams = this.getHitTestParams;\n for (const item of this.item.composition?.items ?? []) {\n if (item.id === this.target) {\n this.targetItem = item;\n }\n }\n const targetItem = this.targetItem;\n\n if (!targetItem) {\n\n return;\n }\n const composition = this.item.composition;\n\n for (const plugin of PluginSystem.getPlugins() ?? []) {\n if (plugin.name === 'editor-gizmo') {\n this.gizmoPlugin = plugin as EditorGizmoPlugin;\n }\n }\n const gizmoPlugin = this.gizmoPlugin;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n if (targetItem.type === '7' || !gizmoPlugin) {\n return;\n }\n const gizmoSubType = this.subType;\n\n switch (gizmoSubType) {\n case GizmoSubType.particleEmitter:\n this.createParticleContent(targetItem);\n\n break;\n case GizmoSubType.modelWireframe:\n this.needCreateModelContent = true;\n this.createModelContent(targetItem);\n\n break;\n case GizmoSubType.box:\n case GizmoSubType.sphere:\n case GizmoSubType.cylinder:\n case GizmoSubType.cone:\n case GizmoSubType.torus:\n case GizmoSubType.sprite:\n case GizmoSubType.frustum:\n case GizmoSubType.directionLight:\n case GizmoSubType.pointLight:\n case GizmoSubType.spotLight:\n case GizmoSubType.floorGrid:\n this.createBasicContent(targetItem, gizmoSubType);\n\n break;\n case GizmoSubType.camera:\n case GizmoSubType.light:\n this.createBasicContent(targetItem, gizmoSubType, iconTextures);\n\n break;\n case GizmoSubType.rotation:\n case GizmoSubType.scale:\n case GizmoSubType.translation:\n this.createCombinationContent(targetItem, gizmoSubType);\n\n break;\n case GizmoSubType.viewHelper:\n this.createCombinationContent(targetItem, gizmoSubType, iconTextures);\n\n break;\n case GizmoSubType.boundingBox:\n this.createBoundingBoxContent(targetItem);\n\n break;\n default:\n break;\n }\n composition?.loaderData.gizmoItems.push(this.item);\n }\n\n override onEnable (): void {\n super.onEnable();\n if (!this.item.composition) {\n return;\n }\n\n const renderFrame = this.item.composition.renderFrame;\n\n for (const mesh of this.meshes) {\n if (mesh.name === GeometryType.FloorGrid.toString() || mesh.name === 'Box') {\n this.getFrontRenderPass(renderFrame).addMesh(mesh);\n } else if (mesh.name === 'translation' || mesh.name === 'scale' || mesh.name === 'rotation') {\n this.getBehindRenderPass(renderFrame).addMesh(mesh);\n } else {\n this.getEditorRenderPass(renderFrame).addMesh(mesh);\n }\n }\n }\n\n override onDisable (): void {\n super.onDisable();\n if (!this.item.composition) {\n return;\n }\n\n const renderFrame = this.item.composition.renderFrame;\n\n for (const mesh of this.meshes) {\n if (mesh.name === GeometryType.FloorGrid.toString() || mesh.name === 'Box') {\n this.getFrontRenderPass(renderFrame).removeMesh(mesh);\n } else if (mesh.name === 'translation' || mesh.name === 'scale' || mesh.name === 'rotation') {\n this.getBehindRenderPass(renderFrame).removeMesh(mesh);\n } else {\n this.getEditorRenderPass(renderFrame).removeMesh(mesh);\n }\n }\n }\n\n override onUpdate (dt: number): void {\n this.updateRenderData();\n }\n\n override onDestroy (): void {\n const gizmoMesh = this.mesh;\n const composition = this.item.composition;\n\n if (!composition) {\n return;\n }\n\n if (gizmoMesh && !gizmoMesh.isDestroyed) {\n gizmoMesh.dispose();\n\n if (gizmoMesh.name === GeometryType.FloorGrid.toString() || gizmoMesh.name === 'Box') {\n this.getFrontRenderPass(composition.renderFrame).removeMesh(gizmoMesh);\n } else {\n this.getEditorRenderPass(composition.renderFrame).removeMesh(gizmoMesh);\n }\n }\n if (this.contents) {\n for (const [mesh] of this.contents) {\n if (!mesh.isDestroyed) {\n mesh.dispose();\n if (mesh.name === 'translation' || mesh.name === 'scale' || mesh.name === 'rotation') {\n this.getBehindRenderPass(composition.renderFrame).removeMesh(mesh);\n } else {\n this.getEditorRenderPass(composition.renderFrame).removeMesh(mesh);\n }\n }\n }\n }\n\n if (this && this.wireframeMeshes.length > 0) {\n this.wireframeMeshes.forEach(mesh => {\n if (!mesh.isDestroyed) {\n destroyWireframeMesh(mesh);\n this.getEditorRenderPass(composition.renderFrame).removeMesh(mesh);\n }\n });\n } else {\n const wireframeMesh = this.wireframeMesh;\n\n if (wireframeMesh && !wireframeMesh.isDestroyed) {\n destroyWireframeMesh(wireframeMesh);\n this.getEditorRenderPass(composition.renderFrame).removeMesh(wireframeMesh);\n }\n }\n\n const arr: VFXItem[] = composition.loaderData.gizmoItems;\n const index = arr.indexOf(this.item);\n\n if (index > -1) {\n arr.splice(index, 1);\n }\n }\n\n override render (renderer: Renderer): void {\n // The material of the 3D plugin is updated during the render phase. In order to obtain the correct value, it is kept consistent here.\n if (this.subType === GizmoSubType.modelWireframe) { // 模型线框\n if (this.wireframeMesh && this.targetItem) {\n //@ts-expect-error TODO 和 3D 类型解耦\n const pMesh = this.targetItem.getComponent(RendererComponent)?.content;\n const meshes = pMesh.subMeshes;\n const wireframeMeshes = this.wireframeMeshes;\n\n if (meshes?.length > 0) {\n wireframeMeshes[0].worldMatrix.copyFrom(pMesh.matrix);\n updateWireframeMesh(meshes[0].geometry.geometry, meshes[0].material.effectMaterial, wireframeMeshes[0], WireframeGeometryType.triangle);\n }\n }\n }\n }\n\n updateRenderData () {\n const item = this.item;\n const gizmoSubType = this.subType;\n\n if (gizmoSubType === GizmoSubType.particleEmitter) { // 粒子发射器\n if (this.targetItem && this.mesh) {\n this.mat = this.targetItem.transform.getWorldMatrix();\n this.mesh.material.setMatrix('u_model', this.mat);\n }\n if (this.wireframeMesh && this.targetItem) {\n const particle = this.targetItem.getComponent(ParticleSystemRenderer);\n\n if (particle) {\n updateWireframeMesh(particle.particleMesh.mesh.geometry, particle.particleMesh.mesh.material, this.wireframeMesh, WireframeGeometryType.quad);\n this.wireframeMesh.worldMatrix = particle.particleMesh.mesh.worldMatrix;\n }\n }\n } else { // 几何体模型\n if (this.targetItem) {\n if (this.contents) { // 组合几何体\n // const targetTransform = this.targetItem.transform.clone();\n\n const worldPos = new Vector3();\n const worldQuat = new Quaternion();\n const worldScale = new Vector3(1, 1, 1);\n\n // Scale Gizmo 没有世界空间\n if (this.coordinateSpace == CoordinateSpace.Local || gizmoSubType === GizmoSubType.scale) {\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n } else {\n this.targetItem.transform.assignWorldTRS(worldPos);\n }\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldScale,\n valid: true,\n });\n\n // 移动\\旋转\\缩放gizmo去除近大远小\n if (gizmoSubType === GizmoSubType.rotation || gizmoSubType === GizmoSubType.scale || gizmoSubType === GizmoSubType.translation) {\n const camera = item.composition!.camera;\n const cameraPos = camera.position || new Vector3();\n const itemPos = targetTransform.position;\n const newPos = moveToPointWidthFixDistance(cameraPos, itemPos);\n\n targetTransform.setPosition(newPos.x, newPos.y, newPos.z);\n }\n\n this.mat = targetTransform.getWorldMatrix();\n const center = targetTransform.position;\n\n for (const [mesh, transform] of this.contents) {\n let worldMat4: Matrix4;\n\n transform.parentTransform = targetTransform;\n const position = new Vector3();\n\n transform.assignWorldTRS(position);\n // 物体和中心点在屏幕空间上投影的距离\n let distanceToCneter = 100;\n let theta = 1;\n\n if (gizmoSubType === GizmoSubType.viewHelper) {\n // 正交投影只需要计算物体在XY平面上的投影与中心点的距离\n if (mesh.name === 'sprite') {\n distanceToCneter = position.toVector2().distance(center.toVector2());\n theta = (this.boundingMap.get('posX') as GizmoItemBoundingSphere).radius;\n }\n // 将物体挂到相机的transform上\n const fov = 30; // 指定fov角度\n const screenWidth = item.composition!.renderer.getWidth();\n const screenHeight = item.composition!.renderer.getHeight();\n const distance = 16; // 指定物体与相机的距离\n const width = 2 * Math.tan(fov * Math.PI / 360) * distance;\n const aspect = screenWidth / screenHeight;\n const height = width / aspect;\n const cameraModelMat4 = item.composition!.camera.getInverseViewMatrix();\n const padding = this.size.padding || 1; // 指定viewHelper与屏幕右上角的边距\n let localMat: Matrix4;\n\n localMat = transform.getWorldMatrix();\n const worldTransform: Transform = new Transform({\n valid: true,\n });\n\n worldTransform.cloneFromMatrix(localMat);\n worldTransform.setPosition((position.x + width / 2) - padding, (position.y + height / 2) - padding, position.z);\n localMat = worldTransform.getWorldMatrix();\n worldMat4 = cameraModelMat4.clone().multiply(localMat);\n // 正交投影到屏幕上\n const proMat5 = computeOrthographicOffCenter(-width / 2, width / 2, -height / 2, height / 2, -distance, distance);\n\n mesh.material.setMatrix('_MatrixP', proMat5);\n } else {\n if (gizmoSubType === GizmoSubType.rotation) {\n const cameraPos = item.composition!.camera.position || [0, 0, 0];\n\n mesh.material.setVector3('u_cameraPos', cameraPos);\n mesh.material.setVector3('u_center', center);\n }\n worldMat4 = transform.getWorldMatrix();\n // TODO 计算物体和中心点在屏幕空间上投影的距离 distanceToCneter\n }\n mesh.material.setMatrix('u_model', worldMat4);\n\n // 使用distanceToCneter处理坐标轴旋转到中心点附近时的遮挡问题\n if (distanceToCneter < theta) {\n if (distanceToCneter < theta * 0.5) {\n mesh.material.setVector2('u_alpha', new Vector2(0, 0));\n } else {\n mesh.material.setVector2('u_alpha', new Vector2((2 / theta) * distanceToCneter - 1, 0));\n }\n }\n }\n }\n if (this.mesh) { // 基础几何体\n const worldPos = new Vector3();\n const worldQuat = new Quaternion();\n const worldSca = new Vector3(1, 1, 1);\n\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldSca,\n valid: true,\n });\n\n if (gizmoSubType === GizmoSubType.light || gizmoSubType === GizmoSubType.camera) {\n const camera = item.composition!.camera;\n const cameraPos = camera.position || new Vector3(0, 0, 0);\n const itemPos = targetTransform.position;\n const newPos = moveToPointWidthFixDistance(cameraPos, itemPos);\n\n targetTransform.setPosition(newPos.x, newPos.y, newPos.z);\n }\n\n this.mat = targetTransform.getWorldMatrix();\n\n this.mesh.material.setMatrix('u_model', targetTransform.getWorldMatrix());\n }\n }\n }\n }\n\n /**\n * 获取默认绘制模式\n * @returns 绘制模式常量\n */\n getDefaultRenderMode (): GeometryDrawMode {\n let result: GeometryDrawMode;\n const gizmoSubType = this.subType;\n\n switch (gizmoSubType) {\n case GizmoSubType.particleEmitter:\n case GizmoSubType.modelWireframe:\n case GizmoSubType.frustum:\n case GizmoSubType.directionLight:\n case GizmoSubType.spotLight:\n case GizmoSubType.pointLight:\n case GizmoSubType.floorGrid:\n result = constants.LINES;\n\n break;\n default:\n result = constants.TRIANGLES;\n\n break;\n }\n\n return result;\n }\n\n /**\n * 获取默认尺寸\n * @returns 几何体尺寸\n */\n getDefaultSize () {\n let result = {};\n const gizmoSubType = this.subType;\n\n switch (gizmoSubType) {\n case GizmoSubType.box:\n result = { width: 1, height: 1, depth: 1 };\n\n break;\n case GizmoSubType.sphere:\n result = { radius: 1 };\n\n break;\n case GizmoSubType.cylinder:\n result = { radius: 1, height: 1 };\n\n break;\n case GizmoSubType.cone:\n result = { radius: 1, height: 1 };\n\n break;\n default:\n result = {};\n\n break;\n }\n\n return result;\n }\n\n createModelContent (item: VFXItem) {\n const modelComponent = item.getComponent(RendererComponent);\n //@ts-expect-error TODO 和 3D 类型解耦\n const psubMesh = modelComponent.content.subMeshes[0];\n const engine = item.composition?.renderer.engine;\n\n assertExist(engine);\n\n if (psubMesh) {\n this.targetItem = item;\n this.wireframeMeshes = [];\n\n const originMesh = Mesh.create(\n engine,\n {\n geometry: psubMesh.geometry.geometry,\n material: psubMesh.material.effectMaterial,\n priority: 3000,\n });\n const mesh = this.wireframeMesh = createModeWireframe(engine, originMesh, this.color);\n\n this.wireframeMeshes.push(mesh);\n this.meshes.push(mesh);\n }\n }\n\n createParticleContent (item: VFXItem) {\n const shape = (item as any).props.content.shape;\n const engine = this.item.composition?.renderer.engine;\n\n assertExist(engine);\n\n this.targetItem = item;\n if (shape && shape.type) {\n const mesh = this.mesh = createMeshFromShape(engine, shape, { color: this.color });\n\n this.meshes.push(mesh);\n }\n }\n\n /**\n * 创建 BoundingBox 几何体模型\n * @param item - VFXItem\n */\n createBoundingBoxContent (item: VFXItem) {\n const gizmoItem = this.item;\n const shape = {\n shape: 'Box',\n width: this.size.width,\n height: this.size.height,\n depth: this.size.depth,\n center: this.size.center,\n };\n const engine = gizmoItem.composition?.renderer.engine;\n\n assertExist(engine);\n\n this.targetItem = item;\n if (shape) {\n const mesh = this.mesh = createMeshFromShape(engine, shape, { color: this.color, depthTest: this.depthTest });\n\n this.meshes.push(mesh);\n }\n }\n\n /**\n * 创建基础几何体模型\n * @param item - VFXItem\n * @param subType - GizmoSubType 类型\n */\n createBasicContent (item: VFXItem, subType: GizmoSubType, iconTextures?: Map<string, Texture>) {\n const gizmoItem = this.item;\n const options = {\n size: this.size,\n color: this.color,\n renderMode: this.renderMode,\n depthTest: this.depthTest,\n };\n const engine = gizmoItem.composition?.renderer.engine;\n\n assertExist(engine);\n\n const mesh = this.mesh = createMeshFromSubType(engine, subType, this.boundingMap, iconTextures, options) as Mesh;\n\n this.targetItem = item;\n this.meshes.push(mesh);\n }\n\n /**\n * 创建组合几何体模型\n * @param item - VFXItem\n * @param subType - GizmoSubType 类型\n * @param iconTextures - XYZ 图标纹理(viewHelper 专用)\n */\n createCombinationContent (item: VFXItem, subType: GizmoSubType, iconTextures?: Map<string, Texture>) {\n const gizmoItem = this.item;\n const options = {\n size: this.size,\n renderMode: this.renderMode,\n };\n\n const engine = gizmoItem.composition?.renderer.engine;\n\n assertExist(engine);\n\n this.contents = createMeshFromSubType(engine, subType, this.boundingMap, iconTextures, options) as Map<Mesh, Transform>;\n for (const mesh of this.contents.keys()) {\n this.meshes.push(mesh);\n }\n this.targetItem = item;\n }\n\n override fromData (data: GizmoComponentData): void {\n super.fromData(data);\n const item = this.item;\n\n item.duration = 999;\n const {\n target, subType, renderMode, size, depthTest,\n color = [255, 255, 255],\n } = data.options;\n\n this.target = target;\n this.subType = subType;\n this.renderMode = renderMode || this.getDefaultRenderMode();\n this.size = size || this.getDefaultSize();\n this.depthTest = depthTest;\n\n const [r, g, b] = color;\n\n this.color = [r / 255, g / 255, b / 255];\n if (data) {\n item.transform = new Transform(data.transform);\n }\n }\n\n /**\n * 射线检测算法\n * @returns 包含射线检测算法回调方法的参数\n */\n private getHitTestParams = (): void | HitTestCustomParams => {\n const item = this.item;\n const boundingMap = this.boundingMap;\n\n if (boundingMap.size > 0) {\n const boundingKeys = boundingMap.keys();\n let worldMat4: Matrix4;\n\n worldMat4 = this.transform.getWorldMatrix();\n const targetItem = this.targetItem;\n\n if (targetItem) {\n //const targetTransform = this.targetItem.transform.clone();\n const worldPos = new Vector3();\n const worldQuat = new Quaternion();\n const worldSca = new Vector3(1, 1, 1);\n const gizmoSubType = this.subType;\n\n // Scale Gizmo 没有世界空间\n if (this.coordinateSpace == CoordinateSpace.Local || gizmoSubType === GizmoSubType.scale) {\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n } else {\n this.targetItem.transform.assignWorldTRS(worldPos);\n }\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldSca,\n valid: true,\n });\n\n // 移动\\旋转\\缩放gizmo去除近大远小\n if (\n gizmoSubType === GizmoSubType.rotation ||\n gizmoSubType === GizmoSubType.scale ||\n gizmoSubType === GizmoSubType.translation ||\n gizmoSubType === GizmoSubType.camera ||\n gizmoSubType === GizmoSubType.light\n ) {\n const camera = item.composition!.camera;\n const cameraPos = camera.position || [0, 0, 0];\n const itemPos = targetTransform.position;\n const newPos = moveToPointWidthFixDistance(cameraPos, itemPos);\n\n targetTransform.setPosition(newPos.x, newPos.y, newPos.z);\n worldMat4 = targetTransform.getWorldMatrix();\n } else {\n worldMat4 = targetTransform.getWorldMatrix();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = item;\n\n return {\n type: HitTestType.custom,\n clipMasks:this.frameClipMasks,\n /**\n * 自定义射线检测算法\n * @param ray 射线参数\n * @param pointInCanvas 屏幕坐标\n * @returns\n */\n collect (ray: Ray, pointInCanvas: Vector2): Vector3[] | void {\n const hitPositions = [];\n const gizmoComponent = self.getComponent(GizmoComponent);\n\n gizmoComponent.hitBounding = undefined;\n for (const key of boundingKeys) {\n const bounding = boundingMap.get(key);\n const center = new Vector3();\n const worldCenter = new Vector3();\n\n if (bounding?.type === BoundingType.box || bounding?.type === BoundingType.sphere) {\n if (bounding?.center) {\n center.copyFrom(bounding?.center);\n }\n worldMat4.projectPoint(center, worldCenter);\n }\n let position: Vector3 | undefined;\n\n switch (bounding?.type) {\n case BoundingType.box: // 立方体包围盒\n {\n const boxHalfSize = bounding.size.clone().multiply(0.5);\n const boxMax = center.clone().add(boxHalfSize);\n const boxMin = center.clone().subtract(boxHalfSize);\n\n position = ray.intersectBox({ min: boxMin, max: boxMax }, new Vector3());\n }\n\n break;\n case BoundingType.sphere: // 球体包围盒\n\n // viewHelper 使用了正交投影,使用屏幕投影点计算\n if (gizmoComponent.subType === GizmoSubType.viewHelper) {\n // 计算正交投影矩阵\n const viewMat4 = self.composition!.camera.getViewMatrix();\n const fov = 30; // 指定fov角度\n const screenWidth = self.composition!.renderer.getWidth();\n const screenHeight = self.composition!.renderer.getHeight();\n const distance = 16; // 指定物体与相机的距离\n const width = 2 * Math.tan(fov * Math.PI / 360) * distance;\n const aspect = screenWidth / screenHeight;\n const height = width / aspect;\n const proMat4 = computeOrthographicOffCenter(-width / 2, width / 2, -height / 2, height / 2, -distance, distance);\n\n // 将包围盒挂到相机的 transform 上\n const cameraModelMat4 = self.composition!.camera.getInverseViewMatrix();\n const localTransform = new Transform({\n valid: true,\n });\n\n localTransform.cloneFromMatrix(worldMat4);\n const pos = localTransform.position;\n const padding = gizmoComponent.size.padding || 1; // 指定viewHelper与屏幕右上角的边距\n\n localTransform.setPosition((pos.x + width / 2) - padding, (pos.y + height / 2) - padding, pos.z);\n const localMat4 = localTransform.getWorldMatrix();\n const modelMat4 = cameraModelMat4.clone().multiply(localMat4);\n\n modelMat4.projectPoint(center, worldCenter);\n\n // 包围球中心点正交投影到屏幕上\n const vpMat4 = proMat4.clone().multiply(viewMat4);\n const mvpMat4 = vpMat4.clone().multiply(modelMat4);\n const screenCenter = mvpMat4.projectPoint(center, new Vector3());\n // const screenCenterX = screenCenter.x;\n // const screenCenterY = screenCenter.y;\n\n // 包围球上的点正交投影到屏幕上\n const radius = bounding.radius;\n const up = new Vector3(\n localMat4.elements[1],\n localMat4.elements[5],\n localMat4.elements[9],\n ).normalize();\n\n const point = up.clone().multiply(radius);\n\n point.add(center);\n\n const screenPoint = mvpMat4.projectPoint(point, new Vector3());\n // const screenPointX = screenPoint.x;\n // const screenPointY = screenPoint.y;\n\n // 计算正交投影到屏幕上的包围球的半径\n const screenCenter2 = screenCenter.toVector2();\n const screenPoint2 = screenPoint.toVector2();\n const screenRadius = screenCenter2.distance(screenPoint2);\n\n if (pointInCanvas.distance(screenCenter2) < screenRadius * 1.2) {\n position = worldCenter;\n }\n } else {\n position = ray.intersectSphere({ center: worldCenter, radius: bounding.radius }, new Vector3());\n }\n\n break;\n case BoundingType.triangle: {// 三角数组包围盒\n const { triangles, backfaceCulling } = bounding;\n const tmpPositions: Vector3[] = [];\n let tmpPosition;\n\n for (let j = 0; j < triangles.length; j++) {\n const triangle = triangles[j];\n const worldTriangle: TriangleLike = {\n p0: worldMat4.projectPoint(triangle.p0 as Vector3, new Vector3()),\n p1: worldMat4.projectPoint(triangle.p1 as Vector3, new Vector3()),\n p2: worldMat4.projectPoint(triangle.p2 as Vector3, new Vector3()),\n };\n\n tmpPosition = ray.intersectTriangle(worldTriangle, new Vector3(), backfaceCulling);\n if (tmpPosition) {\n tmpPositions.push(tmpPosition);\n }\n }\n // 仅保存距离相机最近的点\n if (tmpPositions.length > 0) {\n let lastDistance: number;\n\n tmpPositions.forEach(item => {\n const distance = ray.origin.distanceSquared(item);\n\n if (!lastDistance || distance < lastDistance) {\n lastDistance = distance;\n position = item;\n }\n });\n }\n\n break;\n }\n case BoundingType.line: {// 线条包围盒,将线条转换到屏幕空间,计算线条与屏幕交互点的距离,小于阈值判定为点中\n const { points, width } = bounding;\n\n position = intersectRayLine(new Vector3(), pointInCanvas, points, width / 2, worldMat4, self.composition!.camera);\n\n break;\n }\n default:\n break;\n }\n if (position) {\n hitPositions.push(position);\n // 缓存距离相机最近的 BoundingKey\n if (gizmoComponent.hitBounding) {\n const distance = ray.origin.distanceSquared(position);\n const lastDistance = ray.origin.distanceSquared(gizmoComponent.hitBounding.position);\n\n if (distance < lastDistance) {\n gizmoComponent.hitBounding.key = key;\n gizmoComponent.hitBounding.position = position;\n }\n } else {\n gizmoComponent.hitBounding = {\n key,\n position,\n };\n }\n }\n }\n if (hitPositions.length === 0) {\n gizmoComponent.hitBounding = undefined;\n }\n\n return hitPositions;\n },\n behavior: spec.InteractBehavior.NOTIFY,\n };\n }\n };\n\n getBehindRenderPass (pipeline: RenderFrame): RenderPass {\n let rp = pipeline.renderPasses.find(renderPass => renderPass.name === behindRenderPassName);\n\n if (!rp) {\n rp = new DrawGizmoBehindPass(pipeline.renderer);\n pipeline.addRenderPass(rp);\n }\n\n return rp;\n }\n\n getEditorRenderPass (pipeline: RenderFrame): RenderPass {\n let rp = pipeline.renderPasses.find(renderPass => renderPass.name === editorRenderPassName);\n\n if (!rp) {\n rp = new DrawGizmoEditorPass(pipeline.renderer);\n pipeline.addRenderPass(rp);\n }\n\n return rp;\n }\n\n getFrontRenderPass (pipeline: RenderFrame): RenderPass {\n let rp = pipeline.renderPasses.find(renderPass => renderPass.name === frontRenderPassName);\n\n if (!rp) {\n rp = new DrawGizmoFrontPass(pipeline.renderer);\n pipeline.addRenderPass(rp);\n }\n\n return rp;\n }\n\n}\n\nexport enum CoordinateSpace {\n Local,\n World\n}\n\nclass DrawGizmoBehindPass extends RenderPass {\n constructor (renderer: Renderer) {\n super(renderer);\n this.priority = RenderPassPriorityPostprocess + RenderPassPriorityPostprocess;\n this.name = behindRenderPassName;\n }\n\n override execute (renderer: Renderer): void {\n renderer.clear({ depthAction: TextureLoadAction.clear });\n renderer.renderMeshes(this.meshes);\n }\n}\n\nclass DrawGizmoFrontPass extends RenderPass {\n constructor (renderer: Renderer) {\n super(renderer);\n this.priority = RenderPassPriorityPrepare + 2;\n this.name = frontRenderPassName;\n }\n\n override execute (renderer: Renderer): void {\n renderer.renderMeshes(this.meshes);\n }\n}\n\nclass DrawGizmoEditorPass extends RenderPass {\n constructor (renderer: Renderer) {\n super(renderer);\n this.priority = RenderPassPriorityPostprocess + 2;\n this.name = editorRenderPassName;\n }\n\n override execute (renderer: Renderer): void {\n renderer.renderMeshes(this.meshes);\n }\n}\n","import type { Composition, Scene, SceneLoadOptions, Texture, VFXItem } from '@galacean/effects';\nimport { Plugin } from '@galacean/effects';\nimport { axisIconMap } from './constants';\nimport { createImage, createTexture } from './util';\nimport { GizmoComponent } from './gizmo-component';\n\nconst iconImages: Map<string, HTMLImageElement> = new Map();\n\nexport const iconTextures: Map<string, Texture> = new Map();\n\nexport class EditorGizmoPlugin extends Plugin {\n override order = 1001;\n\n override async onAssetsLoadStart (scene: Scene, options?: SceneLoadOptions | undefined): Promise<void> {\n iconTextures.clear();\n\n if (iconImages.size !== axisIconMap.size) {\n for (const [name, data] of axisIconMap) {\n iconImages.set(name, await createImage(data));\n }\n }\n }\n\n override onCompositionCreated (composition: Composition, scene: Scene) {\n const engine = composition.renderer.engine;\n\n iconImages.forEach((image, name) => {\n iconTextures.set(name, createTexture(engine, image));\n });\n iconImages.clear();\n\n const items = composition.items;\n const targetMap: { [key: string]: VFXItem[] } = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const gizmoComponent = item.getComponent(GizmoComponent);\n\n if (gizmoComponent) {\n if (!targetMap[gizmoComponent.target]) {\n targetMap[gizmoComponent.target] = [];\n }\n targetMap[gizmoComponent.target].push(item);\n }\n }\n composition.loaderData.gizmoTarget = targetMap;\n composition.loaderData.gizmoItems = [];\n }\n}\n","import * as EFFECTS from '@galacean/effects';\nimport { logger, registerPlugin } from '@galacean/effects';\nimport { EditorGizmoPlugin } from './gizmo-loader';\nimport { GizmoSubType } from './define';\nimport { GeometryType, createGeometry } from './geometry';\n\nregisterPlugin('editor-gizmo', EditorGizmoPlugin);\n\nexport { DirectionLightData } from './geometry/direction-light';\nexport {\n GizmoSubType,\n GeometryType,\n createGeometry,\n};\nexport * from './gizmo-component';\n\n/**\n * 插件版本号\n */\nexport const version = __VERSION__;\n\nlogger.info(`Plugin editor gizmo version: ${version}.`);\n\nif (version !== EFFECTS.version) {\n console.error(\n '注意:请统一 Editor Gizmo 插件与 Player 版本,不统一的版本混用会有不可预知的后果!',\n '\\nAttention: Please ensure the Editor Gizmo plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!'\n );\n}\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_async_to_generator","fn","self","args","arguments","apply","err","undefined","_set_prototype_of","o","p","Object","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","prototype","create","constructor","writable","configurable","_is_native_reflect_construct","result","Boolean","valueOf","call","Reflect","construct","_","_construct","Parent","Class","a","push","Constructor","Function","bind","instance","_get_prototype_of","getPrototypeOf","_is_native_function","toString","indexOf","_wrap_native_super","_cache","Map","has","get","set","Wrapper","enumerable","_array_like_to_array","arr","len","length","i","arr2","Array","_unsupported_iterable_to_array","minLen","n","slice","name","from","test","_create_for_of_iterator_helper_loose","allowArrayLike","it","Symbol","iterator","next","isArray","_instanceof","left","right","hasInstance","__decorate","decorators","target","desc","c","r","getOwnPropertyDescriptor","d","decorate","defineProperty","__generator","thisArg","body","label","sent","t","trys","ops","f","y","g","Iterator","verb","v","step","op","pop","e","SuppressedError","suppressed","message","Error","color","xAxisColor","yAxisColor","zAxisColor","renderMode","glContext","TRIANGLES","axisIconMap","createImage","imageUrl","image","Image","src","onload","onerror","createTexture","engine","hookDestroy","texture","Texture","dispose","noop","moveToPointWidthFixDistance","targetPos","currentPos","vecCameraItem","clone","subtract","normalVecCameraItem","normalize","scalerVecCameraItem","multiply","vecScalerItem","vecItemScaler","add","GizmoSubType","math","Vector3","Ray","BoundingType","Matrix4","Vector2","distanceOfPointAndLine","point","line","AC","BC","AB","subtractVectors","lengthAC","lengthBC","lengthAB","P","allArea","Math","abs","sqrt","distance","l1","pow","l2","isInLine","projectionOfPointAndLine","line0","toVector2","line1","worldAB","worldAP","worldP","computeOrthographicOffCenter","bottom","top","near","far","b","tx","ty","tz","_extends","assign","source","hasOwnProperty","GeometryData","points","uvs","normals","indices","createXYPlaneCircle","radius","z","segments","thetaStart","thetaLength","startIndex","theta","x","cos","sin","createXZPlaneCircle","createYZPlaneCircle","SphereGeometryData","widthSegments","heightSegments","phiStart","phiLength","PI","max","floor","thetaEnd","min","grid","index","iy","verticesRow","uOffset","ix","u","normal","toArray","BoxGeometryData","width","height","depth","buildPlane","w","uDir","vDir","widthHalf","heightHalf","depthHalf","vertexCounter","numberOfVertices","CylinderGeometryData","radiusTop","radiusBottom","radialSegments","openEnded","generateTorso","slope","indexRow","sinTheta","cosTheta","px","py","halfHeight","pz","indexArray","generateCap","centerIndexStart","sign","centerIndexEnd","uvU","uvV","ConeGeometryData","TorusGeometryData","tube","tubularSegments","arc","j","cx","cy","PlaneGeometryData","gridX","gridY","gridX1","gridY1","segmentWidth","segmentHeight","Euler","FrustumGeometryData","position","rotation","fov","aspect","fovY","ratio","halfY","tan","halfX","point1","point2","point3","point4","matrix","fromArray","toMatrix4","result1","transformPoint","result2","result3","result4","DirectionLightData","linesNumber","start","PointLightData","range","SpotLightData","spotAngle","angle","FloorLineEdgeGeometryData","sideLength","parts","end","GeometryType","createGeometry","type","size","geometryData","segments4","Geometry","attributes","a_Position","data","Float32Array","a_Normal","a_UV1","Uint16Array","mode","drawCount","createMeshFromSubType","subType","boundingMap","iconTexture","options","WebGLRenderingContext","sprite","createSpriteMesh","camera","light","translation","createTranslationMesh","scale","createScaleMesh","viewHelper","createViewHelperMesh","createRotationMesh","createBasicMesh","radiusSegments","boundSize","xCircle","torus","yCircle","zCircle","center","sphere","alpha","xCircleBounding","yCircleBounding","zCircleBounding","xCircleTransform","Transform","valid","yCircleTransform","zCircleTransform","centerTransform","setRotation","triangle","triangles","firstGeometry","getTriangle","backfaceCulling","geometry","transform","getIndexData","getAttributeData","mat4","getWorldMatrix","i0","i1","i2","p0","p1","p2","projectPoint","axisSize","axisMesh","createAxisMesh","mesh","arrowSize","xArrow","cone","depthTest","yArrow","zArrow","xArrowTransform","yArrowTransform","zArrowTransform","translate","planeSize","xyPlane","plane","yzPlane","zxPlane","xyPlaneTransform","yzPlaneTransform","zxPlaneTransform","delta","createAxisBounding","boxSize","centerBoxSize","xCube","box","yCube","zCube","centerCube","xCubeTransform","yCubeTransform","zCubeTransform","centerCubeTransform","posXSphere","posYSphere","posZSphere","posXSphereTransform","posYSphereTransform","posZSphereTransform","negXSphere","negYSphere","negZSphere","negXSphereTransform","negYSphereTransform","negZSphereTransform","isCentered","xAxis","yAxis","zAxis","xAxisTransform","yAxisTransform","zAxisTransform","materialType","geometryType","Sphere","cylinder","Cylinder","Cone","Torus","Sprite","Plane","frustum","Frustum","directionLight","DirectionLight","spotLight","SpotLight","pointLight","PointLight","floorGrid","FloorGrid","Box","material","createBlendMaterial","createHideBackMaterial","createMaterial","Mesh","priority","spriteColor","createSpriteMaterial","myColor","myDepthTest","Material","uniformValues","u_color","u_model","shader","fragment","vertex","shared","setVector3","setMatrix","IDENTITY","stencilTest","blending","depthMask","u_cameraPos","u_center","ZERO","myAlpha","u_alpha","setVector2","blendEquation","FUNC_ADD","blendFunction","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","setTexture","intersectRayLine","out","pointInCanvas","worldMat4","up","elements","radiusPoint","mvpMat4","getModelViewProjection","screenStart","screenEnd","screenRadiusPoint","screenRadiusVector","screenRadius","screenPosition","inverseViewProjection","getInverseViewProjectionMatrix","rectSize","DEG2RAD","arcPath","rotate","rotMat4","negate","addPoint","transformNormal","h","myCenter","map","item","rect","pos","forEach","vec","combineGeometries","geometries","indicesBase","Shapes","ret","detail","anchors","block","unshift","Rectangle","Circle","Hemisphere","outerRadius","concat","Edge","hw","RectangleEdge","Donut","donutRadius","path","positions","keys","None","createMeshFromShape","shape","geo","createMesh","LINES","Vector4","WireframeGeometryType","destroyWireframeMesh","DestroyOptions","keep","updateWireframeMesh","originGeometry","originMaterial","wireframe","cloneUniforms","wireframeGeometry","enabledMacros","macro","enableMacro","getDrawCount","indexData","getTriangleIndexData","getTriangleIndexDataByCount","setIndexData","setDrawCount","getQuadIndexData","faceCount","oid","idx","base","createModeWireframe","SharedGeometry","Uint32Array","shaderData","materialOptions","props","newMacros","macros","glslVersion","gpuCapability","level","GLSLVersion","GLSL3","GLSL1","setVector4","drawStart","initialize","isInitialized","buffers","bufferProps","indicesBuffer","createIndicesBuffer","flush","initialized","getAttributeNames","GLGeometry","editorRenderPassName","frontRenderPassName","behindRenderPassName","Quaternion","constants","GizmoComponent","coordinateSpace","mat","fromIdentity","wireframeMeshes","meshes","getHitTestParams","boundingKeys","targetItem","worldPos","worldQuat","worldSca","gizmoSubType","assignWorldTRS","targetTransform","quat","composition","cameraPos","itemPos","newPos","setPosition","HitTestType","custom","clipMasks","frameClipMasks","collect","ray","bounding","worldCenter","copyFrom","boxHalfSize","boxMax","boxMin","intersectBox","gizmoComponent","viewMat4","getViewMatrix","screenWidth","renderer","getWidth","screenHeight","getHeight","proMat4","cameraModelMat4","getInverseViewMatrix","localTransform","cloneFromMatrix","padding","localMat4","modelMat4","vpMat4","screenCenter","screenPoint","screenCenter2","screenPoint2","intersectSphere","tmpPositions","tmpPosition","worldTriangle","intersectTriangle","lastDistance","origin","distanceSquared","hitPositions","hitBounding","getComponent","behavior","spec","InteractBehavior","NOTIFY","onStart","items","id","PluginSystem","getPlugins","plugin","gizmoPlugin","particleEmitter","createParticleContent","modelWireframe","needCreateModelContent","createModelContent","createBasicContent","iconTextures","createCombinationContent","boundingBox","createBoundingBoxContent","loaderData","gizmoItems","onEnable","renderFrame","getFrontRenderPass","addMesh","getBehindRenderPass","getEditorRenderPass","onDisable","removeMesh","onUpdate","dt","updateRenderData","onDestroy","gizmoMesh","isDestroyed","contents","wireframeMesh","splice","render","pMesh","RendererComponent","content","subMeshes","worldMatrix","effectMaterial","particle","ParticleSystemRenderer","particleMesh","quad","worldScale","parentTransform","distanceToCneter","localMat","worldTransform","proMat5","getDefaultRenderMode","getDefaultSize","modelComponent","psubMesh","assertExist","originMesh","gizmoItem","fromData","duration","pipeline","rp","renderPasses","find","renderPass","DrawGizmoBehindPass","addRenderPass","DrawGizmoEditorPass","DrawGizmoFrontPass","serialize","effectsClass","CoordinateSpace","RenderPassPriorityPostprocess","execute","clear","depthAction","TextureLoadAction","renderMeshes","RenderPass","RenderPassPriorityPrepare","iconImages","EditorGizmoPlugin","order","onAssetsLoadStart","scene","onCompositionCreated","targetMap","gizmoTarget","Plugin","registerPlugin","version","logger","EFFECTS","console"],"mappings":";;;;;;;;;;;AAAA,SAASA,kBAAmBC,CAAAA,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAA;IACrE,IAAI;AACA,QAAA,IAAIC,IAAOP,GAAAA,GAAG,CAACK,GAAAA,CAAI,CAACC,GAAAA,CAAAA,CAAAA;QACpB,IAAIE,KAAAA,GAAQD,KAAKC,KAAK,CAAA;AAC1B,KAAA,CAAE,OAAOC,KAAO,EAAA;QACZP,MAAOO,CAAAA,KAAAA,CAAAA,CAAAA;AACP,QAAA,OAAA;AACJ,KAAA;IACA,IAAIF,IAAAA,CAAKG,IAAI,EAAET,OAAQO,CAAAA,KAAAA,CAAAA,CAAAA;AAClBG,SAAAA,OAAAA,CAAQV,OAAO,CAACO,KAAOI,CAAAA,CAAAA,IAAI,CAACT,KAAOC,EAAAA,MAAAA,CAAAA,CAAAA;AAC5C,CAAA;AACA,SAASS,oBAAoBC,EAAE,EAAA;IAC3B,OAAO,WAAA;QACH,IAAIC,IAAAA,GAAO,IAAI,EAAEC,IAAOC,GAAAA,SAAAA,CAAAA;AAExB,QAAA,OAAO,IAAIN,OAAAA,CAAQ,SAASV,OAAO,EAAEC,MAAM,EAAA;AACvC,YAAA,IAAIF,GAAMc,GAAAA,EAAAA,CAAGI,KAAK,CAACH,IAAMC,EAAAA,IAAAA,CAAAA,CAAAA;AAEzB,YAAA,SAASb,MAAMK,KAAK,EAAA;AAChBT,gBAAAA,kBAAAA,CAAmBC,GAAKC,EAAAA,OAAAA,EAASC,MAAQC,EAAAA,KAAAA,EAAOC,QAAQ,MAAQI,EAAAA,KAAAA,CAAAA,CAAAA;AACpE,aAAA;AAEA,YAAA,SAASJ,OAAOe,GAAG,EAAA;AACfpB,gBAAAA,kBAAAA,CAAmBC,GAAKC,EAAAA,OAAAA,EAASC,MAAQC,EAAAA,KAAAA,EAAOC,QAAQ,OAASe,EAAAA,GAAAA,CAAAA,CAAAA;AACrE,aAAA;YAEAhB,KAAMiB,CAAAA,SAAAA,CAAAA,CAAAA;AACV,SAAA,CAAA,CAAA;AACJ,KAAA,CAAA;AACJ;;AC7BA,SAASC,iBAAAA,CAAkBC,CAAC,EAAEC,CAAC,EAAA;AAC3BF,IAAAA,iBAAAA,GAAoBG,OAAOC,cAAc,IAAI,SAASA,cAAeH,CAAAA,CAAC,EAAEC,CAAC,EAAA;AACrED,QAAAA,CAAAA,CAAEI,SAAS,GAAGH,CAAAA,CAAAA;QAEd,OAAOD,CAAAA,CAAAA;AACX,KAAA,CAAA;AAEA,IAAA,OAAOD,kBAAkBC,CAAGC,EAAAA,CAAAA,CAAAA,CAAAA;AAChC;;ACNA,SAASI,SAAAA,CAAUC,QAAQ,EAAEC,UAAU,EAAA;AACnC,IAAA,IAAI,OAAOA,UAAAA,KAAe,UAAcA,IAAAA,UAAAA,KAAe,IAAM,EAAA;AACzD,QAAA,MAAM,IAAIC,SAAU,CAAA,oDAAA,CAAA,CAAA;AACxB,KAAA;IAEAF,QAASG,CAAAA,SAAS,GAAGP,MAAOQ,CAAAA,MAAM,CAACH,UAAcA,IAAAA,UAAAA,CAAWE,SAAS,EAAE;QAAEE,WAAa,EAAA;YAAEzB,KAAOoB,EAAAA,QAAAA;YAAUM,QAAU,EAAA,IAAA;YAAMC,YAAc,EAAA,IAAA;AAAK,SAAA;AAAE,KAAA,CAAA,CAAA;IAE9I,IAAIN,UAAAA,EAAYR,kBAAkBO,QAAUC,EAAAA,UAAAA,CAAAA,CAAAA;AAChD;;ACVA,SAASO,4BAAAA,GAAAA;;;;;IAKL,IAAI;;;AAGA,QAAA,IAAIC,MAAS,GAAA,CAACC,OAAQP,CAAAA,SAAS,CAACQ,OAAO,CAACC,IAAI,CAACC,QAAQC,SAAS,CAACJ,OAAS,EAAA,EAAE,EAAE,WAAY,EAAA,CAAA,CAAA,CAAA;KAC1F,CAAA,OAAOK,GAAG,EAAC;IACb,OAAQP,CAAAA,4BAA+B,GAAA,SAAA,4BAAA,GAAA;AACnC,QAAA,OAAO,CAAC,CAACC,MAAAA,CAAAA;KACb,GAAA,CAAA;AACJ;;ACXA,SAASO,UAAWC,CAAAA,MAAM,EAAE7B,IAAI,EAAE8B,KAAK,EAAA;IACnC,IAAIV,4BAAAA,EAAAA,EAAgCQ,UAAaH,GAAAA,OAAAA,CAAQC,SAAS,CAAA;AAC7D,SAAA;AACDE,QAAAA,UAAAA,GAAa,SAASF,SAAUG,CAAAA,MAAM,EAAE7B,IAAI,EAAE8B,KAAK,EAAA;AAC/C,YAAA,IAAIC,CAAI,GAAA;AAAC,gBAAA,IAAA;AAAK,aAAA,CAAA;AACdA,YAAAA,CAAAA,CAAEC,IAAI,CAAC9B,KAAK,CAAC6B,CAAG/B,EAAAA,IAAAA,CAAAA,CAAAA;AAChB,YAAA,IAAIiC,cAAcC,QAASC,CAAAA,IAAI,CAACjC,KAAK,CAAC2B,MAAQE,EAAAA,CAAAA,CAAAA,CAAAA;AAC9C,YAAA,IAAIK,WAAW,IAAIH,WAAAA,EAAAA,CAAAA;AAEnB,YAAA,IAAIH,KAAOzB,EAAAA,iBAAAA,CAAkB+B,QAAUN,EAAAA,KAAAA,CAAMf,SAAS,CAAA,CAAA;YAEtD,OAAOqB,QAAAA,CAAAA;AACX,SAAA,CAAA;AACJ,KAAA;IAEA,OAAOR,UAAAA,CAAW1B,KAAK,CAAC,IAAMD,EAAAA,SAAAA,CAAAA,CAAAA;AAClC;;AClBA,SAASoC,kBAAkB/B,CAAC,EAAA;IACxB+B,iBAAoB7B,GAAAA,MAAAA,CAAOC,cAAc,GAAGD,MAAAA,CAAO8B,cAAc,GAAG,SAASA,eAAehC,CAAC,EAAA;AACzF,QAAA,OAAOA,CAAEI,CAAAA,SAAS,IAAIF,MAAAA,CAAO8B,cAAc,CAAChC,CAAAA,CAAAA,CAAAA;AAChD,KAAA,CAAA;AAEA,IAAA,OAAO+B,iBAAkB/B,CAAAA,CAAAA,CAAAA,CAAAA;AAC7B;;ACNA,SAASiC,oBAAoBzC,EAAE,EAAA;IAC3B,OAAOoC,QAAAA,CAASM,QAAQ,CAAChB,IAAI,CAAC1B,EAAI2C,CAAAA,CAAAA,OAAO,CAAC,eAAA,CAAA,KAAqB,CAAC,CAAA,CAAA;AACpE;;ACGA,SAASC,mBAAmBZ,KAAK,EAAA;AAC7B,IAAA,IAAIa,MAAS,GAAA,OAAOC,GAAQ,KAAA,UAAA,GAAa,IAAIA,GAAQxC,EAAAA,GAAAA,SAAAA,CAAAA;AACrDsC,IAAAA,kBAAAA,GAAqB,4BAASZ,KAAK,EAAA;AAC/B,QAAA,IAAIA,KAAU,KAAA,IAAA,IAAQ,CAACS,mBAAAA,CAAoBT,QAAQ,OAAOA,KAAAA,CAAAA;AAC1D,QAAA,IAAI,OAAOA,KAAAA,KAAU,UAAY,EAAA,MAAM,IAAIhB,SAAU,CAAA,oDAAA,CAAA,CAAA;QACrD,IAAI,OAAO6B,WAAW,WAAa,EAAA;AAC/B,YAAA,IAAIA,OAAOE,GAAG,CAACf,QAAQ,OAAOa,MAAAA,CAAOG,GAAG,CAAChB,KAAAA,CAAAA,CAAAA;YACzCa,MAAOI,CAAAA,GAAG,CAACjB,KAAOkB,EAAAA,OAAAA,CAAAA,CAAAA;AACtB,SAAA;QAEA,SAASA,OAAAA,GAAAA;AACL,YAAA,OAAOpB,WAAWE,KAAO7B,EAAAA,SAAAA,EAAWoC,iBAAkB,CAAA,IAAI,EAAEpB,WAAW,CAAA,CAAA;AAC3E,SAAA;AACA+B,QAAAA,OAAAA,CAAQjC,SAAS,GAAGP,MAAAA,CAAOQ,MAAM,CAACc,KAAAA,CAAMf,SAAS,EAAE;YAAEE,WAAa,EAAA;gBAAEzB,KAAOwD,EAAAA,OAAAA;gBAASC,UAAY,EAAA,KAAA;gBAAO/B,QAAU,EAAA,IAAA;gBAAMC,YAAc,EAAA,IAAA;AAAK,aAAA;AAAE,SAAA,CAAA,CAAA;AAE5I,QAAA,OAAOd,kBAAkB2C,OAASlB,EAAAA,KAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AAEA,IAAA,OAAOY,kBAAmBZ,CAAAA,KAAAA,CAAAA,CAAAA;AAC9B;;ACxBA,SAASoB,oBAAAA,CAAqBC,GAAG,EAAEC,GAAG,EAAA;IAClC,IAAIA,GAAAA,IAAO,QAAQA,GAAMD,GAAAA,GAAAA,CAAIE,MAAM,EAAED,GAAAA,GAAMD,IAAIE,MAAM,CAAA;AAErD,IAAA,IAAK,IAAIC,CAAI,GAAA,CAAA,EAAGC,IAAO,GAAA,IAAIC,MAAMJ,GAAME,CAAAA,EAAAA,CAAAA,GAAIF,GAAKE,EAAAA,CAAAA,EAAAA,CAAKC,IAAI,CAACD,CAAAA,CAAE,GAAGH,GAAG,CAACG,CAAE,CAAA,CAAA;IAErE,OAAOC,IAAAA,CAAAA;AACX;;ACJA,SAASE,8BAAAA,CAA+BnD,CAAC,EAAEoD,MAAM,EAAA;AAC7C,IAAA,IAAI,CAACpD,CAAG,EAAA,OAAA;AACR,IAAA,IAAI,OAAOA,CAAAA,KAAM,QAAU,EAAA,OAAO4C,qBAAqB5C,CAAGoD,EAAAA,MAAAA,CAAAA,CAAAA;AAE1D,IAAA,IAAIC,CAAInD,GAAAA,MAAAA,CAAOO,SAAS,CAACyB,QAAQ,CAAChB,IAAI,CAAClB,CAAGsD,CAAAA,CAAAA,KAAK,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA,CAAA;IAEpD,IAAID,CAAAA,KAAM,YAAYrD,CAAEW,CAAAA,WAAW,EAAE0C,CAAIrD,GAAAA,CAAAA,CAAEW,WAAW,CAAC4C,IAAI,CAAA;AAC3D,IAAA,IAAIF,MAAM,KAASA,IAAAA,CAAAA,KAAM,OAAO,OAAOH,KAAAA,CAAMM,IAAI,CAACH,CAAAA,CAAAA,CAAAA;IAClD,IAAIA,CAAAA,KAAM,eAAe,0CAA2CI,CAAAA,IAAI,CAACJ,CAAI,CAAA,EAAA,OAAOT,qBAAqB5C,CAAGoD,EAAAA,MAAAA,CAAAA,CAAAA;AAChH;;ACTA,SAASM,oCAAAA,CAAqC1D,CAAC,EAAE2D,cAAc,EAAA;AAC3D,IAAA,IAAIC,EAAK,GAAA,OAAOC,MAAW,KAAA,WAAA,IAAe7D,CAAC,CAAC6D,MAAOC,CAAAA,QAAQ,CAAC,IAAI9D,CAAC,CAAC,YAAa,CAAA,CAAA;AAE/E,IAAA,IAAI4D,EAAI,EAAA,OAAO,CAACA,EAAKA,GAAAA,EAAAA,CAAG1C,IAAI,CAAClB,CAAC,CAAA,EAAG+D,IAAI,CAAClC,IAAI,CAAC+B,EAAAA,CAAAA,CAAAA;;AAE3C,IAAA,IAAIV,KAAMc,CAAAA,OAAO,CAAChE,CAAAA,CAAAA,KAAO4D,EAAKT,GAAAA,8BAAAA,CAA+BnD,CAAC,CAAA,CAAA,IAAM2D,kBAAkB3D,CAAK,IAAA,OAAOA,CAAE+C,CAAAA,MAAM,KAAK,QAAU,EAAA;AACrH,QAAA,IAAIa,IAAI5D,CAAI4D,GAAAA,EAAAA,CAAAA;AAEZ,QAAA,IAAIZ,CAAI,GAAA,CAAA,CAAA;QAER,OAAO,WAAA;AACH,YAAA,IAAIA,CAAKhD,IAAAA,CAAAA,CAAE+C,MAAM,EAAE,OAAO;gBAAE3D,IAAM,EAAA,IAAA;AAAK,aAAA,CAAA;YAEvC,OAAO;gBAAEA,IAAM,EAAA,KAAA;gBAAOF,KAAOc,EAAAA,CAAC,CAACgD,CAAI,EAAA,CAAA;AAAC,aAAA,CAAA;AACxC,SAAA,CAAA;AACJ,KAAA;AAEA,IAAA,MAAM,IAAIxC,SAAU,CAAA,uIAAA,CAAA,CAAA;AACxB;;ACpBA,SAASyD,YAAAA,CAAYC,IAAI,EAAEC,KAAK,EAAA;IAC5B,IAAIA,KAAAA,IAAS,IAAQ,IAAA,OAAON,MAAW,KAAA,WAAA,IAAeM,KAAK,CAACN,MAAAA,CAAOO,WAAW,CAAC,EAAE;AAC7E,QAAA,OAAO,CAAC,CAACD,KAAK,CAACN,MAAOO,CAAAA,WAAW,CAAC,CAACF,IAAAA,CAAAA,CAAAA;KAChC,MAAA,OAAOA,YAAI,CAAJA,IAAgBC,EAAAA,KAAAA,CAAAA,CAAAA;AAClC;;ACkDO,SAASE,WAAWC,UAAU,EAAEC,MAAM,EAAExF,GAAG,EAAEyF,IAAI,EAAA;AACtD,IAAA,IAAIC,IAAI9E,SAAUoD,CAAAA,MAAM,EAAE2B,CAAAA,GAAID,IAAI,CAAIF,GAAAA,MAAAA,GAASC,IAAS,KAAA,IAAA,GAAOA,OAAOtE,MAAOyE,CAAAA,wBAAwB,CAACJ,MAAAA,EAAQxF,OAAOyF,IAAMI,EAAAA,CAAAA,CAAAA;AAC3H,IAAA,IAAI,OAAOzD,OAAAA,KAAY,QAAY,IAAA,OAAOA,QAAQ0D,QAAQ,KAAK,UAAYH,EAAAA,CAAAA,GAAIvD,OAAQ0D,CAAAA,QAAQ,CAACP,UAAAA,EAAYC,QAAQxF,GAAKyF,EAAAA,IAAAA,CAAAA,CAAAA;AACpH,SAAA,IAAK,IAAIxB,CAAAA,GAAIsB,UAAWvB,CAAAA,MAAM,GAAG,CAAA,EAAGC,CAAK,IAAA,CAAA,EAAGA,CAAK,EAAA,CAAA,IAAI4B,CAAIN,GAAAA,UAAU,CAACtB,CAAE,CAAA,EAAE0B,CAAI,GAACD,CAAAA,CAAAA,GAAI,CAAIG,GAAAA,CAAAA,CAAEF,KAAKD,CAAI,GAAA,CAAA,GAAIG,CAAEL,CAAAA,MAAAA,EAAQxF,GAAK2F,EAAAA,CAAAA,CAAAA,GAAKE,CAAEL,CAAAA,MAAAA,EAAQxF,IAAG,KAAM2F,CAAAA,CAAAA;IAChJ,OAAOD,CAAAA,GAAI,KAAKC,CAAKxE,IAAAA,MAAAA,CAAO4E,cAAc,CAACP,MAAAA,EAAQxF,KAAK2F,CAAIA,CAAAA,EAAAA,CAAAA,CAAAA;AAC9D,CAAA;AAiEO,SAASK,WAAAA,CAAYC,OAAO,EAAEC,IAAI,EAAA;AACvC,IAAA,IAAI5D,CAAI,GAAA;QAAE6D,KAAO,EAAA,CAAA;AAAGC,QAAAA,IAAAA,EAAM,SAANA,IAAAA,GAAAA;YAAmB,IAAIC,CAAC,CAAC,CAAE,CAAA,GAAG,GAAG,MAAMA,CAAC,CAAC,CAAE,CAAA,CAAA;YAAE,OAAOA,CAAC,CAAC,CAAE,CAAA,CAAA;AAAE,SAAA;AAAGC,QAAAA,IAAAA,EAAM,EAAE;AAAEC,QAAAA,GAAAA,EAAK,EAAE;AAAC,KAAA,EAAGC,CAAGC,EAAAA,CAAAA,EAAGJ,CAAGK,EAAAA,CAAAA,GAAIvF,OAAOQ,MAAM,CAAC,CAAC,OAAOgF,QAAa,KAAA,UAAA,GAAaA,QAAWxF,GAAAA,MAAK,EAAGO,SAAS,CAAA,CAAA;IAC/L,OAAOgF,CAAAA,CAAE1B,IAAI,GAAG4B,IAAK,CAAA,CAAA,CAAA,EAAIF,CAAC,CAAC,OAAQ,CAAA,GAAGE,IAAK,CAAA,CAAA,CAAA,EAAIF,CAAC,CAAC,SAAS,GAAGE,IAAAA,CAAK,CAAI,CAAA,EAAA,OAAO9B,MAAW,KAAA,UAAA,KAAe4B,CAAC,CAAC5B,MAAAA,CAAOC,QAAQ,CAAC,GAAG,WAAA;AAAa,QAAA,OAAO,IAAI,CAAA;AAAE,KAAA,CAAI2B,EAAAA,CAAAA,CAAAA;AAC1J,IAAA,SAASE,KAAKtC,CAAC,EAAA;AAAI,QAAA,OAAO,SAAUuC,CAAC,EAAA;AAAI,YAAA,OAAOC,IAAK,CAAA;AAACxC,gBAAAA,CAAAA;AAAGuC,gBAAAA,CAAAA;AAAE,aAAA,CAAA,CAAA;AAAG,SAAA,CAAA;AAAG,KAAA;AACjE,IAAA,SAASC,KAAKC,EAAE,EAAA;QACZ,IAAIP,CAAAA,EAAG,MAAM,IAAI/E,SAAU,CAAA,iCAAA,CAAA,CAAA;AAC3B,QAAA,MAAOiF,CAAMA,KAAAA,CAAI,GAAA,CAAA,EAAGK,EAAE,CAAC,CAAA,CAAE,KAAKzE,CAAI,GAAA,CAAA,CAAC,CAAA,EAAIA,EAAG,IAAI;YAC1C,IAAIkE,CAAAA,GAAI,CAAGC,EAAAA,CAAAA,KAAMJ,CAAAA,GAAIU,EAAE,CAAC,CAAE,CAAA,GAAG,CAAIN,GAAAA,CAAC,CAAC,QAAA,CAAS,GAAGM,EAAE,CAAC,CAAE,CAAA,GAAGN,CAAC,CAAC,OAAQ,CAAA,KAAMJ,CAAAA,CAAAA,GAAII,CAAC,CAAC,SAAS,KAAKJ,CAAElE,CAAAA,IAAI,CAACsE,CAAAA,CAAAA,EAAI,CAAA,CAAA,GAAKA,CAAEzB,CAAAA,IAAI,CAAD,IAAM,CAAEqB,CAAAA,CAAIA,GAAAA,CAAAA,CAAElE,IAAI,CAACsE,CAAGM,EAAAA,EAAE,CAAC,CAAA,CAAE,CAAA,EAAG1G,IAAI,EAAE,OAAOgG,CAAAA,CAAAA;YAC3J,IAAII,CAAAA,GAAI,CAAGJ,EAAAA,CAAAA,EAAGU,EAAK,GAAA;gBAACA,EAAE,CAAC,EAAE,GAAG,CAAA;AAAGV,gBAAAA,CAAAA,CAAElG,KAAK;AAAC,aAAA,CAAA;YACvC,OAAQ4G,EAAE,CAAC,CAAE,CAAA;gBACT,KAAK,CAAA,CAAA;gBAAG,KAAK,CAAA;oBAAGV,CAAIU,GAAAA,EAAAA,CAAAA;AAAI,oBAAA,MAAA;gBACxB,KAAK,CAAA;AAAGzE,oBAAAA,CAAAA,CAAE6D,KAAK,EAAA,CAAA;oBAAI,OAAO;wBAAEhG,KAAO4G,EAAAA,EAAE,CAAC,CAAE,CAAA;wBAAE1G,IAAM,EAAA,KAAA;AAAM,qBAAA,CAAA;gBACtD,KAAK,CAAA;AAAGiC,oBAAAA,CAAAA,CAAE6D,KAAK,EAAA,CAAA;oBAAIM,CAAIM,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;oBAAEA,EAAK,GAAA;AAAC,wBAAA,CAAA;AAAE,qBAAA,CAAA;AAAE,oBAAA,SAAA;gBACxC,KAAK,CAAA;oBAAGA,EAAKzE,GAAAA,CAAAA,CAAEiE,GAAG,CAACS,GAAG,EAAA,CAAA;oBAAI1E,CAAEgE,CAAAA,IAAI,CAACU,GAAG,EAAA,CAAA;AAAI,oBAAA,SAAA;AACxC,gBAAA;AACI,oBAAA,IAAI,EAAEX,CAAI/D,GAAAA,CAAAA,CAAEgE,IAAI,EAAED,CAAIA,GAAAA,CAAAA,CAAErC,MAAM,GAAG,CAAKqC,IAAAA,CAAC,CAACA,CAAErC,CAAAA,MAAM,GAAG,CAAA,CAAE,CAAD,KAAO+C,EAAE,CAAC,CAAA,CAAE,KAAK,CAAA,IAAKA,EAAE,CAAC,CAAE,CAAA,KAAK,CAAA,CAAI,EAAA;wBAAEzE,CAAI,GAAA,CAAA,CAAA;AAAG,wBAAA,SAAA;AAAU,qBAAA;oBAC3G,IAAIyE,EAAE,CAAC,CAAE,CAAA,KAAK,MAAM,CAACV,CAAMU,IAAAA,EAAE,CAAC,CAAA,CAAE,GAAGV,CAAC,CAAC,CAAE,CAAA,IAAIU,EAAE,CAAC,EAAE,GAAGV,CAAC,CAAC,CAAA,CAAE,CAAI,EAAA;AAAE/D,wBAAAA,CAAAA,CAAE6D,KAAK,GAAGY,EAAE,CAAC,CAAE,CAAA,CAAA;AAAE,wBAAA,MAAA;AAAO,qBAAA;oBACrF,IAAIA,EAAE,CAAC,CAAA,CAAE,KAAK,CAAA,IAAKzE,CAAE6D,CAAAA,KAAK,GAAGE,CAAC,CAAC,CAAA,CAAE,EAAE;AAAE/D,wBAAAA,CAAAA,CAAE6D,KAAK,GAAGE,CAAC,CAAC,CAAE,CAAA,CAAA;wBAAEA,CAAIU,GAAAA,EAAAA,CAAAA;AAAI,wBAAA,MAAA;AAAO,qBAAA;AACpE,oBAAA,IAAIV,KAAK/D,CAAE6D,CAAAA,KAAK,GAAGE,CAAC,CAAC,EAAE,EAAE;AAAE/D,wBAAAA,CAAAA,CAAE6D,KAAK,GAAGE,CAAC,CAAC,CAAE,CAAA,CAAA;wBAAE/D,CAAEiE,CAAAA,GAAG,CAAC5D,IAAI,CAACoE,EAAAA,CAAAA,CAAAA;AAAK,wBAAA,MAAA;AAAO,qBAAA;AAClE,oBAAA,IAAIV,CAAC,CAAC,CAAA,CAAE,EAAE/D,CAAEiE,CAAAA,GAAG,CAACS,GAAG,EAAA,CAAA;oBACnB1E,CAAEgE,CAAAA,IAAI,CAACU,GAAG,EAAA,CAAA;AAAI,oBAAA,SAAA;AACtB,aAAA;YACAD,EAAKb,GAAAA,IAAAA,CAAK/D,IAAI,CAAC8D,OAAS3D,EAAAA,CAAAA,CAAAA,CAAAA;AAC5B,SAAA,CAAE,OAAO2E,CAAG,EAAA;YAAEF,EAAK,GAAA;AAAC,gBAAA,CAAA;AAAGE,gBAAAA,CAAAA;AAAE,aAAA,CAAA;YAAER,CAAI,GAAA,CAAA,CAAA;SAAa,QAAA;AAAED,YAAAA,CAAAA,GAAIH,CAAI,GAAA,CAAA,CAAA;AAAG,SAAA;QACzD,IAAIU,EAAE,CAAC,CAAE,CAAA,GAAG,GAAG,MAAMA,EAAE,CAAC,CAAE,CAAA,CAAA;QAAE,OAAO;YAAE5G,KAAO4G,EAAAA,EAAE,CAAC,CAAE,CAAA,GAAGA,EAAE,CAAC,CAAA,CAAE,GAAG,KAAK,CAAA;YAAG1G,IAAM,EAAA,IAAA;AAAK,SAAA,CAAA;AACnF,KAAA;AACF,CAAA;AAiLuB,OAAO6G,eAAAA,KAAoB,UAAaA,GAAAA,eAAAA,GAAkB,0BAAU9G,KAAK,EAAE+G,UAAU,EAAEC,OAAO,EAAA;IACnH,IAAIH,CAAAA,GAAI,IAAII,KAAMD,CAAAA,OAAAA,CAAAA,CAAAA;IAClB,OAAOH,CAAAA,CAAEzC,IAAI,GAAG,iBAAmByC,EAAAA,CAAAA,CAAE7G,KAAK,GAAGA,KAAO6G,EAAAA,CAAAA,CAAEE,UAAU,GAAGA,UAAYF,EAAAA,CAAAA,CAAAA;AACjF;;ACxUA;AACO,IAAMK,KAAQ,GAAA;IACnBC,UAAY,EAAA;QAAC,GAAM,GAAA,GAAA;QAAK,GAAM,GAAA,GAAA;QAAK,EAAK,GAAA,GAAA;AAAI,KAAA;IAC5CC,UAAY,EAAA;QAAC,EAAK,GAAA,GAAA;QAAK,GAAM,GAAA,GAAA;QAAK,GAAM,GAAA,GAAA;AAAI,KAAA;IAC5CC,UAAY,EAAA;QAAC,GAAM,GAAA,GAAA;QAAK,EAAK,GAAA,GAAA;QAAK,GAAM,GAAA,GAAA;AAAI,KAAA;AAC9C,CAAE,CAAA;AACK,IAAMC,UAAAA,GAAaC,SAAUC,CAAAA,SAAS,CAAC;AAC9C;AACO,IAAMC,WAAmC,GAAA,IAAItE,GAAM,EAAA,CAAA;AAE1DsE,WAAYnE,CAAAA,GAAG,CACb,OAAU,EAAA,grKAAA,CAAA,CAAA;AAsDZmE,WAAYnE,CAAAA,GAAG,CACb,QAAW,EAAA,w4XAAA,CAAA,CAAA;AA0HbmE,WAAYnE,CAAAA,GAAG,CACb,MAAS,EAAA,gsQAAA,CAAA,CAAA;AAqFXmE,WAAYnE,CAAAA,GAAG,CACb,MAAS,EAAA,g8OAAA,CAAA,CAAA;AA6EXmE,WAAYnE,CAAAA,GAAG,CACb,MAAS,EAAA,47OAAA,CAAA,CAAA;AA6EXmE,WAAYnE,CAAAA,GAAG,CACb,MAAS,EAAA,w/PAAA,CAAA,CAAA;AAmFXmE,WAAYnE,CAAAA,GAAG,CACb,MAAS,EAAA,44QAAA,CAAA,CAAA;AAuFXmE,WAAYnE,CAAAA,GAAG,CACb,MAAS,EAAA,o9PAAA,CAAA;;ACxlBX;;;;IAKA,SAAsBoE,YAAaC,QAAgB,EAAA;AAA7BD,IAAAA,OAAAA,YAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,YAAAA,GAAAA;IAAAA,YAAf,GAAA,mBAAA,CAAA,SAA4BC,QAAgB,EAAA;AAC3CC,QAAAA,IAAAA,KAAAA,CAAAA;;AAAAA,YAAAA,KAAAA,GAAQ,IAAIC,KAAAA,EAAAA,CAAAA;AAElBD,YAAAA,KAAAA,CAAME,GAAG,GAAGH,QAAAA,CAAAA;AAEZ,YAAA,OAAA;;gBAAO,IAAIzH,OAAAA,CAA0B,SAACV,OAASC,EAAAA,MAAAA,EAAAA;AAC7CmI,oBAAAA,KAAAA,CAAMG,MAAM,GAAG,WAAA;wBACbvI,OAAQoI,CAAAA,KAAAA,CAAAA,CAAAA;AACV,qBAAA,CAAA;AACAA,oBAAAA,KAAAA,CAAMI,OAAO,GAAGvI,MAAAA,CAAAA;AAClB,iBAAA,CAAA;;;AACF,KAAA,CAAA,CAAA;AAXsBiI,IAAAA,OAAAA,YAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAatB;;;;;AAKC,IACM,SAASO,aAAAA,CAAeC,MAAc,EAAEN,KAAuB,EAAEO,WAAqB,EAAA;AAE3F,IAAA,IAAMC,OAAUC,GAAAA,OAAAA,CAAQ9G,MAAM,CAAC2G,MAAQ,EAAA;QAAEN,KAAAA,EAAAA,KAAAA;AAAM,KAAA,CAAA,CAAA;AAE/C,IAAA,IAAIO,WAAa,EAAA;AACfC,QAAAA,OAAAA,CAAQE,OAAO,GAAGC,IAAAA,CAAAA;AACpB,KAAA;IAEA,OAAOH,OAAAA,CAAAA;AACT,CAAA;AAEA;;;;;AAKC,IACM,SAASI,2BAA6BC,CAAAA,SAAkB,EAAEC,UAAmB,EAAA;AAClF,IAAA,IAAMC,aAAgBD,GAAAA,UAAAA,CAAWE,KAAK,EAAA,CAAGC,QAAQ,CAACJ,SAAAA,CAAAA,CAAAA;AAElD,IAAA,IAAMK,mBAAsBH,GAAAA,aAAAA,CAAcC,KAAK,EAAA,CAAGG,SAAS,EAAA,CAAA;AAC3D,IAAA,IAAMC,mBAAsBF,GAAAA,mBAAAA,CAAoBF,KAAK,EAAA,CAAGK,QAAQ,CAAC,EAAA,CAAA,CAAA;AAEjE,IAAA,IAAMC,aAAgBP,GAAAA,aAAAA,CAAcC,KAAK,EAAA,CAAGC,QAAQ,CAACG,mBAAAA,CAAAA,CAAAA;AACrD,IAAA,IAAMG,gBAAgBD,aAAcN,CAAAA,KAAK,EAAGK,CAAAA,QAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAEtD,IAAA,OAAOP,UAAWE,CAAAA,KAAK,EAAGQ,CAAAA,GAAG,CAACD,aAAAA,CAAAA,CAAAA;AAChC;;;ACvCYE,CAAAA,SAAAA,YAAAA,EAAAA;;;;;;;;;;;;;;;;;;;;;;GAAAA,YAAAA,KAAAA,YAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;ACXaC,IAAAA,CAAjBC,OAASC,CAAAA,CAAQF,IAARE,CAAAA,IAAAA;;AAKLC,CAAAA,SAAAA,YAAAA,EAAAA;;;;;GAAAA,YAAAA,KAAAA,YAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;ACNZ,IAAQC,SAAqBJ,GAAAA,IAAAA,CAArBI,OAASC,EAAAA,SAAAA,GAAYL,IAAZK,CAAAA,OAAAA,CAAAA;AAEV,SAASC,sBAAAA,CAAwBC,KAAc,EAAEC,IAAwB,EAAA;;AAE9E,IAAA,IAAMC,KAAK,IAAIJ,SAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMK,KAAK,IAAIL,SAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMM,KAAK,IAAIN,SAAAA,EAAAA,CAAAA;AAEfI,IAAAA,EAAAA,CAAGG,eAAe,CAACL,KAAOC,EAAAA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AACjCE,IAAAA,EAAAA,CAAGE,eAAe,CAACL,KAAOC,EAAAA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;IACjCG,EAAGC,CAAAA,eAAe,CAACJ,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;IACnC,IAAMK,QAAAA,GAAWJ,GAAGnG,MAAM,EAAA,CAAA;IAC1B,IAAMwG,QAAAA,GAAWJ,GAAGpG,MAAM,EAAA,CAAA;IAC1B,IAAMyG,QAAAA,GAAWJ,GAAGrG,MAAM,EAAA,CAAA;;;AAI1B,IAAA,IAAM0G,IAAI,CAACH,QAAWC,GAAAA,QAAAA,GAAWC,QAAO,IAAK,CAAA,CAAA;AAC7C,IAAA,IAAME,UAAUC,IAAKC,CAAAA,GAAG,CAACD,IAAKE,CAAAA,IAAI,CAACJ,CAAKA,IAAAA,CAAIH,GAAAA,QAAO,KAAMG,CAAAA,GAAIF,QAAO,CAAME,IAAAA,IAAID,QAAO,CAAA,CAAA,CAAA,CAAA;;IAErF,IAAMM,QAAAA,GAAW,CAAC,GAAIJ,OAAWF,GAAAA,QAAAA,CAAAA;AACjC,IAAA,IAAMO,EAAKJ,GAAAA,IAAAA,CAAKE,IAAI,CAACF,IAAKK,CAAAA,GAAG,CAACV,QAAAA,EAAU,CAAKK,CAAAA,GAAAA,IAAAA,CAAKK,GAAG,CAACF,QAAU,EAAA,CAAA,CAAA,CAAA,CAAA;AAChE,IAAA,IAAMG,EAAKN,GAAAA,IAAAA,CAAKE,IAAI,CAACF,IAAKK,CAAAA,GAAG,CAACT,QAAAA,EAAU,CAAKI,CAAAA,GAAAA,IAAAA,CAAKK,GAAG,CAACF,QAAU,EAAA,CAAA,CAAA,CAAA,CAAA;AAChE,IAAA,IAAII,QAAW,GAAA,KAAA,CAAA;IAEf,IAAIH,EAAAA,IAAMP,QAAYS,IAAAA,EAAAA,IAAMT,QAAU,EAAA;QACpCU,QAAW,GAAA,IAAA,CAAA;AACb,KAAA;IAEA,OAAO;QACLJ,QAAAA,EAAAA,QAAAA;QACAI,QAAAA,EAAAA,QAAAA;AACF,KAAA,CAAA;AACF,CAAA;AAEO,SAASC,wBAAAA,CAA0BnB,KAAc,EAAEC,IAAwB,EAAA;AAChF,IAAA,IAAMC,KAAK,IAAIJ,SAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMK,KAAK,IAAIL,SAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMM,KAAK,IAAIN,SAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMsB,KAAQnB,GAAAA,IAAI,CAAC,CAAA,CAAE,CAACoB,SAAS,EAAA,CAAA;AAC/B,IAAA,IAAMC,KAAQrB,GAAAA,IAAI,CAAC,CAAA,CAAE,CAACoB,SAAS,EAAA,CAAA;IAE/BnB,EAAGG,CAAAA,eAAe,CAACL,KAAOoB,EAAAA,KAAAA,CAAAA,CAAAA;IAC1BjB,EAAGE,CAAAA,eAAe,CAACL,KAAOsB,EAAAA,KAAAA,CAAAA,CAAAA;IAC1BlB,EAAGC,CAAAA,eAAe,CAACiB,KAAOF,EAAAA,KAAAA,CAAAA,CAAAA;IAC1B,IAAMd,QAAAA,GAAWJ,GAAGnG,MAAM,EAAA,CAAA;IAC1B,IAAMwG,QAAAA,GAAWJ,GAAGpG,MAAM,EAAA,CAAA;IAC1B,IAAMyG,QAAAA,GAAWJ,GAAGrG,MAAM,EAAA,CAAA;;;AAI1B,IAAA,IAAM0G,IAAI,CAACH,QAAWC,GAAAA,QAAAA,GAAWC,QAAO,IAAK,CAAA,CAAA;AAC7C,IAAA,IAAME,UAAUC,IAAKC,CAAAA,GAAG,CAACD,IAAKE,CAAAA,IAAI,CAACJ,CAAKA,IAAAA,CAAIH,GAAAA,QAAO,KAAMG,CAAAA,GAAIF,QAAO,CAAME,IAAAA,IAAID,QAAO,CAAA,CAAA,CAAA,CAAA;;IAErF,IAAMM,QAAAA,GAAW,CAAC,GAAIJ,OAAWF,GAAAA,QAAAA,CAAAA;AACjC,IAAA,IAAMO,EAAKJ,GAAAA,IAAAA,CAAKE,IAAI,CAACF,IAAKK,CAAAA,GAAG,CAACV,QAAAA,EAAU,CAAKK,CAAAA,GAAAA,IAAAA,CAAKK,GAAG,CAACF,QAAU,EAAA,CAAA,CAAA,CAAA,CAAA;AAChE,IAAA,IAAMG,EAAKN,GAAAA,IAAAA,CAAKE,IAAI,CAACF,IAAKK,CAAAA,GAAG,CAACT,QAAAA,EAAU,CAAKI,CAAAA,GAAAA,IAAAA,CAAKK,GAAG,CAACF,QAAU,EAAA,CAAA,CAAA,CAAA,CAAA;IAEhE,IAAMS,OAAAA,GAAUtB,IAAI,CAAC,CAAE,CAAA,CAAClB,KAAK,EAAA,CAAGC,QAAQ,CAACiB,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;IAEhD,IAAMuB,OAAAA,GAAUD,QAAQxC,KAAK,EAAA,CAAGK,QAAQ,CAAC2B,EAAAA,IAAMA,EAAAA,GAAKE,EAAC,CAAA,CAAA,CAAA;IAErD,IAAMQ,MAAAA,GAASxB,IAAI,CAAC,CAAA,CAAE,CAAClB,KAAK,EAAA,CAAGQ,GAAG,CAACiC,OAAAA,CAAAA,CAAAA;IAEnC,OAAOC,MAAAA,CAAAA;AACT,CAAA;AAEO,SAASC,4BAAAA,CACdxG,IAAY,EACZC,KAAa,EACbwG,MAAc,EACdC,GAAW,EACXC,IAAY,EACZC,GAAW,EAAA;AAEX,IAAA,IAAIrJ,CAAI,GAAA,GAAA,IAAO0C,KAAAA,GAAQD,IAAG,CAAA,CAAA;AAC1B,IAAA,IAAI6G,CAAI,GAAA,GAAA,IAAOH,GAAAA,GAAMD,MAAK,CAAA,CAAA;AAC1B,IAAA,IAAIlG,CAAI,GAAA,GAAA,IAAOqG,GAAAA,GAAMD,IAAG,CAAA,CAAA;AAExB,IAAA,IAAMG,EAAK,GAAA,EAAE7G,KAAAA,GAAQD,IAAG,CAAKzC,GAAAA,CAAAA,CAAAA;AAC7B,IAAA,IAAMwJ,EAAK,GAAA,EAAEL,GAAAA,GAAMD,MAAK,CAAKI,GAAAA,CAAAA,CAAAA;AAC7B,IAAA,IAAMG,EAAK,GAAA,EAAEJ,GAAAA,GAAMD,IAAG,CAAKpG,GAAAA,CAAAA,CAAAA;IAE3BhD,CAAK,IAAA,GAAA,CAAA;IACLsJ,CAAK,IAAA,GAAA,CAAA;AACLtG,IAAAA,CAAAA,IAAK,CAAC,GAAA,CAAA;AAEN,IAAA,OAAO,IAAIoE,SACTpH,CAAAA,CAAAA,EACA,GACA,EAAA,GAAA,EACA;IAEA,GACAsJ,EAAAA,CAAAA,EACA,GACA,EAAA,GAAA;IAEA,GACA,EAAA,GAAA,EACAtG,CACA,EAAA,GAAA;AAEAuG,IAAAA,EAAAA,EACAC,IACAC,EACA,EAAA,GAAA,CAAA,CAAA;AAEJ;;ACjHA,SAASC,QAAAA,GAAAA;AACLA,IAAAA,QAAAA,GAAWjL,MAAOkL,CAAAA,MAAM,IAAI,SAASA,OAAO7G,MAAM,EAAA;AAC9C,QAAA,IAAK,IAAIvB,CAAI,GAAA,CAAA,EAAGA,IAAIrD,SAAUoD,CAAAA,MAAM,EAAEC,CAAK,EAAA,CAAA;YACvC,IAAIqI,MAAAA,GAAS1L,SAAS,CAACqD,CAAE,CAAA,CAAA;AACzB,YAAA,IAAK,IAAIjE,GAAOsM,IAAAA,MAAAA,CAAQ,IAAInL,MAAOO,CAAAA,SAAS,CAAC6K,cAAc,CAACpK,IAAI,CAACmK,MAAAA,EAAQtM,MAAMwF,MAAM,CAACxF,IAAI,GAAGsM,MAAM,CAACtM,GAAI,CAAA,CAAA;AAC5G,SAAA;QAEA,OAAOwF,MAAAA,CAAAA;AACX,KAAA,CAAA;AAEA,IAAA,OAAO4G,QAASvL,CAAAA,KAAK,CAAC,IAAI,EAAED,SAAAA,CAAAA,CAAAA;AAChC;;ACXA;;AAEC,IACM,IAAA,YAAe4L,iBAAV,WAAL;AAAeA,IAAAA,SAAAA,YAAAA,GAAAA;AACpBC,QAAAA,IAAAA,CAAAA,MAAAA,GAAmB,EAAE,CAAA;AACrBC,QAAAA,IAAAA,CAAAA,GAAAA,GAAgB,EAAE,CAAA;AAClBC,QAAAA,IAAAA,CAAAA,OAAAA,GAAoB,EAAE,CAAA;AACtBC,QAAAA,IAAAA,CAAAA,OAAAA,GAAoB,EAAE,CAAA;;AAJFJ,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAMpB;;;;;;;;;;AAUC,MACDK,OAAAA,mBAkBC,GAlBDA,SAAAA,mBACEC,CAAAA,MAAc,EACdC,CAAS,EACTC,QAAgB,EAChBC,UAAkB,EAClBC,WAAmB,EACnBC,UAAkB,EAClBV,MAAgB,EAChBG,OAAiB,EAAA;AAEjB,QAAA,IAAK,IAAI3I,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI+I,UAAU/I,CAAK,EAAA,CAAA;YACjC,IAAMmJ,KAAAA,GAAQH,UAAahJ,GAAAA,CAAAA,GAAIiJ,WAAcF,GAAAA,QAAAA,CAAAA;AAC7C,YAAA,IAAMK,CAAIP,GAAAA,MAAAA,GAASlC,IAAK0C,CAAAA,GAAG,CAACF,KAAAA,CAAAA,CAAAA;AAC5B,YAAA,IAAM3G,CAAIqG,GAAAA,MAAAA,GAASlC,IAAK2C,CAAAA,GAAG,CAACH,KAAAA,CAAAA,CAAAA;YAE5BX,MAAO9J,CAAAA,IAAI,CAAC0K,CAAAA,EAAG5G,CAAGsG,EAAAA,CAAAA,CAAAA,CAAAA;YAClBH,OAAQjK,CAAAA,IAAI,CAACwK,UAAalJ,GAAAA,CAAAA,EAAGkJ,aAAa,CAAClJ,CAAI,GAAA,CAAA,IAAK+I,QAAAA,CAAAA,CAAAA;AACtD,SAAA;AACF,KAAA,CAAA;AAEA;;;;;;;;;;AAUC,MACDQ,OAAAA,mBAkBC,GAlBDA,SAAAA,mBACEV,CAAAA,MAAc,EACdrG,CAAS,EACTuG,QAAgB,EAChBC,UAAkB,EAClBC,WAAmB,EACnBC,UAAkB,EAClBV,MAAgB,EAChBG,OAAiB,EAAA;AAEjB,QAAA,IAAK,IAAI3I,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI+I,UAAU/I,CAAK,EAAA,CAAA;YACjC,IAAMmJ,KAAAA,GAAQH,UAAahJ,GAAAA,CAAAA,GAAIiJ,WAAcF,GAAAA,QAAAA,CAAAA;AAC7C,YAAA,IAAMK,CAAIP,GAAAA,MAAAA,GAASlC,IAAK0C,CAAAA,GAAG,CAACF,KAAAA,CAAAA,CAAAA;AAC5B,YAAA,IAAML,CAAID,GAAAA,MAAAA,GAASlC,IAAK2C,CAAAA,GAAG,CAACH,KAAAA,CAAAA,CAAAA;YAE5BX,MAAO9J,CAAAA,IAAI,CAAC0K,CAAAA,EAAG5G,CAAGsG,EAAAA,CAAAA,CAAAA,CAAAA;YAClBH,OAAQjK,CAAAA,IAAI,CAACwK,UAAalJ,GAAAA,CAAAA,EAAGkJ,aAAa,CAAClJ,CAAI,GAAA,CAAA,IAAK+I,QAAAA,CAAAA,CAAAA;AACtD,SAAA;AACF,KAAA,CAAA;AAEA;;;;;;;;;;AAUC,MACDS,OAAAA,mBAkBC,GAlBDA,SAAAA,mBACEX,CAAAA,MAAc,EACdO,CAAS,EACTL,QAAgB,EAChBC,UAAkB,EAClBC,WAAmB,EACnBC,UAAkB,EAClBV,MAAgB,EAChBG,OAAiB,EAAA;AAEjB,QAAA,IAAK,IAAI3I,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI+I,UAAU/I,CAAK,EAAA,CAAA;YACjC,IAAMmJ,KAAAA,GAAQH,UAAahJ,GAAAA,CAAAA,GAAIiJ,WAAcF,GAAAA,QAAAA,CAAAA;AAC7C,YAAA,IAAMD,CAAID,GAAAA,MAAAA,GAASlC,IAAK0C,CAAAA,GAAG,CAACF,KAAAA,CAAAA,CAAAA;AAC5B,YAAA,IAAM3G,CAAIqG,GAAAA,MAAAA,GAASlC,IAAK2C,CAAAA,GAAG,CAACH,KAAAA,CAAAA,CAAAA;YAE5BX,MAAO9J,CAAAA,IAAI,CAAC0K,CAAAA,EAAG5G,CAAGsG,EAAAA,CAAAA,CAAAA,CAAAA;YAClBH,OAAQjK,CAAAA,IAAI,CAACwK,UAAalJ,GAAAA,CAAAA,EAAGkJ,aAAa,CAAClJ,CAAI,GAAA,CAAA,IAAK+I,QAAAA,CAAAA,CAAAA;AACtD,SAAA;AACF,KAAA,CAAA;AAjGoBR,IAAAA,OAAAA,YAAAA,CAAAA;AAkGrB,CAAA,EAAA;;AClGD,IAAQ7C,YAAYD,IAAZC,CAAAA,OAAAA,CAAAA;AAER;;AAEC,IACM,IAAA,kBAAM+D,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,YAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,CAYTZ,MAAU,EACVa,aAAiB,EACjBC,cAAkB,EAClBC,QAAY,EACZC,SAAuB,EACvBb,UAAc,EACdC,WAAqB,EAAA;AANrBJ,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACTa,QAAAA,IAAAA,0BAAAA,aAAgB,GAAA,CAAA,CAAA;AAChBC,QAAAA,IAAAA,2BAAAA,cAAiB,GAAA,CAAA,CAAA;AACjBC,QAAAA,IAAAA,qBAAAA,QAAW,GAAA,CAAA,CAAA;AACXC,QAAAA,IAAAA,SAAAA,KAAAA,KAAAA,CAAAA,EAAAA,SAAAA,GAAYlD,IAAKmD,CAAAA,EAAE,GAAG,CAAA,CAAA;AACtBd,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,CAAA,CAAA;QACbC,IAAAA,WAAAA,KAAAA,KAAAA,CAAAA,EAAAA,WAActC,GAAAA,IAAAA,CAAKmD,EAAE,CAAA;;;;AAKrBJ,QAAAA,aAAAA,GAAgB/C,KAAKoD,GAAG,CAAC,CAAGpD,EAAAA,IAAAA,CAAKqD,KAAK,CAACN,aAAAA,CAAAA,CAAAA,CAAAA;AACvCC,QAAAA,cAAAA,GAAiBhD,KAAKoD,GAAG,CAAC,CAAGpD,EAAAA,IAAAA,CAAKqD,KAAK,CAACL,cAAAA,CAAAA,CAAAA,CAAAA;AAExC,QAAA,IAAMM,WAAWtD,IAAKuD,CAAAA,GAAG,CAAClB,UAAaC,GAAAA,WAAAA,EAAatC,KAAKmD,EAAE,CAAA,CAAA;AAC3D,QAAA,IAAMK,OAAO,EAAE,CAAA;AACf,QAAA,IAAIC,KAAQ,GAAA,CAAA,CAAA;AAEZ,QAAA,IAAK,IAAIC,EAAAA,GAAK,CAAGA,EAAAA,EAAAA,IAAMV,gBAAgBU,EAAM,EAAA,CAAA;AAC3C,YAAA,IAAMC,cAAc,EAAE,CAAA;AACtB,YAAA,IAAM1H,IAAIyH,EAAKV,GAAAA,cAAAA,CAAAA;AAEf,YAAA,IAAIY,OAAU,GAAA,CAAA,CAAA;YAEd,IAAIF,EAAAA,IAAM,CAAKrB,IAAAA,UAAAA,IAAc,CAAG,EAAA;AAC9BuB,gBAAAA,OAAAA,GAAU,GAAMb,GAAAA,aAAAA,CAAAA;AAClB,aAAA,MAAO,IAAIW,EAAMV,IAAAA,cAAAA,IAAkBM,QAAYtD,IAAAA,IAAAA,CAAKmD,EAAE,EAAE;AACtDS,gBAAAA,OAAAA,GAAU,CAAE,GAAMb,GAAAA,aAAAA,CAAAA;AACpB,aAAA;AAEA,YAAA,IAAK,IAAIc,EAAAA,GAAK,CAAGA,EAAAA,EAAAA,IAAMd,eAAec,EAAM,EAAA,CAAA;AAa1C,gBAAA,IAAA,aAAA,CAAA;AAZA,gBAAA,IAAMC,IAAID,EAAKd,GAAAA,aAAAA,CAAAA;;AAGf,gBAAA,IAAMN,CAAI,GAAA,CAAEP,MAASlC,GAAAA,IAAAA,CAAK0C,GAAG,CAACO,QAAWa,GAAAA,CAAAA,GAAIZ,SAAalD,CAAAA,GAAAA,IAAAA,CAAK2C,GAAG,CAACN,aAAapG,CAAIqG,GAAAA,WAAAA,CAAAA,CAAAA;AACpF,gBAAA,IAAMzG,IAAIqG,MAASlC,GAAAA,IAAAA,CAAK0C,GAAG,CAACL,aAAapG,CAAIqG,GAAAA,WAAAA,CAAAA,CAAAA;AAC7C,gBAAA,IAAMH,CAAID,GAAAA,MAAAA,GAASlC,IAAK2C,CAAAA,GAAG,CAACM,QAAAA,GAAWa,CAAIZ,GAAAA,SAAAA,CAAAA,GAAalD,IAAK2C,CAAAA,GAAG,CAACN,UAAAA,GAAapG,CAAIqG,GAAAA,WAAAA,CAAAA,CAAAA;AAElF,gBAAA,KAAA,CAAKT,MAAM,CAAC9J,IAAI,CAAC0K,GAAG5G,CAAGsG,EAAAA,CAAAA,CAAAA,CAAAA;;AAGvB,gBAAA,IAAM4B,SAAS,IAAIhF,SAAAA,CAAQ0D,CAAG5G,EAAAA,CAAAA,EAAGsG,GAAG5D,SAAS,EAAA,CAAA;gBAE7C,CAAA,aAAA,GAAA,MAAKwD,OAAO,EAAChK,IAAI,CAAjB,KAAA,CAAA,aAAqBgM,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAOC,OAAO,EAAA,CAAA,CAAA,CAAA;;AAGnC,gBAAA,KAAA,CAAKlC,GAAG,CAAC/J,IAAI,CAAC+L,CAAAA,GAAIF,SAAS,CAAI3H,GAAAA,CAAAA,CAAAA,CAAAA;AAE/B0H,gBAAAA,WAAAA,CAAY5L,IAAI,CAAC0L,KAAAA,EAAAA,CAAAA,CAAAA;AACnB,aAAA;AAEAD,YAAAA,IAAAA,CAAKzL,IAAI,CAAC4L,WAAAA,CAAAA,CAAAA;AACZ,SAAA;;AAGA,QAAA,IAAK,IAAID,GAAAA,GAAK,CAAGA,EAAAA,GAAAA,GAAKV,gBAAgBU,GAAM,EAAA,CAAA;AAC1C,YAAA,IAAK,IAAIG,GAAAA,GAAK,CAAGA,EAAAA,GAAAA,GAAKd,eAAec,GAAM,EAAA,CAAA;AACzC,gBAAA,IAAM/L,IAAI0L,IAAI,CAACE,GAAG,CAAA,CAACG,MAAK,CAAE,CAAA,CAAA;AAC1B,gBAAA,IAAMzC,CAAIoC,GAAAA,IAAI,CAACE,GAAAA,CAAG,CAACG,GAAG,CAAA,CAAA;AACtB,gBAAA,IAAM/I,IAAI0I,IAAI,CAACE,GAAK,GAAA,CAAA,CAAE,CAACG,GAAG,CAAA,CAAA;AAC1B,gBAAA,IAAM5I,IAAIuI,IAAI,CAACE,MAAK,CAAE,CAAA,CAACG,MAAK,CAAE,CAAA,CAAA;gBAE9B,IAAIH,GAAAA,KAAO,CAAKrB,IAAAA,UAAAA,GAAa,CAAG,EAAA;AAAE,oBAAA,KAAA,CAAKL,OAAO,CAACjK,IAAI,CAACD,GAAGsJ,CAAGnG,EAAAA,CAAAA,CAAAA,CAAAA;AAAI,iBAAA;AAC9D,gBAAA,IAAIyI,QAAOV,cAAiB,GAAA,CAAA,IAAKM,QAAWtD,GAAAA,IAAAA,CAAKmD,EAAE,EAAE;AAAE,oBAAA,KAAA,CAAKnB,OAAO,CAACjK,IAAI,CAACqJ,GAAGtG,CAAGG,EAAAA,CAAAA,CAAAA,CAAAA;AAAI,iBAAA;AACrF,aAAA;AACF,SAAA;;;AA7ES6H,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2BlB,YA+EvC,CAAA;;ACpFD;AACO,IAAA,eAAMqC,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,YAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,CAOEC,KAAS,EAAEC,MAAU,EAAEC,KAAS,EAAA;AAAhCF,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;AAAGC,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAAGC,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;;YAYjCC,UAAT,GAAA,SAASA,UAAYP,CAAAA,CAAS,EAAE7H,CAAS,EAAEqI,CAAS,EAAEC,IAAY,EAChEC,IAAY,EAAEN,KAAa,EAAEC,MAAc,EAAEC,KAAa,EAC1DvC,MAAgB,EAAEC,GAAa,EAAEC,OAAiB,EAAEC,OAAiB,EAAA;AAErE,YAAA,IAAMyC,YAAYP,KAAQ,GAAA,CAAA,CAAA;AAC1B,YAAA,IAAMQ,aAAaP,MAAS,GAAA,CAAA,CAAA;AAC5B,YAAA,IAAMQ,YAAYP,KAAQ,GAAA,CAAA,CAAA;AAC1B,YAAA,IAAM/E,KAAmB,GAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AAClC,YAAA,IAAIuF,aAAgB,GAAA,CAAA,CAAA;AAEpB,YAAA,IAAK,IAAIlB,EAAAA,GAAK,CAAGA,EAAAA,EAAAA,GAAK,GAAGA,EAAM,EAAA,CAAA;gBAC7B,IAAM7H,CAAAA,GAAI6H,KAAKS,MAASO,GAAAA,UAAAA,CAAAA;AAExB,gBAAA,IAAK,IAAIb,EAAAA,GAAK,CAAGA,EAAAA,EAAAA,GAAK,GAAGA,EAAM,EAAA,CAAA;wBAO7BhC,OAMAE,EAAAA,QAAAA,CAAAA;oBAZA,IAAMU,CAAAA,GAAIoB,KAAKK,KAAQO,GAAAA,SAAAA,CAAAA;oBAEvBpF,KAAK,CAACyE,CAAE,CAAA,GAAGrB,CAAI8B,GAAAA,IAAAA,CAAAA;oBACflF,KAAK,CAACpD,CAAE,CAAA,GAAGJ,CAAI2I,GAAAA,IAAAA,CAAAA;oBACfnF,KAAK,CAACiF,EAAE,GAAGK,SAAAA,CAAAA;AAEX9C,oBAAAA,CAAAA,OAAAA,GAAAA,MAAAA,EAAO9J,IAAI,CAAX8J,MAAAA,OAAexC,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;oBAEfA,KAAK,CAACyE,EAAE,GAAG,CAAA,CAAA;oBACXzE,KAAK,CAACpD,EAAE,GAAG,CAAA,CAAA;AACXoD,oBAAAA,KAAK,CAACiF,CAAE,CAAA,GAAGF,KAAQ,GAAA,CAAA,GAAI,IAAI,CAAE,CAAA,CAAA;AAE7BrC,oBAAAA,CAAAA,QAAAA,GAAAA,OAAAA,EAAQhK,IAAI,CAAZgK,MAAAA,QAAgB1C,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAEhByC,oBAAAA,GAAAA,CAAI/J,IAAI,CAAC8L,EAAAA,CAAAA,CAAAA;oBACT/B,GAAI/J,CAAAA,IAAI,CAAC,CAAI2L,GAAAA,EAAAA,CAAAA,CAAAA;oBAEbkB,aAAiB,IAAA,CAAA,CAAA;AACnB,iBAAA;AACF,aAAA;AAEA,YAAA,IAAK,IAAIlB,GAAAA,GAAK,CAAGA,EAAAA,GAAAA,GAAK,GAAGA,GAAM,EAAA,CAAA;AAC7B,gBAAA,IAAK,IAAIG,GAAAA,GAAK,CAAGA,EAAAA,GAAAA,GAAK,GAAGA,GAAM,EAAA,CAAA;oBAC7B,IAAM/L,CAAAA,GAAI+M,gBAAmBhB,GAAAA,GAAAA,GAAK,CAAIH,GAAAA,GAAAA,CAAAA;AACtC,oBAAA,IAAMtC,IAAIyD,gBAAmBhB,GAAAA,GAAAA,GAAK,CAAKH,IAAAA,MAAK,CAAA,CAAA,CAAA;oBAC5C,IAAM5I,CAAAA,GAAI+J,oBAAoBhB,GAAAA,GAAK,CAAA,CAAK,GAAA,CAAA,IAAKH,GAAAA,GAAK,CAAA,CAAA,CAAA;AAClD,oBAAA,IAAMzI,IAAI4J,gBAAoBhB,IAAAA,GAAK,GAAA,CAAA,IAAK,CAAIH,GAAAA,GAAAA,CAAAA;oBAE5C1B,OAAQjK,CAAAA,IAAI,CAACD,CAAAA,EAAGsJ,CAAGnG,EAAAA,CAAAA,CAAAA,CAAAA;oBACnB+G,OAAQjK,CAAAA,IAAI,CAACqJ,CAAAA,EAAGtG,CAAGG,EAAAA,CAAAA,CAAAA,CAAAA;AACrB,iBAAA;AACF,aAAA;YAEA4J,gBAAoBD,IAAAA,aAAAA,CAAAA;AACtB,SAAA,CAAA;;AAzDA,QAAA,IAAIC,gBAAmB,GAAA,CAAA,CAAA;QAEvBR,UAAW,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAE,GAAG,CAAE,CAAA,EAAGD,KAAOD,EAAAA,MAAAA,EAAQD,KAAO,EAAA,KAAA,CAAKrC,MAAM,EAAE,KAAA,CAAKC,GAAG,EAAE,KAAA,CAAKC,OAAO,EAAE,KAAA,CAAKC,OAAO,CAAA,CAAA;QACrGqC,UAAW,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAE,CAAGD,EAAAA,KAAAA,EAAOD,MAAQ,EAAA,CAAED,KAAO,EAAA,KAAA,CAAKrC,MAAM,EAAE,KAAA,CAAKC,GAAG,EAAE,KAAA,CAAKC,OAAO,EAAE,KAAA,CAAKC,OAAO,CAAA,CAAA;QACrGqC,UAAW,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAGH,KAAOE,EAAAA,KAAAA,EAAOD,QAAQ,KAAKtC,CAAAA,MAAM,EAAE,KAAKC,CAAAA,GAAG,EAAE,KAAKC,CAAAA,OAAO,EAAE,KAAKC,CAAAA,OAAO;QACjGqC,UAAW,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAE,CAAGH,EAAAA,KAAAA,EAAOE,KAAO,EAAA,CAAED,MAAQ,EAAA,KAAA,CAAKtC,MAAM,EAAE,KAAA,CAAKC,GAAG,EAAE,KAAA,CAAKC,OAAO,EAAE,KAAA,CAAKC,OAAO,CAAA,CAAA;QACrGqC,UAAW,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAE,CAAGH,EAAAA,KAAAA,EAAOC,QAAQC,KAAO,EAAA,KAAA,CAAKvC,MAAM,EAAE,KAAA,CAAKC,GAAG,EAAE,KAAA,CAAKC,OAAO,EAAE,KAAA,CAAKC,OAAO,CAAA,CAAA;QACnGqC,UAAW,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAE,GAAG,CAAE,CAAA,EAAGH,KAAOC,EAAAA,MAAAA,EAAQ,CAAEC,KAAAA,EAAO,MAAKvC,MAAM,EAAE,KAAKC,CAAAA,GAAG,EAAE,KAAA,CAAKC,OAAO,EAAE,KAAA,CAAKC,OAAO,CAAA,CAAA;;;AAjB9FiC,IAAAA,OAAAA,eAAAA,CAAAA;EAAwBrC,YAqEpC,CAAA;;ACtED,IAAQ7C,YAAYD,IAAZC,CAAAA,OAAAA,CAAAA;AAER;;AAEC,IACM,IAAA,oBAAM+F,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,YAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,oBAAAA,CAaTC,SAAa,EACbC,YAAgB,EAChBb,MAAU,EACVc,cAAkB,EAClBjC,cAAkB,EAClBkC,SAAiB,EACjB7C,UAAc,EACdC,WAAyB,EAAA;AAPzByC,QAAAA,IAAAA,sBAAAA,SAAY,GAAA,CAAA,CAAA;AACZC,QAAAA,IAAAA,yBAAAA,YAAe,GAAA,CAAA,CAAA;AACfb,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACTc,QAAAA,IAAAA,2BAAAA,cAAiB,GAAA,CAAA,CAAA;AACjBjC,QAAAA,IAAAA,2BAAAA,cAAiB,GAAA,CAAA,CAAA;AACjBkC,QAAAA,IAAAA,sBAAAA,SAAY,GAAA,KAAA,CAAA;AACZ7C,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,CAAA,CAAA;AACbC,QAAAA,IAAAA,WAAAA,KAAAA,KAAAA,CAAAA,EAAAA,WAAAA,GAActC,IAAKmD,CAAAA,EAAE,GAAG,CAAA,CAAA;;YAiBfgC,aAAT,GAAA,SAASA,cAAetD,MAAgB,EAAEC,GAAa,EAAEC,OAAiB,EAAEC,OAAiB,EAAA;;AAE3F,YAAA,IAAMoD,KAAQ,GAACJ,CAAAA,YAAAA,GAAeD,SAAQ,IAAKZ,MAAAA,CAAAA;AAE3C,YAAA,IAAK,IAAItI,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,IAAKmH,gBAAgBnH,CAAK,EAAA,CAAA;AACxC,gBAAA,IAAMwJ,WAAW,EAAE,CAAA;AACnB,gBAAA,IAAMpJ,IAAIJ,CAAImH,GAAAA,cAAAA,CAAAA;AAEd,gBAAA,IAAMd,MAASjG,GAAAA,CAAAA,IAAK+I,YAAAA,GAAeD,SAAQ,CAAKA,GAAAA,SAAAA,CAAAA;AAEhD,gBAAA,IAAK,IAAItC,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,IAAKwC,gBAAgBxC,CAAK,EAAA,CAAA;AAcxCV,oBAAAA,IAAAA,QAAAA,CAAAA;AAbA,oBAAA,IAAM+B,IAAIrB,CAAIwC,GAAAA,cAAAA,CAAAA;oBACd,IAAMzC,KAAAA,GAAQsB,IAAIxB,WAAcD,GAAAA,UAAAA,CAAAA;oBAChC,IAAMiD,QAAAA,GAAWtF,IAAK2C,CAAAA,GAAG,CAACH,KAAAA,CAAAA,CAAAA;oBAC1B,IAAM+C,QAAAA,GAAWvF,IAAK0C,CAAAA,GAAG,CAACF,KAAAA,CAAAA,CAAAA;AAE1B,oBAAA,IAAMgD,KAAKtD,MAASoD,GAAAA,QAAAA,CAAAA;oBACpB,IAAMG,EAAAA,GAAK,CAAExJ,CAAAA,GAAIkI,MAASuB,GAAAA,UAAAA,CAAAA;AAC1B,oBAAA,IAAMC,KAAKzD,MAASqD,GAAAA,QAAAA,CAAAA;oBAEpB1D,MAAO9J,CAAAA,IAAI,CAACyN,EAAAA,EAAIC,EAAIE,EAAAA,EAAAA,CAAAA,CAAAA;AAEpB,oBAAA,IAAM5B,SAAS,IAAIhF,SAAAA,CAAQuG,QAAUF,EAAAA,KAAAA,EAAOG,UAAUhH,SAAS,EAAA,CAAA;AAE/DwD,oBAAAA,CAAAA,WAAAA,OAAQhK,EAAAA,IAAI,CAAZgK,KAAAA,CAAAA,QAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAgBgC,OAAOC,OAAO,EAAA,CAAA,CAAA,CAAA;oBAE9BlC,GAAI/J,CAAAA,IAAI,CAAC+L,CAAAA,EAAG,CAAI7H,GAAAA,CAAAA,CAAAA,CAAAA;AAEhBoJ,oBAAAA,QAAAA,CAAStN,IAAI,CAAC0L,KAAAA,EAAAA,CAAAA,CAAAA;AAChB,iBAAA;AACAmC,gBAAAA,UAAAA,CAAW7N,IAAI,CAACsN,QAAAA,CAAAA,CAAAA;AAClB,aAAA;AAEA,YAAA,IAAK,IAAI5C,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAIwC,gBAAgBxC,EAAK,EAAA,CAAA;AACvC,gBAAA,IAAK,IAAI5G,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAImH,gBAAgBnH,EAAK,EAAA,CAAA;AACvC,oBAAA,IAAM/D,CAAI8N,GAAAA,UAAU,CAAC/J,EAAAA,CAAE,CAAC4G,EAAE,CAAA,CAAA;AAC1B,oBAAA,IAAMrB,IAAIwE,UAAU,CAAC/J,EAAI,GAAA,CAAA,CAAE,CAAC4G,EAAE,CAAA,CAAA;AAC9B,oBAAA,IAAM3H,IAAI8K,UAAU,CAAC/J,KAAI,CAAE,CAAA,CAAC4G,KAAI,CAAE,CAAA,CAAA;AAClC,oBAAA,IAAMxH,IAAI2K,UAAU,CAAC/J,EAAE,CAAA,CAAC4G,KAAI,CAAE,CAAA,CAAA;oBAE9BT,OAAQjK,CAAAA,IAAI,CAACD,CAAAA,EAAGsJ,CAAGnG,EAAAA,CAAAA,CAAAA,CAAAA;oBACnB+G,OAAQjK,CAAAA,IAAI,CAACqJ,CAAAA,EAAGtG,CAAGG,EAAAA,CAAAA,CAAAA,CAAAA;AACrB,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;YAES4K,WAAT,GAAA,SAASA,WAAa5E,CAAAA,GAAY,EAAEY,MAAgB,EAAEC,GAAa,EAAEC,OAAiB,EAAEC,OAAiB,EAAA;AACvG,YAAA,IAAM8D,gBAAmBrC,GAAAA,KAAAA,CAAAA;AAEzB,YAAA,IAAMvB,MAAS,GAACjB,GAAQ,KAAA,IAAA,GAAQ8D,SAAYC,GAAAA,YAAAA,CAAAA;AAC5C,YAAA,IAAMe,IAAO,GAAC9E,GAAQ,KAAA,IAAA,GAAQ,IAAI,CAAE,CAAA,CAAA;AAEpC,YAAA,IAAK,IAAIwB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,IAAKwC,gBAAgBxC,CAAK,EAAA,CAAA;AACxCZ,gBAAAA,MAAAA,CAAO9J,IAAI,CAAC,CAAG2N,EAAAA,UAAAA,GAAaK,IAAM,EAAA,CAAA,CAAA,CAAA;gBAClChE,OAAQhK,CAAAA,IAAI,CAAC,CAAA,EAAGgO,IAAM,EAAA,CAAA,CAAA,CAAA;gBACtBjE,GAAI/J,CAAAA,IAAI,CAAC,GAAK,EAAA,GAAA,CAAA,CAAA;AAEd0L,gBAAAA,KAAAA,EAAAA,CAAAA;AACF,aAAA;AAEA,YAAA,IAAMuC,cAAiBvC,GAAAA,KAAAA,CAAAA;AAEvB,YAAA,IAAK,IAAIhB,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,IAAKwC,gBAAgBxC,EAAK,EAAA,CAAA;AAExC,gBAAA,IAAMqB,IAAIrB,EAAIwC,GAAAA,cAAAA,CAAAA;gBACd,IAAMzC,KAAAA,GAAQsB,IAAIxB,WAAcD,GAAAA,UAAAA,CAAAA;gBAEhC,IAAMkD,QAAAA,GAAWvF,IAAK0C,CAAAA,GAAG,CAACF,KAAAA,CAAAA,CAAAA;gBAC1B,IAAM8C,QAAAA,GAAWtF,IAAK2C,CAAAA,GAAG,CAACH,KAAAA,CAAAA,CAAAA;AAE1B,gBAAA,IAAMgD,KAAKtD,MAASoD,GAAAA,QAAAA,CAAAA;AACpB,gBAAA,IAAMG,KAAKC,UAAaK,GAAAA,IAAAA,CAAAA;AACxB,gBAAA,IAAMJ,KAAKzD,MAASqD,GAAAA,QAAAA,CAAAA;gBAEpB1D,MAAO9J,CAAAA,IAAI,CAACyN,EAAAA,EAAIC,EAAIE,EAAAA,EAAAA,CAAAA,CAAAA;gBAEpB5D,OAAQhK,CAAAA,IAAI,CAAC,CAAA,EAAGgO,IAAM,EAAA,CAAA,CAAA,CAAA;gBAEtB,IAAME,GAAAA,GAAM,QAACV,GAAW,GAAO,GAAA,GAAA,CAAA;AAC/B,gBAAA,IAAMW,GAAM,GAACZ,QAAW,GAAA,GAAA,GAAMS,IAAQ,GAAA,GAAA,CAAA;gBAEtCjE,GAAI/J,CAAAA,IAAI,CAACkO,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAEdzC,gBAAAA,KAAAA,EAAAA,CAAAA;AACF,aAAA;AAEA,YAAA,IAAK,IAAIhB,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAIwC,gBAAgBxC,EAAK,EAAA,CAAA;AACvC,gBAAA,IAAM3H,IAAIgL,gBAAmBrD,GAAAA,EAAAA,CAAAA;AAC7B,gBAAA,IAAMpJ,IAAI2M,cAAiBvD,GAAAA,EAAAA,CAAAA;AAE3B,gBAAA,IAAIxB,QAAQ,IAAM,EAAA;AAChBe,oBAAAA,OAAAA,CAAQjK,IAAI,CAACsB,CAAGA,EAAAA,CAAAA,GAAI,CAAGyB,EAAAA,CAAAA,CAAAA,CAAAA;iBAClB,MAAA;AACLkH,oBAAAA,OAAAA,CAAQjK,IAAI,CAACsB,CAAI,GAAA,CAAA,EAAGA,CAAGyB,EAAAA,CAAAA,CAAAA,CAAAA;AACzB,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;;QA9GAmK,cAAiBjF,GAAAA,IAAAA,CAAKqD,KAAK,CAAC4B,cAAAA,CAAAA,CAAAA;QAC5BjC,cAAiBhD,GAAAA,IAAAA,CAAKqD,KAAK,CAACL,cAAAA,CAAAA,CAAAA;AAE5B,QAAA,IAAIS,KAAQ,GAAA,CAAA,CAAA;AACZ,QAAA,IAAMmC,aAAyB,EAAE,CAAA;AACjC,QAAA,IAAMF,aAAavB,MAAS,GAAA,CAAA,CAAA;QAE5BgB,aAAc,CAAA,KAAA,CAAKtD,MAAM,EAAE,KAAKC,CAAAA,GAAG,EAAE,KAAKC,CAAAA,OAAO,EAAE,KAAA,CAAKC,OAAO,CAAA,CAAA;AAE/D,QAAA,IAAIkD,cAAc,KAAO,EAAA;AACvB,YAAA,IAAIH,YAAY,CAAG,EAAA;gBAAEc,WAAY,CAAA,IAAA,EAAM,KAAKhE,CAAAA,MAAM,EAAE,KAAA,CAAKC,GAAG,EAAE,KAAKC,CAAAA,OAAO,EAAE,KAAA,CAAKC,OAAO,CAAA,CAAA;AAAG,aAAA;AAC3F,YAAA,IAAIgD,eAAe,CAAG,EAAA;gBAAEa,WAAY,CAAA,KAAA,EAAO,KAAKhE,CAAAA,MAAM,EAAE,KAAA,CAAKC,GAAG,EAAE,KAAKC,CAAAA,OAAO,EAAE,KAAA,CAAKC,OAAO,CAAA,CAAA;AAAG,aAAA;AACjG,SAAA;;;AAnCS8C,IAAAA,OAAAA,oBAAAA,CAAAA;EAA6BlD,YAuIzC,CAAA;;AC7ID;;AAEC,IACM,IAAA,gBAAMuE,iBAAD,SAAL,oBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,oBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,gBAAAA,CAYTjE,MAAU,EACViC,MAAU,EACVc,cAAkB,EAClBjC,cAAkB,EAClBkC,SAAiB,EACjB7C,UAAc,EACdC,WAAyB,EAAA;AANzBJ,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACTiC,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACTc,QAAAA,IAAAA,2BAAAA,cAAiB,GAAA,CAAA,CAAA;AACjBjC,QAAAA,IAAAA,2BAAAA,cAAiB,GAAA,CAAA,CAAA;AACjBkC,QAAAA,IAAAA,sBAAAA,SAAY,GAAA,KAAA,CAAA;AACZ7C,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,CAAA,CAAA;AACbC,QAAAA,IAAAA,WAAAA,KAAAA,KAAAA,CAAAA,EAAAA,WAAAA,GAActC,IAAKmD,CAAAA,EAAE,GAAG,CAAA,CAAA;AAElB,QAAA,OAAA,oBAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CAAA,EAAGjB,MAAQiC,EAAAA,MAAAA,EAAQc,cAAgBjC,EAAAA,cAAAA,EAAgBkC,WAAW7C,UAAYC,EAAAA,WAAAA,CAAAA,CAAAA;;AApBvE6D,IAAAA,OAAAA,gBAAAA,CAAAA;EAAyBrB,oBAsBrC,CAAA;;ACxBD,IAAQ/F,YAAYD,IAAZC,CAAAA,OAAAA,CAAAA;AAER;;AAEC,IACM,IAAA,iBAAMqH,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,YAAAA,CAAAA,CAAAA;aAAAA,iBAUTlE,CAAAA,MAAU,EACVmE,IAAU,EACVpB,cAAmB,EACnBqB,eAAoB,EACpBC,GAAiB,EAAA;AAJjBrE,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACTmE,QAAAA,IAAAA,iBAAAA,IAAO,GAAA,GAAA,CAAA;AACPpB,QAAAA,IAAAA,2BAAAA,cAAiB,GAAA,EAAA,CAAA;AACjBqB,QAAAA,IAAAA,4BAAAA,eAAkB,GAAA,EAAA,CAAA;AAClBC,QAAAA,IAAAA,GAAAA,KAAAA,KAAAA,CAAAA,EAAAA,GAAAA,GAAMvG,IAAKmD,CAAAA,EAAE,GAAG,CAAA,CAAA;;;QAIhB8B,cAAiBjF,GAAAA,IAAAA,CAAKqD,KAAK,CAAC4B,cAAAA,CAAAA,CAAAA;QAC5BqB,eAAkBtG,GAAAA,IAAAA,CAAKqD,KAAK,CAACiD,eAAAA,CAAAA,CAAAA;AAE7B,QAAA,IAAK,IAAIE,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,IAAKvB,gBAAgBuB,CAAK,EAAA,CAAA;AACxC,YAAA,IAAK,IAAInN,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,IAAKiN,iBAAiBjN,CAAK,EAAA,CAAA;AAiBzC,gBAAA,IAAA,aAAA,CAAA;gBAfA,IAAMyK,CAAAA,GAAIzK,IAAIiN,eAAkBC,GAAAA,GAAAA,CAAAA;AAChC,gBAAA,IAAMtK,CAAIuK,GAAAA,CAAAA,GAAIvB,cAAiBjF,GAAAA,IAAAA,CAAKmD,EAAE,GAAG,CAAA,CAAA;AAEzC,gBAAA,IAAMqC,EAAK,GAACtD,CAAAA,MAAAA,GAASmE,IAAOrG,GAAAA,IAAAA,CAAK0C,GAAG,CAACzG,CAAC,CAAA,IAAK+D,IAAK0C,CAAAA,GAAG,CAACoB,CAAAA,CAAAA,CAAAA;AACpD,gBAAA,IAAM2B,EAAK,GAACvD,CAAAA,MAAAA,GAASmE,IAAOrG,GAAAA,IAAAA,CAAK0C,GAAG,CAACzG,CAAC,CAAA,IAAK+D,IAAK2C,CAAAA,GAAG,CAACmB,CAAAA,CAAAA,CAAAA;AACpD,gBAAA,IAAM6B,EAAKU,GAAAA,IAAAA,GAAOrG,IAAK2C,CAAAA,GAAG,CAAC1G,CAAAA,CAAAA,CAAAA;AAE3B,gBAAA,KAAA,CAAK4F,MAAM,CAAC9J,IAAI,CAACyN,IAAIC,EAAIE,EAAAA,EAAAA,CAAAA,CAAAA;AAEzB,gBAAA,IAAMc,EAAKvE,GAAAA,MAAAA,GAASlC,IAAK0C,CAAAA,GAAG,CAACoB,CAAAA,CAAAA,CAAAA;AAC7B,gBAAA,IAAM4C,EAAKxE,GAAAA,MAAAA,GAASlC,IAAK2C,CAAAA,GAAG,CAACmB,CAAAA,CAAAA,CAAAA;AAC7B,gBAAA,IAAMxN,CAAI,GAAA,IAAIyI,SAAQyG,CAAAA,EAAAA,EAAIC,EAAIE,EAAAA,EAAAA,CAAAA,CAAAA;AAC9B,gBAAA,IAAM7K,CAAI,GAAA,IAAIiE,SAAQ0H,CAAAA,EAAAA,EAAIC,EAAI,EAAA,CAAA,CAAA,CAAA;AAC9B,gBAAA,IAAM3C,MAASzN,GAAAA,CAAAA,CAAE+H,QAAQ,CAACvD,GAAGyD,SAAS,EAAA,CAAA;gBAEtC,CAAA,aAAA,GAAA,MAAKwD,OAAO,EAAChK,IAAI,CAAjB,KAAA,CAAA,aAAqBgM,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAOC,OAAO,EAAA,CAAA,CAAA,CAAA;AAEnC,gBAAA,KAAA,CAAKlC,GAAG,CAAC/J,IAAI,CAACsB,CAAIiN,GAAAA,eAAAA,CAAAA,CAAAA;AAClB,gBAAA,KAAA,CAAKxE,GAAG,CAAC/J,IAAI,CAACyO,CAAIvB,GAAAA,cAAAA,CAAAA,CAAAA;AACpB,aAAA;AACF,SAAA;AAEA,QAAA,IAAK,IAAIuB,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,IAAKvB,gBAAgBuB,EAAK,EAAA,CAAA;AACxC,YAAA,IAAK,IAAInN,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,IAAKiN,iBAAiBjN,EAAK,EAAA,CAAA;AACzC,gBAAA,IAAMvB,IAAI,CAACwO,kBAAkB,CAAA,IAAKE,KAAInN,EAAI,GAAA,CAAA,CAAA;gBAC1C,IAAM+H,CAAAA,GAAI,CAACkF,eAAkB,GAAA,CAAA,KAAME,EAAAA,GAAI,CAAA,CAAA,GAAKnN,EAAI,GAAA,CAAA,CAAA;gBAChD,IAAMyB,EAAAA,GAAI,CAACwL,eAAAA,GAAkB,CAAA,KAAME,EAAI,GAAA,CAAA,CAAKnN,GAAAA,EAAAA,CAAAA;AAC5C,gBAAA,IAAM4B,IAAI,CAACqL,eAAkB,GAAA,CAAA,IAAKE,EAAInN,GAAAA,EAAAA,CAAAA;AAEtC,gBAAA,KAAA,CAAK2I,OAAO,CAACjK,IAAI,CAACD,GAAGsJ,CAAGnG,EAAAA,CAAAA,CAAAA,CAAAA;AACxB,gBAAA,KAAA,CAAK+G,OAAO,CAACjK,IAAI,CAACqJ,GAAGtG,EAAGG,EAAAA,CAAAA,CAAAA,CAAAA;AAC1B,aAAA;AACF,SAAA;;;AAxDSmL,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0BxE,YA0DtC,CAAA;;AChED;;AAEC,IACM,IAAA,iBAAM+E,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,YAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,CASTzC,KAAS,EACTC,MAAU,EACVpB,aAAiB,EACjBC,cAAkB,EAAA;AAHlBkB,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;AACRC,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACTpB,QAAAA,IAAAA,0BAAAA,aAAgB,GAAA,CAAA,CAAA;AAChBC,QAAAA,IAAAA,2BAAAA,cAAiB,GAAA,CAAA,CAAA;;;AAIjB,QAAA,IAAMyB,YAAYP,KAAQ,GAAA,CAAA,CAAA;AAC1B,QAAA,IAAMQ,aAAaP,MAAS,GAAA,CAAA,CAAA;QAE5B,IAAMyC,KAAAA,GAAQ5G,IAAKqD,CAAAA,KAAK,CAACN,aAAAA,CAAAA,CAAAA;QACzB,IAAM8D,KAAAA,GAAQ7G,IAAKqD,CAAAA,KAAK,CAACL,cAAAA,CAAAA,CAAAA;AAEzB,QAAA,IAAM8D,SAASF,KAAQ,GAAA,CAAA,CAAA;AACvB,QAAA,IAAMG,SAASF,KAAQ,GAAA,CAAA,CAAA;AAEvB,QAAA,IAAMG,eAAe9C,KAAQ0C,GAAAA,KAAAA,CAAAA;AAC7B,QAAA,IAAMK,gBAAgB9C,MAAS0C,GAAAA,KAAAA,CAAAA;AAE/B,QAAA,IAAK,IAAInD,EAAAA,GAAK,CAAGA,EAAAA,EAAAA,GAAKqD,QAAQrD,EAAM,EAAA,CAAA;YAClC,IAAM7H,CAAAA,GAAI6H,KAAKuD,aAAgBvC,GAAAA,UAAAA,CAAAA;AAE/B,YAAA,IAAK,IAAIb,EAAAA,GAAK,CAAGA,EAAAA,EAAAA,GAAKiD,QAAQjD,EAAM,EAAA,CAAA;gBAClC,IAAMpB,CAAAA,GAAIoB,KAAKmD,YAAevC,GAAAA,SAAAA,CAAAA;AAE9B,gBAAA,KAAA,CAAK5C,MAAM,CAAC9J,IAAI,CAAC0K,CAAAA,EAAG,CAAE5G,CAAG,EAAA,CAAA,CAAA,CAAA;AACzB,gBAAA,KAAA,CAAKkG,OAAO,CAAChK,IAAI,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACxB,gBAAA,KAAA,CAAK+J,GAAG,CAAC/J,IAAI,CAAC8L,EAAK+C,GAAAA,KAAAA,CAAAA,CAAAA;AACnB,gBAAA,KAAA,CAAK9E,GAAG,CAAC/J,IAAI,CAAC,IAAK2L,EAAKmD,GAAAA,KAAAA,CAAAA,CAAAA;AAC1B,aAAA;AACF,SAAA;AACA,QAAA,IAAK,IAAInD,GAAAA,GAAK,CAAGA,EAAAA,GAAAA,GAAKmD,OAAOnD,GAAM,EAAA,CAAA;AACjC,YAAA,IAAK,IAAIG,GAAAA,GAAK,CAAGA,EAAAA,GAAAA,GAAK+C,OAAO/C,GAAM,EAAA,CAAA;gBACjC,IAAM/L,CAAAA,GAAI+L,MAAKiD,MAASpD,GAAAA,GAAAA,CAAAA;AACxB,gBAAA,IAAMtC,CAAIyC,GAAAA,GAAAA,GAAKiD,MAAUpD,IAAAA,MAAK,CAAA,CAAA,CAAA;AAC9B,gBAAA,IAAM5I,IAAI,GAAC+I,GAAK,IAAKiD,MAAUpD,IAAAA,MAAK,CAAA,CAAA,CAAA;AACpC,gBAAA,IAAMzI,CAAI,GAAC4I,GAAK,GAAA,CAAA,GAAKiD,MAASpD,GAAAA,GAAAA,CAAAA;AAE9B,gBAAA,KAAA,CAAK1B,OAAO,CAACjK,IAAI,CAACD,GAAGsJ,CAAGnG,EAAAA,CAAAA,CAAAA,CAAAA;AACxB,gBAAA,KAAA,CAAK+G,OAAO,CAACjK,IAAI,CAACqJ,GAAGtG,CAAGG,EAAAA,CAAAA,CAAAA,CAAAA;AAC1B,aAAA;AACF,SAAA;;;AAlDS0L,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0B/E,YAoDtC,CAAA;;ACrDD,IAAQsF,UAA4BpI,IAA5BoI,CAAAA,KAAAA,EAAOnI,YAAqBD,IAArBC,CAAAA,OAAAA,EAASG,YAAYJ,IAAZI,CAAAA,OAAAA,CAAAA;AAExB;;AAEC,IACM,IAAA,mBAAMiI,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,YAAAA,CAAAA,CAAAA;aAAAA,mBAWTC,CAAAA,QAAmB,EACnBC,QAAmB,EACnBC,GAAW,EACXC,MAAc,EACdrG,IAAY,EACZC,GAAW,EAAA;AAkBX,QAAA,IAAA,YAAA,CAAA;;;AAdA,QAAA,IAAMqG,IAAOF,GAAAA,GAAAA,GAAM,GAAMtH,GAAAA,IAAAA,CAAKmD,EAAE,CAAA;AAChC,QAAA,IAAMsE,KAAQF,GAAAA,MAAAA,CAAAA;AACd,QAAA,IAAMG,KAAQvG,GAAAA,GAAAA,GAAMnB,IAAK2H,CAAAA,GAAG,CAACH,IAAO,GAAA,CAAA,CAAA,CAAA;AACpC,QAAA,IAAMI,QAAQF,KAAQD,GAAAA,KAAAA,CAAAA;AACtB,QAAA,IAAMI,MAAS,GAAA,IAAI9I,SAAQ6I,CAAAA,KAAAA,EAAOF,KAAOvG,EAAAA,GAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAM2G,MAAS,GAAA,IAAI/I,SAAQ,CAAA,CAAC6I,OAAOF,KAAOvG,EAAAA,GAAAA,CAAAA,CAAAA;AAC1C,QAAA,IAAM4G,SAAS,IAAIhJ,SAAAA,CAAQ,CAAC6I,KAAAA,EAAO,CAACF,KAAOvG,EAAAA,GAAAA,CAAAA,CAAAA;AAC3C,QAAA,IAAM6G,MAAS,GAAA,IAAIjJ,SAAQ6I,CAAAA,KAAAA,EAAO,CAACF,KAAOvG,EAAAA,GAAAA,CAAAA,CAAAA;AAC1C,QAAA,IAAM8G,SAASf,OAAMgB,CAAAA,SAAS,CAACb,QAAUc,CAAAA,CAAAA,SAAS,CAAC,IAAIjJ,SAAAA,EAAAA,CAAAA,CAAAA;AACvD,QAAA,IAAMkJ,UAAUH,MAAOI,CAAAA,cAAc,CAACR,MAAAA,CAAAA,CAAQjJ,GAAG,CAACwI,QAAAA,CAAAA,CAAAA;AAClD,QAAA,IAAMkB,UAAUL,MAAOI,CAAAA,cAAc,CAACP,MAAAA,CAAAA,CAAQlJ,GAAG,CAACwI,QAAAA,CAAAA,CAAAA;AAClD,QAAA,IAAMmB,UAAUN,MAAOI,CAAAA,cAAc,CAACN,MAAAA,CAAAA,CAAQnJ,GAAG,CAACwI,QAAAA,CAAAA,CAAAA;AAClD,QAAA,IAAMoB,UAAUP,MAAOI,CAAAA,cAAc,CAACL,MAAAA,CAAAA,CAAQpJ,GAAG,CAACwI,QAAAA,CAAAA,CAAAA;AAElD,QAAA,CAAA,eAAA,KAAKvF,CAAAA,MAAM,EAAC9J,IAAI,CAAhB,MAAA,YACKqP,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,QAAAA,EACAgB,QAAQpE,OAAO,EAAA,EAAOsE,QAAQtE,OAAO,EAAA,EACrCuE,QAAQvE,OAAO,EAAA,EAAOwE,QAAQxE,OAAO,EAAA,CAAA,CAAA,CAAA;AAE1C,QAAA,KAAA,CAAKhC,OAAO,CAACjK,IAAI,CAAC,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;;;AAvCtDoP,IAAAA,OAAAA,mBAAAA,CAAAA;EAA4BvF,YAyCxC,CAAA;;AChDD;;;AAGC,IACM,IAAA,kBAAM6G,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,YAAAA,CAAAA,CAAAA;aAAAA,kBAWTvG,CAAAA,MAAU,EACV9I,MAAU,EACVgJ,QAAa,EACbsG,WAAe,EACfrG,UAAc,EACdC,WAAyB,EAAA;AALzBJ,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACT9I,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACTgJ,QAAAA,IAAAA,qBAAAA,QAAW,GAAA,EAAA,CAAA;AACXsG,QAAAA,IAAAA,wBAAAA,WAAc,GAAA,CAAA,CAAA;AACdrG,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,CAAA,CAAA;AACbC,QAAAA,IAAAA,WAAAA,KAAAA,KAAAA,CAAAA,EAAAA,WAAAA,GAActC,IAAKmD,CAAAA,EAAE,GAAG,CAAA,CAAA;;;AAIxB,QAAA,KAAA,CAAKlB,mBAAmB,CAACC,MAAQ,EAAA,CAAA,EAAGE,QAAUC,EAAAA,UAAAA,EAAYC,WAAa,EAAA,CAAA,EAAG,KAAKT,CAAAA,MAAM,EAAE,KAAA,CAAKG,OAAO,CAAA,CAAA;QACnG,IAAM2G,KAAAA,GAAQvG,WAAWsG,WAAc,GAAA,CAAA,CAAA;AACvC,QAAA,IAAMxM,OAAOkG,QAAWsG,GAAAA,WAAAA,CAAAA;AAExB,QAAA,IAAK,IAAIrP,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIqP,aAAarP,CAAK,EAAA,CAAA;YACpC,IAAMoK,KAAAA,GAAQkF,QAAQtP,CAAI6C,GAAAA,IAAAA,CAAAA;AAC1B,YAAA,IAAMuG,CAAI,GAAA,KAAA,CAAKZ,MAAM,CAAC,IAAI4B,KAAM,CAAA,CAAA;AAChC,YAAA,IAAM5H,IAAI,KAAKgG,CAAAA,MAAM,CAAC,CAAA,GAAI4B,QAAQ,CAAE,CAAA,CAAA;AACpC,YAAA,IAAMtB,IAAI,CAAC/I,MAAAA,CAAAA;AAEX,YAAA,KAAA,CAAKyI,MAAM,CAAC9J,IAAI,CAAC0K,GAAG5G,CAAGsG,EAAAA,CAAAA,CAAAA,CAAAA;AACvB,YAAA,KAAA,CAAKH,OAAO,CAACjK,IAAI,CAAC0L,OAAOrB,QAAW/I,GAAAA,CAAAA,CAAAA,CAAAA;AACtC,SAAA;;;AAhCSoP,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2B7G,YAkCvC;;ACtCD;;;AAGC,IACM,IAAA,cAAMgH,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,YAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,CASTC,KAAU,EACVzG,QAAa,EACbC,UAAc,EACdC,WAAyB,EAAA;AAHzBuG,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,EAAA,CAAA;AACRzG,QAAAA,IAAAA,qBAAAA,QAAW,GAAA,EAAA,CAAA;AACXC,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,CAAA,CAAA;AACbC,QAAAA,IAAAA,WAAAA,KAAAA,KAAAA,CAAAA,EAAAA,WAAAA,GAActC,IAAKmD,CAAAA,EAAE,GAAG,CAAA,CAAA;;;AAGxB,QAAA,KAAA,CAAKlB,mBAAmB,CAAC4G,KAAO,EAAA,CAAA,EAAGzG,QAAUC,EAAAA,UAAAA,EAAYC,WAAa,EAAA,CAAA,EAAG,KAAKT,CAAAA,MAAM,EAAE,KAAA,CAAKG,OAAO,CAAA,CAAA;AAClG,QAAA,KAAA,CAAKY,mBAAmB,CAACiG,KAAO,EAAA,CAAA,EAAGzG,QAAUC,EAAAA,UAAAA,EAAYC,WAAaF,EAAAA,QAAAA,EAAU,KAAKP,CAAAA,MAAM,EAAE,KAAA,CAAKG,OAAO,CAAA,CAAA;AACzG,QAAA,KAAA,CAAKa,mBAAmB,CAACgG,KAAO,EAAA,CAAA,EAAGzG,QAAUC,EAAAA,UAAAA,EAAYC,WAAa,EAAA,CAAA,GAAIF,QAAU,EAAA,KAAA,CAAKP,MAAM,EAAE,MAAKG,OAAO,CAAA,CAAA;;;AAjBpG4G,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBhH,YAmBnC,CAAA;;ACvBD;;;AAGC,IACM,IAAA,aAAMkH,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,YAAAA,CAAAA,CAAAA;aAAAA,aAUTD,CAAAA,KAAU,EACVE,SAAc,EACd3G,QAAa,EACbC,UAAc,EACdC,WAAyB,EAAA;AAJzBuG,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,EAAA,CAAA;AACRE,QAAAA,IAAAA,sBAAAA,SAAY,GAAA,EAAA,CAAA;AACZ3G,QAAAA,IAAAA,qBAAAA,QAAW,GAAA,EAAA,CAAA;AACXC,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,CAAA,CAAA;AACbC,QAAAA,IAAAA,WAAAA,KAAAA,KAAAA,CAAAA,EAAAA,WAAAA,GAActC,IAAKmD,CAAAA,EAAE,GAAG,CAAA,CAAA;;;AAIxB,QAAA,IAAM6F,KAAQD,GAAAA,SAAAA,GAAY,CAAI,GAAA,GAAA,GAAM/I,KAAKmD,EAAE,CAAA;AAC3C,QAAA,IAAMjB,MAAS2G,GAAAA,KAAAA,GAAQ7I,IAAK2H,CAAAA,GAAG,CAACqB,KAAAA,CAAAA,CAAAA;AAEhC,QAAA,KAAA,CAAK/G,mBAAmB,CAACC,MAAQ,EAAA,CAAC2G,KAAOzG,EAAAA,QAAAA,EAAUC,UAAYC,EAAAA,WAAAA,EAAa,CAAG,EAAA,KAAA,CAAKT,MAAM,EAAE,MAAKG,OAAO,CAAA,CAAA;AACxG,QAAA,KAAA,CAAKH,MAAM,CAAC9J,IAAI,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACvB,QAAA,IAAMmE,OAAOkG,QAAW,GAAA,CAAA,CAAA;QACxB,IAAMuG,KAAAA,GAAQvG,WAAW,CAAI,GAAA,CAAA,CAAA;AAE7B,QAAA,IAAK,IAAI/I,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;AAC1B,YAAA,KAAA,CAAK2I,OAAO,CAACjK,IAAI,CAACqK,QAAAA,EAAUuG,QAAQtP,CAAI6C,GAAAA,IAAAA,CAAAA,CAAAA;AAC1C,SAAA;;;AA5BS4M,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBlH,YA8BlC,CAAA;;AClCD;;;AAGC,IACM,IAAA,yBAAMqH,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,yBAAAA,EAAAA,YAAAA,CAAAA,CAAAA;aAAAA,yBAMEC,CAAAA,UAAe,EAAEC,KAAS,EAAA;AAA1BD,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,EAAA,CAAA;AAAIC,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;;;AAGpC,QAAA,IAAI1F,KAAQ,GAAA,CAAA,CAAA;AAEZ,QAAA,IAAMtB,CAAI,GAAA,CAAA,CAAA;AACV,QAAA,IAAMiH,MAAMF,UAAa,GAAA,CAAA,CAAA;QACzB,IAAMP,KAAAA,GAAQ,CAACO,UAAa,GAAA,CAAA,CAAA;AAE5B,QAAA,IAAK,IAAI7P,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,IAAK8P,OAAO9P,CAAK,EAAA,CAAA;YAC/B,IAAM4C,CAAAA,GAAI0M,KAAQtP,GAAAA,CAAAA,GAAI6P,UAAaC,GAAAA,KAAAA,CAAAA;AAEnC,YAAA,KAAA,CAAKtH,MAAM,CAAC9J,IAAI,CAACkE,GAAG0M,KAAOxG,EAAAA,CAAAA,EAAGlG,CAAGmN,EAAAA,GAAAA,EAAKjH,CAAGwG,EAAAA,KAAAA,EAAO1M,CAAGkG,EAAAA,CAAAA,EAAGiH,KAAKnN,CAAGkG,EAAAA,CAAAA,CAAAA,CAAAA;YAC9D,KAAKH,CAAAA,OAAO,CAACjK,IAAI,CAAC0L,OAAOA,KAAQ,GAAA,CAAA,EAAGA,KAAQ,GAAA,CAAA,EAAGA,KAAQ,GAAA,CAAA,CAAA,CAAA;YACvDA,KAAS,IAAA,CAAA,CAAA;AACX,SAAA;;;AArBSwF,IAAAA,OAAAA,yBAAAA,CAAAA;EAAkCrH,YAuB9C,CAAA;;;ACXWyH,CAAAA,SAAAA,YAAAA,EAAAA;;;;;;;;;;;;;GAAAA,YAAAA,KAAAA,YAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AA2BZ;;;;AAIC;AAED;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;IAOO,SAASC,cAAgB5L,CAAAA,MAAc,EAAE6L,IAAkB,EAAEC,IAAyB,EAAE1M,UAA6B,EAAA;IAC1H,IAAI2M,YAAAA,CAAAA;IAEJ,OAAQF,IAAAA;AACN,QAAA,KAAA,CAAA;YACEE,YAAe,GAAA,IAAI3G,mBAAmB0G,IAAKtH,CAAAA,MAAM,EAAEsH,IAAKzG,CAAAA,aAAa,EAAEyG,IAAAA,CAAKxG,cAAc,CAAA,CAAA;AAE1F,YAAA,MAAA;AACF,QAAA,KAAA,CAAA;YACEyG,YAAe,GAAA,IAAI3E,qBAAqB0E,IAAKtH,CAAAA,MAAM,EAAEsH,IAAKtH,CAAAA,MAAM,EAAEsH,IAAAA,CAAKrF,MAAM,CAAA,CAAA;AAE7E,YAAA,MAAA;AACF,QAAA,KAAA,CAAA;AACEsF,YAAAA,YAAAA,GAAe,IAAItD,gBAAiBqD,CAAAA,IAAAA,CAAKtH,MAAM,EAAEsH,KAAKrF,MAAM,CAAA,CAAA;AAE5D,YAAA,MAAA;AACF,QAAA,KAAA,CAAA;AACEsF,YAAAA,YAAAA,GAAe,IAAIrD,iBAAAA,CAAkBoD,IAAKtH,CAAAA,MAAM,EAAEsH,IAAKnD,CAAAA,IAAI,EAAEmD,IAAAA,CAAKvE,cAAc,EAAEuE,IAAAA,CAAKlD,eAAe,EAAEkD,KAAKjD,GAAG,CAAA,CAAA;AAEhH,YAAA,MAAA;AACF,QAAA,KAAA,CAAA,CAAA;AACA,QAAA,KAAA,CAAA;AACEkD,YAAAA,YAAAA,GAAe,IAAI9C,iBAAkB6C,CAAAA,IAAAA,CAAKtF,KAAK,EAAEsF,KAAKrF,MAAM,CAAA,CAAA;AAE5D,YAAA,MAAA;AACF,QAAA,KAAA,CAAA;AACEsF,YAAAA,YAAAA,GAAe,IAAItC,mBAAoBqC,CAAAA,IAAAA,CAAKpC,QAAQ,EAAEoC,IAAAA,CAAKnC,QAAQ,EAAEmC,IAAAA,CAAKlC,GAAG,EAAEkC,KAAKjC,MAAM,EAAEiC,KAAKtI,IAAI,EAAEsI,KAAKrI,GAAG,CAAA,CAAA;AAE/G,YAAA,MAAA;AACF,QAAA,KAAA,CAAA;AACEsI,YAAAA,YAAAA,GAAe,IAAIhB,kBAAmBe,CAAAA,IAAAA,CAAKtH,MAAM,EAAEsH,IAAAA,CAAKpQ,MAAM,EAAEoQ,IAAAA,CAAKE,SAAS,EAAEF,KAAKd,WAAW,EAAEc,KAAKnH,UAAU,EAAEmH,KAAKlH,WAAW,CAAA,CAAA;AAEnI,YAAA,MAAA;AACF,QAAA,KAAA,EAAA;AACEmH,YAAAA,YAAAA,GAAe,IAAIb,cAAAA,CAAeY,IAAKX,CAAAA,KAAK,EAAEW,IAAAA,CAAKpH,QAAQ,EAAEoH,IAAKnH,CAAAA,UAAU,EAAEmH,IAAAA,CAAKlH,WAAW,CAAA,CAAA;AAE9F,YAAA,MAAA;AACF,QAAA,KAAA,CAAA;AACEmH,YAAAA,YAAAA,GAAe,IAAIX,aAAAA,CAAcU,IAAKX,CAAAA,KAAK,EAAEW,IAAKT,CAAAA,SAAS,EAAES,IAAAA,CAAKpH,QAAQ,EAAEoH,IAAAA,CAAKnH,UAAU,EAAEmH,KAAKlH,WAAW,CAAA,CAAA;AAE7G,YAAA,MAAA;AACF,QAAA,KAAA,EAAA;AACEmH,YAAAA,YAAAA,GAAe,IAAIR,yBAA0BO,CAAAA,IAAAA,CAAKN,UAAU,EAAEM,KAAKL,KAAK,CAAA,CAAA;AAExE,YAAA,MAAA;AACF,QAAA;YACEM,YAAe,GAAA,IAAIxF,gBAAgBuF,IAAKtF,CAAAA,KAAK,EAAEsF,IAAKrF,CAAAA,MAAM,EAAEqF,IAAAA,CAAKpF,KAAK,CAAA,CAAA;AAEtE,YAAA,MAAA;AACJ,KAAA;AACA,IAAA,IAAMhN,MAASuS,GAAAA,QAAAA,CAAS5S,MAAM,CAC5B2G,MACA,EAAA;QACEkM,UAAY,EAAA;YACVC,UAAY,EAAA;gBACVL,IAAM,EAAA,CAAA;gBACNM,IAAM,EAAA,IAAIC,YAAaN,CAAAA,YAAAA,CAAa5H,MAAM,CAAA;AAC5C,aAAA;YACAmI,QAAU,EAAA;gBACRR,IAAM,EAAA,CAAA;gBACNM,IAAM,EAAA,IAAIC,YAAaN,CAAAA,YAAAA,CAAa1H,OAAO,CAAA;AAC7C,aAAA;YACAkI,KAAO,EAAA;gBACLT,IAAM,EAAA,CAAA;gBACNM,IAAM,EAAA,IAAIC,YAAaN,CAAAA,YAAAA,CAAa3H,GAAG,CAAA;AACzC,aAAA;AACF,SAAA;QACAE,OAAS,EAAA;YACP8H,IAAM,EAAA,IAAII,WAAYT,CAAAA,YAAAA,CAAazH,OAAO,CAAA;AAC5C,SAAA;QACAmI,IAAMrN,EAAAA,UAAAA;QACNsN,SAAWX,EAAAA,YAAAA,CAAazH,OAAO,CAAC5I,MAAM;AACxC,KAAA,CAAA,CAAA;IAEF,OAAOhC,MAAAA,CAAAA;AACT;;ACjJA,IAAQ+H,YAA8BL,IAA9BK,CAAAA,OAAAA,EAASJ,YAAqBD,IAArBC,CAAAA,OAAAA,EAASG,YAAYJ,IAAZI,CAAAA,OAAAA,CAAAA;AAE1B;;;;;;;IAQO,SAASmL,qBAAAA,CACd3M,MAAc,EACd4M,OAAqB,EACrBC,WAA2C,EAC3CC,WAAkC,EAClCC,OAAoB,EAAA;IAEpB,IAAIrT,MAAAA,CAAAA;AAEJ,IAAA,IAAI,CAACqT,OAAS,EAAA;QACZA,OAAU,GAAA;YAAEjB,IAAM,EAAA,CAAA;YAAG1M,UAAY4N,EAAAA,qBAAqB,CAAC,WAAY,CAAA;AAAC,SAAA,CAAA;AACtE,KAAA;IAEA,OAAQJ,OAAAA;AACN,QAAA,KAAKzL,aAAa8L,MAAM;AACtBvT,YAAAA,MAAAA,GAASwT,iBAAiBlN,MAAQ+M,EAAAA,OAAAA,CAAAA,CAAAA;AAElC,YAAA,MAAA;AACF,QAAA,KAAK5L,aAAagM,MAAM;YACtBzT,MAASwT,GAAAA,gBAAAA,CAAiBlN,QAAQ+M,OAASD,EAAAA,WAAAA,GAAcA,YAAY3R,GAAG,CAAC,YAAY1C,SAAWoU,EAAAA,WAAAA,CAAAA,CAAAA;AAEhG,YAAA,MAAA;AACF,QAAA,KAAK1L,aAAaiM,KAAK;YACrB1T,MAASwT,GAAAA,gBAAAA,CAAiBlN,QAAQ+M,OAASD,EAAAA,WAAAA,GAAcA,YAAY3R,GAAG,CAAC,WAAW1C,SAAWoU,EAAAA,WAAAA,CAAAA,CAAAA;AAE/F,YAAA,MAAA;AACF,QAAA,KAAK1L,aAAakM,WAAW;YAC3B3T,MAAS4T,GAAAA,qBAAAA,CAAsBtN,QAAQ+M,OAASF,EAAAA,WAAAA,CAAAA,CAAAA;AAEhD,YAAA,MAAA;AACF,QAAA,KAAK1L,aAAaoM,KAAK;YACrB7T,MAAS8T,GAAAA,eAAAA,CAAgBxN,QAAQ+M,OAASF,EAAAA,WAAAA,CAAAA,CAAAA;AAE1C,YAAA,MAAA;AACF,QAAA,KAAK1L,aAAasM,UAAU;YAC1B/T,MAASgU,GAAAA,oBAAAA,CAAqB1N,MAAQ+M,EAAAA,OAAAA,EAASF,WAAaC,EAAAA,WAAAA,CAAAA,CAAAA;AAE5D,YAAA,MAAA;AACF,QAAA,KAAK3L,aAAawI,QAAQ;YACxBjQ,MAASiU,GAAAA,kBAAAA,CAAmB3N,QAAQ+M,OAASF,EAAAA,WAAAA,CAAAA,CAAAA;AAE7C,YAAA,MAAA;AACF,QAAA;YACEnT,MAASkU,GAAAA,eAAAA,CAAgB5N,QAAQ4M,OAASG,EAAAA,OAAAA,CAAAA,CAAAA;AAE1C,YAAA,MAAA;AACJ,KAAA;IAEA,OAAOrT,MAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;AAMC,IACD,SAASiU,kBACP3N,CAAAA,MAAc,EACd+M,OAAmB,EACnBF,WAA2C,EAAA;AAE3C,IAAA,IAAMnT,SAA+B,IAAIuB,GAAAA,EAAAA,CAAAA;AACzC,IAAA,IAAMsS,KAAQR,GAAAA,OAAAA,CAAQjB,IAAI,CAACyB,KAAK,IAAI,CAAA,CAAA;AACpC,IAAA,IAAMzB,IAAO,GAAA;AACXtH,QAAAA,MAAAA,EAAQ,GAAM+I,GAAAA,KAAAA;AACd5E,QAAAA,IAAAA,EAAM,IAAO4E,GAAAA,KAAAA;AACbM,QAAAA,cAAAA,EAAgB,EAAKN,GAAAA,KAAAA;QACrBlI,aAAe,EAAA,EAAA;QACfC,cAAgB,EAAA,EAAA;AAClB,KAAA,CAAA;AACA,IAAA,IAAMwI,YAAY,QAAKhC,CAAAA,EAAAA,EAAAA,IAAAA,EAAAA;QAAMnD,IAAMmD,EAAAA,IAAAA,CAAKnD,IAAI,GAAG,CAAA;;AAC/C,IAAA,IAAMzM,IAAO,GAAA,UAAA,CAAA;AACb,IAAA,IAAM6R,OAAUH,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa6M,KAAK,EAAE;QAC1DlC,IAAAA,EAAAA,IAAAA;AAAM9M,QAAAA,KAAAA,EAAOA,MAAMC,UAAU;QAAUG,UAAAA,EAAAA,UAAAA;QAAYlD,IAAAA,EAAAA,IAAAA;KAClD,EAAA,UAAA,CAAA,CAAA;AACH,IAAA,IAAM+R,OAAUL,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa6M,KAAK,EAAE;QAC1DlC,IAAAA,EAAAA,IAAAA;AAAM9M,QAAAA,KAAAA,EAAOA,MAAME,UAAU;QAAUE,UAAAA,EAAAA,UAAAA;QAAYlD,IAAAA,EAAAA,IAAAA;KAClD,EAAA,UAAA,CAAA,CAAA;AACH,IAAA,IAAMgS,OAAUN,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa6M,KAAK,EAAE;QAC1DlC,IAAAA,EAAAA,IAAAA;AAAM9M,QAAAA,KAAAA,EAAOA,MAAMG,UAAU;QAAUC,UAAAA,EAAAA,UAAAA;QAAYlD,IAAAA,EAAAA,IAAAA;KAClD,EAAA,UAAA,CAAA,CAAA;AACH,IAAA,IAAMiS,MAASP,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAaiN,MAAM,EAAE;QAC1DtC,IAAAA,EAAAA,IAAAA;QAAM9M,KAAO,EAAA;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA,GAAA;AAAI,SAAA;QAAEqP,KAAO,EAAA,GAAA;QAAKjP,UAAAA,EAAAA,UAAAA;QAAYlD,IAAAA,EAAAA,IAAAA;KACrD,EAAA,OAAA,CAAA,CAAA;AACH,IAAA,IAAMoS,eAAkBV,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa6M,KAAK,EAAE;QAClElC,IAAMgC,EAAAA,SAAAA;AACN9O,QAAAA,KAAAA,EAAOA,MAAMC,UAAU;QACvBG,UAAAA,EAAAA,UAAAA;AACF,KAAA,CAAA,CAAA;AACA,IAAA,IAAMmP,eAAkBX,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa6M,KAAK,EAAE;QAClElC,IAAMgC,EAAAA,SAAAA;AACN9O,QAAAA,KAAAA,EAAOA,MAAME,UAAU;QACvBE,UAAAA,EAAAA,UAAAA;AACF,KAAA,CAAA,CAAA;AACA,IAAA,IAAMoP,eAAkBZ,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa6M,KAAK,EAAE;QAClElC,IAAMgC,EAAAA,SAAAA;AACN9O,QAAAA,KAAAA,EAAOA,MAAMG,UAAU;QACvBC,UAAAA,EAAAA,UAAAA;AACF,KAAA,CAAA,CAAA;IAEA,IAAMqP,gBAAAA,GAAmB,IAAIC,SAAU,CAAA;QACrCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAMC,gBAAAA,GAAmB,IAAIF,SAAU,CAAA;QACrCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAME,gBAAAA,GAAmB,IAAIH,SAAU,CAAA;QACrCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAMG,eAAAA,GAAkB,IAAIJ,SAAU,CAAA;QACpCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IAEAF,gBAAiBM,CAAAA,WAAW,CAAC,CAAA,EAAG,EAAI,EAAA,CAAA,CAAA,CAAA;AACpCH,IAAAA,gBAAAA,CAAiBG,WAAW,CAAC,CAAC,EAAA,EAAI,CAAG,EAAA,CAAA,CAAA,CAAA;IACrCF,gBAAiBE,CAAAA,WAAW,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;IACnCrV,MAAO0B,CAAAA,GAAG,CAAC+S,MAAQW,EAAAA,eAAAA,CAAAA,CAAAA;IACnBpV,MAAO0B,CAAAA,GAAG,CAAC2S,OAASU,EAAAA,gBAAAA,CAAAA,CAAAA;IACpB/U,MAAO0B,CAAAA,GAAG,CAAC6S,OAASW,EAAAA,gBAAAA,CAAAA,CAAAA;IACpBlV,MAAO0B,CAAAA,GAAG,CAAC8S,OAASW,EAAAA,gBAAAA,CAAAA,CAAAA;IAEpBhC,WAAYzR,CAAAA,GAAG,CAAC,OAAS,EAAA;AACvByQ,QAAAA,IAAAA,EAAMtK,aAAayN,QAAQ;QAC3BC,SAAWX,EAAAA,eAAAA,CAAgBY,aAAa,EAAKC,GAAAA,WAAAA,CAAYb,gBAAgBY,aAAa,EAAA,EAAIT,oBAAoB,EAAE;QAChHW,eAAiB,EAAA,IAAA;AACnB,KAAA,CAAA,CAAA;IACAvC,WAAYzR,CAAAA,GAAG,CAAC,OAAS,EAAA;AACvByQ,QAAAA,IAAAA,EAAMtK,aAAayN,QAAQ;QAC3BC,SAAWV,EAAAA,eAAAA,CAAgBW,aAAa,EAAKC,GAAAA,WAAAA,CAAYZ,gBAAgBW,aAAa,EAAA,EAAIN,oBAAoB,EAAE;QAChHQ,eAAiB,EAAA,IAAA;AACnB,KAAA,CAAA,CAAA;IACAvC,WAAYzR,CAAAA,GAAG,CAAC,OAAS,EAAA;AACvByQ,QAAAA,IAAAA,EAAMtK,aAAayN,QAAQ;QAC3BC,SAAWT,EAAAA,eAAAA,CAAgBU,aAAa,EAAKC,GAAAA,WAAAA,CAAYX,gBAAgBU,aAAa,EAAA,EAAIL,oBAAoB,EAAE;QAChHO,eAAiB,EAAA,IAAA;AACnB,KAAA,CAAA,CAAA;IAEA,OAAO1V,MAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;AAMC,IACD,SAASyV,WAAAA,CAAaE,QAAkB,EAAEC,SAAoB,EAAA;AAC5D,IAAA,IAAM5V,SAAyB,EAAE,CAAA;IACjC,IAAM4K,OAAAA,GAAU+K,SAASE,YAAY,EAAA,CAAA;IACrC,IAAMpL,MAAAA,GAASkL,QAASG,CAAAA,gBAAgB,CAAC,YAAA,CAAA,CAAA;IACzC,IAAMC,IAAAA,GAAOH,UAAUI,cAAc,EAAA,CAAA;AAErC,IAAA,IAAIvL,MAAUG,IAAAA,OAAAA,IAAWA,OAAQ5I,CAAAA,MAAM,GAAG,CAAG,EAAA;QAC3C,IAAK,IAAIC,IAAI,CAAGA,EAAAA,CAAAA,GAAI2I,QAAQ5I,MAAM,EAAEC,KAAK,CAAG,CAAA;AAC1C,YAAA,IAAMgU,EAAKrL,GAAAA,OAAO,CAAC3I,CAAAA,CAAE,GAAG,CAAA,CAAA;AACxB,YAAA,IAAMiU,EAAKtL,GAAAA,OAAO,CAAC3I,CAAAA,GAAI,EAAE,GAAG,CAAA,CAAA;AAC5B,YAAA,IAAMkU,EAAKvL,GAAAA,OAAO,CAAC3I,CAAAA,GAAI,EAAE,GAAG,CAAA,CAAA;AAC5B,YAAA,IAAMmU,EAAK,GAAA,IAAIzO,SAAQ8C,CAAAA,MAAM,CAACwL,EAAG,CAAA,EAAExL,MAAM,CAACwL,KAAK,CAAE,CAAA,EAAExL,MAAM,CAACwL,KAAK,CAAE,CAAA,CAAA,CAAA;AACjE,YAAA,IAAMI,EAAK,GAAA,IAAI1O,SAAQ8C,CAAAA,MAAM,CAACyL,EAAG,CAAA,EAAEzL,MAAM,CAACyL,KAAK,CAAE,CAAA,EAAEzL,MAAM,CAACyL,KAAK,CAAE,CAAA,CAAA,CAAA;AACjE,YAAA,IAAMI,EAAK,GAAA,IAAI3O,SAAQ8C,CAAAA,MAAM,CAAC0L,EAAG,CAAA,EAAE1L,MAAM,CAAC0L,KAAK,CAAE,CAAA,EAAE1L,MAAM,CAAC0L,KAAK,CAAE,CAAA,CAAA,CAAA;AAEjEnW,YAAAA,MAAAA,CAAOW,IAAI,CAAC;gBACVyV,EAAIL,EAAAA,IAAAA,CAAKQ,YAAY,CAACH,EAAAA,CAAAA;gBACtBC,EAAIN,EAAAA,IAAAA,CAAKQ,YAAY,CAACF,EAAAA,CAAAA;gBACtBC,EAAIP,EAAAA,IAAAA,CAAKQ,YAAY,CAACD,EAAAA,CAAAA;AACxB,aAAA,CAAA,CAAA;AAEF,SAAA;AACF,KAAA;IAEA,OAAOtW,MAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;AAMC,IACD,SAAS4T,qBAAuBtN,CAAAA,MAAc,EAAE+M,OAAmB,EAAEF,WAA2C,EAAA;AAC9G,IAAA,IAAMnT,SAA+B,IAAIuB,GAAAA,EAAAA,CAAAA;AACzC,IAAA,IAAMsS,KAAQR,GAAAA,OAAAA,CAAQjB,IAAI,CAACyB,KAAK,IAAI,CAAA,CAAA;AACpC,IAAA,IAAM2C,QAAW,GAAA;AACf1J,QAAAA,KAAAA,EAAO,GAAM+G,GAAAA,KAAAA;AACb9G,QAAAA,MAAAA,EAAQ,IAAO8G,GAAAA,KAAAA;AACf7G,QAAAA,KAAAA,EAAO,IAAO6G,GAAAA,KAAAA;AAChB,KAAA,CAAA;AACA,IAAA,IAAMrR,IAAO,GAAA,aAAA,CAAA;AACb,IAAA,IAAMiU,QAAWC,GAAAA,cAAAA,CAAepQ,MAAQkQ,EAAAA,QAAAA,EAAU,KAAOhU,EAAAA,IAAAA,CAAAA,CAAAA;AAEzD,IAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAgCiU,QAAU,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;uCAA9BE,IAAMf,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,EAAAA,SAAAA,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAChB5V,MAAO0B,CAAAA,GAAG,CAACiV,IAAMf,EAAAA,SAAAA,CAAAA,CAAAA;AACnB,KAAA;AAEA,IAAA,IAAMgB,SAAY,GAAA;AAChB9L,QAAAA,MAAAA,EAAQ,IAAO+I,GAAAA,KAAAA;AACf9G,QAAAA,MAAAA,EAAQ,GAAM8G,GAAAA,KAAAA;AAChB,KAAA,CAAA;AACA,IAAA,IAAMgD,MAAS3C,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAaqP,IAAI,EAAE;QACxD1E,IAAMwE,EAAAA,SAAAA;AACNtR,QAAAA,KAAAA,EAAOA,MAAMC,UAAU;QACvBG,UAAAA,EAAAA,UAAAA;QACAqR,SAAW,EAAA,IAAA;QACXvU,IAAAA,EAAAA,IAAAA;KACC,EAAA,OAAA,CAAA,CAAA;AACH,IAAA,IAAMwU,MAAS9C,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAaqP,IAAI,EAAE;QACxD1E,IAAMwE,EAAAA,SAAAA;AACNtR,QAAAA,KAAAA,EAAOA,MAAME,UAAU;QACvBE,UAAAA,EAAAA,UAAAA;QACAqR,SAAW,EAAA,IAAA;QACXvU,IAAAA,EAAAA,IAAAA;KACC,EAAA,OAAA,CAAA,CAAA;AACH,IAAA,IAAMyU,MAAS/C,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAaqP,IAAI,EAAE;QACxD1E,IAAMwE,EAAAA,SAAAA;AACNtR,QAAAA,KAAAA,EAAOA,MAAMG,UAAU;QACvBC,UAAAA,EAAAA,UAAAA;QACAlD,IAAAA,EAAAA,IAAAA;QACAuU,SAAW,EAAA,IAAA;KACV,EAAA,OAAA,CAAA,CAAA;IACH,IAAMG,eAAAA,GAAkB,IAAIlC,SAAU,CAAA;QACpCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAMkC,eAAAA,GAAkB,IAAInC,SAAU,CAAA;QACpCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAMmC,eAAAA,GAAkB,IAAIpC,SAAU,CAAA;QACpCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IAEAiC,eAAgB7B,CAAAA,WAAW,CAAC,CAAA,EAAG,CAAG,EAAA,EAAA,CAAA,CAAA;IAClC8B,eAAgB9B,CAAAA,WAAW,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAClC+B,IAAAA,eAAAA,CAAgB/B,WAAW,CAAC,CAAC,EAAA,EAAI,CAAG,EAAA,CAAA,CAAA,CAAA;AACpC6B,IAAAA,eAAAA,CAAgBG,SAAS,CAACb,QAAS1J,CAAAA,KAAK,EAAE,CAAG,EAAA,CAAA,CAAA,CAAA;AAC7CqK,IAAAA,eAAAA,CAAgBE,SAAS,CAAC,CAAGb,EAAAA,QAAAA,CAAS1J,KAAK,EAAE,CAAA,CAAA,CAAA;AAC7CsK,IAAAA,eAAAA,CAAgBC,SAAS,CAAC,CAAG,EAAA,CAAA,EAAGb,SAAS1J,KAAK,CAAA,CAAA;AAE9C,IAAA,IAAMwK,SAAY,GAAA;AAChBxK,QAAAA,KAAAA,EAAO,GAAM+G,GAAAA,KAAAA;AACb9G,QAAAA,MAAAA,EAAQ,GAAM8G,GAAAA,KAAAA;AAChB,KAAA,CAAA;AACA,IAAA,IAAM0D,OAAUrD,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa+P,KAAK,EAAE;QAC1DpF,IAAMkF,EAAAA,SAAAA;AAAWhS,QAAAA,KAAAA,EAAOA,MAAMG,UAAU;QAAUC,UAAAA,EAAAA,UAAAA;QAAYqR,SAAW,EAAA,IAAA;QAAMvU,IAAAA,EAAAA,IAAAA;AACjF,KAAA,CAAA,CAAA;AACA,IAAA,IAAMiV,OAAUvD,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa+P,KAAK,EAAE;QAC1DpF,IAAMkF,EAAAA,SAAAA;AAAWhS,QAAAA,KAAAA,EAAOA,MAAMC,UAAU;QAAUG,UAAAA,EAAAA,UAAAA;QAAYqR,SAAW,EAAA,IAAA;QAAMvU,IAAAA,EAAAA,IAAAA;AACjF,KAAA,CAAA,CAAA;AACA,IAAA,IAAMkV,OAAUxD,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa+P,KAAK,EAAE;QAC1DpF,IAAMkF,EAAAA,SAAAA;AAAWhS,QAAAA,KAAAA,EAAOA,MAAME,UAAU;QAAUE,UAAAA,EAAAA,UAAAA;QAAYqR,SAAW,EAAA,IAAA;QAAMvU,IAAAA,EAAAA,IAAAA;AACjF,KAAA,CAAA,CAAA;IACA,IAAMmV,gBAAAA,GAAmB,IAAI3C,SAAU,CAAA;QACrCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAM2C,gBAAAA,GAAmB,IAAI5C,SAAU,CAAA;QACrCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAM4C,gBAAAA,GAAmB,IAAI7C,SAAU,CAAA;QACrCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAM6C,KAAAA,GAAQtB,QAAS1J,CAAAA,KAAK,GAAG,CAAA,CAAA;IAE/B6K,gBAAiBN,CAAAA,SAAS,CAACC,SAAAA,CAAUxK,KAAK,GAAG,CAAIgL,GAAAA,KAAAA,EAAOR,SAAUvK,CAAAA,MAAM,GAAG,CAAA,GAAI+K,KAAO,EAAA,CAAA,CAAA,CAAA;IACtFF,gBAAiBvC,CAAAA,WAAW,CAAC,CAAA,EAAG,EAAI,EAAA,CAAA,CAAA,CAAA;IACpCuC,gBAAiBP,CAAAA,SAAS,CAAC,CAAA,EAAGC,SAAUvK,CAAAA,MAAM,GAAG,CAAA,GAAI+K,KAAOR,EAAAA,SAAAA,CAAUxK,KAAK,GAAG,CAAIgL,GAAAA,KAAAA,CAAAA,CAAAA;AAClFD,IAAAA,gBAAAA,CAAiBxC,WAAW,CAAC,CAAC,EAAA,EAAI,CAAG,EAAA,CAAA,CAAA,CAAA;IACrCwC,gBAAiBR,CAAAA,SAAS,CAACC,SAAAA,CAAUxK,KAAK,GAAG,CAAIgL,GAAAA,KAAAA,EAAO,CAAGR,EAAAA,SAAAA,CAAUvK,MAAM,GAAG,CAAI+K,GAAAA,KAAAA,CAAAA,CAAAA;IAElF9X,MAAO0B,CAAAA,GAAG,CAACmV,MAAQK,EAAAA,eAAAA,CAAAA,CAAAA;IACnBlX,MAAO0B,CAAAA,GAAG,CAACsV,MAAQG,EAAAA,eAAAA,CAAAA,CAAAA;IACnBnX,MAAO0B,CAAAA,GAAG,CAACuV,MAAQG,EAAAA,eAAAA,CAAAA,CAAAA;IACnBpX,MAAO0B,CAAAA,GAAG,CAAC6V,OAASI,EAAAA,gBAAAA,CAAAA,CAAAA;IACpB3X,MAAO0B,CAAAA,GAAG,CAAC+V,OAASG,EAAAA,gBAAAA,CAAAA,CAAAA;IACpB5X,MAAO0B,CAAAA,GAAG,CAACgW,OAASG,EAAAA,gBAAAA,CAAAA,CAAAA;IAEpBE,kBAAmB,CAAA;QAAEjL,KAAO8J,EAAAA,SAAAA,CAAU9L,MAAM,GAAG,GAAA;AAAK9I,QAAAA,MAAAA,EAAQwU,QAAS1J,CAAAA,KAAK,GAAG8J,SAAAA,CAAU7J,MAAM,GAAG,CAAA;KAAKoG,EAAAA,WAAAA,CAAAA,CAAAA;IACrGA,WAAYzR,CAAAA,GAAG,CAAC,SAAW,EAAA;AACzByQ,QAAAA,IAAAA,EAAMtK,aAAayN,QAAQ;QAC3BC,SAAWgC,EAAAA,OAAAA,CAAQ/B,aAAa,EAAKC,GAAAA,WAAAA,CAAY8B,QAAQ/B,aAAa,EAAA,EAAImC,oBAAoB,EAAE;QAChGjC,eAAiB,EAAA,KAAA;AACnB,KAAA,CAAA,CAAA;;IAGAvC,WAAYzR,CAAAA,GAAG,CAAC,SAAW,EAAA;AACzByQ,QAAAA,IAAAA,EAAMtK,aAAayN,QAAQ;QAC3BC,SAAWkC,EAAAA,OAAAA,CAAQjC,aAAa,EAAKC,GAAAA,WAAAA,CAAYgC,QAAQjC,aAAa,EAAA,EAAIoC,oBAAoB,EAAE;QAChGlC,eAAiB,EAAA,KAAA;AACnB,KAAA,CAAA,CAAA;IACAvC,WAAYzR,CAAAA,GAAG,CAAC,SAAW,EAAA;AACzByQ,QAAAA,IAAAA,EAAMtK,aAAayN,QAAQ;QAC3BC,SAAWmC,EAAAA,OAAAA,CAAQlC,aAAa,EAAKC,GAAAA,WAAAA,CAAYiC,QAAQlC,aAAa,EAAA,EAAIqC,oBAAoB,EAAE;QAChGnC,eAAiB,EAAA,KAAA;AACnB,KAAA,CAAA,CAAA;IAEA,OAAO1V,MAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;AAMC,IACD,SAAS8T,eAAiBxN,CAAAA,MAAc,EAAE+M,OAAmB,EAAEF,WAA2C,EAAA;AACxG,IAAA,IAAMnT,SAA+B,IAAIuB,GAAAA,EAAAA,CAAAA;AACzC,IAAA,IAAMsS,KAAQR,GAAAA,OAAAA,CAAQjB,IAAI,CAACyB,KAAK,IAAI,CAAA,CAAA;AACpC,IAAA,IAAM2C,QAAW,GAAA;AACf1J,QAAAA,KAAAA,EAAO,GAAM+G,GAAAA,KAAAA;AACb9G,QAAAA,MAAAA,EAAQ,IAAO8G,GAAAA,KAAAA;AACf7G,QAAAA,KAAAA,EAAO,IAAO6G,GAAAA,KAAAA;AAChB,KAAA,CAAA;AACA,IAAA,IAAMrR,IAAO,GAAA,OAAA,CAAA;AACb,IAAA,IAAMiU,QAAWC,GAAAA,cAAAA,CAAepQ,MAAQkQ,EAAAA,QAAAA,EAAU,KAAOhU,EAAAA,IAAAA,CAAAA,CAAAA;AAEzD,IAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAgCiU,QAAU,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;uCAA9BE,IAAMf,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,EAAAA,SAAAA,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAChB5V,MAAO0B,CAAAA,GAAG,CAACiV,IAAMf,EAAAA,SAAAA,CAAAA,CAAAA;AACnB,KAAA;AACA,IAAA,IAAMoC,OAAU,GAAA;AACdlL,QAAAA,KAAAA,EAAO,GAAM+G,GAAAA,KAAAA;AACb9G,QAAAA,MAAAA,EAAQ,GAAM8G,GAAAA,KAAAA;AACd7G,QAAAA,KAAAA,EAAO,GAAM6G,GAAAA,KAAAA;AACf,KAAA,CAAA;AACA,IAAA,IAAMoE,aAAgB,GAAA;AACpBnL,QAAAA,KAAAA,EAAO,GAAM+G,GAAAA,KAAAA;AACb9G,QAAAA,MAAAA,EAAQ,GAAM8G,GAAAA,KAAAA;AACd7G,QAAAA,KAAAA,EAAO,GAAM6G,GAAAA,KAAAA;AACf,KAAA,CAAA;AACA,IAAA,IAAMqE,KAAQhE,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa0Q,GAAG,EAAE;QACtD/F,IAAM4F,EAAAA,OAAAA;AAAS1S,QAAAA,KAAAA,EAAOA,MAAMC,UAAU;QAAUG,UAAAA,EAAAA,UAAAA;QAAYqR,SAAW,EAAA,IAAA;QAAMvU,IAAAA,EAAAA,IAAAA;KAC5E,EAAA,OAAA,CAAA,CAAA;AACH,IAAA,IAAM4V,KAAQlE,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa0Q,GAAG,EAAE;QACtD/F,IAAM4F,EAAAA,OAAAA;AAAS1S,QAAAA,KAAAA,EAAOA,MAAME,UAAU;QAAUE,UAAAA,EAAAA,UAAAA;QAAYqR,SAAW,EAAA,IAAA;QAAMvU,IAAAA,EAAAA,IAAAA;KAC5E,EAAA,OAAA,CAAA,CAAA;AACH,IAAA,IAAM6V,KAAQnE,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa0Q,GAAG,EAAE;QACtD/F,IAAM4F,EAAAA,OAAAA;AAAS1S,QAAAA,KAAAA,EAAOA,MAAMG,UAAU;QAAUC,UAAAA,EAAAA,UAAAA;QAAYqR,SAAW,EAAA,IAAA;QAAMvU,IAAAA,EAAAA,IAAAA;KAC5E,EAAA,OAAA,CAAA,CAAA;AACH,IAAA,IAAM8V,UAAapE,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa0Q,GAAG,EAAE;QAC3D/F,IAAM6F,EAAAA,aAAAA;QACN3S,KAAO,EAAA;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA,GAAA;AAAI,SAAA;QACtBI,UAAAA,EAAAA,UAAAA;QACAqR,SAAW,EAAA,IAAA;QACXvU,IAAAA,EAAAA,IAAAA;KACC,EAAA,OAAA,CAAA,CAAA;IACH,IAAM+V,cAAAA,GAAiB,IAAIvD,SAAU,CAAA;QACnCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAMuD,cAAAA,GAAiB,IAAIxD,SAAU,CAAA;QACnCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAMwD,cAAAA,GAAiB,IAAIzD,SAAU,CAAA;QACnCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAMyD,mBAAAA,GAAsB,IAAI1D,SAAU,CAAA;QACxCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;AAEAsD,IAAAA,cAAAA,CAAelB,SAAS,CAACb,QAAS1J,CAAAA,KAAK,EAAE,CAAG,EAAA,CAAA,CAAA,CAAA;AAC5C0L,IAAAA,cAAAA,CAAenB,SAAS,CAAC,CAAGb,EAAAA,QAAAA,CAAS1J,KAAK,EAAE,CAAA,CAAA,CAAA;AAC5C2L,IAAAA,cAAAA,CAAepB,SAAS,CAAC,CAAG,EAAA,CAAA,EAAGb,SAAS1J,KAAK,CAAA,CAAA;IAC7C9M,MAAO0B,CAAAA,GAAG,CAAC4W,UAAYI,EAAAA,mBAAAA,CAAAA,CAAAA;IACvB1Y,MAAO0B,CAAAA,GAAG,CAACwW,KAAOK,EAAAA,cAAAA,CAAAA,CAAAA;IAClBvY,MAAO0B,CAAAA,GAAG,CAAC0W,KAAOI,EAAAA,cAAAA,CAAAA,CAAAA;IAClBxY,MAAO0B,CAAAA,GAAG,CAAC2W,KAAOI,EAAAA,cAAAA,CAAAA,CAAAA;IAElBV,kBAAmB,CAAA;QAAEjL,KAAOkL,EAAAA,OAAAA,CAAQlL,KAAK,GAAG,GAAA;AAAK9K,QAAAA,MAAAA,EAAQwU,QAAS1J,CAAAA,KAAK,GAAGkL,OAAAA,CAAQlL,KAAK,GAAG,CAAA;KAAKqG,EAAAA,WAAAA,CAAAA,CAAAA;IAC/FA,WAAYzR,CAAAA,GAAG,CAAC,QAAU,EAAA;AACxByQ,QAAAA,IAAAA,EAAMtK,aAAa6M,MAAM;AACzBD,QAAAA,MAAAA,EAAQ,IAAI9M,SAAAA,EAAAA;QACZmD,MAAQlC,EAAAA,IAAAA,CAAKK,GAAG,CAACL,IAAKK,CAAAA,GAAG,CAACgP,aAAcnL,CAAAA,KAAK,EAAE,CAAA,CAAA,GAAKlE,IAAKK,CAAAA,GAAG,CAACgP,aAAclL,CAAAA,MAAM,EAAE,CAAA,CAAA,GAAKnE,IAAKK,CAAAA,GAAG,CAACgP,aAAcjL,CAAAA,KAAK,EAAE,CAAA,CAAA,EAAI,GAAO,CAAA,GAAA,CAAA;AACnI,KAAA,CAAA,CAAA;IAEA,OAAOhN,MAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;IAOA,SAASgU,qBAAsB1N,MAAc,EAAE+M,OAAmB,EAAEF,WAA2C,EAAE3M,OAA6B,EAAA;AAC5I,IAAA,IAAMxG,SAA+B,IAAIuB,GAAAA,EAAAA,CAAAA;AACzC,IAAA,IAAMsS,KAAQR,GAAAA,OAAAA,CAAQjB,IAAI,CAACyB,KAAK,IAAI,CAAA,CAAA;AACpC,IAAA,IAAM2C,QAAW,GAAA;AACf1J,QAAAA,KAAAA,EAAO,GAAM+G,GAAAA,KAAAA;AACb9G,QAAAA,MAAAA,EAAQ,IAAO8G,GAAAA,KAAAA;AACf7G,QAAAA,KAAAA,EAAO,IAAO6G,GAAAA,KAAAA;AAChB,KAAA,CAAA;IACA,IAAM4C,QAAAA,GAAWC,cAAepQ,CAAAA,MAAAA,EAAQkQ,QAAU,EAAA,IAAA,CAAA,CAAA;AAElD,IAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAgCC,QAAU,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;uCAA9BE,IAAMf,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,EAAAA,SAAAA,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAChB5V,MAAO0B,CAAAA,GAAG,CAACiV,IAAMf,EAAAA,SAAAA,CAAAA,CAAAA;AACnB,KAAA;AACA,IAAA,IAAM0B,SAAY,GAAA;AAChBxK,QAAAA,KAAAA,EAAO,IAAO+G,GAAAA,KAAAA;AACd9G,QAAAA,MAAAA,EAAQ,IAAO8G,GAAAA,KAAAA;AACjB,KAAA,CAAA;IACA,IAAM7R,MAAAA,GAAS,CAACwU,QAAAA,CAAS1J,KAAK,GAAGwK,SAAAA,CAAUxK,KAAI,IAAK,CAAA,CAAA;AACpD,IAAA,IAAMiK,SAAY,GAAA,IAAA,CAAA;IAClB,IAAM4B,UAAAA,GAAanF,iBAAiBlN,MAAQ,EAAA;QAAE8L,IAAMkF,EAAAA,SAAAA;QAAW5R,UAAAA,EAAAA,UAAAA;QAAYqR,SAAAA,EAAAA,SAAAA;KAAavQ,EAAAA,OAAAA,CAAQ/E,GAAG,CAAC,MAAA,CAAA,CAAA,CAAA;IACpG,IAAMmX,UAAAA,GAAapF,iBAAiBlN,MAAQ,EAAA;QAAE8L,IAAMkF,EAAAA,SAAAA;QAAW5R,UAAAA,EAAAA,UAAAA;QAAYqR,SAAAA,EAAAA,SAAAA;KAAavQ,EAAAA,OAAAA,CAAQ/E,GAAG,CAAC,MAAA,CAAA,CAAA,CAAA;IACpG,IAAMoX,UAAAA,GAAarF,iBAAiBlN,MAAQ,EAAA;QAAE8L,IAAMkF,EAAAA,SAAAA;QAAW5R,UAAAA,EAAAA,UAAAA;QAAYqR,SAAAA,EAAAA,SAAAA;KAAavQ,EAAAA,OAAAA,CAAQ/E,GAAG,CAAC,MAAA,CAAA,CAAA,CAAA;IACpG,IAAMqX,mBAAAA,GAAsB,IAAI9D,SAAU,CAAA;QACxCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAM8D,mBAAAA,GAAsB,IAAI/D,SAAU,CAAA;QACxCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAM+D,mBAAAA,GAAsB,IAAIhE,SAAU,CAAA;QACxCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IAEA6D,mBAAoBzB,CAAAA,SAAS,CAACrV,MAAAA,EAAQ,CAAG,EAAA,CAAA,CAAA,CAAA;IACzC+W,mBAAoB1B,CAAAA,SAAS,CAAC,CAAA,EAAGrV,MAAQ,EAAA,CAAA,CAAA,CAAA;IACzCgX,mBAAoB3B,CAAAA,SAAS,CAAC,CAAA,EAAG,CAAGrV,EAAAA,MAAAA,CAAAA,CAAAA;IACpC,IAAMiX,UAAAA,GAAazF,iBAAiBlN,MAAQ,EAAA;QAAE8L,IAAMkF,EAAAA,SAAAA;QAAW5R,UAAAA,EAAAA,UAAAA;QAAYqR,SAAAA,EAAAA,SAAAA;KAAavQ,EAAAA,OAAAA,CAAQ/E,GAAG,CAAC,MAAA,CAAA,CAAA,CAAA;IACpG,IAAMyX,UAAAA,GAAa1F,iBAAiBlN,MAAQ,EAAA;QAAE8L,IAAMkF,EAAAA,SAAAA;QAAW5R,UAAAA,EAAAA,UAAAA;QAAYqR,SAAAA,EAAAA,SAAAA;KAAavQ,EAAAA,OAAAA,CAAQ/E,GAAG,CAAC,MAAA,CAAA,CAAA,CAAA;IACpG,IAAM0X,UAAAA,GAAa3F,iBAAiBlN,MAAQ,EAAA;QAAE8L,IAAMkF,EAAAA,SAAAA;QAAW5R,UAAAA,EAAAA,UAAAA;QAAYqR,SAAAA,EAAAA,SAAAA;KAAavQ,EAAAA,OAAAA,CAAQ/E,GAAG,CAAC,MAAA,CAAA,CAAA,CAAA;IACpG,IAAM2X,mBAAAA,GAAsB,IAAIpE,SAAU,CAAA;QACxCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAMoE,mBAAAA,GAAsB,IAAIrE,SAAU,CAAA;QACxCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAMqE,mBAAAA,GAAsB,IAAItE,SAAU,CAAA;QACxCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;AAEAmE,IAAAA,mBAAAA,CAAoB/B,SAAS,CAAC,CAACrV,MAAAA,EAAQ,CAAG,EAAA,CAAA,CAAA,CAAA;AAC1CqX,IAAAA,mBAAAA,CAAoBhC,SAAS,CAAC,CAAG,EAAA,CAACrV,MAAQ,EAAA,CAAA,CAAA,CAAA;AAC1CsX,IAAAA,mBAAAA,CAAoBjC,SAAS,CAAC,CAAG,EAAA,CAAA,EAAG,CAACrV,MAAAA,CAAAA,CAAAA;IAErChC,MAAO0B,CAAAA,GAAG,CAACiX,UAAYG,EAAAA,mBAAAA,CAAAA,CAAAA;IACvB9Y,MAAO0B,CAAAA,GAAG,CAACkX,UAAYG,EAAAA,mBAAAA,CAAAA,CAAAA;IACvB/Y,MAAO0B,CAAAA,GAAG,CAACmX,UAAYG,EAAAA,mBAAAA,CAAAA,CAAAA;IACvBhZ,MAAO0B,CAAAA,GAAG,CAACuX,UAAYG,EAAAA,mBAAAA,CAAAA,CAAAA;IACvBpZ,MAAO0B,CAAAA,GAAG,CAACwX,UAAYG,EAAAA,mBAAAA,CAAAA,CAAAA;IACvBrZ,MAAO0B,CAAAA,GAAG,CAACyX,UAAYG,EAAAA,mBAAAA,CAAAA,CAAAA;AAEvB,IAAA,IAAMxO,MAAS,GAACwM,SAAUvK,CAAAA,MAAM,GAAG,CAAK,GAAA,GAAA,CAAA;IAExCoG,WAAYzR,CAAAA,GAAG,CAAC,MAAQ,EAAA;AACtByQ,QAAAA,IAAAA,EAAMtK,aAAa6M,MAAM;AACzBD,QAAAA,MAAAA,EAAQqE,oBAAoB9I,QAAQ;QACpClF,MAAQA,EAAAA,MAAAA;AACV,KAAA,CAAA,CAAA;IACAqI,WAAYzR,CAAAA,GAAG,CAAC,MAAQ,EAAA;AACtByQ,QAAAA,IAAAA,EAAMtK,aAAa6M,MAAM;AACzBD,QAAAA,MAAAA,EAAQsE,oBAAoB/I,QAAQ;QACpClF,MAAQA,EAAAA,MAAAA;AACV,KAAA,CAAA,CAAA;IACAqI,WAAYzR,CAAAA,GAAG,CAAC,MAAQ,EAAA;AACtByQ,QAAAA,IAAAA,EAAMtK,aAAa6M,MAAM;AACzBD,QAAAA,MAAAA,EAAQuE,oBAAoBhJ,QAAQ;QACpClF,MAAQA,EAAAA,MAAAA;AACV,KAAA,CAAA,CAAA;IACAqI,WAAYzR,CAAAA,GAAG,CAAC,MAAQ,EAAA;AACtByQ,QAAAA,IAAAA,EAAMtK,aAAa6M,MAAM;AACzBD,QAAAA,MAAAA,EAAQ2E,oBAAoBpJ,QAAQ;QACpClF,MAAQA,EAAAA,MAAAA;AACV,KAAA,CAAA,CAAA;IACAqI,WAAYzR,CAAAA,GAAG,CAAC,MAAQ,EAAA;AACtByQ,QAAAA,IAAAA,EAAMtK,aAAa6M,MAAM;AACzBD,QAAAA,MAAAA,EAAQ4E,oBAAoBrJ,QAAQ;QACpClF,MAAQA,EAAAA,MAAAA;AACV,KAAA,CAAA,CAAA;IACAqI,WAAYzR,CAAAA,GAAG,CAAC,MAAQ,EAAA;AACtByQ,QAAAA,IAAAA,EAAMtK,aAAa6M,MAAM;AACzBD,QAAAA,MAAAA,EAAQ6E,oBAAoBtJ,QAAQ;QACpClF,MAAQA,EAAAA,MAAAA;AACV,KAAA,CAAA,CAAA;IAEA,OAAO9K,MAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;IAOA,SAAS0W,eAAgBpQ,MAAc,EAAEkQ,QAA0D,EAAE+C,UAAkB,EAAE/W,IAAa,EAAA;AAAjC+W,IAAAA,IAAAA,uBAAAA,UAAa,GAAA,KAAA,CAAA;AAChH,IAAA,IAAMvZ,SAA+B,IAAIuB,GAAAA,EAAAA,CAAAA;AACzC,IAAA,IAAMiY,KAAQtF,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa0Q,GAAG,EAAE;QACtD/F,IAAMoE,EAAAA,QAAAA;AAAUlR,QAAAA,KAAAA,EAAOA,MAAMC,UAAU;QAAUG,UAAAA,EAAAA,UAAAA;QAAYqR,SAAW,EAAA,IAAA;QAAMvU,IAAAA,EAAAA,IAAAA;AAChF,KAAA,CAAA,CAAA;AACA,IAAA,IAAMiX,KAAQvF,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa0Q,GAAG,EAAE;QACtD/F,IAAMoE,EAAAA,QAAAA;AAAUlR,QAAAA,KAAAA,EAAOA,MAAME,UAAU;QAAUE,UAAAA,EAAAA,UAAAA;QAAYqR,SAAW,EAAA,IAAA;QAAMvU,IAAAA,EAAAA,IAAAA;AAChF,KAAA,CAAA,CAAA;AACA,IAAA,IAAMkX,KAAQxF,GAAAA,eAAAA,CAAgB5N,MAAQmB,EAAAA,YAAAA,CAAa0Q,GAAG,EAAE;QACtD/F,IAAMoE,EAAAA,QAAAA;AAAUlR,QAAAA,KAAAA,EAAOA,MAAMG,UAAU;QAAUC,UAAAA,EAAAA,UAAAA;QAAYqR,SAAW,EAAA,IAAA;QAAMvU,IAAAA,EAAAA,IAAAA;AAChF,KAAA,CAAA,CAAA;IAEA,IAAMmX,cAAAA,GAAiB,IAAI3E,SAAU,CAAA;QACnCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAM2E,cAAAA,GAAiB,IAAI5E,SAAU,CAAA;QACnCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IACA,IAAM4E,cAAAA,GAAiB,IAAI7E,SAAU,CAAA;QACnCC,KAAO,EAAA,IAAA;AACT,KAAA,CAAA,CAAA;IAEA2E,cAAevE,CAAAA,WAAW,CAAC,CAAA,EAAG,CAAG,EAAA,EAAA,CAAA,CAAA;AACjCwE,IAAAA,cAAAA,CAAexE,WAAW,CAAC,CAAG,EAAA,CAAC,EAAI,EAAA,CAAA,CAAA,CAAA;AACnC,IAAA,IAAI,CAACkE,UAAY,EAAA;AACfI,QAAAA,cAAAA,CAAetC,SAAS,CAACb,QAAAA,CAAS1J,KAAK,GAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAChD8M,QAAAA,cAAAA,CAAevC,SAAS,CAAC,CAAA,EAAGb,QAAS1J,CAAAA,KAAK,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAChD+M,QAAAA,cAAAA,CAAexC,SAAS,CAAC,CAAA,EAAG,CAAGb,EAAAA,QAAAA,CAAS1J,KAAK,GAAG,CAAA,CAAA,CAAA;AAClD,KAAA;IACA9M,MAAO0B,CAAAA,GAAG,CAAC8X,KAAOG,EAAAA,cAAAA,CAAAA,CAAAA;IAClB3Z,MAAO0B,CAAAA,GAAG,CAAC+X,KAAOG,EAAAA,cAAAA,CAAAA,CAAAA;IAClB5Z,MAAO0B,CAAAA,GAAG,CAACgY,KAAOG,EAAAA,cAAAA,CAAAA,CAAAA;IAElB,OAAO7Z,MAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;IAOA,SAASkU,gBAAiB5N,MAAc,EAAE4M,OAAqB,EAAEG,OAAmB,EAAEyG,YAAwB,EAAA;AAAxBA,IAAAA,IAAAA,yBAAAA,YAAe,GAAA,SAAA,CAAA;AACnG,IAAA,IACE1H,OACEiB,OADFjB,CAAAA,IAAAA,EAAM9M,KACJ+N,GAAAA,OAAAA,CADI/N,OAAOqP,KACXtB,GAAAA,OAAAA,CADWsB,KAAOjP,EAAAA,UAAAA,GAClB2N,QADkB3N,UAAYqR,EAAAA,SAAAA,GAC9B1D,OAD8B0D,CAAAA,SAAAA,EAAWvU,OACzC6Q,OADyC7Q,CAAAA,IAAAA,CAAAA;IAE7C,IAAIuX,YAAAA,CAAAA;IAEJ,OAAQ7G,OAAAA;AACN,QAAA,KAAKzL,aAAaiN,MAAM;AACtBqF,YAAAA,YAAAA,GAAe9H,aAAa+H,MAAM,CAAA;AAElC,YAAA,MAAA;AACF,QAAA,KAAKvS,aAAawS,QAAQ;AACxBF,YAAAA,YAAAA,GAAe9H,aAAaiI,QAAQ,CAAA;AAEpC,YAAA,MAAA;AACF,QAAA,KAAKzS,aAAaqP,IAAI;AACpBiD,YAAAA,YAAAA,GAAe9H,aAAakI,IAAI,CAAA;AAEhC,YAAA,MAAA;AACF,QAAA,KAAK1S,aAAa6M,KAAK;AACrByF,YAAAA,YAAAA,GAAe9H,aAAamI,KAAK,CAAA;AAEjC,YAAA,MAAA;AACF,QAAA,KAAK3S,aAAa8L,MAAM;AACtBwG,YAAAA,YAAAA,GAAe9H,aAAaoI,MAAM,CAAA;AAElC,YAAA,MAAA;AACF,QAAA,KAAK5S,aAAa+P,KAAK;AACrBuC,YAAAA,YAAAA,GAAe9H,aAAaqI,KAAK,CAAA;AAEjC,YAAA,MAAA;AACF,QAAA,KAAK7S,aAAa8S,OAAO;AACvBR,YAAAA,YAAAA,GAAe9H,aAAauI,OAAO,CAAA;AAEnC,YAAA,MAAA;AACF,QAAA,KAAK/S,aAAagT,cAAc;AAC9BV,YAAAA,YAAAA,GAAe9H,aAAayI,cAAc,CAAA;AAE1C,YAAA,MAAA;AACF,QAAA,KAAKjT,aAAakT,SAAS;AACzBZ,YAAAA,YAAAA,GAAe9H,aAAa2I,SAAS,CAAA;AAErC,YAAA,MAAA;AACF,QAAA,KAAKnT,aAAaoT,UAAU;AAC1Bd,YAAAA,YAAAA,GAAe9H,aAAa6I,UAAU,CAAA;AAEtC,YAAA,MAAA;AACF,QAAA,KAAKrT,aAAasT,SAAS;AACzBhB,YAAAA,YAAAA,GAAe9H,aAAa+I,SAAS,CAAA;AAErC,YAAA,MAAA;AACF,QAAA;AACEjB,YAAAA,YAAAA,GAAe9H,aAAagJ,GAAG,CAAA;AAE/B,YAAA,MAAA;AACJ,KAAA;AACA,IAAA,IAAMtF,QAAWzD,GAAAA,cAAAA,CAAe5L,MAAQyT,EAAAA,YAAAA,EAAc3H,IAAM1M,EAAAA,UAAAA,CAAAA,CAAAA;IAC5D,IAAIwV,QAAAA,CAAAA;IAEJ,OAAQpB,YAAAA;QACN,KAAK,OAAA;YACHoB,QAAWC,GAAAA,mBAAAA,CAAoB7U,MAAQhB,EAAAA,KAAAA,EAAOyR,SAAWpC,EAAAA,KAAAA,CAAAA,CAAAA;AAEzD,YAAA,MAAA;QACF,KAAK,UAAA;YACHuG,QAAWE,GAAAA,sBAAAA,CAAuB9U,QAAQhB,KAAOyR,EAAAA,SAAAA,CAAAA,CAAAA;AAEjD,YAAA,MAAA;AACF,QAAA;YACEmE,QAAWG,GAAAA,cAAAA,CAAe/U,QAAQhB,KAAOyR,EAAAA,SAAAA,CAAAA,CAAAA;AAEzC,YAAA,MAAA;AACJ,KAAA;IAEA,OAAOuE,IAAAA,CAAK3b,MAAM,CAChB2G,MACA,EAAA;QACE9D,IAAMA,EAAAA,IAAAA,GAAOA,IAAOuX,GAAAA,YAAAA,CAAa5Y,QAAQ,EAAA;QACzCwU,QAAAA,EAAAA,QAAAA;QACAuF,QAAAA,EAAAA,QAAAA;QACAK,QAAU,EAAA,IAAA;AACZ,KAAA,CAAA,CAAA;AACJ,CAAA;AAEA;;;;;;IAOA,SAAS/H,iBAAkBlN,MAAc,EAAE+M,OAAmB,EAAE7M,OAAiB,EAAE2M,WAA4C,EAAA;IAC7H,IAAMwC,QAAAA,GAAWzD,eAAe5L,MAAQ2L,EAAAA,YAAAA,CAAaoI,MAAM,EAAEhH,OAAAA,CAAQjB,IAAI,EAAE1M,UAAAA,CAAAA,CAAAA;IAC3E,IAAI8V,WAAAA,CAAAA;AAEJ,IAAA,IAAIhV,OAAS,EAAA;QACXgV,WAAchV,GAAAA,OAAAA,CAAAA;KACT,MAAA;AACLgV,QAAAA,WAAAA,GAAcnI,QAAQ/N,KAAK,CAAA;AAC7B,KAAA;AAEA,IAAA,IAAM4V,QAAWO,GAAAA,oBAAAA,CAAqBnV,MAAQkV,EAAAA,WAAAA,EAAanI,QAAQ0D,SAAS,CAAA,CAAA;AAE5E,IAAA,IAAI5D,WAAa,EAAA;QACfA,WAAYzR,CAAAA,GAAG,CAAC,QAAU,EAAA;AACxByQ,YAAAA,IAAAA,EAAMtK,aAAa6M,MAAM;YACzB5J,MAAQlC,EAAAA,IAAAA,CAAKK,GAAG,CAACL,IAAAA,CAAKK,GAAG,CAACoK,OAAAA,CAAQjB,IAAI,CAACtF,KAAK,EAAE,CAAKlE,CAAAA,GAAAA,IAAAA,CAAKK,GAAG,CAACoK,OAAAA,CAAQjB,IAAI,CAACrF,MAAM,EAAE,CAAA,CAAA,EAAI,GAAO,CAAA,GAAA,CAAA;AAC9F,SAAA,CAAA,CAAA;AACF,KAAA;IAEA,OAAOuO,IAAAA,CAAK3b,MAAM,CAChB2G,MACA,EAAA;QACE9D,IAAM6Q,EAAAA,OAAAA,CAAQ7Q,IAAI,IAAI,QAAA;QACtBmT,QAAAA,EAAAA,QAAAA;QACAuF,QAAAA,EAAAA,QAAAA;QACAK,QAAU,EAAA,IAAA;AACZ,KAAA,CAAA,CAAA;AACJ,CAAA;AAEA;;;;;;AAMC,IACD,SAASF,cAAgB/U,CAAAA,MAAc,EAAEhB,KAAY,EAAEyR,SAAmB,EAAA;IACxE,IAAM2E,OAAAA,GAAUpW,QAAQqC,SAAQmJ,CAAAA,SAAS,CAACxL,KAAS,CAAA,GAAA,IAAIqC,SAAQ,CAAA,GAAA,EAAK,GAAK,EAAA,GAAA,CAAA,CAAA;IACzE,IAAMgU,WAAAA,GAAc5E,YAAYA,SAAY,GAAA,KAAA,CAAA;AAE5C,IAAA,IAAMmE,QAAWU,GAAAA,QAAAA,CAASjc,MAAM,CAC9B2G,MACA,EAAA;QACEuV,aAAe,EAAA;YACbC,OAAS,EAAA,IAAInJ,YAAa+I,CAAAA,OAAAA,CAAQ9O,OAAO,EAAA,CAAA;AACzCmP,YAAAA,OAAAA,EAAS,IAAIpJ,YAAa,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AAC5E,SAAA;QACAqJ,MAAQ,EAAA;YACNC,QAAW,EAAA,qJAAA;YAQXC,MAAS,EAAA,ySAAA;YAYTC,MAAQ,EAAA,IAAA;AACV,SAAA;AACF,KAAA,CAAA,CAAA;IAEFjB,QAASkB,CAAAA,UAAU,CAAC,SAAWV,EAAAA,OAAAA,CAAAA,CAAAA;AAC/BR,IAAAA,QAAAA,CAASmB,SAAS,CAAC,SAAWvU,EAAAA,SAAAA,CAAQwU,QAAQ,CAAA,CAAA;AAC9CpB,IAAAA,QAAAA,CAASnE,SAAS,GAAG4E,WAAAA,CAAAA;AACrBT,IAAAA,QAAAA,CAASqB,WAAW,GAAG,KAAA,CAAA;AACvBrB,IAAAA,QAAAA,CAASsB,QAAQ,GAAG,KAAA,CAAA;AACpBtB,IAAAA,QAAAA,CAASuB,SAAS,GAAG,IAAA,CAAA;IAErB,OAAOvB,QAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;AAMC,IACD,SAASE,sBAAwB9U,CAAAA,MAAc,EAAEhB,KAAY,EAAEyR,SAAmB,EAAA;IAChF,IAAM2E,OAAAA,GAAUpW,QAAQqC,SAAQmJ,CAAAA,SAAS,CAACxL,KAAS,CAAA,GAAA,IAAIqC,SAAQ,CAAA,GAAA,EAAK,GAAK,EAAA,GAAA,CAAA,CAAA;IACzE,IAAMgU,WAAAA,GAAc5E,YAAYA,SAAY,GAAA,KAAA,CAAA;AAE5C,IAAA,IAAMmE,QAAWU,GAAAA,QAAAA,CAASjc,MAAM,CAC9B2G,MACA,EAAA;QACEuV,aAAe,EAAA;YACbC,OAAS,EAAA,IAAInJ,YAAa+I,CAAAA,OAAAA,CAAQ9O,OAAO,EAAA,CAAA;AACzCmP,YAAAA,OAAAA,EAAS,IAAIpJ,YAAa,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AAC1E+J,YAAAA,WAAAA,EAAa,IAAI/J,YAAa,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AACvCgK,YAAAA,QAAAA,EAAU,IAAIhK,YAAa,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AACtC,SAAA;QACAqJ,MAAQ,EAAA;YACNC,QAAW,EAAA,qPAAA;YAcXC,MAAS,EAAA,+kBAAA;YAmBTC,MAAQ,EAAA,IAAA;AACV,SAAA;AACF,KAAA,CAAA,CAAA;IAEFjB,QAASkB,CAAAA,UAAU,CAAC,SAAWV,EAAAA,OAAAA,CAAAA,CAAAA;AAC/BR,IAAAA,QAAAA,CAASmB,SAAS,CAAC,SAAWvU,EAAAA,SAAAA,CAAQwU,QAAQ,CAAA,CAAA;AAC9CpB,IAAAA,QAAAA,CAASkB,UAAU,CAAC,aAAezU,EAAAA,SAAAA,CAAQiV,IAAI,CAAA,CAAA;AAC/C1B,IAAAA,QAAAA,CAASkB,UAAU,CAAC,UAAYzU,EAAAA,SAAAA,CAAQiV,IAAI,CAAA,CAAA;AAE5C1B,IAAAA,QAAAA,CAASnE,SAAS,GAAG4E,WAAAA,CAAAA;AACrBT,IAAAA,QAAAA,CAASqB,WAAW,GAAG,KAAA,CAAA;AACvBrB,IAAAA,QAAAA,CAASsB,QAAQ,GAAG,KAAA,CAAA;AACpBtB,IAAAA,QAAAA,CAASuB,SAAS,GAAG,IAAA,CAAA;IAErB,OAAOvB,QAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;;IAQA,SAASC,oBAAqB7U,MAAc,EAAEhB,KAAY,EAAEyR,SAAmB,EAAEpC,KAAc,EAAA;IAC7F,IAAM+G,OAAAA,GAAUpW,QAAQqC,SAAQmJ,CAAAA,SAAS,CAACxL,KAAS,CAAA,GAAA,IAAIqC,SAAQ,CAAA,GAAA,EAAK,GAAK,EAAA,GAAA,CAAA,CAAA;IACzE,IAAMgU,WAAAA,GAAc5E,YAAYA,SAAY,GAAA,KAAA,CAAA;IAC5C,IAAM8F,OAAAA,GAAUlI,QAAQA,KAAQ,GAAA,CAAA,CAAA;AAEhC,IAAA,IAAMuG,QAAWU,GAAAA,QAAAA,CAASjc,MAAM,CAC9B2G,MACA,EAAA;QACEuV,aAAe,EAAA;YACbC,OAAS,EAAA,IAAInJ,YAAa+I,CAAAA,OAAAA,CAAQ9O,OAAO,EAAA,CAAA;AACzCkQ,YAAAA,OAAAA,EAAS,IAAInK,YAAa,CAAA;AAACkK,gBAAAA,OAAAA;AAAS,gBAAA,CAAA;AAAE,aAAA,CAAA;AACtCd,YAAAA,OAAAA,EAAS,IAAIpJ,YAAa,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AAC5E,SAAA;QACAqJ,MAAQ,EAAA;YACNG,MAAQ,EAAA,IAAA;YACRF,QAAW,EAAA,wLAAA;YASXC,MAAS,EAAA,uSAAA;AAWX,SAAA;AACF,KAAA,CAAA,CAAA;IAEFhB,QAASkB,CAAAA,UAAU,CAAC,SAAWV,EAAAA,OAAAA,CAAAA,CAAAA;AAC/BR,IAAAA,QAAAA,CAAS6B,UAAU,CAAC,SAAW,EAAA,IAAIhV,UAAQ8U,OAAS,EAAA,CAAA,CAAA,CAAA,CAAA;AACpD3B,IAAAA,QAAAA,CAASmB,SAAS,CAAC,SAAWvU,EAAAA,SAAAA,CAAQwU,QAAQ,CAAA,CAAA;AAC9CpB,IAAAA,QAAAA,CAASnE,SAAS,GAAG4E,WAAAA,CAAAA;AACrBT,IAAAA,QAAAA,CAASqB,WAAW,GAAG,KAAA,CAAA;AACvBrB,IAAAA,QAAAA,CAASsB,QAAQ,GAAG,IAAA,CAAA;AACpBtB,IAAAA,QAAAA,CAAS8B,aAAa,GAAG;AAACrX,QAAAA,SAAAA,CAAUsX,QAAQ;AAAEtX,QAAAA,SAAAA,CAAUsX,QAAQ;AAAC,KAAA,CAAA;AACjE/B,IAAAA,QAAAA,CAASgC,aAAa,GAAG;AAACvX,QAAAA,SAAAA,CAAUwX,SAAS;AAAExX,QAAAA,SAAAA,CAAUyX,mBAAmB;AAAEzX,QAAAA,SAAAA,CAAUwX,SAAS;AAAExX,QAAAA,SAAAA,CAAUyX,mBAAmB;AAAC,KAAA,CAAA;AACjIlC,IAAAA,QAAAA,CAASuB,SAAS,GAAG,IAAA,CAAA;IAErB,OAAOvB,QAAAA,CAAAA;AACT,CAAA;AAEA,SAASO,oBAAsBnV,CAAAA,MAAc,EAAEoM,IAAqB,EAAEqE,SAAmB,EAAA;IACvF,IAAM4E,WAAAA,GAAc5E,YAAYA,SAAY,GAAA,KAAA,CAAA;AAC5C,IAAA,IAAM8E,aAAgB,GAAA;AACpBE,QAAAA,OAAAA,EAAS,IAAIpJ,YAAa,CAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AAC1EmK,QAAAA,OAAAA,EAAS,IAAInK,YAAa,CAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AAClC,KAAA,CAAA;AAEA,IAAA,IAAMuI,QAAWU,GAAAA,QAAAA,CAASjc,MAAM,CAC9B2G,MACA,EAAA;QACEuV,aAAAA,EAAAA,aAAAA;QACAG,MAAQ,EAAA;YACNG,MAAQ,EAAA,IAAA;YACRF,QAAW,EAAA,oaAAA;YAiBXC,MAAS,EAAA,wmBAAA;AAoBX,SAAA;AACF,KAAA,CAAA,CAAA;AAEFhB,IAAAA,QAAAA,CAASmB,SAAS,CAAC,SAAWvU,EAAAA,SAAAA,CAAQwU,QAAQ,CAAA,CAAA;AAC9CpB,IAAAA,QAAAA,CAAS6B,UAAU,CAAC,SAAW,EAAA,IAAIhV,UAAQ,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;IAE9C,IAAQ7E,YAAJwP,CAAAA,IAAAA,EAAgBjM,OAAS,CAAA,EAAA;QAC3ByU,QAASmC,CAAAA,UAAU,CAAC,WAAa3K,EAAAA,IAAAA,CAAAA,CAAAA;;KAE5B,MAAA;QACL,IAAIpN,KAAAA,CAAAA;AAEJ,QAAA,IAAIoN,SAAS3T,SAAW,EAAA;YACtBuG,KAAQ,GAAA,IAAIqC,SAAQ,CAAA,GAAA,EAAK,GAAK,EAAA,GAAA,CAAA,CAAA;SACzB,MAAA;YACLrC,KAAQqC,GAAAA,SAAAA,CAAQmJ,SAAS,CAAC4B,IAAAA,CAAAA,CAAAA;AAC5B,SAAA;QACAwI,QAASkB,CAAAA,UAAU,CAAC,SAAW9W,EAAAA,KAAAA,CAAAA,CAAAA;;AAEjC,KAAA;AAEA4V,IAAAA,QAAAA,CAASnE,SAAS,GAAG4E,WAAAA,CAAAA;AACrBT,IAAAA,QAAAA,CAASqB,WAAW,GAAG,KAAA,CAAA;AACvBrB,IAAAA,QAAAA,CAASsB,QAAQ,GAAG,IAAA,CAAA;AACpBtB,IAAAA,QAAAA,CAAS8B,aAAa,GAAG;AAACrX,QAAAA,SAAAA,CAAUsX,QAAQ;AAAEtX,QAAAA,SAAAA,CAAUsX,QAAQ;AAAC,KAAA,CAAA;AACjE/B,IAAAA,QAAAA,CAASgC,aAAa,GAAG;AAACvX,QAAAA,SAAAA,CAAUwX,SAAS;AAAExX,QAAAA,SAAAA,CAAUyX,mBAAmB;AAAEzX,QAAAA,SAAAA,CAAUwX,SAAS;AAAExX,QAAAA,SAAAA,CAAUyX,mBAAmB;AAAC,KAAA,CAAA;IAEjI,OAAOlC,QAAAA,CAAAA;AACT,CAAA;AAEA;;;;;AAKC,IACD,SAASnD,kBAAAA,CAAoB3F,IAAuC,EAAEe,WAA2C,EAAA;IAC/GA,WAAYzR,CAAAA,GAAG,CAAC,OAAS,EAAA;AACvByQ,QAAAA,IAAAA,EAAMtK,aAAaK,IAAI;QACvBuC,MAAQ,EAAA;YAAC,IAAI9C,SAAAA,CAAQ,GAAG,CAAG,EAAA,CAAA,CAAA;AAAI,YAAA,IAAIA,SAAQyK,CAAAA,IAAAA,CAAKpQ,MAAM,EAAE,CAAG,EAAA,CAAA,CAAA;AAAG,SAAA;AAC9D8K,QAAAA,KAAAA,EAAOsF,KAAKtF,KAAK;AACnB,KAAA,CAAA,CAAA;IACAqG,WAAYzR,CAAAA,GAAG,CAAC,OAAS,EAAA;AACvByQ,QAAAA,IAAAA,EAAMtK,aAAaK,IAAI;QACvBuC,MAAQ,EAAA;YAAC,IAAI9C,SAAAA,CAAQ,GAAG,CAAG,EAAA,CAAA,CAAA;AAAI,YAAA,IAAIA,SAAQ,CAAA,CAAA,EAAGyK,IAAKpQ,CAAAA,MAAM,EAAE,CAAA,CAAA;AAAG,SAAA;AAC9D8K,QAAAA,KAAAA,EAAOsF,KAAKtF,KAAK;AACnB,KAAA,CAAA,CAAA;IACAqG,WAAYzR,CAAAA,GAAG,CAAC,OAAS,EAAA;AACvByQ,QAAAA,IAAAA,EAAMtK,aAAaK,IAAI;QACvBuC,MAAQ,EAAA;YAAC,IAAI9C,SAAAA,CAAQ,GAAG,CAAG,EAAA,CAAA,CAAA;AAAI,YAAA,IAAIA,SAAQ,CAAA,CAAA,EAAG,CAAGyK,EAAAA,IAAAA,CAAKpQ,MAAM,CAAA;AAAE,SAAA;AAC9D8K,QAAAA,KAAAA,EAAOsF,KAAKtF,KAAK;AACnB,KAAA,CAAA,CAAA;AACF;;ACp7BA,IAAQhF,YAA8BJ,IAA9BI,CAAAA,OAAAA,CAAAA,CAA8BJ,IAArBK,CAAAA,OAAAA,CAAAA,KAASJ,YAAYD,IAAZC,CAAAA,QAAAA;AAE1B;;;;;;;;AAQC,IACM,SAAS2V,gBACdC,CAAAA,GAAY,EACZC,aAAsB,EACtB/S,MAAkC,EAClCK,MAAc,EACd2S,SAAkB,EAClBhK,MAAc,EAAA;;AAGd,IAAA,IAAMiK,KAAK,IAAI/V,SAAAA,CACb8V,UAAUE,QAAQ,CAAC,EAAE,EACrBF,SAAAA,CAAUE,QAAQ,CAAC,EAAE,EACrBF,SAAAA,CAAUE,QAAQ,CAAC,CAAA,CAAE,EACrBxW,SAAS,EAAA,CAAA;AAEX,IAAA,IAAMyW,WAAcF,GAAAA,EAAAA,CAAG1W,KAAK,EAAA,CAAGK,QAAQ,CAACyD,MAAAA,CAAAA,CAAAA;AAExC8S,IAAAA,WAAAA,CAAYpW,GAAG,CAACiD,MAAM,CAAC,CAAE,CAAA,CAAA,CAAA;;AAGzB,IAAA,IAAMoT,OAAUpK,GAAAA,MAAAA,CAAOqK,sBAAsB,CAAC,IAAIhW,SAAW2V,EAAAA,EAAAA,SAAAA,CAAAA,CAAAA;IAE7D,IAAMM,WAAAA,GAAcF,QAAQtH,YAAY,CAAC9L,MAAM,CAAC,CAAA,CAAE,EAAE,IAAI9C,SAAAA,EAAAA,CAAAA,CAAAA;IACxD,IAAMqW,SAAAA,GAAYH,QAAQtH,YAAY,CAAC9L,MAAM,CAAC,CAAA,CAAE,EAAE,IAAI9C,SAAAA,EAAAA,CAAAA,CAAAA;AACtD,IAAA,IAAMsW,iBAAoBJ,GAAAA,OAAAA,CAAQtH,YAAY,CAACqH,aAAa,IAAIjW,SAAAA,EAAAA,CAAAA,CAAAA;AAEhE,IAAA,IAAMuW,kBAAqBD,GAAAA,iBAAAA,CAAkBjX,KAAK,EAAA,CAAGC,QAAQ,CAAC8W,WAAAA,CAAAA,CAAAA;IAE9D,IAAMI,YAAAA,GAAeD,mBAAmBlc,MAAM,EAAA,CAAA;;IAG9C,IAA+BgG,uBAAAA,GAAAA,uBAAuBwV,aAAe,EAAA;AAACO,QAAAA,WAAAA,CAAYzU,SAAS,EAAA;AAAI0U,QAAAA,SAAAA,CAAU1U,SAAS,EAAA;AAAG,KAAA,CAAA,EAA7GP,QAAuBf,GAAAA,uBAAAA,CAAvBe,QAAUI,EAAAA,QAAAA,GAAanB,uBAAbmB,CAAAA,QAAAA,CAAAA;IAElB,IAAIJ,QAAAA,IAAYoV,gBAAgBhV,QAAU,EAAA;;QAExC,IAAMiV,cAAAA,GAAiBhV,yBAAyBoU,aAAe,EAAA;AAACO,YAAAA,WAAAA;AAAaC,YAAAA,SAAAA;AAAU,SAAA,CAAA,CAAA;QACvF,IAAMK,qBAAAA,GAAwB5K,OAAO6K,8BAA8B,EAAA,CAAA;QAEnED,qBAAsB9H,CAAAA,YAAY,CAAC6H,cAAgBb,EAAAA,GAAAA,CAAAA,CAAAA;QAEnD,OAAOA,GAAAA,CAAAA;AACT,KAAA;AACF;;ACtDA,IAAQzN,QAA4BpI,IAA5BoI,CAAAA,KAAAA,EAAOnI,YAAqBD,IAArBC,CAAAA,OAAAA,EAASG,YAAYJ,IAAZI,CAAAA,OAAAA,CAAAA;AAExB,IAAMyW,QAAW,GAAA,IAAA,CAAA;AACjB,IAAMC,OAAAA,GAAU5V,IAAKmD,CAAAA,EAAE,GAAG,GAAA,CAAA;AAa1B,SAAS0S,OAAS3T,CAAAA,MAAc,EAAEqE,GAAW,EAAEkE,OAA4B,EAAA;IAA5BA,IAAAA,OAAAA,KAAAA,KAAAA,CAAAA,EAAAA,UAA0B,EAAC,CAAA;AACxE,IAAA,IAAQmE,KAAqDnE,GAAAA,OAAAA,CAArDmE,KAAqDnE,EAAAA,kBAAAA,GAAAA,OAAAA,CAA9CgE,WAAAA,SAAY,GAAA,kBAAA,KAAA,KAAA,CAAA,GAAA;AAAC,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;KAAE,GAAyBhE,kBAAAA,EAAAA,eAAAA,GAAAA,OAAAA,CAAvBqL,QAAAA,MAAS,GAAA,eAAA,KAAA,KAAA,CAAA,GAAA;AAAC,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAE,KAAA,GAAA,eAAA,CAAA;IACxD,IAAMC,OAAAA,GAAU7O,MAAMgB,SAAS,CAAC4N,QAAQE,MAAM,EAAA,CAAG7N,SAAS,CAAC,IAAIjJ,SAAAA,EAAAA,CAAAA,CAAAA;AAC/D,IAAA,IAAM2C,SAAoB,EAAE,CAAA;AAC5B,IAAA,IAAMG,UAAU,EAAE,CAAA;AAElBiU,IAAAA,QAAAA,CAAS/T,MAAQ,EAAA,CAAA,CAAA,CAAA;AACjB,IAAA,IAAI7I,CAAI,GAAA,CAAA,CAAA;IAER,MAAOA,CAAAA,IAAKkN,KAAKlN,CAAK,EAAA,CAAA;AACpB,QAAA,IAAM2P,QAAQ3P,CAAIuc,GAAAA,OAAAA,CAAAA;QAElB5T,OAAQjK,CAAAA,IAAI,CAACsB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,CAAAA,CAAAA;QACpB4c,QAASjW,CAAAA,IAAAA,CAAK0C,GAAG,CAACsG,KAAAA,CAAAA,GAAS9G,QAAQlC,IAAK2C,CAAAA,GAAG,CAACqG,KAAS9G,CAAAA,GAAAA,MAAAA,CAAAA,CAAAA;AACvD,KAAA;IAEA,OAAO;QACLL,MAAAA,EAAAA,MAAAA;QACAG,OAAAA,EAAAA,OAAAA;AACF,KAAA,CAAA;IAEA,SAASiU,QAAAA,CAAUvT,GAAW,EAAEC,GAAW,EAAA;AACzC,QAAA,IAAMtD,QAAQ,IAAIN,SAAAA,EAAAA,CAAAA;AAElB,QAAA,IAAI6P,UAAU,IAAM,EAAA;YAClBvP,KAAMvG,CAAAA,GAAG,CAAC4J,GAAAA,EAAK,CAAGC,EAAAA,GAAAA,CAAAA,CAAAA;SACb,MAAA,IAAIiM,UAAU,IAAM,EAAA;YACzBvP,KAAMvG,CAAAA,GAAG,CAAC,CAAA,EAAG4J,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;SACb,MAAA;YACLtD,KAAMvG,CAAAA,GAAG,CAAC4J,GAAAA,EAAKC,GAAK,EAAA,CAAA,CAAA,CAAA;AACtB,SAAA;AACAoT,QAAAA,OAAAA,CAAQG,eAAe,CAAC7W,KAAAA,CAAAA,CAAAA;AACxBwC,QAAAA,MAAAA,CAAO9J,IAAI,CAACsH,KAAMT,CAAAA,GAAG,CAAC6P,SAAAA,CAAAA,CAAAA,CAAAA;AACxB,KAAA;AACF,CAAA;AAEA,SAASnP,IAAAA,CAAMkO,EAAQ,EAAEC,EAAQ,EAAA;IAC/B,OAAO;QACL5L,MAAQ,EAAA;AACN9C,YAAAA,SAAAA,CAAQmJ,SAAS,CAACsF,EAAAA,CAAAA;AAClBzO,YAAAA,SAAAA,CAAQmJ,SAAS,CAACuF,EAAAA,CAAAA;AACnB,SAAA;QACDzL,OAAS,EAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA;AACjB,KAAA,CAAA;AACF,CAAA;AAEA,SAASuN,IAAKrL,KAAa,EAAEC,MAAc,EAAEC,KAAa,EAAEyH,MAAiB,EAAA;AAC3E,IAAA,IAAMvH,IAAIJ,KAAQ,GAAA,CAAA,CAAA;AAClB,IAAA,IAAMiS,IAAIhS,MAAS,GAAA,CAAA,CAAA;AACnB,IAAA,IAAMlJ,IAAImJ,KAAQ,GAAA,CAAA,CAAA;IAClB,IAAMgS,QAAAA,GAAWvK,iBAAAA,MAAU,GAAA;AAAC,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAE,KAAA,CAAA;AACpC,IAAA,IAAMhK,MAAoB,GAAA;AACxB,QAAA;YAAC,CAACyC,CAAAA;AAAG6R,YAAAA,CAAAA;YAAG,CAAClb,CAAAA;AAAE,SAAA;AAAE,QAAA;YAAC,CAACqJ,CAAAA;YAAG,CAAC6R,CAAAA;YAAG,CAAClb,CAAAA;AAAE,SAAA;AAAE,QAAA;YAAC,CAACqJ,CAAAA;AAAG6R,YAAAA,CAAAA;AAAGlb,YAAAA,CAAAA;AAAE,SAAA;AAAE,QAAA;YAAC,CAACqJ,CAAAA;YAAG,CAAC6R,CAAAA;AAAGlb,YAAAA,CAAAA;AAAE,SAAA;AAClD,QAAA;AAACqJ,YAAAA,CAAAA;AAAG6R,YAAAA,CAAAA;YAAG,CAAClb,CAAAA;AAAE,SAAA;AAAE,QAAA;AAACqJ,YAAAA,CAAAA;YAAG,CAAC6R,CAAAA;YAAG,CAAClb,CAAAA;AAAE,SAAA;AAAE,QAAA;AAACqJ,YAAAA,CAAAA;AAAG6R,YAAAA,CAAAA;AAAGlb,YAAAA,CAAAA;AAAE,SAAA;AAAE,QAAA;AAACqJ,YAAAA,CAAAA;YAAG,CAAC6R,CAAAA;AAAGlb,YAAAA,CAAAA;AAAE,SAAA;KAC/C,CAACob,GAAG,CAACC,SAAAA,IAAAA,EAAAA;QACJ,OAAO,IAAIvX,SAAQuX,CAAAA,IAAI,CAAC,CAAA,CAAE,GAAGF,QAAQ,CAAC,CAAE,CAAA,EAAEE,IAAI,CAAC,EAAE,GAAGF,QAAQ,CAAC,CAAA,CAAE,EAAEE,IAAI,CAAC,CAAE,CAAA,GAAGF,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;AACxF,KAAA,CAAA,CAAA;IAEA,OAAO;QACLvU,MAAAA,EAAAA,MAAAA;QACAG,OAAS,EAAA;AACP,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AACrB,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AACrB,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AACtB,SAAA;AACH,KAAA,CAAA;AACF,CAAA;AAEA,SAASuU,IAAMrS,CAAAA,KAAa,EAAEC,MAAc,EAAEqS,GAAU,EAAA;AACtD,IAAA,IAAMlS,IAAIJ,KAAQ,GAAA,CAAA,CAAA;AAClB,IAAA,IAAMiS,IAAIhS,MAAS,GAAA,CAAA,CAAA;AACnB,IAAA,IAAMtC,MAAoB,GAAA;QACxB,IAAI9C,SAAAA,CAAQ,CAACuF,CAAAA,EAAG6R,CAAG,EAAA,CAAA,CAAA;QACnB,IAAIpX,SAAAA,CAAQuF,GAAG6R,CAAG,EAAA,CAAA,CAAA;QAClB,IAAIpX,SAAAA,CAAQuF,CAAG,EAAA,CAAC6R,CAAG,EAAA,CAAA,CAAA;AACnB,QAAA,IAAIpX,SAAQ,CAAA,CAACuF,CAAG,EAAA,CAAC6R,CAAG,EAAA,CAAA,CAAA;AACrB,KAAA,CAAA;AAED,IAAA,IAAIK,GAAK,EAAA;QACP3U,MAAO4U,CAAAA,OAAO,CAACC,SAAAA,GAAAA,EAAAA;AACbA,YAAAA,GAAAA,CAAI9X,GAAG,CAAC4X,GAAAA,CAAAA,CAAAA;AACV,SAAA,CAAA,CAAA;AACF,KAAA;IAEA,OAAO;QACL3U,MAAAA,EAAAA,MAAAA;QACAG,OAAS,EAAA;AACP,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AACtB,SAAA;AACH,KAAA,CAAA;AACF,CAAA;AAEA,SAAS2U,kBAAmBC,UAA0B,EAAA;;QAKlD,IAAM7J,QAAAA,GAAW6J,UAAU,CAACvd,CAAE,CAAA,CAAA;AAE9B,QAAA,IAAI0T,QAAU,EAAA;AACZA,YAAAA,QAAAA,CAASlL,MAAM,CAAC4U,OAAO,CAACpX,SAAAA,KAAAA,EAAAA;gBACtBwC,MAAO9J,CAAAA,IAAI,CAACsH,KAAMoD,CAAAA,CAAC,EAAEpD,KAAMxD,CAAAA,CAAC,EAAEwD,KAAAA,CAAM8C,CAAC,CAAA,CAAA;AACvC,aAAA,CAAA,CAAA;AACA4K,YAAAA,QAAAA,CAAS/K,OAAO,CAACyU,OAAO,CAAChT,SAAAA,KAAAA,EAAAA;uBAASzB,OAAQjK,CAAAA,IAAI,CAAC0L,KAAQoT,GAAAA,YAAAA,CAAAA,CAAAA;;YACvDA,YAAe9J,IAAAA,QAAAA,CAASlL,MAAM,CAACzI,MAAM,CAAA;AACvC,SAAA;;AACF,KAAA,CAAA;AAbA,IAAA,IAAMyI,SAAmB,EAAE,CAAA;AAC3B,IAAA,IAAMG,UAAoB,EAAE,CAAA;IAE5B,IAAK,IAAI3I,IAAI,CAAGwd,EAAAA,WAAAA,GAAc,GAAGxd,CAAIud,GAAAA,UAAAA,CAAWxd,MAAM,EAAEC,CAAAA,EAAAA,CAAAA,KAAAA,CAAAA,CAAAA,EAAAA,WAAAA,CAAAA,CAAAA;IAYxD,OAAO;AACLwI,QAAAA,MAAAA,EAAQ,IAAIkI,YAAalI,CAAAA,MAAAA,CAAAA;AACzBG,QAAAA,OAAAA,EAAS,IAAIkI,WAAYlI,CAAAA,OAAAA,CAAAA;AAC3B,KAAA,CAAA;AACF,CAAA;AAEA,IAAM8U,MAAuD,GAAA;IAC3DjZ,OAAAA,EAAAA,SAAAA,QAASxI,GAAQ,EAAA;AACf,QAAA,IAAM0hB,MAAM,EAAE,CAAA;QAEd,IAAI1hB,GAAAA,CAAI2hB,MAAM,EAAE;AACd,YAAA,IAAMC,OAAU5hB,GAAAA,GAAAA,CAAI2hB,MAAM,CAACC,OAAO,CAAA;AAClC,YAAA,IAAMC,KAAQ7hB,GAAAA,GAAAA,CAAI2hB,MAAM,CAACE,KAAK,CAAA;YAC9B,IAAMhT,KAAAA,GAAQ7O,IAAI6O,KAAK,CAAA;YACvB,IAAMC,MAAAA,GAAS9O,IAAI8O,MAAM,CAAA;YAEzB,IAAK,IAAI9K,IAAI,CAAGA,EAAAA,CAAAA,GAAI4d,QAAQ7d,MAAM,EAAEC,KAAK,CAAG,CAAA;AAC1C0d,gBAAAA,GAAAA,CAAIhf,IAAI,CAACwe,IAAKW,CAAAA,KAAK,CAAC,CAAA,CAAE,GAAGhT,KAAAA,EAAOgT,KAAK,CAAC,CAAE,CAAA,GAAG/S,MAAQ,EAAA;AACjDD,oBAAAA,KAAAA,IAAS+S,OAAO,CAAC5d,CAAAA,CAAE,GAAG,GAAE,CAAA;AACxB8K,oBAAAA,MAAAA,IAAU8S,OAAO,CAAC5d,CAAI,GAAA,CAAA,CAAE,GAAG,GAAE,CAAA;AAC7B,oBAAA,CAAA;AACD,iBAAA,CAAA,CAAA,CAAA;AACH,aAAA;SACK,MAAA;AACL0d,YAAAA,GAAAA,CAAII,OAAO,CAACL,MAAAA,CAAOM,SAAS,CAAC/hB,GAAAA,CAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,SAAA;QAEA,OAAO0hB,GAAAA,CAAAA;AACT,KAAA;IACAM,MAAAA,EAAAA,SAAAA,OAAQhiB,GAAQ,EAAA;AACd,QAAA,IAAQ6M,MAAgB7M,GAAAA,GAAAA,CAAhB6M,MAAQqE,EAAAA,GAAAA,GAAQlR,GAARkR,CAAAA,GAAAA,CAAAA;QAEhB,OAAO;AACLsP,YAAAA,OAAAA,CAAQ3T,MAAQqE,EAAAA,GAAAA,CAAAA;AAChBA,YAAAA,GAAAA,KAAQ,OAAOjH,IAAK,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;aAAE,EAAE;AAAC4C,gBAAAA,MAAAA;AAAQ,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AAC7CqE,YAAAA,GAAAA,KAAQ,OAAOjH,IAAK,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;aAAE,EAAE;gBAACU,IAAK0C,CAAAA,GAAG,CAAC6D,GAAAA,GAAMqP,OAAW1T,CAAAA,GAAAA,MAAAA;gBAAQlC,IAAK2C,CAAAA,GAAG,CAAC4D,GAAAA,GAAMqP,OAAW1T,CAAAA,GAAAA,MAAAA;AAAQ,gBAAA,CAAA;AAAE,aAAA,CAAA;AACvG,SAAA,CAAA;AACH,KAAA;IACAmQ,GAAK,EAAA,SAALA,IAAehd,GAAQ,EAAA;QACrB,IACE6O,KAAAA,GACE7O,GADF6O,CAAAA,KAAAA,EAAOC,MACL9O,GAAAA,GAAAA,CADK8O,QAAQC,KACb/O,GAAAA,GAAAA,CADa+O,KAAOyH,EAAAA,MAAAA,GACpBxW,GADoBwW,CAAAA,MAAAA,CAAAA;AAExB,QAAA,IAAM/B,IAAOyF,GAAAA,GAAAA,CAAIrL,KAAOC,EAAAA,MAAAA,EAAQC,KAAOyH,EAAAA,MAAAA,CAAAA,CAAAA;QAEvC,OAAO;AAAC/B,YAAAA,IAAAA;AAAK,SAAA,CAAA;AACf,KAAA;IACAsH,MAAQ,EAAA,SAARA,OAAkB/b,GAAG,EAAA;AACnB,QAAA,IAAQ6M,MAAgB7M,GAAAA,GAAAA,CAAhB6M,MAAQqE,EAAAA,GAAAA,GAAQlR,GAARkR,CAAAA,GAAAA,CAAAA;AAChB,QAAA,IAAMwQ,GAAM,GAAA;YACVzX,IAAK,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;gBAAG,CAAC4C,MAAAA;aAAO,EAAE;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAGA,gBAAAA,MAAAA;AAAO,aAAA,CAAA;AACpC2T,YAAAA,OAAAA,CAAQ3T,MAAQqE,EAAAA,GAAAA,GAAM,GAAM,GAAA,GAAA,GAAM,GAAK,EAAA;gBAAEqI,KAAO,EAAA,IAAA;gBAAMkH,MAAQ,EAAA;AAAC,oBAAA,CAAA;AAAG,oBAAA,EAAA;AAAI,oBAAA,CAAA;AAAE,iBAAA;AAAC,aAAA,CAAA;AACzED,YAAAA,OAAAA,CAAQ3T,QAAQqE,GAAK,EAAA;gBAAEqI,KAAO,EAAA,IAAA;AAAK,aAAA,CAAA;AACnCiH,YAAAA,OAAAA,CAAQ3T,QAAQ,GAAK,EAAA;gBAAE0M,KAAO,EAAA,IAAA;gBAAMkH,MAAQ,EAAA;AAAC,oBAAA,CAAA;AAAG,oBAAA,EAAA;AAAIvP,oBAAAA,GAAAA;AAAI,iBAAA;AAAC,aAAA,CAAA;AAC1D,SAAA,CAAA;AAED,QAAA,IAAIA,MAAM,EAAI,EAAA;AACZwQ,YAAAA,GAAAA,CAAIhf,IAAI,CAAC8d,OAAAA,CAAQ3T,QAAQqE,GAAM,GAAA,GAAA,GAAM,MAAM,GAAK,EAAA;gBAAEqI,KAAO,EAAA,IAAA;gBAAMkH,MAAQ,EAAA;oBAAC,CAAC,EAAA;AAAI,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA;AAAC,aAAA,CAAA,CAAA,CAAA;AACrF,SAAA;QAEA,OAAOiB,GAAAA,CAAAA;AACT,KAAA;IACAO,UAAAA,EAAAA,SAAAA,WAAYjiB,GAAG,EAAA;AACb,QAAA,IAAQ6M,MAAgB7M,GAAAA,GAAAA,CAAhB6M,MAAQqE,EAAAA,GAAAA,GAAQlR,GAARkR,CAAAA,GAAAA,CAAAA;AAChB,QAAA,IAAMwQ,GAAM,GAAA;YACVzX,IAAK,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG4C,gBAAAA,MAAAA;aAAO,EAAE;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;YAC9B5C,IAAK,CAAA;gBAACiH,GAAM,GAAA,GAAA,GAAM,CAACrE,MAAS,GAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;aAAE,EAAE;AAACA,gBAAAA,MAAAA;AAAQ,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AACpD7M,YAAAA,GAAAA,GAAM,MAAMiK,IAAK,CAAA;AAAC,gBAAA,CAAA;gBAAGiH,GAAM,GAAA,GAAA,GAAM,CAACrE,MAAS,GAAA,CAAA;AAAG,gBAAA,CAAA;aAAE,EAAE;AAAC,gBAAA,CAAA;AAAGA,gBAAAA,MAAAA;AAAQ,gBAAA,CAAA;AAAE,aAAA,CAAA;YAChE2T,OAAQ3T,CAAAA,MAAAA,EAAQ,CAACqE,GAAAA,GAAM,MAAM,GAAM,GAAA,GAAE,IAAK,CAAG,EAAA;gBAAEqI,KAAO,EAAA,IAAA;AAAK,aAAA,CAAA;AAC3DiH,YAAAA,OAAAA,CAAQ3T,QAAQqE,GAAK,EAAA;gBAAEqI,KAAO,EAAA,IAAA;AAAK,aAAA,CAAA;AACnCiH,YAAAA,OAAAA,CAAQ3T,QAAQ,EAAI,EAAA;gBAAE0M,KAAO,EAAA,IAAA;gBAAMkH,MAAQ,EAAA;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAGvP,oBAAAA,GAAAA;AAAI,iBAAA;AAAC,aAAA,CAAA;YACvDjH,IAAK,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;aAAE,EAAE;gBAACU,IAAK0C,CAAAA,GAAG,CAAC6D,GAAAA,GAAMqP,OAAW1T,CAAAA,GAAAA,MAAAA;gBAAQlC,IAAK2C,CAAAA,GAAG,CAAC4D,GAAAA,GAAMqP,OAAW1T,CAAAA,GAAAA,MAAAA;AAAQ,gBAAA,CAAA;AAAE,aAAA,CAAA;AACxF,SAAA,CAAA;AAED,QAAA,IAAIqE,MAAM,EAAI,EAAA;AACZwQ,YAAAA,GAAAA,CAAIhf,IAAI,CAAC8d,OAAAA,CAAQ3T,QAAQqE,GAAM,GAAA,GAAA,GAAM,MAAM,EAAI,EAAA;gBAAEqI,KAAO,EAAA,IAAA;AAAK,aAAA,CAAA,CAAA,CAAA;AAC/D,SAAA;QAEA,OAAOmI,GAAAA,CAAAA;AACT,KAAA;IACAxF,IAAAA,EAAAA,SAAAA,KAAMlc,GAAG,EAAA;AACP,QAAA,IAAQ6M,MAAgB7M,GAAAA,GAAAA,CAAhB6M,MAAQqE,EAAAA,GAAAA,GAAQlR,GAARkR,CAAAA,GAAAA,CAAAA;QAChB,IAAMgR,WAAAA,GAAcrV,SAASlC,IAAK2H,CAAAA,GAAG,CAACtS,GAAI2T,CAAAA,KAAK,GAAG4M,OAAW1T,CAAAA,GAAAA,MAAAA,CAAAA;QAE7D,OAAO;AACL2T,YAAAA,OAAAA,CAAQ0B,aAAahR,GAAK,EAAA;gBAAEkI,SAAW,EAAA;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAGvM,oBAAAA,MAAAA;AAAO,iBAAA;AAAC,aAAA,CAAA;YACtD5C,IAAK,CAAA;AAAC4C,gBAAAA,MAAAA;AAAQ,gBAAA,CAAA;AAAG,gBAAA,CAAA;aAAE,EAAE;AAACqV,gBAAAA,WAAAA;AAAa,gBAAA,CAAA;AAAGrV,gBAAAA,MAAAA;AAAO,aAAA,CAAA;AAC7CqE,YAAAA,GAAAA,GAAM,MAAMjH,IAAK,CAAA;AAAC,gBAAA,CAAA;AAAG4C,gBAAAA,MAAAA;AAAQ,gBAAA,CAAA;aAAE,EAAE;AAAC,gBAAA,CAAA;AAAGqV,gBAAAA,WAAAA;AAAarV,gBAAAA,MAAAA;AAAO,aAAA,CAAA;AACzDqE,YAAAA,GAAAA,GAAM,OAAOjH,IAAK,CAAA;gBAAC,CAAC4C,MAAAA;AAAQ,gBAAA,CAAA;AAAG,gBAAA,CAAA;aAAE,EAAE;gBAAC,CAACqV,WAAAA;AAAa,gBAAA,CAAA;AAAGrV,gBAAAA,MAAAA;AAAO,aAAA,CAAA;AAC5DqE,YAAAA,GAAAA,GAAM,OAAOjH,IAAK,CAAA;AAAC,gBAAA,CAAA;gBAAG,CAAC4C,MAAAA;AAAQ,gBAAA,CAAA;aAAE,EAAE;AAAC,gBAAA,CAAA;gBAAG,CAACqV,WAAAA;AAAarV,gBAAAA,MAAAA;AAAO,aAAA,CAAA;YAC5D5C,IAAK,CAAA;gBAACU,IAAK0C,CAAAA,GAAG,CAAC6D,GAAAA,GAAMqP,OAAW1T,CAAAA,GAAAA,MAAAA;gBAAQlC,IAAK2C,CAAAA,GAAG,CAAC4D,GAAAA,GAAMqP,OAAW1T,CAAAA,GAAAA,MAAAA;AAAQ,gBAAA,CAAA;aAAE,EAC1E;gBAAClC,IAAK0C,CAAAA,GAAG,CAAC6D,GAAAA,GAAMqP,OAAW2B,CAAAA,GAAAA,WAAAA;gBAAavX,IAAK2C,CAAAA,GAAG,CAAC4D,GAAAA,GAAMqP,OAAW2B,CAAAA,GAAAA,WAAAA;AAAarV,gBAAAA,MAAAA;AAAO,aAAA,CAAA;AACzF,SAAA,CAACsV,MAAM,CAACV,MAAOO,CAAAA,MAAM,CAAChiB,GAAAA,CAAAA,CAAAA,CAAAA;AACzB,KAAA;IACAoiB,IAAAA,EAAAA,SAAAA,KAAMpiB,GAAG,EAAA;QACP,IAAMqiB,EAAAA,GAAKriB,GAAI6O,CAAAA,KAAK,GAAG,CAAA,CAAA;QAEvB,OAAO;YACL5E,IAAK,CAAA;gBAAC,CAACoY,EAAAA;AAAI,gBAAA,CAAA;AAAG,gBAAA,CAAA;aAAE,EAAE;AAACA,gBAAAA,EAAAA;AAAI,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AAC7B,SAAA,CAAA;AACH,KAAA;IACAN,SAAAA,EAAAA,SAAAA,UAAW/hB,GAAG,EAAA;QACZ,OAAO;AACLkhB,YAAAA,IAAAA,CAAKlhB,GAAI6O,CAAAA,KAAK,EAAE7O,GAAAA,CAAI8O,MAAM,CAAA;AAC3B,SAAA,CAAA;AACH,KAAA;IACAwT,aAAAA,EAAAA,SAAAA,cAAetiB,GAAG,EAAA;QAChB,OAAO;AACLkhB,YAAAA,IAAAA,CAAKlhB,GAAI6O,CAAAA,KAAK,EAAE7O,GAAAA,CAAI8O,MAAM,CAAA;AAC3B,SAAA,CAAA;AACH,KAAA;IACAyT,KAAAA,EAAAA,SAAAA,MAAOviB,GAAG,EAAA;AACR,QAAA,IAAQkR,MAA6BlR,GAA7BkR,CAAAA,GAAAA,EAAKrE,SAAwB7M,GAAxB6M,CAAAA,MAAAA,EAAQ2V,cAAgBxiB,GAAhBwiB,CAAAA,WAAAA,CAAAA;QAErB,OAAO;AACLhC,YAAAA,OAAAA,CAAQgC,aAAa,GAAK,EAAA;gBAAEpJ,SAAW,EAAA;AAACvM,oBAAAA,MAAAA;AAAQ,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA;gBAAE4T,MAAQ,EAAA;AAAC,oBAAA,EAAA;AAAI,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA;AAAC,aAAA,CAAA;AAC1ED,YAAAA,OAAAA,CAAQ3T,SAAS2V,WAAatR,EAAAA,GAAAA,CAAAA;AAC9BsP,YAAAA,OAAAA,CAAQ3T,SAAS2V,WAAatR,EAAAA,GAAAA,CAAAA;AAC9BsP,YAAAA,OAAAA,CAAQ3T,QAAQqE,GAAK,EAAA;gBAAEkI,SAAW,EAAA;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAGoJ,oBAAAA,WAAAA;AAAY,iBAAA;AAAC,aAAA,CAAA;AACtDhC,YAAAA,OAAAA,CAAQ3T,QAAQqE,GAAK,EAAA;gBAAEkI,SAAW,EAAA;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;oBAAG,CAACoJ,WAAAA;AAAY,iBAAA;AAAC,aAAA,CAAA;AACvDtR,YAAAA,GAAAA,GAAM,GAAQ,KAAA,CAAA,GAAIsP,OAAQgC,CAAAA,WAAAA,EAAa,GAAK,EAAA;gBAC1CpJ,SAAW,EAAA;oBAAC,CAACvM,MAAAA;AAAQ,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA;gBAC1B4T,MAAQ,EAAA;AAAC,oBAAA,EAAA;AAAI,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA;aACfD,CAAAA,GAAAA,OAAAA,CAAQgC,aAAa,GAAK,EAAA;gBAC7BpJ,SAAW,EAAA;oBAACzO,IAAK0C,CAAAA,GAAG,CAAC6D,GAAAA,GAAMqP,OAAW1T,CAAAA,GAAAA,MAAAA;oBAAQlC,IAAK2C,CAAAA,GAAG,CAAC4D,GAAAA,GAAMqP,OAAW1T,CAAAA,GAAAA,MAAAA;AAAQ,oBAAA,CAAA;AAAE,iBAAA;gBAClF4T,MAAQ,EAAA;AAAC,oBAAA,EAAA;AAAI,oBAAA,CAAA;AAAGvP,oBAAAA,GAAAA;AAAI,iBAAA;AACtB,aAAA,CAAA;AACD,SAAA,CAAA;AACH,KAAA;IACAuR,IAAAA,EAAAA,SAAAA,KAAMziB,GAAG,EAAA;QACP,IAAM0iB,SAAAA,GAAY1iB,IAAI2iB,IAAI,CAAA;AAC1B,QAAA,IAAMjB,MAAM,EAAE,CAAA;QAEd,IAAK,IAAI1d,IAAI,CAAGA,EAAAA,CAAAA,GAAI0e,UAAU3e,MAAM,GAAG,GAAGC,CAAK,EAAA,CAAA;AAC7C0d,YAAAA,GAAAA,CAAIhf,IAAI,CAACwe,IAAAA,CAAKZ,UAAUA,QAAUoC,EAAAA,SAAS,CAAC1e,CAAE,CAAA,CAAA,CAAA,CAAA;YAC9C0d,GAAIhf,CAAAA,IAAI,CAACuH,IAAAA,CAAKyY,SAAS,CAAC1e,EAAE,EAAE0e,SAAS,CAAC1e,CAAAA,GAAI,CAAE,CAAA,CAAA,CAAA,CAAA;AAC9C,SAAA;QACA0d,GAAIhf,CAAAA,IAAI,CAACwe,IAAAA,CAAKZ,QAAUA,EAAAA,QAAAA,EAAUoC,SAAS,CAACA,SAAAA,CAAU3e,MAAM,GAAG,CAAE,CAAA,CAAA,CAAA,CAAA;QAEjE,OAAO2d,GAAAA,CAAAA;AACT,KAAA;AACF,CAAA,CAAA;AAEAD,MAAM,CAAC,GAAA,CAAI,GAAGA,MAAAA,CAAOmB,IAAI,CAAA;AACzBnB,MAAM,CAAC,GAAA,CAAI,GAAGA,MAAAA,CAAO1F,MAAM,CAAA;AAC3B0F,MAAM,CAAC,GAAA,CAAI,GAAGA,MAAAA,CAAOvF,IAAI,CAAA;AACzBuF,MAAM,CAAC,GAAA,CAAI,GAAGA,MAAAA,CAAOQ,UAAU,CAAA;AAC/BR,MAAM,CAAC,GAAA,CAAI,GAAGA,MAAAA,CAAOO,MAAM,CAAA;AAC3BP,MAAM,CAAC,GAAA,CAAI,GAAGA,MAAAA,CAAOc,KAAK,CAAA;AAC1Bd,MAAM,CAAC,GAAA,CAAI,GAAGA,MAAAA,CAAOM,SAAS,CAAA;AAC9BN,MAAM,CAAC,GAAA,CAAI,GAAGA,MAAAA,CAAOa,aAAa,CAAA;AAClCb,MAAM,CAAC,GAAA,CAAI,GAAGA,MAAAA,CAAOW,IAAI,CAAA;AACzBX,MAAM,CAAC,GAAA,CAAI,GAAGA,MAAAA,CAAOjZ,OAAO,CAAA;AAErB,SAASqa,mBAAqBxa,CAAAA,MAAc,EAAE3H,IAAsC,EAAE0U,OAA8C,EAAA;IACzI,IAAMsM,GAAAA,GAAMD,MAAM,CAAC/gB,IAAAA,CAAKwT,IAAI,IAAIxT,IAAAA,CAAKoiB,KAAK,CAAC,CAACpiB,IAAAA,CAAAA,CAAAA;AAC5C,IAAA,IAAMqiB,MAAMzB,iBAAkBI,CAAAA,GAAAA,CAAAA,CAAAA;IAE9B,OAAOsB,UAAAA,CAAW3a,MAAQ0a,EAAAA,GAAAA,CAAIvW,MAAM,EAAEuW,IAAIpW,OAAO,EAAEyI,OAAQ/N,CAAAA,KAAK,IAAI;AAAC,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAE,KAAA,EAAE+N,OAAQ0D,CAAAA,SAAS,EAAEpY,IAAAA,CAAKoiB,KAAK,CAAA,CAAA;AAC9G,CAAA;AAEA,SAASE,UAAAA,CAAY3a,MAAc,EAAEmE,MAAoB,EAAEG,OAAoB,EAAEtF,KAAW,EAAEyR,SAAiB,EAAEvU,IAAa,EAAA;AAAhCuU,IAAAA,IAAAA,sBAAAA,SAAY,GAAA,KAAA,CAAA;AACxG,IAAA,IAAMmE,QAAWU,GAAAA,QAAAA,CAASjc,MAAM,CAC9B2G,MACA,EAAA;QACEuV,aAAe,EAAA;AACbC,YAAAA,OAAAA,EAAS,IAAInJ,YAAarN,CAAAA,KAAAA,CAAAA;AAC1ByW,YAAAA,OAAAA,EAAS,IAAIpJ,YAAa,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AAC5E,SAAA;QACAqJ,MAAQ,EAAA;YACNG,MAAQ,EAAA,IAAA;YACRF,QAAW,EAAA,iIAAA;YAQXC,MAAS,EAAA,4NAAA;AASX,SAAA;AACF,KAAA,CAAA,CAAA;AAEFhB,IAAAA,QAAAA,CAASkB,UAAU,CAAC,SAAWzU,EAAAA,SAAAA,CAAQmJ,SAAS,CAACxL,KAAAA,CAAAA,CAAAA,CAAAA;AACjD4V,IAAAA,QAAAA,CAASmB,SAAS,CAAC,SAAWvU,EAAAA,SAAAA,CAAQwU,QAAQ,CAAA,CAAA;AAC9CpB,IAAAA,QAAAA,CAASnE,SAAS,GAAGA,SAAAA,CAAAA;AACrBmE,IAAAA,QAAAA,CAASqB,WAAW,GAAG,KAAA,CAAA;AACvBrB,IAAAA,QAAAA,CAASsB,QAAQ,GAAG,KAAA,CAAA;AACpBtB,IAAAA,QAAAA,CAASuB,SAAS,GAAG,IAAA,CAAA;AACrB,IAAA,IAAM9G,QAAWpD,GAAAA,QAAAA,CAAS5S,MAAM,CAC9B2G,MACA,EAAA;QACEkM,UAAY,EAAA;YACVC,UAAY,EAAA;gBACVL,IAAM,EAAA,CAAA;gBACNM,IAAMjI,EAAAA,MAAAA;AACR,aAAA;AACF,SAAA;QACAG,OAAS,EAAA;YACP8H,IAAM9H,EAAAA,OAAAA;AACR,SAAA;AACAmI,QAAAA,IAAAA,EAAMpN,UAAUub,KAAK;AACrBlO,QAAAA,SAAAA,EAAWpI,QAAQ5I,MAAM;AAC3B,KAAA,CAAA,CAAA;IAEF,OAAOsZ,IAAAA,CAAK3b,MAAM,CAChB2G,MACA,EAAA;QACE9D,IAAAA,EAAAA,IAAAA;QACAmT,QAAAA,EAAAA,QAAAA;QACAuF,QAAAA,EAAAA,QAAAA;QACAK,QAAU,EAAA,IAAA;AACZ,KAAA,CAAA,CAAA;AACJ;;AC5VA,IAAQ4F,UAAYzZ,IAAZyZ,CAAAA,OAAAA,CAAAA;;AAyCIC,CAAAA,SAAAA,qBAAAA,EAAAA;;;GAAAA,qBAAAA,KAAAA,qBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAKL,SAASC,qBAAsB1K,IAAU,EAAA;AAC9CA,IAAAA,IAAAA,cAAAA,CAAAA;AAAAA,IAAAA,CAAAA,cAAAA,GAAAA,IAAKhB,CAAAA,QAAQ,KAAbgB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAAA,CAAejQ,OAAO,EAAA,CAAA;AACtBiQ,IAAAA,IAAAA,CAAKjQ,OAAO,CAAC;AAAE8Y,QAAAA,UAAAA,EAAY8B,eAAeC,IAAI;AAAC,KAAA,CAAA,CAAA;AACjD,CAAA;AAEO,SAASC,oBAAqBC,cAAwB,EAAEC,cAAwB,EAAEC,SAAe,EAAExP,IAA2B,EAAA;IACnIwP,SAAUzG,CAAAA,QAAQ,CAAC0G,aAAa,CAACF,cAAAA,CAAAA,CAAAA;AAEjC,IAAA,IAAM/L,QAAW8L,GAAAA,cAAAA,CAAAA;IACjB,IAAMI,iBAAAA,GAAoBF,UAAUnM,aAAa,EAAA,CAAA;AAEjD,IAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAoBrW,MAAOyhB,CAAAA,IAAI,CAACc,cAAAA,CAAeI,aAAa,CAAG,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApDC,QAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;QACTJ,SAAUzG,CAAAA,QAAQ,CAAC8G,WAAW,CAACD,OAAOL,cAAeI,CAAAA,aAAa,CAACC,KAAM,CAAA,CAAA,CAAA;AAC3E,KAAA;AAEA,IAAA,IAAI5P,IAAyC,KAAA,CAAA,EAAA;;AAE3C,QAAA,IAAMa,SAAYpK,GAAAA,IAAAA,CAAKC,GAAG,CAAC8M,SAASsM,YAAY,EAAA,CAAA,CAAA;AAEhD,QAAA,IAAIjP,cAAc,CAAG,EAAA;AACnB,YAAA,IAAIA,SAAc6O,KAAAA,iBAAAA,CAAkBI,YAAY,EAAA,GAAK,CAAG,EAAA;gBACtD,IAAMC,SAAAA,GAAYvM,SAASE,YAAY,EAAA,CAAA;AACvC,gBAAA,IAAMnD,IAAOwP,GAAAA,SAAAA,GAAYC,oBAAqBD,CAAAA,SAAAA,CAAAA,GAAaE,2BAA4BpP,CAAAA,SAAAA,CAAAA,CAAAA;AAEvF6O,gBAAAA,iBAAAA,CAAkBQ,YAAY,CAAC3P,IAAAA,CAAAA,CAAAA;gBAC/BmP,iBAAkBS,CAAAA,YAAY,CAAC5P,IAAAA,CAAK1Q,MAAM,CAAA,CAAA;AAC5C,aAAA;AACF,SAAA;AACF,KAAA,MAAO,IAAImQ,IAAqC,KAAA,CAAA,EAAA;AAC9C,QAAA,IAAIwD,SAASsM,YAAY,EAAA,GAAK,MAAMJ,iBAAkBI,CAAAA,YAAY,KAAK,CAAG,EAAA;AACxE,YAAA,IAAMvP,QAAO6P,gBAAiB5M,CAAAA,QAAAA,CAASsM,YAAY,EAAK,GAAA,CAAA,EAAGtM,SAASE,YAAY,EAAA,CAAA,CAAA;AAEhFgM,YAAAA,iBAAAA,CAAkBQ,YAAY,CAAC3P,KAAAA,CAAAA,CAAAA;YAC/BmP,iBAAkBS,CAAAA,YAAY,CAAC5P,KAAAA,CAAK1Q,MAAM,CAAA,CAAA;AAC5C,SAAA;AACF,KAAA;IAEA,OAAO2f,SAAAA,CAAAA;AACT,CAAA;AAEA,SAASY,gBAAAA,CAAkBC,SAAiB,EAAEC,GAAgB,EAAA;IAC5D,IAAMP,SAAAA,GAAY,IAAIpP,WAAAA,CAAY0P,SAAY,GAAA,CAAA,CAAA,CAAA;AAE9C,IAAA,IAAK,IAAIvgB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIugB,WAAWvgB,CAAK,EAAA,CAAA;AAClC,QAAA,IAAMygB,MAAMzgB,CAAI,GAAA,CAAA,CAAA;AAChB,QAAA,IAAM0gB,OAAO1gB,CAAI,GAAA,CAAA,CAAA;QAEjBigB,SAAS,CAACQ,IAAI,GAAGC,IAAAA,CAAAA;AACjBT,QAAAA,SAAS,CAACQ,GAAAA,GAAM,CAAE,CAAA,GAAG,CAAIC,GAAAA,IAAAA,CAAAA;AACzBT,QAAAA,SAAS,CAACQ,GAAAA,GAAM,CAAE,CAAA,GAAG,CAAIC,GAAAA,IAAAA,CAAAA;AACzBT,QAAAA,SAAS,CAACQ,GAAAA,GAAM,CAAE,CAAA,GAAG,CAAIC,GAAAA,IAAAA,CAAAA;AACzBT,QAAAA,SAAS,CAACQ,GAAAA,GAAM,CAAE,CAAA,GAAG,CAAIC,GAAAA,IAAAA,CAAAA;AACzBT,QAAAA,SAAS,CAACQ,GAAAA,GAAM,CAAE,CAAA,GAAG,CAAIC,GAAAA,IAAAA,CAAAA;AACzBT,QAAAA,SAAS,CAACQ,GAAAA,GAAM,CAAE,CAAA,GAAG,CAAIC,GAAAA,IAAAA,CAAAA;QACzBT,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGC,IAAAA,CAAAA;AACvB,KAAA;IAEA,OAAOT,SAAAA,CAAAA;AACT,CAAA;AAEO,SAASU,mBAAqBtc,CAAAA,MAAc,EAAEqQ,IAAU,EAAErR,KAAgB,EAAA;IAC/E,IAAMqQ,QAAAA,GAAW,IAAIkN,cAAAA,CACnBvc,MACA,EAAA;AACEqP,QAAAA,QAAAA,EAAUgB,KAAKnB,aAAa,EAAA;AAC5BzC,QAAAA,IAAAA,EAAMpN,UAAUub,KAAK;QACrB7U,KAAO,EAAA;AACLqG,YAAAA,IAAAA,EAAM,IAAIoQ,WAAY,CAAA,CAAA,CAAA;AACxB,SAAA;AACF,KAAA,CAAA,CAAA;AACF,IAAA,IAA6BnM,gCAAAA,GAAAA,IAAAA,CAAKuE,QAAQ,CAACc,MAAM,CAAC+G,UAAU,EAApD7G,MAAqBvF,GAAAA,gCAAAA,CAArBuF,MAAQD,EAAAA,QAAAA,GAAatF,gCAAbsF,CAAAA,QAAAA,CAAAA;AAChB,IAAA,IAAM+G,eAAkB,GAAA,QAAA,CAAA,EAAA,EAAKrM,IAAKuE,CAAAA,QAAQ,CAAC+H,KAAK,CAAA,CAAA;AAEhD,IAAA,IAAMC,SAAY,GAAA;AAAC,QAAA;AAAC,YAAA,gBAAA;AAAkB,YAAA,CAAA;AAAE,SAAA;AAAC,KAAA,CAAA;AAOhCvM,IAAAA,IAAAA,UAAAA,CAAAA;AALTqM,IAAAA,eAAAA,CAAgBhH,MAAM,GAAG;QACvBE,MAAAA,EAAAA,MAAAA;QACAD,QAAAA,EAAAA,QAAAA;QACAkH,MAAQD,EAAAA,SAAAA;QACR/G,MAAQ,EAAA,IAAA;QACR3Z,IAAM,EAACmU,CAAAA,CAAAA,UAAAA,GAAAA,KAAKnU,IAAI,KAAA,IAAA,GAATmU,UAAa,GAAA,YAAW,IAAK,YAAA;QACpCyM,WAAa9c,EAAAA,MAAAA,CAAO+c,aAAa,CAACC,KAAK,KAAK,IAAIC,WAAYC,CAAAA,KAAK,GAAGD,WAAAA,CAAYE,KAAK;AACvF,KAAA,CAAA;AAEA,IAAA,IAAMvI,QAAWU,GAAAA,QAAAA,CAASjc,MAAM,CAAC2G,MAAQ0c,EAAAA,eAAAA,CAAAA,CAAAA;AAEzC9H,IAAAA,QAAAA,CAASnE,SAAS,GAAG,IAAA,CAAA;AACrBmE,IAAAA,QAAAA,CAASwI,UAAU,CAAC,eAAA,EAAiB,IAAIvC,OAAAA,CAAQ7b,KAAK,CAAC,CAAA,CAAE,EAAEA,KAAK,CAAC,CAAE,CAAA,EAAEA,KAAK,CAAC,EAAE,EAAE,CAAA,CAAA,CAAA,CAAA;IAE/E,OAAOkc,mBAAAA,CAAoB7K,IAAKhB,CAAAA,QAAQ,EAAEgB,IAAAA,CAAKuE,QAAQ,EAAEI,IAAAA,CAAK3b,MAAM,CAClE2G,MACA,EAAA;QACEqP,QAAAA,EAAAA,QAAAA;QACAuF,QAAAA,EAAAA,QAAAA;QACAK,QAAU,EAAA,IAAA;QACV/Y,IAAMwgB,EAAAA,eAAAA,CAAgBhH,MAAM,CAACxZ,IAAI;AACnC,KAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AACJ,CAAA;AAEA,SAAS4f,4BAA6BpP,SAAiB,EAAA;AACrD,IAAA,IAAMwP,YAAYxP,SAAY,GAAA,CAAA,CAAA;IAC9B,IAAMkP,SAAAA,GAAY,IAAIY,WAAAA,CAAYN,SAAY,GAAA,CAAA,CAAA,CAAA;AAE9C,IAAA,IAAK,IAAIvgB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIugB,WAAWvgB,CAAK,EAAA,CAAA;AAClC,QAAA,IAAMygB,MAAMzgB,CAAI,GAAA,CAAA,CAAA;AAChB,QAAA,IAAMmU,KAAKnU,CAAI,GAAA,CAAA,CAAA;AACf,QAAA,IAAMoU,KAAKD,EAAK,GAAA,CAAA,CAAA;AAChB,QAAA,IAAME,KAAKF,EAAK,GAAA,CAAA,CAAA;QAEhB8L,SAAS,CAACQ,IAAI,GAAGtM,EAAAA,CAAAA;QACjB8L,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGrM,EAAAA,CAAAA;QACrB6L,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGrM,EAAAA,CAAAA;QACrB6L,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGpM,EAAAA,CAAAA;QACrB4L,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGpM,EAAAA,CAAAA;QACrB4L,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGtM,EAAAA,CAAAA;AACvB,KAAA;IAEA,OAAO8L,SAAAA,CAAAA;AACT,CAAA;AAEA,SAASC,qBAAsBM,GAAgB,EAAA;IAC7C,IAAMD,SAAAA,GAAYC,GAAIzgB,CAAAA,MAAM,GAAG,CAAA,CAAA;IAC/B,IAAMkgB,SAAAA,GAAY,IAAIY,WAAAA,CAAYN,SAAY,GAAA,CAAA,CAAA,CAAA;AAE9C,IAAA,IAAK,IAAIvgB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIugB,WAAWvgB,CAAK,EAAA,CAAA;AAClC,QAAA,IAAMygB,MAAMzgB,CAAI,GAAA,CAAA,CAAA;AAChB,QAAA,IAAM0gB,OAAO1gB,CAAI,GAAA,CAAA,CAAA;QACjB,IAAMmU,EAAAA,GAAKqM,GAAG,CAACE,IAAK,CAAA,CAAA;AACpB,QAAA,IAAMtM,EAAKoM,GAAAA,GAAG,CAACE,IAAAA,GAAO,CAAE,CAAA,CAAA;AACxB,QAAA,IAAMrM,EAAKmM,GAAAA,GAAG,CAACE,IAAAA,GAAO,CAAE,CAAA,CAAA;QAExBT,SAAS,CAACQ,IAAI,GAAGtM,EAAAA,CAAAA;QACjB8L,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGrM,EAAAA,CAAAA;QACrB6L,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGrM,EAAAA,CAAAA;QACrB6L,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGpM,EAAAA,CAAAA;QACrB4L,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGpM,EAAAA,CAAAA;QACrB4L,SAAS,CAACQ,GAAM,GAAA,CAAA,CAAE,GAAGtM,EAAAA,CAAAA;AACvB,KAAA;IAEA,OAAO8L,SAAAA,CAAAA;AACT,CAAA;AAWO,IAAA,cAAMW,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,UAAAA,CAAAA,CAAAA;aAAAA,cAGEvc,CAAAA,MAAc,EAAE+M,OAA8B,EAAA;;sCACnD/M,MAAQ,EAAA,QAAA,CAAA;AAAEkM,YAAAA,UAAAA,EAAY,EAAC;AAAMa,SAAAA,EAAAA,OAAAA,CAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AACnC,QAAA,IAAI6O,SAAY7O,GAAAA,OAAAA,CAAQhH,KAAK,GAAGgH,OAAQhH,CAAAA,KAAK,CAACqG,IAAI,GAAGW,OAAAA,CAAQsC,QAAQ,CAACE,YAAY,EAAA,CAAA;AAElF,QAAA,IAAIqM,SAAW,EAAA;;YAEbA,SAAY,GAAA,IAAIA,SAAUtiB,CAAAA,WAAW,CAACsiB,SAAAA,CAAAA,CAAAA;AACxC,SAAA;AACA,QAAA,KAAA,CAAKtX,OAAO,GAAGsX,SAAAA,CAAAA;QACf,KAAK5X,CAAAA,MAAM,GAAG+I,OAAAA,CAAQsC,QAAQ,CAAA;AAC9B,QAAA,KAAA,CAAK3C,SAAS,GAAGK,OAAQL,CAAAA,SAAS,IAAI,CAAA,CAAA;AACtC,QAAA,KAAA,CAAK2Q,SAAS,GAAGtQ,OAAQsQ,CAAAA,SAAS,IAAI,CAAA,CAAA;AACtC,QAAA,KAAA,CAAK5Q,IAAI,GAAGM,OAAQN,CAAAA,IAAI,IAAI,CAAA,CAAA;AAC5B,QAAA,IAAK,IAAMvQ,IAAQ,IAAA,KAAA,CAAK8H,MAAM,CAACkI,UAAU,CAAE;YACzC,KAAKA,CAAAA,UAAU,CAAChQ,IAAAA,CAAK,GAAG,QAAA,CAAA,EAAA,EAAK,MAAK8H,MAAM,CAACkI,UAAU,CAAChQ,IAAK,CAAA,CAAA,CAAA;AAC3D,SAAA;;;AAlBSqgB,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;IAqBX,MAASe,CAAAA,UAiBR,GAjBD,SAASA,UAAAA,GAAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAACC,aAAa,EAAE;YACvB,IAAMlO,QAAAA,GAAW,IAAI,CAACrL,MAAM,CAAA;AAE5BqL,YAAAA,QAAAA,CAASiO,UAAU,EAAA,CAAA;;AAEnB,YAAA,IAAI,CAACE,OAAO,GAAG,IAAI,CAACxZ,MAAM,CAACwZ,OAAO,CAAA;AAClC,YAAA,IAAI,CAACC,WAAW,GAAG,IAAI,CAACzZ,MAAM,CAACyZ,WAAW,CAAA;;;;YAI1C,IAAI,IAAI,CAACnZ,OAAO,EAAE;gBAChB,IAAI,CAACoZ,aAAa,GAAG,IAAI,CAACC,mBAAmB,CAAC,IAAI,CAACrZ,OAAO,CAAA,CAAA;AAC5D,aAAA;AACA,YAAA,IAAI,CAACsZ,KAAK,EAAA,CAAA;YACV,IAAI,CAACC,WAAW,GAAG,IAAA,CAAA;AACrB,SAAA;AACF,KAAA,CAAA;IAEA,MAASC,CAAAA,iBAER,GAFD,SAASA,iBAAAA,GAAAA;AACP,QAAA,OAAO,IAAI,CAAC9Z,MAAM,CAAC8Z,iBAAiB,EAAA,CAAA;AACtC,KAAA,CAAA;IAEA,MAASF,CAAAA,KAIR,GAJD,SAASA,KAAAA,GAAAA;QACP,IAAI,CAAC5Z,MAAM,CAAC4Z,KAAK,EAAA,CAAA;AAEjB,QAAA,UAAA,CAAA,SAAA,CAAMA,KAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACP,KAAA,CAAA;IAEA,MAASxd,CAAAA,OAOR,GAPD,SAASA,OAAAA,GAAAA;;QAEP,IAAI,CAACod,OAAO,GAAG,EAAC,CAAA;QAChB,IAAI,CAACC,WAAW,GAAG,EAAC,CAAA;AACpB,QAAA,UAAA,CAAA,SAAA,CAAMrd,OAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;;QAEL,IAAI,CAAC4D,MAAM,GAAG,IAAA,CAAA;AAChB,KAAA,CAAA;AAzDWuY,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBwB,UA0DnC,CAAA;;ACxOD,IAAMC,oBAAuB,GAAA,cAAA,CAAA;AAC7B,IAAMC,mBAAsB,GAAA,aAAA,CAAA;AAC5B,IAAMC,oBAAuB,GAAA,cAAA,CAAA;AAM7B,IAAQzc,OAAAA,GAA0CL,IAA1CK,CAAAA,OAAAA,EAASJ,OAAiCD,GAAAA,IAAAA,CAAjCC,SAASG,OAAwBJ,GAAAA,IAAAA,CAAxBI,OAAS2c,EAAAA,UAAAA,GAAe/c,IAAf+c,CAAAA,UAAAA,CAAAA;AACnC,IAAMC,SAAY/e,GAAAA,SAAAA,CAAAA;AAGX,IAAA,cAAMgf,iBAAD,SAAL,kBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;AAQXxR,QAAAA,KAAAA,CAAAA,WAAAA,GAA8C,IAAI5R,GAAAA,EAAAA,CAAAA;AAIlDqjB,QAAAA,KAAAA,CAAAA,eAAAA,GAAAA,CAAAA,CAAAA;AAKAC,QAAAA,KAAAA,CAAAA,GAAAA,GAAM/c,QAAQgd,YAAY,EAAA,CAAA;AAC1BC,QAAAA,KAAAA,CAAAA,eAAAA,GAA0B,EAAE,CAAA;AAC5BC,QAAAA,KAAAA,CAAAA,MAAAA,GAAiB,EAAE,CAAA;cACnBrO,IAAoB,GAAA,IAAA,CAAA;AA0hBpB;;;AAGC,MAAA,KAAA,CACOsO,gBAAmB,GAAA,WAAA;YACzB,IAAM/F,IAAAA,GAAO,MAAKA,IAAI,CAAA;YACtB,IAAM/L,WAAAA,GAAc,MAAKA,WAAW,CAAA;YAEpC,IAAIA,WAAAA,CAAYf,IAAI,GAAG,CAAG,EAAA;gBACxB,IAAM8S,YAAAA,GAAe/R,YAAYyN,IAAI,EAAA,CAAA;gBACrC,IAAInD,SAAAA,CAAAA;gBAEJA,SAAY,GAAA,KAAA,CAAK7H,SAAS,CAACI,cAAc,EAAA,CAAA;gBACzC,IAAMmP,UAAAA,GAAa,MAAKA,UAAU,CAAA;AAElC,gBAAA,IAAIA,UAAY,EAAA;;AAEd,oBAAA,IAAMC,WAAW,IAAIzd,OAAAA,EAAAA,CAAAA;AACrB,oBAAA,IAAM0d,YAAY,IAAIZ,UAAAA,EAAAA,CAAAA;AACtB,oBAAA,IAAMa,QAAW,GAAA,IAAI3d,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;oBACnC,IAAM4d,YAAAA,GAAe,MAAKrS,OAAO,CAAA;;AAGjC,oBAAA,IAAI,MAAK0R,eAAe,IAAA,CAAA,IAA6BW,YAAiB9d,KAAAA,YAAAA,CAAaoM,KAAK,EAAE;AACxF,wBAAA,KAAA,CAAKsR,UAAU,CAACvP,SAAS,CAAC4P,cAAc,CAACJ,QAAUC,EAAAA,SAAAA,CAAAA,CAAAA;qBAC9C,MAAA;AACL,wBAAA,KAAA,CAAKF,UAAU,CAACvP,SAAS,CAAC4P,cAAc,CAACJ,QAAAA,CAAAA,CAAAA;AAC3C,qBAAA;oBAEA,IAAMK,eAAAA,GAAkB,IAAIzQ,SAAU,CAAA;wBACpChF,QAAUoV,EAAAA,QAAAA;wBACVM,IAAML,EAAAA,SAAAA;wBACNxR,KAAOyR,EAAAA,QAAAA;wBACPrQ,KAAO,EAAA,IAAA;AACT,qBAAA,CAAA,CAAA;;AAGA,oBAAA,IACEsQ,iBAAiB9d,YAAawI,CAAAA,QAAQ,IACtCsV,YAAiB9d,KAAAA,YAAAA,CAAaoM,KAAK,IACnC0R,YAAAA,KAAiB9d,aAAakM,WAAW,IACzC4R,iBAAiB9d,YAAagM,CAAAA,MAAM,IACpC8R,YAAiB9d,KAAAA,YAAAA,CAAaiM,KAAK,EACnC;AACA,wBAAA,IAAMD,MAASyL,GAAAA,IAAAA,CAAKyG,WAAW,CAAElS,MAAM,CAAA;wBACvC,IAAMmS,SAAAA,GAAYnS,MAAOzD,CAAAA,QAAQ,IAAI;AAAC,4BAAA,CAAA;AAAG,4BAAA,CAAA;AAAG,4BAAA,CAAA;AAAE,yBAAA,CAAA;wBAC9C,IAAM6V,OAAAA,GAAUJ,gBAAgBzV,QAAQ,CAAA;wBACxC,IAAM8V,MAAAA,GAASlf,4BAA4Bgf,SAAWC,EAAAA,OAAAA,CAAAA,CAAAA;wBAEtDJ,eAAgBM,CAAAA,WAAW,CAACD,MAAOza,CAAAA,CAAC,EAAEya,MAAOrhB,CAAAA,CAAC,EAAEqhB,MAAAA,CAAO/a,CAAC,CAAA,CAAA;AACxD0S,wBAAAA,SAAAA,GAAYgI,gBAAgBzP,cAAc,EAAA,CAAA;qBACrC,MAAA;AACLyH,wBAAAA,SAAAA,GAAYgI,gBAAgBzP,cAAc,EAAA,CAAA;AAC5C,qBAAA;AACF,iBAAA;;AAGA,gBAAA,IAAMtX,IAAOwgB,GAAAA,IAAAA,CAAAA;gBAEb,OAAO;AACL/M,oBAAAA,IAAAA,EAAM6T,YAAYC,MAAM;AACxBC,oBAAAA,SAAAA,EAAU,MAAKC,cAAc;AAC7B;;;;;AAKC,YACDC,OAAAA,EAAAA,SAAAA,OAASC,CAAAA,GAAQ,EAAE7I,aAAsB,EAAA;;AAK5Bxf,4BAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;4BACT,IAAMsoB,QAAAA,GAAWnT,WAAY1R,CAAAA,GAAG,CAACzD,GAAAA,CAAAA,CAAAA;AACjC,4BAAA,IAAMyW,SAAS,IAAI9M,OAAAA,EAAAA,CAAAA;AACnB,4BAAA,IAAM4e,cAAc,IAAI5e,OAAAA,EAAAA,CAAAA;AAExB,4BAAA,IAAI2e,CAAAA,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAUnU,CAAAA,IAAI,MAAKtK,YAAasQ,CAAAA,GAAG,IAAImO,CAAAA,4BAAAA,QAAUnU,CAAAA,IAAI,MAAKtK,YAAAA,CAAa6M,MAAM,EAAE;gCACjF,IAAI4R,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAU7R,CAAAA,MAAM,EAAE;AACpBA,oCAAAA,MAAAA,CAAO+R,QAAQ,CAACF,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAU7R,MAAM,CAAA,CAAA;AAClC,iCAAA;gCACAgJ,SAAUlH,CAAAA,YAAY,CAAC9B,MAAQ8R,EAAAA,WAAAA,CAAAA,CAAAA;AACjC,6BAAA;AACA,4BAAA,IAAIvW,WAAAA,KAAAA,CAAAA,CAAAA;4BAEJ,OAAQsW,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAUnU,IAAI;AACpB,gCAAA,KAAKtK,aAAasQ,GAAG;AACnB,oCAAA;AACE,wCAAA,IAAMsO,cAAcH,QAASlU,CAAAA,IAAI,CAACpL,KAAK,EAAA,CAAGK,QAAQ,CAAC,GAAA,CAAA,CAAA;AACnD,wCAAA,IAAMqf,MAASjS,GAAAA,MAAAA,CAAOzN,KAAK,EAAA,CAAGQ,GAAG,CAACif,WAAAA,CAAAA,CAAAA;AAClC,wCAAA,IAAME,MAASlS,GAAAA,MAAAA,CAAOzN,KAAK,EAAA,CAAGC,QAAQ,CAACwf,WAAAA,CAAAA,CAAAA;wCAEvCzW,QAAWqW,GAAAA,GAAAA,CAAIO,YAAY,CAAC;4CAAEza,GAAKwa,EAAAA,MAAAA;4CAAQ3a,GAAK0a,EAAAA,MAAAA;AAAO,yCAAA,EAAG,IAAI/e,OAAAA,EAAAA,CAAAA,CAAAA;AAChE,qCAAA;AAEA,oCAAA,MAAA;AACF,gCAAA,KAAKE,aAAa6M,MAAM;;AAGtB,oCAAA,IAAImS,cAAe3T,CAAAA,OAAO,KAAKzL,YAAAA,CAAasM,UAAU,EAAE;;AAEtD,wCAAA,IAAM+S,WAAWpoB,IAAKinB,CAAAA,WAAW,CAAElS,MAAM,CAACsT,aAAa,EAAA,CAAA;wCACvD,IAAM7W,GAAAA,GAAM;AACZ,wCAAA,IAAM8W,cAActoB,IAAKinB,CAAAA,WAAW,CAAEsB,QAAQ,CAACC,QAAQ,EAAA,CAAA;AACvD,wCAAA,IAAMC,eAAezoB,IAAKinB,CAAAA,WAAW,CAAEsB,QAAQ,CAACG,SAAS,EAAA,CAAA;wCACzD,IAAMre,QAAAA,GAAW;wCACjB,IAAM+D,KAAAA,GAAQ,IAAIlE,IAAK2H,CAAAA,GAAG,CAACL,GAAMtH,GAAAA,IAAAA,CAAKmD,EAAE,GAAG,GAAOhD,CAAAA,GAAAA,QAAAA,CAAAA;AAClD,wCAAA,IAAMoH,SAAS6W,WAAcG,GAAAA,YAAAA,CAAAA;AAC7B,wCAAA,IAAMpa,SAASD,KAAQqD,GAAAA,MAAAA,CAAAA;AACvB,wCAAA,IAAMkX,OAAU1d,GAAAA,4BAAAA,CAA6B,CAACmD,KAAAA,GAAQ,CAAGA,EAAAA,KAAAA,GAAQ,CAAG,EAAA,CAACC,MAAS,GAAA,CAAA,EAAGA,MAAS,GAAA,CAAA,EAAG,CAAChE,QAAUA,EAAAA,QAAAA,CAAAA,CAAAA;;AAGxG,wCAAA,IAAMue,kBAAkB5oB,IAAKinB,CAAAA,WAAW,CAAElS,MAAM,CAAC8T,oBAAoB,EAAA,CAAA;wCACrE,IAAMC,cAAAA,GAAiB,IAAIxS,SAAU,CAAA;4CACnCC,KAAO,EAAA,IAAA;AACT,yCAAA,CAAA,CAAA;AAEAuS,wCAAAA,cAAAA,CAAeC,eAAe,CAAChK,SAAAA,CAAAA,CAAAA;wCAC/B,IAAM2B,GAAAA,GAAMoI,eAAexX,QAAQ,CAAA;AACnC,wCAAA,IAAM0X,UAAUb,cAAezU,CAAAA,IAAI,CAACsV,OAAO,IAAI;AAE/CF,wCAAAA,cAAAA,CAAezB,WAAW,CAAE3G,GAAI/T,CAAAA,CAAC,GAAGyB,KAAQ,GAAA,CAAA,GAAK4a,OAAS,EAACtI,IAAI3a,CAAC,GAAGsI,SAAS,CAAK2a,GAAAA,OAAAA,EAAStI,IAAIrU,CAAC,CAAA,CAAA;wCAC/F,IAAM4c,SAAAA,GAAYH,eAAexR,cAAc,EAAA,CAAA;AAC/C,wCAAA,IAAM4R,SAAYN,GAAAA,eAAAA,CAAgBtgB,KAAK,EAAA,CAAGK,QAAQ,CAACsgB,SAAAA,CAAAA,CAAAA;wCAEnDC,SAAUrR,CAAAA,YAAY,CAAC9B,MAAQ8R,EAAAA,WAAAA,CAAAA,CAAAA;;AAG/B,wCAAA,IAAMsB,MAASR,GAAAA,OAAAA,CAAQrgB,KAAK,EAAA,CAAGK,QAAQ,CAACyf,QAAAA,CAAAA,CAAAA;AACxC,wCAAA,IAAMjJ,OAAUgK,GAAAA,MAAAA,CAAO7gB,KAAK,EAAA,CAAGK,QAAQ,CAACugB,SAAAA,CAAAA,CAAAA;AACxC,wCAAA,IAAME,YAAejK,GAAAA,OAAAA,CAAQtH,YAAY,CAAC9B,QAAQ,IAAI9M,OAAAA,EAAAA,CAAAA,CAAAA;;;;wCAKtD,IAAMmD,MAAAA,GAASwb,SAASxb,MAAM,CAAA;AAC9B,wCAAA,IAAM4S,KAAK,IAAI/V,OAAAA,CACbggB,UAAUhK,QAAQ,CAAC,EAAE,EACrBgK,SAAAA,CAAUhK,QAAQ,CAAC,EAAE,EACrBgK,SAAAA,CAAUhK,QAAQ,CAAC,CAAA,CAAE,EACrBxW,SAAS,EAAA,CAAA;AAEX,wCAAA,IAAMc,KAAQyV,GAAAA,EAAAA,CAAG1W,KAAK,EAAA,CAAGK,QAAQ,CAACyD,MAAAA,CAAAA,CAAAA;AAElC7C,wCAAAA,KAAAA,CAAMT,GAAG,CAACiN,MAAAA,CAAAA,CAAAA;AAEV,wCAAA,IAAMsT,WAAclK,GAAAA,OAAAA,CAAQtH,YAAY,CAACtO,OAAO,IAAIN,OAAAA,EAAAA,CAAAA,CAAAA;;;;wCAKpD,IAAMqgB,aAAAA,GAAgBF,aAAaxe,SAAS,EAAA,CAAA;wCAC5C,IAAM2e,YAAAA,GAAeF,YAAYze,SAAS,EAAA,CAAA;wCAC1C,IAAM6U,YAAAA,GAAe6J,aAAcjf,CAAAA,QAAQ,CAACkf,YAAAA,CAAAA,CAAAA;AAE5C,wCAAA,IAAIzK,aAAczU,CAAAA,QAAQ,CAACif,aAAAA,CAAAA,GAAiB7J,eAAe,GAAK,EAAA;4CAC9DnO,QAAWuW,GAAAA,WAAAA,CAAAA;AACb,yCAAA;qCACK,MAAA;wCACLvW,QAAWqW,GAAAA,GAAAA,CAAI6B,eAAe,CAAC;4CAAEzT,MAAQ8R,EAAAA,WAAAA;AAAazb,4CAAAA,MAAAA,EAAQwb,SAASxb,MAAM;AAAC,yCAAA,EAAG,IAAInD,OAAAA,EAAAA,CAAAA,CAAAA;AACvF,qCAAA;AAEA,oCAAA,MAAA;AACF,gCAAA,KAAKE,aAAayN,QAAQ;AAAE,oCAAA;AAC1B,wCAAA,IAAQC,SAA+B+Q,GAAAA,QAAAA,CAA/B/Q,SAAWG,EAAAA,eAAAA,GAAoB4Q,QAApB5Q,CAAAA,eAAAA,CAAAA;AACnB,wCAAA,IAAMyS,eAA0B,EAAE,CAAA;AAClC,wCAAA,IAAIC,cAAAA,KAAAA,CAAAA,CAAAA;AAEJ,wCAAA,IAAK,IAAIhZ,CAAI,GAAA,CAAA,EAAGA,IAAImG,SAAUvT,CAAAA,MAAM,EAAEoN,CAAK,EAAA,CAAA;4CACzC,IAAMkG,QAAAA,GAAWC,SAAS,CAACnG,CAAE,CAAA,CAAA;AAC7B,4CAAA,IAAMiZ,aAA8B,GAAA;AAClCjS,gDAAAA,EAAAA,EAAIqH,UAAUlH,YAAY,CAACjB,QAASc,CAAAA,EAAE,EAAa,IAAIzO,OAAAA,EAAAA,CAAAA;AACvD0O,gDAAAA,EAAAA,EAAIoH,UAAUlH,YAAY,CAACjB,QAASe,CAAAA,EAAE,EAAa,IAAI1O,OAAAA,EAAAA,CAAAA;AACvD2O,gDAAAA,EAAAA,EAAImH,UAAUlH,YAAY,CAACjB,QAASgB,CAAAA,EAAE,EAAa,IAAI3O,OAAAA,EAAAA,CAAAA;AACzD,6CAAA,CAAA;AAEAygB,4CAAAA,WAAAA,GAAc/B,GAAIiC,CAAAA,iBAAiB,CAACD,aAAAA,EAAe,IAAI1gB,OAAW+N,EAAAA,EAAAA,eAAAA,CAAAA,CAAAA;AAClE,4CAAA,IAAI0S,WAAa,EAAA;AACfD,gDAAAA,YAAAA,CAAaxnB,IAAI,CAACynB,WAAAA,CAAAA,CAAAA;AACpB,6CAAA;AACF,yCAAA;;wCAEA,IAAID,YAAAA,CAAanmB,MAAM,GAAG,CAAG,EAAA;AAC3B,4CAAA,IAAIumB,eAAAA,KAAAA,CAAAA,CAAAA;4CAEJJ,YAAa9I,CAAAA,OAAO,CAACH,SAAAA,IAAAA,EAAAA;AACnB,gDAAA,IAAMnW,QAAWsd,GAAAA,GAAAA,CAAImC,MAAM,CAACC,eAAe,CAACvJ,IAAAA,CAAAA,CAAAA;gDAE5C,IAAI,CAACqJ,YAAgBxf,IAAAA,QAAAA,GAAWwf,YAAc,EAAA;oDAC5CA,YAAexf,GAAAA,QAAAA,CAAAA;oDACfiH,QAAWkP,GAAAA,IAAAA,CAAAA;AACb,iDAAA;AACF,6CAAA,CAAA,CAAA;AACF,yCAAA;AAEA,wCAAA,MAAA;AACF,qCAAA;AACA,gCAAA,KAAKrX,aAAaK,IAAI;AAAE,oCAAA;AACtB,wCAAA,IAAQuC,MAAkB6b,GAAAA,QAAAA,CAAlB7b,MAAQqC,EAAAA,MAAAA,GAAUwZ,QAAVxZ,CAAAA,KAAAA,CAAAA;wCAEhBkD,QAAWsN,GAAAA,gBAAAA,CAAiB,IAAI3V,OAAAA,EAAAA,EAAW6V,aAAe/S,EAAAA,MAAAA,EAAQqC,MAAQ,GAAA,CAAA,EAAG2Q,SAAW/e,EAAAA,IAAAA,CAAKinB,WAAW,CAAElS,MAAM,CAAA,CAAA;AAEhH,wCAAA,MAAA;AACF,qCAAA;AAGF,6BAAA;AACA,4BAAA,IAAIzD,QAAU,EAAA;AACZ0Y,gCAAAA,YAAAA,CAAa/nB,IAAI,CAACqP,QAAAA,CAAAA,CAAAA;;gCAElB,IAAI6W,cAAAA,CAAe8B,WAAW,EAAE;AAC9B,oCAAA,IAAM5f,SAAWsd,GAAAA,GAAAA,CAAImC,MAAM,CAACC,eAAe,CAACzY,QAAAA,CAAAA,CAAAA;oCAC5C,IAAMuY,aAAAA,GAAelC,IAAImC,MAAM,CAACC,eAAe,CAAC5B,cAAAA,CAAe8B,WAAW,CAAC3Y,QAAQ,CAAA,CAAA;AAEnF,oCAAA,IAAIjH,YAAWwf,aAAc,EAAA;wCAC3B1B,cAAe8B,CAAAA,WAAW,CAAC3qB,GAAG,GAAGA,GAAAA,CAAAA;wCACjC6oB,cAAe8B,CAAAA,WAAW,CAAC3Y,QAAQ,GAAGA,QAAAA,CAAAA;AACxC,qCAAA;iCACK,MAAA;AACL6W,oCAAAA,cAAAA,CAAe8B,WAAW,GAAG;wCAC3B3qB,GAAAA,EAAAA,GAAAA;wCACAgS,QAAAA,EAAAA,QAAAA;AACF,qCAAA,CAAA;AACF,iCAAA;AACF,6BAAA;AACF,yBAAA,CAAA;AA7JA,wBAAA,IAAM0Y,eAAe,EAAE,CAAA;wBACvB,IAAM7B,cAAAA,GAAiBnoB,IAAKkqB,CAAAA,YAAY,CApnBrCjE,cAAAA,CAAAA,CAAAA;AAsnBHkC,wBAAAA,cAAAA,CAAe8B,WAAW,GAAG5pB,SAAAA,CAAAA;wBAC7B,IAAkBmmB,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,YAAAA,CAAAA,EAAAA,KAAAA,EAAAA,CAAAA,CAAAA,KAAAA,GAAAA,SAAAA,EAAAA,EAAAA,IAAAA,EAAAA,KAAAA,EAAAA,CAAAA;wBA0JlB,IAAIwD,YAAAA,CAAa1mB,MAAM,KAAK,CAAG,EAAA;AAC7B6kB,4BAAAA,cAAAA,CAAe8B,WAAW,GAAG5pB,SAAAA,CAAAA;AAC/B,yBAAA;wBAEA,OAAO2pB,YAAAA,CAAAA;AACT,qBAAA;oBACAG,QAAUC,EAAAA,IAAAA,CAAKC,gBAAgB,CAACC,MAAM;AACxC,iBAAA,CAAA;AACF,aAAA;AACF,SAAA,CAAA;;;AA1xBWrE,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;IAsBX,MAASsE,CAAAA,OA2ER,GA3ED,SAASA,OAAAA,GAAAA;AAEY,QAAA,IAAA,sBAAA,CAAA;AADnB,QAAA,IAAI,CAAC/J,IAAI,CAAC+F,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAA;AAC/B,QAAA,IAAA,4BAAA,CAAA;AAAnB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmB,CAAA,4BAAA,GAAA,CAAA,sBAAA,GAAA,IAAI,CAAC/F,IAAI,CAACyG,WAAW,KAAA,IAAA,GAAA,KAAA,CAAA,GAArB,sBAAuBuD,CAAAA,KAAK,KAA5B,IAAA,GAAA,4BAAA,GAAgC,EAAE,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5ChK,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAIA,KAAKiK,EAAE,KAAK,IAAI,CAAC3lB,MAAM,EAAE;gBAC3B,IAAI,CAAC2hB,UAAU,GAAGjG,IAAAA,CAAAA;AACpB,aAAA;AACF,SAAA;QACA,IAAMiG,UAAAA,GAAa,IAAI,CAACA,UAAU,CAAA;AAElC,QAAA,IAAI,CAACA,UAAY,EAAA;AAEf,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAMQ,WAAc,GAAA,IAAI,CAACzG,IAAI,CAACyG,WAAW,CAAA;AAEpByD,QAAAA,IAAAA,wBAAAA,CAAAA;AAArB,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAqBA,CAAAA,wBAAAA,GAAAA,YAAAA,CAAaC,UAAU,EAAvBD,KAAAA,IAAAA,GAAAA,wBAAAA,GAA6B,EAAE,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA3CE,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,MAAAA,CAAO9mB,IAAI,KAAK,cAAgB,EAAA;gBAClC,IAAI,CAAC+mB,WAAW,GAAGD,MAAAA,CAAAA;AACrB,aAAA;AACF,SAAA;QACA,IAAMC,WAAAA,GAAc,IAAI,CAACA,WAAW,CAAA;;AAGpC,QAAA,IAAIpE,UAAWhT,CAAAA,IAAI,KAAK,GAAA,IAAO,CAACoX,WAAa,EAAA;AAC3C,YAAA,OAAA;AACF,SAAA;QACA,IAAMhE,YAAAA,GAAe,IAAI,CAACrS,OAAO,CAAA;QAEjC,OAAQqS,YAAAA;AACN,YAAA,KAAK9d,aAAa+hB,eAAe;gBAC/B,IAAI,CAACC,qBAAqB,CAACtE,UAAAA,CAAAA,CAAAA;AAE3B,gBAAA,MAAA;AACF,YAAA,KAAK1d,aAAaiiB,cAAc;gBAC9B,IAAI,CAACC,sBAAsB,GAAG,IAAA,CAAA;gBAC9B,IAAI,CAACC,kBAAkB,CAACzE,UAAAA,CAAAA,CAAAA;AAExB,gBAAA,MAAA;AACF,YAAA,KAAK1d,aAAa0Q,GAAG,CAAA;AACrB,YAAA,KAAK1Q,aAAaiN,MAAM,CAAA;AACxB,YAAA,KAAKjN,aAAawS,QAAQ,CAAA;AAC1B,YAAA,KAAKxS,aAAaqP,IAAI,CAAA;AACtB,YAAA,KAAKrP,aAAa6M,KAAK,CAAA;AACvB,YAAA,KAAK7M,aAAa8L,MAAM,CAAA;AACxB,YAAA,KAAK9L,aAAa8S,OAAO,CAAA;AACzB,YAAA,KAAK9S,aAAagT,cAAc,CAAA;AAChC,YAAA,KAAKhT,aAAaoT,UAAU,CAAA;AAC5B,YAAA,KAAKpT,aAAakT,SAAS,CAAA;AAC3B,YAAA,KAAKlT,aAAasT,SAAS;gBACzB,IAAI,CAAC8O,kBAAkB,CAAC1E,UAAYI,EAAAA,YAAAA,CAAAA,CAAAA;AAEpC,gBAAA,MAAA;AACF,YAAA,KAAK9d,aAAagM,MAAM,CAAA;AACxB,YAAA,KAAKhM,aAAaiM,KAAK;AACrB,gBAAA,IAAI,CAACmW,kBAAkB,CAAC1E,UAAAA,EAAYI,YAAcuE,EAAAA,YAAAA,CAAAA,CAAAA;AAElD,gBAAA,MAAA;AACF,YAAA,KAAKriB,aAAawI,QAAQ,CAAA;AAC1B,YAAA,KAAKxI,aAAaoM,KAAK,CAAA;AACvB,YAAA,KAAKpM,aAAakM,WAAW;gBAC3B,IAAI,CAACoW,wBAAwB,CAAC5E,UAAYI,EAAAA,YAAAA,CAAAA,CAAAA;AAE1C,gBAAA,MAAA;AACF,YAAA,KAAK9d,aAAasM,UAAU;AAC1B,gBAAA,IAAI,CAACgW,wBAAwB,CAAC5E,UAAAA,EAAYI,YAAcuE,EAAAA,YAAAA,CAAAA,CAAAA;AAExD,gBAAA,MAAA;AACF,YAAA,KAAKriB,aAAauiB,WAAW;gBAC3B,IAAI,CAACC,wBAAwB,CAAC9E,UAAAA,CAAAA,CAAAA;AAE9B,gBAAA,MAAA;AAGJ,SAAA;QACAQ,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAauE,UAAU,CAACC,UAAU,CAACxpB,IAAI,CAAC,IAAI,CAACue,IAAI,CAAA,CAAA;AACnD,KAAA,CAAA;IAEA,MAASkL,CAAAA,QAiBR,GAjBD,SAASA,QAAAA,GAAAA;AACP,QAAA,kBAAA,CAAA,SAAA,CAAMA,QAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAClL,IAAI,CAACyG,WAAW,EAAE;AAC1B,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAM0E,cAAc,IAAI,CAACnL,IAAI,CAACyG,WAAW,CAAC0E,WAAW,CAAA;QAErD,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACrF,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAArBrO,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,IAAAA,CAAKnU,IAAI,KAAKyP,YAAa+I,CAAAA,SAAS,CAAC7Z,QAAQ,EAAMwV,IAAAA,IAAAA,CAAKnU,IAAI,KAAK,KAAO,EAAA;AAC1E,gBAAA,IAAI,CAAC8nB,kBAAkB,CAACD,WAAAA,CAAAA,CAAaE,OAAO,CAAC5T,IAAAA,CAAAA,CAAAA;AAC/C,aAAA,MAAO,IAAIA,IAAAA,CAAKnU,IAAI,KAAK,aAAiBmU,IAAAA,IAAAA,CAAKnU,IAAI,KAAK,OAAWmU,IAAAA,IAAAA,CAAKnU,IAAI,KAAK,UAAY,EAAA;AAC3F,gBAAA,IAAI,CAACgoB,mBAAmB,CAACH,WAAAA,CAAAA,CAAaE,OAAO,CAAC5T,IAAAA,CAAAA,CAAAA;aACzC,MAAA;AACL,gBAAA,IAAI,CAAC8T,mBAAmB,CAACJ,WAAAA,CAAAA,CAAaE,OAAO,CAAC5T,IAAAA,CAAAA,CAAAA;AAChD,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA,MAAS+T,CAAAA,SAiBR,GAjBD,SAASA,SAAAA,GAAAA;AACP,QAAA,kBAAA,CAAA,SAAA,CAAMA,SAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAACxL,IAAI,CAACyG,WAAW,EAAE;AAC1B,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAM0E,cAAc,IAAI,CAACnL,IAAI,CAACyG,WAAW,CAAC0E,WAAW,CAAA;QAErD,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACrF,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAArBrO,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,IAAAA,CAAKnU,IAAI,KAAKyP,YAAa+I,CAAAA,SAAS,CAAC7Z,QAAQ,EAAMwV,IAAAA,IAAAA,CAAKnU,IAAI,KAAK,KAAO,EAAA;AAC1E,gBAAA,IAAI,CAAC8nB,kBAAkB,CAACD,WAAAA,CAAAA,CAAaM,UAAU,CAAChU,IAAAA,CAAAA,CAAAA;AAClD,aAAA,MAAO,IAAIA,IAAAA,CAAKnU,IAAI,KAAK,aAAiBmU,IAAAA,IAAAA,CAAKnU,IAAI,KAAK,OAAWmU,IAAAA,IAAAA,CAAKnU,IAAI,KAAK,UAAY,EAAA;AAC3F,gBAAA,IAAI,CAACgoB,mBAAmB,CAACH,WAAAA,CAAAA,CAAaM,UAAU,CAAChU,IAAAA,CAAAA,CAAAA;aAC5C,MAAA;AACL,gBAAA,IAAI,CAAC8T,mBAAmB,CAACJ,WAAAA,CAAAA,CAAaM,UAAU,CAAChU,IAAAA,CAAAA,CAAAA;AACnD,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASiU,QAER,GAFD,SAASA,QAAAA,CAAUC,EAAU,EAAA;AAC3B,QAAA,IAAI,CAACC,gBAAgB,EAAA,CAAA;AACvB,KAAA,CAAA;IAEA,MAASC,CAAAA,SAoDR,GApDD,SAASA,SAAAA,GAAAA;;QACP,IAAMC,SAAAA,GAAY,IAAI,CAACrU,IAAI,CAAA;AAC3B,QAAA,IAAMgP,WAAc,GAAA,IAAI,CAACzG,IAAI,CAACyG,WAAW,CAAA;AAEzC,QAAA,IAAI,CAACA,WAAa,EAAA;AAChB,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAIqF,SAAa,IAAA,CAACA,SAAUC,CAAAA,WAAW,EAAE;AACvCD,YAAAA,SAAAA,CAAUtkB,OAAO,EAAA,CAAA;YAEjB,IAAIskB,SAAAA,CAAUxoB,IAAI,KAAKyP,YAAa+I,CAAAA,SAAS,CAAC7Z,QAAQ,EAAM6pB,IAAAA,SAAAA,CAAUxoB,IAAI,KAAK,KAAO,EAAA;AACpF,gBAAA,IAAI,CAAC8nB,kBAAkB,CAAC3E,YAAY0E,WAAW,CAAA,CAAEM,UAAU,CAACK,SAAAA,CAAAA,CAAAA;aACvD,MAAA;AACL,gBAAA,IAAI,CAACP,mBAAmB,CAAC9E,YAAY0E,WAAW,CAAA,CAAEM,UAAU,CAACK,SAAAA,CAAAA,CAAAA;AAC/D,aAAA;AACF,SAAA;QACA,IAAI,IAAI,CAACE,QAAQ,EAAE;YACjB,IAAqB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACA,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxBvU,gBAAAA,IAAAA,WAAAA,GAAAA,KAAAA,CAAAA,KAAAA,EAAAA,IAAAA,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,CAAAA;gBACV,IAAI,CAACA,IAAKsU,CAAAA,WAAW,EAAE;AACrBtU,oBAAAA,IAAAA,CAAKjQ,OAAO,EAAA,CAAA;oBACZ,IAAIiQ,IAAAA,CAAKnU,IAAI,KAAK,aAAiBmU,IAAAA,IAAAA,CAAKnU,IAAI,KAAK,OAAWmU,IAAAA,IAAAA,CAAKnU,IAAI,KAAK,UAAY,EAAA;AACpF,wBAAA,IAAI,CAACgoB,mBAAmB,CAAC7E,YAAY0E,WAAW,CAAA,CAAEM,UAAU,CAAChU,IAAAA,CAAAA,CAAAA;qBACxD,MAAA;AACL,wBAAA,IAAI,CAAC8T,mBAAmB,CAAC9E,YAAY0E,WAAW,CAAA,CAAEM,UAAU,CAAChU,IAAAA,CAAAA,CAAAA;AAC/D,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;QAEA,IAAI,IAAI,IAAI,IAAI,CAACoO,eAAe,CAAC/iB,MAAM,GAAG,CAAG,EAAA;AAC3C,YAAA,IAAI,CAAC+iB,eAAe,CAAC1F,OAAO,CAAC1I,SAAAA,IAAAA,EAAAA;gBAC3B,IAAI,CAACA,IAAKsU,CAAAA,WAAW,EAAE;oBACrB5J,oBAAqB1K,CAAAA,IAAAA,CAAAA,CAAAA;AACrB,oBAAA,KAAA,CAAK8T,mBAAmB,CAAC9E,WAAAA,CAAY0E,WAAW,CAAA,CAAEM,UAAU,CAAChU,IAAAA,CAAAA,CAAAA;AAC/D,iBAAA;AACF,aAAA,CAAA,CAAA;SACK,MAAA;YACL,IAAMwU,aAAAA,GAAgB,IAAI,CAACA,aAAa,CAAA;AAExC,YAAA,IAAIA,aAAiB,IAAA,CAACA,aAAcF,CAAAA,WAAW,EAAE;gBAC/C5J,oBAAqB8J,CAAAA,aAAAA,CAAAA,CAAAA;AACrB,gBAAA,IAAI,CAACV,mBAAmB,CAAC9E,YAAY0E,WAAW,CAAA,CAAEM,UAAU,CAACQ,aAAAA,CAAAA,CAAAA;AAC/D,aAAA;AACF,SAAA;AAEA,QAAA,IAAMrpB,GAAiB6jB,GAAAA,WAAAA,CAAYuE,UAAU,CAACC,UAAU,CAAA;AACxD,QAAA,IAAM9d,QAAQvK,GAAIV,CAAAA,OAAO,CAAC,IAAI,CAAC8d,IAAI,CAAA,CAAA;QAEnC,IAAI7S,KAAAA,GAAQ,CAAC,CAAG,EAAA;YACdvK,GAAIspB,CAAAA,MAAM,CAAC/e,KAAO,EAAA,CAAA,CAAA,CAAA;AACpB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASgf,MAeR,GAfD,SAASA,MAAAA,CAAQpE,QAAkB,EAAA;;AAEjC,QAAA,IAAI,IAAI,CAAC/T,OAAO,KAAKzL,YAAAA,CAAaiiB,cAAc,EAAE;AAChD,YAAA,IAAI,IAAI,CAACyB,aAAa,IAAI,IAAI,CAAChG,UAAU,EAAE;AAE3B,gBAAA,IAAA,6BAAA,CAAA;;gBAAd,IAAMmG,KAAAA,GAAAA,CAAQ,6BAAA,GAAA,IAAI,CAACnG,UAAU,CAACyD,YAAY,CAAC2C,iBAA7B,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,6BAAA,CAAiDC,OAAO,CAAA;gBACtE,IAAMxG,MAAAA,GAASsG,MAAMG,SAAS,CAAA;gBAC9B,IAAM1G,eAAAA,GAAkB,IAAI,CAACA,eAAe,CAAA;AAE5C,gBAAA,IAAIC,CAAAA,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAQhjB,CAAAA,MAAM,IAAG,CAAG,EAAA;oBACtB+iB,eAAe,CAAC,EAAE,CAAC2G,WAAW,CAAClF,QAAQ,CAAC8E,MAAMza,MAAM,CAAA,CAAA;oBACpD2Q,mBAAoBwD,CAAAA,MAAM,CAAC,CAAE,CAAA,CAACrP,QAAQ,CAACA,QAAQ,EAAEqP,MAAM,CAAC,EAAE,CAAC9J,QAAQ,CAACyQ,cAAc,EAAE5G,eAAe,CAAC,CAAA,CAAE,EAAE3D,qBAAAA,CAAsB9L,QAAQ,CAAA,CAAA;AACxI,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEAwV,MAAAA,CAAAA,gBAkJC,GAlJDA,SAAAA,gBAAAA,GAAAA;QACE,IAAM5L,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;QACtB,IAAMqG,YAAAA,GAAe,IAAI,CAACrS,OAAO,CAAA;QAEjC,IAAIqS,YAAAA,KAAiB9d,YAAa+hB,CAAAA,eAAe,EAAE;AACjD,YAAA,IAAI,IAAI,CAACrE,UAAU,IAAI,IAAI,CAACxO,IAAI,EAAE;gBAChC,IAAI,CAACkO,GAAG,GAAG,IAAI,CAACM,UAAU,CAACvP,SAAS,CAACI,cAAc,EAAA,CAAA;gBACnD,IAAI,CAACW,IAAI,CAACuE,QAAQ,CAACmB,SAAS,CAAC,SAAA,EAAW,IAAI,CAACwI,GAAG,CAAA,CAAA;AAClD,aAAA;AACA,YAAA,IAAI,IAAI,CAACsG,aAAa,IAAI,IAAI,CAAChG,UAAU,EAAE;AACzC,gBAAA,IAAMyG,WAAW,IAAI,CAACzG,UAAU,CAACyD,YAAY,CAACiD,sBAAAA,CAAAA,CAAAA;AAE9C,gBAAA,IAAID,QAAU,EAAA;AACZpK,oBAAAA,mBAAAA,CAAoBoK,SAASE,YAAY,CAACnV,IAAI,CAAChB,QAAQ,EAAEiW,QAASE,CAAAA,YAAY,CAACnV,IAAI,CAACuE,QAAQ,EAAE,IAAI,CAACiQ,aAAa,EAAE/J,sBAAsB2K,IAAI,CAAA,CAAA;oBAC5I,IAAI,CAACZ,aAAa,CAACO,WAAW,GAAGE,SAASE,YAAY,CAACnV,IAAI,CAAC+U,WAAW,CAAA;AACzE,iBAAA;AACF,aAAA;SACK,MAAA;YACL,IAAI,IAAI,CAACvG,UAAU,EAAE;gBACnB,IAAI,IAAI,CAAC+F,QAAQ,EAAE;;AAGjB,oBAAA,IAAM9F,WAAW,IAAIzd,OAAAA,EAAAA,CAAAA;AACrB,oBAAA,IAAM0d,YAAY,IAAIZ,UAAAA,EAAAA,CAAAA;AACtB,oBAAA,IAAMuH,UAAa,GAAA,IAAIrkB,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;;AAGrC,oBAAA,IAAI,IAAI,CAACid,eAAe,SAA6BW,YAAiB9d,KAAAA,YAAAA,CAAaoM,KAAK,EAAE;AACxF,wBAAA,IAAI,CAACsR,UAAU,CAACvP,SAAS,CAAC4P,cAAc,CAACJ,QAAUC,EAAAA,SAAAA,CAAAA,CAAAA;qBAC9C,MAAA;AACL,wBAAA,IAAI,CAACF,UAAU,CAACvP,SAAS,CAAC4P,cAAc,CAACJ,QAAAA,CAAAA,CAAAA;AAC3C,qBAAA;oBAEA,IAAMK,eAAAA,GAAkB,IAAIzQ,SAAU,CAAA;wBACpChF,QAAUoV,EAAAA,QAAAA;wBACVM,IAAML,EAAAA,SAAAA;wBACNxR,KAAOmY,EAAAA,UAAAA;wBACP/W,KAAO,EAAA,IAAA;AACT,qBAAA,CAAA,CAAA;;oBAGA,IAAIsQ,YAAAA,KAAiB9d,YAAawI,CAAAA,QAAQ,IAAIsV,YAAAA,KAAiB9d,YAAaoM,CAAAA,KAAK,IAAI0R,YAAAA,KAAiB9d,YAAakM,CAAAA,WAAW,EAAE;AAC9H,wBAAA,IAAMF,MAASyL,GAAAA,IAAAA,CAAKyG,WAAW,CAAElS,MAAM,CAAA;AACvC,wBAAA,IAAMmS,SAAYnS,GAAAA,MAAAA,CAAOzD,QAAQ,IAAI,IAAIrI,OAAAA,EAAAA,CAAAA;wBACzC,IAAMke,OAAAA,GAAUJ,gBAAgBzV,QAAQ,CAAA;wBACxC,IAAM8V,MAAAA,GAASlf,4BAA4Bgf,SAAWC,EAAAA,OAAAA,CAAAA,CAAAA;wBAEtDJ,eAAgBM,CAAAA,WAAW,CAACD,MAAOza,CAAAA,CAAC,EAAEya,MAAOrhB,CAAAA,CAAC,EAAEqhB,MAAAA,CAAO/a,CAAC,CAAA,CAAA;AAC1D,qBAAA;AAEA,oBAAA,IAAI,CAAC8Z,GAAG,GAAGY,eAAAA,CAAgBzP,cAAc,EAAA,CAAA;oBACzC,IAAMvB,MAAAA,GAASgR,gBAAgBzV,QAAQ,CAAA;oBAEvC,IAAgC,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACkb,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;uDAAnCvU,IAAMf,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,EAAAA,SAAAA,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAChB,wBAAA,IAAI6H,YAAAA,KAAAA,CAAAA,CAAAA;AAEJ7H,wBAAAA,SAAAA,CAAUqW,eAAe,GAAGxG,eAAAA,CAAAA;AAC5B,wBAAA,IAAMzV,WAAW,IAAIrI,OAAAA,EAAAA,CAAAA;AAErBiO,wBAAAA,SAAAA,CAAU4P,cAAc,CAACxV,QAAAA,CAAAA,CAAAA;;AAEzB,wBAAA,IAAIkc,gBAAmB,GAAA,GAAA,CAAA;AACvB,wBAAA,IAAI9gB,KAAQ,GAAA,CAAA,CAAA;wBAEZ,IAAIma,YAAAA,KAAiB9d,YAAasM,CAAAA,UAAU,EAAE;;4BAE5C,IAAI4C,IAAAA,CAAKnU,IAAI,KAAK,QAAU,EAAA;AAC1B0pB,gCAAAA,gBAAAA,GAAmBlc,SAAS1G,SAAS,EAAA,CAAGP,QAAQ,CAAC0L,OAAOnL,SAAS,EAAA,CAAA,CAAA;gCACjE8B,KAAQ,GAAC,IAAI,CAAC+H,WAAW,CAAC1R,GAAG,CAAC,QAAoCqJ,MAAM,CAAA;AAC1E,6BAAA;;4BAEA,IAAMoF,GAAAA,GAAM;AACZ,4BAAA,IAAM8W,cAAc9H,IAAKyG,CAAAA,WAAW,CAAEsB,QAAQ,CAACC,QAAQ,EAAA,CAAA;AACvD,4BAAA,IAAMC,eAAejI,IAAKyG,CAAAA,WAAW,CAAEsB,QAAQ,CAACG,SAAS,EAAA,CAAA;4BACzD,IAAMre,QAAAA,GAAW;4BACjB,IAAM+D,KAAAA,GAAQ,IAAIlE,IAAK2H,CAAAA,GAAG,CAACL,GAAMtH,GAAAA,IAAAA,CAAKmD,EAAE,GAAG,GAAOhD,CAAAA,GAAAA,QAAAA,CAAAA;AAClD,4BAAA,IAAMoH,SAAS6W,WAAcG,GAAAA,YAAAA,CAAAA;AAC7B,4BAAA,IAAMpa,SAASD,KAAQqD,GAAAA,MAAAA,CAAAA;AACvB,4BAAA,IAAMmX,kBAAkBpI,IAAKyG,CAAAA,WAAW,CAAElS,MAAM,CAAC8T,oBAAoB,EAAA,CAAA;4BACrE,IAAMG,OAAAA,GAAU,IAAI,CAACtV,IAAI,CAACsV,OAAO,IAAI;AACrC,4BAAA,IAAIyE,WAAAA,KAAAA,CAAAA,CAAAA;AAEJA,4BAAAA,QAAAA,GAAWvW,UAAUI,cAAc,EAAA,CAAA;4BACnC,IAAMoW,cAAAA,GAA4B,IAAIpX,SAAU,CAAA;gCAC9CC,KAAO,EAAA,IAAA;AACT,6BAAA,CAAA,CAAA;AAEAmX,4BAAAA,cAAAA,CAAe3E,eAAe,CAAC0E,QAAAA,CAAAA,CAAAA;AAC/BC,4BAAAA,cAAAA,CAAerG,WAAW,CAAE/V,QAAS3E,CAAAA,CAAC,GAAGyB,KAAQ,GAAA,CAAA,GAAK4a,OAAS,EAAC1X,SAASvL,CAAC,GAAGsI,SAAS,CAAK2a,GAAAA,OAAAA,EAAS1X,SAASjF,CAAC,CAAA,CAAA;AAC9GohB,4BAAAA,QAAAA,GAAWC,eAAepW,cAAc,EAAA,CAAA;AACxCyH,4BAAAA,SAAAA,GAAY6J,eAAgBtgB,CAAAA,KAAK,EAAGK,CAAAA,QAAQ,CAAC8kB,QAAAA,CAAAA,CAAAA;;AAE7C,4BAAA,IAAME,OAAU1iB,GAAAA,4BAAAA,CAA6B,CAACmD,KAAAA,GAAQ,CAAGA,EAAAA,KAAAA,GAAQ,CAAG,EAAA,CAACC,MAAS,GAAA,CAAA,EAAGA,MAAS,GAAA,CAAA,EAAG,CAAChE,QAAUA,EAAAA,QAAAA,CAAAA,CAAAA;AAExG4N,4BAAAA,IAAAA,CAAKuE,QAAQ,CAACmB,SAAS,CAAC,UAAYgQ,EAAAA,OAAAA,CAAAA,CAAAA;yBAC/B,MAAA;4BACL,IAAI9G,YAAAA,KAAiB9d,YAAawI,CAAAA,QAAQ,EAAE;AAC1C,gCAAA,IAAM2V,aAAY1G,IAAKyG,CAAAA,WAAW,CAAElS,MAAM,CAACzD,QAAQ,IAAI;AAAC,oCAAA,CAAA;AAAG,oCAAA,CAAA;AAAG,oCAAA,CAAA;AAAE,iCAAA,CAAA;AAEhE2G,gCAAAA,IAAAA,CAAKuE,QAAQ,CAACkB,UAAU,CAAC,aAAewJ,EAAAA,UAAAA,CAAAA,CAAAA;AACxCjP,gCAAAA,IAAAA,CAAKuE,QAAQ,CAACkB,UAAU,CAAC,UAAY3H,EAAAA,MAAAA,CAAAA,CAAAA;AACvC,6BAAA;AACAgJ,4BAAAA,SAAAA,GAAY7H,UAAUI,cAAc,EAAA,CAAA;;AAEtC,yBAAA;AACAW,wBAAAA,IAAAA,CAAKuE,QAAQ,CAACmB,SAAS,CAAC,SAAWoB,EAAAA,SAAAA,CAAAA,CAAAA;;AAGnC,wBAAA,IAAIyO,mBAAmB9gB,KAAO,EAAA;4BAC5B,IAAI8gB,gBAAAA,GAAmB9gB,QAAQ,GAAK,EAAA;AAClCuL,gCAAAA,IAAAA,CAAKuE,QAAQ,CAAC6B,UAAU,CAAC,SAAW,EAAA,IAAIhV,QAAQ,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;6BAC9C,MAAA;gCACL4O,IAAKuE,CAAAA,QAAQ,CAAC6B,UAAU,CAAC,SAAA,EAAW,IAAIhV,OAAAA,CAAQ,CAAC,GAAIqD,KAAS8gB,GAAAA,gBAAAA,GAAmB,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AACtF,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;gBACA,IAAI,IAAI,CAACvV,IAAI,EAAE;AACb,oBAAA,IAAMyO,YAAW,IAAIzd,OAAAA,EAAAA,CAAAA;AACrB,oBAAA,IAAM0d,aAAY,IAAIZ,UAAAA,EAAAA,CAAAA;AACtB,oBAAA,IAAMa,QAAW,GAAA,IAAI3d,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAEnC,oBAAA,IAAI,CAACwd,UAAU,CAACvP,SAAS,CAAC4P,cAAc,CAACJ,SAAUC,EAAAA,UAAAA,CAAAA,CAAAA;oBAEnD,IAAMI,gBAAAA,GAAkB,IAAIzQ,SAAU,CAAA;wBACpChF,QAAUoV,EAAAA,SAAAA;wBACVM,IAAML,EAAAA,UAAAA;wBACNxR,KAAOyR,EAAAA,QAAAA;wBACPrQ,KAAO,EAAA,IAAA;AACT,qBAAA,CAAA,CAAA;AAEA,oBAAA,IAAIsQ,iBAAiB9d,YAAaiM,CAAAA,KAAK,IAAI6R,YAAiB9d,KAAAA,YAAAA,CAAagM,MAAM,EAAE;AAC/E,wBAAA,IAAMA,OAASyL,GAAAA,IAAAA,CAAKyG,WAAW,CAAElS,MAAM,CAAA;AACvC,wBAAA,IAAMmS,aAAYnS,OAAOzD,CAAAA,QAAQ,IAAI,IAAIrI,OAAAA,CAAQ,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;wBACvD,IAAMke,QAAAA,GAAUJ,iBAAgBzV,QAAQ,CAAA;wBACxC,IAAM8V,OAAAA,GAASlf,4BAA4Bgf,UAAWC,EAAAA,QAAAA,CAAAA,CAAAA;wBAEtDJ,gBAAgBM,CAAAA,WAAW,CAACD,OAAOza,CAAAA,CAAC,EAAEya,OAAOrhB,CAAAA,CAAC,EAAEqhB,OAAAA,CAAO/a,CAAC,CAAA,CAAA;AAC1D,qBAAA;AAEA,oBAAA,IAAI,CAAC8Z,GAAG,GAAGY,gBAAAA,CAAgBzP,cAAc,EAAA,CAAA;oBAEzC,IAAI,CAACW,IAAI,CAACuE,QAAQ,CAACmB,SAAS,CAAC,SAAWoJ,EAAAA,gBAAAA,CAAgBzP,cAAc,EAAA,CAAA,CAAA;AACxE,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;;MAIAsW,MAAAA,CAAAA,oBAsBC,GAtBDA,SAAAA,oBAAAA,GAAAA;QACE,IAAItsB,MAAAA,CAAAA;QACJ,IAAMulB,YAAAA,GAAe,IAAI,CAACrS,OAAO,CAAA;QAEjC,OAAQqS,YAAAA;AACN,YAAA,KAAK9d,aAAa+hB,eAAe,CAAA;AACjC,YAAA,KAAK/hB,aAAaiiB,cAAc,CAAA;AAChC,YAAA,KAAKjiB,aAAa8S,OAAO,CAAA;AACzB,YAAA,KAAK9S,aAAagT,cAAc,CAAA;AAChC,YAAA,KAAKhT,aAAakT,SAAS,CAAA;AAC3B,YAAA,KAAKlT,aAAaoT,UAAU,CAAA;AAC5B,YAAA,KAAKpT,aAAasT,SAAS;AACzB/a,gBAAAA,MAAAA,GAAS0kB,UAAUxD,KAAK,CAAA;AAExB,gBAAA,MAAA;AACF,YAAA;AACElhB,gBAAAA,MAAAA,GAAS0kB,UAAU9e,SAAS,CAAA;AAE5B,gBAAA,MAAA;AACJ,SAAA;QAEA,OAAO5F,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;MAIAusB,MAAAA,CAAAA,cA4BC,GA5BDA,SAAAA,cAAAA,GAAAA;AACE,QAAA,IAAIvsB,SAAS,EAAC,CAAA;QACd,IAAMulB,YAAAA,GAAe,IAAI,CAACrS,OAAO,CAAA;QAEjC,OAAQqS,YAAAA;AACN,YAAA,KAAK9d,aAAa0Q,GAAG;gBACnBnY,MAAS,GAAA;oBAAE8M,KAAO,EAAA,CAAA;oBAAGC,MAAQ,EAAA,CAAA;oBAAGC,KAAO,EAAA,CAAA;AAAE,iBAAA,CAAA;AAEzC,gBAAA,MAAA;AACF,YAAA,KAAKvF,aAAaiN,MAAM;gBACtB1U,MAAS,GAAA;oBAAE8K,MAAQ,EAAA,CAAA;AAAE,iBAAA,CAAA;AAErB,gBAAA,MAAA;AACF,YAAA,KAAKrD,aAAawS,QAAQ;gBACxBja,MAAS,GAAA;oBAAE8K,MAAQ,EAAA,CAAA;oBAAGiC,MAAQ,EAAA,CAAA;AAAE,iBAAA,CAAA;AAEhC,gBAAA,MAAA;AACF,YAAA,KAAKtF,aAAaqP,IAAI;gBACpB9W,MAAS,GAAA;oBAAE8K,MAAQ,EAAA,CAAA;oBAAGiC,MAAQ,EAAA,CAAA;AAAE,iBAAA,CAAA;AAEhC,gBAAA,MAAA;AACF,YAAA;AACE/M,gBAAAA,MAAAA,GAAS,EAAC,CAAA;AAEV,gBAAA,MAAA;AACJ,SAAA;QAEA,OAAOA,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA4pB,IAAAA,MAAAA,CAAAA,kBAwBC,GAxBDA,SAAAA,kBAAAA,CAAoB1K,IAAa,EAAA;AAIhBA,QAAAA,IAAAA,iBAAAA,CAAAA;QAHf,IAAMsN,cAAAA,GAAiBtN,IAAK0J,CAAAA,YAAY,CAAC2C,iBAAAA,CAAAA,CAAAA;;AAEzC,QAAA,IAAMkB,WAAWD,cAAehB,CAAAA,OAAO,CAACC,SAAS,CAAC,CAAE,CAAA,CAAA;QACpD,IAAMnlB,MAAAA,GAAAA,CAAS4Y,oBAAAA,IAAKyG,CAAAA,WAAW,qBAAhBzG,iBAAkB+H,CAAAA,QAAQ,CAAC3gB,MAAM,CAAA;QAEhDomB,WAAYpmB,CAAAA,MAAAA,CAAAA,CAAAA;AAEZ,QAAA,IAAImmB,QAAU,EAAA;YACZ,IAAI,CAACtH,UAAU,GAAGjG,IAAAA,CAAAA;YAClB,IAAI,CAAC6F,eAAe,GAAG,EAAE,CAAA;AAEzB,YAAA,IAAM4H,UAAarR,GAAAA,IAAAA,CAAK3b,MAAM,CAC5B2G,MACA,EAAA;gBACEqP,QAAU8W,EAAAA,QAAAA,CAAS9W,QAAQ,CAACA,QAAQ;gBACpCuF,QAAUuR,EAAAA,QAAAA,CAASvR,QAAQ,CAACyQ,cAAc;gBAC1CpQ,QAAU,EAAA,IAAA;AACZ,aAAA,CAAA,CAAA;YACF,IAAM5E,IAAAA,GAAO,IAAI,CAACwU,aAAa,GAAGvI,oBAAoBtc,MAAQqmB,EAAAA,UAAAA,EAAY,IAAI,CAACrnB,KAAK,CAAA,CAAA;AAEpF,YAAA,IAAI,CAACyf,eAAe,CAACpkB,IAAI,CAACgW,IAAAA,CAAAA,CAAAA;AAC1B,YAAA,IAAI,CAACqO,MAAM,CAACrkB,IAAI,CAACgW,IAAAA,CAAAA,CAAAA;AACnB,SAAA;AACF,KAAA,CAAA;AAEA8S,IAAAA,MAAAA,CAAAA,qBAYC,GAZDA,SAAAA,qBAAAA,CAAuBvK,IAAa,EAAA;AAEnB,QAAA,IAAA,sBAAA,CAAA;AADf,QAAA,IAAM6B,QAAQ,IAAC7B,CAAa+D,KAAK,CAACuI,OAAO,CAACzK,KAAK,CAAA;QAC/C,IAAMza,MAAAA,GAAAA,CAAS,sBAAA,GAAA,IAAI,CAAC4Y,IAAI,CAACyG,WAAW,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,sBAAA,CAAuBsB,QAAQ,CAAC3gB,MAAM,CAAA;QAErDomB,WAAYpmB,CAAAA,MAAAA,CAAAA,CAAAA;QAEZ,IAAI,CAAC6e,UAAU,GAAGjG,IAAAA,CAAAA;QAClB,IAAI6B,KAAAA,IAASA,KAAM5O,CAAAA,IAAI,EAAE;AACvB,YAAA,IAAMwE,OAAO,IAAI,CAACA,IAAI,GAAGmK,mBAAAA,CAAoBxa,QAAQya,KAAO,EAAA;gBAAEzb,KAAO,EAAA,IAAI,CAACA,KAAK;AAAC,aAAA,CAAA,CAAA;AAEhF,YAAA,IAAI,CAAC0f,MAAM,CAACrkB,IAAI,CAACgW,IAAAA,CAAAA,CAAAA;AACnB,SAAA;AACF,KAAA,CAAA;AAEA;;;AAGC,MACDsT,MAAAA,CAAAA,wBAmBC,GAnBDA,SAAAA,yBAA0B/K,IAAa,EAAA;AAStB0N,QAAAA,IAAAA,sBAAAA,CAAAA;QARf,IAAMA,SAAAA,GAAY,IAAI,CAAC1N,IAAI,CAAA;AAC3B,QAAA,IAAM6B,KAAQ,GAAA;YACZA,KAAO,EAAA,KAAA;AACPjU,YAAAA,KAAAA,EAAO,IAAI,CAACsF,IAAI,CAACtF,KAAK;AACtBC,YAAAA,MAAAA,EAAQ,IAAI,CAACqF,IAAI,CAACrF,MAAM;AACxBC,YAAAA,KAAAA,EAAO,IAAI,CAACoF,IAAI,CAACpF,KAAK;AACtByH,YAAAA,MAAAA,EAAQ,IAAI,CAACrC,IAAI,CAACqC,MAAM;AAC1B,SAAA,CAAA;QACA,IAAMnO,MAAAA,GAAAA,CAASsmB,yBAAAA,SAAUjH,CAAAA,WAAW,qBAArBiH,sBAAuB3F,CAAAA,QAAQ,CAAC3gB,MAAM,CAAA;QAErDomB,WAAYpmB,CAAAA,MAAAA,CAAAA,CAAAA;QAEZ,IAAI,CAAC6e,UAAU,GAAGjG,IAAAA,CAAAA;AAClB,QAAA,IAAI6B,KAAO,EAAA;AACT,YAAA,IAAMpK,OAAO,IAAI,CAACA,IAAI,GAAGmK,mBAAAA,CAAoBxa,QAAQya,KAAO,EAAA;gBAAEzb,KAAO,EAAA,IAAI,CAACA,KAAK;gBAAEyR,SAAW,EAAA,IAAI,CAACA,SAAS;AAAC,aAAA,CAAA,CAAA;AAE3G,YAAA,IAAI,CAACiO,MAAM,CAACrkB,IAAI,CAACgW,IAAAA,CAAAA,CAAAA;AACnB,SAAA;AACF,KAAA,CAAA;AAEA;;;;MAKAkT,MAAAA,CAAAA,kBAgBC,GAhBDA,SAAAA,mBAAoB3K,IAAa,EAAEhM,OAAqB,EAAE4W,YAAmC,EAAA;AAQ5E8C,QAAAA,IAAAA,sBAAAA,CAAAA;QAPf,IAAMA,SAAAA,GAAY,IAAI,CAAC1N,IAAI,CAAA;AAC3B,QAAA,IAAM7L,OAAU,GAAA;YACdjB,IAAM,EAAA,IAAI,CAACA,IAAI;YACf9M,KAAO,EAAA,IAAI,CAACA,KAAK;YACjBI,UAAY,EAAA,IAAI,CAACA,UAAU;YAC3BqR,SAAW,EAAA,IAAI,CAACA,SAAS;AAC3B,SAAA,CAAA;QACA,IAAMzQ,MAAAA,GAAAA,CAASsmB,yBAAAA,SAAUjH,CAAAA,WAAW,qBAArBiH,sBAAuB3F,CAAAA,QAAQ,CAAC3gB,MAAM,CAAA;QAErDomB,WAAYpmB,CAAAA,MAAAA,CAAAA,CAAAA;AAEZ,QAAA,IAAMqQ,IAAO,GAAA,IAAI,CAACA,IAAI,GAAG1D,qBAAAA,CAAsB3M,MAAQ4M,EAAAA,OAAAA,EAAS,IAAI,CAACC,WAAW,EAAE2W,YAAczW,EAAAA,OAAAA,CAAAA,CAAAA;QAEhG,IAAI,CAAC8R,UAAU,GAAGjG,IAAAA,CAAAA;AAClB,QAAA,IAAI,CAAC8F,MAAM,CAACrkB,IAAI,CAACgW,IAAAA,CAAAA,CAAAA;AACnB,KAAA,CAAA;AAEA;;;;;MAMAoT,MAAAA,CAAAA,wBAgBC,GAhBDA,SAAAA,yBAA0B7K,IAAa,EAAEhM,OAAqB,EAAE4W,YAAmC,EAAA;AAOlF8C,QAAAA,IAAAA,sBAAAA,CAAAA;QANf,IAAMA,SAAAA,GAAY,IAAI,CAAC1N,IAAI,CAAA;AAC3B,QAAA,IAAM7L,OAAU,GAAA;YACdjB,IAAM,EAAA,IAAI,CAACA,IAAI;YACf1M,UAAY,EAAA,IAAI,CAACA,UAAU;AAC7B,SAAA,CAAA;QAEA,IAAMY,MAAAA,GAAAA,CAASsmB,yBAAAA,SAAUjH,CAAAA,WAAW,qBAArBiH,sBAAuB3F,CAAAA,QAAQ,CAAC3gB,MAAM,CAAA;QAErDomB,WAAYpmB,CAAAA,MAAAA,CAAAA,CAAAA;QAEZ,IAAI,CAAC4kB,QAAQ,GAAGjY,qBAAsB3M,CAAAA,MAAAA,EAAQ4M,SAAS,IAAI,CAACC,WAAW,EAAE2W,YAAczW,EAAAA,OAAAA,CAAAA,CAAAA;AACvF,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmB,IAAI,CAAC6X,QAAQ,CAACtK,IAAI,EAAI,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9BjK,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAACqO,MAAM,CAACrkB,IAAI,CAACgW,IAAAA,CAAAA,CAAAA;AACnB,SAAA;QACA,IAAI,CAACwO,UAAU,GAAGjG,IAAAA,CAAAA;AACpB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2N,QAsBR,GAtBD,SAASA,QAAAA,CAAUna,IAAwB,EAAA;AACzC,QAAA,kBAAA,CAAA,SAAA,CAAMma,QAAD,CAAUna,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;QACf,IAAMwM,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;AAEtBA,QAAAA,IAAAA,CAAK4N,QAAQ,GAAG,GAAA,CAAA;QAChB,IAGIpa,aAAAA,GAAAA,KAAKW,OAAO,EAFd7P,SAEEkP,aAFFlP,CAAAA,MAAAA,EAAQ0P,UAENR,aAFMQ,CAAAA,OAAAA,EAASxN,aAEfgN,aAFehN,CAAAA,UAAAA,EAAY0M,OAE3BM,aAF2BN,CAAAA,IAAAA,EAAM2E,YAEjCrE,aAFiCqE,CAAAA,SAAAA,EAAAA,mBAAAA,GAEjCrE,aADFpN,CAAAA,KAAAA,EAAAA,KAAQ,GAAA,mBAAA,KAAA,KAAA,CAAA,GAAA;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA,GAAA;AAAI,SAAA,GAAA,mBAAA,CAAA;QAGzB,IAAI,CAAC9B,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAAC0P,OAAO,GAAGA,OAAAA,CAAAA;AACf,QAAA,IAAI,CAACxN,UAAU,GAAGA,UAAc,IAAA,IAAI,CAAC4mB,oBAAoB,EAAA,CAAA;AACzD,QAAA,IAAI,CAACla,IAAI,GAAGA,IAAQ,IAAA,IAAI,CAACma,cAAc,EAAA,CAAA;QACvC,IAAI,CAACxV,SAAS,GAAGA,SAAAA,CAAAA;AAEjB,QAAA,IAAOpT,CAAW2B,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAARZ,CAAQY,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAAL0E,CAAK1E,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAElB,IAAI,CAACA,KAAK,GAAG;YAAC3B,CAAI,GAAA,GAAA;YAAKe,CAAI,GAAA,GAAA;YAAKsF,CAAI,GAAA,GAAA;AAAI,SAAA,CAAA;AACxC,QAAA,IAAI0I,IAAM,EAAA;AACRwM,YAAAA,IAAAA,CAAKtJ,SAAS,GAAG,IAAIZ,SAAAA,CAAUtC,KAAKkD,SAAS,CAAA,CAAA;AAC/C,SAAA;AACF,KAAA,CAAA;AAgPA4U,IAAAA,MAAAA,CAAAA,mBASC,GATDA,SAAAA,mBAAAA,CAAqBuC,QAAqB,EAAA;AACxC,QAAA,IAAIC,KAAKD,QAASE,CAAAA,YAAY,CAACC,IAAI,CAACC,SAAAA,UAAAA,EAAAA;AAAcA,YAAAA,OAAAA,UAAAA,CAAW3qB,IAAI,KAAKgiB,oBAAAA,CAAAA;;AAEtE,QAAA,IAAI,CAACwI,EAAI,EAAA;YACPA,EAAK,GAAA,IAAII,mBAAoBL,CAAAA,QAAAA,CAAS9F,QAAQ,CAAA,CAAA;AAC9C8F,YAAAA,QAAAA,CAASM,aAAa,CAACL,EAAAA,CAAAA,CAAAA;AACzB,SAAA;QAEA,OAAOA,EAAAA,CAAAA;AACT,KAAA,CAAA;AAEAvC,IAAAA,MAAAA,CAAAA,mBASC,GATDA,SAAAA,mBAAAA,CAAqBsC,QAAqB,EAAA;AACxC,QAAA,IAAIC,KAAKD,QAASE,CAAAA,YAAY,CAACC,IAAI,CAACC,SAAAA,UAAAA,EAAAA;AAAcA,YAAAA,OAAAA,UAAAA,CAAW3qB,IAAI,KAAK8hB,oBAAAA,CAAAA;;AAEtE,QAAA,IAAI,CAAC0I,EAAI,EAAA;YACPA,EAAK,GAAA,IAAIM,mBAAoBP,CAAAA,QAAAA,CAAS9F,QAAQ,CAAA,CAAA;AAC9C8F,YAAAA,QAAAA,CAASM,aAAa,CAACL,EAAAA,CAAAA,CAAAA;AACzB,SAAA;QAEA,OAAOA,EAAAA,CAAAA;AACT,KAAA,CAAA;AAEA1C,IAAAA,MAAAA,CAAAA,kBASC,GATDA,SAAAA,kBAAAA,CAAoByC,QAAqB,EAAA;AACvC,QAAA,IAAIC,KAAKD,QAASE,CAAAA,YAAY,CAACC,IAAI,CAACC,SAAAA,UAAAA,EAAAA;AAAcA,YAAAA,OAAAA,UAAAA,CAAW3qB,IAAI,KAAK+hB,mBAAAA,CAAAA;;AAEtE,QAAA,IAAI,CAACyI,EAAI,EAAA;YACPA,EAAK,GAAA,IAAIO,kBAAmBR,CAAAA,QAAAA,CAAS9F,QAAQ,CAAA,CAAA;AAC7C8F,YAAAA,QAAAA,CAASM,aAAa,CAACL,EAAAA,CAAAA,CAAAA;AACzB,SAAA;QAEA,OAAOA,EAAAA,CAAAA;AACT,KAAA,CAAA;AA3zBWrI,IAAAA,OAAAA,cAAAA,CAAAA;EAAuB4G,iBA6zBnC,EAAA;;AAlzBEiC,IAAAA,SAAAA,EAAAA;AAXU7I,CAAAA,EAAAA,cAAAA,CAAAA,SAAAA,EAAAA,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,cAAAA,GAAAA,UAAAA,CAAAA;IADZ8I,YAAa,CAAA,gBAAA,CAAA;AACD9I,CAAAA,EAAAA,cAAAA,CAAAA,CAAAA;;AA+zBD+I,CAAAA,SAAAA,eAAAA,EAAAA;;;GAAAA,eAAAA,KAAAA,eAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAKZ,IAAMN,oCAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,mBAAAA,CACSnG,QAAkB,EAAA;;AACvBA,QAAAA,KAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA,IAAAA,IAAAA,CAAAA;QACN,KAAK1L,CAAAA,QAAQ,GAAGoS,6BAAgCA,GAAAA,6BAAAA,CAAAA;AAChD,QAAA,KAAA,CAAKnrB,IAAI,GAAGgiB,oBAAAA,CAAAA;;;AAJV4I,IAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAOJ,IAAA,MAAA,CAASQ,OAGR,GAHD,SAASA,OAAAA,CAAS3G,QAAkB,EAAA;AAClCA,QAAAA,QAAAA,CAAS4G,KAAK,CAAC;AAAEC,YAAAA,WAAAA,EAAaC,kBAAkBF,KAAK;AAAC,SAAA,CAAA,CAAA;AACtD5G,QAAAA,QAAAA,CAAS+G,YAAY,CAAC,IAAI,CAAChJ,MAAM,CAAA,CAAA;AACnC,KAAA,CAAA;AAVIoI,IAAAA,OAAAA,mBAAAA,CAAAA;AAA4Ba,CAAAA,CAAAA,UAAAA,CAAAA,CAAAA;AAalC,IAAMV,mCAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,CACStG,QAAkB,EAAA;;AACvBA,QAAAA,KAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA,IAAAA,IAAAA,CAAAA;QACN,KAAK1L,CAAAA,QAAQ,GAAG2S,yBAA4B,GAAA,CAAA,CAAA;AAC5C,QAAA,KAAA,CAAK1rB,IAAI,GAAG+hB,mBAAAA,CAAAA;;;AAJVgJ,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAOJ,IAAA,MAAA,CAASK,OAER,GAFD,SAASA,OAAAA,CAAS3G,QAAkB,EAAA;AAClCA,QAAAA,QAAAA,CAAS+G,YAAY,CAAC,IAAI,CAAChJ,MAAM,CAAA,CAAA;AACnC,KAAA,CAAA;AATIuI,IAAAA,OAAAA,kBAAAA,CAAAA;AAA2BU,CAAAA,CAAAA,UAAAA,CAAAA,CAAAA;AAYjC,IAAMX,oCAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,mBAAAA,CACSrG,QAAkB,EAAA;;AACvBA,QAAAA,KAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA,IAAAA,IAAAA,CAAAA;QACN,KAAK1L,CAAAA,QAAQ,GAAGoS,6BAAgC,GAAA,CAAA,CAAA;AAChD,QAAA,KAAA,CAAKnrB,IAAI,GAAG8hB,oBAAAA,CAAAA;;;AAJVgJ,IAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAOJ,IAAA,MAAA,CAASM,OAER,GAFD,SAASA,OAAAA,CAAS3G,QAAkB,EAAA;AAClCA,QAAAA,QAAAA,CAAS+G,YAAY,CAAC,IAAI,CAAChJ,MAAM,CAAA,CAAA;AACnC,KAAA,CAAA;AATIsI,IAAAA,OAAAA,mBAAAA,CAAAA;AAA4BW,CAAAA,CAAAA,UAAAA,CAAAA;;AC73BlC,IAAME,aAA4C,IAAI5sB,GAAAA,EAAAA,CAAAA;AAE/C,IAAMuoB,YAAqC,GAAA,IAAIvoB,GAAM,EAAA,CAAA;AAErD,IAAA,iBAAM6sB,iBAAD,SAAL,MAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;;;cACFC,KAAQ,GAAA,IAAA,CAAA;;;AADND,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAAeE,iBAQd,GARD,SAAeA,iBAAmBC,CAAAA,KAAY,EAAElb,OAAsC,EAAA;eAAtF,mBAAA,CAAA,WAAA;+CAIgB7Q,IAAMkQ,EAAAA,IAAAA,EAAAA,CAAAA,EAAAA,IAAAA,CAAAA;;;;AAHpBoX,wBAAAA,YAAAA,CAAa+D,KAAK,EAAA,CAAA;AAEdM,wBAAAA,IAAAA,EAAAA,WAAW/b,IAAI,KAAKvM,WAAYuM,CAAAA,IAAI,CAApC+b,EAAAA,OAAAA;;;;AACyBtoB,wBAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,WAAAA,CAAAA,CAAAA;;;;;;;mDAAfrD,IAAMkQ,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,EAAAA,IAAAA,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAChByb,wBAAAA,CAAAA,GAAAA,UAAAA,CAAWzsB,GAAG,CAAA;;AAACc,4BAAAA,IAAAA;;AAAM,wBAAA,OAAA;;4BAAMsD,WAAY4M,CAAAA,IAAAA,CAAAA;;;AAAvCyb,wBAAAA,CAAAA,CAAAA,KAAAA,CAAAA,UAAAA,EAAAA,IAAAA,CAAAA,MAAAA,CAAAA;AAAqB,4BAAA,MAAA,CAAA,IAAA,EAAA;;;;;;;;;;;;;;AAG3B,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAASK,oBAwBR,GAxBD,SAASA,oBAAsB7I,CAAAA,WAAwB,EAAE4I,KAAY,EAAA;AACnE,QAAA,IAAMjoB,MAASqf,GAAAA,WAAAA,CAAYsB,QAAQ,CAAC3gB,MAAM,CAAA;QAE1C6nB,UAAW9O,CAAAA,OAAO,CAAC,SAACrZ,KAAOxD,EAAAA,IAAAA,EAAAA;AACzBsnB,YAAAA,YAAAA,CAAapoB,GAAG,CAACc,IAAM6D,EAAAA,aAAAA,CAAcC,MAAQN,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAC/C,SAAA,CAAA,CAAA;AACAmoB,QAAAA,UAAAA,CAAWN,KAAK,EAAA,CAAA;QAEhB,IAAM3E,KAAAA,GAAQvD,YAAYuD,KAAK,CAAA;AAC/B,QAAA,IAAMuF,YAA0C,EAAC,CAAA;AAEjD,QAAA,IAAK,IAAIxsB,CAAI,GAAA,CAAA,EAAGA,IAAIinB,KAAMlnB,CAAAA,MAAM,EAAEC,CAAK,EAAA,CAAA;YACrC,IAAMid,IAAAA,GAAOgK,KAAK,CAACjnB,CAAE,CAAA,CAAA;YACrB,IAAM4kB,cAAAA,GAAiB3H,IAAK0J,CAAAA,YAAY,CAACjE,cAAAA,CAAAA,CAAAA;AAEzC,YAAA,IAAIkC,cAAgB,EAAA;AAClB,gBAAA,IAAI,CAAC4H,SAAS,CAAC5H,cAAerjB,CAAAA,MAAM,CAAC,EAAE;AACrCirB,oBAAAA,SAAS,CAAC5H,cAAAA,CAAerjB,MAAM,CAAC,GAAG,EAAE,CAAA;AACvC,iBAAA;AACAirB,gBAAAA,SAAS,CAAC5H,cAAerjB,CAAAA,MAAM,CAAC,CAAC7C,IAAI,CAACue,IAAAA,CAAAA,CAAAA;AACxC,aAAA;AACF,SAAA;QACAyG,WAAYuE,CAAAA,UAAU,CAACwE,WAAW,GAAGD,SAAAA,CAAAA;AACrC9I,QAAAA,WAAAA,CAAYuE,UAAU,CAACC,UAAU,GAAG,EAAE,CAAA;AACxC,KAAA,CAAA;AArCWiE,IAAAA,OAAAA,iBAAAA,CAAAA;qBAA0BO,MAsCtC,CAAA,CAAA;;AC1CDC,cAAAA,CAAe,cAAgBR,EAAAA,iBAAAA,CAAAA,CAAAA;AAU/B;;IAGaS,IAAAA,OAAAA,GAAU,QAAY;AAEnCC,MAAAA,CAAO5wB,IAAI,CAAC,+BAAC,GAA+B2wB,OAAQ,GAAA,GAAA,CAAA,CAAA;AAEpD,IAAIA,OAAAA,KAAYE,OAAQF,CAAAA,OAAO,EAAE;IAC/BG,OAAQ5wB,CAAAA,KAAK,CACX,sDACA,EAAA,iLAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/constants.ts","../src/util.ts","../src/define.ts","../src/gizmo-vfx-item.ts","../src/math-utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/geometry/geometry.ts","../src/geometry/sphere.ts","../src/geometry/box.ts","../src/geometry/cylinder.ts","../src/geometry/cone.ts","../src/geometry/torus.ts","../src/geometry/plane.ts","../src/geometry/frustum.ts","../src/geometry/direction-light.ts","../src/geometry/point-light.ts","../src/geometry/spot-light.ts","../src/geometry/floor-line-edge.ts","../src/geometry/index.ts","../src/mesh.ts","../src/raycast.ts","../src/shape.ts","../src/wireframe.ts","../src/gizmo-component.ts","../src/gizmo-loader.ts","../src/index.ts"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\nexport { _async_to_generator as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(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}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(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}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { glContext } from '@galacean/effects';\n\n// 坐标轴默认颜色\nexport const color = {\n xAxisColor: [216 / 255, 178 / 255, 76 / 255],\n yAxisColor: [38 / 255, 149 / 255, 235 / 255],\n zAxisColor: [134 / 255, 74 / 255, 245 / 255],\n};\nexport const renderMode = glContext.TRIANGLES;\n// 坐标轴默认图标\nexport const axisIconMap: Map<string, string> = new Map();\n\naxisIconMap.set(\n 'light', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'camera', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'posX', `data:image/png;base64,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\n RK5CYII=`\n);\naxisIconMap.set(\n 'posY', `data:image/png;base64,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`\n);\naxisIconMap.set(\n 'posZ', `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGYAAABmCAYAAAFO2NT0AAABYWlDQ1BrQ0dDb2xvcl\n NwYWNlRGlzcGxheVAzAAAokWNgYFJJLCjIYWFgYMjNKykKcndSiIiMUmB/yMAOhLwMYgwKicnFBY4BAT5AJQwwGhV8u8bACKI\n v64LMOiU1tUm1XsDXYqbw1YuvRJsw1aMArpTU4mQg/QeIU5MLikoYGBhTgGzl8pICELsDyBYpAjoKyJ4DYqdD2BtA7CQI+whY\n TUiQM5B9A8hWSM5IBJrB+API1klCEk9HYkPtBQFul8zigpzESoUAYwKuJQOUpFaUgGjn/ILKosz0jBIFR2AopSp45iXr6SgYG\n RiaMzCAwhyi+nMgOCwZxc4gxJrvMzDY7v////9uhJjXfgaGjUCdXDsRYhoWDAyC3AwMJ3YWJBYlgoWYgZgpLY2B4dNyBgbeSA\n YG4QtAPdHFacZGYHlGHicGBtZ7//9/VmNgYJ/MwPB3wv//vxf9//93MVDzHQaGA3kAFSFl7jXH0fsAAAA4ZVhJZk1NACoAAAA\n IAAGHaQAEAAAAAQAAABoAAAAAAAKgAgAEAAAAAQAAAGagAwAEAAAAAQAAAGYAAAAAoo8/3AAAE29JREFUeAHtPQt4HVWZ58y9\n ucm9N2mTPtK00CJ12fISV6XlUYG2LKBJUyhs9bN+KuBiYakr8mqSFRfETUKpFhV1QbHih/ioFpomUVRarK3V0mUFu0CXLrWUU\n po0aZr0PnNnzv5nkjPfnLnnzJ2ZO/fmpu39vmTO+c//PP+c92MQ8vDDVprW+hixwmi8pTtq4BqBtobYbkLQeSICBmOECgPkIq\n B4TAtdEovQhF8evpw+uN8N07Zy8SAXg4gZ4Xd9N6Fjmf+zoiBDvawUAFACMxOGIyWiaooIKKGQyI6AEmXZxDKCPSnS3An3oVn\n hq2gQIYzjhp/MOTiSKv5PfWUQUZRchFnOpUQMSMPcD1SSpnGINhFH6gFSZ3N3tJHxMYhy2UMJmIo6kRMCJoUSSv3EkOjT+mZg\n OymiNwMjvFz4GlHuIgIKJ4g8LSSiBOdEb6Q4wl8W0ZH0X3XEcytvFhLQjMjKPfOLyqjMGSHMPTMCI2JPBeN/pWHHzoVcG27uj\n oQ4IhpZdyOpONQTT9Cw+cfeBAYzJDGA6NnaEI8hQiKiNB2mKDe3dIbXSdMhQSgIGN8BjNfaEdqlWa2huJygfAVYhZsFGoJkr/\n quwVYrvTB+4YQWIXx6bSR80w9xUi+Aoz4QIsoYUGT2js4OLxHSUuDoi5L9gkspTAnHMwfQc32f1CF277aJJLvqNyeKwsyK66f\n 9Hhxs5LwIlYNl1V1cqinSfeQGlFB7deZUiKsfRn8ZEQTlAGnaD2TEzAqn2WTl09IV/YBhe1t9bBN0axZbkZgQK9wa51pWUyJ7\n xQ1BLE32mrN0p09znUVpsgQxRl4F0lq0qSvyLcaHPaWCGAJ7tjcmlmuq9mMW15/gZJr/HGwsIzmtaW9IXqMR9dcyJcEPBNqOr\n KbQjC8V0ro43oY00mRGzhVmb5YVTyjEq/NHmOOnW7ojI3XSqLQsIfkJGBWDcAyysJJZxOWlHwIoY+jkRKGwd2cJ8UsAYwy1yU\n dZ2MgumRAnjVtYqUXnVf4z48k96csw0rBJRmcUe39C+vYazCYG/04qhCLplsisMLhIAqwyzVVjK61LyWQJD1uwUwGUiYJTiV/\n ZchMkMgGLJn1PkJoNUuB1m5sNlkOYgGhgOqopmyNHNKVw5cQEFwZ3H3/MgH9kys+McK6AYyFQSaI9sZHaPpejrUIV8Eq7FSiK\n P9OzUAe7FUCJHL3CzA/XTP4JqgyeJtLBFpYzu5iA6uBZngRgjNfrJR4CWwkhWbMeu48/bmg4kHnD6LoaQFNAlo3NXZGP6ZZA4\n AoTvhFMa4NG2GOgl9IZFWT7tan3acOZVzwyE5KxltIQQrFgBPA3GCydIaRwCWQCKBknhAJA0NsgyP0rRIlHf2YBFJT1drV0RU\n 4PBvGHGYHbp1UApc+yxMy0rSG+H966WWaYLBwIotNWdUTfEaXbCjETtNbHt0HrPd8Mwwr+fHNn5FEzTBR2LERELILR9klJJW+\n D2n2JTQ3/KlRnHVhRnmjuqNgr4uMFlpcx7fWxH2gI3eRFsIyGVkCy+kFGw+CujFl7HalOpONHGXExnkpZ8IKmjeUj01k5BDoy\n BmbEu2CCuz4Hr8ImY7wfaoz32AmxNaYkjLBqj/FBWg1awTQuNGYsXieRcnYwWqff2xHZbsbJqvzp6LHY5cKskNNwJkO2wZuzy\n 4zPeQYS10HZuNGMkCvM+lG58Jyk08HPP06WTjgJWUDt9xbUfno/wjAm12SBkBMAn++7RZZkCx8mgyimHuJwFkz6Dppcdj4Hcx\n KB+Z5HYL7ni4YxXkd7ToRZcTYcXgAjdGihRn9hZQqqn7qBRT09ad9GN6a9PvElDWkPeuLigmhP7Clk7n1T0qW1W6AzEHDBRYa\n Kt+vd/mIYYi1bZ0U/ji6ovF2mmQc4ma8b44HSMcmvj3wCysZBDl823uGQPEQKZgwdwD3f91lOpasm/whNCL6Hg/kZYca8CkzP\n 9Yux9ZWqCsxCV095yi/2Uj66MTgYuJZk1DekWA4T/nvoa+jN+EYOu1CvFCcEInTMY1TNbfVxDcYfRtyKbBfXyDB6pudKDuX8y\n lvRnOhyDlbIiFE1MyFe2prO3iUopQ0wFtDZU9D1014w4sUIXDIvUrbwfpzJ8oQbg14aXIP2JTp81Ve2LiUTYh6rZxlDidwYJB\n NSDDj0yaAng2EWfuSX1Wum4JFpD/z0KE7pPTDep5cRkyFUSaFnzNpDxXAcKoaoGTaW4ZGMFmuQ0xhGRpdtwJ/GqgqDF+VJPdE\n VmZ1LlmNjzIzooAjGPR8ywwoQ7oUyMc1cJnLJ8GSMlWl7Q3ytRsgdVribOCi9/uK54eW0inVDd8Li+uIZc+60LY4vhZHX9TCn\n S3e2TDCn6WGM0yC0iyC8saUr/GRWeh6AvI35+TIS2BtL/Ajmhz33XeAVe0EJhJes6sBDediSu2qWMW9dmvx7nNJ2Q7VdJsPxA\n seBwDXNmyp+44nWLdFjjSTSryYG/DbCqkdZQJl9z6bwPivcLi7sAcgIoAH9RZ8ah63O/npDJG9Y1d6EJoCOsxz/HJcZWH5Kwf\n KTvqfRMXefECdGI1W3r8fHc7HLaQx9rag3cjEqdHogGDh7VUfFHjs5tq/Z15eRSaVgCDVAzaivQ+N8qSdjttxPgslYvM+OuNh\n p0MvYDpvNpGuSUs/s2BkfLrayTuTBrjm6yCosHkJjoLC/6YTxWOG0NSTSItlZxjzUGLsOaq0zRcilAyPB1obEf1r1yTJGVdEz\n VqSSjBNtBbmfcPqzSUBdX2gUfwoNomPd34TJjP7h3Y7xcyHa7cwW0ba/GKfzvtNZGmcMGPJxluDk2Zd+Bb2V9NSNErJ3awwME\n Ose+xwpW/E41isrw01Qhz8slFDiwL6D8ZeYioZnoA6/mwGdPuleueqgs71yVp4DGb4xV9zvph9hSZCx1KbX199eRiqPxeJ5jS\n WsytrFXzz21azXM685aSXQ0NJZ0a2/ZoPxxFfshPuZ1pPelWVIw9T8KlBM1DVUx5EyQ1BekxFOjVVJEv3h6J0c+oUTmlCFMpm\n DuY1ARXAOpdGNgVpM2D1wyzQX/rM9V3MoU0MfQGeE/dvFMuIZTkRhIht7+PnDAC5Hl9d8wzdhtIevfHMZmeobRwmjHQMtKEP4\n IdF1tb+VYHsDpxPJxUosHpd2qb2x5aneSf0BvZPaxgEbp3ZycT8iUG5mwpIAmuEHMxGPYTKEdgz8G5d0UfUDKKRkT6dxSJ4iZ\n AY1xo8dBULxHT0NHLyu/GJ0evlCDuZXBCYVAwpUZMIdovkKefbwVRyLII6g+dWrOZifEVhyOqSgEPLdmK1H70AqSnG6Xlub+0\n gHR+A2EkAHlVUbIm+7pbPD3w/nLnrTRt9PR10y1fVZDDsRwrSQQp7ztZ1Jav1o12AbJ2x+dTsqUwq/8HbXxsgBX43p6r2OM+S\n 0iitQXbnt7BCHn29ENwZqtCfzZfTM4UUcizJchS6e+CAHK1gEo8OUt25MOcZ8Y+BS6pb+FbAVjl/wWlLb5ZJLHuhYaabUujF3\n dkboWNrTb2/8lzAP8BpHe22tf0NpjrEkwk7U68ZQHFjw+YkEVwqOa4fRy0N8Z/HymkdQEFdIaQqQ0Mt4cl1/tzszrFuxGNN8n\n m5HnKFAZOrdm/ARKtPwDI3AcdoX6XO8/EDfFDOE6swZA4da540XQ3Q9cdiYM6NxY3aGGQHn9O5zugHV7SvBZPjxhDK+rbkLcy\n dGuDLDhMBxpjjMtIdZvBSfoj003GvGlIZtHhEWLsWnEo1Ui/QSGkMR6aY0EcFYw2D49dGm9fiYSA+pMfQkXEDBF4mIxgym4Lu\n auyukYwlhmTEr296YOk9TM/5N9ZuZuwgrWPlUU1f4KTuSnMZQYv0EeiquN0x2zAqVBh3hC5u7ov+Vi78jYxgTWL85ABOGwiNS\n DMfXJ2wagk1z5U55SsuMiAE0qjOLVY5gS/FNbgyh+rryjNnA9sWx2zUNPWqG+RGGxnAtNA38hLRDxp6NYfxXN6Y/qKrDv4LFw\n 1oGc//ESRRQlrVsqshrdjBvY8yKr64ndSqOPwAw2DyHppjTuDDcbQfxjlAw8ODdG8tdbfbh+Fgivhpj4V3QKJ0jP55J1eC0Wg\n WnGqoIxpWKplViBdZNiAILZzCdSgJDqFwdOjMQPvSx9VgtqEI+My85x+grksnUAqxpi6AVWIgJfn/hlo/wAdizvhljZXMIkef\n zmT3w2S/eK2Y/FFlTnzgjg8lKWOf+JPDjhll+8PfKAxqHBNA+C8eLvtO0Kcyvxnhl6pKuqCVmTWPq7GFVvR+WT5fBTiNXXQ+X\n dvmOTidHoGQ90NRVUZTZwII7hm730jT8DRiCF3Sp0XdP2DCkJQqq2NbZ0YrV0HalbVA9JxXEMW2NsblEwz8r/f13nvPNINSdh\n PEXmjrD3zOAPgR8cwzdZ/unnfEnoN/8aR/0Gp8sMNodCKBrZHcIuTEqb8fQ/R2peKITqqpL3Ag+kXFhsuIIbEZoWNUZ2enVTs\n +O0Y+caInfnXKIPOvBQUexErysaVP5/8ixxCmeHANHNZ88qasscV7KoRi/XhEJz79zPe6XI/Eprhwz2qhvG6ujQLzq4y8GHYU\n mmDx7yInmjh1DD5nBCPwGJ0xP4chzAMZDbyMcvsC61GelyOmY0bbktRNpHGLNhKLHMdYCGF1i1zmwHX3Tkbp+pvQEGhwW3Qki\n gTDroWrkz3D09F9EyRQmLTH0tDJKa68VcupEdKRBpmix4V6uivOio6KglU2d0W9baYUlhk4u0iPkhXSKVZGTNU5X6OA4481W+\n 7McQy8nSCNtBzT0vp7rtwou9biS/emjgqlMiPYEXXE0C8iqyuBG4R/nc2OEmXmphVWSQi/0r0TW421WPT844R50Ztj4DJY1uS\n BxcETPxfMip7HLXLjdZa2NycVIVZcXRPIYM30j/nP0ypD9uv6U0PvQZXAcyfM5xDxspGvzO3YmHgEWKykbrsRAL+EvsL79/jz\n 4lxxpTH0HbYZN1mlNuIVL11fBZeiKmkfRpLJzxlz/IIpMv7cbv2uUGHprD9HICeWUPw18GR1MvWCb2e+NXI/+oaoopzht9WCJ\n oxtAVhiOoVcpscTx/nw3tQP9caAJTIIKQvKj36a5cvL3Ubki3NkpoSoKmPphhVGVwSZ5WtYLcSCvKNZQIcNaDG3pvxUNqfttZ\n c6beB+aWcGffrMlKHaigi/VS4w+mEyp49oprx5fh16LrbPNwtrQhejDNWugYc0aJdjSFT1RQ3N1x+BhMkNe6IuuliuBg5l9UE\n pugzPSdN+d+BeAczsLJ30XTQy+V4xQYlBYx5kx4hhC6sabY2j7sf3ovehw+s+22ToHPjV3ftUKW5zSSyR1I47BuBemX0pPP4l\n GB5LPo53HHpCkjoArA6ejRZMfR2W40havFBNhaaBXd0wgoBxSYdKm1H/0JuvN/Z9DcfVdW1Uvqf4PNKP8MlucUk7UMDqkO2ZW\n KLRnb0ZNl/LK5MtD30R747+wzc/p5fPRpdX8YXBbghJNxER5xeguw7m4DbAYtrTUdD06/Dr6/dGVSCXyfXVBHEWLJj2GqoInw\n J5COD3Q3Bmu1EsMdQa9hxf+l4xjNJJBW49+AfUN/9X2XTm38rPwKfnP2OKMs8QO2BvAX8IEM8tvgXNmjrUh+xKb0EuDD9uqMT\n E4Gy2ALnAQl/ThV1sbRImhsuB59JyNUWIokqLgL2kaeVJEUAxYQjuCNsM3npKa/OJU6LGg+TUPo2mhecVQqbgyMP4pO/xktDF\n MA2hrtkBbs4DFi/XcdawN7U/aXz8zs+JKNG/ivxdLpSLLwUklGq5jJ5m5EkM1odeia2riMDinKHVED9wNtH3gLvgguvzAV0iZ\n iK6EjzBHAnVFzqwiioOzjswpVGpWiaHA1Q2JyzJE20rDhfpl4EQe7W0NDP+vrYia4DloVnjsJhzrQhfBt5QL3Oxi1NrSFeUu9\n hE6huZUW2PyaqKqz9nmWh6JhfhiUB7qSEndfoVIykiSAD0w4dFm6TQr/SACfI5vsYTfKbAPOQBOeVR23lzqGCqXHmujH3gABv\n RM4qmfjzlAbzIAp3xexlJalZkJYEtTaG888TJM2Zxthp8Ke8gBuCOjDAU+dE9X+W47akeOYQzaFydu0TTtcRY/9XSZAxhvgPs\n +HG3Md+UYqoZ+Dj8e3wFzOOe7VOukRYdBcQxhcoWTK3FYJrl2DCN8aElyjqaq22yv82DIJ+kTHAIXduBP57psSZQ9nh3DmNGv\n 1sBqIpzBRDUMdrI/qUPgFoO7WzojX/eaF3k7hgmmX+GBebbnTuYOgl5lIeWf7O5VY/mV6+mbY5ggmMrB0Em4F0rQV2GmOmvKh\n +GdUE9o1JVI+GbzlEq+9vnuGLNCbQ2khqAkLCmSW6Ak2Y6ZzHTjIQxtx7YgCtyWq9vr1ZaCOsasFP1gEnxn6FaA3QeladzNRk\n I1lYKZRbj9IvzlXOcnzXZ7DRfNMVYF6beT+g8mP0WQ9sUS7Xr3UkeElMha803CVjsKFR8zx4gMotee7NiVuhppWj2sri6CklX\n 47ff63e14C9wM/hslXLHBz3ZCZKNTWEk5xonS9IqUZCIxR0H4LOgFVkNdXwVtGPwh+qTfRkjBagbc7oeHiEKGIH0QafhvoaC2\n 585nw29DfFxsoPt/xVRTYe71KyQAAAAASUVORK5CYII=`\n);\naxisIconMap.set(\n 'negX', `data:image/png;base64,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\n 5ErkJggg==`\n);\naxisIconMap.set(\n 'negY', `data:image/png;base64,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\n 5ErkJggg==`\n);\naxisIconMap.set(\n 'negZ', `data:image/png;base64,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`\n);\n","import { Texture, noop } from '@galacean/effects';\nimport type { Engine, math } from '@galacean/effects';\n\ntype Vector3 = math.Vector3;\n\n/**\n * 下载图片\n * @param imageUrl - 图片url\n * @returns 图片对象\n */\nexport async function createImage (imageUrl: string): Promise<HTMLImageElement> {\n const image = new Image();\n\n image.src = imageUrl;\n\n return new Promise<HTMLImageElement>((resolve, reject) => {\n image.onload = () => {\n resolve(image);\n };\n image.onerror = reject;\n });\n}\n\n/**\n * 创建 Texture 对象\n * @param engine - engine 对象\n * @param image - 图片对象\n * @returns 纹理\n */\nexport function createTexture (engine: Engine, image: HTMLImageElement, hookDestroy?: boolean): Texture {\n\n const texture = Texture.create(engine, { image });\n\n if (hookDestroy) {\n texture.dispose = noop;\n }\n\n return texture;\n}\n\n/**\n * 移动到距离目标点指定距离的位置\n * @param targetPos - 目标点\n * @param currentPos - 当前点\n * @returns 指定点\n */\nexport function moveToPointWidthFixDistance (targetPos: Vector3, currentPos: Vector3): Vector3 {\n const vecCameraItem = currentPos.clone().subtract(targetPos);\n\n const normalVecCameraItem = vecCameraItem.clone().normalize();\n const scalerVecCameraItem = normalVecCameraItem.clone().multiply(20);\n\n const vecScalerItem = vecCameraItem.clone().subtract(scalerVecCameraItem);\n const vecItemScaler = vecScalerItem.clone().multiply(-1);\n\n return currentPos.clone().add(vecItemScaler);\n}\n","import type { GeometryDrawMode, spec } from '@galacean/effects';\n\nexport interface GizmoVFXItemOptions {\n target: string,\n subType: GizmoSubType,\n renderMode?: GeometryDrawMode,\n type: 'editor-gizmo',\n color: spec.vec3,\n size?: number,\n depthTest?: boolean,\n}\n\nexport const GizmoVFXItemType = 'gizmo' as spec.ItemType;\n\n/**\n * Gizmo 类型\n */\nexport enum GizmoSubType {\n particleEmitter = 1,\n modelWireframe = 2,\n box,\n sphere,\n cylinder,\n cone,\n torus,\n sprite,\n plane,\n rotation,\n translation,\n scale,\n viewHelper,\n camera,\n frustum,\n light,\n directionLight,\n pointLight,\n spotLight,\n boundingBox,\n floorGrid,\n}\n","import { math } from '@galacean/effects';\n\nexport type Ray = math.Ray;\nexport type TriangleLike = math.TriangleLike;\ntype Vector3 = math.Vector3;\n\nconst { Vector3, Ray } = math;\n\n/**\n * 包围盒类型\n */\nexport enum BoundingType {\n box,\n sphere,\n triangle,\n line\n}\n\n/**\n * 线条包围盒类型\n */\nexport interface GizmoItemBoundingLine {\n type: BoundingType.line,\n // 线条包围盒两端点\n points: [Vector3, Vector3],\n // 射线与线条距离阈值\n width: number,\n}\n\n/**\n * 立方体包围盒类型\n */\nexport interface GizmoItemBoundingBox {\n type: BoundingType.box,\n //包围形状相对于元素位置的偏移,默认[0,0,0]\n center?: Vector3,\n //包围盒的xyz长度,当type为box时生效\n size: Vector3,\n}\n\n/**\n * 球体包围盒类型\n */\nexport interface GizmoItemBoundingSphere {\n type: BoundingType.sphere,\n //包围形状相对于元素位置的偏移,默认[0,0,0]\n center?: Vector3,\n //包围球的半径,当type为sphere时生效\n radius: number,\n}\n\n/**\n * 三角数组包围盒类型\n */\nexport interface GizmoItemBoundingTriangle {\n type: BoundingType.triangle,\n triangles: TriangleLike[],\n backfaceCulling?: boolean,\n}\n\nexport type GizmoItemBounding =\n | GizmoItemBoundingBox\n | GizmoItemBoundingSphere\n | GizmoItemBoundingTriangle\n | GizmoItemBoundingLine\n ;\n","import { math } from '@galacean/effects';\n\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\n\nconst { Matrix4, Vector2 } = math;\n\nexport function distanceOfPointAndLine (point: Vector2, line: [Vector2, Vector2]): { distance: number, isInLine: boolean } {\n //三角形三个边长\n const AC = new Vector2();\n const BC = new Vector2();\n const AB = new Vector2();\n\n AC.subtractVectors(point, line[0]);\n BC.subtractVectors(point, line[1]);\n AB.subtractVectors(line[1], line[0]);\n const lengthAC = AC.length();\n const lengthBC = BC.length();\n const lengthAB = AB.length();\n\n //利用海伦公式计算三角形面积\n //周长的一半\n const P = (lengthAC + lengthBC + lengthAB) / 2;\n const allArea = Math.abs(Math.sqrt(P * (P - lengthAC) * (P - lengthBC) * (P - lengthAB)));\n //普通公式计算三角形面积反推点到线的垂直距离\n const distance = (2 * allArea) / lengthAB;\n const l1 = Math.sqrt(Math.pow(lengthAC, 2) - Math.pow(distance, 2));\n const l2 = Math.sqrt(Math.pow(lengthBC, 2) - Math.pow(distance, 2));\n let isInLine = false;\n\n if (l1 <= lengthAB && l2 <= lengthAB) {\n isInLine = true;\n }\n\n return {\n distance,\n isInLine,\n };\n}\n\nexport function projectionOfPointAndLine (point: Vector2, line: [Vector3, Vector3]): Vector3 {\n const AC = new Vector2();\n const BC = new Vector2();\n const AB = new Vector2();\n const line0 = line[0].toVector2();\n const line1 = line[1].toVector2();\n\n AC.subtractVectors(point, line0);\n BC.subtractVectors(point, line1);\n AB.subtractVectors(line1, line0);\n const lengthAC = AC.length();\n const lengthBC = BC.length();\n const lengthAB = AB.length();\n\n //利用海伦公式计算三角形面积\n //周长的一半\n const P = (lengthAC + lengthBC + lengthAB) / 2;\n const allArea = Math.abs(Math.sqrt(P * (P - lengthAC) * (P - lengthBC) * (P - lengthAB)));\n //普通公式计算三角形面积反推点到线的垂直距离\n const distance = (2 * allArea) / lengthAB;\n const l1 = Math.sqrt(Math.pow(lengthAC, 2) - Math.pow(distance, 2));\n const l2 = Math.sqrt(Math.pow(lengthBC, 2) - Math.pow(distance, 2));\n\n const worldAB = line[1].clone().subtract(line[0]);\n\n const worldAP = worldAB.clone().multiply(l1 / (l1 + l2));\n\n const worldP = line[0].clone().add(worldAP);\n\n return worldP;\n}\n\nexport function computeOrthographicOffCenter (\n left: number,\n right: number,\n bottom: number,\n top: number,\n near: number,\n far: number\n) {\n let a = 1.0 / (right - left);\n let b = 1.0 / (top - bottom);\n let c = 1.0 / (far - near);\n\n const tx = -(right + left) * a;\n const ty = -(top + bottom) * b;\n const tz = -(far + near) * c;\n\n a *= 2.0;\n b *= 2.0;\n c *= -2.0;\n\n return new Matrix4(\n a,\n 0.0,\n 0.0,\n 0.0,\n //\n 0.0,\n b,\n 0.0,\n 0.0,\n //\n 0.0,\n 0.0,\n c,\n 0.0,\n //\n tx,\n ty,\n tz,\n 1.0,\n );\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","/**\n * 基础几何数据[抽象类,不可以直接用来初始化]\n */\nexport abstract class GeometryData {\n points: number[] = [];\n uvs: number[] = [];\n normals: number[] = [];\n indices: number[] = [];\n\n /**\n * 构件 XY 平面圆(圆心为(0, 0, z))\n * @param radius - 圆半径\n * @param z - z 值\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n * @param startIndex - 索引起始值\n * @param points - 点数据\n * @param indices - 索引数据\n */\n createXYPlaneCircle (\n radius: number,\n z: number,\n segments: number,\n thetaStart: number,\n thetaLength: number,\n startIndex: number,\n points: number[],\n indices: number[],\n ) {\n for (let i = 0; i < segments; i++) {\n const theta = thetaStart + i * thetaLength / segments;\n const x = radius * Math.cos(theta);\n const y = radius * Math.sin(theta);\n\n points.push(x, y, z);\n indices.push(startIndex + i, startIndex + (i + 1) % segments);\n }\n }\n\n /**\n * 构件 XZ 平面圆(圆心为(0, y, 0))\n * @param radius - 圆半径\n * @param y - y 值\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n * @param startIndex - 索引起始值\n * @param points - 点数据\n * @param indices - 索引数据\n */\n createXZPlaneCircle (\n radius: number,\n y: number,\n segments: number,\n thetaStart: number,\n thetaLength: number,\n startIndex: number,\n points: number[],\n indices: number[],\n ) {\n for (let i = 0; i < segments; i++) {\n const theta = thetaStart + i * thetaLength / segments;\n const x = radius * Math.cos(theta);\n const z = radius * Math.sin(theta);\n\n points.push(x, y, z);\n indices.push(startIndex + i, startIndex + (i + 1) % segments);\n }\n }\n\n /**\n * 构件 YZ 平面圆(圆心为(x, 0, 0))\n * @param radius - 圆半径\n * @param x - x 值\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n * @param startIndex - 索引起始值\n * @param points - 点数据\n * @param indices - 索引数据\n */\n createYZPlaneCircle (\n radius: number,\n x: number,\n segments: number,\n thetaStart: number,\n thetaLength: number,\n startIndex: number,\n points: number[],\n indices: number[],\n ) {\n for (let i = 0; i < segments; i++) {\n const theta = thetaStart + i * thetaLength / segments;\n const z = radius * Math.cos(theta);\n const y = radius * Math.sin(theta);\n\n points.push(x, y, z);\n indices.push(startIndex + i, startIndex + (i + 1) % segments);\n }\n }\n}\n","import { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Vector3 } = math;\n\n/**\n *\n */\nexport class SphereGeometryData extends GeometryData {\n /**\n *\n * @param radius\n * @param widthSegments\n * @param heightSegments\n * @param phiStart\n * @param phiLength\n * @param thetaStart\n * @param thetaLength\n */\n constructor (\n radius = 1,\n widthSegments = 8,\n heightSegments = 6,\n phiStart = 0,\n phiLength = Math.PI * 2,\n thetaStart = 0,\n thetaLength = Math.PI,\n ) {\n super();\n\n // 限制至少需要分为六块以保持形状\n widthSegments = Math.max(3, Math.floor(widthSegments));\n heightSegments = Math.max(2, Math.floor(heightSegments));\n\n const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n const grid = [];\n let index = 0;\n\n for (let iy = 0; iy <= heightSegments; iy++) {\n const verticesRow = [];\n const v = iy / heightSegments;\n\n let uOffset = 0;\n\n if (iy == 0 && thetaStart == 0) {\n uOffset = 0.5 / widthSegments;\n } else if (iy == heightSegments && thetaEnd == Math.PI) {\n uOffset = - 0.5 / widthSegments;\n }\n\n for (let ix = 0; ix <= widthSegments; ix++) {\n const u = ix / widthSegments;\n\n // point\n const x = - radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n const y = radius * Math.cos(thetaStart + v * thetaLength);\n const z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n\n this.points.push(x, y, z);\n\n // normal\n const normal = new Vector3(x, y, z).normalize();\n\n this.normals.push(...normal.toArray());\n\n // uv\n this.uvs.push(u + uOffset, 1 - v);\n\n verticesRow.push(index++);\n }\n\n grid.push(verticesRow);\n }\n\n // indices\n for (let iy = 0; iy < heightSegments; iy++) {\n for (let ix = 0; ix < widthSegments; ix++) {\n const a = grid[iy][ix + 1];\n const b = grid[iy][ix];\n const c = grid[iy + 1][ix];\n const d = grid[iy + 1][ix + 1];\n\n if (iy !== 0 || thetaStart > 0) { this.indices.push(a, b, d); }\n if (iy !== heightSegments - 1 || thetaEnd < Math.PI) { this.indices.push(b, c, d); }\n }\n }\n }\n}\n","import type { spec } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\n// 面造型未单独抽离, 整个包围盒只接受一个材质\nexport class BoxGeometryData extends GeometryData {\n /**\n *\n * @param width\n * @param height\n * @param depth\n */\n constructor (width = 1, height = 1, depth = 1) {\n super();\n\n let numberOfVertices = 0;\n\n buildPlane(2, 1, 0, - 1, - 1, depth, height, width, this.points, this.uvs, this.normals, this.indices); // px\n buildPlane(2, 1, 0, 1, - 1, depth, height, - width, this.points, this.uvs, this.normals, this.indices); // nx\n buildPlane(0, 2, 1, 1, 1, width, depth, height, this.points, this.uvs, this.normals, this.indices); // py\n buildPlane(0, 2, 1, 1, - 1, width, depth, - height, this.points, this.uvs, this.normals, this.indices); // ny\n buildPlane(0, 1, 2, 1, - 1, width, height, depth, this.points, this.uvs, this.normals, this.indices); // pz\n buildPlane(0, 1, 2, - 1, - 1, width, height, - depth, this.points, this.uvs, this.normals, this.indices); // nz\n\n function buildPlane (u: number, v: number, w: number, uDir: number,\n vDir: number, width: number, height: number, depth: number,\n points: number[], uvs: number[], normals: number[], indices: number[]) {\n\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n const depthHalf = depth / 2;\n const point: spec.vec3 = [0, 0, 0];\n let vertexCounter = 0;\n\n for (let iy = 0; iy < 2; iy++) {\n const y = iy * height - heightHalf;\n\n for (let ix = 0; ix < 2; ix++) {\n const x = ix * width - widthHalf;\n\n point[u] = x * uDir;\n point[v] = y * vDir;\n point[w] = depthHalf;\n\n points.push(...point);\n\n point[u] = 0;\n point[v] = 0;\n point[w] = depth > 0 ? 1 : - 1;\n\n normals.push(...point);\n\n uvs.push(ix);\n uvs.push(1 - iy);\n\n vertexCounter += 1;\n }\n }\n\n for (let iy = 0; iy < 1; iy++) {\n for (let ix = 0; ix < 1; ix++) {\n const a = numberOfVertices + ix + 2 * iy;\n const b = numberOfVertices + ix + 2 * (iy + 1);\n const c = numberOfVertices + (ix + 1) + 2 * (iy + 1);\n const d = numberOfVertices + (ix + 1) + 2 * iy;\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n numberOfVertices += vertexCounter;\n }\n }\n}\n","import { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Vector3 } = math;\n\n/**\n *\n */\nexport class CylinderGeometryData extends GeometryData {\n /**\n *\n * @param radiusTop\n * @param radiusBottom\n * @param height\n * @param radialSegments\n * @param heightSegments\n * @param openEnded\n * @param thetaStart\n * @param thetaLength\n */\n constructor (\n radiusTop = 1,\n radiusBottom = 1,\n height = 1,\n radialSegments = 8,\n heightSegments = 1,\n openEnded = false,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n radialSegments = Math.floor(radialSegments);\n heightSegments = Math.floor(heightSegments);\n\n let index = 0;\n const indexArray: number[][] = [];\n const halfHeight = height / 2;\n\n generateTorso(this.points, this.uvs, this.normals, this.indices);\n\n if (openEnded === false) {\n if (radiusTop > 0) { generateCap(true, this.points, this.uvs, this.normals, this.indices); }\n if (radiusBottom > 0) { generateCap(false, this.points, this.uvs, this.normals, this.indices); }\n }\n\n function generateTorso (points: number[], uvs: number[], normals: number[], indices: number[]) {\n // this will be used to calculate the normal\n const slope = (radiusBottom - radiusTop) / height;\n\n for (let y = 0; y <= heightSegments; y++) {\n const indexRow = [];\n const v = y / heightSegments;\n\n const radius = v * (radiusBottom - radiusTop) + radiusTop;\n\n for (let x = 0; x <= radialSegments; x++) {\n const u = x / radialSegments;\n const theta = u * thetaLength + thetaStart;\n const sinTheta = Math.sin(theta);\n const cosTheta = Math.cos(theta);\n\n const px = radius * sinTheta;\n const py = - v * height + halfHeight;\n const pz = radius * cosTheta;\n\n points.push(px, py, pz);\n\n const normal = new Vector3(sinTheta, slope, cosTheta).normalize();\n\n normals.push(...normal.toArray());\n\n uvs.push(u, 1 - v);\n\n indexRow.push(index++);\n }\n indexArray.push(indexRow);\n }\n\n for (let x = 0; x < radialSegments; x++) {\n for (let y = 0; y < heightSegments; y++) {\n const a = indexArray[y][x];\n const b = indexArray[y + 1][x];\n const c = indexArray[y + 1][x + 1];\n const d = indexArray[y][x + 1];\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n }\n\n function generateCap (top: boolean, points: number[], uvs: number[], normals: number[], indices: number[]) {\n const centerIndexStart = index;\n\n const radius = (top === true) ? radiusTop : radiusBottom;\n const sign = (top === true) ? 1 : - 1;\n\n for (let x = 1; x <= radialSegments; x++) {\n points.push(0, halfHeight * sign, 0);\n normals.push(0, sign, 0);\n uvs.push(0.5, 0.5);\n\n index++;\n }\n\n const centerIndexEnd = index;\n\n for (let x = 0; x <= radialSegments; x++) {\n\n const u = x / radialSegments;\n const theta = u * thetaLength + thetaStart;\n\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n const px = radius * sinTheta;\n const py = halfHeight * sign;\n const pz = radius * cosTheta;\n\n points.push(px, py, pz);\n\n normals.push(0, sign, 0);\n\n const uvU = (cosTheta * 0.5) + 0.5;\n const uvV = (sinTheta * 0.5 * sign) + 0.5;\n\n uvs.push(uvU, uvV);\n\n index++;\n }\n\n for (let x = 0; x < radialSegments; x++) {\n const c = centerIndexStart + x;\n const i = centerIndexEnd + x;\n\n if (top === true) {\n indices.push(i, i + 1, c);\n } else {\n indices.push(i + 1, i, c);\n }\n }\n }\n }\n}\n","import { CylinderGeometryData } from './cylinder';\n\n/**\n *\n */\nexport class ConeGeometryData extends CylinderGeometryData {\n /**\n *\n * @param radius\n * @param height\n * @param radialSegments\n * @param heightSegments\n * @param openEnded\n * @param thetaStart\n * @param thetaLength\n */\n constructor (\n radius = 1,\n height = 1,\n radialSegments = 8,\n heightSegments = 1,\n openEnded = false,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n }\n}\n","import { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Vector3 } = math;\n\n/**\n *\n */\nexport class TorusGeometryData extends GeometryData {\n /**\n *\n * @param radius\n * @param tube\n * @param radialSegments\n * @param tubularSegments\n * @param arc\n */\n constructor (\n radius = 1,\n tube = 0.4,\n radialSegments = 64,\n tubularSegments = 64,\n arc = Math.PI * 2,\n ) {\n super();\n\n radialSegments = Math.floor(radialSegments);\n tubularSegments = Math.floor(tubularSegments);\n\n for (let j = 0; j <= radialSegments; j++) {\n for (let i = 0; i <= tubularSegments; i++) {\n\n const u = i / tubularSegments * arc;\n const v = j / radialSegments * Math.PI * 2;\n\n const px = (radius + tube * Math.cos(v)) * Math.cos(u);\n const py = (radius + tube * Math.cos(v)) * Math.sin(u);\n const pz = tube * Math.sin(v);\n\n this.points.push(px, py, pz);\n\n const cx = radius * Math.cos(u);\n const cy = radius * Math.sin(u);\n const p = new Vector3(px, py, pz);\n const c = new Vector3(cx, cy, 0);\n const normal = p.subtract(c).normalize();\n\n this.normals.push(...normal.toArray());\n\n this.uvs.push(i / tubularSegments);\n this.uvs.push(j / radialSegments);\n }\n }\n\n for (let j = 1; j <= radialSegments; j++) {\n for (let i = 1; i <= tubularSegments; i++) {\n const a = (tubularSegments + 1) * j + i - 1;\n const b = (tubularSegments + 1) * (j - 1) + i - 1;\n const c = (tubularSegments + 1) * (j - 1) + i;\n const d = (tubularSegments + 1) * j + i;\n\n this.indices.push(a, b, d);\n this.indices.push(b, c, d);\n }\n }\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n *\n */\nexport class PlaneGeometryData extends GeometryData {\n /**\n *\n * @param width\n * @param height\n * @param widthSegments\n * @param heightSegments\n */\n constructor (\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n ) {\n super();\n\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const segmentWidth = width / gridX;\n const segmentHeight = height / gridY;\n\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n\n this.points.push(x, - y, 0);\n this.normals.push(0, 0, 1);\n this.uvs.push(ix / gridX);\n this.uvs.push(1 - (iy / gridY));\n }\n }\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = (ix + 1) + gridX1 * (iy + 1);\n const d = (ix + 1) + gridX1 * iy;\n\n this.indices.push(a, b, d);\n this.indices.push(b, c, d);\n }\n }\n }\n}\n","import type { spec } from '@galacean/effects';\nimport { math } from '@galacean/effects';\nimport { GeometryData } from './geometry';\n\nconst { Euler, Vector3, Matrix4 } = math;\n\n/**\n *\n */\nexport class FrustumGeometryData extends GeometryData {\n /**\n *\n * @param position\n * @param rotation\n * @param fov\n * @param aspect\n * @param near\n * @param far\n */\n constructor (\n position: spec.vec3,\n rotation: spec.vec3,\n fov: number,\n aspect: number,\n near: number,\n far: number,\n ) {\n super();\n\n const fovY = fov / 180 * Math.PI;\n const ratio = aspect;\n const halfY = far * Math.tan(fovY / 2);\n const halfX = halfY * ratio;\n const point1 = new Vector3(halfX, halfY, far);\n const point2 = new Vector3(-halfX, halfY, far);\n const point3 = new Vector3(-halfX, -halfY, far);\n const point4 = new Vector3(halfX, -halfY, far);\n const matrix = Euler.fromArray(rotation).toMatrix4(new Matrix4());\n const result1 = matrix.transformPoint(point1).add(position);\n const result2 = matrix.transformPoint(point2).add(position);\n const result3 = matrix.transformPoint(point3).add(position);\n const result4 = matrix.transformPoint(point4).add(position);\n\n this.points.push(\n ...position,\n ...result1.toArray(), ...result2.toArray(),\n ...result3.toArray(), ...result4.toArray()\n );\n this.indices.push(0, 1, 0, 2, 0, 3, 0, 4, 1, 2, 2, 3, 3, 4, 4, 1);\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 方向光造型数据\n * lines\n */\nexport class DirectionLightData extends GeometryData {\n /**\n * 构造函数\n * @param radius - 圆半径\n * @param length - 光线长度\n * @param segments - 圆精度\n * @param linesNumber - 光线数量\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n */\n constructor (\n radius = 1,\n length = 2,\n segments = 64,\n linesNumber = 8,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n\n this.createXYPlaneCircle(radius, 0, segments, thetaStart, thetaLength, 0, this.points, this.indices);\n const start = segments % linesNumber / 2;\n const step = segments / linesNumber;\n\n for (let i = 0; i < linesNumber; i++) {\n const index = start + i * step;\n const x = this.points[3 * index];\n const y = this.points[3 * index + 1];\n const z = -length;\n\n this.points.push(x, y, z);\n this.indices.push(index, segments + i);\n }\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 点光源造型数据\n * lines\n */\nexport class PointLightData extends GeometryData {\n /**\n * 构造函数\n * @param range - 光照范围\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n */\n constructor (\n range = 10,\n segments = 64,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n this.createXYPlaneCircle(range, 0, segments, thetaStart, thetaLength, 0, this.points, this.indices);\n this.createXZPlaneCircle(range, 0, segments, thetaStart, thetaLength, segments, this.points, this.indices);\n this.createYZPlaneCircle(range, 0, segments, thetaStart, thetaLength, 2 * segments, this.points, this.indices);\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 聚光灯造型数据\n * lines\n */\nexport class SpotLightData extends GeometryData {\n /**\n * 构造函数\n * @param range - 光线范围\n * @param spotAngle - 光线范围[角度]\n * @param segments - 圆精度\n * @param thetaStart - 起始弧度\n * @param thetaLength - 终止弧度\n */\n constructor (\n range = 10,\n spotAngle = 30,\n segments = 64,\n thetaStart = 0,\n thetaLength = Math.PI * 2,\n ) {\n super();\n\n const angle = spotAngle / 2 / 180 * Math.PI;\n const radius = range * Math.tan(angle);\n\n this.createXYPlaneCircle(radius, -range, segments, thetaStart, thetaLength, 0, this.points, this.indices);\n this.points.push(0, 0, 0);\n const step = segments / 4;\n const start = segments % 4 / 2;\n\n for (let i = 0; i < 4; i++) {\n this.indices.push(segments, start + i * step);\n }\n }\n}\n","import { GeometryData } from './geometry';\n\n/**\n * 地板线边框造型数据\n * lines\n */\nexport class FloorLineEdgeGeometryData extends GeometryData {\n /**\n *\n * @param sideLength\n * @param parts\n */\n constructor (sideLength = 12, parts = 6) {\n super();\n\n let index = 0;\n\n const z = 0;\n const end = sideLength / 2;\n const start = -sideLength / 2;\n\n for (let i = 0; i <= parts; i++) {\n const v = start + i * sideLength / parts;\n\n this.points.push(v, start, z, v, end, z, start, v, z, end, v, z);\n this.indices.push(index, index + 1, index + 2, index + 3);\n index += 4;\n }\n }\n}\n","import type { Engine, GeometryDrawMode, spec } from '@galacean/effects';\nimport { Geometry } from '@galacean/effects';\nimport { SphereGeometryData } from './sphere';\nimport { BoxGeometryData } from './box';\nimport type { GeometryData } from './geometry';\nimport { CylinderGeometryData } from './cylinder';\nimport { ConeGeometryData } from './cone';\nimport { TorusGeometryData } from './torus';\nimport { PlaneGeometryData } from './plane';\nimport { FrustumGeometryData } from './frustum';\nimport { DirectionLightData } from './direction-light';\nimport { PointLightData } from './point-light';\nimport { SpotLightData } from './spot-light';\nimport { FloorLineEdgeGeometryData } from './floor-line-edge';\n\n/**\n * 几何体类型\n */\nexport enum GeometryType {\n Box,\n Sphere,\n Cylinder,\n Cone,\n Torus,\n Frustum,\n Sprite,\n Plane,\n DirectionLight,\n SpotLight,\n PointLight,\n FloorGrid,\n}\n\n/**\n * 几何体参数\n */\nexport interface MeshOption {\n size: any,\n color?: spec.vec3,\n renderMode: GeometryDrawMode,\n depthTest?: boolean,\n name?: string,\n alpha?: number,\n}\n\n/**\n * 合并多个几何体数据\n * @param geometries - 几何体数据数组\n * @returns 合并后的几何体数据\n */\n// export function combineGeometries (geometries: GeometryData[]): GeometryData {\n// const points: number[] = [];\n// const indices: number[] = [];\n// const uvs: number[] = [];\n// const normals: number[] = [];\n\n// for (let i = 0, indicesBase = 0; i < geometries.length; i++) {\n// const geometryData = geometries[i];\n// if (geometryData) {\n// points.push(...geometryData.points);\n// uvs.push(...geometryData.uvs);\n// normals.push(...geometryData.normals);\n// geometryData.indices.forEach(index => indices.push(index + indicesBase));\n// indicesBase += geometryData.points.length;\n// }\n// }\n\n// return {\n// points,\n// indices,\n// uvs,\n// normals,\n// };\n// }\n\n/**\n * 创建几何体对象\n * @param type - 几何体类型\n * @param size - 几何体尺寸\n * @param renderMode - 绘制模式:`gl.TRIANGLES`、`gl.LINES`\n * @returns\n */\nexport function createGeometry (engine: Engine, type: GeometryType, size: Record<string, any>, renderMode?: GeometryDrawMode): Geometry {\n let geometryData: GeometryData;\n\n switch (type) {\n case GeometryType.Sphere:\n geometryData = new SphereGeometryData(size.radius, size.widthSegments, size.heightSegments);\n\n break;\n case GeometryType.Cylinder:\n geometryData = new CylinderGeometryData(size.radius, size.radius, size.height);\n\n break;\n case GeometryType.Cone:\n geometryData = new ConeGeometryData(size.radius, size.height);\n\n break;\n case GeometryType.Torus:\n geometryData = new TorusGeometryData(size.radius, size.tube, size.radialSegments, size.tubularSegments, size.arc);\n\n break;\n case GeometryType.Sprite:\n case GeometryType.Plane:\n geometryData = new PlaneGeometryData(size.width, size.height);\n\n break;\n case GeometryType.Frustum:\n geometryData = new FrustumGeometryData(size.position, size.rotation, size.fov, size.aspect, size.near, size.far);\n\n break;\n case GeometryType.DirectionLight:\n geometryData = new DirectionLightData(size.radius, size.length, size.segments4, size.linesNumber, size.thetaStart, size.thetaLength);\n\n break;\n case GeometryType.PointLight:\n geometryData = new PointLightData(size.range, size.segments, size.thetaStart, size.thetaLength);\n\n break;\n case GeometryType.SpotLight:\n geometryData = new SpotLightData(size.range, size.spotAngle, size.segments, size.thetaStart, size.thetaLength);\n\n break;\n case GeometryType.FloorGrid:\n geometryData = new FloorLineEdgeGeometryData(size.sideLength, size.parts);\n\n break;\n default:\n geometryData = new BoxGeometryData(size.width, size.height, size.depth);\n\n break;\n }\n const result = Geometry.create(\n engine,\n {\n attributes: {\n a_Position: {\n size: 3,\n data: new Float32Array(geometryData.points),\n },\n a_Normal: {\n size: 3,\n data: new Float32Array(geometryData.normals),\n },\n a_UV1: {\n size: 2,\n data: new Float32Array(geometryData.uvs),\n },\n },\n indices: {\n data: new Uint16Array(geometryData.indices),\n },\n mode: renderMode,\n drawCount: geometryData.indices.length,\n });\n\n return result;\n}\n","import type { Engine, Geometry, spec } from '@galacean/effects';\nimport { glContext, Material, Mesh, Texture, Transform, math } from '@galacean/effects';\nimport type { MeshOption } from './geometry';\nimport { createGeometry, GeometryType } from './geometry';\nimport { GizmoSubType } from './define';\nimport type { GizmoItemBounding } from './gizmo-vfx-item';\nimport { BoundingType } from './gizmo-vfx-item';\nimport { color, renderMode } from './constants';\n\ntype vec3 = spec.vec3;\ntype Vector3 = math.Vector3;\ntype TriangleLike = math.TriangleLike;\nconst { Vector2, Vector3, Matrix4 } = math;\n\n/**\n * 根据 gizmoSubType 类型创建几何体 Mesh\n * @param subType - gizmoSubType 类型\n * @param boundingMap - 包围盒 Map\n * @param iconTexture - 图标纹理\n * @param options - 几何体参数\n * @returns 基础几何体 Mesh | 组合几何体 Map<Mesh, Transform>\n */\nexport function createMeshFromSubType (\n engine: Engine,\n subType: GizmoSubType,\n boundingMap: Map<string, GizmoItemBounding>,\n iconTexture?: Map<string, Texture>,\n options?: MeshOption\n): Mesh | Map<Mesh, Transform> {\n let result: Mesh | Map<Mesh, Transform>;\n\n if (!options) {\n options = { size: 0, renderMode: WebGLRenderingContext['TRIANGLES'] };\n }\n\n switch (subType) {\n case GizmoSubType.sprite:\n result = createSpriteMesh(engine, options);\n\n break;\n case GizmoSubType.camera:\n result = createSpriteMesh(engine, options, iconTexture ? iconTexture.get('camera') : undefined, boundingMap);\n\n break;\n case GizmoSubType.light:\n result = createSpriteMesh(engine, options, iconTexture ? iconTexture.get('light') : undefined, boundingMap);\n\n break;\n case GizmoSubType.translation:\n result = createTranslationMesh(engine, options, boundingMap);\n\n break;\n case GizmoSubType.scale:\n result = createScaleMesh(engine, options, boundingMap);\n\n break;\n case GizmoSubType.viewHelper:\n result = createViewHelperMesh(engine, options, boundingMap, iconTexture as Map<string, Texture>);\n\n break;\n case GizmoSubType.rotation:\n result = createRotationMesh(engine, options, boundingMap);\n\n break;\n default:\n result = createBasicMesh(engine, subType, options);\n\n break;\n }\n\n return result;\n}\n\n/**\n * 创建旋转组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createRotationMesh (\n engine: Engine,\n options: MeshOption,\n boundingMap: Map<string, GizmoItemBounding>,\n): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const size = {\n radius: 0.8 * scale,\n tube: 0.02 * scale,\n radiusSegments: 10 * scale,\n widthSegments: 20,\n heightSegments: 20,\n };\n const boundSize = { ...size, tube: size.tube * 2 };\n const name = 'rotation';\n const xCircle = createBasicMesh(engine, GizmoSubType.torus, {\n size, color: color.xAxisColor as vec3, renderMode, name,\n }, 'hideBack');\n const yCircle = createBasicMesh(engine, GizmoSubType.torus, {\n size, color: color.yAxisColor as vec3, renderMode, name,\n }, 'hideBack');\n const zCircle = createBasicMesh(engine, GizmoSubType.torus, {\n size, color: color.zAxisColor as vec3, renderMode, name,\n }, 'hideBack');\n const center = createBasicMesh(engine, GizmoSubType.sphere, {\n size, color: [0.3, 0.3, 0.3], alpha: 0.1, renderMode, name,\n }, 'blend');\n const xCircleBounding = createBasicMesh(engine, GizmoSubType.torus, {\n size: boundSize,\n color: color.xAxisColor as vec3,\n renderMode,\n });\n const yCircleBounding = createBasicMesh(engine, GizmoSubType.torus, {\n size: boundSize,\n color: color.yAxisColor as vec3,\n renderMode,\n });\n const zCircleBounding = createBasicMesh(engine, GizmoSubType.torus, {\n size: boundSize,\n color: color.zAxisColor as vec3,\n renderMode,\n });\n\n const xCircleTransform = new Transform({\n valid: true,\n });\n const yCircleTransform = new Transform({\n valid: true,\n });\n const zCircleTransform = new Transform({\n valid: true,\n });\n const centerTransform = new Transform({\n valid: true,\n });\n\n xCircleTransform.setRotation(0, 90, 0);\n yCircleTransform.setRotation(-90, 0, 0);\n zCircleTransform.setRotation(0, 0, 0);\n result.set(center, centerTransform);\n result.set(xCircle, xCircleTransform);\n result.set(yCircle, yCircleTransform);\n result.set(zCircle, zCircleTransform);\n\n boundingMap.set('xAxis', {\n type: BoundingType.triangle,\n triangles: xCircleBounding.firstGeometry() ? getTriangle(xCircleBounding.firstGeometry(), xCircleTransform) : [],\n backfaceCulling: true,\n });\n boundingMap.set('yAxis', {\n type: BoundingType.triangle,\n triangles: yCircleBounding.firstGeometry() ? getTriangle(yCircleBounding.firstGeometry(), yCircleTransform) : [],\n backfaceCulling: true,\n });\n boundingMap.set('zAxis', {\n type: BoundingType.triangle,\n triangles: zCircleBounding.firstGeometry() ? getTriangle(zCircleBounding.firstGeometry(), zCircleTransform) : [],\n backfaceCulling: true,\n });\n\n return result;\n}\n\n/**\n * 获取几何体的三角面数组\n * @internal\n * @param geometry - 几何体\n * @param transform - 变换式\n * @returns 三角面数组\n */\nfunction getTriangle (geometry: Geometry, transform: Transform): TriangleLike[] {\n const result: TriangleLike[] = [];\n const indices = geometry.getIndexData();\n const points = geometry.getAttributeData('a_Position');\n const mat4 = transform.getWorldMatrix();\n\n if (points && indices && indices.length > 0) {\n for (let i = 0; i < indices.length; i += 3) {\n const i0 = indices[i] * 3;\n const i1 = indices[i + 1] * 3;\n const i2 = indices[i + 2] * 3;\n const p0 = new Vector3(points[i0], points[i0 + 1], points[i0 + 2]);\n const p1 = new Vector3(points[i1], points[i1 + 1], points[i1 + 2]);\n const p2 = new Vector3(points[i2], points[i2 + 1], points[i2 + 2]);\n\n result.push({\n p0: mat4.projectPoint(p0),\n p1: mat4.projectPoint(p1),\n p2: mat4.projectPoint(p2),\n });\n\n }\n }\n\n return result;\n}\n\n/**\n * 创建位移组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createTranslationMesh (engine: Engine, options: MeshOption, boundingMap: Map<string, GizmoItemBounding>): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const axisSize = {\n width: 0.8 * scale,\n height: 0.02 * scale,\n depth: 0.02 * scale,\n };\n const name = 'translation';\n const axisMesh = createAxisMesh(engine, axisSize, false, name);\n\n for (const [mesh, transform] of axisMesh) {\n result.set(mesh, transform);\n }\n\n const arrowSize = {\n radius: 0.05 * scale,\n height: 0.2 * scale,\n };\n const xArrow = createBasicMesh(engine, GizmoSubType.cone, {\n size: arrowSize,\n color: color.xAxisColor as vec3,\n renderMode,\n depthTest: true,\n name,\n }, 'blend');\n const yArrow = createBasicMesh(engine, GizmoSubType.cone, {\n size: arrowSize,\n color: color.yAxisColor as vec3,\n renderMode,\n depthTest: true,\n name,\n }, 'blend');\n const zArrow = createBasicMesh(engine, GizmoSubType.cone, {\n size: arrowSize,\n color: color.zAxisColor as vec3,\n renderMode,\n name,\n depthTest: true,\n }, 'blend');\n const xArrowTransform = new Transform({\n valid: true,\n });\n const yArrowTransform = new Transform({\n valid: true,\n });\n const zArrowTransform = new Transform({\n valid: true,\n });\n\n xArrowTransform.setRotation(0, 0, 90);\n yArrowTransform.setRotation(0, 0, 0);\n zArrowTransform.setRotation(-90, 0, 0);\n xArrowTransform.translate(axisSize.width, 0, 0);\n yArrowTransform.translate(0, axisSize.width, 0);\n zArrowTransform.translate(0, 0, axisSize.width);\n\n const planeSize = {\n width: 0.2 * scale,\n height: 0.2 * scale,\n };\n const xyPlane = createBasicMesh(engine, GizmoSubType.plane, {\n size: planeSize, color: color.zAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const yzPlane = createBasicMesh(engine, GizmoSubType.plane, {\n size: planeSize, color: color.xAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const zxPlane = createBasicMesh(engine, GizmoSubType.plane, {\n size: planeSize, color: color.yAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const xyPlaneTransform = new Transform({\n valid: true,\n });\n const yzPlaneTransform = new Transform({\n valid: true,\n });\n const zxPlaneTransform = new Transform({\n valid: true,\n });\n const delta = axisSize.width / 8;\n\n xyPlaneTransform.translate(planeSize.width / 2 + delta, planeSize.height / 2 + delta, 0);\n yzPlaneTransform.setRotation(0, 90, 0);\n yzPlaneTransform.translate(0, planeSize.height / 2 + delta, planeSize.width / 2 + delta);\n zxPlaneTransform.setRotation(-90, 0, 0);\n zxPlaneTransform.translate(planeSize.width / 2 + delta, 0, planeSize.height / 2 + delta);\n\n result.set(xArrow, xArrowTransform);\n result.set(yArrow, yArrowTransform);\n result.set(zArrow, zArrowTransform);\n result.set(xyPlane, xyPlaneTransform);\n result.set(yzPlane, yzPlaneTransform);\n result.set(zxPlane, zxPlaneTransform);\n\n createAxisBounding({ width: arrowSize.radius * 2.4, length: axisSize.width + arrowSize.height / 2 }, boundingMap);\n boundingMap.set('xyPlane', {\n type: BoundingType.triangle,\n triangles: xyPlane.firstGeometry() ? getTriangle(xyPlane.firstGeometry(), xyPlaneTransform) : [],\n backfaceCulling: false,\n });\n\n // FIXME: getTriangle 函数调用 getWorldMatrix 后 worldMatrix被修改\n boundingMap.set('yzPlane', {\n type: BoundingType.triangle,\n triangles: yzPlane.firstGeometry() ? getTriangle(yzPlane.firstGeometry(), yzPlaneTransform) : [],\n backfaceCulling: false,\n });\n boundingMap.set('zxPlane', {\n type: BoundingType.triangle,\n triangles: zxPlane.firstGeometry() ? getTriangle(zxPlane.firstGeometry(), zxPlaneTransform) : [],\n backfaceCulling: false,\n });\n\n return result;\n}\n\n/**\n * 创建缩放组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createScaleMesh (engine: Engine, options: MeshOption, boundingMap: Map<string, GizmoItemBounding>): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const axisSize = {\n width: 0.8 * scale,\n height: 0.02 * scale,\n depth: 0.02 * scale,\n };\n const name = 'scale';\n const axisMesh = createAxisMesh(engine, axisSize, false, name);\n\n for (const [mesh, transform] of axisMesh) {\n result.set(mesh, transform);\n }\n const boxSize = {\n width: 0.1 * scale,\n height: 0.1 * scale,\n depth: 0.1 * scale,\n };\n const centerBoxSize = {\n width: 0.2 * scale,\n height: 0.2 * scale,\n depth: 0.2 * scale,\n };\n const xCube = createBasicMesh(engine, GizmoSubType.box, {\n size: boxSize, color: color.xAxisColor as vec3, renderMode, depthTest: true, name,\n }, 'blend');\n const yCube = createBasicMesh(engine, GizmoSubType.box, {\n size: boxSize, color: color.yAxisColor as vec3, renderMode, depthTest: true, name,\n }, 'blend');\n const zCube = createBasicMesh(engine, GizmoSubType.box, {\n size: boxSize, color: color.zAxisColor as vec3, renderMode, depthTest: true, name,\n }, 'blend');\n const centerCube = createBasicMesh(engine, GizmoSubType.box, {\n size: centerBoxSize,\n color: [0.8, 0.8, 0.8],\n renderMode,\n depthTest: true,\n name,\n }, 'blend');\n const xCubeTransform = new Transform({\n valid: true,\n });\n const yCubeTransform = new Transform({\n valid: true,\n });\n const zCubeTransform = new Transform({\n valid: true,\n });\n const centerCubeTransform = new Transform({\n valid: true,\n });\n\n xCubeTransform.translate(axisSize.width, 0, 0);\n yCubeTransform.translate(0, axisSize.width, 0);\n zCubeTransform.translate(0, 0, axisSize.width);\n result.set(centerCube, centerCubeTransform);\n result.set(xCube, xCubeTransform);\n result.set(yCube, yCubeTransform);\n result.set(zCube, zCubeTransform);\n\n createAxisBounding({ width: boxSize.width * 1.2, length: axisSize.width + boxSize.width / 2 }, boundingMap);\n boundingMap.set('center', {\n type: BoundingType.sphere,\n center: new Vector3(),\n radius: Math.pow(Math.pow(centerBoxSize.width, 2) + Math.pow(centerBoxSize.height, 2) + Math.pow(centerBoxSize.depth, 2), 0.5) / 2,\n });\n\n return result;\n}\n\n/**\n * 创建视图辅助组件 Mesh 数组\n * @internal\n * @param options\n * @param boundingMap - 包围盒 Map\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createViewHelperMesh (engine: Engine, options: MeshOption, boundingMap: Map<string, GizmoItemBounding>, texture: Map<string, Texture>): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const scale = options.size.scale || 1;\n const axisSize = {\n width: 0.8 * scale,\n height: 0.02 * scale,\n depth: 0.02 * scale,\n };\n const axisMesh = createAxisMesh(engine, axisSize, true);\n\n for (const [mesh, transform] of axisMesh) {\n result.set(mesh, transform);\n }\n const planeSize = {\n width: 0.14 * scale,\n height: 0.14 * scale,\n };\n const length = (axisSize.width + planeSize.width) / 2;\n const depthTest = true;\n const posXSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('posX'));\n const posYSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('posY'));\n const posZSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('posZ'));\n const posXSphereTransform = new Transform({\n valid: true,\n });\n const posYSphereTransform = new Transform({\n valid: true,\n });\n const posZSphereTransform = new Transform({\n valid: true,\n });\n\n posXSphereTransform.translate(length, 0, 0);\n posYSphereTransform.translate(0, length, 0);\n posZSphereTransform.translate(0, 0, length);\n const negXSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('negX'));\n const negYSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('negY'));\n const negZSphere = createSpriteMesh(engine, { size: planeSize, renderMode, depthTest }, texture.get('negZ'));\n const negXSphereTransform = new Transform({\n valid: true,\n });\n const negYSphereTransform = new Transform({\n valid: true,\n });\n const negZSphereTransform = new Transform({\n valid: true,\n });\n\n negXSphereTransform.translate(-length, 0, 0);\n negYSphereTransform.translate(0, -length, 0);\n negZSphereTransform.translate(0, 0, -length);\n\n result.set(posXSphere, posXSphereTransform);\n result.set(posYSphere, posYSphereTransform);\n result.set(posZSphere, posZSphereTransform);\n result.set(negXSphere, negXSphereTransform);\n result.set(negYSphere, negYSphereTransform);\n result.set(negZSphere, negZSphereTransform);\n\n const radius = (planeSize.height / 2) * 1.2;\n\n boundingMap.set('posX', {\n type: BoundingType.sphere,\n center: posXSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('posY', {\n type: BoundingType.sphere,\n center: posYSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('posZ', {\n type: BoundingType.sphere,\n center: posZSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('negX', {\n type: BoundingType.sphere,\n center: negXSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('negY', {\n type: BoundingType.sphere,\n center: negYSphereTransform.position,\n radius: radius,\n });\n boundingMap.set('negZ', {\n type: BoundingType.sphere,\n center: negZSphereTransform.position,\n radius: radius,\n });\n\n return result;\n}\n\n/**\n * 创建坐标轴 Mesh 数组\n * @internal\n * @param axisSize - 坐标轴尺寸\n * @param isCentered - 是否居中,默认 false\n * @returns Mesh 数组和对应的 Transform 组成的 Map\n */\nfunction createAxisMesh (engine: Engine, axisSize: { width: number, height: number, depth: number }, isCentered = false, name?: string): Map<Mesh, Transform> {\n const result: Map<Mesh, Transform> = new Map();\n const xAxis = createBasicMesh(engine, GizmoSubType.box, {\n size: axisSize, color: color.xAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const yAxis = createBasicMesh(engine, GizmoSubType.box, {\n size: axisSize, color: color.yAxisColor as vec3, renderMode, depthTest: true, name,\n });\n const zAxis = createBasicMesh(engine, GizmoSubType.box, {\n size: axisSize, color: color.zAxisColor as vec3, renderMode, depthTest: true, name,\n });\n\n const xAxisTransform = new Transform({\n valid: true,\n });\n const yAxisTransform = new Transform({\n valid: true,\n });\n const zAxisTransform = new Transform({\n valid: true,\n });\n\n yAxisTransform.setRotation(0, 0, 90);\n zAxisTransform.setRotation(0, -90, 0);\n if (!isCentered) {\n xAxisTransform.translate(axisSize.width / 2, 0, 0);\n yAxisTransform.translate(0, axisSize.width / 2, 0);\n zAxisTransform.translate(0, 0, axisSize.width / 2);\n }\n result.set(xAxis, xAxisTransform);\n result.set(yAxis, yAxisTransform);\n result.set(zAxis, zAxisTransform);\n\n return result;\n}\n\n/**\n * 创建基础几何体 Mesh\n * @internal\n * @param subType - gizmoSubType 类型\n * @param options - 几何体参数\n * @returns 几何体 Mesh\n */\nfunction createBasicMesh (engine: Engine, subType: GizmoSubType, options: MeshOption, materialType = 'default'): Mesh {\n const {\n size, color, alpha, renderMode, depthTest, name,\n } = options;\n let geometryType: GeometryType;\n\n switch (subType) {\n case GizmoSubType.sphere:\n geometryType = GeometryType.Sphere;\n\n break;\n case GizmoSubType.cylinder:\n geometryType = GeometryType.Cylinder;\n\n break;\n case GizmoSubType.cone:\n geometryType = GeometryType.Cone;\n\n break;\n case GizmoSubType.torus:\n geometryType = GeometryType.Torus;\n\n break;\n case GizmoSubType.sprite:\n geometryType = GeometryType.Sprite;\n\n break;\n case GizmoSubType.plane:\n geometryType = GeometryType.Plane;\n\n break;\n case GizmoSubType.frustum:\n geometryType = GeometryType.Frustum;\n\n break;\n case GizmoSubType.directionLight:\n geometryType = GeometryType.DirectionLight;\n\n break;\n case GizmoSubType.spotLight:\n geometryType = GeometryType.SpotLight;\n\n break;\n case GizmoSubType.pointLight:\n geometryType = GeometryType.PointLight;\n\n break;\n case GizmoSubType.floorGrid:\n geometryType = GeometryType.FloorGrid;\n\n break;\n default:\n geometryType = GeometryType.Box;\n\n break;\n }\n const geometry = createGeometry(engine, geometryType, size, renderMode);\n let material;\n\n switch (materialType) {\n case 'blend':\n material = createBlendMaterial(engine, color, depthTest, alpha);\n\n break;\n case 'hideBack':\n material = createHideBackMaterial(engine, color, depthTest);\n\n break;\n default:\n material = createMaterial(engine, color, depthTest);\n\n break;\n }\n\n return Mesh.create(\n engine,\n {\n name: name ? name : geometryType.toString(),\n geometry,\n material,\n priority: 3000,\n });\n}\n\n/**\n * @internal\n * @param options\n * @param texture\n * @param boundingMap\n * @returns\n */\nfunction createSpriteMesh (engine: Engine, options: MeshOption, texture?: Texture, boundingMap?: Map<string, GizmoItemBounding>): Mesh {\n const geometry = createGeometry(engine, GeometryType.Sprite, options.size, renderMode);\n let spriteColor;\n\n if (texture) {\n spriteColor = texture;\n } else {\n spriteColor = options.color;\n }\n\n const material = createSpriteMaterial(engine, spriteColor, options.depthTest);\n\n if (boundingMap) {\n boundingMap.set('sprite', {\n type: BoundingType.sphere,\n radius: Math.pow(Math.pow(options.size.width, 2) + Math.pow(options.size.height, 2), 0.5) / 2,\n });\n }\n\n return Mesh.create(\n engine,\n {\n name: options.name || 'sprite',\n geometry,\n material,\n priority: 3000,\n });\n}\n\n/**\n * 创建材质\n * @internal\n * @param color - 颜色\n * @param depthTest\n * @returns 纯色材质,无光照,无透明\n */\nfunction createMaterial (engine: Engine, color?: vec3, depthTest?: boolean): Material {\n const myColor = color ? Vector3.fromArray(color) : new Vector3(255, 255, 255);\n const myDepthTest = depthTest ? depthTest : false;\n\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(myColor.toArray()),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n },\n shader: {\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n\n void main(){\n gl_FragColor = vec4(u_color,1.0);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n\n void main(){\n gl_Position = _MatrixP * effects_MatrixV * u_model * vec4(a_Position,1.0);\n }`,\n shared: true,\n },\n });\n\n material.setVector3('u_color', myColor);\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = false;\n material.depthMask = true;\n\n return material;\n}\n\n/**\n *\n * @internal\n * @param color\n * @param depthTest\n * @returns\n */\nfunction createHideBackMaterial (engine: Engine, color?: vec3, depthTest?: boolean): Material {\n const myColor = color ? Vector3.fromArray(color) : new Vector3(255, 255, 255);\n const myDepthTest = depthTest ? depthTest : false;\n\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(myColor.toArray()),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n u_cameraPos: new Float32Array([0, 0, 0]),\n u_center: new Float32Array([0, 0, 0]),\n },\n shader: {\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n\n varying float flag;\n\n void main(){\n if(flag > 0.0) {\n discard;\n }\n\n gl_FragColor = vec4(u_color,1.0);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n\n uniform vec3 u_cameraPos;\n uniform vec3 u_center;\n\n varying float flag;\n void main(){\n float distance = length(u_cameraPos - u_center);\n vec3 worldPosition = (u_model * vec4(a_Position,1.0)).xyz;\n flag = length(u_cameraPos - worldPosition) - distance;\n gl_Position = _MatrixP * effects_MatrixV * u_model * vec4(a_Position,1.0);\n }`,\n shared: true,\n },\n });\n\n material.setVector3('u_color', myColor);\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.setVector3('u_cameraPos', Vector3.ZERO);\n material.setVector3('u_center', Vector3.ZERO);\n\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = false;\n material.depthMask = true;\n\n return material;\n}\n\n/**\n *\n * @internal\n * @param color\n * @param depthTest\n * @param alpha\n * @returns\n */\nfunction createBlendMaterial (engine: Engine, color?: vec3, depthTest?: boolean, alpha?: number): Material {\n const myColor = color ? Vector3.fromArray(color) : new Vector3(255, 255, 255);\n const myDepthTest = depthTest ? depthTest : false;\n const myAlpha = alpha ? alpha : 1;\n\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(myColor.toArray()),\n u_alpha: new Float32Array([myAlpha, 0]),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n },\n shader: {\n shared: true,\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n uniform vec2 u_alpha;\n\n void main(){\n gl_FragColor = vec4(u_color,u_alpha);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n void main(){\n gl_Position = _MatrixP * effects_MatrixV * u_model * vec4(a_Position,1.0);\n }`,\n },\n });\n\n material.setVector3('u_color', myColor);\n material.setVector2('u_alpha', new Vector2(myAlpha, 0));\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = true;\n material.blendEquation = [glContext.FUNC_ADD, glContext.FUNC_ADD];\n material.blendFunction = [glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA, glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA];\n material.depthMask = true;\n\n return material;\n}\n\nfunction createSpriteMaterial (engine: Engine, data?: vec3 | Texture, depthTest?: boolean): Material {\n const myDepthTest = depthTest ? depthTest : false;\n const uniformValues = {\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n u_alpha: new Float32Array([1, 0]),\n };\n\n const material = Material.create(\n engine,\n {\n uniformValues,\n shader: {\n shared: true,\n fragment: `\n precision highp float;\n\n uniform vec2 u_alpha;\n uniform vec3 u_color;\n uniform sampler2D u_iconTex;\n\n varying vec2 v_uv;\n\n void main(){\n vec4 color = texture2D(u_iconTex, vec2(v_uv.x, 1.0 - v_uv.y));\n if(color.a < 0.001)\n {\n discard;\n }\n gl_FragColor = vec4(color.xyz, color.w * u_alpha.x);\n }`,\n vertex: `\n precision highp float;\n\n attribute vec3 a_Position;\n attribute vec2 a_UV1;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixV;\n uniform mat4 _MatrixP;\n uniform mat4 effects_MatrixInvV;\n varying vec2 v_uv;\n\n void main(){\n v_uv = a_UV1;\n vec4 pos = u_model * vec4(0., 0., 0., 1.0);\n // vec4 pos = u_model * vec4(a_Position,1.0);\n\n pos.xyz += effects_MatrixInvV[0].xyz * a_Position.x + effects_MatrixInvV[1].xyz * a_Position.y;\n gl_Position = _MatrixP * effects_MatrixV * pos;\n }`,\n },\n });\n\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.setVector2('u_alpha', new Vector2(1, 0));\n\n if (data instanceof Texture) {\n material.setTexture('u_iconTex', data);\n // uniformValues.u_iconTex = data;\n } else {\n let color: Vector3;\n\n if (data === undefined) {\n color = new Vector3(255, 255, 255);\n } else {\n color = Vector3.fromArray(data);\n }\n material.setVector3('u_color', color);\n // uniformValues.u_color = new Float32Array(color);\n }\n\n material.depthTest = myDepthTest;\n material.stencilTest = false;\n material.blending = true;\n material.blendEquation = [glContext.FUNC_ADD, glContext.FUNC_ADD];\n material.blendFunction = [glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA, glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA];\n\n return material;\n}\n\n/**\n * 创建坐标轴包围盒\n * @internal\n * @param size 包围盒尺寸\n * @param boundingMap 包围盒 Map\n */\nfunction createAxisBounding (size: { width: number, length: number }, boundingMap: Map<string, GizmoItemBounding>) {\n boundingMap.set('xAxis', {\n type: BoundingType.line,\n points: [new Vector3(0, 0, 0), new Vector3(size.length, 0, 0)],\n width: size.width,\n });\n boundingMap.set('yAxis', {\n type: BoundingType.line,\n points: [new Vector3(0, 0, 0), new Vector3(0, size.length, 0)],\n width: size.width,\n });\n boundingMap.set('zAxis', {\n type: BoundingType.line,\n points: [new Vector3(0, 0, 0), new Vector3(0, 0, size.length)],\n width: size.width,\n });\n}\n","import type { Camera } from '@galacean/effects';\nimport { math } from '@galacean/effects';\nimport { distanceOfPointAndLine, projectionOfPointAndLine } from './math-utils';\n\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\ntype Matrix4 = math.Matrix4;\n\nconst { Matrix4, Vector2, Vector3 } = math;\n\n/**\n * 线条包围盒射线检测算法\n * @param out - 射线与包围盒交点位置\n * @param pointInCanvas - 归一化的画布交互点坐标\n * @param points - 线条包围盒两端点位置\n * @param radius - 线条包围盒辐射半径\n * @param camera - 相机对象\n * @returns 射线与包围盒交点位置 | undefined\n */\nexport function intersectRayLine (\n out: Vector3,\n pointInCanvas: Vector2,\n points: [p0: Vector3, p1: Vector3],\n radius: number,\n worldMat4: Matrix4,\n camera: Camera,\n): Vector3 | undefined {\n // 构造一个辐射半径边缘的点 radiusPoint\n const up = new Vector3(\n worldMat4.elements[1],\n worldMat4.elements[5],\n worldMat4.elements[9],\n ).normalize();\n\n const radiusPoint = up.clone().multiply(radius);\n\n radiusPoint.add(points[0]);\n\n // 计算 start、end、radius 在屏幕空间上的投影\n const mvpMat4 = camera.getModelViewProjection(new Matrix4(), worldMat4);\n\n const screenStart = mvpMat4.projectPoint(points[0], new Vector3());\n const screenEnd = mvpMat4.projectPoint(points[1], new Vector3());\n const screenRadiusPoint = mvpMat4.projectPoint(radiusPoint, new Vector3());\n\n const screenRadiusVector = screenRadiusPoint.clone().subtract(screenStart);\n\n const screenRadius = screenRadiusVector.length();\n\n // 计算屏幕交互点与线条的距离\n const { distance, isInLine } = distanceOfPointAndLine(pointInCanvas, [screenStart.toVector2(), screenEnd.toVector2()]);\n\n if (distance <= screenRadius && isInLine) { // 距离小于阈值且交互点在线条上的投影位于线段内\n // 计算交互点在线条上的投影并转换为世界坐标\n const screenPosition = projectionOfPointAndLine(pointInCanvas, [screenStart, screenEnd]);\n const inverseViewProjection = camera.getInverseViewProjectionMatrix();\n\n inverseViewProjection.projectPoint(screenPosition, out);\n\n return out;\n }\n}\n","import type { Engine, spec } from '@galacean/effects';\nimport { Geometry, Material, Mesh, glContext, math } from '@galacean/effects';\n\ntype vec3 = spec.vec3;\ntype Vector3 = math.Vector3;\ntype Matrix4 = math.Matrix4;\n\nconst { Euler, Vector3, Matrix4 } = math;\n\nconst rectSize = 0.04;\nconst DEG2RAD = Math.PI / 180;\n\ninterface GeometryData {\n points: Vector3[],\n indices: number[],\n}\n\ninterface ArcPathOptions {\n plane?: string,\n translate?: vec3,\n rotate?: vec3,\n}\n\nfunction arcPath (radius: number, arc: number, options: ArcPathOptions = {}): GeometryData {\n const { plane, translate = [0, 0, 0], rotate = [0, 0, 0] } = options;\n const rotMat4 = Euler.fromArray(rotate).negate().toMatrix4(new Matrix4());\n const points: Vector3[] = [];\n const indices = [];\n\n addPoint(radius, 0);\n let i = 1;\n\n for (; i <= arc; i++) {\n const angle = i * DEG2RAD;\n\n indices.push(i - 1, i);\n addPoint(Math.cos(angle) * radius, Math.sin(angle) * radius);\n }\n\n return {\n points,\n indices,\n };\n\n function addPoint (cos: number, sin: number) {\n const point = new Vector3();\n\n if (plane === 'xz') {\n point.set(cos, 0, sin);\n } else if (plane === 'yz') {\n point.set(0, cos, sin);\n } else {\n point.set(cos, sin, 0);\n }\n rotMat4.transformNormal(point);\n points.push(point.add(translate));\n }\n}\n\nfunction line (p0: vec3, p1: vec3): GeometryData {\n return {\n points: [\n Vector3.fromArray(p0),\n Vector3.fromArray(p1),\n ],\n indices: [0, 1],\n };\n}\n\nfunction box (width: number, height: number, depth: number, center?: number[]): GeometryData {\n const w = width / 2;\n const h = height / 2;\n const d = depth / 2;\n const myCenter = center ?? [0, 0, 0];\n const points: Vector3[] = [\n [-w, h, -d], [-w, -h, -d], [-w, h, d], [-w, -h, d],\n [w, h, -d], [w, -h, -d], [w, h, d], [w, -h, d],\n ].map(item => {\n return new Vector3(item[0] + myCenter[0], item[1] + myCenter[1], item[2] + myCenter[2]);\n });\n\n return {\n points,\n indices: [\n 0, 1, 1, 3, 3, 2, 2, 0,\n 4, 5, 5, 7, 7, 6, 6, 4,\n 0, 4, 2, 6, 3, 7, 1, 5,\n ],\n };\n}\n\nfunction rect (width: number, height: number, pos?: vec3): GeometryData {\n const w = width / 2;\n const h = height / 2;\n const points: Vector3[] = [\n new Vector3(-w, h, 0),\n new Vector3(w, h, 0),\n new Vector3(w, -h, 0),\n new Vector3(-w, -h, 0),\n ];\n\n if (pos) {\n points.forEach(vec => {\n vec.add(pos);\n });\n }\n\n return {\n points,\n indices: [\n 0, 1, 1, 2, 2, 3, 3, 0,\n ],\n };\n}\n\nfunction combineGeometries (geometries: GeometryData[]) {\n const points: number[] = [];\n const indices: number[] = [];\n\n for (let i = 0, indicesBase = 0; i < geometries.length; i++) {\n const geometry = geometries[i];\n\n if (geometry) {\n geometry.points.forEach(point => {\n points.push(point.x, point.y, point.z);\n });\n geometry.indices.forEach(index => indices.push(index + indicesBase));\n indicesBase += geometry.points.length;\n }\n }\n\n return {\n points: new Float32Array(points),\n indices: new Uint16Array(indices),\n };\n}\n\nconst Shapes: Record<string, (arg: any) => GeometryData[]> = {\n Texture (arg: any) {\n const ret = [];\n\n if (arg.detail) {\n const anchors = arg.detail.anchors;\n const block = arg.detail.block;\n const width = arg.width;\n const height = arg.height;\n\n for (let i = 0; i < anchors.length; i += 2) {\n ret.push(rect(block[0] * width, block[1] * height, [\n width * (anchors[i] - 0.5),\n height * (anchors[i + 1] - 0.5),\n 0,\n ]));\n }\n } else {\n ret.unshift(Shapes.Rectangle(arg)[0]);\n }\n\n return ret;\n },\n Circle (arg: any) {\n const { radius, arc } = arg;\n\n return [\n arcPath(radius, arc),\n arc !== 360 && line([0, 0, 0], [radius, 0, 0]),\n arc !== 360 && line([0, 0, 0], [Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0]),\n ] as GeometryData[];\n },\n Box: function (arg: any) {\n const {\n width, height, depth, center,\n } = arg;\n const data = box(width, height, depth, center);\n\n return [data];\n },\n Sphere: function (arg) {\n const { radius, arc } = arg;\n const ret = [\n line([0, 0, -radius], [0, 0, radius]),\n arcPath(radius, arc > 180 ? 360 : 180, { plane: 'xz', rotate: [0, 90, 0] }),\n arcPath(radius, arc, { plane: 'xy' }),\n arcPath(radius, 180, { plane: 'xz', rotate: [0, 90, arc] }),\n ];\n\n if (arc > 90) {\n ret.push(arcPath(radius, arc > 270 ? 360 : 180, { plane: 'yz', rotate: [-90, 0, 0] }));\n }\n\n return ret;\n },\n Hemisphere (arg) {\n const { radius, arc } = arg;\n const ret = [\n line([0, 0, radius], [0, 0, 0]), //z\n line([arc > 180 ? -radius : 0, 0, 0], [radius, 0, 0]), //x\n arg > 90 && line([0, arc > 270 ? -radius : 0, 0], [0, radius, 0]), //y\n arcPath(radius, (arc > 180 ? 360 : 180) / 2, { plane: 'xz' }),\n arcPath(radius, arc, { plane: 'xy' }),\n arcPath(radius, 90, { plane: 'xz', rotate: [0, 0, arc] }),\n line([0, 0, 0], [Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0]),\n ] as GeometryData[];\n\n if (arc > 90) {\n ret.push(arcPath(radius, arc > 270 ? 180 : 90, { plane: 'yz' }));\n }\n\n return ret;\n },\n Cone (arg) {\n const { radius, arc } = arg;\n const outerRadius = radius * Math.tan(arg.angle * DEG2RAD) + radius;\n\n return [\n arcPath(outerRadius, arc, { translate: [0, 0, radius] }),\n line([radius, 0, 0], [outerRadius, 0, radius]),\n arc > 90 && line([0, radius, 0], [0, outerRadius, radius]),\n arc > 180 && line([-radius, 0, 0], [-outerRadius, 0, radius]),\n arc > 270 && line([0, -radius, 0], [0, -outerRadius, radius]),\n line([Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0],\n [Math.cos(arc * DEG2RAD) * outerRadius, Math.sin(arc * DEG2RAD) * outerRadius, radius]),\n ].concat(Shapes.Circle(arg)) as GeometryData[];\n },\n Edge (arg) {\n const hw = arg.width / 2;\n\n return [\n line([-hw, 0, 0], [hw, 0, 0]),\n ];\n },\n Rectangle (arg) {\n return [\n rect(arg.width, arg.height),\n ];\n },\n RectangleEdge (arg) {\n return [\n rect(arg.width, arg.height),\n ];\n },\n Donut (arg) {\n const { arc, radius, donutRadius } = arg;\n\n return [\n arcPath(donutRadius, 360, { translate: [radius, 0, 0], rotate: [90, 0, 0] }),\n arcPath(radius - donutRadius, arc),\n arcPath(radius + donutRadius, arc),\n arcPath(radius, arc, { translate: [0, 0, donutRadius] }),\n arcPath(radius, arc, { translate: [0, 0, -donutRadius] }),\n arc % 360 === 0 ? arcPath(donutRadius, 360, {\n translate: [-radius, 0, 0],\n rotate: [90, 0, 0],\n }) : arcPath(donutRadius, 360, {\n translate: [Math.cos(arc * DEG2RAD) * radius, Math.sin(arc * DEG2RAD) * radius, 0],\n rotate: [90, 0, arc],\n }),\n ];\n },\n path (arg) {\n const positions = arg.keys;\n const ret = [];\n\n for (let i = 0; i < positions.length - 1; i++) {\n ret.push(rect(rectSize, rectSize, positions[i]));\n ret.push(line(positions[i], positions[i + 1]));\n }\n ret.push(rect(rectSize, rectSize, positions[positions.length - 1]));\n\n return ret;\n },\n};\n\nShapes['0'] = Shapes.None;\nShapes['1'] = Shapes.Sphere;\nShapes['2'] = Shapes.Cone;\nShapes['3'] = Shapes.Hemisphere;\nShapes['4'] = Shapes.Circle;\nShapes['5'] = Shapes.Donut;\nShapes['6'] = Shapes.Rectangle;\nShapes['7'] = Shapes.RectangleEdge;\nShapes['8'] = Shapes.Edge;\nShapes['9'] = Shapes.Texture;\n\nexport function createMeshFromShape (engine: Engine, args: { shape: string, type?: number }, options: { color?: vec3, depthTest?: boolean }): Mesh {\n const ret = Shapes[args.type || args.shape](args);\n const geo = combineGeometries(ret);\n\n return createMesh(engine, geo.points, geo.indices, options.color || [1, 0, 0], options.depthTest, args.shape);\n}\n\nfunction createMesh (engine: Engine, points: Float32Array, indices: Uint16Array, color: vec3, depthTest = false, name?: string): Mesh {\n const material = Material.create(\n engine,\n {\n uniformValues: {\n u_color: new Float32Array(color),\n u_model: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),\n },\n shader: {\n shared: true,\n fragment: `\n precision mediump float;\n\n uniform vec3 u_color;\n\n void main(){\n gl_FragColor = vec4(u_color,1.0);\n }`,\n vertex: `precision highp float;\n\n attribute vec3 a_Position;\n\n uniform mat4 u_model;\n uniform mat4 effects_MatrixVP;\n void main(){\n gl_Position = effects_MatrixVP * u_model * vec4(a_Position,1.0);\n }`,\n },\n });\n\n material.setVector3('u_color', Vector3.fromArray(color));\n material.setMatrix('u_model', Matrix4.IDENTITY);\n material.depthTest = depthTest;\n material.stencilTest = false;\n material.blending = false;\n material.depthMask = true;\n const geometry = Geometry.create(\n engine,\n {\n attributes: {\n a_Position: {\n size: 3,\n data: points,\n },\n },\n indices: {\n data: indices,\n },\n mode: glContext.LINES,\n drawCount: indices.length,\n });\n\n return Mesh.create(\n engine,\n {\n name,\n geometry,\n material,\n priority: 3000,\n });\n}\n","import type { ShaderMacros, Geometry, GeometryDrawMode, Engine, spec } from '@galacean/effects';\nimport { GLSLVersion, glContext, GLGeometry, DestroyOptions, Material, Mesh, math } from '@galacean/effects';\n\nconst { Vector4 } = math;\n\nexport function createParticleWireframe (engine: Engine, mesh: Mesh, color: spec.vec3): Mesh {\n const geometry = new SharedGeometry(\n engine,\n {\n geometry: mesh.firstGeometry(),\n mode: glContext.LINES,\n index: {\n data: new Uint16Array(0),\n },\n name: 'testtest',\n });\n\n const { vertex, fragment, macros, name } = mesh.material.props.shader;\n const materialOptions = { ...mesh.material.props };\n const newMacros = [...(macros || [] as ShaderMacros), ['PREVIEW_BORDER', 1]] as ShaderMacros;\n\n materialOptions.shader = {\n vertex,\n fragment,\n macros: newMacros,\n shared: true,\n name: name + '_wireframe',\n glslVersion: engine.gpuCapability.level === 2 ? GLSLVersion.GLSL3 : GLSLVersion.GLSL1,\n };\n const material = Material.create(engine, materialOptions);\n\n material.depthTest = mesh.material.depthTest;\n material.setVector4('uPreviewColor', new Vector4(color[0], color[1], color[2], 1));\n\n return updateWireframeMesh(mesh.geometry, mesh.material, Mesh.create(\n engine,\n {\n geometry,\n material,\n priority: 3000,\n name: materialOptions.shader.name,\n }), WireframeGeometryType.quad);\n}\n\nexport enum WireframeGeometryType {\n triangle,\n quad,\n}\n\nexport function destroyWireframeMesh (mesh: Mesh) {\n mesh.geometry?.dispose();\n mesh.dispose({ geometries: DestroyOptions.keep });\n}\n\nexport function updateWireframeMesh (originGeometry: Geometry, originMaterial: Material, wireframe: Mesh, type: WireframeGeometryType) {\n wireframe.material.cloneUniforms(originMaterial);\n\n const geometry = originGeometry;\n const wireframeGeometry = wireframe.firstGeometry();\n\n for (const macro of Object.keys(originMaterial.enabledMacros)) {\n wireframe.material.enableMacro(macro, originMaterial.enabledMacros[macro]);\n }\n\n if (type === WireframeGeometryType.triangle) {\n // 线框模式不绘制模型的时候,drawCount 为负数\n const drawCount = Math.abs(geometry.getDrawCount());\n\n if (drawCount !== 0) {\n if (drawCount !== wireframeGeometry.getDrawCount() / 2) {\n const indexData = geometry.getIndexData() as Uint16Array | undefined;\n const data = indexData ? getTriangleIndexData(indexData) : getTriangleIndexDataByCount(drawCount);\n\n wireframeGeometry.setIndexData(data);\n wireframeGeometry.setDrawCount(data.length);\n }\n }\n } else if (type === WireframeGeometryType.quad) {\n if (geometry.getDrawCount() / 6 !== wireframeGeometry.getDrawCount() / 8) {\n const data = getQuadIndexData(geometry.getDrawCount() / 6, geometry.getIndexData() as Uint16Array);\n\n wireframeGeometry.setIndexData(data);\n wireframeGeometry.setDrawCount(data.length);\n }\n }\n\n return wireframe;\n}\n\nfunction getQuadIndexData (faceCount: number, oid: Uint16Array): Uint16Array {\n const indexData = new Uint16Array(faceCount * 8);\n\n for (let i = 0; i < faceCount; i++) {\n const idx = i * 8;\n const base = i * 4;\n\n indexData[idx] = base;\n indexData[idx + 1] = 1 + base;\n indexData[idx + 2] = 1 + base;\n indexData[idx + 3] = 3 + base;\n indexData[idx + 4] = 3 + base;\n indexData[idx + 5] = 2 + base;\n indexData[idx + 6] = 2 + base;\n indexData[idx + 7] = base;\n }\n\n return indexData;\n}\n\nexport function createModeWireframe (engine: Engine, mesh: Mesh, color: spec.vec3): Mesh {\n const geometry = new SharedGeometry(\n engine,\n {\n geometry: mesh.firstGeometry(),\n mode: glContext.LINES,\n index: {\n data: new Uint32Array(0),\n },\n });\n const { vertex, fragment } = mesh.material.shader.shaderData;\n const materialOptions = { ...mesh.material.props };\n\n const newMacros = [['PREVIEW_BORDER', 1]] as ShaderMacros;\n\n materialOptions.shader = {\n vertex,\n fragment,\n macros: newMacros,\n shared: true,\n name: (mesh.name ?? 'unamedmesh') + '_wireframe',\n glslVersion: engine.gpuCapability.level === 2 ? GLSLVersion.GLSL3 : GLSLVersion.GLSL1,\n };\n\n const material = Material.create(engine, materialOptions);\n\n material.depthTest = true;\n material.setVector4('uPreviewColor', new Vector4(color[0], color[1], color[2], 1));\n\n return updateWireframeMesh(mesh.geometry, mesh.material, Mesh.create(\n engine,\n {\n geometry,\n material,\n priority: 3000,\n name: materialOptions.shader.name,\n }), WireframeGeometryType.triangle);\n}\n\nfunction getTriangleIndexDataByCount (drawCount: number): Uint32Array {\n const faceCount = drawCount / 3;\n const indexData = new Uint32Array(faceCount * 6);\n\n for (let i = 0; i < faceCount; i++) {\n const idx = i * 6;\n const p0 = i * 3;\n const p1 = p0 + 1;\n const p2 = p0 + 2;\n\n indexData[idx] = p0;\n indexData[idx + 1] = p1;\n indexData[idx + 2] = p1;\n indexData[idx + 3] = p2;\n indexData[idx + 4] = p2;\n indexData[idx + 5] = p0;\n }\n\n return indexData;\n}\n\nfunction getTriangleIndexData (oid: Uint16Array): Uint32Array {\n const faceCount = oid.length / 3;\n const indexData = new Uint32Array(faceCount * 6);\n\n for (let i = 0; i < faceCount; i++) {\n const idx = i * 6;\n const base = i * 3;\n const p0 = oid[base];\n const p1 = oid[base + 1];\n const p2 = oid[base + 2];\n\n indexData[idx] = p0;\n indexData[idx + 1] = p1;\n indexData[idx + 2] = p1;\n indexData[idx + 3] = p2;\n indexData[idx + 4] = p2;\n indexData[idx + 5] = p0;\n }\n\n return indexData;\n}\n\nexport interface SharedGeometryOptions {\n name?: string,\n drawStart?: number,\n drawCount?: number,\n mode?: GeometryDrawMode,\n index?: { data: Uint8Array | Uint16Array | Uint32Array, releasable?: boolean },\n geometry: Geometry,\n}\n\nexport class SharedGeometry extends GLGeometry {\n private readonly source: GLGeometry;\n\n constructor (engine: Engine, options: SharedGeometryOptions) {\n super(engine, { attributes: {}, ...options });\n let indexData = options.index ? options.index.data : options.geometry.getIndexData();\n\n if (indexData) {\n //@ts-expect-error safe to assign\n indexData = new indexData.constructor(indexData) as Uint16Array;\n }\n this.indices = indexData;\n this.source = options.geometry as GLGeometry;\n this.drawCount = options.drawCount || 0;\n this.drawStart = options.drawStart || 0;\n this.mode = options.mode || 0;\n for (const name in this.source.attributes) {\n this.attributes[name] = { ...this.source.attributes[name] };\n }\n }\n\n override initialize () {\n if (!this.isInitialized) {\n const geometry = this.source;\n\n geometry.initialize();\n //this.indicesBuffer = this._source.indicesBuffer;\n this.buffers = this.source.buffers;\n this.bufferProps = this.source.bufferProps;\n //this.dirtyFlags = this._source.dirtyFlags;\n //this.vaos = this._source.vaos;\n //创建ibo\n if (this.indices) {\n this.indicesBuffer = this.createIndicesBuffer(this.indices);\n }\n this.flush();\n this.initialized = true;\n }\n }\n\n override getAttributeNames (): string[] {\n return this.source.getAttributeNames();\n }\n\n override flush () {\n this.source.flush();\n\n super.flush();\n }\n\n override dispose () {\n // from source geometry\n this.buffers = {};\n this.bufferProps = {};\n super.dispose();\n // @ts-expect-error\n this.source = null;\n }\n}\n","import type { GeometryDrawMode, HitTestCustomParams, RenderFrame, Renderer, Texture, VFXItem } from '@galacean/effects';\nimport {\n RenderPass, Mesh, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, HitTestType,\n TextureLoadAction, ParticleSystemRenderer, RendererComponent, Transform, assertExist,\n effectsClass, glContext, math, serialize, spec, PluginSystem,\n ParticleSystem,\n} from '@galacean/effects';\nimport type { GizmoVFXItemOptions } from './define';\nimport { GizmoSubType } from './define';\nimport type { EditorGizmoPlugin } from './gizmo-loader';\nimport { iconTextures } from './gizmo-loader';\nimport type { GizmoItemBoundingSphere, GizmoItemBounding, Ray, TriangleLike } from './gizmo-vfx-item';\nimport { BoundingType } from './gizmo-vfx-item';\nimport { computeOrthographicOffCenter } from './math-utils';\nimport { createMeshFromSubType } from './mesh';\nimport { intersectRayLine } from './raycast';\nimport { createMeshFromShape } from './shape';\nimport { moveToPointWidthFixDistance } from './util';\nimport { WireframeGeometryType, createModeWireframe, destroyWireframeMesh, updateWireframeMesh } from './wireframe';\nimport { GeometryType } from './geometry';\n\n// TODO: Move to spec\ninterface GizmoComponentData extends spec.ComponentData {\n options: GizmoVFXItemOptions,\n transform?: Record<string, unknown>,\n}\n\nconst editorRenderPassName = 'editor-gizmo';\nconst frontRenderPassName = 'front-gizmo';\nconst behindRenderPassName = 'behind-gizmo';\n\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\ntype Matrix4 = math.Matrix4;\n\nconst { Vector2, Vector3, Matrix4, Quaternion } = math;\nconst constants = glContext;\n\n@effectsClass('GizmoComponent')\nexport class GizmoComponent extends RendererComponent {\n gizmoPlugin: EditorGizmoPlugin;\n targetItem: VFXItem;\n needCreateModelContent: boolean;\n target: string;\n subType: GizmoSubType;\n size: any;\n contents?: Map<Mesh, Transform>;\n boundingMap: Map<string, GizmoItemBounding> = new Map();\n hitBounding?: { key: string, position: Vector3 };\n wireframeMesh: Mesh;\n @serialize()\n coordinateSpace: CoordinateSpace = CoordinateSpace.Local;\n\n color: spec.vec3;\n renderMode!: GeometryDrawMode;\n depthTest?: boolean;\n mat = Matrix4.fromIdentity();\n wireframeMeshes: Mesh[] = [];\n meshes: Mesh[] = [];\n mesh: Mesh | null = null;\n\n override onStart (): void {\n this.item.getHitTestParams = this.getHitTestParams;\n for (const item of this.item.composition?.items ?? []) {\n if (item.id === this.target) {\n this.targetItem = item;\n }\n }\n const targetItem = this.targetItem;\n\n if (!targetItem) {\n\n return;\n }\n const composition = this.item.composition;\n\n for (const plugin of PluginSystem.getPlugins() ?? []) {\n if (plugin.name === 'editor-gizmo') {\n this.gizmoPlugin = plugin as EditorGizmoPlugin;\n }\n }\n const gizmoPlugin = this.gizmoPlugin;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n if (targetItem.type === '7' || !gizmoPlugin) {\n return;\n }\n const gizmoSubType = this.subType;\n\n switch (gizmoSubType) {\n case GizmoSubType.particleEmitter:\n this.createParticleContent(targetItem);\n\n break;\n case GizmoSubType.modelWireframe:\n this.needCreateModelContent = true;\n this.createModelContent(targetItem);\n\n break;\n case GizmoSubType.box:\n case GizmoSubType.sphere:\n case GizmoSubType.cylinder:\n case GizmoSubType.cone:\n case GizmoSubType.torus:\n case GizmoSubType.sprite:\n case GizmoSubType.frustum:\n case GizmoSubType.directionLight:\n case GizmoSubType.pointLight:\n case GizmoSubType.spotLight:\n case GizmoSubType.floorGrid:\n this.createBasicContent(targetItem, gizmoSubType);\n\n break;\n case GizmoSubType.camera:\n case GizmoSubType.light:\n this.createBasicContent(targetItem, gizmoSubType, iconTextures);\n\n break;\n case GizmoSubType.rotation:\n case GizmoSubType.scale:\n case GizmoSubType.translation:\n this.createCombinationContent(targetItem, gizmoSubType);\n\n break;\n case GizmoSubType.viewHelper:\n this.createCombinationContent(targetItem, gizmoSubType, iconTextures);\n\n break;\n case GizmoSubType.boundingBox:\n this.createBoundingBoxContent(targetItem);\n\n break;\n default:\n break;\n }\n composition?.loaderData.gizmoItems.push(this.item);\n }\n\n override onEnable (): void {\n super.onEnable();\n if (!this.item.composition) {\n return;\n }\n\n const renderFrame = this.item.composition.renderFrame;\n\n for (const mesh of this.meshes) {\n if (mesh.name === GeometryType.FloorGrid.toString() || mesh.name === 'Box') {\n this.getFrontRenderPass(renderFrame).addMesh(mesh);\n } else if (mesh.name === 'translation' || mesh.name === 'scale' || mesh.name === 'rotation') {\n this.getBehindRenderPass(renderFrame).addMesh(mesh);\n } else {\n this.getEditorRenderPass(renderFrame).addMesh(mesh);\n }\n }\n }\n\n override onDisable (): void {\n super.onDisable();\n if (!this.item.composition) {\n return;\n }\n\n const renderFrame = this.item.composition.renderFrame;\n\n for (const mesh of this.meshes) {\n if (mesh.name === GeometryType.FloorGrid.toString() || mesh.name === 'Box') {\n this.getFrontRenderPass(renderFrame).removeMesh(mesh);\n } else if (mesh.name === 'translation' || mesh.name === 'scale' || mesh.name === 'rotation') {\n this.getBehindRenderPass(renderFrame).removeMesh(mesh);\n } else {\n this.getEditorRenderPass(renderFrame).removeMesh(mesh);\n }\n }\n }\n\n override onUpdate (dt: number): void {\n this.updateRenderData();\n }\n\n override onDestroy (): void {\n const gizmoMesh = this.mesh;\n const composition = this.item.composition;\n\n if (!composition) {\n return;\n }\n\n if (gizmoMesh && !gizmoMesh.isDestroyed) {\n gizmoMesh.dispose();\n\n if (gizmoMesh.name === GeometryType.FloorGrid.toString() || gizmoMesh.name === 'Box') {\n this.getFrontRenderPass(composition.renderFrame).removeMesh(gizmoMesh);\n } else {\n this.getEditorRenderPass(composition.renderFrame).removeMesh(gizmoMesh);\n }\n }\n if (this.contents) {\n for (const [mesh] of this.contents) {\n if (!mesh.isDestroyed) {\n mesh.dispose();\n if (mesh.name === 'translation' || mesh.name === 'scale' || mesh.name === 'rotation') {\n this.getBehindRenderPass(composition.renderFrame).removeMesh(mesh);\n } else {\n this.getEditorRenderPass(composition.renderFrame).removeMesh(mesh);\n }\n }\n }\n }\n\n if (this && this.wireframeMeshes.length > 0) {\n this.wireframeMeshes.forEach(mesh => {\n if (!mesh.isDestroyed) {\n destroyWireframeMesh(mesh);\n this.getEditorRenderPass(composition.renderFrame).removeMesh(mesh);\n }\n });\n } else {\n const wireframeMesh = this.wireframeMesh;\n\n if (wireframeMesh && !wireframeMesh.isDestroyed) {\n destroyWireframeMesh(wireframeMesh);\n this.getEditorRenderPass(composition.renderFrame).removeMesh(wireframeMesh);\n }\n }\n\n const arr: VFXItem[] = composition.loaderData.gizmoItems;\n const index = arr.indexOf(this.item);\n\n if (index > -1) {\n arr.splice(index, 1);\n }\n }\n\n override render (renderer: Renderer): void {\n // The material of the 3D plugin is updated during the render phase. In order to obtain the correct value, it is kept consistent here.\n if (this.subType === GizmoSubType.modelWireframe) { // 模型线框\n if (this.wireframeMesh && this.targetItem) {\n //@ts-expect-error TODO 和 3D 类型解耦\n const pMesh = this.targetItem.getComponent(RendererComponent)?.content;\n const meshes = pMesh.subMeshes;\n const wireframeMeshes = this.wireframeMeshes;\n\n if (meshes?.length > 0) {\n wireframeMeshes[0].worldMatrix.copyFrom(pMesh.matrix);\n updateWireframeMesh(meshes[0].geometry.geometry, meshes[0].material.effectMaterial, wireframeMeshes[0], WireframeGeometryType.triangle);\n }\n }\n }\n }\n\n updateRenderData () {\n const item = this.item;\n const gizmoSubType = this.subType;\n\n if (gizmoSubType === GizmoSubType.particleEmitter) { // 粒子发射器\n if (this.targetItem && this.mesh) {\n this.mat = this.targetItem.transform.getWorldMatrix();\n this.mesh.material.setMatrix('u_model', this.mat);\n }\n if (this.wireframeMesh && this.targetItem) {\n const particle = this.targetItem.getComponent(ParticleSystemRenderer);\n\n if (particle) {\n updateWireframeMesh(particle.particleMesh.mesh.geometry, particle.particleMesh.mesh.material, this.wireframeMesh, WireframeGeometryType.quad);\n this.wireframeMesh.worldMatrix = particle.particleMesh.mesh.worldMatrix;\n }\n }\n } else { // 几何体模型\n if (this.targetItem) {\n if (this.contents) { // 组合几何体\n // const targetTransform = this.targetItem.transform.clone();\n\n const worldPos = new Vector3();\n const worldQuat = new Quaternion();\n const worldScale = new Vector3(1, 1, 1);\n\n // Scale Gizmo 没有世界空间\n if (this.coordinateSpace == CoordinateSpace.Local || gizmoSubType === GizmoSubType.scale) {\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n } else {\n this.targetItem.transform.assignWorldTRS(worldPos);\n }\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldScale,\n valid: true,\n });\n\n // 移动\\旋转\\缩放gizmo去除近大远小\n if (gizmoSubType === GizmoSubType.rotation || gizmoSubType === GizmoSubType.scale || gizmoSubType === GizmoSubType.translation) {\n const camera = item.composition!.camera;\n const cameraPos = camera.position || new Vector3();\n const itemPos = targetTransform.position;\n const newPos = moveToPointWidthFixDistance(cameraPos, itemPos);\n\n targetTransform.setPosition(newPos.x, newPos.y, newPos.z);\n }\n\n this.mat = targetTransform.getWorldMatrix();\n const center = targetTransform.position;\n\n for (const [mesh, transform] of this.contents) {\n let worldMat4: Matrix4;\n\n transform.parentTransform = targetTransform;\n const position = new Vector3();\n\n transform.assignWorldTRS(position);\n // 物体和中心点在屏幕空间上投影的距离\n let distanceToCneter = 100;\n let theta = 1;\n\n if (gizmoSubType === GizmoSubType.viewHelper) {\n // 正交投影只需要计算物体在XY平面上的投影与中心点的距离\n if (mesh.name === 'sprite') {\n distanceToCneter = position.toVector2().distance(center.toVector2());\n theta = (this.boundingMap.get('posX') as GizmoItemBoundingSphere).radius;\n }\n // 将物体挂到相机的transform上\n const fov = 30; // 指定fov角度\n const screenWidth = item.composition!.renderer.getWidth();\n const screenHeight = item.composition!.renderer.getHeight();\n const distance = 16; // 指定物体与相机的距离\n const width = 2 * Math.tan(fov * Math.PI / 360) * distance;\n const aspect = screenWidth / screenHeight;\n const height = width / aspect;\n const cameraModelMat4 = item.composition!.camera.getInverseViewMatrix();\n const padding = this.size.padding || 1; // 指定viewHelper与屏幕右上角的边距\n let localMat: Matrix4;\n\n localMat = transform.getWorldMatrix();\n const worldTransform: Transform = new Transform({\n valid: true,\n });\n\n worldTransform.cloneFromMatrix(localMat);\n worldTransform.setPosition((position.x + width / 2) - padding, (position.y + height / 2) - padding, position.z);\n localMat = worldTransform.getWorldMatrix();\n worldMat4 = cameraModelMat4.clone().multiply(localMat);\n // 正交投影到屏幕上\n const proMat5 = computeOrthographicOffCenter(-width / 2, width / 2, -height / 2, height / 2, -distance, distance);\n\n mesh.material.setMatrix('_MatrixP', proMat5);\n } else {\n if (gizmoSubType === GizmoSubType.rotation) {\n const cameraPos = item.composition!.camera.position || [0, 0, 0];\n\n mesh.material.setVector3('u_cameraPos', cameraPos);\n mesh.material.setVector3('u_center', center);\n }\n worldMat4 = transform.getWorldMatrix();\n // TODO 计算物体和中心点在屏幕空间上投影的距离 distanceToCneter\n }\n mesh.material.setMatrix('u_model', worldMat4);\n\n // 使用distanceToCneter处理坐标轴旋转到中心点附近时的遮挡问题\n if (distanceToCneter < theta) {\n if (distanceToCneter < theta * 0.5) {\n mesh.material.setVector2('u_alpha', new Vector2(0, 0));\n } else {\n mesh.material.setVector2('u_alpha', new Vector2((2 / theta) * distanceToCneter - 1, 0));\n }\n }\n }\n }\n if (this.mesh) { // 基础几何体\n const worldPos = new Vector3();\n const worldQuat = new Quaternion();\n const worldSca = new Vector3(1, 1, 1);\n\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldSca,\n valid: true,\n });\n\n if (gizmoSubType === GizmoSubType.light || gizmoSubType === GizmoSubType.camera) {\n const camera = item.composition!.camera;\n const cameraPos = camera.position || new Vector3(0, 0, 0);\n const itemPos = targetTransform.position;\n const newPos = moveToPointWidthFixDistance(cameraPos, itemPos);\n\n targetTransform.setPosition(newPos.x, newPos.y, newPos.z);\n }\n\n this.mat = targetTransform.getWorldMatrix();\n\n this.mesh.material.setMatrix('u_model', targetTransform.getWorldMatrix());\n }\n }\n }\n }\n\n /**\n * 获取默认绘制模式\n * @returns 绘制模式常量\n */\n getDefaultRenderMode (): GeometryDrawMode {\n let result: GeometryDrawMode;\n const gizmoSubType = this.subType;\n\n switch (gizmoSubType) {\n case GizmoSubType.particleEmitter:\n case GizmoSubType.modelWireframe:\n case GizmoSubType.frustum:\n case GizmoSubType.directionLight:\n case GizmoSubType.spotLight:\n case GizmoSubType.pointLight:\n case GizmoSubType.floorGrid:\n result = constants.LINES;\n\n break;\n default:\n result = constants.TRIANGLES;\n\n break;\n }\n\n return result;\n }\n\n /**\n * 获取默认尺寸\n * @returns 几何体尺寸\n */\n getDefaultSize () {\n let result = {};\n const gizmoSubType = this.subType;\n\n switch (gizmoSubType) {\n case GizmoSubType.box:\n result = { width: 1, height: 1, depth: 1 };\n\n break;\n case GizmoSubType.sphere:\n result = { radius: 1 };\n\n break;\n case GizmoSubType.cylinder:\n result = { radius: 1, height: 1 };\n\n break;\n case GizmoSubType.cone:\n result = { radius: 1, height: 1 };\n\n break;\n default:\n result = {};\n\n break;\n }\n\n return result;\n }\n\n createModelContent (item: VFXItem) {\n const modelComponent = item.getComponent(RendererComponent);\n //@ts-expect-error TODO 和 3D 类型解耦\n const psubMesh = modelComponent.content.subMeshes[0];\n const engine = item.composition?.renderer.engine;\n\n assertExist(engine);\n\n if (psubMesh) {\n this.targetItem = item;\n this.wireframeMeshes = [];\n\n const originMesh = Mesh.create(\n engine,\n {\n geometry: psubMesh.geometry.geometry,\n material: psubMesh.material.effectMaterial,\n priority: 3000,\n });\n const mesh = this.wireframeMesh = createModeWireframe(engine, originMesh, this.color);\n\n this.wireframeMeshes.push(mesh);\n this.meshes.push(mesh);\n }\n }\n\n createParticleContent (item: VFXItem) {\n const shape = item.getComponent(ParticleSystem).definition.shape;\n const engine = this.item.composition?.renderer.engine;\n\n assertExist(engine);\n\n this.targetItem = item;\n if (shape && shape.type) {\n const mesh = this.mesh = createMeshFromShape(engine, shape, { color: this.color });\n\n this.meshes.push(mesh);\n }\n }\n\n /**\n * 创建 BoundingBox 几何体模型\n * @param item - VFXItem\n */\n createBoundingBoxContent (item: VFXItem) {\n const gizmoItem = this.item;\n const shape = {\n shape: 'Box',\n width: this.size.width,\n height: this.size.height,\n depth: this.size.depth,\n center: this.size.center,\n };\n const engine = gizmoItem.composition?.renderer.engine;\n\n assertExist(engine);\n\n this.targetItem = item;\n if (shape) {\n const mesh = this.mesh = createMeshFromShape(engine, shape, { color: this.color, depthTest: this.depthTest });\n\n this.meshes.push(mesh);\n }\n }\n\n /**\n * 创建基础几何体模型\n * @param item - VFXItem\n * @param subType - GizmoSubType 类型\n */\n createBasicContent (item: VFXItem, subType: GizmoSubType, iconTextures?: Map<string, Texture>) {\n const gizmoItem = this.item;\n const options = {\n size: this.size,\n color: this.color,\n renderMode: this.renderMode,\n depthTest: this.depthTest,\n };\n const engine = gizmoItem.composition?.renderer.engine;\n\n assertExist(engine);\n\n const mesh = this.mesh = createMeshFromSubType(engine, subType, this.boundingMap, iconTextures, options) as Mesh;\n\n this.targetItem = item;\n this.meshes.push(mesh);\n }\n\n /**\n * 创建组合几何体模型\n * @param item - VFXItem\n * @param subType - GizmoSubType 类型\n * @param iconTextures - XYZ 图标纹理(viewHelper 专用)\n */\n createCombinationContent (item: VFXItem, subType: GizmoSubType, iconTextures?: Map<string, Texture>) {\n const gizmoItem = this.item;\n const options = {\n size: this.size,\n renderMode: this.renderMode,\n };\n\n const engine = gizmoItem.composition?.renderer.engine;\n\n assertExist(engine);\n\n this.contents = createMeshFromSubType(engine, subType, this.boundingMap, iconTextures, options) as Map<Mesh, Transform>;\n for (const mesh of this.contents.keys()) {\n this.meshes.push(mesh);\n }\n this.targetItem = item;\n }\n\n override fromData (data: GizmoComponentData): void {\n super.fromData(data);\n const item = this.item;\n\n item.duration = 999;\n const {\n target, subType, renderMode, size, depthTest,\n color = [255, 255, 255],\n } = data.options;\n\n this.target = target;\n this.subType = subType;\n this.renderMode = renderMode || this.getDefaultRenderMode();\n this.size = size || this.getDefaultSize();\n this.depthTest = depthTest;\n\n const [r, g, b] = color;\n\n this.color = [r / 255, g / 255, b / 255];\n if (data) {\n item.transform = new Transform(data.transform);\n }\n }\n\n /**\n * 射线检测算法\n * @returns 包含射线检测算法回调方法的参数\n */\n private getHitTestParams = (): void | HitTestCustomParams => {\n const item = this.item;\n const boundingMap = this.boundingMap;\n\n if (boundingMap.size > 0) {\n const boundingKeys = boundingMap.keys();\n let worldMat4: Matrix4;\n\n worldMat4 = this.transform.getWorldMatrix();\n const targetItem = this.targetItem;\n\n if (targetItem) {\n //const targetTransform = this.targetItem.transform.clone();\n const worldPos = new Vector3();\n const worldQuat = new Quaternion();\n const worldSca = new Vector3(1, 1, 1);\n const gizmoSubType = this.subType;\n\n // Scale Gizmo 没有世界空间\n if (this.coordinateSpace == CoordinateSpace.Local || gizmoSubType === GizmoSubType.scale) {\n this.targetItem.transform.assignWorldTRS(worldPos, worldQuat);\n } else {\n this.targetItem.transform.assignWorldTRS(worldPos);\n }\n\n const targetTransform = new Transform({\n position: worldPos,\n quat: worldQuat,\n scale: worldSca,\n valid: true,\n });\n\n // 移动\\旋转\\缩放gizmo去除近大远小\n if (\n gizmoSubType === GizmoSubType.rotation ||\n gizmoSubType === GizmoSubType.scale ||\n gizmoSubType === GizmoSubType.translation ||\n gizmoSubType === GizmoSubType.camera ||\n gizmoSubType === GizmoSubType.light\n ) {\n const camera = item.composition!.camera;\n const cameraPos = camera.position || [0, 0, 0];\n const itemPos = targetTransform.position;\n const newPos = moveToPointWidthFixDistance(cameraPos, itemPos);\n\n targetTransform.setPosition(newPos.x, newPos.y, newPos.z);\n worldMat4 = targetTransform.getWorldMatrix();\n } else {\n worldMat4 = targetTransform.getWorldMatrix();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = item;\n\n return {\n type: HitTestType.custom,\n clipMasks:this.frameClipMasks,\n /**\n * 自定义射线检测算法\n * @param ray 射线参数\n * @param pointInCanvas 屏幕坐标\n * @returns\n */\n collect (ray: Ray, pointInCanvas: Vector2): Vector3[] | void {\n const hitPositions = [];\n const gizmoComponent = self.getComponent(GizmoComponent);\n\n gizmoComponent.hitBounding = undefined;\n for (const key of boundingKeys) {\n const bounding = boundingMap.get(key);\n const center = new Vector3();\n const worldCenter = new Vector3();\n\n if (bounding?.type === BoundingType.box || bounding?.type === BoundingType.sphere) {\n if (bounding?.center) {\n center.copyFrom(bounding?.center);\n }\n worldMat4.projectPoint(center, worldCenter);\n }\n let position: Vector3 | undefined;\n\n switch (bounding?.type) {\n case BoundingType.box: // 立方体包围盒\n {\n const boxHalfSize = bounding.size.clone().multiply(0.5);\n const boxMax = center.clone().add(boxHalfSize);\n const boxMin = center.clone().subtract(boxHalfSize);\n\n position = ray.intersectBox({ min: boxMin, max: boxMax }, new Vector3());\n }\n\n break;\n case BoundingType.sphere: // 球体包围盒\n\n // viewHelper 使用了正交投影,使用屏幕投影点计算\n if (gizmoComponent.subType === GizmoSubType.viewHelper) {\n // 计算正交投影矩阵\n const viewMat4 = self.composition!.camera.getViewMatrix();\n const fov = 30; // 指定fov角度\n const screenWidth = self.composition!.renderer.getWidth();\n const screenHeight = self.composition!.renderer.getHeight();\n const distance = 16; // 指定物体与相机的距离\n const width = 2 * Math.tan(fov * Math.PI / 360) * distance;\n const aspect = screenWidth / screenHeight;\n const height = width / aspect;\n const proMat4 = computeOrthographicOffCenter(-width / 2, width / 2, -height / 2, height / 2, -distance, distance);\n\n // 将包围盒挂到相机的 transform 上\n const cameraModelMat4 = self.composition!.camera.getInverseViewMatrix();\n const localTransform = new Transform({\n valid: true,\n });\n\n localTransform.cloneFromMatrix(worldMat4);\n const pos = localTransform.position;\n const padding = gizmoComponent.size.padding || 1; // 指定viewHelper与屏幕右上角的边距\n\n localTransform.setPosition((pos.x + width / 2) - padding, (pos.y + height / 2) - padding, pos.z);\n const localMat4 = localTransform.getWorldMatrix();\n const modelMat4 = cameraModelMat4.clone().multiply(localMat4);\n\n modelMat4.projectPoint(center, worldCenter);\n\n // 包围球中心点正交投影到屏幕上\n const vpMat4 = proMat4.clone().multiply(viewMat4);\n const mvpMat4 = vpMat4.clone().multiply(modelMat4);\n const screenCenter = mvpMat4.projectPoint(center, new Vector3());\n // const screenCenterX = screenCenter.x;\n // const screenCenterY = screenCenter.y;\n\n // 包围球上的点正交投影到屏幕上\n const radius = bounding.radius;\n const up = new Vector3(\n localMat4.elements[1],\n localMat4.elements[5],\n localMat4.elements[9],\n ).normalize();\n\n const point = up.clone().multiply(radius);\n\n point.add(center);\n\n const screenPoint = mvpMat4.projectPoint(point, new Vector3());\n // const screenPointX = screenPoint.x;\n // const screenPointY = screenPoint.y;\n\n // 计算正交投影到屏幕上的包围球的半径\n const screenCenter2 = screenCenter.toVector2();\n const screenPoint2 = screenPoint.toVector2();\n const screenRadius = screenCenter2.distance(screenPoint2);\n\n if (pointInCanvas.distance(screenCenter2) < screenRadius * 1.2) {\n position = worldCenter;\n }\n } else {\n position = ray.intersectSphere({ center: worldCenter, radius: bounding.radius }, new Vector3());\n }\n\n break;\n case BoundingType.triangle: {// 三角数组包围盒\n const { triangles, backfaceCulling } = bounding;\n const tmpPositions: Vector3[] = [];\n let tmpPosition;\n\n for (let j = 0; j < triangles.length; j++) {\n const triangle = triangles[j];\n const worldTriangle: TriangleLike = {\n p0: worldMat4.projectPoint(triangle.p0 as Vector3, new Vector3()),\n p1: worldMat4.projectPoint(triangle.p1 as Vector3, new Vector3()),\n p2: worldMat4.projectPoint(triangle.p2 as Vector3, new Vector3()),\n };\n\n tmpPosition = ray.intersectTriangle(worldTriangle, new Vector3(), backfaceCulling);\n if (tmpPosition) {\n tmpPositions.push(tmpPosition);\n }\n }\n // 仅保存距离相机最近的点\n if (tmpPositions.length > 0) {\n let lastDistance: number;\n\n tmpPositions.forEach(item => {\n const distance = ray.origin.distanceSquared(item);\n\n if (!lastDistance || distance < lastDistance) {\n lastDistance = distance;\n position = item;\n }\n });\n }\n\n break;\n }\n case BoundingType.line: {// 线条包围盒,将线条转换到屏幕空间,计算线条与屏幕交互点的距离,小于阈值判定为点中\n const { points, width } = bounding;\n\n position = intersectRayLine(new Vector3(), pointInCanvas, points, width / 2, worldMat4, self.composition!.camera);\n\n break;\n }\n default:\n break;\n }\n if (position) {\n hitPositions.push(position);\n // 缓存距离相机最近的 BoundingKey\n if (gizmoComponent.hitBounding) {\n const distance = ray.origin.distanceSquared(position);\n const lastDistance = ray.origin.distanceSquared(gizmoComponent.hitBounding.position);\n\n if (distance < lastDistance) {\n gizmoComponent.hitBounding.key = key;\n gizmoComponent.hitBounding.position = position;\n }\n } else {\n gizmoComponent.hitBounding = {\n key,\n position,\n };\n }\n }\n }\n if (hitPositions.length === 0) {\n gizmoComponent.hitBounding = undefined;\n }\n\n return hitPositions;\n },\n behavior: spec.InteractBehavior.NOTIFY,\n };\n }\n };\n\n getBehindRenderPass (pipeline: RenderFrame): RenderPass {\n let rp = pipeline.renderPasses.find(renderPass => renderPass.name === behindRenderPassName);\n\n if (!rp) {\n rp = new DrawGizmoBehindPass(pipeline.renderer);\n pipeline.addRenderPass(rp);\n }\n\n return rp;\n }\n\n getEditorRenderPass (pipeline: RenderFrame): RenderPass {\n let rp = pipeline.renderPasses.find(renderPass => renderPass.name === editorRenderPassName);\n\n if (!rp) {\n rp = new DrawGizmoEditorPass(pipeline.renderer);\n pipeline.addRenderPass(rp);\n }\n\n return rp;\n }\n\n getFrontRenderPass (pipeline: RenderFrame): RenderPass {\n let rp = pipeline.renderPasses.find(renderPass => renderPass.name === frontRenderPassName);\n\n if (!rp) {\n rp = new DrawGizmoFrontPass(pipeline.renderer);\n pipeline.addRenderPass(rp);\n }\n\n return rp;\n }\n\n}\n\nexport enum CoordinateSpace {\n Local,\n World\n}\n\nclass DrawGizmoBehindPass extends RenderPass {\n constructor (renderer: Renderer) {\n super(renderer);\n this.priority = RenderPassPriorityPostprocess + RenderPassPriorityPostprocess;\n this.name = behindRenderPassName;\n }\n\n override execute (renderer: Renderer): void {\n renderer.clear({ depthAction: TextureLoadAction.clear });\n renderer.renderMeshes(this.meshes);\n }\n}\n\nclass DrawGizmoFrontPass extends RenderPass {\n constructor (renderer: Renderer) {\n super(renderer);\n this.priority = RenderPassPriorityPrepare + 2;\n this.name = frontRenderPassName;\n }\n\n override execute (renderer: Renderer): void {\n renderer.renderMeshes(this.meshes);\n }\n}\n\nclass DrawGizmoEditorPass extends RenderPass {\n constructor (renderer: Renderer) {\n super(renderer);\n this.priority = RenderPassPriorityPostprocess + 2;\n this.name = editorRenderPassName;\n }\n\n override execute (renderer: Renderer): void {\n renderer.renderMeshes(this.meshes);\n }\n}\n","import type { Composition, Scene, SceneLoadOptions, Texture, VFXItem } from '@galacean/effects';\nimport { Plugin } from '@galacean/effects';\nimport { axisIconMap } from './constants';\nimport { createImage, createTexture } from './util';\nimport { GizmoComponent } from './gizmo-component';\n\nconst iconImages: Map<string, HTMLImageElement> = new Map();\n\nexport const iconTextures: Map<string, Texture> = new Map();\n\nexport class EditorGizmoPlugin extends Plugin {\n override order = 1001;\n\n override async onAssetsLoadStart (scene: Scene, options?: SceneLoadOptions | undefined): Promise<void> {\n iconTextures.clear();\n\n if (iconImages.size !== axisIconMap.size) {\n for (const [name, data] of axisIconMap) {\n iconImages.set(name, await createImage(data));\n }\n }\n }\n\n override onCompositionCreated (composition: Composition, scene: Scene) {\n const engine = composition.renderer.engine;\n\n iconImages.forEach((image, name) => {\n iconTextures.set(name, createTexture(engine, image));\n });\n iconImages.clear();\n\n const items = composition.items;\n const targetMap: { [key: string]: VFXItem[] } = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const gizmoComponent = item.getComponent(GizmoComponent);\n\n if (gizmoComponent) {\n if (!targetMap[gizmoComponent.target]) {\n targetMap[gizmoComponent.target] = [];\n }\n targetMap[gizmoComponent.target].push(item);\n }\n }\n composition.loaderData.gizmoTarget = targetMap;\n composition.loaderData.gizmoItems = [];\n }\n}\n","import * as EFFECTS from '@galacean/effects';\nimport { logger, registerPlugin } from '@galacean/effects';\nimport { EditorGizmoPlugin } from './gizmo-loader';\nimport { GizmoSubType } from './define';\nimport { GeometryType, createGeometry } from './geometry';\n\nregisterPlugin('editor-gizmo', EditorGizmoPlugin);\n\nexport { DirectionLightData } from './geometry/direction-light';\nexport {\n GizmoSubType,\n GeometryType,\n createGeometry,\n};\nexport * from './gizmo-component';\n\n/**\n * 插件版本号\n */\nexport const version = __VERSION__;\n\nlogger.info(`Plugin editor gizmo version: ${version}.`);\n\nif (version !== EFFECTS.version) {\n console.error(\n '注意:请统一 Editor Gizmo 插件与 Player 版本,不统一的版本混用会有不可预知的后果!',\n '\\nAttention: Please ensure the Editor Gizmo plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!'\n );\n}\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_async_to_generator","fn","self","args","arguments","apply","err","undefined","_set_prototype_of","o","p","Object","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","prototype","create","constructor","writable","configurable","_is_native_reflect_construct","result","Boolean","valueOf","call","Reflect","construct","_","_construct","Parent","Class","a","push","Constructor","Function","bind","instance","_get_prototype_of","getPrototypeOf","_is_native_function","toString","indexOf","_wrap_native_super","_cache","Map","has","get","set","Wrapper","enumerable","_array_like_to_array","arr","len","length","i","arr2","Array","_unsupported_iterable_to_array","minLen","n","slice","name","from","test","_create_for_of_iterator_helper_loose","allowArrayLike","it","Symbol","iterator","next","isArray","_instanceof","left","right","hasInstance","__decorate","decorators","target","desc","c","r","getOwnPropertyDescriptor","d","decorate","defineProperty","__generator","thisArg","body","label","sent","t","trys","ops","f","y","g","Iterator","verb","v","step","op","pop","e","SuppressedError","suppressed","message","Error","color","xAxisColor","yAxisColor","zAxisColor","renderMode","glContext","TRIANGLES","axisIconMap","createImage","imageUrl","image","Image","src","onload","onerror","createTexture","engine","hookDestroy","texture","Texture","dispose","noop","moveToPointWidthFixDistance","targetPos","currentPos","vecCameraItem","clone","subtract","normalVecCameraItem","normalize","scalerVecCameraItem","multiply","vecScalerItem","vecItemScaler","add","GizmoSubType","math","Vector3","Ray","BoundingType","Matrix4","Vector2","distanceOfPointAndLine","point","line","AC","BC","AB","subtractVectors","lengthAC","lengthBC","lengthAB","P","allArea","Math","abs","sqrt","distance","l1","pow","l2","isInLine","projectionOfPointAndLine","line0","toVector2","line1","worldAB","worldAP","worldP","computeOrthographicOffCenter","bottom","top","near","far","b","tx","ty","tz","_extends","assign","source","hasOwnProperty","GeometryData","points","uvs","normals","indices","createXYPlaneCircle","radius","z","segments","thetaStart","thetaLength","startIndex","theta","x","cos","sin","createXZPlaneCircle","createYZPlaneCircle","SphereGeometryData","widthSegments","heightSegments","phiStart","phiLength","PI","max","floor","thetaEnd","min","grid","index","iy","verticesRow","uOffset","ix","u","normal","toArray","BoxGeometryData","width","height","depth","buildPlane","w","uDir","vDir","widthHalf","heightHalf","depthHalf","vertexCounter","numberOfVertices","CylinderGeometryData","radiusTop","radiusBottom","radialSegments","openEnded","generateTorso","slope","indexRow","sinTheta","cosTheta","px","py","halfHeight","pz","indexArray","generateCap","centerIndexStart","sign","centerIndexEnd","uvU","uvV","ConeGeometryData","TorusGeometryData","tube","tubularSegments","arc","j","cx","cy","PlaneGeometryData","gridX","gridY","gridX1","gridY1","segmentWidth","segmentHeight","Euler","FrustumGeometryData","position","rotation","fov","aspect","fovY","ratio","halfY","tan","halfX","point1","point2","point3","point4","matrix","fromArray","toMatrix4","result1","transformPoint","result2","result3","result4","DirectionLightData","linesNumber","start","PointLightData","range","SpotLightData","spotAngle","angle","FloorLineEdgeGeometryData","sideLength","parts","end","GeometryType","createGeometry","type","size","geometryData","segments4","Geometry","attributes","a_Position","data","Float32Array","a_Normal","a_UV1","Uint16Array","mode","drawCount","createMeshFromSubType","subType","boundingMap","iconTexture","options","WebGLRenderingContext","sprite","createSpriteMesh","camera","light","translation","createTranslationMesh","scale","createScaleMesh","viewHelper","createViewHelperMesh","createRotationMesh","createBasicMesh","radiusSegments","boundSize","xCircle","torus","yCircle","zCircle","center","sphere","alpha","xCircleBounding","yCircleBounding","zCircleBounding","xCircleTransform","Transform","valid","yCircleTransform","zCircleTransform","centerTransform","setRotation","triangle","triangles","firstGeometry","getTriangle","backfaceCulling","geometry","transform","getIndexData","getAttributeData","mat4","getWorldMatrix","i0","i1","i2","p0","p1","p2","projectPoint","axisSize","axisMesh","createAxisMesh","mesh","arrowSize","xArrow","cone","depthTest","yArrow","zArrow","xArrowTransform","yArrowTransform","zArrowTransform","translate","planeSize","xyPlane","plane","yzPlane","zxPlane","xyPlaneTransform","yzPlaneTransform","zxPlaneTransform","delta","createAxisBounding","boxSize","centerBoxSize","xCube","box","yCube","zCube","centerCube","xCubeTransform","yCubeTransform","zCubeTransform","centerCubeTransform","posXSphere","posYSphere","posZSphere","posXSphereTransform","posYSphereTransform","posZSphereTransform","negXSphere","negYSphere","negZSphere","negXSphereTransform","negYSphereTransform","negZSphereTransform","isCentered","xAxis","yAxis","zAxis","xAxisTransform","yAxisTransform","zAxisTransform","materialType","geometryType","Sphere","cylinder","Cylinder","Cone","Torus","Sprite","Plane","frustum","Frustum","directionLight","DirectionLight","spotLight","SpotLight","pointLight","PointLight","floorGrid","FloorGrid","Box","material","createBlendMaterial","createHideBackMaterial","createMaterial","Mesh","priority","spriteColor","createSpriteMaterial","myColor","myDepthTest","Material","uniformValues","u_color","u_model","shader","fragment","vertex","shared","setVector3","setMatrix","IDENTITY","stencilTest","blending","depthMask","u_cameraPos","u_center","ZERO","myAlpha","u_alpha","setVector2","blendEquation","FUNC_ADD","blendFunction","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","setTexture","intersectRayLine","out","pointInCanvas","worldMat4","up","elements","radiusPoint","mvpMat4","getModelViewProjection","screenStart","screenEnd","screenRadiusPoint","screenRadiusVector","screenRadius","screenPosition","inverseViewProjection","getInverseViewProjectionMatrix","rectSize","DEG2RAD","arcPath","rotate","rotMat4","negate","addPoint","transformNormal","h","myCenter","map","item","rect","pos","forEach","vec","combineGeometries","geometries","indicesBase","Shapes","ret","detail","anchors","block","unshift","Rectangle","Circle","Hemisphere","outerRadius","concat","Edge","hw","RectangleEdge","Donut","donutRadius","path","positions","keys","None","createMeshFromShape","shape","geo","createMesh","LINES","Vector4","WireframeGeometryType","destroyWireframeMesh","DestroyOptions","keep","updateWireframeMesh","originGeometry","originMaterial","wireframe","cloneUniforms","wireframeGeometry","enabledMacros","macro","enableMacro","getDrawCount","indexData","getTriangleIndexData","getTriangleIndexDataByCount","setIndexData","setDrawCount","getQuadIndexData","faceCount","oid","idx","base","createModeWireframe","SharedGeometry","Uint32Array","shaderData","materialOptions","props","newMacros","macros","glslVersion","gpuCapability","level","GLSLVersion","GLSL3","GLSL1","setVector4","drawStart","initialize","isInitialized","buffers","bufferProps","indicesBuffer","createIndicesBuffer","flush","initialized","getAttributeNames","GLGeometry","editorRenderPassName","frontRenderPassName","behindRenderPassName","Quaternion","constants","GizmoComponent","coordinateSpace","mat","fromIdentity","wireframeMeshes","meshes","getHitTestParams","boundingKeys","targetItem","worldPos","worldQuat","worldSca","gizmoSubType","assignWorldTRS","targetTransform","quat","composition","cameraPos","itemPos","newPos","setPosition","HitTestType","custom","clipMasks","frameClipMasks","collect","ray","bounding","worldCenter","copyFrom","boxHalfSize","boxMax","boxMin","intersectBox","gizmoComponent","viewMat4","getViewMatrix","screenWidth","renderer","getWidth","screenHeight","getHeight","proMat4","cameraModelMat4","getInverseViewMatrix","localTransform","cloneFromMatrix","padding","localMat4","modelMat4","vpMat4","screenCenter","screenPoint","screenCenter2","screenPoint2","intersectSphere","tmpPositions","tmpPosition","worldTriangle","intersectTriangle","lastDistance","origin","distanceSquared","hitPositions","hitBounding","getComponent","behavior","spec","InteractBehavior","NOTIFY","onStart","items","id","PluginSystem","getPlugins","plugin","gizmoPlugin","particleEmitter","createParticleContent","modelWireframe","needCreateModelContent","createModelContent","createBasicContent","iconTextures","createCombinationContent","boundingBox","createBoundingBoxContent","loaderData","gizmoItems","onEnable","renderFrame","getFrontRenderPass","addMesh","getBehindRenderPass","getEditorRenderPass","onDisable","removeMesh","onUpdate","dt","updateRenderData","onDestroy","gizmoMesh","isDestroyed","contents","wireframeMesh","splice","render","pMesh","RendererComponent","content","subMeshes","worldMatrix","effectMaterial","particle","ParticleSystemRenderer","particleMesh","quad","worldScale","parentTransform","distanceToCneter","localMat","worldTransform","proMat5","getDefaultRenderMode","getDefaultSize","modelComponent","psubMesh","assertExist","originMesh","ParticleSystem","definition","gizmoItem","fromData","duration","pipeline","rp","renderPasses","find","renderPass","DrawGizmoBehindPass","addRenderPass","DrawGizmoEditorPass","DrawGizmoFrontPass","serialize","effectsClass","CoordinateSpace","RenderPassPriorityPostprocess","execute","clear","depthAction","TextureLoadAction","renderMeshes","RenderPass","RenderPassPriorityPrepare","iconImages","EditorGizmoPlugin","order","onAssetsLoadStart","scene","onCompositionCreated","targetMap","gizmoTarget","Plugin","registerPlugin","version","logger","EFFECTS","console"],"mappings":"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"}
|