@leafer-in/editor 1.6.1 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/editor.cjs +4 -3
- package/dist/editor.esm.js +4 -3
- package/dist/editor.esm.min.js +1 -1
- package/dist/editor.esm.min.js.map +1 -1
- package/dist/editor.js +4 -3
- package/dist/editor.min.cjs +1 -1
- package/dist/editor.min.cjs.map +1 -1
- package/dist/editor.min.js +1 -1
- package/dist/editor.min.js.map +1 -1
- package/package.json +5 -5
- package/src/helper/EditDataHelper.ts +3 -3
- package/dist/editor.cjs.map +0 -1
- package/dist/editor.esm.js.map +0 -1
- package/dist/editor.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leafer-in/editor",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"description": "@leafer-in/editor",
|
|
5
5
|
"author": "Chao (Leafer) Wan",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
"leaferjs"
|
|
35
35
|
],
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@leafer-ui/core": "^1.6.
|
|
38
|
-
"@leafer-in/resize": "^1.6.
|
|
39
|
-
"@leafer-ui/interface": "^1.6.
|
|
40
|
-
"@leafer-in/interface": "^1.6.
|
|
37
|
+
"@leafer-ui/core": "^1.6.2",
|
|
38
|
+
"@leafer-in/resize": "^1.6.2",
|
|
39
|
+
"@leafer-ui/interface": "^1.6.2",
|
|
40
|
+
"@leafer-in/interface": "^1.6.2"
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -78,8 +78,9 @@ export const EditDataHelper = {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
if (lockRatio) {
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
if (lockRatio === 'corner' && direction % 2) {
|
|
82
|
+
lockRatio = false
|
|
83
|
+
} else {
|
|
83
84
|
let scale: number
|
|
84
85
|
switch (direction) {
|
|
85
86
|
case top:
|
|
@@ -92,7 +93,6 @@ export const EditDataHelper = {
|
|
|
92
93
|
break
|
|
93
94
|
default:
|
|
94
95
|
scale = Math.sqrt(Math.abs(scaleX * scaleY))
|
|
95
|
-
|
|
96
96
|
}
|
|
97
97
|
scaleX = scaleX < 0 ? -scale : scale
|
|
98
98
|
scaleY = scaleY < 0 ? -scale : scale
|
package/dist/editor.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"editor.cjs","sources":["../../../../../node_modules/.pnpm/@rollup+plugin-typescript@11.1.6_rollup@4.34.6_tslib@2.8.1_typescript@5.7.3/node_modules/tslib/tslib.es6.js","../../../../../../src/in/packages/editor/src/event/EditorEvent.ts","../../../../../../src/in/packages/editor/src/event/EditorMoveEvent.ts","../../../../../../src/in/packages/editor/src/event/EditorScaleEvent.ts","../../../../../../src/in/packages/editor/src/event/EditorRotateEvent.ts","../../../../../../src/in/packages/editor/src/event/EditorSkewEvent.ts","../../../../../../src/in/packages/editor/src/decorator/data.ts","../../../../../../src/in/packages/editor/src/display/Stroker.ts","../../../../../../src/in/packages/editor/src/display/SelectArea.ts","../../../../../../src/in/packages/editor/src/helper/EditSelectHelper.ts","../../../../../../src/in/packages/editor/src/display/EditSelect.ts","../../../../../../src/in/packages/editor/src/helper/EditDataHelper.ts","../../../../../../src/in/packages/editor/src/editor/cursor.ts","../../../../../../src/in/packages/editor/src/display/EditPoint.ts","../../../../../../src/in/packages/editor/src/display/EditBox.ts","../../../../../../src/in/packages/editor/src/display/EditMask.ts","../../../../../../src/in/packages/editor/src/svg.ts","../../../../../../src/in/packages/editor/src/config.ts","../../../../../../src/in/packages/editor/src/editor/simulate.ts","../../../../../../src/in/packages/editor/src/editor/target.ts","../../../../../../src/in/packages/editor/src/helper/EditorHelper.ts","../../../../../../src/in/packages/editor/src/tool/EditToolCreator.ts","../../../../../../src/in/packages/editor/src/event/InnerEditorEvent.ts","../../../../../../src/in/packages/editor/src/event/EditorGroupEvent.ts","../../../../../../src/in/packages/editor/src/display/SimulateElement.ts","../../../../../../src/in/packages/editor/src/Editor.ts","../../../../../../src/in/packages/editor/src/tool/InnerEditor.ts","../../../../../../src/in/packages/editor/src/tool/EditTool.ts","../../../../../../src/in/packages/editor/src/tool/LineEditTool.ts","../../../../../../src/in/packages/editor/src/index.ts"],"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 { IUI, IPointData } from '@leafer-ui/interface'\nimport { Event } from '@leafer-ui/draw'\n\nimport { IEditor, IEditorEvent } from '@leafer-in/interface'\n\n\nfunction toList(value: IUI | IUI[]): IUI[] {\n return value ? (value instanceof Array ? value : [value]) : []\n}\n\nexport class EditorEvent extends Event implements IEditorEvent {\n\n static BEFORE_SELECT = 'editor.before_select'\n static SELECT = 'editor.select'\n\n static BEFORE_HOVER = 'editor.before_hover'\n static HOVER = 'editor.hover'\n\n declare readonly target: IUI\n readonly editor: IEditor\n\n readonly value: IUI | IUI[]\n readonly oldValue: IUI | IUI[]\n\n get list() { return toList(this.value) }\n get oldList() { return toList(this.oldValue) }\n\n readonly worldOrigin: IPointData\n declare readonly origin: IPointData\n\n constructor(type: string, data?: IEditorEvent) {\n super(type)\n if (data) Object.assign(this, data)\n }\n\n}","import { IEditorMoveEvent } from '@leafer-in/interface'\n\nimport { EditorEvent } from './EditorEvent'\n\n\nexport class EditorMoveEvent extends EditorEvent implements IEditorMoveEvent {\n\n static BEFORE_MOVE = 'editor.before_move'\n static MOVE = 'editor.move'\n\n readonly moveX: number\n readonly moveY: number\n\n constructor(type: string, data?: IEditorMoveEvent) {\n super(type, data)\n }\n\n}","import { IAround, IDragEvent, IMatrixData } from '@leafer-ui/interface'\n\nimport { IEditorScaleEvent } from '@leafer-in/interface'\nimport { Direction9 } from '@leafer-ui/draw'\n\nimport { EditorEvent } from './EditorEvent'\n\n\nexport class EditorScaleEvent extends EditorEvent implements IEditorScaleEvent {\n\n static BEFORE_SCALE = 'editor.before_scale'\n static SCALE = 'editor.scale'\n\n // scaleOf(origin, scaleX, scaleY, resize)\n readonly scaleX: number\n readonly scaleY: number\n readonly transform?: IMatrixData\n\n readonly drag: IDragEvent\n\n readonly direction: Direction9\n readonly lockRatio: boolean\n readonly around: IAround\n\n constructor(type: string, data?: IEditorScaleEvent) {\n super(type, data)\n }\n\n}","import { IEditorRotateEvent } from '@leafer-in/interface'\n\nimport { EditorEvent } from './EditorEvent'\n\n\nexport class EditorRotateEvent extends EditorEvent implements IEditorRotateEvent {\n\n static BEFORE_ROTATE = 'editor.before_rotate'\n static ROTATE = 'editor.rotate'\n\n // rotateOf(origin, rotation)\n readonly rotation: number\n\n constructor(type: string, data?: IEditorRotateEvent) {\n super(type, data)\n }\n\n}","import { IEditorSkewEvent } from '@leafer-in/interface'\n\nimport { EditorEvent } from './EditorEvent'\n\n\nexport class EditorSkewEvent extends EditorEvent implements IEditorSkewEvent {\n\n static BEFORE_SKEW = 'editor.before_skew'\n static SKEW = 'editor.skew'\n\n // skewOf(origin, skewX, skewY)\n readonly skewX: number\n readonly skewY: number\n\n constructor(type: string, data?: IEditorSkewEvent) {\n super(type, data)\n }\n\n}","import { IFunction, ILeaf, IObject, IUI, } from '@leafer-ui/interface'\nimport { IEditor } from '@leafer-in/interface'\nimport { defineKey, isNull } from '@leafer-ui/draw'\n\nimport { EditorEvent } from '../event/EditorEvent'\n\n\nexport function targetAttr(fn: IFunction) {\n return (target: ILeaf, key: string) => {\n const privateKey = '_' + key\n defineKey(target, key, {\n get() { return (this as IObject)[privateKey] },\n set(value: IUI | IUI[]) {\n const old = (this as IObject)[privateKey]\n if (old !== value) {\n\n if ((this as IEditor).config) { // Editor\n\n const isSelect = key === 'target'\n if (isSelect) {\n if (value instanceof Array && value.length > 1 && value[0].locked) value.splice(0, 1) // fix: 单个锁定 + shift多选\n\n const { beforeSelect } = (this as IEditor).config\n if (beforeSelect) {\n const check = beforeSelect({ target: value })\n if (typeof check === 'object') value = check\n else if (check === false) return\n }\n }\n\n const type = isSelect ? EditorEvent.BEFORE_SELECT : EditorEvent.BEFORE_HOVER\n if (this.hasEvent(type)) this.emitEvent(new EditorEvent(type, { editor: this as IEditor, value: value as IUI, oldValue: old }))\n }\n\n (this as IObject)[privateKey] = value, fn(this, old)\n }\n }\n } as ThisType<ILeaf>)\n }\n}\n\n\nexport function mergeConfigAttr() {\n return (target: IEditor, key: string) => {\n defineKey(target, key, {\n get() {\n const { config, element, dragPoint } = this, mergeConfig = { ...config } // 实时合并,后期可优化\n if (element && element.editConfig) Object.assign(mergeConfig, element.editConfig)\n if (dragPoint) {\n if (dragPoint.editConfig) Object.assign(mergeConfig, dragPoint.editConfig)\n if (mergeConfig.editSize === 'font-size') mergeConfig.lockRatio = true // 强制锁定比例\n if (dragPoint.pointType === 'resize-rotate') {\n mergeConfig.around || (mergeConfig.around = 'center')\n isNull(mergeConfig.lockRatio) && (mergeConfig.lockRatio = true)\n }\n }\n return (this as IObject).mergedConfig = mergeConfig\n }\n } as ThisType<IEditor>)\n }\n}\n\n\n","import { IUI, ILeaferCanvas, IRenderOptions, IRectInputData, IMatrixWithOptionHalfData } from '@leafer-ui/interface'\nimport { Paint, UI, MatrixHelper, getBoundsData, getMatrixData, BoundsHelper, LeafBoundsHelper } from '@leafer-ui/draw'\n\nimport { IStroker } from '@leafer-in/interface'\n\nimport { targetAttr } from '../decorator/data'\n\n\nconst { abs } = Math\nconst { copy, scale } = MatrixHelper\nconst { setListWithFn } = BoundsHelper\nconst { worldBounds } = LeafBoundsHelper\nconst matrix = getMatrixData() as IMatrixWithOptionHalfData\nconst bounds = getBoundsData()\n\nexport class Stroker extends UI implements IStroker {\n\n @targetAttr(onTarget)\n public target: IUI | IUI[]\n\n public list: IUI[] = []\n\n constructor() {\n super()\n this.visible = 0\n this.hittable = false\n this.strokeAlign = 'center'\n }\n\n public setTarget(target: IUI | IUI[], style: IRectInputData): void {\n this.set(style)\n this.target = target\n this.update()\n }\n\n public update(): void {\n const { list } = this\n if (list.length) {\n setListWithFn(bounds, list, worldBounds)\n this.set(bounds)\n this.visible = true\n } else this.visible = 0\n }\n\n public __draw(canvas: ILeaferCanvas, options: IRenderOptions): void {\n const { list } = this\n\n if (list.length) {\n\n let leaf: IUI\n const data = this.__, { stroke, strokeWidth, fill } = data, { bounds } = options\n\n for (let i = 0; i < list.length; i++) {\n leaf = list[i]\n const { worldTransform, worldRenderBounds } = leaf\n\n if (worldRenderBounds.width && worldRenderBounds.height && (!bounds || bounds.hit(worldRenderBounds, options.matrix))) {\n\n const aScaleX = abs(worldTransform.scaleX), aScaleY = abs(worldTransform.scaleY)\n\n copy(matrix, worldTransform)\n matrix.half = strokeWidth % 2\n\n if (aScaleX !== aScaleY) { // need no scale stroke, use rect path\n\n scale(matrix, 1 / aScaleX, 1 / aScaleY)\n canvas.setWorld(matrix, options.matrix)\n canvas.beginPath()\n data.strokeWidth = strokeWidth\n\n const { x, y, width, height } = leaf.__layout.boxBounds\n canvas.rect(x * aScaleX, y * aScaleY, width * aScaleX, height * aScaleY)\n\n } else {\n\n canvas.setWorld(matrix, options.matrix)\n canvas.beginPath()\n\n if (leaf.__.__useArrow) leaf.__drawPath(canvas)\n else leaf.__.__pathForRender ? leaf.__drawRenderPath(canvas) : leaf.__drawPathByBox(canvas)\n\n data.strokeWidth = strokeWidth / abs(worldTransform.scaleX)\n\n }\n\n if (stroke) typeof stroke === 'string' ? Paint.stroke(stroke, this, canvas) : Paint.strokes(stroke, this, canvas)\n if (fill) typeof fill === 'string' ? Paint.fill(fill, this, canvas) : Paint.fills(fill, this, canvas)\n }\n }\n\n data.strokeWidth = strokeWidth\n }\n }\n\n public destroy(): void {\n this.target = null\n super.destroy()\n }\n\n}\n\nfunction onTarget(stroker: Stroker): void {\n const value = stroker.target\n stroker.list = value ? (value instanceof Array ? value : [value]) : []\n}\n","import { IBoundsData, IGroupInputData, IRect, IRectInputData } from '@leafer-ui/interface'\nimport { Group, Rect } from '@leafer-ui/draw'\n\nimport { ISelectArea } from '@leafer-in/interface'\n\n\nexport class SelectArea extends Group implements ISelectArea {\n\n protected strokeArea: IRect = new Rect({ strokeAlign: 'center' })\n protected fillArea: IRect = new Rect()\n\n constructor(data?: IGroupInputData) {\n super(data)\n this.visible = 0\n this.hittable = false\n this.addMany(this.fillArea, this.strokeArea)\n }\n\n public setStyle(style: IRectInputData, userStyle?: IRectInputData): void {\n const { visible, stroke, strokeWidth } = style\n this.visible = visible\n this.strokeArea.reset({ stroke, strokeWidth, ...(userStyle || {}) })\n this.fillArea.reset({ visible: userStyle ? false : true, fill: stroke, opacity: 0.2 })\n }\n\n public setBounds(bounds: IBoundsData): void {\n this.strokeArea.set(bounds)\n this.fillArea.set(bounds)\n }\n\n}","import { IBounds, ILeafList, IUI, IUIData } from '@leafer-ui/interface'\n\n\nexport const EditSelectHelper = {\n\n findOne(path: ILeafList): IUI {\n return path.list.find((leaf) => leaf.editable) as IUI\n },\n\n findByBounds(branch: IUI, bounds: IBounds): IUI[] {\n const list: IUI[] = []\n eachFind([branch], list, bounds)\n return list\n }\n\n}\n\n\nfunction eachFind(children: IUI[], list: IUI[], bounds: IBounds): void {\n let child: IUI, data: IUIData\n for (let i = 0, len = children.length; i < len; i++) {\n child = children[i], data = child.__\n if (data.hittable && data.visible && !data.locked && bounds.hit(child.__world)) {\n\n if (data.editable) {\n if (child.isBranch && !data.hitChildren) {\n if (data.hitSelf) list.push(child)\n continue\n } else if (child.isFrame) {\n if (bounds.includes(child.__layout.boxBounds, child.__world)) {\n list.push(child)\n continue\n }\n } else if (bounds.hit(child.__layout.boxBounds, child.__world) && data.hitSelf) list.push(child)\n }\n\n if (child.isBranch) eachFind(child.children, list, bounds)\n\n }\n }\n}","import { IBounds, ILeaf, ILeafList, IUI, IEventListenerId, IPointerEvent, IFunction } from '@leafer-ui/interface'\nimport { Bounds, LeafList, Group } from '@leafer-ui/draw'\nimport { PointerEvent, DragEvent, MoveEvent, ZoomEvent } from '@leafer-ui/core'\n\nimport { IEditSelect, IEditor, ISelectArea, IStroker } from '@leafer-in/interface'\n\nimport { Stroker } from './Stroker'\nimport { SelectArea } from './SelectArea'\nimport { EditSelectHelper } from '../helper/EditSelectHelper'\nimport { EditorEvent } from '../event/EditorEvent'\n\n\nconst { findOne, findByBounds } = EditSelectHelper\n\nexport class EditSelect extends Group implements IEditSelect {\n\n public editor: IEditor\n\n public get dragging(): boolean { return !!this.originList }\n public get running(): boolean { const { editor } = this; return this.hittable && editor.visible && editor.hittable && editor.mergeConfig.selector }\n public get isMoveMode(): boolean { return this.app && this.app.interaction.moveMode }\n\n public hoverStroker: IStroker = new Stroker()\n public targetStroker: IStroker = new Stroker()\n\n public bounds: IBounds = new Bounds()\n public selectArea: ISelectArea = new SelectArea()\n\n protected originList: ILeafList\n protected needRemoveItem: IUI\n\n protected waitSelect: IFunction // 手机端延迟选中,防止多点触屏误选元素\n\n protected __eventIds: IEventListenerId[] = []\n\n constructor(editor: IEditor) {\n super()\n this.editor = editor\n this.addMany(this.targetStroker, this.hoverStroker, this.selectArea)\n this.__listenEvents()\n }\n\n // hover / select\n\n protected onHover(): void {\n const { editor } = this\n if (this.running && !this.dragging && !editor.dragging) {\n const { stroke, strokeWidth, hover, hoverStyle } = editor.mergeConfig\n this.hoverStroker.setTarget(hover ? this.editor.hoverTarget : null, { stroke, strokeWidth, ...(hoverStyle || {}) })\n } else {\n this.hoverStroker.target = null\n }\n }\n\n protected onSelect(): void {\n if (this.running) {\n const { mergeConfig, list } = this.editor\n const { stroke, strokeWidth, selectedStyle } = mergeConfig\n this.targetStroker.setTarget(list, { stroke, strokeWidth: Math.max(1, strokeWidth / 2), ...(selectedStyle || {}) })\n this.hoverStroker.target = null\n }\n }\n\n public update(): void {\n this.hoverStroker.update()\n this.targetStroker.update()\n }\n\n // move / down\n\n protected onPointerMove(e: PointerEvent): void {\n const { app, editor } = this\n if (this.running && !this.isMoveMode && app.interaction.canHover && !app.interaction.dragging) {\n const find = this.findUI(e)\n editor.hoverTarget = editor.hasItem(find) ? null : find\n } if (this.isMoveMode) {\n editor.hoverTarget = null // move.dragEmpty\n }\n }\n\n protected onBeforeDown(e: PointerEvent): void {\n if (e.multiTouch) return\n\n const { select } = this.editor.mergeConfig\n if (select === 'press') {\n if (this.app.config.mobile) {\n this.waitSelect = () => this.checkAndSelect(e)\n } else {\n this.checkAndSelect(e)\n }\n }\n }\n\n protected onTap(e: PointerEvent): void {\n if (e.multiTouch) return\n\n const { editor } = this\n const { select } = editor.mergeConfig\n\n if (select === 'tap') this.checkAndSelect(e)\n else if (this.waitSelect) this.waitSelect()\n\n if (this.needRemoveItem) {\n editor.removeItem(this.needRemoveItem)\n } else if (this.isMoveMode) {\n editor.target = null // move.dragEmpty\n }\n\n }\n\n protected checkAndSelect(e: PointerEvent): void { // pointer.down or tap\n this.needRemoveItem = null\n\n if (this.allowSelect(e)) {\n const { editor } = this\n const find = this.findUI(e)\n\n if (find) {\n if (this.isMultipleSelect(e)) {\n if (editor.hasItem(find)) this.needRemoveItem = find // 等待tap事件再实际移除\n else editor.addItem(find)\n } else {\n editor.target = find\n }\n\n } else if (this.allow(e.target)) {\n\n if (!e.shiftKey) editor.target = null\n\n }\n }\n }\n\n // drag\n\n protected onDragStart(e: DragEvent): void {\n if (e.multiTouch) return\n if (this.waitSelect) this.waitSelect()\n\n if (this.allowDrag(e)) {\n const { editor } = this\n const { stroke, area } = editor.mergeConfig\n const { x, y } = e.getInnerPoint(this)\n\n this.bounds.set(x, y)\n\n this.selectArea.setStyle({ visible: true, stroke, x, y }, area)\n this.selectArea.setBounds(this.bounds.get())\n\n this.originList = editor.leafList.clone()\n }\n }\n\n protected onDrag(e: DragEvent): void {\n if (e.multiTouch) return\n if (this.editor.dragging) return this.onDragEnd(e)\n\n if (this.dragging) {\n const { editor } = this\n const total = e.getInnerTotal(this)\n\n const dragBounds = this.bounds.clone().unsign()\n const list = new LeafList(findByBounds(editor.app, dragBounds))\n\n this.bounds.width = total.x\n this.bounds.height = total.y\n\n this.selectArea.setBounds(dragBounds.get())\n\n if (list.length) {\n\n const selectList: ILeaf[] = []\n\n this.originList.forEach(item => { if (!list.has(item)) selectList.push(item) })\n list.forEach(item => { if (!this.originList.has(item)) selectList.push(item) })\n\n if (selectList.length !== editor.list.length || editor.list.some((child, index) => child !== selectList[index])) {\n editor.target = selectList as IUI[]\n }\n\n } else {\n\n editor.target = this.originList.list as IUI[]\n\n }\n }\n }\n\n protected onDragEnd(e: DragEvent): void {\n if (e.multiTouch) return\n\n if (this.dragging) this.originList = null, this.selectArea.visible = 0\n }\n\n protected onAutoMove(e: MoveEvent): void {\n if (this.dragging) {\n const { x, y } = e.getLocalMove(this)\n this.bounds.x += x\n this.bounds.y += y\n }\n }\n\n // helper\n\n protected allow(target: ILeaf): boolean {\n return target.leafer !== this.editor.leafer\n }\n\n protected allowDrag(e: DragEvent) {\n const { boxSelect, multipleSelect } = this.editor.mergeConfig\n if (this.running && (multipleSelect && boxSelect) && !e.target.draggable) {\n return (!this.editor.editing && this.allow(e.target)) || (e.shiftKey && !findOne(e.path))\n } else {\n return false\n }\n }\n\n protected allowSelect(e: IPointerEvent): boolean {\n return this.running && !this.isMoveMode && !e.middle\n }\n\n public findDeepOne(e: PointerEvent): IUI {\n const options = { exclude: new LeafList(this.editor.editBox.rect) }\n return findOne(e.target.leafer.interaction.findPath(e, options)) as IUI\n }\n\n public findUI(e: PointerEvent): IUI {\n return this.isMultipleSelect(e) ? this.findDeepOne(e) : findOne(e.path)\n }\n\n public isMultipleSelect(e: IPointerEvent): boolean {\n const { multipleSelect, continuousSelect } = this.editor.mergeConfig\n return multipleSelect && (e.shiftKey || continuousSelect)\n }\n\n protected __listenEvents(): void {\n const { editor } = this\n editor.waitLeafer(() => {\n\n const { app } = editor\n app.selector.proxy = editor\n\n this.__eventIds = [\n editor.on_(EditorEvent.HOVER, this.onHover, this),\n editor.on_(EditorEvent.SELECT, this.onSelect, this),\n\n app.on_(PointerEvent.MOVE, this.onPointerMove, this),\n app.on_(PointerEvent.BEFORE_DOWN, this.onBeforeDown, this),\n app.on_(PointerEvent.TAP, this.onTap, this),\n\n app.on_(DragEvent.START, this.onDragStart, this, true), // 采用捕获事件,需要比EditBox中的dragStart早触发\n app.on_(DragEvent.DRAG, this.onDrag, this),\n app.on_(DragEvent.END, this.onDragEnd, this),\n\n app.on_(MoveEvent.MOVE, this.onAutoMove, this),\n app.on_([ZoomEvent.ZOOM, MoveEvent.MOVE], () => { this.editor.hoverTarget = null }),\n ]\n\n })\n }\n\n protected __removeListenEvents(): void {\n if (this.__eventIds) {\n this.off_(this.__eventIds)\n this.__eventIds.length = 0\n }\n }\n\n public destroy(): void {\n this.editor = this.originList = this.needRemoveItem = null\n this.__removeListenEvents()\n super.destroy()\n }\n}","import { IBoundsData, IPointData, IAround, IAlign, IUI, ILayoutBoundsData } from '@leafer-ui/interface'\nimport { AroundHelper, MathHelper, PointHelper, BoundsHelper, Bounds, Direction9 } from '@leafer-ui/draw'\n\nimport { IEditorScaleEvent, IEditorSkewEvent, IEditorRotateEvent } from '@leafer-in/interface'\n\n\nconst { topLeft, top, topRight, right, bottomRight, bottom, bottomLeft, left } = Direction9\nconst { toPoint } = AroundHelper\nconst { within } = MathHelper\n\nexport const EditDataHelper = {\n\n getScaleData(element: IUI, startBounds: ILayoutBoundsData, direction: Direction9, totalMove: IPointData, lockRatio: boolean | 'corner', around: IAround, flipable: boolean, scaleMode: boolean): IEditorScaleEvent {\n let align: IAlign, origin = {} as IPointData, scaleX: number = 1, scaleY: number = 1\n\n const { boxBounds, widthRange, heightRange, dragBounds, worldBoxBounds } = element\n const { width, height } = startBounds\n\n if (around) {\n totalMove.x *= 2\n totalMove.y *= 2\n }\n\n\n // 获取已经改变的比例\n const originChangedScaleX = element.scaleX / startBounds.scaleX\n const originChangedScaleY = element.scaleY / startBounds.scaleY\n const signX = originChangedScaleX < 0 ? -1 : 1\n const signY = originChangedScaleY < 0 ? -1 : 1\n\n const changedScaleX = scaleMode ? originChangedScaleX : signX * boxBounds.width / width\n const changedScaleY = scaleMode ? originChangedScaleY : signY * boxBounds.height / height\n\n totalMove.x *= scaleMode ? originChangedScaleX : signX\n totalMove.y *= scaleMode ? originChangedScaleY : signY\n\n const topScale = (-totalMove.y + height) / height\n const rightScale = (totalMove.x + width) / width\n const bottomScale = (totalMove.y + height) / height\n const leftScale = (-totalMove.x + width) / width\n\n switch (direction) {\n case top:\n scaleY = topScale\n align = 'bottom'\n break\n case right:\n scaleX = rightScale\n align = 'left'\n break\n case bottom:\n scaleY = bottomScale\n align = 'top'\n break\n case left:\n scaleX = leftScale\n align = 'right'\n break\n case topLeft:\n scaleY = topScale\n scaleX = leftScale\n align = 'bottom-right'\n break\n case topRight:\n scaleY = topScale\n scaleX = rightScale\n align = 'bottom-left'\n break\n case bottomRight:\n scaleY = bottomScale\n scaleX = rightScale\n align = 'top-left'\n break\n case bottomLeft:\n scaleY = bottomScale\n scaleX = leftScale\n align = 'top-right'\n }\n\n if (lockRatio) {\n const unlockSide = lockRatio === 'corner' && direction % 2\n if (!unlockSide) {\n let scale: number\n switch (direction) {\n case top:\n case bottom:\n scale = scaleY\n break\n case left:\n case right:\n scale = scaleX\n break\n default:\n scale = Math.sqrt(Math.abs(scaleX * scaleY))\n\n }\n scaleX = scaleX < 0 ? -scale : scale\n scaleY = scaleY < 0 ? -scale : scale\n }\n }\n\n const useScaleX = scaleX !== 1, useScaleY = scaleY !== 1\n\n if (useScaleX) scaleX /= changedScaleX\n if (useScaleY) scaleY /= changedScaleY\n\n if (!flipable) {\n const { worldTransform } = element\n if (scaleX < 0) scaleX = 1 / boxBounds.width / worldTransform.scaleX\n if (scaleY < 0) scaleY = 1 / boxBounds.height / worldTransform.scaleY\n }\n\n // 检查限制\n\n toPoint(around || align, boxBounds, origin, true)\n\n if (dragBounds) {\n const allowBounds = dragBounds === 'parent' ? element.parent.boxBounds : dragBounds\n const localBounds = new Bounds(element.__localBoxBounds)\n localBounds.scaleOf(element.getLocalPointByInner(origin), scaleX, scaleY)\n\n if (!BoundsHelper.includes(allowBounds, localBounds)) {\n const realBounds = localBounds.getIntersect(allowBounds)\n const fitScaleX = realBounds.width / localBounds.width, fitScaleY = realBounds.height / localBounds.height\n if (useScaleX) scaleX *= fitScaleX\n if (useScaleY) scaleY *= fitScaleY // 后续需优化带旋转的场景\n }\n }\n\n if (useScaleX && widthRange) {\n const nowWidth = boxBounds.width * element.scaleX\n scaleX = within(nowWidth * scaleX, widthRange) / nowWidth\n }\n\n if (useScaleY && heightRange) {\n const nowHeight = boxBounds.height * element.scaleY\n scaleY = within(nowHeight * scaleY, heightRange) / nowHeight\n }\n\n // 防止小于1px\n if (useScaleX && Math.abs(scaleX * worldBoxBounds.width) < 1) scaleX = (scaleX < 0 ? -1 : 1) / worldBoxBounds.width\n if (useScaleY && Math.abs(scaleY * worldBoxBounds.height) < 1) scaleY = (scaleY < 0 ? -1 : 1) / worldBoxBounds.height\n\n if (lockRatio && scaleX !== scaleY) scaleY = scaleX = Math.min(scaleX, scaleY)\n\n return { origin, scaleX, scaleY, direction, lockRatio, around }\n },\n\n getRotateData(bounds: IBoundsData, direction: Direction9, current: IPointData, last: IPointData, around: IAround): IEditorRotateEvent {\n let align: IAlign, origin = {} as IPointData\n\n switch (direction) {\n case topLeft:\n align = 'bottom-right'\n break\n case topRight:\n align = 'bottom-left'\n break\n case bottomRight:\n align = 'top-left'\n break\n case bottomLeft:\n align = 'top-right'\n break\n default:\n align = 'center'\n }\n\n toPoint(around || align, bounds, origin, true)\n\n return { origin, rotation: PointHelper.getRotation(last, origin, current) }\n },\n\n getSkewData(bounds: IBoundsData, direction: Direction9, move: IPointData, around: IAround): IEditorSkewEvent {\n let align: IAlign, origin = {} as IPointData, skewX = 0, skewY = 0\n let last: IPointData\n\n switch (direction) {\n case top:\n case topLeft:\n last = { x: 0.5, y: 0 }\n align = 'bottom'\n skewX = 1\n break\n case bottom:\n case bottomRight:\n last = { x: 0.5, y: 1 }\n align = 'top'\n skewX = 1\n break\n case left:\n case bottomLeft:\n last = { x: 0, y: 0.5 }\n align = 'right'\n skewY = 1\n break\n case right:\n case topRight:\n last = { x: 1, y: 0.5 }\n align = 'left'\n skewY = 1\n }\n\n const { width, height } = bounds\n\n last.x = last.x * width\n last.y = last.y * height\n\n toPoint(around || align, bounds, origin, true)\n\n const rotation = PointHelper.getRotation(last, origin, { x: last.x + (skewX ? move.x : 0), y: last.y + (skewY ? move.y : 0) })\n skewX ? skewX = -rotation : skewY = rotation\n\n return { origin, skewX, skewY }\n },\n\n\n getAround(around: IAround, altKey: boolean): IAround {\n return (altKey && !around) ? 'center' : around\n },\n\n getRotateDirection(direction: number, rotation: number, totalDirection = 8): number {\n direction = (direction + Math.round(rotation / (360 / totalDirection))) % totalDirection\n if (direction < 0) direction += totalDirection\n return direction\n },\n\n getFlipDirection(direction: Direction9, flipedX: boolean, flipedY: boolean): Direction9 {\n if (flipedX) {\n switch (direction) {\n case left: direction = right; break\n case topLeft: direction = topRight; break\n case bottomLeft: direction = bottomRight; break\n case right: direction = left; break\n case topRight: direction = topLeft; break\n case bottomRight: direction = bottomLeft; break\n }\n }\n\n if (flipedY) {\n switch (direction) {\n case top: direction = bottom; break\n case topLeft: direction = bottomLeft; break\n case topRight: direction = bottomRight; break\n case bottom: direction = top; break\n case bottomLeft: direction = topLeft; break\n case bottomRight: direction = topRight; break\n }\n }\n\n return direction\n }\n\n}","import { IObject, IUIEvent } from '@leafer-ui/interface'\n\nimport { IEditor } from '@leafer-in/interface'\nimport { MathHelper } from '@leafer-ui/draw'\n\nimport { EditDataHelper } from '../helper/EditDataHelper'\n\n\nconst cacheCursors: IObject = {}\n\nexport function updateCursor(editor: IEditor, e: IUIEvent): void {\n const { editBox } = editor, point = editBox.enterPoint\n if (!point || !editor.editing || !editBox.visible) return\n if (point.name === 'circle') return // 独立旋转按钮\n if (point.pointType === 'button') { // 普通按钮\n if (!point.cursor) point.cursor = 'pointer'\n return\n }\n\n let { rotation } = editBox\n const { resizeCursor, rotateCursor, skewCursor, resizeable, rotateable, skewable } = editor.mergeConfig\n const { pointType } = point, { flippedX, flippedY } = editBox\n\n let showResize = pointType.includes('resize')\n if (showResize && rotateable && (e.metaKey || e.ctrlKey || !resizeable)) showResize = false\n const showSkew = skewable && !showResize && (point.name === 'resize-line' || pointType === 'skew')\n\n const cursor = showSkew ? skewCursor : (showResize ? resizeCursor : rotateCursor)\n rotation += (EditDataHelper.getFlipDirection(point.direction, flippedX, flippedY) + 1) * 45\n rotation = Math.round(MathHelper.formatRotation(rotation, true) / 2) * 2\n\n const { url, x, y } = cursor\n const key = url + rotation\n\n if (cacheCursors[key]) {\n point.cursor = cacheCursors[key]\n } else {\n cacheCursors[key] = point.cursor = { url: toDataURL(url, rotation), x, y }\n }\n}\n\nexport function updateMoveCursor(editor: IEditor): void {\n const { moveCursor, moveable } = editor.mergeConfig\n editor.editBox.rect.cursor = moveable ? moveCursor : undefined\n}\n\n\nfunction toDataURL(svg: string, rotation: number): string {\n return '\"data:image/svg+xml,' + encodeURIComponent(svg.replace('{{rotation}}', rotation.toString())) + '\"'\n}","import { Box, Direction9 } from '@leafer-ui/draw'\n\nimport { IEditPoint, IEditPointType } from '@leafer-in/interface'\n\n\nexport class EditPoint extends Box implements IEditPoint {\n public direction: Direction9\n public pointType: IEditPointType\n}","import { IRect, IEventListenerId, IBoundsData, IPointData, IKeyEvent, IGroup, IBox, IBoxInputData, IAlign, IUI, IEditorConfig, IEditorDragStartData } from '@leafer-ui/interface'\nimport { Group, Box, Text, AroundHelper, Direction9, ResizeEvent } from '@leafer-ui/draw'\nimport { DragEvent, PointerEvent } from '@leafer-ui/core'\n\nimport { IEditBox, IEditor, IEditPoint, IEditPointType } from '@leafer-in/interface'\n\nimport { updateCursor, updateMoveCursor } from '../editor/cursor'\nimport { EditorEvent } from '../event/EditorEvent'\nimport { EditPoint } from './EditPoint'\nimport { EditDataHelper } from '../helper/EditDataHelper'\n\n\nconst fourDirection = ['top', 'right', 'bottom', 'left'], editConfig: IEditorConfig = undefined\n\nexport class EditBox extends Group implements IEditBox {\n\n public editor: IEditor\n public dragging: boolean\n public moving: boolean\n\n public view: IGroup = new Group() // 放置默认编辑工具控制点\n\n public rect: IBox = new Box({ name: 'rect', hitFill: 'all', hitStroke: 'none', strokeAlign: 'center', hitRadius: 5 }) // target rect\n public circle: IEditPoint = new EditPoint({ name: 'circle', strokeAlign: 'center', around: 'center', cursor: 'crosshair', hitRadius: 5 }) // rotate point\n public buttons: IGroup = new Group({ around: 'center', hitSelf: false, visible: 0 })\n\n public resizePoints: IEditPoint[] = [] // topLeft, top, topRight, right, bottomRight, bottom, bottomLeft, left\n public rotatePoints: IEditPoint[] = [] // topLeft, top, topRight, right, bottomRight, bottom, bottomLeft, left\n public resizeLines: IEditPoint[] = [] // top, right, bottom, left\n\n public enterPoint: IEditPoint\n public dragPoint: IEditPoint // 正在拖拽的控制点\n\n public dragStartData = {} as IEditorDragStartData\n\n // fliped\n public get flipped(): boolean { return this.flippedX || this.flippedY }\n public get flippedX(): boolean { return this.scaleX < 0 }\n public get flippedY(): boolean { return this.scaleY < 0 }\n public get flippedOne(): boolean { return this.scaleX * this.scaleY < 0 }\n\n protected __eventIds: IEventListenerId[] = []\n\n constructor(editor: IEditor) {\n super()\n this.editor = editor\n this.visible = false\n this.create()\n this.__listenEvents()\n }\n\n public create() {\n let rotatePoint: IEditPoint, resizeLine: IEditPoint, resizePoint: IEditPoint\n const { view, resizePoints, rotatePoints, resizeLines, rect, circle, buttons } = this\n const arounds: IAlign[] = ['bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', 'top', 'top-right', 'right']\n\n for (let i = 0; i < 8; i++) {\n rotatePoint = new EditPoint({ name: 'rotate-point', around: arounds[i], width: 15, height: 15, hitFill: \"all\" })\n rotatePoints.push(rotatePoint)\n this.listenPointEvents(rotatePoint, 'rotate', i)\n\n if (i % 2) {\n resizeLine = new EditPoint({ name: 'resize-line', around: 'center', width: 10, height: 10, hitFill: \"all\" })\n resizeLines.push(resizeLine)\n this.listenPointEvents(resizeLine, 'resize', i)\n }\n\n resizePoint = new EditPoint({ name: 'resize-point', hitRadius: 5 })\n resizePoints.push(resizePoint)\n this.listenPointEvents(resizePoint, 'resize', i)\n }\n\n this.listenPointEvents(circle, 'rotate', 2)\n\n view.addMany(...rotatePoints, rect, circle, buttons, ...resizeLines, ...resizePoints)\n this.add(view)\n }\n\n public load(): void {\n const { mergeConfig, element, single } = this.editor\n const { rect, circle, resizePoints } = this\n const { stroke, strokeWidth } = mergeConfig\n\n const pointsStyle = this.getPointsStyle()\n const middlePointsStyle = this.getMiddlePointsStyle()\n\n let resizeP: IRect\n\n for (let i = 0; i < 8; i++) {\n resizeP = resizePoints[i]\n resizeP.set(this.getPointStyle((i % 2) ? middlePointsStyle[((i - 1) / 2) % middlePointsStyle.length] : pointsStyle[(i / 2) % pointsStyle.length]))\n if (!(i % 2)) resizeP.rotation = (i / 2) * 90\n }\n\n // rotate\n circle.set(this.getPointStyle(mergeConfig.circle || mergeConfig.rotatePoint || pointsStyle[0]))\n\n // rect\n rect.set({ stroke, strokeWidth, editConfig, ...(mergeConfig.rect || {}) })\n rect.hittable = !single\n rect.syncEventer = single && this.editor // 单选下 rect 的事件不会冒泡,需要手动传递给editor\n\n // 编辑框作为底部虚拟元素, 在 onSelect 方法移除\n if (single) {\n element.syncEventer = rect\n this.app.interaction.bottomList = [{ target: rect, proxy: element }]\n }\n }\n\n public update(bounds: IBoundsData): void {\n const { rect, circle, buttons, resizePoints, rotatePoints, resizeLines, editor } = this\n const { mergeConfig, element, multiple, editMask } = editor\n const { middlePoint, resizeable, rotateable, hideOnSmall, editBox, mask } = mergeConfig\n\n this.visible = !element.locked\n editMask.visible = mask ? true : 0\n\n if (this.view.worldOpacity) {\n const { width, height } = bounds\n const smallSize = typeof hideOnSmall === 'number' ? hideOnSmall : 10\n const showPoints = editBox && !(hideOnSmall && width < smallSize && height < smallSize)\n\n let point = {} as IPointData, rotateP: IRect, resizeP: IRect, resizeL: IRect\n\n for (let i = 0; i < 8; i++) {\n\n AroundHelper.toPoint(AroundHelper.directionData[i], bounds, point)\n resizeP = resizePoints[i]\n rotateP = rotatePoints[i]\n resizeL = resizeLines[Math.floor(i / 2)]\n resizeP.set(point)\n rotateP.set(point)\n resizeL.set(point)\n\n // visible \n resizeP.visible = resizeL.visible = showPoints && !!(resizeable || rotateable)\n rotateP.visible = showPoints && rotateable && resizeable && !mergeConfig.rotatePoint\n\n if (i % 2) { // top, right, bottom, left\n\n resizeP.visible = rotateP.visible = showPoints && !!middlePoint\n\n if (((i + 1) / 2) % 2) { // top, bottom\n resizeL.width = width\n if (hideOnSmall && resizeP.width * 2 > width) resizeP.visible = false\n } else {\n resizeL.height = height\n resizeP.rotation = 90\n if (hideOnSmall && resizeP.width * 2 > height) resizeP.visible = false\n }\n }\n\n }\n\n // rotate\n circle.visible = showPoints && rotateable && !!(mergeConfig.circle || mergeConfig.rotatePoint)\n if (circle.visible) this.layoutCircle(mergeConfig)\n\n // rect\n if (rect.path) rect.path = null // line可能会变成path优先模式\n rect.set({ ...bounds, visible: multiple ? true : editBox })\n\n // buttons\n buttons.visible = showPoints && buttons.children.length > 0 || 0\n if (buttons.visible) this.layoutButtons(mergeConfig)\n } else rect.set(bounds) // 需要更新大小\n }\n\n protected layoutCircle(config: IEditorConfig): void {\n const { circleDirection, circleMargin, buttonsMargin, buttonsDirection, middlePoint } = config\n const direction = fourDirection.indexOf(circleDirection || ((this.buttons.children.length && buttonsDirection === 'bottom') ? 'top' : 'bottom'))\n this.setButtonPosition(this.circle, direction, circleMargin || buttonsMargin, !!middlePoint)\n }\n\n protected layoutButtons(config: IEditorConfig): void {\n const { buttons } = this\n const { buttonsDirection, buttonsFixed, buttonsMargin, middlePoint } = config\n\n const { flippedX, flippedY } = this\n let index = fourDirection.indexOf(buttonsDirection)\n if ((index % 2 && flippedX) || ((index + 1) % 2 && flippedY)) {\n if (buttonsFixed) index = (index + 2) % 4 // flip x / y\n }\n\n const direction = buttonsFixed ? EditDataHelper.getRotateDirection(index, this.flippedOne ? this.rotation : -this.rotation, 4) : index\n this.setButtonPosition(buttons, direction, buttonsMargin, !!middlePoint)\n\n if (buttonsFixed) buttons.rotation = (direction - index) * 90\n buttons.scaleX = flippedX ? -1 : 1\n buttons.scaleY = flippedY ? -1 : 1\n }\n\n protected setButtonPosition(buttons: IUI, direction: number, buttonsMargin: number, useMiddlePoint: boolean): void {\n const point = this.resizePoints[direction * 2 + 1] // 4 map 8 direction\n const useX = direction % 2 // left / right\n const sign = (!direction || direction === 3) ? -1 : 1 // top / left = -1\n\n const useWidth = direction % 2 // left / right origin direction\n const margin = (buttonsMargin + (useWidth ? ((useMiddlePoint ? point.width : 0) + buttons.boxBounds.width) : ((useMiddlePoint ? point.height : 0) + buttons.boxBounds.height)) / 2) * sign\n\n if (useX) {\n buttons.x = point.x + margin\n buttons.y = point.y\n } else {\n buttons.x = point.x\n buttons.y = point.y + margin\n }\n }\n\n\n public unload(): void {\n this.visible = false\n }\n\n\n public getPointStyle(userStyle?: IBoxInputData): IBoxInputData {\n const { stroke, strokeWidth, pointFill, pointSize, pointRadius } = this.editor.mergeConfig\n const defaultStyle = { fill: pointFill, stroke, strokeWidth, around: 'center', strokeAlign: 'center', width: pointSize, height: pointSize, cornerRadius: pointRadius, offsetX: 0, offsetY: 0, editConfig } as IBoxInputData\n return userStyle ? Object.assign(defaultStyle, userStyle) : defaultStyle\n }\n\n public getPointsStyle(): IBoxInputData[] {\n const { point } = this.editor.mergeConfig\n return point instanceof Array ? point : [point]\n }\n\n public getMiddlePointsStyle(): IBoxInputData[] {\n const { middlePoint } = this.editor.mergeConfig\n return middlePoint instanceof Array ? middlePoint : (middlePoint ? [middlePoint] : this.getPointsStyle())\n }\n\n protected onSelect(e: EditorEvent): void {\n if (e.oldList.length === 1) {\n e.oldList[0].syncEventer = null\n if (this.app) this.app.interaction.bottomList = null\n }\n }\n\n // drag\n\n protected onDragStart(e: DragEvent): void {\n this.dragging = true\n const point = this.dragPoint = e.current as IEditPoint, { pointType } = point\n const { editor, dragStartData } = this, { element } = editor\n if (point.name === 'rect') {\n this.moving = true\n editor.opacity = editor.mergeConfig.hideOnMove ? 0 : 1 // move\n }\n dragStartData.x = e.x\n dragStartData.y = e.y\n dragStartData.point = { x: element.x, y: element.y } // 用于移动\n dragStartData.bounds = { ...element.getLayoutBounds('box', 'local') } // 用于resize\n dragStartData.rotation = element.rotation // 用于旋转\n if (pointType && pointType.includes('resize')) ResizeEvent.resizingKeys = editor.leafList.keys // 记录正在resize中的元素列表\n }\n\n protected onDragEnd(e: DragEvent): void {\n this.dragging = false\n this.dragPoint = null\n this.moving = false\n const { name, pointType } = e.current as IEditPoint\n if (name === 'rect') this.editor.opacity = 1 // move\n if (pointType && pointType.includes('resize')) ResizeEvent.resizingKeys = null\n }\n\n protected onDrag(e: DragEvent): void {\n const { editor } = this\n const { pointType } = this.enterPoint = e.current as IEditPoint\n if (pointType.includes('rotate') || e.metaKey || e.ctrlKey || !editor.mergeConfig.resizeable) {\n editor.onRotate(e)\n if (pointType === 'resize-rotate') editor.onScale(e)\n } else if (pointType === 'resize') editor.onScale(e)\n if (pointType === 'skew') editor.onSkew(e)\n updateCursor(editor, e)\n }\n\n public onArrow(e: IKeyEvent): void {\n const { editor } = this\n if (editor.editing && editor.mergeConfig.keyEvent) {\n let x = 0, y = 0\n const distance = e.shiftKey ? 10 : 1\n switch (e.code) {\n case 'ArrowDown':\n y = distance\n break\n case 'ArrowUp':\n y = -distance\n break\n case 'ArrowLeft':\n x = -distance\n break\n case 'ArrowRight':\n x = distance\n }\n if (x || y) editor.move(x, y)\n }\n }\n\n\n protected onDoubleTap(e: PointerEvent): void {\n if (this.editor.mergeConfig.openInner === 'double') this.openInner(e)\n }\n\n protected onLongPress(e: PointerEvent): void {\n if (this.editor.mergeConfig.openInner === 'long') this.openInner(e)\n }\n\n protected openInner(e: PointerEvent): void {\n const { editor } = this\n if (editor.single) {\n const { element } = editor\n if (element.locked) return\n if (element.isBranch && !element.editInner) {\n if ((element as IBox).textBox) {\n const { children } = element\n const find = children.find(item => item.editable && item instanceof Text) || children.find(item => item instanceof Text)\n if (find) return editor.openInnerEditor(find) // 文本Box直接进入编辑状态,如便利贴文本\n }\n\n editor.openGroup(element as IGroup)\n editor.target = editor.selector.findDeepOne(e)\n } else {\n editor.openInnerEditor()\n }\n }\n }\n\n\n public listenPointEvents(point: IEditPoint, type: IEditPointType, direction: Direction9): void {\n const { editor } = this\n point.direction = direction\n point.pointType = type\n point.on_(DragEvent.START, this.onDragStart, this)\n point.on_(DragEvent.DRAG, this.onDrag, this)\n point.on_(DragEvent.END, this.onDragEnd, this)\n point.on_(PointerEvent.LEAVE, () => this.enterPoint = null)\n if (point.name !== 'circle') point.on_(PointerEvent.ENTER, (e) => { this.enterPoint = point, updateCursor(editor, e) })\n }\n\n protected __listenEvents(): void {\n const { rect, editor } = this\n this.__eventIds = [\n editor.on_(EditorEvent.SELECT, this.onSelect, this),\n\n rect.on_(DragEvent.START, this.onDragStart, this),\n rect.on_(DragEvent.DRAG, editor.onMove, editor),\n rect.on_(DragEvent.END, this.onDragEnd, this),\n\n rect.on_(PointerEvent.ENTER, () => updateMoveCursor(editor)),\n rect.on_(PointerEvent.DOUBLE_TAP, this.onDoubleTap, this),\n rect.on_(PointerEvent.LONG_PRESS, this.onLongPress, this)\n ]\n }\n\n protected __removeListenEvents(): void {\n this.off_(this.__eventIds)\n this.__eventIds.length = 0\n }\n\n public destroy(): void {\n this.editor = null\n this.__removeListenEvents()\n super.destroy()\n }\n\n}","import { IBox, ILeaferCanvas, IRenderOptions } from '@leafer-ui/interface'\nimport { UI } from '@leafer-ui/draw'\n\nimport { IEditor } from '@leafer-in/interface'\n\nconst bigBounds = { x: 0, y: 0, width: 100000, height: 100000 }\n\nexport class EditMask extends UI {\n\n public editor: IEditor\n\n constructor(editor: IEditor) {\n super()\n this.editor = editor\n this.hittable = false\n this.visible = 0\n }\n\n override __updateWorldBounds(): void {\n Object.assign(this.__local, bigBounds) // 强制修改渲染包围盒\n Object.assign(this.__world, bigBounds)\n }\n\n public __draw(canvas: ILeaferCanvas, options: IRenderOptions): void {\n\n const { editor } = this, { mask } = editor.mergedConfig\n if (mask && editor.editing) {\n canvas.fillWorld(canvas.bounds, mask === true ? 'rgba(0,0,0,0.8)' : mask)\n if (options.bounds && !options.bounds.hit(editor.editBox.rect.__world, options.matrix)) return\n\n canvas.saveBlendMode('destination-out')\n editor.list.forEach(item => {\n item.__renderShape(canvas, options)\n const { __box, parent } = item\n if ((item = __box) || ((item = parent) && (parent as IBox).textBox)) item.__renderShape(canvas, options) // 文本框\n })\n canvas.restoreBlendMode()\n }\n }\n\n public destroy(): void {\n this.editor = null\n super.destroy()\n }\n\n}\n","const filterStyle = `\n<feOffset dy=\"1\"/>\n<feGaussianBlur stdDeviation=\"1.5\"/>\n<feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"/>\n<feBlend mode=\"normal\" in=\"SourceGraphic\" result=\"shape\"/>`\n\n\nexport const resizeSVG = `\n<svg width=\"24\" height=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n<g filter=\"url(#f)\">\n<g transform=\"rotate({{rotation}},12,12)\">\n<path d=\"M7.5 8.0H8.5V5.9L6.8 7.2L7.5 8.0ZM3 11.4L2.3 10.6L1.3 11.4L2.3 12.2L3 11.4ZM7.5 10.4H6.5V11.4H7.5V10.4ZM16.5 10.4V11.4H17.5V10.4H16.5ZM16.5 8.0L17.1 7.2L15.5 5.9V8.0H16.5ZM21 11.4L21.6 12.2L22.6 11.4L21.6 10.6L21 11.4ZM16.5 14.9H15.5V16.9L17.1 15.7L16.5 14.9ZM16.5 12.4H17.5V11.4H16.5V12.4ZM7.5 12.4V11.4H6.5V12.4H7.5ZM7.5 14.9L6.8 15.7L8.5 16.9V14.9H7.5ZM6.8 7.2L2.3 10.6L3.6 12.2L8.1 8.7L6.8 7.2ZM8.5 10.4V8.0H6.5V10.4H8.5ZM16.5 9.4H7.5V11.4H16.5V9.4ZM17.5 10.4V8.0H15.5V10.4H17.5ZM15.8 8.7L20.3 12.2L21.6 10.6L17.1 7.2L15.8 8.7ZM20.3 10.6L15.8 14.1L17.1 15.7L21.6 12.2L20.3 10.6ZM17.5 14.9V12.4H15.5V14.9H17.5ZM7.5 13.4H16.5V11.4H7.5V13.4ZM8.5 14.9V12.4H6.5V14.9H8.5ZM2.3 12.2L6.8 15.7L8.1 14.1L3.6 10.6L2.3 12.2Z\" fill=\"white\"/>\n<path fill-rule=\"evenodd\" d=\"M3 11.4L7.5 8.0V10.4H16.5V8.0L21 11.4L16.5 14.9V12.4H7.5V14.9L3 11.4Z\" fill=\"black\"/>\n</g>\n</g>\n<defs>\n<filter id=\"f\" x=\"-1.6\" y=\"3.9\" width=\"27.2\" height=\"16.9\" filterUnits=\"userSpaceOnUse\">\n${filterStyle}\n</filter>\n</defs>\n</svg>\n`\n\nexport const rotateSVG = `\n<svg width=\"24\" height=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n<g filter=\"url(#f)\">\n<g transform=\"rotate(135,12,12),rotate({{rotation}},12,12)\">\n<path d=\"M20.4 8H21.4L20.8 7.1L17.3 2.6L17 2.1L16.6 2.6L13.1 7.1L12.5 8H13.5H15.4C14.9 11.8 11.8 14.9 8 15.4V13.5V12.5L7.1 13.1L2.6 16.6L2.1 17L2.6 17.3L7.1 20.8L8 21.4V20.4V18.4C13.5 17.9 17.9 13.5 18.4 8H20.4Z\" stroke=\"white\"/>\n<path fill-rule=\"evenodd\" d=\"M17 3L20.4 7.5H17.9C17.7 13.1 13.1 17.7 7.5 17.9V20.4L3 17L7.5 13.5V15.9C12.0 15.7 15.7 12.0 15.9 7.5H13.5L17 3Z\" fill=\"black\"/>\n</g>\n</g>\n<defs>\n<filter id=\"f\" x=\"-1.6\" y=\"-0.6\" width=\"27.1\" height=\"27.1\" filterUnits=\"userSpaceOnUse\">\n${filterStyle}\n</filter>\n</defs>\n</svg>\n`\n\nexport const skewSVG = `\n<svg width=\"24\" height=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n<g filter=\"url(#f)\">\n<g transform=\"rotate(90,12,12),rotate({{rotation}},12,12)\">\n<path d=\"M21 10.4L21 11.4L23.8 11.4L21.6 9.6L21 10.4ZM17 10.4V11.4L17 11.4L17 10.4ZM15.5 6L16.1 5.2L14.5 3.9V6H15.5ZM15.5 8.4V9.4H16.5V8.4H15.5ZM6 8.4V7.4H5V8.4H6ZM6 10.4H5V11.4H6V10.4ZM7 14.4V13.4L7 13.4L7 14.4ZM3 14.4L3 13.4L0.1 13.4L2.3 15.2L3 14.4ZM8.5 18.9L7.8 19.7L9.5 21.0V18.9H8.5ZM8.5 16.4V15.4H7.5V16.4H8.5ZM19 16.4V17.4H20V16.4H19ZM19 14.4H20V13.4H19V14.4ZM21 9.4L17 9.4L17 11.4L21 11.4L21 9.4ZM14.8 6.7L20.3 11.2L21.6 9.6L16.1 5.2L14.8 6.7ZM16.5 8.4V6H14.5V8.4H16.5ZM6 9.4H15.5V7.4H6V9.4ZM7 10.4V8.4H5V10.4H7ZM15.5 9.4H6V11.4H15.5V9.4ZM17 9.4H15.5V11.4H17V9.4ZM7 15.4H8.5V13.4H7V15.4ZM3 15.4L7 15.4L7 13.4L3 13.4L3 15.4ZM9.1 18.1L3.6 13.6L2.3 15.2L7.8 19.7L9.1 18.1ZM7.5 16.4V18.9H9.5V16.4H7.5ZM19 15.4H8.5V17.4H19V15.4ZM18 14.4V16.4H20V14.4H18ZM8.5 15.4H19V13.4H8.5V15.4Z\" fill=\"white\"/>\n<path fill-rule=\"evenodd\" d=\"M17 10.4L21 10.4L15.5 6V8.4H6V10.4H15.5H17ZM8.5 14.4H7L3 14.4L8.5 18.9V16.4H19V14.4H8.5Z\" fill=\"black\"/>\n</g>\n</g>\n<defs>\n<filter x=\"-2.8\" y=\"1.9\" width=\"29.6\" height=\"23.1\" filterUnits=\"userSpaceOnUse\" >\n${filterStyle}\n</filter>\n</defs>\n</svg>\n`","import { IEditorConfig } from '@leafer-in/interface'\nimport { resizeSVG, rotateSVG, skewSVG } from './svg'\n\n\nexport const config: IEditorConfig = {\n editSize: 'size',\n keyEvent: true,\n\n stroke: '#836DFF',\n strokeWidth: 2,\n\n pointFill: '#FFFFFF',\n pointSize: 10,\n pointRadius: 16,\n\n rotateGap: 45,\n\n buttonsDirection: 'bottom',\n buttonsMargin: 12,\n\n hideOnSmall: true,\n\n moveCursor: 'move',\n resizeCursor: { url: resizeSVG, x: 12, y: 12 },\n rotateCursor: { url: rotateSVG, x: 12, y: 12 },\n skewCursor: { url: skewSVG, x: 12, y: 12 },\n\n selector: true,\n editBox: true,\n hover: true,\n select: 'press',\n openInner: 'double',\n multipleSelect: true,\n boxSelect: true,\n\n moveable: true,\n resizeable: true,\n flipable: true,\n rotateable: true,\n skewable: true\n}","import { IGroup, ILeaf } from '@leafer-ui/interface'\nimport { Bounds } from '@leafer-ui/draw'\n\nimport { IEditor } from '@leafer-in/interface'\n\n\nconst bounds = new Bounds()\n\nexport function simulate(editor: IEditor) {\n const { simulateTarget, list } = editor\n const { zoomLayer } = list[0].leafer.zoomLayer as IGroup // follow zoomLayer zoom / move\n simulateTarget.safeChange(() => {\n bounds.setListWithFn(list, (leaf: ILeaf) => leaf.getBounds('box', 'page'))\n if (bounds.width === 0) bounds.width = 0.1 // fix\n if (bounds.height === 0) bounds.height = 0.1\n simulateTarget.reset(bounds.get())\n })\n zoomLayer.add(simulateTarget)\n}","import { LeafList } from '@leafer-ui/draw'\n\nimport { IEditor, IUI } from '@leafer-in/interface'\n\nimport { simulate } from './simulate'\nimport { updateMoveCursor } from './cursor'\nimport { EditorEvent } from '../event/EditorEvent'\n\n\nexport function onTarget(editor: IEditor, oldValue: IUI | IUI[]): void {\n const { target } = editor\n if (target) {\n editor.leafList = target instanceof LeafList ? target : new LeafList(target)\n if (editor.multiple) simulate(editor) // 更新模拟元素\n } else {\n editor.simulateTarget.remove()\n editor.leafList.reset()\n editor.closeInnerEditor()\n }\n\n editor.emitEvent(new EditorEvent(EditorEvent.SELECT, { editor, value: target, oldValue }))\n editor.checkOpenedGroups()\n\n if (editor.editing) {\n editor.waitLeafer(() => {\n updateMoveCursor(editor)\n editor.updateEditTool()\n editor.update()\n editor.listenTargetEvents()\n })\n } else {\n editor.updateEditTool()\n editor.removeTargetEvents()\n }\n}\n\n\nexport function onHover(editor: IEditor, oldValue: IUI): void {\n editor.emitEvent(new EditorEvent(EditorEvent.HOVER, { editor, value: editor.hoverTarget, oldValue }))\n}","import { IGroup, IGroupInputData, ILeaf, IUI } from '@leafer-ui/interface'\nimport { Group, Matrix } from '@leafer-ui/draw'\n\n\nconst order = (a: ILeaf, b: ILeaf) => a.parent.children.indexOf(a) - b.parent.children.indexOf(b)\nconst reverseOrder = (a: ILeaf, b: ILeaf) => b.parent.children.indexOf(b) - a.parent.children.indexOf(a)\n\nexport const EditorHelper = {\n\n group(list: IUI[], element?: IUI, userGroup?: IGroup | IGroupInputData): IGroup {\n list.sort(reverseOrder)\n const { app, parent } = list[0]\n\n let group: IGroup\n if (userGroup && (userGroup as IGroup).add) {\n group = userGroup as IGroup\n } else {\n group = new Group(userGroup)\n }\n\n parent.addAt(group, parent.children.indexOf(list[0]))\n list.sort(order)\n\n const matrx = new Matrix(element.worldTransform)\n matrx.divideParent(parent.worldTransform)\n group.setTransform(matrx)\n group.editable = true\n group.hitChildren = false\n\n app.lockLayout()\n list.forEach(child => child.dropTo(group))\n app.unlockLayout()\n\n return group\n },\n\n ungroup(list: IUI[]): IUI[] {\n const { app } = list[0]\n const ungroupList: IUI[] = []\n\n app.lockLayout()\n list.forEach(leaf => {\n if (leaf.isBranch) {\n const { parent, children } = leaf\n while (children.length) {\n ungroupList.push(children[0])\n children[0].dropTo(parent, parent.children.indexOf(leaf))\n }\n if (leaf.isBranchLeaf) ungroupList.push(leaf)\n else leaf.remove()\n } else {\n ungroupList.push(leaf)\n }\n })\n app.unlockLayout()\n\n return ungroupList\n },\n\n toTop(list: IUI[]): void {\n list.sort(order)\n list.forEach(leaf => {\n if (leaf.parent) leaf.parent.add(leaf)\n })\n },\n\n toBottom(list: IUI[]): void {\n list.sort(reverseOrder)\n list.forEach(leaf => {\n if (leaf.parent) leaf.parent.addAt(leaf, 0)\n })\n }\n\n}","import { IObject } from '@leafer-ui/interface'\nimport { Debug } from '@leafer-ui/draw'\n\nimport { IEditTool, IEditor } from '@leafer-in/interface'\n\n\nconst debug = Debug.get('EditToolCreator')\n\nexport function registerEditTool() {\n return (target: IObject) => {\n EditToolCreator.register(target)\n }\n}\n\nexport const registerInnerEditor = registerEditTool\n\nexport const EditToolCreator = {\n\n list: {} as IObject,\n\n register(EditTool: IObject): void {\n const { tag } = EditTool.prototype as IEditTool\n list[tag] && debug.repeat(tag)\n list[tag] = EditTool\n },\n\n get(tag: string, editor: IEditor): IEditTool {\n return new list[tag](editor)\n }\n\n}\n\nconst { list } = EditToolCreator","import { IInnerEditorEvent, IInnerEditor } from '@leafer-in/interface'\n\nimport { EditorEvent } from './EditorEvent'\nimport { IUI } from '@leafer-ui/interface'\nimport { } from '../tool/InnerEditor'\n\n\nexport class InnerEditorEvent extends EditorEvent implements IInnerEditorEvent {\n\n static BEFORE_OPEN = 'innerEditor.before_open'\n static OPEN = 'innerEditor.open'\n\n static BEFORE_CLOSE = 'innerEditor.before_close'\n static CLOSE = 'innerEditor.close'\n\n readonly editTarget: IUI\n readonly innerEditor: IInnerEditor\n\n constructor(type: string, data?: IInnerEditorEvent) {\n super(type, data)\n }\n\n}","import { IEditorGroupEvent } from '@leafer-in/interface'\n\nimport { EditorEvent } from './EditorEvent'\nimport { IGroup } from '@leafer-ui/interface'\nimport { } from '../tool/InnerEditor'\n\n\nexport class EditorGroupEvent extends EditorEvent implements IEditorGroupEvent {\n\n\n static BEFORE_GROUP = 'editor.before_group'\n static GROUP = 'editor.group'\n\n static BEFORE_UNGROUP = 'editor.before_ungroup'\n static UNGROUP = 'editor.ungroup'\n\n static BEFORE_OPEN = 'editor.before_open_group'\n static OPEN = 'editor.open_group'\n\n static BEFORE_CLOSE = 'editor.before_close_group'\n static CLOSE = 'editor.close_group'\n\n readonly editTarget: IGroup\n\n constructor(type: string, data?: IEditorGroupEvent) {\n super(type, data)\n }\n\n}","import { IObject, IFunction, IMatrix } from '@leafer-ui/interface'\nimport { LeafHelper, Matrix, PropertyEvent, Rect } from '@leafer-ui/draw'\n\nimport { IEditor, ISimulateElement } from '@leafer-in/interface'\n\n\nconst { updateMatrix } = LeafHelper\nconst checkMap: IObject = { x: 1, y: 1, scaleX: 1, scaleY: 1, rotation: 1, skewX: 1, skewY: 1 }, origin = 'top-left'\n\nexport class SimulateElement extends Rect implements ISimulateElement {\n\n public get __tag() { return 'SimulateElement' }\n\n public checkChange = true\n\n public canChange = true\n\n public changedTransform: IMatrix\n\n\n constructor(editor: IEditor) {\n super()\n\n this.visible = this.hittable = false\n\n this.on(PropertyEvent.CHANGE, (event: PropertyEvent) => {\n\n if (this.checkChange && checkMap[event.attrName]) {\n\n const { attrName, newValue, oldValue } = event\n const addValue = attrName[0] === 's' ? (<number>newValue || 1) / (<number>oldValue || 1) : (<number>newValue || 0) - (<number>oldValue || 0)\n\n this.canChange = false\n\n const data: IObject = this.__\n\n // old matrix\n data[attrName] = oldValue\n updateMatrix(this.parent)\n updateMatrix(this)\n\n const oldMatrix = new Matrix(this.__world)\n\n // new matrix\n data[attrName] = newValue\n this.__layout.rotationChange()\n updateMatrix(this)\n\n this.changedTransform = new Matrix(this.__world).divide(oldMatrix) // world change transform\n\n switch (attrName) {\n case 'x':\n editor.move(addValue, 0)\n break\n case 'y':\n editor.move(0, addValue)\n break\n case 'rotation':\n editor.rotateOf(origin, addValue)\n break\n case 'scaleX':\n editor.scaleOf(origin, addValue, 1)\n break\n case 'scaleY':\n editor.scaleOf(origin, 1, addValue)\n break\n case 'skewX':\n editor.skewOf(origin, addValue, 0)\n break\n case 'skewY':\n editor.skewOf(origin, 0, addValue)\n }\n\n this.canChange = true\n\n }\n })\n }\n\n public safeChange(changeFn: IFunction): void {\n if (this.canChange) {\n this.checkChange = false\n changeFn()\n this.checkChange = true\n }\n }\n}","import { IGroupInputData, IUI, IEventListenerId, IPointData, ILeafList, IEditSize, IGroup, IObject, IAlign, IAxis, IFunction, IMatrix, IApp } from '@leafer-ui/interface'\nimport { Group, DataHelper, MathHelper, LeafList, Matrix, RenderEvent, LeafHelper, Direction9 } from '@leafer-ui/draw'\nimport { DragEvent, RotateEvent, KeyEvent, ZoomEvent, MoveEvent, Plugin } from '@leafer-ui/core'\n\nimport { IEditBox, IEditPoint, IEditor, IEditorConfig, IEditTool, IEditorScaleEvent, IInnerEditor, ISimulateElement, IEditorMoveEvent, IEditorRotateEvent, IEditorSkewEvent } from '@leafer-in/interface'\n\nimport { EditorMoveEvent } from './event/EditorMoveEvent'\nimport { EditorScaleEvent } from './event/EditorScaleEvent'\nimport { EditorRotateEvent } from './event/EditorRotateEvent'\nimport { EditorSkewEvent } from './event/EditorSkewEvent'\n\nimport { EditSelect } from './display/EditSelect'\nimport { EditBox } from './display/EditBox'\nimport { EditMask } from './display/EditMask'\n\nimport { config } from './config'\n\nimport { onTarget, onHover } from './editor/target'\nimport { targetAttr, mergeConfigAttr } from './decorator/data'\nimport { EditorHelper } from './helper/EditorHelper'\nimport { EditDataHelper } from './helper/EditDataHelper'\nimport { simulate } from './editor/simulate'\nimport { updateCursor } from './editor/cursor'\nimport { EditToolCreator } from './tool/EditToolCreator'\nimport { InnerEditorEvent } from './event/InnerEditorEvent'\nimport { EditorGroupEvent } from './event/EditorGroupEvent'\nimport { SimulateElement } from './display/SimulateElement'\n\n\nexport class Editor extends Group implements IEditor {\n\n public config: IEditorConfig\n\n @mergeConfigAttr()\n readonly mergeConfig: IEditorConfig\n readonly mergedConfig: IEditorConfig\n\n @targetAttr(onHover)\n public hoverTarget?: IUI\n\n @targetAttr(onTarget)\n public target?: IUI | IUI[]\n\n // 列表\n\n public leafList: ILeafList = new LeafList() // from target\n public get list(): IUI[] { return this.leafList.list as IUI[] }\n public get dragHoverExclude(): IUI[] { return [this.editBox.rect] }\n public openedGroupList: ILeafList = new LeafList()\n\n // 状态\n\n public get editing(): boolean { return !!this.list.length }\n public innerEditing: boolean\n public get groupOpening(): boolean { return !!this.openedGroupList.length }\n public resizeDirection?: Direction9\n\n public get multiple(): boolean { return this.list.length > 1 }\n public get single(): boolean { return this.list.length === 1 }\n\n public get dragging(): boolean { return this.editBox.dragging }\n public get moving(): boolean { return this.editBox.moving }\n public get dragPoint(): IEditPoint { return this.editBox.dragPoint }\n\n // 组件\n\n public get element() { return this.multiple ? this.simulateTarget : this.list[0] as ISimulateElement }\n public simulateTarget: ISimulateElement = new SimulateElement(this)\n\n public editBox: IEditBox = new EditBox(this)\n public get buttons() { return this.editBox.buttons }\n\n public editTool?: IEditTool\n\n public innerEditor?: IInnerEditor\n public editToolList: IObject = {}\n\n public selector: EditSelect = new EditSelect(this)\n public editMask: EditMask = new EditMask(this)\n\n public targetChanged: boolean\n public targetEventIds: IEventListenerId[] = []\n\n\n constructor(userConfig?: IEditorConfig, data?: IGroupInputData) {\n super(data)\n let mergedConfig: IEditorConfig = DataHelper.clone(config)\n if (userConfig) mergedConfig = DataHelper.default(userConfig, mergedConfig)\n this.mergedConfig = this.config = mergedConfig\n\n this.addMany(this.editMask, this.selector, this.editBox)\n if (!Plugin.has('resize')) this.config.editSize = 'scale'\n }\n\n // select \n\n public select(target: IUI | IUI[]): void {\n this.target = target\n }\n\n public cancel(): void {\n this.target = null\n }\n\n // item\n\n public hasItem(item: IUI): boolean {\n return this.leafList.has(item)\n }\n\n public addItem(item: IUI): void {\n if (!this.hasItem(item) && !item.locked) this.leafList.add(item), this.target = this.leafList.list as IUI[]\n }\n\n public removeItem(item: IUI): void {\n if (this.hasItem(item)) this.leafList.remove(item), this.target = this.leafList.list as IUI[]\n }\n\n public shiftItem(item: IUI): void {\n this.hasItem(item) ? this.removeItem(item) : this.addItem(item)\n }\n\n // update\n\n public update(): void {\n if (this.editing) {\n if (!this.element.parent) return this.cancel()\n if (this.innerEditing) this.innerEditor.update()\n this.editTool.update()\n this.selector.update()\n }\n }\n\n public updateEditBox(): void {\n if (this.multiple) simulate(this)\n this.update()\n }\n\n public updateEditTool(): void {\n const tool = this.editTool\n if (tool) {\n this.editBox.unload()\n tool.unload()\n this.editTool = null\n }\n\n if (this.editing) {\n const tag = this.single ? this.list[0].editOuter as string : 'EditTool'\n this.editTool = this.editToolList[tag] = this.editToolList[tag] || EditToolCreator.get(tag, this)\n this.editBox.load()\n this.editTool.load()\n }\n }\n\n\n // get\n\n public getEditSize(_ui: IUI): IEditSize {\n return this.mergeConfig.editSize\n }\n\n // operate\n\n public onMove(e: DragEvent | MoveEvent): void {\n if (e instanceof MoveEvent) {\n\n if (e.moveType !== 'drag') {\n const { moveable, resizeable } = this.mergeConfig\n const move = e.getLocalMove(this.element)\n if (moveable === 'move') e.stop(), this.move(move.x, move.y)\n else if (resizeable === 'zoom') e.stop()\n }\n\n } else {\n\n const total = { x: e.totalX, y: e.totalY }\n\n if (e.shiftKey) {\n if (Math.abs(total.x) > Math.abs(total.y)) total.y = 0\n else total.x = 0\n }\n\n this.move(DragEvent.getValidMove(this.element, this.editBox.dragStartData.point, total))\n\n }\n }\n\n public onScale(e: DragEvent | ZoomEvent): void {\n const { element } = this\n let { around, lockRatio, resizeable, flipable, editSize } = this.mergeConfig\n\n if (e instanceof ZoomEvent) {\n\n if (resizeable === 'zoom') e.stop(), this.scaleOf(element.getBoxPoint(e), e.scale, e.scale)\n\n } else {\n\n const { direction } = e.current as IEditPoint\n\n if (e.shiftKey || element.lockRatio) lockRatio = true\n\n const data = EditDataHelper.getScaleData(element, this.editBox.dragStartData.bounds, direction, e.getInnerTotal(element), lockRatio, EditDataHelper.getAround(around, e.altKey), flipable, this.multiple || editSize === 'scale')\n\n if (this.editTool.onScaleWithDrag) {\n data.drag = e\n this.scaleWithDrag(data)\n } else {\n this.scaleOf(data.origin, data.scaleX, data.scaleY)\n }\n\n }\n }\n\n public onRotate(e: DragEvent | RotateEvent): void {\n const { skewable, rotateable, around, rotateGap } = this.mergeConfig\n const { direction, name } = e.current as IEditPoint\n if (skewable && name === 'resize-line') return this.onSkew(e as DragEvent)\n\n const { element } = this, { dragStartData } = this.editBox\n let origin: IPointData, rotation: number\n\n if (e instanceof RotateEvent) {\n\n if (rotateable === 'rotate') e.stop(), rotation = e.rotation, origin = element.getBoxPoint(e)\n else return\n\n if (element.scaleX * element.scaleY < 0) rotation = -rotation // flippedOne\n\n } else {\n\n const data = EditDataHelper.getRotateData(element.boxBounds, direction, e.getBoxPoint(element), element.getBoxPoint(dragStartData), e.shiftKey ? null : (element.around || element.origin || around || 'center'))\n rotation = data.rotation\n origin = data.origin\n\n }\n\n if (element.scaleX * element.scaleY < 0) rotation = -rotation // flippedOne\n if (e instanceof DragEvent) rotation = dragStartData.rotation + rotation - element.rotation\n\n rotation = MathHelper.float(MathHelper.getGapRotation(rotation, rotateGap, element.rotation), 2)\n if (!rotation) return\n\n this.rotateOf(origin, rotation)\n }\n\n\n public onSkew(e: DragEvent): void {\n const { element } = this\n const { around } = this.mergeConfig\n\n const { origin, skewX, skewY } = EditDataHelper.getSkewData(element.boxBounds, (e.current as IEditPoint).direction, e.getInnerMove(element), EditDataHelper.getAround(around, e.altKey))\n if (!skewX && !skewY) return\n\n this.skewOf(origin, skewX, skewY)\n }\n\n\n // transform\n\n public move(x: number | IPointData, y = 0): void {\n if (!this.checkTransform('moveable')) return\n if (typeof x === 'object') y = x.y, x = x.x\n\n const { element: target } = this, { beforeMove } = this.mergeConfig\n if (beforeMove) {\n const check = beforeMove({ target, x, y })\n if (typeof check === 'object') x = check.x, y = check.y\n else if (check === false) return\n }\n\n const world = target.getWorldPointByLocal({ x, y }, null, true)\n if (this.multiple) target.safeChange(() => target.move(x, y))\n const data: IEditorMoveEvent = { target, editor: this, moveX: world.x, moveY: world.y }\n\n this.emitEvent(new EditorMoveEvent(EditorMoveEvent.BEFORE_MOVE, data))\n const event = new EditorMoveEvent(EditorMoveEvent.MOVE, data)\n this.editTool.onMove(event)\n this.emitEvent(event)\n }\n\n public scaleWithDrag(data: IEditorScaleEvent): void {\n if (!this.checkTransform('resizeable')) return\n\n const { element: target } = this, { beforeScale } = this.mergeConfig\n if (beforeScale) {\n const { origin, scaleX, scaleY, drag } = data\n const check = beforeScale({ target, drag, origin, scaleX, scaleY })\n if (check === false) return\n }\n\n data = { ...data, target, editor: this, worldOrigin: target.getWorldPoint(data.origin) }\n\n this.emitEvent(new EditorScaleEvent(EditorScaleEvent.BEFORE_SCALE, data))\n const event = new EditorScaleEvent(EditorScaleEvent.SCALE, data)\n this.editTool.onScaleWithDrag(event)\n this.emitEvent(event)\n }\n\n\n override scaleOf(origin: IPointData | IAlign, scaleX: number, scaleY = scaleX, _resize?: boolean): void {\n if (!this.checkTransform('resizeable')) return\n\n const { element: target } = this, { beforeScale } = this.mergeConfig\n if (beforeScale) {\n const check = beforeScale({ target, origin, scaleX, scaleY })\n if (typeof check === 'object') scaleX = check.scaleX, scaleY = check.scaleY\n else if (check === false) return\n }\n\n const worldOrigin = this.getWorldOrigin(origin)\n const transform = this.multiple && this.getChangedTransform(() => target.safeChange(() => target.scaleOf(origin, scaleX, scaleY)))\n const data: IEditorScaleEvent = { target, editor: this, worldOrigin, scaleX, scaleY, transform }\n\n this.emitEvent(new EditorScaleEvent(EditorScaleEvent.BEFORE_SCALE, data))\n const event = new EditorScaleEvent(EditorScaleEvent.SCALE, data)\n this.editTool.onScale(event)\n this.emitEvent(event)\n }\n\n override flip(axis: IAxis): void {\n if (!this.checkTransform('resizeable')) return\n\n const { element } = this\n const worldOrigin = this.getWorldOrigin('center')\n const transform = this.multiple ? this.getChangedTransform(() => element.safeChange(() => element.flip(axis))) : new Matrix(LeafHelper.getFlipTransform(element, axis))\n const data: IEditorScaleEvent = { target: element, editor: this, worldOrigin, scaleX: axis === 'x' ? -1 : 1, scaleY: axis === 'y' ? -1 : 1, transform }\n\n this.emitEvent(new EditorScaleEvent(EditorScaleEvent.BEFORE_SCALE, data))\n const event = new EditorScaleEvent(EditorScaleEvent.SCALE, data)\n this.editTool.onScale(event)\n this.emitEvent(event)\n }\n\n override rotateOf(origin: IPointData | IAlign, rotation: number): void {\n if (!this.checkTransform('rotateable')) return\n\n const { element: target } = this, { beforeRotate } = this.mergeConfig\n if (beforeRotate) {\n const check = beforeRotate({ target, origin, rotation })\n if (typeof check === 'number') rotation = check\n else if (check === false) return\n }\n\n const worldOrigin = this.getWorldOrigin(origin)\n const transform = this.multiple && this.getChangedTransform(() => target.safeChange(() => target.rotateOf(origin, rotation)))\n const data: IEditorRotateEvent = { target, editor: this, worldOrigin, rotation, transform }\n\n this.emitEvent(new EditorRotateEvent(EditorRotateEvent.BEFORE_ROTATE, data))\n const event = new EditorRotateEvent(EditorRotateEvent.ROTATE, data)\n this.editTool.onRotate(event)\n this.emitEvent(event)\n }\n\n override skewOf(origin: IPointData | IAlign, skewX: number, skewY = 0, _resize?: boolean): void {\n if (!this.checkTransform('skewable')) return\n\n const { element: target } = this, { beforeSkew } = this.mergeConfig\n if (beforeSkew) {\n const check = beforeSkew({ target, origin, skewX, skewY })\n if (typeof check === 'object') skewX = check.skewX, skewY = check.skewY\n else if (check === false) return\n }\n\n const worldOrigin = this.getWorldOrigin(origin)\n const transform = this.multiple && this.getChangedTransform(() => target.safeChange(() => target.skewOf(origin, skewX, skewY)))\n const data: IEditorSkewEvent = { target, editor: this, worldOrigin, skewX, skewY, transform }\n\n this.emitEvent(new EditorSkewEvent(EditorSkewEvent.BEFORE_SKEW, data))\n const event = new EditorSkewEvent(EditorSkewEvent.SKEW, data)\n this.editTool.onSkew(event)\n this.emitEvent(event)\n }\n\n public checkTransform(type: 'moveable' | 'resizeable' | 'rotateable' | 'skewable'): boolean { return this.element && !this.element.locked && this.mergeConfig[type] as boolean }\n\n protected getWorldOrigin(origin: IPointData | IAlign): IPointData {\n return this.element.getWorldPoint(LeafHelper.getInnerOrigin(this.element, origin))\n }\n\n protected getChangedTransform(func: IFunction): IMatrix {\n const { element } = this\n if (this.multiple && !element.canChange) return element.changedTransform\n\n const oldMatrix = new Matrix(element.worldTransform)\n func()\n return new Matrix(element.worldTransform).divide(oldMatrix) // world change transform\n }\n\n\n // group\n\n public group(userGroup?: IGroup | IGroupInputData): IGroup {\n if (this.multiple) {\n this.emitGroupEvent(EditorGroupEvent.BEFORE_GROUP)\n this.target = EditorHelper.group(this.list, this.element, userGroup)\n this.emitGroupEvent(EditorGroupEvent.GROUP, this.target as IGroup)\n }\n return this.target as IGroup\n }\n\n public ungroup(): IUI[] {\n const { list } = this\n if (list.length) {\n list.forEach(item => item.isBranch && this.emitGroupEvent(EditorGroupEvent.BEFORE_UNGROUP, item as IGroup))\n this.target = EditorHelper.ungroup(list)\n list.forEach(item => item.isBranch && this.emitGroupEvent(EditorGroupEvent.UNGROUP, item as IGroup))\n }\n return this.list\n }\n\n public openGroup(group: IGroup): void {\n this.emitGroupEvent(EditorGroupEvent.BEFORE_OPEN, group)\n this.openedGroupList.add(group)\n group.hitChildren = true\n this.emitGroupEvent(EditorGroupEvent.OPEN, group)\n }\n\n public closeGroup(group: IGroup): void {\n this.emitGroupEvent(EditorGroupEvent.BEFORE_CLOSE, group)\n this.openedGroupList.remove(group)\n group.hitChildren = false\n this.emitGroupEvent(EditorGroupEvent.CLOSE, group)\n }\n\n public checkOpenedGroups(): void {\n const opened = this.openedGroupList\n if (opened.length) {\n let { list } = opened\n if (this.editing) list = [], opened.forEach(item => this.list.every(leaf => !LeafHelper.hasParent(leaf, item)) && list.push(item))\n list.forEach(item => this.closeGroup(item as IGroup))\n }\n if (this.editing && !this.selector.dragging) this.checkDeepSelect()\n }\n\n public checkDeepSelect(): void {\n let parent: IGroup, { list } = this\n for (let i = 0; i < list.length; i++) {\n parent = list[i].parent\n while (parent && !parent.hitChildren) {\n this.openGroup(parent)\n parent = parent.parent\n }\n }\n }\n\n public emitGroupEvent(type: string, group?: IGroup): void {\n const event = new EditorGroupEvent(type, { editTarget: group })\n this.emitEvent(event)\n if (group) group.emitEvent(event)\n }\n\n // inner\n\n public openInnerEditor(target?: IUI, select?: boolean): void {\n if (target && select) this.target = target\n if (this.single) {\n const editTarget = target || this.element\n const tag = editTarget.editInner\n if (tag && EditToolCreator.list[tag]) {\n this.editTool.unload()\n this.innerEditing = true\n this.innerEditor = this.editToolList[tag] || EditToolCreator.get(tag, this)\n this.innerEditor.editTarget = editTarget\n\n this.emitInnerEvent(InnerEditorEvent.BEFORE_OPEN)\n this.innerEditor.load()\n this.emitInnerEvent(InnerEditorEvent.OPEN)\n }\n }\n }\n\n public closeInnerEditor(): void {\n if (this.innerEditing) {\n this.innerEditing = false\n\n this.emitInnerEvent(InnerEditorEvent.BEFORE_CLOSE)\n this.innerEditor.unload()\n this.emitInnerEvent(InnerEditorEvent.CLOSE)\n\n this.editTool.load()\n this.innerEditor = null\n }\n }\n\n public emitInnerEvent(type: string): void {\n const { innerEditor } = this, { editTarget } = innerEditor\n const event = new InnerEditorEvent(type, { editTarget, innerEditor })\n this.emitEvent(event)\n editTarget.emitEvent(event)\n }\n\n // lock\n\n public lock(): void {\n this.list.forEach(leaf => leaf.locked = true)\n this.update()\n }\n\n public unlock(): void {\n this.list.forEach(leaf => leaf.locked = false)\n this.update()\n }\n\n // level\n\n public toTop(): void {\n if (this.list.length) {\n EditorHelper.toTop(this.list)\n this.leafList.update()\n }\n }\n\n public toBottom(): void {\n if (this.list.length) {\n EditorHelper.toBottom(this.list)\n this.leafList.update()\n }\n }\n\n protected onAppRenderStart(app: IApp): void {\n if (this.targetChanged = app.children.some(leafer => leafer !== this.leafer && leafer.renderer.changed)) this.editBox.forceRender()\n }\n\n protected onRenderStart(): void {\n if (this.targetChanged) this.update()\n }\n\n protected onKey(e: KeyEvent): void {\n updateCursor(this, e)\n }\n\n // event \n\n public listenTargetEvents(): void {\n if (!this.targetEventIds.length) {\n const { app, leafer, editBox, editMask } = this\n this.targetEventIds = [\n leafer.on_(RenderEvent.START, this.onRenderStart, this),\n app.on_(RenderEvent.CHILD_START, this.onAppRenderStart, this),\n app.on_(MoveEvent.BEFORE_MOVE, this.onMove, this, true),\n app.on_(ZoomEvent.BEFORE_ZOOM, this.onScale, this, true),\n app.on_(RotateEvent.BEFORE_ROTATE, this.onRotate, this, true),\n app.on_([KeyEvent.HOLD, KeyEvent.UP], this.onKey, this),\n app.on_(KeyEvent.DOWN, editBox.onArrow, editBox)\n ]\n if (editMask.visible) editMask.forceRender()\n }\n }\n\n public removeTargetEvents(): void {\n const { targetEventIds, editMask } = this\n if (targetEventIds.length) {\n this.off_(targetEventIds)\n targetEventIds.length = 0\n if (editMask.visible) editMask.forceRender()\n }\n }\n\n public destroy(): void {\n if (!this.destroyed) {\n this.target = this.hoverTarget = null\n\n Object.values(this.editToolList).forEach(item => item.destroy())\n this.simulateTarget.destroy()\n\n this.editToolList = {}\n this.simulateTarget = this.editTool = this.innerEditor = null\n\n super.destroy()\n }\n }\n\n}","import { IGroup, IEventListenerId, IUI, IObject } from '@leafer-ui/interface'\nimport { IInnerEditor, IEditor, IEditBox } from '@leafer-in/interface'\n\nimport { Group } from '@leafer-ui/draw'\nimport { EditToolCreator } from './EditToolCreator'\n\nexport class InnerEditor implements IInnerEditor {\n\n static registerInnerEditor() {\n EditToolCreator.register(this)\n }\n\n\n public get tag() { return 'InnerEditor' }\n\n public editTarget: IUI\n\n public config: IObject\n\n public editor: IEditor\n public get editBox(): IEditBox { return this.editor.editBox }\n\n public view: IGroup\n\n public eventIds: IEventListenerId[]\n\n\n constructor(editor: IEditor) {\n this.editor = editor\n this.create()\n }\n\n\n public onCreate(): void { }\n public create(): void {\n this.view = new Group()\n this.onCreate()\n }\n\n\n // 状态\n\n public onLoad(): void { }\n public load(): void {\n const { editor } = this\n if (editor) {\n if (editor.app) editor.selector.hittable = editor.app.tree.hitChildren = false\n this.onLoad()\n }\n }\n\n public onUpdate(): void { }\n public update(): void { this.onUpdate() }\n\n public onUnload(): void { }\n public unload(): void {\n const { editor } = this\n if (editor) {\n if (editor.app) editor.selector.hittable = editor.app.tree.hitChildren = true\n this.onUnload()\n }\n }\n\n public onDestroy(): void { }\n public destroy(): void {\n this.onDestroy()\n if (this.editor) {\n if (this.view) this.view.destroy()\n if (this.eventIds) this.editor.off_(this.eventIds)\n this.editor = this.view = this.eventIds = null\n }\n }\n\n}","import { IEditorScaleEvent, IEditorRotateEvent, IEditTool, IEditorSkewEvent, IEditorMoveEvent } from '@leafer-in/interface'\n\nimport { registerEditTool, EditToolCreator } from './EditToolCreator'\nimport { InnerEditor } from './InnerEditor'\n\n\n@registerEditTool()\nexport class EditTool extends InnerEditor implements IEditTool {\n\n static registerEditTool() {\n EditToolCreator.register(this)\n }\n\n\n public get tag() { return 'EditTool' }\n\n\n // 操作\n\n public onMove(e: IEditorMoveEvent): void {\n const { moveX, moveY, editor } = e\n const { app, list } = editor\n app.lockLayout()\n list.forEach(target => { target.moveWorld(moveX, moveY) })\n app.unlockLayout()\n }\n\n public onScale(e: IEditorScaleEvent): void {\n const { scaleX, scaleY, transform, worldOrigin, editor } = e\n const { app, list } = editor\n app.lockLayout()\n list.forEach(target => {\n const resize = editor.getEditSize(target) !== 'scale'\n if (transform) target.transformWorld(transform, resize)\n else target.scaleOfWorld(worldOrigin, scaleX, scaleY, resize)\n })\n app.unlockLayout()\n }\n\n public onRotate(e: IEditorRotateEvent): void {\n const { rotation, transform, worldOrigin, editor } = e\n const { app, list } = editor\n app.lockLayout()\n list.forEach(target => {\n const resize = editor.getEditSize(target) !== 'scale'\n if (transform) target.transformWorld(transform, resize)\n else target.rotateOfWorld(worldOrigin, rotation)\n })\n app.unlockLayout()\n }\n\n public onSkew(e: IEditorSkewEvent): void {\n const { skewX, skewY, transform, worldOrigin, editor } = e\n const { app, list } = editor\n app.lockLayout()\n list.forEach(target => {\n const resize = editor.getEditSize(target) !== 'scale'\n if (transform) target.transformWorld(transform, resize)\n else target.skewOfWorld(worldOrigin, skewX, skewY, resize)\n })\n app.unlockLayout()\n }\n\n // 状态\n\n public load(): void {\n this.editBox.view.visible = true\n this.onLoad()\n }\n\n public update(): void {\n const { editor, editBox } = this\n const { x, y, scaleX, scaleY, rotation, skewX, skewY, width, height } = editor.element.getLayoutBounds('box', editor, true)\n editBox.set({ x, y, scaleX, scaleY, rotation, skewX, skewY })\n editBox.update({ x: 0, y: 0, width, height })\n this.onUpdate()\n }\n\n public unload(): void {\n this.editBox.view.visible = false\n this.onUnload()\n }\n\n}","import { IEditorScaleEvent, ILine, IEditorSkewEvent, IPointData, IAround, IPathCommandData, IFromToData, IUI, IDragEvent } from '@leafer-in/interface'\n\nimport { getPointData, Direction9, PointHelper } from '@leafer-ui/draw'\n\nimport { EditTool } from './EditTool'\nimport { registerEditTool } from './EditToolCreator'\n\n\nconst { left, right } = Direction9\nconst { move, copy, toNumberPoints } = PointHelper\n\n@registerEditTool()\nexport class LineEditTool extends EditTool {\n\n public get tag() { return 'LineEditTool' }\n\n public scaleOfEvent = true\n\n onScaleWithDrag(e: IEditorScaleEvent): void {\n const { drag, direction, lockRatio, around } = e\n const line = e.target as ILine\n const isDragFrom = direction === left\n\n if (line.pathInputed) {\n\n const { path } = line.__\n const { from, to } = this.getFromToByPath(path)\n\n this.dragPoint(from, to, isDragFrom, around, this.getInnerMove(line, drag, lockRatio))\n\n path[1] = from.x, path[2] = from.y\n path[4] = to.x, path[5] = to.y\n line.path = path\n\n } else if (line.points) {\n\n const { points } = line\n const { from, to } = this.getFromToByPoints(points)\n\n this.dragPoint(from, to, isDragFrom, around, this.getInnerMove(line, drag, lockRatio))\n\n points[0] = from.x, points[1] = from.y\n points[2] = to.x, points[3] = to.y\n line.points = points\n\n } else {\n\n const from = getPointData()\n const { toPoint } = line\n line.rotation = 0\n\n this.dragPoint(from, toPoint, isDragFrom, around, this.getInnerMove(line, drag, lockRatio))\n\n line.getLocalPointByInner(from, null, null, true)\n line.getLocalPointByInner(toPoint, null, null, true)\n line.x = from.x\n line.y = from.y\n\n line.getInnerPointByLocal(toPoint, null, null, true)\n line.toPoint = toPoint\n\n }\n\n }\n\n getInnerMove(ui: IUI, event: IDragEvent, lockRatio: boolean | 'corner'): IPointData {\n const movePoint = event.getInnerMove(ui)\n if (lockRatio) Math.abs(movePoint.x) > Math.abs(movePoint.y) ? movePoint.y = 0 : movePoint.x = 0\n return movePoint\n }\n\n getFromToByPath(path: IPathCommandData): IFromToData {\n return {\n from: { x: path[1], y: path[2] },\n to: { x: path[4], y: path[5] }\n }\n }\n\n getFromToByPoints(originPoints: number[] | IPointData[]): IFromToData {\n const points = toNumberPoints(originPoints)\n return {\n from: { x: points[0], y: points[1] },\n to: { x: points[2], y: points[3] }\n }\n\n }\n\n dragPoint(fromPoint: IPointData, toPoint: IPointData, isDragFrom: boolean, around: IAround, movePoint: IPointData): void {\n const { x, y } = movePoint\n if (isDragFrom) {\n move(fromPoint, x, y)\n if (around) move(toPoint, -x, -y)\n } else {\n if (around) move(fromPoint, -x, -y)\n move(toPoint, x, y)\n }\n }\n\n onSkew(_e: IEditorSkewEvent): void {\n\n }\n\n onUpdate() {\n const { editBox } = this, { rotatePoints, resizeLines, resizePoints, rect } = editBox\n const line = this.editor.element as ILine\n\n let fromTo: IFromToData, leftOrRight: boolean\n if (line.pathInputed) fromTo = this.getFromToByPath(line.__.path)\n else if (line.points) fromTo = this.getFromToByPoints(line.__.points)\n\n if (fromTo) {\n const { from, to } = fromTo\n line.innerToWorld(from, from, false, editBox)\n line.innerToWorld(to, to, false, editBox)\n rect.pen.clearPath().moveTo(from.x, from.y).lineTo(to.x, to.y)\n copy(resizePoints[7] as IPointData, from)\n copy(rotatePoints[7] as IPointData, from)\n copy(resizePoints[3] as IPointData, to)\n copy(rotatePoints[3] as IPointData, to)\n }\n\n for (let i = 0; i < 8; i++) {\n if (i < 4) resizeLines[i].visible = false\n leftOrRight = i === left || i === right\n resizePoints[i].visible = leftOrRight\n rotatePoints[i].visible = fromTo ? false : leftOrRight\n }\n }\n\n}","export { Editor } from './Editor'\n\nexport { EditBox } from './display/EditBox'\nexport { EditPoint } from './display/EditPoint'\nexport { EditSelect } from './display/EditSelect'\nexport { SelectArea } from './display/SelectArea'\nexport { Stroker } from './display/Stroker'\n\n\nexport { EditorEvent } from './event/EditorEvent'\nexport { EditorMoveEvent } from './event/EditorMoveEvent'\nexport { EditorScaleEvent } from './event/EditorScaleEvent'\nexport { EditorRotateEvent } from './event/EditorRotateEvent'\nexport { EditorSkewEvent } from './event/EditorSkewEvent'\nexport { EditorGroupEvent } from './event/EditorGroupEvent'\nexport { InnerEditorEvent } from './event/InnerEditorEvent'\n\nexport { EditToolCreator, registerEditTool, registerInnerEditor } from './tool/EditToolCreator'\nexport { InnerEditor } from './tool/InnerEditor'\nexport { EditTool } from './tool/EditTool'\nexport { LineEditTool } from './tool/LineEditTool'\n\nexport { EditorHelper } from './helper/EditorHelper'\nexport { EditDataHelper } from './helper/EditDataHelper'\nexport { EditSelectHelper } from './helper/EditSelectHelper'\n\n\nimport { IEditor, IEditorConfig, IEditToolFunction, IEditorConfigFunction } from '@leafer-in/interface'\nimport { Creator, UI, Group, Text, Box, dataType, Plugin } from '@leafer-ui/draw'\n\nimport '@leafer-in/resize'\n\nimport { Editor } from './Editor'\n\n\nPlugin.add('editor', 'resize')\n\n\nCreator.editor = function (options?: IEditorConfig): IEditor { return new Editor(options) }\n\nBox.addAttr('textBox', false, dataType)\n\nUI.addAttr('editConfig', undefined, dataType)\nUI.addAttr('editOuter', (ui: UI) => ui.__.__isLinePath ? 'LineEditTool' : 'EditTool', dataType)\n\nUI.addAttr('editInner', 'PathEditor', dataType)\nGroup.addAttr('editInner', '', dataType) // 必须设为空\nText.addAttr('editInner', 'TextEditor', dataType)\n\nUI.setEditConfig = function (config: IEditorConfig | IEditorConfigFunction): void { this.changeAttr('editConfig', config) }\nUI.setEditOuter = function (toolName: string | IEditToolFunction): void { this.changeAttr('editOuter', toolName) }\nUI.setEditInner = function (editorName: string | IEditToolFunction): void { this.changeAttr('editInner', editorName) }"],"names":["Event","defineKey","isNull","copy","MatrixHelper","BoundsHelper","LeafBoundsHelper","getMatrixData","bounds","getBoundsData","UI","Paint","onTarget","Group","Rect","Bounds","LeafList","PointerEvent","DragEvent","MoveEvent","ZoomEvent","right","left","Direction9","AroundHelper","MathHelper","PointHelper","Box","ResizeEvent","Text","Matrix","Debug","LeafHelper","PropertyEvent","DataHelper","Plugin","RotateEvent","RenderEvent","KeyEvent","EditTool","LineEditTool","getPointData","Creator","dataType"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAsCA;AACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC1D,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AACjI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACnI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACtJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC;AA4QD;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;;ACrUA,SAAS,MAAM,CAAC,KAAkB,EAAA;IAC9B,OAAO,KAAK,IAAI,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;AAClE;AAEM,MAAO,WAAY,SAAQA,UAAK,CAAA;IAclC,IAAI,IAAI,GAAK,EAAA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtC,IAAI,OAAO,GAAK,EAAA,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAK5C,WAAY,CAAA,IAAY,EAAE,IAAmB,EAAA;QACzC,KAAK,CAAC,IAAI,CAAC;AACX,QAAA,IAAI,IAAI;AAAE,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;;;AApBhC,WAAa,CAAA,aAAA,GAAG,sBAAsB;AACtC,WAAM,CAAA,MAAA,GAAG,eAAe;AAExB,WAAY,CAAA,YAAA,GAAG,qBAAqB;AACpC,WAAK,CAAA,KAAA,GAAG,cAAc;;ACX3B,MAAO,eAAgB,SAAQ,WAAW,CAAA;IAQ5C,WAAY,CAAA,IAAY,EAAE,IAAuB,EAAA;AAC7C,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;;;AAPd,eAAW,CAAA,WAAA,GAAG,oBAAoB;AAClC,eAAI,CAAA,IAAA,GAAG,aAAa;;ACAzB,MAAO,gBAAiB,SAAQ,WAAW,CAAA;IAgB7C,WAAY,CAAA,IAAY,EAAE,IAAwB,EAAA;AAC9C,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;;;AAfd,gBAAY,CAAA,YAAA,GAAG,qBAAqB;AACpC,gBAAK,CAAA,KAAA,GAAG,cAAc;;ACN3B,MAAO,iBAAkB,SAAQ,WAAW,CAAA;IAQ9C,WAAY,CAAA,IAAY,EAAE,IAAyB,EAAA;AAC/C,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;;;AAPd,iBAAa,CAAA,aAAA,GAAG,sBAAsB;AACtC,iBAAM,CAAA,MAAA,GAAG,eAAe;;ACH7B,MAAO,eAAgB,SAAQ,WAAW,CAAA;IAS5C,WAAY,CAAA,IAAY,EAAE,IAAuB,EAAA;AAC7C,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;;;AARd,eAAW,CAAA,WAAA,GAAG,oBAAoB;AAClC,eAAI,CAAA,IAAA,GAAG,aAAa;;ACDzB,SAAU,UAAU,CAAC,EAAa,EAAA;AACpC,IAAA,OAAO,CAAC,MAAa,EAAE,GAAW,KAAI;AAClC,QAAA,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG;AAC5B,QAAAC,cAAS,CAAC,MAAM,EAAE,GAAG,EAAE;YACnB,GAAG,GAAA,EAAK,OAAQ,IAAgB,CAAC,UAAU,CAAC,CAAA,EAAE;AAC9C,YAAA,GAAG,CAAC,KAAkB,EAAA;AAClB,gBAAA,MAAM,GAAG,GAAI,IAAgB,CAAC,UAAU,CAAC;AACzC,gBAAA,IAAI,GAAG,KAAK,KAAK,EAAE;AAEf,oBAAA,IAAK,IAAgB,CAAC,MAAM,EAAE;AAE1B,wBAAA,MAAM,QAAQ,GAAG,GAAG,KAAK,QAAQ;wBACjC,IAAI,QAAQ,EAAE;AACV,4BAAA,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;AAAE,gCAAA,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAErF,4BAAA,MAAM,EAAE,YAAY,EAAE,GAAI,IAAgB,CAAC,MAAM;4BACjD,IAAI,YAAY,EAAE;gCACd,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;gCAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;oCAAE,KAAK,GAAG,KAAK;qCACvC,IAAI,KAAK,KAAK,KAAK;oCAAE;;;AAIlC,wBAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,YAAY;AAC5E,wBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;4BAAE,IAAI,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAe,EAAE,KAAK,EAAE,KAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;;AAGlI,oBAAA,IAAgB,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;;;AAG5C,SAAA,CAAC;AACzB,KAAC;AACL;SAGgB,eAAe,GAAA;AAC3B,IAAA,OAAO,CAAC,MAAe,EAAE,GAAW,KAAI;AACpC,QAAAA,cAAS,CAAC,MAAM,EAAE,GAAG,EAAE;YACnB,GAAG,GAAA;AACC,gBAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,WAAW,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CAAE;AACxE,gBAAA,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU;oBAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC;gBACjF,IAAI,SAAS,EAAE;oBACX,IAAI,SAAS,CAAC,UAAU;wBAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC;AAC1E,oBAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,WAAW;AAAE,wBAAA,WAAW,CAAC,SAAS,GAAG,IAAI;AACtE,oBAAA,IAAI,SAAS,CAAC,SAAS,KAAK,eAAe,EAAE;wBACzC,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC;AACrD,wBAAAC,WAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;;;AAGvE,gBAAA,OAAQ,IAAgB,CAAC,YAAY,GAAG,WAAW;;AAErC,SAAA,CAAC;AAC3B,KAAC;AACL;;ACpDA,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI;AACpB,MAAM,QAAEC,MAAI,EAAE,KAAK,EAAE,GAAGC,iBAAY;AACpC,MAAM,EAAE,aAAa,EAAE,GAAGC,iBAAY;AACtC,MAAM,EAAE,WAAW,EAAE,GAAGC,qBAAgB;AACxC,MAAM,MAAM,GAAGC,kBAAa,EAA+B;AAC3D,MAAMC,QAAM,GAAGC,kBAAa,EAAE;AAExB,MAAO,OAAQ,SAAQC,OAAE,CAAA;AAO3B,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QAHJ,IAAI,CAAA,IAAA,GAAU,EAAE;AAInB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ;;IAGxB,SAAS,CAAC,MAAmB,EAAE,KAAqB,EAAA;AACvD,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACf,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,IAAI,CAAC,MAAM,EAAE;;IAGV,MAAM,GAAA;AACT,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,aAAa,CAACF,QAAM,EAAE,IAAI,EAAE,WAAW,CAAC;AACxC,YAAA,IAAI,CAAC,GAAG,CAACA,QAAM,CAAC;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC;;IAGpB,MAAM,CAAC,MAAqB,EAAE,OAAuB,EAAA;AACxD,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI;AAErB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AAEb,YAAA,IAAI,IAAS;YACb,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO;AAEhF,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,gBAAA,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AACd,gBAAA,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,IAAI;gBAElD,IAAI,iBAAiB,CAAC,KAAK,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AAEnH,oBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;AAEhF,oBAAAL,MAAI,CAAC,MAAM,EAAE,cAAc,CAAC;AAC5B,oBAAA,MAAM,CAAC,IAAI,GAAG,WAAW,GAAG,CAAC;AAE7B,oBAAA,IAAI,OAAO,KAAK,OAAO,EAAE;wBAErB,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;wBACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;wBACvC,MAAM,CAAC,SAAS,EAAE;AAClB,wBAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAE9B,wBAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS;AACvD,wBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;;yBAErE;wBAEH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;wBACvC,MAAM,CAAC,SAAS,EAAE;AAElB,wBAAA,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU;AAAE,4BAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;4BAC1C,IAAI,CAAC,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;wBAE3F,IAAI,CAAC,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;;AAI/D,oBAAA,IAAI,MAAM;AAAE,wBAAA,OAAO,MAAM,KAAK,QAAQ,GAAGQ,UAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAGA,UAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;AACjH,oBAAA,IAAI,IAAI;AAAE,wBAAA,OAAO,IAAI,KAAK,QAAQ,GAAGA,UAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAGA,UAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;;;AAI7G,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW;;;IAI/B,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,KAAK,CAAC,OAAO,EAAE;;AAGtB;AAjFU,UAAA,CAAA;IADN,UAAU,CAACC,UAAQ;AACM,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAmF9B,SAASA,UAAQ,CAAC,OAAgB,EAAA;AAC9B,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM;IAC5B,OAAO,CAAC,IAAI,GAAG,KAAK,IAAI,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;AAC1E;;AClGM,MAAO,UAAW,SAAQC,UAAK,CAAA;AAKjC,IAAA,WAAA,CAAY,IAAsB,EAAA;QAC9B,KAAK,CAAC,IAAI,CAAC;QAJL,IAAU,CAAA,UAAA,GAAU,IAAIC,SAAI,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AACvD,QAAA,IAAA,CAAA,QAAQ,GAAU,IAAIA,SAAI,EAAE;AAIlC,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;;IAGzC,QAAQ,CAAC,KAAqB,EAAE,SAA0B,EAAA;QAC7D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK;AAC9C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,iBAAG,MAAM,EAAE,WAAW,EAAA,GAAM,SAAS,IAAI,EAAE,GAAI;QACpE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;;AAGnF,IAAA,SAAS,CAAC,MAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;;AAGhC;;AC3BY,MAAA,gBAAgB,GAAG;AAE5B,IAAA,OAAO,CAAC,IAAe,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAQ;KACxD;IAED,YAAY,CAAC,MAAW,EAAE,MAAe,EAAA;QACrC,MAAM,IAAI,GAAU,EAAE;QACtB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;AAChC,QAAA,OAAO,IAAI;;;AAMnB,SAAS,QAAQ,CAAC,QAAe,EAAE,IAAW,EAAE,MAAe,EAAA;IAC3D,IAAI,KAAU,EAAE,IAAa;AAC7B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QACjD,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE;QACpC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAE5E,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrC,IAAI,IAAI,CAAC,OAAO;AAAE,wBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;oBAClC;;AACG,qBAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACtB,oBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;AAC1D,wBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;wBAChB;;;AAED,qBAAA,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO;AAAE,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;YAGpG,IAAI,KAAK,CAAC,QAAQ;gBAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC;;;AAItE;;AC5BA,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,gBAAgB;AAE5C,MAAO,UAAW,SAAQD,UAAK,CAAA;IAIjC,IAAW,QAAQ,GAAc,EAAA,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;AACzD,IAAA,IAAW,OAAO,GAAA,EAAc,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAA;AACjJ,IAAA,IAAW,UAAU,GAAc,EAAA,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAA;AAenF,IAAA,WAAA,CAAY,MAAe,EAAA;AACvB,QAAA,KAAK,EAAE;AAdJ,QAAA,IAAA,CAAA,YAAY,GAAa,IAAI,OAAO,EAAE;AACtC,QAAA,IAAA,CAAA,aAAa,GAAa,IAAI,OAAO,EAAE;AAEvC,QAAA,IAAA,CAAA,MAAM,GAAY,IAAIE,WAAM,EAAE;AAC9B,QAAA,IAAA,CAAA,UAAU,GAAgB,IAAI,UAAU,EAAE;QAOvC,IAAU,CAAA,UAAA,GAAuB,EAAE;AAIzC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC;QACpE,IAAI,CAAC,cAAc,EAAE;;IAKf,OAAO,GAAA;AACb,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpD,YAAA,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,WAAW;AACrE,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,EAAI,MAAA,CAAA,MAAA,CAAA,EAAA,MAAM,EAAE,WAAW,EAAK,GAAC,UAAU,IAAI,EAAE,GAAI;;aAChH;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI;;;IAI7B,QAAQ,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM;YACzC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,WAAW;AAC1D,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAI,MAAA,CAAA,MAAA,CAAA,EAAA,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,EAAA,GAAM,aAAa,IAAI,EAAE,EAAC,CAAG;AACnH,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI;;;IAIhC,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;;AAKrB,IAAA,aAAa,CAAC,CAAe,EAAA;AACnC,QAAA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI;QAC5B,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE;YAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3B,YAAA,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;;AACzD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,MAAM,CAAC,WAAW,GAAG,IAAI;;;AAIvB,IAAA,YAAY,CAAC,CAAe,EAAA;QAClC,IAAI,CAAC,CAAC,UAAU;YAAE;QAElB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;AAC1C,QAAA,IAAI,MAAM,KAAK,OAAO,EAAE;YACpB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;AACxB,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;;iBAC3C;AACH,gBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;;;;AAKxB,IAAA,KAAK,CAAC,CAAe,EAAA;QAC3B,IAAI,CAAC,CAAC,UAAU;YAAE;AAElB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AACvB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW;QAErC,IAAI,MAAM,KAAK,KAAK;AAAE,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;aACvC,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,EAAE;AAE3C,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;;AACnC,aAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACxB,YAAA,MAAM,CAAC,MAAM,GAAG,IAAI;;;AAKlB,IAAA,cAAc,CAAC,CAAe,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAE1B,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACrB,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAE3B,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAC1B,oBAAA,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAAE,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;AAC/C,wBAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;;qBACtB;AACH,oBAAA,MAAM,CAAC,MAAM,GAAG,IAAI;;;iBAGrB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;gBAE7B,IAAI,CAAC,CAAC,CAAC,QAAQ;AAAE,oBAAA,MAAM,CAAC,MAAM,GAAG,IAAI;;;;AAQvC,IAAA,WAAW,CAAC,CAAY,EAAA;QAC9B,IAAI,CAAC,CAAC,UAAU;YAAE;QAClB,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,EAAE;AAEtC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACnB,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;YACvB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,WAAW;AAC3C,YAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;YAEtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAErB,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;AAC/D,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAE5C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;;;AAIvC,IAAA,MAAM,CAAC,CAAY,EAAA;QACzB,IAAI,CAAC,CAAC,UAAU;YAAE;AAClB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAElD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;YACvB,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;YAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AAC/C,YAAA,MAAM,IAAI,GAAG,IAAIC,aAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAE/D,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;YAE5B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAE3C,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBAEb,MAAM,UAAU,GAAY,EAAE;AAE9B,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAM,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAE,CAAC;AAC/E,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAM,EAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAE,CAAC;AAE/E,gBAAA,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7G,oBAAA,MAAM,CAAC,MAAM,GAAG,UAAmB;;;iBAGpC;gBAEH,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAa;;;;AAM/C,IAAA,SAAS,CAAC,CAAY,EAAA;QAC5B,IAAI,CAAC,CAAC,UAAU;YAAE;QAElB,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC;;AAGhE,IAAA,UAAU,CAAC,CAAY,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;;;AAMhB,IAAA,KAAK,CAAC,MAAa,EAAA;QACzB,OAAO,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;;AAGrC,IAAA,SAAS,CAAC,CAAY,EAAA;QAC5B,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;AAC7D,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,cAAc,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE;AACtE,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;aACtF;AACH,YAAA,OAAO,KAAK;;;AAIV,IAAA,WAAW,CAAC,CAAgB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,MAAM;;AAGjD,IAAA,WAAW,CAAC,CAAe,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAIA,aAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACnE,QAAA,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAQ;;AAGpE,IAAA,MAAM,CAAC,CAAe,EAAA;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;;AAGpE,IAAA,gBAAgB,CAAC,CAAgB,EAAA;QACpC,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;QACpE,OAAO,cAAc,KAAK,CAAC,CAAC,QAAQ,IAAI,gBAAgB,CAAC;;IAGnD,cAAc,GAAA;AACpB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AACvB,QAAA,MAAM,CAAC,UAAU,CAAC,MAAK;AAEnB,YAAA,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM;AACtB,YAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM;YAE3B,IAAI,CAAC,UAAU,GAAG;AACd,gBAAA,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;AACjD,gBAAA,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;AAEnD,gBAAA,GAAG,CAAC,GAAG,CAACC,iBAAY,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;AACpD,gBAAA,GAAG,CAAC,GAAG,CAACA,iBAAY,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;AAC1D,gBAAA,GAAG,CAAC,GAAG,CAACA,iBAAY,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;AAE3C,gBAAA,GAAG,CAAC,GAAG,CAACC,cAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC;AACtD,gBAAA,GAAG,CAAC,GAAG,CAACA,cAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC1C,gBAAA,GAAG,CAAC,GAAG,CAACA,cAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AAE5C,gBAAA,GAAG,CAAC,GAAG,CAACC,cAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;gBAC9C,GAAG,CAAC,GAAG,CAAC,CAACC,cAAS,CAAC,IAAI,EAAED,cAAS,CAAC,IAAI,CAAC,EAAE,MAAK,EAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAA,EAAE,CAAC;aACtF;AAEL,SAAC,CAAC;;IAGI,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;;;IAI3B,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1D,IAAI,CAAC,oBAAoB,EAAE;QAC3B,KAAK,CAAC,OAAO,EAAE;;AAEtB;;AC3QD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,SAAEE,OAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,QAAEC,MAAI,EAAE,GAAGC,eAAU;AAC3F,MAAM,EAAE,OAAO,EAAE,GAAGC,iBAAY;AAChC,MAAM,EAAE,MAAM,EAAE,GAAGC,eAAU;AAEhB,MAAA,cAAc,GAAG;AAE1B,IAAA,YAAY,CAAC,OAAY,EAAE,WAA8B,EAAE,SAAqB,EAAE,SAAqB,EAAE,SAA6B,EAAE,MAAe,EAAE,QAAiB,EAAE,SAAkB,EAAA;AAC1L,QAAA,IAAI,KAAa,EAAE,MAAM,GAAG,EAAgB,EAAE,MAAM,GAAW,CAAC,EAAE,MAAM,GAAW,CAAC;AAEpF,QAAA,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO;AAClF,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW;QAErC,IAAI,MAAM,EAAE;AACR,YAAA,SAAS,CAAC,CAAC,IAAI,CAAC;AAChB,YAAA,SAAS,CAAC,CAAC,IAAI,CAAC;;QAKpB,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;QAC/D,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;AAC/D,QAAA,MAAM,KAAK,GAAG,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC9C,QAAA,MAAM,KAAK,GAAG,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAE9C,QAAA,MAAM,aAAa,GAAG,SAAS,GAAG,mBAAmB,GAAG,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,KAAK;AACvF,QAAA,MAAM,aAAa,GAAG,SAAS,GAAG,mBAAmB,GAAG,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM;AAEzF,QAAA,SAAS,CAAC,CAAC,IAAI,SAAS,GAAG,mBAAmB,GAAG,KAAK;AACtD,QAAA,SAAS,CAAC,CAAC,IAAI,SAAS,GAAG,mBAAmB,GAAG,KAAK;AAEtD,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM;QACjD,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK;QAChD,MAAM,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM;AACnD,QAAA,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK;QAEhD,QAAQ,SAAS;AACb,YAAA,KAAK,GAAG;gBACJ,MAAM,GAAG,QAAQ;gBACjB,KAAK,GAAG,QAAQ;gBAChB;AACJ,YAAA,KAAKJ,OAAK;gBACN,MAAM,GAAG,UAAU;gBACnB,KAAK,GAAG,MAAM;gBACd;AACJ,YAAA,KAAK,MAAM;gBACP,MAAM,GAAG,WAAW;gBACpB,KAAK,GAAG,KAAK;gBACb;AACJ,YAAA,KAAKC,MAAI;gBACL,MAAM,GAAG,SAAS;gBAClB,KAAK,GAAG,OAAO;gBACf;AACJ,YAAA,KAAK,OAAO;gBACR,MAAM,GAAG,QAAQ;gBACjB,MAAM,GAAG,SAAS;gBAClB,KAAK,GAAG,cAAc;gBACtB;AACJ,YAAA,KAAK,QAAQ;gBACT,MAAM,GAAG,QAAQ;gBACjB,MAAM,GAAG,UAAU;gBACnB,KAAK,GAAG,aAAa;gBACrB;AACJ,YAAA,KAAK,WAAW;gBACZ,MAAM,GAAG,WAAW;gBACpB,MAAM,GAAG,UAAU;gBACnB,KAAK,GAAG,UAAU;gBAClB;AACJ,YAAA,KAAK,UAAU;gBACX,MAAM,GAAG,WAAW;gBACpB,MAAM,GAAG,SAAS;gBAClB,KAAK,GAAG,WAAW;;QAG3B,IAAI,SAAS,EAAE;YACX,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC;YAC1D,IAAI,CAAC,UAAU,EAAE;AACb,gBAAA,IAAI,KAAa;gBACjB,QAAQ,SAAS;AACb,oBAAA,KAAK,GAAG;AACR,oBAAA,KAAK,MAAM;wBACP,KAAK,GAAG,MAAM;wBACd;AACJ,oBAAA,KAAKA,MAAI;AACT,oBAAA,KAAKD,OAAK;wBACN,KAAK,GAAG,MAAM;wBACd;AACJ,oBAAA;AACI,wBAAA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;;AAGpD,gBAAA,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK;AACpC,gBAAA,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK;;;QAI5C,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,KAAK,CAAC;AAExD,QAAA,IAAI,SAAS;YAAE,MAAM,IAAI,aAAa;AACtC,QAAA,IAAI,SAAS;YAAE,MAAM,IAAI,aAAa;QAEtC,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO;YAClC,IAAI,MAAM,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM;YACpE,IAAI,MAAM,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;;QAKzE,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;QAEjD,IAAI,UAAU,EAAE;AACZ,YAAA,MAAM,WAAW,GAAG,UAAU,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,UAAU;YACnF,MAAM,WAAW,GAAG,IAAIN,WAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACxD,YAAA,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;YAEzE,IAAI,CAACV,iBAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;gBAClD,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;AACxD,gBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;AAC1G,gBAAA,IAAI,SAAS;oBAAE,MAAM,IAAI,SAAS;AAClC,gBAAA,IAAI,SAAS;oBAAE,MAAM,IAAI,SAAS;;;AAI1C,QAAA,IAAI,SAAS,IAAI,UAAU,EAAE;YACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM;YACjD,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,EAAE,UAAU,CAAC,GAAG,QAAQ;;AAG7D,QAAA,IAAI,SAAS,IAAI,WAAW,EAAE;YAC1B,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;YACnD,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS;;AAIhE,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,cAAc,CAAC,KAAK;AACnH,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM;AAErH,QAAA,IAAI,SAAS,IAAI,MAAM,KAAK,MAAM;YAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;AAE9E,QAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE;KAClE;IAED,aAAa,CAAC,MAAmB,EAAE,SAAqB,EAAE,OAAmB,EAAE,IAAgB,EAAE,MAAe,EAAA;AAC5G,QAAA,IAAI,KAAa,EAAE,MAAM,GAAG,EAAgB;QAE5C,QAAQ,SAAS;AACb,YAAA,KAAK,OAAO;gBACR,KAAK,GAAG,cAAc;gBACtB;AACJ,YAAA,KAAK,QAAQ;gBACT,KAAK,GAAG,aAAa;gBACrB;AACJ,YAAA,KAAK,WAAW;gBACZ,KAAK,GAAG,UAAU;gBAClB;AACJ,YAAA,KAAK,UAAU;gBACX,KAAK,GAAG,WAAW;gBACnB;AACJ,YAAA;gBACI,KAAK,GAAG,QAAQ;;QAGxB,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAE9C,QAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAEqB,gBAAW,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;KAC9E;AAED,IAAA,WAAW,CAAC,MAAmB,EAAE,SAAqB,EAAE,IAAgB,EAAE,MAAe,EAAA;AACrF,QAAA,IAAI,KAAa,EAAE,MAAM,GAAG,EAAgB,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;AAClE,QAAA,IAAI,IAAgB;QAEpB,QAAQ,SAAS;AACb,YAAA,KAAK,GAAG;AACR,YAAA,KAAK,OAAO;gBACR,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;gBACvB,KAAK,GAAG,QAAQ;gBAChB,KAAK,GAAG,CAAC;gBACT;AACJ,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,WAAW;gBACZ,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;gBACvB,KAAK,GAAG,KAAK;gBACb,KAAK,GAAG,CAAC;gBACT;AACJ,YAAA,KAAKJ,MAAI;AACT,YAAA,KAAK,UAAU;gBACX,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;gBACvB,KAAK,GAAG,OAAO;gBACf,KAAK,GAAG,CAAC;gBACT;AACJ,YAAA,KAAKD,OAAK;AACV,YAAA,KAAK,QAAQ;gBACT,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;gBACvB,KAAK,GAAG,MAAM;gBACd,KAAK,GAAG,CAAC;;AAGjB,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;QAEhC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK;QACvB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM;QAExB,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;QAE9C,MAAM,QAAQ,GAAGK,gBAAW,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9H,QAAA,KAAK,GAAG,KAAK,GAAG,CAAC,QAAQ,GAAG,KAAK,GAAG,QAAQ;AAE5C,QAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;KAClC;IAGD,SAAS,CAAC,MAAe,EAAE,MAAe,EAAA;AACtC,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,MAAM;KACjD;AAED,IAAA,kBAAkB,CAAC,SAAiB,EAAE,QAAgB,EAAE,cAAc,GAAG,CAAC,EAAA;AACtE,QAAA,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,GAAG,GAAG,cAAc,CAAC,CAAC,IAAI,cAAc;QACxF,IAAI,SAAS,GAAG,CAAC;YAAE,SAAS,IAAI,cAAc;AAC9C,QAAA,OAAO,SAAS;KACnB;AAED,IAAA,gBAAgB,CAAC,SAAqB,EAAE,OAAgB,EAAE,OAAgB,EAAA;QACtE,IAAI,OAAO,EAAE;YACT,QAAQ,SAAS;AACb,gBAAA,KAAKJ,MAAI;oBAAE,SAAS,GAAGD,OAAK;oBAAE;AAC9B,gBAAA,KAAK,OAAO;oBAAE,SAAS,GAAG,QAAQ;oBAAE;AACpC,gBAAA,KAAK,UAAU;oBAAE,SAAS,GAAG,WAAW;oBAAE;AAC1C,gBAAA,KAAKA,OAAK;oBAAE,SAAS,GAAGC,MAAI;oBAAE;AAC9B,gBAAA,KAAK,QAAQ;oBAAE,SAAS,GAAG,OAAO;oBAAE;AACpC,gBAAA,KAAK,WAAW;oBAAE,SAAS,GAAG,UAAU;oBAAE;;;QAIlD,IAAI,OAAO,EAAE;YACT,QAAQ,SAAS;AACb,gBAAA,KAAK,GAAG;oBAAE,SAAS,GAAG,MAAM;oBAAE;AAC9B,gBAAA,KAAK,OAAO;oBAAE,SAAS,GAAG,UAAU;oBAAE;AACtC,gBAAA,KAAK,QAAQ;oBAAE,SAAS,GAAG,WAAW;oBAAE;AACxC,gBAAA,KAAK,MAAM;oBAAE,SAAS,GAAG,GAAG;oBAAE;AAC9B,gBAAA,KAAK,UAAU;oBAAE,SAAS,GAAG,OAAO;oBAAE;AACtC,gBAAA,KAAK,WAAW;oBAAE,SAAS,GAAG,QAAQ;oBAAE;;;AAIhD,QAAA,OAAO,SAAS;;;;AClPxB,MAAM,YAAY,GAAY,EAAE;AAEhB,SAAA,YAAY,CAAC,MAAe,EAAE,CAAW,EAAA;IACrD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU;IACtD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE;AACnD,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE;AAC7B,IAAA,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM;AAAE,YAAA,KAAK,CAAC,MAAM,GAAG,SAAS;QAC3C;;AAGJ,IAAA,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO;AAC1B,IAAA,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW;AACvG,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO;IAE7D,IAAI,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7C,IAAA,IAAI,UAAU,IAAI,UAAU,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC;QAAE,UAAU,GAAG,KAAK;AAC3F,IAAA,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,SAAS,KAAK,MAAM,CAAC;IAElG,MAAM,MAAM,GAAG,QAAQ,GAAG,UAAU,IAAI,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AACjF,IAAA,QAAQ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;AAC3F,IAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAACG,eAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IAExE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM;AAC5B,IAAA,MAAM,GAAG,GAAG,GAAG,GAAG,QAAQ;AAE1B,IAAA,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;AACnB,QAAA,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC;;SAC7B;QACH,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;;AAElF;AAEM,SAAU,gBAAgB,CAAC,MAAe,EAAA;IAC5C,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW;AACnD,IAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS;AAClE;AAGA,SAAS,SAAS,CAAC,GAAW,EAAE,QAAgB,EAAA;AAC5C,IAAA,OAAO,sBAAsB,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,GAAG;AAC9G;;AC5CM,MAAO,SAAU,SAAQE,QAAG,CAAA;AAGjC;;ACID,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,GAAkB,SAAS;AAEzF,MAAO,OAAQ,SAAQd,UAAK,CAAA;AAsB9B,IAAA,IAAW,OAAO,GAAA,EAAc,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAA;IACrE,IAAW,QAAQ,GAAc,EAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IACvD,IAAW,QAAQ,GAAc,EAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;AACvD,IAAA,IAAW,UAAU,GAAA,EAAc,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;AAIvE,IAAA,WAAA,CAAY,MAAe,EAAA;AACvB,QAAA,KAAK,EAAE;AAxBJ,QAAA,IAAA,CAAA,IAAI,GAAW,IAAIA,UAAK,EAAE;QAE1B,IAAI,CAAA,IAAA,GAAS,IAAIc,QAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAC9G,IAAM,CAAA,MAAA,GAAe,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AAClI,QAAA,IAAA,CAAA,OAAO,GAAW,IAAId,UAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAE7E,IAAY,CAAA,YAAA,GAAiB,EAAE;QAC/B,IAAY,CAAA,YAAA,GAAiB,EAAE;QAC/B,IAAW,CAAA,WAAA,GAAiB,EAAE;QAK9B,IAAa,CAAA,aAAA,GAAG,EAA0B;QAQvC,IAAU,CAAA,UAAA,GAAuB,EAAE;AAIzC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,MAAM,EAAE;QACb,IAAI,CAAC,cAAc,EAAE;;IAGlB,MAAM,GAAA;AACT,QAAA,IAAI,WAAuB,EAAE,UAAsB,EAAE,WAAuB;AAC5E,QAAA,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AACrF,QAAA,MAAM,OAAO,GAAa,CAAC,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC;AAEpH,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACxB,YAAA,WAAW,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChH,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEhD,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE;gBACP,UAAU,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5G,gBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;;AAGnD,YAAA,WAAW,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AACnE,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAGpD,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAE3C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC;AACrF,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGX,IAAI,GAAA;QACP,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM;QACpD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI;AAC3C,QAAA,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW;AAE3C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAErD,QAAA,IAAI,OAAc;AAElB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACxB,YAAA,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAClJ,YAAA,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;;QAIjD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAG/F,QAAA,IAAI,CAAC,GAAG,CAAA,MAAA,CAAA,MAAA,CAAA,EAAG,MAAM,EAAE,WAAW,EAAE,UAAU,EAAK,GAAC,WAAW,CAAC,IAAI,IAAI,EAAE,GAAI;AAC1E,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM;QACvB,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM;QAGxC,IAAI,MAAM,EAAE;AACR,YAAA,OAAO,CAAC,WAAW,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;;;AAIrE,IAAA,MAAM,CAAC,MAAmB,EAAA;AAC7B,QAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI;QACvF,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM;AAC3D,QAAA,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,WAAW;AAEvF,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM;AAC9B,QAAA,QAAQ,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC;AAElC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACxB,YAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;AAChC,YAAA,MAAM,SAAS,GAAG,OAAO,WAAW,KAAK,QAAQ,GAAG,WAAW,GAAG,EAAE;AACpE,YAAA,MAAM,UAAU,GAAG,OAAO,IAAI,EAAE,WAAW,IAAI,KAAK,GAAG,SAAS,IAAI,MAAM,GAAG,SAAS,CAAC;YAEvF,IAAI,KAAK,GAAG,EAAgB,EAAE,OAAc,EAAE,OAAc,EAAE,OAAc;AAE5E,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAExB,gBAAAW,iBAAY,CAAC,OAAO,CAACA,iBAAY,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;AAClE,gBAAA,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;AACzB,gBAAA,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;AACzB,gBAAA,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,gBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAClB,gBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAClB,gBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAGlB,gBAAA,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,UAAU,IAAI,CAAC,EAAE,UAAU,IAAI,UAAU,CAAC;AAC9E,gBAAA,OAAO,CAAC,OAAO,GAAG,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,CAAC,WAAW,CAAC,WAAW;AAEpF,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE;AAEP,oBAAA,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,UAAU,IAAI,CAAC,CAAC,WAAW;AAE/D,oBAAA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnB,wBAAA,OAAO,CAAC,KAAK,GAAG,KAAK;wBACrB,IAAI,WAAW,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK;AAAE,4BAAA,OAAO,CAAC,OAAO,GAAG,KAAK;;yBAClE;AACH,wBAAA,OAAO,CAAC,MAAM,GAAG,MAAM;AACvB,wBAAA,OAAO,CAAC,QAAQ,GAAG,EAAE;wBACrB,IAAI,WAAW,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM;AAAE,4BAAA,OAAO,CAAC,OAAO,GAAG,KAAK;;;;AAOlF,YAAA,MAAM,CAAC,OAAO,GAAG,UAAU,IAAI,UAAU,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,WAAW,CAAC;YAC9F,IAAI,MAAM,CAAC,OAAO;AAAE,gBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YAGlD,IAAI,IAAI,CAAC,IAAI;AAAE,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAC/B,YAAA,IAAI,CAAC,GAAG,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,MAAM,CAAA,EAAA,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,IAAG;AAG3D,YAAA,OAAO,CAAC,OAAO,GAAG,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;YAChE,IAAI,OAAO,CAAC,OAAO;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;;;AACjD,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;;AAGjB,IAAA,YAAY,CAAC,MAAqB,EAAA;AACxC,QAAA,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,MAAM;AAC9F,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,gBAAgB,KAAK,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC;AAChJ,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,IAAI,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC;;AAGtF,IAAA,aAAa,CAAC,MAAqB,EAAA;AACzC,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;QACxB,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,MAAM;AAE7E,QAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI;QACnC,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE;AAC1D,YAAA,IAAI,YAAY;gBAAE,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC;;AAG7C,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,KAAK;AACtI,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC;AAExE,QAAA,IAAI,YAAY;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,SAAS,GAAG,KAAK,IAAI,EAAE;AAC7D,QAAA,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,EAAE,GAAG,CAAC;AAClC,QAAA,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,EAAE,GAAG,CAAC;;AAG5B,IAAA,iBAAiB,CAAC,OAAY,EAAE,SAAiB,EAAE,aAAqB,EAAE,cAAuB,EAAA;AACvG,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;AAClD,QAAA,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC;AAC1B,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,IAAI,SAAS,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;AAErD,QAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC;AAC9B,QAAA,MAAM,MAAM,GAAG,CAAC,aAAa,GAAG,CAAC,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI;QAE1L,IAAI,IAAI,EAAE;YACN,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM;AAC5B,YAAA,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;;aAChB;AACH,YAAA,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM;;;IAK7B,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;AAIjB,IAAA,aAAa,CAAC,SAAyB,EAAA;AAC1C,QAAA,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;AAC1F,QAAA,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAmB;AAC3N,QAAA,OAAO,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,YAAY;;IAGrE,cAAc,GAAA;QACjB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;AACzC,QAAA,OAAO,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;;IAG5C,oBAAoB,GAAA;QACvB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;QAC/C,OAAO,WAAW,YAAY,KAAK,GAAG,WAAW,IAAI,WAAW,GAAG,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;;AAGnG,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC7B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI;YAC/B,IAAI,IAAI,CAAC,GAAG;gBAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;;;AAMlD,IAAA,WAAW,CAAC,CAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAqB,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK;AAC7E,QAAA,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM;AAC5D,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,YAAA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC;;AAE1D,QAAA,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,QAAA,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,QAAA,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE;AACpD,QAAA,aAAa,CAAC,MAAM,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAE;AACrE,QAAA,aAAa,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACzC,QAAA,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAEI,gBAAW,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI;;AAGxF,IAAA,SAAS,CAAC,CAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,OAAqB;QACnD,IAAI,IAAI,KAAK,MAAM;AAAE,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC;AAC5C,QAAA,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAAE,YAAAA,gBAAW,CAAC,YAAY,GAAG,IAAI;;AAGxE,IAAA,MAAM,CAAC,CAAY,EAAA;AACzB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;QACvB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,OAAqB;QAC/D,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE;AAC1F,YAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB,IAAI,SAAS,KAAK,eAAe;AAAE,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;;aACjD,IAAI,SAAS,KAAK,QAAQ;AAAE,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,IAAI,SAAS,KAAK,MAAM;AAAE,YAAA,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,QAAA,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;;AAGpB,IAAA,OAAO,CAAC,CAAY,EAAA;AACvB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;QACvB,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC/C,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;AAChB,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC;AACpC,YAAA,QAAQ,CAAC,CAAC,IAAI;AACV,gBAAA,KAAK,WAAW;oBACZ,CAAC,GAAG,QAAQ;oBACZ;AACJ,gBAAA,KAAK,SAAS;oBACV,CAAC,GAAG,CAAC,QAAQ;oBACb;AACJ,gBAAA,KAAK,WAAW;oBACZ,CAAC,GAAG,CAAC,QAAQ;oBACb;AACJ,gBAAA,KAAK,YAAY;oBACb,CAAC,GAAG,QAAQ;;YAEpB,IAAI,CAAC,IAAI,CAAC;AAAE,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;;;AAK3B,IAAA,WAAW,CAAC,CAAe,EAAA;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;AAG/D,IAAA,WAAW,CAAC,CAAe,EAAA;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,KAAK,MAAM;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;AAG7D,IAAA,SAAS,CAAC,CAAe,EAAA;AAC/B,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AACvB,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;YAC1B,IAAI,OAAO,CAAC,MAAM;gBAAE;YACpB,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AACxC,gBAAA,IAAK,OAAgB,CAAC,OAAO,EAAE;AAC3B,oBAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO;AAC5B,oBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,YAAYC,SAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,YAAYA,SAAI,CAAC;AACxH,oBAAA,IAAI,IAAI;AAAE,wBAAA,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;;AAGjD,gBAAA,MAAM,CAAC,SAAS,CAAC,OAAiB,CAAC;gBACnC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;;iBAC3C;gBACH,MAAM,CAAC,eAAe,EAAE;;;;AAM7B,IAAA,iBAAiB,CAAC,KAAiB,EAAE,IAAoB,EAAE,SAAqB,EAAA;AACnF,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AACvB,QAAA,KAAK,CAAC,SAAS,GAAG,SAAS;AAC3B,QAAA,KAAK,CAAC,SAAS,GAAG,IAAI;AACtB,QAAA,KAAK,CAAC,GAAG,CAACX,cAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AAClD,QAAA,KAAK,CAAC,GAAG,CAACA,cAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC5C,QAAA,KAAK,CAAC,GAAG,CAACA,cAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AAC9C,QAAA,KAAK,CAAC,GAAG,CAACD,iBAAY,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3D,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;AAAE,YAAA,KAAK,CAAC,GAAG,CAACA,iBAAY,CAAC,KAAK,EAAE,CAAC,CAAC,KAAI,EAAG,IAAI,CAAC,UAAU,GAAG,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA,EAAE,CAAC;;IAGjH,cAAc,GAAA;AACpB,QAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;QAC7B,IAAI,CAAC,UAAU,GAAG;AACd,YAAA,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;AAEnD,YAAA,IAAI,CAAC,GAAG,CAACC,cAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AACjD,YAAA,IAAI,CAAC,GAAG,CAACA,cAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AAC/C,YAAA,IAAI,CAAC,GAAG,CAACA,cAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AAE7C,YAAA,IAAI,CAAC,GAAG,CAACD,iBAAY,CAAC,KAAK,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,GAAG,CAACA,iBAAY,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AACzD,YAAA,IAAI,CAAC,GAAG,CAACA,iBAAY,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI;SAC3D;;IAGK,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;;IAGvB,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,KAAK,CAAC,OAAO,EAAE;;AAGtB;;ACxWD,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAEzD,MAAO,QAAS,SAAQP,OAAE,CAAA;AAI5B,IAAA,WAAA,CAAY,MAAe,EAAA;AACvB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC;;IAGX,mBAAmB,GAAA;QACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;;IAGnC,MAAM,CAAC,MAAqB,EAAE,OAAuB,EAAA;AAExD,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,YAAY;AACvD,QAAA,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE;AACxB,YAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,GAAG,iBAAiB,GAAG,IAAI,CAAC;YACzE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC;gBAAE;AAExF,YAAA,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC;AACvC,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAG;AACvB,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;AACnC,gBAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;AAC9B,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,MAAM,CAAC,IAAI,GAAG,MAAM,KAAM,MAAe,CAAC,OAAO,CAAC;AAAE,oBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;AAC5G,aAAC,CAAC;YACF,MAAM,CAAC,gBAAgB,EAAE;;;IAI1B,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,KAAK,CAAC,OAAO,EAAE;;AAGtB;;AC7CD,MAAM,WAAW,GAAG;;;;2DAIuC;AAGpD,MAAM,SAAS,GAAG;;;;;;;;;;EAUvB,WAAW;;;;CAIZ;AAEM,MAAM,SAAS,GAAG;;;;;;;;;;EAUvB,WAAW;;;;CAIZ;AAEM,MAAM,OAAO,GAAG;;;;;;;;;;EAUrB,WAAW;;;;CAIZ;;ACjDM,MAAM,MAAM,GAAkB;AACjC,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,QAAQ,EAAE,IAAI;AAEd,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,WAAW,EAAE,CAAC;AAEd,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,WAAW,EAAE,EAAE;AAEf,IAAA,SAAS,EAAE,EAAE;AAEb,IAAA,gBAAgB,EAAE,QAAQ;AAC1B,IAAA,aAAa,EAAE,EAAE;AAEjB,IAAA,WAAW,EAAE,IAAI;AAEjB,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,YAAY,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AAC9C,IAAA,YAAY,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AAC9C,IAAA,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AAE1C,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,cAAc,EAAE,IAAI;AACpB,IAAA,SAAS,EAAE,IAAI;AAEf,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,QAAQ,EAAE;CACb;;AClCD,MAAM,MAAM,GAAG,IAAIK,WAAM,EAAE;AAErB,SAAU,QAAQ,CAAC,MAAe,EAAA;AACpC,IAAA,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,MAAM;AACvC,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAmB;AACxD,IAAA,cAAc,CAAC,UAAU,CAAC,MAAK;AAC3B,QAAA,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,IAAW,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1E,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC;AAAE,YAAA,MAAM,CAAC,KAAK,GAAG,GAAG;AAC1C,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,MAAM,CAAC,MAAM,GAAG,GAAG;QAC5C,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACtC,KAAC,CAAC;AACF,IAAA,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;AACjC;;ACTgB,SAAA,QAAQ,CAAC,MAAe,EAAE,QAAqB,EAAA;AAC3D,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;IACzB,IAAI,MAAM,EAAE;AACR,QAAA,MAAM,CAAC,QAAQ,GAAG,MAAM,YAAYC,aAAQ,GAAG,MAAM,GAAG,IAAIA,aAAQ,CAAC,MAAM,CAAC;QAC5E,IAAI,MAAM,CAAC,QAAQ;YAAE,QAAQ,CAAC,MAAM,CAAC;;SAClC;AACH,QAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9B,QAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;QACvB,MAAM,CAAC,gBAAgB,EAAE;;IAG7B,MAAM,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1F,MAAM,CAAC,iBAAiB,EAAE;AAE1B,IAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,QAAA,MAAM,CAAC,UAAU,CAAC,MAAK;YACnB,gBAAgB,CAAC,MAAM,CAAC;YACxB,MAAM,CAAC,cAAc,EAAE;YACvB,MAAM,CAAC,MAAM,EAAE;YACf,MAAM,CAAC,kBAAkB,EAAE;AAC/B,SAAC,CAAC;;SACC;QACH,MAAM,CAAC,cAAc,EAAE;QACvB,MAAM,CAAC,kBAAkB,EAAE;;AAEnC;AAGgB,SAAA,OAAO,CAAC,MAAe,EAAE,QAAa,EAAA;IAClD,MAAM,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;AACzG;;ACnCA,MAAM,KAAK,GAAG,CAAC,CAAQ,EAAE,CAAQ,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjG,MAAM,YAAY,GAAG,CAAC,CAAQ,EAAE,CAAQ,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3F,MAAA,YAAY,GAAG;AAExB,IAAA,KAAK,CAAC,IAAW,EAAE,OAAa,EAAE,SAAoC,EAAA;AAClE,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACvB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAE/B,QAAA,IAAI,KAAa;AACjB,QAAA,IAAI,SAAS,IAAK,SAAoB,CAAC,GAAG,EAAE;YACxC,KAAK,GAAG,SAAmB;;aACxB;AACH,YAAA,KAAK,GAAG,IAAIH,UAAK,CAAC,SAAS,CAAC;;AAGhC,QAAA,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAEhB,MAAM,KAAK,GAAG,IAAIiB,WAAM,CAAC,OAAO,CAAC,cAAc,CAAC;AAChD,QAAA,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC;AACzC,QAAA,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;AACzB,QAAA,KAAK,CAAC,QAAQ,GAAG,IAAI;AACrB,QAAA,KAAK,CAAC,WAAW,GAAG,KAAK;QAEzB,GAAG,CAAC,UAAU,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,YAAY,EAAE;AAElB,QAAA,OAAO,KAAK;KACf;AAED,IAAA,OAAO,CAAC,IAAW,EAAA;QACf,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QACvB,MAAM,WAAW,GAAU,EAAE;QAE7B,GAAG,CAAC,UAAU,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAG;AAChB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI;AACjC,gBAAA,OAAO,QAAQ,CAAC,MAAM,EAAE;oBACpB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7B,oBAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;gBAE7D,IAAI,IAAI,CAAC,YAAY;AAAE,oBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;oBACxC,IAAI,CAAC,MAAM,EAAE;;iBACf;AACH,gBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE9B,SAAC,CAAC;QACF,GAAG,CAAC,YAAY,EAAE;AAElB,QAAA,OAAO,WAAW;KACrB;AAED,IAAA,KAAK,CAAC,IAAW,EAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAG;YAChB,IAAI,IAAI,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1C,SAAC,CAAC;KACL;AAED,IAAA,QAAQ,CAAC,IAAW,EAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAG;YAChB,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,SAAC,CAAC;;;;AChEV,MAAM,KAAK,GAAGC,UAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;SAE1B,gBAAgB,GAAA;IAC5B,OAAO,CAAC,MAAe,KAAI;AACvB,QAAA,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpC,KAAC;AACL;AAEO,MAAM,mBAAmB,GAAG;AAEtB,MAAA,eAAe,GAAG;AAE3B,IAAA,IAAI,EAAE,EAAa;AAEnB,IAAA,QAAQ,CAAC,QAAiB,EAAA;AACtB,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAsB;QAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ;KACvB;IAED,GAAG,CAAC,GAAW,EAAE,MAAe,EAAA;QAC5B,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;;;AAKpC,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe;;ACzB1B,MAAO,gBAAiB,SAAQ,WAAW,CAAA;IAW7C,WAAY,CAAA,IAAY,EAAE,IAAwB,EAAA;AAC9C,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;;;AAVd,gBAAW,CAAA,WAAA,GAAG,yBAAyB;AACvC,gBAAI,CAAA,IAAA,GAAG,kBAAkB;AAEzB,gBAAY,CAAA,YAAA,GAAG,0BAA0B;AACzC,gBAAK,CAAA,KAAA,GAAG,mBAAmB;;ACNhC,MAAO,gBAAiB,SAAQ,WAAW,CAAA;IAiB7C,WAAY,CAAA,IAAY,EAAE,IAAwB,EAAA;AAC9C,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;;;AAfd,gBAAY,CAAA,YAAA,GAAG,qBAAqB;AACpC,gBAAK,CAAA,KAAA,GAAG,cAAc;AAEtB,gBAAc,CAAA,cAAA,GAAG,uBAAuB;AACxC,gBAAO,CAAA,OAAA,GAAG,gBAAgB;AAE1B,gBAAW,CAAA,WAAA,GAAG,0BAA0B;AACxC,gBAAI,CAAA,IAAA,GAAG,mBAAmB;AAE1B,gBAAY,CAAA,YAAA,GAAG,2BAA2B;AAC1C,gBAAK,CAAA,KAAA,GAAG,oBAAoB;;ACdvC,MAAM,EAAE,YAAY,EAAE,GAAGC,eAAU;AACnC,MAAM,QAAQ,GAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU;AAE9G,MAAO,eAAgB,SAAQlB,SAAI,CAAA;AAErC,IAAA,IAAW,KAAK,GAAK,EAAA,OAAO,iBAAiB,CAAA;AAS7C,IAAA,WAAA,CAAY,MAAe,EAAA;AACvB,QAAA,KAAK,EAAE;QARJ,IAAW,CAAA,WAAA,GAAG,IAAI;QAElB,IAAS,CAAA,SAAA,GAAG,IAAI;QAQnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK;QAEpC,IAAI,CAAC,EAAE,CAACmB,kBAAa,CAAC,MAAM,EAAE,CAAC,KAAoB,KAAI;YAEnD,IAAI,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBAE9C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK;AAC9C,gBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAS,QAAQ,IAAI,CAAC,KAAa,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAS,QAAQ,IAAI,CAAC,KAAa,QAAQ,IAAI,CAAC,CAAC;AAE5I,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,gBAAA,MAAM,IAAI,GAAY,IAAI,CAAC,EAAE;AAG7B,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACzB,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;gBACzB,YAAY,CAAC,IAAI,CAAC;gBAElB,MAAM,SAAS,GAAG,IAAIH,WAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAG1C,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;gBAC9B,YAAY,CAAC,IAAI,CAAC;AAElB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAIA,WAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;gBAElE,QAAQ,QAAQ;AACZ,oBAAA,KAAK,GAAG;AACJ,wBAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACxB;AACJ,oBAAA,KAAK,GAAG;AACJ,wBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC;wBACxB;AACJ,oBAAA,KAAK,UAAU;AACX,wBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;wBACjC;AACJ,oBAAA,KAAK,QAAQ;wBACT,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;wBACnC;AACJ,oBAAA,KAAK,QAAQ;wBACT,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC;wBACnC;AACJ,oBAAA,KAAK,OAAO;wBACR,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;wBAClC;AACJ,oBAAA,KAAK,OAAO;wBACR,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC;;AAG1C,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;AAG7B,SAAC,CAAC;;AAGC,IAAA,UAAU,CAAC,QAAmB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;;AAGlC;;ACzDK,MAAO,MAAO,SAAQjB,UAAK,CAAA;IAiB7B,IAAW,IAAI,GAAY,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAa,CAAA;AAC7D,IAAA,IAAW,gBAAgB,GAAA,EAAY,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAKjE,IAAA,IAAW,OAAO,GAAA,EAAc,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;AAEzD,IAAA,IAAW,YAAY,GAAA,EAAc,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA;AAGzE,IAAA,IAAW,QAAQ,GAAA,EAAc,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;AAC5D,IAAA,IAAW,MAAM,GAAA,EAAc,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAA;IAE5D,IAAW,QAAQ,GAAc,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;IAC7D,IAAW,MAAM,GAAc,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;IACzD,IAAW,SAAS,GAAiB,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA;IAIlE,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAqB,CAAA;IAIpG,IAAW,OAAO,GAAK,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;IAclD,WAAY,CAAA,UAA0B,EAAE,IAAsB,EAAA;QAC1D,KAAK,CAAC,IAAI,CAAC;AAxCR,QAAA,IAAA,CAAA,QAAQ,GAAc,IAAIG,aAAQ,EAAE;AAGpC,QAAA,IAAA,CAAA,eAAe,GAAc,IAAIA,aAAQ,EAAE;AAmB3C,QAAA,IAAA,CAAA,cAAc,GAAqB,IAAI,eAAe,CAAC,IAAI,CAAC;AAE5D,QAAA,IAAA,CAAA,OAAO,GAAa,IAAI,OAAO,CAAC,IAAI,CAAC;QAMrC,IAAY,CAAA,YAAA,GAAY,EAAE;AAE1B,QAAA,IAAA,CAAA,QAAQ,GAAe,IAAI,UAAU,CAAC,IAAI,CAAC;AAC3C,QAAA,IAAA,CAAA,QAAQ,GAAa,IAAI,QAAQ,CAAC,IAAI,CAAC;QAGvC,IAAc,CAAA,cAAA,GAAuB,EAAE;QAK1C,IAAI,YAAY,GAAkBkB,eAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1D,QAAA,IAAI,UAAU;YAAE,YAAY,GAAGA,eAAU,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC;QAC3E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY;AAE9C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC;AACxD,QAAA,IAAI,CAACC,WAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;AAAE,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO;;AAKtD,IAAA,MAAM,CAAC,MAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;IAGjB,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;AAKf,IAAA,OAAO,CAAC,IAAS,EAAA;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;;AAG3B,IAAA,OAAO,CAAC,IAAS,EAAA;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAa;;AAGxG,IAAA,UAAU,CAAC,IAAS,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAa;;AAG1F,IAAA,SAAS,CAAC,IAAS,EAAA;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;;IAK5D,MAAM,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI,CAAC,MAAM,EAAE;YAC9C,IAAI,IAAI,CAAC,YAAY;AAAE,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;;;IAIvB,aAAa,GAAA;QAChB,IAAI,IAAI,CAAC,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE;;IAGV,cAAc,GAAA;AACjB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;QAC1B,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACrB,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAGxB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAmB,GAAG,UAAU;YACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AACjG,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;;AAOrB,IAAA,WAAW,CAAC,GAAQ,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ;;AAK7B,IAAA,MAAM,CAAC,CAAwB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAYhB,cAAS,EAAE;AAExB,YAAA,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,EAAE;gBACvB,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW;gBACjD,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;gBACzC,IAAI,QAAQ,KAAK,MAAM;AAAE,oBAAA,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;qBACvD,IAAI,UAAU,KAAK,MAAM;oBAAE,CAAC,CAAC,IAAI,EAAE;;;aAGzC;AAEH,YAAA,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;AAE1C,YAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;AACZ,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAAE,oBAAA,KAAK,CAAC,CAAC,GAAG,CAAC;;AACjD,oBAAA,KAAK,CAAC,CAAC,GAAG,CAAC;;YAGpB,IAAI,CAAC,IAAI,CAACD,cAAS,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;;;AAKzF,IAAA,OAAO,CAAC,CAAwB,EAAA;AACnC,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AACxB,QAAA,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,WAAW;AAE5E,QAAA,IAAI,CAAC,YAAYE,cAAS,EAAE;YAExB,IAAI,UAAU,KAAK,MAAM;gBAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;;aAExF;AAEH,YAAA,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,OAAqB;AAE7C,YAAA,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS;gBAAE,SAAS,GAAG,IAAI;YAErD,MAAM,IAAI,GAAG,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,OAAO,CAAC;AAEjO,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC/B,gBAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;;iBACrB;AACH,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;;;;AAMxD,IAAA,QAAQ,CAAC,CAA0B,EAAA;AACtC,QAAA,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,WAAW;QACpE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,OAAqB;AACnD,QAAA,IAAI,QAAQ,IAAI,IAAI,KAAK,aAAa;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAc,CAAC;AAE1E,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO;QAC1D,IAAI,MAAkB,EAAE,QAAgB;AAExC,QAAA,IAAI,CAAC,YAAYgB,gBAAW,EAAE;YAE1B,IAAI,UAAU,KAAK,QAAQ;AAAE,gBAAA,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;;gBACxF;YAEL,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,GAAG,CAAC,QAAQ;;aAE1D;YAEH,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,QAAQ,CAAC,CAAC;AACjN,YAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACxB,YAAA,MAAM,GAAG,IAAI,CAAC,MAAM;;QAIxB,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,GAAG,CAAC,QAAQ;QAC7D,IAAI,CAAC,YAAYlB,cAAS;YAAE,QAAQ,GAAG,aAAa,CAAC,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ;QAE3F,QAAQ,GAAGO,eAAU,CAAC,KAAK,CAACA,eAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChG,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;;AAI5B,IAAA,MAAM,CAAC,CAAY,EAAA;AACtB,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AACxB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW;AAEnC,QAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAG,CAAC,CAAC,OAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACxL,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;YAAE;QAEtB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;;AAM9B,IAAA,IAAI,CAAC,CAAsB,EAAE,CAAC,GAAG,CAAC,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;YAAE;QACtC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAE3C,QAAA,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW;QACnE,IAAI,UAAU,EAAE;AACZ,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;iBAClD,IAAI,KAAK,KAAK,KAAK;gBAAE;;AAG9B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;QAC/D,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,CAAC,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;AAEvF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;AAGlB,IAAA,aAAa,CAAC,IAAuB,EAAA;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;YAAE;AAExC,QAAA,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW;QACpE,IAAI,WAAW,EAAE;YACb,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI;AAC7C,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACnE,IAAI,KAAK,KAAK,KAAK;gBAAE;;QAGzB,IAAI,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAE,EAAA,EAAA,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAE;AAExF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;IAIhB,OAAO,CAAC,MAA2B,EAAE,MAAc,EAAE,MAAM,GAAG,MAAM,EAAE,OAAiB,EAAA;AAC5F,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;YAAE;AAExC,QAAA,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW;QACpE,IAAI,WAAW,EAAE;AACb,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM;iBACtE,IAAI,KAAK,KAAK,KAAK;gBAAE;;QAG9B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC/C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAClI,QAAA,MAAM,IAAI,GAAsB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;AAEhG,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;AAGhB,IAAA,IAAI,CAAC,IAAW,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;YAAE;AAExC,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAIK,WAAM,CAACE,eAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvK,MAAM,IAAI,GAAsB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE;AAEvJ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;IAGhB,QAAQ,CAAC,MAA2B,EAAE,QAAgB,EAAA;AAC3D,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;YAAE;AAExC,QAAA,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW;QACrE,IAAI,YAAY,EAAE;AACd,YAAA,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACxD,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,QAAQ,GAAG,KAAK;iBAC1C,IAAI,KAAK,KAAK,KAAK;gBAAE;;QAG9B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC/C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7H,QAAA,MAAM,IAAI,GAAuB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE;AAE3F,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;IAGhB,MAAM,CAAC,MAA2B,EAAE,KAAa,EAAE,KAAK,GAAG,CAAC,EAAE,OAAiB,EAAA;AACpF,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;YAAE;AAEtC,QAAA,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW;QACnE,IAAI,UAAU,EAAE;AACZ,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK;iBAClE,IAAI,KAAK,KAAK,KAAK;gBAAE;;QAG9B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC/C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/H,QAAA,MAAM,IAAI,GAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;AAE7F,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;IAGlB,cAAc,CAAC,IAA2D,EAAa,EAAA,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAY,CAAA;AAEpK,IAAA,cAAc,CAAC,MAA2B,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAACA,eAAU,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;;AAG5E,IAAA,mBAAmB,CAAC,IAAe,EAAA;AACzC,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,gBAAgB;QAExE,MAAM,SAAS,GAAG,IAAIF,WAAM,CAAC,OAAO,CAAC,cAAc,CAAC;AACpD,QAAA,IAAI,EAAE;AACN,QAAA,OAAO,IAAIA,WAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;;AAMxD,IAAA,KAAK,CAAC,SAAoC,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC;AAClD,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;YACpE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAgB,CAAC;;QAEtE,OAAO,IAAI,CAAC,MAAgB;;IAGzB,OAAO,GAAA;AACV,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAc,CAAC,CAAC;YAC3G,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAc,CAAC,CAAC;;QAExG,OAAO,IAAI,CAAC,IAAI;;AAGb,IAAA,SAAS,CAAC,KAAa,EAAA;QAC1B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,QAAA,KAAK,CAAC,WAAW,GAAG,IAAI;QACxB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;;AAG9C,IAAA,UAAU,CAAC,KAAa,EAAA;QAC3B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC;AACzD,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,KAAK,CAAC,WAAW,GAAG,KAAK;QACzB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;;IAG/C,iBAAiB,GAAA;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe;AACnC,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM;YACrB,IAAI,IAAI,CAAC,OAAO;AAAE,gBAAA,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAACE,eAAU,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClI,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAc,CAAC,CAAC;;QAEzD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAAE,IAAI,CAAC,eAAe,EAAE;;IAGhE,eAAe,GAAA;AAClB,QAAA,IAAI,MAAc,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI;AACnC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;AACvB,YAAA,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAClC,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACtB,gBAAA,MAAM,GAAG,MAAM,CAAC,MAAM;;;;IAK3B,cAAc,CAAC,IAAY,EAAE,KAAc,EAAA;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/D,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,KAAK;AAAE,YAAA,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;;IAK9B,eAAe,CAAC,MAAY,EAAE,MAAgB,EAAA;QACjD,IAAI,MAAM,IAAI,MAAM;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AAC1C,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO;AACzC,YAAA,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS;YAChC,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AAC3E,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU;AAExC,gBAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC;AACjD,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,gBAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC;;;;IAK/C,gBAAgB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAEzB,YAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC;AAClD,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAE3C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;;AAIxB,IAAA,cAAc,CAAC,IAAY,EAAA;QAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW;AAC1D,QAAA,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,QAAA,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;;IAKxB,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE;;IAGV,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE;;IAKV,KAAK,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAClB,YAAA,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;;;IAIvB,QAAQ,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAClB,YAAA,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;;;AAIpB,IAAA,gBAAgB,CAAC,GAAS,EAAA;QAChC,IAAI,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;;IAG7H,aAAa,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,MAAM,EAAE;;AAG/B,IAAA,KAAK,CAAC,CAAW,EAAA;AACvB,QAAA,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;;IAKlB,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAC7B,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;YAC/C,IAAI,CAAC,cAAc,GAAG;AAClB,gBAAA,MAAM,CAAC,GAAG,CAACK,gBAAW,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;AACvD,gBAAA,GAAG,CAAC,GAAG,CAACA,gBAAW,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC;AAC7D,gBAAA,GAAG,CAAC,GAAG,CAAClB,cAAS,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;AACvD,gBAAA,GAAG,CAAC,GAAG,CAACC,cAAS,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AACxD,gBAAA,GAAG,CAAC,GAAG,CAACgB,gBAAW,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;AAC7D,gBAAA,GAAG,CAAC,GAAG,CAAC,CAACE,aAAQ,CAAC,IAAI,EAAEA,aAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;AACvD,gBAAA,GAAG,CAAC,GAAG,CAACA,aAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO;aAClD;YACD,IAAI,QAAQ,CAAC,OAAO;gBAAE,QAAQ,CAAC,WAAW,EAAE;;;IAI7C,kBAAkB,GAAA;AACrB,QAAA,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,IAAI;AACzC,QAAA,IAAI,cAAc,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AACzB,YAAA,cAAc,CAAC,MAAM,GAAG,CAAC;YACzB,IAAI,QAAQ,CAAC,OAAO;gBAAE,QAAQ,CAAC,WAAW,EAAE;;;IAI7C,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI;AAErC,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAE7B,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI;YAE7D,KAAK,CAAC,OAAO,EAAE;;;AAI1B;AA1hBY,UAAA,CAAA;AADR,IAAA,eAAe;AACmB,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AAI5B,UAAA,CAAA;IADN,UAAU,CAAC,OAAO;AACK,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AAGjB,UAAA,CAAA;IADN,UAAU,CAAC,QAAQ;AACO,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;;MCnClB,WAAW,CAAA;AAEpB,IAAA,OAAO,mBAAmB,GAAA;AACtB,QAAA,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAIlC,IAAA,IAAW,GAAG,GAAK,EAAA,OAAO,aAAa,CAAA;IAOvC,IAAW,OAAO,GAAe,EAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;AAO3D,IAAA,WAAA,CAAY,MAAe,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,IAAI,CAAC,MAAM,EAAE;;AAIV,IAAA,QAAQ;IACR,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,GAAG,IAAIzB,UAAK,EAAE;QACvB,IAAI,CAAC,QAAQ,EAAE;;AAMZ,IAAA,MAAM;IACN,IAAI,GAAA;AACP,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;QACvB,IAAI,MAAM,EAAE;YACR,IAAI,MAAM,CAAC,GAAG;AAAE,gBAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK;YAC9E,IAAI,CAAC,MAAM,EAAE;;;AAId,IAAA,QAAQ;AACR,IAAA,MAAM,KAAW,IAAI,CAAC,QAAQ,EAAE,CAAA;AAEhC,IAAA,QAAQ;IACR,MAAM,GAAA;AACT,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;QACvB,IAAI,MAAM,EAAE;YACR,IAAI,MAAM,CAAC,GAAG;AAAE,gBAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI;YAC7E,IAAI,CAAC,QAAQ,EAAE;;;AAIhB,IAAA,SAAS;IACT,OAAO,GAAA;QACV,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,IAAI,CAAC,IAAI;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClC,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClD,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI;;;AAIzD;;AClEY0B,gBAAQ,GAAd,MAAM,QAAS,SAAQ,WAAW,CAAA;AAErC,IAAA,OAAO,gBAAgB,GAAA;AACnB,QAAA,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAIlC,IAAA,IAAW,GAAG,GAAK,EAAA,OAAO,UAAU,CAAA;AAK7B,IAAA,MAAM,CAAC,CAAmB,EAAA;QAC7B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;AAClC,QAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM;QAC5B,GAAG,CAAC,UAAU,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA,EAAE,CAAC;QAC1D,GAAG,CAAC,YAAY,EAAE;;AAGf,IAAA,OAAO,CAAC,CAAoB,EAAA;AAC/B,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC;AAC5D,QAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM;QAC5B,GAAG,CAAC,UAAU,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAG;YAClB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO;AACrD,YAAA,IAAI,SAAS;AAAE,gBAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;;gBAClD,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACjE,SAAC,CAAC;QACF,GAAG,CAAC,YAAY,EAAE;;AAGf,IAAA,QAAQ,CAAC,CAAqB,EAAA;QACjC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC;AACtD,QAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM;QAC5B,GAAG,CAAC,UAAU,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAG;YAClB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO;AACrD,YAAA,IAAI,SAAS;AAAE,gBAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;;AAClD,gBAAA,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC;AACpD,SAAC,CAAC;QACF,GAAG,CAAC,YAAY,EAAE;;AAGf,IAAA,MAAM,CAAC,CAAmB,EAAA;AAC7B,QAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC;AAC1D,QAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM;QAC5B,GAAG,CAAC,UAAU,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAG;YAClB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO;AACrD,YAAA,IAAI,SAAS;AAAE,gBAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;;gBAClD,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;AAC9D,SAAC,CAAC;QACF,GAAG,CAAC,YAAY,EAAE;;IAKf,IAAI,GAAA;QACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI;QAChC,IAAI,CAAC,MAAM,EAAE;;IAGV,MAAM,GAAA;AACT,QAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AAChC,QAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;AAC3H,QAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7D,QAAA,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE;;IAGZ,MAAM,GAAA;QACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK;QACjC,IAAI,CAAC,QAAQ,EAAE;;;AAzEVA,gBAAQ,GAAA,UAAA,CAAA;AADpB,IAAA,gBAAgB;AACJ,CAAA,EAAAA,gBAAQ,CA4EpB;;AC3ED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAGhB,eAAU;AAClC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAGG,gBAAW;AAGrCc,oBAAY,GAAlB,MAAM,YAAa,SAAQD,gBAAQ,CAAA;AAAnC,IAAA,WAAA,GAAA;;QAII,IAAY,CAAA,YAAA,GAAG,IAAI;;AAF1B,IAAA,IAAW,GAAG,GAAK,EAAA,OAAO,cAAc,CAAA;AAIxC,IAAA,eAAe,CAAC,CAAoB,EAAA;QAChC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC;AAChD,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,MAAe;AAC9B,QAAA,MAAM,UAAU,GAAG,SAAS,KAAK,IAAI;AAErC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAElB,YAAA,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE;AACxB,YAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAE/C,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAEtF,YAAA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;AAEb,aAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AAEpB,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AACvB,YAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAEnD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAEtF,YAAA,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACtC,YAAA,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;aAEjB;AAEH,YAAA,MAAM,IAAI,GAAGE,iBAAY,EAAE;AAC3B,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;YAEjB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAE3F,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACjD,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,YAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACf,YAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAEf,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;;;AAM9B,IAAA,YAAY,CAAC,EAAO,EAAE,KAAiB,EAAE,SAA6B,EAAA;QAClE,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;AACxC,QAAA,IAAI,SAAS;AAAE,YAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC;AAChG,QAAA,OAAO,SAAS;;AAGpB,IAAA,eAAe,CAAC,IAAsB,EAAA;QAClC,OAAO;AACH,YAAA,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;AAChC,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;SAC/B;;AAGL,IAAA,iBAAiB,CAAC,YAAqC,EAAA;AACnD,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC;QAC3C,OAAO;AACH,YAAA,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACpC,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;SACnC;;IAIL,SAAS,CAAC,SAAqB,EAAE,OAAmB,EAAE,UAAmB,EAAE,MAAe,EAAE,SAAqB,EAAA;AAC7G,QAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS;QAC1B,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,YAAA,IAAI,MAAM;gBAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;aAC9B;AACH,YAAA,IAAI,MAAM;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;;;AAI3B,IAAA,MAAM,CAAC,EAAoB,EAAA;;IAI3B,QAAQ,GAAA;AACJ,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,OAAO;AACrF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAgB;QAEzC,IAAI,MAAmB,EAAE,WAAoB;QAC7C,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;aAC5D,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;QAErE,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM;YAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;YAC7C,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY,CAAC,CAAC,CAAe,EAAE,IAAI,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAe,EAAE,IAAI,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC;;AAG3C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC;AAAE,gBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK;YACzC,WAAW,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK;AACvC,YAAA,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,WAAW;AACrC,YAAA,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW;;;;AAjHrDD,oBAAY,GAAA,UAAA,CAAA;AADxB,IAAA,gBAAgB;AACJ,CAAA,EAAAA,oBAAY,CAqHxB;;AC9FDL,WAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAG9BO,YAAO,CAAC,MAAM,GAAG,UAAU,OAAuB,EAAa,EAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA,EAAE;AAE3Ff,QAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAEgB,aAAQ,CAAC;AAEvCjC,OAAE,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAEiC,aAAQ,CAAC;AAC7CjC,OAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAM,KAAK,EAAE,CAAC,EAAE,CAAC,YAAY,GAAG,cAAc,GAAG,UAAU,EAAEiC,aAAQ,CAAC;AAE/FjC,OAAE,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,EAAEiC,aAAQ,CAAC;AAC/C9B,UAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,EAAE8B,aAAQ,CAAC;AACxCd,SAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,EAAEc,aAAQ,CAAC;AAEjDjC,OAAE,CAAC,aAAa,GAAG,UAAU,MAA6C,IAAU,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA,EAAE;AAC3HA,OAAE,CAAC,YAAY,GAAG,UAAU,QAAoC,IAAU,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA,EAAE;AAClHA,OAAE,CAAC,YAAY,GAAG,UAAU,UAAsC,IAAU,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA,EAAE;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0]}
|