editium 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +424 -0
- package/dist/Editium.d.ts +4 -0
- package/dist/ResizableImage.d.ts +9 -0
- package/dist/TableElement.d.ts +21 -0
- package/dist/Toolbar.d.ts +31 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.esm.js +3128 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +3154 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +99 -0
- package/dist/utils.d.ts +55 -0
- package/package.json +105 -0
- package/vanilla/README.md +409 -0
- package/vanilla/build-bundle.js +41 -0
- package/vanilla/editium.bundle.js +3257 -0
- package/vanilla/editium.css +772 -0
- package/vanilla/editium.js +2453 -0
- package/vanilla/example/README.md +69 -0
- package/vanilla/example/demo.css +351 -0
- package/vanilla/example/demo.js +122 -0
- package/vanilla/example/index.html +202 -0
- package/vanilla/package.json +30 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../react/utils.ts","../react/Toolbar.tsx","../react/ResizableImage.tsx","../react/TableElement.tsx","../react/types.ts","../react/Editium.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { Editor, Element as SlateElement, Transforms, Range, Text, Path } from 'slate';\r\nimport { ReactEditor } from 'slate-react';\r\nimport { CustomElement, CustomText, FormatType, BlockType, LinkElement, AlignmentType, ImageElement } from './types';\r\n\r\nexport const isAlignmentActive = (editor: Editor, alignment: AlignmentType): boolean => {\r\n const { selection } = editor;\r\n if (!selection) return false;\r\n\r\n const [match] = Array.from(\r\n Editor.nodes(editor, {\r\n at: Editor.unhangRange(editor, selection),\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n (n as CustomElement).align === alignment,\r\n })\r\n );\r\n\r\n return !!match;\r\n};\r\n\r\nexport const toggleAlignment = (editor: Editor, alignment: AlignmentType): void => {\r\n const isActive = isAlignmentActive(editor, alignment);\r\n \r\n Transforms.setNodes<CustomElement>(\r\n editor,\r\n { align: isActive ? undefined : alignment },\r\n {\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n ['paragraph', 'heading-one', 'heading-two', 'heading-three', 'heading-four', 'heading-five', 'heading-six', 'heading-seven', 'heading-eight'].includes((n as CustomElement).type)\r\n }\r\n );\r\n};\r\n\r\nexport const indentListItem = (editor: Editor): void => {\r\n const { selection } = editor;\r\n if (!selection) return;\r\n\r\n const [listItemMatch] = Array.from(\r\n Editor.nodes(editor, {\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n (n as CustomElement).type === 'list-item',\r\n })\r\n );\r\n\r\n if (!listItemMatch) return;\r\n\r\n const [listMatch] = Array.from(\r\n Editor.nodes(editor, {\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n ['bulleted-list', 'numbered-list'].includes((n as CustomElement).type),\r\n })\r\n );\r\n\r\n if (listMatch) {\r\n const [parentList] = listMatch;\r\n const listType = (parentList as CustomElement).type;\r\n \r\n Transforms.wrapNodes(\r\n editor,\r\n { type: listType, children: [] } as CustomElement,\r\n {\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n (n as CustomElement).type === 'list-item',\r\n }\r\n );\r\n }\r\n};\r\n\r\nexport const outdentListItem = (editor: Editor): void => {\r\n const { selection } = editor;\r\n if (!selection) return;\r\n\r\n const listNodes = Array.from(\r\n Editor.nodes(editor, {\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n ['bulleted-list', 'numbered-list'].includes((n as CustomElement).type),\r\n })\r\n );\r\n\r\n if (listNodes.length > 1) {\r\n Transforms.unwrapNodes(editor, {\r\n match: (n: any) => \r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n ['bulleted-list', 'numbered-list'].includes((n as CustomElement).type),\r\n split: true,\r\n });\r\n } else if (listNodes.length === 1) {\r\n Transforms.unwrapNodes(editor, {\r\n match: (n: any) => \r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n ['bulleted-list', 'numbered-list'].includes((n as CustomElement).type),\r\n });\r\n \r\n Transforms.setNodes(editor, \r\n { type: 'paragraph' } as Partial<CustomElement>,\r\n {\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n (n as CustomElement).type === 'list-item'\r\n }\r\n );\r\n }\r\n};\r\n\r\nexport const isMarkActive = (editor: Editor, format: FormatType): boolean => {\r\n const marks = Editor.marks(editor);\r\n return marks ? marks[format] === true : false;\r\n};\r\n\r\nexport const isBlockActive = (editor: Editor, format: BlockType): boolean => {\r\n const { selection } = editor;\r\n if (!selection) return false;\r\n\r\n const [match] = Array.from(\r\n Editor.nodes(editor, {\r\n at: Editor.unhangRange(editor, selection),\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n (n as CustomElement).type === format,\r\n })\r\n );\r\n\r\n return !!match;\r\n};\r\n\r\nexport const toggleMark = (editor: Editor, format: FormatType): void => {\r\n const isActive = isMarkActive(editor, format);\r\n\r\n if (isActive) {\r\n Editor.removeMark(editor, format);\r\n } else {\r\n Editor.addMark(editor, format, true);\r\n }\r\n};\r\n\r\nexport const applyColor = (editor: Editor, color: string | null): void => {\r\n if (color === null) {\r\n Editor.removeMark(editor, 'color');\r\n } else {\r\n Editor.addMark(editor, 'color', color);\r\n }\r\n};\r\n\r\nexport const applyBackgroundColor = (editor: Editor, color: string | null): void => {\r\n if (color === null) {\r\n Editor.removeMark(editor, 'backgroundColor');\r\n } else {\r\n Editor.addMark(editor, 'backgroundColor', color);\r\n }\r\n};\r\n\r\nexport const getActiveColor = (editor: Editor): string | null => {\r\n const marks = Editor.marks(editor);\r\n return marks?.color ? String(marks.color) : null;\r\n};\r\n\r\nexport const getActiveBackgroundColor = (editor: Editor): string | null => {\r\n const marks = Editor.marks(editor);\r\n return marks?.backgroundColor ? String(marks.backgroundColor) : null;\r\n};\r\n\r\nexport const toggleBlock = (editor: Editor, format: BlockType): void => {\r\n const isActive = isBlockActive(editor, format);\r\n const isList = ['bulleted-list', 'numbered-list'].includes(format);\r\n\r\n Transforms.unwrapNodes(editor, {\r\n match: (n: any) => \r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n ['bulleted-list', 'numbered-list'].includes((n as CustomElement).type),\r\n split: true,\r\n });\r\n\r\n let newProperties: Partial<CustomElement>;\r\n if (format === 'list-item') {\r\n newProperties = { type: isActive ? 'paragraph' : 'list-item' };\r\n } else {\r\n newProperties = { type: isActive ? 'paragraph' : isList ? 'list-item' : format };\r\n }\r\n\r\n Transforms.setNodes<CustomElement>(editor, newProperties);\r\n\r\n if (!isActive && isList) {\r\n const block = { type: format, children: [] } as CustomElement;\r\n Transforms.wrapNodes(editor, block);\r\n }\r\n};\r\n\r\nexport const insertHorizontalRule = (editor: Editor): void => {\r\n const hr: CustomElement = {\r\n type: 'horizontal-rule',\r\n children: [{ text: '' }],\r\n };\r\n \r\n Transforms.insertNodes(editor, hr);\r\n \r\n const paragraph: CustomElement = {\r\n type: 'paragraph',\r\n children: [{ text: '' }],\r\n };\r\n Transforms.insertNodes(editor, paragraph);\r\n};\r\n\r\nexport const insertImage = (editor: Editor, url: string, alt?: string, width?: number): void => {\r\n const image: any = {\r\n type: 'image',\r\n url,\r\n alt: alt || 'Image',\r\n width,\r\n children: [{ text: '' }],\r\n };\r\n \r\n Transforms.insertNodes(editor, image);\r\n \r\n const paragraph: any = {\r\n type: 'paragraph',\r\n children: [{ text: '' }],\r\n };\r\n Transforms.insertNodes(editor, paragraph);\r\n};\r\n\r\nexport const isValidImageUrl = (url: string): boolean => {\r\n try {\r\n const parsedUrl = new URL(url);\r\n const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.svg', '.webp', '.bmp', '.ico'];\r\n const pathname = parsedUrl.pathname.toLowerCase();\r\n return imageExtensions.some(ext => pathname.endsWith(ext)) || \r\n parsedUrl.protocol === 'data:' || \r\n pathname.includes('/image') ||\r\n parsedUrl.hostname.includes('cdn') ||\r\n parsedUrl.hostname.includes('imgur') ||\r\n parsedUrl.hostname.includes('unsplash');\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nexport const insertLink = (editor: Editor, url: string, title?: string, target?: '_blank' | '_self'): void => {\r\n if (editor.selection) {\r\n wrapLink(editor, url, title, target);\r\n }\r\n};\r\n\r\nexport const isLinkActive = (editor: Editor): boolean => {\r\n const [link] = Array.from(\r\n Editor.nodes(editor, {\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n (n as LinkElement).type === 'link',\r\n })\r\n );\r\n return !!link;\r\n};\r\n\r\nexport const getLinkAtCursor = (editor: Editor): LinkElement | null => {\r\n const [link] = Array.from(\r\n Editor.nodes(editor, {\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n (n as LinkElement).type === 'link',\r\n })\r\n );\r\n return link ? (link[0] as LinkElement) : null;\r\n};\r\n\r\nexport const unwrapLink = (editor: Editor): void => {\r\n Transforms.unwrapNodes(editor, {\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n (n as LinkElement).type === 'link',\r\n });\r\n};\r\n\r\nexport const wrapLink = (editor: Editor, url: string, title?: string, target?: '_blank' | '_self'): void => {\r\n if (isLinkActive(editor)) {\r\n unwrapLink(editor);\r\n }\r\n\r\n const { selection } = editor;\r\n const isCollapsed = selection && Range.isCollapsed(selection);\r\n const link: LinkElement = {\r\n type: 'link',\r\n url,\r\n ...(title && { title }),\r\n ...(target && { target }),\r\n children: isCollapsed ? [{ text: url }] : [],\r\n };\r\n\r\n if (isCollapsed) {\r\n Transforms.insertNodes(editor, link);\r\n } else {\r\n Transforms.wrapNodes(editor, link, { split: true });\r\n Transforms.collapse(editor, { edge: 'end' });\r\n }\r\n};\r\n\r\nexport const insertTable = (editor: Editor, rows: number = 3, cols: number = 3): void => {\r\n const tableRows: any[] = [];\r\n \r\n for (let i = 0; i < rows; i++) {\r\n const cells: any[] = [];\r\n for (let j = 0; j < cols; j++) {\r\n cells.push({\r\n type: 'table-cell',\r\n children: [{ text: '' }],\r\n });\r\n }\r\n tableRows.push({\r\n type: 'table-row',\r\n children: cells,\r\n });\r\n }\r\n\r\n const table: any = {\r\n type: 'table',\r\n children: tableRows,\r\n };\r\n\r\n const paragraph: any = {\r\n type: 'paragraph',\r\n children: [{ text: '' }],\r\n };\r\n\r\n Transforms.insertNodes(editor, [table, paragraph]);\r\n};\r\n\r\nexport const isInTable = (editor: Editor): boolean => {\r\n const { selection } = editor;\r\n if (!selection) return false;\r\n\r\n const [tableMatch] = Array.from(\r\n Editor.nodes(editor, {\r\n at: selection,\r\n match: (n: any) =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table',\r\n })\r\n );\r\n\r\n return !!tableMatch;\r\n};\r\n\r\nexport const addTableRow = (editor: Editor): void => {\r\n const { selection } = editor;\r\n if (!selection) return;\r\n\r\n const [tableMatch] = Array.from(\r\n Editor.nodes(editor, {\r\n at: selection,\r\n match: (n: any) =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table',\r\n })\r\n );\r\n\r\n if (!tableMatch) return;\r\n\r\n const [table, tablePath] = tableMatch as [any, Path];\r\n const firstRow = table.children[0];\r\n const colCount = firstRow?.children?.length || 1;\r\n\r\n const cells: any[] = [];\r\n for (let i = 0; i < colCount; i++) {\r\n cells.push({\r\n type: 'table-cell',\r\n children: [{ text: '' }],\r\n });\r\n }\r\n\r\n const newRow: any = {\r\n type: 'table-row',\r\n children: cells,\r\n };\r\n\r\n Transforms.insertNodes(editor, newRow, {\r\n at: [...tablePath, table.children.length],\r\n });\r\n};\r\n\r\nexport const removeTableRow = (editor: Editor): void => {\r\n const { selection } = editor;\r\n if (!selection) return;\r\n\r\n const [rowMatch] = Array.from(\r\n Editor.nodes(editor, {\r\n at: selection,\r\n match: (n: any) =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table-row',\r\n })\r\n );\r\n\r\n if (!rowMatch) return;\r\n\r\n const [, rowPath] = rowMatch as [any, Path];\r\n \r\n const [tableMatch] = Array.from(\r\n Editor.nodes(editor, {\r\n at: selection,\r\n match: (n: any) =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table',\r\n })\r\n );\r\n\r\n if (tableMatch) {\r\n const [table] = tableMatch as [any, Path];\r\n if (table.children.length <= 1) {\r\n Transforms.removeNodes(editor, {\r\n match: (n: any) =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table',\r\n });\r\n return;\r\n }\r\n }\r\n\r\n Transforms.removeNodes(editor, { at: rowPath });\r\n};\r\n\r\nexport const addTableColumn = (editor: Editor): void => {\r\n const { selection } = editor;\r\n if (!selection) return;\r\n\r\n const [tableMatch] = Array.from(\r\n Editor.nodes(editor, {\r\n at: selection,\r\n match: (n: any) =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table',\r\n })\r\n );\r\n\r\n if (!tableMatch) return;\r\n\r\n const [table, tablePath] = tableMatch as [any, Path];\r\n\r\n table.children.forEach((_row: any, rowIndex: number) => {\r\n const newCell: any = {\r\n type: 'table-cell',\r\n children: [{ text: '' }],\r\n };\r\n\r\n Transforms.insertNodes(editor, newCell, {\r\n at: [...tablePath, rowIndex, table.children[rowIndex].children.length],\r\n });\r\n });\r\n};\r\n\r\nexport const removeTableColumn = (editor: Editor): void => {\r\n const { selection } = editor;\r\n if (!selection) return;\r\n\r\n const [cellMatch] = Array.from(\r\n Editor.nodes(editor, {\r\n at: selection,\r\n match: (n: any) =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table-cell',\r\n })\r\n );\r\n\r\n if (!cellMatch) return;\r\n\r\n const [, cellPath] = cellMatch as [any, Path];\r\n const cellIndex = cellPath[cellPath.length - 1];\r\n\r\n const [tableMatch] = Array.from(\r\n Editor.nodes(editor, {\r\n at: selection,\r\n match: (n: any) =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table',\r\n })\r\n );\r\n\r\n if (!tableMatch) return;\r\n\r\n const [table, tablePath] = tableMatch as [any, Path];\r\n \r\n if (table.children[0]?.children?.length <= 1) {\r\n Transforms.removeNodes(editor, { at: tablePath });\r\n return;\r\n }\r\n\r\n for (let rowIndex = table.children.length - 1; rowIndex >= 0; rowIndex--) {\r\n Transforms.removeNodes(editor, {\r\n at: [...tablePath, rowIndex, cellIndex],\r\n });\r\n }\r\n};\r\n\r\nexport const setTableAlignment = (editor: Editor, alignment: AlignmentType): void => {\r\n const { selection } = editor;\r\n if (!selection) return;\r\n\r\n const [tableMatch] = Array.from(\r\n Editor.nodes(editor, {\r\n at: selection,\r\n match: (n: any) =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === 'table',\r\n })\r\n );\r\n\r\n if (!tableMatch) return;\r\n\r\n const [, tablePath] = tableMatch as [any, Path];\r\n\r\n Transforms.setNodes(\r\n editor,\r\n { align: alignment } as any,\r\n { at: tablePath }\r\n );\r\n};\r\n\r\nexport const findAllMatches = (editor: Editor, searchQuery: string): Array<{ path: Path; offset: number; text: string }> => {\r\n if (!searchQuery) return [];\r\n \r\n const matches: Array<{ path: Path; offset: number; text: string }> = [];\r\n const searchLower = searchQuery.toLowerCase();\r\n \r\n const textNodes = Array.from(\r\n Editor.nodes(editor, {\r\n at: [],\r\n match: (n: any) => Text.isText(n),\r\n })\r\n );\r\n\r\n textNodes.forEach(([node, path]) => {\r\n const textNode = node as CustomText;\r\n const text = textNode.text;\r\n const textLower = text.toLowerCase();\r\n \r\n let index = 0;\r\n while ((index = textLower.indexOf(searchLower, index)) !== -1) {\r\n matches.push({\r\n path,\r\n offset: index,\r\n text: text.substring(index, index + searchQuery.length),\r\n });\r\n index += searchQuery.length;\r\n }\r\n });\r\n\r\n return matches;\r\n};\r\n\r\nexport const navigateToMatch = (editor: Editor, match: { path: Path; offset: number; text: string }) => {\r\n const start = { path: match.path, offset: match.offset };\r\n const end = { path: match.path, offset: match.offset + match.text.length };\r\n \r\n Transforms.select(editor, { anchor: start, focus: end });\r\n \r\n const domRange = ReactEditor.toDOMRange(editor as any, editor.selection!);\r\n domRange.startContainer.parentElement?.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n });\r\n};\r\n\r\nexport const replaceMatch = (\r\n editor: Editor,\r\n match: { path: Path; offset: number; text: string },\r\n replaceText: string\r\n): void => {\r\n const start = { path: match.path, offset: match.offset };\r\n const end = { path: match.path, offset: match.offset + match.text.length };\r\n \r\n Transforms.select(editor, { anchor: start, focus: end });\r\n Transforms.insertText(editor, replaceText);\r\n};\r\n\r\nexport const replaceAllMatches = (\r\n editor: Editor,\r\n matches: Array<{ path: Path; offset: number; text: string }>,\r\n replaceText: string\r\n): void => {\r\n const sortedMatches = [...matches].reverse();\r\n \r\n Editor.withoutNormalizing(editor, () => {\r\n sortedMatches.forEach((match) => {\r\n const start = { path: match.path, offset: match.offset };\r\n const end = { path: match.path, offset: match.offset + match.text.length };\r\n \r\n Transforms.select(editor, { anchor: start, focus: end });\r\n Transforms.delete(editor);\r\n Transforms.insertText(editor, replaceText, { at: start });\r\n });\r\n });\r\n};\r\n\r\nexport const serializeToHtml = (nodes: (CustomElement | LinkElement | ImageElement)[]): string => {\r\n return nodes.map(node => serializeNode(node)).join('');\r\n};\r\n\r\nconst serializeNode = (node: CustomElement | LinkElement | ImageElement | CustomText): string => {\r\n if (Text.isText(node)) {\r\n const textNode = node as CustomText;\r\n let string = escapeHtml(textNode.text);\r\n \r\n const styles: string[] = [];\r\n if (textNode.color) styles.push(`color: ${textNode.color}`);\r\n if (textNode.backgroundColor) styles.push(`background-color: ${textNode.backgroundColor}`);\r\n const styleAttr = styles.length > 0 ? ` style=\"${styles.join('; ')}\"` : '';\r\n \r\n if (textNode.bold) string = `<strong>${string}</strong>`;\r\n if (textNode.italic) string = `<em>${string}</em>`;\r\n if (textNode.underline) string = `<u>${string}</u>`;\r\n if (textNode.code) string = `<code>${string}</code>`;\r\n if (textNode.strikethrough) string = `<s>${string}</s>`;\r\n if (textNode.superscript) string = `<sup>${string}</sup>`;\r\n if (textNode.subscript) string = `<sub>${string}</sub>`;\r\n \r\n if (styleAttr) {\r\n string = `<span${styleAttr}>${string}</span>`;\r\n }\r\n \r\n return string;\r\n }\r\n\r\n const elementNode = node as CustomElement | LinkElement | ImageElement;\r\n const children = elementNode.children.map((n: any) => serializeNode(n)).join('');\r\n const alignStyle = (elementNode as CustomElement).align ? ` style=\"text-align: ${(elementNode as CustomElement).align}\"` : '';\r\n\r\n switch (elementNode.type) {\r\n case 'paragraph':\r\n return `<p${alignStyle}>${children}</p>`;\r\n case 'heading-one':\r\n return `<h1${alignStyle}>${children}</h1>`;\r\n case 'heading-two':\r\n return `<h2${alignStyle}>${children}</h2>`;\r\n case 'heading-three':\r\n return `<h3${alignStyle}>${children}</h3>`;\r\n case 'heading-four':\r\n return `<h4${alignStyle}>${children}</h4>`;\r\n case 'heading-five':\r\n return `<h5${alignStyle}>${children}</h5>`;\r\n case 'heading-six':\r\n return `<h6${alignStyle}>${children}</h6>`;\r\n case 'heading-seven':\r\n return `<h7${alignStyle}>${children}</h7>`;\r\n case 'heading-eight':\r\n return `<h8${alignStyle}>${children}</h8>`;\r\n case 'bulleted-list':\r\n return `<ul>${children}</ul>`;\r\n case 'numbered-list':\r\n return `<ol>${children}</ol>`;\r\n case 'list-item':\r\n return `<li>${children}</li>`;\r\n case 'blockquote':\r\n return `<blockquote${alignStyle}>${children}</blockquote>`;\r\n case 'code-block':\r\n return `<pre><code>${children}</code></pre>`;\r\n case 'horizontal-rule':\r\n return `<hr />`;\r\n case 'table':\r\n const tableNode = elementNode as any;\r\n const tableAlignStyle = tableNode.align ? ` margin-left: ${\r\n tableNode.align === 'center' ? 'auto' :\r\n tableNode.align === 'right' ? 'auto' : '0'\r\n }; margin-right: ${\r\n tableNode.align === 'center' ? 'auto' :\r\n tableNode.align === 'right' ? '0' : 'auto'\r\n };` : '';\r\n const tableWidthStyle = tableNode.width ? ` width: ${tableNode.width}px; max-width: 100%;` : ' width: 100%;';\r\n return `<table style=\"border-collapse: collapse;${tableWidthStyle} margin-top: 16px; margin-bottom: 16px;${tableAlignStyle}\">${children}</table>`;\r\n case 'table-row':\r\n return `<tr>${children}</tr>`;\r\n case 'table-cell':\r\n const cellNode = elementNode as any;\r\n const cellAlignStyle = cellNode.align ? ` text-align: ${cellNode.align};` : '';\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px;${cellAlignStyle}\">${children}</td>`;\r\n case 'image':\r\n const imageNode = elementNode as ImageElement;\r\n const altAttr = imageNode.alt ? ` alt=\"${escapeHtml(imageNode.alt)}\"` : ' alt=\"Image\"';\r\n const widthAttr = imageNode.width ? ` width=\"${imageNode.width}\"` : '';\r\n const heightAttr = imageNode.height ? ` height=\"${imageNode.height}\"` : '';\r\n const imgAlignStyle = imageNode.align ? ` style=\"display: block; margin: ${\r\n imageNode.align === 'center' ? '0 auto' :\r\n imageNode.align === 'right' ? '0 0 0 auto' : '0'\r\n };\"` : '';\r\n return `<img src=\"${escapeHtml(imageNode.url)}\"${altAttr}${widthAttr}${heightAttr}${imgAlignStyle} />`;\r\n case 'link':\r\n const linkNode = elementNode as LinkElement;\r\n const titleAttr = linkNode.title ? ` title=\"${escapeHtml(linkNode.title)}\"` : '';\r\n const targetAttr = linkNode.target ? ` target=\"${linkNode.target}\"` : '';\r\n const relAttr = linkNode.target === '_blank' ? ' rel=\"noopener noreferrer\"' : '';\r\n return `<a href=\"${escapeHtml(linkNode.url)}\"${titleAttr}${targetAttr}${relAttr}>${children}</a>`;\r\n default:\r\n return children;\r\n }\r\n};\r\n\r\nconst escapeHtml = (text: string): string => {\r\n const div = document.createElement('div');\r\n div.textContent = text;\r\n return div.innerHTML;\r\n};\r\n\r\nexport const defaultInitialValue: CustomElement[] = [\r\n {\r\n type: 'paragraph',\r\n children: [{ text: '' }],\r\n },\r\n];\r\n\r\nexport const getTextContent = (nodes: any[]): string => {\r\n return nodes\r\n .map((node: any) => {\r\n if (node.text !== undefined) {\r\n return node.text;\r\n }\r\n if (node.children) {\r\n return getTextContent(node.children);\r\n }\r\n return '';\r\n })\r\n .join('');\r\n};\r\n\r\nexport const countWords = (text: string): number => {\r\n const trimmed = text.trim();\r\n if (trimmed === '') return 0;\r\n \r\n return trimmed.split(/\\s+/).filter(word => word.length > 0).length;\r\n};\r\n\r\nexport const countCharacters = (text: string): number => {\r\n return text.length;\r\n};\r\n\r\nexport const countCharactersNoSpaces = (text: string): number => {\r\n return text.replace(/\\s/g, '').length;\r\n};","import React, { useState, useRef, useEffect } from 'react';\r\nimport { useSlate } from 'slate-react';\r\nimport { HistoryEditor } from 'slate-history';\r\nimport { Editor, Transforms, Range } from 'slate';\r\nimport {\r\n BoldIcon,\r\n ItalicIcon,\r\n UnderlineIcon,\r\n CodeBracketIcon,\r\n ArrowUturnLeftIcon,\r\n ArrowUturnRightIcon,\r\n LinkIcon,\r\n ListBulletIcon,\r\n ArrowRightIcon,\r\n ArrowLeftIcon,\r\n Bars3CenterLeftIcon,\r\n Bars3Icon,\r\n ChevronDownIcon,\r\n PencilIcon,\r\n TrashIcon,\r\n ArrowTopRightOnSquareIcon,\r\n PhotoIcon,\r\n TableCellsIcon,\r\n MagnifyingGlassIcon,\r\n XMarkIcon,\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ArrowsPointingOutIcon,\r\n ArrowsPointingInIcon\r\n} from '@heroicons/react/24/outline';\r\nimport { isMarkActive, isBlockActive, toggleMark, toggleBlock, isLinkActive, insertLink, unwrapLink, isAlignmentActive, toggleAlignment, indentListItem, outdentListItem, getLinkAtCursor, insertHorizontalRule, applyColor, applyBackgroundColor, getActiveColor, getActiveBackgroundColor, insertImage, isValidImageUrl, insertTable, addTableRow, removeTableRow, addTableColumn, removeTableColumn, isInTable, findAllMatches, navigateToMatch, replaceMatch, replaceAllMatches } from './utils';\r\nimport { FormatType, BlockType, ToolbarItem, AlignmentType, LinkElement, ImageElement } from './types';\r\n\r\ninterface ToolbarProps {\r\n items: ToolbarItem[];\r\n className?: string;\r\n onViewOutput?: (type: 'html' | 'json' | 'preview') => void;\r\n onEditLink?: (linkData: { url: string; title?: string; target?: '_blank' | '_self'; text: string }) => void;\r\n searchQuery?: string;\r\n searchMatches?: Array<{ path: any; offset: number; text: string }>;\r\n currentMatchIndex?: number;\r\n onSearchQueryChange?: (query: string) => void;\r\n onSearchMatchesChange?: (matches: Array<{ path: any; offset: number; text: string }>) => void;\r\n onCurrentMatchIndexChange?: (index: number) => void;\r\n isFullscreen?: boolean;\r\n onFullscreenToggle?: () => void;\r\n}\r\n\r\ninterface ToolbarButtonProps {\r\n active: boolean;\r\n onMouseDown: (event: React.MouseEvent) => void;\r\n children: React.ReactNode;\r\n title?: string;\r\n}\r\n\r\ninterface DropdownProps {\r\n trigger: React.ReactNode;\r\n children: React.ReactNode;\r\n title?: string;\r\n}\r\n\r\nconst Dropdown: React.FC<DropdownProps> = ({ trigger, children, title }) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => document.removeEventListener('mousedown', handleClickOutside);\r\n }, []);\r\n\r\n return (\r\n <div ref={dropdownRef} style={{ position: 'relative', display: 'inline-block' }}>\r\n <button\r\n title={title}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n setIsOpen(!isOpen);\r\n }}\r\n style={{\r\n backgroundColor: isOpen ? '#dee2e6' : 'transparent',\r\n border: 'none',\r\n borderRadius: '3px',\r\n padding: '5px 8px',\r\n margin: '0',\r\n cursor: 'pointer',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n color: '#222f3e',\r\n transition: 'background-color 0.1s ease',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n minHeight: '28px',\r\n boxShadow: 'none',\r\n whiteSpace: 'nowrap',\r\n }}\r\n onMouseEnter={(e) => {\r\n if (!isOpen) {\r\n e.currentTarget.style.backgroundColor = '#e9ecef';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n if (!isOpen) {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }\r\n }}\r\n >\r\n {trigger}\r\n <ChevronDownIcon style={{ marginLeft: '4px', width: '12px', height: '12px' }} />\r\n </button>\r\n \r\n {isOpen && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: '100%',\r\n left: '0',\r\n zIndex: 9999,\r\n backgroundColor: '#ffffff',\r\n border: '1px solid #ccc',\r\n borderRadius: '3px',\r\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)',\r\n minWidth: '180px',\r\n marginTop: '4px',\r\n overflow: 'hidden',\r\n padding: '4px 0'\r\n }}\r\n >\r\n {children}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nconst ToolbarButton: React.FC<ToolbarButtonProps> = ({ active, onMouseDown, children, title }) => (\r\n <button\r\n title={title}\r\n onMouseDown={onMouseDown}\r\n style={{\r\n backgroundColor: active ? '#dee2e6' : 'transparent',\r\n border: 'none',\r\n borderRadius: '3px',\r\n padding: '5px 8px',\r\n margin: '0',\r\n cursor: 'pointer',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n color: '#222f3e',\r\n transition: 'background-color 0.1s ease',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n minHeight: '28px',\r\n boxShadow: 'none',\r\n whiteSpace: 'nowrap',\r\n }}\r\n onMouseEnter={(e) => {\r\n if (!active) {\r\n e.currentTarget.style.backgroundColor = '#e9ecef';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n if (!active) {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }\r\n }}\r\n >\r\n {children}\r\n </button>\r\n);\r\n\r\nconst DropdownItem: React.FC<{\r\n active: boolean;\r\n onMouseDown: (event: React.MouseEvent) => void;\r\n children: React.ReactNode;\r\n icon?: React.ReactNode;\r\n}> = ({ active, onMouseDown, children, icon }) => (\r\n <button\r\n onMouseDown={onMouseDown}\r\n style={{\r\n width: '100%',\r\n padding: '6px 16px',\r\n border: 'none',\r\n backgroundColor: active ? '#e7f4ff' : 'transparent',\r\n color: '#222f3e',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n cursor: 'pointer',\r\n textAlign: 'left',\r\n transition: 'background-color 0.1s ease',\r\n borderRadius: '0',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px',\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = '#e7f4ff';\r\n }}\r\n onMouseLeave={(e) => {\r\n if (!active) {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }\r\n }}\r\n >\r\n {icon && <span style={{ width: '16px', height: '16px', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>{icon}</span>}\r\n {children}\r\n </button>\r\n);\r\n\r\nconst ToolbarSeparator: React.FC = () => (\r\n <div\r\n style={{\r\n width: '1px',\r\n height: '24px',\r\n backgroundColor: '#ccc',\r\n margin: '0 4px',\r\n alignSelf: 'center',\r\n }}\r\n />\r\n);\r\n\r\nconst Toolbar: React.FC<ToolbarProps> = ({ \r\n items, \r\n className, \r\n onViewOutput, \r\n onEditLink,\r\n searchQuery: propSearchQuery = '',\r\n searchMatches: propSearchMatches = [],\r\n currentMatchIndex: propCurrentMatchIndex = 0,\r\n onSearchQueryChange,\r\n onSearchMatchesChange,\r\n onCurrentMatchIndexChange,\r\n isFullscreen = false,\r\n onFullscreenToggle,\r\n}) => {\r\n const editor = useSlate();\r\n const [showLinkModal, setShowLinkModal] = useState(false);\r\n const [linkText, setLinkText] = useState('');\r\n const [linkUrl, setLinkUrl] = useState('');\r\n const [linkTitle, setLinkTitle] = useState('');\r\n const [linkTarget, setLinkTarget] = useState<'_self' | '_blank'>('_self');\r\n const [isEditingLink, setIsEditingLink] = useState(false);\r\n const [showLinkContextMenu, setShowLinkContextMenu] = useState(false);\r\n const [contextMenuPosition, setContextMenuPosition] = useState({ x: 0, y: 0 });\r\n \r\n const [showImageModal, setShowImageModal] = useState(false);\r\n const [imageUrl, setImageUrl] = useState('');\r\n const [imageAlt, setImageAlt] = useState('');\r\n const [imageFile, setImageFile] = useState<File | null>(null);\r\n const [imageUploadError, setImageUploadError] = useState('');\r\n const [isReplacingImage, setIsReplacingImage] = useState(false);\r\n const [replacingImagePath, setReplacingImagePath] = useState<any>(null);\r\n\r\n const [showTableModal, setShowTableModal] = useState(false);\r\n const [tableRows, setTableRows] = useState(3);\r\n const [tableCols, setTableCols] = useState(3);\r\n\r\n const [showFindReplace, setShowFindReplace] = useState(false);\r\n const [replaceText, setReplaceText] = useState('');\r\n const [totalMatches, setTotalMatches] = useState(0);\r\n \r\n const searchQuery = propSearchQuery;\r\n const searchMatches = propSearchMatches;\r\n const currentMatchIndex = propCurrentMatchIndex;\r\n\r\n const handleMarkToggle = (event: React.MouseEvent, format: FormatType) => {\r\n event.preventDefault();\r\n toggleMark(editor, format);\r\n };\r\n\r\n const handleBlockToggle = (event: React.MouseEvent, format: BlockType) => {\r\n event.preventDefault();\r\n toggleBlock(editor, format);\r\n };\r\n\r\n const handleAlignmentToggle = (event: React.MouseEvent, alignment: AlignmentType) => {\r\n event.preventDefault();\r\n toggleAlignment(editor, alignment);\r\n };\r\n\r\n const handleIndent = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n indentListItem(editor);\r\n };\r\n\r\n const handleOutdent = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n outdentListItem(editor);\r\n };\r\n\r\n const handleUndo = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n HistoryEditor.undo(editor as HistoryEditor);\r\n };\r\n\r\n const handleRedo = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n HistoryEditor.redo(editor as HistoryEditor);\r\n };\r\n\r\n const handleLinkToggle = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n const selection = editor.selection;\r\n if (selection) {\r\n const selectedText = Editor.string(editor, selection);\r\n setLinkText(selectedText);\r\n } else {\r\n setLinkText('');\r\n }\r\n setLinkUrl('');\r\n setLinkTitle('');\r\n setLinkTarget('_self');\r\n setIsEditingLink(false);\r\n setShowLinkModal(true);\r\n };\r\n\r\n const handleInsertLink = () => {\r\n if (!linkUrl.trim()) {\r\n alert('URL is required');\r\n return;\r\n }\r\n\r\n try {\r\n new URL(linkUrl);\r\n } catch {\r\n alert('Please enter a valid URL (e.g., https://example.com)');\r\n return;\r\n }\r\n\r\n if (isEditingLink) {\r\n Transforms.setNodes(\r\n editor,\r\n { \r\n url: linkUrl,\r\n title: linkTitle || undefined,\r\n target: linkTarget\r\n } as Partial<LinkElement>,\r\n {\r\n match: (n: any) => n.type === 'link'\r\n }\r\n );\r\n \r\n if (linkText.trim() && editor.selection) {\r\n Transforms.delete(editor, { at: editor.selection });\r\n Transforms.insertText(editor, linkText, { at: editor.selection });\r\n }\r\n } else {\r\n if (linkText.trim()) {\r\n if (editor.selection) {\r\n Transforms.delete(editor);\r\n }\r\n Transforms.insertNodes(editor, {\r\n type: 'link',\r\n url: linkUrl,\r\n title: linkTitle || undefined,\r\n target: linkTarget,\r\n children: [{ text: linkText }],\r\n } as any);\r\n Transforms.move(editor);\r\n } else if (editor.selection && !Range.isCollapsed(editor.selection)) {\r\n insertLink(editor, linkUrl, linkTitle || undefined, linkTarget);\r\n } else {\r\n Transforms.insertNodes(editor, {\r\n type: 'link',\r\n url: linkUrl,\r\n title: linkTitle || undefined,\r\n target: linkTarget,\r\n children: [{ text: linkUrl }],\r\n } as any);\r\n Transforms.move(editor);\r\n }\r\n }\r\n\r\n setShowLinkModal(false);\r\n setLinkText('');\r\n setLinkUrl('');\r\n setLinkTitle('');\r\n setLinkTarget('_self');\r\n setIsEditingLink(false);\r\n };\r\n\r\n const handleImageToggle = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n setImageUrl('');\r\n setImageAlt('');\r\n setImageFile(null);\r\n setImageUploadError('');\r\n setIsReplacingImage(false);\r\n setReplacingImagePath(null);\r\n setShowImageModal(true);\r\n };\r\n\r\n const handleInsertImage = async () => {\r\n setImageUploadError('');\r\n \r\n if (imageFile) {\r\n const editiumProps = (window as any).__editiumProps;\r\n if (!editiumProps?.onImageUpload) {\r\n setImageUploadError('Upload not configured. Please define onImageUpload in your app.');\r\n return;\r\n }\r\n \r\n try {\r\n const uploadedUrl = await editiumProps.onImageUpload(imageFile);\r\n \r\n if (isReplacingImage && replacingImagePath) {\r\n Transforms.setNodes(\r\n editor,\r\n { \r\n url: uploadedUrl,\r\n alt: imageAlt || imageFile.name\r\n } as Partial<ImageElement>,\r\n { at: replacingImagePath }\r\n );\r\n } else {\r\n insertImage(editor, uploadedUrl, imageAlt || imageFile.name);\r\n }\r\n \r\n setShowImageModal(false);\r\n setImageUrl('');\r\n setImageAlt('');\r\n setImageFile(null);\r\n setIsReplacingImage(false);\r\n setReplacingImagePath(null);\r\n } catch (error) {\r\n setImageUploadError('Failed to upload image: ' + (error as Error).message);\r\n }\r\n return;\r\n }\r\n \r\n if (!imageUrl.trim()) {\r\n setImageUploadError('Please enter an image URL or select a file');\r\n return;\r\n }\r\n\r\n if (!isValidImageUrl(imageUrl)) {\r\n setImageUploadError('Please enter a valid image URL');\r\n return;\r\n }\r\n\r\n if (isReplacingImage && replacingImagePath) {\r\n Transforms.setNodes(\r\n editor,\r\n { \r\n url: imageUrl,\r\n alt: imageAlt || 'Image'\r\n } as Partial<ImageElement>,\r\n { at: replacingImagePath }\r\n );\r\n } else {\r\n insertImage(editor, imageUrl, imageAlt || 'Image');\r\n }\r\n \r\n setShowImageModal(false);\r\n setImageUrl('');\r\n setImageAlt('');\r\n setImageFile(null);\r\n setIsReplacingImage(false);\r\n setReplacingImagePath(null);\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const file = e.target.files?.[0];\r\n if (file) {\r\n if (!file.type.startsWith('image/')) {\r\n setImageUploadError('Please select an image file');\r\n return;\r\n }\r\n if (file.size > 5 * 1024 * 1024) {\r\n setImageUploadError('Image size should be less than 5MB');\r\n return;\r\n }\r\n setImageFile(file);\r\n setImageUploadError('');\r\n }\r\n };\r\n\r\n const handleTableToggle = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n setShowTableModal(true);\r\n setTableRows(3);\r\n setTableCols(3);\r\n };\r\n\r\n const handleInsertTable = () => {\r\n insertTable(editor, tableRows, tableCols);\r\n setShowTableModal(false);\r\n };\r\n\r\n const handleFindReplaceToggle = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n setShowFindReplace(!showFindReplace);\r\n if (!showFindReplace) {\r\n onSearchQueryChange?.('');\r\n setReplaceText('');\r\n onCurrentMatchIndexChange?.(0);\r\n onSearchMatchesChange?.([]);\r\n setTotalMatches(0);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!searchQuery || !showFindReplace) {\r\n onSearchMatchesChange?.([]);\r\n setTotalMatches(0);\r\n onCurrentMatchIndexChange?.(0);\r\n return;\r\n }\r\n\r\n const matches = findAllMatches(editor, searchQuery);\r\n onSearchMatchesChange?.(matches);\r\n setTotalMatches(matches.length);\r\n \r\n if (matches.length > 0) {\r\n onCurrentMatchIndexChange?.(0);\r\n navigateToMatch(editor, matches[0]);\r\n } else {\r\n onCurrentMatchIndexChange?.(0);\r\n }\r\n }, [searchQuery, showFindReplace, editor, onSearchMatchesChange, onCurrentMatchIndexChange]);\r\n\r\n const handleNextMatch = () => {\r\n if (searchMatches.length === 0) return;\r\n \r\n const nextIndex = (currentMatchIndex + 1) % searchMatches.length;\r\n onCurrentMatchIndexChange?.(nextIndex);\r\n navigateToMatch(editor, searchMatches[nextIndex]);\r\n };\r\n\r\n const handlePrevMatch = () => {\r\n if (searchMatches.length === 0) return;\r\n \r\n const prevIndex = currentMatchIndex === 0 ? searchMatches.length - 1 : currentMatchIndex - 1;\r\n onCurrentMatchIndexChange?.(prevIndex);\r\n navigateToMatch(editor, searchMatches[prevIndex]);\r\n };\r\n\r\n const handleReplace = () => {\r\n if (searchMatches.length === 0 || currentMatchIndex >= searchMatches.length) return;\r\n \r\n replaceMatch(editor, searchMatches[currentMatchIndex], replaceText);\r\n \r\n const matches = findAllMatches(editor, searchQuery);\r\n onSearchMatchesChange?.(matches);\r\n };\r\n\r\n const handleReplaceAll = () => {\r\n if (searchMatches.length === 0) return;\r\n \r\n replaceAllMatches(editor, searchMatches, replaceText);\r\n \r\n onSearchQueryChange?.('');\r\n setTimeout(() => {\r\n onSearchQueryChange?.('');\r\n setReplaceText('');\r\n onSearchMatchesChange?.([]);\r\n setTotalMatches(0);\r\n onCurrentMatchIndexChange?.(0);\r\n }, 50);\r\n };\r\n\r\n React.useEffect(() => {\r\n const handleExternalEdit = (linkData: { url: string; title?: string; target?: '_blank' | '_self'; text: string; path?: any }) => {\r\n setLinkText(linkData.text);\r\n setLinkUrl(linkData.url);\r\n setLinkTitle(linkData.title || '');\r\n setLinkTarget(linkData.target || '_self');\r\n setIsEditingLink(true);\r\n setShowLinkModal(true);\r\n \r\n if (linkData.path) {\r\n editor.selection = Editor.range(editor, linkData.path);\r\n }\r\n };\r\n \r\n (window as any).__editiumLinkEditHandler = handleExternalEdit;\r\n \r\n return () => {\r\n delete (window as any).__editiumLinkEditHandler;\r\n };\r\n }, [editor]);\r\n\r\n React.useEffect(() => {\r\n const handleImageReplace = (imageData: { url: string; alt?: string; width?: number; height?: number; align?: any; path: any }) => {\r\n setImageUrl(imageData.url);\r\n setImageAlt(imageData.alt || '');\r\n setImageFile(null);\r\n setImageUploadError('');\r\n setIsReplacingImage(true);\r\n setReplacingImagePath(imageData.path);\r\n setShowImageModal(true);\r\n };\r\n \r\n (window as any).__editiumImageReplaceHandler = handleImageReplace;\r\n \r\n return () => {\r\n delete (window as any).__editiumImageReplaceHandler;\r\n };\r\n }, []);\r\n\r\n const blockFormattingItems = ['paragraph', 'heading-one', 'heading-two', 'heading-three', 'heading-four', 'heading-five', 'heading-six', 'heading-seven', 'heading-eight'];\r\n const alignmentItems = ['left', 'center', 'right', 'justify'];\r\n const formatItems = ['bold', 'italic', 'underline', 'strikethrough', 'code', 'superscript', 'subscript'];\r\n const listItems = ['bulleted-list', 'numbered-list', 'indent', 'outdent'];\r\n const blockItems = ['blockquote', 'code-block'];\r\n const colorItems = ['text-color', 'bg-color'];\r\n const insertItems = ['link', 'horizontal-rule', 'image', 'table'];\r\n const editItems = ['undo', 'redo'];\r\n \r\n const colorPalette = [\r\n { name: 'Black', value: '#000000' },\r\n { name: 'Dark Gray', value: '#495057' },\r\n { name: 'Gray', value: '#6c757d' },\r\n { name: 'Light Gray', value: '#adb5bd' },\r\n { name: 'Red', value: '#dc3545' },\r\n { name: 'Orange', value: '#fd7e14' },\r\n { name: 'Yellow', value: '#ffc107' },\r\n { name: 'Green', value: '#28a745' },\r\n { name: 'Teal', value: '#20c997' },\r\n { name: 'Blue', value: '#007bff' },\r\n { name: 'Indigo', value: '#6610f2' },\r\n { name: 'Purple', value: '#6f42c1' },\r\n { name: 'Pink', value: '#e83e8c' },\r\n { name: 'White', value: '#ffffff' },\r\n ];\r\n\r\n const renderToolbarItem = (item: ToolbarItem, index: number) => {\r\n if (item === 'separator') {\r\n const prevItem = index > 0 ? items[index - 1] : null;\r\n if (prevItem) {\r\n if (formatItems.includes(prevItem)) {\r\n const firstFormatIndex = items.findIndex(i => formatItems.includes(i));\r\n if (firstFormatIndex !== index - 1) return null;\r\n }\r\n if (listItems.includes(prevItem)) {\r\n const firstListIndex = items.findIndex(i => listItems.includes(i));\r\n if (firstListIndex !== index - 1) return null;\r\n }\r\n if (alignmentItems.includes(prevItem)) {\r\n const firstAlignIndex = items.findIndex(i => alignmentItems.includes(i));\r\n if (firstAlignIndex !== index - 1) return null;\r\n }\r\n if (blockFormattingItems.includes(prevItem)) {\r\n const firstBlockIndex = items.findIndex(i => blockFormattingItems.includes(i));\r\n if (firstBlockIndex !== index - 1) return null;\r\n }\r\n if (insertItems.includes(prevItem)) {\r\n const firstInsertIndex = items.findIndex(i => insertItems.includes(i));\r\n if (firstInsertIndex !== index - 1) return null;\r\n }\r\n if (editItems.includes(prevItem)) {\r\n const firstEditIndex = items.findIndex(i => editItems.includes(i));\r\n if (firstEditIndex !== index - 1) return null;\r\n }\r\n }\r\n return <ToolbarSeparator key={`separator-${index}`} />;\r\n }\r\n \r\n if (blockFormattingItems.includes(item)) {\r\n const firstBlockIndex = items.findIndex(i => blockFormattingItems.includes(i));\r\n const currentIndex = items.findIndex(i => i === item);\r\n \r\n if (firstBlockIndex !== currentIndex) {\r\n return null; // Skip rendering individual block formatting buttons\r\n }\r\n \r\n const activeBlock = blockFormattingItems.find(block => \r\n items.includes(block as ToolbarItem) && isBlockActive(editor, block as BlockType)\r\n );\r\n \r\n const getBlockLabel = (block: string) => {\r\n switch (block) {\r\n case 'paragraph': return 'Paragraph';\r\n case 'heading-one': return 'Heading 1';\r\n case 'heading-two': return 'Heading 2';\r\n case 'heading-three': return 'Heading 3';\r\n case 'heading-four': return 'Heading 4';\r\n case 'heading-five': return 'Heading 5';\r\n case 'heading-six': return 'Heading 6';\r\n case 'heading-seven': return 'Heading 7';\r\n case 'heading-eight': return 'Heading 8';\r\n default: return 'Format';\r\n }\r\n };\r\n \r\n const getBlockShort = (block: string) => {\r\n switch (block) {\r\n case 'paragraph': return 'P';\r\n case 'heading-one': return 'H1';\r\n case 'heading-two': return 'H2';\r\n case 'heading-three': return 'H3';\r\n case 'heading-four': return 'H4';\r\n case 'heading-five': return 'H5';\r\n case 'heading-six': return 'H6';\r\n case 'heading-seven': return 'H7';\r\n case 'heading-eight': return 'H8';\r\n default: return 'T';\r\n }\r\n };\r\n \r\n return (\r\n <Dropdown\r\n key=\"block-formatting-dropdown\"\r\n trigger={<span>{activeBlock ? getBlockLabel(activeBlock) : 'Paragraph'}</span>}\r\n title=\"Block format\"\r\n >\r\n {items.filter(i => blockFormattingItems.includes(i)).map(block => (\r\n <DropdownItem\r\n key={block}\r\n active={isBlockActive(editor, block as BlockType)}\r\n onMouseDown={(e) => handleBlockToggle(e, block as BlockType)}\r\n >\r\n {getBlockLabel(block)}\r\n </DropdownItem>\r\n ))}\r\n </Dropdown>\r\n );\r\n }\r\n\r\n if (alignmentItems.includes(item)) {\r\n const firstAlignIndex = items.findIndex(i => alignmentItems.includes(i));\r\n const currentIndex = items.findIndex(i => i === item);\r\n \r\n if (firstAlignIndex !== currentIndex) {\r\n return null; // Skip rendering individual alignment buttons\r\n }\r\n \r\n const activeAlignment = alignmentItems.find(align => \r\n items.includes(align as ToolbarItem) && isAlignmentActive(editor, align as AlignmentType)\r\n );\r\n \r\n const getAlignmentIcon = (align: string) => {\r\n switch (align) {\r\n case 'left': \r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1px', width: '16px', height: '16px' }}>\r\n <div style={{ width: '12px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n <div style={{ width: '8px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n <div style={{ width: '10px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n </div>\r\n );\r\n case 'center': \r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1px', width: '16px', height: '16px', alignItems: 'center' }}>\r\n <div style={{ width: '10px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n <div style={{ width: '6px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n <div style={{ width: '8px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n </div>\r\n );\r\n case 'right': \r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1px', width: '16px', height: '16px', alignItems: 'flex-end' }}>\r\n <div style={{ width: '12px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n <div style={{ width: '8px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n <div style={{ width: '10px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n </div>\r\n );\r\n case 'justify': \r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1px', width: '16px', height: '16px' }}>\r\n <div style={{ width: '100%', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n <div style={{ width: '100%', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n <div style={{ width: '100%', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n </div>\r\n );\r\n default: \r\n return (\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1px', width: '16px', height: '16px' }}>\r\n <div style={{ width: '12px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n <div style={{ width: '8px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n <div style={{ width: '10px', height: '2px', backgroundColor: 'currentColor' }}></div>\r\n </div>\r\n );\r\n }\r\n };\r\n \r\n const getAlignmentLabel = (align: string) => {\r\n switch (align) {\r\n case 'left': return 'Align Left';\r\n case 'center': return 'Align Center';\r\n case 'right': return 'Align Right';\r\n case 'justify': return 'Justify';\r\n default: return 'Align';\r\n }\r\n };\r\n \r\n return (\r\n <Dropdown\r\n key=\"alignment-dropdown\"\r\n trigger={<span>Align</span>}\r\n title=\"Text alignment\"\r\n >\r\n {items.filter(i => alignmentItems.includes(i)).map(align => (\r\n <DropdownItem\r\n key={align}\r\n active={isAlignmentActive(editor, align as AlignmentType)}\r\n onMouseDown={(e) => handleAlignmentToggle(e, align as AlignmentType)}\r\n icon={getAlignmentIcon(align)}\r\n >\r\n {getAlignmentLabel(align)}\r\n </DropdownItem>\r\n ))}\r\n </Dropdown>\r\n );\r\n }\r\n\r\n switch (item) {\r\n case 'bold':\r\n case 'italic':\r\n case 'underline':\r\n case 'strikethrough':\r\n case 'code':\r\n case 'superscript':\r\n case 'subscript': {\r\n const formatItems = ['bold', 'italic', 'underline', 'strikethrough', 'code', 'superscript', 'subscript'];\r\n const firstFormatIndex = items.findIndex(i => formatItems.includes(i));\r\n const currentIndex = items.findIndex(i => i === item);\r\n \r\n if (firstFormatIndex !== currentIndex) return null;\r\n \r\n return (\r\n <Dropdown\r\n key=\"format-menu\"\r\n trigger={<span>Format</span>}\r\n title=\"Format\"\r\n >\r\n {items.includes('bold') && (\r\n <DropdownItem\r\n active={isMarkActive(editor, 'bold')}\r\n onMouseDown={(e) => handleMarkToggle(e, 'bold')}\r\n icon={<span style={{ fontWeight: 'bold', fontSize: '16px' }}>B</span>}\r\n >\r\n Bold\r\n </DropdownItem>\r\n )}\r\n {items.includes('italic') && (\r\n <DropdownItem\r\n active={isMarkActive(editor, 'italic')}\r\n onMouseDown={(e) => handleMarkToggle(e, 'italic')}\r\n icon={<span style={{ fontStyle: 'italic', fontSize: '16px' }}>I</span>}\r\n >\r\n Italic\r\n </DropdownItem>\r\n )}\r\n {items.includes('underline') && (\r\n <DropdownItem\r\n active={isMarkActive(editor, 'underline')}\r\n onMouseDown={(e) => handleMarkToggle(e, 'underline')}\r\n icon={<span style={{ textDecoration: 'underline', fontSize: '16px' }}>U</span>}\r\n >\r\n Underline\r\n </DropdownItem>\r\n )}\r\n {items.includes('strikethrough') && (\r\n <DropdownItem\r\n active={isMarkActive(editor, 'strikethrough')}\r\n onMouseDown={(e) => handleMarkToggle(e, 'strikethrough')}\r\n icon={<span style={{ textDecoration: 'line-through', fontSize: '16px' }}>S</span>}\r\n >\r\n Strikethrough\r\n </DropdownItem>\r\n )}\r\n {items.includes('code') && (\r\n <DropdownItem\r\n active={isMarkActive(editor, 'code')}\r\n onMouseDown={(e) => handleMarkToggle(e, 'code')}\r\n icon={<CodeBracketIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Code\r\n </DropdownItem>\r\n )}\r\n {items.includes('superscript') && (\r\n <DropdownItem\r\n active={isMarkActive(editor, 'superscript')}\r\n onMouseDown={(e) => handleMarkToggle(e, 'superscript')}\r\n icon={<span style={{ fontSize: '12px' }}>X<sup>2</sup></span>}\r\n >\r\n Superscript\r\n </DropdownItem>\r\n )}\r\n {items.includes('subscript') && (\r\n <DropdownItem\r\n active={isMarkActive(editor, 'subscript')}\r\n onMouseDown={(e) => handleMarkToggle(e, 'subscript')}\r\n icon={<span style={{ fontSize: '12px' }}>X<sub>2</sub></span>}\r\n >\r\n Subscript\r\n </DropdownItem>\r\n )}\r\n </Dropdown>\r\n );\r\n }\r\n \r\n case 'bulleted-list':\r\n case 'numbered-list':\r\n case 'indent':\r\n case 'outdent': {\r\n const listItems = ['bulleted-list', 'numbered-list', 'indent', 'outdent'];\r\n const firstListIndex = items.findIndex(i => listItems.includes(i));\r\n const currentIndex = items.findIndex(i => i === item);\r\n \r\n if (firstListIndex !== currentIndex) return null;\r\n \r\n return (\r\n <Dropdown\r\n key=\"lists-menu\"\r\n trigger={<span>Lists</span>}\r\n title=\"Lists\"\r\n >\r\n {items.includes('bulleted-list') && (\r\n <DropdownItem\r\n active={isBlockActive(editor, 'bulleted-list')}\r\n onMouseDown={(e) => handleBlockToggle(e, 'bulleted-list')}\r\n icon={<ListBulletIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Bullet list\r\n </DropdownItem>\r\n )}\r\n {items.includes('numbered-list') && (\r\n <DropdownItem\r\n active={isBlockActive(editor, 'numbered-list')}\r\n onMouseDown={(e) => handleBlockToggle(e, 'numbered-list')}\r\n icon={<span style={{ fontSize: '14px', fontWeight: '600' }}>1.</span>}\r\n >\r\n Numbered list\r\n </DropdownItem>\r\n )}\r\n {items.includes('indent') && (\r\n <DropdownItem\r\n active={false}\r\n onMouseDown={handleIndent}\r\n icon={<ArrowRightIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Increase indent\r\n </DropdownItem>\r\n )}\r\n {items.includes('outdent') && (\r\n <DropdownItem\r\n active={false}\r\n onMouseDown={handleOutdent}\r\n icon={<ArrowLeftIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Decrease indent\r\n </DropdownItem>\r\n )}\r\n </Dropdown>\r\n );\r\n }\r\n \r\n case 'blockquote':\r\n case 'code-block': {\r\n const firstBlockItemIndex = items.findIndex(i => blockItems.includes(i));\r\n const currentIndex = items.findIndex(i => i === item);\r\n \r\n if (firstBlockItemIndex !== currentIndex) return null;\r\n \r\n return (\r\n <Dropdown\r\n key=\"blocks-menu\"\r\n trigger={<span>Blocks</span>}\r\n title=\"Blocks\"\r\n >\r\n {items.includes('blockquote') && (\r\n <DropdownItem\r\n active={isBlockActive(editor, 'blockquote')}\r\n onMouseDown={(e) => handleBlockToggle(e, 'blockquote')}\r\n icon={<span style={{ fontSize: '16px', fontWeight: 'bold' }}>❝</span>}\r\n >\r\n Blockquote\r\n </DropdownItem>\r\n )}\r\n {items.includes('code-block') && (\r\n <DropdownItem\r\n active={isBlockActive(editor, 'code-block')}\r\n onMouseDown={(e) => handleBlockToggle(e, 'code-block')}\r\n icon={<CodeBracketIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Code Block\r\n </DropdownItem>\r\n )}\r\n </Dropdown>\r\n );\r\n }\r\n \r\n case 'text-color':\r\n case 'bg-color': {\r\n const firstColorIndex = items.findIndex(i => colorItems.includes(i));\r\n const currentIndex = items.findIndex(i => i === item);\r\n \r\n if (firstColorIndex !== currentIndex) return null;\r\n \r\n const activeTextColor = getActiveColor(editor);\r\n const activeBgColor = getActiveBackgroundColor(editor);\r\n \r\n return (\r\n <Dropdown\r\n key=\"color-menu\"\r\n trigger={<span>Color</span>}\r\n title=\"Color\"\r\n >\r\n {items.includes('text-color') && (\r\n <div style={{ padding: '8px 12px' }}>\r\n <div style={{ \r\n fontSize: '12px', \r\n fontWeight: '600', \r\n marginBottom: '8px',\r\n color: '#495057'\r\n }}>\r\n Text Color\r\n </div>\r\n <div style={{ \r\n display: 'grid', \r\n gridTemplateColumns: 'repeat(7, 1fr)', \r\n gap: '4px',\r\n marginBottom: '8px'\r\n }}>\r\n {colorPalette.map((color) => (\r\n <button\r\n key={`text-${color.value}`}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n applyColor(editor, color.value);\r\n }}\r\n title={color.name}\r\n style={{\r\n width: '24px',\r\n height: '24px',\r\n backgroundColor: color.value,\r\n border: activeTextColor === color.value ? '2px solid #007bff' : '1px solid #dee2e6',\r\n borderRadius: '3px',\r\n cursor: 'pointer',\r\n padding: 0,\r\n boxShadow: color.value === '#ffffff' ? 'inset 0 0 0 1px #dee2e6' : 'none'\r\n }}\r\n />\r\n ))}\r\n </div>\r\n <div style={{ \r\n display: 'flex', \r\n alignItems: 'center', \r\n gap: '6px',\r\n marginBottom: '8px',\r\n paddingTop: '4px'\r\n }}>\r\n <input\r\n type=\"color\"\r\n value={activeTextColor || '#000000'}\r\n onChange={(e) => {\r\n applyColor(editor, e.target.value);\r\n }}\r\n title=\"Pick custom color\"\r\n style={{\r\n width: '24px',\r\n height: '24px',\r\n border: '1px solid #dee2e6',\r\n borderRadius: '3px',\r\n cursor: 'pointer',\r\n padding: '0',\r\n backgroundColor: 'transparent'\r\n }}\r\n />\r\n <span style={{ \r\n fontSize: '12px', \r\n color: '#6c757d'\r\n }}>\r\n Custom\r\n </span>\r\n </div>\r\n <button\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n applyColor(editor, null);\r\n }}\r\n style={{\r\n width: '100%',\r\n padding: '4px 8px',\r\n fontSize: '12px',\r\n border: '1px solid #dee2e6',\r\n borderRadius: '3px',\r\n backgroundColor: 'transparent',\r\n cursor: 'pointer',\r\n color: '#495057'\r\n }}\r\n >\r\n Remove Color\r\n </button>\r\n </div>\r\n )}\r\n {items.includes('bg-color') && (\r\n <div style={{ padding: '8px 12px', borderTop: '1px solid #dee2e6' }}>\r\n <div style={{ \r\n fontSize: '12px', \r\n fontWeight: '600', \r\n marginBottom: '8px',\r\n color: '#495057'\r\n }}>\r\n Background Highlight\r\n </div>\r\n <div style={{ \r\n display: 'grid', \r\n gridTemplateColumns: 'repeat(7, 1fr)', \r\n gap: '4px',\r\n marginBottom: '8px'\r\n }}>\r\n {colorPalette.map((color) => (\r\n <button\r\n key={`bg-${color.value}`}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n applyBackgroundColor(editor, color.value);\r\n }}\r\n title={color.name}\r\n style={{\r\n width: '24px',\r\n height: '24px',\r\n backgroundColor: color.value,\r\n border: activeBgColor === color.value ? '2px solid #007bff' : '1px solid #dee2e6',\r\n borderRadius: '3px',\r\n cursor: 'pointer',\r\n padding: 0,\r\n boxShadow: color.value === '#ffffff' ? 'inset 0 0 0 1px #dee2e6' : 'none'\r\n }}\r\n />\r\n ))}\r\n </div>\r\n <div style={{ \r\n display: 'flex', \r\n alignItems: 'center', \r\n gap: '6px',\r\n marginBottom: '8px',\r\n paddingTop: '4px'\r\n }}>\r\n <input\r\n type=\"color\"\r\n value={activeBgColor || '#ffffff'}\r\n onChange={(e) => {\r\n applyBackgroundColor(editor, e.target.value);\r\n }}\r\n title=\"Pick custom color\"\r\n style={{\r\n width: '24px',\r\n height: '24px',\r\n border: '1px solid #dee2e6',\r\n borderRadius: '3px',\r\n cursor: 'pointer',\r\n padding: '0',\r\n backgroundColor: 'transparent'\r\n }}\r\n />\r\n <span style={{ \r\n fontSize: '12px', \r\n color: '#6c757d'\r\n }}>\r\n Custom\r\n </span>\r\n </div>\r\n <button\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n applyBackgroundColor(editor, null);\r\n }}\r\n style={{\r\n width: '100%',\r\n padding: '4px 8px',\r\n fontSize: '12px',\r\n border: '1px solid #dee2e6',\r\n borderRadius: '3px',\r\n backgroundColor: 'transparent',\r\n cursor: 'pointer',\r\n color: '#495057'\r\n }}\r\n >\r\n Remove Highlight\r\n </button>\r\n </div>\r\n )}\r\n </Dropdown>\r\n );\r\n }\r\n \r\n case 'link':\r\n case 'horizontal-rule':\r\n case 'image':\r\n case 'table': {\r\n const firstInsertIndex = items.findIndex(i => insertItems.includes(i));\r\n const currentIndex = items.findIndex(i => i === item);\r\n \r\n if (firstInsertIndex !== currentIndex) return null;\r\n \r\n return (\r\n <Dropdown\r\n key=\"insert-menu\"\r\n trigger={<span>Insert</span>}\r\n title=\"Insert\"\r\n >\r\n {items.includes('link') && (\r\n <DropdownItem\r\n active={isLinkActive(editor)}\r\n onMouseDown={handleLinkToggle}\r\n icon={<LinkIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Link\r\n </DropdownItem>\r\n )}\r\n {items.includes('image') && (\r\n <DropdownItem\r\n active={false}\r\n onMouseDown={handleImageToggle}\r\n icon={<PhotoIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Image\r\n </DropdownItem>\r\n )}\r\n {items.includes('table') && (\r\n <DropdownItem\r\n active={false}\r\n onMouseDown={handleTableToggle}\r\n icon={<TableCellsIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Table\r\n </DropdownItem>\r\n )}\r\n {items.includes('horizontal-rule') && (\r\n <DropdownItem\r\n active={false}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n insertHorizontalRule(editor);\r\n }}\r\n icon={<span style={{ fontSize: '16px', fontWeight: 'bold' }}>―</span>}\r\n >\r\n Horizontal Rule\r\n </DropdownItem>\r\n )}\r\n </Dropdown>\r\n );\r\n }\r\n \r\n case 'undo':\r\n case 'redo': {\r\n const firstEditIndex = items.findIndex(i => editItems.includes(i));\r\n const currentIndex = items.findIndex(i => i === item);\r\n \r\n if (firstEditIndex !== currentIndex) return null;\r\n \r\n return (\r\n <Dropdown\r\n key=\"edit-menu\"\r\n trigger={<span>Edit</span>}\r\n title=\"Edit\"\r\n >\r\n {items.includes('undo') && (\r\n <DropdownItem\r\n active={false}\r\n onMouseDown={handleUndo}\r\n icon={<ArrowUturnLeftIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Undo\r\n </DropdownItem>\r\n )}\r\n {items.includes('redo') && (\r\n <DropdownItem\r\n active={false}\r\n onMouseDown={handleRedo}\r\n icon={<ArrowUturnRightIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Redo\r\n </DropdownItem>\r\n )}\r\n </Dropdown>\r\n );\r\n }\r\n case 'view-output':\r\n return (\r\n <Dropdown\r\n key={item}\r\n trigger={<span>View</span>}\r\n title=\"View Output\"\r\n >\r\n <DropdownItem\r\n active={false}\r\n onMouseDown={(event) => {\r\n event.preventDefault();\r\n if (onViewOutput) {\r\n onViewOutput('preview');\r\n }\r\n }}\r\n icon={<ArrowTopRightOnSquareIcon style={{ width: '16px', height: '16px' }} />}\r\n >\r\n Preview\r\n </DropdownItem>\r\n <DropdownItem\r\n active={false}\r\n onMouseDown={(event) => {\r\n event.preventDefault();\r\n if (onViewOutput) {\r\n onViewOutput('html');\r\n }\r\n }}\r\n icon={<span style={{ fontFamily: 'monospace', fontSize: '14px' }}></></span>}\r\n >\r\n View HTML\r\n </DropdownItem>\r\n <DropdownItem\r\n active={false}\r\n onMouseDown={(event) => {\r\n event.preventDefault();\r\n if (onViewOutput) {\r\n onViewOutput('json');\r\n }\r\n }}\r\n icon={<span style={{ fontFamily: 'monospace', fontSize: '14px' }}>{ }</span>}\r\n >\r\n View JSON\r\n </DropdownItem>\r\n </Dropdown>\r\n );\r\n case 'find-replace':\r\n return (\r\n <ToolbarButton\r\n key={item}\r\n active={showFindReplace}\r\n onMouseDown={handleFindReplaceToggle}\r\n title=\"Find & Replace\"\r\n >\r\n <MagnifyingGlassIcon style={{ width: '18px', height: '18px' }} />\r\n </ToolbarButton>\r\n );\r\n case 'fullscreen':\r\n return (\r\n <ToolbarButton\r\n key={item}\r\n active={isFullscreen}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n onFullscreenToggle?.();\r\n }}\r\n title={isFullscreen ? \"Exit Fullscreen (Esc)\" : \"Enter Fullscreen (F11)\"}\r\n >\r\n {isFullscreen ? (\r\n <ArrowsPointingInIcon style={{ width: '18px', height: '18px' }} />\r\n ) : (\r\n <ArrowsPointingOutIcon style={{ width: '18px', height: '18px' }} />\r\n )}\r\n </ToolbarButton>\r\n );\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {showLinkModal && (\r\n <div\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n zIndex: 10000,\r\n }}\r\n onClick={() => {\r\n setShowLinkModal(false);\r\n setLinkText('');\r\n setLinkUrl('');\r\n setLinkTitle('');\r\n setLinkTarget('_self');\r\n setIsEditingLink(false);\r\n }}\r\n >\r\n <div\r\n style={{\r\n backgroundColor: '#ffffff',\r\n borderRadius: '8px',\r\n padding: '24px',\r\n width: '90%',\r\n maxWidth: '500px',\r\n boxShadow: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <h3 style={{ margin: '0 0 20px 0', color: '#111827', fontSize: '20px', fontWeight: '600' }}>\r\n {isEditingLink ? 'Edit Link' : 'Insert Link'}\r\n </h3>\r\n \r\n <div style={{ marginBottom: '16px' }}>\r\n <label style={{ display: 'block', marginBottom: '8px', color: '#374151', fontSize: '14px', fontWeight: '500' }}>\r\n Text to display\r\n </label>\r\n <input\r\n type=\"text\"\r\n value={linkText}\r\n onChange={(e) => setLinkText(e.target.value)}\r\n placeholder=\"Enter link text\"\r\n style={{\r\n width: '100%',\r\n padding: '8px 12px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n fontSize: '14px',\r\n outline: 'none',\r\n boxSizing: 'border-box',\r\n }}\r\n onFocus={(e) => e.target.style.borderColor = '#3b82f6'}\r\n onBlur={(e) => e.target.style.borderColor = '#d1d5db'}\r\n />\r\n <small style={{ display: 'block', marginTop: '4px', color: '#6b7280', fontSize: '12px' }}>\r\n If empty, will use URL or selected text as display text\r\n </small>\r\n </div>\r\n \r\n <div style={{ marginBottom: '16px' }}>\r\n <label style={{ display: 'block', marginBottom: '8px', color: '#374151', fontSize: '14px', fontWeight: '500' }}>\r\n URL <span style={{ color: '#ef4444' }}>*</span>\r\n </label>\r\n <input\r\n type=\"url\"\r\n value={linkUrl}\r\n onChange={(e) => setLinkUrl(e.target.value)}\r\n placeholder=\"https://example.com\"\r\n style={{\r\n width: '100%',\r\n padding: '8px 12px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n fontSize: '14px',\r\n outline: 'none',\r\n boxSizing: 'border-box',\r\n }}\r\n onFocus={(e) => e.target.style.borderColor = '#3b82f6'}\r\n onBlur={(e) => e.target.style.borderColor = '#d1d5db'}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n handleInsertLink();\r\n }\r\n }}\r\n />\r\n </div>\r\n\r\n <div style={{ marginBottom: '16px' }}>\r\n <label style={{ display: 'block', marginBottom: '8px', color: '#374151', fontSize: '14px', fontWeight: '500' }}>\r\n Title\r\n </label>\r\n <input\r\n type=\"text\"\r\n value={linkTitle}\r\n onChange={(e) => setLinkTitle(e.target.value)}\r\n placeholder=\"Link title (tooltip)\"\r\n style={{\r\n width: '100%',\r\n padding: '8px 12px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n fontSize: '14px',\r\n outline: 'none',\r\n boxSizing: 'border-box',\r\n }}\r\n onFocus={(e) => e.target.style.borderColor = '#3b82f6'}\r\n onBlur={(e) => e.target.style.borderColor = '#d1d5db'}\r\n />\r\n <small style={{ display: 'block', marginTop: '4px', color: '#6b7280', fontSize: '12px' }}>\r\n Appears as a tooltip when hovering over the link\r\n </small>\r\n </div>\r\n\r\n <div style={{ marginBottom: '24px' }}>\r\n <label style={{ display: 'block', marginBottom: '8px', color: '#374151', fontSize: '14px', fontWeight: '500' }}>\r\n Open link in\r\n </label>\r\n <div style={{ display: 'flex', gap: '12px' }}>\r\n <label style={{ display: 'flex', alignItems: 'center', cursor: 'pointer' }}>\r\n <input\r\n type=\"radio\"\r\n name=\"linkTarget\"\r\n value=\"_self\"\r\n checked={linkTarget === '_self'}\r\n onChange={(e) => setLinkTarget(e.target.value as '_self' | '_blank')}\r\n style={{ marginRight: '6px', cursor: 'pointer' }}\r\n />\r\n <span style={{ fontSize: '14px', color: '#374151' }}>Current tab</span>\r\n </label>\r\n <label style={{ display: 'flex', alignItems: 'center', cursor: 'pointer' }}>\r\n <input\r\n type=\"radio\"\r\n name=\"linkTarget\"\r\n value=\"_blank\"\r\n checked={linkTarget === '_blank'}\r\n onChange={(e) => setLinkTarget(e.target.value as '_self' | '_blank')}\r\n style={{ marginRight: '6px', cursor: 'pointer' }}\r\n />\r\n <span style={{ fontSize: '14px', color: '#374151' }}>New tab</span>\r\n </label>\r\n </div>\r\n </div>\r\n \r\n <div style={{ display: 'flex', gap: '12px', justifyContent: 'flex-end' }}>\r\n <button\r\n onClick={() => {\r\n setShowLinkModal(false);\r\n setLinkText('');\r\n setLinkUrl('');\r\n setLinkTitle('');\r\n setLinkTarget('_self');\r\n setIsEditingLink(false);\r\n }}\r\n style={{\r\n padding: '8px 16px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n backgroundColor: '#ffffff',\r\n color: '#374151',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n transition: 'all 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => e.currentTarget.style.backgroundColor = '#f9fafb'}\r\n onMouseLeave={(e) => e.currentTarget.style.backgroundColor = '#ffffff'}\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n onClick={handleInsertLink}\r\n style={{\r\n padding: '8px 16px',\r\n border: 'none',\r\n borderRadius: '6px',\r\n backgroundColor: '#3b82f6',\r\n color: '#ffffff',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n transition: 'all 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => e.currentTarget.style.backgroundColor = '#2563eb'}\r\n onMouseLeave={(e) => e.currentTarget.style.backgroundColor = '#3b82f6'}\r\n >\r\n {isEditingLink ? 'Update Link' : 'Insert Link'}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n {showImageModal && (\r\n <div\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n zIndex: 10000,\r\n }}\r\n onClick={() => {\r\n setShowImageModal(false);\r\n setImageUrl('');\r\n setImageAlt('');\r\n setImageFile(null);\r\n setImageUploadError('');\r\n }}\r\n >\r\n <div\r\n style={{\r\n backgroundColor: '#ffffff',\r\n borderRadius: '8px',\r\n padding: '24px',\r\n width: '90%',\r\n maxWidth: '500px',\r\n boxShadow: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <h3 style={{ margin: '0 0 20px 0', color: '#111827', fontSize: '20px', fontWeight: '600' }}>\r\n {isReplacingImage ? 'Replace Image' : 'Insert Image'}\r\n </h3>\r\n \r\n <div style={{ marginBottom: '16px' }}>\r\n <label style={{ display: 'block', marginBottom: '8px', color: '#374151', fontSize: '14px', fontWeight: '500' }}>\r\n Image URL\r\n </label>\r\n <input\r\n type=\"url\"\r\n value={imageUrl}\r\n onChange={(e) => setImageUrl(e.target.value)}\r\n placeholder=\"https://example.com/image.jpg\"\r\n disabled={!!imageFile}\r\n style={{\r\n width: '100%',\r\n padding: '8px 12px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n fontSize: '14px',\r\n outline: 'none',\r\n boxSizing: 'border-box',\r\n backgroundColor: imageFile ? '#f9fafb' : '#ffffff',\r\n }}\r\n onFocus={(e) => !imageFile && (e.target.style.borderColor = '#3b82f6')}\r\n onBlur={(e) => e.target.style.borderColor = '#d1d5db'}\r\n />\r\n </div>\r\n\r\n <div style={{ \r\n marginBottom: '16px',\r\n padding: '12px',\r\n backgroundColor: '#f9fafb',\r\n borderRadius: '6px',\r\n textAlign: 'center'\r\n }}>\r\n <p style={{ margin: '0 0 12px 0', color: '#6b7280', fontSize: '14px' }}>\r\n Or upload from your computer\r\n </p>\r\n <input\r\n type=\"file\"\r\n accept=\"image/*\"\r\n onChange={handleFileChange}\r\n style={{ display: 'none' }}\r\n id=\"image-upload\"\r\n />\r\n <label\r\n htmlFor=\"image-upload\"\r\n style={{\r\n display: 'inline-block',\r\n padding: '8px 16px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n backgroundColor: '#ffffff',\r\n color: '#374151',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n transition: 'all 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => e.currentTarget.style.backgroundColor = '#f9fafb'}\r\n onMouseLeave={(e) => e.currentTarget.style.backgroundColor = '#ffffff'}\r\n >\r\n Choose File\r\n </label>\r\n {imageFile && (\r\n <p style={{ margin: '8px 0 0 0', color: '#374151', fontSize: '13px' }}>\r\n Selected: {imageFile.name}\r\n </p>\r\n )}\r\n {!( (window as any).__editiumProps?.onImageUpload) && (\r\n <p style={{ \r\n margin: '8px 0 0 0', \r\n color: '#dc2626', \r\n fontSize: '12px',\r\n fontStyle: 'italic'\r\n }}>\r\n ⚠ Upload not configured. Define onImageUpload in your app.\r\n </p>\r\n )}\r\n </div>\r\n\r\n <div style={{ marginBottom: '16px' }}>\r\n <label style={{ display: 'block', marginBottom: '8px', color: '#374151', fontSize: '14px', fontWeight: '500' }}>\r\n Alt Text (optional)\r\n </label>\r\n <input\r\n type=\"text\"\r\n value={imageAlt}\r\n onChange={(e) => setImageAlt(e.target.value)}\r\n placeholder=\"Describe the image\"\r\n style={{\r\n width: '100%',\r\n padding: '8px 12px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n fontSize: '14px',\r\n outline: 'none',\r\n boxSizing: 'border-box',\r\n }}\r\n onFocus={(e) => e.target.style.borderColor = '#3b82f6'}\r\n onBlur={(e) => e.target.style.borderColor = '#d1d5db'}\r\n />\r\n <small style={{ display: 'block', marginTop: '4px', color: '#6b7280', fontSize: '12px' }}>\r\n For accessibility\r\n </small>\r\n </div>\r\n\r\n {imageUploadError && (\r\n <div style={{\r\n marginBottom: '16px',\r\n padding: '12px',\r\n backgroundColor: '#fef2f2',\r\n border: '1px solid #fecaca',\r\n borderRadius: '6px',\r\n color: '#dc2626',\r\n fontSize: '14px'\r\n }}>\r\n {imageUploadError}\r\n </div>\r\n )}\r\n \r\n <div style={{ display: 'flex', gap: '12px', justifyContent: 'flex-end' }}>\r\n <button\r\n onClick={() => {\r\n setShowImageModal(false);\r\n setImageUrl('');\r\n setImageAlt('');\r\n setImageFile(null);\r\n setImageUploadError('');\r\n }}\r\n style={{\r\n padding: '8px 16px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n backgroundColor: '#ffffff',\r\n color: '#374151',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n transition: 'all 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => e.currentTarget.style.backgroundColor = '#f9fafb'}\r\n onMouseLeave={(e) => e.currentTarget.style.backgroundColor = '#ffffff'}\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n onClick={handleInsertImage}\r\n style={{\r\n padding: '8px 16px',\r\n border: 'none',\r\n borderRadius: '6px',\r\n backgroundColor: '#3b82f6',\r\n color: '#ffffff',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n transition: 'all 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => e.currentTarget.style.backgroundColor = '#2563eb'}\r\n onMouseLeave={(e) => e.currentTarget.style.backgroundColor = '#3b82f6'}\r\n >\r\n {isReplacingImage ? 'Replace' : 'Insert Image'}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Table Modal */}\r\n {showTableModal && (\r\n <div style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n zIndex: 1000,\r\n }}>\r\n <div style={{\r\n backgroundColor: 'white',\r\n borderRadius: '8px',\r\n padding: '24px',\r\n maxWidth: '400px',\r\n width: '90%',\r\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\r\n }}>\r\n <h3 style={{ margin: '0 0 16px 0', fontSize: '18px', fontWeight: '600', color: '#1f2937' }}>\r\n Insert Table\r\n </h3>\r\n\r\n <div style={{ marginBottom: '16px' }}>\r\n <div style={{ \r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(10, 30px)',\r\n gridTemplateRows: 'repeat(10, 30px)',\r\n gap: '2px',\r\n padding: '8px',\r\n backgroundColor: '#f9fafb',\r\n borderRadius: '4px',\r\n width: 'fit-content',\r\n }}>\r\n {Array.from({ length: 100 }, (_, index) => {\r\n const row = Math.floor(index / 10) + 1;\r\n const col = (index % 10) + 1;\r\n const isHighlighted = row <= tableRows && col <= tableCols;\r\n \r\n return (\r\n <div\r\n key={index}\r\n onMouseEnter={() => {\r\n setTableRows(row);\r\n setTableCols(col);\r\n }}\r\n onClick={handleInsertTable}\r\n style={{\r\n width: '30px',\r\n height: '30px',\r\n border: '1px solid #d1d5db',\r\n backgroundColor: isHighlighted ? '#3b82f6' : 'white',\r\n cursor: 'pointer',\r\n transition: 'background-color 0.1s ease',\r\n borderRadius: '2px',\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n \r\n <div style={{ \r\n marginTop: '12px',\r\n textAlign: 'center',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n color: '#374151',\r\n }}>\r\n {tableRows} × {tableCols} Table\r\n </div>\r\n </div>\r\n\r\n <div style={{ display: 'flex', gap: '8px', justifyContent: 'flex-end' }}>\r\n <button\r\n onClick={() => setShowTableModal(false)}\r\n style={{\r\n padding: '8px 16px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '4px',\r\n backgroundColor: 'white',\r\n color: '#374151',\r\n cursor: 'pointer',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n }}\r\n onMouseEnter={(e) => e.currentTarget.style.backgroundColor = '#f3f4f6'}\r\n onMouseLeave={(e) => e.currentTarget.style.backgroundColor = 'white'}\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n onClick={handleInsertTable}\r\n style={{\r\n padding: '8px 16px',\r\n border: 'none',\r\n borderRadius: '4px',\r\n backgroundColor: '#3b82f6',\r\n color: 'white',\r\n cursor: 'pointer',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n }}\r\n onMouseEnter={(e) => e.currentTarget.style.backgroundColor = '#2563eb'}\r\n onMouseLeave={(e) => e.currentTarget.style.backgroundColor = '#3b82f6'}\r\n >\r\n Insert Table\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Toolbar */}\r\n <div className={className} style={{ \r\n border: '1px solid #ccc', \r\n borderBottom: showFindReplace ? 'none' : '1px solid #ccc', \r\n padding: '4px 8px', \r\n backgroundColor: '#fff',\r\n borderRadius: showFindReplace ? '4px 4px 0 0' : '4px',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n gap: '2px',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n boxShadow: 'none',\r\n minHeight: '42px',\r\n maxWidth: '100%',\r\n overflow: 'visible',\r\n position: 'relative',\r\n zIndex: 100\r\n }}>\r\n {/* Left side: All items except fullscreen and find-replace */}\r\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '2px', alignItems: 'center', flex: 1 }}>\r\n {items.filter(item => item !== 'fullscreen' && item !== 'find-replace').map((item, index) => renderToolbarItem(item, index))}\r\n </div>\r\n \r\n {/* Right side: Find-replace and Fullscreen buttons */}\r\n <div style={{ display: 'flex', gap: '2px', marginLeft: '8px' }}>\r\n {items.includes('find-replace') && renderToolbarItem('find-replace', items.length - 1)}\r\n {items.includes('fullscreen') && renderToolbarItem('fullscreen', items.length)}\r\n </div>\r\n </div>\r\n\r\n {/* Find & Replace Panel - Below Toolbar */}\r\n {showFindReplace && (\r\n <div style={{\r\n backgroundColor: '#f9fafb',\r\n border: '1px solid #ccc',\r\n borderTop: 'none',\r\n borderRadius: '0 0 4px 4px',\r\n padding: '16px',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '12px',\r\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.05)',\r\n }}>\r\n {/* Search Input */}\r\n <div style={{ flex: '1', minWidth: '200px' }}>\r\n <div style={{ position: 'relative' }}>\r\n <input\r\n type=\"text\"\r\n value={searchQuery}\r\n onChange={(e) => onSearchQueryChange?.(e.target.value)}\r\n placeholder=\"Find...\"\r\n autoFocus\r\n style={{\r\n width: '100%',\r\n padding: '8px 10px 8px 32px',\r\n border: searchQuery && totalMatches === 0 ? '1px solid #ef4444' : '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n fontSize: '13px',\r\n outline: 'none',\r\n transition: 'all 0.2s',\r\n backgroundColor: 'white',\r\n boxSizing: 'border-box',\r\n }}\r\n onFocus={(e) => {\r\n if (!searchQuery || totalMatches > 0) {\r\n e.currentTarget.style.borderColor = '#3b82f6';\r\n }\r\n }}\r\n onBlur={(e) => {\r\n if (searchQuery && totalMatches === 0) {\r\n e.currentTarget.style.borderColor = '#ef4444';\r\n } else {\r\n e.currentTarget.style.borderColor = '#d1d5db';\r\n }\r\n }}\r\n />\r\n <MagnifyingGlassIcon \r\n style={{ \r\n width: '16px', \r\n height: '16px',\r\n position: 'absolute',\r\n left: '10px',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n color: '#9ca3af',\r\n pointerEvents: 'none',\r\n }} \r\n />\r\n </div>\r\n {searchQuery && (\r\n <div style={{ \r\n marginTop: '4px', \r\n fontSize: '11px', \r\n color: totalMatches === 0 ? '#ef4444' : '#6b7280',\r\n }}>\r\n {totalMatches === 0 ? 'No matches' : `${currentMatchIndex + 1} of ${totalMatches}`}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Navigation Buttons */}\r\n {searchQuery && (\r\n <div style={{ display: 'flex', gap: '4px' }}>\r\n <button\r\n onClick={handlePrevMatch}\r\n disabled={totalMatches === 0}\r\n title=\"Previous match (Shift+Enter)\"\r\n style={{\r\n padding: '8px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n backgroundColor: totalMatches === 0 ? '#f3f4f6' : 'white',\r\n cursor: totalMatches === 0 ? 'not-allowed' : 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: totalMatches === 0 ? '#d1d5db' : '#6b7280',\r\n transition: 'all 0.2s',\r\n }}\r\n onMouseEnter={(e) => {\r\n if (totalMatches > 0) {\r\n e.currentTarget.style.backgroundColor = '#f3f4f6';\r\n e.currentTarget.style.borderColor = '#9ca3af';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n if (totalMatches > 0) {\r\n e.currentTarget.style.backgroundColor = 'white';\r\n e.currentTarget.style.borderColor = '#d1d5db';\r\n }\r\n }}\r\n >\r\n <ChevronLeftIcon style={{ width: '14px', height: '14px' }} />\r\n </button>\r\n <button\r\n onClick={handleNextMatch}\r\n disabled={totalMatches === 0}\r\n title=\"Next match (Enter)\"\r\n style={{\r\n padding: '8px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n backgroundColor: totalMatches === 0 ? '#f3f4f6' : 'white',\r\n cursor: totalMatches === 0 ? 'not-allowed' : 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: totalMatches === 0 ? '#d1d5db' : '#6b7280',\r\n transition: 'all 0.2s',\r\n }}\r\n onMouseEnter={(e) => {\r\n if (totalMatches > 0) {\r\n e.currentTarget.style.backgroundColor = '#f3f4f6';\r\n e.currentTarget.style.borderColor = '#9ca3af';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n if (totalMatches > 0) {\r\n e.currentTarget.style.backgroundColor = 'white';\r\n e.currentTarget.style.borderColor = '#d1d5db';\r\n }\r\n }}\r\n >\r\n <ChevronRightIcon style={{ width: '14px', height: '14px' }} />\r\n </button>\r\n </div>\r\n )}\r\n\r\n {/* Replace Input */}\r\n <div style={{ flex: '1', minWidth: '200px' }}>\r\n <input\r\n type=\"text\"\r\n value={replaceText}\r\n onChange={(e) => setReplaceText(e.target.value)}\r\n placeholder=\"Replace...\"\r\n style={{\r\n width: '100%',\r\n padding: '8px 10px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n fontSize: '13px',\r\n outline: 'none',\r\n transition: 'all 0.2s',\r\n backgroundColor: 'white',\r\n boxSizing: 'border-box',\r\n }}\r\n onFocus={(e) => {\r\n e.currentTarget.style.borderColor = '#3b82f6';\r\n }}\r\n onBlur={(e) => {\r\n e.currentTarget.style.borderColor = '#d1d5db';\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Action Buttons */}\r\n <div style={{ display: 'flex', gap: '6px' }}>\r\n <button\r\n onClick={handleReplace}\r\n disabled={searchMatches.length === 0}\r\n title=\"Replace current match\"\r\n style={{\r\n padding: '8px 12px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n backgroundColor: searchMatches.length === 0 ? '#f3f4f6' : 'white',\r\n color: searchMatches.length === 0 ? '#9ca3af' : '#374151',\r\n cursor: searchMatches.length === 0 ? 'not-allowed' : 'pointer',\r\n fontSize: '13px',\r\n fontWeight: '500',\r\n whiteSpace: 'nowrap',\r\n transition: 'all 0.2s',\r\n }}\r\n onMouseEnter={(e) => {\r\n if (searchMatches.length > 0) {\r\n e.currentTarget.style.backgroundColor = '#f3f4f6';\r\n e.currentTarget.style.borderColor = '#9ca3af';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n if (searchMatches.length > 0) {\r\n e.currentTarget.style.backgroundColor = 'white';\r\n e.currentTarget.style.borderColor = '#d1d5db';\r\n }\r\n }}\r\n >\r\n Replace\r\n </button>\r\n <button\r\n onClick={handleReplaceAll}\r\n disabled={searchMatches.length === 0}\r\n title=\"Replace all matches\"\r\n style={{\r\n padding: '8px 12px',\r\n border: 'none',\r\n borderRadius: '6px',\r\n backgroundColor: searchMatches.length === 0 ? '#cbd5e1' : '#3b82f6',\r\n color: 'white',\r\n cursor: searchMatches.length === 0 ? 'not-allowed' : 'pointer',\r\n fontSize: '13px',\r\n fontWeight: '500',\r\n whiteSpace: 'nowrap',\r\n transition: 'all 0.2s',\r\n }}\r\n onMouseEnter={(e) => {\r\n if (searchMatches.length > 0) {\r\n e.currentTarget.style.backgroundColor = '#2563eb';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n if (searchMatches.length > 0) {\r\n e.currentTarget.style.backgroundColor = '#3b82f6';\r\n }\r\n }}\r\n >\r\n Replace All\r\n </button>\r\n </div>\r\n\r\n {/* Close Button */}\r\n <button\r\n onClick={() => setShowFindReplace(false)}\r\n title=\"Close (Esc)\"\r\n style={{\r\n padding: '8px',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '6px',\r\n backgroundColor: 'white',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: '#6b7280',\r\n transition: 'all 0.2s',\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = '#fee2e2';\r\n e.currentTarget.style.borderColor = '#ef4444';\r\n e.currentTarget.style.color = '#dc2626';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'white';\r\n e.currentTarget.style.borderColor = '#d1d5db';\r\n e.currentTarget.style.color = '#6b7280';\r\n }}\r\n >\r\n <XMarkIcon style={{ width: '16px', height: '16px' }} />\r\n </button>\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default Toolbar;","import React, { useState, useRef, useCallback } from 'react';\r\nimport { Transforms } from 'slate';\r\nimport { useSlateStatic, ReactEditor, useSelected, useFocused } from 'slate-react';\r\nimport { ImageElement } from './types';\r\n\r\ninterface ResizableImageProps {\r\n element: ImageElement;\r\n attributes: any;\r\n children: any;\r\n}\r\n\r\nconst ResizableImage: React.FC<ResizableImageProps> = ({ element, attributes, children }) => {\r\n const editor = useSlateStatic();\r\n const selected = useSelected();\r\n const focused = useFocused();\r\n const [isResizing, setIsResizing] = useState(false);\r\n const [dimensions, setDimensions] = useState({\r\n width: element.width || 0,\r\n height: element.height || 0,\r\n });\r\n const [showActions, setShowActions] = useState(false);\r\n const imageRef = useRef<HTMLImageElement>(null);\r\n const startPos = useRef({ x: 0, y: 0, width: 0, height: 0 });\r\n\r\n const handleImageLoad = useCallback((e: React.SyntheticEvent<HTMLImageElement>) => {\r\n const img = e.currentTarget;\r\n if (!element.width && !element.height) {\r\n setDimensions({\r\n width: img.naturalWidth,\r\n height: img.naturalHeight,\r\n });\r\n }\r\n }, [element.width, element.height]);\r\n\r\n const handleMouseDown = useCallback((e: React.MouseEvent, handle: 'se' | 'sw' | 'ne' | 'nw' | 'n' | 's' | 'e' | 'w') => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n \r\n setIsResizing(true);\r\n const currentWidth = dimensions.width || imageRef.current?.offsetWidth || 0;\r\n const currentHeight = dimensions.height || imageRef.current?.offsetHeight || 0;\r\n \r\n startPos.current = {\r\n x: e.clientX,\r\n y: e.clientY,\r\n width: currentWidth,\r\n height: currentHeight,\r\n };\r\n\r\n const handleMouseMove = (moveEvent: MouseEvent) => {\r\n const deltaX = moveEvent.clientX - startPos.current.x;\r\n const deltaY = moveEvent.clientY - startPos.current.y;\r\n \r\n let newWidth = startPos.current.width;\r\n let newHeight = startPos.current.height;\r\n\r\n switch (handle) {\r\n case 'se':\r\n newWidth = Math.max(100, startPos.current.width + deltaX);\r\n newHeight = Math.max(100, startPos.current.height + deltaY);\r\n break;\r\n case 'sw':\r\n newWidth = Math.max(100, startPos.current.width - deltaX);\r\n newHeight = Math.max(100, startPos.current.height + deltaY);\r\n break;\r\n case 'ne':\r\n newWidth = Math.max(100, startPos.current.width + deltaX);\r\n newHeight = Math.max(100, startPos.current.height - deltaY);\r\n break;\r\n case 'nw':\r\n newWidth = Math.max(100, startPos.current.width - deltaX);\r\n newHeight = Math.max(100, startPos.current.height - deltaY);\r\n break;\r\n case 'e':\r\n newWidth = Math.max(100, startPos.current.width + deltaX);\r\n newHeight = startPos.current.height;\r\n break;\r\n case 'w':\r\n newWidth = Math.max(100, startPos.current.width - deltaX);\r\n newHeight = startPos.current.height;\r\n break;\r\n case 'n':\r\n newWidth = startPos.current.width;\r\n newHeight = Math.max(100, startPos.current.height - deltaY);\r\n break;\r\n case 's':\r\n newWidth = startPos.current.width;\r\n newHeight = Math.max(100, startPos.current.height + deltaY);\r\n break;\r\n }\r\n\r\n setDimensions({ width: newWidth, height: newHeight });\r\n };\r\n\r\n const handleMouseUp = () => {\r\n setIsResizing(false);\r\n \r\n const path = ReactEditor.findPath(editor as ReactEditor, element);\r\n Transforms.setNodes(\r\n editor,\r\n { \r\n width: dimensions.width,\r\n height: dimensions.height \r\n } as Partial<ImageElement>,\r\n { at: path }\r\n );\r\n\r\n document.removeEventListener('mousemove', handleMouseMove);\r\n document.removeEventListener('mouseup', handleMouseUp);\r\n };\r\n\r\n document.addEventListener('mousemove', handleMouseMove);\r\n document.addEventListener('mouseup', handleMouseUp);\r\n }, [dimensions, editor, element]);\r\n\r\n const handleRemoveImage = useCallback(() => {\r\n const path = ReactEditor.findPath(editor as ReactEditor, element);\r\n Transforms.removeNodes(editor, { at: path });\r\n }, [editor, element]);\r\n\r\n const handleReplaceImage = useCallback(() => {\r\n if ((window as any).__editiumImageReplaceHandler) {\r\n const path = ReactEditor.findPath(editor as ReactEditor, element);\r\n (window as any).__editiumImageReplaceHandler({\r\n url: element.url,\r\n alt: element.alt,\r\n width: element.width,\r\n height: element.height,\r\n align: element.align,\r\n path,\r\n });\r\n }\r\n }, [editor, element]);\r\n\r\n const handleAlignmentChange = useCallback((alignment: 'left' | 'center' | 'right') => {\r\n const path = ReactEditor.findPath(editor as ReactEditor, element);\r\n Transforms.setNodes(\r\n editor,\r\n { align: alignment } as Partial<ImageElement>,\r\n { at: path }\r\n );\r\n }, [editor, element]);\r\n\r\n const containerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n justifyContent: element.align === 'center' ? 'center' : \r\n element.align === 'right' ? 'flex-end' : 'flex-start',\r\n margin: '16px 0',\r\n position: 'relative',\r\n };\r\n\r\n const wrapperStyle: React.CSSProperties = {\r\n position: 'relative',\r\n display: 'inline-block',\r\n maxWidth: '100%',\r\n cursor: isResizing ? 'nwse-resize' : 'default',\r\n };\r\n\r\n const imageStyle: React.CSSProperties = {\r\n maxWidth: '100%',\r\n width: dimensions.width ? `${dimensions.width}px` : 'auto',\r\n height: dimensions.height ? `${dimensions.height}px` : 'auto',\r\n borderRadius: '4px',\r\n boxShadow: (selected && focused) || showActions \r\n ? '0 0 0 3px #3b82f6' \r\n : '0 1px 3px rgba(0, 0, 0, 0.1)',\r\n display: 'block',\r\n transition: showActions || (selected && focused) ? 'none' : 'box-shadow 0.2s ease',\r\n };\r\n\r\n const handleStyle: React.CSSProperties = {\r\n position: 'absolute',\r\n width: '12px',\r\n height: '12px',\r\n backgroundColor: '#3b82f6',\r\n border: '2px solid #ffffff',\r\n borderRadius: '50%',\r\n opacity: showActions ? 1 : 0,\r\n transition: 'opacity 0.2s ease',\r\n pointerEvents: showActions ? 'auto' : 'none',\r\n zIndex: 10,\r\n };\r\n\r\n return (\r\n <div {...attributes} contentEditable={false} style={{ userSelect: 'none' }}>\r\n <div style={containerStyle}>\r\n <div \r\n style={wrapperStyle}\r\n onMouseEnter={() => setShowActions(true)}\r\n onMouseLeave={() => !isResizing && setShowActions(false)}\r\n >\r\n <img\r\n ref={imageRef}\r\n src={element.url}\r\n alt={element.alt || 'Image'}\r\n style={imageStyle}\r\n onLoad={handleImageLoad}\r\n draggable={false}\r\n />\r\n \r\n {/* Corner resize handles - show on hover or when selected */}\r\n {((selected && focused) || showActions) && (\r\n <>\r\n <div\r\n style={{ ...handleStyle, top: '-6px', left: '-6px', cursor: 'nw-resize' }}\r\n onMouseDown={(e) => handleMouseDown(e, 'nw')}\r\n title=\"Resize\"\r\n />\r\n <div\r\n style={{ ...handleStyle, top: '-6px', right: '-6px', cursor: 'ne-resize' }}\r\n onMouseDown={(e) => handleMouseDown(e, 'ne')}\r\n title=\"Resize\"\r\n />\r\n <div\r\n style={{ ...handleStyle, bottom: '-6px', left: '-6px', cursor: 'sw-resize' }}\r\n onMouseDown={(e) => handleMouseDown(e, 'sw')}\r\n title=\"Resize\"\r\n />\r\n <div\r\n style={{ ...handleStyle, bottom: '-6px', right: '-6px', cursor: 'se-resize' }}\r\n onMouseDown={(e) => handleMouseDown(e, 'se')}\r\n title=\"Resize\"\r\n />\r\n \r\n {/* Edge resize handles */}\r\n <div\r\n style={{ \r\n ...handleStyle, \r\n top: '-6px', \r\n left: '50%', \r\n transform: 'translateX(-50%)',\r\n cursor: 'n-resize' \r\n }}\r\n onMouseDown={(e) => handleMouseDown(e, 'n')}\r\n title=\"Resize Height\"\r\n />\r\n <div\r\n style={{ \r\n ...handleStyle, \r\n bottom: '-6px', \r\n left: '50%', \r\n transform: 'translateX(-50%)',\r\n cursor: 's-resize' \r\n }}\r\n onMouseDown={(e) => handleMouseDown(e, 's')}\r\n title=\"Resize Height\"\r\n />\r\n <div\r\n style={{ \r\n ...handleStyle, \r\n left: '-6px', \r\n top: '50%', \r\n transform: 'translateY(-50%)',\r\n cursor: 'w-resize' \r\n }}\r\n onMouseDown={(e) => handleMouseDown(e, 'w')}\r\n title=\"Resize Width\"\r\n />\r\n <div\r\n style={{ \r\n ...handleStyle, \r\n right: '-6px', \r\n top: '50%', \r\n transform: 'translateY(-50%)',\r\n cursor: 'e-resize' \r\n }}\r\n onMouseDown={(e) => handleMouseDown(e, 'e')}\r\n title=\"Resize Width\"\r\n />\r\n </>\r\n )}\r\n\r\n {/* Action buttons */}\r\n {((selected && focused) || showActions) && (\r\n <div style={{\r\n position: 'absolute',\r\n top: '8px',\r\n right: '8px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px',\r\n zIndex: 11,\r\n }}>\r\n {/* Alignment buttons */}\r\n <div style={{\r\n display: 'flex',\r\n gap: '4px',\r\n backgroundColor: '#ffffff',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '4px',\r\n padding: '4px',\r\n boxShadow: '0 1px 2px rgba(0, 0, 0, 0.05)',\r\n }}>\r\n <button\r\n onClick={() => handleAlignmentChange('left')}\r\n onMouseDown={(e) => e.preventDefault()}\r\n style={{\r\n padding: '4px 8px',\r\n backgroundColor: element.align === 'left' ? '#e0f2fe' : 'transparent',\r\n border: 'none',\r\n borderRadius: '2px',\r\n color: '#374151',\r\n fontSize: '12px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n transition: 'all 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => {\r\n if (element.align !== 'left') {\r\n e.currentTarget.style.backgroundColor = '#f9fafb';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n if (element.align !== 'left') {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }\r\n }}\r\n title=\"Align left\"\r\n >\r\n ⬅\r\n </button>\r\n <button\r\n onClick={() => handleAlignmentChange('center')}\r\n onMouseDown={(e) => e.preventDefault()}\r\n style={{\r\n padding: '4px 8px',\r\n backgroundColor: element.align === 'center' ? '#e0f2fe' : 'transparent',\r\n border: 'none',\r\n borderRadius: '2px',\r\n color: '#374151',\r\n fontSize: '12px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n transition: 'all 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => {\r\n if (element.align !== 'center') {\r\n e.currentTarget.style.backgroundColor = '#f9fafb';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n if (element.align !== 'center') {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }\r\n }}\r\n title=\"Align center\"\r\n >\r\n ↔\r\n </button>\r\n <button\r\n onClick={() => handleAlignmentChange('right')}\r\n onMouseDown={(e) => e.preventDefault()}\r\n style={{\r\n padding: '4px 8px',\r\n backgroundColor: element.align === 'right' ? '#e0f2fe' : 'transparent',\r\n border: 'none',\r\n borderRadius: '2px',\r\n color: '#374151',\r\n fontSize: '12px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n transition: 'all 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => {\r\n if (element.align !== 'right') {\r\n e.currentTarget.style.backgroundColor = '#f9fafb';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n if (element.align !== 'right') {\r\n e.currentTarget.style.backgroundColor = 'transparent';\r\n }\r\n }}\r\n title=\"Align right\"\r\n >\r\n ➡\r\n </button>\r\n </div>\r\n\r\n {/* Replace and Remove buttons */}\r\n <div style={{\r\n display: 'flex',\r\n gap: '4px',\r\n }}>\r\n <button\r\n onClick={handleReplaceImage}\r\n onMouseDown={(e) => e.preventDefault()}\r\n style={{\r\n padding: '6px 12px',\r\n backgroundColor: '#ffffff',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '4px',\r\n color: '#374151',\r\n fontSize: '12px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n boxShadow: '0 1px 2px rgba(0, 0, 0, 0.05)',\r\n transition: 'all 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = '#f9fafb';\r\n e.currentTarget.style.borderColor = '#9ca3af';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = '#ffffff';\r\n e.currentTarget.style.borderColor = '#d1d5db';\r\n }}\r\n title=\"Replace image\"\r\n >\r\n Replace\r\n </button>\r\n <button\r\n onClick={handleRemoveImage}\r\n onMouseDown={(e) => e.preventDefault()}\r\n style={{\r\n padding: '6px 12px',\r\n backgroundColor: '#ffffff',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '4px',\r\n color: '#dc2626',\r\n fontSize: '12px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n boxShadow: '0 1px 2px rgba(0, 0, 0, 0.05)',\r\n transition: 'all 0.15s ease',\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = '#fef2f2';\r\n e.currentTarget.style.borderColor = '#fca5a5';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = '#ffffff';\r\n e.currentTarget.style.borderColor = '#d1d5db';\r\n }}\r\n title=\"Remove image\"\r\n >\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nexport default ResizableImage;\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { useSlateStatic, useSelected, useFocused, ReactEditor } from 'slate-react';\r\nimport { Transforms, Editor } from 'slate';\r\nimport {\r\n PlusIcon,\r\n MinusIcon,\r\n TrashIcon,\r\n Bars3BottomLeftIcon,\r\n Bars3Icon,\r\n Bars3BottomRightIcon\r\n} from '@heroicons/react/24/outline';\r\nimport { TableElement, TableRowElement, TableCellElement, AlignmentType } from './types';\r\nimport { addTableRow, removeTableRow, addTableColumn, removeTableColumn, setTableAlignment } from './utils';\r\n\r\ninterface TableComponentProps {\r\n element: TableElement;\r\n attributes: any;\r\n children: any;\r\n}\r\n\r\nexport const TableComponent: React.FC<TableComponentProps> = ({ element, attributes, children }) => {\r\n const editor = useSlateStatic();\r\n const selected = useSelected();\r\n const focused = useFocused();\r\n const [showControls, setShowControls] = useState(false);\r\n const [tableWidth, setTableWidth] = useState<number | null>(element.width || null);\r\n const [isResizing, setIsResizing] = useState(false);\r\n const tableRef = useRef<HTMLTableElement>(null);\r\n\r\n const handleAddRow = () => {\r\n addTableRow(editor);\r\n };\r\n\r\n const handleRemoveRow = () => {\r\n removeTableRow(editor);\r\n };\r\n\r\n const handleAddColumn = () => {\r\n addTableColumn(editor);\r\n };\r\n\r\n const handleRemoveColumn = () => {\r\n removeTableColumn(editor);\r\n };\r\n\r\n const handleDeleteTable = () => {\r\n Transforms.removeNodes(editor, {\r\n match: (n: any) =>\r\n !Editor.isEditor(n) &&\r\n n.type === 'table',\r\n });\r\n };\r\n\r\n const handleAlign = (alignment: AlignmentType) => {\r\n setTableAlignment(editor, alignment);\r\n };\r\n\r\n const updateTableWidth = (width: number) => {\r\n setTableWidth(width);\r\n try {\r\n const path = ReactEditor.findPath(editor as ReactEditor, element);\r\n Transforms.setNodes(\r\n editor,\r\n { width } as Partial<TableElement>,\r\n { at: path }\r\n );\r\n } catch (error) {\r\n console.warn('Could not update table width:', error);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n position: 'relative',\r\n margin: '16px 0',\r\n display: 'flex',\r\n justifyContent: element.align === 'center' ? 'center' :\r\n element.align === 'right' ? 'flex-end' : 'flex-start',\r\n }}\r\n >\r\n <div\r\n {...attributes}\r\n style={{ position: 'relative', width: tableWidth ? `${tableWidth}px` : '100%', maxWidth: '100%' }}\r\n onMouseEnter={() => setShowControls(true)}\r\n onMouseLeave={() => setShowControls(false)}\r\n >\r\n <table\r\n ref={tableRef}\r\n style={{\r\n borderCollapse: 'collapse',\r\n width: '100%',\r\n border: (selected && focused) || showControls ? '2px solid #3b82f6' : '1px solid #e5e7eb',\r\n transition: 'border 0.2s ease',\r\n }}\r\n >\r\n <tbody>{children}</tbody>\r\n </table>\r\n\r\n {/* Table controls */}\r\n {((selected && focused) || showControls) && (\r\n <div\r\n contentEditable={false}\r\n style={{\r\n position: 'absolute',\r\n top: '-40px',\r\n right: '0',\r\n display: 'flex',\r\n gap: '4px',\r\n backgroundColor: '#fff',\r\n padding: '4px',\r\n borderRadius: '6px',\r\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)',\r\n zIndex: 10,\r\n }}\r\n >\r\n <button\r\n onClick={handleAddRow}\r\n title=\"Add Row\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '4px',\r\n padding: '6px 10px',\r\n border: '1px solid #e5e7eb',\r\n borderRadius: '4px',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n fontSize: '13px',\r\n color: '#374151',\r\n }}\r\n onMouseOver={(e) => (e.currentTarget.style.backgroundColor = '#f3f4f6')}\r\n onMouseOut={(e) => (e.currentTarget.style.backgroundColor = '#fff')}\r\n >\r\n <PlusIcon style={{ width: '16px', height: '16px' }} />\r\n Row\r\n </button>\r\n <button\r\n onClick={handleRemoveRow}\r\n title=\"Remove Row\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '4px',\r\n padding: '6px 10px',\r\n border: '1px solid #e5e7eb',\r\n borderRadius: '4px',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n fontSize: '13px',\r\n color: '#374151',\r\n }}\r\n onMouseOver={(e) => (e.currentTarget.style.backgroundColor = '#f3f4f6')}\r\n onMouseOut={(e) => (e.currentTarget.style.backgroundColor = '#fff')}\r\n >\r\n <MinusIcon style={{ width: '16px', height: '16px' }} />\r\n Row\r\n </button>\r\n <button\r\n onClick={handleAddColumn}\r\n title=\"Add Column\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '4px',\r\n padding: '6px 10px',\r\n border: '1px solid #e5e7eb',\r\n borderRadius: '4px',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n fontSize: '13px',\r\n color: '#374151',\r\n }}\r\n onMouseOver={(e) => (e.currentTarget.style.backgroundColor = '#f3f4f6')}\r\n onMouseOut={(e) => (e.currentTarget.style.backgroundColor = '#fff')}\r\n >\r\n <PlusIcon style={{ width: '16px', height: '16px' }} />\r\n Col\r\n </button>\r\n <button\r\n onClick={handleRemoveColumn}\r\n title=\"Remove Column\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '4px',\r\n padding: '6px 10px',\r\n border: '1px solid #e5e7eb',\r\n borderRadius: '4px',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n fontSize: '13px',\r\n color: '#374151',\r\n }}\r\n onMouseOver={(e) => (e.currentTarget.style.backgroundColor = '#f3f4f6')}\r\n onMouseOut={(e) => (e.currentTarget.style.backgroundColor = '#fff')}\r\n >\r\n <MinusIcon style={{ width: '16px', height: '16px' }} />\r\n Col\r\n </button>\r\n <div style={{ width: '1px', height: '24px', backgroundColor: '#e5e7eb', margin: '0 4px' }} />\r\n\r\n {/* Alignment buttons */}\r\n <button\r\n onClick={() => handleAlign('left')}\r\n title=\"Align Left\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '6px 8px',\r\n border: '1px solid #e5e7eb',\r\n borderRadius: '4px',\r\n backgroundColor: element.align === 'left' || !element.align ? '#e0e7ff' : '#fff',\r\n cursor: 'pointer',\r\n fontSize: '13px',\r\n color: '#374151',\r\n }}\r\n onMouseOver={(e) => {\r\n if (element.align !== 'left' && element.align) e.currentTarget.style.backgroundColor = '#f3f4f6';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.backgroundColor = element.align === 'left' || !element.align ? '#e0e7ff' : '#fff';\r\n }}\r\n >\r\n <Bars3BottomLeftIcon style={{ width: '16px', height: '16px' }} />\r\n </button>\r\n <button\r\n onClick={() => handleAlign('center')}\r\n title=\"Align Center\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '6px 8px',\r\n border: '1px solid #e5e7eb',\r\n borderRadius: '4px',\r\n backgroundColor: element.align === 'center' ? '#e0e7ff' : '#fff',\r\n cursor: 'pointer',\r\n fontSize: '13px',\r\n color: '#374151',\r\n }}\r\n onMouseOver={(e) => {\r\n if (element.align !== 'center') e.currentTarget.style.backgroundColor = '#f3f4f6';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.backgroundColor = element.align === 'center' ? '#e0e7ff' : '#fff';\r\n }}\r\n >\r\n <Bars3Icon style={{ width: '16px', height: '16px' }} />\r\n </button>\r\n <button\r\n onClick={() => handleAlign('right')}\r\n title=\"Align Right\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '6px 8px',\r\n border: '1px solid #e5e7eb',\r\n borderRadius: '4px',\r\n backgroundColor: element.align === 'right' ? '#e0e7ff' : '#fff',\r\n cursor: 'pointer',\r\n fontSize: '13px',\r\n color: '#374151',\r\n }}\r\n onMouseOver={(e) => {\r\n if (element.align !== 'right') e.currentTarget.style.backgroundColor = '#f3f4f6';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.backgroundColor = element.align === 'right' ? '#e0e7ff' : '#fff';\r\n }}\r\n >\r\n <Bars3BottomRightIcon style={{ width: '16px', height: '16px' }} />\r\n </button>\r\n\r\n <div style={{ width: '1px', height: '24px', backgroundColor: '#e5e7eb', margin: '0 4px' }} />\r\n <button\r\n onClick={handleDeleteTable}\r\n title=\"Delete Table\"\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '4px',\r\n padding: '6px 10px',\r\n border: '1px solid #e5e7eb',\r\n borderRadius: '4px',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n fontSize: '13px',\r\n color: '#dc2626',\r\n }}\r\n onMouseOver={(e) => {\r\n e.currentTarget.style.backgroundColor = '#fee2e2';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.backgroundColor = '#fff';\r\n }}\r\n >\r\n <TrashIcon style={{ width: '16px', height: '16px' }} />\r\n Delete\r\n </button>\r\n </div>\r\n )}\r\n\r\n {/* Table resize handle */}\r\n {((selected && focused) || showControls) && (\r\n <div\r\n contentEditable={false}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsResizing(true);\r\n const startX = e.clientX;\r\n const startWidth = tableRef.current?.offsetWidth || 0;\r\n let finalWidth = startWidth;\r\n\r\n const handleMouseMove = (moveEvent: MouseEvent) => {\r\n const diff = moveEvent.clientX - startX;\r\n const newWidth = Math.max(200, startWidth + diff);\r\n finalWidth = newWidth;\r\n setTableWidth(newWidth);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n setIsResizing(false);\r\n updateTableWidth(finalWidth);\r\n document.removeEventListener('mousemove', handleMouseMove);\r\n document.removeEventListener('mouseup', handleMouseUp);\r\n };\r\n\r\n document.addEventListener('mousemove', handleMouseMove);\r\n document.addEventListener('mouseup', handleMouseUp);\r\n }}\r\n style={{\r\n position: 'absolute',\r\n right: '-4px',\r\n top: '0',\r\n bottom: '0',\r\n width: '8px',\r\n cursor: 'col-resize',\r\n backgroundColor: isResizing ? '#3b82f6' : 'transparent',\r\n transition: 'background-color 0.2s',\r\n zIndex: 5,\r\n }}\r\n onMouseEnter={(e) => {\r\n if (!isResizing) e.currentTarget.style.backgroundColor = '#3b82f680';\r\n }}\r\n onMouseLeave={(e) => {\r\n if (!isResizing) e.currentTarget.style.backgroundColor = 'transparent';\r\n }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\ninterface TableRowComponentProps {\r\n element: TableRowElement;\r\n attributes: any;\r\n children: any;\r\n}\r\n\r\nexport const TableRowComponent: React.FC<TableRowComponentProps> = ({ attributes, children }) => {\r\n return <tr {...attributes}>{children}</tr>;\r\n};\r\n\r\ninterface TableCellComponentProps {\r\n element: TableCellElement;\r\n attributes: any;\r\n children: any;\r\n}\r\n\r\nexport const TableCellComponent: React.FC<TableCellComponentProps> = ({ element, attributes, children }) => {\r\n const editor = useSlateStatic();\r\n const selected = useSelected();\r\n const focused = useFocused();\r\n const [showAlignMenu, setShowAlignMenu] = useState(false);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (menuRef.current && !menuRef.current.contains(event.target as Node)) {\r\n setShowAlignMenu(false);\r\n }\r\n };\r\n\r\n if (showAlignMenu) {\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => document.removeEventListener('mousedown', handleClickOutside);\r\n }\r\n }, [showAlignMenu]);\r\n\r\n const handleCellAlign = (alignment: AlignmentType) => {\r\n const path = ReactEditor.findPath(editor as ReactEditor, element);\r\n Transforms.setNodes(\r\n editor,\r\n { align: alignment } as Partial<TableCellElement>,\r\n { at: path }\r\n );\r\n setShowAlignMenu(false);\r\n };\r\n\r\n return (\r\n <td\r\n {...attributes}\r\n style={{\r\n border: '1px solid #e5e7eb',\r\n padding: '8px 12px',\r\n minWidth: '100px',\r\n position: 'relative',\r\n textAlign: element.align || 'left',\r\n }}\r\n >\r\n {/* Cell alignment controls */}\r\n {selected && focused && (\r\n <div\r\n ref={menuRef}\r\n contentEditable={false}\r\n style={{\r\n position: 'absolute',\r\n top: '4px',\r\n right: '4px',\r\n zIndex: 10,\r\n }}\r\n >\r\n <button\r\n onClick={() => setShowAlignMenu(!showAlignMenu)}\r\n style={{\r\n padding: '2px 6px',\r\n border: '1px solid #e5e7eb',\r\n borderRadius: '3px',\r\n backgroundColor: '#fff',\r\n cursor: 'pointer',\r\n fontSize: '11px',\r\n color: '#6b7280',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '4px',\r\n }}\r\n onMouseOver={(e) => (e.currentTarget.style.backgroundColor = '#f3f4f6')}\r\n onMouseOut={(e) => (e.currentTarget.style.backgroundColor = '#fff')}\r\n title=\"Align cell content\"\r\n >\r\n <Bars3BottomLeftIcon style={{ width: '12px', height: '12px' }} />\r\n </button>\r\n\r\n {showAlignMenu && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: '100%',\r\n right: '0',\r\n marginTop: '4px',\r\n backgroundColor: '#fff',\r\n border: '1px solid #e5e7eb',\r\n borderRadius: '6px',\r\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\r\n padding: '4px',\r\n display: 'flex',\r\n gap: '2px',\r\n minWidth: '120px',\r\n }}\r\n >\r\n <button\r\n onClick={() => handleCellAlign('left')}\r\n style={{\r\n padding: '4px 8px',\r\n border: 'none',\r\n borderRadius: '3px',\r\n backgroundColor: element.align === 'left' || !element.align ? '#e0e7ff' : 'transparent',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n onMouseOver={(e) => {\r\n if (element.align !== 'left' && element.align) e.currentTarget.style.backgroundColor = '#f3f4f6';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.backgroundColor = element.align === 'left' || !element.align ? '#e0e7ff' : 'transparent';\r\n }}\r\n title=\"Align Left\"\r\n >\r\n <Bars3BottomLeftIcon style={{ width: '16px', height: '16px' }} />\r\n </button>\r\n <button\r\n onClick={() => handleCellAlign('center')}\r\n style={{\r\n padding: '4px 8px',\r\n border: 'none',\r\n borderRadius: '3px',\r\n backgroundColor: element.align === 'center' ? '#e0e7ff' : 'transparent',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n onMouseOver={(e) => {\r\n if (element.align !== 'center') e.currentTarget.style.backgroundColor = '#f3f4f6';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.backgroundColor = element.align === 'center' ? '#e0e7ff' : 'transparent';\r\n }}\r\n title=\"Align Center\"\r\n >\r\n <Bars3Icon style={{ width: '16px', height: '16px' }} />\r\n </button>\r\n <button\r\n onClick={() => handleCellAlign('right')}\r\n style={{\r\n padding: '4px 8px',\r\n border: 'none',\r\n borderRadius: '3px',\r\n backgroundColor: element.align === 'right' ? '#e0e7ff' : 'transparent',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n onMouseOver={(e) => {\r\n if (element.align !== 'right') e.currentTarget.style.backgroundColor = '#f3f4f6';\r\n }}\r\n onMouseOut={(e) => {\r\n e.currentTarget.style.backgroundColor = element.align === 'right' ? '#e0e7ff' : 'transparent';\r\n }}\r\n title=\"Align Right\"\r\n >\r\n <Bars3BottomRightIcon style={{ width: '16px', height: '16px' }} />\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {children}\r\n </td>\r\n );\r\n};\r\n","import { BaseElement, BaseText } from 'slate';\r\n\r\nexport type FormatType = 'bold' | 'italic' | 'underline' | 'code' | 'strikethrough' | 'superscript' | 'subscript';\r\nexport type AlignmentType = 'left' | 'center' | 'right' | 'justify';\r\nexport type BlockType = 'paragraph' | 'heading-one' | 'heading-two' | 'heading-three' | 'heading-four' | 'heading-five' | 'heading-six' | 'heading-seven' | 'heading-eight' | 'bulleted-list' | 'numbered-list' | 'list-item' | 'blockquote' | 'code-block' | 'horizontal-rule' | 'image' | 'table' | 'table-row' | 'table-cell';\r\nexport type ToolbarItem = FormatType | BlockType | AlignmentType | 'link' | 'indent' | 'outdent' | 'undo' | 'redo' | 'separator' | 'view-output' | 'text-color' | 'bg-color' | 'table' | 'find-replace' | 'fullscreen';\r\n\r\n// All available toolbar items in a logical grouped order\r\nexport const ALL_TOOLBAR_ITEMS: ToolbarItem[] = [\r\n 'paragraph', 'heading-one', 'heading-two', 'heading-three', 'heading-four', \r\n 'heading-five', 'heading-six', 'heading-seven', 'heading-eight',\r\n 'separator',\r\n 'bold', 'italic', 'underline', 'strikethrough',\r\n 'separator',\r\n 'superscript', 'subscript', 'code',\r\n 'separator',\r\n 'left', 'center', 'right', 'justify',\r\n 'separator',\r\n 'text-color', 'bg-color',\r\n 'separator',\r\n 'blockquote', 'code-block',\r\n 'separator',\r\n 'bulleted-list', 'numbered-list', 'indent', 'outdent',\r\n 'separator',\r\n 'link', 'image', 'table', 'horizontal-rule', 'undo', 'redo',\r\n 'separator',\r\n 'find-replace', 'fullscreen', 'view-output'\r\n];\r\n\r\nexport interface CustomElement extends BaseElement {\r\n type: BlockType;\r\n url?: string;\r\n align?: AlignmentType;\r\n children: CustomText[];\r\n}\r\n\r\nexport interface CustomText extends BaseText {\r\n text: string;\r\n bold?: boolean;\r\n italic?: boolean;\r\n underline?: boolean;\r\n code?: boolean;\r\n strikethrough?: boolean;\r\n superscript?: boolean;\r\n subscript?: boolean;\r\n color?: string;\r\n backgroundColor?: string;\r\n search?: boolean;\r\n searchCurrent?: boolean;\r\n}\r\n\r\nexport interface LinkElement extends BaseElement {\r\n type: 'link';\r\n url: string;\r\n title?: string;\r\n target?: '_blank' | '_self';\r\n children: CustomText[];\r\n}\r\n\r\nexport interface ImageElement extends BaseElement {\r\n type: 'image';\r\n url: string;\r\n alt?: string;\r\n width?: number;\r\n height?: number;\r\n align?: AlignmentType;\r\n children: CustomText[];\r\n}\r\n\r\nexport interface TableElement extends BaseElement {\r\n type: 'table';\r\n align?: AlignmentType;\r\n width?: number;\r\n children: TableRowElement[];\r\n}\r\n\r\nexport interface TableRowElement extends BaseElement {\r\n type: 'table-row';\r\n children: TableCellElement[];\r\n}\r\n\r\nexport interface TableCellElement extends BaseElement {\r\n type: 'table-cell';\r\n align?: AlignmentType;\r\n children: (CustomElement | CustomText)[];\r\n}\r\n\r\nexport interface EditiumProps {\r\n /** Initial editor content. Default: empty paragraph with empty text node */\r\n initialValue?: string | CustomElement[];\r\n \r\n /** Callback when content changes. Default: undefined (no callback) */\r\n onChange?: (html: string, json: CustomElement[]) => void;\r\n \r\n /** Toolbar items to display. Default: 'all' */\r\n toolbar?: ToolbarItem[] | 'all';\r\n \r\n /** Placeholder text when editor is empty. Default: 'Start typing...' */\r\n placeholder?: string;\r\n \r\n /** CSS class name for the editor container. Default: '' */\r\n className?: string;\r\n \r\n /** Inline styles for the editor container. Default: {} */\r\n style?: React.CSSProperties;\r\n \r\n /** Whether the editor is read-only. Default: false */\r\n readOnly?: boolean;\r\n \r\n /** Custom image upload handler. Default: undefined */\r\n onImageUpload?: (file: File) => Promise<string>;\r\n \r\n /** Search query string for highlighting. Default: '' */\r\n searchQuery?: string;\r\n \r\n /** Array of search match locations. Default: [] */\r\n searchMatches?: Array<{ path: any; offset: number; text: string }>;\r\n \r\n /** Index of current search match. Default: 0 */\r\n currentMatchIndex?: number;\r\n \r\n /** Whether to show word count. Default: true */\r\n showWordCount?: boolean;\r\n \r\n /** Editor height. Default: '200px' */\r\n height?: string | number;\r\n \r\n /** Minimum editor height. Default: '150px' */\r\n minHeight?: string | number;\r\n \r\n /** Maximum editor height. Default: '250px' */\r\n maxHeight?: string | number;\r\n}\r\n\r\ndeclare module 'slate' {\r\n interface CustomTypes {\r\n Element: CustomElement | LinkElement | ImageElement | TableElement | TableRowElement | TableCellElement;\r\n Text: CustomText;\r\n }\r\n}","import React, { useMemo, useCallback, useState, useEffect } from 'react';\r\nimport { createEditor, Descendant, Editor, Element as SlateElement, Text, Transforms, Range } from 'slate';\r\nimport { Slate, Editable, withReact, RenderElementProps, RenderLeafProps } from 'slate-react';\r\nimport { withHistory, HistoryEditor } from 'slate-history';\r\nimport Toolbar from './Toolbar';\r\nimport ResizableImage from './ResizableImage';\r\nimport { TableComponent, TableRowComponent, TableCellComponent } from './TableElement';\r\nimport { EditiumProps, CustomElement, CustomText, LinkElement, ImageElement, TableElement, TableRowElement, TableCellElement, ALL_TOOLBAR_ITEMS } from './types';\r\nimport { defaultInitialValue, serializeToHtml, toggleMark, unwrapLink, getTextContent, countWords, countCharacters, countCharactersNoSpaces } from './utils';\r\n\r\nconst renderLeaf = ({ attributes, children, leaf }: RenderLeafProps) => {\r\n const textLeaf = leaf as CustomText;\r\n \r\n if (textLeaf.bold) {\r\n children = <strong>{children}</strong>;\r\n }\r\n\r\n if (textLeaf.italic) {\r\n children = <em>{children}</em>;\r\n }\r\n\r\n if (textLeaf.underline) {\r\n children = <u>{children}</u>;\r\n }\r\n\r\n if (textLeaf.strikethrough) {\r\n children = <s>{children}</s>;\r\n }\r\n\r\n if (textLeaf.superscript) {\r\n children = <sup>{children}</sup>;\r\n }\r\n\r\n if (textLeaf.subscript) {\r\n children = <sub>{children}</sub>;\r\n }\r\n\r\n if (textLeaf.code) {\r\n children = <code style={{ \r\n backgroundColor: '#f4f4f4', \r\n padding: '2px 4px', \r\n borderRadius: '3px', \r\n fontFamily: 'monospace' \r\n }}>{children}</code>;\r\n }\r\n\r\n const style: React.CSSProperties = {};\r\n if (textLeaf.color) {\r\n style.color = textLeaf.color;\r\n }\r\n if (textLeaf.backgroundColor) {\r\n style.backgroundColor = textLeaf.backgroundColor;\r\n }\r\n \r\n if (textLeaf.searchCurrent) {\r\n style.backgroundColor = '#ff9800';\r\n style.color = '#fff';\r\n } else if (textLeaf.search) {\r\n style.backgroundColor = '#ffeb3b';\r\n }\r\n\r\n return <span {...attributes} style={Object.keys(style).length > 0 ? style : undefined}>{children}</span>;\r\n};\r\n\r\nconst parseInitialValue = (initialValue?: string | CustomElement[]): CustomElement[] => {\r\n if (!initialValue) {\r\n return defaultInitialValue;\r\n }\r\n\r\n if (typeof initialValue === 'string') {\r\n if (initialValue.trim() === '') {\r\n return defaultInitialValue;\r\n }\r\n return [\r\n {\r\n type: 'paragraph',\r\n children: [{ text: initialValue }],\r\n },\r\n ];\r\n }\r\n\r\n return initialValue.length > 0 ? initialValue : defaultInitialValue;\r\n};\r\n\r\nconst withTables = (editor: any) => {\r\n const { normalizeNode } = editor;\r\n\r\n editor.normalizeNode = (entry: any) => {\r\n const [node, path] = entry;\r\n\r\n if (SlateElement.isElement(node) && node.type === 'table') {\r\n for (const [child, childPath] of Array.from(Editor.nodes(editor, { at: path }))) {\r\n if (childPath.length === path.length + 1 && SlateElement.isElement(child) && child.type !== 'table-row') {\r\n Transforms.removeNodes(editor, { at: childPath });\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (SlateElement.isElement(node) && node.type === 'table-row') {\r\n for (const [child, childPath] of Array.from(Editor.nodes(editor, { at: path }))) {\r\n if (childPath.length === path.length + 1 && SlateElement.isElement(child) && child.type !== 'table-cell') {\r\n Transforms.removeNodes(editor, { at: childPath });\r\n return;\r\n }\r\n }\r\n }\r\n\r\n normalizeNode(entry);\r\n };\r\n\r\n return editor;\r\n};\r\n\r\nconst Editium: React.FC<EditiumProps> = ({\r\n initialValue,\r\n onChange,\r\n toolbar = ['bold', 'italic', 'underline', 'heading-one', 'heading-two', 'bulleted-list', 'numbered-list', 'link'],\r\n placeholder = 'Start typing...',\r\n className = '',\r\n style = {},\r\n readOnly = false,\r\n onImageUpload,\r\n searchQuery: externalSearchQuery,\r\n searchMatches: externalSearchMatches,\r\n currentMatchIndex: externalCurrentMatchIndex,\r\n showWordCount = true,\r\n height = '200px',\r\n minHeight = '150px',\r\n maxHeight = '250px',\r\n}) => {\r\n\r\n const toolbarItems = toolbar === 'all' ? ALL_TOOLBAR_ITEMS : toolbar;\r\n const editor = useMemo(() => withTables(withHistory(withReact(createEditor()))), []);\r\n const [value, setValue] = useState<CustomElement[]>(() => parseInitialValue(initialValue));\r\n const [showOutputModal, setShowOutputModal] = useState<'html' | 'json' | 'preview' | null>(null);\r\n const [copySuccess, setCopySuccess] = useState(false);\r\n const [showLinkPopup, setShowLinkPopup] = useState(false);\r\n const [linkPopupPosition, setLinkPopupPosition] = useState({ x: 0, y: 0 });\r\n const [selectedLink, setSelectedLink] = useState<LinkElement | null>(null);\r\n const [isFullscreen, setIsFullscreen] = useState(false);\r\n \r\n const [internalSearchQuery, setInternalSearchQuery] = useState('');\r\n const [internalSearchMatches, setInternalSearchMatches] = useState<Array<{ path: any; offset: number; text: string }>>([]);\r\n const [internalCurrentMatchIndex, setInternalCurrentMatchIndex] = useState(0);\r\n \r\n const searchQuery = externalSearchQuery !== undefined ? externalSearchQuery : internalSearchQuery;\r\n const searchMatches = externalSearchMatches !== undefined ? externalSearchMatches : internalSearchMatches;\r\n const currentMatchIndex = externalCurrentMatchIndex !== undefined ? externalCurrentMatchIndex : internalCurrentMatchIndex;\r\n \r\n useEffect(() => {\r\n (window as any).__editiumProps = { onImageUpload };\r\n return () => {\r\n delete (window as any).__editiumProps;\r\n };\r\n }, [onImageUpload]);\r\n const [selectedLinkPath, setSelectedLinkPath] = useState<any>(null);\r\n\r\n const handleFullscreenToggle = useCallback(() => {\r\n setIsFullscreen(!isFullscreen);\r\n }, [isFullscreen]);\r\n\r\n useEffect(() => {\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === 'F11') {\r\n event.preventDefault();\r\n setIsFullscreen(!isFullscreen);\r\n }\r\n if (event.key === 'Escape' && isFullscreen) {\r\n event.preventDefault();\r\n setIsFullscreen(false);\r\n }\r\n };\r\n\r\n window.addEventListener('keydown', handleKeyDown);\r\n return () => window.removeEventListener('keydown', handleKeyDown);\r\n }, [isFullscreen]);\r\n\r\n useEffect(() => {\r\n if (isFullscreen) {\r\n const originalOverflow = document.body.style.overflow;\r\n document.body.style.overflow = 'hidden';\r\n \r\n return () => {\r\n document.body.style.overflow = originalOverflow;\r\n };\r\n }\r\n }, [isFullscreen]);\r\n\r\n // Handle keyboard shortcuts\r\n const handleKeyDown = useCallback((event: React.KeyboardEvent) => {\r\n if (event.key === 'Delete' || event.key === 'Backspace') {\r\n const { selection } = editor;\r\n if (selection) {\r\n const [imageNode] = Array.from(\r\n Editor.nodes(editor, {\r\n at: selection,\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n n.type === 'image',\r\n })\r\n );\r\n \r\n if (imageNode) {\r\n event.preventDefault();\r\n const [, imagePath] = imageNode;\r\n Transforms.removeNodes(editor, { at: imagePath });\r\n return;\r\n }\r\n \r\n if (event.key === 'Delete' && Range.isCollapsed(selection)) {\r\n try {\r\n const after = Editor.after(editor, selection);\r\n if (after) {\r\n const [nextNode] = Array.from(\r\n Editor.nodes(editor, {\r\n at: after,\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n n.type === 'image',\r\n })\r\n );\r\n \r\n if (nextNode) {\r\n event.preventDefault();\r\n const [, nextPath] = nextNode;\r\n Transforms.removeNodes(editor, { at: nextPath });\r\n return;\r\n }\r\n }\r\n } catch (e) {\r\n // Ignore errors if we can't find next node\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!event.ctrlKey && !event.metaKey) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case 'b':\r\n event.preventDefault();\r\n toggleMark(editor, 'bold');\r\n break;\r\n case 'i':\r\n event.preventDefault();\r\n toggleMark(editor, 'italic');\r\n break;\r\n case 'u':\r\n event.preventDefault();\r\n toggleMark(editor, 'underline');\r\n break;\r\n case '`':\r\n event.preventDefault();\r\n toggleMark(editor, 'code');\r\n break;\r\n case 'd':\r\n event.preventDefault();\r\n toggleMark(editor, 'strikethrough');\r\n break;\r\n case 'z':\r\n if (event.shiftKey) {\r\n event.preventDefault();\r\n HistoryEditor.redo(editor as HistoryEditor);\r\n } else {\r\n event.preventDefault();\r\n HistoryEditor.undo(editor as HistoryEditor);\r\n }\r\n break;\r\n case 'y':\r\n event.preventDefault();\r\n HistoryEditor.redo(editor as HistoryEditor);\r\n break;\r\n }\r\n }, [editor]);\r\n\r\n const handleChange = useCallback((newValue: Descendant[]) => {\r\n setValue(newValue as CustomElement[]);\r\n \r\n if (onChange) {\r\n const htmlValue = serializeToHtml(newValue as (CustomElement | LinkElement)[]);\r\n onChange(htmlValue, newValue as CustomElement[]);\r\n }\r\n }, [onChange]);\r\n\r\n const textContent = useMemo(() => getTextContent(editor.children), [editor.children]);\r\n const wordCount = useMemo(() => countWords(textContent), [textContent]);\r\n const charCount = useMemo(() => countCharacters(textContent), [textContent]);\r\n const charCountNoSpaces = useMemo(() => countCharactersNoSpaces(textContent), [textContent]);\r\n\r\n useEffect(() => {\r\n if (initialValue !== undefined) {\r\n const parsedValue = parseInitialValue(initialValue);\r\n setValue(parsedValue);\r\n }\r\n }, [initialValue]);\r\n\r\n const handleCopy = useCallback(() => {\r\n const currentValue = editor.children as CustomElement[];\r\n const textToCopy = showOutputModal === 'html' \r\n ? serializeToHtml(currentValue)\r\n : JSON.stringify(currentValue, null, 2);\r\n \r\n navigator.clipboard.writeText(textToCopy).then(() => {\r\n setCopySuccess(true);\r\n setTimeout(() => setCopySuccess(false), 2000);\r\n });\r\n }, [showOutputModal, editor]);\r\n\r\n const handleLinkClick = useCallback((event: React.MouseEvent, linkElement: LinkElement) => {\r\n event.preventDefault();\r\n \r\n const [linkEntry] = Array.from(\r\n Editor.nodes(editor, {\r\n match: (n: any) => n.type === 'link' && n.url === linkElement.url,\r\n })\r\n );\r\n \r\n if (linkEntry) {\r\n const [linkNode, path] = linkEntry;\r\n setSelectedLinkPath(path);\r\n }\r\n \r\n const rect = (event.target as HTMLElement).getBoundingClientRect();\r\n setLinkPopupPosition({ \r\n x: rect.left + window.scrollX, \r\n y: rect.bottom + window.scrollY + 5 \r\n });\r\n setSelectedLink(linkElement);\r\n setShowLinkPopup(true);\r\n }, [editor]);\r\n\r\n const decorate = useCallback(([node, path]: any) => {\r\n const ranges: any[] = [];\r\n \r\n if (searchQuery && searchMatches.length > 0 && Text.isText(node)) {\r\n searchMatches.forEach((match, index) => {\r\n if (JSON.stringify(match.path) === JSON.stringify(path)) {\r\n ranges.push({\r\n anchor: { path, offset: match.offset },\r\n focus: { path, offset: match.offset + match.text.length },\r\n search: true,\r\n searchCurrent: index === currentMatchIndex,\r\n });\r\n }\r\n });\r\n }\r\n \r\n return ranges;\r\n }, [searchQuery, searchMatches, currentMatchIndex]);\r\n\r\n const renderElementWithHandlers = useCallback((props: RenderElementProps) => {\r\n const { attributes, children, element } = props;\r\n const style = { margin: '0', fontWeight: 'normal' };\r\n const alignStyle = (element as CustomElement).align ? { \r\n textAlign: (element as CustomElement).align as 'left' | 'center' | 'right' | 'justify' \r\n } : {};\r\n const combinedStyle = { ...style, ...alignStyle };\r\n \r\n switch ((element as CustomElement | LinkElement).type) {\r\n case 'paragraph':\r\n return <p {...attributes} style={combinedStyle}>{children}</p>;\r\n case 'heading-one':\r\n return <h1 {...attributes} style={{...combinedStyle, fontSize: '2em', margin: '0'}}>{children}</h1>;\r\n case 'heading-two':\r\n return <h2 {...attributes} style={{...combinedStyle, fontSize: '1.5em', margin: '0'}}>{children}</h2>;\r\n case 'heading-three':\r\n return <h3 {...attributes} style={{...combinedStyle, fontSize: '1.25em', margin: '0'}}>{children}</h3>;\r\n case 'heading-four':\r\n return <h4 {...attributes} style={{...combinedStyle, fontSize: '1.1em', margin: '0'}}>{children}</h4>;\r\n case 'heading-five':\r\n return <h5 {...attributes} style={{...combinedStyle, fontSize: '1em', margin: '0'}}>{children}</h5>;\r\n case 'heading-six':\r\n return <h6 {...attributes} style={{...combinedStyle, fontSize: '0.9em', margin: '0'}}>{children}</h6>;\r\n case 'heading-seven':\r\n return <h1 {...attributes} style={{...combinedStyle, fontSize: '0.85em', margin: '0'}}>{children}</h1>;\r\n case 'heading-eight':\r\n return <h1 {...attributes} style={{...combinedStyle, fontSize: '0.8em', margin: '0'}}>{children}</h1>;\r\n case 'bulleted-list':\r\n return <ul {...attributes} style={{...style, margin: '0'}}>{children}</ul>;\r\n case 'numbered-list':\r\n return <ol {...attributes} style={{...style, margin: '0'}}>{children}</ol>;\r\n case 'list-item':\r\n return <li {...attributes}>{children}</li>;\r\n case 'blockquote':\r\n return (\r\n <blockquote \r\n {...attributes} \r\n style={{\r\n ...combinedStyle,\r\n borderLeft: '4px solid #ddd',\r\n paddingLeft: '16px',\r\n marginLeft: '0',\r\n marginRight: '0',\r\n color: '#666',\r\n fontStyle: 'italic'\r\n }}\r\n >\r\n {children}\r\n </blockquote>\r\n );\r\n case 'code-block':\r\n return (\r\n <pre \r\n {...attributes}\r\n style={{\r\n backgroundColor: '#f5f5f5',\r\n padding: '16px',\r\n borderRadius: '4px',\r\n overflow: 'auto',\r\n fontFamily: 'monospace',\r\n fontSize: '14px',\r\n lineHeight: '1.5',\r\n margin: '0'\r\n }}\r\n >\r\n <code>{children}</code>\r\n </pre>\r\n );\r\n case 'horizontal-rule':\r\n return (\r\n <div {...attributes} contentEditable={false} style={{ userSelect: 'none' }}>\r\n <hr style={{ \r\n border: 'none',\r\n borderTop: '2px solid #ddd',\r\n margin: '16px 0'\r\n }} />\r\n {children}\r\n </div>\r\n );\r\n case 'image':\r\n const imageElement = element as ImageElement;\r\n return <ResizableImage element={imageElement} attributes={attributes} children={children} />;\r\n case 'table':\r\n const tableElement = element as TableElement;\r\n return <TableComponent element={tableElement} attributes={attributes} children={children} />;\r\n case 'table-row':\r\n const tableRowElement = element as TableRowElement;\r\n return <TableRowComponent element={tableRowElement} attributes={attributes} children={children} />;\r\n case 'table-cell':\r\n const tableCellElement = element as TableCellElement;\r\n return <TableCellComponent element={tableCellElement} attributes={attributes} children={children} />;\r\n case 'link':\r\n const linkElement = element as LinkElement;\r\n return (\r\n <a \r\n {...attributes} \r\n href={linkElement.url}\r\n title={linkElement.title}\r\n onClick={(e) => handleLinkClick(e, linkElement)}\r\n style={{ \r\n color: '#0066cc', \r\n textDecoration: 'underline',\r\n cursor: 'pointer'\r\n }}\r\n >\r\n {children}\r\n </a>\r\n );\r\n default:\r\n return <p {...attributes} style={combinedStyle}>{children}</p>;\r\n }\r\n }, [handleLinkClick]);\r\n\r\n const handleOpenLink = useCallback(() => {\r\n if (selectedLink) {\r\n window.open(selectedLink.url, selectedLink.target || '_self');\r\n setShowLinkPopup(false);\r\n }\r\n }, [selectedLink]);\r\n\r\n const handleRemoveLink = useCallback(() => {\r\n if (selectedLink) {\r\n const linkEntries = Array.from(\r\n Editor.nodes(editor, {\r\n match: (n: any) => \r\n !Editor.isEditor(n) && \r\n SlateElement.isElement(n) && \r\n n.type === 'link' && \r\n n.url === selectedLink.url,\r\n })\r\n );\r\n \r\n if (linkEntries.length > 0) {\r\n const [linkNode, linkPath] = linkEntries[0];\r\n const link = linkNode as LinkElement;\r\n \r\n if (linkPath.length === 1) {\r\n const textChildren = link.children;\r\n \r\n Transforms.removeNodes(editor, { at: linkPath });\r\n \r\n Transforms.insertNodes(editor, {\r\n type: 'paragraph',\r\n children: textChildren,\r\n } as CustomElement, {\r\n at: linkPath,\r\n });\r\n } else {\r\n Transforms.unwrapNodes(editor, {\r\n at: linkPath,\r\n });\r\n }\r\n }\r\n \r\n setShowLinkPopup(false);\r\n }\r\n }, [selectedLink, editor]);\r\n\r\n const handleEditLink = useCallback(() => {\r\n if (selectedLink && selectedLinkPath) {\r\n const linkText = Editor.string(editor, selectedLinkPath);\r\n \r\n if ((window as any).__editiumLinkEditHandler) {\r\n (window as any).__editiumLinkEditHandler({\r\n url: selectedLink.url,\r\n title: selectedLink.title,\r\n target: selectedLink.target,\r\n text: linkText,\r\n path: selectedLinkPath\r\n });\r\n }\r\n }\r\n setShowLinkPopup(false);\r\n }, [selectedLink, selectedLinkPath, editor]);\r\n\r\n const formatHtml = useCallback((html: string): string => {\r\n let formatted = '';\r\n let indent = 0;\r\n const tab = ' ';\r\n \r\n html.split(/(<[^>]+>)/g).forEach(part => {\r\n if (part.trim() === '') return;\r\n \r\n if (part.startsWith('</')) {\r\n indent--;\r\n formatted += tab.repeat(Math.max(0, indent)) + part + '\\n';\r\n } else if (part.startsWith('<')) {\r\n formatted += tab.repeat(indent) + part + '\\n';\r\n if (!part.includes('</') && !part.endsWith('/>')) {\r\n indent++;\r\n }\r\n } else {\r\n formatted += tab.repeat(indent) + part.trim() + '\\n';\r\n }\r\n });\r\n \r\n return formatted.trim();\r\n }, []);\r\n\r\n const editorStyle: React.CSSProperties = {\r\n border: '1px solid #ccc',\r\n borderTop: 'none',\r\n borderRadius: toolbar.length > 0 ? '0' : '4px 4px 0 0',\r\n borderBottom: 'none',\r\n padding: '16px',\r\n height: typeof height === 'number' ? `${height}px` : height,\r\n minHeight: typeof minHeight === 'number' ? `${minHeight}px` : minHeight,\r\n maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight,\r\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n fontSize: '14px',\r\n lineHeight: '1.6',\r\n outline: 'none',\r\n backgroundColor: '#fff',\r\n position: 'relative',\r\n overflow: 'auto',\r\n ...style,\r\n };\r\n\r\n const containerStyle: React.CSSProperties = isFullscreen ? {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n zIndex: 9999,\r\n backgroundColor: '#fff',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'hidden',\r\n } : {};\r\n\r\n const editableStyle: React.CSSProperties = isFullscreen ? {\r\n ...editorStyle,\r\n flex: 1,\r\n overflow: 'auto',\r\n border: 'none',\r\n borderRadius: 0,\r\n // Remove height constraints in fullscreen mode\r\n height: 'auto',\r\n minHeight: 'auto',\r\n maxHeight: 'none',\r\n } : editorStyle;\r\n\r\n return (\r\n <>\r\n <style>\r\n {`\r\n [data-slate-editor] {\r\n position: relative;\r\n min-height: inherit;\r\n height: 100%;\r\n }\r\n \r\n /* Custom scrollbar styling for better UX */\r\n [data-slate-editor]::-webkit-scrollbar {\r\n width: 8px;\r\n height: 8px;\r\n }\r\n \r\n [data-slate-editor]::-webkit-scrollbar-track {\r\n background: #f1f1f1;\r\n border-radius: 4px;\r\n }\r\n \r\n [data-slate-editor]::-webkit-scrollbar-thumb {\r\n background: #c1c1c1;\r\n border-radius: 4px;\r\n }\r\n \r\n [data-slate-editor]::-webkit-scrollbar-thumb:hover {\r\n background: #a8a8a8;\r\n }\r\n \r\n [data-slate-editor] [data-slate-placeholder] {\r\n opacity: 0.333;\r\n pointer-events: none;\r\n user-select: none;\r\n display: inline-block !important;\r\n width: 100%;\r\n max-width: 100%;\r\n white-space: nowrap;\r\n margin: 0 !important;\r\n vertical-align: text-top;\r\n }\r\n \r\n [data-slate-editor] p,\r\n [data-slate-editor] h1,\r\n [data-slate-editor] h2,\r\n [data-slate-editor] h3,\r\n [data-slate-editor] h4,\r\n [data-slate-editor] h5,\r\n [data-slate-editor] h6 {\r\n position: relative;\r\n }\r\n \r\n [data-slate-editor] [contenteditable=\"true\"] {\r\n outline: none;\r\n position: relative;\r\n z-index: 1;\r\n }\r\n \r\n [data-slate-editor] > * {\r\n margin: 0 !important;\r\n line-height: 1.6;\r\n }\r\n \r\n [data-slate-editor] p {\r\n margin: 0 !important;\r\n line-height: 1.6;\r\n }\r\n \r\n [data-slate-editor] h1,\r\n [data-slate-editor] h2,\r\n [data-slate-editor] h3,\r\n [data-slate-editor] h4,\r\n [data-slate-editor] h5,\r\n [data-slate-editor] h6 {\r\n margin: 0 !important;\r\n line-height: 1.6;\r\n }\r\n \r\n [data-slate-editor] ul,\r\n [data-slate-editor] ol {\r\n margin: 0 !important;\r\n padding-left: 24px;\r\n }\r\n `}\r\n </style>\r\n <div className={className} style={containerStyle}>\r\n {showLinkPopup && (\r\n <div\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n zIndex: 9998,\r\n }}\r\n onClick={() => setShowLinkPopup(false)}\r\n >\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: `${linkPopupPosition.y}px`,\r\n left: `${linkPopupPosition.x}px`,\r\n backgroundColor: '#ffffff',\r\n border: '1px solid #d1d5db',\r\n borderRadius: '8px',\r\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\r\n minWidth: '200px',\r\n overflow: 'hidden',\r\n zIndex: 9999,\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n {selectedLink && (\r\n <div style={{ padding: '8px 12px', borderBottom: '1px solid #e5e7eb', backgroundColor: '#f9fafb' }}>\r\n <div style={{ fontSize: '12px', color: '#6b7280', marginBottom: '4px' }}>Link URL:</div>\r\n <div style={{ \r\n fontSize: '13px', \r\n color: '#111827', \r\n wordBreak: 'break-all',\r\n fontFamily: 'monospace'\r\n }}>\r\n {selectedLink.url}\r\n </div>\r\n </div>\r\n )}\r\n <button\r\n onClick={handleOpenLink}\r\n style={{\r\n width: '100%',\r\n padding: '12px 16px',\r\n border: 'none',\r\n backgroundColor: 'transparent',\r\n color: '#374151',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px',\r\n fontWeight: '500',\r\n }}\r\n onMouseEnter={(e) => e.currentTarget.style.backgroundColor = '#f3f4f6'}\r\n onMouseLeave={(e) => e.currentTarget.style.backgroundColor = 'transparent'}\r\n >\r\n <svg style={{ width: '16px', height: '16px' }} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\" />\r\n </svg>\r\n Open Link\r\n </button>\r\n <button\r\n onClick={handleEditLink}\r\n style={{\r\n width: '100%',\r\n padding: '12px 16px',\r\n border: 'none',\r\n backgroundColor: 'transparent',\r\n color: '#374151',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px',\r\n fontWeight: '500',\r\n }}\r\n onMouseEnter={(e) => e.currentTarget.style.backgroundColor = '#f3f4f6'}\r\n onMouseLeave={(e) => e.currentTarget.style.backgroundColor = 'transparent'}\r\n >\r\n <svg style={{ width: '16px', height: '16px' }} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z\" />\r\n </svg>\r\n Edit Link\r\n </button>\r\n <button\r\n onClick={handleRemoveLink}\r\n style={{\r\n width: '100%',\r\n padding: '12px 16px',\r\n border: 'none',\r\n borderTop: '1px solid #e5e7eb',\r\n backgroundColor: 'transparent',\r\n color: '#ef4444',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px',\r\n fontWeight: '500',\r\n }}\r\n onMouseEnter={(e) => e.currentTarget.style.backgroundColor = '#fef2f2'}\r\n onMouseLeave={(e) => e.currentTarget.style.backgroundColor = 'transparent'}\r\n >\r\n <svg style={{ width: '16px', height: '16px' }} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16\" />\r\n </svg>\r\n Remove Link\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n <Slate editor={editor} initialValue={value} onValueChange={handleChange}>\r\n {toolbarItems.length > 0 && (\r\n <Toolbar \r\n items={toolbarItems} \r\n onViewOutput={(type) => setShowOutputModal(type)} \r\n onEditLink={() => {}}\r\n searchQuery={searchQuery}\r\n searchMatches={searchMatches}\r\n currentMatchIndex={currentMatchIndex}\r\n onSearchQueryChange={setInternalSearchQuery}\r\n onSearchMatchesChange={setInternalSearchMatches}\r\n onCurrentMatchIndexChange={setInternalCurrentMatchIndex}\r\n isFullscreen={isFullscreen}\r\n onFullscreenToggle={handleFullscreenToggle}\r\n />\r\n )}\r\n <Editable\r\n renderElement={renderElementWithHandlers}\r\n renderLeaf={renderLeaf}\r\n decorate={decorate}\r\n placeholder={placeholder}\r\n onKeyDown={handleKeyDown}\r\n readOnly={readOnly}\r\n style={editableStyle}\r\n />\r\n </Slate>\r\n \r\n {/* Word and Character Counter / Branding Footer */}\r\n <div style={{\r\n padding: '8px 12px',\r\n backgroundColor: '#f9fafb',\r\n borderTop: '1px solid #e5e7eb',\r\n borderLeft: isFullscreen ? 'none' : '1px solid #ccc',\r\n borderRight: isFullscreen ? 'none' : '1px solid #ccc',\r\n borderBottom: isFullscreen ? 'none' : '1px solid #ccc',\r\n borderRadius: isFullscreen ? '0' : '0 0 4px 4px',\r\n display: 'flex',\r\n justifyContent: showWordCount ? 'space-between' : 'flex-end',\r\n alignItems: 'center',\r\n gap: '20px',\r\n fontSize: '12px',\r\n color: '#6b7280',\r\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n }}>\r\n {showWordCount && (\r\n <div style={{ display: 'flex', gap: '20px' }}>\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '6px' }}>\r\n <span style={{ fontWeight: '500', color: '#374151' }}>Words:</span>\r\n <span style={{ fontWeight: '600', color: '#111827' }}>{wordCount.toLocaleString()}</span>\r\n </div>\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '6px' }}>\r\n <span style={{ fontWeight: '500', color: '#374151' }}>Characters:</span>\r\n <span style={{ fontWeight: '600', color: '#111827' }}>{charCount.toLocaleString()}</span>\r\n </div>\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '6px' }}>\r\n <span style={{ fontWeight: '500', color: '#374151' }}>Characters (no spaces):</span>\r\n <span style={{ fontWeight: '600', color: '#111827' }}>{charCountNoSpaces.toLocaleString()}</span>\r\n </div>\r\n </div>\r\n )}\r\n <div style={{ \r\n display: 'flex', \r\n alignItems: 'center', \r\n gap: '6px',\r\n color: '#9ca3af',\r\n fontSize: '11px',\r\n }}>\r\n <span>Built with</span>\r\n <span \r\n style={{ \r\n fontWeight: '600', \r\n color: '#3b82f6',\r\n letterSpacing: '0.5px',\r\n cursor: 'pointer',\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n window.open('https://www.npmjs.com/package/editium', '_blank');\r\n }}\r\n >\r\n Editium\r\n </span>\r\n </div>\r\n </div>\r\n \r\n {showOutputModal && (\r\n <div\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n zIndex: 10000,\r\n }}\r\n onClick={() => {\r\n setShowOutputModal(null);\r\n setCopySuccess(false);\r\n }}\r\n >\r\n <div\r\n style={{\r\n backgroundColor: '#ffffff',\r\n borderRadius: '8px',\r\n padding: '24px',\r\n maxWidth: '900px',\r\n maxHeight: '85vh',\r\n width: '90%',\r\n overflow: 'hidden',\r\n boxShadow: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: '16px' }}>\r\n <h2 style={{ margin: 0, color: '#111827', fontSize: '24px', fontWeight: '600' }}>\r\n {showOutputModal === 'html' ? 'HTML Output' : showOutputModal === 'json' ? 'JSON Output' : 'Preview'}\r\n </h2>\r\n <div style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>\r\n {showOutputModal !== 'preview' && (\r\n <button\r\n onClick={handleCopy}\r\n style={{\r\n backgroundColor: copySuccess ? '#10b981' : '#3b82f6',\r\n color: '#ffffff',\r\n border: 'none',\r\n borderRadius: '6px',\r\n padding: '8px 16px',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n cursor: 'pointer',\r\n transition: 'all 0.2s ease-in-out',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '6px',\r\n }}\r\n onMouseEnter={(e) => {\r\n if (!copySuccess) {\r\n e.currentTarget.style.backgroundColor = '#2563eb';\r\n }\r\n }}\r\n onMouseLeave={(e) => {\r\n if (!copySuccess) {\r\n e.currentTarget.style.backgroundColor = '#3b82f6';\r\n }\r\n }}\r\n title=\"Copy to clipboard\"\r\n >\r\n {copySuccess ? (\r\n <>\r\n <svg style={{ width: '16px', height: '16px' }} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\r\n </svg>\r\n Copied!\r\n </>\r\n ) : (\r\n <>\r\n <svg style={{ width: '16px', height: '16px' }} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\r\n </svg>\r\n Copy\r\n </>\r\n )}\r\n </button>\r\n )}\r\n <button\r\n onClick={() => {\r\n setShowOutputModal(null);\r\n setCopySuccess(false);\r\n }}\r\n style={{\r\n background: 'none',\r\n border: 'none',\r\n fontSize: '24px',\r\n cursor: 'pointer',\r\n color: '#6b7280',\r\n padding: '4px',\r\n lineHeight: 1,\r\n }}\r\n title=\"Close\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div style={{ \r\n flex: 1, \r\n overflow: 'auto',\r\n backgroundColor: showOutputModal === 'preview' ? '#ffffff' : '#1e293b',\r\n borderRadius: '6px',\r\n border: showOutputModal === 'preview' ? '1px solid #e5e7eb' : '1px solid #334155',\r\n padding: showOutputModal === 'preview' ? '20px' : '0',\r\n }}>\r\n {showOutputModal === 'preview' ? (\r\n <div\r\n dangerouslySetInnerHTML={{ __html: serializeToHtml(editor.children as CustomElement[]) }}\r\n style={{\r\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n fontSize: '16px',\r\n lineHeight: '1.6',\r\n color: '#111827',\r\n }}\r\n />\r\n ) : (\r\n <pre\r\n style={{\r\n margin: 0,\r\n padding: '20px',\r\n fontSize: '13px',\r\n lineHeight: '1.6',\r\n fontFamily: 'Consolas, Monaco, \"Courier New\", monospace',\r\n color: '#e2e8f0',\r\n overflowX: 'auto',\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n <code>\r\n {showOutputModal === 'html' \r\n ? formatHtml(serializeToHtml(editor.children as CustomElement[]))\r\n : JSON.stringify(editor.children, null, 2)\r\n }\r\n </code>\r\n </pre>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Editium;"],"names":["Editor","SlateElement","Transforms","Range","Text","ReactEditor","useState","useRef","useEffect","_jsxs","_jsx","ChevronDownIcon","useSlate","HistoryEditor","CodeBracketIcon","ListBulletIcon","ArrowRightIcon","ArrowLeftIcon","LinkIcon","PhotoIcon","TableCellsIcon","ArrowUturnLeftIcon","ArrowUturnRightIcon","ArrowTopRightOnSquareIcon","MagnifyingGlassIcon","ArrowsPointingInIcon","ArrowsPointingOutIcon","_Fragment","ChevronLeftIcon","ChevronRightIcon","XMarkIcon","useSlateStatic","useSelected","useFocused","useCallback","PlusIcon","MinusIcon","Bars3BottomLeftIcon","Bars3Icon","Bars3BottomRightIcon","TrashIcon","useMemo","withHistory","withReact","createEditor","Slate","Editable"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAeA;AACO,IAAI,QAAQ,GAAG,WAAW;AACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,IAAI,EAAC;AACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,EAAC;AAyED;AACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,IAAI,CAAC,CAAC,CAAC;AACP,CAAC;AACD;AACO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;AAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;AACrM,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChK,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;AACtE,QAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AACtD,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;AACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;AAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxE,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AACjE,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAChI,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1G,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACzF,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AAC3C,aAAa;AACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzF,IAAI,CAAC;AACL,CAAC;AA8DD;AACO,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9C,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzF,QAAQ,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;AAChC,YAAY,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC;AA0GD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/B,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACrF;;ACvUO,IAAM,iBAAiB,GAAG,UAAC,MAAc,EAAE,SAAwB,EAAA;AAChE,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;AACjB,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,KAAK;IAErB,IAAA,KAAK,GAAI,KAAK,CAAC,IAAI,CACxBA,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QACnB,EAAE,EAAEA,YAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC;QACzC,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,CAAmB,CAAC,KAAK,KAAK,SAAS;QAFxC,CAEwC;KAC3C,CAAC,CACH,GARW;IAUZ,OAAO,CAAC,CAAC,KAAK;AAChB,CAAC;AAEM,IAAM,eAAe,GAAG,UAAC,MAAc,EAAE,SAAwB,EAAA;IACtE,IAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC;AAErD,IAAAC,gBAAU,CAAC,QAAQ,CACjB,MAAM,EACN,EAAE,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,EAAE,EAC3C;QACE,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACF,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAE,CAAmB,CAAC,IAAI,CAAC;QAFjL;AAGH,KAAA,CACF;AACH,CAAC;AAEM,IAAM,cAAc,GAAG,UAAC,MAAc,EAAA;AACnC,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;AACjB,IAAA,IAAI,CAAC,SAAS;QAAE;IAET,IAAA,aAAa,GAAI,KAAK,CAAC,IAAI,CAChCD,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,CAAmB,CAAC,IAAI,KAAK,WAAW;QAFzC,CAEyC;KAC5C,CAAC,CACH,GAPmB;AASpB,IAAA,IAAI,CAAC,aAAa;QAAE;IAEb,IAAA,SAAS,GAAI,KAAK,CAAC,IAAI,CAC5BD,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAE,CAAmB,CAAC,IAAI,CAAC;QAFtE,CAEsE;KACzE,CAAC,CACH,GAPe;IAShB,IAAI,SAAS,EAAE;AACN,QAAA,IAAA,UAAU,GAAI,SAAS,CAAA,CAAA,CAAb;AACjB,QAAA,IAAM,QAAQ,GAAI,UAA4B,CAAC,IAAI;AAEnD,QAAAC,gBAAU,CAAC,SAAS,CAClB,MAAM,EACN,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAmB,EACjD;YACE,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,gBAAA,OAAA,CAACF,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,oBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxB,CAAmB,CAAC,IAAI,KAAK,WAAW;YAFzC,CAEyC;AAC5C,SAAA,CACF;IACH;AACF,CAAC;AAEM,IAAM,eAAe,GAAG,UAAC,MAAc,EAAA;AACpC,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;AACjB,IAAA,IAAI,CAAC,SAAS;QAAE;IAEhB,IAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1BD,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAE,CAAmB,CAAC,IAAI,CAAC;QAFtE,CAEsE;AACzE,KAAA,CAAC,CACH;AAED,IAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,QAAAC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;YAC7B,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,gBAAA,OAAA,CAACF,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,oBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;oBACzB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAE,CAAmB,CAAC,IAAI,CAAC;YAFtE,CAEsE;AACxE,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;IACJ;AAAO,SAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,QAAAC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;YAC7B,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,gBAAA,OAAA,CAACF,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,oBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;oBACzB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAE,CAAmB,CAAC,IAAI,CAAC;YAFtE,CAEsE;AACzE,SAAA,CAAC;QAEFC,gBAAU,CAAC,QAAQ,CAAC,MAAM,EACxB,EAAE,IAAI,EAAE,WAAW,EAA4B,EAC/C;YACE,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,gBAAA,OAAA,CAACF,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,oBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxB,CAAmB,CAAC,IAAI,KAAK,WAAW;YAFzC;AAGH,SAAA,CACF;IACH;AACF,CAAC;AAEM,IAAM,YAAY,GAAG,UAAC,MAAc,EAAE,MAAkB,EAAA;IAC7D,IAAM,KAAK,GAAGD,YAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAClC,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,KAAK;AAC/C;AAEO,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,MAAiB,EAAA;AACrD,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;AACjB,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,KAAK;IAErB,IAAA,KAAK,GAAI,KAAK,CAAC,IAAI,CACxBA,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QACnB,EAAE,EAAEA,YAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC;QACzC,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,CAAmB,CAAC,IAAI,KAAK,MAAM;QAFpC,CAEoC;KACvC,CAAC,CACH,GARW;IAUZ,OAAO,CAAC,CAAC,KAAK;AAChB;AAEO,IAAM,UAAU,GAAG,UAAC,MAAc,EAAE,MAAkB,EAAA;IAC3D,IAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;IAE7C,IAAI,QAAQ,EAAE;AACZ,QAAAD,YAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;IACnC;SAAO;QACLA,YAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;IACtC;AACF;AAEO,IAAM,UAAU,GAAG,UAAC,MAAc,EAAE,KAAoB,EAAA;AAC7D,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,QAAAA,YAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;IACpC;SAAO;QACLA,YAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;IACxC;AACF,CAAC;AAEM,IAAM,oBAAoB,GAAG,UAAC,MAAc,EAAE,KAAoB,EAAA;AACvE,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,QAAAA,YAAM,CAAC,UAAU,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC9C;SAAO;QACLA,YAAM,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC;IAClD;AACF,CAAC;AAEM,IAAM,cAAc,GAAG,UAAC,MAAc,EAAA;IAC3C,IAAM,KAAK,GAAGA,YAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IAClC,OAAO,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,IAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;AAClD,CAAC;AAEM,IAAM,wBAAwB,GAAG,UAAC,MAAc,EAAA;IACrD,IAAM,KAAK,GAAGA,YAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IAClC,OAAO,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,uBAAL,KAAK,CAAE,eAAe,IAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI;AACtE,CAAC;AAEM,IAAM,WAAW,GAAG,UAAC,MAAc,EAAE,MAAiB,EAAA;IAC3D,IAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;AAC9C,IAAA,IAAM,MAAM,GAAG,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAElE,IAAAE,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;QAC7B,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACF,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAE,CAAmB,CAAC,IAAI,CAAC;QAFtE,CAEsE;AACxE,QAAA,KAAK,EAAE,IAAI;AACZ,KAAA,CAAC;AAEF,IAAA,IAAI,aAAqC;AACzC,IAAA,IAAI,MAAM,KAAK,WAAW,EAAE;AAC1B,QAAA,aAAa,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,EAAE;IAChE;SAAO;QACL,aAAa,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,EAAE;IAClF;AAEA,IAAAC,gBAAU,CAAC,QAAQ,CAAgB,MAAM,EAAE,aAAa,CAAC;AAEzD,IAAA,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE;QACvB,IAAM,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAmB;AAC7D,QAAAA,gBAAU,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;IACrC;AACF;AAEO,IAAM,oBAAoB,GAAG,UAAC,MAAc,EAAA;AACjD,IAAA,IAAM,EAAE,GAAkB;AACxB,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KACzB;AAED,IAAAA,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;AAElC,IAAA,IAAM,SAAS,GAAkB;AAC/B,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KACzB;AACD,IAAAA,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC;AAC3C,CAAC;AAEM,IAAM,WAAW,GAAG,UAAC,MAAc,EAAE,GAAW,EAAE,GAAY,EAAE,KAAc,EAAA;AACnF,IAAA,IAAM,KAAK,GAAQ;AACjB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,GAAG,EAAA,GAAA;QACH,GAAG,EAAE,GAAG,IAAI,OAAO;AACnB,QAAA,KAAK,EAAA,KAAA;AACL,QAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KACzB;AAED,IAAAA,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;AAErC,IAAA,IAAM,SAAS,GAAQ;AACrB,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KACzB;AACD,IAAAA,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC;AAC3C,CAAC;AAEM,IAAM,eAAe,GAAG,UAAC,GAAW,EAAA;AACzC,IAAA,IAAI;AACF,QAAA,IAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAA,IAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;QAC1F,IAAM,UAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE;AACjD,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,UAAA,GAAG,EAAA,EAAI,OAAA,UAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,CAAtB,CAAsB,CAAC;YACnD,SAAS,CAAC,QAAQ,KAAK,OAAO;AAC9B,YAAA,UAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC3B,YAAA,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClC,YAAA,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpC,YAAA,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;IAChD;AAAE,IAAA,OAAA,EAAA,EAAM;AACN,QAAA,OAAO,KAAK;IACd;AACF,CAAC;AAEM,IAAM,UAAU,GAAG,UAAC,MAAc,EAAE,GAAW,EAAE,KAAc,EAAE,MAA2B,EAAA;AACjG,IAAA,IAAI,MAAM,CAAC,SAAS,EAAE;QACpB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;IACtC;AACF;AAEO,IAAM,YAAY,GAAG,UAAC,MAAc,EAAA;IAClC,IAAA,IAAI,GAAI,KAAK,CAAC,IAAI,CACvBF,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,CAAiB,CAAC,IAAI,KAAK,MAAM;QAFlC,CAEkC;KACrC,CAAC,CACH,GAPU;IAQX,OAAO,CAAC,CAAC,IAAI;AACf;AAcO,IAAM,UAAU,GAAG,UAAC,MAAc,EAAA;AACvC,IAAAC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;QAC7B,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACF,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,CAAiB,CAAC,IAAI,KAAK,MAAM;QAFlC,CAEkC;AACrC,KAAA,CAAC;AACJ,CAAC;AAEM,IAAM,QAAQ,GAAG,UAAC,MAAc,EAAE,GAAW,EAAE,KAAc,EAAE,MAA2B,EAAA;AAC/F,IAAA,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;QACxB,UAAU,CAAC,MAAM,CAAC;IACpB;AAEQ,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;IACjB,IAAM,WAAW,GAAG,SAAS,IAAIE,WAAK,CAAC,WAAW,CAAC,SAAS,CAAC;IAC7D,IAAM,IAAI,gCACR,IAAI,EAAE,MAAM,EACZ,GAAG,KAAA,EAAA,GACC,KAAK,IAAI,EAAE,KAAK,EAAA,KAAA,EAAE,EAAC,GACnB,MAAM,IAAI,EAAE,MAAM,EAAA,MAAA,EAAE,EAAC,EAAA,EACzB,QAAQ,EAAE,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAA,CAC7C;IAED,IAAI,WAAW,EAAE;AACf,QAAAD,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;IACtC;SAAO;AACL,QAAAA,gBAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACnDA,gBAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC9C;AACF,CAAC;IAEY,WAAW,GAAG,UAAC,MAAc,EAAE,IAAgB,EAAE,IAAgB,EAAA;AAAlC,IAAA,IAAA,IAAA,KAAA,MAAA,EAAA,EAAA,IAAA,GAAA,CAAgB,CAAA,CAAA;AAAE,IAAA,IAAA,IAAA,KAAA,MAAA,EAAA,EAAA,IAAA,GAAA,CAAgB,CAAA,CAAA;IAC5E,IAAM,SAAS,GAAU,EAAE;AAE3B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;QAC7B,IAAM,KAAK,GAAU,EAAE;AACvB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC7B,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACzB,aAAA,CAAC;QACJ;QACA,SAAS,CAAC,IAAI,CAAC;AACb,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA,CAAC;IACJ;AAEA,IAAA,IAAM,KAAK,GAAQ;AACjB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,QAAQ,EAAE,SAAS;KACpB;AAED,IAAA,IAAM,SAAS,GAAQ;AACrB,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KACzB;IAEDA,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACpD;AAEO,IAAM,SAAS,GAAG,UAAC,MAAc,EAAA;AAC9B,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;AACjB,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,KAAK;IAErB,IAAA,UAAU,GAAI,KAAK,CAAC,IAAI,CAC7BF,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,IAAI,KAAK,OAAO;QAFlB,CAEkB;KACrB,CAAC,CACH,GARgB;IAUjB,OAAO,CAAC,CAAC,UAAU;AACrB;AAEO,IAAM,WAAW,GAAG,UAAC,MAAc,EAAA;;AAChC,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;AACjB,IAAA,IAAI,CAAC,SAAS;QAAE;IAET,IAAA,UAAU,GAAI,KAAK,CAAC,IAAI,CAC7BD,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,IAAI,KAAK,OAAO;QAFlB,CAEkB;KACrB,CAAC,CACH,GARgB;AAUjB,IAAA,IAAI,CAAC,UAAU;QAAE;IAEX,IAAA,EAAA,GAAqB,UAAyB,EAA7C,KAAK,QAAA,EAAE,SAAS,QAA6B;IACpD,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClC,IAAA,IAAM,QAAQ,GAAG,CAAA,CAAA,EAAA,GAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,KAAI,CAAC;IAEhD,IAAM,KAAK,GAAU,EAAE;AACvB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QACjC,KAAK,CAAC,IAAI,CAAC;AACT,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACzB,SAAA,CAAC;IACJ;AAEA,IAAA,IAAM,MAAM,GAAQ;AAClB,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,QAAQ,EAAE,KAAK;KAChB;AAED,IAAAC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;QACrC,EAAE,EAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAM,SAAS,EAAA,IAAA,CAAA,EAAA,CAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAA,EAAA,KAAA,CAAC;AAC1C,KAAA,CAAC;AACJ;AAEO,IAAM,cAAc,GAAG,UAAC,MAAc,EAAA;AACnC,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;AACjB,IAAA,IAAI,CAAC,SAAS;QAAE;IAET,IAAA,QAAQ,GAAI,KAAK,CAAC,IAAI,CAC3BF,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,IAAI,KAAK,WAAW;QAFtB,CAEsB;KACzB,CAAC,CACH,GARc;AAUf,IAAA,IAAI,CAAC,QAAQ;QAAE;AAET,IAAA,IAAA,EAAA,GAAc,QAAuB,EAAlC,OAAO,QAA2B;IAEpC,IAAA,UAAU,GAAI,KAAK,CAAC,IAAI,CAC7BD,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,IAAI,KAAK,OAAO;QAFlB,CAEkB;KACrB,CAAC,CACH,GARgB;IAUjB,IAAI,UAAU,EAAE;AACP,QAAA,IAAA,KAAK,GAAI,UAAyB,CAAA,CAAA,CAA7B;QACZ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AAC9B,YAAAC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;gBAC7B,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,oBAAA,OAAA,CAACF,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,wBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;wBACzB,CAAC,CAAC,IAAI,KAAK,OAAO;gBAFlB,CAEkB;AACrB,aAAA,CAAC;YACF;QACF;IACF;IAEAC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;AACjD;AAEO,IAAM,cAAc,GAAG,UAAC,MAAc,EAAA;AACnC,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;AACjB,IAAA,IAAI,CAAC,SAAS;QAAE;IAET,IAAA,UAAU,GAAI,KAAK,CAAC,IAAI,CAC7BF,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,IAAI,KAAK,OAAO;QAFlB,CAEkB;KACrB,CAAC,CACH,GARgB;AAUjB,IAAA,IAAI,CAAC,UAAU;QAAE;IAEX,IAAA,EAAA,GAAqB,UAAyB,EAA7C,KAAK,QAAA,EAAE,SAAS,QAA6B;IAEpD,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,IAAS,EAAE,QAAgB,EAAA;AACjD,QAAA,IAAM,OAAO,GAAQ;AACnB,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SACzB;AAED,QAAAC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE;AACtC,YAAA,EAAE,EAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAM,SAAS,EAAA,IAAA,CAAA,EAAA,CAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAA,EAAA,KAAA,CAAC;AACvE,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;AAEO,IAAM,iBAAiB,GAAG,UAAC,MAAc,EAAA;;AACtC,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;AACjB,IAAA,IAAI,CAAC,SAAS;QAAE;IAET,IAAA,SAAS,GAAI,KAAK,CAAC,IAAI,CAC5BF,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,IAAI,KAAK,YAAY;QAFvB,CAEuB;KAC1B,CAAC,CACH,GARe;AAUhB,IAAA,IAAI,CAAC,SAAS;QAAE;AAEV,IAAA,IAAA,EAAA,GAAe,SAAwB,EAApC,QAAQ,QAA4B;IAC7C,IAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAExC,IAAA,UAAU,GAAI,KAAK,CAAC,IAAI,CAC7BD,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,IAAI,KAAK,OAAO;QAFlB,CAEkB;KACrB,CAAC,CACH,GARgB;AAUjB,IAAA,IAAI,CAAC,UAAU;QAAE;IAEX,IAAA,EAAA,GAAqB,UAAyB,EAA7C,KAAK,QAAA,EAAE,SAAS,QAA6B;AAEpD,IAAA,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,KAAI,CAAC,EAAE;QAC5CC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;QACjD;IACF;AAEA,IAAA,KAAK,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;AACxE,QAAAA,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;AAC7B,YAAA,EAAE,kCAAM,SAAS,EAAA,IAAA,CAAA,EAAA,CAAE,QAAQ,EAAE,SAAS,CAAA,EAAA,KAAA,CAAC;AACxC,SAAA,CAAC;IACJ;AACF;AAEO,IAAM,iBAAiB,GAAG,UAAC,MAAc,EAAE,SAAwB,EAAA;AAChE,IAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;AACjB,IAAA,IAAI,CAAC,SAAS;QAAE;IAET,IAAA,UAAU,GAAI,KAAK,CAAC,IAAI,CAC7BF,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,YAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,gBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,IAAI,KAAK,OAAO;QAFlB,CAEkB;KACrB,CAAC,CACH,GARgB;AAUjB,IAAA,IAAI,CAAC,UAAU;QAAE;AAEX,IAAA,IAAA,EAAA,GAAgB,UAAyB,EAAtC,SAAS,QAA6B;AAE/C,IAAAC,gBAAU,CAAC,QAAQ,CACjB,MAAM,EACN,EAAE,KAAK,EAAE,SAAS,EAAS,EAC3B,EAAE,EAAE,EAAE,SAAS,EAAE,CAClB;AACH;AAEO,IAAM,cAAc,GAAG,UAAC,MAAc,EAAE,WAAmB,EAAA;AAChE,IAAA,IAAI,CAAC,WAAW;AAAE,QAAA,OAAO,EAAE;IAE3B,IAAM,OAAO,GAAwD,EAAE;AACvE,IAAA,IAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE;IAE7C,IAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1BF,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,KAAK,EAAE,UAAC,CAAM,EAAA,EAAK,OAAAI,UAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA,CAAd,CAAc;AAClC,KAAA,CAAC,CACH;AAED,IAAA,SAAS,CAAC,OAAO,CAAC,UAAC,EAAY,EAAA;YAAX,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA;QAC5B,IAAM,QAAQ,GAAG,IAAkB;AACnC,QAAA,IAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;AAC1B,QAAA,IAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;QAEpC,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE;YAC7D,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAA,IAAA;AACJ,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;AACxD,aAAA,CAAC;AACF,YAAA,KAAK,IAAI,WAAW,CAAC,MAAM;QAC7B;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,OAAO;AAChB;AAEO,IAAM,eAAe,GAAG,UAAC,MAAc,EAAE,KAAmD,EAAA;;AACjG,IAAA,IAAM,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;IACxD,IAAM,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;AAE1E,IAAAF,gBAAU,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAExD,IAAA,IAAM,QAAQ,GAAGG,sBAAW,CAAC,UAAU,CAAC,MAAa,EAAE,MAAM,CAAC,SAAU,CAAC;AACzE,IAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,cAAc,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,cAAc,CAAC;AACpD,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;AACJ;IAEa,YAAY,GAAG,UAC1B,MAAc,EACd,KAAmD,EACnD,WAAmB,EAAA;AAEnB,IAAA,IAAM,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;IACxD,IAAM,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;AAE1E,IAAAH,gBAAU,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxD,IAAAA,gBAAU,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC;AAC5C;IAEa,iBAAiB,GAAG,UAC/B,MAAc,EACd,OAA4D,EAC5D,WAAmB,EAAA;AAEnB,IAAA,IAAM,aAAa,GAAG,aAAA,CAAA,EAAA,EAAI,OAAO,EAAA,IAAA,CAAA,CAAE,OAAO,EAAE;AAE5C,IAAAF,YAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAA;AAChC,QAAA,aAAa,CAAC,OAAO,CAAC,UAAC,KAAK,EAAA;AAC1B,YAAA,IAAM,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;YACxD,IAAM,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;AAE1E,YAAAE,gBAAU,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxD,YAAAA,gBAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AACzB,YAAAA,gBAAU,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAC3D,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;AAEO,IAAM,eAAe,GAAG,UAAC,KAAqD,EAAA;IACnF,OAAO,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAA,EAAI,OAAA,aAAa,CAAC,IAAI,CAAC,CAAA,CAAnB,CAAmB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACxD;AAEA,IAAM,aAAa,GAAG,UAAC,IAA6D,EAAA;AAClF,IAAA,IAAIE,UAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACrB,IAAM,QAAQ,GAAG,IAAkB;QACnC,IAAI,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAEtC,IAAM,MAAM,GAAa,EAAE;QAC3B,IAAI,QAAQ,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,SAAA,CAAA,MAAA,CAAU,QAAQ,CAAC,KAAK,CAAE,CAAC;QAC3D,IAAI,QAAQ,CAAC,eAAe;YAAE,MAAM,CAAC,IAAI,CAAC,oBAAA,CAAA,MAAA,CAAqB,QAAQ,CAAC,eAAe,CAAE,CAAC;QAC1F,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,WAAA,CAAA,MAAA,CAAW,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAG,GAAG,EAAE;QAE1E,IAAI,QAAQ,CAAC,IAAI;AAAE,YAAA,MAAM,GAAG,UAAA,CAAA,MAAA,CAAW,MAAM,EAAA,WAAA,CAAW;QACxD,IAAI,QAAQ,CAAC,MAAM;AAAE,YAAA,MAAM,GAAG,MAAA,CAAA,MAAA,CAAO,MAAM,EAAA,OAAA,CAAO;QAClD,IAAI,QAAQ,CAAC,SAAS;AAAE,YAAA,MAAM,GAAG,KAAA,CAAA,MAAA,CAAM,MAAM,EAAA,MAAA,CAAM;QACnD,IAAI,QAAQ,CAAC,IAAI;AAAE,YAAA,MAAM,GAAG,QAAA,CAAA,MAAA,CAAS,MAAM,EAAA,SAAA,CAAS;QACpD,IAAI,QAAQ,CAAC,aAAa;AAAE,YAAA,MAAM,GAAG,KAAA,CAAA,MAAA,CAAM,MAAM,EAAA,MAAA,CAAM;QACvD,IAAI,QAAQ,CAAC,WAAW;AAAE,YAAA,MAAM,GAAG,OAAA,CAAA,MAAA,CAAQ,MAAM,EAAA,QAAA,CAAQ;QACzD,IAAI,QAAQ,CAAC,SAAS;AAAE,YAAA,MAAM,GAAG,OAAA,CAAA,MAAA,CAAQ,MAAM,EAAA,QAAA,CAAQ;QAEvD,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,GAAG,OAAA,CAAA,MAAA,CAAQ,SAAS,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,MAAM,YAAS;QAC/C;AAEA,QAAA,OAAO,MAAM;IACf;IAEA,IAAM,WAAW,GAAG,IAAkD;IACtE,IAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,CAAM,EAAA,EAAK,OAAA,aAAa,CAAC,CAAC,CAAC,CAAA,CAAhB,CAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAChF,IAAA,IAAM,UAAU,GAAI,WAA6B,CAAC,KAAK,GAAG,uBAAA,CAAA,MAAA,CAAwB,WAA6B,CAAC,KAAK,EAAA,IAAA,CAAG,GAAG,EAAE;AAE7H,IAAA,QAAQ,WAAW,CAAC,IAAI;AACtB,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,IAAA,CAAA,MAAA,CAAK,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,SAAM;AAC1C,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,KAAA,CAAA,MAAA,CAAM,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,UAAO;AAC5C,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,KAAA,CAAA,MAAA,CAAM,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,UAAO;AAC5C,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,KAAA,CAAA,MAAA,CAAM,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,UAAO;AAC5C,QAAA,KAAK,cAAc;AACjB,YAAA,OAAO,KAAA,CAAA,MAAA,CAAM,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,UAAO;AAC5C,QAAA,KAAK,cAAc;AACjB,YAAA,OAAO,KAAA,CAAA,MAAA,CAAM,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,UAAO;AAC5C,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,KAAA,CAAA,MAAA,CAAM,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,UAAO;AAC5C,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,KAAA,CAAA,MAAA,CAAM,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,UAAO;AAC5C,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,KAAA,CAAA,MAAA,CAAM,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,UAAO;AAC5C,QAAA,KAAK,eAAe;YAClB,OAAO,MAAA,CAAA,MAAA,CAAO,QAAQ,EAAA,OAAA,CAAO;AAC/B,QAAA,KAAK,eAAe;YAClB,OAAO,MAAA,CAAA,MAAA,CAAO,QAAQ,EAAA,OAAA,CAAO;AAC/B,QAAA,KAAK,WAAW;YACd,OAAO,MAAA,CAAA,MAAA,CAAO,QAAQ,EAAA,OAAA,CAAO;AAC/B,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,aAAA,CAAA,MAAA,CAAc,UAAU,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,kBAAe;AAC5D,QAAA,KAAK,YAAY;YACf,OAAO,aAAA,CAAA,MAAA,CAAc,QAAQ,EAAA,eAAA,CAAe;AAC9C,QAAA,KAAK,iBAAiB;AACpB,YAAA,OAAO,QAAQ;AACjB,QAAA,KAAK,OAAO;YACV,IAAM,SAAS,GAAG,WAAkB;AACpC,YAAA,IAAM,eAAe,GAAG,SAAS,CAAC,KAAK,GAAG,gBAAA,CAAA,MAAA,CACxC,SAAS,CAAC,KAAK,KAAK,QAAQ,GAAG,MAAM;gBACrC,SAAS,CAAC,KAAK,KAAK,OAAO,GAAG,MAAM,GAAG,GAAG,EAAA,kBAAA,CAAA,CAAA,MAAA,CAE1C,SAAS,CAAC,KAAK,KAAK,QAAQ,GAAG,MAAM;AACrC,gBAAA,SAAS,CAAC,KAAK,KAAK,OAAO,GAAG,GAAG,GAAG,MAAM,EAAA,GAAA,CACzC,GAAG,EAAE;AACR,YAAA,IAAM,eAAe,GAAG,SAAS,CAAC,KAAK,GAAG,UAAA,CAAA,MAAA,CAAW,SAAS,CAAC,KAAK,EAAA,sBAAA,CAAsB,GAAG,eAAe;AAC5G,YAAA,OAAO,mDAA2C,eAAe,EAAA,yCAAA,CAAA,CAAA,MAAA,CAA0C,eAAe,EAAA,KAAA,CAAA,CAAA,MAAA,CAAK,QAAQ,aAAU;AACnJ,QAAA,KAAK,WAAW;YACd,OAAO,MAAA,CAAA,MAAA,CAAO,QAAQ,EAAA,OAAA,CAAO;AAC/B,QAAA,KAAK,YAAY;YACf,IAAM,QAAQ,GAAG,WAAkB;AACnC,YAAA,IAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,GAAG,eAAA,CAAA,MAAA,CAAgB,QAAQ,CAAC,KAAK,EAAA,GAAA,CAAG,GAAG,EAAE;AAC9E,YAAA,OAAO,mDAAA,CAAA,MAAA,CAAmD,cAAc,EAAA,KAAA,CAAA,CAAA,MAAA,CAAK,QAAQ,UAAO;AAC9F,QAAA,KAAK,OAAO;YACV,IAAM,SAAS,GAAG,WAA2B;YAC7C,IAAM,OAAO,GAAG,SAAS,CAAC,GAAG,GAAG,SAAA,CAAA,MAAA,CAAS,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAA,IAAA,CAAG,GAAG,cAAc;AACtF,YAAA,IAAM,SAAS,GAAG,SAAS,CAAC,KAAK,GAAG,WAAA,CAAA,MAAA,CAAW,SAAS,CAAC,KAAK,EAAA,IAAA,CAAG,GAAG,EAAE;AACtE,YAAA,IAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,YAAA,CAAA,MAAA,CAAY,SAAS,CAAC,MAAM,EAAA,IAAA,CAAG,GAAG,EAAE;AAC1E,YAAA,IAAM,aAAa,GAAG,SAAS,CAAC,KAAK,GAAG,mCAAA,CAAA,MAAA,CACtC,SAAS,CAAC,KAAK,KAAK,QAAQ,GAAG,QAAQ;AACvC,gBAAA,SAAS,CAAC,KAAK,KAAK,OAAO,GAAG,YAAY,GAAG,GAAG,EAAA,KAAA,CAC9C,GAAG,EAAE;AACT,YAAA,OAAO,qBAAa,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAA,IAAA,CAAA,CAAA,MAAA,CAAI,OAAO,CAAA,CAAA,MAAA,CAAG,SAAS,CAAA,CAAA,MAAA,CAAG,UAAU,CAAA,CAAA,MAAA,CAAG,aAAa,QAAK;AACxG,QAAA,KAAK,MAAM;YACT,IAAM,QAAQ,GAAG,WAA0B;YAC3C,IAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,WAAA,CAAA,MAAA,CAAW,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAA,IAAA,CAAG,GAAG,EAAE;AAChF,YAAA,IAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,YAAA,CAAA,MAAA,CAAY,QAAQ,CAAC,MAAM,EAAA,IAAA,CAAG,GAAG,EAAE;AACxE,YAAA,IAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,GAAG,4BAA4B,GAAG,EAAE;AAChF,YAAA,OAAO,oBAAY,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAA,IAAA,CAAA,CAAA,MAAA,CAAI,SAAS,CAAA,CAAA,MAAA,CAAG,UAAU,CAAA,CAAA,MAAA,CAAG,OAAO,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,QAAQ,SAAM;AACnG,QAAA;AACE,YAAA,OAAO,QAAQ;;AAErB,CAAC;AAED,IAAM,UAAU,GAAG,UAAC,IAAY,EAAA;IAC9B,IAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,IAAA,GAAG,CAAC,WAAW,GAAG,IAAI;IACtB,OAAO,GAAG,CAAC,SAAS;AACtB,CAAC;AAEM,IAAM,mBAAmB,GAAoB;AAClD,IAAA;AACE,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACzB,KAAA;;AAGI,IAAM,cAAc,GAAG,UAAC,KAAY,EAAA;AACzC,IAAA,OAAO;SACJ,GAAG,CAAC,UAAC,IAAS,EAAA;AACb,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YAC3B,OAAO,IAAI,CAAC,IAAI;QAClB;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC;AACA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC;SACA,IAAI,CAAC,EAAE,CAAC;AACb,CAAC;AAEM,IAAM,UAAU,GAAG,UAAC,IAAY,EAAA;AACrC,IAAA,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;IAC3B,IAAI,OAAO,KAAK,EAAE;AAAE,QAAA,OAAO,CAAC;IAE5B,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,GAAG,CAAC,EAAf,CAAe,CAAC,CAAC,MAAM;AACpE,CAAC;AAEM,IAAM,eAAe,GAAG,UAAC,IAAY,EAAA;IAC1C,OAAO,IAAI,CAAC,MAAM;AACpB,CAAC;AAEM,IAAM,uBAAuB,GAAG,UAAC,IAAY,EAAA;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;AACvC,CAAC;;AC5rBD,IAAM,QAAQ,GAA4B,UAAC,EAA4B,EAAA;AAA1B,IAAA,IAAA,OAAO,aAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;IAC7D,IAAA,EAAA,GAAsBE,cAAQ,CAAC,KAAK,CAAC,EAApC,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAmB;AAC3C,IAAA,IAAM,WAAW,GAAGC,YAAM,CAAiB,IAAI,CAAC;AAEhD,IAAAC,eAAS,CAAC,YAAA;QACR,IAAM,kBAAkB,GAAG,UAAC,KAAiB,EAAA;AAC3C,YAAA,IAAI,WAAW,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC9E,SAAS,CAAC,KAAK,CAAC;YAClB;AACF,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,QAAA,OAAO,YAAA,EAAM,OAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA,CAA7D,CAA6D;IAC5E,CAAC,EAAE,EAAE,CAAC;IAEN,QACEC,eAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,EAAA,QAAA,EAAA,CAC7EA,eAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,UAAC,CAAC,EAAA;oBACb,CAAC,CAAC,cAAc,EAAE;AAClB,oBAAA,SAAS,CAAC,CAAC,MAAM,CAAC;gBACpB,CAAC,EACD,KAAK,EAAE;oBACL,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;AACnD,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,MAAM,EAAE,GAAG;AACX,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,UAAU,EAAE,4BAA4B;AACxC,oBAAA,OAAO,EAAE,aAAa;AACtB,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,cAAc,EAAE,QAAQ;AACxB,oBAAA,SAAS,EAAE,MAAM;AACjB,oBAAA,SAAS,EAAE,MAAM;AACjB,oBAAA,UAAU,EAAE,QAAQ;iBACrB,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;oBACd,IAAI,CAAC,MAAM,EAAE;wBACX,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;oBACnD;AACF,gBAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;oBACd,IAAI,CAAC,MAAM,EAAE;wBACX,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa;oBACvD;AACF,gBAAA,CAAC,EAAA,QAAA,EAAA,CAEA,OAAO,EACRC,cAAA,CAACC,uBAAe,EAAA,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,CAAA,EAAA,CACzE,EAER,MAAM,KACLD,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,GAAG,EAAE,MAAM;AACX,oBAAA,IAAI,EAAE,GAAG;AACT,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,eAAe,EAAE,SAAS;AAC1B,oBAAA,MAAM,EAAE,gBAAgB;AACxB,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,SAAS,EAAE,+BAA+B;AAC1C,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,OAAO,EAAE;AACV,iBAAA,EAAA,QAAA,EAEA,QAAQ,EAAA,CACL,CACP,CAAA,EAAA,CACG;AAEV,CAAC;AAED,IAAM,aAAa,GAAiC,UAAC,EAAwC,EAAA;QAAtC,MAAM,GAAA,EAAA,CAAA,MAAA,EAAE,WAAW,GAAA,EAAA,CAAA,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;IAAO,QAChGA,cAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE;YACL,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;AACnD,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,4BAA4B;AACxC,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,UAAU,EAAE,QAAQ;SACrB,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;YACd,IAAI,CAAC,MAAM,EAAE;gBACX,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;YACnD;AACF,QAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;YACd,IAAI,CAAC,MAAM,EAAE;gBACX,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa;YACvD;QACF,CAAC,EAAA,QAAA,EAEA,QAAQ,EAAA,CACF;AAlCuF,CAmCjG;AAED,IAAM,YAAY,GAKb,UAAC,EAAuC,EAAA;QAArC,MAAM,GAAA,EAAA,CAAA,MAAA,EAAE,WAAW,GAAA,EAAA,CAAA,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA;AAAO,IAAA,QAChDD,eAAA,CAAA,QAAA,EAAA,EACE,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,MAAM,EAAE,MAAM;YACd,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;AACnD,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,UAAU,EAAE,4BAA4B;AACxC,YAAA,YAAY,EAAE,GAAG;AACjB,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,GAAG,EAAE,MAAM;SACZ,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;YACd,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;AACnD,QAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;YACd,IAAI,CAAC,MAAM,EAAE;gBACX,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa;YACvD;AACF,QAAA,CAAC,EAAA,QAAA,EAAA,CAEA,IAAI,IAAIC,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAG,IAAI,EAAA,CAAQ,EACtI,QAAQ,IACF;AA9BuC,CA+BjD;AAED,IAAM,gBAAgB,GAAa,YAAA,EAAM,QACvCA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,MAAM,EAAE,OAAO;AACf,QAAA,SAAS,EAAE,QAAQ;KACpB,EAAA,CACD,EACH,CAVwC,CAUxC;AAED,IAAM,OAAO,GAA2B,UAAC,EAaxC,EAAA;;QAZC,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,YAAY,GAAA,EAAA,CAAA,YAAA,CAAA,CACF,EAAA,CAAA,UAAA,CAAA,KACV,mBAAiC,CAAA,CAApB,eAAe,mBAAG,EAAE,GAAA,EAAA,EACjC,EAAA,GAAA,EAAA,CAAA,aAAqC,CAAA,CAAtB,iBAAiB,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACrC,EAAA,GAAA,EAAA,CAAA,iBAA4C,CAAA,CAAzB,qBAAqB,GAAA,EAAA,KAAA,MAAA,GAAG,CAAC,KAAA,CAAA,CAC5C,mBAAmB,GAAA,EAAA,CAAA,mBAAA,CAAA,CACnB,qBAAqB,GAAA,EAAA,CAAA,qBAAA,EACrB,yBAAyB,GAAA,EAAA,CAAA,yBAAA,CAAA,CACzB,EAAA,GAAA,EAAA,CAAA,YAAoB,CAAA,CAApB,YAAY,mBAAG,KAAK,GAAA,EAAA,CAAA,CACpB,kBAAkB,GAAA,EAAA,CAAA;AAElB,IAAA,IAAM,MAAM,GAAGE,mBAAQ,EAAE;IACnB,IAAA,EAAA,GAAoCN,cAAQ,CAAC,KAAK,CAAC,EAAlD,aAAa,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,CAAA,CAAmB;IACnD,IAAA,EAAA,GAA0BA,cAAQ,CAAC,EAAE,CAAC,EAArC,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,WAAW,GAAA,EAAA,CAAA,CAAA,CAAgB;IACtC,IAAA,EAAA,GAAwBA,cAAQ,CAAC,EAAE,CAAC,EAAnC,OAAO,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAgB;IACpC,IAAA,EAAA,GAA4BA,cAAQ,CAAC,EAAE,CAAC,EAAvC,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,YAAY,GAAA,EAAA,CAAA,CAAA,CAAgB;IACxC,IAAA,EAAA,GAA8BA,cAAQ,CAAqB,OAAO,CAAC,EAAlE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,GAAA,EAAA,CAAA,CAAA,CAAyC;IACnE,IAAA,EAAA,GAAoCA,cAAQ,CAAC,KAAK,CAAC,EAAlD,aAAa,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,CAAA,CAAmB;IACnD,IAAA,EAAA,GAAgDA,cAAQ,CAAC,KAAK,CAAC,CAAA,CAA3C,EAAA,CAAA,CAAA,CAAA,CAAA,CAAwB,EAAA,CAAA,CAAA;AAC5C,IAAA,IAAA,KAAgDA,cAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA,MAApD,CAAA;IAEpB,IAAA,EAAA,GAAsCA,cAAQ,CAAC,KAAK,CAAC,EAApD,cAAc,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,iBAAiB,GAAA,EAAA,CAAA,CAAA,CAAmB;IACrD,IAAA,EAAA,GAA0BA,cAAQ,CAAC,EAAE,CAAC,EAArC,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,WAAW,GAAA,EAAA,CAAA,CAAA,CAAgB;IACtC,IAAA,EAAA,GAA0BA,cAAQ,CAAC,EAAE,CAAC,EAArC,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,WAAW,GAAA,EAAA,CAAA,CAAA,CAAgB;IACtC,IAAA,EAAA,GAA4BA,cAAQ,CAAc,IAAI,CAAC,EAAtD,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,YAAY,GAAA,EAAA,CAAA,CAAA,CAA+B;IACvD,IAAA,EAAA,GAA0CA,cAAQ,CAAC,EAAE,CAAC,EAArD,gBAAgB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,mBAAmB,GAAA,EAAA,CAAA,CAAA,CAAgB;IACtD,IAAA,EAAA,GAA0CA,cAAQ,CAAC,KAAK,CAAC,EAAxD,gBAAgB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,mBAAmB,GAAA,EAAA,CAAA,CAAA,CAAmB;IACzD,IAAA,EAAA,GAA8CA,cAAQ,CAAM,IAAI,CAAC,EAAhE,kBAAkB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,qBAAqB,GAAA,EAAA,CAAA,CAAA,CAAuB;IAEjE,IAAA,EAAA,GAAsCA,cAAQ,CAAC,KAAK,CAAC,EAApD,cAAc,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,iBAAiB,GAAA,EAAA,CAAA,CAAA,CAAmB;IACrD,IAAA,EAAA,GAA4BA,cAAQ,CAAC,CAAC,CAAC,EAAtC,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,YAAY,GAAA,EAAA,CAAA,CAAA,CAAe;IACvC,IAAA,EAAA,GAA4BA,cAAQ,CAAC,CAAC,CAAC,EAAtC,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,YAAY,GAAA,EAAA,CAAA,CAAA,CAAe;IAEvC,IAAA,EAAA,GAAwCA,cAAQ,CAAC,KAAK,CAAC,EAAtD,eAAe,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,kBAAkB,GAAA,EAAA,CAAA,CAAA,CAAmB;IACvD,IAAA,EAAA,GAAgCA,cAAQ,CAAC,EAAE,CAAC,EAA3C,WAAW,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,cAAc,GAAA,EAAA,CAAA,CAAA,CAAgB;IAC5C,IAAA,EAAA,GAAkCA,cAAQ,CAAC,CAAC,CAAC,EAA5C,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAAe;IAEnD,IAAM,WAAW,GAAG,eAAe;IACnC,IAAM,aAAa,GAAG,iBAAiB;IACvC,IAAM,iBAAiB,GAAG,qBAAqB;AAE/C,IAAA,IAAM,gBAAgB,GAAG,UAAC,KAAuB,EAAE,MAAkB,EAAA;QACnE,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5B,IAAA,CAAC;AAED,IAAA,IAAM,iBAAiB,GAAG,UAAC,KAAuB,EAAE,MAAiB,EAAA;QACnE,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7B,IAAA,CAAC;AAED,IAAA,IAAM,qBAAqB,GAAG,UAAC,KAAuB,EAAE,SAAwB,EAAA;QAC9E,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC;AACpC,IAAA,CAAC;IAED,IAAM,YAAY,GAAG,UAAC,KAAuB,EAAA;QAC3C,KAAK,CAAC,cAAc,EAAE;QACtB,cAAc,CAAC,MAAM,CAAC;AACxB,IAAA,CAAC;IAED,IAAM,aAAa,GAAG,UAAC,KAAuB,EAAA;QAC5C,KAAK,CAAC,cAAc,EAAE;QACtB,eAAe,CAAC,MAAM,CAAC;AACzB,IAAA,CAAC;IAED,IAAM,UAAU,GAAG,UAAC,KAAuB,EAAA;QACzC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAAO,0BAAa,CAAC,IAAI,CAAC,MAAuB,CAAC;AAC7C,IAAA,CAAC;IAED,IAAM,UAAU,GAAG,UAAC,KAAuB,EAAA;QACzC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAAA,0BAAa,CAAC,IAAI,CAAC,MAAuB,CAAC;AAC7C,IAAA,CAAC;IAED,IAAM,gBAAgB,GAAG,UAAC,KAAuB,EAAA;QAC/C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAM,SAAS,GAAG,MAAM,CAAC,SAAS;QAClC,IAAI,SAAS,EAAE;YACb,IAAM,YAAY,GAAGb,YAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;YACrD,WAAW,CAAC,YAAY,CAAC;QAC3B;aAAO;YACL,WAAW,CAAC,EAAE,CAAC;QACjB;QACA,UAAU,CAAC,EAAE,CAAC;QACd,YAAY,CAAC,EAAE,CAAC;QAChB,aAAa,CAAC,OAAO,CAAC;QACtB,gBAAgB,CAAC,KAAK,CAAC;QACvB,gBAAgB,CAAC,IAAI,CAAC;AACxB,IAAA,CAAC;AAED,IAAA,IAAM,gBAAgB,GAAG,YAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;YACnB,KAAK,CAAC,iBAAiB,CAAC;YACxB;QACF;AAEA,QAAA,IAAI;AACF,YAAA,IAAI,GAAG,CAAC,OAAO,CAAC;QAClB;AAAE,QAAA,OAAA,EAAA,EAAM;YACN,KAAK,CAAC,sDAAsD,CAAC;YAC7D;QACF;QAEA,IAAI,aAAa,EAAE;AACjB,YAAAE,gBAAU,CAAC,QAAQ,CACjB,MAAM,EACN;AACE,gBAAA,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,SAAS,IAAI,SAAS;AAC7B,gBAAA,MAAM,EAAE;aACe,EACzB;gBACE,KAAK,EAAE,UAAC,CAAM,EAAA,EAAK,OAAA,CAAC,CAAC,IAAI,KAAK,MAAM,CAAA,CAAjB;AACpB,aAAA,CACF;YAED,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE;AACvC,gBAAAA,gBAAU,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACnD,gBAAAA,gBAAU,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YACnE;QACF;aAAO;AACL,YAAA,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE;AACnB,gBAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,oBAAAA,gBAAU,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC3B;AACA,gBAAAA,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;AAC7B,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,SAAS,IAAI,SAAS;AAC7B,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACxB,iBAAA,CAAC;AACT,gBAAAA,gBAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YACzB;AAAO,iBAAA,IAAI,MAAM,CAAC,SAAS,IAAI,CAACC,WAAK,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBACnE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,UAAU,CAAC;YACjE;iBAAO;AACL,gBAAAD,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;AAC7B,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,SAAS,IAAI,SAAS;AAC7B,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACvB,iBAAA,CAAC;AACT,gBAAAA,gBAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YACzB;QACF;QAEA,gBAAgB,CAAC,KAAK,CAAC;QACvB,WAAW,CAAC,EAAE,CAAC;QACf,UAAU,CAAC,EAAE,CAAC;QACd,YAAY,CAAC,EAAE,CAAC;QAChB,aAAa,CAAC,OAAO,CAAC;QACtB,gBAAgB,CAAC,KAAK,CAAC;AACzB,IAAA,CAAC;IAED,IAAM,iBAAiB,GAAG,UAAC,KAAuB,EAAA;QAChD,KAAK,CAAC,cAAc,EAAE;QACtB,WAAW,CAAC,EAAE,CAAC;QACf,WAAW,CAAC,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,CAAC;QAClB,mBAAmB,CAAC,EAAE,CAAC;QACvB,mBAAmB,CAAC,KAAK,CAAC;QAC1B,qBAAqB,CAAC,IAAI,CAAC;QAC3B,iBAAiB,CAAC,IAAI,CAAC;AACzB,IAAA,CAAC;AAED,IAAA,IAAM,iBAAiB,GAAG,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;oBACxB,mBAAmB,CAAC,EAAE,CAAC;AAEnB,oBAAA,IAAA,CAAA,SAAS,EAAT,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA;AACI,oBAAA,YAAY,GAAI,MAAc,CAAC,cAAc;oBACnD,IAAI,EAAC,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,MAAA,GAAA,MAAA,GAAZ,YAAY,CAAE,aAAa,CAAA,EAAE;wBAChC,mBAAmB,CAAC,iEAAiE,CAAC;wBACtF,OAAA,CAAA,CAAA,YAAA;oBACF;;;;AAGsB,oBAAA,OAAA,CAAA,CAAA,YAAM,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;;AAAzD,oBAAA,WAAW,GAAG,EAAA,CAAA,IAAA,EAA2C;AAE/D,oBAAA,IAAI,gBAAgB,IAAI,kBAAkB,EAAE;AAC1C,wBAAAA,gBAAU,CAAC,QAAQ,CACjB,MAAM,EACN;AACE,4BAAA,GAAG,EAAE,WAAW;AAChB,4BAAA,GAAG,EAAE,QAAQ,IAAI,SAAS,CAAC;AACH,yBAAA,EAC1B,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAC3B;oBACH;yBAAO;wBACL,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC;oBAC9D;oBAEA,iBAAiB,CAAC,KAAK,CAAC;oBACxB,WAAW,CAAC,EAAE,CAAC;oBACf,WAAW,CAAC,EAAE,CAAC;oBACf,YAAY,CAAC,IAAI,CAAC;oBAClB,mBAAmB,CAAC,KAAK,CAAC;oBAC1B,qBAAqB,CAAC,IAAI,CAAC;;;;AAE3B,oBAAA,mBAAmB,CAAC,0BAA0B,GAAI,OAAe,CAAC,OAAO,CAAC;;wBAE5E,OAAA,CAAA,CAAA,YAAA;;AAGF,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;wBACpB,mBAAmB,CAAC,4CAA4C,CAAC;wBACjE,OAAA,CAAA,CAAA,YAAA;oBACF;AAEA,oBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;wBAC9B,mBAAmB,CAAC,gCAAgC,CAAC;wBACrD,OAAA,CAAA,CAAA,YAAA;oBACF;AAEA,oBAAA,IAAI,gBAAgB,IAAI,kBAAkB,EAAE;AAC1C,wBAAAA,gBAAU,CAAC,QAAQ,CACjB,MAAM,EACN;AACE,4BAAA,GAAG,EAAE,QAAQ;4BACb,GAAG,EAAE,QAAQ,IAAI;AACO,yBAAA,EAC1B,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAC3B;oBACH;yBAAO;wBACL,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,IAAI,OAAO,CAAC;oBACpD;oBAEA,iBAAiB,CAAC,KAAK,CAAC;oBACxB,WAAW,CAAC,EAAE,CAAC;oBACf,WAAW,CAAC,EAAE,CAAC;oBACf,YAAY,CAAC,IAAI,CAAC;oBAClB,mBAAmB,CAAC,KAAK,CAAC;oBAC1B,qBAAqB,CAAC,IAAI,CAAC;;;;SAC5B;IAED,IAAM,gBAAgB,GAAG,UAAC,CAAsC,EAAA;;QAC9D,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAG,CAAC,CAAC;QAChC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBACnC,mBAAmB,CAAC,6BAA6B,CAAC;gBAClD;YACF;YACA,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE;gBAC/B,mBAAmB,CAAC,oCAAoC,CAAC;gBACzD;YACF;YACA,YAAY,CAAC,IAAI,CAAC;YAClB,mBAAmB,CAAC,EAAE,CAAC;QACzB;AACF,IAAA,CAAC;IAED,IAAM,iBAAiB,GAAG,UAAC,KAAuB,EAAA;QAChD,KAAK,CAAC,cAAc,EAAE;QACtB,iBAAiB,CAAC,IAAI,CAAC;QACvB,YAAY,CAAC,CAAC,CAAC;QACf,YAAY,CAAC,CAAC,CAAC;AACjB,IAAA,CAAC;AAED,IAAA,IAAM,iBAAiB,GAAG,YAAA;AACxB,QAAA,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;QACzC,iBAAiB,CAAC,KAAK,CAAC;AAC1B,IAAA,CAAC;IAED,IAAM,uBAAuB,GAAG,UAAC,KAAuB,EAAA;QACtD,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,kBAAkB,CAAC,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,mBAAmB,aAAnB,mBAAmB,KAAA,MAAA,GAAA,MAAA,GAAnB,mBAAmB,CAAG,EAAE,CAAC;YACzB,cAAc,CAAC,EAAE,CAAC;AAClB,YAAA,yBAAyB,aAAzB,yBAAyB,KAAA,MAAA,GAAA,MAAA,GAAzB,yBAAyB,CAAG,CAAC,CAAC;AAC9B,YAAA,qBAAqB,aAArB,qBAAqB,KAAA,MAAA,GAAA,MAAA,GAArB,qBAAqB,CAAG,EAAE,CAAC;YAC3B,eAAe,CAAC,CAAC,CAAC;QACpB;AACF,IAAA,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,YAAA;AACd,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE;AACpC,YAAA,qBAAqB,aAArB,qBAAqB,KAAA,MAAA,GAAA,MAAA,GAArB,qBAAqB,CAAG,EAAE,CAAC;YAC3B,eAAe,CAAC,CAAC,CAAC;AAClB,YAAA,yBAAyB,aAAzB,yBAAyB,KAAA,MAAA,GAAA,MAAA,GAAzB,yBAAyB,CAAG,CAAC,CAAC;YAC9B;QACF;QAEA,IAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC;AACnD,QAAA,qBAAqB,aAArB,qBAAqB,KAAA,MAAA,GAAA,MAAA,GAArB,qBAAqB,CAAG,OAAO,CAAC;AAChC,QAAA,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;AAE/B,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,yBAAyB,aAAzB,yBAAyB,KAAA,MAAA,GAAA,MAAA,GAAzB,yBAAyB,CAAG,CAAC,CAAC;YAC9B,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC;aAAO;AACL,YAAA,yBAAyB,aAAzB,yBAAyB,KAAA,MAAA,GAAA,MAAA,GAAzB,yBAAyB,CAAG,CAAC,CAAC;QAChC;AACF,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;AAE5F,IAAA,IAAM,eAAe,GAAG,YAAA;AACtB,QAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE;QAEhC,IAAM,SAAS,GAAG,CAAC,iBAAiB,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM;AAChE,QAAA,yBAAyB,aAAzB,yBAAyB,KAAA,MAAA,GAAA,MAAA,GAAzB,yBAAyB,CAAG,SAAS,CAAC;QACtC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;AACnD,IAAA,CAAC;AAED,IAAA,IAAM,eAAe,GAAG,YAAA;AACtB,QAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE;AAEhC,QAAA,IAAM,SAAS,GAAG,iBAAiB,KAAK,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,iBAAiB,GAAG,CAAC;AAC5F,QAAA,yBAAyB,aAAzB,yBAAyB,KAAA,MAAA,GAAA,MAAA,GAAzB,yBAAyB,CAAG,SAAS,CAAC;QACtC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;AACnD,IAAA,CAAC;AAED,IAAA,IAAM,aAAa,GAAG,YAAA;QACpB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,IAAI,aAAa,CAAC,MAAM;YAAE;QAE7E,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC;QAEnE,IAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC;AACnD,QAAA,qBAAqB,aAArB,qBAAqB,KAAA,MAAA,GAAA,MAAA,GAArB,qBAAqB,CAAG,OAAO,CAAC;AAClC,IAAA,CAAC;AAED,IAAA,IAAM,gBAAgB,GAAG,YAAA;AACvB,QAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE;AAEhC,QAAA,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC;AAErD,QAAA,mBAAmB,aAAnB,mBAAmB,KAAA,MAAA,GAAA,MAAA,GAAnB,mBAAmB,CAAG,EAAE,CAAC;AACzB,QAAA,UAAU,CAAC,YAAA;AACT,YAAA,mBAAmB,aAAnB,mBAAmB,KAAA,MAAA,GAAA,MAAA,GAAnB,mBAAmB,CAAG,EAAE,CAAC;YACzB,cAAc,CAAC,EAAE,CAAC;AAClB,YAAA,qBAAqB,aAArB,qBAAqB,KAAA,MAAA,GAAA,MAAA,GAArB,qBAAqB,CAAG,EAAE,CAAC;YAC3B,eAAe,CAAC,CAAC,CAAC;AAClB,YAAA,yBAAyB,aAAzB,yBAAyB,KAAA,MAAA,GAAA,MAAA,GAAzB,yBAAyB,CAAG,CAAC,CAAC;QAChC,CAAC,EAAE,EAAE,CAAC;AACR,IAAA,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,YAAA;QACd,IAAM,kBAAkB,GAAG,UAAC,QAAgG,EAAA;AAC1H,YAAA,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1B,YAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;AACxB,YAAA,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;AAClC,YAAA,aAAa,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC;YACzC,gBAAgB,CAAC,IAAI,CAAC;YACtB,gBAAgB,CAAC,IAAI,CAAC;AAEtB,YAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACjB,gBAAA,MAAM,CAAC,SAAS,GAAGF,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC;YACxD;AACF,QAAA,CAAC;AAEA,QAAA,MAAc,CAAC,wBAAwB,GAAG,kBAAkB;QAE7D,OAAO,YAAA;YACL,OAAQ,MAAc,CAAC,wBAAwB;AACjD,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAEZ,KAAK,CAAC,SAAS,CAAC,YAAA;QACd,IAAM,kBAAkB,GAAG,UAAC,SAAiG,EAAA;AAC3H,YAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,YAAA,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC;YAChC,YAAY,CAAC,IAAI,CAAC;YAClB,mBAAmB,CAAC,EAAE,CAAC;YACvB,mBAAmB,CAAC,IAAI,CAAC;AACzB,YAAA,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC;YACrC,iBAAiB,CAAC,IAAI,CAAC;AACzB,QAAA,CAAC;AAEA,QAAA,MAAc,CAAC,4BAA4B,GAAG,kBAAkB;QAEjE,OAAO,YAAA;YACL,OAAQ,MAAc,CAAC,4BAA4B;AACrD,QAAA,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;IAEN,IAAM,oBAAoB,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC;IAC1K,IAAM,cAAc,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;AAC7D,IAAA,IAAM,WAAW,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC;IACxG,IAAM,SAAS,GAAG,CAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,CAAC;AACzE,IAAA,IAAM,UAAU,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,IAAA,IAAM,UAAU,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;IAC7C,IAAM,WAAW,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC;AACjE,IAAA,IAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;AAElC,IAAA,IAAM,YAAY,GAAG;AACnB,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;AACnC,QAAA,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;AACvC,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;AAClC,QAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;AACxC,QAAA,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;AACjC,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;AACpC,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;AACpC,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;AACnC,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;AAClC,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;AAClC,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;AACpC,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;AACpC,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;AAClC,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;KACpC;AAED,IAAA,IAAM,iBAAiB,GAAG,UAAC,IAAiB,EAAE,KAAa,EAAA;AACzD,QAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,YAAA,IAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI;YACpD,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAClC,oBAAA,IAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAvB,CAAuB,CAAC;AACtE,oBAAA,IAAI,gBAAgB,KAAK,KAAK,GAAG,CAAC;AAAE,wBAAA,OAAO,IAAI;gBACjD;AACA,gBAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAChC,oBAAA,IAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAArB,CAAqB,CAAC;AAClE,oBAAA,IAAI,cAAc,KAAK,KAAK,GAAG,CAAC;AAAE,wBAAA,OAAO,IAAI;gBAC/C;AACA,gBAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACrC,oBAAA,IAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAA1B,CAA0B,CAAC;AACxE,oBAAA,IAAI,eAAe,KAAK,KAAK,GAAG,CAAC;AAAE,wBAAA,OAAO,IAAI;gBAChD;AACA,gBAAA,IAAI,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC3C,oBAAA,IAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAhC,CAAgC,CAAC;AAC9E,oBAAA,IAAI,eAAe,KAAK,KAAK,GAAG,CAAC;AAAE,wBAAA,OAAO,IAAI;gBAChD;AACA,gBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAClC,oBAAA,IAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAvB,CAAuB,CAAC;AACtE,oBAAA,IAAI,gBAAgB,KAAK,KAAK,GAAG,CAAC;AAAE,wBAAA,OAAO,IAAI;gBACjD;AACA,gBAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAChC,oBAAA,IAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAArB,CAAqB,CAAC;AAClE,oBAAA,IAAI,cAAc,KAAK,KAAK,GAAG,CAAC;AAAE,wBAAA,OAAO,IAAI;gBAC/C;YACF;AACA,YAAA,OAAOU,eAAC,gBAAgB,EAAA,EAAA,EAAM,oBAAa,KAAK,CAAE,CAAI;QACxD;AAEA,QAAA,IAAI,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvC,YAAA,IAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAhC,CAAgC,CAAC;AAC9E,YAAA,IAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,KAAK,IAAI,CAAA,CAAV,CAAU,CAAC;AAErD,YAAA,IAAI,eAAe,KAAK,YAAY,EAAE;gBACpC,OAAO,IAAI,CAAC;YACd;AAEA,YAAA,IAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAA,KAAK,EAAA;AACjD,gBAAA,OAAA,KAAK,CAAC,QAAQ,CAAC,KAAoB,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,KAAkB,CAAC;AAAjF,YAAA,CAAiF,CAClF;YAED,IAAM,eAAa,GAAG,UAAC,KAAa,EAAA;gBAClC,QAAQ,KAAK;AACX,oBAAA,KAAK,WAAW,EAAE,OAAO,WAAW;AACpC,oBAAA,KAAK,aAAa,EAAE,OAAO,WAAW;AACtC,oBAAA,KAAK,aAAa,EAAE,OAAO,WAAW;AACtC,oBAAA,KAAK,eAAe,EAAE,OAAO,WAAW;AACxC,oBAAA,KAAK,cAAc,EAAE,OAAO,WAAW;AACvC,oBAAA,KAAK,cAAc,EAAE,OAAO,WAAW;AACvC,oBAAA,KAAK,aAAa,EAAE,OAAO,WAAW;AACtC,oBAAA,KAAK,eAAe,EAAE,OAAO,WAAW;AACxC,oBAAA,KAAK,eAAe,EAAE,OAAO,WAAW;AACxC,oBAAA,SAAS,OAAO,QAAQ;;AAE5B,YAAA,CAAC;YAiBD,QACEA,eAAC,QAAQ,EAAA,EAEP,OAAO,EAAEA,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,WAAW,GAAG,eAAa,CAAC,WAAW,CAAC,GAAG,WAAW,GAAQ,EAC9E,KAAK,EAAC,cAAc,EAAA,QAAA,EAEnB,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAhC,CAAgC,CAAC,CAAC,GAAG,CAAC,UAAA,KAAK,EAAA,EAAI,QAChEA,cAAA,CAAC,YAAY,IAEX,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,KAAkB,CAAC,EACjD,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,iBAAiB,CAAC,CAAC,EAAE,KAAkB,CAAC,CAAA,CAAxC,CAAwC,YAE3D,eAAa,CAAC,KAAK,CAAC,EAAA,EAJhB,KAAK,CAKG,GAPiD,CAQjE,CAAC,IAZE,2BAA2B,CAatB;QAEf;AAEA,QAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjC,YAAA,IAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAA1B,CAA0B,CAAC;AACxE,YAAA,IAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,KAAK,IAAI,CAAA,CAAV,CAAU,CAAC;AAErD,YAAA,IAAI,eAAe,KAAK,YAAY,EAAE;gBACpC,OAAO,IAAI,CAAC;YACd;AAEA,YAAwB,cAAc,CAAC,IAAI,CAAC,UAAA,KAAK,EAAA;AAC/C,gBAAA,OAAA,KAAK,CAAC,QAAQ,CAAC,KAAoB,CAAC,IAAI,iBAAiB,CAAC,MAAM,EAAE,KAAsB,CAAC;AAAzF,YAAA,CAAyF;YAG3F,IAAM,kBAAgB,GAAG,UAAC,KAAa,EAAA;gBACrC,QAAQ,KAAK;AACX,oBAAA,KAAK,MAAM;AACT,wBAAA,QACED,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CACjGC,wBAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,GAAQ,EACrFA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,EACpFA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,CAAA,EAAA,CACjF;AAEV,oBAAA,KAAK,QAAQ;AACX,wBAAA,QACED,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CACvHC,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,EACrFA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,EACpFA,wBAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,CAAA,EAAA,CAChF;AAEV,oBAAA,KAAK,OAAO;AACV,wBAAA,QACED,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,CACzHC,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,EACrFA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,EACpFA,wBAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,CAAA,EAAA,CACjF;AAEV,oBAAA,KAAK,SAAS;AACZ,wBAAA,QACED,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CACjGC,wBAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,GAAQ,EACrFA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,EACrFA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,CAAA,EAAA,CACjF;AAEV,oBAAA;AACE,wBAAA,QACED,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CACjGC,wBAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,GAAQ,EACrFA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,EACpFA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA,CAAQ,CAAA,EAAA,CACjF;;AAGd,YAAA,CAAC;YAED,IAAM,mBAAiB,GAAG,UAAC,KAAa,EAAA;gBACtC,QAAQ,KAAK;AACX,oBAAA,KAAK,MAAM,EAAE,OAAO,YAAY;AAChC,oBAAA,KAAK,QAAQ,EAAE,OAAO,cAAc;AACpC,oBAAA,KAAK,OAAO,EAAE,OAAO,aAAa;AAClC,oBAAA,KAAK,SAAS,EAAE,OAAO,SAAS;AAChC,oBAAA,SAAS,OAAO,OAAO;;AAE3B,YAAA,CAAC;AAED,YAAA,QACEA,cAAA,CAAC,QAAQ,IAEP,OAAO,EAAEA,6CAAkB,EAC3B,KAAK,EAAC,gBAAgB,YAErB,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAA1B,CAA0B,CAAC,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,QAC1DA,eAAC,YAAY,EAAA,EAEX,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,KAAsB,CAAC,EACzD,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,qBAAqB,CAAC,CAAC,EAAE,KAAsB,CAAC,CAAA,CAAhD,CAAgD,EACpE,IAAI,EAAE,kBAAgB,CAAC,KAAK,CAAC,YAE5B,mBAAiB,CAAC,KAAK,CAAC,EAAA,EALpB,KAAK,CAMG,GAR2C,CAS3D,CAAC,IAbE,oBAAoB,CAcf;QAEf;QAEA,QAAQ,IAAI;AACV,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,QAAQ;AACb,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,eAAe;AACpB,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,aAAa;YAClB,KAAK,WAAW,EAAE;AAChB,gBAAA,IAAM,aAAW,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC;AACxG,gBAAA,IAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,aAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAvB,CAAuB,CAAC;AACtE,gBAAA,IAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,KAAK,IAAI,CAAA,CAAV,CAAU,CAAC;gBAErD,IAAI,gBAAgB,KAAK,YAAY;AAAE,oBAAA,OAAO,IAAI;gBAElD,QACED,gBAAC,QAAQ,EAAA,EAEP,OAAO,EAAEC,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAmB,EAC5B,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,CAEb,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KACrBA,cAAA,CAAC,YAAY,IACX,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA,CAA3B,CAA2B,EAC/C,IAAI,EAAEA,yBAAM,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAU,EAAA,QAAA,EAAA,MAAA,EAAA,CAGxD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KACvBA,eAAC,YAAY,EAAA,EACX,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,EACtC,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA,CAA7B,CAA6B,EACjD,IAAI,EAAEA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,GAAA,EAAA,CAAU,EAAA,QAAA,EAAA,QAAA,EAAA,CAGzD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAC1BA,cAAA,CAAC,YAAY,IACX,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,EACzC,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA,CAAhC,CAAgC,EACpD,IAAI,EAAEA,yBAAM,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAU,EAAA,QAAA,EAAA,WAAA,EAAA,CAGjE,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,KAC9BA,eAAC,YAAY,EAAA,EACX,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,EAC7C,WAAW,EAAE,UAAC,CAAC,IAAK,OAAA,gBAAgB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAA,CAApC,CAAoC,EACxD,IAAI,EAAEA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,GAAA,EAAA,CAAU,EAAA,QAAA,EAAA,eAAA,EAAA,CAGpE,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KACrBA,cAAA,CAAC,YAAY,IACX,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA,CAA3B,CAA2B,EAC/C,IAAI,EAAEA,eAACI,uBAAe,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,qBAGtD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,KAC5BJ,cAAA,CAAC,YAAY,IACX,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,EAC3C,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,gBAAgB,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA,CAAlC,CAAkC,EACtD,IAAI,EAAED,0BAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAAA,GAAA,EAAGC,wCAAY,CAAA,EAAA,CAAO,EAAA,QAAA,EAAA,aAAA,EAAA,CAGhD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAC1BA,cAAA,CAAC,YAAY,IACX,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,EACzC,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA,CAAhC,CAAgC,EACpD,IAAI,EAAED,0BAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAAA,GAAA,EAAGC,wCAAY,CAAA,EAAA,CAAO,EAAA,QAAA,EAAA,WAAA,EAAA,CAGhD,CAChB,CAAA,EAAA,EAlEG,aAAa,CAmER;YAEf;AAEA,YAAA,KAAK,eAAe;AACpB,YAAA,KAAK,eAAe;AACpB,YAAA,KAAK,QAAQ;YACb,KAAK,SAAS,EAAE;gBACd,IAAM,WAAS,GAAG,CAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,CAAC;AACzE,gBAAA,IAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,WAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAArB,CAAqB,CAAC;AAClE,gBAAA,IAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,KAAK,IAAI,CAAA,CAAV,CAAU,CAAC;gBAErD,IAAI,cAAc,KAAK,YAAY;AAAE,oBAAA,OAAO,IAAI;gBAEhD,QACED,gBAAC,QAAQ,EAAA,EAEP,OAAO,EAAEC,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,OAAA,EAAA,CAAkB,EAC3B,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,CAEZ,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,KAC9BA,cAAA,CAAC,YAAY,EAAA,EACX,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,EAC9C,WAAW,EAAE,UAAC,CAAC,IAAK,OAAA,iBAAiB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAA,CAArC,CAAqC,EACzD,IAAI,EAAEA,eAACK,sBAAc,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,4BAGrD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,KAC9BL,cAAA,CAAC,YAAY,IACX,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,EAC9C,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,iBAAiB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAA,CAArC,CAAqC,EACzD,IAAI,EAAEA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAW,EAAA,QAAA,EAAA,eAAA,EAAA,CAGxD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KACvBA,eAAC,YAAY,EAAA,EACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,YAAY,EACzB,IAAI,EAAEA,eAACM,sBAAc,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,QAAA,EAAA,iBAAA,EAAA,CAGrD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KACxBN,eAAC,YAAY,EAAA,EACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,aAAa,EAC1B,IAAI,EAAEA,eAACO,qBAAa,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,QAAA,EAAA,iBAAA,EAAA,CAGpD,CAChB,CAAA,EAAA,EAvCG,YAAY,CAwCP;YAEf;AAEA,YAAA,KAAK,YAAY;YACjB,KAAK,YAAY,EAAE;AACjB,gBAAA,IAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAtB,CAAsB,CAAC;AACxE,gBAAA,IAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,KAAK,IAAI,CAAA,CAAV,CAAU,CAAC;gBAErD,IAAI,mBAAmB,KAAK,YAAY;AAAE,oBAAA,OAAO,IAAI;gBAErD,QACER,eAAA,CAAC,QAAQ,EAAA,EAEP,OAAO,EAAEC,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAmB,EAC5B,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,CAEb,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAC3BA,cAAA,CAAC,YAAY,EAAA,EACX,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,EAC3C,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,iBAAiB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA,CAAlC,CAAkC,EACtD,IAAI,EAAEA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,QAAA,EAAA,CAAU,EAAA,QAAA,EAAA,YAAA,EAAA,CAGxD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAC3BA,cAAA,CAAC,YAAY,EAAA,EACX,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,EAC3C,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,iBAAiB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA,CAAlC,CAAkC,EACtD,IAAI,EAAEA,cAAA,CAACI,uBAAe,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,QAAA,EAAA,YAAA,EAAA,CAGtD,CAChB,CAAA,EAAA,EArBG,aAAa,CAsBR;YAEf;AAEA,YAAA,KAAK,YAAY;YACjB,KAAK,UAAU,EAAE;AACf,gBAAA,IAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAtB,CAAsB,CAAC;AACpE,gBAAA,IAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,KAAK,IAAI,CAAA,CAAV,CAAU,CAAC;gBAErD,IAAI,eAAe,KAAK,YAAY;AAAE,oBAAA,OAAO,IAAI;AAEjD,gBAAA,IAAM,iBAAe,GAAG,cAAc,CAAC,MAAM,CAAC;AAC9C,gBAAA,IAAM,eAAa,GAAG,wBAAwB,CAAC,MAAM,CAAC;AAEtD,gBAAA,QACEL,eAAA,CAAC,QAAQ,EAAA,EAEP,OAAO,EAAEC,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,OAAA,EAAA,CAAkB,EAC3B,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,CAEZ,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAC3BD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,CACjCC,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,UAAU,EAAE,KAAK;AACjB,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,KAAK,EAAE;qCACR,EAAA,QAAA,EAAA,YAAA,EAAA,CAEK,EACNA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,mBAAmB,EAAE,gBAAgB;AACrC,wCAAA,GAAG,EAAE,KAAK;AACV,wCAAA,YAAY,EAAE;AACf,qCAAA,EAAA,QAAA,EACE,YAAY,CAAC,GAAG,CAAC,UAAC,KAAK,EAAA,EAAK,QAC3BA,cAAA,CAAA,QAAA,EAAA,EAEE,WAAW,EAAE,UAAC,CAAC,EAAA;4CACb,CAAC,CAAC,cAAc,EAAE;AAClB,4CAAA,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;wCACjC,CAAC,EACD,KAAK,EAAE,KAAK,CAAC,IAAI,EACjB,KAAK,EAAE;AACL,4CAAA,KAAK,EAAE,MAAM;AACb,4CAAA,MAAM,EAAE,MAAM;4CACd,eAAe,EAAE,KAAK,CAAC,KAAK;AAC5B,4CAAA,MAAM,EAAE,iBAAe,KAAK,KAAK,CAAC,KAAK,GAAG,mBAAmB,GAAG,mBAAmB;AACnF,4CAAA,YAAY,EAAE,KAAK;AACnB,4CAAA,MAAM,EAAE,SAAS;AACjB,4CAAA,OAAO,EAAE,CAAC;AACV,4CAAA,SAAS,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,yBAAyB,GAAG;AACpE,yCAAA,EAAA,EAfI,OAAA,CAAA,MAAA,CAAQ,KAAK,CAAC,KAAK,CAAE,CAgB1B,EACH,CAnB4B,CAmB5B,CAAC,EAAA,CACE,EACND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,UAAU,EAAE,QAAQ;AACpB,wCAAA,GAAG,EAAE,KAAK;AACV,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,UAAU,EAAE;AACb,qCAAA,EAAA,QAAA,EAAA,CACCC,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,iBAAe,IAAI,SAAS,EACnC,QAAQ,EAAE,UAAC,CAAC,EAAA;gDACV,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,4CAAA,CAAC,EACD,KAAK,EAAC,mBAAmB,EACzB,KAAK,EAAE;AACL,gDAAA,KAAK,EAAE,MAAM;AACb,gDAAA,MAAM,EAAE,MAAM;AACd,gDAAA,MAAM,EAAE,mBAAmB;AAC3B,gDAAA,YAAY,EAAE,KAAK;AACnB,gDAAA,MAAM,EAAE,SAAS;AACjB,gDAAA,OAAO,EAAE,GAAG;AACZ,gDAAA,eAAe,EAAE;6CAClB,EAAA,CACD,EACFA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE;AACX,gDAAA,QAAQ,EAAE,MAAM;AAChB,gDAAA,KAAK,EAAE;AACR,6CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAEM,IACH,EACNA,cAAA,CAAA,QAAA,EAAA,EACE,WAAW,EAAE,UAAC,CAAC,EAAA;wCACb,CAAC,CAAC,cAAc,EAAE;AAClB,wCAAA,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;oCAC1B,CAAC,EACD,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,MAAM;AACb,wCAAA,OAAO,EAAE,SAAS;AAClB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,eAAe,EAAE,aAAa;AAC9B,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,KAAK,EAAE;qCACR,EAAA,QAAA,EAAA,cAAA,EAAA,CAGM,CAAA,EAAA,CACL,CACP,EACA,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KACzBD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAA,QAAA,EAAA,CACjEC,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,UAAU,EAAE,KAAK;AACjB,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,KAAK,EAAE;qCACR,EAAA,QAAA,EAAA,sBAAA,EAAA,CAEK,EACNA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,mBAAmB,EAAE,gBAAgB;AACrC,wCAAA,GAAG,EAAE,KAAK;AACV,wCAAA,YAAY,EAAE;AACf,qCAAA,EAAA,QAAA,EACE,YAAY,CAAC,GAAG,CAAC,UAAC,KAAK,EAAA,EAAK,QAC3BA,cAAA,CAAA,QAAA,EAAA,EAEE,WAAW,EAAE,UAAC,CAAC,EAAA;4CACb,CAAC,CAAC,cAAc,EAAE;AAClB,4CAAA,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;wCAC3C,CAAC,EACD,KAAK,EAAE,KAAK,CAAC,IAAI,EACjB,KAAK,EAAE;AACL,4CAAA,KAAK,EAAE,MAAM;AACb,4CAAA,MAAM,EAAE,MAAM;4CACd,eAAe,EAAE,KAAK,CAAC,KAAK;AAC5B,4CAAA,MAAM,EAAE,eAAa,KAAK,KAAK,CAAC,KAAK,GAAG,mBAAmB,GAAG,mBAAmB;AACjF,4CAAA,YAAY,EAAE,KAAK;AACnB,4CAAA,MAAM,EAAE,SAAS;AACjB,4CAAA,OAAO,EAAE,CAAC;AACV,4CAAA,SAAS,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,yBAAyB,GAAG;AACpE,yCAAA,EAAA,EAfI,KAAA,CAAA,MAAA,CAAM,KAAK,CAAC,KAAK,CAAE,CAgBxB,EACH,CAnB4B,CAmB5B,CAAC,EAAA,CACE,EACND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,UAAU,EAAE,QAAQ;AACpB,wCAAA,GAAG,EAAE,KAAK;AACV,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,UAAU,EAAE;AACb,qCAAA,EAAA,QAAA,EAAA,CACCC,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,eAAa,IAAI,SAAS,EACjC,QAAQ,EAAE,UAAC,CAAC,EAAA;gDACV,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9C,4CAAA,CAAC,EACD,KAAK,EAAC,mBAAmB,EACzB,KAAK,EAAE;AACL,gDAAA,KAAK,EAAE,MAAM;AACb,gDAAA,MAAM,EAAE,MAAM;AACd,gDAAA,MAAM,EAAE,mBAAmB;AAC3B,gDAAA,YAAY,EAAE,KAAK;AACnB,gDAAA,MAAM,EAAE,SAAS;AACjB,gDAAA,OAAO,EAAE,GAAG;AACZ,gDAAA,eAAe,EAAE;6CAClB,EAAA,CACD,EACFA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE;AACX,gDAAA,QAAQ,EAAE,MAAM;AAChB,gDAAA,KAAK,EAAE;AACR,6CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAEM,IACH,EACNA,cAAA,CAAA,QAAA,EAAA,EACE,WAAW,EAAE,UAAC,CAAC,EAAA;wCACb,CAAC,CAAC,cAAc,EAAE;AAClB,wCAAA,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;oCACpC,CAAC,EACD,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,MAAM;AACb,wCAAA,OAAO,EAAE,SAAS;AAClB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,eAAe,EAAE,aAAa;AAC9B,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,KAAK,EAAE;AACR,qCAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAGM,IACL,CACP,CAAA,EAAA,EAnLG,YAAY,CAoLP;YAEf;AAEA,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,iBAAiB;AACtB,YAAA,KAAK,OAAO;YACZ,KAAK,OAAO,EAAE;AACZ,gBAAA,IAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAvB,CAAuB,CAAC;AACtE,gBAAA,IAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,KAAK,IAAI,CAAA,CAAV,CAAU,CAAC;gBAErD,IAAI,gBAAgB,KAAK,YAAY;AAAE,oBAAA,OAAO,IAAI;AAElD,gBAAA,QACED,eAAA,CAAC,QAAQ,EAAA,EAEP,OAAO,EAAEC,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAmB,EAC5B,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,CAEb,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KACrBA,cAAA,CAAC,YAAY,EAAA,EACX,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,EAC5B,WAAW,EAAE,gBAAgB,EAC7B,IAAI,EAAEA,cAAA,CAACQ,gBAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,QAAA,EAAA,MAAA,EAAA,CAG/C,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KACtBR,eAAC,YAAY,EAAA,EACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,iBAAiB,EAC9B,IAAI,EAAEA,cAAA,CAACS,iBAAS,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,QAAA,EAAA,OAAA,EAAA,CAGhD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KACtBT,cAAA,CAAC,YAAY,EAAA,EACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,iBAAiB,EAC9B,IAAI,EAAEA,cAAA,CAACU,sBAAc,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,sBAGrD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAChCV,cAAA,CAAC,YAAY,EAAA,EACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,UAAC,CAAC,EAAA;gCACb,CAAC,CAAC,cAAc,EAAE;gCAClB,oBAAoB,CAAC,MAAM,CAAC;4BAC9B,CAAC,EACD,IAAI,EAAEA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,QAAA,EAAA,CAAU,EAAA,QAAA,EAAA,iBAAA,EAAA,CAGxD,CAChB,CAAA,EAAA,EA1CG,aAAa,CA2CR;YAEf;AAEA,YAAA,KAAK,MAAM;YACX,KAAK,MAAM,EAAE;AACX,gBAAA,IAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAArB,CAAqB,CAAC;AAClE,gBAAA,IAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,KAAK,IAAI,CAAA,CAAV,CAAU,CAAC;gBAErD,IAAI,cAAc,KAAK,YAAY;AAAE,oBAAA,OAAO,IAAI;gBAEhD,QACED,gBAAC,QAAQ,EAAA,EAEP,OAAO,EAAEC,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAiB,EAC1B,KAAK,EAAC,MAAM,EAAA,QAAA,EAAA,CAEX,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KACrBA,cAAA,CAAC,YAAY,IACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,UAAU,EACvB,IAAI,EAAEA,cAAA,CAACW,0BAAkB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,QAAA,EAAA,MAAA,EAAA,CAGzD,CAChB,EACA,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KACrBX,cAAA,CAAC,YAAY,IACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,UAAU,EACvB,IAAI,EAAEA,cAAA,CAACY,2BAAmB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,QAAA,EAAA,MAAA,EAAA,CAG1D,CAChB,CAAA,EAAA,EArBG,WAAW,CAsBN;YAEf;AACA,YAAA,KAAK,aAAa;gBAChB,QACEb,gBAAC,QAAQ,EAAA,EAEP,OAAO,EAAEC,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAiB,EAC1B,KAAK,EAAC,aAAa,aAEnBA,cAAA,CAAC,YAAY,IACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,UAAC,KAAK,EAAA;gCACjB,KAAK,CAAC,cAAc,EAAE;gCACtB,IAAI,YAAY,EAAE;oCAChB,YAAY,CAAC,SAAS,CAAC;gCACzB;AACF,4BAAA,CAAC,EACD,IAAI,EAAEA,cAAA,CAACa,iCAAyB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,QAAA,EAAA,SAAA,EAAA,CAGhE,EACfb,cAAA,CAAC,YAAY,EAAA,EACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,UAAC,KAAK,EAAA;gCACjB,KAAK,CAAC,cAAc,EAAE;gCACtB,IAAI,YAAY,EAAE;oCAChB,YAAY,CAAC,MAAM,CAAC;gCACtB;AACF,4BAAA,CAAC,EACD,IAAI,EAAEA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,KAAA,EAAA,CAAkB,EAAA,QAAA,EAAA,WAAA,EAAA,CAGrE,EACfA,cAAA,CAAC,YAAY,EAAA,EACX,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,UAAC,KAAK,EAAA;gCACjB,KAAK,CAAC,cAAc,EAAE;gCACtB,IAAI,YAAY,EAAE;oCAChB,YAAY,CAAC,MAAM,CAAC;gCACtB;4BACF,CAAC,EACD,IAAI,EAAEA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,CAAY,0BAG/D,CAAA,EAAA,EAvCV,IAAI,CAwCA;AAEf,YAAA,KAAK,cAAc;AACjB,gBAAA,QACEA,cAAA,CAAC,aAAa,EAAA,EAEZ,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,uBAAuB,EACpC,KAAK,EAAC,gBAAgB,EAAA,QAAA,EAEtBA,cAAA,CAACc,2BAAmB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,EAL5D,IAAI,CAMK;AAEpB,YAAA,KAAK,YAAY;gBACf,QACEd,cAAA,CAAC,aAAa,EAAA,EAEZ,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,UAAC,CAAC,EAAA;wBACb,CAAC,CAAC,cAAc,EAAE;AAClB,wBAAA,kBAAkB,KAAA,IAAA,IAAlB,kBAAkB,KAAA,MAAA,GAAA,MAAA,GAAlB,kBAAkB,EAAI;oBACxB,CAAC,EACD,KAAK,EAAE,YAAY,GAAG,uBAAuB,GAAG,wBAAwB,EAAA,QAAA,EAEvE,YAAY,IACXA,cAAA,CAACe,4BAAoB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,KAElEf,cAAA,CAACgB,6BAAqB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,CACpE,EAAA,EAZI,IAAI,CAaK;AAEpB,YAAA;AACE,gBAAA,OAAO,IAAI;;AAEjB,IAAA,CAAC;AAED,IAAA,QACEjB,eAAA,CAAAkB,mBAAA,EAAA,EAAA,QAAA,EAAA,CACG,aAAa,KACZjB,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,eAAe,EAAE,oBAAoB;AACrC,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,cAAc,EAAE,QAAQ;AACxB,oBAAA,MAAM,EAAE,KAAK;AACd,iBAAA,EACD,OAAO,EAAE,YAAA;oBACP,gBAAgB,CAAC,KAAK,CAAC;oBACvB,WAAW,CAAC,EAAE,CAAC;oBACf,UAAU,CAAC,EAAE,CAAC;oBACd,YAAY,CAAC,EAAE,CAAC;oBAChB,aAAa,CAAC,OAAO,CAAC;oBACtB,gBAAgB,CAAC,KAAK,CAAC;gBACzB,CAAC,EAAA,QAAA,EAEDD,eAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,SAAS,EAAE,2EAA2E;qBACvF,EACD,OAAO,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,eAAe,EAAE,CAAA,CAAnB,CAAmB,aAEnCC,cAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YACvF,aAAa,GAAG,WAAW,GAAG,aAAa,EAAA,CACzC,EAELD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAClCC,cAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,iBAAA,EAAA,CAEtG,EACRA,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAA3B,CAA2B,EAC5C,WAAW,EAAC,iBAAiB,EAC7B,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,MAAM;AACb,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,SAAS,EAAE,YAAY;AACxB,qCAAA,EACD,OAAO,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA,CAAtC,CAAsC,EACtD,MAAM,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA,CAAtC,CAAsC,EAAA,CACrD,EACFA,cAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,yDAAA,EAAA,CAEhF,CAAA,EAAA,CACJ,EAEND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAClCA,eAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CAAA,MAAA,EACxGC,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,GAAA,EAAA,CAAU,CAAA,EAAA,CACzC,EACRA,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,KAAK,EACV,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAA1B,CAA0B,EAC3C,WAAW,EAAC,qBAAqB,EACjC,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,MAAM;AACb,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,SAAS,EAAE,YAAY;AACxB,qCAAA,EACD,OAAO,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA,CAAtC,CAAsC,EACtD,MAAM,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA,CAAtC,CAAsC,EACrD,SAAS,EAAE,UAAC,CAAC,EAAA;AACX,wCAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;4CACrB,CAAC,CAAC,cAAc,EAAE;AAClB,4CAAA,gBAAgB,EAAE;wCACpB;AACF,oCAAA,CAAC,EAAA,CACD,CAAA,EAAA,CACE,EAEND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAClCC,cAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,OAAA,EAAA,CAEtG,EACRA,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAA5B,CAA4B,EAC7C,WAAW,EAAC,sBAAsB,EAClC,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,MAAM;AACb,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,SAAS,EAAE,YAAY;AACxB,qCAAA,EACD,OAAO,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA,CAAtC,CAAsC,EACtD,MAAM,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA,CAAtC,CAAsC,EAAA,CACrD,EACFA,cAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,kDAAA,EAAA,CAEhF,IACJ,EAEND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAClCC,cAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,cAAA,EAAA,CAEtG,EACRD,yBAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAC1CA,eAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,CACxEC,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,YAAY,EACjB,KAAK,EAAC,OAAO,EACb,OAAO,EAAE,UAAU,KAAK,OAAO,EAC/B,QAAQ,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAA2B,CAAC,CAAA,CAAnD,CAAmD,EACpE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAA,CAChD,EACFA,yBAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,aAAA,EAAA,CAAoB,CAAA,EAAA,CACjE,EACRD,eAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,CACxEC,0BACE,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,YAAY,EACjB,KAAK,EAAC,QAAQ,EACd,OAAO,EAAE,UAAU,KAAK,QAAQ,EAChC,QAAQ,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAA2B,CAAC,CAAA,CAAnD,CAAmD,EACpE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAChD,EACFA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,SAAA,EAAA,CAAgB,CAAA,EAAA,CAC7D,CAAA,EAAA,CACJ,CAAA,EAAA,CACF,EAEND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,CACtEC,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA;wCACP,gBAAgB,CAAC,KAAK,CAAC;wCACvB,WAAW,CAAC,EAAE,CAAC;wCACf,UAAU,CAAC,EAAE,CAAC;wCACd,YAAY,CAAC,EAAE,CAAC;wCAChB,aAAa,CAAC,OAAO,CAAC;wCACtB,gBAAgB,CAAC,KAAK,CAAC;oCACzB,CAAC,EACD,KAAK,EAAE;AACL,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,eAAe,EAAE,SAAS;AAC1B,wCAAA,KAAK,EAAE,SAAS;AAChB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,UAAU,EAAE,KAAK;AACjB,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,UAAU,EAAE,gBAAgB;AAC7B,qCAAA,EACD,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAjD,CAAiD,EACtE,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAjD,CAAiD,EAAA,QAAA,EAAA,QAAA,EAAA,CAG/D,EACTA,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE;AACL,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,MAAM;AACd,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,eAAe,EAAE,SAAS;AAC1B,wCAAA,KAAK,EAAE,SAAS;AAChB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,UAAU,EAAE,KAAK;AACjB,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,UAAU,EAAE,gBAAgB;qCAC7B,EACD,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA,CAAjD,CAAiD,EACtE,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA,CAAjD,CAAiD,EAAA,QAAA,EAErE,aAAa,GAAG,aAAa,GAAG,aAAa,EAAA,CACvC,CAAA,EAAA,CACL,CAAA,EAAA,CACF,EAAA,CACF,CACP,EACA,cAAc,KACbA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,eAAe,EAAE,oBAAoB;AACrC,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,cAAc,EAAE,QAAQ;AACxB,oBAAA,MAAM,EAAE,KAAK;AACd,iBAAA,EACD,OAAO,EAAE,YAAA;oBACP,iBAAiB,CAAC,KAAK,CAAC;oBACxB,WAAW,CAAC,EAAE,CAAC;oBACf,WAAW,CAAC,EAAE,CAAC;oBACf,YAAY,CAAC,IAAI,CAAC;oBAClB,mBAAmB,CAAC,EAAE,CAAC;gBACzB,CAAC,EAAA,QAAA,EAEDD,eAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,SAAS,EAAE,2EAA2E;qBACvF,EACD,OAAO,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,eAAe,EAAE,CAAA,CAAnB,CAAmB,EAAA,QAAA,EAAA,CAEnCC,uBAAI,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EACvF,gBAAgB,GAAG,eAAe,GAAG,cAAc,GACjD,EAELD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAClCC,cAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,WAAA,EAAA,CAEtG,EACRA,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,KAAK,EACV,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAA3B,CAA2B,EAC5C,WAAW,EAAC,+BAA+B,EAC3C,QAAQ,EAAE,CAAC,CAAC,SAAS,EACrB,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,MAAM;AACb,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,SAAS,EAAE,YAAY;wCACvB,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;qCACnD,EACD,OAAO,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,CAAA,CAAtD,CAAsD,EACtE,MAAM,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA,CAAtC,CAAsC,GACrD,CAAA,EAAA,CACE,EAEND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,gCAAA,YAAY,EAAE,MAAM;AACpB,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,eAAe,EAAE,SAAS;AAC1B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,SAAS,EAAE;6BACZ,EAAA,QAAA,EAAA,CACCC,cAAA,CAAA,GAAA,EAAA,EAAG,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,8BAAA,EAAA,CAElE,EACJA,0BACE,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,SAAS,EAChB,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAC1B,EAAE,EAAC,cAAc,EAAA,CACjB,EACFA,cAAA,CAAA,OAAA,EAAA,EACE,OAAO,EAAC,cAAc,EACtB,KAAK,EAAE;AACL,wCAAA,OAAO,EAAE,cAAc;AACvB,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,eAAe,EAAE,SAAS;AAC1B,wCAAA,KAAK,EAAE,SAAS;AAChB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,UAAU,EAAE,KAAK;AACjB,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,UAAU,EAAE,gBAAgB;AAC7B,qCAAA,EACD,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAjD,CAAiD,EACtE,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA,CAAjD,CAAiD,4BAGhE,EACP,SAAS,KACRD,uBAAG,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAAA,YAAA,EACxD,SAAS,CAAC,IAAI,IACvB,CACL,EACA,EAAG,MAAC,MAAc,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,aAAa,CAAC,KAChDC,cAAA,CAAA,GAAA,EAAA,EAAG,KAAK,EAAE;AACR,wCAAA,MAAM,EAAE,WAAW;AACnB,wCAAA,KAAK,EAAE,SAAS;AAChB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,SAAS,EAAE;AACZ,qCAAA,EAAA,QAAA,EAAA,iEAAA,EAAA,CAEG,CACL,CAAA,EAAA,CACG,EAEND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAClCC,cAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,qBAAA,EAAA,CAEtG,EACRA,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAA3B,CAA2B,EAC5C,WAAW,EAAC,oBAAoB,EAChC,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,MAAM;AACb,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,SAAS,EAAE,YAAY;AACxB,qCAAA,EACD,OAAO,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA,CAAtC,CAAsC,EACtD,MAAM,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA,CAAtC,CAAsC,EAAA,CACrD,EACFA,cAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,mBAAA,EAAA,CAEhF,CAAA,EAAA,CACJ,EAEL,gBAAgB,KACfA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,gCAAA,YAAY,EAAE,MAAM;AACpB,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,eAAe,EAAE,SAAS;AAC1B,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,KAAK,EAAE,SAAS;AAChB,gCAAA,QAAQ,EAAE;6BACX,EAAA,QAAA,EACE,gBAAgB,GACb,CACP,EAEDD,yBAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,CACtEC,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA;wCACP,iBAAiB,CAAC,KAAK,CAAC;wCACxB,WAAW,CAAC,EAAE,CAAC;wCACf,WAAW,CAAC,EAAE,CAAC;wCACf,YAAY,CAAC,IAAI,CAAC;wCAClB,mBAAmB,CAAC,EAAE,CAAC;oCACzB,CAAC,EACD,KAAK,EAAE;AACL,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,eAAe,EAAE,SAAS;AAC1B,wCAAA,KAAK,EAAE,SAAS;AAChB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,UAAU,EAAE,KAAK;AACjB,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,UAAU,EAAE,gBAAgB;AAC7B,qCAAA,EACD,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAjD,CAAiD,EACtE,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAjD,CAAiD,EAAA,QAAA,EAAA,QAAA,EAAA,CAG/D,EACTA,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE;AACL,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,MAAM;AACd,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,eAAe,EAAE,SAAS;AAC1B,wCAAA,KAAK,EAAE,SAAS;AAChB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,UAAU,EAAE,KAAK;AACjB,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,UAAU,EAAE,gBAAgB;qCAC7B,EACD,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA,CAAjD,CAAiD,EACtE,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA,CAAjD,CAAiD,EAAA,QAAA,EAErE,gBAAgB,GAAG,SAAS,GAAG,cAAc,EAAA,CACvC,CAAA,EAAA,CACL,CAAA,EAAA,CACF,EAAA,CACF,CACP,EAGA,cAAc,KACbA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,eAAe,EAAE,oBAAoB;AACrC,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,cAAc,EAAE,QAAQ;AACxB,oBAAA,MAAM,EAAE,IAAI;iBACb,EAAA,QAAA,EACCD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wBAAA,eAAe,EAAE,OAAO;AACxB,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,SAAS,EAAE,gCAAgC;AAC5C,qBAAA,EAAA,QAAA,EAAA,CACCC,cAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,cAAA,EAAA,CAErF,EAELD,yBAAK,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAClCC,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,mBAAmB,EAAE,kBAAkB;AACvC,wCAAA,gBAAgB,EAAE,kBAAkB;AACpC,wCAAA,GAAG,EAAE,KAAK;AACV,wCAAA,OAAO,EAAE,KAAK;AACd,wCAAA,eAAe,EAAE,SAAS;AAC1B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,KAAK,EAAE,aAAa;AACrB,qCAAA,EAAA,QAAA,EACE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,UAAC,CAAC,EAAE,KAAK,EAAA;AACpC,wCAAA,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC;wCACtC,IAAM,GAAG,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC;wCAC5B,IAAM,aAAa,GAAG,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS;wCAE1D,QACEA,cAAA,CAAA,KAAA,EAAA,EAEE,YAAY,EAAE,YAAA;gDACZ,YAAY,CAAC,GAAG,CAAC;gDACjB,YAAY,CAAC,GAAG,CAAC;AACnB,4CAAA,CAAC,EACD,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE;AACL,gDAAA,KAAK,EAAE,MAAM;AACb,gDAAA,MAAM,EAAE,MAAM;AACd,gDAAA,MAAM,EAAE,mBAAmB;gDAC3B,eAAe,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO;AACpD,gDAAA,MAAM,EAAE,SAAS;AACjB,gDAAA,UAAU,EAAE,4BAA4B;AACxC,gDAAA,YAAY,EAAE,KAAK;6CACpB,EAAA,EAdI,KAAK,CAeV;AAEN,oCAAA,CAAC,CAAC,EAAA,CACE,EAEND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,SAAS,EAAE,MAAM;AACjB,wCAAA,SAAS,EAAE,QAAQ;AACnB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,UAAU,EAAE,KAAK;AACjB,wCAAA,KAAK,EAAE,SAAS;AACjB,qCAAA,EAAA,QAAA,EAAA,CACE,SAAS,EAAA,UAAA,EAAK,SAAS,EAAA,QAAA,CAAA,EAAA,CACpB,CAAA,EAAA,CACF,EAENA,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,CACrEC,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,iBAAiB,CAAC,KAAK,CAAC,CAAA,CAAxB,CAAwB,EACvC,KAAK,EAAE;AACL,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,eAAe,EAAE,OAAO;AACxB,wCAAA,KAAK,EAAE,SAAS;AAChB,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,UAAU,EAAE,KAAK;AAClB,qCAAA,EACD,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAjD,CAAiD,EACtE,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,EAA/C,CAA+C,EAAA,QAAA,EAAA,QAAA,EAAA,CAG7D,EACTA,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE;AACL,wCAAA,OAAO,EAAE,UAAU;AACnB,wCAAA,MAAM,EAAE,MAAM;AACd,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,eAAe,EAAE,SAAS;AAC1B,wCAAA,KAAK,EAAE,OAAO;AACd,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,UAAU,EAAE,KAAK;qCAClB,EACD,YAAY,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA,CAAjD,CAAiD,EACtE,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA,CAAjD,CAAiD,EAAA,QAAA,EAAA,cAAA,EAAA,CAG/D,IACL,CAAA,EAAA,CACF,EAAA,CACF,CACP,EAGDD,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE;AAChC,oBAAA,MAAM,EAAE,gBAAgB;oBACxB,YAAY,EAAE,eAAe,GAAG,MAAM,GAAG,gBAAgB;AACzD,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,eAAe,EAAE,MAAM;oBACvB,YAAY,EAAE,eAAe,GAAG,aAAa,GAAG,KAAK;AACrD,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,GAAG,EAAE,KAAK;AACV,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,cAAc,EAAE,eAAe;AAC/B,oBAAA,SAAS,EAAE,MAAM;AACjB,oBAAA,SAAS,EAAE,MAAM;AACjB,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,MAAM,EAAE;iBACT,EAAA,QAAA,EAAA,CAECC,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,EAAA,QAAA,EACzF,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI,EAAA,EAAI,OAAA,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,cAAc,CAAA,CAAhD,CAAgD,CAAC,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK,EAAA,EAAK,OAAA,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA,CAA9B,CAA8B,CAAC,EAAA,CACxH,EAGND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CAC3D,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EACrF,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA,EAAA,CAC1E,CAAA,EAAA,CACF,EAGL,eAAe,KACdA,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,oBAAA,eAAe,EAAE,SAAS;AAC1B,oBAAA,MAAM,EAAE,gBAAgB;AACxB,oBAAA,SAAS,EAAE,MAAM;AACjB,oBAAA,YAAY,EAAE,aAAa;AAC3B,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,GAAG,EAAE,MAAM;AACX,oBAAA,SAAS,EAAE,+BAA+B;iBAC3C,EAAA,QAAA,EAAA,CAECA,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAA,QAAA,EAAA,CAC1CA,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,CAClCC,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,mBAAmB,KAAA,IAAA,IAAnB,mBAAmB,KAAA,MAAA,GAAA,MAAA,GAAnB,mBAAmB,CAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAArC,CAAqC,EACtD,WAAW,EAAC,SAAS,EACrB,SAAS,EAAA,IAAA,EACT,KAAK,EAAE;AACL,4CAAA,KAAK,EAAE,MAAM;AACb,4CAAA,OAAO,EAAE,mBAAmB;AAC5B,4CAAA,MAAM,EAAE,WAAW,IAAI,YAAY,KAAK,CAAC,GAAG,mBAAmB,GAAG,mBAAmB;AACrF,4CAAA,YAAY,EAAE,KAAK;AACnB,4CAAA,QAAQ,EAAE,MAAM;AAChB,4CAAA,OAAO,EAAE,MAAM;AACf,4CAAA,UAAU,EAAE,UAAU;AACtB,4CAAA,eAAe,EAAE,OAAO;AACxB,4CAAA,SAAS,EAAE,YAAY;yCACxB,EACD,OAAO,EAAE,UAAC,CAAC,EAAA;AACT,4CAAA,IAAI,CAAC,WAAW,IAAI,YAAY,GAAG,CAAC,EAAE;gDACpC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;4CAC/C;AACF,wCAAA,CAAC,EACD,MAAM,EAAE,UAAC,CAAC,EAAA;AACR,4CAAA,IAAI,WAAW,IAAI,YAAY,KAAK,CAAC,EAAE;gDACrC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;4CAC/C;iDAAO;gDACL,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;4CAC/C;AACF,wCAAA,CAAC,GACD,EACFA,cAAA,CAACc,2BAAmB,EAAA,EAClB,KAAK,EAAE;AACL,4CAAA,KAAK,EAAE,MAAM;AACb,4CAAA,MAAM,EAAE,MAAM;AACd,4CAAA,QAAQ,EAAE,UAAU;AACpB,4CAAA,IAAI,EAAE,MAAM;AACZ,4CAAA,GAAG,EAAE,KAAK;AACV,4CAAA,SAAS,EAAE,kBAAkB;AAC7B,4CAAA,KAAK,EAAE,SAAS;AAChB,4CAAA,aAAa,EAAE,MAAM;AACtB,yCAAA,EAAA,CACD,IACE,EACL,WAAW,KACVd,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,oCAAA,SAAS,EAAE,KAAK;AAChB,oCAAA,QAAQ,EAAE,MAAM;oCAChB,KAAK,EAAE,YAAY,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS;iCAClD,EAAA,QAAA,EACE,YAAY,KAAK,CAAC,GAAG,YAAY,GAAG,EAAA,CAAA,MAAA,CAAG,iBAAiB,GAAG,CAAC,EAAA,MAAA,CAAA,CAAA,MAAA,CAAO,YAAY,CAAE,EAAA,CAC9E,CACP,IACG,EAGL,WAAW,KACVD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CACzCC,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,YAAY,KAAK,CAAC,EAC5B,KAAK,EAAC,8BAA8B,EACpC,KAAK,EAAE;AACL,oCAAA,OAAO,EAAE,KAAK;AACd,oCAAA,MAAM,EAAE,mBAAmB;AAC3B,oCAAA,YAAY,EAAE,KAAK;oCACnB,eAAe,EAAE,YAAY,KAAK,CAAC,GAAG,SAAS,GAAG,OAAO;oCACzD,MAAM,EAAE,YAAY,KAAK,CAAC,GAAG,aAAa,GAAG,SAAS;AACtD,oCAAA,OAAO,EAAE,MAAM;AACf,oCAAA,UAAU,EAAE,QAAQ;oCACpB,KAAK,EAAE,YAAY,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS;AACjD,oCAAA,UAAU,EAAE,UAAU;iCACvB,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,oCAAA,IAAI,YAAY,GAAG,CAAC,EAAE;wCACpB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;wCACjD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;oCAC/C;AACF,gCAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,oCAAA,IAAI,YAAY,GAAG,CAAC,EAAE;wCACpB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO;wCAC/C,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;oCAC/C;AACF,gCAAA,CAAC,EAAA,QAAA,EAEDA,cAAA,CAACkB,uBAAe,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,CACtD,EACTlB,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,YAAY,KAAK,CAAC,EAC5B,KAAK,EAAC,oBAAoB,EAC1B,KAAK,EAAE;AACL,oCAAA,OAAO,EAAE,KAAK;AACd,oCAAA,MAAM,EAAE,mBAAmB;AAC3B,oCAAA,YAAY,EAAE,KAAK;oCACnB,eAAe,EAAE,YAAY,KAAK,CAAC,GAAG,SAAS,GAAG,OAAO;oCACzD,MAAM,EAAE,YAAY,KAAK,CAAC,GAAG,aAAa,GAAG,SAAS;AACtD,oCAAA,OAAO,EAAE,MAAM;AACf,oCAAA,UAAU,EAAE,QAAQ;oCACpB,KAAK,EAAE,YAAY,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS;AACjD,oCAAA,UAAU,EAAE,UAAU;iCACvB,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,oCAAA,IAAI,YAAY,GAAG,CAAC,EAAE;wCACpB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;wCACjD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;oCAC/C;AACF,gCAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,oCAAA,IAAI,YAAY,GAAG,CAAC,EAAE;wCACpB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO;wCAC/C,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;oCAC/C;AACF,gCAAA,CAAC,EAAA,QAAA,EAEDA,cAAA,CAACmB,wBAAgB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,CACvD,CAAA,EAAA,CACL,CACP,EAGDnB,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAA,QAAA,EAC1CA,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAA9B,CAA8B,EAC/C,WAAW,EAAC,YAAY,EACxB,KAAK,EAAE;AACL,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,OAAO,EAAE,UAAU;AACnB,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,UAAU;AACtB,gCAAA,eAAe,EAAE,OAAO;AACxB,gCAAA,SAAS,EAAE,YAAY;6BACxB,EACD,OAAO,EAAE,UAAC,CAAC,EAAA;gCACT,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;AAC/C,4BAAA,CAAC,EACD,MAAM,EAAE,UAAC,CAAC,EAAA;gCACR,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;AAC/C,4BAAA,CAAC,EAAA,CACD,EAAA,CACE,EAGND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CACzCC,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC,EACpC,KAAK,EAAC,uBAAuB,EAC7B,KAAK,EAAE;AACL,oCAAA,OAAO,EAAE,UAAU;AACnB,oCAAA,MAAM,EAAE,mBAAmB;AAC3B,oCAAA,YAAY,EAAE,KAAK;AACnB,oCAAA,eAAe,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,OAAO;AACjE,oCAAA,KAAK,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS;AACzD,oCAAA,MAAM,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,aAAa,GAAG,SAAS;AAC9D,oCAAA,QAAQ,EAAE,MAAM;AAChB,oCAAA,UAAU,EAAE,KAAK;AACjB,oCAAA,UAAU,EAAE,QAAQ;AACpB,oCAAA,UAAU,EAAE,UAAU;iCACvB,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,oCAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;wCAC5B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;wCACjD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;oCAC/C;AACF,gCAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,oCAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;wCAC5B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO;wCAC/C,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;oCAC/C;gCACF,CAAC,EAAA,QAAA,EAAA,SAAA,EAAA,CAGM,EACTA,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC,EACpC,KAAK,EAAC,qBAAqB,EAC3B,KAAK,EAAE;AACL,oCAAA,OAAO,EAAE,UAAU;AACnB,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,YAAY,EAAE,KAAK;AACnB,oCAAA,eAAe,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS;AACnE,oCAAA,KAAK,EAAE,OAAO;AACd,oCAAA,MAAM,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,aAAa,GAAG,SAAS;AAC9D,oCAAA,QAAQ,EAAE,MAAM;AAChB,oCAAA,UAAU,EAAE,KAAK;AACjB,oCAAA,UAAU,EAAE,QAAQ;AACpB,oCAAA,UAAU,EAAE,UAAU;iCACvB,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,oCAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;wCAC5B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;oCACnD;AACF,gCAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,oCAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;wCAC5B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;oCACnD;gCACF,CAAC,EAAA,QAAA,EAAA,aAAA,EAAA,CAGM,IACL,EAGNA,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,kBAAkB,CAAC,KAAK,CAAC,CAAA,CAAzB,CAAyB,EACxC,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE;AACL,4BAAA,OAAO,EAAE,KAAK;AACd,4BAAA,MAAM,EAAE,mBAAmB;AAC3B,4BAAA,YAAY,EAAE,KAAK;AACnB,4BAAA,eAAe,EAAE,OAAO;AACxB,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,UAAU,EAAE,QAAQ;AACpB,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,UAAU,EAAE,UAAU;yBACvB,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;4BACd,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;4BACjD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;4BAC7C,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS;AACzC,wBAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;4BACd,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO;4BAC/C,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;4BAC7C,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS;wBACzC,CAAC,EAAA,QAAA,EAEDA,eAACoB,iBAAS,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,GAChD,CAAA,EAAA,CACL,CACP,CAAA,EAAA,CACA;AAEP,CAAC;;AC1mED,IAAM,cAAc,GAAkC,UAAC,EAAiC,EAAA;AAA/B,IAAA,IAAA,OAAO,aAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA;AACpF,IAAA,IAAM,MAAM,GAAGC,yBAAc,EAAE;AAC/B,IAAA,IAAM,QAAQ,GAAGC,sBAAW,EAAE;AAC9B,IAAA,IAAM,OAAO,GAAGC,qBAAU,EAAE;IACtB,IAAA,EAAA,GAA8B3B,cAAQ,CAAC,KAAK,CAAC,EAA5C,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,GAAA,EAAA,CAAA,CAAA,CAAmB;IAC7C,IAAA,EAAA,GAA8BA,cAAQ,CAAC;AAC3C,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AACzB,QAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC;AAC5B,KAAA,CAAC,EAHK,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,QAG9B;IACI,IAAA,EAAA,GAAgCA,cAAQ,CAAC,KAAK,CAAC,EAA9C,WAAW,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,cAAc,GAAA,EAAA,CAAA,CAAA,CAAmB;AACrD,IAAA,IAAM,QAAQ,GAAGC,YAAM,CAAmB,IAAI,CAAC;IAC/C,IAAM,QAAQ,GAAGA,YAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAE5D,IAAA,IAAM,eAAe,GAAG2B,iBAAW,CAAC,UAAC,CAAyC,EAAA;AAC5E,QAAA,IAAM,GAAG,GAAG,CAAC,CAAC,aAAa;QAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACrC,YAAA,aAAa,CAAC;gBACZ,KAAK,EAAE,GAAG,CAAC,YAAY;gBACvB,MAAM,EAAE,GAAG,CAAC,aAAa;AAC1B,aAAA,CAAC;QACJ;IACF,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAEnC,IAAA,IAAM,eAAe,GAAGA,iBAAW,CAAC,UAAC,CAAmB,EAAE,MAAyD,EAAA;;QACjH,CAAC,CAAC,cAAc,EAAE;QAClB,CAAC,CAAC,eAAe,EAAE;QAEnB,aAAa,CAAC,IAAI,CAAC;AACnB,QAAA,IAAM,YAAY,GAAG,UAAU,CAAC,KAAK,KAAI,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW,CAAA,IAAI,CAAC;AAC3E,QAAA,IAAM,aAAa,GAAG,UAAU,CAAC,MAAM,KAAI,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,YAAY,CAAA,IAAI,CAAC;QAE9E,QAAQ,CAAC,OAAO,GAAG;YACjB,CAAC,EAAE,CAAC,CAAC,OAAO;YACZ,CAAC,EAAE,CAAC,CAAC,OAAO;AACZ,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,MAAM,EAAE,aAAa;SACtB;QAED,IAAM,eAAe,GAAG,UAAC,SAAqB,EAAA;YAC5C,IAAM,MAAM,GAAG,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YACrD,IAAM,MAAM,GAAG,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAErD,YAAA,IAAI,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK;AACrC,YAAA,IAAI,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM;YAEvC,QAAQ,MAAM;AACZ,gBAAA,KAAK,IAAI;AACP,oBAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;AACzD,oBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC3D;AACF,gBAAA,KAAK,IAAI;AACP,oBAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;AACzD,oBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC3D;AACF,gBAAA,KAAK,IAAI;AACP,oBAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;AACzD,oBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC3D;AACF,gBAAA,KAAK,IAAI;AACP,oBAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;AACzD,oBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC3D;AACF,gBAAA,KAAK,GAAG;AACN,oBAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;AACzD,oBAAA,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM;oBACnC;AACF,gBAAA,KAAK,GAAG;AACN,oBAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;AACzD,oBAAA,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM;oBACnC;AACF,gBAAA,KAAK,GAAG;AACN,oBAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK;AACjC,oBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC3D;AACF,gBAAA,KAAK,GAAG;AACN,oBAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK;AACjC,oBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC3D;;YAGJ,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACvD,QAAA,CAAC;AAED,QAAA,IAAM,aAAa,GAAG,YAAA;YACpB,aAAa,CAAC,KAAK,CAAC;YAEpB,IAAM,IAAI,GAAG7B,sBAAW,CAAC,QAAQ,CAAC,MAAqB,EAAE,OAAO,CAAC;AACjE,YAAAH,gBAAU,CAAC,QAAQ,CACjB,MAAM,EACN;gBACE,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,MAAM,EAAE,UAAU,CAAC;AACK,aAAA,EAC1B,EAAE,EAAE,EAAE,IAAI,EAAE,CACb;AAED,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC;AAC1D,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AACxD,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC;AACvD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;IACrD,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC,IAAM,iBAAiB,GAAGgC,iBAAW,CAAC,YAAA;QACpC,IAAM,IAAI,GAAG7B,sBAAW,CAAC,QAAQ,CAAC,MAAqB,EAAE,OAAO,CAAC;QACjEH,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC9C,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErB,IAAM,kBAAkB,GAAGgC,iBAAW,CAAC,YAAA;AACrC,QAAA,IAAK,MAAc,CAAC,4BAA4B,EAAE;YAChD,IAAM,IAAI,GAAG7B,sBAAW,CAAC,QAAQ,CAAC,MAAqB,EAAE,OAAO,CAAC;YAChE,MAAc,CAAC,4BAA4B,CAAC;gBAC3C,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,gBAAA,IAAI,EAAA,IAAA;AACL,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErB,IAAA,IAAM,qBAAqB,GAAG6B,iBAAW,CAAC,UAAC,SAAsC,EAAA;QAC/E,IAAM,IAAI,GAAG7B,sBAAW,CAAC,QAAQ,CAAC,MAAqB,EAAE,OAAO,CAAC;AACjE,QAAAH,gBAAU,CAAC,QAAQ,CACjB,MAAM,EACN,EAAE,KAAK,EAAE,SAAS,EAA2B,EAC7C,EAAE,EAAE,EAAE,IAAI,EAAE,CACb;AACH,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErB,IAAA,IAAM,cAAc,GAAwB;AAC1C,QAAA,OAAO,EAAE,MAAM;QACf,cAAc,EAAE,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,QAAQ;YACtC,OAAO,CAAC,KAAK,KAAK,OAAO,GAAG,UAAU,GAAG,YAAY;AACpE,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,QAAQ,EAAE,UAAU;KACrB;AAED,IAAA,IAAM,YAAY,GAAwB;AACxC,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS;KAC/C;AAED,IAAA,IAAM,UAAU,GAAwB;AACtC,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,EAAA,CAAA,MAAA,CAAG,UAAU,CAAC,KAAK,EAAA,IAAA,CAAI,GAAG,MAAM;AAC1D,QAAA,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,EAAA,CAAA,MAAA,CAAG,UAAU,CAAC,MAAM,EAAA,IAAA,CAAI,GAAG,MAAM;AAC7D,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,SAAS,EAAE,CAAC,QAAQ,IAAI,OAAO,KAAK;AAClC,cAAE;AACF,cAAE,8BAA8B;AAClC,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,UAAU,EAAE,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,MAAM,GAAG,sBAAsB;KACnF;AAED,IAAA,IAAM,WAAW,GAAwB;AACvC,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,eAAe,EAAE,SAAS;AAC1B,QAAA,MAAM,EAAE,mBAAmB;AAC3B,QAAA,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC;AAC5B,QAAA,UAAU,EAAE,mBAAmB;QAC/B,aAAa,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM;AAC5C,QAAA,MAAM,EAAE,EAAE;KACX;IAED,QACEO,oCAAS,UAAU,EAAA,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CACxEC,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,cAAc,EAAA,QAAA,EACxBD,eAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,YAAA,EAAM,OAAA,cAAc,CAAC,IAAI,CAAC,CAAA,CAApB,CAAoB,EACxC,YAAY,EAAE,YAAA,EAAM,OAAA,CAAC,UAAU,IAAI,cAAc,CAAC,KAAK,CAAC,CAAA,CAApC,CAAoC,EAAA,QAAA,EAAA,CAExDC,wBACE,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,OAAO,CAAC,GAAG,EAChB,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,EAC3B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,KAAK,EAAA,CAChB,EAGD,CAAC,CAAC,QAAQ,IAAI,OAAO,KAAK,WAAW,MACpCD,eAAA,CAAAkB,mBAAA,EAAA,EAAA,QAAA,EAAA,CACFjB,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,wBAAO,WAAW,CAAA,EAAA,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAA,CAAA,EACvE,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA,CAAxB,CAAwB,EAC5C,KAAK,EAAC,QAAQ,GACd,EACFA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAO,WAAW,KAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAA,CAAA,EACxE,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA,CAAxB,CAAwB,EAC5C,KAAK,EAAC,QAAQ,EAAA,CACd,EACFA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAO,WAAW,CAAA,EAAA,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAA,CAAA,EAC1E,WAAW,EAAE,UAAC,CAAC,IAAK,OAAA,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA,CAAxB,CAAwB,EAC5C,KAAK,EAAC,QAAQ,GACd,EACFA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAO,WAAW,CAAA,EAAA,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAA,CAAA,EAC3E,WAAW,EAAE,UAAC,CAAC,IAAK,OAAA,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA,CAAxB,CAAwB,EAC5C,KAAK,EAAC,QAAQ,EAAA,CACd,EAGFA,wBACE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACA,WAAW,CAAA,EAAA,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,UAAU,EAAA,CAAA,EAEpB,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAvB,CAAuB,EAC3C,KAAK,EAAC,eAAe,EAAA,CACrB,EACFA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACA,WAAW,CAAA,EAAA,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,UAAU,EAAA,CAAA,EAEpB,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,EAAvB,CAAuB,EAC3C,KAAK,EAAC,eAAe,GACrB,EACFA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACA,WAAW,CAAA,EAAA,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,UAAU,EAAA,CAAA,EAEpB,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAvB,CAAuB,EAC3C,KAAK,EAAC,cAAc,EAAA,CACpB,EACFA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACA,WAAW,KACd,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,UAAU,EAAA,CAAA,EAEpB,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAvB,CAAuB,EAC3C,KAAK,EAAC,cAAc,EAAA,CACpB,CAAA,EAAA,CACG,CACJ,EAGA,CAAC,CAAC,QAAQ,IAAI,OAAO,KAAK,WAAW,MACpCD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,gCAAA,QAAQ,EAAE,UAAU;AACpB,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,KAAK,EAAE,KAAK;AACZ,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,aAAa,EAAE,QAAQ;AACvB,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,MAAM,EAAE,EAAE;6BACX,EAAA,QAAA,EAAA,CAECA,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,GAAG,EAAE,KAAK;AACV,wCAAA,eAAe,EAAE,SAAS;AAC1B,wCAAA,MAAM,EAAE,mBAAmB;AAC3B,wCAAA,YAAY,EAAE,KAAK;AACnB,wCAAA,OAAO,EAAE,KAAK;AACd,wCAAA,SAAS,EAAE,+BAA+B;qCAC3C,EAAA,QAAA,EAAA,CACCC,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,qBAAqB,CAAC,MAAM,CAAC,CAAA,CAA7B,CAA6B,EAC5C,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,cAAc,EAAE,CAAA,CAAlB,CAAkB,EACtC,KAAK,EAAE;AACL,gDAAA,OAAO,EAAE,SAAS;AAClB,gDAAA,eAAe,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,aAAa;AACrE,gDAAA,MAAM,EAAE,MAAM;AACd,gDAAA,YAAY,EAAE,KAAK;AACnB,gDAAA,KAAK,EAAE,SAAS;AAChB,gDAAA,QAAQ,EAAE,MAAM;AAChB,gDAAA,UAAU,EAAE,KAAK;AACjB,gDAAA,MAAM,EAAE,SAAS;AACjB,gDAAA,UAAU,EAAE,gBAAgB;6CAC7B,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,gDAAA,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE;oDAC5B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;gDACnD;AACF,4CAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,gDAAA,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE;oDAC5B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa;gDACvD;AACF,4CAAA,CAAC,EACD,KAAK,EAAC,YAAY,uBAGX,EACTA,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,qBAAqB,CAAC,QAAQ,CAAC,CAAA,CAA/B,CAA+B,EAC9C,WAAW,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,cAAc,EAAE,CAAA,CAAlB,CAAkB,EACtC,KAAK,EAAE;AACL,gDAAA,OAAO,EAAE,SAAS;AAClB,gDAAA,eAAe,EAAE,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,SAAS,GAAG,aAAa;AACvE,gDAAA,MAAM,EAAE,MAAM;AACd,gDAAA,YAAY,EAAE,KAAK;AACnB,gDAAA,KAAK,EAAE,SAAS;AAChB,gDAAA,QAAQ,EAAE,MAAM;AAChB,gDAAA,UAAU,EAAE,KAAK;AACjB,gDAAA,MAAM,EAAE,SAAS;AACjB,gDAAA,UAAU,EAAE,gBAAgB;6CAC7B,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,gDAAA,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;oDAC9B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;gDACnD;AACF,4CAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,gDAAA,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;oDAC9B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa;gDACvD;AACF,4CAAA,CAAC,EACD,KAAK,EAAC,cAAc,uBAGb,EACTA,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,qBAAqB,CAAC,OAAO,CAAC,CAAA,CAA9B,CAA8B,EAC7C,WAAW,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,cAAc,EAAE,CAAA,CAAlB,CAAkB,EACtC,KAAK,EAAE;AACL,gDAAA,OAAO,EAAE,SAAS;AAClB,gDAAA,eAAe,EAAE,OAAO,CAAC,KAAK,KAAK,OAAO,GAAG,SAAS,GAAG,aAAa;AACtE,gDAAA,MAAM,EAAE,MAAM;AACd,gDAAA,YAAY,EAAE,KAAK;AACnB,gDAAA,KAAK,EAAE,SAAS;AAChB,gDAAA,QAAQ,EAAE,MAAM;AAChB,gDAAA,UAAU,EAAE,KAAK;AACjB,gDAAA,MAAM,EAAE,SAAS;AACjB,gDAAA,UAAU,EAAE,gBAAgB;6CAC7B,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,gDAAA,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,EAAE;oDAC7B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;gDACnD;AACF,4CAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,gDAAA,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,EAAE;oDAC7B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa;gDACvD;4CACF,CAAC,EACD,KAAK,EAAC,aAAa,uBAGZ,CAAA,EAAA,CACL,EAGND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,GAAG,EAAE,KAAK;AACX,qCAAA,EAAA,QAAA,EAAA,CACCC,2BACE,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,cAAc,EAAE,EAAlB,CAAkB,EACtC,KAAK,EAAE;AACL,gDAAA,OAAO,EAAE,UAAU;AACnB,gDAAA,eAAe,EAAE,SAAS;AAC1B,gDAAA,MAAM,EAAE,mBAAmB;AAC3B,gDAAA,YAAY,EAAE,KAAK;AACnB,gDAAA,KAAK,EAAE,SAAS;AAChB,gDAAA,QAAQ,EAAE,MAAM;AAChB,gDAAA,UAAU,EAAE,KAAK;AACjB,gDAAA,MAAM,EAAE,SAAS;AACjB,gDAAA,SAAS,EAAE,+BAA+B;AAC1C,gDAAA,UAAU,EAAE,gBAAgB;6CAC7B,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;gDACd,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;gDACjD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;AAC/C,4CAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;gDACd,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;gDACjD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;4CAC/C,CAAC,EACD,KAAK,EAAC,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,CAGd,EACTA,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,cAAc,EAAE,CAAA,CAAlB,CAAkB,EACtC,KAAK,EAAE;AACL,gDAAA,OAAO,EAAE,UAAU;AACnB,gDAAA,eAAe,EAAE,SAAS;AAC1B,gDAAA,MAAM,EAAE,mBAAmB;AAC3B,gDAAA,YAAY,EAAE,KAAK;AACnB,gDAAA,KAAK,EAAE,SAAS;AAChB,gDAAA,QAAQ,EAAE,MAAM;AAChB,gDAAA,UAAU,EAAE,KAAK;AACjB,gDAAA,MAAM,EAAE,SAAS;AACjB,gDAAA,SAAS,EAAE,+BAA+B;AAC1C,gDAAA,UAAU,EAAE,gBAAgB;6CAC7B,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;gDACd,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;gDACjD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;AAC/C,4CAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;gDACd,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;gDACjD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS;AAC/C,4CAAA,CAAC,EACD,KAAK,EAAC,cAAc,uBAGb,CAAA,EAAA,CACL,CAAA,EAAA,CACF,CACP,CAAA,EAAA,CACG,EAAA,CACF,EACL,QAAQ,CAAA,EAAA,CAAA,CACL;AAEV;;AC1aO,IAAM,cAAc,GAAkC,UAAC,EAAiC,EAAA;AAA/B,IAAA,IAAA,OAAO,aAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA;AAC3F,IAAA,IAAM,MAAM,GAAGqB,yBAAc,EAAE;AAC/B,IAAA,IAAM,QAAQ,GAAGC,sBAAW,EAAE;AAC9B,IAAA,IAAM,OAAO,GAAGC,qBAAU,EAAE;IACtB,IAAA,EAAA,GAAkC3B,cAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAAmB;AACjD,IAAA,IAAA,EAAA,GAA8BA,cAAQ,CAAgB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,EAA3E,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,QAAkD;IAC5E,IAAA,EAAA,GAA8BA,cAAQ,CAAC,KAAK,CAAC,EAA5C,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,GAAA,EAAA,CAAA,CAAA,CAAmB;AACnD,IAAA,IAAM,QAAQ,GAAGC,YAAM,CAAmB,IAAI,CAAC;AAE/C,IAAA,IAAM,YAAY,GAAG,YAAA;QACnB,WAAW,CAAC,MAAM,CAAC;AACrB,IAAA,CAAC;AAED,IAAA,IAAM,eAAe,GAAG,YAAA;QACtB,cAAc,CAAC,MAAM,CAAC;AACxB,IAAA,CAAC;AAED,IAAA,IAAM,eAAe,GAAG,YAAA;QACtB,cAAc,CAAC,MAAM,CAAC;AACxB,IAAA,CAAC;AAED,IAAA,IAAM,kBAAkB,GAAG,YAAA;QACzB,iBAAiB,CAAC,MAAM,CAAC;AAC3B,IAAA,CAAC;AAED,IAAA,IAAM,iBAAiB,GAAG,YAAA;AACxB,QAAAL,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;YAC7B,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,gBAAA,OAAA,CAACF,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACnB,CAAC,CAAC,IAAI,KAAK,OAAO;YADlB,CACkB;AACrB,SAAA,CAAC;AACJ,IAAA,CAAC;IAED,IAAM,WAAW,GAAG,UAAC,SAAwB,EAAA;AAC3C,QAAA,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC;AACtC,IAAA,CAAC;IAED,IAAM,gBAAgB,GAAG,UAAC,KAAa,EAAA;QACrC,aAAa,CAAC,KAAK,CAAC;AACpB,QAAA,IAAI;YACF,IAAM,IAAI,GAAGK,sBAAW,CAAC,QAAQ,CAAC,MAAqB,EAAE,OAAO,CAAC;AACjE,YAAAH,gBAAU,CAAC,QAAQ,CACjB,MAAM,EACN,EAAE,KAAK,EAAA,KAAA,EAA2B,EAClC,EAAE,EAAE,EAAE,IAAI,EAAE,CACb;QACH;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC;QACtD;AACF,IAAA,CAAC;IAED,QACEQ,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,MAAM;YACf,cAAc,EAAE,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,QAAQ;gBACnD,OAAO,CAAC,KAAK,KAAK,OAAO,GAAG,UAAU,GAAG,YAAY;SACxD,EAAA,QAAA,EAEDD,eAAA,CAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EACM,UAAU,EAAA,EACd,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,EAAA,CAAA,MAAA,CAAG,UAAU,EAAA,IAAA,CAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EACjG,YAAY,EAAE,YAAA,EAAM,OAAA,eAAe,CAAC,IAAI,CAAC,CAAA,CAArB,CAAqB,EACzC,YAAY,EAAE,YAAA,EAAM,OAAA,eAAe,CAAC,KAAK,CAAC,CAAA,CAAtB,CAAsB,EAAA,QAAA,EAAA,CAE1CC,cAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE;AACL,wBAAA,cAAc,EAAE,UAAU;AAC1B,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,MAAM,EAAE,CAAC,QAAQ,IAAI,OAAO,KAAK,YAAY,GAAG,mBAAmB,GAAG,mBAAmB;AACzF,wBAAA,UAAU,EAAE,kBAAkB;qBAC/B,EAAA,QAAA,EAEDA,cAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAQ,QAAQ,EAAA,CAAS,EAAA,CACnB,EAGP,CAAC,CAAC,QAAQ,IAAI,OAAO,KAAK,YAAY,MACrCD,eAAA,CAAA,KAAA,EAAA,EACE,eAAe,EAAE,KAAK,EACtB,KAAK,EAAE;AACL,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,GAAG,EAAE,OAAO;AACZ,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,GAAG,EAAE,KAAK;AACV,wBAAA,eAAe,EAAE,MAAM;AACvB,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,SAAS,EAAE,+BAA+B;AAC1C,wBAAA,MAAM,EAAE,EAAE;qBACX,EAAA,QAAA,EAAA,CAEDA,eAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAY,EACrB,KAAK,EAAC,SAAS,EACf,KAAK,EAAE;AACL,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,OAAO,EAAE,UAAU;AACnB,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,eAAe,EAAE,MAAM;AACvB,gCAAA,MAAM,EAAE,SAAS;AACjB,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,SAAS;AACjB,6BAAA,EACD,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,QAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAC,CAAnD,CAAmD,EACvE,UAAU,EAAE,UAAC,CAAC,EAAA,EAAK,QAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,EAAC,CAAhD,CAAgD,aAEnEC,cAAA,CAACyB,gBAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,KAAA,CAAA,EAAA,CAE/C,EACT1B,4BACE,OAAO,EAAE,eAAe,EACxB,KAAK,EAAC,YAAY,EAClB,KAAK,EAAE;AACL,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,OAAO,EAAE,UAAU;AACnB,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,eAAe,EAAE,MAAM;AACvB,gCAAA,MAAM,EAAE,SAAS;AACjB,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,SAAS;AACjB,6BAAA,EACD,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,QAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAC,CAAnD,CAAmD,EACvE,UAAU,EAAE,UAAC,CAAC,EAAA,EAAK,QAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,EAAC,CAAhD,CAAgD,aAEnEC,cAAA,CAAC0B,iBAAS,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,KAAA,CAAA,EAAA,CAEhD,EACT3B,4BACE,OAAO,EAAE,eAAe,EACxB,KAAK,EAAC,YAAY,EAClB,KAAK,EAAE;AACL,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,OAAO,EAAE,UAAU;AACnB,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,eAAe,EAAE,MAAM;AACvB,gCAAA,MAAM,EAAE,SAAS;AACjB,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,SAAS;AACjB,6BAAA,EACD,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,QAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAC,CAAnD,CAAmD,EACvE,UAAU,EAAE,UAAC,CAAC,EAAA,EAAK,QAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,EAAC,CAAhD,CAAgD,aAEnEC,cAAA,CAACyB,gBAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,KAAA,CAAA,EAAA,CAE/C,EACT1B,4BACE,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAC,eAAe,EACrB,KAAK,EAAE;AACL,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,OAAO,EAAE,UAAU;AACnB,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,eAAe,EAAE,MAAM;AACvB,gCAAA,MAAM,EAAE,SAAS;AACjB,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,SAAS;6BACjB,EACD,WAAW,EAAE,UAAC,CAAC,IAAK,QAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAC,CAAnD,CAAmD,EACvE,UAAU,EAAE,UAAC,CAAC,EAAA,EAAK,QAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,EAAC,CAAhD,CAAgD,EAAA,QAAA,EAAA,CAEnEC,cAAA,CAAC0B,iBAAS,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAI,EAAA,KAAA,CAAA,EAAA,CAEhD,EACT1B,wBAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,EAAA,CAAI,EAG7FA,2BACE,OAAO,EAAE,cAAM,OAAA,WAAW,CAAC,MAAM,CAAC,EAAnB,CAAmB,EAClC,KAAK,EAAC,YAAY,EAClB,KAAK,EAAE;AACL,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,OAAO,EAAE,SAAS;AAClB,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,eAAe,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,MAAM;AAChF,gCAAA,MAAM,EAAE,SAAS;AACjB,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,SAAS;6BACjB,EACD,WAAW,EAAE,UAAC,CAAC,EAAA;gCACb,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK;oCAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;AAClG,4BAAA,CAAC,EACD,UAAU,EAAE,UAAC,CAAC,EAAA;gCACZ,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,MAAM;AACzG,4BAAA,CAAC,EAAA,QAAA,EAEDA,cAAA,CAAC2B,2BAAmB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,CAC1D,EACT3B,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,WAAW,CAAC,QAAQ,CAAC,CAAA,CAArB,CAAqB,EACpC,KAAK,EAAC,cAAc,EACpB,KAAK,EAAE;AACL,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,OAAO,EAAE,SAAS;AAClB,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,eAAe,EAAE,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,SAAS,GAAG,MAAM;AAChE,gCAAA,MAAM,EAAE,SAAS;AACjB,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,SAAS;6BACjB,EACD,WAAW,EAAE,UAAC,CAAC,EAAA;AACb,gCAAA,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ;oCAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;AACnF,4BAAA,CAAC,EACD,UAAU,EAAE,UAAC,CAAC,EAAA;gCACZ,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,SAAS,GAAG,MAAM;AACzF,4BAAA,CAAC,EAAA,QAAA,EAEDA,cAAA,CAAC4B,iBAAS,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,CAChD,EACT5B,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,WAAW,CAAC,OAAO,CAAC,CAAA,CAApB,CAAoB,EACnC,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE;AACL,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,OAAO,EAAE,SAAS;AAClB,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,eAAe,EAAE,OAAO,CAAC,KAAK,KAAK,OAAO,GAAG,SAAS,GAAG,MAAM;AAC/D,gCAAA,MAAM,EAAE,SAAS;AACjB,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,SAAS;6BACjB,EACD,WAAW,EAAE,UAAC,CAAC,EAAA;AACb,gCAAA,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO;oCAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;AAClF,4BAAA,CAAC,EACD,UAAU,EAAE,UAAC,CAAC,EAAA;gCACZ,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,GAAG,SAAS,GAAG,MAAM;4BACxF,CAAC,EAAA,QAAA,EAEDA,eAAC6B,4BAAoB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,CAC3D,EAET7B,wBAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAI,EAC7FD,eAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAC,cAAc,EACpB,KAAK,EAAE;AACL,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,OAAO,EAAE,UAAU;AACnB,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,eAAe,EAAE,MAAM;AACvB,gCAAA,MAAM,EAAE,SAAS;AACjB,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,SAAS;6BACjB,EACD,WAAW,EAAE,UAAC,CAAC,EAAA;gCACb,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;AACnD,4BAAA,CAAC,EACD,UAAU,EAAE,UAAC,CAAC,EAAA;gCACZ,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM;AAChD,4BAAA,CAAC,aAEDC,cAAA,CAAC8B,iBAAS,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,cAEhD,CAAA,EAAA,CACL,CACP,EAGA,CAAC,CAAC,QAAQ,IAAI,OAAO,KAAK,YAAY,MACrC9B,cAAA,CAAA,KAAA,EAAA,EACE,eAAe,EAAE,KAAK,EACtB,WAAW,EAAE,UAAC,CAAC,EAAA;;wBACb,CAAC,CAAC,cAAc,EAAE;wBAClB,CAAC,CAAC,eAAe,EAAE;wBACnB,aAAa,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAM,MAAM,GAAG,CAAC,CAAC,OAAO;wBACxB,IAAM,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW,KAAI,CAAC;wBACrD,IAAI,UAAU,GAAG,UAAU;wBAE3B,IAAM,eAAe,GAAG,UAAC,SAAqB,EAAA;AAC5C,4BAAA,IAAM,IAAI,GAAG,SAAS,CAAC,OAAO,GAAG,MAAM;AACvC,4BAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;4BACjD,UAAU,GAAG,QAAQ;4BACrB,aAAa,CAAC,QAAQ,CAAC;AACzB,wBAAA,CAAC;AAED,wBAAA,IAAM,aAAa,GAAG,YAAA;4BACpB,aAAa,CAAC,KAAK,CAAC;4BACpB,gBAAgB,CAAC,UAAU,CAAC;AAC5B,4BAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC;AAC1D,4BAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AACxD,wBAAA,CAAC;AAED,wBAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC;AACvD,wBAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;oBACrD,CAAC,EACD,KAAK,EAAE;AACL,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,GAAG,EAAE,GAAG;AACR,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,MAAM,EAAE,YAAY;wBACpB,eAAe,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa;AACvD,wBAAA,UAAU,EAAE,uBAAuB;AACnC,wBAAA,MAAM,EAAE,CAAC;qBACV,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,wBAAA,IAAI,CAAC,UAAU;4BAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,WAAW;AACtE,oBAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;AACd,wBAAA,IAAI,CAAC,UAAU;4BAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa;AACxE,oBAAA,CAAC,EAAA,CACD,CACH,CAAA,EAAA,CAAA,CACG,EAAA,CACF;AAEV;AAQO,IAAM,iBAAiB,GAAqC,UAAC,EAAwB,EAAA;QAAtB,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA;AACxF,IAAA,OAAOA,cAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAA,EAAQ,UAAU,EAAA,EAAA,QAAA,EAAG,QAAQ,IAAM;AAC5C;AAQO,IAAM,kBAAkB,GAAsC,UAAC,EAAiC,EAAA;AAA/B,IAAA,IAAA,OAAO,aAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA;AACnG,IAAA,IAAM,MAAM,GAAGqB,yBAAc,EAAE;AAC/B,IAAA,IAAM,QAAQ,GAAGC,sBAAW,EAAE;AAC9B,IAAA,IAAM,OAAO,GAAGC,qBAAU,EAAE;IACtB,IAAA,EAAA,GAAoC3B,cAAQ,CAAC,KAAK,CAAC,EAAlD,aAAa,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,CAAA,CAAmB;AACzD,IAAA,IAAM,OAAO,GAAGC,YAAM,CAAiB,IAAI,CAAC;AAE5C,IAAAC,eAAS,CAAC,YAAA;QACR,IAAM,kBAAkB,GAAG,UAAC,KAAiB,EAAA;AAC3C,YAAA,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBACtE,gBAAgB,CAAC,KAAK,CAAC;YACzB;AACF,QAAA,CAAC;QAED,IAAI,aAAa,EAAE;AACjB,YAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,YAAA,OAAO,YAAA,EAAM,OAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA,CAA7D,CAA6D;QAC5E;AACF,IAAA,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IAEnB,IAAM,eAAe,GAAG,UAAC,SAAwB,EAAA;QAC/C,IAAM,IAAI,GAAGH,sBAAW,CAAC,QAAQ,CAAC,MAAqB,EAAE,OAAO,CAAC;AACjE,QAAAH,gBAAU,CAAC,QAAQ,CACjB,MAAM,EACN,EAAE,KAAK,EAAE,SAAS,EAA+B,EACjD,EAAE,EAAE,EAAE,IAAI,EAAE,CACb;QACD,gBAAgB,CAAC,KAAK,CAAC;AACzB,IAAA,CAAC;AAED,IAAA,QACEO,eAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAA,EACM,UAAU,EAAA,EACd,KAAK,EAAE;AACL,YAAA,MAAM,EAAE,mBAAmB;AAC3B,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM;AACnC,SAAA,EAAA,QAAA,EAAA,CAGA,QAAQ,IAAI,OAAO,KAClBA,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,OAAO,EACZ,eAAe,EAAE,KAAK,EACtB,KAAK,EAAE;AACL,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,GAAG,EAAE,KAAK;AACV,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,MAAM,EAAE,EAAE;AACX,iBAAA,EAAA,QAAA,EAAA,CAEDC,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,gBAAgB,CAAC,CAAC,aAAa,CAAC,CAAA,CAAhC,CAAgC,EAC/C,KAAK,EAAE;AACL,4BAAA,OAAO,EAAE,SAAS;AAClB,4BAAA,MAAM,EAAE,mBAAmB;AAC3B,4BAAA,YAAY,EAAE,KAAK;AACnB,4BAAA,eAAe,EAAE,MAAM;AACvB,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,QAAQ,EAAE,MAAM;AAChB,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,UAAU,EAAE,QAAQ;AACpB,4BAAA,GAAG,EAAE,KAAK;AACX,yBAAA,EACD,WAAW,EAAE,UAAC,CAAC,EAAA,EAAK,QAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,EAAC,CAAnD,CAAmD,EACvE,UAAU,EAAE,UAAC,CAAC,EAAA,EAAK,QAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,EAAC,CAAhD,CAAgD,EACnE,KAAK,EAAC,oBAAoB,EAAA,QAAA,EAE1BA,cAAA,CAAC2B,2BAAmB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,CAC1D,EAER,aAAa,KACZ5B,eAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,4BAAA,QAAQ,EAAE,UAAU;AACpB,4BAAA,GAAG,EAAE,MAAM;AACX,4BAAA,KAAK,EAAE,GAAG;AACV,4BAAA,SAAS,EAAE,KAAK;AAChB,4BAAA,eAAe,EAAE,MAAM;AACvB,4BAAA,MAAM,EAAE,mBAAmB;AAC3B,4BAAA,YAAY,EAAE,KAAK;AACnB,4BAAA,SAAS,EAAE,mCAAmC;AAC9C,4BAAA,OAAO,EAAE,KAAK;AACd,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,GAAG,EAAE,KAAK;AACV,4BAAA,QAAQ,EAAE,OAAO;AAClB,yBAAA,EAAA,QAAA,EAAA,CAEDC,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,eAAe,CAAC,MAAM,CAAC,CAAA,CAAvB,CAAuB,EACtC,KAAK,EAAE;AACL,oCAAA,OAAO,EAAE,SAAS;AAClB,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,YAAY,EAAE,KAAK;AACnB,oCAAA,eAAe,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,aAAa;AACvF,oCAAA,MAAM,EAAE,SAAS;AACjB,oCAAA,OAAO,EAAE,MAAM;AACf,oCAAA,UAAU,EAAE,QAAQ;AACpB,oCAAA,cAAc,EAAE,QAAQ;iCACzB,EACD,WAAW,EAAE,UAAC,CAAC,EAAA;oCACb,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK;wCAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;AAClG,gCAAA,CAAC,EACD,UAAU,EAAE,UAAC,CAAC,EAAA;oCACZ,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,aAAa;AAChH,gCAAA,CAAC,EACD,KAAK,EAAC,YAAY,YAElBA,cAAA,CAAC2B,2BAAmB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAI,EAAA,CAC1D,EACT3B,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,eAAe,CAAC,QAAQ,CAAC,CAAA,CAAzB,CAAyB,EACxC,KAAK,EAAE;AACL,oCAAA,OAAO,EAAE,SAAS;AAClB,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,YAAY,EAAE,KAAK;AACnB,oCAAA,eAAe,EAAE,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,SAAS,GAAG,aAAa;AACvE,oCAAA,MAAM,EAAE,SAAS;AACjB,oCAAA,OAAO,EAAE,MAAM;AACf,oCAAA,UAAU,EAAE,QAAQ;AACpB,oCAAA,cAAc,EAAE,QAAQ;iCACzB,EACD,WAAW,EAAE,UAAC,CAAC,EAAA;AACb,oCAAA,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ;wCAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;AACnF,gCAAA,CAAC,EACD,UAAU,EAAE,UAAC,CAAC,EAAA;oCACZ,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,SAAS,GAAG,aAAa;AAChG,gCAAA,CAAC,EACD,KAAK,EAAC,cAAc,YAEpBA,cAAA,CAAC4B,iBAAS,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAI,EAAA,CAChD,EACT5B,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA,EAAM,OAAA,eAAe,CAAC,OAAO,CAAC,CAAA,CAAxB,CAAwB,EACvC,KAAK,EAAE;AACL,oCAAA,OAAO,EAAE,SAAS;AAClB,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,YAAY,EAAE,KAAK;AACnB,oCAAA,eAAe,EAAE,OAAO,CAAC,KAAK,KAAK,OAAO,GAAG,SAAS,GAAG,aAAa;AACtE,oCAAA,MAAM,EAAE,SAAS;AACjB,oCAAA,OAAO,EAAE,MAAM;AACf,oCAAA,UAAU,EAAE,QAAQ;AACpB,oCAAA,cAAc,EAAE,QAAQ;iCACzB,EACD,WAAW,EAAE,UAAC,CAAC,EAAA;AACb,oCAAA,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO;wCAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;AAClF,gCAAA,CAAC,EACD,UAAU,EAAE,UAAC,CAAC,EAAA;oCACZ,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,GAAG,SAAS,GAAG,aAAa;AAC/F,gCAAA,CAAC,EACD,KAAK,EAAC,aAAa,EAAA,QAAA,EAEnBA,cAAA,CAAC6B,4BAAoB,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,CAAI,EAAA,CAC3D,CAAA,EAAA,CACL,CACP,CAAA,EAAA,CACG,CACP,EACA,QAAQ,CAAA,EAAA,CAAA,CACN;AAET;;AChhBA;AACO,IAAM,iBAAiB,GAAkB;AAC9C,IAAA,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc;AAC1E,IAAA,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe;IAC/D,WAAW;AACX,IAAA,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe;IAC9C,WAAW;IACX,aAAa,EAAE,WAAW,EAAE,MAAM;IAClC,WAAW;AACX,IAAA,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS;IACpC,WAAW;AACX,IAAA,YAAY,EAAE,UAAU;IACxB,WAAW;AACX,IAAA,YAAY,EAAE,YAAY;IAC1B,WAAW;AACX,IAAA,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS;IACrD,WAAW;IACX,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM;IAC3D,WAAW;IACX,cAAc,EAAE,YAAY,EAAE;;;AChBhC,IAAM,UAAU,GAAG,UAAC,EAA+C,EAAA;AAA7C,IAAA,IAAA,UAAU,gBAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA;IAC9C,IAAM,QAAQ,GAAG,IAAkB;AAEnC,IAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACjB,QAAA,QAAQ,GAAG7B,cAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAS,QAAQ,EAAA,CAAU;IACxC;AAEA,IAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,QAAA,QAAQ,GAAGA,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAK,QAAQ,EAAA,CAAM;IAChC;AAEA,IAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;AACtB,QAAA,QAAQ,GAAGA,cAAA,CAAA,GAAA,EAAA,EAAA,QAAA,EAAI,QAAQ,EAAA,CAAK;IAC9B;AAEA,IAAA,IAAI,QAAQ,CAAC,aAAa,EAAE;AAC1B,QAAA,QAAQ,GAAGA,cAAA,CAAA,GAAA,EAAA,EAAA,QAAA,EAAI,QAAQ,EAAA,CAAK;IAC9B;AAEA,IAAA,IAAI,QAAQ,CAAC,WAAW,EAAE;AACxB,QAAA,QAAQ,GAAGA,cAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAM,QAAQ,EAAA,CAAO;IAClC;AAEA,IAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;AACtB,QAAA,QAAQ,GAAGA,cAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAM,QAAQ,EAAA,CAAO;IAClC;AAEA,IAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;QACjB,QAAQ,GAAGA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE;AACtB,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,UAAU,EAAE;aACb,EAAA,QAAA,EAAG,QAAQ,GAAQ;IACtB;IAEA,IAAM,KAAK,GAAwB,EAAE;AACrC,IAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,QAAA,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;IAC9B;AACA,IAAA,IAAI,QAAQ,CAAC,eAAe,EAAE;AAC5B,QAAA,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe;IAClD;AAEA,IAAA,IAAI,QAAQ,CAAC,aAAa,EAAE;AAC1B,QAAA,KAAK,CAAC,eAAe,GAAG,SAAS;AACjC,QAAA,KAAK,CAAC,KAAK,GAAG,MAAM;IACtB;AAAO,SAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC1B,QAAA,KAAK,CAAC,eAAe,GAAG,SAAS;IACnC;IAEA,OAAOA,cAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAU,UAAU,EAAA,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAA,CAAQ;AAC1G,CAAC;AAED,IAAM,iBAAiB,GAAG,UAAC,YAAuC,EAAA;IAChE,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AACpC,QAAA,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC9B,YAAA,OAAO,mBAAmB;QAC5B;QACA,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AACnC,aAAA;SACF;IACH;AAEA,IAAA,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,mBAAmB;AACrE,CAAC;AAED,IAAM,UAAU,GAAG,UAAC,MAAW,EAAA;AACrB,IAAA,IAAA,aAAa,GAAK,MAAM,CAAA,aAAX;AAErB,IAAA,MAAM,CAAC,aAAa,GAAG,UAAC,KAAU,EAAA;QACzB,IAAA,IAAI,GAAU,KAAK,CAAA,CAAA,CAAf,EAAE,IAAI,GAAI,KAAK,CAAA,CAAA,CAAT;AAEjB,QAAA,IAAIT,aAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YACzD,KAAiC,IAAA,EAAA,GAAA,CAA8C,EAA9C,EAAA,GAAA,KAAK,CAAC,IAAI,CAACD,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAA9C,EAAA,GAAA,EAAA,CAAA,MAA8C,EAA9C,EAAA,EAA8C,EAAE;AAAtE,gBAAA,IAAA,WAAkB,EAAjB,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA;gBAC1B,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAIC,aAAY,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;oBACvGC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;oBACjD;gBACF;YACF;QACF;AAEA,QAAA,IAAID,aAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;YAC7D,KAAiC,IAAA,EAAA,GAAA,CAA8C,EAA9C,EAAA,GAAA,KAAK,CAAC,IAAI,CAACD,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAA9C,EAAA,GAAA,EAAA,CAAA,MAA8C,EAA9C,EAAA,EAA8C,EAAE;AAAtE,gBAAA,IAAA,WAAkB,EAAjB,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA;gBAC1B,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAIC,aAAY,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;oBACxGC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;oBACjD;gBACF;YACF;QACF;QAEA,aAAa,CAAC,KAAK,CAAC;AACtB,IAAA,CAAC;AAED,IAAA,OAAO,MAAM;AACf,CAAC;AAED,IAAM,OAAO,GAA2B,UAAC,EAgBxC,EAAA;QAfC,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAA,GAAA,EAAA,CAAA,OAAiH,EAAjH,OAAO,GAAA,EAAA,KAAA,MAAA,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,CAAC,GAAA,EAAA,EACjH,mBAA+B,EAA/B,WAAW,mBAAG,iBAAiB,GAAA,EAAA,EAC/B,EAAA,GAAA,EAAA,CAAA,SAAc,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,KAAA,EACd,EAAA,GAAA,EAAA,CAAA,KAAU,EAAV,KAAK,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,KAAA,EACV,EAAA,GAAA,EAAA,CAAA,QAAgB,EAAhB,QAAQ,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EAChB,aAAa,GAAA,EAAA,CAAA,aAAA,EACA,mBAAmB,GAAA,EAAA,CAAA,WAAA,EACjB,qBAAqB,GAAA,EAAA,CAAA,aAAA,EACjB,yBAAyB,GAAA,EAAA,CAAA,iBAAA,EAC5C,qBAAoB,EAApB,aAAa,mBAAG,IAAI,GAAA,EAAA,EACpB,EAAA,GAAA,EAAA,CAAA,MAAgB,EAAhB,MAAM,GAAA,EAAA,KAAA,MAAA,GAAG,OAAO,KAAA,EAChB,EAAA,GAAA,EAAA,CAAA,SAAmB,EAAnB,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,OAAO,GAAA,EAAA,EACnB,iBAAmB,EAAnB,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,OAAO,GAAA,EAAA;AAGnB,IAAA,IAAM,YAAY,GAAG,OAAO,KAAK,KAAK,GAAG,iBAAiB,GAAG,OAAO;IACpE,IAAM,MAAM,GAAGuC,aAAO,CAAC,cAAM,OAAA,UAAU,CAACC,wBAAW,CAACC,oBAAS,CAACC,kBAAY,EAAE,CAAC,CAAC,CAAC,EAAlD,CAAkD,EAAE,EAAE,CAAC;AAC9E,IAAA,IAAA,KAAoBtC,cAAQ,CAAkB,cAAM,OAAA,iBAAiB,CAAC,YAAY,CAAC,CAAA,CAA/B,CAA+B,CAAC,EAAnF,KAAK,QAAA,EAAE,QAAQ,QAAoE;IACpF,IAAA,EAAA,GAAwCA,cAAQ,CAAqC,IAAI,CAAC,EAAzF,eAAe,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,kBAAkB,GAAA,EAAA,CAAA,CAAA,CAAsD;IAC1F,IAAA,EAAA,GAAgCA,cAAQ,CAAC,KAAK,CAAC,EAA9C,WAAW,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,cAAc,GAAA,EAAA,CAAA,CAAA,CAAmB;IAC/C,IAAA,EAAA,GAAoCA,cAAQ,CAAC,KAAK,CAAC,EAAlD,aAAa,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,CAAA,CAAmB;AACnD,IAAA,IAAA,KAA4CA,cAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAnE,iBAAiB,QAAA,EAAE,oBAAoB,QAA4B;IACpE,IAAA,EAAA,GAAkCA,cAAQ,CAAqB,IAAI,CAAC,EAAnE,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAAsC;IACpE,IAAA,EAAA,GAAkCA,cAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAAmB;IAEjD,IAAA,EAAA,GAAgDA,cAAQ,CAAC,EAAE,CAAC,EAA3D,mBAAmB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,sBAAsB,GAAA,EAAA,CAAA,CAAA,CAAgB;IAC5D,IAAA,EAAA,GAAoDA,cAAQ,CAAqD,EAAE,CAAC,EAAnH,qBAAqB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,wBAAwB,GAAA,EAAA,CAAA,CAAA,CAAoE;IACpH,IAAA,EAAA,GAA4DA,cAAQ,CAAC,CAAC,CAAC,EAAtE,yBAAyB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,4BAA4B,GAAA,EAAA,CAAA,CAAA,CAAe;AAE7E,IAAA,IAAM,WAAW,GAAG,mBAAmB,KAAK,SAAS,GAAG,mBAAmB,GAAG,mBAAmB;AACjG,IAAA,IAAM,aAAa,GAAG,qBAAqB,KAAK,SAAS,GAAG,qBAAqB,GAAG,qBAAqB;AACzG,IAAA,IAAM,iBAAiB,GAAG,yBAAyB,KAAK,SAAS,GAAG,yBAAyB,GAAG,yBAAyB;AAEzH,IAAAE,eAAS,CAAC,YAAA;AACP,QAAA,MAAc,CAAC,cAAc,GAAG,EAAE,aAAa,EAAA,aAAA,EAAE;QAClD,OAAO,YAAA;YACL,OAAQ,MAAc,CAAC,cAAc;AACvC,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IACb,IAAA,EAAA,GAA0CF,cAAQ,CAAM,IAAI,CAAC,EAA5D,gBAAgB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,mBAAmB,GAAA,EAAA,CAAA,CAAA,CAAuB;IAEnE,IAAM,sBAAsB,GAAG4B,iBAAW,CAAC,YAAA;AACzC,QAAA,eAAe,CAAC,CAAC,YAAY,CAAC;AAChC,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AAElB,IAAA1B,eAAS,CAAC,YAAA;QACR,IAAM,aAAa,GAAG,UAAC,KAAoB,EAAA;AACzC,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;gBACvB,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,eAAe,CAAC,CAAC,YAAY,CAAC;YAChC;YACA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,YAAY,EAAE;gBAC1C,KAAK,CAAC,cAAc,EAAE;gBACtB,eAAe,CAAC,KAAK,CAAC;YACxB;AACF,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;AACjD,QAAA,OAAO,YAAA,EAAM,OAAA,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA,CAApD,CAAoD;AACnE,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AAElB,IAAAA,eAAS,CAAC,YAAA;QACR,IAAI,YAAY,EAAE;YAChB,IAAM,kBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;YACrD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;YAEvC,OAAO,YAAA;gBACL,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,kBAAgB;AACjD,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;;AAGlB,IAAA,IAAM,aAAa,GAAG0B,iBAAW,CAAC,UAAC,KAA0B,EAAA;AAC3D,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAC/C,YAAA,IAAA,SAAS,GAAK,MAAM,CAAA,SAAX;YACjB,IAAI,SAAS,EAAE;gBACN,IAAA,SAAS,GAAI,KAAK,CAAC,IAAI,CAC5BlC,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,oBAAA,EAAE,EAAE,SAAS;oBACb,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,wBAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,4BAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;4BACzB,CAAC,CAAC,IAAI,KAAK,OAAO;oBAFlB,CAEkB;iBACrB,CAAC,CACH,GARe;gBAUhB,IAAI,SAAS,EAAE;oBACb,KAAK,CAAC,cAAc,EAAE;AACb,oBAAA,IAAA,SAAS,GAAI,SAAS,CAAA,CAAA,CAAb;oBAClBC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;oBACjD;gBACF;AAEA,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAIC,WAAK,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;AAC1D,oBAAA,IAAI;wBACF,IAAM,KAAK,GAAGH,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC;wBAC7C,IAAI,KAAK,EAAE;4BACF,IAAA,QAAQ,GAAI,KAAK,CAAC,IAAI,CAC3BA,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,gCAAA,EAAE,EAAE,KAAK;gCACT,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,oCAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,wCAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;wCACzB,CAAC,CAAC,IAAI,KAAK,OAAO;gCAFlB,CAEkB;6BACrB,CAAC,CACH,GARc;4BAUf,IAAI,QAAQ,EAAE;gCACZ,KAAK,CAAC,cAAc,EAAE;AACb,gCAAA,IAAA,QAAQ,GAAI,QAAQ,CAAA,CAAA,CAAZ;gCACjBC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;gCAChD;4BACF;wBACF;oBACF;oBAAE,OAAO,CAAC,EAAE;;oBAEZ;gBACF;YACF;QACF;QAEA,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACpC;QACF;AAEA,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;gBAC1B;AACF,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAC5B;AACF,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC;gBAC/B;AACF,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;gBAC1B;AACF,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC;gBACnC;AACF,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;oBAClB,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAAW,0BAAa,CAAC,IAAI,CAAC,MAAuB,CAAC;gBAC7C;qBAAO;oBACL,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAAA,0BAAa,CAAC,IAAI,CAAC,MAAuB,CAAC;gBAC7C;gBACA;AACF,YAAA,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAAA,0BAAa,CAAC,IAAI,CAAC,MAAuB,CAAC;gBAC3C;;AAEN,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAEZ,IAAA,IAAM,YAAY,GAAGqB,iBAAW,CAAC,UAAC,QAAsB,EAAA;QACtD,QAAQ,CAAC,QAA2B,CAAC;QAErC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAM,SAAS,GAAG,eAAe,CAAC,QAA2C,CAAC;AAC9E,YAAA,QAAQ,CAAC,SAAS,EAAE,QAA2B,CAAC;QAClD;AACF,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAEd,IAAM,WAAW,GAAGO,aAAO,CAAC,cAAM,OAAA,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAA/B,CAA+B,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrF,IAAA,IAAM,SAAS,GAAGA,aAAO,CAAC,YAAA,EAAM,OAAA,UAAU,CAAC,WAAW,CAAC,EAAvB,CAAuB,EAAE,CAAC,WAAW,CAAC,CAAC;AACvE,IAAA,IAAM,SAAS,GAAGA,aAAO,CAAC,YAAA,EAAM,OAAA,eAAe,CAAC,WAAW,CAAC,EAA5B,CAA4B,EAAE,CAAC,WAAW,CAAC,CAAC;AAC5E,IAAA,IAAM,iBAAiB,GAAGA,aAAO,CAAC,YAAA,EAAM,OAAA,uBAAuB,CAAC,WAAW,CAAC,EAApC,CAAoC,EAAE,CAAC,WAAW,CAAC,CAAC;AAE5F,IAAAjC,eAAS,CAAC,YAAA;AACR,QAAA,IAAI,YAAY,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAM,WAAW,GAAG,iBAAiB,CAAC,YAAY,CAAC;YACnD,QAAQ,CAAC,WAAW,CAAC;QACvB;AACF,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAElB,IAAM,UAAU,GAAG0B,iBAAW,CAAC,YAAA;AAC7B,QAAA,IAAM,YAAY,GAAG,MAAM,CAAC,QAA2B;AACvD,QAAA,IAAM,UAAU,GAAG,eAAe,KAAK;AACrC,cAAE,eAAe,CAAC,YAAY;cAC5B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAA;YAC7C,cAAc,CAAC,IAAI,CAAC;AACpB,YAAA,UAAU,CAAC,YAAA,EAAM,OAAA,cAAc,CAAC,KAAK,CAAC,CAAA,CAArB,CAAqB,EAAE,IAAI,CAAC;AAC/C,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAE7B,IAAA,IAAM,eAAe,GAAGA,iBAAW,CAAC,UAAC,KAAuB,EAAE,WAAwB,EAAA;QACpF,KAAK,CAAC,cAAc,EAAE;QAEf,IAAA,SAAS,GAAI,KAAK,CAAC,IAAI,CAC5BlC,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,YAAA,KAAK,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,EAA9C,CAA8C;SAClE,CAAC,CACH,GAJe;QAMhB,IAAI,SAAS,EAAE;YACY,SAAS,CAAA,CAAA,CAAnB,MAAE,IAAI,GAAI,SAAS,CAAA,CAAA;YAClC,mBAAmB,CAAC,IAAI,CAAC;QAC3B;QAEA,IAAM,IAAI,GAAI,KAAK,CAAC,MAAsB,CAAC,qBAAqB,EAAE;AAClE,QAAA,oBAAoB,CAAC;AACnB,YAAA,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO;YAC7B,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG;AACnC,SAAA,CAAC;QACF,eAAe,CAAC,WAAW,CAAC;QAC5B,gBAAgB,CAAC,IAAI,CAAC;AACxB,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAEZ,IAAA,IAAM,QAAQ,GAAGkC,iBAAW,CAAC,UAAC,EAAiB,EAAA;YAAhB,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA;QACvC,IAAM,MAAM,GAAU,EAAE;AAExB,QAAA,IAAI,WAAW,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI9B,UAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAChE,YAAA,aAAa,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,KAAK,EAAA;AACjC,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oBACvD,MAAM,CAAC,IAAI,CAAC;wBACV,MAAM,EAAE,EAAE,IAAI,EAAA,IAAA,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;AACtC,wBAAA,KAAK,EAAE,EAAE,IAAI,EAAA,IAAA,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;AACzD,wBAAA,MAAM,EAAE,IAAI;wBACZ,aAAa,EAAE,KAAK,KAAK,iBAAiB;AAC3C,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,OAAO,MAAM;IACf,CAAC,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAEnD,IAAA,IAAM,yBAAyB,GAAG8B,iBAAW,CAAC,UAAC,KAAyB,EAAA;AAC9D,QAAA,IAAA,UAAU,GAAwB,KAAK,CAAA,UAA7B,EAAE,QAAQ,GAAc,KAAK,CAAA,QAAnB,EAAE,OAAO,GAAK,KAAK,QAAV;QACrC,IAAM,KAAK,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE;AACnD,QAAA,IAAM,UAAU,GAAI,OAAyB,CAAC,KAAK,GAAG;YACpD,SAAS,EAAG,OAAyB,CAAC;SACvC,GAAG,EAAE;AACN,QAAA,IAAM,aAAa,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAQ,KAAK,CAAA,EAAK,UAAU,CAAE;AAEjD,QAAA,QAAS,OAAuC,CAAC,IAAI;AACnD,YAAA,KAAK,WAAW;gBACd,OAAOxB,cAAA,CAAA,GAAA,EAAA,QAAA,CAAA,EAAA,EAAO,UAAU,EAAA,EAAE,KAAK,EAAE,aAAa,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAA,CAAK;AAChE,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAOA,kCAAQ,UAAU,EAAA,EAAE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,aAAa,CAAA,EAAA,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAA,CAAA,EAAA,QAAA,EAAI,QAAQ,IAAM;AACrG,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAOA,kCAAQ,UAAU,EAAA,EAAE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,aAAa,CAAA,EAAA,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAA,CAAA,EAAA,QAAA,EAAI,QAAQ,IAAM;AACvG,YAAA,KAAK,eAAe;AAClB,gBAAA,OAAOA,kCAAQ,UAAU,EAAA,EAAE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,aAAa,CAAA,EAAA,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAA,CAAA,EAAA,QAAA,EAAI,QAAQ,IAAM;AACxG,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAOA,kCAAQ,UAAU,EAAA,EAAE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,aAAa,CAAA,EAAA,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAA,CAAA,EAAA,QAAA,EAAI,QAAQ,IAAM;AACvG,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAOA,kCAAQ,UAAU,EAAA,EAAE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,aAAa,CAAA,EAAA,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAA,CAAA,EAAA,QAAA,EAAI,QAAQ,IAAM;AACrG,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAOA,kCAAQ,UAAU,EAAA,EAAE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,aAAa,CAAA,EAAA,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAA,CAAA,EAAA,QAAA,EAAI,QAAQ,IAAM;AACvG,YAAA,KAAK,eAAe;AAClB,gBAAA,OAAOA,kCAAQ,UAAU,EAAA,EAAE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,aAAa,CAAA,EAAA,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAA,CAAA,EAAA,QAAA,EAAI,QAAQ,IAAM;AACxG,YAAA,KAAK,eAAe;AAClB,gBAAA,OAAOA,kCAAQ,UAAU,EAAA,EAAE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,aAAa,CAAA,EAAA,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAA,CAAA,EAAA,QAAA,EAAI,QAAQ,IAAM;AACvG,YAAA,KAAK,eAAe;AAClB,gBAAA,OAAOA,cAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAA,EAAQ,UAAU,EAAA,EAAE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,KAAK,CAAA,EAAA,EAAE,MAAM,EAAE,GAAG,EAAA,CAAA,EAAA,QAAA,EAAI,QAAQ,IAAM;AAC5E,YAAA,KAAK,eAAe;AAClB,gBAAA,OAAOA,cAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAA,EAAQ,UAAU,EAAA,EAAE,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,KAAK,CAAA,EAAA,EAAE,MAAM,EAAE,GAAG,EAAA,CAAA,EAAA,QAAA,EAAI,QAAQ,IAAM;AAC5E,YAAA,KAAK,WAAW;AACd,gBAAA,OAAOA,cAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAA,EAAQ,UAAU,EAAA,EAAA,QAAA,EAAG,QAAQ,IAAM;AAC5C,YAAA,KAAK,YAAY;AACf,gBAAA,QACEA,cAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,EACM,UAAU,EAAA,EACd,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACA,aAAa,CAAA,EAAA,EAChB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,GAAG,EACf,WAAW,EAAE,GAAG,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,QAAQ,EAAA,CAAA,EAAA,QAAA,EAGpB,QAAQ,EAAA,CAAA,CACE;AAEjB,YAAA,KAAK,YAAY;AACf,gBAAA,QACEA,cAAA,CAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EACM,UAAU,EAAA,EACd,KAAK,EAAE;AACL,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,QAAQ,EAAE,MAAM;AAChB,wBAAA,UAAU,EAAE,WAAW;AACvB,wBAAA,QAAQ,EAAE,MAAM;AAChB,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAEDA,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,QAAQ,EAAA,CAAQ,EAAA,CAAA,CACnB;AAEV,YAAA,KAAK,iBAAiB;AACpB,gBAAA,QACED,eAAA,CAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EAAS,UAAU,IAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CACxEC,cAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE;AACT,gCAAA,MAAM,EAAE,MAAM;AACd,gCAAA,SAAS,EAAE,gBAAgB;AAC3B,gCAAA,MAAM,EAAE;AACT,6BAAA,EAAA,CAAI,EACJ,QAAQ,CAAA,EAAA,CAAA,CACL;AAEV,YAAA,KAAK,OAAO;gBACV,IAAM,YAAY,GAAG,OAAuB;AAC5C,gBAAA,OAAOA,cAAA,CAAC,cAAc,EAAA,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,GAAI;AAC9F,YAAA,KAAK,OAAO;gBACV,IAAM,YAAY,GAAG,OAAuB;AAC5C,gBAAA,OAAOA,cAAA,CAAC,cAAc,EAAA,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,GAAI;AAC9F,YAAA,KAAK,WAAW;gBACd,IAAM,eAAe,GAAG,OAA0B;AAClD,gBAAA,OAAOA,cAAA,CAAC,iBAAiB,EAAA,EAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,GAAI;AACpG,YAAA,KAAK,YAAY;gBACf,IAAM,gBAAgB,GAAG,OAA2B;AACpD,gBAAA,OAAOA,cAAA,CAAC,kBAAkB,EAAA,EAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,GAAI;AACtG,YAAA,KAAK,MAAM;gBACT,IAAM,aAAW,GAAG,OAAsB;AAC1C,gBAAA,QACEA,cAAA,CAAA,GAAA,EAAA,QAAA,CAAA,EAAA,EACM,UAAU,EAAA,EACd,IAAI,EAAE,aAAW,CAAC,GAAG,EACrB,KAAK,EAAE,aAAW,CAAC,KAAK,EACxB,OAAO,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,eAAe,CAAC,CAAC,EAAE,aAAW,CAAC,CAAA,CAA/B,CAA+B,EAC/C,KAAK,EAAE;AACL,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,cAAc,EAAE,WAAW;AAC3B,wBAAA,MAAM,EAAE;qBACT,EAAA,QAAA,EAEA,QAAQ,EAAA,CAAA,CACP;AAER,YAAA;gBACE,OAAOA,cAAA,CAAA,GAAA,EAAA,QAAA,CAAA,EAAA,EAAO,UAAU,EAAA,EAAE,KAAK,EAAE,aAAa,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAA,CAAK;;AAEpE,IAAA,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAErB,IAAM,cAAc,GAAGwB,iBAAW,CAAC,YAAA;QACjC,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,IAAI,OAAO,CAAC;YAC7D,gBAAgB,CAAC,KAAK,CAAC;QACzB;AACF,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAElB,IAAM,gBAAgB,GAAGA,iBAAW,CAAC,YAAA;QACnC,IAAI,YAAY,EAAE;YAChB,IAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAC5BlC,YAAM,CAAC,KAAK,CAAC,MAAM,EAAE;gBACnB,KAAK,EAAE,UAAC,CAAM,EAAA;AACZ,oBAAA,OAAA,CAACA,YAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,wBAAAC,aAAY,CAAC,SAAS,CAAC,CAAC,CAAC;wBACzB,CAAC,CAAC,IAAI,KAAK,MAAM;AACjB,wBAAA,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG;gBAH1B,CAG0B;AAC7B,aAAA,CAAC,CACH;AAED,YAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,IAAA,EAAA,GAAuB,WAAW,CAAC,CAAC,CAAC,EAApC,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAkB;gBAC3C,IAAM,IAAI,GAAG,QAAuB;AAEpC,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,oBAAA,IAAM,YAAY,GAAG,IAAI,CAAC,QAAQ;oBAElCC,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAEhD,oBAAAA,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;AAC7B,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,QAAQ,EAAE,YAAY;qBACN,EAAE;AAClB,wBAAA,EAAE,EAAE,QAAQ;AACb,qBAAA,CAAC;gBACJ;qBAAO;AACL,oBAAAA,gBAAU,CAAC,WAAW,CAAC,MAAM,EAAE;AAC7B,wBAAA,EAAE,EAAE,QAAQ;AACb,qBAAA,CAAC;gBACJ;YACF;YAEA,gBAAgB,CAAC,KAAK,CAAC;QACzB;AACF,IAAA,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAE1B,IAAM,cAAc,GAAGgC,iBAAW,CAAC,YAAA;AACjC,QAAA,IAAI,YAAY,IAAI,gBAAgB,EAAE;YACpC,IAAM,QAAQ,GAAGlC,YAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;AAExD,YAAA,IAAK,MAAc,CAAC,wBAAwB,EAAE;gBAC3C,MAAc,CAAC,wBAAwB,CAAC;oBACvC,GAAG,EAAE,YAAY,CAAC,GAAG;oBACrB,KAAK,EAAE,YAAY,CAAC,KAAK;oBACzB,MAAM,EAAE,YAAY,CAAC,MAAM;AAC3B,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE;AACP,iBAAA,CAAC;YACJ;QACF;QACA,gBAAgB,CAAC,KAAK,CAAC;IACzB,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE5C,IAAA,IAAM,UAAU,GAAGkC,iBAAW,CAAC,UAAC,IAAY,EAAA;QAC1C,IAAI,SAAS,GAAG,EAAE;QAClB,IAAI,MAAM,GAAG,CAAC;QACd,IAAM,GAAG,GAAG,IAAI;QAEhB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;AACnC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE;AAExB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACzB,gBAAA,MAAM,EAAE;AACR,gBAAA,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI;YAC5D;AAAO,iBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC/B,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI;AAC7C,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAChD,oBAAA,MAAM,EAAE;gBACV;YACF;iBAAO;AACL,gBAAA,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI;YACtD;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,SAAS,CAAC,IAAI,EAAE;IACzB,CAAC,EAAE,EAAE,CAAC;IAEN,IAAM,WAAW,GAAA,QAAA,CAAA,EACf,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,aAAa,EACtD,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,GAAG,EAAA,CAAA,MAAA,CAAG,MAAM,EAAA,IAAA,CAAI,GAAG,MAAM,EAC3D,SAAS,EAAE,OAAO,SAAS,KAAK,QAAQ,GAAG,EAAA,CAAA,MAAA,CAAG,SAAS,EAAA,IAAA,CAAI,GAAG,SAAS,EACvE,SAAS,EAAE,OAAO,SAAS,KAAK,QAAQ,GAAG,EAAA,CAAA,MAAA,CAAG,SAAS,EAAA,IAAA,CAAI,GAAG,SAAS,EACvE,UAAU,EAAE,mEAAmE,EAC/E,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,MAAM,EAAA,EACb,KAAK,CACT;AAED,IAAA,IAAM,cAAc,GAAwB,YAAY,GAAG;AACzD,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,aAAa,EAAE,QAAQ;AACvB,QAAA,QAAQ,EAAE,QAAQ;KACnB,GAAG,EAAE;IAEN,IAAM,aAAa,GAAwB,YAAY,GAAE,QAAA,CAAA,QAAA,CAAA,EAAA,EACpD,WAAW,CAAA,EAAA,EACd,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,CAAC;;AAEf,QAAA,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAA,CAAA,GACf,WAAW;IAEf,QACEzB,kDACEC,cAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EACG,uyEAgFA,GACK,EACRD,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAA,QAAA,EAAA,CAC7C,aAAa,KACdC,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,4BAAA,QAAQ,EAAE,OAAO;AACjB,4BAAA,GAAG,EAAE,CAAC;AACN,4BAAA,IAAI,EAAE,CAAC;AACP,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,MAAM,EAAE,CAAC;AACT,4BAAA,MAAM,EAAE,IAAI;AACb,yBAAA,EACD,OAAO,EAAE,YAAA,EAAM,OAAA,gBAAgB,CAAC,KAAK,CAAC,CAAA,CAAvB,CAAuB,EAAA,QAAA,EAEtCD,eAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,gCAAA,QAAQ,EAAE,UAAU;AACpB,gCAAA,GAAG,EAAE,EAAA,CAAA,MAAA,CAAG,iBAAiB,CAAC,CAAC,EAAA,IAAA,CAAI;AAC/B,gCAAA,IAAI,EAAE,EAAA,CAAA,MAAA,CAAG,iBAAiB,CAAC,CAAC,EAAA,IAAA,CAAI;AAChC,gCAAA,eAAe,EAAE,SAAS;AAC1B,gCAAA,MAAM,EAAE,mBAAmB;AAC3B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,SAAS,EAAE,yEAAyE;AACpF,gCAAA,QAAQ,EAAE,OAAO;AACjB,gCAAA,QAAQ,EAAE,QAAQ;AAClB,gCAAA,MAAM,EAAE,IAAI;6BACb,EACD,OAAO,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,eAAe,EAAE,CAAA,CAAnB,CAAmB,aAElC,YAAY,KACXA,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,CAChGC,wBAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,WAAA,EAAA,CAAiB,EACxFA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,gDAAA,QAAQ,EAAE,MAAM;AAChB,gDAAA,KAAK,EAAE,SAAS;AAChB,gDAAA,SAAS,EAAE,WAAW;AACtB,gDAAA,UAAU,EAAE;AACb,6CAAA,EAAA,QAAA,EACE,YAAY,CAAC,GAAG,EAAA,CACb,CAAA,EAAA,CACF,CACP,EACDD,eAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,MAAM;AACb,wCAAA,OAAO,EAAE,WAAW;AACpB,wCAAA,MAAM,EAAE,MAAM;AACd,wCAAA,eAAe,EAAE,aAAa;AAC9B,wCAAA,KAAK,EAAE,SAAS;AAChB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,SAAS,EAAE,MAAM;AACjB,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,UAAU,EAAE,QAAQ;AACpB,wCAAA,GAAG,EAAE,MAAM;AACX,wCAAA,UAAU,EAAE,KAAK;AAClB,qCAAA,EACD,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA,CAAjD,CAAiD,EACtE,YAAY,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAA,CAArD,CAAqD,EAAA,QAAA,EAAA,CAE1EC,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,YAClGA,cAAA,CAAA,MAAA,EAAA,EAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,8EAA8E,GAAG,EAAA,CAClJ,EAAA,WAAA,CAAA,EAAA,CAEC,EACTD,eAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,MAAM;AACb,wCAAA,OAAO,EAAE,WAAW;AACpB,wCAAA,MAAM,EAAE,MAAM;AACd,wCAAA,eAAe,EAAE,aAAa;AAC9B,wCAAA,KAAK,EAAE,SAAS;AAChB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,SAAS,EAAE,MAAM;AACjB,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,UAAU,EAAE,QAAQ;AACpB,wCAAA,GAAG,EAAE,MAAM;AACX,wCAAA,UAAU,EAAE,KAAK;AAClB,qCAAA,EACD,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA,CAAjD,CAAiD,EACtE,YAAY,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAA,CAArD,CAAqD,EAAA,QAAA,EAAA,CAE1EC,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,YAClGA,cAAA,CAAA,MAAA,EAAA,EAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,wHAAwH,GAAG,EAAA,CAC5L,EAAA,WAAA,CAAA,EAAA,CAEC,EACTD,eAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,MAAM;AACb,wCAAA,OAAO,EAAE,WAAW;AACpB,wCAAA,MAAM,EAAE,MAAM;AACd,wCAAA,SAAS,EAAE,mBAAmB;AAC9B,wCAAA,eAAe,EAAE,aAAa;AAC9B,wCAAA,KAAK,EAAE,SAAS;AAChB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,SAAS,EAAE,MAAM;AACjB,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,UAAU,EAAE,QAAQ;AACpB,wCAAA,GAAG,EAAE,MAAM;AACX,wCAAA,UAAU,EAAE,KAAK;qCAClB,EACD,YAAY,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAA,CAAjD,CAAiD,EACtE,YAAY,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAA,CAArD,CAAqD,EAAA,QAAA,EAAA,CAE1EC,wBAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAA,QAAA,EAClGA,yBAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,8HAA8H,GAAG,EAAA,CAClM,EAAA,aAAA,CAAA,EAAA,CAEC,IACL,EAAA,CACF,CACP,EACDD,eAAA,CAACoC,gBAAK,EAAA,EAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAA,QAAA,EAAA,CACpE,YAAY,CAAC,MAAM,GAAG,CAAC,KACtBnC,eAAC,OAAO,EAAA,EACN,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,UAAC,IAAI,EAAA,EAAK,OAAA,kBAAkB,CAAC,IAAI,CAAC,CAAA,CAAxB,CAAwB,EAChD,UAAU,EAAE,cAAO,CAAC,EACpB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB,EACpC,mBAAmB,EAAE,sBAAsB,EAC3C,qBAAqB,EAAE,wBAAwB,EAC/C,yBAAyB,EAAE,4BAA4B,EACvD,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,sBAAsB,EAAA,CAC1C,CACH,EACDA,cAAA,CAACoC,mBAAQ,EAAA,EACP,aAAa,EAAE,yBAAyB,EACxC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,GACpB,CAAA,EAAA,CACI,EAGRrC,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,4BAAA,OAAO,EAAE,UAAU;AACnB,4BAAA,eAAe,EAAE,SAAS;AAC1B,4BAAA,SAAS,EAAE,mBAAmB;4BAC9B,UAAU,EAAE,YAAY,GAAG,MAAM,GAAG,gBAAgB;4BACpD,WAAW,EAAE,YAAY,GAAG,MAAM,GAAG,gBAAgB;4BACrD,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,gBAAgB;4BACtD,YAAY,EAAE,YAAY,GAAG,GAAG,GAAG,aAAa;AAChD,4BAAA,OAAO,EAAE,MAAM;4BACf,cAAc,EAAE,aAAa,GAAG,eAAe,GAAG,UAAU;AAC5D,4BAAA,UAAU,EAAE,QAAQ;AACpB,4BAAA,GAAG,EAAE,MAAM;AACX,4BAAA,QAAQ,EAAE,MAAM;AAChB,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,UAAU,EAAE,mEAAmE;AAChF,yBAAA,EAAA,QAAA,EAAA,CACE,aAAa,KACZA,yBAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAC1CA,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CAC/DC,yBAAM,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,QAAA,EAAA,CAAe,EACnEA,yBAAM,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAG,SAAS,CAAC,cAAc,EAAE,EAAA,CAAQ,CAAA,EAAA,CACrF,EACND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,aAC/DC,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,aAAA,EAAA,CAAoB,EACxEA,cAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,YAAG,SAAS,CAAC,cAAc,EAAE,EAAA,CAAQ,IACrF,EACND,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CAC/DC,yBAAM,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAgC,EACpFA,yBAAM,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAG,iBAAiB,CAAC,cAAc,EAAE,GAAQ,CAAA,EAAA,CAC7F,CAAA,EAAA,CACF,CACP,EACDD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,oCAAA,OAAO,EAAE,MAAM;AACf,oCAAA,UAAU,EAAE,QAAQ;AACpB,oCAAA,GAAG,EAAE,KAAK;AACV,oCAAA,KAAK,EAAE,SAAS;AAChB,oCAAA,QAAQ,EAAE,MAAM;AACjB,iCAAA,EAAA,QAAA,EAAA,CACCC,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAuB,EACvBA,cAAA,CAAA,MAAA,EAAA,EACE,KAAK,EAAE;AACL,4CAAA,UAAU,EAAE,KAAK;AACjB,4CAAA,KAAK,EAAE,SAAS;AAChB,4CAAA,aAAa,EAAE,OAAO;AACtB,4CAAA,MAAM,EAAE,SAAS;yCAClB,EACD,OAAO,EAAE,UAAC,CAAC,EAAA;4CACT,CAAC,CAAC,cAAc,EAAE;AAClB,4CAAA,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,QAAQ,CAAC;wCAChE,CAAC,EAAA,QAAA,EAAA,SAAA,EAAA,CAGI,IACH,CAAA,EAAA,CACF,EAEL,eAAe,KACdA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,4BAAA,QAAQ,EAAE,OAAO;AACjB,4BAAA,GAAG,EAAE,CAAC;AACN,4BAAA,IAAI,EAAE,CAAC;AACP,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,MAAM,EAAE,CAAC;AACT,4BAAA,eAAe,EAAE,oBAAoB;AACrC,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,UAAU,EAAE,QAAQ;AACpB,4BAAA,cAAc,EAAE,QAAQ;AACxB,4BAAA,MAAM,EAAE,KAAK;AACd,yBAAA,EACD,OAAO,EAAE,YAAA;4BACP,kBAAkB,CAAC,IAAI,CAAC;4BACxB,cAAc,CAAC,KAAK,CAAC;wBACvB,CAAC,EAAA,QAAA,EAEDD,eAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,gCAAA,eAAe,EAAE,SAAS;AAC1B,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,QAAQ,EAAE,OAAO;AACjB,gCAAA,SAAS,EAAE,MAAM;AACjB,gCAAA,KAAK,EAAE,KAAK;AACZ,gCAAA,QAAQ,EAAE,QAAQ;AAClB,gCAAA,SAAS,EAAE,2EAA2E;AACtF,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,aAAa,EAAE,QAAQ;6BACxB,EACD,OAAO,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,eAAe,EAAE,CAAA,CAAnB,CAAmB,EAAA,QAAA,EAAA,CAEnCA,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAC1GC,cAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EAC5E,eAAe,KAAK,MAAM,GAAG,aAAa,GAAG,eAAe,KAAK,MAAM,GAAG,aAAa,GAAG,SAAS,EAAA,CACjG,EACLD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,aAC9D,eAAe,KAAK,SAAS,KAC5BC,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,UAAU,EACrB,KAAK,EAAE;wDACL,eAAe,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS;AACpD,wDAAA,KAAK,EAAE,SAAS;AAChB,wDAAA,MAAM,EAAE,MAAM;AACd,wDAAA,YAAY,EAAE,KAAK;AACnB,wDAAA,OAAO,EAAE,UAAU;AACnB,wDAAA,QAAQ,EAAE,MAAM;AAChB,wDAAA,UAAU,EAAE,KAAK;AACjB,wDAAA,MAAM,EAAE,SAAS;AACjB,wDAAA,UAAU,EAAE,sBAAsB;AAClC,wDAAA,OAAO,EAAE,MAAM;AACf,wDAAA,UAAU,EAAE,QAAQ;AACpB,wDAAA,GAAG,EAAE,KAAK;qDACX,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;wDACd,IAAI,CAAC,WAAW,EAAE;4DAChB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;wDACnD;AACF,oDAAA,CAAC,EACD,YAAY,EAAE,UAAC,CAAC,EAAA;wDACd,IAAI,CAAC,WAAW,EAAE;4DAChB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;wDACnD;oDACF,CAAC,EACD,KAAK,EAAC,mBAAmB,EAAA,QAAA,EAExB,WAAW,IACVD,eAAA,CAAAkB,mBAAA,EAAA,EAAA,QAAA,EAAA,CACEjB,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAA,QAAA,EAClGA,cAAA,CAAA,MAAA,EAAA,EAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,gBAAgB,EAAA,CAAG,EAAA,CACpF,EAAA,SAAA,CAAA,EAAA,CAEL,KAEHD,eAAA,CAAAkB,mBAAA,EAAA,EAAA,QAAA,EAAA,CACEjB,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAA,QAAA,EAClGA,cAAA,CAAA,MAAA,EAAA,EAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,uHAAuH,EAAA,CAAG,EAAA,CAC3L,EAAA,MAAA,CAAA,EAAA,CAEL,CACJ,EAAA,CACM,CACR,EACDA,cAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,YAAA;wDACP,kBAAkB,CAAC,IAAI,CAAC;wDACxB,cAAc,CAAC,KAAK,CAAC;oDACvB,CAAC,EACD,KAAK,EAAE;AACL,wDAAA,UAAU,EAAE,MAAM;AAClB,wDAAA,MAAM,EAAE,MAAM;AACd,wDAAA,QAAQ,EAAE,MAAM;AAChB,wDAAA,MAAM,EAAE,SAAS;AACjB,wDAAA,KAAK,EAAE,SAAS;AAChB,wDAAA,OAAO,EAAE,KAAK;AACd,wDAAA,UAAU,EAAE,CAAC;qDACd,EACD,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,QAAA,EAAA,CAGN,IACL,CAAA,EAAA,CACF,EAENA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACV,wCAAA,IAAI,EAAE,CAAC;AACP,wCAAA,QAAQ,EAAE,MAAM;wCAChB,eAAe,EAAE,eAAe,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS;AACtE,wCAAA,YAAY,EAAE,KAAK;wCACnB,MAAM,EAAE,eAAe,KAAK,SAAS,GAAG,mBAAmB,GAAG,mBAAmB;wCACjF,OAAO,EAAE,eAAe,KAAK,SAAS,GAAG,MAAM,GAAG,GAAG;qCACtD,EAAA,QAAA,EACE,eAAe,KAAK,SAAS,IAC5BA,cAAA,CAAA,KAAA,EAAA,EACE,uBAAuB,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,QAA2B,CAAC,EAAE,EACxF,KAAK,EAAE;AACL,4CAAA,UAAU,EAAE,mEAAmE;AAC/E,4CAAA,QAAQ,EAAE,MAAM;AAChB,4CAAA,UAAU,EAAE,KAAK;AACjB,4CAAA,KAAK,EAAE,SAAS;AACjB,yCAAA,EAAA,CACD,KAEFA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,4CAAA,MAAM,EAAE,CAAC;AACT,4CAAA,OAAO,EAAE,MAAM;AACf,4CAAA,QAAQ,EAAE,MAAM;AAChB,4CAAA,UAAU,EAAE,KAAK;AACjB,4CAAA,UAAU,EAAE,4CAA4C;AACxD,4CAAA,KAAK,EAAE,SAAS;AAChB,4CAAA,SAAS,EAAE,MAAM;AACjB,4CAAA,UAAU,EAAE,UAAU;AACtB,4CAAA,SAAS,EAAE,YAAY;yCACxB,EAAA,QAAA,EAEDA,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EACG,eAAe,KAAK;kDACjB,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,QAA2B,CAAC;kDAC9D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAA,CAEvC,EAAA,CACH,CACP,EAAA,CACG,CAAA,EAAA,CACF,GACF,CACP,CAAA,EAAA,CACK,CAAA,EAAA,CACL;AAEP;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0]}
|