@soonspacejs/plugin-heat-cloud 2.13.7 → 2.13.8

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../../node_modules/type-tls/dist/type-tls.mjs","../../../../node_modules/.pnpm/type-tls@2.7.0/node_modules/type-tls/dist/type-tls.mjs","../../../../node_modules/.pnpm/image-tls@1.2.0/node_modules/image-tls/dist/image-tls.mjs","../../../../node_modules/.pnpm/@three3d+tools@1.9.4_three@0.172.0/node_modules/@three3d/tools/dist/tools.mjs","../../../../node_modules/image-tls/dist/image-tls.mjs","../../../../node_modules/@three3d/volume/dist/volume.mjs","../src/index.ts"],"sourcesContent":["function T(n) {\n var t = typeof n;\n return n && (t === \"object\" || t === \"function\");\n}\nfunction d(n) {\n var t = n;\n return n != null && (t = n.constructor, t == null && (t = typeof n)), t;\n}\nfunction l(n) {\n switch (n) {\n case void 0:\n return \"undefined\";\n case null:\n return \"null\";\n }\n let t = typeof n;\n switch (t) {\n case \"function\":\n return n.name;\n case \"string\":\n return n;\n default:\n return t;\n }\n}\nfunction _(n) {\n return globalThis[n];\n}\nfunction $(n) {\n let t = d(n);\n return l(t);\n}\nfunction b(n) {\n return n == null || T(n) ? d(n) : typeof n;\n}\nfunction x(n) {\n var t = b(n);\n return l(t);\n}\nfunction I(n) {\n var t = typeof n;\n return n == null || t !== \"object\" && t !== \"function\";\n}\nfunction z(n) {\n let t = n && n.length;\n return Number.isInteger(n.length) && t >= 0;\n}\nfunction E(n) {\n return n && typeof n[Symbol.iterator] == \"function\";\n}\nfunction S(n) {\n return n && typeof n.next == \"function\";\n}\nfunction u(n, ...t) {\n for (const e of t) {\n const o = Object.getOwnPropertyDescriptors(e);\n Object.defineProperties(n, o);\n }\n return n;\n}\nfunction M(n, t) {\n return t;\n}\nfunction j() {\n return function(t, e) {\n return e;\n };\n}\nfunction G(n, t) {\n return u(n, t), t;\n}\nfunction N(n) {\n return function(e) {\n return u(n, e), e;\n };\n}\nfunction Z(n, t) {\n return u(n, t), n;\n}\nfunction C(n) {\n return function(e) {\n return u(n, e), n;\n };\n}\nfunction K(n, t) {\n return t;\n}\nfunction a(n, t) {\n var o;\n u(n.prototype, t);\n const e = t._constructor;\n if (typeof e == \"function\") {\n const r = n;\n ((o = r._constructors) != null ? o : r._constructors = []).push(e);\n }\n return t;\n}\nfunction D(n) {\n return function(e) {\n return a(n, e), e;\n };\n}\nfunction P(n, t) {\n return a(n, t), n;\n}\nfunction B(n) {\n return function(e) {\n return a(n, e), n;\n };\n}\nconst F = /^[A-Za-z_$]+[\\w$]*$/;\nfunction R(n) {\n return F.test(n);\n}\nconst w = /(^\\s*(async\\s+)?\\s*(\\b[A-Za-z_$]+[\\w$]*\\b)\\s*=>)|(^\\s*(async\\s+)?\\s*\\(\\s*(\\b[A-Za-z_$]+[\\w$]*\\b)?\\s*(,\\s*(\\b[A-Za-z_$]+[\\w$]*\\b)\\s*)*\\)\\s*=>)/;\nfunction L(n) {\n const t = n.toString();\n return w.test(t);\n}\nvar y;\nconst m = (y = globalThis.AsyncFunction) != null ? y : async function() {\n}.constructor;\nfunction q(n) {\n return n instanceof m;\n}\nvar g;\nconst h = (g = globalThis.GeneratorFunction) != null ? g : function* () {\n}.constructor;\nfunction H(n) {\n return n instanceof h;\n}\nvar p;\nconst v = (p = globalThis.AsyncGeneratorFunction) != null ? p : async function* () {\n}.constructor;\nfunction J(n) {\n return n instanceof v;\n}\nconst O = /(^\\s*(async\\s+)?function\\s*(\\s|\\*)\\s*)[A-Za-z_$]+[\\w$]*(\\s*\\()/;\nfunction Q(n) {\n if (n.name) {\n const t = n.toString();\n return !O.test(t);\n }\n return !0;\n}\nfunction U(n, t) {\n return n instanceof Promise ? n.then((e) => t(e, !1, void 0), (e) => t(void 0, !0, e)) : t(n, !1, void 0);\n}\nvar f = /* @__PURE__ */ ((n) => (n[n.x = 0] = \"x\", n[n.y = 1] = \"y\", n[n.z = 2] = \"z\", n))(f || {});\n((n) => {\n function t(r) {\n return n[r];\n }\n n.toKey = t;\n function e(r) {\n return n[r];\n }\n n.toIndex = e;\n function o(r) {\n const c = (r + 1) % 3, i = (r + 2) % 3;\n return [c, i];\n }\n n.getCrossAxiss = o;\n})(f || (f = {}));\nvar s = /* @__PURE__ */ ((n) => (n[n.x = 0] = \"x\", n[n.y = 1] = \"y\", n[n.z = 2] = \"z\", n[n.w = 3] = \"w\", n))(s || {});\n((n) => {\n function t(r) {\n return n[r];\n }\n n.toKey = t;\n function e(r) {\n return n[r];\n }\n n.toIndex = e;\n function o(r) {\n const c = (r + 1) % 4, i = (r + 2) % 4;\n return [c, i];\n }\n n.getCrossAxiss = o;\n})(s || (s = {}));\nexport {\n f as Axis,\n s as Axis4,\n j as createDefineMixin,\n B as createExtendTarget,\n C as createMixinTarget,\n D as createTargetExtend,\n N as createTargetMixin,\n K as defineExtend,\n M as defineMixin,\n P as extendTarget,\n x as getExactTypeNameOf,\n b as getExactTypeOf,\n l as getNameOfType,\n _ as getTypeByName,\n $ as getTypeNameOf,\n d as getTypeOf,\n Q as isAnonymousFunction,\n z as isArrayLike,\n L as isArrowFunction,\n q as isAsyncFunction,\n J as isAsyncGeneratorFunction,\n I as isBaseType,\n H as isGeneratorFunction,\n R as isIdentifier,\n E as isIterable,\n S as isIterator,\n T as isObject,\n u as mixin,\n Z as mixinTarget,\n a as targetExtend,\n G as targetMixin,\n U as waitAsyncable\n};\n","function T(n) {\n var t = typeof n;\n return n && (t === \"object\" || t === \"function\");\n}\nfunction d(n) {\n var t = n;\n return n != null && (t = n.constructor, t == null && (t = typeof n)), t;\n}\nfunction l(n) {\n switch (n) {\n case void 0:\n return \"undefined\";\n case null:\n return \"null\";\n }\n let t = typeof n;\n switch (t) {\n case \"function\":\n return n.name;\n case \"string\":\n return n;\n default:\n return t;\n }\n}\nfunction _(n) {\n return globalThis[n];\n}\nfunction $(n) {\n let t = d(n);\n return l(t);\n}\nfunction b(n) {\n return n == null || T(n) ? d(n) : typeof n;\n}\nfunction x(n) {\n var t = b(n);\n return l(t);\n}\nfunction I(n) {\n var t = typeof n;\n return n == null || t !== \"object\" && t !== \"function\";\n}\nfunction z(n) {\n let t = n && n.length;\n return Number.isInteger(n.length) && t >= 0;\n}\nfunction E(n) {\n return n && typeof n[Symbol.iterator] == \"function\";\n}\nfunction S(n) {\n return n && typeof n.next == \"function\";\n}\nfunction u(n, ...t) {\n for (const e of t) {\n const o = Object.getOwnPropertyDescriptors(e);\n Object.defineProperties(n, o);\n }\n return n;\n}\nfunction M(n, t) {\n return t;\n}\nfunction j() {\n return function(t, e) {\n return e;\n };\n}\nfunction G(n, t) {\n return u(n, t), t;\n}\nfunction N(n) {\n return function(e) {\n return u(n, e), e;\n };\n}\nfunction Z(n, t) {\n return u(n, t), n;\n}\nfunction C(n) {\n return function(e) {\n return u(n, e), n;\n };\n}\nfunction K(n, t) {\n return t;\n}\nfunction a(n, t) {\n var o;\n u(n.prototype, t);\n const e = t._constructor;\n if (typeof e == \"function\") {\n const r = n;\n ((o = r._constructors) != null ? o : r._constructors = []).push(e);\n }\n return t;\n}\nfunction D(n) {\n return function(e) {\n return a(n, e), e;\n };\n}\nfunction P(n, t) {\n return a(n, t), n;\n}\nfunction B(n) {\n return function(e) {\n return a(n, e), n;\n };\n}\nconst F = /^[A-Za-z_$]+[\\w$]*$/;\nfunction R(n) {\n return F.test(n);\n}\nconst w = /(^\\s*(async\\s+)?\\s*(\\b[A-Za-z_$]+[\\w$]*\\b)\\s*=>)|(^\\s*(async\\s+)?\\s*\\(\\s*(\\b[A-Za-z_$]+[\\w$]*\\b)?\\s*(,\\s*(\\b[A-Za-z_$]+[\\w$]*\\b)\\s*)*\\)\\s*=>)/;\nfunction L(n) {\n const t = n.toString();\n return w.test(t);\n}\nvar y;\nconst m = (y = globalThis.AsyncFunction) != null ? y : async function() {\n}.constructor;\nfunction q(n) {\n return n instanceof m;\n}\nvar g;\nconst h = (g = globalThis.GeneratorFunction) != null ? g : function* () {\n}.constructor;\nfunction H(n) {\n return n instanceof h;\n}\nvar p;\nconst v = (p = globalThis.AsyncGeneratorFunction) != null ? p : async function* () {\n}.constructor;\nfunction J(n) {\n return n instanceof v;\n}\nconst O = /(^\\s*(async\\s+)?function\\s*(\\s|\\*)\\s*)[A-Za-z_$]+[\\w$]*(\\s*\\()/;\nfunction Q(n) {\n if (n.name) {\n const t = n.toString();\n return !O.test(t);\n }\n return !0;\n}\nfunction U(n, t) {\n return n instanceof Promise ? n.then((e) => t(e, !1, void 0), (e) => t(void 0, !0, e)) : t(n, !1, void 0);\n}\nvar f = /* @__PURE__ */ ((n) => (n[n.x = 0] = \"x\", n[n.y = 1] = \"y\", n[n.z = 2] = \"z\", n))(f || {});\n((n) => {\n function t(r) {\n return n[r];\n }\n n.toKey = t;\n function e(r) {\n return n[r];\n }\n n.toIndex = e;\n function o(r) {\n const c = (r + 1) % 3, i = (r + 2) % 3;\n return [c, i];\n }\n n.getCrossAxiss = o;\n})(f || (f = {}));\nvar s = /* @__PURE__ */ ((n) => (n[n.x = 0] = \"x\", n[n.y = 1] = \"y\", n[n.z = 2] = \"z\", n[n.w = 3] = \"w\", n))(s || {});\n((n) => {\n function t(r) {\n return n[r];\n }\n n.toKey = t;\n function e(r) {\n return n[r];\n }\n n.toIndex = e;\n function o(r) {\n const c = (r + 1) % 4, i = (r + 2) % 4;\n return [c, i];\n }\n n.getCrossAxiss = o;\n})(s || (s = {}));\nexport {\n f as Axis,\n s as Axis4,\n j as createDefineMixin,\n B as createExtendTarget,\n C as createMixinTarget,\n D as createTargetExtend,\n N as createTargetMixin,\n K as defineExtend,\n M as defineMixin,\n P as extendTarget,\n x as getExactTypeNameOf,\n b as getExactTypeOf,\n l as getNameOfType,\n _ as getTypeByName,\n $ as getTypeNameOf,\n d as getTypeOf,\n Q as isAnonymousFunction,\n z as isArrayLike,\n L as isArrowFunction,\n q as isAsyncFunction,\n J as isAsyncGeneratorFunction,\n I as isBaseType,\n H as isGeneratorFunction,\n R as isIdentifier,\n E as isIterable,\n S as isIterator,\n T as isObject,\n u as mixin,\n Z as mixinTarget,\n a as targetExtend,\n G as targetMixin,\n U as waitAsyncable\n};\n","var T = Object.defineProperty;\nvar R = (e, t, n) => t in e ? T(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;\nvar D = (e, t, n) => (R(e, typeof t != \"symbol\" ? t + \"\" : t, n), n);\nimport { Axis as z } from \"type-tls\";\nfunction B(e, t, n, a = \"srgb\") {\n const i = new OffscreenCanvas(t, n).getContext(\"2d\"), o = i.createLinearGradient(0, 0, 256, 1);\n for (const [c, r] of e)\n o.addColorStop(Number(c), r);\n return i.fillStyle = o, i.fillRect(0, 0, t, n), i.getImageData(0, 0, t, n, { colorSpace: a });\n}\nfunction K(e, t) {\n let { area: n, width: a, height: s, colorSpace: i } = t || {};\n i = i ?? \"srgb\", n = n || {};\n const o = n.x ?? 0, c = n.y ?? 0, r = b(e), u = n.width ?? r.width, h = n.height ?? r.height;\n a = a ?? u, s = s ?? h;\n const l = new OffscreenCanvas(a, s).getContext(\"2d\");\n return l.drawImage(e, o, c, u, h, 0, 0, a, s), l.getImageData(0, 0, a, s, { colorSpace: i });\n}\nfunction b(e) {\n let t = 0, n = 0;\n return e instanceof HTMLImageElement ? (t = e.naturalWidth, n = e.naturalHeight) : e instanceof HTMLVideoElement ? (t = e.videoWidth, n = e.videoHeight) : (t = e.width, n = e.height), { width: t, height: n };\n}\nfunction V(e) {\n const { data: t, width: n, height: a, colorSpace: s } = e, i = t.length, o = new Uint8ClampedArray(i);\n for (let c = 0; c < a; c++) {\n const r = c * n, u = -(r + n), h = u + n, g = t.slice(u * 4, h * 4);\n o.set(g, r * 4);\n }\n return new ImageData(o, n, a, { colorSpace: s });\n}\nfunction F(e, t) {\n const { data: n, width: a } = e, s = t * a, i = s + a;\n return n.slice(s * 4, i * 4);\n}\nfunction H(e, t, n) {\n const { data: a, width: s } = e, o = (t * s + n) * 4;\n return a.slice(o, o + 4);\n}\nfunction Y(e) {\n const t = document.createElement(\"canvas\"), n = t.getContext(\"2d\");\n return t.width = e.width, t.height = e.height, n.putImageData(e, 0, 0), t;\n}\nfunction J(e) {\n return Y(e).toDataURL();\n}\nfunction L(e) {\n return e && e.data != null && e.width != null && e.height != null;\n}\nfunction P(e) {\n return L(e) && e.depth != null;\n}\nfunction Q(e, t) {\n for (const [n, a] of Object.entries(e))\n if (0 <= a && a <= t[n])\n return !0;\n return !1;\n}\nfunction _(e, t) {\n const { x: n, y: a } = t;\n return e.z * a * n + e.y * n + e.x;\n}\nfunction Z(e, t) {\n const { x: n, y: a } = t, s = Math.trunc(e / n), i = e - s * n, o = Math.trunc(s / a), c = s - o * a;\n return { x: i, y: c, z: o };\n}\nfunction $(e, t, n = 1) {\n let { x: a, y: s, z: i } = t;\n const o = e.size;\n return a = Math.max(0, Math.min(o.x - 1, a)), s = Math.max(0, Math.min(o.y - 1, s)), i = Math.max(0, Math.min(o.z - 1, i)), U(e, { x: a, y: s, z: i }, n);\n}\nfunction U(e, t, n = 1) {\n const { data: a, size: s } = e, i = _(t, s);\n let o = [];\n if (n > 0) {\n const c = i * n;\n for (let r = 0; r < n; r++)\n o.push(a[c + r]);\n }\n return { index: i, value: o };\n}\nfunction tt(e, t) {\n let { x: n, y: a, z: s } = t;\n const i = e.size;\n return n = Math.max(0, Math.min(i.x - 1, n)), a = Math.max(0, Math.min(i.y - 1, a)), s = Math.max(0, Math.min(i.z - 1, s)), N(e, { x: n, y: a, z: s });\n}\nfunction N(e, t) {\n const { data: n, size: a } = e, s = _(t, a);\n return { index: s, value: n[s] };\n}\nfunction et(e, t) {\n const { voidValue: n, valuesAccumulate: a, verifyVoid: s = () => !1 } = t;\n let { x: i, y: o, z: c } = e[0].size;\n const r = e.length;\n for (let l = 1; l < r; l++) {\n const f = e[l].size;\n i = Math.max(i, f.x), o = Math.max(o, f.y), c = Math.max(c, f.z);\n }\n const u = i * o * c, h = new Array(u), g = i * o;\n for (let l = 0; l < c; l++) {\n const f = l * g;\n for (let x = 0; x < o; x++) {\n const m = f + x * i;\n for (let d = 0; d < i; d++) {\n const y = m + d, v = { x: d, y: x, z: l }, M = [];\n for (const I of e) {\n const p = I.size;\n if (d < p.x && x < p.y && l < p.z)\n continue;\n const { index: C, value: A } = N(I, v);\n s(A, I, C) || M.push({ value: A, index: C, data3D: I, coord: v });\n }\n const S = M.length;\n let w = n;\n S > 1 ? w = a(M) : S === 1 && (w = M[0].value), h[y] = w;\n }\n }\n }\n return {\n data: h,\n size: { x: i, y: o, z: c }\n };\n}\nfunction E(e, t, n, a = 1) {\n const { size: s } = e, i = z.toKey(t), [o, c] = z.getCrossAxiss(t), r = z.toKey(o), u = z.toKey(c), h = s[r], g = s[u], l = [], f = s[i];\n n = Math.trunc(n), n = Math.max(0, Math.min(f - 1, n));\n let x = { x: 0, y: 0, z: 0 };\n x[i] = n;\n for (let m = 0; m < g; m++) {\n x[u] = m;\n for (let d = 0; d < h; d++) {\n x[r] = d;\n const { value: y } = U(e, x, a);\n l.push(...y);\n }\n }\n return { data: l, size: { x: h, y: g } };\n}\nfunction W(e, t, n) {\n t = Math.trunc(t);\n const { data: a, width: s, height: i, colorSpace: o } = n ? V(e) : e, c = a.length, r = c * t, u = new Uint8ClampedArray(r);\n for (let h = 0; h < t; h++)\n u.set(a, h * c);\n return { data: u, width: s, height: i, depth: t, colorSpace: o };\n}\nfunction nt(e, t, n) {\n const a = n || {}, s = a.reverseY, i = a.axis ?? \"z\", o = L(e) ? e : K(e, a);\n return i === \"z\" ? W(o, t, s) : X(o, i, t, s);\n}\nfunction X(e, t, n, a) {\n n = Math.trunc(n);\n const { data: s, width: i, height: o, colorSpace: c } = a ? V(e) : e, r = z.toKey(t), u = (t + 1) % 3, h = (t + 2) % 3, g = z.toKey(u), l = z.toKey(h), f = {\n [g]: i,\n [l]: o,\n [r]: n\n }, x = new Uint8ClampedArray(s.length * n), m = { x: 0, y: 0, z: 0 };\n for (let d = 0; d < n; d++) {\n m[r] = d;\n for (let y = 0; y < o; y++) {\n m[l] = y;\n for (let v = 0; v < i; v++) {\n m[g] = v;\n const S = (y * i + v) * 4, w = S + 4, I = s.subarray(S, w), C = _(m, f) * 4;\n x.set(I, C);\n }\n }\n }\n return { data: x, width: f.x, height: f.y, depth: f.z, colorSpace: c };\n}\nfunction O(e, t) {\n return e.y * t.x + e.x;\n}\nfunction at(e, t) {\n const { x: n } = t, a = Math.trunc(e / n);\n return { x: e - a * n, y: a };\n}\nfunction st(e, t, n = 1) {\n let { x: a, y: s } = t;\n const i = e.size;\n return a = Math.max(0, Math.min(i.x - 1, a)), s = Math.max(0, Math.min(i.y - 1, s)), G(e, { x: a, y: s }, n);\n}\nfunction G(e, t, n = 1) {\n const { data: a, size: s } = e, i = O(t, s);\n let o = [];\n if (n > 0) {\n const c = i * n;\n for (let r = 0; r < n; r++)\n o.push(a[c + r]);\n }\n return { index: i, value: o };\n}\nfunction it(e, t) {\n let { x: n, y: a } = t;\n const s = e.size;\n return n = Math.max(0, Math.min(s.x - 1, n)), a = Math.max(0, Math.min(s.y - 1, a)), j(e, { x: n, y: a });\n}\nfunction j(e, t) {\n const { data: n, size: a } = e, s = O(t, a);\n return { index: s, value: n[s] };\n}\nfunction ot(e, t, n = 1) {\n const { data: a, size: s } = e, i = s.x, o = t * i, c = o + i;\n return (typeof a.slice == \"function\" ? a : Array.from(a)).slice(o * n, c * n);\n}\nclass ct {\n constructor(t) {\n D(this, \"isImageData3DSlice\", !0);\n D(this, \"_image3D\");\n D(this, \"_canvas\");\n D(this, \"_context\");\n D(this, \"_axis\", z.z);\n D(this, \"_depth\", 0);\n D(this, \"_sliceSize\", null);\n D(this, \"_slice\");\n this.image3D = t;\n }\n /**\n * 3D图像数据\n */\n get image3D() {\n return this._image3D;\n }\n set image3D(t) {\n this._image3D = t, this.updateSize();\n }\n /**\n * 呈现切片的 canvas 元素\n * @remarks\n * 当 {@link ImageData3DSlice.axis} 或 {@link ImageData3DSlice.depth} 变更时,它会自动更新切片\n */\n get canvas() {\n let t = this._canvas;\n return t || (t = this._canvas = document.createElement(\"canvas\"), t.width = this.sliceSize.x, t.height = this.sliceSize.y), t;\n }\n /**\n * canvas 的 2d 上下文对象\n */\n get context() {\n return this._context ?? (this._context = this.canvas.getContext(\"2d\"));\n }\n /**\n * 轴\n * @remarks\n * 会沿该轴的垂直截面生成切片\n * \n * @defaultValue Axis.z\n */\n get axis() {\n return this._axis;\n }\n set axis(t) {\n this._axis = t, this.updateSize();\n }\n /**\n * 轴上的坐标值\n * @remarks\n * 会在轴的该位置处获取切片\n * @defaultValue 0\n */\n get depth() {\n return this._depth;\n }\n set depth(t) {\n this._depth = t, this.updateSlice();\n }\n /**\n * 切片的尺寸\n * @remarks\n * 不同轴上的切片的尺寸一般不一样\n */\n get sliceSize() {\n let t = this._sliceSize;\n if (!t) {\n const { axis: n, image3D: a } = this, { width: s, height: i, depth: o } = a, [c, r] = z.getCrossAxiss(n), u = [s, i, o];\n this._sliceSize = t = {\n x: u[c],\n y: u[r]\n };\n }\n return t;\n }\n /**\n * 获取切片数据\n * @remarks\n * 总是获取当前轴和深度处的切片\n */\n get slice() {\n return this._slice ?? (this._slice = this.getSlice(this.axis, this.depth));\n }\n /**\n * 获取切片数据\n * @remarks\n * 可以指定轴和深度;该方法不会更新 {@link ImageData3DSlice.axis} 和 {@link ImageData3DSlice.depth} 属性 \n * @param axis - 轴\n * @param depth - 深度\n * @returns \n */\n getSlice(t, n) {\n const { data: a, width: s, height: i, depth: o, colorSpace: c } = this.image3D, { data: r, size: u } = E({ data: a, size: { x: s, y: i, z: o } }, t, n, 4), h = r instanceof Uint8ClampedArray ? r : Uint8ClampedArray.from(r);\n return new ImageData(h, u.x, u.y, { colorSpace: c });\n }\n /**\n * 获取切片图像的 url\n * @returns \n */\n getDataURL() {\n return this.canvas.toDataURL();\n }\n /**\n * 获取切片上指定坐标处的颜色\n * @param coord - 坐标\n * @returns \n */\n getColor(t) {\n const { x: n, y: a } = t;\n return H(this.slice, a, n);\n }\n /**\n * 更新切片尺寸相关的信息\n */\n updateSize() {\n this._sliceSize = null;\n const t = this.canvas;\n t.width = this.sliceSize.x, t.height = this.sliceSize.y, this.updateSlice();\n }\n /**\n * 更新切片相关的信息\n */\n updateSlice() {\n this._slice = null, this.context.putImageData(this.slice, 0, 0);\n }\n}\nexport {\n ct as ImageData3DSlice,\n B as createLinearGradientImageData,\n O as data2DCoordToIndex,\n at as data2DIndexToCoord,\n _ as data3DCoordToIndex,\n Z as data3DIndexToCoord,\n nt as extrudeImage,\n W as extrudeImageData,\n X as extrudeImageDataOnAxis,\n G as getData2DItem,\n st as getData2DItemSafe,\n ot as getData2DRow,\n j as getData2DValue,\n it as getData2DValueSafe,\n U as getData3DItem,\n $ as getData3DItemSafe,\n E as getData3DSlice,\n N as getData3DValue,\n tt as getData3DValueSafe,\n H as getImageDateColor,\n K as getImageDateOfImage,\n F as getImageDateRow,\n b as getNaturalSizeOfImageSource,\n Y as imageDataToCanvas,\n J as imageDataToUrl,\n L as isIImageData2,\n P as isIImageData3,\n Q as isOutOfSize,\n et as mergeData3Ds,\n V as reverseImageDateY\n};\n","var zt = Object.defineProperty;\nvar Ut = (t, n, e) => n in t ? zt(t, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[n] = e;\nvar j = (t, n, e) => (Ut(t, typeof n != \"symbol\" ? n + \"\" : n, e), e);\nimport { LineCurve3 as K, LineCurve as $, CurvePath as Ot, Vector4 as St, Vector3 as w, Vector2 as z, Matrix3 as ft, Quaternion as S, TextureLoader as qt, Texture as Rt, AlphaFormat as Nt, RedFormat as kt, RedIntegerFormat as jt, RGFormat as Qt, RGIntegerFormat as Ft, RGBAFormat as Wt, RGBAIntegerFormat as Et, LuminanceFormat as Gt, LuminanceAlphaFormat as Xt, DepthFormat as Yt, DepthStencilFormat as Zt, Line3 as Ht, MathUtils as Jt, Color as Q, BufferGeometry as Kt, Float32BufferAttribute as wt, LineBasicMaterial as $t, Line as vt, MirroredRepeatWrapping as xt, ClampToEdgeWrapping as Ct, RepeatWrapping as At } from \"three\";\nimport { isBaseType as tn, isIterable as nn } from \"type-tls\";\nimport { Axis as Ie, Axis4 as Me } from \"type-tls\";\nimport { createLinearGradientImageData as en, getData3DSlice as on, getData3DItemSafe as sn } from \"image-tls\";\nfunction cn(t) {\n const n = t.curves[0].getPoint(0), e = t.curves[t.curves.length - 1].getPoint(1);\n if (!n.equals(e)) {\n const o = n.isVector3 && e.isVector3 ? K : $;\n t.curves.push(new o(e, n));\n }\n return t;\n}\nfunction kn() {\n Ot.prototype.closePath = function() {\n cn(this);\n };\n}\nfunction Pt(t) {\n return t.w !== void 0 ? [St, 4] : t.z !== void 0 ? [w, 3] : [z, 2];\n}\nfunction rn(t) {\n return t.w != null ? new St().copy(t) : t.z != null ? new w().copy(t) : new z().copy(t);\n}\nfunction H(t, n, e) {\n e = e ?? 0;\n const o = e + 1;\n if (tn(t))\n return t;\n if (t.x != null && t.y != null)\n return rn(t);\n if (Array.isArray(t))\n return t.map((c) => H(c, n, o));\n if (t instanceof Map) {\n const c = /* @__PURE__ */ new Map();\n for (const r of t.keys()) {\n const i = t.get(r), l = H(i, n, o);\n c.set(r, l);\n }\n return c;\n }\n if (nn(t)) {\n const c = [];\n for (const r of t) {\n const i = H(r, n, o);\n c.push(i);\n }\n return c;\n }\n if ((n || e === 0) && typeof t == \"object\") {\n const c = {};\n for (const r of Object.keys(t))\n c[r] = H(t[r], n, o);\n return c;\n }\n return t;\n}\nfunction X(t, n, e, o) {\n const s = (o == null ? void 0 : o.copy(t)) || t.clone();\n return s.cross(n), s.lengthSq() === 0 && (e ? Math.abs(n.z) === 1 ? t.x -= 1e-4 : t.z += 1e-4 : Math.abs(t.x) === 1 ? n.z -= 1e-4 : n.x += 1e-4, n.normalize(), s.crossVectors(t, n)), e ? t.copy(n).cross(s) : n.copy(s).cross(t), s.normalize(), n.normalize(), t.normalize(), { tangent: t, normal: n, binormal: s };\n}\nfunction ln(t, n, e, o) {\n const { binormal: s } = X(t, n, e, o);\n return s.negate(), { front: t, up: n, binormal: s };\n}\nfunction jn(t) {\n const { tangent: n, normal: e, binormal: o } = t;\n return { front: n, up: e, binormal: o.clone().negate() };\n}\nfunction Qn(t) {\n const { front: n, up: e, binormal: o } = t;\n return { tangent: n, normal: e, binormal: o.clone().negate() };\n}\nfunction Fn(t, n, e, o) {\n const { front: s, up: c, binormal: r } = ln(t.clone().normalize(), n.clone().normalize(), e), i = o ?? new ft(), l = i.elements;\n return r.toArray(l, 0), c.toArray(l, 3), s.toArray(l, 6), i;\n}\nfunction Wn(t, n, e, o) {\n const s = t.clone().projectOnPlane(e).normalize(), c = n.clone().projectOnPlane(e).normalize();\n return o = o ?? new S(), o.setFromUnitVectors(s, c), o;\n}\nfunction T(t, n) {\n const e = n.toArray(), o = e.findIndex((s) => s !== 0);\n return e[o] / t.toArray()[o];\n}\nfunction at(t, n) {\n const e = t.clone().cross(n);\n return typeof e == \"number\" ? e === 0 : e.lengthSq() === 0;\n}\nfunction En(t) {\n const n = t.length, e = [];\n if (n === 0)\n return e;\n const [o, s] = Pt(t[0]);\n for (let c = 0; c < n; c++) {\n const r = t[c], i = new o().copy(r), l = r.radius, u = e[c] ?? (e[c] = []);\n for (let a = c + 1; a < n; a++) {\n const f = t[a];\n i.distanceToSquared(f) <= (f.radius + l) ** 2 && (u.push(a), (e[a] = []).push(c));\n }\n }\n return e;\n}\nlet Tt;\nfunction Gn(t) {\n if (typeof t == \"string\")\n return (Tt || (Tt = new qt())).load(t);\n if (t.isTexture)\n return t;\n const n = Array.isArray(t) ? en(t, 256, 1) : t, e = new Rt(n);\n return n.colorSpace === \"srgb\" && (e.colorSpace = \"srgb\"), e.needsUpdate = !0, e;\n}\nfunction an(t, n) {\n const e = Math.sqrt(t.lengthSq() * n.lengthSq());\n if (e === 0)\n return 0;\n let o = t.dot(n) / e;\n return o = Math.max(-1, Math.min(1, o)), Math.acos(o);\n}\nfunction J(t, n, e) {\n let o = an(t, n);\n return o === 0 ? o : t.clone().cross(n).dot(e) < 0 ? -o : o;\n}\nfunction un(t, n, e) {\n return t = t.clone().projectOnPlane(e), n = n.clone().projectOnPlane(e), J(t, n, e);\n}\nfunction fn(t, n, e) {\n const o = n.clone().negate(), s = e.clone().projectOnPlane(n), c = t.clone().projectOnPlane(s), r = J(n, c, s), i = n.clone().cross(s), l = t.clone().projectOnPlane(i), u = J(n, l, i), a = t.clone().projectOnPlane(o), f = J(s, a, o);\n return { yaw: r, pitch: u, roll: f };\n}\nconst it = 180 / Math.PI, ut = {\n yaw: [\n { name: \"前\", range: [-15, 15] },\n { name: \"左\", range: [15, 165] },\n { name: \"右\", range: [-165, -15] },\n { name: \"后\", range: [-180.1, -165] },\n { name: \"后\", range: [165, 180.1] }\n ],\n pitch: [\n { name: \"前\", range: [-15, 15] },\n { name: \"上\", range: [15, 165] },\n { name: \"下\", range: [-165, -15] },\n { name: \"后\", range: [-180.1, -165] },\n { name: \"后\", range: [165, 180.1] }\n ],\n roll: [\n { name: \"上\", range: [-15, 15] },\n { name: \"左\", range: [15, 165] },\n { name: \"右\", range: [-165, -15] },\n { name: \"下\", range: [-180.1, -165] },\n { name: \"下\", range: [165, 180.1] }\n ]\n};\nfunction pn(t) {\n const n = {};\n for (const [e, o] of Object.entries(t))\n n[e] = Array.isArray(o) ? o : Object.entries(o).map(([s, c]) => ({ name: s, range: c }));\n return n;\n}\nconst lt = {\n degrees: !0,\n map: ut,\n front: { x: 0, y: 0, z: 1 },\n up: { x: 0, y: 1, z: 0 }\n};\nclass It {\n constructor(n) {\n j(this, \"_options\");\n j(this, \"_listMap\");\n j(this, \"_front\");\n j(this, \"_up\");\n n && (this.options = n);\n }\n static get options() {\n return this._options ?? (this.options = lt);\n }\n static set options(n) {\n this._options = Object.assign({}, structuredClone(ut), n);\n }\n /**\n * 默认选项\n */\n get defaultOptions() {\n return this.constructor.options;\n }\n get options() {\n return this._options ?? (this.options = this.defaultOptions);\n }\n set options(n) {\n this._options = Object.assign({}, structuredClone(this.defaultOptions), n), this._listMap = null, this._front = null, this._up = null;\n }\n /**\n * 是否使用角度,而非弧度\n */\n get degrees() {\n return this.options.degrees ?? (this.options.degrees = this.defaultOptions.degrees ?? !0);\n }\n set degrees(n) {\n this.options.degrees = n;\n }\n get map() {\n return this.options.map || (this.map = this.defaultOptions.map), this.options.map;\n }\n set map(n) {\n const e = structuredClone(this.defaultOptions.map), o = structuredClone(ut);\n n = n ? {\n yaw: n.yaw ?? e.yaw ?? o.yaw,\n pitch: n.pitch ?? e.pitch ?? o.pitch,\n roll: n.roll ?? e.roll ?? o.roll\n } : e, this.options.map = n, this._listMap = null;\n }\n get listMap() {\n return this._listMap ?? (this._listMap = pn(this.map ?? {}));\n }\n get front() {\n return this._front || (this.front = this.options.front ?? this.defaultOptions.front ?? lt.front), this._front;\n }\n set front(n) {\n this._front = new w().copy(n);\n }\n get up() {\n return this._up || (this.up = this.options.up ?? this.defaultOptions.up ?? lt.up), this._up;\n }\n set up(n) {\n this._up = new w().copy(n);\n }\n /**\n * 计算方位\n * @param target \n * @param front \n * @param up \n */\n computeAzimuth(n, e, o) {\n const s = new w().copy(n), c = new w().copy(e ?? this.front), r = new w().copy(o ?? this.up);\n let { yaw: i, pitch: l, roll: u } = fn(s, c, r);\n return this.degrees && (i *= it, l *= it, u *= it), {\n yaw: {\n angle: i,\n name: this.findAzimuthNames(\"yaw\", i)\n },\n pitch: {\n angle: l,\n name: this.findAzimuthNames(\"pitch\", l)\n },\n roll: {\n angle: u,\n name: this.findAzimuthNames(\"roll\", u)\n }\n };\n }\n /**\n * 查找匹配的方位名字\n * @param type - 类型\n * @param angle - 角度\n * @returns 匹配的名字列表\n */\n findAzimuthNames(n, e) {\n const o = [], s = this.listMap[n];\n if (!s)\n return o;\n for (const { name: c, range: [r, i] } of s)\n (e >= r && e < i || e <= r && e > i) && o.push(c);\n return o;\n }\n}\nj(It, \"_options\");\nconst Xn = new It(), mn = {\n [Nt]: 1,\n [kt]: 1,\n [jt]: 1,\n [Qt]: 3,\n [Ft]: 2,\n [Wt]: 4,\n [Et]: 4,\n [Gt]: 1,\n [Xt]: 2,\n [Yt]: 1,\n [Zt]: 2\n};\nfunction Mt(t) {\n return mn[t];\n}\nfunction Yn(t, n, e) {\n const { data: o, width: s, height: c, depth: r } = t.image, i = Mt(t.format);\n return on({ data: o, size: { x: s, y: c, z: r } }, n, e, i);\n}\nfunction Zn(t, n) {\n const { data: e, width: o, height: s, depth: c } = t.image, r = Mt(t.format);\n return sn({ data: e, size: { x: o, y: s, z: c } }, n, r);\n}\nvar h = /* @__PURE__ */ ((t) => (t.Dissociation = \"相离\", t.Intersect = \"相交\", t.Tangency = \"相切\", t.Contain = \"包含\", t))(h || {});\nfunction Hn(t, n) {\n const [e, o] = t, { center: s, radius: c } = n, r = o.clone().sub(e), i = s.clone().sub(e), l = r.lengthSq(), u = r.dot(i) ** 2, a = l * (i.lengthSq() - c ** 2), f = u - a;\n return f < 0 ? h.Dissociation : f === 0 ? h.Tangency : h.Intersect;\n}\nfunction Y(t, n) {\n const [e, o] = t, { center: s, radius: c } = n, r = o.clone().sub(e), i = e.clone().sub(s), l = r.lengthSq(), u = 2 * r.dot(i), a = i.lengthSq() - c ** 2, f = u ** 2 - 4 * l * a;\n if (f < 0)\n return [];\n const p = l * 2, m = -u / p;\n if (f === 0)\n return [m];\n const d = Math.sqrt(f) / p, y = m - d, b = m + d;\n return [y, b];\n}\nfunction Jn(t, n) {\n const [e, o] = t, s = o.clone().sub(e);\n return Y(t, n).map((r) => s.clone().multiplyScalar(r).add(e));\n}\nfunction hn(t, n) {\n const e = Y(t, n), o = e.length;\n if (o === 0)\n return h.Dissociation;\n let s = 0, c = 0, r = 0;\n for (const l of e)\n l < 0 ? s++ : l > 1 ? c++ : (l === 0 || l === 1) && r++;\n const i = s + c;\n return o === 1 && i === 0 ? h.Tangency : s === 1 && c === 1 || r === 2 ? h.Contain : s === 2 || c === 2 ? h.Dissociation : h.Intersect;\n}\nfunction gn(t, n) {\n const [e, o] = t, s = o.clone().sub(e), c = Y(t, n), r = [];\n for (const i of c) {\n if (i < 0 || i > 1)\n continue;\n const l = s.clone().multiplyScalar(i).add(e);\n r.push(l);\n }\n return r;\n}\nfunction Kn(t, n) {\n const e = Y(t, n), o = e.length;\n if (o === 0)\n return h.Dissociation;\n let s = 0;\n for (const c of e)\n c < 0 && s++;\n return o === 1 && s === 0 ? h.Tangency : s === 2 ? h.Dissociation : h.Intersect;\n}\nfunction $n(t, n) {\n const [e, o] = t, s = o.clone().sub(e), c = Y(t, n), r = [];\n for (const i of c) {\n if (i < 0)\n continue;\n const l = s.clone().multiplyScalar(i).add(e);\n r.push(l);\n }\n return r;\n}\nfunction Bt(t, n) {\n const [e, o] = t, s = o.clone().sub(e), [c, r] = n, i = r.clone().sub(c);\n if (at(i, s)) {\n const l = c.clone().sub(e);\n return at(l, s) ? h.Tangency : h.Dissociation;\n }\n return h.Intersect;\n}\nfunction v(t, n) {\n const [e, o] = t, s = o.clone().sub(e), [c, r] = n, i = r.clone().sub(c), l = s.clone().cross(i), [u, a] = Pt(e);\n if (a === 2 ? l === 0 : l.equals(new u()))\n return null;\n const m = c.clone().sub(e).cross(i), g = a === 2 ? m / l : T(l, m);\n return s.clone().multiplyScalar(g).add(e);\n}\nfunction dn(t, n) {\n const [e, o] = n, [s, c] = t, r = c.clone().sub(s), i = Bt(t, n);\n if (i === h.Tangency) {\n let p = 0;\n return T(r, e.clone().sub(s)) < 0 && p++, T(r, o.clone().sub(s)) < 0 && p++, p === 2 ? h.Dissociation : p === 0 ? h.Contain : h.Tangency;\n }\n if (i !== h.Intersect)\n return i;\n const l = v(t, n), u = o.clone().sub(e), a = T(u, l.clone().sub(e));\n return a < 0 || a > 1 || T(r, l.clone().sub(s)) < 0 ? h.Dissociation : h.Intersect;\n}\nfunction yn(t, n) {\n const e = v(t, n);\n if (e === null)\n return null;\n const [o, s] = n, c = s.clone().sub(o), r = T(c, e.clone().sub(o));\n if (r < 0 || r > 1)\n return null;\n const [i, l] = t, u = l.clone().sub(i);\n return T(u, e.clone().sub(i)) < 0 ? null : e;\n}\nfunction vn(t, n) {\n const [e, o] = t, [s, c] = n, r = o.clone().sub(e), i = Bt(t, n);\n if (i === h.Tangency) {\n let p = 0, m = 0;\n const g = T(r, s.clone().sub(e));\n g < 0 ? p++ : g > 1 && m++;\n const d = T(r, c.clone().sub(e));\n return d < 0 ? p++ : d > 1 && m++, p === 2 || m === 2 ? h.Dissociation : p + m === 1 ? h.Tangency : h.Contain;\n }\n if (i !== h.Intersect)\n return i;\n const l = v(t, n), u = c.clone().sub(s), a = T(u, l.clone().sub(s));\n if (a < 0 || a > 1)\n return h.Dissociation;\n const f = T(r, l.clone().sub(e));\n return f < 0 || f > 1 ? h.Dissociation : h.Intersect;\n}\nfunction te(t, n) {\n const e = v(t, n);\n if (e === null)\n return null;\n const [o, s] = n, c = s.clone().sub(o), r = T(c, e.clone().sub(o));\n if (r < 0 || r > 1)\n return null;\n const [i, l] = t, u = l.clone().sub(i), a = T(u, e.clone().sub(i));\n return a < 0 || a > 1 ? null : e;\n}\nfunction bn(t, n) {\n const [e, o] = t, s = n.clone().sub(e), c = o.clone().sub(e);\n if (at(c, s)) {\n const r = T(c, s);\n return r < 0 || r > 1 ? h.Tangency : h.Contain;\n }\n return h.Dissociation;\n}\nfunction ne(t, n) {\n const e = n.length;\n let o, s = !1;\n for (let c = 0; c < e; c++) {\n const r = n[c];\n let i = c + 1;\n i === e && (i = 0);\n const l = n[i], u = new z().subVectors(l, r), f = new z().subVectors(t, r).cross(u);\n f === 0 && (s = !0);\n const p = Math.sign(f);\n o !== void 0 && o !== p && h.Dissociation, o = p;\n }\n return s ? h.Tangency : h.Contain;\n}\nfunction Ln(t, n) {\n const e = [t, t.clone().add(new z(10, 0))], o = n.length;\n let s = 0;\n for (let c = 0; c < o; c++) {\n const r = n[c];\n let i = c + 1;\n i === o && (i = 0);\n const l = n[i], u = [r, l];\n if (bn(u, t) === h.Contain)\n return h.Tangency;\n const f = dn(e, u);\n if (f === h.Contain) {\n s += 2;\n continue;\n }\n if (f === h.Intersect) {\n yn(e, u);\n let p = 0;\n r.y > t.y && p++, l.y > t.y && p++, p === 1 && s++;\n }\n }\n return s % 2 === 0 ? h.Dissociation : h.Contain;\n}\nfunction ee(t, n) {\n const e = t.length;\n let o = 0, s = 0;\n for (let l = 0; l < e; l++) {\n const u = t[l];\n let a = l + 1;\n a === e && (a = 0);\n const f = t[a], m = hn([u, f], n);\n if (m === h.Intersect)\n return h.Intersect;\n m === h.Contain ? o++ : m === h.Tangency && s++;\n }\n if (o === e)\n return h.Contain;\n if (o > 0)\n return h.Intersect;\n const { center: c, radius: r } = n, i = Ln(c, t);\n return r === 0 ? i : i === h.Contain ? h.Contain : s > 0 ? h.Tangency : h.Dissociation;\n}\nfunction oe(t, n) {\n const e = t.length;\n let o = [];\n for (let s = 0; s < e; s++) {\n const c = t[s];\n let r = s + 1;\n r === e && (r = 0);\n const i = t[r], u = gn([c, i], n);\n o = [...o, ...u];\n }\n return o;\n}\nfunction se(t, n) {\n if (n = n ?? t.arcLengthDivisions, t.cacheArcULengths && t.cacheArcULengths.length === n + 1 && !t.needsUpdate) {\n const c = t.cacheArcULengths;\n return { lengths: c, length: c[n] };\n }\n t.needsUpdate = !1;\n const e = [0];\n let o = t.getPoint(0), s = 0;\n for (let c = 1; c <= n; c++) {\n const r = t.getPointAt(c / n);\n s += r.distanceTo(o), e.push(s), o = r;\n }\n return t.cacheArcULengths = e, { lengths: e, length: s };\n}\nfunction ce(t, n, e) {\n const o = e ? (l) => t.getPointAt(l) : (l) => t.getPoint(l);\n let s = o(0), c = 0;\n const r = [], i = n.length;\n for (let l = 0; l < i; l++) {\n const u = n[l], a = o(u);\n c += a.distanceTo(s), r.push(c), s = a;\n }\n return { lengths: r, length: r[i - 1] };\n}\nfunction Vt(t, n) {\n let e = t.sampleLength;\n if (!e) {\n const o = t.sampleNum;\n if (o)\n return o;\n e = 1;\n }\n return Math.ceil(n / e);\n}\nfunction re(t) {\n const { curve: n } = t;\n let e = n.getLength();\n const o = Vt(t, e);\n return n.arcLengthDivisions < o && (n.arcLengthDivisions = o, n.updateArcLengths(), e = n.getLength()), { length: e, division: o };\n}\nvar wn = /* @__PURE__ */ ((t) => (t.back = \"back\", t.front = \"front\", t))(wn || {});\nfunction ie(t) {\n const { curve: n, distance: e, fromU: o = 0, side: s, tolerance: c = e * 0.1 } = t, r = t.length ?? n.getLength(), i = n.getPointAt(o);\n let l = e / r;\n const u = s === \"front\" ? -1 : 1;\n let a = !0, f = o, p = i, m = 0, g = !0;\n do {\n f = u * l + o;\n let d = !1;\n f > 1 ? (f = 1, d = !0) : f < 0 && (f = 0, d = !0), p = n.getPointAt(f), m = p.distanceTo(i), a = Math.abs(e - m) > c;\n const y = e / m;\n if (d && a && y > 1) {\n g = !1;\n break;\n }\n l *= y;\n } while (a);\n return {\n succeed: g,\n u: f,\n point: p,\n distance: m\n };\n}\nfunction le(t) {\n const { curve: n, distance: e, fromU: o = 0, tolerance: s = e * 0.1, origin: c } = t, r = t.length ?? n.getLength(), i = n.getPointAt(o), l = i.distanceTo(c), u = e - l;\n let a = u / r, f = !0, p = o, m = i;\n do {\n p = a + o;\n let g = !1;\n p > 1 ? (p = 1, g = !0) : p < 0 && (p = 0, g = !0), m = n.getPointAt(p);\n const d = m.distanceTo(c);\n f = Math.abs(e - d) > s;\n const y = u / (d - l);\n if (g && f && y > 1)\n return null;\n a *= y;\n } while (f);\n return {\n u: p,\n point: m\n };\n}\nfunction xn(t, n, e) {\n const o = [], s = [], c = [], r = [], i = [];\n let l = t.getTangent(0), u = e.clone(), { binormal: a } = X(l, u);\n const f = 1 / n, p = new S();\n for (let m = 0; m <= n; m++) {\n const g = m * f;\n i.push(g);\n const d = t.getPoint(g);\n o.push(d);\n const y = t.getTangent(g);\n s.push(y), p.setFromUnitVectors(l, y);\n const b = u.clone().applyQuaternion(p);\n c.push(b);\n const C = a.clone().applyQuaternion(p);\n r.push(C), l = y, u = b, a = C;\n }\n return { tangents: s, normals: c, binormals: r, points: o, uts: i };\n}\nfunction Cn(t, n, e, o) {\n const s = [];\n o = o ?? t.autoClose;\n const { tangents: c, normals: r, binormals: i } = t.computeFrenetFrames(n, o), l = un(r[0], e, c[0]), u = 1 / n, a = new S(), f = [];\n for (let p = 0; p <= n; p++) {\n const m = p * u;\n f.push(m);\n const g = t.getPoint(m);\n s.push(g);\n const d = c[p], y = r[p], b = i[p];\n a.setFromAxisAngle(d, l), y.applyQuaternion(a), b.applyQuaternion(a);\n }\n return { tangents: c, normals: r, binormals: i, points: s, uts: f };\n}\nfunction An(t, n, e, o) {\n const s = [], c = [], r = [], i = [], l = [], u = o ? function(f) {\n return {\n point: t.getPointAt(f),\n tangent: t.getTangentAt(f)\n };\n } : function(f) {\n return {\n point: t.getPoint(f),\n tangent: t.getTangent(f)\n };\n }, a = 1 / n;\n for (let f = 0; f <= n; f++) {\n const p = f * a;\n l.push(p);\n const { point: m, tangent: g } = u(p);\n s.push(m), c.push(g);\n const d = e.clone(), { binormal: y } = X(g, d);\n r.push(d), i.push(y);\n }\n return { tangents: c, normals: r, binormals: i, points: s, uts: l };\n}\nfunction ae(t, n, e, o) {\n const { useU: s, fixUp: c, closed: r } = o || {}, i = r ?? !!t.autoClose;\n let l;\n return c ? l = An(t, n, e, s) : s ? l = Cn(t, n, e, i) : l = xn(t, n, e), l;\n}\nfunction ue(t) {\n const n = t.count, e = [0];\n let o = new w().fromBufferAttribute(t, 0), s = new w(), c = 0;\n for (let r = 1; r < n; r++)\n s.fromBufferAttribute(t, r), c += s.distanceTo(o), e.push(c), o.copy(s);\n return { lengths: e, length: c };\n}\nfunction fe(t) {\n const n = t.length, e = [0];\n let o = t[0], s, c = 0;\n for (let r = 1; r < n; r++)\n s = t[r], c += s.distanceTo(o), e.push(c), o = s;\n return { lengths: e, length: c };\n}\nfunction pt(t) {\n const n = Tn(t), e = [0], o = n.reduce((s, c) => (s += c.distance(), e.push(s), s), 0);\n return { lines: n, lengths: e, length: o };\n}\nfunction Tn(t) {\n const n = [];\n return t.reduce((e, o) => {\n const s = new Ht(e, o);\n return n.push(s), o;\n }), n;\n}\nfunction pe(t, n) {\n const e = [];\n return { lines: n.filter((s, c) => {\n const r = s.closestPointToPointParameter(t), i = 0 <= r || r >= 1;\n return i && e.push(c), i;\n }), indexs: e };\n}\nfunction me(t, n) {\n const { distSortIndexs: e, clampDists: o, clampPoints: s, ts: c, clampTs: r } = On(t, n), i = e[0];\n return { line: n[i], index: i, clampDist: o[i], clampPoint: s[i], t: c[i], clampT: r[i] };\n}\nfunction On(t, n) {\n const e = {\n clampDists: [],\n clampPoints: [],\n distSortIndexs: [],\n ts: [],\n clampTs: []\n };\n return n.forEach((o, s) => {\n const c = o.closestPointToPointParameter(t), r = Jt.clamp(c, 0, 1), i = o.at(r, new w()), l = t.distanceTo(i);\n e.clampDists.push(l), e.clampPoints.push(i), e.distSortIndexs.push(s), e.ts.push(c), e.clampTs.push(r);\n }), e.distSortIndexs.sort((o, s) => e.clampDists[o] - e.clampDists[s]), e;\n}\nfunction he(t) {\n const n = new Ot(), e = t[0].z == null ? $ : K;\n return t.reduce((o, s) => {\n const c = new e(o, s);\n return n.add(c), s;\n }), n;\n}\nfunction ge(t, n) {\n return t.z == null ? new $(t, n) : new K(t, n);\n}\nfunction de(t) {\n const n = t[0].z == null ? $ : K, e = [];\n return t.reduce((o, s) => {\n const c = new n(o, s);\n return e.push(c), s;\n }), e;\n}\nfunction ye(t, n) {\n const e = [], o = [], s = [], { lines: c, lengths: r, length: i } = pt(t), l = c.length;\n for (let u = 0; u < l; u++) {\n const f = c[u].delta(new w()).normalize();\n e.push(f);\n const p = n.clone(), { binormal: m } = X(f, p);\n o.push(p), s.push(m);\n }\n return e.push(e.at(-1).clone()), o.push(o.at(-1).clone()), s.push(s.at(-1).clone()), { tangents: e, normals: o, binormals: s, lengths: r, length: i, lines: c };\n}\nfunction be(t, n) {\n const e = [], o = [], s = [], { lines: c, lengths: r, length: i } = pt(t), l = c.length - 1;\n let u = c[0].delta(new w()).normalize(), a = n.clone(), { binormal: f } = X(u, a);\n const p = new S();\n for (let m = 0; m <= l; m++) {\n const d = c[m].delta(new w()).normalize();\n e.push(d), p.setFromUnitVectors(u, d);\n const y = a.clone().applyQuaternion(p);\n o.push(y);\n const b = f.clone().applyQuaternion(p);\n s.push(b), u = d, a = y, f = b;\n }\n return e.push(u.clone()), o.push(a.clone()), s.push(f.clone()), { tangents: e, normals: o, binormals: s, lengths: r, length: i };\n}\nfunction Sn(t, n) {\n const e = t.getLength(), o = Vt(n ?? {}, e), s = t.getPoints(o), c = t.getLengths(o);\n return _t(s, { ...n, lengths: c });\n}\nfunction _t(t, n) {\n const { startColor: e, endColor: o, color: s, lengths: c } = n ?? {}, r = s ? new Q(s) : null, i = e ? new Q(e) : r ?? new Q(0, 1, 0), l = o ? new Q(o) : r ?? new Q(0, 0, 1), u = [], a = [];\n t[0].toArray(u, 0);\n const f = u.length, p = c ?? pt(t).lengths, m = p[p.length - 1], g = new Q();\n t.forEach((y, b) => {\n y.toArray(u, b * f);\n const C = p[b] / m;\n g.lerpColors(i, l, C), g.toArray(a, b * 3);\n });\n const d = new Kt();\n return d.setAttribute(\"position\", new wt(u, f)), d.setAttribute(\"color\", new wt(a, 3)), d;\n}\nfunction Le(t, n) {\n n = n ?? {};\n let { material: e, linewidth: o } = n;\n o = o ?? 1, e = e ?? new $t({ vertexColors: !0, linewidth: o });\n const s = Array.isArray(t) ? _t(t, n) : Sn(t, n);\n return new vt(s, e);\n}\nconst tt = 0.1;\nfunction we(t, n = 0, e) {\n const o = [];\n let s = t / 2 - 1;\n if (e)\n if (n === 1) {\n const c = n - 1, r = n, i = r + 1;\n o.push(i, r, c);\n } else\n n > 1 && (s++, n -= 2);\n for (let c = 0; c < s; c++) {\n const r = c * 2 + n, i = r + 1, l = r + 2, u = r + 3;\n o.push(r, i, l, u, l, i);\n }\n return o;\n}\nfunction xe(t, n = 0, e) {\n const o = [];\n let s = t.length / 6 - 1;\n if (e)\n if (n === 1) {\n const u = n - 1, a = n, f = a + 1;\n o.push(f, a, u);\n } else\n n > 1 && (s++, n -= 2);\n const c = new w(), r = new w(), i = new w(), l = s - 1;\n for (let u = 0; u < s; u++) {\n const a = u * 2, f = a + 1, p = a + 2, m = a + 3, g = a + n, d = g + 1, y = g + 2, b = g + 3, C = [g, d, y, b, y, d], L = [g, d, b, b, y, g];\n if (g >= 0) {\n c.fromArray(t, a * 3), r.fromArray(t, p * 3);\n const O = u === l;\n if (c.equals(r)) {\n const A = a + 4;\n O || i.fromArray(t, A * 3).equals(r) ? o.push(...L) : o.push(...C);\n continue;\n }\n if (c.fromArray(t, f * 3), r.fromArray(t, m * 3), c.equals(r)) {\n const A = a + 5;\n O || i.fromArray(t, A * 3).equals(r) ? o.push(...C) : o.push(...L);\n continue;\n }\n }\n o.push(...C);\n }\n return o;\n}\nvar Pn = /* @__PURE__ */ ((t) => (t.bevel = \"bevel\", t.chamfer = \"chamfer\", t.round = \"round\", t.lineSegment = \"lineSegment\", t))(Pn || {});\nfunction In(t, n, e, o, s = tt) {\n const { point: c, length: r, width: i } = t, l = i / 2, { tangent: u, normal: a, binormal: f } = n, { tangent: p, normal: m, binormal: g } = e, { line: d } = Dt(n, e, s);\n let y;\n if (!d) {\n y = f.clone().multiplyScalar(l);\n const P = c.clone().sub(y), nt = c.clone().add(y);\n y.copy(g).multiplyScalar(l);\n const yt = c.clone().sub(y), bt = c.clone().add(y);\n return {\n points: [P, nt, yt, bt],\n normals: [a, a, m, m],\n lengths: [r, r, r, r]\n };\n }\n let { tangent: b, normal: C, length: L } = d;\n y = b.clone().multiplyScalar(L * l);\n const O = Math.abs(y.dot(p)), A = r - O, U = r + O, q = c.clone().sub(y), R = c.clone().add(y);\n let N, I, k, V;\n const M = f.clone().multiplyScalar(i), W = g.clone().multiplyScalar(i);\n if (u.clone().cross(p).dot(a) > 0) {\n const P = N = k = q;\n I = P.clone().add(M), V = P.clone().add(W);\n } else {\n const P = V = I = R;\n N = P.clone().sub(M), k = P.clone().sub(W);\n }\n return o ? {\n points: [N, I, k, V],\n normals: [a, a, m, m],\n lengths: [A, A, U, U]\n } : {\n points: [N, I, q, R, k, V],\n normals: [a, a, C, C, m, m],\n lengths: [A, A, r, r, U, U]\n };\n}\nvar Mn = /* @__PURE__ */ ((t) => (t[t.AllOblique = 0] = \"AllOblique\", t[t.TangentSame = 1] = \"TangentSame\", t[t.TangentReverse = 2] = \"TangentReverse\", t[t.TangentVertical = 4] = \"TangentVertical\", t[t.NormalSame = 8] = \"NormalSame\", t[t.NormalReverse = 16] = \"NormalReverse\", t[t.NormalVertical = 32] = \"NormalVertical\", t[t.BinormalSame = 64] = \"BinormalSame\", t[t.BinormalReverse = 128] = \"BinormalReverse\", t[t.BinormalVertical = 256] = \"BinormalVertical\", t))(Mn || {});\nfunction Bn(t, n, e = tt) {\n const { tangent: o, normal: s, binormal: c } = t, { tangent: r, normal: i, binormal: l } = n;\n let u = 0;\n const a = o.dot(r), f = Math.abs(a);\n f > 1 - e ? u |= a > 0 ? 1 : 2 : f < e && (u |= 4);\n const p = s.dot(i), m = Math.abs(p);\n m > 1 - e ? u |= p > 0 ? 8 : 16 : m < e && (u |= 32);\n const g = c.dot(l), d = Math.abs(g);\n return d > 1 - e ? u |= g > 0 ? 64 : 128 : d < e && (u |= 256), u;\n}\nfunction Dt(t, n, e = tt) {\n const { normal: o, binormal: s } = t, { normal: c, binormal: r } = n, i = Bn(t, n, e);\n let l, u;\n if (i & 8 && !(i & 2))\n u = c, l = s.clone().add(r);\n else if (i & 16)\n u = c, l = r.clone().negate().add(s);\n else {\n if (i & 3)\n return { relation: i };\n if (i & 256)\n return { relation: i };\n u = o.clone().add(c).normalize(), l = o.clone().cross(c);\n }\n l.normalize();\n let a = l.dot(s);\n a < 0 && (l.negate(), a = -a);\n const f = 1 / a;\n return {\n relation: i,\n line: {\n tangent: l,\n normal: u,\n length: f\n }\n };\n}\nfunction Vn(t, n, e, o, s = tt) {\n const { point: c, length: r, width: i } = t, l = i / 2, { tangent: u, normal: a, binormal: f } = n, { tangent: p, normal: m, binormal: g } = e, { smoothStepAngle: d, smoothStepLength: y } = o || {}, { relation: b, line: C } = Dt(n, e, s);\n let L;\n if (!C) {\n L = f.clone().multiplyScalar(l);\n const x = c.clone().sub(L), _ = c.clone().add(L);\n L.copy(g).multiplyScalar(l);\n const D = c.clone().sub(L), E = c.clone().add(L);\n return {\n points: [x, _, D, E],\n normals: [a, a, m, m],\n lengths: [r, r, r, r]\n };\n }\n let { tangent: O, normal: A, length: U } = C;\n L = O.clone().multiplyScalar(U * l);\n const q = c.clone().sub(L), R = c.clone().add(L);\n if (b & 64)\n return {\n points: [q, R],\n normals: [A, A],\n lengths: [r, r]\n };\n const N = f.angleTo(O), I = Math.abs(L.dot(p)), k = r - I, V = 1 / I;\n let M = d == null && y ? I / y : N / (d ?? 0.5);\n M = Math.max(Math.round(M), 1);\n const W = 1 / M, gt = new S().setFromUnitVectors(f, O), dt = new S().setFromUnitVectors(O, g), P = new S().setFromUnitVectors(a, A), nt = new S().setFromUnitVectors(A, m), Lt = u.clone().cross(p).dot(a) > 0 ? function(x) {\n return {\n left: q,\n right: q.clone().add(x)\n };\n } : function(x) {\n return {\n left: R.clone().sub(x),\n right: R\n };\n };\n L.copy(f).multiplyScalar(i);\n const Z = new S(), B = new S(), et = [], ot = [], st = [];\n for (let x = 0; x < M; x++) {\n const _ = x * W;\n B.slerpQuaternions(Z, gt, _);\n const D = x * V + k;\n st.push(D, D);\n const E = L.clone().applyQuaternion(B), { left: ct, right: rt } = Lt(E);\n et.push(ct, rt), B.slerpQuaternions(Z, P, _);\n const G = a.clone().applyQuaternion(B);\n ot.push(G, G);\n }\n L.copy(O).multiplyScalar(i);\n for (let x = 0; x <= M; x++) {\n const _ = x * W;\n B.slerpQuaternions(Z, dt, _);\n const D = x * V + r;\n st.push(D, D);\n const E = L.clone().applyQuaternion(B), { left: ct, right: rt } = Lt(E);\n et.push(ct, rt), B.slerpQuaternions(Z, nt, _);\n const G = A.clone().applyQuaternion(B);\n ot.push(G, G);\n }\n return { points: et, normals: ot, lengths: st };\n}\nfunction _n(t, n, e) {\n const { point: o, length: s, width: c } = t, r = c / 2, { normal: i, binormal: l } = n, { normal: u, binormal: a } = e;\n let f = l.clone().multiplyScalar(r);\n const p = o.clone().sub(f), m = o.clone().add(f);\n let g = a.clone().multiplyScalar(r);\n const d = o.clone().sub(g), y = o.clone().add(g);\n return {\n points: [p, m, d, y],\n normals: [i, i, u, u],\n lengths: [s, s, s, s]\n };\n}\nfunction Ce(t, n, e, o) {\n const { connectionType: s } = o || {};\n switch (s) {\n case \"round\":\n return Vn(t, n, e, o);\n case \"lineSegment\":\n return _n(t, n, e);\n default:\n return In(\n t,\n n,\n e,\n s === \"chamfer\"\n /* chamfer */\n );\n }\n}\nconst F = new ft();\nfunction mt(t, n) {\n const { wrapS: e, wrapT: o, flipX: s, flipY: c } = n;\n if (t.x < 0 || t.x > 1)\n switch (e) {\n case At:\n t.x = t.x - Math.floor(t.x);\n break;\n case Ct:\n t.x = t.x < 0 ? 0 : 1;\n break;\n case xt:\n Math.abs(Math.floor(t.x) % 2) === 1 ? t.x = Math.ceil(t.x) - t.x : t.x = t.x - Math.floor(t.x);\n break;\n }\n if (t.y < 0 || t.y > 1)\n switch (o) {\n case At:\n t.y = t.y - Math.floor(t.y);\n break;\n case Ct:\n t.y = t.y < 0 ? 0 : 1;\n break;\n case xt:\n Math.abs(Math.floor(t.y) % 2) === 1 ? t.y = Math.ceil(t.y) - t.y : t.y = t.y - Math.floor(t.y);\n break;\n }\n return s && (t.x = 1 - t.x), c && (t.y = 1 - t.y), t;\n}\nfunction Dn(t, n) {\n const e = t.count;\n for (let o = 0; o < e; o++) {\n const s = t.getX(o), c = t.getY(o), r = mt({ x: s, y: c }, n);\n t.setXY(o, r.x, r.y);\n }\n return t;\n}\nfunction zn(t, n) {\n const e = new z(), o = t.length;\n for (let s = 0; s < o; s++) {\n const c = s * 2, r = c + 1;\n e.x = t[c], e.y = t[r], mt(e, n), t[c] = e.x, t[r] = e.y;\n }\n return t;\n}\nfunction ht(t, n = new ft()) {\n const { offset: e = { x: 0, y: 0 }, repeat: o = { x: 1, y: 1 }, center: s = { x: 0, y: 0 }, rotation: c = 0 } = t;\n return n.setUvTransform(e.x, e.y, o.x, o.y, c, s.x, s.y), n;\n}\nfunction Ae(t, n, e) {\n return ht(n, F), t.applyMatrix3(F), e && mt(t, e), t;\n}\nfunction Te(t, n, e) {\n return ht(n, F), t.applyMatrix3(F), e && Dn(t, e), t.needsUpdate = !0, t;\n}\nfunction Oe(t, n, e) {\n ht(n, F);\n const o = new z(), s = t.length;\n for (let c = 0; c < s; c++) {\n const r = c * 2, i = r + 1;\n o.x = t[r], o.y = t[i], o.applyMatrix3(F), t[r] = o.x, t[i] = o.y;\n }\n return e && zn(t, e), t;\n}\nexport {\n Ie as Axis,\n Me as Axis4,\n It as Azimuth,\n wn as DirectionSide,\n Mn as FrenetFrameRelation,\n h as GeometricRelationship,\n Pn as LineConnectionType,\n X as adjustFrenetFrame,\n ln as adjustFrontUpFrame,\n Fn as adjustOrientation,\n Xn as azimuth,\n cn as closeCurvePath,\n ae as computeCurveFrenetFrames,\n An as computeCurveFrenetFramesByFixUp,\n xn as computeCurveFrenetFramesByT,\n Cn as computeCurveFrenetFramesByU,\n Bn as computeFrenetFrameRelation,\n En as computeIntersectSpheres,\n Y as computeIntersectionFactorOfLine_Circle,\n Dt as computeIntersectionLineOfBands,\n gn as computeIntersectionOfLineSegment_Circle,\n te as computeIntersectionOfLineSegment_LineSegment,\n Jn as computeIntersectionOfLine_Circle,\n v as computeIntersectionOfLine_Line,\n oe as computeIntersectionOfPolygon_Circle,\n $n as computeIntersectionOfRay_Circle,\n yn as computeIntersectionOfRay_LineSegment,\n be as computePolylineFrenetFrames,\n ye as computePolylineFrenetFramesByFixUp,\n T as computeVectorScalar,\n mt as configUV,\n Dn as configUVBufferAttribute,\n zn as configUVs,\n In as createBevelLineConnection,\n Sn as createCurveBufferGeometry,\n Ce as createLineConnection,\n ge as createLineCurve,\n de as createLineCurves,\n _n as createLineSegmentConnection,\n Le as createLineSegmentsByCurve,\n Gn as createLinearGradientTexture,\n Tn as createLines,\n _t as createPolylineBufferGeometry,\n he as createPolylineCurve,\n Vn as createRoundLineConnection,\n we as createSymmetricSegmentedTrigonometricIndexs,\n xe as createSymmetricSegmentedTrigonometricIndexsByVertexs,\n ht as createUVTransformMatrix,\n lt as defaultAzimuthOptions,\n ut as defaultCourseAzimuthMap,\n hn as discriminateRelationshipOfLineSegment_Circle,\n vn as discriminateRelationshipOfLineSegment_LineSegment,\n bn as discriminateRelationshipOfLineSegment_Point,\n Hn as discriminateRelationshipOfLine_Circle,\n Bt as discriminateRelationshipOfLine_Line,\n ne as discriminateRelationshipOfPoint_ConvexPolygon,\n Ln as discriminateRelationshipOfPoint_Polygon,\n ee as discriminateRelationshipOfPolygon_Circle,\n Kn as discriminateRelationshipOfRay_Circle,\n dn as discriminateRelationshipOfRay_LineSegment,\n pn as formatAzimuthDefineMap,\n jn as frenetFrameToFrontUpFrame,\n Qn as frontUpFrameToFrenetFrame,\n Zn as get3DTextureItem,\n Yn as get3DTextureSlice,\n un as getAxisRotationAngle,\n fn as getAzimuthAngle,\n me as getClosestDistanceInfoOfPointToLines,\n re as getCurveDivisionLength,\n ie as getCurvePointAwayFrom,\n le as getCurvePointAwayFromOrigin,\n se as getCurveULengths,\n On as getDistanceInfoOfPointToLines,\n an as getIncludedAngle,\n fe as getLengthsOfPoints,\n ue as getLengthsOfPositionAttribute,\n ce as getLengthsOfTs,\n pt as getLinesInfo,\n pe as getProjectionLines,\n Wn as getQuaternionBetweenVectorsAroundAxis,\n J as getRotationAngle,\n Vt as getSampleNum,\n Mt as getTextureFormatSize,\n Pt as getVectorClass,\n at as isCollinear,\n H as ivectorMemberToVector,\n rn as ivectorToVector,\n kn as threeBugPatch,\n Ae as transformUV,\n Te as transformUVBufferAttribute,\n Oe as transformUVs,\n tt as zeroThreshold_Default\n};\n","var T = Object.defineProperty;\nvar R = (e, t, n) => t in e ? T(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;\nvar D = (e, t, n) => (R(e, typeof t != \"symbol\" ? t + \"\" : t, n), n);\nimport { Axis as z } from \"type-tls\";\nfunction B(e, t, n, a = \"srgb\") {\n const i = new OffscreenCanvas(t, n).getContext(\"2d\"), o = i.createLinearGradient(0, 0, 256, 1);\n for (const [c, r] of e)\n o.addColorStop(Number(c), r);\n return i.fillStyle = o, i.fillRect(0, 0, t, n), i.getImageData(0, 0, t, n, { colorSpace: a });\n}\nfunction K(e, t) {\n let { area: n, width: a, height: s, colorSpace: i } = t || {};\n i = i ?? \"srgb\", n = n || {};\n const o = n.x ?? 0, c = n.y ?? 0, r = b(e), u = n.width ?? r.width, h = n.height ?? r.height;\n a = a ?? u, s = s ?? h;\n const l = new OffscreenCanvas(a, s).getContext(\"2d\");\n return l.drawImage(e, o, c, u, h, 0, 0, a, s), l.getImageData(0, 0, a, s, { colorSpace: i });\n}\nfunction b(e) {\n let t = 0, n = 0;\n return e instanceof HTMLImageElement ? (t = e.naturalWidth, n = e.naturalHeight) : e instanceof HTMLVideoElement ? (t = e.videoWidth, n = e.videoHeight) : (t = e.width, n = e.height), { width: t, height: n };\n}\nfunction V(e) {\n const { data: t, width: n, height: a, colorSpace: s } = e, i = t.length, o = new Uint8ClampedArray(i);\n for (let c = 0; c < a; c++) {\n const r = c * n, u = -(r + n), h = u + n, g = t.slice(u * 4, h * 4);\n o.set(g, r * 4);\n }\n return new ImageData(o, n, a, { colorSpace: s });\n}\nfunction F(e, t) {\n const { data: n, width: a } = e, s = t * a, i = s + a;\n return n.slice(s * 4, i * 4);\n}\nfunction H(e, t, n) {\n const { data: a, width: s } = e, o = (t * s + n) * 4;\n return a.slice(o, o + 4);\n}\nfunction Y(e) {\n const t = document.createElement(\"canvas\"), n = t.getContext(\"2d\");\n return t.width = e.width, t.height = e.height, n.putImageData(e, 0, 0), t;\n}\nfunction J(e) {\n return Y(e).toDataURL();\n}\nfunction L(e) {\n return e && e.data != null && e.width != null && e.height != null;\n}\nfunction P(e) {\n return L(e) && e.depth != null;\n}\nfunction Q(e, t) {\n for (const [n, a] of Object.entries(e))\n if (0 <= a && a <= t[n])\n return !0;\n return !1;\n}\nfunction _(e, t) {\n const { x: n, y: a } = t;\n return e.z * a * n + e.y * n + e.x;\n}\nfunction Z(e, t) {\n const { x: n, y: a } = t, s = Math.trunc(e / n), i = e - s * n, o = Math.trunc(s / a), c = s - o * a;\n return { x: i, y: c, z: o };\n}\nfunction $(e, t, n = 1) {\n let { x: a, y: s, z: i } = t;\n const o = e.size;\n return a = Math.max(0, Math.min(o.x - 1, a)), s = Math.max(0, Math.min(o.y - 1, s)), i = Math.max(0, Math.min(o.z - 1, i)), U(e, { x: a, y: s, z: i }, n);\n}\nfunction U(e, t, n = 1) {\n const { data: a, size: s } = e, i = _(t, s);\n let o = [];\n if (n > 0) {\n const c = i * n;\n for (let r = 0; r < n; r++)\n o.push(a[c + r]);\n }\n return { index: i, value: o };\n}\nfunction tt(e, t) {\n let { x: n, y: a, z: s } = t;\n const i = e.size;\n return n = Math.max(0, Math.min(i.x - 1, n)), a = Math.max(0, Math.min(i.y - 1, a)), s = Math.max(0, Math.min(i.z - 1, s)), N(e, { x: n, y: a, z: s });\n}\nfunction N(e, t) {\n const { data: n, size: a } = e, s = _(t, a);\n return { index: s, value: n[s] };\n}\nfunction et(e, t) {\n const { voidValue: n, valuesAccumulate: a, verifyVoid: s = () => !1 } = t;\n let { x: i, y: o, z: c } = e[0].size;\n const r = e.length;\n for (let l = 1; l < r; l++) {\n const f = e[l].size;\n i = Math.max(i, f.x), o = Math.max(o, f.y), c = Math.max(c, f.z);\n }\n const u = i * o * c, h = new Array(u), g = i * o;\n for (let l = 0; l < c; l++) {\n const f = l * g;\n for (let x = 0; x < o; x++) {\n const m = f + x * i;\n for (let d = 0; d < i; d++) {\n const y = m + d, v = { x: d, y: x, z: l }, M = [];\n for (const I of e) {\n const p = I.size;\n if (d < p.x && x < p.y && l < p.z)\n continue;\n const { index: C, value: A } = N(I, v);\n s(A, I, C) || M.push({ value: A, index: C, data3D: I, coord: v });\n }\n const S = M.length;\n let w = n;\n S > 1 ? w = a(M) : S === 1 && (w = M[0].value), h[y] = w;\n }\n }\n }\n return {\n data: h,\n size: { x: i, y: o, z: c }\n };\n}\nfunction E(e, t, n, a = 1) {\n const { size: s } = e, i = z.toKey(t), [o, c] = z.getCrossAxiss(t), r = z.toKey(o), u = z.toKey(c), h = s[r], g = s[u], l = [], f = s[i];\n n = Math.trunc(n), n = Math.max(0, Math.min(f - 1, n));\n let x = { x: 0, y: 0, z: 0 };\n x[i] = n;\n for (let m = 0; m < g; m++) {\n x[u] = m;\n for (let d = 0; d < h; d++) {\n x[r] = d;\n const { value: y } = U(e, x, a);\n l.push(...y);\n }\n }\n return { data: l, size: { x: h, y: g } };\n}\nfunction W(e, t, n) {\n t = Math.trunc(t);\n const { data: a, width: s, height: i, colorSpace: o } = n ? V(e) : e, c = a.length, r = c * t, u = new Uint8ClampedArray(r);\n for (let h = 0; h < t; h++)\n u.set(a, h * c);\n return { data: u, width: s, height: i, depth: t, colorSpace: o };\n}\nfunction nt(e, t, n) {\n const a = n || {}, s = a.reverseY, i = a.axis ?? \"z\", o = L(e) ? e : K(e, a);\n return i === \"z\" ? W(o, t, s) : X(o, i, t, s);\n}\nfunction X(e, t, n, a) {\n n = Math.trunc(n);\n const { data: s, width: i, height: o, colorSpace: c } = a ? V(e) : e, r = z.toKey(t), u = (t + 1) % 3, h = (t + 2) % 3, g = z.toKey(u), l = z.toKey(h), f = {\n [g]: i,\n [l]: o,\n [r]: n\n }, x = new Uint8ClampedArray(s.length * n), m = { x: 0, y: 0, z: 0 };\n for (let d = 0; d < n; d++) {\n m[r] = d;\n for (let y = 0; y < o; y++) {\n m[l] = y;\n for (let v = 0; v < i; v++) {\n m[g] = v;\n const S = (y * i + v) * 4, w = S + 4, I = s.subarray(S, w), C = _(m, f) * 4;\n x.set(I, C);\n }\n }\n }\n return { data: x, width: f.x, height: f.y, depth: f.z, colorSpace: c };\n}\nfunction O(e, t) {\n return e.y * t.x + e.x;\n}\nfunction at(e, t) {\n const { x: n } = t, a = Math.trunc(e / n);\n return { x: e - a * n, y: a };\n}\nfunction st(e, t, n = 1) {\n let { x: a, y: s } = t;\n const i = e.size;\n return a = Math.max(0, Math.min(i.x - 1, a)), s = Math.max(0, Math.min(i.y - 1, s)), G(e, { x: a, y: s }, n);\n}\nfunction G(e, t, n = 1) {\n const { data: a, size: s } = e, i = O(t, s);\n let o = [];\n if (n > 0) {\n const c = i * n;\n for (let r = 0; r < n; r++)\n o.push(a[c + r]);\n }\n return { index: i, value: o };\n}\nfunction it(e, t) {\n let { x: n, y: a } = t;\n const s = e.size;\n return n = Math.max(0, Math.min(s.x - 1, n)), a = Math.max(0, Math.min(s.y - 1, a)), j(e, { x: n, y: a });\n}\nfunction j(e, t) {\n const { data: n, size: a } = e, s = O(t, a);\n return { index: s, value: n[s] };\n}\nfunction ot(e, t, n = 1) {\n const { data: a, size: s } = e, i = s.x, o = t * i, c = o + i;\n return (typeof a.slice == \"function\" ? a : Array.from(a)).slice(o * n, c * n);\n}\nclass ct {\n constructor(t) {\n D(this, \"isImageData3DSlice\", !0);\n D(this, \"_image3D\");\n D(this, \"_canvas\");\n D(this, \"_context\");\n D(this, \"_axis\", z.z);\n D(this, \"_depth\", 0);\n D(this, \"_sliceSize\", null);\n D(this, \"_slice\");\n this.image3D = t;\n }\n /**\n * 3D图像数据\n */\n get image3D() {\n return this._image3D;\n }\n set image3D(t) {\n this._image3D = t, this.updateSize();\n }\n /**\n * 呈现切片的 canvas 元素\n * @remarks\n * 当 {@link ImageData3DSlice.axis} 或 {@link ImageData3DSlice.depth} 变更时,它会自动更新切片\n */\n get canvas() {\n let t = this._canvas;\n return t || (t = this._canvas = document.createElement(\"canvas\"), t.width = this.sliceSize.x, t.height = this.sliceSize.y), t;\n }\n /**\n * canvas 的 2d 上下文对象\n */\n get context() {\n return this._context ?? (this._context = this.canvas.getContext(\"2d\"));\n }\n /**\n * 轴\n * @remarks\n * 会沿该轴的垂直截面生成切片\n * \n * @defaultValue Axis.z\n */\n get axis() {\n return this._axis;\n }\n set axis(t) {\n this._axis = t, this.updateSize();\n }\n /**\n * 轴上的坐标值\n * @remarks\n * 会在轴的该位置处获取切片\n * @defaultValue 0\n */\n get depth() {\n return this._depth;\n }\n set depth(t) {\n this._depth = t, this.updateSlice();\n }\n /**\n * 切片的尺寸\n * @remarks\n * 不同轴上的切片的尺寸一般不一样\n */\n get sliceSize() {\n let t = this._sliceSize;\n if (!t) {\n const { axis: n, image3D: a } = this, { width: s, height: i, depth: o } = a, [c, r] = z.getCrossAxiss(n), u = [s, i, o];\n this._sliceSize = t = {\n x: u[c],\n y: u[r]\n };\n }\n return t;\n }\n /**\n * 获取切片数据\n * @remarks\n * 总是获取当前轴和深度处的切片\n */\n get slice() {\n return this._slice ?? (this._slice = this.getSlice(this.axis, this.depth));\n }\n /**\n * 获取切片数据\n * @remarks\n * 可以指定轴和深度;该方法不会更新 {@link ImageData3DSlice.axis} 和 {@link ImageData3DSlice.depth} 属性 \n * @param axis - 轴\n * @param depth - 深度\n * @returns \n */\n getSlice(t, n) {\n const { data: a, width: s, height: i, depth: o, colorSpace: c } = this.image3D, { data: r, size: u } = E({ data: a, size: { x: s, y: i, z: o } }, t, n, 4), h = r instanceof Uint8ClampedArray ? r : Uint8ClampedArray.from(r);\n return new ImageData(h, u.x, u.y, { colorSpace: c });\n }\n /**\n * 获取切片图像的 url\n * @returns \n */\n getDataURL() {\n return this.canvas.toDataURL();\n }\n /**\n * 获取切片上指定坐标处的颜色\n * @param coord - 坐标\n * @returns \n */\n getColor(t) {\n const { x: n, y: a } = t;\n return H(this.slice, a, n);\n }\n /**\n * 更新切片尺寸相关的信息\n */\n updateSize() {\n this._sliceSize = null;\n const t = this.canvas;\n t.width = this.sliceSize.x, t.height = this.sliceSize.y, this.updateSlice();\n }\n /**\n * 更新切片相关的信息\n */\n updateSlice() {\n this._slice = null, this.context.putImageData(this.slice, 0, 0);\n }\n}\nexport {\n ct as ImageData3DSlice,\n B as createLinearGradientImageData,\n O as data2DCoordToIndex,\n at as data2DIndexToCoord,\n _ as data3DCoordToIndex,\n Z as data3DIndexToCoord,\n nt as extrudeImage,\n W as extrudeImageData,\n X as extrudeImageDataOnAxis,\n G as getData2DItem,\n st as getData2DItemSafe,\n ot as getData2DRow,\n j as getData2DValue,\n it as getData2DValueSafe,\n U as getData3DItem,\n $ as getData3DItemSafe,\n E as getData3DSlice,\n N as getData3DValue,\n tt as getData3DValueSafe,\n H as getImageDateColor,\n K as getImageDateOfImage,\n F as getImageDateRow,\n b as getNaturalSizeOfImageSource,\n Y as imageDataToCanvas,\n J as imageDataToUrl,\n L as isIImageData2,\n P as isIImageData3,\n Q as isOutOfSize,\n et as mergeData3Ds,\n V as reverseImageDateY\n};\n","var at = Object.defineProperty;\nvar ot = (o, s, e) => s in o ? at(o, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[s] = e;\nvar v = (o, s, e) => (ot(o, typeof s != \"symbol\" ? s + \"\" : s, e), e);\nimport { ShaderMaterial as K, Vector2 as O, Vector3 as d, GLSL3 as Q, Matrix4 as Re, DoubleSide as Me, FrontSide as Z, Matrix3 as ze, Mesh as Ie, BoxGeometry as rt, Data3DTexture as Oe, RedFormat as st, FloatType as Te, LinearFilter as Ve, UnsignedByteType as Ee, RGBAFormat as lt, Color as Ge, UniformsUtils as Be, ShaderLib as ct, Points as Le, BufferGeometry as ke, Float32BufferAttribute as W, Uint8ClampedBufferAttribute as ut, PlaneGeometry as mt, Box3 as pe, Line3 as dt, Quaternion as pt, BackSide as we, RawShaderMaterial as je } from \"three\";\nimport { Axis as fe } from \"type-tls\";\nimport { get3DTextureSlice as ft, get3DTextureItem as vt, createLinearGradientTexture as ve, computeIntersectSpheres as ht } from \"@three3d/tools\";\nimport { getData3DSlice as He, getData3DItemSafe as qe, getData3DValueSafe as gt, getImageDateColor as xt, extrudeImage as _t, createLinearGradientImageData as yt, isIImageData2 as Mt, getImageDateOfImage as zt, isIImageData3 as ye, ImageData3DSlice as wt } from \"image-tls\";\nexport * from \"image-tls\";\nconst St = `precision highp sampler3D;\n\nuniform sampler3D map;\nuniform vec3 containerMin;\nuniform vec3 containerMax;\n\n// 0: 充满;1: 对齐;2: 原始\nuniform int fit;\n\n\nout vec3 cameraPos;\nout vec3 lookDir;\nout vec3 displayMin;\nout vec3 displayMax;\n\n\n\nvoid main() {\n cameraPos = vec3( inverse( modelMatrix ) * vec4( cameraPosition, 1.0 ) ).xyz;\n lookDir = position - cameraPos;\n\n vec3 containerSize = containerMax - containerMin;\n vec3 origin = containerMin;\n vec3 textSize = vec3(textureSize(map,0));\n displayMin = containerMin;\n displayMax = containerMax;\n\n switch (fit) {\n case 1:\n displayMax = displayMin + textSize;\n break;\n case 2:\n origin = vec3(0.0);\n break;\n default:\n textSize = containerSize;\n }\n\n vec3 scale = 1.0/textSize;\n cameraPos = (cameraPos - origin)*scale;\n lookDir *= scale;\n\n displayMin = max((displayMin - origin)*scale,vec3(0.0));\n displayMax = min((displayMax - origin)*scale,vec3(1.0));\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}`;\nvar Dt = /* @__PURE__ */ ((o) => (o[o.Fill = 0] = \"Fill\", o[o.Align = 1] = \"Align\", o[o.Raw = 2] = \"Raw\", o))(Dt || {});\nclass Xe extends K {\n constructor(e) {\n const { map: t, opacity: n, accFactor: i, steps: a, alphaRange: r, fit: l, atomize: u, side: c, containerMin: p, containerMax: m, uniforms: f, ...h } = e ?? {}, _ = n ?? 1, M = i ?? 1, S = a ?? 100, D = new O().copy(r ?? { x: 0, y: 0.95 }), w = l ?? 0, x = u ?? !0, y = c ?? Z, g = new d().copy(p ?? { x: 0, y: 0, z: 0 }), z = new d();\n if (m)\n z.copy(m);\n else if (t) {\n const { width: U, height: T, depth: C } = t.image, V = new d(U - 1, T - 1, C - 1);\n z.addVectors(g, V);\n }\n const N = {\n map: { value: t },\n containerMin: { value: g },\n containerMax: { value: z },\n fit: { value: w },\n opacity: { value: _ },\n alphaRange: { value: D },\n accFactor: { value: M },\n steps: { value: S },\n isDoubleSide: { value: !1 },\n atomize: { value: x },\n ...f\n };\n super({\n glslVersion: Q,\n // @ts-ignore\n uniforms: N,\n transparent: !0,\n vertexShader: St,\n ...h\n });\n v(this, \"isVolumeMaterial\", !0);\n v(this, \"_side\", Z);\n this.opacity = _, this.side = y;\n }\n /**\n * 三维的纹理\n */\n get map() {\n return this.uniforms.map.value;\n }\n set map(e) {\n this.uniforms.map.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 渲染体积材质的容器的最小点\n * @remarks\n * 容器的最小点和最大点一般是被设置成 geometry 的AABB包围盒;但也可以不是\n * 总之,体积材质的渲染依托于 geometry 的形状,它不会超出 geometry 的尺寸;\n * 但可以控制容器的最小点和最大点来控制体积材质的渲染尺寸;\n */\n get containerMin() {\n return this.uniforms.containerMin.value;\n }\n set containerMin(e) {\n this.uniforms.containerMin.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 渲染体积材质的容器的最大点\n * @remarks\n * 容器的最小点和最大点一般是被设置成 geometry 的AABB包围盒;但也可以不是\n * 总之,体积材质的渲染依托于 geometry 的形状,它不会超出 geometry 的尺寸;\n * 但可以控制容器的最小点和最大点来控制体积材质的渲染尺寸;\n */\n get containerMax() {\n return this.uniforms.containerMax.value;\n }\n set containerMax(e) {\n this.uniforms.containerMax.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 渲染体积材质容器的尺寸\n * @remarks\n * 每次调用都会重新计算\n */\n get containerSize() {\n return this.containerMax.clone().sub(this.containerMin);\n }\n /**\n * 体积材质在容器内的填充模式\n * @defaultValue VolumeFit.Fill\n */\n get fit() {\n return this.uniforms.fit.value;\n }\n set fit(e) {\n this.uniforms.fit.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 获取当前填模式下对 map 的应用的平移\n * @returns\n */\n getFitTranslate() {\n return this.fit === 2 ? new d() : this.containerMin.clone();\n }\n /**\n * 获取当前填模式下对 map 的应用的缩放\n * @returns \n */\n getFitScale() {\n var a;\n const e = new d(1, 1, 1), t = (a = this.map) == null ? void 0 : a.image, n = this.fit;\n if (!t || n === 2 || n === 1)\n return e;\n const i = new d(t.width, t.height, t.depth);\n return e.copy(this.containerSize).divide(i), e;\n }\n /**\n * 获取当前填模式下对 map 的应用的变换矩阵\n * @returns \n */\n getFitMatrix() {\n var i;\n const e = new Re(), t = (i = this.map) == null ? void 0 : i.image, n = this.fit;\n if (!t || n === 2)\n return e;\n if (n === 0) {\n const a = new d(t.width, t.height, t.depth), l = this.containerSize.divide(a);\n e.makeScale(l.x, l.y, l.z);\n }\n return e.setPosition(this.containerMin), e;\n }\n /**\n * 获取当前填模式下对 map 的应用的变换矩阵的逆矩阵\n * @returns \n */\n getFitMatrixInvert() {\n return this.getFitMatrix().invert();\n }\n /**\n * Mesh三角形的渲染面\n * @remarks\n * 可设置为前面、后面、或者两面都渲染\n * 如果只渲染前面,进入体积材质内部,体积材质就会消失\n * 如果只渲染后面,体积初遮挡,就会消失\n * 如果两面都渲染,则会隐藏看到容器的面\n */\n // @ts-ignore\n get side() {\n return this._side;\n }\n set side(e) {\n this._side = e, this.uniforms && (this.uniforms.isDoubleSide.value = e === Me, this.uniformsNeedUpdate = !0);\n }\n /**\n * 透明度\n * @remarks\n * 决定整体的透明度\n */\n // @ts-ignore\n get opacity() {\n return this.uniforms.opacity.value;\n }\n set opacity(e) {\n this.uniforms && (this.uniforms.opacity.value = e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 有效透明度的取值范围\n * @remarks\n * 如果最终颜色的透明度小于或等于 alphaRange.x ,则被认为是完全透明\n * 如果最终颜色的透明度在于或等于 alphaRange.y ,则被认为是完全不透明\n * 取值范围应当在 0 - 1\n * @defaultValue {x:0,y:0.95}\n */\n get alphaRange() {\n return this.uniforms.alphaRange.value;\n }\n set alphaRange(e) {\n this.uniforms.alphaRange.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 是否开启雾化的效果\n * @remarks\n * 开启后的渲染效果会更像雾\n * @defaultValue true\n */\n get atomize() {\n return this.uniforms.atomize.value;\n }\n set atomize(e) {\n this.uniforms.atomize.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 体积材质渲染的采样数\n * @remarks\n * 采样数越高,占用的GPU资源就越大;所以该数据设置的适宜最好;\n * @defaultValue 100\n */\n get steps() {\n return this.uniforms.steps.value;\n }\n set steps(e) {\n this.uniforms.steps.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 颜色累积系数\n * @remarks\n * 它是对体积材质进行积分时使用的系数;只在开启雾化效果{@link VolumeMaterial.atomize}时才有效;\n * 值越小,最终呈现出的效果就越雾化;\n * @defaultValue 1\n */\n get accFactor() {\n return this.uniforms.accFactor.value;\n }\n set accFactor(e) {\n this.uniforms && (this.uniforms.accFactor.value = e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 将材质空间下的坐标转为 map 空间下的坐标\n * @param coord - 材质空间下的坐标\n * @returns \n */\n toMapPosition(e) {\n const t = new d(e.x, e.y, e.z).applyMatrix4(this.getFitMatrixInvert());\n return t.set(Math.trunc(t.x), Math.trunc(t.y), Math.trunc(t.z)), t;\n }\n /**\n * 将材质空间下的深度转为 map 空间下的深度\n * @param axis - map坐标系下的坐标轴\n * @param depth - 材质空间下的深度\n * @returns \n */\n toMapDepth(e, t) {\n const n = fe.toKey(e), i = new d();\n i[n] = 1;\n const a = new ze().setFromMatrix4(this.getFitMatrix());\n return i.applyMatrix3(a), t /= i.length(), Math.trunc(t);\n }\n /**\n * 获取3D数据的切片\n * @remarks\n * 切片就是指定轴的指定位置的垂直截面\n * @param axis - map坐标系下的坐标轴\n * @param depth - 材质空间下,在轴方向的坐标值\n * @returns \n */\n getData3DSlice(e, t) {\n const n = this.map;\n return n != null && n.image ? (t = this.toMapDepth(e, t), ft(n, e, t)) : null;\n }\n /**\n * 获取3D数据中指定坐标处的数据项目\n * @param coord \n * @returns \n */\n getItem(e) {\n const t = this.map;\n return t != null && t.image ? vt(t, this.toMapPosition(e)).value : null;\n }\n}\nfunction bt(o) {\n o.boundingBox || o.computeBoundingBox();\n const { x: s, y: e, z: t } = o.boundingBox.min;\n return o.translate(-s, -e, -t), o;\n}\nclass rn extends Ie {\n constructor(e) {\n var r;\n const { width: t, height: n, depth: i } = ((r = e.map) == null ? void 0 : r.image) || {}, a = new rt(t, n, i);\n bt(a);\n super(a, e);\n v(this, \"isVolumeMesh\", !0);\n // @ts-ignore\n // override get geometry(){\n // return this._geometry;\n // }\n // override set geometry(value){\n // this._geometry = value;\n // this.configMaterial();\n // }\n v(this, \"_geometry\");\n /**\n * 是否自动更新材质\n * @remarks\n * 当启动该选项后,在 VolumeMesh 监测到 geometry 变更时,会自动更新体积材质的相关选项,以适应新的 geometry\n * @defaultValue true\n */\n v(this, \"autoUpdateMaterial\", !0);\n // @ts-ignore\n // override get material(){\n // return this._material;\n // }\n // override set material(value){\n // this._material = value;\n // this.configGeometry();\n // }\n v(this, \"_material\");\n /**\n * 是否自动更新几何体\n * @remarks\n * 当启动该选项后,在 VolumeMesh 监测到 material 变更时,会自动更新 geometry 的相关选项,以适应新的 体积材质\n * @defaultValue true\n */\n v(this, \"autoUpdateGeometry\", !0);\n /**\n * 自动规范化\n * @remarks\n * 开启该选项,设置新的 geometry 时,对 geometry 自动执行规范化操作 \n */\n v(this, \"autoNormalize\", !1);\n Object.defineProperties(this, {\n geometry: {\n get: () => this._geometry,\n set: (l) => {\n this._geometry = l, this.autoNormalize ? this.normalize() : this.autoUpdateMaterial && this.updateMaterial();\n }\n },\n material: {\n get: () => this._material,\n set: (l) => {\n this._material = l, this.autoUpdateGeometry && this.updateGeometry();\n }\n }\n }), this.geometry = a, this.material = e;\n }\n /**\n * 更新材质\n * @remarks\n * 更新体积材质的相关选项以使其匹配 geometry\n */\n updateMaterial() {\n const { geometry: e, material: t } = this;\n if (!(t && e))\n return !1;\n e.boundingBox || e.computeBoundingBox();\n const { min: n, max: i } = e.boundingBox;\n t.containerMin = n, t.containerMax = i;\n }\n /**\n * 更新几何体\n * @remarks\n * 更新 geometry 的相关选项以使其匹配体积材质\n */\n updateGeometry() {\n var c;\n const { geometry: e, material: t, autoUpdateMaterial: n } = this, i = (c = t.map) == null ? void 0 : c.image;\n if (!i)\n return !1;\n e.boundingBox || e.computeBoundingBox();\n const { width: a, height: r, depth: l } = i, u = e.boundingBox.getSize(new d());\n e.scale(a / u.x, r / u.y, l / u.z), n && this.updateMaterial();\n }\n /**\n * 规范化\n * @remarks\n * 将 geometry 的原点移动到包围盒的最小点处\n */\n normalize() {\n const { geometry: e, autoUpdateMaterial: t } = this;\n e.boundingBox || e.computeBoundingBox();\n const { x: n, y: i, z: a } = e.boundingBox.min;\n e.translate(-n, -i, -a), t && this.updateMaterial();\n }\n /**\n * 将材质空间下的坐标转为 map 空间下的坐标\n * @param coord - 材质空间下的坐标\n * @returns \n */\n toMapPosition(e) {\n const t = this.worldToLocal(new d(e.x, e.y, e.z));\n return this.material.toMapPosition(t);\n }\n /**\n * 将世界坐标系下的深度转为 material 空间下的深度\n * @param axis - 材质空间下的坐标轴\n * @param depth - 深度\n * @returns \n */\n toMaterialDepth(e, t) {\n const n = fe.toKey(e), i = new d();\n i[n] = 1;\n const a = new ze().setFromMatrix4(this.matrixWorld);\n return i.applyMatrix3(a), t /= i.length(), t;\n }\n /**\n * 将世界坐标系下的深度转为 map 空间下的深度\n * @param axis - map空间下的坐标轴\n * @param depth - 深度\n * @returns \n */\n toMapDepth(e, t) {\n return t = this.toMaterialDepth(e, t), this.material.toMapDepth(e, t);\n }\n /**\n * 获取3D数据的切片\n * @remarks\n * 切片就是指定轴的指定位置的垂直截面;\n * 轴和深度都是局部坐标系下的\n * @param axis - map空间下的坐标轴\n * @param depth - 世界空间下在轴方向上的坐标值\n * @returns \n */\n getData3DSlice(e, t) {\n return t = this.toMaterialDepth(e, t), this.material.getData3DSlice(e, t);\n }\n /**\n * 获取3D数据中指定坐标处的数据项目\n * @param coord - 世界坐标系下的坐标\n * @returns \n */\n getItem(e) {\n const t = this.worldToLocal(new d(e.x, e.y, e.z));\n return this.material.getItem(t);\n }\n}\nconst Ct = `precision highp float;\nprecision highp sampler3D;\n\nuniform sampler3D map;\nuniform sampler2D gradient;\n\nuniform bool atomize;\nuniform float steps;\n// 颜色累积系数\nuniform float accFactor;\nuniform vec2 range;\n// 是否丢弃超出范围的像素\nuniform bool discardOut;\n// 空值范围\nuniform vec2 voidRange;\nuniform float opacity;\nuniform vec2 alphaRange;\nuniform bool isDoubleSide;\n\nin vec3 cameraPos;\nin vec3 lookDir;\nin vec3 displayMin;\nin vec3 displayMax;\nout vec4 fragColor;\n\nvec4 colorBlend(vec4 near,vec4 far){\n float nA = near.a;\n if (nA >= 1.0){\n return near;\n }\n if (nA <= 0.0){\n return far;\n }\n \n float fA = far.a;\n float a = fA + nA - fA*nA;\n vec3 color = (far.rgb * fA * (1.0 - nA) + near.rgb*nA)/a;\n return vec4(color,a);\n}\n\n\n\n\nvec2 intersectBox( vec3 orig, vec3 dir ) {\n vec3 inv_dir = 1.0 / dir;\n vec3 tmin_tmp = (displayMin - orig ) * inv_dir;\n vec3 tmax_tmp = (displayMax - orig ) * inv_dir;\n vec3 tmin = min( tmin_tmp, tmax_tmp );\n vec3 tmax = max( tmin_tmp, tmax_tmp );\n float t0 = max( tmin.x, max( tmin.y, tmin.z ) );\n float t1 = min( tmax.x, min( tmax.y, tmax.z ) );\n return vec2( t0, t1 );\n}\n\nfloat getValue( vec3 point ) {\n return texture( map, point ).r;\n}\n\n// 获取梯度颜色\nvec4 getGradientColor(float val) {\n val = clamp( val, 0.0,1.0);\n return texture2D(gradient, vec2(val, 0.5));\n}\n\n\n\n\nvoid main(){\n vec3 rayDir = normalize( lookDir );\n\n vec2 times = intersectBox( cameraPos, rayDir );\n float tMin = times.x;\n float tMax = times.y;\n if ( tMin > tMax || tMax < 0.0 ) discard;\n tMin = max( tMin, 0.0 );\n\n vec3 point = cameraPos + tMin * rayDir;\n \n float step = 1.0/steps;\n float opacityFactor = atomize ? step * accFactor : 1.0;\n\n\n float invRangeLen = 1.0/(range.y - range.x);\n vec3 stepDir = rayDir * step;\n\n vec4 finalColor = vec4( 0,0,0,0);\n float alphaMax = alphaRange.y;\n\n for ( float t = tMin; t <= tMax; t += step,point += stepDir ) {\n float val = getValue( point);\n if (voidRange.x <= val && val <= voidRange.y ) continue;\n val = (val - range.x) * invRangeLen;\n if (discardOut && (val < 0.0 || val > 1.0)) continue;\n\n vec4 gradientColor = getGradientColor(val);\n gradientColor.a *= opacityFactor;\n finalColor = colorBlend(finalColor,gradientColor);\n if ( finalColor.a >= alphaMax ) break;\n }\n\n finalColor.a *= opacity;\n if ( finalColor.a <= alphaRange.x ) discard;\n if (isDoubleSide){\n finalColor.a = 1.0 - sqrt(1.0 - finalColor.a);\n }\n fragColor = finalColor;\n\n}`;\nclass sn extends Xe {\n constructor(e) {\n const { gradient: t, range: n, discardOut: i, voidRange: a, ...r } = e ?? {}, l = new O().copy(n ?? { x: 0, y: 100 }), u = i ?? !0, c = new O().copy(a ?? { x: -100, y: -1 }), m = {\n gradient: { value: t == null ? t : ve(t) },\n range: { value: l },\n discardOut: { value: u },\n voidRange: { value: c }\n };\n super({ ...r, fragmentShader: Ct, uniforms: m });\n v(this, \"isGradientVolumeMaterial\", !0);\n }\n /**\n * 数值的梯度映射纹理\n */\n get gradient() {\n return this.uniforms.gradient.value;\n }\n set gradient(e) {\n this.uniforms.gradient.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 数值的映射区间\n * @remarks\n * x 为最小值,y 为最大值\n * \n * @defaultValue {x:0,y:100}\n */\n get range() {\n return this.uniforms.range.value;\n }\n set range(e) {\n this.uniforms.range.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 是否丢弃超出映射范围的数值\n * @remarks\n * 当数值超出映射区间 {@link GradientVolumeMaterial.range} 时,是否丢弃;\n * \n * 包含左右边界值\n * @defaultValue true\n */\n get discardOut() {\n return this.uniforms.discardOut.value;\n }\n set discardOut(e) {\n this.uniforms.discardOut.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 空值的范围\n * @remarks\n * 当数值在此范围中时,会被认为是空的值,渲染时会被丢弃\n * \n * 包含左右边界值\n * \n * @defaultValue {x:-100,y:-1}\n */\n get voidRange() {\n return this.uniforms.voidRange.value;\n }\n set voidRange(e) {\n this.uniforms.voidRange.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n}\nclass Pt extends Oe {\n constructor(e, t, n, i, a) {\n super(e, t, n, i);\n v(this, \"isGradientData3DTexture\", !0);\n this.format = st, this.type = a ?? Te, this.minFilter = this.magFilter = Ve, this.unpackAlignment = 1, this.needsUpdate = !0;\n }\n /**\n * 获取3D数据的切片\n * @remarks\n * 切片就是指定轴的指定位置的垂直截面\n * @param axis - 轴\n * @param depth - 在轴上的坐标值\n * @returns \n */\n getData3DSlice(e, t) {\n const { data: n, width: i, height: a, depth: r } = this.image;\n return He({ data: n, size: { x: i, y: a, z: r } }, e, t, 1);\n }\n /**\n * 获取3D数据中指定坐标处的数据项目\n * @remarks\n * 在 ImageData3DTexture 中,与 {@link ImageData3DTexture.getColor} 返回的值一样;\n * @param coord \n * @returns \n */\n getItem(e) {\n const { data: t, width: n, height: i, depth: a } = this.image;\n return qe({ data: t, size: { x: n, y: i, z: a } }, e).value;\n }\n /**\n * 获取3D数据中指定坐标处的值\n * @param coord - 坐标\n * @returns \n */\n getValue(e) {\n const { data: t, width: n, height: i, depth: a } = this.image;\n return gt({ data: t, size: { x: n, y: i, z: a } }, e).value;\n }\n}\nfunction ln(o, s) {\n const { data: e, size: t } = o, { x: n, y: i, z: a } = t, r = n * i * a, { voidValue: l = 0, uint8: u } = s ?? {};\n let c;\n if (u) {\n c = new Uint8Array(r);\n for (let m = 0; m < r; m++) {\n const f = e[m] ?? l;\n c[m] = Math.trunc(f);\n }\n } else {\n c = new Float32Array(r);\n for (let m = 0; m < r; m++) {\n const f = e[m] ?? l;\n c[m] = f;\n }\n }\n const p = u ? Ee : Te;\n return new Pt(c, n, i, a, p);\n}\nconst Nt = `precision highp float;\nprecision highp sampler3D;\n\nuniform sampler3D map;\n\n\n\n// 颜色累积系数\nuniform float accFactor;\nuniform bool isDoubleSide;\nuniform bool atomize;\n\n\nuniform float opacity;\nuniform vec2 alphaRange;\nuniform float steps;\n\nin vec3 cameraPos;\nin vec3 lookDir;\nin vec3 displayMin;\nin vec3 displayMax;\nout vec4 fragColor;\n\n// 混合颜色\nvec4 colorBlend(vec4 near,vec4 far){\n float nA = near.a;\n if (nA >= 1.0){\n return near;\n }\n if (nA <= 0.0){\n return far;\n }\n \n float fA = far.a;\n float a = fA + nA - fA*nA;\n vec3 color = (far.rgb * fA * (1.0 - nA) + near.rgb*nA)/a;\n return vec4(color,a);\n}\n\n\n\n\n// 包围盒求交\nvec2 intersectBox( vec3 orig, vec3 dir ) {\n vec3 inv_dir = 1.0 / dir;\n vec3 tmin_tmp = (displayMin - orig ) * inv_dir;\n vec3 tmax_tmp = (displayMax - orig ) * inv_dir;\n vec3 tmin = min( tmin_tmp, tmax_tmp );\n vec3 tmax = max( tmin_tmp, tmax_tmp );\n float t0 = max( tmin.x, max( tmin.y, tmin.z ) );\n float t1 = min( tmax.x, min( tmax.y, tmax.z ) );\n return vec2( t0, t1 );\n}\n\n\n\nvoid main(){\n vec3 rayDir = normalize( lookDir );\n\n vec2 times = intersectBox( cameraPos, rayDir );\n float tMin = times.x;\n float tMax = times.y;\n if ( tMin > tMax || tMax < 0.0 ) discard;\n tMin = max( tMin, 0.0 );\n\n vec3 point = cameraPos + tMin * rayDir;\n \n float step = 1.0/steps;\n float opacityFactor = atomize ? step * accFactor : 1.0;\n\n vec3 stepDir = rayDir * step;\n\n vec4 finalColor = vec4( 0,0,0,0);\n float alphaMax = alphaRange.y;\n\n for ( float t = tMin; t <= tMax; t += step,point += stepDir ) {\n vec4 textureColor = texture( map, point );\n textureColor.a *= opacityFactor;\n finalColor = colorBlend(finalColor,textureColor);\n if ( finalColor.a >= alphaMax ) break;\n }\n\n finalColor.a *= opacity;\n if ( finalColor.a <= alphaRange.x ) discard;\n if (isDoubleSide){\n finalColor.a = 1.0 - sqrt(1.0 - finalColor.a);\n }\n fragColor = finalColor;\n\n}`;\nclass cn extends Xe {\n constructor(e) {\n super({ ...e, fragmentShader: Nt });\n v(this, \"isImageVolumeMaterial\", !0);\n }\n}\nfunction Ut(o, s, e) {\n const t = e ?? {}, { x: n, y: i } = t.range ?? { x: 0, y: 100 }, a = t.discardOut ?? !0, { x: r, y: l } = t.voidRange ?? { x: -100, y: -1 }, u = t.voidColor ?? [0, 0, 0, 0], { width: c, height: p } = s, m = Math.trunc(p / 2), f = c - 1;\n function h(x) {\n const y = Math.trunc(f * x);\n return xt(s, m, y);\n }\n const _ = 1 / (i - n), { data: M, size: S } = o, D = M.length, w = [];\n for (let x = 0; x < D; x++) {\n let y = u, g = M[x];\n (g <= r || l <= g) && (g = (g - n) * _, a && (g < 0 || g > 1) || (g = Math.min(Math.max(g, 0), 1), y = h(g))), w.push(...y);\n }\n return { data: w, size: S };\n}\nclass $e extends Oe {\n constructor(e, t, n, i) {\n super(e, t, n, i);\n v(this, \"isImageData3DTexture\", !0);\n this.format = lt, this.type = Ee, this.minFilter = this.magFilter = Ve, this.unpackAlignment = 1, this.needsUpdate = !0;\n }\n /**\n * 获取3D数据的切片\n * @remarks\n * 切片就是指定轴的指定位置的垂直截面\n * @param axis - 轴\n * @param depth - 在轴上的坐标值\n * @returns \n */\n getData3DSlice(e, t) {\n const { data: n, width: i, height: a, depth: r } = this.image;\n return He({ data: n, size: { x: i, y: a, z: r } }, e, t, 4);\n }\n /**\n * 获取3D数据中指定坐标处的数据项目\n * @remarks\n * 在 ImageData3DTexture 中,与 {@link ImageData3DTexture.getColor} 返回的值一样;\n * @param coord \n * @returns \n */\n getItem(e) {\n return this.getColor(e);\n }\n /**\n * 获取3D图像中指定坐标处的颜色\n * @param coord - 坐标\n * @returns \n */\n getColor(e) {\n const { data: t, width: n, height: i, depth: a } = this.image;\n return qe({ data: t, size: { x: n, y: i, z: a } }, e, 4).value;\n }\n}\nfunction un(o, s, e) {\n const t = (e == null ? void 0 : e.reverseY) ?? !0, { data: n, width: i, height: a, depth: r, colorSpace: l } = _t(o, s, { ...e, reverseY: t }), u = new $e(n, i, a, r);\n return l === \"srgb\" && (u.colorSpace = \"srgb\"), u;\n}\nfunction mn(o, s) {\n const e = s.gradient, t = Array.isArray(e) ? yt(e, 256, 1) : Mt(e) ? e : zt(e);\n let n = o;\n ye(o) && (n = {\n // @ts-ignore\n data: o.data,\n size: { x: o.width, y: o.height, z: o.depth }\n });\n const { data: i, size: a } = Ut(n, t, s), r = Uint8ClampedArray.from(i);\n return new $e(r, a.x, a.y, a.z);\n}\nconst At = `out vec3 lookDir;\nout vec3 normalDir;\n\n#if defined( USE_COLOR_ALPHA ) || defined( USE_COLOR )\n out vec4 verColor;\n#endif\n\nvoid main() {\n vec3 cameraPos = vec3( inverse( modelMatrix ) * vec4( cameraPosition, 1.0 ) ).xyz;\n lookDir = position - cameraPos;\n normalDir = normal;\n\n #if defined( USE_COLOR_ALPHA )\n verColor = color;\n #elif defined( USE_INSTANCING_COLOR )\n overColor = vec3(instanceColor,1.0);\n #elif defined( USE_COLOR )\n overColor = vec3(color,1.0);\n #endif\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}`, Ft = `uniform vec3 color;\nuniform float solid;\nuniform float exp;\n\nuniform float opacity;\nuniform bool isDoubleSide;\n\nin vec3 lookDir;\nin vec3 normalDir;\n\n#if defined( USE_COLOR_ALPHA ) || defined( USE_COLOR )\n in vec4 verColor;\n#endif\n\nout vec4 fragColor;\n\n\nvoid main(){\n #if defined( USE_COLOR_ALPHA ) || defined( USE_COLOR )\n fragColor = verColor;\n #else\n fragColor = vec4(color,1.0);\n #endif\n\n vec3 dir = normalize(lookDir);\n vec3 nor = normalize(normalDir);\n float depth = abs(dot(nor,dir));\n float dist = sqrt(1.0 - pow(depth,2.0));\n\n float finalAlpha = fragColor.a * depth;\n if (dist > solid) {\n float distAlpha = 1.0 - (dist - solid)/(1.0 - solid);\n finalAlpha *= pow(distAlpha,exp);\n }\n \n finalAlpha *= opacity;\n if ( finalAlpha == 0.0 ) discard;\n if (isDoubleSide){\n finalAlpha = 1.0 - sqrt(1.0 - finalAlpha);\n }\n fragColor.a = finalAlpha;\n}`;\nclass dn extends K {\n constructor(e) {\n const t = e ?? {}, n = t.color ?? new Ge(1, 1, 1), i = t.solid ?? 0, a = t.exp ?? 1, r = t.opacity ?? 1, l = t.side ?? Z;\n super({\n glslVersion: Q,\n // @ts-ignore\n uniforms: {\n color: { value: n },\n solid: { value: i },\n exp: { value: a },\n opacity: { value: r },\n isDoubleSide: { value: !1 }\n },\n vertexShader: At,\n fragmentShader: Ft,\n side: Z,\n transparent: !0\n });\n v(this, \"isSphereFogMaterial\", !0);\n v(this, \"_side\", Z);\n this.opacity = r, this.side = l;\n }\n /**\n * Mesh三角形的渲染面\n * @remarks\n * 可设置为前面、后面、或者两面都渲染\n * 如果只渲染前面,进入体积材质内部,体积材质就会消失\n * 如果只渲染后面,体积初遮挡,就会消失\n * 如果两面都渲染,则会隐藏看到容器的面\n */\n // @ts-ignore\n get side() {\n return this._side;\n }\n set side(e) {\n this._side = e, this.uniforms && (this.uniforms.isDoubleSide.value = e === Me, this.uniformsNeedUpdate = !0);\n }\n /**\n * 球形雾的颜色\n * @remarks\n * 当开启顶点颜色 {@link SphereFogMaterial.vertexColors} 时,此设置将无论;\n */\n get color() {\n return this.uniforms.color.value;\n }\n set color(e) {\n this.uniforms.color.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 透明度\n * @remarks\n * 决定整体的透明度\n * @defaultValue 1\n */\n // @ts-ignore\n get opacity() {\n return this.uniforms.opacity.value;\n }\n set opacity(e) {\n this.uniforms && (this.uniforms.opacity.value = e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 实心因子\n * @remarks\n * 在实心范围内,球形雾不会衰减\n * @defaultValue 0\n */\n get solid() {\n return this.uniforms.solid.value;\n }\n set solid(e) {\n this.uniforms && (this.uniforms.solid.value = e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 雾的衰减指数\n * @defaultValue 1\n */\n get exp() {\n return this.uniforms.exp.value;\n }\n set exp(e) {\n this.uniforms && (this.uniforms.exp.value = e), this.uniformsNeedUpdate = !0;\n }\n}\nclass Ye extends K {\n constructor(e, t) {\n const { solid: n = 0, exp: i = 1, useRadius: a = !0, sizeAttenuation: r = !0, star: l = !1, ...u } = e ?? {}, { uniforms: c, ...p } = t || {}, m = {\n star: { value: l },\n solid: { value: n },\n exp: { value: i }\n };\n super({\n // glslVersion: GLSL3,\n // @ts-ignore\n uniforms: Be.merge([ct.points.uniforms, m, c]),\n transparent: !0,\n depthTest: !1,\n // depthWrite:false,\n defines: {\n useRadius: a\n },\n ...p\n });\n v(this, \"isFogPointsMaterial\", !0);\n /**\n * 点的大小是否因相机深度而衰减\n * @remarks\n * 仅限透视摄像头\n * \n * @defaultValue true\n */\n v(this, \"sizeAttenuation\", !0);\n Object.assign(this, { ...u, solid: n, exp: i, sizeAttenuation: r });\n }\n /**\n * 使用来自Texture的数据设置点的颜色\n * @remarks\n * 可以选择包括一个alpha通道,通常与 .transparent或.alphaTest。\n */\n get map() {\n return this.uniforms.map.value;\n }\n set map(e) {\n this.uniforms.map.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 是否渲染成星星的样式\n * @remarks\n * 否则,将被渲染成球形\n */\n get star() {\n return this.uniforms.star.value;\n }\n set star(e) {\n this.uniforms.star.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 点的大小\n * @defaultValue 1.0\n */\n get size() {\n return this.uniforms.size.value;\n }\n set size(e) {\n this.uniforms.size.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 透明度\n * @remarks\n * 决定整体的透明度\n * @defaultValue 1\n */\n // @ts-ignore\n get opacity() {\n return this.uniforms.opacity.value;\n }\n set opacity(e) {\n this.uniforms && (this.uniforms.opacity.value = e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 实心因子\n * @remarks\n * 在实心范围内,雾点不会衰减\n * @defaultValue 0\n */\n get solid() {\n return this.uniforms.solid.value;\n }\n set solid(e) {\n this.uniforms && (this.uniforms.solid.value = e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 雾的衰减指数\n * @defaultValue 1\n */\n get exp() {\n return this.uniforms.exp.value;\n }\n set exp(e) {\n this.uniforms && (this.uniforms.exp.value = e), this.uniformsNeedUpdate = !0;\n }\n get scale() {\n return this.uniforms.scale.value;\n }\n set scale(e) {\n this.uniforms && (this.uniforms.scale.value = e), this.uniformsNeedUpdate = !0;\n }\n get fogDensity() {\n return this.uniforms.fogDensity.value;\n }\n set fogDensity(e) {\n this.uniforms && (this.uniforms.fogDensity.value = e), this.uniformsNeedUpdate = !0;\n }\n get fogNear() {\n return this.uniforms.fogNear.value;\n }\n set fogNear(e) {\n this.uniforms && (this.uniforms.fogNear.value = e), this.uniformsNeedUpdate = !0;\n }\n get fogFar() {\n return this.uniforms.fogFar.value;\n }\n set fogFar(e) {\n this.uniforms && (this.uniforms.fogFar.value = e), this.uniformsNeedUpdate = !0;\n }\n get fogColor() {\n return this.uniforms.fogColor.value;\n }\n set fogColor(e) {\n this.uniforms.fogColor.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n}\nconst Rt = `#ifdef useRadius\n\tattribute float radius;\n#endif\n\nuniform float size;\nuniform float scale;\n\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n\n#ifdef USE_POINTS_UV\n\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n\n#endif\n\nvoid main() {\n\n\t#ifdef USE_POINTS_UV\n\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\n\t#endif\n\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\n\t#ifdef useRadius\n\t\tgl_PointSize = radius;\n\t#else\n\t\tgl_PointSize = size;\n\t#endif\n\n\t#ifdef USE_SIZEATTENUATION\n\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\n\t#endif\n\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n\n}`, It = `uniform float solid;\nuniform float exp;\nuniform bool star;\n\nuniform vec3 diffuse;\nuniform float opacity;\n\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\n\nvec4 getColor(vec4 originColor){\n\tfloat finalAlpha = originColor.a;\n\tfloat dist = 0.0;\n\tif (star){\n\t\tvec2 coord = abs(gl_PointCoord - vec2(0.5));\n\t\tdist = max(coord.x,coord.y);\n\t}else{\n\t\tdist = distance(gl_PointCoord,vec2(0.5));\n\t\tif (dist>0.5) discard;\n\t}\n\tdist /= 0.5;\n\tfloat depth = sqrt(1.0 - pow(dist,2.0));\n\tfinalAlpha *= depth;\n if (dist > solid) {\n float distAlpha = 1.0 - (dist - solid)/(1.0 - solid);\n finalAlpha *= pow(distAlpha,exp);\n }\n\toriginColor.a = finalAlpha;\n\treturn originColor;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\n\tdiffuseColor = getColor(diffuseColor);\n\toutgoingLight = diffuseColor.rgb;\n\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\n}`;\nclass Ot extends Ye {\n constructor(e) {\n super(e, { vertexShader: Rt, fragmentShader: It });\n v(this, \"isColorFogPointsMaterial\", !0);\n }\n /**\n * 雾点的颜色\n * @remarks\n * 当开启顶点颜色 {@link SphereFogMaterial.vertexColors} 时,此设置将无论;\n */\n get color() {\n return this.uniforms.diffuse.value;\n }\n set color(e) {\n this.uniforms.diffuse.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n get alphaMap() {\n return this.uniforms.alphaMap.value;\n }\n set alphaMap(e) {\n this.uniforms && (this.uniforms.alphaMap.value = e), this.uniformsNeedUpdate = !0;\n }\n get uvTransform() {\n return this.uniforms.uvTransform.value;\n }\n set uvTransform(e) {\n this.uniforms && this.uniforms.uvTransform.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n}\nfunction Tt(o) {\n const { points: s, radius: e = 10, color: t = [0, 0, 0, 0] } = o, n = [], i = [], a = [];\n for (const { x: l, y: u, z: c, radius: p, color: m } of s) {\n n.push(l, u, c), i.push(p ?? e);\n const f = m ?? t, h = f[3];\n f[3] = Math.trunc(h * 255), a.push(...f);\n }\n const r = new ke();\n return r.setAttribute(\"position\", new W(n, 3)), r.setAttribute(\"radius\", new W(i, 1)), r.setAttribute(\"color\", new ut(a, 4, !0)), r;\n}\nfunction pn(o) {\n const s = new Ot(o), e = Tt(o);\n return new Le(e, s);\n}\nconst Vt = `attribute float value;\nuniform vec2 range;\nvarying float vValue;\n#ifdef useRadius\n\tattribute float radius;\n#endif\n\n\nuniform float size;\nuniform float scale;\n\n#include <common>\n// #include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n\n#ifdef USE_POINTS_UV\n\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n\n#endif\n\nvoid main() {\n\tvValue = (value - range.x)/(range.y - range.x);\n\n\t#ifdef USE_POINTS_UV\n\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\n\t#endif\n\n\t// #include <color_vertex>\n\t// #include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\n\t#ifdef useRadius\n\t\tgl_PointSize = radius;\n\t#else\n\t\tgl_PointSize = size;\n\t#endif\n\n\t#ifdef USE_SIZEATTENUATION\n\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\n\t#endif\n\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n\n}`, Et = `varying float vValue;\nuniform sampler2D map;\n\n\nuniform float solid;\nuniform float exp;\nuniform bool star;\n\n// uniform vec3 diffuse;\nuniform float opacity;\n\n#include <common>\n// #include <color_pars_fragment>\n// #include <map_particle_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\n\n// 获取梯度颜色\nvec4 getGradientColor(float val) {\n\tval = clamp( val, 0.0,1.0);\n return texture2D(map, vec2(val, 0.5));\n}\n\n\nvec4 getColor(){\n\tfloat val = vValue;\n\tfloat dist = 0.0;\n\tif (star){\n\t\tvec2 coord = abs(gl_PointCoord - vec2(0.5));\n\t\tdist = max(coord.x,coord.y);\n\t}else{\n\t\tdist = distance(gl_PointCoord,vec2(0.5));\n\t\tif (dist>0.5) discard;\n\t}\n\tdist /= 0.5;\n\tfloat depth = sqrt(1.0 - pow(dist,2.0));\n if (dist > solid) {\n float solidDist = 1.0 - (dist - solid)/(1.0 - solid);\n val *= pow(solidDist,exp);\n }\n\tvec4 valColor = getGradientColor(val);\n\tvalColor.a *= depth * opacity;\n\treturn valColor;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = getColor();\n\n\t#include <logdepthbuf_fragment>\n\t// #include <map_particle_fragment>\n\t// #include <color_fragment>\n\t#include <alphatest_fragment>\n\n\toutgoingLight = diffuseColor.rgb;\n\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\n}`;\nclass Gt extends Ye {\n constructor(e) {\n const { range: t, ...n } = e || {}, a = {\n range: { value: new O().copy(t ?? { x: 0, y: 100 }) }\n };\n super(n, { vertexShader: Vt, fragmentShader: Et, uniforms: a });\n v(this, \"isColorFogPointsMaterial\", !0);\n }\n /**\n * 数值的映射区间\n * @remarks\n * x 为最小值,y 为最大值\n * \n * @defaultValue {x:0,y:100}\n */\n get range() {\n return this.uniforms.range.value;\n }\n set range(e) {\n this.uniforms.range.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n}\nfunction Bt(o) {\n const { points: s, radius: e = 10, value: t = 100 } = o, n = [], i = [], a = [];\n for (const { x: l, y: u, z: c, radius: p, value: m } of s)\n n.push(l, u, c), i.push(p ?? e), a.push(m ?? t);\n const r = new ke();\n return r.setAttribute(\"position\", new W(n, 3)), r.setAttribute(\"radius\", new W(i, 1)), r.setAttribute(\"value\", new W(a, 1)), r;\n}\nfunction fn(o) {\n const s = o.gradient, e = s == null ? s : ve(s), t = new Gt({ ...o, map: e }), n = Bt(o);\n return new Le(n, t);\n}\nconst Lt = `\tout vec2 vUv;\n \n\tvoid main() {\n\t\tvUv = uv;\n\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t}`, kt = `precision highp float;\nprecision highp sampler3D;\n\nuniform sampler3D map;\n\nuniform float opacity;\nuniform int axis;\nuniform float depth;\n\nin vec2 vUv;\nout vec4 fragColor;\n\nvoid main(){\n vec3 uv3 = vec3(0.0);\n int depthSize = textureSize(map,0)[axis];\n uv3[axis] = depth/float(depthSize);\n int xIndex = (axis + 1)%3;\n int yIndex = (axis + 2)%3;\n uv3[xIndex] = vUv.x;\n uv3[yIndex] = vUv.y;\n\n fragColor = texture(map, uv3);\n fragColor.a *= opacity;\n}`;\nclass jt extends K {\n constructor(e) {\n const t = e ?? {};\n let { map: n, opacity: i, axis: a, depth: r, side: l, ...u } = t;\n i = i ?? 1, a = a ?? fe.z, r = r ?? 0, l = l ?? Me;\n super({\n ...u,\n glslVersion: Q,\n // @ts-ignore\n uniforms: {\n map: { value: n },\n opacity: { value: i },\n axis: { value: a },\n depth: { value: r }\n },\n transparent: !0,\n vertexShader: Lt,\n fragmentShader: kt,\n side: l\n });\n v(this, \"isSliceMaterial\", !0);\n v(this, \"_sliceSize\", null);\n this.opacity = i;\n }\n /**\n * 三维的纹理\n */\n get map() {\n return this.uniforms.map.value;\n }\n set map(e) {\n this.uniforms.map.value = e, this._sliceSize = null, this.uniformsNeedUpdate = !0;\n }\n /**\n * 透明度\n * @remarks\n * 决定整体的透明度\n * @defaultValue 1\n */\n // @ts-ignore\n get opacity() {\n return this.uniforms.opacity.value;\n }\n set opacity(e) {\n this.uniforms && (this.uniforms.opacity.value = e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 轴\n * @remarks\n * 切片就是垂直于该轴的截面\n * \n * @defaultValue Axis.z\n */\n get axis() {\n return this.uniforms.axis.value;\n }\n set axis(e) {\n this.uniforms.axis.value = e, this._sliceSize = null, this.uniformsNeedUpdate = !0;\n }\n /**\n * 轴上的坐标值\n * @remarks\n * 会在轴的该位置处获取切片\n * @defaultValue 0\n */\n get depth() {\n return this.uniforms.depth.value;\n }\n set depth(e) {\n this.uniforms.depth.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 切片的尺寸\n * @remarks\n * 不同轴上的切片的尺寸一般不一样\n */\n get sliceSize() {\n let e = this._sliceSize;\n if (!e) {\n this._sliceSize = e = new O(1, 1);\n const { axis: t, map: n } = this;\n if (n) {\n const { width: i, height: a, depth: r } = n.image, [l, u] = fe.getCrossAxiss(t), c = [i, a, r];\n e.set(c[l], c[u]);\n }\n }\n return e;\n }\n}\nclass vn extends Ie {\n constructor(e) {\n const t = new jt(e), n = new mt();\n super(n, t);\n v(this, \"isSliceMesh\", !0);\n // @ts-ignore\n // override get geometry(){\n // return this._geometry;\n // }\n // override set geometry(value){\n // this._geometry = value;\n // this.configMaterial();\n // }\n v(this, \"_geometry\");\n // @ts-ignore\n // override get material(){\n // return this._material;\n // }\n // override set material(value){\n // this._material = value;\n // this.configGeometry();\n // }\n v(this, \"_material\");\n /**\n * 是否自动更新几何体\n * @remarks\n * 当启动该选项后,在 SliceMesh 监测到切片尺寸相关的变更时,会自动更新 geometry 的尺寸,以适应切片的尺寸\n * @defaultValue true\n */\n v(this, \"autoUpdateGeometry\", !0);\n Object.defineProperties(this, {\n geometry: {\n get: () => this._geometry,\n set: (i) => {\n this._geometry = i, this.autoUpdateGeometry && this.updateGeometry();\n }\n },\n material: {\n get: () => this._material,\n set: (i) => {\n this._material = i, this.autoUpdateGeometry && this.updateGeometry();\n }\n }\n }), this.geometry = n, this.material = t;\n }\n /**\n * 更新几何体\n */\n updateGeometry() {\n var r;\n const { geometry: e, material: t } = this;\n if (!t || !((r = t.map) == null ? void 0 : r.image))\n return !1;\n e.boundingBox || e.computeBoundingBox();\n const i = t.sliceSize, a = e.boundingBox.getSize(new d());\n e.scale(i.x / a.x, i.y / a.y, 1);\n }\n /**\n * 三维的纹理\n */\n get map() {\n return this.material.map;\n }\n set map(e) {\n this.material.map = e, this.material = this.material;\n }\n /**\n * 轴\n * @remarks\n * 切片就是垂直于该轴的截面\n * \n * @defaultValue Axis.z\n */\n get axis() {\n return this.material.axis;\n }\n set axis(e) {\n this.material.axis = e, this.material = this.material;\n }\n /**\n * 轴上的坐标值\n * @remarks\n * 会在轴的该位置处获取切片\n * @defaultValue 0\n */\n get depth() {\n return this.material.depth;\n }\n set depth(e) {\n this.material.depth = e;\n }\n /**\n * 切片的尺寸\n * @remarks\n * 不同轴上的切片的尺寸一般不一样\n */\n get sliceSize() {\n return this.material.sliceSize;\n }\n}\nclass hn extends wt {\n constructor(e) {\n const t = ye(e) ? e : e.image;\n super(t);\n v(this, \"isImageData3DTextureSlice\", !0);\n }\n /**\n * 设置材质或 IImageData3 类数据\n */\n set texture(e) {\n this.image3D = ye(e) ? e : e.image;\n }\n}\nfunction Ze({ ratio: o, value: s }) {\n return s - s * o;\n}\nfunction Ht(o, s) {\n const { x: e, y: t } = s;\n let n = 0;\n for (const { value: i, clim: { x: a, y: r } } of o)\n n += (i - a) / (r - a);\n return n * (t - e) + e;\n}\nfunction qt(o, s, e) {\n const { size: t, data3D: n, tags: i } = s, { clim: a, radius: r, value: l, hollow: u, valueGradient: c, valuesAccumulate: p } = o, m = new d().copy(o), f = [], h = [], _ = {\n particles: f,\n values: h\n }, M = r * u, S = m.clone().subScalar(r), D = m.clone().addScalar(r);\n S.max(new d(0, 0, 0));\n const w = new d().copy(t).subScalar(1);\n D.min(w);\n let { x, y, z: g } = S;\n x = Math.trunc(x), y = Math.trunc(y), g = Math.trunc(g);\n let { x: z, y: N, z: U } = D;\n if (z = Math.trunc(z), N = Math.trunc(N), U = Math.trunc(U), x > z || y > N || g > U)\n return _;\n const { x: T, y: C } = t, V = T * C;\n for (let A = g; A <= U; A++) {\n const he = A * V;\n for (let R = y; R <= N; R++) {\n const J = he + R * T;\n e:\n for (let P = x; P <= z; P++) {\n const L = J + P;\n if (i[L])\n continue;\n const F = new d(P, R, A), b = F.distanceTo(m);\n if (b > r || b < M)\n continue;\n i[L] = !0;\n const k = {\n radius: r,\n hollow: u,\n hollowRadius: M,\n distance: b,\n clim: a,\n value: l\n }, E = [], j = {\n ...k,\n ratio: b / r,\n distance: b,\n point: F\n }, H = c(j);\n E.push({\n ...o,\n ...j,\n value: H\n });\n for (const G of e) {\n const B = F.distanceTo(G), { hollow: ge, radius: X } = G;\n if (B <= X) {\n const $ = X * ge;\n if (B < $)\n continue e;\n const I = {\n ...G,\n ratio: B / X,\n distance: B,\n hollowRadius: $,\n point: F\n }, xe = c(I);\n E.push({ ...I, value: xe });\n }\n }\n const q = p(E, a);\n n[L] = q, f.push(F), h.push(q);\n }\n }\n }\n return _;\n}\nfunction gn(o) {\n const { points: s, clim: e = { x: 0, y: 100 }, radius: t = 10, value: n = 100, hollow: i = 0, valueGradient: a = Ze, valuesAccumulate: r = Ht, size: l } = o, u = { clim: e, radius: t, value: n, hollow: i, valueGradient: a, valuesAccumulate: r }, c = s.map((x) => ({ ...u, ...x }));\n let p = l;\n l || (p = new pe().setFromPoints(c).max.addScalar(1));\n const m = ht(c);\n let { x: f, y: h, z: _ } = p;\n f = p.x = Math.trunc(f), h = p.y = Math.trunc(h), _ = p.z = Math.trunc(_);\n const M = new Array(f * h * _), S = new Array(f * h * _), D = { size: p, data3D: M, tags: S }, w = c.length;\n for (let x = 0; x < w; x++) {\n const y = c[x], g = m[x].map((z) => c[z]);\n qt(y, D, g);\n }\n return {\n data: M,\n size: p\n };\n}\nfunction Xt({ startRadius: o, addedRadius: s, ratio: e }) {\n return s * e + o;\n}\nfunction $t({ startHollow: o, addedHollow: s, ratio: e }) {\n return s * e + o;\n}\nfunction Yt({ startValue: o, addedValue: s, ratio: e }) {\n return s * e + o;\n}\nfunction Zt(o, s) {\n const { x: e, y: t } = s;\n return o.reduce((n, i) => n + i - e, 0);\n}\nfunction xn(o) {\n const { points: s, size: e, clim: t = { x: 0, y: 100 }, radius: n = 10, value: i = 100, hollow: a = 0, valueGradient: r = Ze, radiusGradient: l = Xt, hollowGradient: u = $t, lineValueGradient: c = Yt, valuesAccumulate: p = Zt } = o, m = { radius: n, value: i, hollow: a }, f = s.map(function(C) {\n return Object.assign(new d(), m, C);\n }), h = e ? new d().copy(e).subScalar(1) : new pe().setFromPoints(f).max;\n h.x = Math.trunc(h.x), h.y = Math.trunc(h.y), h.z = Math.trunc(h.z);\n const _ = h.clone().addScalar(1), { x: M, y: S, z: D } = _, w = M * S, x = new Array(w * D), y = [], g = [], z = {\n particles: y,\n values: g,\n size: _,\n data: x\n }, N = new d(0, 0, 0), U = s.length, T = Math.trunc(U / 2);\n for (let C = 0; C < T; C++) {\n const V = C * 2, A = f[V], he = V + 1, R = f[he], J = new dt(A, R), P = J.distance(), L = J.delta(new d()).normalize(), F = new pt();\n F.setFromUnitVectors(new d(0, 1, 0), L);\n const b = new Re().makeRotationFromQuaternion(F);\n b.setPosition(A);\n const { radius: k, value: E, hollow: j } = A, { radius: H, value: q, hollow: G } = R, B = H - k, ge = q - E, X = G - j, $ = { length: P, startRadius: k, endRadius: H, addedRadius: B, defaultRadius: n, radius: n, startValue: E, endValue: q, addedValue: ge, defaultValue: i, startHollow: j, endHollow: G, addedHollow: X, defaultHollow: a, clim: t }, I = Math.max(k, H), xe = new d(-I, 0, -I), Ke = new d(I, P, I), Se = new pe(xe, Ke);\n Se.applyMatrix4(b);\n const { min: De, max: be } = Se;\n De.max(N), be.min(h);\n let { x: ee, y: te, z: ne } = De;\n ee = Math.trunc(ee), te = Math.trunc(te), ne = Math.trunc(ne);\n let { x: ie, y: ae, z: oe } = be;\n if (ie = Math.trunc(ie), ae = Math.trunc(ae), oe = Math.trunc(oe), ee > ie || te > ae || ne > oe)\n return z;\n b.invert();\n for (let re = ne; re <= oe; re++) {\n const Qe = re * w;\n for (let se = te; se <= ae; se++) {\n const Je = Qe + se * M;\n for (let le = ee; le <= ie; le++) {\n const Ce = Je + le, ce = new d(le, se, re), Pe = ce.clone();\n Pe.applyMatrix4(b);\n const { x: et, y: _e, z: tt } = Pe;\n if (_e < 0 || _e > P)\n continue;\n const ue = Math.hypot(et, tt), me = {\n ...$,\n ratio: _e / P,\n point: ce\n }, Y = l(me);\n me.radius = Y;\n const Ne = u(me), Ue = Y * Ne;\n if (ue > Y || ue < Ue)\n continue;\n const nt = c(me), it = {\n ...$,\n value: nt,\n ratio: ue / Y,\n radius: Y,\n hollow: Ne,\n hollowRadius: Ue,\n distance: ue,\n point: ce\n };\n let de = r(it);\n const Ae = g[Ce];\n Ae !== void 0 && (de = p([Ae, de], t)), x[Ce] = de, y.push(ce), g.push(de);\n }\n }\n }\n }\n return z;\n}\nfunction _n(o, s) {\n const e = new d().setFromMatrixScale(s), t = Math.sqrt(e.lengthSq() / 3), n = new ze().setFromMatrix4(s);\n let { points: i, size: a, radius: r, ...l } = o;\n if (a && (a = new d().copy(a).applyMatrix3(n)), r && (r *= t), i) {\n const u = [];\n for (let { x: c, y: p, z: m, radius: f, ...h } of i) {\n f && (f *= t);\n const _ = new d(c, p, m).applyMatrix4(s);\n Object.assign(_, h, { radius: f }), u.push(_);\n }\n i = u;\n }\n return { points: i, size: a, radius: r, ...l };\n}\nfunction Wt(o, s, e = 1) {\n let { points: t, size: n, radius: i, ...a } = o;\n if (i && (i *= e), t) {\n const r = [];\n for (let { x: l, y: u, z: c, radius: p, ...m } of t) {\n p && (p *= e);\n const f = new d(l, u, c).add(s).multiplyScalar(e);\n Object.assign(f, m, { radius: p }), r.push(f);\n }\n t = r;\n }\n return n && (n = new d().copy(n).add(s).multiplyScalar(e)), { points: t, size: n, radius: i, ...a };\n}\nfunction yn(o, s) {\n const { points: e, radius: t } = o;\n if (!e)\n return { options: o, position: new d(), scale: 1 };\n const n = new pe();\n for (const p of e) {\n const m = new d().copy(p), f = p.radius ?? t;\n f ? (n.expandByPoint(m.clone().subScalar(f)), n.expandByPoint(m.addScalar(f))) : n.expandByPoint(m);\n }\n const i = new d().max(n.min), a = n.max.clone().sub(i).addScalar(1);\n o.size && a.min(o.size);\n let { scale: r, maxSize: l } = s || {};\n r || (l = l ?? 100, r = l / Math.max(a.x, a.y, a.z)), a.multiplyScalar(r);\n const u = i.clone().negate(), c = Wt(o, u, r);\n return c.size = a, { options: c, position: i, scale: 1 / r };\n}\nconst Fe = {\n uniforms: {\n u_size: { value: new d(1, 1, 1) },\n u_renderstyle: { value: 0 },\n u_renderthreshold: { value: 0.5 },\n u_clim: { value: new O(1, 1) },\n u_data: { value: null },\n u_cmdata: { value: null }\n },\n vertexShader: (\n /* glsl */\n `\n\n\t\tvarying vec4 v_nearpos;\n\t\tvarying vec4 v_farpos;\n\t\tvarying vec3 v_position;\n\n\t\tvoid main() {\n\t\t\t\t// Prepare transforms to map to \"camera view\". See also:\n\t\t\t\t// https://threejs.org/docs/#api/renderers/webgl/WebGLProgram\n\t\t\t\tmat4 viewtransformf = modelViewMatrix;\n\t\t\t\tmat4 viewtransformi = inverse(modelViewMatrix);\n\n\t\t\t\t// Project local vertex coordinate to camera position. Then do a step\n\t\t\t\t// backward (in cam coords) to the near clipping plane, and project back. Do\n\t\t\t\t// the same for the far clipping plane. This gives us all the information we\n\t\t\t\t// need to calculate the ray and truncate it to the viewing cone.\n\t\t\t\tvec4 position4 = vec4(position, 1.0);\n\t\t\t\tvec4 pos_in_cam = viewtransformf * position4;\n\n\t\t\t\t// Intersection of ray and near clipping plane (z = -1 in clip coords)\n\t\t\t\tpos_in_cam.z = -pos_in_cam.w;\n\t\t\t\tv_nearpos = viewtransformi * pos_in_cam;\n\n\t\t\t\t// Intersection of ray and far clipping plane (z = +1 in clip coords)\n\t\t\t\tpos_in_cam.z = pos_in_cam.w;\n\t\t\t\tv_farpos = viewtransformi * pos_in_cam;\n\n\t\t\t\t// Set varyings and output pos\n\t\t\t\tv_position = position;\n\t\t\t\tgl_Position = projectionMatrix * viewMatrix * modelMatrix * position4;\n\t\t}`\n ),\n fragmentShader: (\n /* glsl */\n `\n\n\t\t\t\tprecision highp float;\n\t\t\t\tprecision mediump sampler3D;\n\n\t\t\t\tuniform vec3 u_size;\n\t\t\t\tuniform int u_renderstyle;\n\t\t\t\tuniform float u_renderthreshold;\n\t\t\t\tuniform vec2 u_clim;\n\n\t\t\t\tuniform sampler3D u_data;\n\t\t\t\tuniform sampler2D u_cmdata;\n\n\t\t\t\tvarying vec3 v_position;\n\t\t\t\tvarying vec4 v_nearpos;\n\t\t\t\tvarying vec4 v_farpos;\n\n\t\t\t\t// The maximum distance through our rendering volume is sqrt(3).\n\t\t\t\tconst int MAX_STEPS = 887;\t// 887 for 512^3, 1774 for 1024^3\n\t\t\t\tconst int REFINEMENT_STEPS = 4;\n\t\t\t\tconst float relative_step_size = 1.0;\n\t\t\t\tconst vec4 ambient_color = vec4(0.2, 0.4, 0.2, 1.0);\n\t\t\t\tconst vec4 diffuse_color = vec4(0.8, 0.2, 0.2, 1.0);\n\t\t\t\tconst vec4 specular_color = vec4(1.0, 1.0, 1.0, 1.0);\n\t\t\t\tconst float shininess = 40.0;\n\n\t\t\t\tvoid cast_mip(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray);\n\t\t\t\tvoid cast_iso(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray);\n\n\t\t\t\tfloat sample1(vec3 texcoords);\n\t\t\t\tvec4 apply_colormap(float val);\n\t\t\t\tvec4 add_lighting(float val, vec3 loc, vec3 step, vec3 view_ray);\n\n\n\t\t\t\tvoid main() {\n\t\t\t\t\t\t// Normalize clipping plane info\n\t\t\t\t\t\tvec3 farpos = v_farpos.xyz / v_farpos.w;\n\t\t\t\t\t\tvec3 nearpos = v_nearpos.xyz / v_nearpos.w;\n\n\t\t\t\t\t\t// Calculate unit vector pointing in the view direction through this fragment.\n\t\t\t\t\t\tvec3 view_ray = normalize(nearpos.xyz - farpos.xyz);\n\n\t\t\t\t\t\t// Compute the (negative) distance to the front surface or near clipping plane.\n\t\t\t\t\t\t// v_position is the back face of the cuboid, so the initial distance calculated in the dot\n\t\t\t\t\t\t// product below is the distance from near clip plane to the back of the cuboid\n\t\t\t\t\t\tfloat distance = dot(nearpos - v_position, view_ray);\n\t\t\t\t\t\tdistance = max(distance, min((-0.5 - v_position.x) / view_ray.x,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(u_size.x - 0.5 - v_position.x) / view_ray.x));\n\t\t\t\t\t\tdistance = max(distance, min((-0.5 - v_position.y) / view_ray.y,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(u_size.y - 0.5 - v_position.y) / view_ray.y));\n\t\t\t\t\t\tdistance = max(distance, min((-0.5 - v_position.z) / view_ray.z,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(u_size.z - 0.5 - v_position.z) / view_ray.z));\n\n\t\t\t\t\t\t// Now we have the starting position on the front surface\n\t\t\t\t\t\tvec3 front = v_position + view_ray * distance;\n\n\t\t\t\t\t\t// Decide how many steps to take\n\t\t\t\t\t\tint nsteps = int(-distance / relative_step_size + 0.5);\n\t\t\t\t\t\tif ( nsteps < 1 )\n\t\t\t\t\t\t\t\tdiscard;\n\n\t\t\t\t\t\t// Get starting location and step vector in texture coordinates\n\t\t\t\t\t\tvec3 step = ((v_position - front) / u_size) / float(nsteps);\n\t\t\t\t\t\tvec3 start_loc = front / u_size;\n\n\t\t\t\t\t\t// For testing: show the number of steps. This helps to establish\n\t\t\t\t\t\t// whether the rays are correctly oriented\n\t\t\t\t\t\t//'gl_FragColor = vec4(0.0, float(nsteps) / 1.0 / u_size.x, 1.0, 1.0);\n\t\t\t\t\t\t//'return;\n\n\t\t\t\t\t\tif (u_renderstyle == 0)\n\t\t\t\t\t\t\t\tcast_mip(start_loc, step, nsteps, view_ray);\n\t\t\t\t\t\telse if (u_renderstyle == 1)\n\t\t\t\t\t\t\t\tcast_iso(start_loc, step, nsteps, view_ray);\n\n\t\t\t\t\t\tif (gl_FragColor.a < 0.05)\n\t\t\t\t\t\t\t\tdiscard;\n\t\t\t\t}\n\n\n\t\t\t\tfloat sample1(vec3 texcoords) {\n\t\t\t\t\t\t/* Sample float value from a 3D texture. Assumes intensity data. */\n\t\t\t\t\t\treturn texture(u_data, texcoords.xyz).r;\n\t\t\t\t}\n\n\n\t\t\t\tvec4 apply_colormap(float val) {\n\t\t\t\t\t\tval = (val - u_clim[0]) / (u_clim[1] - u_clim[0]);\n\t\t\t\t\t\treturn texture2D(u_cmdata, vec2(val, 0.5));\n\t\t\t\t}\n\n\n\t\t\t\tvoid cast_mip(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray) {\n\n\t\t\t\t\t\tfloat max_val = -1e6;\n\t\t\t\t\t\tint max_i = 100;\n\t\t\t\t\t\tvec3 loc = start_loc;\n\n\t\t\t\t\t\t// Enter the raycasting loop. In WebGL 1 the loop index cannot be compared with\n\t\t\t\t\t\t// non-constant expression. So we use a hard-coded max, and an additional condition\n\t\t\t\t\t\t// inside the loop.\n\t\t\t\t\t\tfor (int iter=0; iter<MAX_STEPS; iter++) {\n\t\t\t\t\t\t\t\tif (iter >= nsteps)\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t// Sample from the 3D texture\n\t\t\t\t\t\t\t\tfloat val = sample1(loc);\n\t\t\t\t\t\t\t\t// Apply MIP operation\n\t\t\t\t\t\t\t\tif (val > max_val) {\n\t\t\t\t\t\t\t\t\t\tmax_val = val;\n\t\t\t\t\t\t\t\t\t\tmax_i = iter;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Advance location deeper into the volume\n\t\t\t\t\t\t\t\tloc += step;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Refine location, gives crispier images\n\t\t\t\t\t\tvec3 iloc = start_loc + step * (float(max_i) - 0.5);\n\t\t\t\t\t\tvec3 istep = step / float(REFINEMENT_STEPS);\n\t\t\t\t\t\tfor (int i=0; i<REFINEMENT_STEPS; i++) {\n\t\t\t\t\t\t\t\tmax_val = max(max_val, sample1(iloc));\n\t\t\t\t\t\t\t\tiloc += istep;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Resolve final color\n\t\t\t\t\t\tgl_FragColor = apply_colormap(max_val);\n\t\t\t\t}\n\n\n\t\t\t\tvoid cast_iso(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray) {\n\n\t\t\t\t\t\tgl_FragColor = vec4(0.0);\t// init transparent\n\t\t\t\t\t\tvec4 color3 = vec4(0.0);\t// final color\n\t\t\t\t\t\tvec3 dstep = 1.5 / u_size;\t// step to sample derivative\n\t\t\t\t\t\tvec3 loc = start_loc;\n\n\t\t\t\t\t\tfloat low_threshold = u_renderthreshold - 0.02 * (u_clim[1] - u_clim[0]);\n\n\t\t\t\t\t\t// Enter the raycasting loop. In WebGL 1 the loop index cannot be compared with\n\t\t\t\t\t\t// non-constant expression. So we use a hard-coded max, and an additional condition\n\t\t\t\t\t\t// inside the loop.\n\t\t\t\t\t\tfor (int iter=0; iter<MAX_STEPS; iter++) {\n\t\t\t\t\t\t\t\tif (iter >= nsteps)\n\t\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\t// Sample from the 3D texture\n\t\t\t\t\t\t\t\tfloat val = sample1(loc);\n\n\t\t\t\t\t\t\t\tif (val > low_threshold) {\n\t\t\t\t\t\t\t\t\t\t// Take the last interval in smaller steps\n\t\t\t\t\t\t\t\t\t\tvec3 iloc = loc - 0.5 * step;\n\t\t\t\t\t\t\t\t\t\tvec3 istep = step / float(REFINEMENT_STEPS);\n\t\t\t\t\t\t\t\t\t\tfor (int i=0; i<REFINEMENT_STEPS; i++) {\n\t\t\t\t\t\t\t\t\t\t\t\tval = sample1(iloc);\n\t\t\t\t\t\t\t\t\t\t\t\tif (val > u_renderthreshold) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl_FragColor = add_lighting(val, iloc, dstep, view_ray);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tiloc += istep;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Advance location deeper into the volume\n\t\t\t\t\t\t\t\tloc += step;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t\tvec4 add_lighting(float val, vec3 loc, vec3 step, vec3 view_ray)\n\t\t\t\t{\n\t\t\t\t\t// Calculate color by incorporating lighting\n\n\t\t\t\t\t\t// View direction\n\t\t\t\t\t\tvec3 V = normalize(view_ray);\n\n\t\t\t\t\t\t// calculate normal vector from gradient\n\t\t\t\t\t\tvec3 N;\n\t\t\t\t\t\tfloat val1, val2;\n\t\t\t\t\t\tval1 = sample1(loc + vec3(-step[0], 0.0, 0.0));\n\t\t\t\t\t\tval2 = sample1(loc + vec3(+step[0], 0.0, 0.0));\n\t\t\t\t\t\tN[0] = val1 - val2;\n\t\t\t\t\t\tval = max(max(val1, val2), val);\n\t\t\t\t\t\tval1 = sample1(loc + vec3(0.0, -step[1], 0.0));\n\t\t\t\t\t\tval2 = sample1(loc + vec3(0.0, +step[1], 0.0));\n\t\t\t\t\t\tN[1] = val1 - val2;\n\t\t\t\t\t\tval = max(max(val1, val2), val);\n\t\t\t\t\t\tval1 = sample1(loc + vec3(0.0, 0.0, -step[2]));\n\t\t\t\t\t\tval2 = sample1(loc + vec3(0.0, 0.0, +step[2]));\n\t\t\t\t\t\tN[2] = val1 - val2;\n\t\t\t\t\t\tval = max(max(val1, val2), val);\n\n\t\t\t\t\t\tfloat gm = length(N); // gradient magnitude\n\t\t\t\t\t\tN = normalize(N);\n\n\t\t\t\t\t\t// Flip normal so it points towards viewer\n\t\t\t\t\t\tfloat Nselect = float(dot(N, V) > 0.0);\n\t\t\t\t\t\tN = (2.0 * Nselect - 1.0) * N;\t// ==\tNselect * N - (1.0-Nselect)*N;\n\n\t\t\t\t\t\t// Init colors\n\t\t\t\t\t\tvec4 ambient_color = vec4(0.0, 0.0, 0.0, 0.0);\n\t\t\t\t\t\tvec4 diffuse_color = vec4(0.0, 0.0, 0.0, 0.0);\n\t\t\t\t\t\tvec4 specular_color = vec4(0.0, 0.0, 0.0, 0.0);\n\n\t\t\t\t\t\t// note: could allow multiple lights\n\t\t\t\t\t\tfor (int i=0; i<1; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t // Get light direction (make sure to prevent zero devision)\n\t\t\t\t\t\t\t\tvec3 L = normalize(view_ray);\t//lightDirs[i];\n\t\t\t\t\t\t\t\tfloat lightEnabled = float( length(L) > 0.0 );\n\t\t\t\t\t\t\t\tL = normalize(L + (1.0 - lightEnabled));\n\n\t\t\t\t\t\t\t\t// Calculate lighting properties\n\t\t\t\t\t\t\t\tfloat lambertTerm = clamp(dot(N, L), 0.0, 1.0);\n\t\t\t\t\t\t\t\tvec3 H = normalize(L+V); // Halfway vector\n\t\t\t\t\t\t\t\tfloat specularTerm = pow(max(dot(H, N), 0.0), shininess);\n\n\t\t\t\t\t\t\t\t// Calculate mask\n\t\t\t\t\t\t\t\tfloat mask1 = lightEnabled;\n\n\t\t\t\t\t\t\t\t// Calculate colors\n\t\t\t\t\t\t\t\tambient_color +=\tmask1 * ambient_color;\t// * gl_LightSource[i].ambient;\n\t\t\t\t\t\t\t\tdiffuse_color +=\tmask1 * lambertTerm;\n\t\t\t\t\t\t\t\tspecular_color += mask1 * specularTerm * specular_color;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Calculate final color by componing different components\n\t\t\t\t\t\tvec4 final_color;\n\t\t\t\t\t\tvec4 color = apply_colormap(val);\n\t\t\t\t\t\tfinal_color = color * (ambient_color + diffuse_color) + specular_color;\n\t\t\t\t\t\tfinal_color.a = color.a;\n\t\t\t\t\t\treturn final_color;\n\t\t\t\t}`\n )\n};\nvar Kt = /* @__PURE__ */ ((o) => (o[o.MIP = 0] = \"MIP\", o[o.ISO = 1] = \"ISO\", o))(Kt || {});\nclass Mn extends K {\n constructor(e) {\n const { style: t, threshold: n, clim: i, map: a, gradient: r } = e ?? {}, l = new d(1, 1, 1);\n if (a) {\n const { width: p, height: m, depth: f } = a.image;\n l.set(p, m, f);\n }\n const u = r == null ? r : ve(r), c = Be.clone(Fe.uniforms);\n c.u_size.value.copy(l), c.u_clim.value.copy(i ?? new O(1, 1)), c.u_renderstyle.value = t ?? 1, c.u_renderthreshold.value = n ?? 0.5, c.u_data.value = a ?? null, c.u_cmdata.value = u ?? null;\n super({\n ...Fe,\n // @ts-ignore\n uniforms: c,\n side: we\n });\n v(this, \"isExampleVolumeMaterial_1\", !0);\n v(this, \"_gradient\");\n }\n /**\n * 三维纹理\n */\n get map() {\n return this.uniforms.u_data.value;\n }\n set map(e) {\n this.uniforms.u_data.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 颜色映射纹理\n * @remarks\n * 会将垂直居中的那条水平像素从左到右映射到 clim 表示的限制区间,\n * 即 clim.x 对应最左边的像素,clim.y 对应最右边的像素\n */\n get gradientMap() {\n return this.uniforms.u_cmdata.value;\n }\n /**\n * 颜色映射选项\n */\n get gradient() {\n return this._gradient;\n }\n set gradient(e) {\n this._gradient = e;\n const t = e == null ? e : ve(e);\n this.uniforms.u_cmdata.value = t ?? null, this.uniformsNeedUpdate = !0;\n }\n /**\n * 三维纹理的尺寸\n * @remarks\n * 三维纹理的尺寸 要 和 Geometry 的尺寸是一样的,不但比列一样,大小也是一样的\n * 但 mesh 本身可以进行几何变换;\n * Geometry 左下角的坐标要从 (0,0,0) 开始;\n */\n get size() {\n return this.uniforms.u_size.value;\n }\n set size(e) {\n this.uniforms.u_size.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 渲染样式\n */\n get style() {\n return this.uniforms.u_renderstyle.value;\n }\n set style(e) {\n this.uniforms.u_renderstyle.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 映射区间\n * @remarks\n * x 为最小值,y 为最大值\n */\n get clim() {\n return this.uniforms.u_clim.value;\n }\n set clim(e) {\n this.uniforms.u_clim.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 渲染最低阈值\n * @remarks\n * 只对 ISO 样式有效;\n * \n * 当三维纹理中的值低于该值时,不会被渲染,即视为空\n */\n get threshold() {\n return this.uniforms.u_renderthreshold.value;\n }\n set threshold(e) {\n this.uniforms.u_renderthreshold.value = e, this.uniformsNeedUpdate = !0;\n }\n}\nconst We = `in vec3 position;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPos;\n\nout vec3 vOrigin;\nout vec3 vDirection;\n\nvoid main() {\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n vOrigin = vec3( inverse( modelMatrix ) * vec4( cameraPos, 1.0 ) ).xyz;\n vDirection = position - vOrigin;\n gl_Position = projectionMatrix * mvPosition;\n}`, Qt = `precision highp float;\nprecision highp sampler3D;\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\n\nin vec3 vOrigin;\nin vec3 vDirection;\n\nout vec4 color;\n\nuniform vec3 base;\nuniform sampler3D map;\n\nuniform float threshold;\nuniform float range;\nuniform float opacity;\nuniform float steps;\nuniform float frame;\n\nuint wang_hash(uint seed)\n{\n seed = (seed ^ 61u) ^ (seed >> 16u);\n seed *= 9u;\n seed = seed ^ (seed >> 4u);\n seed *= 0x27d4eb2du;\n seed = seed ^ (seed >> 15u);\n return seed;\n}\n\nfloat randomFloat(inout uint seed)\n{\n return float(wang_hash(seed)) / 4294967296.;\n}\n\nvec2 hitBox( vec3 orig, vec3 dir ) {\n const vec3 box_min = vec3( - 0.5 );\n const vec3 box_max = vec3( 0.5 );\n vec3 inv_dir = 1.0 / dir;\n vec3 tmin_tmp = ( box_min - orig ) * inv_dir;\n vec3 tmax_tmp = ( box_max - orig ) * inv_dir;\n vec3 tmin = min( tmin_tmp, tmax_tmp );\n vec3 tmax = max( tmin_tmp, tmax_tmp );\n float t0 = max( tmin.x, max( tmin.y, tmin.z ) );\n float t1 = min( tmax.x, min( tmax.y, tmax.z ) );\n return vec2( t0, t1 );\n}\n\nfloat sample1( vec3 p ) {\n return texture( map, p ).r;\n}\n\nfloat shading( vec3 coord ) {\n float step = 0.01;\n return sample1( coord + vec3( - step ) ) - sample1( coord + vec3( step ) );\n}\n\nvoid main(){\n vec3 rayDir = normalize( vDirection );\n vec2 bounds = hitBox( vOrigin, rayDir );\n\n if ( bounds.x > bounds.y ) discard;\n\n bounds.x = max( bounds.x, 0.0 );\n\n vec3 p = vOrigin + bounds.x * rayDir;\n vec3 inc = 1.0 / abs( rayDir );\n float delta = min( inc.x, min( inc.y, inc.z ) );\n delta /= steps;\n\n // Jitter\n\n // Nice little seed from\n // https://blog.demofox.org/2020/05/25/casual-shadertoy-path-tracing-1-basic-camera-diffuse-emissive/\n uint seed = uint( gl_FragCoord.x ) * uint( 1973 ) + uint( gl_FragCoord.y ) * uint( 9277 ) + uint( frame ) * uint( 26699 );\n vec3 size = vec3( textureSize( map, 0 ) );\n float randNum = randomFloat( seed ) * 2.0 - 1.0;\n p += rayDir * randNum * ( 1.0 / size );\n\n //\n\n vec4 ac = vec4( base, 0.0 );\n\n for ( float t = bounds.x; t < bounds.y; t += delta ) {\n\n float d = sample1( p + 0.5 );\n\n d = smoothstep( threshold - range, threshold + range, d ) * opacity;\n\n float col = shading( p + 0.5 ) * 3.0 + ( ( p.x + p.y ) * 0.25 ) + 0.2;\n\n ac.rgb += ( 1.0 - ac.a ) * d * col;\n\n ac.a += ( 1.0 - ac.a ) * d;\n\n if ( ac.a >= 0.95 ) break;\n\n p += rayDir * delta;\n\n }\n\n color = ac;\n\n if ( color.a == 0.0 ) discard;\n\n}`;\nclass zn extends je {\n constructor(e) {\n let { color: t, threshold: n, map: i, opacity: a, range: r, steps: l, frame: u, cameraPos: c } = e ?? {};\n t = t ?? new Ge(1, 1, 1), n = n ?? 0.25, a = a ?? 0.25, r = r ?? 0.1, l = l ?? 100, u = u ?? 100, c = c ?? new d();\n super({\n glslVersion: Q,\n // @ts-ignore\n uniforms: {\n base: { value: t },\n map: { value: i },\n cameraPos: { value: c },\n threshold: { value: n },\n opacity: { value: a },\n range: { value: r },\n steps: { value: l },\n frame: { value: u }\n },\n vertexShader: We,\n fragmentShader: Qt,\n side: we,\n transparent: !0\n });\n v(this, \"isExampleVolumeMaterial_Cloud\", !0);\n this.opacity = a;\n }\n /**\n * 三维纹理\n */\n get map() {\n return this.uniforms.map.value;\n }\n set map(e) {\n this.uniforms.map.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 颜色\n */\n get color() {\n return this.uniforms.base.value;\n }\n set color(e) {\n this.uniforms.base.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 透明度\n */\n // @ts-ignore\n get opacity() {\n return this.uniforms.opacity.value;\n }\n set opacity(e) {\n this.uniforms && (this.uniforms.opacity.value = e), this.uniformsNeedUpdate = !0;\n }\n /**\n * 渲染最低阈值\n */\n get threshold() {\n return this.uniforms.threshold.value;\n }\n set threshold(e) {\n this.uniforms.threshold.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 范围\n */\n get range() {\n return this.uniforms.range.value;\n }\n set range(e) {\n this.uniforms.range.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 体积材质渲染的采样数\n */\n get steps() {\n return this.uniforms.steps.value;\n }\n set steps(e) {\n this.uniforms.steps.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 渲染帧次\n */\n get frame() {\n return this.uniforms.frame.value;\n }\n set frame(e) {\n this.uniforms.frame.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 相机的位置\n */\n get cameraPos() {\n return this.uniforms.cameraPos.value;\n }\n set cameraPos(e) {\n this.uniforms.cameraPos.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n}\nconst Jt = `precision highp float;\nprecision highp sampler3D;\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\n\nin vec3 vOrigin;\nin vec3 vDirection;\n\nout vec4 color;\n\nuniform sampler3D map;\n\nuniform float threshold;\nuniform float steps;\n\nvec2 hitBox( vec3 orig, vec3 dir ) {\n const vec3 box_min = vec3( - 0.5 );\n const vec3 box_max = vec3( 0.5 );\n vec3 inv_dir = 1.0 / dir;\n vec3 tmin_tmp = ( box_min - orig ) * inv_dir;\n vec3 tmax_tmp = ( box_max - orig ) * inv_dir;\n vec3 tmin = min( tmin_tmp, tmax_tmp );\n vec3 tmax = max( tmin_tmp, tmax_tmp );\n float t0 = max( tmin.x, max( tmin.y, tmin.z ) );\n float t1 = min( tmax.x, min( tmax.y, tmax.z ) );\n return vec2( t0, t1 );\n}\n\nfloat sample1( vec3 p ) {\n return texture( map, p ).r;\n}\n\n#define epsilon .0001\n\nvec3 normal( vec3 coord ) {\n if ( coord.x < epsilon ) return vec3( 1.0, 0.0, 0.0 );\n if ( coord.y < epsilon ) return vec3( 0.0, 1.0, 0.0 );\n if ( coord.z < epsilon ) return vec3( 0.0, 0.0, 1.0 );\n if ( coord.x > 1.0 - epsilon ) return vec3( - 1.0, 0.0, 0.0 );\n if ( coord.y > 1.0 - epsilon ) return vec3( 0.0, - 1.0, 0.0 );\n if ( coord.z > 1.0 - epsilon ) return vec3( 0.0, 0.0, - 1.0 );\n\n float step = 0.01;\n float x = sample1( coord + vec3( - step, 0.0, 0.0 ) ) - sample1( coord + vec3( step, 0.0, 0.0 ) );\n float y = sample1( coord + vec3( 0.0, - step, 0.0 ) ) - sample1( coord + vec3( 0.0, step, 0.0 ) );\n float z = sample1( coord + vec3( 0.0, 0.0, - step ) ) - sample1( coord + vec3( 0.0, 0.0, step ) );\n\n return normalize( vec3( x, y, z ) );\n}\n\nvoid main(){\n\n vec3 rayDir = normalize( vDirection );\n vec2 bounds = hitBox( vOrigin, rayDir );\n\n if ( bounds.x > bounds.y ) discard;\n\n bounds.x = max( bounds.x, 0.0 );\n\n vec3 p = vOrigin + bounds.x * rayDir;\n vec3 inc = 1.0 / abs( rayDir );\n float delta = min( inc.x, min( inc.y, inc.z ) );\n delta /= steps;\n\n for ( float t = bounds.x; t < bounds.y; t += delta ) {\n\n float d = sample1( p + 0.5 );\n\n if ( d > threshold ) {\n\n color.rgb = normal( p + 0.5 ) * 0.5 + ( p * 1.5 + 0.25 );\n color.a = 1.;\n break;\n\n }\n\n p += rayDir * delta;\n\n }\n\n if ( color.a == 0.0 ) discard;\n\n}`;\nclass wn extends je {\n constructor(e) {\n let { threshold: t, map: n, steps: i, cameraPos: a } = e ?? {};\n t = t ?? 0.25, i = i ?? 100, a = a ?? new d();\n super({\n glslVersion: Q,\n // @ts-ignore\n uniforms: {\n map: { value: n },\n cameraPos: { value: a },\n threshold: { value: t },\n steps: { value: i }\n },\n vertexShader: We,\n fragmentShader: Jt,\n side: we,\n transparent: !0\n });\n v(this, \"isExampleVolumeMaterial_Perlin\", !0);\n }\n /**\n * 三维纹理\n */\n get map() {\n return this.uniforms.map.value;\n }\n set map(e) {\n this.uniforms.map.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 渲染最低阈值\n */\n get threshold() {\n return this.uniforms.threshold.value;\n }\n set threshold(e) {\n this.uniforms.threshold.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 体积材质渲染的采样数\n */\n get steps() {\n return this.uniforms.steps.value;\n }\n set steps(e) {\n this.uniforms.steps.value = e, this.uniformsNeedUpdate = !0;\n }\n /**\n * 相机的位置\n */\n get cameraPos() {\n return this.uniforms.cameraPos.value;\n }\n set cameraPos(e) {\n this.uniforms.cameraPos.value.copy(e), this.uniformsNeedUpdate = !0;\n }\n}\nexport {\n Ot as ColorFogPointsMaterial,\n Mn as ExampleVolumeMaterial_1,\n zn as ExampleVolumeMaterial_Cloud,\n wn as ExampleVolumeMaterial_Perlin,\n Ye as FogPointsMaterial,\n Pt as GradientData3DTexture,\n Gt as GradientFogPointsMaterial,\n sn as GradientVolumeMaterial,\n $e as ImageData3DTexture,\n hn as ImageData3DTextureSlice,\n cn as ImageVolumeMaterial,\n jt as SliceMaterial,\n vn as SliceMesh,\n dn as SphereFogMaterial,\n Dt as VolumeFit,\n Xe as VolumeMaterial,\n rn as VolumeMesh,\n Kt as VolumeRenderStyle,\n qt as computeHeatData3DForPoint,\n pn as createColorFogPoints,\n ln as createGradientData3DTexture,\n fn as createGradientFogPoints,\n gn as createHeatData3D,\n un as createImageData3DTextureByExtrudeImage,\n mn as createImageData3DTextureFromGradient,\n xn as createLineData3D,\n Ut as gradientData3DToImageData3D,\n $t as hollowGradient_Default,\n Yt as lineValueGradient_Default,\n bt as makeOriginOnBoundingBoxMinOfGeometry,\n Zt as numberValuesAccumulate_Default,\n yn as optimizeGradientOptions,\n Xt as radiusGradient_Default,\n _n as transformGradientOptions,\n Wt as translateScaleGradientOptions,\n Ze as valueGradient_Default,\n Ht as valuesAccumulate_Default\n};\n","import {\r\n ColorGradient,\r\n CreateImageData3DTextureFromGradientOptions,\r\n GradientVolumeMaterial,\r\n GradientVolumeMaterialOptions,\r\n HeatData3DOptions,\r\n HeatParticleVolumeFeaturePoint,\r\n ImageData3DTextureSlice,\r\n ImageVolumeMaterial,\r\n ParticleVolumeFeaturePoint,\r\n SliceMaterialOptions,\r\n SliceMesh,\r\n VolumeFit,\r\n VolumeMaterial,\r\n VolumeMesh,\r\n createGradientData3DTexture,\r\n createHeatData3D,\r\n createImageData3DTextureByExtrudeImage,\r\n createImageData3DTextureFromGradient,\r\n createLineData3D,\r\n optimizeGradientOptions,\r\n} from '@three3d/volume'\r\nexport * from '@three3d/volume'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { BackSide, } from 'three'\r\nimport { CreatLineHeatOptions, CreateHeatCloudOptions, CreateHeatOptions, CreateImageExtrusionOptions, } from './types'\r\nimport { Texture3D, createLinearGradientTexture, } from '@three3d/tools'\r\nexport { Texture3D, createLinearGradientTexture, }\r\n\r\nexport class HeatMapPlugin {\r\n\r\n constructor ( readonly ssp: SoonSpace ) {}\r\n\r\n defaultColorGradient: ColorGradient = [\r\n [ 0, 'rgba(0,255,0,0)' ],\r\n [ 0.5, 'rgba(64,255,255,0.5)' ],\r\n [ 1, 'rgba(255,64,255,1)' ]\r\n ]\r\n defaultGradientVolumeMaterialOptions: GradientVolumeMaterialOptions = {\r\n fit: VolumeFit.Raw,\r\n accFactor: 2,\r\n depthTest: false,\r\n side: BackSide,\r\n discardOut: false,\r\n // 数值的梯度映射纹理\r\n gradient: createLinearGradientTexture( this.defaultColorGradient ),\r\n }\r\n\r\n protected _createTexture ( points: HeatData3DOptions['points'], options: CreateHeatOptions, isLine = false ) {\r\n\r\n //优化\r\n const optimized = optimizeGradientOptions( { points, ...options, }, { maxSize: 60, ...options, } )\r\n const { options: optimizedOptions, position, scale, } = optimized\r\n //创建热力3D数据\r\n\r\n const heatData3D = isLine ? createLineData3D( optimizedOptions ) : createHeatData3D( optimizedOptions )\r\n\r\n //创建热力3D纹理\r\n const heatTexture = createGradientData3DTexture( heatData3D, {\r\n ...options,\r\n } )\r\n //创建热力材质\r\n const heatMaterial = new GradientVolumeMaterial( {\r\n ...this.defaultGradientVolumeMaterialOptions,\r\n map: heatTexture,\r\n ...options,\r\n } )\r\n const volumMesh = new VolumeMesh( heatMaterial )\r\n\r\n volumMesh.position.copy( position )\r\n volumMesh.scale.set( scale, scale, scale )\r\n\r\n this.ssp.addObject( volumMesh )\r\n\r\n return volumMesh\r\n \r\n }\r\n\r\n /**\r\n * 创建热力云\r\n * return material\r\n */\r\n createHeatCloud ( points: HeatParticleVolumeFeaturePoint[], options?: CreateHeatCloudOptions ) {\r\n\r\n return this._createTexture( points, options as CreateHeatOptions )\r\n \r\n }\r\n //创建线状热力\r\n createLineHeat ( points: ParticleVolumeFeaturePoint[], options: CreatLineHeatOptions ) {\r\n\r\n return this._createTexture( points, options as CreateHeatOptions, true )\r\n \r\n }\r\n //创建图片挤压\r\n async createImageExtrusion ( imageUrl: string, options?: CreateImageExtrusionOptions & { depth?: number } ) {\r\n\r\n const material = new ImageVolumeMaterial( { side: BackSide, depthTest: false, ...options, } )\r\n\r\n const image = await SoonSpace.utils.imageLoader.loadAsync( imageUrl )\r\n const texture = createImageData3DTextureByExtrudeImage( image, options?.depth ?? 200, options )\r\n\r\n material.map = texture\r\n const volumMesh = new VolumeMesh( material )\r\n\r\n this.ssp.addObject( volumMesh )\r\n return volumMesh\r\n \r\n }\r\n //创建切片\r\n createSliceMesh ( material: VolumeMaterial, options?: SliceMaterialOptions & CreateImageData3DTextureFromGradientOptions ) {\r\n\r\n let texture = material.map\r\n\r\n if ( !texture ) return\r\n\r\n if ( material instanceof GradientVolumeMaterial ) {\r\n\r\n const { gradient, range, discardOut, voidRange, } = material\r\n\r\n texture = createImageData3DTextureFromGradient( texture.image, {\r\n gradient: gradient?.image,\r\n range,\r\n discardOut,\r\n voidRange,\r\n ...options,\r\n // voidColor\r\n } )\r\n \r\n }\r\n const sliceMesh = new SliceMesh( { map: texture, ...options, } )\r\n\r\n this.ssp.addObject( sliceMesh )\r\n\r\n return sliceMesh\r\n \r\n }\r\n //创建切片dom\r\n createImageSlice ( material: VolumeMaterial, options?: CreateImageData3DTextureFromGradientOptions ) {\r\n\r\n const texture = material.map\r\n\r\n if ( !texture ) return\r\n\r\n let imageTexture: Texture3D | null = null\r\n\r\n if ( material instanceof GradientVolumeMaterial ) {\r\n\r\n const { gradient, range, discardOut, voidRange, } = material\r\n\r\n imageTexture = createImageData3DTextureFromGradient( texture.image, {\r\n gradient: gradient?.image,\r\n range,\r\n discardOut,\r\n voidRange,\r\n ...options,\r\n // voidColor\r\n } )\r\n \r\n }\r\n if ( material instanceof ImageVolumeMaterial ) {\r\n\r\n imageTexture = texture\r\n \r\n }\r\n if ( !imageTexture ) return\r\n\r\n const imageSlice = new ImageData3DTextureSlice( imageTexture )\r\n\r\n return imageSlice\r\n \r\n }\r\n\r\n}\r\nexport * from './types'\r\n\r\nexport default HeatMapPlugin\r\n"],"names":["f","s","B","_","$","U","E","z","Ut","j","Pt","St","w","Tt","qt","en","Rt","J","fn","it","pn","It","mn","Nt","kt","jt","Qt","Ft","Wt","Et","Gt","Xt","Yt","Zt","on","sn","ft","at","ot","K","O","Z","d","Q","Re","Me","fe","ze","vt","Ie","rt","ve","Oe","st","Te","Ve","He","qe","gt","Ee","xt","lt","_t","yt","Mt","zt","ye","Ge","Be","ct","ke","W","ut","Le","mt","wt","pe","ht","dt","pt","we","je","VolumeFit","createLinearGradientTexture","optimizeGradientOptions","createLineData3D","createHeatData3D","createGradientData3DTexture","GradientVolumeMaterial","VolumeMesh","ImageVolumeMaterial","createImageData3DTextureByExtrudeImage","createImageData3DTextureFromGradient","SliceMesh","ImageData3DTextureSlice"],"mappings":";;;AAoJA,IAAIA,GAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAEA,GAAC,IAAI,EAAE,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC,KAAK;AACR,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACd,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;AAChB,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;AACtB,CAAC,EAAEA,GAAC,KAAKA,GAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAClB,IAAIC,GAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAEA,GAAC,IAAI,EAAE,CAAC,CAAC;AACtH,CAAC,CAAC,CAAC,KAAK;AACR,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACd,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;AAChB,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;AACtB,CAAC,EAAEA,GAAC,KAAKA,GAAC,GAAG,EAAE,CAAC,CAAC;;AC/BjB,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC,KAAK;AACR,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACd,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;AAChB,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;AACtB,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAClB,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACtH,CAAC,CAAC,CAAC,KAAK;AACR,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACd,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG;AACH,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;AAChB,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AAChB,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;AACtB,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;;AC/KjB,SAASC,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE;AAChC,EAAE,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACjG,EAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AACxB,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,EAAE,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AAChG,CAAC;AAgDD,SAASC,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3B,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAKD,SAASC,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACxB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEC,GAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5J,CAAC;AACD,SAASA,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACxB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAGF,GAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AACb,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9B,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,GAAG;AACH,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAChC,CAAC;AA2CD,SAASG,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AAC3B,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAGC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGA,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,GAAGA,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAGA,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAEP,GAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3I,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAACA,GAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/B,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACX,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACb,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAGK,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3C;;ACxIA,IAAI,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAIG,IAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjH,IAAIC,GAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAMD,IAAE,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAkBtE,SAASE,IAAE,CAAC,CAAC,EAAE;AACf,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAACC,OAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAACC,OAAC,EAAE,CAAC,CAAC,GAAG,CAACL,OAAC,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAqED,SAAS,EAAE,CAAC,CAAC,EAAE;AACf,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,KAAK,CAAC;AACb,IAAI,OAAO,CAAC,CAAC;AACb,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGG,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/E,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF,KAAK;AACL,GAAG;AACH,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD,IAAIG,IAAE,CAAC;AACP,SAAS,EAAE,CAAC,CAAC,EAAE;AACf,EAAE,IAAI,OAAO,CAAC,IAAI,QAAQ;AAC1B,IAAI,OAAO,CAACA,IAAE,KAAKA,IAAE,GAAG,IAAIC,aAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,CAAC,SAAS;AACjB,IAAI,OAAO,CAAC,CAAC;AACb,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAGC,GAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAIC,OAAE,CAAC,CAAC,CAAC,CAAC;AAChE,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,MAAM,KAAK,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAClB,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,KAAK,CAAC;AACb,IAAI,OAAO,CAAC,CAAC;AACb,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AACD,SAASC,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9D,CAAC;AAID,SAASC,IAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAGD,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAGA,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAGA,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3O,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACvC,CAAC;AACD,MAAME,IAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG;AAC/B,EAAE,GAAG,EAAE;AACP,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AACnC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE;AACnC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACrC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE;AACxC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;AACtC,GAAG;AACH,EAAE,KAAK,EAAE;AACT,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AACnC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE;AACnC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACrC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE;AACxC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;AACtC,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AACnC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE;AACnC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACrC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE;AACxC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;AACtC,GAAG;AACH,CAAC,CAAC;AACF,SAASC,IAAE,CAAC,CAAC,EAAE;AACf,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7F,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD,MAAM,EAAE,GAAG;AACX,EAAE,OAAO,EAAE,CAAC,CAAC;AACb,EAAE,GAAG,EAAE,EAAE;AACT,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,CAAC,CAAC;WACF,MAAM,EAAE,CAAC;AACT,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAIX,GAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACxB,IAAIA,GAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACxB,IAAIA,GAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtB,IAAIA,GAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,WAAW,OAAO,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,WAAW,OAAO,CAAC,CAAC,EAAE;AACxB,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,cAAc,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACpC,GAAG;AACH,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACjE,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE;AACjB,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAC1I,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9F,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACtF,GAAG;AACH,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE;AACb,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;AAChF,IAAI,CAAC,GAAG,CAAC,GAAG;AACZ,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG;AAClC,MAAM,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK;AAC1C,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI;AACtC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtD,GAAG;AACH,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAGW,IAAE,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACjE,GAAG;AACH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;AAClH,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE;AACf,IAAI,IAAI,CAAC,MAAM,GAAG,IAAIR,OAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,IAAI,EAAE,GAAG;AACX,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;AAChG,GAAG;AACH,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;AACZ,IAAI,IAAI,CAAC,GAAG,GAAG,IAAIA,OAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,MAAM,CAAC,GAAG,IAAIA,OAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAIA,OAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAIA,OAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACjG,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAGM,IAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,IAAIC,IAAE,EAAE,CAAC,IAAIA,IAAE,EAAE,CAAC,IAAIA,IAAE,CAAC,EAAE;AACxD,MAAM,GAAG,EAAE;AACX,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,OAAO;AACP,MAAM,KAAK,EAAE;AACb,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/C,OAAO;AACP,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9C,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AACzB,IAAI,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,CAAC;AACV,MAAM,OAAO,CAAC,CAAC;AACf,IAAI,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;AAC9C,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH,EAAC;AACDV,GAAC,CAACY,IAAE,EAAE,UAAU,CAAC,CAAC;AACP,IAAIA,IAAE,EAAE,CAAC,OAACC,IAAE,GAAG;AAC1B,EAAE,CAACC,WAAE,GAAG,CAAC;AACT,EAAE,CAACC,SAAE,GAAG,CAAC;AACT,EAAE,CAACC,gBAAE,GAAG,CAAC;AACT,EAAE,CAACC,QAAE,GAAG,CAAC;AACT,EAAE,CAACC,eAAE,GAAG,CAAC;AACT,EAAE,CAACC,UAAE,GAAG,CAAC;AACT,EAAE,CAACC,iBAAE,GAAG,CAAC;AACT,EAAE,CAACC,eAAE,GAAG,CAAC;AACT,EAAE,CAACC,oBAAE,GAAG,CAAC;AACT,EAAE,CAACC,WAAE,GAAG,CAAC;AACT,EAAE,CAACC,kBAAE,GAAG,CAAC;AACT,EAAE;AACF,SAAS,EAAE,CAAC,CAAC,EAAE;AACf,EAAE,OAAOX,IAAE,CAAC,CAAC,CAAC,CAAC;AACf,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/E,EAAE,OAAOY,GAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAClB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/E,EAAE,OAAOC,GAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAypBS,IAAIC,OAAE;;AC57BhB,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/G,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE;AAChC,EAAE,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACjG,EAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AACxB,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,EAAE,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AAChG,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AAChE,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC/B,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;AAC/F,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,EAAE,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvD,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/F,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE;AACd,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB,EAAE,OAAO,CAAC,YAAY,gBAAgB,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAClN,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE;AACd,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACxG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,GAAG;AACH,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvD,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE;AACd,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrE,EAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE;AACd,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC1B,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE;AACd,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;AACpE,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE;AACd,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;AACjC,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,EAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,OAAO,CAAC,CAAC,CAAC;AAChB,EAAE,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3B,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9B,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACxB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5J,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACxB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AACb,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9B,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,GAAG;AACH,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAChC,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAClB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACzJ,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAClB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5E,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACrB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,GAAG;AACH,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAClC,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AAC1D,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE;AAC3B,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC3B,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,YAAY,SAAS;AACrB,UAAU,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjE,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9B,GAAG,CAAC;AACJ,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AAC3B,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG7B,GAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGA,GAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,GAAGA,GAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAGA,GAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3I,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/B,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACX,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACb,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3C,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9H,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AACnE,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAGA,GAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAGA,GAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAGA,GAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC9J,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,GAAG,EAAE,CAAC,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACb,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAClC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACpF,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AACzE,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AACD,SAAS8B,IAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAClB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChC,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACzB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACzB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/G,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACxB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AACb,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9B,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,GAAG;AACH,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAChC,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAClB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACzB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5G,CAAC;AACD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC,CAAC;AACD,SAASC,IAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACzB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChF,CAAC;AACD,MAAM,EAAE,CAAC;AACT,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,CAAC,CAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACxB,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACvB,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACxB,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE/B,GAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AACzB,IAAI,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE;AACjB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACzC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AACzB,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClI,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE;AACd,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACtC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE;AACf,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC5B,IAAI,IAAI,CAAC,CAAC,EAAE;AACZ,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGA,GAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9H,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG;AAC5B,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACf,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACf,OAAO,CAAC;AACR,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,iBAAiB,GAAG,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnO,IAAI,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AACzD,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AACnC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,CAAC,EAAE;AACd,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AAChF,GAAG;AACH;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpE,GAAG;AACH;;AC1UA,IAAI,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjH,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAMtE,MAAM,EAAE,GAAG,CAAC;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACA,IAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;AACxH,MAAM,EAAE,SAASgC,cAAC,CAAC;AACnB,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,IAAIC,OAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAIC,SAAC,EAAE,CAAC,GAAG,IAAIC,OAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAIA,OAAC,EAAE,CAAC;AACnV,IAAI,IAAI,CAAC;AACT,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB,SAAS,IAAI,CAAC,EAAE;AAChB,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAIA,OAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxF,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG;AACd,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AACvB,MAAM,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AAChC,MAAM,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AAChC,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AACvB,MAAM,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AAC3B,MAAM,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AAC9B,MAAM,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AAC7B,MAAM,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AACzB,MAAM,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE;AACjC,MAAM,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AAC3B,MAAM,GAAG,CAAC;AACV,KAAK,CAAC;AACN,IAAI,KAAK,CAAC;AACV,MAAM,WAAW,EAAEC,KAAC;AACpB;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,MAAM,WAAW,EAAE,CAAC,CAAC;AACrB,MAAM,YAAY,EAAE,EAAE;AACtB,MAAM,GAAG,CAAC;AACV,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAEF,SAAC,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACpC,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE;AACb,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC9D,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;AAC5C,GAAG;AACH,EAAE,IAAI,YAAY,CAAC,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC3E,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;AAC5C,GAAG;AACH,EAAE,IAAI,YAAY,CAAC,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC3E,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5D,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE;AACb,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC9D,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,IAAIC,OAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAChE,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,MAAM,CAAC,GAAG,IAAIA,OAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAC1F,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,MAAM,OAAO,CAAC,CAAC;AACf,IAAI,MAAM,CAAC,GAAG,IAAIA,OAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACnD,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,MAAM,CAAC,GAAG,IAAIE,OAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACpF,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACrB,MAAM,OAAO,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,MAAM,MAAM,CAAC,GAAG,IAAIF,OAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpF,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC/C,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,kBAAkB,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC;AACxC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE;AACd,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,KAAKG,UAAE,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC;AACjH,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AACvC,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE;AACjB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACrF,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;AAC1C,GAAG;AACH,EAAE,IAAI,UAAU,CAAC,CAAC,EAAE;AACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACzE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AACvC,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE;AACjB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAClE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AACrC,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE;AACf,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAChE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;AACzC,GAAG;AACH,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE;AACnB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACvF,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,CAAC,CAAC,EAAE;AACnB,IAAI,MAAM,CAAC,GAAG,IAAIH,OAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC3E,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;AACnB,IAAI,MAAM,CAAC,GAAGI,GAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAIJ,OAAC,EAAE,CAAC;AACvC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACb,IAAI,MAAM,CAAC,GAAG,IAAIK,OAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC3D,IAAI,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7D,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACvB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEX,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;AAClF,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,CAAC,EAAE;AACb,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACvB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,GAAGY,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;AAC5E,GAAG;AACH,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE;AACf,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;AAC1C,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC;AACjD,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC;AACD,MAAM,EAAE,SAASC,IAAE,CAAC;AACpB,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC,GAAG,IAAIC,WAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClH,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACV,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,IAAI,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,CAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,CAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAClC,MAAM,QAAQ,EAAE;AAChB,QAAQ,GAAG,EAAE,MAAM,IAAI,CAAC,SAAS;AACjC,QAAQ,GAAG,EAAE,CAAC,CAAC,KAAK;AACpB,UAAU,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AACvH,SAAS;AACT,OAAO;AACP,MAAM,QAAQ,EAAE;AAChB,QAAQ,GAAG,EAAE,MAAM,IAAI,CAAC,SAAS;AACjC,QAAQ,GAAG,EAAE,CAAC,CAAC,KAAK;AACpB,UAAU,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/E,SAAS;AACT,OAAO;AACP,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC7C,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,GAAG;AACnB,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;AAC9C,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,MAAM,OAAO,CAAC,CAAC,CAAC;AAChB,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;AAC5C,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC;AAC7C,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;AAC3C,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACjH,IAAI,IAAI,CAAC,CAAC;AACV,MAAM,OAAO,CAAC,CAAC,CAAC;AAChB,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;AAC5C,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAIR,OAAC,EAAE,CAAC,CAAC;AACpF,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AACnE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,GAAG;AACd,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;AAC5C,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC;AACnD,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AACxD,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,CAAC,CAAC,EAAE;AACnB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAIA,OAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1C,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,IAAI,MAAM,CAAC,GAAGI,GAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAIJ,OAAC,EAAE,CAAC;AACvC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACb,IAAI,MAAM,CAAC,GAAG,IAAIK,OAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxD,IAAI,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;AACnB,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,CAAC,EAAE;AACb,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAIL,OAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpC,GAAG;AACH,CAAC;AACD,MAAM,EAAE,GAAG,CAAC;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACH,MAAM,EAAE,SAAS,EAAE,CAAC;AACpB,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE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AAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACrF,GAAG;AACH,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE;AAChB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACpF,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxC,GAAG;AACH,EAAE,IAAI,QAAQ,CAAC,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACvE,GAAG;AACH,CAAC;AACD,MAAM,EAAE,GAAG,CAAC;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACH,MAAM,EAAE,SAAS,EAAE,CAAC;AACpB,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;AACvD,IAAI,CAAC,CAAC,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AACvC,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE;AACf,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACtE,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxC,GAAG;AACH,EAAE,IAAI,QAAQ,CAAC,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACtF,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3C,GAAG;AACH,EAAE,IAAI,WAAW,CAAC,CAAC,EAAE;AACrB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC3F,GAAG;AACH,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE;AACf,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AAC3F,EAAE,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE;AAC7D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,MAAM,CAAC,GAAG,IAAIC,cAAE,EAAE,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,IAAIC,sBAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAIA,sBAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,IAAIC,2BAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtI,CAAC;AACD,SAAS,EAAE,CAAC,CAAC,EAAE;AACf,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,OAAO,IAAIC,MAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AACD,MAAM,EAAE,GAAG,CAAC;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACH,MAAM,EAAE,SAAS,EAAE,CAAC;AACpB,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG;AAC5C,MAAM,KAAK,EAAE,EAAE,KAAK,EAAE,IAAIjC,OAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC3D,KAAK,CAAC;AACN,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;AACpE,IAAI,CAAC,CAAC,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AACrC,GAAG;AACH,EAAE,IA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AAI,MAAM,EAAE,EAAE,KAAK,EAAE,IAAIA,OAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACrC,IAAI,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AAC/B,IAAI,iBAAiB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;AACrC,IAAI,MAAM,EAAE,EAAE,KAAK,EAAE,IAAIF,OAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAClC,IAAI,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3B,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7B,GAAG;AACH,EAAE,YAAY;AACd;AACA,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;AACJ,GAAG;AACH,EAAE,cAAc;AAChB;AACA,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC;AACC,IAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;AAC5F,MAAM,EAAE,SAASD,cAAC,CAAC;AACnB,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAIG,OAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjG,IAAI,IAAI,CAAC,EAAE;AACX,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;AACxD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAGS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAGiB,aAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC/D,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI5B,OAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC;AAClM,IAAI,KAAK,CAAC;AACV,MAAM,GAAG,EAAE;AACX;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,MAAM,IAAI,EAAEwC,QAAE;AACd,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC,IAAI,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACzB,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE;AACb,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACjE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxC,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,IAAI,QAAQ,CAAC,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG7B,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC3E,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE;AACd,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACrE,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE;AACf,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACxE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE;AACd,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACjE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjD,GAAG;AACH,EAAE,IAAI,SAAS,CAAC,CAAC,EAAE;AACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC5E,GAAG;AACH,CAAC;AACD,MAAM,EAAE,GAAG,CAAC;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACH,MAAM,EAAE,SAAS8B,iBAAE,CAAC;AACpB,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7G,IAAI,CAAC,GAAG,CAAC,IAAI,IAAId,KAAE,CAAC,CAAC,EAAE,CAAC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","x_google_ignoreList":[0,1,2,3,4,5]}