commons-assessment 12.0.39-dev.2 → 12.0.39-dev.3
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/README.md +1 -0
- package/bundles/commons-assessment.umd.js +23 -22
- package/bundles/commons-assessment.umd.js.map +1 -1
- package/esm2015/lib/modules/assessment-maker/assessment-maker.component.js +1 -1
- package/esm2015/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.js +1 -1
- package/esm2015/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.js +1 -1
- package/esm2015/lib/modules/assessment-maker/components/question-details/question-details.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/assessment-taker.component.js +7 -6
- package/esm2015/lib/modules/assessment-taker/components/proctoring-consent/proctoring-consent.component.js +2 -2
- package/esm2015/lib/modules/assessment-taker/components/proctoring-result/proctoring-result.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-date-picker/question-type-date-picker.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.js +1 -1
- package/esm2015/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.js +1 -1
- package/esm2015/lib/shared/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
- package/esm2015/lib/shared/components/skill-allocation/skill-allocation.component.js +1 -1
- package/fesm2015/commons-assessment.js +23 -22
- package/fesm2015/commons-assessment.js.map +1 -1
- package/lib/modules/assessment-taker/assessment-taker.component.d.ts +2 -1
- package/package.json +1 -1
- package/src/lib/assets/json/labelConfig.json +1 -0
- package/src/lib/assets/theme/_theme.global.scss +1 -0
- package/src/lib/assets/theme/styles.global.scss +18 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commons-assessment.umd.js","sources":["../../../node_modules/tslib/tslib.es6.mjs","../../../projects/commons-assessment/src/lib/shared/utils.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.html","../../../projects/commons-assessment/src/lib/shared/components/skill-allocation/skill-allocation.component.ts","../../../projects/commons-assessment/src/lib/shared/components/skill-allocation/skill-allocation.component.html","../../../projects/commons-assessment/src/lib/shared/components/confirmation-dialog/confirmation-dialog.component.ts","../../../projects/commons-assessment/src/lib/shared/components/confirmation-dialog/confirmation-dialog.component.html","../../../projects/commons-assessment/src/lib/shared/controllers.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/services/assessment-taker.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/proctoring-result/proctoring-result.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/proctoring-result/proctoring-result.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/services/response-builder.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/services/proctoring.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/proctoring-consent/proctoring-consent.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/proctoring-consent/proctoring-consent.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.html","../../../projects/commons-assessment/src/lib/shared/components/text-editor/text-editor.component.ts","../../../projects/commons-assessment/src/lib/shared/components/text-editor/text-editor.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.html","../../../projects/commons-assessment/src/lib/shared/pipes/order-by.pipe.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-date-picker/question-type-date-picker.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-date-picker/question-type-date-picker.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/assessment-taker.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/assessment-taker.component.html","../../../projects/commons-assessment/src/lib/shared/material-modules.ts","../../../projects/commons-assessment/src/lib/shared/shared.module.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/assessment-taker.module.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/services/assessment-builder.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/services/assessment-maker.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/question-details/question-details.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/question-details/question-details.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/assessment-maker.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/assessment-maker.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/assessment-maker.module.ts","../../../projects/commons-assessment/src/lib/commons-assessment.module.ts","../../../projects/commons-assessment/src/public-api.ts","../../../projects/commons-assessment/src/commons-assessment.ts"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export function deepClone<T>(data: T): T {\r\n return JSON.parse(JSON.stringify(data));\r\n}\r\n\r\nexport function generateUuid(): string {\r\n const cryptoObj = window.crypto as any;\r\n\r\n if (cryptoObj?.randomUUID) {\r\n return cryptoObj.randomUUID();\r\n }\r\n\r\n // fallback\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = Math.random() * 16 | 0;\r\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n}\r\n\r\nexport function sortByOrder(\r\n list: any[] | undefined | null,\r\n property: string = 'orderNo',\r\n order: 'asc' | 'desc' = 'asc'\r\n): any[] {\r\n if (!list || !Array.isArray(list)) return [];\r\n\r\n return [...list].sort((a, b) => {\r\n const valA = a?.[property] ?? 0;\r\n const valB = b?.[property] ?? 0;\r\n\r\n const result = valA - valB;\r\n\r\n return order === 'asc' ? result : -result;\r\n });\r\n}","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { deepClone } from '../../../../shared/utils';\r\nimport { QuestionPaperSection } from '../../../../shared/interfaces/question-paper.interface';\r\n\r\n@Component({\r\n selector: 'lib-section-instructions',\r\n templateUrl: './section-instructions.component.html',\r\n styleUrls: ['./section-instructions.component.scss']\r\n})\r\nexport class SectionInstructionsComponent implements OnInit {\r\n imageConfig: { [key: string]: string } = {};\r\n labelConfig: { [key: string]: string } = {};\r\n sectionDetails: QuestionPaperSection | null = null;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<SectionInstructionsComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any,\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.imageConfig = this.dialogData?.imageConfig || {};\r\n this.labelConfig = this.dialogData?.labelConfig || {};\r\n this.sectionDetails = deepClone(this.dialogData?.sectionDetails);\r\n }\r\n\r\n addYoutubeIframeSrc(videoUrl: string) {\r\n if (!videoUrl) return null;\r\n if (this.dialogData.youtubeUrlCache[videoUrl]) {\r\n return this.dialogData.youtubeUrlCache[videoUrl];\r\n }\r\n const videoId = this.getVideoId(videoUrl);\r\n const youtubeUrl = `https://www.youtube.com/embed/${videoId}`;\r\n this.dialogData.youtubeUrlCache[videoUrl] = this.sanitizer.bypassSecurityTrustResourceUrl(youtubeUrl);\r\n return this.dialogData.youtubeUrlCache[videoUrl];\r\n }\r\n\r\n getVideoId(videoUrl: string) {\r\n let pattern = null;\r\n if (videoUrl.includes('youtube.com')) {\r\n pattern = /(?:\\?v=|&v=|youtu\\.be\\/|\\/embed\\/|\\/\\d\\/|\\/vi\\/|\\/v\\/|https?:\\/\\/(?:www\\.)?youtube\\.com\\/(?:v\\/|embed\\/|watch\\?(?:\\S+&)?v=|watch\\?(?:\\S+&)?vi=|\\S+\\/))([a-zA-Z0-9_-]{11})/;\r\n } else if (videoUrl.includes('youtu.be')) {\r\n pattern = /youtu\\.be\\/([a-zA-Z0-9_-]{11})/;\r\n }\r\n if (pattern) {\r\n const match = videoUrl.match(pattern);\r\n if (match && match[1]) {\r\n return match[1];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n}\r\n","<div class=\"col-12\">\r\n <header class=\"p-3 d-flex align-items-center justify-content-between col-12 assessment-bg-grey-one\">\r\n <p class=\"mb-0 assessment-text-semibold-18\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.INSTRUCTIONS']}}\r\n </p>\r\n <img mat-dialog-close [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\" class=\"cursor-pointer\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\r\n </header>\r\n\r\n <div class=\"col-12 px-md-4 px-3 my-4\">\r\n <p *ngIf=\"sectionDetails?.qpsDesc?.[0]?.text\" class=\"assessment-text-medium-14 assessment-grey-ten mb-0\"\r\n [innerHtml]=\"sectionDetails?.qpsDesc?.[0]?.text\"></p>\r\n <div class=\"mt-3 col-12\" *ngIf=\"sectionDetails?.mediaUrl\">\r\n <ng-container *ngTemplateOutlet=\"VideoTemplate; context:{videoUrl:sectionDetails?.mediaUrl}\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <footer class=\"mt-auto p-3 d-flex align-items-center justify-content-end gap-3 col-12 border-top\">\r\n <button mat-dialog-close\r\n class=\"assessment-text-white assessment-bg-grey-ten assessment-border-radius-two border-0 assessment-zoom-animation assessment-button-padding-large assessment-text-medium-13\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.GOT_IT']}}\r\n </button>\r\n </footer>\r\n</div>\r\n\r\n<!-- video preview -->\r\n<ng-template let-videoUrl=\"videoUrl\" #VideoTemplate>\r\n <div class=\"assessment-border-radius-two overflow-hidden col-md-10 col-12 mx-auto\">\r\n <video *ngIf=\"videoUrl?.includes('.mp4') else youtubeVideo\" width=\"400\" controls class=\"mw-100 d-block mx-auto\">\r\n <source [src]=\"videoUrl\" type=\"video/mp4\">\r\n </video>\r\n <ng-template #youtubeVideo>\r\n <div class=\"youtube-video position-relative h-100\">\r\n <iframe [src]=\"addYoutubeIframeSrc(videoUrl)\" title=\"YouTube video player\" frameborder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n allowfullscreen class=\"position-absolute top-0 start-0 w-100 h-100 d-block\">\r\n </iframe>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ng-template>","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { SkillScore } from '../../interfaces/assessment.interface';\r\n\r\n@Component({\r\n selector: 'app-skill-allocation',\r\n templateUrl: './skill-allocation.component.html',\r\n styleUrls: ['./skill-allocation.component.scss']\r\n})\r\nexport class SkillAllocationComponent implements OnInit {\r\n label: any;\r\n skillList: SkillScore[] = [];\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<SkillAllocationComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: { skillList: SkillScore[], label: any },\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.skillList = this.dialogData.skillList?.sort((a, b) => (a?.label || '').localeCompare(b?.label || ''));\r\n this.label = this.dialogData.label;\r\n }\r\n\r\n trackBySkill(index: number, skill: SkillScore) {\r\n return skill?.skillCode != null ? 'k' + skill.skillCode : 'i' + index;\r\n }\r\n}\r\n","<header class=\"px-md-4 p-3 modal-header assessment-bg-grey-one\">\r\n <p class=\"modal-title mb-0 assessment-text-semibold-18\" id=\"staticBackdropLabel\">\r\n {{label['COMMONS_ASSESSMENT.LABEL.SKILL_EVALUATION']}}\r\n </p>\r\n <button mat-dialog-close type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\r\n </button>\r\n</header>\r\n<div class=\"p-3 px-md-4\">\r\n <div class=\"d-flex col-12 gap-md-2\">\r\n <p class=\"flex-grow-1 assessment-text-medium-12 mb-0\"></p>\r\n <p class=\"assessment-text-medium-12 assessment-text-grey-eight mb-0 marks text-center\">\r\n {{label['COMMONS_ASSESSMENT.LABEL.QUESTIONS']}}</p>\r\n <p class=\"assessment-text-medium-12 assessment-text-grey-eight mb-0 marks text-center\">\r\n {{label['COMMONS_ASSESSMENT.LABEL.MARKS']}}</p>\r\n </div>\r\n <div class=\"d-flex col-12 py-3 gap-md-2\" *ngFor=\"let skill of skillList; let isLast = last; trackBy: trackBySkill\"\r\n [ngClass]=\"{'border-bottom': !isLast}\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"col-auto assessment-text-medium-12 assessment-text-grey-ten rounded-2 skill-chip px-2 py-1\">{{skill?.label}}</div>\r\n </div>\r\n <p class=\"assessment-text-semibold-18 mb-0 marks text-center\">{{skill?.totalQuestions ?? 0}}</p>\r\n <p class=\"assessment-text-semibold-18 mb-0 marks text-center\">\r\n {{skill.obtainedMarks}} / {{skill?.totalMarks}}</p>\r\n </div>\r\n</div>","import { Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-confirmation-dialog',\r\n templateUrl: './confirmation-dialog.component.html',\r\n styleUrls: ['./confirmation-dialog.component.scss']\r\n})\r\nexport class ConfirmationDialogComponent {\r\n title: string;\r\n message: string;\r\n note: string;\r\n confirmLabel: string;\r\n cancelLabel: string;\r\n hideCancel: boolean;\r\n loading = false;\r\n errorMessage = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ConfirmationDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: {\r\n title?: string;\r\n message?: string;\r\n // Optional secondary line shown below the main message (e.g. usage guidance).\r\n note?: string;\r\n confirmLabel?: string;\r\n cancelLabel?: string;\r\n hideCancel?: boolean;\r\n // Optional async action run on confirm — the dialog shows a loader and stays open\r\n // until it completes, closing with `true` on success or staying open on error.\r\n confirmAction?: () => Observable<any>;\r\n }\r\n ) {\r\n this.title = data?.title || '';\r\n this.message = data?.message || '';\r\n this.note = data?.note || '';\r\n this.confirmLabel = data?.confirmLabel || '';\r\n this.cancelLabel = data?.cancelLabel || '';\r\n this.hideCancel = !!data?.hideCancel;\r\n }\r\n\r\n onConfirm() {\r\n if (this.data?.confirmAction) {\r\n if (this.loading) {\r\n return;\r\n }\r\n this.loading = true;\r\n this.errorMessage = '';\r\n this.data.confirmAction().subscribe({\r\n next: () => this.dialogRef.close(true),\r\n error: (err: any) => {\r\n // keep the dialog open so the user can fix the issue and retry\r\n this.loading = false;\r\n this.errorMessage = (typeof err === 'string' ? err : err?.message) || '';\r\n }\r\n });\r\n return;\r\n }\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onCancel() {\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n","<div class=\"p-3 px-md-4\">\r\n <h2 *ngIf=\"title\" class=\"assessment-text-semibold-16 assessment-text-grey-ten mb-3\">{{ title }}</h2>\r\n <p class=\"assessment-text-regular-14 assessment-text-grey-ten\" [class.mb-4]=\"!note\" [class.mb-2]=\"note\">{{ message }}</p>\r\n <p *ngIf=\"note\" class=\"assessment-text-regular-13 assessment-text-grey-seven mb-4\">{{ note }}</p>\r\n <p *ngIf=\"errorMessage\" class=\"assessment-text-regular-12 assessment-text-danger mb-3\">{{ errorMessage }}</p>\r\n <div class=\"d-flex justify-content-end gap-2\">\r\n <button *ngIf=\"!hideCancel\" type=\"button\" (click)=\"onCancel()\" [disabled]=\"loading\"\r\n class=\"assessment-zoom-animation assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ cancelLabel }}\r\n </button>\r\n <button type=\"button\" (click)=\"onConfirm()\" [disabled]=\"loading\"\r\n class=\"assessment-zoom-animation assessment-btn-primary assessment-border-radius-two assessment-text-semibold-13 px-3 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ confirmLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n","const COMMONS_ASSESSMENT_SERVICE = '/gateway/commons-assessment-service';\r\nconst COMMONS_CHANGEMAKER_ORCHESTRATION_SERVICE = '/gateway/commons-changemaker-orchestration-service';\r\n\r\nexport const googleDriveController = {\r\n checkPublic: COMMONS_CHANGEMAKER_ORCHESTRATION_SERVICE + '/api/v1/consent/google-drive/public?'\r\n}\r\n\r\nexport const refDataController = {\r\n getRefDataByCode: COMMONS_ASSESSMENT_SERVICE + '/api/v1/ref-data/class/$Code?'\r\n}\r\n\r\n\r\nexport const assessmentMakerController = {\r\n assessmentAndQuestionPaper: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessments/bundled',\r\n createQuestion: COMMONS_ASSESSMENT_SERVICE + '/api/v2/questions',\r\n patchQuestion: COMMONS_ASSESSMENT_SERVICE + '/api/v2/questions',\r\n getAssessmentContext: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessments/context?',\r\n getQuestionsByIds: COMMONS_ASSESSMENT_SERVICE + '/api/v2/questions/questionids',\r\n duplicateQuestion: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentQuestionPapers/questionPaperSection/$SectionId/sectionQuestions/$SectionQuestionId/duplicate',\r\n duplicateSection: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentQuestionPapers/$AssessmentQuestionPaperId/questionPaperSection/$SectionId/duplicate',\r\n createAssessmentInstance: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentinstances',\r\n getResponseCount: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessment-instance-assesses/count?'\r\n}\r\n\r\nexport const assessmentTakerController = {\r\n getAssessmentContextById: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessments/context?',\r\n getAssessmentQuestionPaper: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessmentQuestionPapers?',\r\n getAssessmentQuestions: COMMONS_ASSESSMENT_SERVICE + '/api/v3/questions/questions/instance?',\r\n getChildQuestionsWithIdList: COMMONS_ASSESSMENT_SERVICE + '/api/v3/questions/childquestion/instance?',\r\n uploadAttachment: COMMONS_ASSESSMENT_SERVICE + '/api/v1/consent/assessmentInstanceAssesses/question/attachments?',\r\n getAttachments: COMMONS_ASSESSMENT_SERVICE + '/api/v1/attachments/ids?',\r\n createAssessmentInstanceAssesse: COMMONS_ASSESSMENT_SERVICE + '/api/v3/assessmentInstanceAssesses',\r\n updateAssessmentInstanceAssesse: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessmentInstanceAssesses',\r\n getAnswersByAiaId: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessmentInstanceAssesses/',\r\n updateMarks: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentInstanceAssesses/marks',\r\n refreshProctoringToken: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentInstanceAssesses/$Id/proctoring-token/refresh',\r\n endProctoringSession: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentInstanceAssesses/$Id/proctoring-session/end',\r\n getProctoringSessions: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentInstanceAssesses/$Id/proctoring-sessions?',\r\n getProctoringReportBySession: COMMONS_ASSESSMENT_SERVICE + '/api/v1/proctoring-reports/session/$Id'\r\n}","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport * as controllers from '../../../shared/controllers';\r\n\r\n@Injectable()\r\nexport class AssessmentTakerService {\r\n private readonly assetsBaseUrl = document?.baseURI?.replace(/\\/$/, '');\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n private getHeaders(): HttpHeaders {\r\n return new HttpHeaders().set('X-Library-Source', 'commons-assessment');\r\n }\r\n\r\n createParams(params: any): HttpParams {\r\n let param = new HttpParams();\r\n for (const key of Object.keys(params)) {\r\n param = param.set(key, params[key]);\r\n }\r\n return param;\r\n }\r\n\r\n getConfigJSON(fileName: string) {\r\n return this.http.get(`${this.assetsBaseUrl}/assets/commons-assessment/${fileName}.json`);\r\n }\r\n\r\n getAssessmentContextById(params: any) {\r\n return this.http.get(controllers.assessmentTakerController.getAssessmentContextById + this.createParams(params), { headers: this.getHeaders() });\r\n }\r\n\r\n getAssessmentQuestionPaper(instanceId: number) {\r\n return this.http.get(controllers.assessmentTakerController.getAssessmentQuestionPaper + this.createParams({ instanceId }), { headers: this.getHeaders() });\r\n }\r\n\r\n getAssessmentQuestions(instanceId: any, questionIds: any) {\r\n return this.http.get(controllers.assessmentTakerController.getAssessmentQuestions + this.createParams({ instanceId, questionIds }), { headers: this.getHeaders() });\r\n }\r\n\r\n getChildQuestionsWithIdList(instanceId: any, questionIds: any) {\r\n return this.http.get(controllers.assessmentTakerController.getChildQuestionsWithIdList + this.createParams({ instanceId, questionIds }), { headers: this.getHeaders() });\r\n }\r\n\r\n uploadAttachment(fileUploadPayload: FormData, params: any) {\r\n return this.http.post(controllers.assessmentTakerController.uploadAttachment + this.createParams(params), fileUploadPayload, { headers: this.getHeaders() });\r\n }\r\n\r\n getAttachments(params: any) {\r\n return this.http.get(controllers.assessmentTakerController.getAttachments + this.createParams(params), { headers: this.getHeaders() });\r\n }\r\n\r\n submitAssessment(payload: any) {\r\n return this.http.post(controllers.assessmentTakerController.createAssessmentInstanceAssesse, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n patchAssessment(payload: any) {\r\n return this.http.patch(controllers.assessmentTakerController.updateAssessmentInstanceAssesse, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n getAnswersByAiaId(aiaId: any) {\r\n return this.http.get(controllers.assessmentTakerController.getAnswersByAiaId + aiaId, { headers: this.getHeaders() });\r\n }\r\n\r\n updateMarks(payload: any) {\r\n return this.http.patch(controllers.assessmentTakerController.updateMarks, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n refreshProctoringToken(assesseeId: number) {\r\n return this.http.post(controllers.assessmentTakerController.refreshProctoringToken.replace('$Id', assesseeId?.toString()), {}, { headers: this.getHeaders() });\r\n }\r\n\r\n endProctoringSession(assesseeId: number) {\r\n return this.http.post(controllers.assessmentTakerController.endProctoringSession.replace('$Id', assesseeId?.toString()), '', { headers: this.getHeaders() });\r\n }\r\n\r\n getProctoringSessions(assesseeId: number, params: any) {\r\n return this.http.get(controllers.assessmentTakerController.getProctoringSessions.replace('$Id', assesseeId?.toString()) + this.createParams(params), { headers: this.getHeaders() });\r\n }\r\n\r\n getProctoringReportBySession(sessionId: number) {\r\n return this.http.get(controllers.assessmentTakerController.getProctoringReportBySession.replace('$Id', sessionId?.toString()), { headers: this.getHeaders() });\r\n }\r\n\r\n checkGoogleDriveLinkPublic(googleDriveLink: string) {\r\n return this.http.get(controllers.googleDriveController.checkPublic + this.createParams({ googleDriveLink }), { headers: this.getHeaders() });\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { AssessmentTakerService } from '../../services/assessment-taker.service';\r\nimport { ProctoringPayload, ProctoringReport, ProctoringSessionSummary } from '../../../../shared/interfaces/proctoring.interface';\r\n\r\ntype ReportState = 'loading' | 'loaded' | 'empty' | 'error';\r\n\r\n@Component({\r\n selector: 'lib-proctoring-result',\r\n templateUrl: './proctoring-result.component.html',\r\n styleUrls: ['./proctoring-result.component.scss']\r\n})\r\nexport class ProctoringResultComponent implements OnInit {\r\n labelConfig: { [key: string]: string };\r\n imageConfig: { [key: string]: string };\r\n assesseeId: number;\r\n assesseeName: string;\r\n\r\n sessions: ProctoringSessionSummary[] = [];\r\n loading = false;\r\n errored = false;\r\n totalElements = 0;\r\n last = true;\r\n private page = 0;\r\n private readonly size = 20;\r\n\r\n // per-session lazy report data + state (keyed by session id)\r\n reportBySession: { [sessionId: number]: ProctoringReport } = {};\r\n reportState: { [sessionId: number]: ReportState } = {};\r\n private parsedCache: { [reportId: number]: ProctoringPayload | null } = {};\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ProctoringResultComponent>,\r\n private assessmentTakerService: AssessmentTakerService,\r\n @Inject(MAT_DIALOG_DATA) public data: {\r\n labelConfig?: { [key: string]: string };\r\n imageConfig?: { [key: string]: string };\r\n assesseeId?: number;\r\n assesseeName?: string;\r\n }\r\n ) {\r\n this.labelConfig = data?.labelConfig || {};\r\n this.imageConfig = data?.imageConfig || {};\r\n this.assesseeId = data?.assesseeId as number;\r\n this.assesseeName = data?.assesseeName || '';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadSessions();\r\n }\r\n\r\n loadSessions(): void {\r\n if (!this.assesseeId || this.loading) {\r\n if (!this.assesseeId) { this.errored = true; }\r\n return;\r\n }\r\n this.loading = true;\r\n this.errored = false;\r\n this.assessmentTakerService\r\n .getProctoringSessions(this.assesseeId, { direction: 'desc', page: this.page, size: this.size, sortBy: 'id' })\r\n .subscribe({\r\n next: (res: any) => {\r\n this.sessions = [...this.sessions, ...(res?.content || [])];\r\n this.totalElements = res?.totalElements ?? this.sessions.length;\r\n this.last = res?.last ?? true;\r\n this.loading = false;\r\n },\r\n error: () => {\r\n this.loading = false;\r\n this.errored = true;\r\n }\r\n });\r\n }\r\n\r\n loadMore(): void {\r\n if (!this.last && !this.loading) {\r\n this.page++;\r\n this.loadSessions();\r\n }\r\n }\r\n\r\n /** Fetches the report for a session the first time its panel is expanded. */\r\n loadReport(session: ProctoringSessionSummary): void {\r\n const id = session?.id;\r\n if (id == null || this.reportState[id] === 'loading' || this.reportState[id] === 'loaded') {\r\n return;\r\n }\r\n this.reportState[id] = 'loading';\r\n this.assessmentTakerService.getProctoringReportBySession(id).subscribe({\r\n next: (res: any) => {\r\n if (!res || typeof res !== 'object') {\r\n this.reportState[id] = 'empty';\r\n return;\r\n }\r\n this.reportBySession[id] = res;\r\n this.reportState[id] = 'loaded';\r\n },\r\n error: (err: any) => {\r\n // no report yet (e.g. session not validated) → empty; anything else → error\r\n this.reportState[id] = err?.status === 404 ? 'empty' : 'error';\r\n }\r\n });\r\n }\r\n\r\n trackBySessionId(_index: number, session: ProctoringSessionSummary): number {\r\n return session?.id ?? _index;\r\n }\r\n\r\n trackByIndex(index: number): number {\r\n return index;\r\n }\r\n\r\n /** Parses (and caches) the reportPayload JSON. Returns null if absent or not valid JSON. */\r\n getParsedPayload(report: ProctoringReport): ProctoringPayload | null {\r\n const id = report?.id ?? -1;\r\n if (!(id in this.parsedCache)) {\r\n try {\r\n this.parsedCache[id] = report?.reportPayload ? JSON.parse(report.reportPayload) : null;\r\n } catch {\r\n this.parsedCache[id] = null;\r\n }\r\n }\r\n return this.parsedCache[id];\r\n }\r\n\r\n /** Formats a duration in seconds as `Mm Ss` (or `Ss` under a minute). */\r\n formatDuration(seconds?: number): string {\r\n if (seconds == null) { return ''; }\r\n const m = Math.floor(seconds / 60);\r\n const s = seconds % 60;\r\n return m > 0 ? `${m}m ${s}s` : `${s}s`;\r\n }\r\n\r\n /** Session timestamps are epoch milliseconds already; guard 0/undefined so nothing renders. */\r\n toMillis(epochMillis?: number): number | null {\r\n return epochMillis ? epochMillis : null;\r\n }\r\n\r\n /**\r\n * Theme badge classes for a session status.\r\n * ACTIVE = running, VALIDATING = report in progress, VALIDATED = report ready,\r\n * ENDED = stopped/invalidated, FAILED = errored.\r\n */\r\n statusBadgeClass(status?: string): string {\r\n switch ((status || '').toUpperCase()) {\r\n case 'ACTIVE': return 'assessment-bg-primary-one assessment-text-white';\r\n case 'VALIDATING': return 'assessment-bg-warning assessment-text-white';\r\n case 'VALIDATED': return 'assessment-bg-success assessment-text-white';\r\n case 'FAILED': return 'assessment-bg-danger assessment-text-white';\r\n case 'ENDED':\r\n default: return 'assessment-bg-grey-six assessment-text-white';\r\n }\r\n }\r\n\r\n /** Maps a raw event code (e.g. `tab.hidden`) to a friendly label, falling back to the raw code. */\r\n eventTypeLabel(type?: string): string {\r\n if (!type) { return ''; }\r\n return this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.EVENT.' + type] || type;\r\n }\r\n\r\n /** Maps a raw reason code (e.g. `browser_activity`) to a friendly label, falling back to the raw code. */\r\n reasonCodeLabel(code?: string): string {\r\n if (!code) { return ''; }\r\n return this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.REASON.' + code] || code;\r\n }\r\n\r\n /** Highlights integrity-relevant timeline events (tab switches, face issues, session markers). */\r\n isNoteworthy(type?: string): boolean {\r\n if (!type) { return false; }\r\n return type.includes('tab.') || type.includes('no_face') || type.includes('multi_face')\r\n || type.includes('session.') || type.includes('camera.') || type.includes('clipboard')\r\n || type.includes('fullscreen');\r\n }\r\n\r\n close(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string): void {\r\n event.target.src = filePath;\r\n }\r\n}\r\n","<div class=\"d-flex flex-column h-100 overflow-hidden assessment-bg-white\">\r\n\r\n <!-- Header -->\r\n <div class=\"d-flex align-items-start justify-content-between gap-3 p-3 px-md-4 border-bottom\">\r\n <div class=\"flex-grow-1\">\r\n <p class=\"assessment-text-semibold-16 assessment-text-grey-ten mb-1\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.RESULT_TITLE'] }}\r\n </p>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0\">\r\n <span *ngIf=\"assesseeName\">{{ assesseeName }} · </span>{{ totalElements }} {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_COUNT'] }}\r\n </p>\r\n </div>\r\n <button type=\"button\" class=\"btn-close\" (click)=\"close()\" aria-label=\"Close\"></button>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"flex-grow-1 overflow-auto p-3 px-md-4\">\r\n\r\n <!-- Loading (initial) -->\r\n <div *ngIf=\"loading && !sessions.length\" class=\"d-flex align-items-center justify-content-center gap-2 py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngIf=\"errored && !sessions.length\" class=\"text-center py-5\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-3\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadSessions()\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- Empty -->\r\n <div *ngIf=\"!loading && !errored && !sessions.length\" class=\"text-center py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Sessions accordion -->\r\n <mat-accordion class=\"d-block\" *ngIf=\"sessions.length\">\r\n <mat-expansion-panel *ngFor=\"let session of sessions; trackBy: trackBySessionId\"\r\n class=\"shadow-none assessment-border-radius-two assessment-panel border mb-2\" (opened)=\"loadReport(session)\">\r\n\r\n <mat-expansion-panel-header class=\"proctoring-panel-header p-3\">\r\n <mat-panel-title class=\"d-flex flex-column my-1 align-items-start\">\r\n <span class=\"assessment-text-semibold-13 assessment-text-grey-ten\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_SESSION'] }} {{ session.id }}\r\n </span>\r\n <span class=\"d-flex align-items-center gap-2 mt-1\">\r\n <span *ngIf=\"session.status\" class=\"badge rounded-pill text-capitalize assessment-text-medium-10\" [ngClass]=\"statusBadgeClass(session.status)\">\r\n {{ session.status }}\r\n </span>\r\n <span *ngIf=\"session?.integritySummary?.integrityFlagged\"\r\n class=\"badge rounded-pill assessment-bg-danger assessment-text-white assessment-text-medium-10\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FLAGGED'] }}\r\n </span>\r\n </span>\r\n </mat-panel-title>\r\n <mat-panel-description class=\"justify-content-end align-items-center me-3\">\r\n <span *ngIf=\"toMillis(session.startedAt) as started\" class=\"assessment-text-regular-11 assessment-text-grey-seven\">\r\n {{ started | date:'dd MMM, HH:mm' }}\r\n </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Report is fetched when the panel opens -->\r\n <ng-template matExpansionPanelContent>\r\n <div class=\"p-3 pt-1\" [ngSwitch]=\"reportState[session.id!]\">\r\n\r\n <!-- Loading -->\r\n <div *ngSwitchCase=\"'loading'\" class=\"d-flex align-items-center gap-2 py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngSwitchCase=\"'error'\" class=\"py-3\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadReport(session)\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- No report yet -->\r\n <div *ngSwitchCase=\"'empty'\" class=\"py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Loaded report -->\r\n <ng-container *ngSwitchCase=\"'loaded'\">\r\n <ng-container *ngIf=\"reportBySession[session.id!] as report\">\r\n\r\n <!-- Integrity summary (report top-level) -->\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_INTEGRITY_SCORE'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\" [class.assessment-text-danger]=\"report.integrityFlagged\">\r\n {{ report.integrityScore }}<span *ngIf=\"report.integrityLevel\"> ({{ report.integrityLevel }})</span>\r\n </p>\r\n </div>\r\n <div class=\"col-6\" *ngIf=\"report.identityMatch\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IDENTITY_MATCH'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\">{{ report.identityMatch }}</p>\r\n </div>\r\n <div class=\"col-12\" *ngIf=\"report.failureReason\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FAILURE_REASON'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-0\">{{ report.failureReason }}</p>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getParsedPayload(report) as p; else rawPayload\">\r\n\r\n <!-- Summary meta -->\r\n <div class=\"d-flex flex-wrap align-items-center gap-2 mt-3 assessment-text-regular-12 assessment-text-grey-seven\">\r\n <span *ngIf=\"p.duration_seconds != null\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_DURATION'] }}: {{ formatDuration(p.duration_seconds) }}</span>\r\n <span *ngIf=\"p.started_at\">· {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_STARTED'] }}: {{ p.started_at | date:'dd MMM, HH:mm:ss' }}</span>\r\n <span *ngIf=\"p.ended_at\">· {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ENDED'] }}: {{ p.ended_at | date:'HH:mm:ss' }}</span>\r\n </div>\r\n\r\n <!-- Reasons -->\r\n <div *ngIf=\"p.integrity?.reasons?.length\" class=\"d-flex flex-column gap-2 mt-2\">\r\n <div *ngFor=\"let r of p.integrity?.reasons; trackBy: trackByIndex\" class=\"border rounded p-2\">\r\n <div class=\"d-flex align-items-center justify-content-between gap-2\">\r\n <span class=\"assessment-text-semibold-12 assessment-text-grey-ten\">{{ reasonCodeLabel(r.code) }}</span>\r\n <span *ngIf=\"r.weight != null\" class=\"badge rounded-pill assessment-text-white\" [ngClass]=\"(r.weight || 0) < 0 ? 'assessment-bg-danger' : 'assessment-bg-success'\">{{ (r.weight || 0) > 0 ? '+' : '' }}{{ r.weight }}</span>\r\n </div>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0 mt-1\">{{ r.detail }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Stat tiles: face analysis -->\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ANALYSIS'] }}</p>\r\n <div class=\"row row-cols-2 row-cols-md-4 g-2 text-center\">\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\">{{ p.face_analysis?.frames_checked ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FRAMES'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.no_face_frames || 0) > 0\">{{ p.face_analysis?.no_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_NO_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.multi_face_frames || 0) > 0\">{{ p.face_analysis?.multi_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_MULTI_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.impersonation_frames || 0) > 0\">{{ p.face_analysis?.impersonation_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IMPERSONATION'] }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Activity breakdown -->\r\n <div *ngIf=\"p.activity?.by_type\" class=\"d-flex flex-wrap gap-2 mt-3\">\r\n <span *ngFor=\"let item of (p.activity?.by_type | keyvalue); trackBy: trackByIndex\"\r\n class=\"badge rounded-pill assessment-bg-palette-EDF3FD assessment-text-grey-ten assessment-text-medium-12\">\r\n {{ eventTypeLabel(item.key) }} <span class=\"assessment-text-semibold-12\">{{ item.value }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- Evidence images -->\r\n <ng-container *ngIf=\"p.evidence?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EVIDENCE'] }}</p>\r\n <div class=\"d-flex flex-wrap gap-3\">\r\n <a *ngFor=\"let ev of p.evidence; trackBy: trackByIndex\" class=\"text-center text-decoration-none\"\r\n [href]=\"ev.image_url\" target=\"_blank\" rel=\"noopener\">\r\n <img class=\"proctoring-evi-img rounded border\" [src]=\"ev.image_url\" [attr.alt]=\"'frame ' + ev.seq\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/user.svg')\" />\r\n <span class=\"d-block assessment-text-regular-11 assessment-text-grey-seven mt-1\">\r\n <span *ngIf=\"ev.is_reference\" class=\"badge rounded-pill assessment-bg-primary-one assessment-text-white me-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_REFERENCE'] }}</span>\r\n #{{ ev.seq }} · {{ ev.captured_at | date:'HH:mm:ss' }}\r\n </span>\r\n </a>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Timeline -->\r\n <ng-container *ngIf=\"p.timeline?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_TIMELINE'] }} ({{ p.timeline?.length }})\r\n </p>\r\n <div class=\"proctoring-log assessment-bg-grey-ten assessment-text-grey-one font-monospace small rounded p-3 overflow-auto\">\r\n <div *ngFor=\"let ev of p.timeline; trackBy: trackByIndex\" class=\"text-nowrap\" [class.fw-semibold]=\"isNoteworthy(ev.type)\">\r\n <span class=\"assessment-text-grey-five me-2\">#{{ ev.seq }}</span>\r\n <span [class.assessment-text-palette-ADC9F6]=\"isNoteworthy(ev.type)\">{{ eventTypeLabel(ev.type) }}</span>\r\n <span class=\"assessment-text-grey-five ms-2\">{{ ev.at | date:'HH:mm:ss' }} ({{ ev.source }})</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <!-- Fallback: raw payload if it isn't parseable JSON -->\r\n <ng-template #rawPayload>\r\n <pre *ngIf=\"report.reportPayload\" class=\"proctoring-payload assessment-bg-grey-ten assessment-text-grey-one small rounded p-3 overflow-auto mb-0 mt-3\">{{ report.reportPayload }}</pre>\r\n </ng-template>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n <!-- Load more -->\r\n <div *ngIf=\"sessions.length && !last\" class=\"text-center mt-3\">\r\n <button type=\"button\" (click)=\"loadMore()\" [disabled]=\"loading\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.LOAD_MORE'] }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { deepClone } from '../../../shared/utils';\r\nimport { AssessmentQuestionPaper, SectionQuestion } from '../../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentInstanceAssesseDTO } from '../../../shared/interfaces/assessment.interface';\r\nimport { AssessmentQuestion } from '../../../shared/interfaces/question.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResponseBuilderService {\r\n\r\n constructor() { }\r\n\r\n /**\r\n * Builds the payload used to create the assessee record up front (marked in-progress) so the\r\n * backend issues a proctoring session / anchors the timer. Optionally carries the captured\r\n * reference image (base64) for proctoring's first attempt.\r\n */\r\n buildInitAssesseePayload(\r\n assesseeResponse: AssessmentInstanceAssesseDTO,\r\n assessmentData: AssessmentQuestionPaper,\r\n sectionFormGroups: { sectionId: number; formGroup: FormGroup }[],\r\n questionBank: Record<number, AssessmentQuestion>,\r\n tenant: number,\r\n referenceImageBase64: string = ''\r\n ) {\r\n assesseeResponse.assessmentTaken = { code: 'ASSESSMENT_TAKEN.INCOMPLETE' };\r\n const payload = this.buildResponsePayload(assesseeResponse, assessmentData, sectionFormGroups, questionBank, tenant);\r\n // send the captured reference image + host origin so the backend registers it for identity verification\r\n if (referenceImageBase64) {\r\n payload.proctoring = { ...(payload.proctoring || {}), referenceImageBase64, appBaseUrl: window.location.origin };\r\n }\r\n return payload;\r\n }\r\n\r\n buildResponsePayload(\r\n assesseeResponse: AssessmentInstanceAssesseDTO,\r\n assessmentData: AssessmentQuestionPaper,\r\n sectionFormGroups: { sectionId: number; formGroup: FormGroup }[],\r\n questionBank: Record<number, AssessmentQuestion>,\r\n tenant: number\r\n ) {\r\n const requestPayload = deepClone(assesseeResponse);\r\n requestPayload.aiadefaultResponseList = [];\r\n\r\n assessmentData?.questionPaperSectionList?.forEach((section: any) => {\r\n const sectionFormGroupWrapper = sectionFormGroups.find((s: any) => s.sectionId === section.id);\r\n if (sectionFormGroupWrapper) {\r\n const formGroup = sectionFormGroupWrapper.formGroup;\r\n\r\n section.sectionQuestionsList?.forEach((sectionQuestion: SectionQuestion) => {\r\n const ques = questionBank[sectionQuestion?.questionId || -1];\r\n if (!ques) return;\r\n\r\n const quesResObj = this.getQuestionResponseObj(formGroup, ques?.id, questionBank);\r\n const questionResponseObj = quesResObj.questionResponseObj;\r\n\r\n if (questionResponseObj) {\r\n let reqObj = Object.assign({}, questionResponseObj);\r\n delete reqObj.defaultOption;\r\n\r\n const existingAns = assesseeResponse.aiadefaultResponseList?.find((a: any) =>\r\n a.sectionQuestion?.questionId === sectionQuestion.questionId && !a.childQuestionId\r\n );\r\n\r\n this.mergeExistingIds(reqObj, existingAns);\r\n\r\n if (!existingAns && reqObj.drobjectiveresponseList && reqObj.drobjectiveresponseList.length === 0) return;\r\n if (!existingAns && reqObj.attachmentResponseList && reqObj.attachmentResponseList.length === 0) return;\r\n\r\n requestPayload.aiadefaultResponseList?.push({\r\n ...reqObj,\r\n id: existingAns?.id || 0,\r\n isActive: true,\r\n sectionQuestion,\r\n tenant,\r\n marks: formGroup.get(`${ques.id}_marks`)?.value != null ? Number(formGroup.get(`${ques.id}_marks`)?.value) : null\r\n });\r\n\r\n if (quesResObj.childQuesResObj?.length) {\r\n quesResObj.childQuesResObj.forEach((childData: any) => {\r\n const childObj = childData?.questionResponseObj;\r\n const childDetails = childData?.childQuestionDetails;\r\n if (!childObj || !childDetails) return;\r\n\r\n let specificChildReqObj = Object.assign({}, childObj);\r\n delete specificChildReqObj.defaultOption;\r\n\r\n const existingChildAns = assesseeResponse.aiadefaultResponseList?.find((a: any) =>\r\n a.childQuestionId === childDetails.id &&\r\n a.childQuestionParentQuestionId === sectionQuestion.questionId\r\n );\r\n\r\n this.mergeExistingIds(specificChildReqObj, existingChildAns);\r\n\r\n if (!existingChildAns && specificChildReqObj.drobjectiveresponseList && specificChildReqObj.drobjectiveresponseList.length === 0) return;\r\n if (!existingChildAns && specificChildReqObj.attachmentResponseList && specificChildReqObj.attachmentResponseList.length === 0) return;\r\n\r\n requestPayload.aiadefaultResponseList?.push({\r\n childQuestionId: childDetails.id,\r\n childQuestionParentQuestionId: sectionQuestion.questionId,\r\n childDefaultOptionId: childData.parentOptionId,\r\n ...specificChildReqObj,\r\n id: existingChildAns?.id || 0,\r\n isActive: true,\r\n sectionQuestion,\r\n tenant,\r\n marks: formGroup.get(`${childDetails.id}_marks`)?.value != null ? Number(formGroup.get(`${childDetails.id}_marks`)?.value) : null\r\n });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n return requestPayload;\r\n }\r\n\r\n private mergeExistingIds(newAns: any, existingAns: any) {\r\n if (!existingAns) return;\r\n\r\n if (newAns.drsubjectiveresponseList && existingAns.drsubjectiveresponseList) {\r\n newAns.drsubjectiveresponseList.forEach((nItem: any, idx: number) => {\r\n if (existingAns.drsubjectiveresponseList[idx]) {\r\n nItem.id = existingAns.drsubjectiveresponseList[idx].id;\r\n }\r\n });\r\n }\r\n if (newAns.drobjectiveresponseList && existingAns.drobjectiveresponseList) {\r\n newAns.drobjectiveresponseList.forEach((nItem: any, idx: number) => {\r\n const existingItem = existingAns.drobjectiveresponseList.find((eItem: any) =>\r\n eItem.defaultOption?.options?.id === nItem.defaultOption?.options?.id\r\n );\r\n if (existingItem) {\r\n nItem.id = existingItem.id;\r\n }\r\n });\r\n\r\n existingAns.drobjectiveresponseList.forEach((eItem: any) => {\r\n const stillExists = newAns.drobjectiveresponseList.find((nItem: any) =>\r\n nItem.defaultOption?.options?.id === eItem.defaultOption?.options?.id\r\n );\r\n if (!stillExists) {\r\n newAns.drobjectiveresponseList.push({\r\n ...eItem,\r\n isActive: false\r\n });\r\n } else {\r\n stillExists.isActive = true;\r\n }\r\n });\r\n }\r\n\r\n if (newAns.attachmentResponseList && existingAns.attachmentResponseList) {\r\n newAns.attachmentResponseList.forEach((nItem: any) => {\r\n const existingItem = existingAns.attachmentResponseList.find((eItem: any) =>\r\n eItem.id === nItem.id\r\n );\r\n if (existingItem) {\r\n nItem.id = existingItem.id;\r\n }\r\n });\r\n\r\n existingAns.attachmentResponseList.forEach((eItem: any) => {\r\n const stillExists = newAns.attachmentResponseList.find((nItem: any) =>\r\n nItem.id === eItem.id\r\n );\r\n if (!stillExists) {\r\n newAns.attachmentResponseList.push({\r\n ...eItem,\r\n isActive: false\r\n });\r\n } else {\r\n stillExists.isActive = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n private getQuestionResponseObj(formGroup: any, quesId: number = -1, questionBank: any): any {\r\n const questionDetails = questionBank[quesId];\r\n if (!questionDetails) return { questionResponseObj: null, childQuesResObj: [] };\r\n\r\n let questionResponseObj: any = {};\r\n let childQuesResObj: any = [];\r\n const rawValues = formGroup?.getRawValue ? formGroup.getRawValue() : (formGroup?.value || {});\r\n const val = rawValues[quesId];\r\n\r\n const qType = questionDetails.questionType?.code;\r\n\r\n // if (!val && qType !== 'QUESTION_TYPE.MULTI_SELECT' && qType !== 'QUESTION_TYPE.PREFERENCE' && qType !== 'QUESTION_TYPE.FILE_UPLOAD') {\r\n // return { questionResponseObj: null, childQuesResObj: [] };\r\n // }\r\n\r\n if (qType === 'QUESTION_TYPE.OBJECTIVE') {\r\n const defaultOptions = questionDetails?.defaultOptionsList || [];\r\n const selectedOption = defaultOptions?.find((i: any) => i?.options?.id === val?.id) || {};\r\n\r\n if (selectedOption) {\r\n questionResponseObj = {\r\n optionId: selectedOption?.options,\r\n defaultOption: selectedOption\r\n };\r\n\r\n if (selectedOption.remarksRequired) {\r\n const remarksVal = rawValues[`${quesId}_remarks_${selectedOption.id}`];\r\n if (remarksVal) {\r\n questionResponseObj.remarks = remarksVal;\r\n }\r\n }\r\n\r\n const childQuesIds = selectedOption.childQuestionList || [];\r\n childQuesIds.forEach((childId: number) => {\r\n const childResponse = this.getQuestionResponseObj(formGroup, childId, questionBank);\r\n if (childResponse?.questionResponseObj) {\r\n childQuesResObj.push({\r\n questionResponseObj: childResponse.questionResponseObj,\r\n childQuestionDetails: questionBank[childId],\r\n parentOptionId: selectedOption.options.id\r\n });\r\n if (childResponse.childQuesResObj?.length) {\r\n childQuesResObj = childQuesResObj.concat(childResponse.childQuesResObj);\r\n }\r\n }\r\n });\r\n } else {\r\n questionResponseObj = null;\r\n }\r\n } else if (qType === 'QUESTION_TYPE.MULTI_SELECT' || qType === 'QUESTION_TYPE.PREFERENCE') {\r\n const defaultOptions = questionDetails.defaultOptionsList || [];\r\n const drobjectiveresponseList: any[] = [];\r\n\r\n let valArray = Array.isArray(val) ? val : (val ? [val] : []);\r\n\r\n valArray.forEach((opt: any, index: number) => {\r\n const selectedOption = defaultOptions.find((i: any) => i.options?.id === opt.id);\r\n if (selectedOption) {\r\n const obj: any = {\r\n id: 0,\r\n defaultOption: selectedOption\r\n };\r\n\r\n if (qType === 'QUESTION_TYPE.PREFERENCE') {\r\n obj.orderNo = index + 1;\r\n }\r\n\r\n if (selectedOption.remarksRequired) {\r\n const remarksVal = rawValues[`${quesId}_remarks_${selectedOption.id}`];\r\n if (remarksVal) {\r\n obj.remarks = remarksVal;\r\n }\r\n }\r\n\r\n drobjectiveresponseList.push(obj);\r\n\r\n const childQuesIds = selectedOption.childQuestionList || [];\r\n childQuesIds.forEach((childId: number) => {\r\n const childResponse = this.getQuestionResponseObj(formGroup, childId, questionBank);\r\n if (childResponse?.questionResponseObj) {\r\n childQuesResObj.push({\r\n questionResponseObj: childResponse.questionResponseObj,\r\n childQuestionDetails: questionBank[childId],\r\n parentOptionId: selectedOption.options.id\r\n });\r\n if (childResponse.childQuesResObj?.length) {\r\n childQuesResObj = childQuesResObj.concat(childResponse.childQuesResObj);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n questionResponseObj = { drobjectiveresponseList };\r\n } else if (qType === 'QUESTION_TYPE.FILE_UPLOAD') {\r\n const attachmentResponseList: any[] = [];\r\n\r\n let valArray = Array.isArray(val) ? val : (val ? [val] : []);\r\n valArray.forEach((opt: any) => {\r\n attachmentResponseList.push(opt);\r\n });\r\n\r\n questionResponseObj = { attachmentResponseList };\r\n } else {\r\n let responseText = val;\r\n if (qType === 'QUESTION_TYPE.DATE_PICKER' && val) {\r\n const dateObj = new Date(val);\r\n if (!isNaN(dateObj.getTime())) {\r\n responseText = dateObj.toISOString();\r\n }\r\n }\r\n questionResponseObj = {\r\n drsubjectiveresponseList: [\r\n {\r\n id: 0,\r\n responseText: responseText\r\n }\r\n ]\r\n };\r\n }\r\n\r\n return { questionResponseObj, childQuesResObj };\r\n }\r\n\r\n buildMarksPayload(assesseeResponse: AssessmentInstanceAssesseDTO) {\r\n const responses: any[] = [];\r\n\r\n assesseeResponse.aiadefaultResponseList?.forEach((response: any) => {\r\n if (response?.marks != null) {\r\n responses.push({\r\n aiaDefaultResponseId: response.id,\r\n marks: Number(response.marks)\r\n });\r\n }\r\n });\r\n\r\n return {\r\n assessmentInstanceAssesseeId: assesseeResponse?.id,\r\n responses: responses\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * Thin wrapper around the ProctorLink browser SDK (`@proctorlink/sdk`).\r\n *\r\n * The SDK is an OPTIONAL dependency. The library never imports it directly — otherwise every\r\n * consumer's bundler would have to resolve `@proctorlink/sdk` at build time (and fail when it\r\n * isn't installed). Instead, a host that uses proctoring passes a `sdkLoader` (e.g.\r\n * `() => import('@proctorlink/sdk')`) so the module reference lives in the host app, where the\r\n * package is installed. Consumers who don't use proctoring never reference it and build cleanly.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProctoringService {\r\n private session: any;\r\n // SDK event unsubscribers — kept for the life of the session and removed only in destroy()\r\n private offHandlers: Array<() => void> = [];\r\n\r\n /**\r\n * Creates a ProctorLink session with the given id + JWT and requests camera access.\r\n * The returned observable completes once the candidate GRANTS camera access, and errors\r\n * with `{ code: 'camera_denied' }` if the camera is denied (so the caller can prompt a retry).\r\n *\r\n * `refreshToken` is called if the SDK emits `token-expired` (the exam outlived the token): it\r\n * must return ONLY the new session JWT, which is handed back to the SDK via `updateToken` to\r\n * resume the same session.\r\n */\r\n start(options: {\r\n sessionId?: string;\r\n jwt: string;\r\n refreshToken?: () => Observable<string>;\r\n // host-provided loader for the SDK, e.g. `() => import('@proctorlink/sdk')`\r\n sdkLoader?: () => Promise<any>;\r\n }): Observable<void> {\r\n return new Observable<void>((observer) => {\r\n let settled = false;\r\n\r\n const succeed = () => {\r\n if (!settled) { settled = true; observer.next(); observer.complete(); }\r\n };\r\n const fail = (err: any) => {\r\n if (!settled) { settled = true; observer.error(err); }\r\n };\r\n\r\n if (!options.sdkLoader) {\r\n fail({ message: 'ProctorLink SDK loader not provided' });\r\n return;\r\n }\r\n\r\n Promise.resolve(options.sdkLoader()).then((sdk: any) => {\r\n try {\r\n const ProctorLink = sdk?.ProctorLink || sdk?.default?.ProctorLink || sdk?.default;\r\n this.session = ProctorLink.createSession({\r\n jwt: options.jwt,\r\n sessionId: options.sessionId,\r\n draggable: true\r\n });\r\n\r\n const offPermission = this.session.on('permission', (result: any) => {\r\n if (result?.camera === 'denied') {\r\n fail({ code: 'camera_denied' });\r\n } else if (result?.camera === 'granted') {\r\n succeed();\r\n }\r\n });\r\n const offError = this.session.on('error', (err: any) => fail(err));\r\n\r\n // token outlived the exam — re-mint for the same session and hand the new JWT back\r\n const offTokenExpired = this.session.on('token-expired', () => {\r\n options.refreshToken?.().subscribe({\r\n next: (jwt: string) => { try { this.session?.updateToken?.(jwt); } catch (e) { /* noop */ } },\r\n error: () => { /* refresh failed; SDK will surface a session error if it can't continue */ }\r\n });\r\n });\r\n\r\n // Keep these listeners for the LIFE of the session — they are removed in destroy().\r\n // (Do NOT tear them down when this observable completes on camera-granted, otherwise the\r\n // long-lived `token-expired`/`error` events would never reach us again.)\r\n this.offHandlers = [offPermission, offError, offTokenExpired].filter((fn) => typeof fn === 'function');\r\n\r\n // mounts the enclave, requests the camera and begins capture\r\n Promise.resolve(this.session.start()).catch((err: any) => fail(err));\r\n } catch (err) {\r\n fail(err);\r\n }\r\n }).catch((err: any) => fail(err));\r\n });\r\n }\r\n\r\n /** Subscribe to the live proctoring event stream. */\r\n onEvent(cb: (event: any) => void) {\r\n return this.session?.onEvent?.(cb);\r\n }\r\n\r\n /** End capture and flush pending data. */\r\n stop() {\r\n try { this.session?.stop?.(); } catch (e) { /* noop */ }\r\n }\r\n\r\n /** Tear down and remove the camera preview. */\r\n destroy(params: { endSession: boolean } = { endSession: true }) {\r\n this.offHandlers.forEach((off) => { try { off(); } catch (e) { /* noop */ } });\r\n this.offHandlers = [];\r\n try { this.session?.destroy?.(params); } catch (e) { /* noop */ }\r\n this.session = undefined;\r\n }\r\n}\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-proctoring-consent',\r\n templateUrl: './proctoring-consent.component.html',\r\n styleUrls: ['./proctoring-consent.component.scss']\r\n})\r\nexport class ProctoringConsentComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild('video') videoRef!: ElementRef<HTMLVideoElement>;\r\n @ViewChild('canvas') canvasRef!: ElementRef<HTMLCanvasElement>;\r\n\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n // when true, shows the proctoring consent notice (biometric capture); false for a timed-only intro\r\n @Input() proctoringEnabled = false;\r\n // when true, the candidate must capture a reference photo before proceeding (proctoring first attempt)\r\n @Input() requireCapture = false;\r\n @Input() sectionCount = 0;\r\n @Input() questionCount = 0;\r\n @Input() durationSeconds = 0;\r\n // starts the proctoring session, passing the captured reference image (base64, no data URI prefix;\r\n // empty when no capture is required). Returns an observable that completes once the session is live.\r\n @Input() confirmAction?: (referenceImageBase64: string) => Observable<any>;\r\n // emitted once the candidate proceeds and the proctoring session has started\r\n @Output() proceeded = new EventEmitter<void>();\r\n\r\n cameraReady = false;\r\n cameraError = '';\r\n captured = false;\r\n capturedUrl = '';\r\n starting = false;\r\n startError = '';\r\n\r\n private stream?: MediaStream;\r\n private capturedBase64 = '';\r\n\r\n /** Proceed is allowed once a photo is captured, or immediately when no capture is required. */\r\n get canProceed(): boolean {\r\n return !this.requireCapture || this.captured;\r\n }\r\n\r\n get durationMinutes(): number {\r\n // keep fractional minutes (e.g. 30s -> 0.5) so the display matches the saved duration\r\n return Math.round((this.durationSeconds / 60) * 100) / 100;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.requireCapture) {\r\n this.startCamera();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stopCamera();\r\n }\r\n\r\n startCamera(): void {\r\n this.cameraError = '';\r\n navigator.mediaDevices?.getUserMedia({ video: { facingMode: 'user' }, audio: false })\r\n .then((stream) => {\r\n this.stream = stream;\r\n this.cameraReady = true;\r\n if (this.videoRef?.nativeElement) {\r\n this.videoRef.nativeElement.srcObject = stream;\r\n }\r\n })\r\n .catch(() => {\r\n this.cameraReady = false;\r\n this.cameraError = this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAMERA_DENIED'];\r\n });\r\n }\r\n\r\n /** Grabs a still frame from the live preview into a JPEG (used as the reference image). */\r\n capture(): void {\r\n const video = this.videoRef?.nativeElement;\r\n const canvas = this.canvasRef?.nativeElement;\r\n if (!video || !canvas || !this.cameraReady) {\r\n return;\r\n }\r\n canvas.width = video.videoWidth;\r\n canvas.height = video.videoHeight;\r\n canvas.getContext('2d')?.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n this.capturedUrl = canvas.toDataURL('image/jpeg', 0.9);\r\n // strip the `data:image/jpeg;base64,` prefix — the API field carries raw base64\r\n this.capturedBase64 = this.capturedUrl.split(',')[1] || '';\r\n this.captured = true;\r\n }\r\n\r\n retake(): void {\r\n this.captured = false;\r\n this.capturedUrl = '';\r\n this.capturedBase64 = '';\r\n this.startError = '';\r\n }\r\n\r\n /** Enabled only once a photo is captured (when required); runs the session-start action. */\r\n proceed(): void {\r\n if (!this.canProceed || this.starting) {\r\n return;\r\n }\r\n // release our capture stream before the SDK opens the camera for the live session\r\n this.stopCamera();\r\n if (!this.confirmAction) {\r\n this.proceeded.emit();\r\n return;\r\n }\r\n this.starting = true;\r\n this.startError = '';\r\n this.confirmAction(this.capturedBase64).subscribe({\r\n next: () => this.proceeded.emit(),\r\n error: (err: any) => {\r\n this.starting = false;\r\n this.startError = (typeof err === 'string' ? err : err?.message)\r\n || this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSION_ERROR'];\r\n }\r\n });\r\n }\r\n\r\n private stopCamera(): void {\r\n this.stream?.getTracks().forEach((t) => t.stop());\r\n this.stream = undefined;\r\n }\r\n}\r\n","<div class=\"proctoring-intro d-flex flex-column align-items-center justify-content-start py-4\">\r\n <div class=\"proctoring-intro-card w-100\">\r\n\r\n <h2 class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_TITLE'] }}\r\n </h2>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-seven mb-3\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_SUBTITLE'] }}\r\n </p>\r\n\r\n <!-- Assessment stats -->\r\n <div class=\"row g-2 mb-4\">\r\n <div class=\"col\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ sectionCount }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_SECTIONS'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ questionCount }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTIONS'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\" *ngIf=\"durationSeconds > 0\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ durationMinutes }} {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_MINUTES'] }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_TIME'] }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Warnings -->\r\n <div class=\"assessment-bg-palette-FEF1E8 assessment-border-radius-two p-3 mb-4\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_WARNINGS_TITLE'] }}</p>\r\n <ul class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0 ps-3\">\r\n <li class=\"mb-1\" *ngIf=\"durationSeconds > 0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_AUTO_SUBMIT'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_ONE_ATTEMPT'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_NO_TAB_SWITCH'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_NO_REFRESH'] }}</li>\r\n <li *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_QUIET_ROOM'] }}</li>\r\n </ul>\r\n </div>\r\n\r\n <!-- Proctoring consent (only when proctoring is enabled) -->\r\n <p *ngIf=\"proctoringEnabled\" class=\"assessment-text-regular-13 assessment-text-grey-ten mb-3\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CONSENT_MESSAGE'] }}\r\n </p>\r\n\r\n <!-- Reference-image capture (first attempt only) -->\r\n <ng-container *ngIf=\"requireCapture\">\r\n <p class=\"assessment-text-medium-13 assessment-text-grey-ten mb-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAPTURE_INSTRUCTION'] }}\r\n </p>\r\n\r\n <div class=\"position-relative overflow-hidden assessment-bg-grey-two assessment-border-radius-two mb-2\">\r\n <video #video autoplay playsinline muted class=\"proctoring-cam proctoring-cam--mirror\" [hidden]=\"captured\"></video>\r\n <img *ngIf=\"captured\" [src]=\"capturedUrl\" class=\"proctoring-cam\" alt=\"reference\" />\r\n <canvas #canvas hidden></canvas>\r\n\r\n <div *ngIf=\"!cameraReady && !cameraError && !captured\"\r\n class=\"proctoring-cam-overlay assessment-text-regular-12 assessment-text-grey-seven position-absolute d-flex align-items-center justify-content-center\">\r\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAMERA_STARTING'] }}\r\n </div>\r\n </div>\r\n\r\n <p *ngIf=\"cameraError\" class=\"assessment-text-regular-12 assessment-text-danger mb-2\">{{ cameraError }}</p>\r\n\r\n <div class=\"d-flex gap-2 mb-3\">\r\n <button *ngIf=\"!captured\" type=\"button\" (click)=\"capture()\" [disabled]=\"!cameraReady || starting\"\r\n class=\"assessment-btn-primary assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAPTURE'] }}\r\n </button>\r\n <button *ngIf=\"captured\" type=\"button\" (click)=\"retake()\" [disabled]=\"starting\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.RETAKE'] }}\r\n </button>\r\n <button *ngIf=\"cameraError\" type=\"button\" (click)=\"startCamera()\" [disabled]=\"starting\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <p *ngIf=\"startError\" class=\"assessment-text-regular-12 assessment-text-danger mb-3\">{{ startError }}</p>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button type=\"button\" (click)=\"proceed()\" [disabled]=\"!canProceed || starting\"\r\n class=\"assessment-btn-primary assessment-border-radius-two assessment-text-semibold-13 px-4 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"starting\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CONSENT_ACCEPT'] }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { AssessmentTakerService } from '../../services/assessment-taker.service';\r\n\r\n@Component({\r\n selector: 'lib-question-type-short',\r\n templateUrl: './question-type-short.component.html',\r\n styleUrls: ['./question-type-short.component.scss']\r\n})\r\nexport class QuestionTypeShortComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl,\r\n private assessmentTakerService: AssessmentTakerService\r\n ) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n onBlur() {\r\n this.onTouched();\r\n this.validateGoogleDriveLink();\r\n }\r\n\r\n private isGoogleDriveLink(value: string): boolean {\r\n return /(?:drive|docs)\\.google\\.com/i.test(value || '');\r\n }\r\n\r\n /**\r\n * For URL-type questions, if the entered value is a Google Drive link, verify it is public.\r\n * A private link sets a `privateGdriveLink` error on the (outer) control so the taker shows\r\n * an invalid-input message and blocks submission. Fails open on API/network errors.\r\n */\r\n validateGoogleDriveLink() {\r\n const control = this.ngControl?.control;\r\n if (!control) {\r\n return;\r\n }\r\n const value = (this.formControl.value || '').trim();\r\n if (this.question?.questionType?.code !== 'QUESTION_TYPE.URL' || !this.isGoogleDriveLink(value)) {\r\n this.clearPrivateLinkError();\r\n return;\r\n }\r\n // Hold the field and mark the control INVALID (transient \"checking\" error) so\r\n // submission stays blocked everywhere — including the consumer app, which relies\r\n // on form validity (a PENDING control is not `invalid` and would slip through).\r\n this.formControl.disable({ emitEvent: false });\r\n control.setErrors({ ...(control.errors || {}), gdriveLinkChecking: true });\r\n this.assessmentTakerService.checkGoogleDriveLinkPublic(value).subscribe({\r\n next: (isPublic) => this.finishValidation(!isPublic),\r\n // fail open on API error so a backend hiccup never blocks the user\r\n error: () => this.finishValidation(false, true)\r\n });\r\n }\r\n\r\n private finishValidation(isPrivate: boolean, failOpen: boolean = false) {\r\n const control = this.ngControl?.control;\r\n this.formControl.enable({ emitEvent: false });\r\n if (!control) {\r\n return;\r\n }\r\n if (isPrivate && !failOpen) {\r\n const errors = { ...(control.errors || {}) };\r\n delete errors['gdriveLinkChecking'];\r\n errors['privateGdriveLink'] = true;\r\n control.setErrors(errors);\r\n } else {\r\n // public / fail-open: drop the transient + private-link errors, re-run sync validators\r\n control.updateValueAndValidity();\r\n }\r\n control.markAsTouched();\r\n }\r\n\r\n private clearPrivateLinkError() {\r\n const control = this.ngControl?.control;\r\n if (!control?.errors?.['privateGdriveLink']) {\r\n return;\r\n }\r\n const errors = { ...control.errors };\r\n delete errors['privateGdriveLink'];\r\n control.setErrors(Object.keys(errors).length ? errors : null);\r\n }\r\n\r\n checkFormControlValid() {\r\n const control = this.ngControl?.control;\r\n // while the Google Drive link is being checked the field is on hold — don't flag it red yet\r\n if (control?.errors?.['gdriveLinkChecking']) {\r\n return '';\r\n }\r\n if (control?.touched && control?.invalid) {\r\n return 'assessment-input-border-invalid';\r\n }\r\n return '';\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n get maxCharCount(): number {\r\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxCharacterCount');\r\n return config ? Number(config.configValue) : 0;\r\n }\r\n\r\n get inputType(): string {\r\n switch (this.question?.questionType?.code) {\r\n case 'QUESTION_TYPE.NUMBER':\r\n return 'number';\r\n case 'QUESTION_TYPE.EMAIL':\r\n return 'email';\r\n case 'QUESTION_TYPE.CONTACT_NUMBER':\r\n return 'tel';\r\n case 'QUESTION_TYPE.URL':\r\n return 'url';\r\n default:\r\n return 'text';\r\n }\r\n }\r\n\r\n restrictNumberOnly(event: KeyboardEvent) {\r\n const code = this.question?.questionType?.code;\r\n\r\n const commonAllowedKeys = ['Backspace', 'ArrowLeft', 'ArrowRight', 'Tab', 'Delete'];\r\n\r\n // Strict number (only digits)\r\n if (code === 'QUESTION_TYPE.NUMBER') {\r\n if (!/^[0-9]$/.test(event.key) && !commonAllowedKeys.includes(event.key) && event.key !== '.') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n // Contact number (block alphabets only)\r\n if (code === 'QUESTION_TYPE.CONTACT_NUMBER') {\r\n const isAlphabet = /^[a-zA-Z]$/.test(event.key);\r\n\r\n if (isAlphabet && !commonAllowedKeys.includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n preventScroll(event: WheelEvent) {\r\n if (this.inputType === 'number') {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","<input *ngIf=\"!previewMode else previewModeTemplate\" [type]=\"inputType\" [ngClass]=\"checkFormControlValid()\"\r\n [id]=\"question.id\" [formControl]=\"formControl\"\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\" [required]=\"required\" (blur)=\"onBlur()\"\r\n [attr.maxlength]=\"maxCharCount || null\" (keydown)=\"restrictNumberOnly($event)\"\r\n (wheel)=\"preventScroll($event)\">\r\n\r\n<ng-template #previewModeTemplate>\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\">{{ formControl.value }}</span>\r\n</ng-template>","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-long',\r\n templateUrl: './question-type-long.component.html',\r\n styleUrls: ['./question-type-long.component.scss']\r\n})\r\nexport class QuestionTypeLongComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-input-border-invalid';\r\n }\r\n return '';\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n get maxCharCount(): number {\r\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxCharacterCount');\r\n return config ? Number(config.configValue) : 0;\r\n }\r\n}\r\n","<textarea *ngIf=\"!previewMode else previewModeTemplate\" [ngClass]=\"checkFormControlValid()\" [id]=\"question.id\"\r\n [formControl]=\"formControl\"\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\" [required]=\"required\" (blur)=\"onTouched()\" rows=\"4\"\r\n [attr.maxlength]=\"maxCharCount || null\"></textarea>\r\n\r\n<ng-template #previewModeTemplate>\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\">{{ formControl.value }}</span>\r\n</ng-template>","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\n\r\n@Component({\r\n selector: 'app-text-editor',\r\n templateUrl: './text-editor.component.html',\r\n styleUrls: ['./text-editor.component.scss']\r\n})\r\nexport class TextEditorComponent implements OnInit, OnChanges {\r\n @Input() height: string = 'auto';\r\n @Input() placeholder: string = '';\r\n @Input() subject: string = '';\r\n @Input() preText: string = '';\r\n @Input() maxLength: number = 100;\r\n @Input() disabled: boolean = false;\r\n @Input() showToolbar = true;\r\n @Output() inputChange: EventEmitter<any> = new EventEmitter<any>();\r\n @Input() editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: this.placeholder,\r\n defaultParagraphSeparator: '',\r\n sanitize: false,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n [\r\n 'undo',\r\n 'redo',\r\n 'strikeThrough',\r\n 'subscript',\r\n 'superscript',\r\n 'indent',\r\n 'outdent',\r\n 'insertOrderedList',\r\n 'heading',\r\n 'fontName',\r\n 'textColor',\r\n 'backgroundColor',\r\n ],\r\n [\r\n 'fontSize',\r\n 'insertImage',\r\n 'insertVideo',\r\n 'customClasses',\r\n 'toggleEditorMode',\r\n ],\r\n ],\r\n };\r\n inputLength = 0;\r\n constructor() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.disabled && !changes.disabled.firstChange) {\r\n this.updateDisabledState();\r\n }\r\n if (changes?.preText) {\r\n const val = changes.preText.currentValue;\r\n if (val) {\r\n let textAfterRemovingTags = val;\r\n textAfterRemovingTags = textAfterRemovingTags.replace(/<\\/?[^>]+(>|$)/g, '');\r\n textAfterRemovingTags = textAfterRemovingTags.replace(/\\ /g, ' ');\r\n this.inputLength = textAfterRemovingTags.length;\r\n } else {\r\n this.inputLength = 0;\r\n }\r\n }\r\n this.editorConfig.showToolbar = this.showToolbar;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.editorConfig.height = this.height;\r\n this.updateDisabledState();\r\n }\r\n updateDisabledState() {\r\n this.editorConfig.editable = !this.disabled;\r\n }\r\n\r\n onValueChange(event: any) {\r\n if (event) {\r\n let textAfterRemovingTags = event;\r\n textAfterRemovingTags = textAfterRemovingTags.replace(/<\\/?[^>]+(>|$)/g, '');\r\n textAfterRemovingTags = textAfterRemovingTags.replace(/\\ /g, ' ');\r\n this.inputLength = textAfterRemovingTags.length;\r\n }\r\n this.inputChange.emit(event);\r\n }\r\n onPaste(event: ClipboardEvent) {\r\n event.preventDefault();\r\n const clipboardData = event.clipboardData;\r\n if (!clipboardData) return;\r\n let pastedText = clipboardData.getData('text/plain');\r\n pastedText = this.sanitizeText(pastedText);\r\n document.execCommand('insertText', false, pastedText);\r\n }\r\n\r\n sanitizeText(text: string): string {\r\n return text;\r\n }\r\n}\r\n","<div class=\"assessment-custom-scrollbar-thumb\">\r\n <angular-editor [placeholder]=\"placeholder\" [(ngModel)]=\"preText\" [disabled]=\"disabled\"\r\n (ngModelChange)=\"onValueChange($event)\" [config]=\"editorConfig\" (paste)=\"onPaste($event)\">\r\n </angular-editor>\r\n</div>","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-editor',\r\n templateUrl: './question-type-editor.component.html',\r\n styleUrls: ['./question-type-editor.component.scss']\r\n})\r\nexport class QuestionTypeEditorComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n}\r\n","<div *ngIf=\"!previewMode else previewModeTemplate\" class=\"col-12\" (focusout)=\"onTouched()\">\r\n <app-text-editor [preText]=\"formControl.value\"\r\n (inputChange)=\"formControl.setValue($event); formControl.markAsTouched()\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\"\r\n [disabled]=\"formControl.disabled\"\r\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\r\n [ngClass]=\"{'assessment-custom-angular-editor-invalid': checkFormControlValid()}\" [height]=\"'10rem'\">\r\n </app-text-editor>\r\n</div>\r\n\r\n<ng-template #previewModeTemplate>\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\" [innerHTML]=\"formControl.value\"></span>\r\n</ng-template>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'orderBy',\r\n pure: true\r\n})\r\nexport class OrderByPipe implements PipeTransform {\r\n transform(array: any[] | null | undefined, field: string = 'orderNo'): any[] {\r\n if (!Array.isArray(array)) {\r\n return array || [];\r\n }\r\n\r\n return [...array].sort((a: any, b: any) => {\r\n const valA = a?.[field] ?? 0;\r\n const valB = b?.[field] ?? 0;\r\n return valA - valB;\r\n });\r\n }\r\n}\r\n","import { Component, EventEmitter, Optional, Self, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-objective',\r\n templateUrl: './question-type-objective.component.html',\r\n styleUrls: ['./question-type-objective.component.scss']\r\n})\r\nexport class QuestionTypeObjectiveComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() showCorrectAnswers: boolean = false;\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() answerObj: any;\r\n @Output() viewChild = new EventEmitter();\r\n public formControl: FormControl = new FormControl();\r\n\r\n onTouchedFn = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value) {\r\n this.formControl.patchValue(value);\r\n let option = this.question?.defaultOptionsList?.find((o: any) => o?.options?.id === value?.id);\r\n this.optionDetection(option, true);\r\n } else {\r\n this.formControl.patchValue(null);\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouchedFn = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n onChildDataChanged(data: any) {\r\n this.viewChild.emit(data);\r\n }\r\n\r\n optionDetection(obj: any, detectFromEdit: boolean) {\r\n let data = {\r\n question: this.question,\r\n list: obj['childQuestionList'],\r\n detectFrom: detectFromEdit\r\n }\r\n this.viewChild.emit(data);\r\n return;\r\n }\r\n\r\n onTouched() {\r\n this.onTouchedFn();\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-error-text assessment-text-danger';\r\n }\r\n return '';\r\n }\r\n\r\n getSelectedOptionId(): number | null | undefined {\r\n return this.answerObj?.optionId?.id;\r\n }\r\n\r\n isEvaluationEnabled(): boolean {\r\n return this.showCorrectAnswers && this.question?.weight != null && this.getSelectedOptionId() != null;\r\n }\r\n\r\n getSelectionStatus(option: any): string | null {\r\n if (!this.isEvaluationEnabled()) {\r\n return null;\r\n }\r\n\r\n const selectedOptionId = this.getSelectedOptionId();\r\n const isSelected = option.options?.id === selectedOptionId;\r\n const isCorrect = (option.weight ?? 0) > 0;\r\n\r\n if (isSelected) {\r\n return isCorrect ? 'CORRECT' : 'INCORRECT';\r\n } else {\r\n // Show correct answer if the selected answer is wrong\r\n const selectedOption = this.question?.defaultOptionsList?.find((o: any) => o.options?.id === selectedOptionId);\r\n const isSelectedCorrect = (selectedOption?.weight ?? 0) > 0;\r\n if (!isSelectedCorrect && isCorrect) {\r\n return 'CORRECT';\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n trackByOptionId(index: number, option: any) {\r\n return option?.options?.id != null ? 'o' + option.options.id : 'i' + index;\r\n }\r\n}\r\n","<div class=\"d-flex flex-column custom-gap assessment-form-check-input-primary-one\" (focusout)=\"onTouched()\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList | orderBy; trackBy: trackByOptionId\">\r\n <label class=\"d-flex align-items-center gap-2 rounded-1 cursor-pointer w-100 m-0\"\r\n [ngClass]=\"{ 'px-2 py-1': isEvaluationEnabled() ,'assessment-bg-danger-bg': getSelectionStatus(option) == 'INCORRECT', 'assessment-bg-palette-E8F7F0': getSelectionStatus(option) == 'CORRECT' }\">\r\n <input type=\"radio\" [id]=\"'option-' + option.options.id + '-' + question.id\"\r\n [name]=\"'question-' + question.id\" class=\"form-check-input cursor-pointer m-0\" [value]=\"option.options\"\r\n [checked]=\"formControl.value?.id === option.options.id\" [disabled]=\"formControl.disabled\"\r\n (change)=\"formControl.setValue(option.options); optionDetection(option, false); onTouched()\">\r\n <div\r\n class=\"text-wrap assessment-text-grey-ten assessment-text-regular-13 w-100 d-flex justify-content-between align-items-center gap-2 cursor-pointer\">\r\n <span [innerHtml]=\"option.options.optionName[0]?.text\"></span>\r\n\r\n <ng-container *ngIf=\"getSelectionStatus(option) as selectionStatus\">\r\n <img *ngIf=\"selectionStatus === 'CORRECT'\" class=\"answer-status-icon\"\r\n [src]=\"imageConfig?.['COMMONS_ASSESSMENT.ICON.CHECK_GREEN']\" alt=\"answer-logo\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/check-green.svg')\">\r\n <img *ngIf=\"selectionStatus === 'INCORRECT'\" class=\"answer-status-icon\"\r\n [src]=\"imageConfig?.['COMMONS_ASSESSMENT.ICON.CROSS_RED']\" alt=\"answer-logo\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/cross-red.svg')\">\r\n </ng-container>\r\n </div>\r\n </label>\r\n </ng-container>\r\n</div>","import { Component, EventEmitter, Optional, Self, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-multiselect',\r\n templateUrl: './question-type-multiselect.component.html',\r\n styleUrls: ['./question-type-multiselect.component.scss']\r\n})\r\nexport class QuestionTypeMultiselectComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() showCorrectAnswers: boolean = false;\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() answerObj: any;\r\n @Output() viewChild = new EventEmitter();\r\n selectData: Array<any> = [];\r\n public formControl: FormControl = new FormControl();\r\n\r\n onTouchedFn = () => {};\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n toggleSelection(event: any, data: any) {\r\n const checked = event && typeof event === 'object' && 'checked' in event ? event.checked : (event?.target?.checked ?? event);\r\n if (checked) {\r\n this.selectData.push(data);\r\n } else {\r\n const i = this.selectData.findIndex(value => value.id == data.id);\r\n if (i > -1) {\r\n this.selectData.splice(i, 1);\r\n }\r\n }\r\n this.formControl.patchValue(this.selectData.length ? [...this.selectData] : null);\r\n this.optionDetection(data, false);\r\n }\r\n\r\n writeValue(value: any) {\r\n if(value && Array.isArray(value)) { \r\n this.selectData = [...value]; \r\n this.formControl.setValue(this.selectData, { emitEvent: false });\r\n } else {\r\n this.selectData = [];\r\n this.formControl.setValue(null, { emitEvent: false });\r\n }\r\n }\r\n\r\n getSelection(option:any) {\r\n if(this.selectData){\r\n return this.selectData?.findIndex((s: any) => s?.id && s?.id === option?.id) !== -1;\r\n } return false\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouchedFn = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n onTouched() {\r\n this.onTouchedFn();\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-error-text assessment-text-danger';\r\n }\r\n return '';\r\n }\r\n\r\n optionDetection(obj: any, detectFromEdit: boolean) {\r\n let option = this.question?.defaultOptionsList?.find((o: any) => o.options.id === obj.id);\r\n let data = {\r\n question: this.question,\r\n list: option?.childQuestionList,\r\n detectFrom: detectFromEdit\r\n }\r\n this.viewChild.emit(data);\r\n }\r\n\r\n getSelectedOptionIds(): number[] {\r\n if (!this.answerObj?.drobjectiveresponseList) {\r\n return [];\r\n }\r\n return this.answerObj.drobjectiveresponseList\r\n .filter((r: any) => r.isActive !== false)\r\n .map((r: any) => r.defaultOption?.options?.id)\r\n .filter((id: any) => id != null);\r\n }\r\n\r\n isEvaluationEnabled(): boolean {\r\n return this.showCorrectAnswers && this.question?.weight != null && this.getSelectedOptionIds().length > 0;\r\n }\r\n\r\n getSelectionStatus(option: any): string | null {\r\n if (!this.isEvaluationEnabled()) {\r\n return null;\r\n }\r\n\r\n const selectedOptionIds = this.getSelectedOptionIds();\r\n const isSelected = selectedOptionIds.includes(option.options?.id);\r\n const isCorrect = (option.weight ?? 0) > 0;\r\n\r\n if (isSelected) {\r\n return isCorrect ? 'CORRECT' : 'INCORRECT';\r\n } else {\r\n // Show correct answer if the selected answer is wrong (i.e. not fully correct)\r\n const correctOptionIds = this.question?.defaultOptionsList\r\n ?.filter((o: any) => (o.weight ?? 0) > 0)\r\n ?.map((o: any) => o.options?.id) ?? [];\r\n \r\n const isSelectionCorrect = \r\n selectedOptionIds.length === correctOptionIds.length &&\r\n selectedOptionIds.every((id: any) => correctOptionIds.includes(id));\r\n\r\n if (!isSelectionCorrect && isCorrect) {\r\n return 'CORRECT';\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n trackByOptionId(index: number, option: any) {\r\n return option?.options?.id != null ? 'o' + option.options.id : 'i' + index;\r\n }\r\n}\r\n","<div class=\"d-flex flex-column custom-gap assessment-form-check-input-primary-one\" (focusout)=\"onTouched()\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList | orderBy; trackBy: trackByOptionId\">\r\n <label class=\"d-flex align-items-center gap-2 rounded-1 cursor-pointer w-100 m-0\"\r\n [ngClass]=\"{ 'px-2 py-1': isEvaluationEnabled() ,'assessment-bg-danger-bg': getSelectionStatus(option) == 'INCORRECT', 'assessment-bg-palette-E8F7F0': getSelectionStatus(option) == 'CORRECT' }\">\r\n <input type=\"checkbox\" [id]=\"'option-' + option.options.id + '-' + question.id\"\r\n class=\"form-check-input cursor-pointer m-0\" [value]=\"option.options\"\r\n [checked]=\"getSelection(option.options)\" [disabled]=\"formControl.disabled\"\r\n (change)=\"toggleSelection($event, option.options); onTouched()\">\r\n <div\r\n class=\"text-wrap assessment-text-grey-ten assessment-text-regular-13 w-100 d-flex justify-content-between align-items-center gap-2 cursor-pointer\">\r\n <span [innerHtml]=\"option.options.optionName[0]?.text\"></span>\r\n\r\n <ng-container *ngIf=\"getSelectionStatus(option) as selectionStatus\">\r\n <img *ngIf=\"selectionStatus === 'CORRECT'\" class=\"answer-status-icon\"\r\n [src]=\"imageConfig?.['COMMONS_ASSESSMENT.ICON.CHECK_GREEN']\" alt=\"answer-logo\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/check-green.svg')\">\r\n <img *ngIf=\"selectionStatus === 'INCORRECT'\" class=\"answer-status-icon\"\r\n [src]=\"imageConfig?.['COMMONS_ASSESSMENT.ICON.CROSS_RED']\" alt=\"answer-logo\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/cross-red.svg')\">\r\n </ng-container>\r\n </div>\r\n </label>\r\n </ng-container>\r\n</div>","import { Component, EventEmitter, Optional, Self, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-preference',\r\n templateUrl: './question-type-preference.component.html',\r\n styleUrls: ['./question-type-preference.component.scss']\r\n})\r\nexport class QuestionTypePreferenceComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Output() viewChild = new EventEmitter();\r\n selectData: Array<any> = [];\r\n public formControl: FormControl = new FormControl();\r\n\r\n onTouchedFn = () => {};\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n toggleSelection(data: any) {\r\n if (this.formControl.disabled) return;\r\n \r\n const index = this.getSelectionIndex(data);\r\n if (index === -1) {\r\n this.selectData.push(data);\r\n } else {\r\n this.selectData.splice(index, 1);\r\n }\r\n \r\n this.formControl.patchValue(this.selectData.length ? [...this.selectData] : null);\r\n this.optionDetection(data, false);\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: any) {\r\n if(value && Array.isArray(value)) { \r\n this.selectData = [...value]; \r\n this.formControl.setValue(this.selectData, { emitEvent: false });\r\n } else {\r\n this.selectData = [];\r\n this.formControl.setValue(null, { emitEvent: false });\r\n }\r\n }\r\n\r\n getSelectionIndex(option: any): number {\r\n if (this.selectData) {\r\n return this.selectData?.findIndex((s: any) => s?.id && s?.id === option?.id);\r\n } else {\r\n return -1;\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouchedFn = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n onTouched() {\r\n this.onTouchedFn();\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-error-text assessment-text-danger';\r\n }\r\n return '';\r\n }\r\n\r\n optionDetection(obj: any, detectFromEdit: boolean) {\r\n let option = this.question?.defaultOptionsList?.find((o: any) => o?.options?.id === obj?.id);\r\n let data = {\r\n question: this.question,\r\n list: option?.childQuestionList,\r\n detectFrom: detectFromEdit\r\n }\r\n this.viewChild.emit(data);\r\n }\r\n\r\n trackByOptionId(index: number, option: any) {\r\n return option?.options?.id != null ? 'o' + option.options.id : 'i' + index;\r\n }\r\n}\r\n","<div class=\"d-flex flex-column gap-2 assessment-checkboxes\" (focusout)=\"onTouched()\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList | orderBy; trackBy: trackByOptionId\">\r\n <div class=\"d-flex align-items-center gap-3 cursor-pointer\" [class.assessment-text-grey]=\"formControl.disabled\"\r\n (click)=\"toggleSelection(option.options)\">\r\n\r\n <div class=\"preference-box assessment-bg-white flex-shrink-0 assessment-input-border-one assessment-border-radius-two d-flex align-items-center justify-content-center p-1\"\r\n [ngClass]=\"{\r\n 'selected assessment-bg-primary-one assessment-text-white': getSelectionIndex(option.options) > -1,\r\n 'disabled': formControl.disabled\r\n }\">\r\n <span class=\"assessment-text-semibold-12\" *ngIf=\"getSelectionIndex(option.options) > -1\">\r\n {{getSelectionIndex(option.options) + 1}}\r\n </span>\r\n </div>\r\n\r\n <span class=\"text-wrap assessment-text-regular-13\" [innerHtml]=\"option.options.optionName[0]?.text\"></span>\r\n </div>\r\n </ng-container>\r\n</div>","import { Component, Optional, Self, Input, ElementRef, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentTakerService } from '../../services/assessment-taker.service';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { Attachment } from '../../../../shared/interfaces/assessment.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-file-upload',\r\n templateUrl: './question-type-file-upload.component.html',\r\n styleUrls: ['./question-type-file-upload.component.scss']\r\n})\r\nexport class QuestionTypeFileUploadComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() assessmentInstanceId!: number;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @ViewChild('fileInput') fileInput!: ElementRef;\r\n @Output() snackbarMessage = new EventEmitter<{ message: string, type: 'success' | 'error' | 'info' }>();\r\n\r\n public files: Attachment[] = [];\r\n public formControl: FormControl = new FormControl([]);\r\n\r\n onTouched = () => { };\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl,\r\n private assessmentService: AssessmentTakerService,\r\n ) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value && Array.isArray(value)) {\r\n this.files = value;\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.files = [];\r\n this.formControl.setValue([], { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n get maxFiles(): number {\r\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxNoOfFiles');\r\n return config && config.configValue ? Number(config.configValue) : 0;\r\n }\r\n\r\n get maxFileSize(): number {\r\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxFileSize');\r\n // maxFileSize config is in MB, convert to bytes for comparison\r\n return config?.configValue ? Number(config.configValue) * 1024 * 1024 : 0;\r\n }\r\n\r\n get allowMultiple(): boolean {\r\n return this.maxFiles === 0 || this.maxFiles > 1;\r\n }\r\n\r\n onFileChange(event: any) {\r\n const inputFiles: FileList = event.target.files;\r\n if (inputFiles && inputFiles.length > 0) {\r\n const newFiles = Array.from(inputFiles);\r\n const limit = this.maxFileSize;\r\n const validFiles = newFiles.filter(f => limit === 0 || f.size <= limit);\r\n\r\n if (validFiles.length < newFiles.length) {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.FILE_SIZE_EXCEEDED']?.replace('[SIZE]', (this.maxFileSize / (1024 * 1024)).toFixed(2)), type: 'error' });\r\n }\r\n\r\n validFiles.forEach(file => {\r\n this.uploadFile(file);\r\n });\r\n }\r\n\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n }\r\n\r\n uploadFile(file: File) {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n const params = {\r\n entityType: 'ENTITY_TYPE.ASSESSMENT_QUESTION',\r\n isPublic: true,\r\n questionId: this.question.id,\r\n tenantId: this.question?.tenantId,\r\n assessmentInstanceId: this.assessmentInstanceId\r\n }\r\n this.assessmentService.uploadAttachment(formData, params).subscribe({\r\n next: (data: any) => {\r\n\r\n if (this.allowMultiple) {\r\n this.files = [...this.files, data];\r\n } else {\r\n this.files = [data];\r\n }\r\n\r\n this.formControl.setValue(this.files);\r\n this.onTouched();\r\n },\r\n error: (error: any) => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.FILE_UPLOAD_FAILED'], type: 'error' });\r\n throw { error, method: 'POST', payload: formData }\r\n }\r\n });\r\n }\r\n\r\n removeFile(index: number) {\r\n this.files.splice(index, 1);\r\n this.formControl.setValue([...this.files]);\r\n this.onTouched();\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n getFileIcon(attachment: Attachment): string {\r\n const mimeTypeMap: { [key: string]: string } = {\r\n 'pdf': 'COMMONS_ASSESSMENT.ICON.PDF',\r\n 'image/jpeg': 'COMMONS_ASSESSMENT.ICON.JPEG',\r\n 'image/jpg': 'COMMONS_ASSESSMENT.ICON.JPG',\r\n 'image/png': 'COMMONS_ASSESSMENT.ICON.PNG',\r\n 'image/svg': 'COMMONS_ASSESSMENT.ICON.SVG'\r\n };\r\n const mimeType = attachment.mimeType;\r\n if (mimeType) {\r\n const mimeTypeLower = mimeType.toLowerCase();\r\n for (const key in mimeTypeMap) {\r\n if (mimeTypeLower.includes(key)) {\r\n return this.imageConfig[mimeTypeMap[key]] || this.imageConfig['COMMONS_ASSESSMENT.ICON.DEFAULT_FILE'];\r\n }\r\n }\r\n }\r\n\r\n return this.imageConfig['COMMONS_ASSESSMENT.ICON.DEFAULT_FILE'];\r\n }\r\n\r\n viewFile(url: string) {\r\n if (url) {\r\n window.open(url, '_blank');\r\n }\r\n }\r\n\r\n trackByFile(index: number, file: Attachment) {\r\n return file?.id != null ? 'f' + file.id : 'i' + index;\r\n }\r\n}\r\n","<div class=\"file-upload-container col-12\">\r\n <input type=\"file\" #fileInput (change)=\"onFileChange($event)\" [multiple]=\"allowMultiple\" class=\"d-none\"\r\n [id]=\"question.id + '_file'\" [disabled]=\"formControl.disabled\" (blur)=\"onTouched()\">\r\n\r\n <div class=\"my-3 row mx-0 row-gap-3\" *ngIf=\"files.length > 0\">\r\n <div *ngFor=\"let file of files; let i = index; trackBy: trackByFile\" class=\"col-lg-4 col-md-6 col-12 assessment-file\">\r\n <div\r\n class=\"col-12 d-flex align-items-center gap-3 assessment-border-radius-two assessment-bg-grey-one p-3 assessment-card-border cursor-pointer\">\r\n <img [src]=\"getFileIcon(file)\"\r\n (error)=\"imageErrorHandler($event, imageConfig['COMMONS_ASSESSMENT.ICON.DEFAULT_FILE'])\" class=\"file-icon\"\r\n alt=\"file icon\">\r\n <div class=\"flex-grow-1 cursor-pointer\" (click)=\"viewFile(file.completeURL)\">\r\n <p class=\"assessment-text-medium-15 mb-0 assessment-text-grey-ten text-break\">\r\n {{ file.fileName }}</p>\r\n <p class=\"mb-0 assessment-text-medium-12 assessment-text-grey-eight\">\r\n {{file.fileSizeInBytes < 1024 ? (file.fileSizeInBytes | number: '1.1-1' ) + ' Kb' : file.fileSizeInBytes <\r\n 1000000 ? (file.fileSizeInBytes / 1024 | number: '1.1-1' ) + ' Kb' : (file.fileSizeInBytes / 1000000 |\r\n number: '1.1-1' ) + ' Mb' }} </p>\r\n </div>\r\n <img *ngIf=\"!formControl.disabled\" (click)=\"removeFile(i)\" [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/delete.svg')\"\r\n class=\"icon cursor-pointer\" alt=\"delete\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button *ngIf=\"!formControl.disabled\" type=\"button\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary-transparent assessment-text-semibold-13\"\r\n (click)=\"fileInput.click()\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.UPLOAD']}}\r\n </button>","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { DatePipe } from '@angular/common';\r\n// import { MAT_DATE_FORMATS } from '@angular/material/core';\r\n\r\n// export const MY_DATE_FORMATS = {\r\n// parse: {\r\n// dateInput: null,\r\n// },\r\n// display: {\r\n// dateInput: { year: 'numeric', month: 'short', day: 'numeric' },\r\n// monthYearLabel: { year: 'numeric', month: 'short' },\r\n// dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\r\n// monthYearA11yLabel: { year: 'numeric', month: 'long' },\r\n// }\r\n// };\r\n\r\n@Component({\r\n selector: 'lib-question-type-date-picker',\r\n templateUrl: './question-type-date-picker.component.html',\r\n styleUrls: ['./question-type-date-picker.component.scss'],\r\n providers: [DatePipe]\r\n})\r\nexport class QuestionTypeDatePickerComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl, private datePipe: DatePipe) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-input-border-invalid';\r\n }\r\n return '';\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n let dateValue = value;\r\n if (value && typeof value.toDate === 'function') {\r\n dateValue = value.toDate();\r\n } else if (value && typeof value.toJSDate === 'function') {\r\n dateValue = value.toJSDate();\r\n }\r\n const formattedDate = this.datePipe.transform(dateValue, 'yyyy-MM-dd');\r\n this.formControl.setValue(formattedDate, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n getDisplayDate(): string {\r\n const val = this.formControl.value;\r\n if (!val) return '';\r\n let dateValue = val;\r\n if (val && typeof val.toDate === 'function') {\r\n dateValue = val.toDate();\r\n } else if (val && typeof val.toJSDate === 'function') {\r\n dateValue = val.toJSDate();\r\n }\r\n return this.datePipe.transform(dateValue, 'mediumDate') || '';\r\n }\r\n}\r\n","<div *ngIf=\"!previewMode else previewModeTemplate\" class=\"position-relative col-md-6 col-12 d-flex align-items-center cursor-pointer assessment-date-picker\" (click)=\"picker.open()\">\n <input [matDatepicker]=\"picker\" [ngClass]=\"checkFormControlValid()\"\n [id]=\"question.id\" [formControl]=\"formControl\" readonly\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one pe-5\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\" [required]=\"required\" (blur)=\"onTouched()\">\n <mat-datepicker-toggle [for]=\"picker\" class=\"position-absolute end-0 me-2 assessment-text-grey-six\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</div>\n\n<ng-template #previewModeTemplate>\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\">{{ getDisplayDate() }}</span>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output, OnDestroy, ChangeDetectorRef, HostListener } from '@angular/core';\r\nimport { forkJoin, Observable, throwError, of } from 'rxjs';\r\nimport { tap, catchError, switchMap, map } from 'rxjs/operators';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { AssessmentTakerService } from './services/assessment-taker.service';\r\nimport { ResponseBuilderService } from './services/response-builder.service';\r\nimport { SectionInstructionsComponent } from './components/section-instructions/section-instructions.component';\r\nimport { AssesseeDTO, AssessorDTO, Assessment, AssessmentInstanceAssesseDTO, AssessmentStep, AssessmentContextDTO, SectionScore, SkillScore, Attachment } from '../../shared/interfaces/assessment.interface';\r\nimport { ProctoringSession } from '../../shared/interfaces/proctoring.interface';\r\nimport { AssessmentQuestion } from '../../shared/interfaces/question.interface';\r\nimport { AssessmentQuestionPaper, QuestionPaperSection, SectionQuestion } from '../../shared/interfaces/question-paper.interface';\r\nimport { SkillAllocationComponent } from '../../shared/components/skill-allocation/skill-allocation.component';\r\nimport { ConfirmationDialogComponent } from '../../shared/components/confirmation-dialog/confirmation-dialog.component';\r\nimport { ProctoringResultComponent } from './components/proctoring-result/proctoring-result.component';\r\nimport { ProctoringService } from './services/proctoring.service';\r\nimport { sortByOrder } from '../../shared/utils';\r\n\r\n@Component({\r\n selector: 'lib-assessment-taker',\r\n templateUrl: './assessment-taker.component.html',\r\n styleUrls: ['./assessment-taker.component.scss']\r\n})\r\n\r\nexport class AssessmentTakerComponent implements OnInit, OnDestroy {\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() showFooter: boolean = false;\r\n @Input() assessmentId!: number;\r\n @Input() assessmentInstanceId!: number;\r\n @Input() assesseeData: AssesseeDTO = { id: 0, actorId: 0, actorType: 'USER' };\r\n @Input() assessorData: AssessorDTO = { id: 0, actorId: 0, actorType: 'USER' };\r\n @Input() disabled: boolean = false;\r\n @Input() previewMode: boolean = false;\r\n @Input() verticalView: boolean = false;\r\n @Input() enableMarks: boolean = false;\r\n @Input() hideSectionTabs: boolean = false;\r\n @Input() assessmentContext!: AssessmentContextDTO;\r\n @Input() assesseeResponse: AssessmentInstanceAssesseDTO = {};\r\n @Input() markAsCompleted: boolean = true;\r\n @Input() sectionWiseScore: { [sectionId: number]: SectionScore } = {};\r\n @Input() showOverallRemarks: boolean = false;\r\n @Input() showCorrectAnswers: boolean = false;\r\n // when true, the timer is anchored to the assessee's first-visit time (assesseeResponse.createdAt)\r\n // so it keeps elapsing across reloads/absences instead of restarting each visit.\r\n @Input() resumeTimerAcrossVisits: boolean = false;\r\n @Input() proctorLinkLoader?: () => Promise<any>;\r\n\r\n @Output() snackbarMessage = new EventEmitter<{ message: string, type: 'success' | 'error' | 'info' }>();\r\n @Output() submitAssessment = new EventEmitter<any>();\r\n @Output() stepChanged = new EventEmitter<AssessmentStep>();\r\n @Output() consentToProceed = new EventEmitter<boolean>();\r\n\r\n showLoader: boolean = true;\r\n introActive = false;\r\n private proctoringSessionStarted = false;\r\n private proctoringSessionEnded = false;\r\n questionBank: Record<number, AssessmentQuestion> = {};\r\n assessmentQuestionPaperData: AssessmentQuestionPaper = {};\r\n assessmentData: Assessment = {};\r\n configsLoaded: boolean = false;\r\n timerInterval: any = null;\r\n remainingTime: number = 0;\r\n displayTime: string = '00:00';\r\n timeExpired: boolean = false;\r\n isAutoSubmitting: boolean = false;\r\n isSubmitting: boolean = false;\r\n sectionFormGroups: { sectionId: number; formGroup: FormGroup }[] = [];\r\n overallNotesCtrl = new FormControl('');\r\n expandedState: boolean[] = [];\r\n private youtubeUrlCache: { [url: string]: any } = {};\r\n private newAssesseeSession: boolean = false;\r\n private backGuardArmed = false;\r\n private allowBackNavigation = false;\r\n\r\n private _selectedTabIndex: number = 0;\r\n get selectedTabIndex(): number {\r\n return this._selectedTabIndex;\r\n }\r\n set selectedTabIndex(value: number) {\r\n if (this._selectedTabIndex !== value) {\r\n this._selectedTabIndex = value;\r\n this.emitStepDetails();\r\n }\r\n }\r\n\r\n sectionErrors: boolean[] = [];\r\n tenantId: number = 0;\r\n tooltipState: Record<number, boolean> = {};\r\n\r\n isMobile = window.innerWidth < 768;\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.isMobile = window.innerWidth < 768;\r\n }\r\n\r\n /**\r\n * While a proctoring session is running, warn the candidate before they refresh, close the tab, or\r\n * navigate away. Browsers show their own generic \"Leave site?\" confirmation here — the message text\r\n * cannot be customized for security reasons — so this only guarantees a prompt, not our wording.\r\n */\r\n @HostListener('window:beforeunload', ['$event'])\r\n onBeforeUnload(event: BeforeUnloadEvent): void {\r\n if (this.isProctoringRunning()) {\r\n event.preventDefault();\r\n event.returnValue = '';\r\n }\r\n }\r\n\r\n /**\r\n * In-app Back button (SPA popstate — not caught by beforeunload). While proctoring runs we keep a\r\n * sentinel history entry; when Back pops it we show a custom warning and either re-arm (stay) or\r\n * proceed with the navigation (leave).\r\n */\r\n @HostListener('window:popstate')\r\n onPopState(): void {\r\n if (this.allowBackNavigation) {\r\n // this popstate is the navigation we just approved — let it through once\r\n this.allowBackNavigation = false;\r\n return;\r\n }\r\n if (!this.backGuardArmed || !this.isProctoringRunning()) {\r\n return;\r\n }\r\n this.confirmLeaveAssessment().subscribe((confirmed: boolean) => {\r\n if (confirmed) {\r\n this.allowBackNavigation = true;\r\n this.backGuardArmed = false;\r\n history.back(); // proceed to the actual previous page\r\n } else {\r\n // stay on the assessment — re-arm the sentinel entry\r\n history.pushState(null, '', location.href);\r\n }\r\n });\r\n }\r\n\r\n private isProctoringRunning(): boolean {\r\n return this.proctoringSessionStarted && !this.proctoringSessionEnded;\r\n }\r\n\r\n /** Pushes a sentinel history entry so the next in-app Back press triggers our guard. */\r\n private armBackGuard(): void {\r\n if (this.backGuardArmed) {\r\n return;\r\n }\r\n this.backGuardArmed = true;\r\n history.pushState(null, '', location.href);\r\n }\r\n\r\n private confirmLeaveAssessment(): Observable<boolean> {\r\n return this.dialog.open(ConfirmationDialogComponent, {\r\n autoFocus: false,\r\n maxWidth: '95%',\r\n width: '32rem',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n title: this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.LEAVE_WARNING_TITLE'],\r\n message: this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.LEAVE_WARNING_MESSAGE'],\r\n confirmLabel: this.labelConfig['COMMONS_ASSESSMENT.LABEL.PROCEED'],\r\n cancelLabel: this.labelConfig['COMMONS_ASSESSMENT.LABEL.CANCEL']\r\n }\r\n }).afterClosed();\r\n }\r\n\r\n constructor(\r\n private assessmentTakerService: AssessmentTakerService,\r\n private fb: FormBuilder,\r\n private responseBuilderService: ResponseBuilderService,\r\n private sanitizer: DomSanitizer,\r\n private dialog: MatDialog,\r\n private cdr: ChangeDetectorRef,\r\n private proctoringService: ProctoringService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.getConfigsFromJSON();\r\n\r\n if (this.previewMode || this.assesseeResponse?.assessmentTaken?.code === 'ASSESSMENT_TAKEN.COMPLETE') {\r\n this.disabled = true;\r\n }\r\n\r\n if (this.assessmentContext) {\r\n this.assessmentInstanceId = this.assessmentContext?.assessmentInstanceDTO?.id ?? this.assessmentInstanceId;\r\n this.assessmentId = this.assessmentContext?.assessment?.id ?? this.assessmentId;\r\n }\r\n\r\n if (this.assessmentInstanceId) {\r\n this.loadAssessmentData();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.timerInterval) {\r\n clearInterval(this.timerInterval);\r\n }\r\n if (this.isProctoringRunning()) {\r\n this.proctoringService.destroy({ endSession: false });\r\n }\r\n }\r\n\r\n /**\r\n * Ends the proctoring session after the assessment is submitted: stops + destroys the ProctorLink\r\n * SDK and notifies the backend to end the session. Only ends a session that actually started, and\r\n * is guarded so the backend is called at most once.\r\n */\r\n private endProctoringSession(): void {\r\n this.proctoringService.stop();\r\n this.proctoringService.destroy();\r\n if (!this.proctoringSessionStarted || this.proctoringSessionEnded) {\r\n return;\r\n }\r\n const assesseeId = this.assesseeResponse?.id || this.assesseeData?.id;\r\n if (!assesseeId) {\r\n return;\r\n }\r\n this.proctoringSessionEnded = true;\r\n this.assessmentTakerService.endProctoringSession(assesseeId).subscribe({\r\n next: () => { /* session ended on backend */ },\r\n error: () => { /* best-effort teardown; ignore */ }\r\n });\r\n }\r\n\r\n getConfigsFromJSON() {\r\n forkJoin({\r\n labelConfig: this.assessmentTakerService.getConfigJSON('json/labelConfig'),\r\n imageConfig: this.assessmentTakerService.getConfigJSON('json/imageConfig')\r\n }).subscribe((res: any) => {\r\n this.labelConfig = Object.assign({}, res?.labelConfig, this.labelConfig);\r\n this.imageConfig = Object.assign({}, res?.imageConfig, this.imageConfig);\r\n\r\n this.configsLoaded = true;\r\n })\r\n }\r\n\r\n loadAssessmentData() {\r\n const apiCalls = {\r\n ...(!this.assessmentContext?.assessment?.id && {\r\n assessmentData: this.assessmentTakerService.getAssessmentContextById({ assessmentIds: [this.assessmentId] })\r\n }),\r\n ...(this.assesseeData?.id && !this.assesseeResponse?.id && {\r\n assesseeResponse: this.assessmentTakerService.getAnswersByAiaId(this.assesseeData.id)\r\n })\r\n }\r\n if (Object.keys(apiCalls).length > 0) {\r\n forkJoin(apiCalls).subscribe({\r\n next: (data: any) => {\r\n this.assessmentContext = data?.assessmentData?.[0] ?? this.assessmentContext;\r\n this.assesseeResponse = data?.assesseeResponse ?? this.assesseeResponse;\r\n this.handleResponse()\r\n },\r\n error: error => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'GET' }\r\n }\r\n });\r\n } else {\r\n this.handleResponse();\r\n }\r\n }\r\n\r\n handleResponse() {\r\n this.assessmentQuestionPaperData = this.assessmentContext?.assessmentQuestionPaperDTO;\r\n this.assessmentData = this.assessmentContext?.assessment;\r\n this.questionBank = this.assessmentContext?.questionDTOMap;\r\n this.tenantId = this.assessmentContext?.assessment?.tenantId ?? 0;\r\n\r\n if (this.assesseeResponse?.id) {\r\n if (this.assesseeResponse?.assessmentTaken?.code === 'ASSESSMENT_TAKEN.COMPLETE') {\r\n this.disabled = true;\r\n }\r\n } else {\r\n this.assesseeResponse = {\r\n id: 0,\r\n assessmentInstance: { id: this.assessmentInstanceId },\r\n assessee: this.assesseeData,\r\n assessor: this.assessorData,\r\n aiadefaultResponseList: [],\r\n tenant: this.tenantId\r\n };\r\n }\r\n this.overallNotesCtrl.setValue(this.assesseeResponse.notes || '');\r\n if (this.disabled && !this.showOverallRemarks) {\r\n this.overallNotesCtrl.disable();\r\n }\r\n this.formSetup();\r\n }\r\n\r\n formSetup() {\r\n this.sectionFormGroups = [];\r\n\r\n sortByOrder(this.assessmentQuestionPaperData?.questionPaperSectionList)?.forEach((section: QuestionPaperSection) => {\r\n const group: any = {};\r\n\r\n sortByOrder(section?.sectionQuestionsList)?.forEach((sq: SectionQuestion) => {\r\n const qId = sq.questionId;\r\n if (!qId || !this.questionBank[qId]) return;\r\n\r\n const question = this.questionBank[qId];\r\n this.addControlForQuestion(group, question, question?.isMandatory);\r\n\r\n if (question.defaultOptionsList?.length) {\r\n question.defaultOptionsList.forEach((option: any) => {\r\n if (option.remarksRequired) {\r\n // Pre-populate remarks if we have answers matching this option.\r\n let remarkVal = null;\r\n const prefilledOptions = this.getPrefilledAnswer(qId);\r\n if (prefilledOptions) {\r\n const ansObj = this.assesseeResponse?.aiadefaultResponseList?.find((a: any) =>\r\n a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0)\r\n );\r\n if (ansObj) {\r\n if (question.questionType?.code === 'QUESTION_TYPE.OBJECTIVE' && (prefilledOptions === (option.options?.id ?? option.id) || prefilledOptions?.id === (option.options?.id ?? option.id))) {\r\n remarkVal = ansObj.remarks || null;\r\n } else if (Array.isArray(prefilledOptions)) {\r\n const matchingObj = ansObj.drobjectiveresponseList?.find((r: any) => r.defaultOption?.options?.id === (option.options?.id ?? option.id));\r\n if (matchingObj) {\r\n remarkVal = matchingObj.remarks || null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const remarkCtrl = new FormControl(remarkVal);\r\n if (this.disabled) {\r\n remarkCtrl.disable();\r\n };\r\n group[`${qId}_remarks_${option.id}`] = remarkCtrl;\r\n }\r\n\r\n option.childQuestionList?.forEach((childId: number) => {\r\n const childQues = this.questionBank[childId];\r\n if (childQues) {\r\n this.addControlForQuestion(group, childQues, false, true, qId, option.options?.id ?? option.id);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n const fg = this.fb.group(group);\r\n\r\n sortByOrder(section?.sectionQuestionsList)?.forEach((sq: SectionQuestion) => {\r\n const qId = sq.questionId;\r\n if (!qId || !this.questionBank[qId]) return;\r\n const question = this.questionBank[qId];\r\n\r\n if (question.defaultOptionsList?.length) {\r\n this.updateQuestionConditionalControls(fg, question);\r\n fg.get(qId?.toString())?.valueChanges.subscribe(() => {\r\n this.updateQuestionConditionalControls(fg, question);\r\n });\r\n }\r\n });\r\n\r\n this.sectionFormGroups.push({\r\n sectionId: section.id,\r\n formGroup: fg\r\n });\r\n this.sectionErrors.push(false);\r\n });\r\n\r\n this.emitStepDetails();\r\n this.showLoader = false;\r\n\r\n this.startAssessment();\r\n }\r\n\r\n private startAssessment() {\r\n if (this.requiresStartGate()) {\r\n // show the full-screen intro gate; questions stay hidden until the candidate proceeds\r\n this.introActive = true;\r\n } else {\r\n this.beginAssessment();\r\n }\r\n }\r\n\r\n get isProctoringEnabled(): boolean {\r\n return this.assessmentData?.assessmentConfigs?.find(c => c.configKey === 'assessment.config.is-proctoring-enabled')?.configValue === '1';\r\n }\r\n\r\n /**\r\n * The full-screen intro gate is shown when proctoring is enabled, or when a timed assessment tracks\r\n * elapsed time across visits (so the assessee is created up front to anchor the timer).\r\n */\r\n private requiresStartGate(): boolean {\r\n const timedTracking = this.resumeTimerAcrossVisits && this.assessmentDurationSeconds > 0;\r\n return (this.isProctoringEnabled || timedTracking) && !this.previewMode && !this.disabled;\r\n }\r\n\r\n /** A reference image is captured only for proctoring, and only on the first attempt (no assessee id yet). */\r\n get requireReferenceCapture(): boolean {\r\n return this.isProctoringEnabled && !(this.assesseeResponse?.id || this.assesseeData?.id);\r\n }\r\n\r\n get totalSectionCount(): number {\r\n return this.assessmentQuestionPaperData?.questionPaperSectionList?.length || 0;\r\n }\r\n\r\n get totalQuestionCount(): number {\r\n return (this.assessmentQuestionPaperData?.questionPaperSectionList || [])\r\n .reduce((sum, section) => sum + (section?.sectionQuestionsList?.length || 0), 0);\r\n }\r\n\r\n get assessmentDurationSeconds(): number {\r\n return this.assessmentContext?.assessmentInstanceDTO?.duration || 0;\r\n }\r\n\r\n // bound so it can be passed as an @Input callback to the full-screen intro gate; creates the\r\n // assessee (passing the captured reference image for proctoring) and starts the SDK when proctored.\r\n startSessionAction = (referenceImageBase64: string): Observable<any> =>\r\n this.startAssessmentSession(referenceImageBase64);\r\n\r\n // once the candidate proceeds from the intro gate (assessee created / session started), reveal the assessment\r\n onIntroProceeded(): void {\r\n this.consentToProceed.emit(true);\r\n this.introActive = false;\r\n if (this.isProctoringRunning()) {\r\n // guard the in-app Back button while proctoring is active\r\n this.armBackGuard();\r\n }\r\n this.beginAssessment();\r\n }\r\n\r\n /**\r\n * Creates the assessee up front when the candidate proceeds from the intro gate.\r\n * - First attempt (no assessee id): POST creates the assessee — for proctoring the response carries\r\n * a nested `proctoring` session; otherwise it's a plain assessee DTO (with `createdAt`).\r\n * - Existing attempt: proctoring refreshes the token (flat ProctoringSession); non-proctoring is a no-op\r\n * (the assessee was already loaded, so `createdAt` is known).\r\n * When proctoring is enabled it then starts the ProctorLink SDK and waits for camera permission.\r\n */\r\n private startAssessmentSession(referenceImageBase64: string = ''): Observable<any> {\r\n const assesseeId = this.assesseeResponse?.id || this.assesseeData?.id;\r\n const request$: Observable<any> = assesseeId\r\n ? (this.isProctoringEnabled ? this.assessmentTakerService.refreshProctoringToken(assesseeId) : of(null))\r\n : this.assessmentTakerService.submitAssessment(this.buildInitAssesseePayload(referenceImageBase64));\r\n return request$.pipe(\r\n tap((res: any) => {\r\n if (!res || typeof res !== 'object') {\r\n return;\r\n }\r\n if (this.isProctoringEnabled) {\r\n // create returns the DTO (nested `proctoring`); refresh returns the session fields flat\r\n const proctoring: ProctoringSession = res.proctoring ?? res;\r\n const assesseeFields = res.proctoring ? res : {};\r\n this.assesseeResponse = { ...this.assesseeResponse, ...assesseeFields, proctoring };\r\n this.proctoringSessionStarted = true;\r\n } else {\r\n // non-proctoring create → merge the new assessee (id + createdAt)\r\n this.assesseeResponse = { ...this.assesseeResponse, ...res };\r\n }\r\n if (!assesseeId) {\r\n this.newAssesseeSession = true;\r\n // first attempt just created the assessee — notify the host it's in progress\r\n this.submitAssessment.emit({\r\n assesseeId: this.assesseeResponse?.id,\r\n assesseeResponse: this.assesseeResponse,\r\n completed: false\r\n });\r\n }\r\n }),\r\n // proctored: start the ProctorLink session and request camera; completes only once granted.\r\n // non-proctored: nothing more to do.\r\n switchMap(() => this.isProctoringEnabled\r\n ? this.proctoringService.start({\r\n sessionId: this.assesseeResponse?.proctoring?.providerSessionId,\r\n jwt: this.assesseeResponse?.proctoring?.providerSessionJwt || '',\r\n // on token-expired, re-mint via the refresh API and return ONLY the new JWT to the SDK\r\n refreshToken: () => this.refreshProctoringJwt(),\r\n // the SDK is loaded by the host (keeps @proctorlink/sdk out of the library bundle)\r\n sdkLoader: this.proctorLinkLoader\r\n })\r\n : of(void 0)),\r\n catchError((err: any) => {\r\n if (err?.code === 'camera_denied') {\r\n // surfaced inside the intro gate so the candidate can allow the camera and retry\r\n return throwError({ message: this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAMERA_DENIED'] });\r\n }\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n return throwError({ message: this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSION_ERROR'] });\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Re-mints the proctoring token via the refresh API and returns ONLY the new provider JWT\r\n * (used by the SDK's token-expired flow). The rest of the refresh response is intentionally\r\n * ignored — the live session must not be re-seeded from it mid-attempt.\r\n */\r\n private refreshProctoringJwt(): Observable<string> {\r\n const assesseeId = this.assesseeResponse?.id || this.assesseeData?.id || 0;\r\n return this.assessmentTakerService.refreshProctoringToken(assesseeId).pipe(\r\n map((res: any) => (res?.providerSessionJwt ?? res?.proctoring?.providerSessionJwt) || '')\r\n );\r\n }\r\n\r\n private buildInitAssesseePayload(referenceImageBase64: string = ''): any {\r\n return this.responseBuilderService.buildInitAssesseePayload(\r\n this.assesseeResponse,\r\n this.assessmentQuestionPaperData,\r\n this.sectionFormGroups,\r\n this.questionBank,\r\n this.tenantId,\r\n referenceImageBase64\r\n );\r\n }\r\n\r\n private beginAssessment() {\r\n const duration = this.assessmentDurationSeconds;\r\n if (!(duration > 0)) {\r\n return;\r\n }\r\n // preview/disabled: show the static full duration, no countdown\r\n if (this.disabled || this.previewMode) {\r\n this.remainingTime = duration;\r\n this.updateDisplayTime();\r\n return;\r\n }\r\n if (this.resumeTimerAcrossVisits && !this.newAssesseeSession) {\r\n this.beginTrackedTimer(duration);\r\n } else {\r\n this.startTimer(duration);\r\n }\r\n }\r\n\r\n /**\r\n * Starts a timer anchored to the assessee's first-visit time. The assessee is already created by the\r\n * intro gate (so `createdAt` is known); remaining time is `duration - elapsedSinceCreatedAt`.\r\n * If the time has already run out (candidate left and returned late), shows 00:00 and auto-submits.\r\n */\r\n private beginTrackedTimer(duration: number) {\r\n const createdAt = this.assesseeResponse?.createdAt;\r\n const elapsed = createdAt ? Math.floor((Date.now() - createdAt) / 1000) : 0;\r\n const remaining = duration - elapsed;\r\n if (remaining <= 0) {\r\n this.remainingTime = 0;\r\n this.updateDisplayTime(); // shows 00:00\r\n this.autoSubmit();\r\n return;\r\n }\r\n this.startTimer(remaining);\r\n }\r\n\r\n updateQuestionConditionalControls(fg: FormGroup, question: AssessmentQuestion) {\r\n if (!question || !question.id || !question.defaultOptionsList?.length) return;\r\n\r\n const qId = question.id;\r\n question.defaultOptionsList.forEach((option: any) => {\r\n const isSelected = this.isOptionSelected(fg, question, option.options?.id);\r\n\r\n if (option.remarksRequired) {\r\n const remarkCtrl = fg.get(`${qId}_remarks_${option.id}`);\r\n if (isSelected) {\r\n remarkCtrl?.setValidators(Validators.required);\r\n } else {\r\n remarkCtrl?.clearValidators();\r\n remarkCtrl?.setValue(null);\r\n }\r\n remarkCtrl?.updateValueAndValidity();\r\n }\r\n\r\n if (option.childQuestionList?.length) {\r\n option.childQuestionList.forEach((childId: number) => {\r\n const childQues = this.questionBank[childId];\r\n if (childQues?.id) {\r\n const childCtrl = fg.get(childQues.id?.toString());\r\n if (isSelected) {\r\n const validators = this.getValidatorsForQuestion(childQues, childQues.isMandatory || false).filter(v => !!v);\r\n childCtrl?.setValidators(Validators.compose(validators));\r\n } else {\r\n childCtrl?.clearValidators();\r\n childCtrl?.setValue(null);\r\n }\r\n childCtrl?.updateValueAndValidity();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n emitStepDetails() {\r\n if (this.sectionFormGroups && this.sectionFormGroups.length > 0) {\r\n this.stepChanged.emit({\r\n currentStepIndex: this.selectedTabIndex,\r\n totalSteps: this.sectionFormGroups.length,\r\n isLastStep: this.selectedTabIndex === this.sectionFormGroups.length - 1\r\n });\r\n }\r\n }\r\n\r\n addControlForQuestion(group: any, question: AssessmentQuestion, isMandatory: boolean = false, isChild: boolean = false, parentId?: number, parentOptionId?: number) {\r\n const qId = question.id;\r\n if (!qId) return;\r\n\r\n const validators = this.getValidatorsForQuestion(question, isMandatory).filter(v => !!v);\r\n let prefilledValue = this.getPrefilledAnswer(qId, isChild, parentId, parentOptionId);\r\n\r\n const control = new FormControl(prefilledValue, Validators.compose(validators));\r\n\r\n // Disable if assessment is completed\r\n if (this.disabled) {\r\n control.disable();\r\n }\r\n\r\n group[qId] = control;\r\n\r\n // Attach mark assignment control if required\r\n if (this.enableMarks && this.shouldShowMarksDropdown(question)) {\r\n let markValue = this.getPrefilledMark(qId, isChild, parentId, parentOptionId);\r\n group[`${qId}_marks`] = new FormControl(markValue);\r\n }\r\n }\r\n\r\n getPrefilledMark(qId: number, isChild: boolean = false, parentId?: number, parentOptionId?: number): any {\r\n if (!this.assesseeResponse?.aiadefaultResponseList) return null;\r\n const answerObj = this.assesseeResponse.aiadefaultResponseList.find((a: any) => {\r\n if (isChild) {\r\n return a.childQuestionId === qId && a.childQuestionParentQuestionId === parentId && a.childDefaultOptionId === parentOptionId;\r\n } else {\r\n return a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0);\r\n }\r\n });\r\n return answerObj?.marks ?? null;\r\n }\r\n\r\n getQuestionAnswerObj(qId: number, parentOptionId?: number | null, parentQuestionId?: number | null): any {\r\n if (!this.assesseeResponse?.aiadefaultResponseList) return null;\r\n const isChild = parentOptionId !== undefined && parentOptionId !== null;\r\n return this.assesseeResponse.aiadefaultResponseList.find((a: any) => {\r\n if (isChild) {\r\n return a.childQuestionId === qId && a.childQuestionParentQuestionId === parentQuestionId && a.childDefaultOptionId === parentOptionId;\r\n } else {\r\n return a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0);\r\n }\r\n });\r\n }\r\n\r\n getQuestionWeight(qId: number): number {\r\n return this.questionBank[qId]?.weight || 0;\r\n }\r\n\r\n shouldShowMarksDropdown(question: AssessmentQuestion): boolean {\r\n const autoAssignedTypes = [\r\n 'QUESTION_TYPE.OBJECTIVE',\r\n 'QUESTION_TYPE.MULTI_SELECT'\r\n ];\r\n const hasWeight = this.getQuestionWeight(question.id || 0) > 0;\r\n return !autoAssignedTypes.includes(question.questionType?.code || '') && hasWeight;\r\n }\r\n\r\n getPrefilledAnswer(qId: number, isChild: boolean = false, parentId?: number, parentOptionId?: number): any {\r\n if (!this.assesseeResponse?.aiadefaultResponseList) return null;\r\n\r\n const answerObj = this.assesseeResponse.aiadefaultResponseList.find((a: any) => {\r\n if (isChild) {\r\n return a.childQuestionId === qId && a.childQuestionParentQuestionId === parentId && a.childDefaultOptionId === parentOptionId;\r\n } else {\r\n return a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0);\r\n }\r\n });\r\n\r\n if (!answerObj) return null;\r\n\r\n const question = this.questionBank[qId];\r\n if (!question) return null;\r\n\r\n const qType = question.questionType?.code;\r\n\r\n if (qType === 'QUESTION_TYPE.OBJECTIVE') {\r\n return answerObj.optionId;\r\n } else if (qType === 'QUESTION_TYPE.MULTI_SELECT' || qType === 'QUESTION_TYPE.PREFERENCE') {\r\n let sortedList = [...(answerObj.drobjectiveresponseList || [])];\r\n if (qType === 'QUESTION_TYPE.PREFERENCE') {\r\n sortedList.sort((a: any, b: any) => (a.orderNo || 0) - (b.orderNo || 0));\r\n }\r\n return sortedList.map((r: any) => r.defaultOption?.options) || [];\r\n } else if (qType === 'QUESTION_TYPE.FILE_UPLOAD') {\r\n return answerObj.attachmentResponseList || [];\r\n } else {\r\n return answerObj.drsubjectiveresponseList?.[0]?.responseText ?? null;\r\n }\r\n }\r\n\r\n getValidatorsForQuestion(question: AssessmentQuestion, isMandatory: boolean): any[] {\r\n const validators: any[] = [];\r\n if (isMandatory) {\r\n validators.push(Validators.required, Validators.pattern(/.*\\S.*/));\r\n }\r\n\r\n if (question.responseValidation?.length) {\r\n validators.push(Validators.pattern(question.responseValidation));\r\n } else {\r\n if (question.questionType?.code === 'QUESTION_TYPE.EMAIL') {\r\n validators.push(Validators.pattern(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/));\r\n } else if (question.questionType?.code === 'QUESTION_TYPE.URL') {\r\n validators.push(Validators.pattern(/^(https?:\\/\\/)?([\\w\\-]+(\\.[\\w\\-]+)+)([\\/?#].*)?$/i));\r\n } else if (question.questionType?.code === 'QUESTION_TYPE.CONTACT_NUMBER') {\r\n validators.push(Validators.pattern(/^[0-9]{10}$/));\r\n } else if (question.questionType?.code === 'QUESTION_TYPE.NUMBER') {\r\n validators.push(Validators.pattern(/^\\d+(\\.\\d+)?$/));\r\n }\r\n }\r\n\r\n if (question.questionConfigs && question.questionConfigs.length > 0) {\r\n const minChar = question.questionConfigs.find(c => c.configKey === 'minCharacterCount')?.configValue;\r\n if (minChar) validators.push(Validators.minLength(Number(minChar)), Validators.pattern(/.*\\S.*/));\r\n\r\n const maxChar = question.questionConfigs.find(c => c.configKey === 'maxCharacterCount')?.configValue;\r\n if (maxChar) validators.push(Validators.maxLength(Number(maxChar)));\r\n\r\n const minOpt = question.questionConfigs.find(c => c.configKey === 'minimumNumberOfOption')?.configValue;\r\n if (minOpt) {\r\n validators.push((control: FormControl) => {\r\n if (!control.value || control.value.length < Number(minOpt)) {\r\n return { minOptions: { required: Number(minOpt), actual: control.value?.length || 0 } };\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n const maxOpt = question.questionConfigs.find(c => c.configKey === 'maximumNumberOfOption')?.configValue;\r\n if (maxOpt) {\r\n validators.push((control: FormControl) => {\r\n if (control.value && control.value.length > Number(maxOpt)) {\r\n return { maxOptions: { required: Number(maxOpt), actual: control.value?.length || 0 } };\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n const maxFiles = question.questionConfigs.find(c => c.configKey === 'maxNoOfFiles')?.configValue;\r\n if (maxFiles) {\r\n validators.push((control: FormControl) => {\r\n if (control.value && control.value.length > Number(maxFiles)) {\r\n return { maxFiles: { required: Number(maxFiles), actual: control.value?.length || 0 } };\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n const maxFileSize = question.questionConfigs.find(c => c.configKey === 'maxFileSize')?.configValue;\r\n if (maxFileSize) {\r\n validators.push((control: FormControl) => {\r\n if (control.value && Array.isArray(control.value)) {\r\n const hasLargeFile = control.value.some((file: any) => file?.size && file.size > (Number(maxFileSize) * 1024 * 1024));\r\n if (hasLargeFile) {\r\n return { maxFileSize: { requiredSize: Number(maxFileSize) } };\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n }\r\n return validators;\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n isOptionSelected(formGroup: FormGroup, question: AssessmentQuestion, optionId: number | undefined): boolean {\r\n if (!optionId) return false;\r\n\r\n let controlName = question.id?.toString();\r\n\r\n if (!controlName) return false;\r\n\r\n const control = formGroup.get(controlName);\r\n if (!control || control.value == null) return false;\r\n\r\n // Multi-select deals with an array of values\r\n if (Array.isArray(control.value)) {\r\n return control.value.includes(optionId) || control.value.some((val: any) => val?.id === optionId);\r\n }\r\n\r\n // Objective / Single select deals with a single value (could be integer ID or object)\r\n if (typeof control.value === 'object' && control.value.id) {\r\n return control.value.id === optionId;\r\n }\r\n\r\n return control.value === optionId;\r\n }\r\n\r\n getMaxCharCount(question: AssessmentQuestion): number {\r\n const config = question?.questionConfigs?.find(c => c.configKey === 'maxCharacterCount');\r\n return config ? Number(config.configValue) : 0;\r\n }\r\n\r\n getRemainingChars(question: AssessmentQuestion, control: any): number {\r\n const max = this.getMaxCharCount(question);\r\n const currentLength = control.value ? control.value.length : 0;\r\n return max - currentLength;\r\n }\r\n\r\n goBack() {\r\n if (this.selectedTabIndex > 0) {\r\n this.selectedTabIndex--;\r\n }\r\n }\r\n\r\n get isCheckingLink(): boolean {\r\n return this.sectionFormGroups?.some(group =>\r\n !!group?.formGroup && Object.values(group.formGroup.controls).some((c: any) => !!c?.errors?.['gdriveLinkChecking'])\r\n ) ?? false;\r\n }\r\n\r\n shouldDisableTab(index: number): boolean {\r\n for (let j = 0; j < index; j++) {\r\n if (this.sectionFormGroups[j]?.formGroup?.invalid) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n goNext(saveData: boolean = true) {\r\n const save = this.assessmentData?.assessmentConfigs?.find(c => c.configKey == 'assesment.config.allowed-partial-response')?.configValue == '1';\r\n const currentSection = this.sectionFormGroups[this.selectedTabIndex];\r\n if (!currentSection) return;\r\n\r\n currentSection.formGroup.markAllAsTouched();\r\n\r\n // wait while a Google Drive public-link check is in progress\r\n if (this.isCheckingLink) {\r\n return;\r\n }\r\n\r\n if (currentSection.formGroup.invalid) {\r\n this.sectionErrors[this.selectedTabIndex] = true;\r\n return;\r\n }\r\n\r\n\r\n this.sectionErrors[this.selectedTabIndex] = false;\r\n\r\n if (this.selectedTabIndex < this.sectionFormGroups.length - 1 && !this.verticalView) {\r\n save && saveData ? this.save() : this.selectedTabIndex++;\r\n } else {\r\n this.processSubmit(saveData);\r\n }\r\n }\r\n\r\n processSubmit(saveData: boolean = true) {\r\n // wait while a Google Drive public-link check is in progress\r\n if (this.isCheckingLink) {\r\n return;\r\n }\r\n let firstInvalidIndex = -1;\r\n this.sectionFormGroups.forEach((group, index) => {\r\n group.formGroup.markAllAsTouched();\r\n if (group.formGroup.invalid) {\r\n this.sectionErrors[index] = true;\r\n if (firstInvalidIndex === -1) firstInvalidIndex = index;\r\n } else {\r\n this.sectionErrors[index] = false;\r\n }\r\n });\r\n\r\n if (firstInvalidIndex !== -1) {\r\n if (!this.verticalView) {\r\n this.selectedTabIndex = firstInvalidIndex;\r\n } else {\r\n this.expandedState[firstInvalidIndex] = true;\r\n }\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.FIX_ERRORS'], type: 'error' });\r\n this.scrollToFirstInvalidField(firstInvalidIndex);\r\n return;\r\n }\r\n\r\n this.save(true, saveData);\r\n }\r\n\r\n scrollToFirstInvalidField(sectionIndex: number) {\r\n setTimeout(() => {\r\n const formGroup = this.sectionFormGroups[sectionIndex].formGroup;\r\n for (const controlName in formGroup.controls) {\r\n if (formGroup.controls[controlName].invalid) {\r\n let qId = controlName;\r\n if (controlName.includes('_remarks_') || controlName.includes('_marks')) {\r\n qId = controlName.split('_')[0];\r\n }\r\n const element = document.getElementById(`question-container-${qId}`);\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n break;\r\n }\r\n }\r\n }\r\n }, 100);\r\n }\r\n\r\n save(goNext: boolean = true, saveData: boolean = true) {\r\n // block while a Google Drive public-link check is in progress\r\n if (this.isSubmitting || this.isCheckingLink) return;\r\n\r\n this.isSubmitting = true;\r\n if (!this.disabled || this.isAutoSubmitting) {\r\n if (this.markAsCompleted && (this.selectedTabIndex == this.sectionFormGroups.length - 1 || this.verticalView || this.isAutoSubmitting)) {\r\n this.assesseeResponse.assessmentTaken = { code: 'ASSESSMENT_TAKEN.COMPLETE' };\r\n } else {\r\n this.assesseeResponse.assessmentTaken = { code: 'ASSESSMENT_TAKEN.INCOMPLETE' };\r\n }\r\n }\r\n\r\n const payload = this.responseBuilderService.buildResponsePayload(\r\n this.assesseeResponse,\r\n this.assessmentQuestionPaperData,\r\n this.sectionFormGroups,\r\n this.questionBank,\r\n this.tenantId\r\n );\r\n\r\n if (this.showOverallRemarks && this.assesseeResponse) {\r\n this.assesseeResponse.notes = this.overallNotesCtrl.value || null;\r\n payload.notes = this.assesseeResponse.notes;\r\n }\r\n\r\n if (!saveData || (this.disabled && !this.enableMarks && !this.isAutoSubmitting)) {\r\n this.isSubmitting = false;\r\n this.submitAssessment.emit({\r\n assesseeId: this.assesseeResponse?.id,\r\n assesseeResponse: payload,\r\n completed: goNext && (this.selectedTabIndex == this.sectionFormGroups.length - 1 || this.verticalView)\r\n });\r\n if (goNext && this.selectedTabIndex < this.sectionFormGroups.length - 1) {\r\n this.selectedTabIndex++;\r\n }\r\n return;\r\n }\r\n let apiCall = this.assesseeResponse?.id ? this.assessmentTakerService.patchAssessment(payload) : this.assessmentTakerService.submitAssessment(payload);\r\n if (this.disabled && this.enableMarks) {\r\n const marksPayload: any = this.responseBuilderService.buildMarksPayload(payload);\r\n if (this.showOverallRemarks) {\r\n marksPayload.notes = this.overallNotesCtrl.value || null;\r\n }\r\n apiCall = this.assessmentTakerService.updateMarks(marksPayload);\r\n }\r\n apiCall.subscribe({\r\n next: (res: any) => {\r\n this.assesseeResponse = res;\r\n this.assesseeResponse = res;\r\n if (this.assesseeResponse?.assessmentTaken?.code == 'ASSESSMENT_TAKEN.COMPLETE') {\r\n this.disableForm();\r\n // assessment finished — stop proctoring capture and end the backend session\r\n this.endProctoringSession();\r\n }\r\n this.overallNotesCtrl.setValue(this.assesseeResponse.notes || '');\r\n this.isSubmitting = false;\r\n this.submitAssessment.emit({\r\n assesseeId: this.assesseeResponse?.id || res,\r\n assesseeResponse: this.assesseeResponse?.id ? this.assesseeResponse : payload,\r\n completed: goNext && (this.selectedTabIndex == this.sectionFormGroups.length - 1 || this.verticalView || this.isAutoSubmitting)\r\n });\r\n if (goNext && this.selectedTabIndex < this.sectionFormGroups.length - 1 && !this.isAutoSubmitting) {\r\n this.selectedTabIndex++;\r\n }\r\n if (this.isAutoSubmitting) {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.AUTO_SUBMITTED'], type: 'info' });\r\n }\r\n },\r\n error: error => {\r\n this.isSubmitting = false;\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.SAVE_FAILED'], type: 'error' });\r\n throw { error, method: this.assesseeResponse?.id ? 'PATCH' : 'POST', payload }\r\n }\r\n });\r\n }\r\n\r\n getAnswersByAiaId(assesseeId: number) {\r\n this.assessmentTakerService.getAnswersByAiaId(assesseeId).subscribe({\r\n next: (res: any) => {\r\n this.assesseeResponse = res;\r\n if (this.assesseeResponse?.assessmentTaken?.code == 'ASSESSMENT_TAKEN.COMPLETE') {\r\n this.disableForm();\r\n }\r\n this.overallNotesCtrl.setValue(this.assesseeResponse.notes || '');\r\n },\r\n error: error => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.GET_FAILED'], type: 'error' });\r\n throw { error, method: 'GET' }\r\n }\r\n });\r\n }\r\n\r\n addYoutubeIframeSrc(videoUrl: string) {\r\n if (!videoUrl) return null;\r\n if (this.youtubeUrlCache[videoUrl]) {\r\n return this.youtubeUrlCache[videoUrl];\r\n }\r\n const videoId = this.getVideoId(videoUrl);\r\n const youtubeUrl = `https://www.youtube.com/embed/${videoId}`;\r\n this.youtubeUrlCache[videoUrl] = this.sanitizer.bypassSecurityTrustResourceUrl(youtubeUrl);\r\n return this.youtubeUrlCache[videoUrl];\r\n }\r\n\r\n getVideoId(videoUrl: string) {\r\n let pattern = null;\r\n if (videoUrl.includes('youtube.com')) {\r\n pattern = /(?:\\?v=|&v=|youtu\\.be\\/|\\/embed\\/|\\/\\d\\/|\\/vi\\/|\\/v\\/|https?:\\/\\/(?:www\\.)?youtube\\.com\\/(?:v\\/|embed\\/|watch\\?(?:\\S+&)?v=|watch\\?(?:\\S+&)?vi=|\\S+\\/))([a-zA-Z0-9_-]{11})/;\r\n } else if (videoUrl.includes('youtu.be')) {\r\n pattern = /youtu\\.be\\/([a-zA-Z0-9_-]{11})/;\r\n }\r\n if (pattern) {\r\n const match = videoUrl.match(pattern);\r\n if (match && match[1]) {\r\n return match[1];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n openInstructionsDialog(section: QuestionPaperSection) {\r\n this.dialog.open(SectionInstructionsComponent, {\r\n autoFocus: false,\r\n maxWidth: '95%',\r\n width: 'calc(20rem + 500px)',\r\n maxHeight: '95dvh',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n imageConfig: this.imageConfig,\r\n labelConfig: this.labelConfig,\r\n sectionDetails: section,\r\n youtubeUrlCache: this.youtubeUrlCache\r\n },\r\n });\r\n }\r\n\r\n checkMaxVal(event: any, control: any, maxVal: number | undefined) {\r\n const totalMarks = Number(maxVal) || 0;\r\n if (totalMarks > 0) {\r\n let val = Number(event.target.value);\r\n if (val > totalMarks) {\r\n event.target.value = totalMarks;\r\n control?.setValue(totalMarks, { emitEvent: false });\r\n }\r\n }\r\n }\r\n\r\n preventNegativeInput(event: KeyboardEvent): void {\r\n if (['-', '+', 'e', 'E'].includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n openProctoringResult() {\r\n this.dialog.open(ProctoringResultComponent, {\r\n autoFocus: false,\r\n position: { right: '0' },\r\n maxWidth: '100%',\r\n width: '34rem',\r\n height: '100dvh',\r\n maxHeight: '100dvh',\r\n panelClass: ['assessment-dialog', 'assessment-dialog-slider-animation'],\r\n hasBackdrop: true,\r\n data: {\r\n labelConfig: this.labelConfig,\r\n imageConfig: this.imageConfig,\r\n assesseeId: this.assesseeResponse?.id || this.assesseeData?.id,\r\n assesseeName: this.assesseeData?.name\r\n }\r\n });\r\n }\r\n\r\n openSkillAllocationDialog(skillList?: SkillScore[]) {\r\n this.dialog.open(SkillAllocationComponent, {\r\n maxHeight: '95dvh',\r\n maxWidth: '90vw',\r\n width: '35rem',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n label: this.labelConfig,\r\n skillList\r\n }\r\n });\r\n }\r\n\r\n\r\n // timer\r\n startTimer(durationInSeconds: number) {\r\n if (this.timerInterval) {\r\n clearInterval(this.timerInterval);\r\n }\r\n this.remainingTime = Number(durationInSeconds);\r\n this.updateDisplayTime();\r\n\r\n this.timerInterval = setInterval(() => {\r\n if (this.remainingTime > 0) {\r\n this.remainingTime--;\r\n this.updateDisplayTime();\r\n } else {\r\n this.autoSubmit();\r\n }\r\n }, 1000);\r\n }\r\n\r\n updateDisplayTime() {\r\n const minutes = Math.floor(this.remainingTime / 60);\r\n const seconds = this.remainingTime % 60;\r\n const paddedMinutes = String(minutes).padStart(2, '0');\r\n const paddedSeconds = String(seconds).padStart(2, '0');\r\n this.displayTime = `${paddedMinutes}:${paddedSeconds}`;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n autoSubmit() {\r\n if (this.timerInterval) {\r\n clearInterval(this.timerInterval);\r\n }\r\n this.remainingTime = 0;\r\n this.timeExpired = true;\r\n this.updateDisplayTime();\r\n this.disableForm();\r\n this.isAutoSubmitting = true;\r\n this.save();\r\n }\r\n\r\n disableForm() {\r\n this.disabled = true;\r\n this.sectionFormGroups?.forEach(group => {\r\n Object.keys(group?.formGroup?.controls)?.forEach(key => {\r\n if (this.enableMarks && key.endsWith('_marks')) {\r\n return;\r\n }\r\n group?.formGroup?.controls?.[key]?.disable();\r\n });\r\n });\r\n }\r\n\r\n trackBySectionId(index: number, section: any) {\r\n return section?.id != null ? 's' + section.id : 'i' + index;\r\n }\r\n\r\n trackBySectionQuestion(index: number, sq: any) {\r\n if (sq?.questionId != null) return 'q' + sq.questionId;\r\n if (sq?.id != null) return 's' + sq.id;\r\n return 'i' + index;\r\n }\r\n\r\n trackByOptionId(index: number, option: any) {\r\n return option?.options?.id != null ? 'o' + option.options.id : 'i' + index;\r\n }\r\n\r\n trackByChildId(index: number, id: any) {\r\n return id != null ? 'c' + id : 'i' + index;\r\n }\r\n}\r\n","<div *ngIf=\"configsLoaded && !showLoader; else loader\" class=\"col-12 h-100\">\r\n <div class=\"col-12 h-100 pt-2 pb-4\" [class.height-without-footer]=\"showFooter\">\r\n <div *ngIf=\"previewMode && isProctoringEnabled && (assesseeResponse?.id || assesseeData?.id)\" class=\"d-flex justify-content-end mb-3\">\r\n <button type=\"button\" (click)=\"openProctoringResult()\"\r\n class=\"assessment-zoom-animation assessment-button-padding assessment-border-radius-two assessment-btn-primary-transparent assessment-text-semibold-13 d-flex align-items-center gap-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PROCTORING']\" width=\"16\" height=\"16\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/proctoring.svg')\" />\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.VIEW_REPORT'] }}\r\n </button>\r\n </div>\r\n <!-- Full-screen intro gate — questions stay hidden until proceed -->\r\n <lib-proctoring-consent *ngIf=\"introActive\" [labelConfig]=\"labelConfig\"\r\n [proctoringEnabled]=\"isProctoringEnabled\" [requireCapture]=\"requireReferenceCapture\"\r\n [sectionCount]=\"totalSectionCount\" [questionCount]=\"totalQuestionCount\"\r\n [durationSeconds]=\"assessmentDurationSeconds\"\r\n [confirmAction]=\"startSessionAction\" (proceeded)=\"onIntroProceeded()\">\r\n </lib-proctoring-consent>\r\n\r\n <div *ngIf=\"assessmentContext?.assessmentInstanceDTO?.duration && !previewMode && !introActive && (!disabled || timeExpired)\"\r\n class=\"d-flex align-items-center gap-md-3 gap-2 px-3 py-2 assessment-border-radius-two mb-4 timer-container assessment-bg-palette-FEF1E8\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-0\">{{displayTime}}</p>\r\n <p class=\"assessment-text-grey-ten assessment-text-medium-12 mb-0\">\r\n {{ timeExpired\r\n ? labelConfig['COMMONS_ASSESSMENT.LABEL.TIMER_EXPIRED']\r\n : labelConfig['COMMONS_ASSESSMENT.LABEL.TIMER_AUTO_SUBMIT'] }}</p>\r\n </div>\r\n <ng-container *ngIf=\"assessmentQuestionPaperData?.questionPaperSectionList?.length && !introActive\">\r\n <mat-tab-group *ngIf=\"!verticalView\" animationDuration=\"0ms\" class=\"assessment-mat-custom-tabs\"\r\n [ngClass]=\"{'assessment-hide-tabs': hideSectionTabs}\" [(selectedIndex)]=\"selectedTabIndex\">\r\n <mat-tab\r\n *ngFor=\"let section of assessmentQuestionPaperData.questionPaperSectionList | orderBy; let i = index; trackBy: trackBySectionId\"\r\n [disabled]=\"shouldDisableTab(i)\">\r\n <ng-template mat-tab-label>\r\n <span class=\"assessment-text-semibold-16\"\r\n [ngClass]=\"sectionErrors[i] ? 'assessment-text-danger' : ''\">{{section.qpsName?.[0]?.text}}</span>\r\n </ng-template>\r\n <div class=\"mt-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sectionContent; context: { section: section, i: i }\"></ng-container>\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <mat-accordion *ngIf=\"verticalView\" multi=\"true\" class=\"d-flex flex-column gap-4\">\r\n <mat-expansion-panel\r\n *ngFor=\"let section of assessmentQuestionPaperData.questionPaperSectionList | orderBy; let i = index; trackBy: trackBySectionId\"\r\n [expanded]=\"expandedState[i] !== false\" (opened)=\"expandedState[i] = true\"\r\n (closed)=\"expandedState[i] = false\"\r\n class=\"assessment-border-radius-two shadow-none m-0 assessment-panel bg-transparent\">\r\n <mat-expansion-panel-header class=\"assessment-bg-grey-two h-auto assessment-panel-header\">\r\n <div class=\"d-flex align-items-center justify-content-between gap-2 col-12 pe-3\">\r\n <span class=\"assessment-text-semibold-16\"\r\n [ngClass]=\"sectionErrors[i] ? 'assessment-text-danger' : ''\">\r\n {{section.qpsName?.[0]?.text}}</span>\r\n\r\n <ng-container *ngIf=\"sectionWiseScore?.[section?.id] as sectionScore\">\r\n <div *ngIf=\"(sectionScore?.totalMarks ?? 0) > 0\"\r\n class=\"d-flex align-items-center gap-2 assessment-text-primary-four\">\r\n <span *ngIf=\"(sectionScore?.skillScores?.length ?? 0) > 0\"\r\n class=\"assessment-text-medium-11 assessment-text-grey-ten px-2 py-1 assessment-border-radius-two skill-chip cursor-pointer\"\r\n (click)=\"$event.stopPropagation(); openSkillAllocationDialog(sectionScore?.skillScores)\">\r\n {{sectionScore?.skillScores?.length}}\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SKILLS']}}\r\n </span>\r\n <span class=\"white-space-nowrap assessment-text-semibold-13\">\r\n <span class=\"assessment-text-medium-15 me-1\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SCORE']}}:</span>\r\n {{sectionScore.obtainedMarks || 0}}/{{sectionScore.totalMarks}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <div class=\"mt-3\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sectionContent; context: { section: section, i: i }\"></ng-container>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n\r\n <div *ngIf=\"!assessmentQuestionPaperData?.questionPaperSectionList?.length\"\r\n class=\"h-100 d-flex flex-column align-items-center justify-content-center gap-3\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.NO_QUESTIONS']\" class=\"col-sm-auto col-6\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/no-questions.svg')\" />\r\n <div class=\"text-center\">\r\n <p class=\"mb-1 assessment-text-medium-18\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.NO_QUESTIONS']}}</p>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showOverallRemarks && assessmentQuestionPaperData?.questionPaperSectionList?.length\" class=\"mt-3\">\r\n <p class=\"assessment-text-medium-15 mb-2\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.OVERALL_REMARKS']}}</p>\r\n <textarea\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"\r\n rows=\"3\" [formControl]=\"overallNotesCtrl\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.REMARKS']\"></textarea>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showFooter && !introActive\"\r\n class=\"bg-white p-3 position-sticky bottom-0 d-flex align-items-center justify-content-end border-top gap-3 z-index-1\">\r\n <button\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary-transparent assessment-text-semibold-13\"\r\n (click)=\"goBack()\" *ngIf=\"selectedTabIndex > 0 && !verticalView\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.GO_BACK']}}</button>\r\n <button [disabled]=\"isSubmitting || (disabled && !enableMarks && !showOverallRemarks) || isCheckingLink\" (click)=\"verticalView ? goNext(true) : goNext()\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary assessment-text-semibold-13 position-relative\">\r\n <span [ngClass]=\"{'opacity-0': isSubmitting}\">\r\n {{ (verticalView || selectedTabIndex === sectionFormGroups.length - 1) ?\r\n labelConfig['COMMONS_ASSESSMENT.LABEL.SUBMIT'] : labelConfig['COMMONS_ASSESSMENT.LABEL.NEXT'] }}\r\n </span>\r\n <mat-spinner *ngIf=\"isSubmitting\" [diameter]=\"20\"\r\n class=\"position-absolute top-50 start-50 translate-middle assessment-spinner-white\"></mat-spinner>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loader>\r\n <div class=\"h-100 col-12 d-flex align-items-center justify-content-center py-5\">\r\n <mat-spinner diameter=\"60\" class=\"assessment-spinner-primary\"></mat-spinner>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Recursive Template for Questions & Child Questions -->\r\n<ng-template #questionTemplate let-questionId=\"questionId\" let-isMandatory=\"isMandatory\" let-groupIndex=\"groupIndex\"\r\n let-parentOptionId=\"parentOptionId\" let-parentQuestionId=\"parentQuestionId\" let-sequence=\"sequence\">\r\n <div *ngIf=\"sectionFormGroups[groupIndex].formGroup as formGroup\" [formGroup]=\"formGroup\"\r\n [id]=\"'question-container-' + questionId\">\r\n <div class=\"assessment-border-radius-two assessment-bg-white\"\r\n [ngClass]=\"{'p-3 assessment-card-border': !parentOptionId}\" *ngIf=\"questionBank[questionId] as question\">\r\n <div class=\"d-flex flex-md-row flex-column gap-2 align-items-start\">\r\n <div class=\"flex-grow-1 d-flex align-items-start gap-1\">\r\n <span class=\"assessment-text-medium-15 text-nowrap d-md-block d-none\"\r\n *ngIf=\"sequence\">{{sequence}}.</span>\r\n <div class=\"flex-grow-1\">\r\n <div class=\"d-flex gap-2 align-items-start col-12\">\r\n <div class=\"flex-grow-1\">\r\n <p class=\"assessment-text-medium-15 mb-0 d-flex gap-1\">\r\n <span>\r\n <span [innerHtml]=\"question.questionText?.[0]?.text\"></span>\r\n <span *ngIf=\"isMandatory\"\r\n class=\"assessment-text-regular-11 assessment-text-grey-eight\">\r\n ({{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY']}})</span>\r\n </span>\r\n </p>\r\n <div class=\"mt-3 col-12\" *ngIf=\"question?.mediaUrl?.length\">\r\n <ng-container\r\n *ngTemplateOutlet=\"VideoTemplate; context:{videoUrl:question?.mediaUrl}\"></ng-container>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"question.hintText?.length && !previewMode\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.INFO']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/info.svg')\"\r\n cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\r\n (mouseenter)=\"tooltipState[question.id!] = true\"\r\n (mouseleave)=\"tooltipState[question.id!] = false\" class=\"cursor-pointer\" />\r\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"tooltipState[question.id!] || false\"\r\n [cdkConnectedOverlayPositions]=\"[{ originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8, offsetY: 0 }, { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8, offsetY: 0 }]\">\r\n <div class=\"assessment-bg-grey-two assessment-tooltip-border p-3 assessment-border-radius-two assessment-box-shadow-tooltip question-info assessment-text-regular-13\"\r\n (mouseenter)=\"tooltipState[question.id!] = true\"\r\n (mouseleave)=\"tooltipState[question.id!] = false\"\r\n [innerHTML]=\"question.hintText\">\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- answer field -->\r\n <div *ngIf=\"previewMode && !isMobile\" class=\"mt-2\">\r\n <ng-container\r\n *ngTemplateOutlet=\"answerField; context: {question: question,previewMode: previewMode,isMandatory: isMandatory,groupIndex: groupIndex,parentOptionId: parentOptionId,parentQuestionId: parentQuestionId}\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- answer field -->\r\n <div *ngIf=\"isMobile\" class=\"col-12 mt-2\">\r\n <ng-container\r\n *ngTemplateOutlet=\"answerField; context: {question: question,previewMode: previewMode,isMandatory: isMandatory,groupIndex: groupIndex,parentOptionId: parentOptionId,parentQuestionId: parentQuestionId}\"></ng-container>\r\n </div>\r\n\r\n <!-- Assessor Marks Logic -->\r\n <div class=\"assessment-marks-field\"\r\n *ngIf=\"enableMarks && shouldShowMarksDropdown(question) && formGroup.get(question.id + '_marks') as marksControl\">\r\n <label class=\"assessment-text-medium-12 assessment-text-grey-ten\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}(Max: {{question.weight}})</label>\r\n <input (keydown)=\"preventNegativeInput($event)\"\r\n (input)=\"checkMaxVal($event, marksControl, question?.weight)\"\r\n class=\"col-12 assessment-input-border-one assessment-border-radius-two px-2 py-1 outline-0 assessment-bg-grey-one assessment-text-medium-12\"\r\n [formControlName]=\"question.id + '_marks'\" type=\"number\" min=\"0\"\r\n (wheel)=\"$event.preventDefault()\">\r\n </div>\r\n </div>\r\n\r\n <!-- answer field -->\r\n <div *ngIf=\"!previewMode && !isMobile\" class=\"mt-3\">\r\n <ng-container\r\n *ngTemplateOutlet=\"answerField; context: {question: question,previewMode: previewMode,isMandatory: isMandatory,groupIndex: groupIndex,parentOptionId: parentOptionId,parentQuestionId: parentQuestionId}\"></ng-container>\r\n </div>\r\n\r\n <!-- Child Questions and Remarks Rendering Logic based on checked form state -->\r\n <ng-container *ngIf=\"question.defaultOptionsList?.length\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList; trackBy: trackByOptionId\">\r\n\r\n <ng-container *ngIf=\"isOptionSelected(formGroup, question, option.options?.id)\">\r\n\r\n <!-- REMARKS FIELD -->\r\n <div class=\"mt-3\"\r\n *ngIf=\"option.remarksRequired && formGroup.get(question.id + '_remarks_' + option.id) as remarksControl\">\r\n <p class=\"assessment-text-regular-15 mb-2\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.REMARKS']}}</p>\r\n <textarea *ngIf=\"!previewMode\" formControlName=\"{{question.id}}_remarks_{{option.id}}\"\r\n rows=\"2\" [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.REMARKS']\"\r\n [ngClass]=\"remarksControl.invalid && remarksControl.touched ? 'assessment-input-border-invalid' : ''\"\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"></textarea>\r\n <ng-container *ngIf=\"previewMode\">\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\">\r\n {{ remarksControl.value }}</span>\r\n </ng-container>\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"remarksControl.invalid && remarksControl.touched\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.FIELD_REQUIRED']}}\r\n </div>\r\n </div>\r\n\r\n <!-- CHILD QUESTIONS RECURSION -->\r\n <div class=\"col-12 mt-4 d-flex flex-column gap-3\" *ngIf=\"option.childQuestionList?.length\">\r\n <ng-container *ngFor=\"let childId of option.childQuestionList; let childIndex = index; trackBy: trackByChildId\">\r\n <ng-container *ngTemplateOutlet=\"questionTemplate; context: {\r\n questionId: childId,\r\n isMandatory: questionBank[childId]?.isMandatory,\r\n groupIndex: groupIndex,\r\n parentOptionId: option.id,\r\n parentQuestionId: question.id,\r\n sequence: sequence + '.' + (childIndex + 1)\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- answer field template -->\r\n<ng-template #answerField let-question=\"question\" let-previewMode=\"previewMode\" let-isMandatory=\"isMandatory\"\r\n let-groupIndex=\"groupIndex\" let-parentOptionId=\"parentOptionId\" let-parentQuestionId=\"parentQuestionId\">\r\n <div *ngIf=\"sectionFormGroups[groupIndex].formGroup\" [formGroup]=\"sectionFormGroups[groupIndex].formGroup\"\r\n class=\"col-12\">\r\n <ng-container [ngSwitch]=\"question.questionType?.code\">\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.SUBJECTIVE_SHORT'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.SUBJECTIVE_LONG'\">\r\n <lib-question-type-long [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-long>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.SUBJECTIVE_RICH_TEXT'\">\r\n <lib-question-type-editor [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-editor>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.OBJECTIVE'\">\r\n <lib-question-type-objective [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [showCorrectAnswers]=\"showCorrectAnswers\" [imageConfig]=\"imageConfig\"\r\n [answerObj]=\"getQuestionAnswerObj(question.id!, parentOptionId, parentQuestionId)\"></lib-question-type-objective>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.MULTI_SELECT'\">\r\n <lib-question-type-multiselect [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [showCorrectAnswers]=\"showCorrectAnswers\" [imageConfig]=\"imageConfig\"\r\n [answerObj]=\"getQuestionAnswerObj(question.id!, parentOptionId, parentQuestionId)\"></lib-question-type-multiselect>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.PREFERENCE'\">\r\n <lib-question-type-preference [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\"></lib-question-type-preference>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.NUMBER'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.EMAIL'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.CONTACT_NUMBER'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.URL'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.FILE_UPLOAD'\">\r\n <lib-question-type-file-upload [question]=\"question\" [assessmentInstanceId]=\"assessmentInstanceId\"\r\n [formControlName]=\"question.id!\" [required]=\"isMandatory\" [labelConfig]=\"labelConfig\"\r\n [imageConfig]=\"imageConfig\" (snackbarMessage)=\"snackbarMessage.emit($event)\"></lib-question-type-file-upload>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.DATE_PICKER'\">\r\n <lib-question-type-date-picker [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-date-picker>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Error Messages and Character Count Container -->\r\n <ng-container\r\n *ngIf=\"!previewMode && sectionFormGroups[groupIndex].formGroup.get(question.id?.toString() || '') as control\">\r\n <div class=\"d-flex justify-content-between align-items-start mt-1\">\r\n <span>\r\n <div class=\"assessment-text-regular-12 assessment-text-danger\"\r\n *ngIf=\"control.touched && control.errors?.['required']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED_RESPONSE']}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['pattern']\">\r\n {{question?.validationMessage || labelConfig['COMMONS_ASSESSMENT.ERROR.INVALID_FORMAT']}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['privateGdriveLink']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.PRIVATE_DRIVE_LINK']}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['minlength']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MIN_CHARS']?.replace('{{length}}',\r\n control.errors?.['minlength'].requiredLength + '')}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxlength']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_CHARS']?.replace('{{length}}',\r\n control.errors?.['maxlength'].requiredLength + '')}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['minOptions']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MIN_OPTIONS']?.replace('{{count}}',\r\n control.errors?.['minOptions'].required + '')}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxOptions']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_OPTIONS']?.replace('{{count}}',\r\n control.errors?.['maxOptions'].required + '')}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxFiles']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_FILES']?.replace('{{count}}',\r\n control.errors?.['maxFiles'].required + '')}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxFileSize']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_FILE_SIZE']?.replace('{{size}}',\r\n control.errors?.['maxFileSize'].requiredSize + '')}}\r\n </div>\r\n </span>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-grey-seven white-space-nowrap ms-2\"\r\n *ngIf=\"getMaxCharCount(question) > 0\">\r\n {{ getRemainingChars(question, control) }}\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.CHARACTER']}}{{getRemainingChars(question, control) !==\r\n 1\r\n ? 's' : ''}} {{labelConfig['COMMONS_ASSESSMENT.LABEL.REMAINING']}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Reusable Section Form Template -->\r\n<ng-template #sectionContent let-section=\"section\" let-i=\"i\">\r\n <form class=\"w-100\" *ngIf=\"sectionFormGroups[i].formGroup\" [formGroup]=\"sectionFormGroups[i].formGroup\"\r\n [name]=\"'sectionfrm-' + i\" novalidate>\r\n <div class=\"d-flex justify-content-between align-items-center mb-4\"\r\n *ngIf=\"!previewMode && (section?.qpsDesc?.[0]?.text || section?.mediaUrl)\">\r\n <span class=\"assessment-text-semibold-14 assessment-text-grey-ten\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.TOTAL_QUESTIONS']}}: {{ section?.totalQuestions || 0 }}\r\n </span>\r\n <button (click)=\"openInstructionsDialog(section)\"\r\n class=\"assessment-zoom-animation assessment-button-padding assessment-text-medium-13 assessment-btn-primary-transparent\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.VIEW_INSTRUCTIONS']}}\r\n </button>\r\n </div>\r\n\r\n <div class=\"col-12 d-flex flex-column gap-3\">\r\n <ng-container *ngFor=\"let sq of section.sectionQuestionsList | orderBy; let j = index; trackBy: trackBySectionQuestion\">\r\n <ng-container *ngTemplateOutlet=\"questionTemplate; context: {\r\n questionId: sq.questionId,\r\n isMandatory: questionBank[sq.questionId]?.isMandatory,\r\n groupIndex: i,\r\n parentOptionId: null,\r\n parentQuestionId: null,\r\n sequence: j + 1\r\n }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n<!-- video preview -->\r\n<ng-template let-videoUrl=\"videoUrl\" #VideoTemplate>\r\n <div class=\"assessment-border-radius-two overflow-hidden col-md-10 col-12\">\r\n <video *ngIf=\"videoUrl?.includes('.mp4') else youtubeVideo\" width=\"400\" controls class=\"mw-100 d-block mx-auto\">\r\n <source [src]=\"videoUrl\" type=\"video/mp4\">\r\n </video>\r\n <ng-template #youtubeVideo>\r\n <div class=\"youtube-video position-relative h-100\">\r\n <iframe [src]=\"addYoutubeIframeSrc(videoUrl)\" title=\"YouTube video player\" frameborder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n allowfullscreen class=\"position-absolute top-0 start-0 w-100 h-100 d-block\">\r\n </iframe>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ng-template>","import { NgModule } from \"@angular/core\";\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\n\r\nconst MATERIAL_MODULES = [\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatSelectModule,\r\n DragDropModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatTooltipModule,\r\n MatTabsModule,\r\n OverlayModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule\r\n];\r\n\r\n@NgModule({\r\n imports: MATERIAL_MODULES,\r\n exports: MATERIAL_MODULES\r\n})\r\nexport class MaterialModules { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { MaterialModules } from \"./material-modules\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AngularEditorModule } from \"@kolkov/angular-editor\";\r\nimport { TextEditorComponent } from \"./components/text-editor/text-editor.component\";\r\nimport { OrderByPipe } from \"./pipes/order-by.pipe\";\r\nimport { SkillAllocationComponent } from \"./components/skill-allocation/skill-allocation.component\";\r\nimport { ConfirmationDialogComponent } from \"./components/confirmation-dialog/confirmation-dialog.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n TextEditorComponent,\r\n OrderByPipe,\r\n SkillAllocationComponent,\r\n ConfirmationDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MaterialModules,\r\n AngularEditorModule\r\n ],\r\n exports: [\r\n TextEditorComponent,\r\n SkillAllocationComponent,\r\n ConfirmationDialogComponent,\r\n MaterialModules,\r\n OrderByPipe\r\n ]\r\n})\r\nexport class SharedModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { AssessmentTakerComponent } from './assessment-taker.component';\r\nimport { MaterialModules } from '../../shared/material-modules';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { QuestionTypeEditorComponent } from './components/question-type-editor/question-type-editor.component';\r\nimport { QuestionTypeFileUploadComponent } from './components/question-type-file-upload/question-type-file-upload.component';\r\nimport { QuestionTypeLongComponent } from './components/question-type-long/question-type-long.component';\r\nimport { QuestionTypeMultiselectComponent } from './components/question-type-multiselect/question-type-multiselect.component';\r\nimport { QuestionTypeObjectiveComponent } from './components/question-type-objective/question-type-objective.component';\r\nimport { QuestionTypePreferenceComponent } from './components/question-type-preference/question-type-preference.component';\r\nimport { QuestionTypeShortComponent } from './components/question-type-short/question-type-short.component';\r\nimport { SectionInstructionsComponent } from './components/section-instructions/section-instructions.component';\r\nimport { QuestionTypeDatePickerComponent } from './components/question-type-date-picker/question-type-date-picker.component';\r\nimport { ProctoringResultComponent } from './components/proctoring-result/proctoring-result.component';\r\nimport { ProctoringConsentComponent } from './components/proctoring-consent/proctoring-consent.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AssessmentTakerComponent,\r\n QuestionTypeEditorComponent,\r\n QuestionTypeFileUploadComponent,\r\n QuestionTypeLongComponent,\r\n QuestionTypeMultiselectComponent,\r\n QuestionTypeObjectiveComponent,\r\n QuestionTypePreferenceComponent,\r\n QuestionTypeShortComponent,\r\n SectionInstructionsComponent,\r\n QuestionTypeDatePickerComponent,\r\n ProctoringResultComponent,\r\n ProctoringConsentComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n MaterialModules,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [\r\n AssessmentTakerComponent\r\n ]\r\n})\r\nexport class AssessmentTakerModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { QuestionPaperSection } from '../../../../shared/interfaces/question-paper.interface';\r\nimport { deepClone } from '../../../../shared/utils';\r\n\r\n@Component({\r\n selector: 'lib-add-edit-section-introduction',\r\n templateUrl: './add-edit-section-introduction.component.html',\r\n styleUrls: ['./add-edit-section-introduction.component.scss']\r\n})\r\nexport class AddEditSectionIntroductionComponent implements OnInit {\r\n imageConfig: { [key: string]: string } = {};\r\n labelConfig: { [key: string]: string } = {};\r\n sectionDescription: string = '';\r\n sectionDetails: QuestionPaperSection | null = null;\r\n videoUrl: string = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<AddEditSectionIntroductionComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.imageConfig = this.dialogData?.imageConfig || {};\r\n this.labelConfig = this.dialogData?.labelConfig || {};\r\n this.sectionDetails = deepClone(this.dialogData?.sectionDetails);\r\n if (this.sectionDetails && this.sectionDetails.qpsDesc && this.sectionDetails.qpsDesc.length > 0) {\r\n this.sectionDescription = this.sectionDetails.qpsDesc[0].text || '';\r\n }\r\n this.videoUrl = this.sectionDetails?.mediaUrl || '';\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n get isVideoUrlValid(): boolean {\r\n if (!this.videoUrl) return true;\r\n const urlPattern = /^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?(\\?[^\\s]*)?$/i;\r\n return urlPattern.test(this.videoUrl);\r\n }\r\n\r\n onSubmit() {\r\n this.dialogRef.close({ update: true, description: this.sectionDescription, mediaUrl: this.videoUrl });\r\n }\r\n}\r\n","<div class=\"col-12\">\r\n <header class=\"p-3 d-flex align-items-center justify-content-between col-12 assessment-bg-grey-one pb-4\">\r\n <p class=\"mb-0 assessment-text-semibold-18\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_INSTRUCTIONS_HEADER']}}\r\n </p>\r\n <img mat-dialog-close [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\" class=\"cursor-pointer\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\r\n </header>\r\n\r\n <div class=\"col-12 px-md-4 px-3\">\r\n <div class=\"col-12 my-4\">\r\n <app-text-editor [preText]=\"sectionDescription\" (inputChange)=\"sectionDescription = $event\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_INSTRUCTIONS']\"\r\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\r\n [height]=\"'15rem'\">\r\n </app-text-editor>\r\n </div>\r\n <div class=\"col-12 my-4\">\r\n <input [(ngModel)]=\"videoUrl\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_INSTRUCTIONS_MEDIA']\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\r\n [ngClass]=\"{'assessment-input-border-invalid': !isVideoUrlValid}\">\r\n <div *ngIf=\"!isVideoUrlValid\" class=\"text-danger assessment-text-regular-12 mt-1\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.INVALID_URL']}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <footer class=\"mt-auto p-3 pb-4 d-flex align-items-center justify-content-end gap-3 col-12\">\r\n <button mat-dialog-close\r\n class=\"assessment-btn-primary-transparent assessment-zoom-animation p-2 px-3 assessment-text-medium-13\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DISCARD']}}\r\n </button>\r\n <button (click)=\"onSubmit()\" [disabled]=\"!isVideoUrlValid\"\r\n class=\"assessment-btn-primary assessment-zoom-animation p-2 px-3 assessment-text-medium-13\"\r\n [ngClass]=\"{'opacity-50': !isVideoUrlValid, 'cursor-not-allowed': !isVideoUrlValid}\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SAVE_DETAILS']}}\r\n </button>\r\n </footer>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { Assessment, AssessmentInstance, Config } from '../../../shared/interfaces/assessment.interface';\r\nimport { QuestionPaperSection, SectionQuestion, AssessmentQuestionPaper } from '../../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentQuestion } from '../../../shared/interfaces/question.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AssessmentBuilderService {\r\n\r\n private defaultAssessmentDTO: Assessment = {};\r\n\r\n setDefaultAssessmentDTO(value: Assessment) {\r\n this.defaultAssessmentDTO = value;\r\n }\r\n\r\n constructor() { }\r\n\r\n setQuestionDTO(formData: any, existingQuestion: AssessmentQuestion | null = {}): AssessmentQuestion {\r\n\r\n const existingConfigsMap = (existingQuestion?.questionConfigs || [])\r\n .reduce((acc: any, config: any) => {\r\n acc[config.configKey] = config;\r\n return acc;\r\n }, {});\r\n\r\n const questionConfigs = [\r\n { configKey: 'minCharacterCount', configValue: formData.minCharacterCount ? String(formData.minCharacterCount) : null },\r\n { configKey: 'maxCharacterCount', configValue: formData.maxCharacterCount ? String(formData.maxCharacterCount) : null },\r\n { configKey: 'minimumNumberOfOption', configValue: formData.minimumNumberOfOption ? String(formData.minimumNumberOfOption) : null },\r\n { configKey: 'maximumNumberOfOption', configValue: formData.maximumNumberOfOption ? String(formData.maximumNumberOfOption) : null },\r\n { configKey: 'maxFileSize', configValue: formData.maxFileSize ? String(formData.maxFileSize) : null },\r\n { configKey: 'maxNoOfFiles', configValue: formData.maxNoOfFiles ? String(formData.maxNoOfFiles) : null },\r\n // { configKey: 'visibility', configValue: formData.visibility ? 'true' : 'false' }\r\n ].map(config => ({\r\n id: existingConfigsMap[config.configKey]?.id || 0,\r\n ...config,\r\n })).filter(Boolean);\r\n\r\n return {\r\n ...existingQuestion,\r\n questionText: [{\r\n id: existingQuestion?.questionText?.[0]?.id || 0,\r\n language: { code: 'ENG' },\r\n text: formData.questionText || ''\r\n }],\r\n questionSubText: formData.questionSubText ? [{\r\n id: existingQuestion?.questionSubText?.[0]?.id || 0,\r\n language: { code: 'ENG' },\r\n text: formData.questionSubText\r\n }] : [],\r\n questionType: { code: formData.questionType || '' },\r\n questionSubtype: { code: formData.questionSubtype || formData.questionType?.replace('QUESTION_TYPE', 'QUESTION_SUB_TYPE') || '' },\r\n isMandatory: formData.isMandatory || false,\r\n isFilterEnabled: formData.isFilterEnabled || false,\r\n weight: Number(formData.totalMarks || 0),\r\n hintText: formData.hintText || '',\r\n mediaUrl: formData.questionMedia || '',\r\n responseValidation: formData.customRegex || '',\r\n skillCodes: formData.skillCodes?.map((skill: any) => ({ code: skill, classCode: \"REF.ASSESSMENT_QUESTION_SKILL\" })) || [],\r\n questionConfigs,\r\n defaultOptionsList: (() => {\r\n const existingOptions = existingQuestion?.defaultOptionsList || [];\r\n const formOptions = formData.options || [];\r\n\r\n // 1. Process items from formData (new and updated)\r\n const processedOptions = formOptions.map((opt: any, index: number) => {\r\n const existingOpt = existingOptions.find(eo => eo.id === opt.id && eo.id !== 0) || {};\r\n\r\n return {\r\n ...existingOpt,\r\n id: opt.id || 0,\r\n uuid: existingOpt.uuid || opt.uuid,\r\n orderNo: index + 1,\r\n weight: Number(opt.weight || 0),\r\n remarksRequired: opt.remarksRequired || false,\r\n isActive: opt.isActive !== false,\r\n options: {\r\n ...(existingOpt.options || {}),\r\n id: opt?.options?.id || existingOpt.options?.id || 0,\r\n optionName: [{\r\n id: existingOpt.options?.optionName?.[0]?.id || 0,\r\n language: { code: 'ENG' },\r\n text: opt.optionLabel || ''\r\n }],\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n },\r\n childQuestionList: opt.childQuestionList || existingOpt.childQuestionList || [],\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n };\r\n });\r\n\r\n // 2. Identify existing options that are NOT in formData (removed by user) and mark them inactive\r\n const formOptionIds = new Set(processedOptions.map((o: any) => o.id).filter((id: number) => id !== 0));\r\n const removedOptions = existingOptions.filter(eo => eo.id && !formOptionIds.has(eo.id)).map(eo => ({ ...eo, isActive: false }));\r\n\r\n return [...processedOptions, ...removedOptions];\r\n })(),\r\n ...(!existingQuestion?.id && {\r\n id: 0,\r\n ...(this.defaultAssessmentDTO?.domain && { domain: this.defaultAssessmentDTO?.domain }),\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n })\r\n };\r\n }\r\n\r\n getQuestionDTO(questionData: AssessmentQuestion) {\r\n const getConfig = (key: string) => questionData.questionConfigs?.find(c => c.configKey === key)?.configValue;\r\n\r\n return {\r\n id: questionData.id,\r\n questionText: questionData.questionText?.[0]?.text || '',\r\n questionSubText: questionData.questionSubText?.[0]?.text || '',\r\n questionType: questionData.questionType?.code || '',\r\n isMandatory: questionData.isMandatory || false,\r\n isFilterEnabled: questionData.isFilterEnabled || false,\r\n totalMarks: questionData.weight || 0,\r\n hintText: questionData.hintText || '',\r\n questionMedia: questionData.mediaUrl || '',\r\n minCharacterCount: getConfig('minCharacterCount') ? Number(getConfig('minCharacterCount')) : null,\r\n maxCharacterCount: getConfig('maxCharacterCount') ? Number(getConfig('maxCharacterCount')) : null,\r\n minimumNumberOfOption: getConfig('minimumNumberOfOption') ? Number(getConfig('minimumNumberOfOption')) : null,\r\n maximumNumberOfOption: getConfig('maximumNumberOfOption') ? Number(getConfig('maximumNumberOfOption')) : null,\r\n maxFileSize: getConfig('maxFileSize') ? Number(getConfig('maxFileSize')) : null,\r\n maxNoOfFiles: getConfig('maxNoOfFiles') ? Number(getConfig('maxNoOfFiles')) : null,\r\n // visibility: getConfig('visibility') === 'true',\r\n customRegex: questionData?.responseValidation,\r\n skillCodes: questionData?.skillCodes?.map((skill: any) => skill.code) || [],\r\n options: questionData.defaultOptionsList?.map(opt => ({\r\n id: opt.id,\r\n uuid: opt.uuid,\r\n optionLabel: opt.options?.optionName?.[0]?.text || '',\r\n weight: opt.weight || 0,\r\n remarksRequired: opt.remarksRequired || false,\r\n isActive: opt.isActive !== false,\r\n childQuestionList: opt.childQuestionList || [],\r\n })) || [],\r\n childQuestions: questionData?.childQuestions || []\r\n }\r\n }\r\n\r\n createNewSection(sequence: number): QuestionPaperSection {\r\n return {\r\n id: 0,\r\n qpsName: [{\r\n id: 0,\r\n language: { code: 'ENG' },\r\n text: `Section ${sequence}`\r\n }],\r\n orderNo: sequence,\r\n sectionQuestionsList: [],\r\n totalMarks: 0,\r\n totalQuestions: 0,\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n }\r\n }\r\n\r\n generateSectionQuestion(question: AssessmentQuestion, sectionQuestion: SectionQuestion = {}): SectionQuestion {\r\n return {\r\n id: sectionQuestion?.id || 0,\r\n question,\r\n isMandatory: question?.isMandatory,\r\n ...(!sectionQuestion?.id && this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant })\r\n }\r\n }\r\n\r\n generateQuestionPaperDTO(questionPaper: AssessmentQuestionPaper, questionBank: Record<number, AssessmentQuestion>): AssessmentQuestionPaper {\r\n if (!questionPaper) return questionPaper;\r\n\r\n if (!questionPaper?.id && this.defaultAssessmentDTO?.tenant) {\r\n questionPaper.tenant = this.defaultAssessmentDTO?.tenant;\r\n }\r\n\r\n\r\n questionPaper.questionPaperSectionList?.forEach((section: any, sIndex: number) => {\r\n section.orderNo = sIndex + 1;\r\n\r\n let sectionMarks = 0;\r\n let sectionQuestionsCount = 0;\r\n\r\n section.sectionQuestionsList?.forEach((q: SectionQuestion, qIndex: number) => {\r\n q.orderNo = qIndex + 1;\r\n const question = q?.question || questionBank[q?.questionId || -1];\r\n if (question && q.isActive !== false) {\r\n sectionMarks += Number(question.weight) || 0;\r\n sectionQuestionsCount++;\r\n }\r\n });\r\n\r\n section.totalMarks = sectionMarks;\r\n section.totalQuestions = sectionQuestionsCount;\r\n });\r\n\r\n return questionPaper;\r\n }\r\n\r\n generateAssessmentDTO(assessmentId: number, questionPaper: AssessmentQuestionPaper, assessmentConfigs?: Config[]): Assessment {\r\n return {\r\n id: assessmentId,\r\n totallMarks: questionPaper?.questionPaperSectionList?.filter((section: any) => section.isActive !== false).reduce((acc: number, section: any) => acc + (section.totalMarks || 0), 0) || 0,\r\n ...(!assessmentId && {\r\n ...this.defaultAssessmentDTO\r\n }),\r\n ...(assessmentConfigs && { assessmentConfigs }),\r\n cacheEvictionEnabled: true\r\n };\r\n }\r\n\r\n generateAssessmentInstanceDTO(assessmentId: number, predefinedAssessmentInstance: AssessmentInstance, duration?: number): AssessmentInstance {\r\n let d = new Date();\r\n let year = d.getFullYear();\r\n let month = d.getMonth();\r\n let day = d.getDate();\r\n let endDate = new Date(year + 20, month, day);\r\n return {\r\n id: 0,\r\n endDate: endDate,\r\n startDate: new Date(),\r\n assessment: {\r\n id: assessmentId,\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant })\r\n },\r\n scheduleStatus: {\r\n code: 'ASSESSMENT.PUBLISH'\r\n },\r\n ...predefinedAssessmentInstance,\r\n // the maker's chosen duration (seconds) wins over any predefined value\r\n ...(duration != null && { duration })\r\n }\r\n }\r\n\r\n /**\r\n * Patch fragment carrying the duration onto an already-created instance (by id), to bundle into\r\n * the assessment/question-paper patch. Empty unless the time input is enabled and an instance exists.\r\n */\r\n buildInstancePatch(showTimeInput: boolean, assessmentInstanceId: number, durationSeconds: number): { assessmentInstance?: AssessmentInstance } {\r\n if (!showTimeInput || !assessmentInstanceId) {\r\n return {};\r\n }\r\n return { assessmentInstance: { id: assessmentInstanceId, duration: durationSeconds } };\r\n }\r\n}","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport * as controllers from '../../../shared/controllers';\r\n\r\n@Injectable()\r\nexport class AssessmentMakerService {\r\n private readonly assetsBaseUrl = document?.baseURI?.replace(/\\/$/, '');\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n private getHeaders(): HttpHeaders {\r\n return new HttpHeaders().set('X-Library-Source', 'commons-assessment');\r\n }\r\n\r\n createParams(params: any): HttpParams {\r\n let param = new HttpParams();\r\n for (const key of Object.keys(params)) {\r\n param = param.set(key, params[key]);\r\n }\r\n return param;\r\n }\r\n\r\n getConfigJSON(fileName: string) {\r\n return this.http.get(`${this.assetsBaseUrl}/assets/commons-assessment/${fileName}.json`);\r\n }\r\n\r\n getResponseCount(assessmentInstanceId: number) {\r\n return this.http.get(controllers.assessmentMakerController.getResponseCount + this.createParams({ assessmentInstanceId }), { headers: this.getHeaders() });\r\n }\r\n\r\n createAssessmentAndQuestionPaper(payload: any) {\r\n return this.http.post(controllers.assessmentMakerController.assessmentAndQuestionPaper, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n patchAssessmentAndQuestionPaper(payload: any) {\r\n return this.http.patch(controllers.assessmentMakerController.assessmentAndQuestionPaper, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n createQuestion(payload: any) {\r\n return this.http.post(controllers.assessmentMakerController.createQuestion, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n patchQuestion(payload: any) {\r\n return this.http.patch(controllers.assessmentMakerController.patchQuestion, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n getQuestionsByIds(params: { questionIds: number[] }) {\r\n return this.http.get(controllers.assessmentMakerController.getQuestionsByIds, { params, headers: this.getHeaders() });\r\n }\r\n\r\n getAssessmentContext(params: any) {\r\n return this.http.get(controllers.assessmentMakerController.getAssessmentContext + this.createParams(params), { headers: this.getHeaders() });\r\n }\r\n\r\n duplicateSection(questionPaperId: number, sectionId: number) {\r\n return this.http.patch(controllers.assessmentMakerController.duplicateSection?.replace('$AssessmentQuestionPaperId', questionPaperId?.toString())?.replace('$SectionId', sectionId?.toString()), {}, { headers: this.getHeaders() });\r\n }\r\n\r\n duplicateQuestion(sectionId: number, sectionQuestionId: number) {\r\n return this.http.patch(controllers.assessmentMakerController.duplicateQuestion?.replace('$SectionId', sectionId?.toString())?.replace('$SectionQuestionId', sectionQuestionId?.toString()), {}, { headers: this.getHeaders() });\r\n }\r\n\r\n createAssessmentInstance(payload: any) {\r\n return this.http.post(controllers.assessmentMakerController.createAssessmentInstance, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n getRefDataByCode(code: string, params: any) {\r\n return this.http.get(controllers.refDataController.getRefDataByCode.replace('$Code', code) + this.createParams(params), { headers: this.getHeaders() });\r\n }\r\n}\r\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { QuestionType, RefData } from '../../../../shared/interfaces/assessment.interface';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { AssessmentMakerService } from '../../services/assessment-maker.service';\r\nimport { QuestionPaperSection } from '../../../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentBuilderService } from '../../services/assessment-builder.service';\r\nimport { deepClone, generateUuid } from '../../../../shared/utils';\r\n\r\n@Component({\r\n selector: 'lib-app-assessment-builder',\r\n templateUrl: './assessment-builder.component.html',\r\n styleUrls: ['./assessment-builder.component.scss']\r\n})\r\n\r\nexport class AssessmentBuilderComponent implements OnInit {\r\n labelConfig: { [key: string]: string } = {};\r\n imageConfig: { [key: string]: string } = {};\r\n questionTypes: QuestionType[] = [];\r\n questionDetails: AssessmentQuestion | null = null;\r\n rules: any = {};\r\n questionStack: { parentFormValue: AssessmentQuestion, editingQuestionIndex?: number, addingToGroupId?: string }[] = [];\r\n @ViewChild('scrollContainer') scrollContainer!: ElementRef;\r\n\r\n childQuestionGroups: { id: string, optionId: string | number | null, questionIds: (string | number)[] }[] = [];\r\n\r\n questionsFormGroup!: FormGroup;\r\n questionBank: Record<number, AssessmentQuestion> = {};\r\n isChild: boolean = false;\r\n // parentQuestion: AssessmentQuestion | null = null;\r\n\r\n assessmentId: number = 0;\r\n\r\n isSubmitting: boolean = false;\r\n skillsList: RefData[] = [];\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private assessmentBuilderService: AssessmentBuilderService,\r\n private assessmentMakerService: AssessmentMakerService,\r\n public dialogRef: MatDialogRef<AssessmentBuilderComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.labelConfig = this.dialogData?.labelConfig;\r\n this.imageConfig = this.dialogData?.imageConfig;\r\n this.rules = this.dialogData?.rules;\r\n this.questionTypes = this.dialogData?.questionTypes;\r\n this.questionBank = this.dialogData?.questionBank;\r\n this.isChild = this.dialogData?.isChild;\r\n this.skillsList = this.dialogData?.skillsList || [];\r\n this.assessmentId = this.dialogData?.assessmentId;\r\n\r\n if (this.dialogData.questionDetails) {\r\n this.questionDetails = deepClone(this.dialogData?.questionDetails);\r\n }\r\n this.setupFormGroup();\r\n this.applyDynamicValidators();\r\n }\r\n\r\n generateChildQuestionList() {\r\n if (this.isChild) {\r\n return [];\r\n }\r\n const uniqueIds = new Set<number>();\r\n\r\n this.questionDetails?.defaultOptionsList?.forEach(option => {\r\n option.childQuestionList?.forEach(id => uniqueIds.add(id));\r\n });\r\n\r\n return Array.from(uniqueIds)?.map(id => {\r\n return this.questionBank[id] ? deepClone(this.questionBank[id]) : null;\r\n })?.filter(Boolean) as AssessmentQuestion[];\r\n }\r\n\r\n setupFormGroup() {\r\n this.questionsFormGroup = this.formBuilder.group({\r\n questionType: ['', Validators.required],\r\n questionText: ['', Validators.required],\r\n questionSubText: [''],\r\n isFilterEnabled: [false],\r\n isMandatory: [false],\r\n // visibility: [true],\r\n totalMarks: [null],\r\n minCharacterCount: [null],\r\n maxCharacterCount: [null],\r\n maximumNumberOfOption: [null],\r\n minimumNumberOfOption: [null],\r\n maxFileSize: [null],\r\n maxNoOfFiles: [null],\r\n customRegex: [''],\r\n hintText: [''],\r\n questionMedia: [''],\r\n options: this.formBuilder.array([]),\r\n childQuestions: [[]],\r\n skillCodes: [[]]\r\n });\r\n\r\n this.questionsFormGroup.get('questionType')?.valueChanges.subscribe(() => {\r\n this.applyDynamicValidators();\r\n });\r\n this.questionsFormGroup.get('minCharacterCount')?.valueChanges.subscribe(() => {\r\n this.questionsFormGroup.get('maxCharacterCount')?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n this.questionsFormGroup.get('maxCharacterCount')?.valueChanges.subscribe(() => {\r\n this.questionsFormGroup.get('minCharacterCount')?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n this.questionsFormGroup.get('minimumNumberOfOption')?.valueChanges.subscribe(() => {\r\n this.questionsFormGroup.get('maximumNumberOfOption')?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n this.questionsFormGroup.get('maximumNumberOfOption')?.valueChanges.subscribe(() => {\r\n this.questionsFormGroup.get('minimumNumberOfOption')?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n if (this.questionDetails) {\r\n this.populateForm(this.questionDetails, true);\r\n } else {\r\n this.buildChildQuestionGroups([]);\r\n }\r\n }\r\n\r\n populateForm(questionDetails: AssessmentQuestion, buildChildGroups: boolean = false) {\r\n if (!questionDetails) return;\r\n const childQuestions = questionDetails?.childQuestions || this.generateChildQuestionList();\r\n const formData = this.assessmentBuilderService.getQuestionDTO({ ...questionDetails, childQuestions });\r\n this.questionsFormGroup.patchValue(formData);\r\n if (formData.options?.length) {\r\n const totalMarks = Number(formData.totalMarks) || 0;\r\n formData.options.forEach((opt: any) => {\r\n const optGroup = this.createOption();\r\n if (totalMarks > 0 && opt.weight !== undefined && opt.weight !== null) {\r\n opt.weight = parseFloat(((Number(opt.weight) * totalMarks) / 100).toFixed(2));\r\n }\r\n optGroup.patchValue(opt);\r\n this.options.push(optGroup);\r\n });\r\n }\r\n if (buildChildGroups) {\r\n this.buildChildQuestionGroups(childQuestions);\r\n }\r\n }\r\n\r\n async onSubmit() {\r\n if (this.questionsFormGroup.invalid) {\r\n this.questionsFormGroup.markAllAsTouched();\r\n return;\r\n }\r\n\r\n const totalMarks = Number(this.questionsFormGroup.get('totalMarks')?.value) || 0;\r\n const qType = this.questionsFormGroup.get('questionType')?.value;\r\n const optionsValues = this.questionsFormGroup.get('options')?.value || [];\r\n const showWeightage = this.showField('options', 'showWeightage');\r\n\r\n if (showWeightage && totalMarks > 0) {\r\n let totalWeights = 0;\r\n let hasInvalidWeight = false;\r\n\r\n for (const opt of optionsValues) {\r\n if (opt.isActive === false) continue;\r\n const w = Number(opt.weight) || 0;\r\n if (w > totalMarks) {\r\n hasInvalidWeight = true;\r\n break;\r\n }\r\n totalWeights += w;\r\n }\r\n\r\n if (hasInvalidWeight) {\r\n // To keep within existing styles, emitting default error with our specific message\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.OPTION_SCORE_GREATER_THAN_TOTAL_MARKS'], type: 'error' });\r\n return;\r\n }\r\n\r\n if (qType === 'QUESTION_TYPE.MULTI_SELECT' && totalWeights > totalMarks) {\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.SUM_OF_OPTION_SCORES_GREATER_THAN_TOTAL_MARKS'], type: 'error' });\r\n return;\r\n }\r\n }\r\n\r\n this.isSubmitting = true;\r\n\r\n const formValue = deepClone(this.questionsFormGroup.value);\r\n if (showWeightage && totalMarks > 0 && formValue.options?.length) {\r\n formValue.options.forEach((opt: any) => {\r\n if (opt.weight !== undefined && opt.weight !== null) {\r\n opt.weight = parseFloat(((Number(opt.weight) / totalMarks) * 100).toFixed(2));\r\n }\r\n });\r\n }\r\n\r\n if (this.questionStack.length > 0) {\r\n // child question logic\r\n const state = this.questionStack[this.questionStack.length - 1];\r\n\r\n if (state?.editingQuestionIndex !== undefined) {\r\n if (!state.parentFormValue.childQuestions) {\r\n state.parentFormValue.childQuestions = [];\r\n }\r\n // Update existing child\r\n const childQuestion = state.parentFormValue.childQuestions[state.editingQuestionIndex];\r\n const payload = this.assessmentBuilderService.setQuestionDTO(formValue, childQuestion);\r\n try {\r\n const question = await this.updateQuestion(payload);\r\n state.parentFormValue.childQuestions[state.editingQuestionIndex] = question;\r\n if (question?.id) {\r\n this.questionBank[question.id] = question;\r\n }\r\n this.isSubmitting = false;\r\n } catch (error) {\r\n this.isSubmitting = false;\r\n console.error(error);\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload }\r\n }\r\n } else {\r\n // Add new child \r\n const payload = this.assessmentBuilderService.setQuestionDTO(formValue);\r\n try {\r\n const question = await this.createQuestion(payload);\r\n state?.parentFormValue?.childQuestions?.push(question);\r\n if (question?.id) {\r\n this.questionBank[question.id] = question;\r\n\r\n const grp = this.childQuestionGroups.find((g: any) => g.id === state.addingToGroupId);\r\n if (grp) {\r\n grp.questionIds?.push(question?.id);\r\n if (grp.optionId) {\r\n const opt = state.parentFormValue?.defaultOptionsList?.find((o: any) => (o.id || o.uuid) == grp.optionId);\r\n if (opt) {\r\n opt.childQuestionList = opt.childQuestionList || [];\r\n opt.childQuestionList.push(question.id);\r\n }\r\n }\r\n } else {\r\n this.childQuestionGroups.push({\r\n id: generateUuid(),\r\n optionId: null,\r\n questionIds: [question?.id]\r\n });\r\n }\r\n }\r\n\r\n this.isSubmitting = false;\r\n } catch (error) {\r\n this.isSubmitting = false;\r\n console.error(error);\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'POST', payload }\r\n }\r\n }\r\n this.questionStack.pop();\r\n\r\n // Re-populate parent form\r\n this.resetAndPopulate(state?.parentFormValue);\r\n } else {\r\n let questionDTO = this.assessmentBuilderService.setQuestionDTO(formValue, this.questionDetails);\r\n\r\n // Update local template tree representation\r\n if (this.questionDetails?.id) {\r\n try {\r\n questionDTO = await this.updateQuestion(questionDTO);\r\n if (questionDTO?.id) {\r\n this.questionBank[questionDTO.id] = questionDTO\r\n }\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.QUESTION_UPDATED_SUCCESS'], type: 'success' });\r\n this.dialogRef.close({ success: true });\r\n this.isSubmitting = false;\r\n } catch (error) {\r\n this.isSubmitting = false;\r\n console.error(error);\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload: questionDTO }\r\n }\r\n } else {\r\n this.createOrEditAssessmentAndQuestionPaper(questionDTO);\r\n }\r\n }\r\n }\r\n\r\n createQuestion(payload: any): Promise<AssessmentQuestion> {\r\n return new Promise((resolve, reject) => {\r\n this.assessmentMakerService.createQuestion(payload).subscribe({\r\n next: (res) => resolve(res as AssessmentQuestion),\r\n error: (err) => reject(err)\r\n });\r\n });\r\n }\r\n\r\n updateQuestion(payload: any): Promise<AssessmentQuestion> {\r\n return new Promise((resolve, reject) => {\r\n this.assessmentMakerService.patchQuestion(payload).subscribe({\r\n next: (res) => resolve(res as AssessmentQuestion),\r\n error: (err) => reject(err)\r\n });\r\n });\r\n }\r\n\r\n createOrEditAssessmentAndQuestionPaper(question: AssessmentQuestion) {\r\n const questionPaper = deepClone(this.dialogData?.assessmentQuestionPaperData);\r\n const sectionQuestion = this.assessmentBuilderService.generateSectionQuestion(question);\r\n if (!this.dialogData?.sectionDetails) {\r\n const list = questionPaper?.questionPaperSectionList;\r\n const lastSequence = list?.length ? list[list.length - 1].orderNo || 0 : 0;\r\n const newSection = this.assessmentBuilderService.createNewSection(lastSequence + 1);\r\n\r\n newSection?.sectionQuestionsList?.push(sectionQuestion);\r\n\r\n questionPaper?.questionPaperSectionList?.push(newSection);\r\n } else {\r\n const sectionRef = questionPaper?.questionPaperSectionList?.find((section: QuestionPaperSection) => section?.id == this.dialogData?.sectionDetails?.id);\r\n sectionRef?.sectionQuestionsList?.push(sectionQuestion);\r\n }\r\n\r\n const questionPaperDTO = this.assessmentBuilderService.generateQuestionPaperDTO(questionPaper, this.questionBank);\r\n const assessmentDTO = this.assessmentBuilderService.generateAssessmentDTO(this.assessmentId, questionPaperDTO);\r\n\r\n const payload = {\r\n assessment: assessmentDTO,\r\n questionPaper: questionPaperDTO\r\n }\r\n\r\n const apiCall = this.assessmentId\r\n ? this.assessmentMakerService.patchAssessmentAndQuestionPaper(payload)\r\n : this.assessmentMakerService.createAssessmentAndQuestionPaper(payload);\r\n\r\n apiCall.subscribe({\r\n next: (res: any) => {\r\n this.isSubmitting = false;\r\n this.dialogRef.close({\r\n success: true,\r\n assessmentId: res?.assessment?.id,\r\n questionPaper: res?.questionPaper,\r\n questionMap: res?.questionMap\r\n });\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n this.isSubmitting = false;\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: this.assessmentId ? 'PATCH' : 'POST', payload }\r\n }\r\n });\r\n }\r\n\r\n applyDynamicValidators() {\r\n if (!this.rules || Object.keys(this.rules).length === 0) return;\r\n\r\n const form = this.questionsFormGroup;\r\n const qType = form.get('questionType')?.value;\r\n const currentRules = this.rules[qType] || {};\r\n\r\n const excludedControls = new Set(['questionType', 'questionText', 'options', 'visibility', 'isMandatory', 'questionSubText', 'skillCodes']);\r\n\r\n // Handle normal controls\r\n Object.entries(form.controls).forEach(([key, control]) => {\r\n if (excludedControls.has(key)) return;\r\n\r\n const rule = currentRules[key];\r\n\r\n if (rule?.visible) {\r\n const validators = rule?.required ? [Validators.required] : [];\r\n if (key === 'questionMedia') {\r\n validators.push(Validators.pattern(/^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?(\\?[^\\s]*)?$/i));\r\n }\r\n if (key === 'minCharacterCount') {\r\n validators.push(Validators.min(1));\r\n }\r\n if (key === 'maxCharacterCount') {\r\n validators.push(Validators.min(1));\r\n validators.push((ctrl) => {\r\n const minCtrl = ctrl.parent?.get('minCharacterCount');\r\n const minVal = minCtrl?.value;\r\n const maxVal = ctrl.value;\r\n if (minVal !== null && minVal !== undefined && minVal !== '' &&\r\n maxVal !== null && maxVal !== undefined && maxVal !== '') {\r\n if (Number(maxVal) <= Number(minVal)) {\r\n return { lessThanOrEqualMin: true };\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n if (key === 'minimumNumberOfOption') {\r\n validators.push(Validators.min(1));\r\n }\r\n if (key === 'maximumNumberOfOption') {\r\n validators.push(Validators.min(1));\r\n validators.push((ctrl) => {\r\n const minCtrl = ctrl.parent?.get('minimumNumberOfOption');\r\n const minVal = minCtrl?.value;\r\n const maxVal = ctrl.value;\r\n if (minVal !== null && minVal !== undefined && minVal !== '' &&\r\n maxVal !== null && maxVal !== undefined && maxVal !== '') {\r\n if (Number(maxVal) <= Number(minVal)) {\r\n return { lessThanOrEqualMin: true };\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n if (key === 'maxFileSize') {\r\n validators.push(Validators.min(1));\r\n }\r\n if (key === 'maxNoOfFiles') {\r\n validators.push(Validators.min(1));\r\n }\r\n control.setValidators(validators.length > 0 ? validators : null);\r\n } else {\r\n control.clearValidators();\r\n control.setValue(key === 'childQuestions' ? [] : null, { emitEvent: false });\r\n }\r\n\r\n control.updateValueAndValidity({ emitEvent: false });\r\n });\r\n\r\n // Handle options FormArray\r\n const optionsControl = form.get('options') as FormArray;\r\n const optionsRule = currentRules['options'];\r\n\r\n if (!optionsRule?.visible) {\r\n optionsControl.clearValidators();\r\n optionsControl.clear();\r\n optionsControl.updateValueAndValidity({ emitEvent: false });\r\n return;\r\n }\r\n\r\n const optionsValidator = optionsRule?.required ? (control: any) => {\r\n const activeOptions = (control.value || []).filter((opt: any) => opt.isActive !== false);\r\n return activeOptions.length > 0 ? null : { required: true };\r\n } : null;\r\n\r\n optionsControl.setValidators(optionsValidator);\r\n\r\n const showWeightage = optionsRule?.showWeightage;\r\n const showRemarks = optionsRule?.showRemarks;\r\n\r\n optionsControl.controls.forEach(optGroup => {\r\n const weightCtrl = optGroup.get('weight');\r\n const remarksCtrl = optGroup.get('remarksRequired');\r\n\r\n if (!showWeightage) weightCtrl?.setValue(0, { emitEvent: false });\r\n if (!showRemarks) remarksCtrl?.setValue(false, { emitEvent: false });\r\n\r\n weightCtrl?.updateValueAndValidity({ emitEvent: false });\r\n remarksCtrl?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n\r\n optionsControl.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n showField(fieldName: string, nestedProp?: string): boolean {\r\n const questionType = this.questionsFormGroup?.get('questionType')?.value;\r\n if (!questionType || !this.rules[questionType] || !this.rules[questionType][fieldName]) {\r\n return false;\r\n }\r\n if (nestedProp) {\r\n return !!this.rules[questionType][fieldName][nestedProp];\r\n }\r\n return !!this.rules[questionType][fieldName]?.visible;\r\n }\r\n\r\n get options(): FormArray {\r\n return this.questionsFormGroup.get('options') as FormArray;\r\n }\r\n\r\n addOption() {\r\n this.options.push(this.createOption());\r\n this.questionsFormGroup.get('maximumNumberOfOption')?.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n removeOption(index: number) {\r\n const removedOption = this.options.at(index);\r\n const removedOptionId = removedOption.get('id')?.value;\r\n const removedOptionUuid = removedOption.get('uuid')?.value;\r\n const uniqueId = removedOptionId || removedOptionUuid;\r\n\r\n if (removedOptionId) {\r\n removedOption.get('isActive')?.setValue(false);\r\n } else {\r\n this.options.removeAt(index);\r\n }\r\n\r\n this.childQuestionGroups.forEach(g => {\r\n if (g.optionId === uniqueId) {\r\n g.optionId = null;\r\n }\r\n });\r\n\r\n const maxCtrl = this.questionsFormGroup.get('maximumNumberOfOption');\r\n if (maxCtrl && maxCtrl.value !== null && maxCtrl.value !== undefined && maxCtrl.value !== '') {\r\n const activeOptionsCount = this.options.controls.filter(opt => opt.get('isActive')?.value !== false).length;\r\n if (Number(maxCtrl.value) > activeOptionsCount) {\r\n maxCtrl.setValue(activeOptionsCount || null);\r\n }\r\n }\r\n this.questionsFormGroup.get('maximumNumberOfOption')?.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n createOption(): FormGroup {\r\n return this.formBuilder.group({\r\n id: [0],\r\n uuid: [generateUuid()],\r\n optionLabel: ['', Validators.required],\r\n weight: [0],\r\n remarksRequired: [false],\r\n isActive: [true],\r\n childQuestionList: [[]]\r\n });\r\n }\r\n\r\n allowOnlyNumbers(event: any) {\r\n event.target.value = event.target.value.replace(/\\D/g, '');\r\n }\r\n\r\n checkMaxVal(event: any, control: any) {\r\n const totalMarks = Number(this.questionsFormGroup.get('totalMarks')?.value) || 0;\r\n let val = Number(event.target.value);\r\n if (val > totalMarks) {\r\n event.target.value = totalMarks;\r\n control?.setValue(totalMarks, { emitEvent: false });\r\n }\r\n }\r\n\r\n checkMaxOptionsVal(event: any, control: any) {\r\n const activeOptionsCount = this.options.controls.filter(opt => opt.get('isActive')?.value !== false).length;\r\n let val = Number(event.target.value);\r\n if (val > activeOptionsCount) {\r\n event.target.value = activeOptionsCount;\r\n control?.setValue(activeOptionsCount, { emitEvent: false });\r\n }\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n addEditChildQuestion(childQuestion?: AssessmentQuestion, index?: number, groupId?: string) {\r\n // Save current parent state\r\n const formValue = deepClone(this.questionsFormGroup.value);\r\n const totalMarks = Number(formValue.totalMarks) || 0;\r\n const showWeightage = this.showField('options', 'showWeightage');\r\n\r\n if (showWeightage && totalMarks > 0 && formValue.options?.length) {\r\n formValue.options.forEach((opt: any) => {\r\n if (opt.weight !== undefined && opt.weight !== null) {\r\n opt.weight = parseFloat(((Number(opt.weight) / totalMarks) * 100).toFixed(2));\r\n }\r\n });\r\n }\r\n\r\n const questionData = this.assessmentBuilderService.setQuestionDTO(formValue, this.questionDetails);\r\n\r\n this.questionStack.push({\r\n parentFormValue: { ...questionData, childQuestions: this.questionsFormGroup.get('childQuestions')?.value },\r\n editingQuestionIndex: index,\r\n addingToGroupId: groupId\r\n });\r\n\r\n // Reset form for child\r\n this.questionsFormGroup.reset({\r\n questionType: '',\r\n questionText: '',\r\n isMandatory: false,\r\n // visibility: true,\r\n totalMarks: null,\r\n minCharacterCount: null,\r\n maxCharacterCount: null,\r\n maximumNumberOfOption: null,\r\n minimumNumberOfOption: null,\r\n maxFileSize: null,\r\n maxNoOfFiles: null,\r\n customRegex: '',\r\n hintText: '',\r\n questionMedia: '',\r\n childQuestions: [],\r\n skillCodes: []\r\n });\r\n const optionsControl = this.questionsFormGroup.get('options') as FormArray;\r\n while (optionsControl.length !== 0) {\r\n optionsControl.removeAt(0);\r\n }\r\n\r\n this.applyDynamicValidators();\r\n if (childQuestion) {\r\n this.populateForm(childQuestion);\r\n }\r\n this.scrollToTop();\r\n }\r\n\r\n deleteChildQuestion(index: number, event: Event) {\r\n event.stopPropagation();\r\n const deletedChild = this.questionsFormGroup.get('childQuestions')?.value[index];\r\n\r\n this.options.controls.forEach(opt => {\r\n let childList = [...(opt.get('childQuestionList')?.value || [])];\r\n childList = childList.filter((id: string | number) => id !== deletedChild.id);\r\n opt.get('childQuestionList')?.setValue(childList);\r\n });\r\n\r\n this.questionsFormGroup.get('childQuestions')?.value.splice(index, 1);\r\n\r\n this.childQuestionGroups.forEach(g => {\r\n g.questionIds = g.questionIds.filter(qid => qid !== deletedChild.id);\r\n });\r\n this.childQuestionGroups = this.childQuestionGroups.filter(g => g.questionIds.length > 0);\r\n }\r\n\r\n getOptionId(opt: any): string | number {\r\n return opt.get('id')?.value ? opt.get('id')?.value : opt.get('uuid')?.value;\r\n }\r\n\r\n getChildQuestionById(id: string | number): AssessmentQuestion | undefined {\r\n return this.questionsFormGroup.get('childQuestions')?.value?.find((q: AssessmentQuestion) => q.id === id);\r\n }\r\n\r\n getChildQuestionIndex(id: number | undefined): number {\r\n return this.questionsFormGroup.get('childQuestions')?.value?.findIndex((q: AssessmentQuestion) => q.id === id);\r\n }\r\n\r\n deleteChildQuestionById(id: number | undefined, event: Event) {\r\n event.stopPropagation();\r\n const index = this.getChildQuestionIndex(id);\r\n if (index > -1) {\r\n this.deleteChildQuestion(index, event);\r\n }\r\n }\r\n\r\n buildChildQuestionGroups(childQuestions: AssessmentQuestion[]) {\r\n this.childQuestionGroups = [];\r\n const processedQuestionIds = new Set();\r\n\r\n this.options.controls.forEach(opt => {\r\n const optionId = this.getOptionId(opt);\r\n const childList = opt.get('childQuestionList')?.value || [];\r\n\r\n if (childList.length > 0) {\r\n this.childQuestionGroups.push({\r\n id: generateUuid(),\r\n optionId: optionId,\r\n questionIds: [...childList]\r\n });\r\n childList.forEach((id: any) => processedQuestionIds.add(id));\r\n }\r\n });\r\n\r\n childQuestions.forEach(cq => {\r\n if (cq.id && !processedQuestionIds.has(cq.id)) {\r\n this.childQuestionGroups.push({\r\n id: generateUuid(),\r\n optionId: null,\r\n questionIds: [cq.id]\r\n });\r\n }\r\n });\r\n }\r\n\r\n onGroupOptionChange(groupId: string, newOptionId: string | number | null) {\r\n const groupIndex = this.childQuestionGroups.findIndex(g => g.id === groupId);\r\n if (groupIndex === -1) return;\r\n const group = this.childQuestionGroups[groupIndex];\r\n\r\n const oldOptionId = group.optionId;\r\n\r\n if (oldOptionId) {\r\n const oldOpt = this.options.controls.find(opt => this.getOptionId(opt) === oldOptionId);\r\n if (oldOpt) {\r\n let childList = [...(oldOpt.get('childQuestionList')?.value || [])];\r\n childList = childList.filter(id => !group.questionIds.includes(id as any));\r\n oldOpt.get('childQuestionList')?.setValue(childList);\r\n }\r\n }\r\n\r\n const existingGroup = this.childQuestionGroups.find(g => g.id !== groupId && g.optionId === newOptionId);\r\n\r\n if (existingGroup && newOptionId) {\r\n existingGroup.questionIds.push(...group.questionIds);\r\n this.childQuestionGroups.splice(groupIndex, 1);\r\n } else {\r\n group.optionId = newOptionId;\r\n }\r\n\r\n if (newOptionId) {\r\n const newOpt = this.options.controls.find(opt => this.getOptionId(opt) === newOptionId);\r\n if (newOpt) {\r\n let childList = [...(newOpt.get('childQuestionList')?.value || [])];\r\n const set = new Set([...childList, ...group.questionIds]);\r\n newOpt.get('childQuestionList')?.setValue(Array.from(set));\r\n }\r\n }\r\n }\r\n\r\n goBack() {\r\n if (this.questionStack.length === 0) {\r\n this.dialogRef.close();\r\n return;\r\n }\r\n const state = this.questionStack.pop();\r\n\r\n this.resetAndPopulate(state?.parentFormValue);\r\n this.scrollToTop();\r\n }\r\n\r\n private resetAndPopulate(parentValue: any) {\r\n this.questionsFormGroup.reset();\r\n\r\n const optionsControl = this.questionsFormGroup.get('options') as FormArray;\r\n while (optionsControl.length !== 0) {\r\n optionsControl.removeAt(0);\r\n }\r\n\r\n this.populateForm(parentValue);\r\n }\r\n\r\n private scrollToTop() {\r\n if (this.scrollContainer && this.scrollContainer.nativeElement) {\r\n setTimeout(() => {\r\n this.scrollContainer.nativeElement.scrollTop = 0;\r\n }, 0);\r\n }\r\n }\r\n\r\n trackByCode(index: number, item: any) {\r\n return item?.code != null ? 'c' + item.code : 'i' + index;\r\n }\r\n\r\n trackByControl(index: number, control: any) {\r\n return control;\r\n }\r\n\r\n trackByGroupId(index: number, group: any) {\r\n return group?.id != null ? 'g' + group.id : 'i' + index;\r\n }\r\n\r\n trackByQuestionId(index: number, id: any) {\r\n return id != null ? 'q' + id : 'i' + index;\r\n }\r\n}\r\n","<div class=\"d-flex vh-100 position-relative overflow-hidden\">\n <div *ngIf=\"questionStack.length > 0 || isChild\"\n class=\"p-3 px-2 col-auto assessment-bg-palette-C8DAF9 flex-column align-items-center justify-content-end d-md-flex d-none\">\n <p class=\"m-0 assessment-text-semibold-18 vertical-text\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTION']}}\n </p>\n </div>\n <div class=\"flex-grow-1 h-100 d-flex flex-column position-relative\">\n <header\n class=\"p-3 d-flex align-items-center justify-content-between position-sticky top-0 col-12 border-bottom\">\n <p *ngIf=\"questionStack.length == 0\" class=\"mb-0 assessment-text-semibold-18 d-md-inline d-none\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.INPUT_FIELD_SETTINGS']}}\n </p>\n <button *ngIf=\"questionStack.length > 0\" (click)=\"goBack()\"\n class=\"d-flex align-items-center gap-2 assessment-text-grey-ten border-0 outline-0 assessment-text-medium-14 bg-transparent\">\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.GO_BACK']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/go-back.svg')\" />\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.GO_BACK']}}\n </button>\n <div class=\"d-flex align-items-center justify-content-md-end justify-content-between gap-3 flex-grow-1\">\n <button (click)=\"onSubmit()\" [disabled]=\"isSubmitting\"\n class=\"assessment-btn-primary assessment-button-padding assessment-text-medium-13 assessment-zoom-animation assessment-button-padding position-relative\">\n <span [ngClass]=\"{'opacity-0': isSubmitting}\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SAVE_QUESTION']}}\n </span>\n <mat-spinner *ngIf=\"isSubmitting\" [diameter]=\"20\"\n class=\"position-absolute top-50 start-50 translate-middle assessment-spinner-white\"></mat-spinner>\n </button>\n <img class=\"d-md-none\" *ngIf=\"questionStack.length == 0\" mat-dialog-close\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\n </div>\n </header>\n <div #scrollContainer class=\"col-12 py-4 px-md-4 px-3 flex-grow-1 overflow-y-auto form-container\"\n [formGroup]=\"questionsFormGroup\">\n <div class=\"pb-4 col-12\">\n <label\n class=\"mb-2 assessment-text-medium-16 assessment-text-grey-ten col-12\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.TYPE']}}</label>\n <mat-select formControlName=\"questionType\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.SELECT_QUESTION_TYPE']\"\n class=\"assessment-mat-select col-12 assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n <mat-option class=\"assessment-text-medium-13\" *ngFor=\"let type of questionTypes; trackBy: trackByCode\"\n [value]=\"type?.code\">\n {{type?.label}}\n </mat-option>\n </mat-select>\n <div\n *ngIf=\"questionsFormGroup.get('questionType')?.errors && questionsFormGroup.get('questionType')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n <div class=\"pb-4 col-12\">\n <label class=\"mb-2 assessment-text-medium-16 assessment-text-grey-ten\">Question</label>\n <app-text-editor [preText]=\"questionsFormGroup?.get('questionText')?.value\"\n (inputChange)=\"questionsFormGroup?.get('questionText')?.patchValue($event)\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_QUESTION']\"\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\n [height]=\"'8rem'\">\n </app-text-editor>\n <div\n *ngIf=\"questionsFormGroup.get('questionText')?.errors && questionsFormGroup.get('questionText')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div class=\"col-12 position-relative mt-3\" *ngIf=\"showField('questionMedia')\">\n <input formControlName=\"questionMedia\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_QUESTION_MEDIA']\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('questionMedia')?.invalid && questionsFormGroup.get('questionMedia')?.touched}\">\n <div\n *ngIf=\"questionsFormGroup.get('questionMedia')?.hasError('pattern') && questionsFormGroup.get('questionMedia')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger mt-1\">\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.INVALID_URL']}}\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('questionMedia')?.hasError('required') && questionsFormGroup.get('questionMedia')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger mt-1\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n </div>\n <div class=\"row mx-0 col-12 pb-4\" *ngIf=\"showField('minCharacterCount') || showField('maxCharacterCount')\">\n <div class=\"col-6 ps-0\" *ngIf=\"showField('minCharacterCount')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MIN_CHARACTER_LIMIT']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"minCharacterCount\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\n (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('minCharacterCount')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('minCharacterCount')?.invalid && questionsFormGroup.get('minCharacterCount')?.touched}\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHARACTERS']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('minCharacterCount')?.hasError('required') && questionsFormGroup.get('minCharacterCount')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('minCharacterCount')?.hasError('min') && questionsFormGroup.get('minCharacterCount')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO']}}</div>\n </div>\n <div class=\"col-6 pe-0\" *ngIf=\"showField('maxCharacterCount')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_CHARACTER_LIMIT']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"maxCharacterCount\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\n (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('maxCharacterCount')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('maxCharacterCount')?.invalid && questionsFormGroup.get('maxCharacterCount')?.touched}\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHARACTERS']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('maxCharacterCount')?.hasError('required') && questionsFormGroup.get('maxCharacterCount')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maxCharacterCount')?.hasError('min') && questionsFormGroup.get('maxCharacterCount')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maxCharacterCount')?.hasError('lessThanOrEqualMin') && questionsFormGroup.get('maxCharacterCount')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_LIMIT_GREATER']}}</div>\n </div>\n </div>\n <div class=\"row mx-0 col-12 pb-4\" *ngIf=\"showField('maxFileSize') || showField('maxNoOfFiles')\">\n <div class=\"col-6 ps-0\" *ngIf=\"showField('maxFileSize')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_FILE_SIZE']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"maxFileSize\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\n (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('maxFileSize')?.markAsTouched()\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('maxFileSize')?.invalid && questionsFormGroup.get('maxFileSize')?.touched}\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MB']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('maxFileSize')?.hasError('required') && questionsFormGroup.get('maxFileSize')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maxFileSize')?.hasError('min') && questionsFormGroup.get('maxFileSize')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO']}}</div>\n </div>\n <div class=\"col-6 pe-0\" *ngIf=\"showField('maxNoOfFiles')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_NO_OF_FILES']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"maxNoOfFiles\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\n (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('maxNoOfFiles')?.markAsTouched()\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('maxNoOfFiles')?.invalid && questionsFormGroup.get('maxNoOfFiles')?.touched}\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.FILES']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('maxNoOfFiles')?.hasError('required') && questionsFormGroup.get('maxNoOfFiles')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maxNoOfFiles')?.hasError('min') && questionsFormGroup.get('maxNoOfFiles')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO']}}</div>\n </div>\n </div>\n <div class=\"pb-4 col-12\" *ngIf=\"showField('customRegex')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CUSTOM_REGEX']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"customRegex\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_CUSTOM_REGEX']\"\n (blur)=\"questionsFormGroup.get('customRegex')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('customRegex')?.errors && questionsFormGroup.get('customRegex')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n <div class=\"pb-4 col-12\" *ngIf=\"showField('totalMarks') && !isChild && questionStack.length == 0\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.TOTAL_MARKS']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"totalMarks\" placeholder=\"0\" (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('totalMarks')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('totalMarks')?.errors && questionsFormGroup.get('totalMarks')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n\n <div class=\"row mx-0 col-12 pb-4\"\n *ngIf=\"showField('minimumNumberOfOption') || showField('maximumNumberOfOption')\">\n <div class=\"col-6 ps-0\" *ngIf=\"showField('minimumNumberOfOption')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MIN_OPTION_SELECT_LIMIT']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"minimumNumberOfOption\" placeholder=\"0\"\n (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('minimumNumberOfOption')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('minimumNumberOfOption')?.invalid && questionsFormGroup.get('minimumNumberOfOption')?.touched}\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.OPTIONS']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('minimumNumberOfOption')?.hasError('required') && questionsFormGroup.get('minimumNumberOfOption')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('minimumNumberOfOption')?.hasError('min') && questionsFormGroup.get('minimumNumberOfOption')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO'] || 'Limit cannot be 0'}}</div>\n </div>\n <div class=\"col-6 pe-0\" *ngIf=\"showField('maximumNumberOfOption')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_OPTION_SELECT_LIMIT']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"maximumNumberOfOption\" [placeholder]=\"options.length || 0\"\n (input)=\"allowOnlyNumbers($event); checkMaxOptionsVal($event, questionsFormGroup.get('maximumNumberOfOption'))\"\n (blur)=\"questionsFormGroup.get('maximumNumberOfOption')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('maximumNumberOfOption')?.invalid && questionsFormGroup.get('maximumNumberOfOption')?.touched}\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.OPTIONS']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('maximumNumberOfOption')?.hasError('required') && questionsFormGroup.get('maximumNumberOfOption')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maximumNumberOfOption')?.hasError('min') && questionsFormGroup.get('maximumNumberOfOption')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO'] || 'Limit cannot be 0'}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maximumNumberOfOption')?.hasError('lessThanOrEqualMin') && questionsFormGroup.get('maximumNumberOfOption')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_LIMIT_GREATER'] || 'Max limit should be greater than min limit'}}</div>\n </div>\n </div>\n\n <div class=\"pb-4 col-12 mt-md-3\" *ngIf=\"showField('options')\">\n <div formArrayName=\"options\">\n <ng-container *ngFor=\"let option of options.controls; let i = index; trackBy: trackByControl\">\n <div [formGroupName]=\"i\" *ngIf=\"option.get('isActive')?.value !== false\"\n class=\"py-md-0 py-3 border-bottom border-md-0 col-12 d-flex flex-wrap flex-md-nowrap align-items-md-start align-items-center justify-content-between gap-md-4 gap-3\">\n\n <div class=\"col-12 col-md flex-md-grow-1 d-flex flex-column justify-content-center mt-md-3\"\n [class.pt-md-3]=\"i == 0\">\n <div class=\"col-12 d-flex align-items-center justify-content-between gap-3\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-2\">\n <div class=\"rounded-circle p-2 border-grey-ten-2 mt-1\"></div>\n <input formControlName=\"optionLabel\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_OPTION']\"\n class=\"flex-grow-1 assessment-text-medium-13 border-0 outline-0 bg-transparent input-focus py-1\">\n </div>\n <img class=\"cursor-pointer d-md-none\"\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\" (click)=\"removeOption(i)\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\n </div>\n <div\n *ngIf=\"option.get('optionLabel')?.invalid && option.get('optionLabel')?.touched\"\n class=\"assessment-text-regular-12 mt-1\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n\n <div *ngIf=\"showField('options', 'showWeightage') && !isChild && questionStack.length == 0\"\n class=\"col-auto\">\n <p class=\"assessment-text-medium-12 assessment-text-grey-six mb-2 mb-md-3\"\n [ngClass]=\"{'hidden-label': i > 0}\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.WEIGHTAGE']}}\n </p>\n <input type=\"number\" (input)=\"checkMaxVal($event, option.get('weight'))\"\n formControlName=\"weight\" (wheel)=\"$event.preventDefault()\"\n class=\"p-2 py-md-1 assessment-border-radius-two assessment-input-border-one outline-0 assessment-text-regular-12 assessment-marks-input assessment-bg-grey-one\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.LABEL.WEIGHTAGE']\">\n </div>\n\n <div *ngIf=\"showField('options', 'showRemarks') && !isChild && questionStack.length == 0\" class=\"col-auto\">\n <p class=\"assessment-text-medium-12 assessment-text-grey-six mb-2 mb-md-3 pb-md-1\"\n [ngClass]=\"{'hidden-label': i > 0}\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.REMARKS']}}\n </p>\n <div class=\"form-check form-switch\">\n <input type=\"checkbox\" class=\"form-check-input cursor-pointer\"\n name=\"remarksRequired\" formControlName=\"remarksRequired\">\n </div>\n </div>\n\n <div class=\"d-none d-md-block pt-3\" [class.custom-margin]=\"i == 0\">\n <img class=\"cursor-pointer\" [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\"\n (click)=\"removeOption(i)\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\n </div>\n\n </div>\n </ng-container>\n </div>\n\n <button type=\"button\" (click)=\"addOption()\"\n class=\"assessment-border-radius-two d-flex align-items-center gap-2 bg-transparent assessment-text-primary-one assessment-text-medium-12 border-0 assessment-zoom-animation mt-4\">\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_OPTION']}}\n </button>\n <div\n *ngIf=\"questionsFormGroup.get('options')?.errors && questionsFormGroup.get('options')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n <div class=\"py-4 col-12 border-top\"\n *ngIf=\"showField('childQuestions') && questionStack.length == 0 && !isChild\">\n <div class=\"d-flex align-items-center justify-content-between mb-2\">\n <label\n class=\"assessment-text-medium-16 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS']}}</label>\n <img matTooltip=\"{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS_INFO']}}\"\n matTooltipPosition=\"above\" matTooltipClass=\"assessment-tooltip\"\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.INFO']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/info.svg')\" />\n </div>\n\n <div *ngFor=\"let group of childQuestionGroups; let groupIndex = index; trackBy: trackByGroupId\"\n class=\"col-12 p-3 my-3 assessment-bg-grey-one assessment-border-radius-three assessment-input-border-one\">\n <div class=\"col-12 mb-3\" *ngIf=\"options.length > 0\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.ASSIGNED_OPTION']}}</label>\n <mat-select [value]=\"group.optionId\"\n (selectionChange)=\"onGroupOptionChange(group.id, $event.value)\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.SELECT_OPTION_TO_LINK']\"\n class=\"col-12 assessment-mat-select assessment-border-radius-two assessment-bg-white outline-0 assessment-input-border-one assessment-text-medium-13\">\n <mat-option class=\"assessment-text-medium-13\" [value]=\"null\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.NONE']}}\n </mat-option>\n <ng-container *ngFor=\"let opt of options.controls; let opIndex = index; trackBy: trackByControl\">\n <mat-option *ngIf=\"opt.get('isActive')?.value !== false\"\n class=\"assessment-text-medium-13\" [value]=\"getOptionId(opt)\">\n {{ opt.get('optionLabel')?.value || ('Option ' + (opIndex + 1)) }}\n </mat-option>\n </ng-container>\n </mat-select>\n </div>\n\n <ng-container *ngFor=\"let questionId of group.questionIds; let i = index; trackBy: trackByQuestionId\">\n <ng-container *ngIf=\"getChildQuestionById(questionId) as child\">\n <div class=\"d-flex align-items-center justify-content-between mb-1 mt-3\">\n <div class=\"d-flex align-items-center gap-2\">\n <p class=\"mb-0 assessment-text-medium-14\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTION']}} {{i + 1}}</p>\n </div>\n <div class=\"d-flex align-items-center gap-2\">\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\n class=\"action-icon cursor-pointer\"\n (click)=\"deleteChildQuestionById(child.id, $event)\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/delete.svg')\" />\n </div>\n </div>\n <div [innerHTML]=\"child?.questionText?.[0]?.text\"\n (click)=\"addEditChildQuestion(child, getChildQuestionIndex(child.id))\"\n class=\"col-12 assessment-button-padding assessment-border-radius-two assessment-bg-white assessment-input-border-one assessment-text-medium-12 cursor-pointer\">\n </div>\n </ng-container>\n </ng-container>\n\n <button (click)=\"addEditChildQuestion(undefined, undefined, group.id)\"\n class=\"assessment-zoom-animation border-0 d-flex align-items-center justify-content-center gap-2 assessment-text-primary-one bg-transparent assessment-text-semibold-12 outline-0 mt-3\">\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_MORE']}}\n </button>\n </div>\n\n <button (click)=\"addEditChildQuestion()\"\n class=\"assessment-zoom-animation assessment-button-padding d-flex align-items-center justify-content-center gap-3 assessment-text-primary-one assessment-bg-palette-EDF3FD assessment-text-semibold-12 outline-0 col-12 assessment-border-radius-two mt-3 border-ADC9F6\">\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_CHILD_QUESTION']}}\n </button>\n </div>\n <div class=\"py-4 col-12 border-top\" *ngIf=\"showField('hintText')\">\n <label\n class=\"mb-2 assessment-text-medium-16 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_HINT']}}</label>\n <app-text-editor [preText]=\"questionsFormGroup?.get('hintText')?.value\"\n (inputChange)=\"questionsFormGroup?.get('hintText')?.patchValue($event)\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_HINT']\"\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\n [height]=\"'8rem'\">\n </app-text-editor>\n <div\n *ngIf=\"questionsFormGroup.get('hintText')?.errors && questionsFormGroup.get('hintText')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n <div class=\"py-4 col-12 border-top\">\n <label class=\"mb-2 assessment-text-semibold-18 assessment-text-grey-ten col-12\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.FIELDS_SETTINGS']}}</label>\n <div class=\"my-3 d-flex align-items-center justify-content-between gap-2\">\n <div>\n <p class=\"mb-0 assessment-text-medium-13 assessment-text-grey-ten\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY']}}</p>\n <p class=\"mb-0 assessment-text-regular-11 assessment-text-grey-eight\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY_DESC']}}</p>\n </div>\n <div class=\"form-check form-switch\">\n <input type=\"checkbox\" class=\"form-check-input cursor-pointer\" name=\"isMandatory\"\n formControlName=\"isMandatory\">\n </div>\n </div>\n\n <div class=\"my-3 d-flex align-items-center justify-content-between gap-2\"\n *ngIf=\"showField('isFilterEnabled')\">\n <div>\n <p class=\"mb-0 assessment-text-medium-13 assessment-text-grey-ten\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.FILTER_ENABLED']}}</p>\n <p class=\"mb-0 assessment-text-regular-11 assessment-text-grey-eight\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.FILTER_ENABLED_DESC']}}</p>\n </div>\n <div class=\"form-check form-switch\">\n <input type=\"checkbox\" class=\"form-check-input cursor-pointer\" name=\"isFilterEnabled\"\n formControlName=\"isFilterEnabled\">\n </div>\n </div>\n\n <div class=\"my-3 col-12\"\n *ngIf=\"showField('isFilterEnabled') && questionsFormGroup.get('isFilterEnabled')?.value\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTION_NAME']}}</label>\n <input formControlName=\"questionSubText\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.QUESTION_NAME']\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('questionSubText')?.invalid && questionsFormGroup.get('questionSubText')?.touched}\">\n <div\n *ngIf=\"questionsFormGroup.get('questionSubText')?.invalid && questionsFormGroup.get('questionSubText')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger mt-1\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n\n <div class=\"my-3 col-12\" *ngIf=\"!isChild && questionStack.length == 0 && (skillsList?.length ?? 0) > 0\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAP_SKILLS']}}</label>\n <mat-select formControlName=\"skillCodes\" multiple\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.SELECT_SKILLS']\"\n panelClass=\"assessment-checkboxes\"\n class=\"col-12 assessment-mat-select assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n <mat-option class=\"assessment-text-medium-13\" *ngFor=\"let skill of skillsList; trackBy: trackByCode\"\n [value]=\"skill?.code\">{{skill?.labels?.[0]?.text}}</mat-option>\n </mat-select>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { SectionQuestion } from '../../../../shared/interfaces/question-paper.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-details',\r\n templateUrl: './question-details.component.html',\r\n styleUrls: ['./question-details.component.scss']\r\n})\r\nexport class QuestionDetailsComponent implements AfterViewInit {\r\n @Input() sectionQuestion!: SectionQuestion;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() questionBank!: Record<number, AssessmentQuestion>;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() allowDelete: boolean = true;\r\n\r\n @Output() editQuestion = new EventEmitter<{ questionId: any, isChildQuestion: boolean }>();\r\n @Output() duplicateQuestion = new EventEmitter<SectionQuestion>();\r\n @Output() deleteParentQuestion = new EventEmitter<SectionQuestion>();\r\n @Output() deleteChildQuestion = new EventEmitter<{ option: any, childQuestionId: number }>();\r\n\r\n expanded = false;\r\n showToggle = false;\r\n @ViewChild('questionText') questionText!: ElementRef;\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => this.checkOverflow());\r\n }\r\n\r\n toggleText() {\r\n this.expanded = !this.expanded;\r\n\r\n if (!this.expanded) {\r\n setTimeout(() => this.checkOverflow());\r\n }\r\n }\r\n\r\n checkOverflow() {\r\n const el = this.questionText.nativeElement;\r\n this.showToggle = el.scrollHeight > el.clientHeight;\r\n }\r\n\r\n capitalizeFirst(text: string | undefined): string {\r\n if (!text) return '';\r\n return text.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n childQuestionPresent(question: AssessmentQuestion) {\r\n return question?.defaultOptionsList?.some(\r\n option => option?.childQuestionList && option.childQuestionList.length > 0\r\n );\r\n }\r\n\r\n trackByOptionId(index: number, option: any) {\r\n return option?.options?.id != null ? 'o' + option.options.id : 'i' + index;\r\n }\r\n\r\n trackByChildId(index: number, id: any) {\r\n return id != null ? 'c' + id : 'i' + index;\r\n }\r\n\r\n trackBySkillCode(index: number, skill: any) {\r\n return skill?.code != null ? 'k' + skill.code : 'i' + index;\r\n }\r\n}\r\n","<div class=\"d-flex align-items-center justify-content-between mb-3\">\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <span\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-FEF9F1 assessment-text-medium-12 border-palette-F9DAA6\">\r\n {{capitalizeFirst(question?.questionType?.labels?.[0]?.text)}}\r\n </span>\r\n <span *ngIf=\"question?.weight\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-EDF3FD assessment-text-medium-12 border-palette-C8DAF9\">\r\n {{question?.weight}} {{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}\r\n </span>\r\n <span *ngIf=\"question?.isMandatory\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-E8F7F0 assessment-text-medium-12 border-palette-B7E7CF\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY']}}\r\n </span>\r\n </div>\r\n <button [matMenuTriggerFor]=\"questionsMenu\" (click)=\"$event.stopPropagation()\" class=\"border-0 bg-transparent py-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ACTION_DOTS']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/action-dots.svg')\" />\r\n </button>\r\n <mat-menu #questionsMenu=\"matMenu\" class=\"mat-menu assessment-border-radius-two assessment-border-grey-four-1\">\r\n <button (click)=\"duplicateQuestion.emit(sectionQuestion)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DUPLICATE']}}\r\n </button>\r\n <button *ngIf=\"allowDelete\" (click)=\"deleteParentQuestion.emit(sectionQuestion)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12 assessment-text-danger\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DELETE']}}\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<div class=\"col-12\">\r\n <div #questionText class=\"assessment-text-medium-15 question-text cursor-pointer\" [class.collapsed]=\"!expanded\"\r\n (click)=\"$event.stopPropagation(); editQuestion.emit({questionId: sectionQuestion?.questionId, isChildQuestion: false})\"\r\n [innerHTML]=\"question?.questionText?.[0]?.text\">\r\n </div>\r\n\r\n <span *ngIf=\"showToggle\" class=\"assessment-text-semibold-15 assessment-text-primary-one cursor-pointer\"\r\n (click)=\"$event.stopPropagation(); expanded = !expanded\">\r\n {{ labelConfig[expanded ? 'COMMONS_ASSESSMENT.LABEL.READ_LESS' : 'COMMONS_ASSESSMENT.LABEL.READ_MORE'] }}\r\n </span>\r\n</div>\r\n\r\n<div *ngIf=\"(question?.skillCodes?.length ?? 0) > 0\" class=\"mt-3\">\r\n <p class=\"assessment-text-medium-13 assessment-text-grey-eight mb-1\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.SKILLS']}}</p>\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <span *ngFor=\"let skill of question?.skillCodes; trackBy: trackBySkillCode\"\r\n class=\"assessment-text-medium-12 assessment-text-grey-ten rounded-2 skill-chip px-3 py-1\">{{skill?.labels?.[0]?.text || skill?.name}}</span>\r\n </div>\r\n</div>\r\n\r\n<!-- Child Questions -->\r\n<ng-container *ngIf=\"question?.defaultOptionsList?.length\">\r\n <div class=\"mt-4 col-12\">\r\n <div *ngFor=\"let option of question?.defaultOptionsList | orderBy; trackBy: trackByOptionId\" class=\"my-3 d-flex align-items-start gap-2\">\r\n <div class=\"rounded-circle custom-padding border-grey-ten-2\"></div>\r\n <span class=\"assessment-text-medium-13\">{{option.options?.optionName?.[0]?.text}}</span>\r\n </div>\r\n </div>\r\n\r\n <mat-accordion *ngIf=\"childQuestionPresent(question)\">\r\n <mat-expansion-panel (click)=\"$event.stopPropagation()\"\r\n class=\"mt-4 col-12 border-0 overflow-hidden assessment-panel shadow-none bg-transparent\">\r\n <mat-expansion-panel-header class=\"p-0 bg-transparent pe-1 h-auto\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1 pe-2\">\r\n <span\r\n class=\"assessment-text-semibold-12 assessment-text-grey-eight\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS']}}</span>\r\n <div class=\"flex-grow-1 border-bottom\"></div>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngFor=\"let option of question?.defaultOptionsList | orderBy; trackBy: trackByOptionId\">\r\n <div *ngIf=\"option.childQuestionList?.length\" class=\"mt-3\">\r\n <p class=\"assessment-text-primary-one assessment-text-semibold-14 mb-0\">\r\n {{option.options?.optionName?.[0]?.text}}</p>\r\n <div class=\"position-relative overflow-hidden\">\r\n <div *ngFor=\"let childQuestionId of option.childQuestionList; trackBy: trackByChildId\"\r\n class=\"assessment-child-node position-relative mt-3 ms-md-4 ms-3\">\r\n <div *ngIf=\"questionBank[childQuestionId] as childQuestion\"\r\n class=\"d-flex align-items-start justify-content-between gap-3 ps-1\">\r\n <div (click)=\"$event.stopPropagation(); editQuestion.emit({questionId: childQuestionId, isChildQuestion: true})\"\r\n [innerHTML]=\"childQuestion?.questionText?.[0]?.text\"\r\n class=\"flex-grow-1 assessment-text-regular-13 question-text collapsed cursor-pointer\">\r\n </div>\r\n <span\r\n class=\"assessment-text-medium-12 assessment-text-grey-eight d-md-inline d-none text-nowrap\">\r\n {{capitalizeFirst(childQuestion?.questionType?.labels?.[0]?.text)}}\r\n </span>\r\n <!-- <img (click)=\"$event.stopPropagation(); deleteChildQuestion.emit({option: option, childQuestionId: childQuestionId})\"\r\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\r\n class=\"action-icon d-md-inline d-none cursor-pointer\" /> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n</ng-container>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { forkJoin } from 'rxjs';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AddEditSectionIntroductionComponent } from './components/add-edit-section-introduction/add-edit-section-introduction.component';\r\nimport { AssessmentBuilderComponent } from './components/assessment-builder/assessment-builder.component';\r\nimport { ConfirmationDialogComponent } from '../../shared/components/confirmation-dialog/confirmation-dialog.component';\r\nimport { QuestionType, Assessment, RefData, AssessmentContextDTO, AssessmentInstance, Config } from '../../shared/interfaces/assessment.interface';\r\nimport { AssessmentQuestionPaper, SectionQuestion, QuestionPaperSection } from '../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentQuestion } from '../../shared/interfaces/question.interface';\r\nimport { AssessmentBuilderService } from './services/assessment-builder.service';\r\nimport { AssessmentMakerService } from './services/assessment-maker.service';\r\nimport { sortByOrder } from '../../shared/utils';\r\n\r\n@Component({\r\n selector: 'lib-assessment-maker',\r\n templateUrl: './assessment-maker.component.html',\r\n styleUrls: ['./assessment-maker.component.scss']\r\n})\r\n\r\nexport class AssessmentMakerComponent implements OnInit {\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() questionTypes: QuestionType[] = [];\r\n @Input() showFooter: boolean = false;\r\n @Input() customRules?: any;\r\n @Input() assessmentId: number = 0;\r\n @Input() assessmentInstanceId: number = 0;\r\n @Input() defaultAssessmentDTO: Assessment = {};\r\n @Input() predefinedAssessmentInstance: AssessmentInstance = {};\r\n @Input() enableSkillsToQuestionMapping: boolean = false;\r\n @Input() assessmentContext!: AssessmentContextDTO;\r\n @Input() minimumRequiredSections: number = 0;\r\n @Input() checkForResponses: boolean = false;\r\n @Input() showProctoringToggle: boolean = false;\r\n @Input() showTimeInput: boolean = false;\r\n\r\n @Output() assessmentIdChange = new EventEmitter<number>();\r\n @Output() assessmentInstanceIdChange = new EventEmitter<number>();\r\n @Output() snackbarMessage = new EventEmitter<{ message: string, type: 'success' | 'error' | 'info' }>();\r\n\r\n showLoader: boolean = false;\r\n questionBank: Record<number, AssessmentQuestion> = {};\r\n assessmentQuestionPaperData: AssessmentQuestionPaper = { id: 0, questionPaperSectionList: [] };\r\n configsLoaded: boolean = false;\r\n rules: any;\r\n isSubmitting: boolean = false;\r\n skillsList: RefData[] = [];\r\n responseCount: number = 0;\r\n proctoringEnabled: boolean = false;\r\n durationMinutes: number | null = null;\r\n private readonly PROCTORING_CONFIG_KEY = 'assessment.config.is-proctoring-enabled';\r\n\r\n constructor(\r\n private assessmentMakerService: AssessmentMakerService,\r\n private assessmentBuilderService: AssessmentBuilderService,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.assessmentBuilderService.setDefaultAssessmentDTO(this.defaultAssessmentDTO);\r\n this.proctoringEnabled = this.readProctoringConfig(this.defaultAssessmentDTO);\r\n this.readDuration(this.assessmentContext?.assessmentInstanceDTO || this.predefinedAssessmentInstance);\r\n this.getConfigsFromJSON();\r\n\r\n if (this.assessmentContext) {\r\n this.assessmentInstanceId = this.assessmentContext?.assessmentInstanceDTO?.id || this.assessmentInstanceId;\r\n this.assessmentId = this.assessmentContext?.assessment?.id || this.assessmentId;\r\n }\r\n\r\n if (this.assessmentId) {\r\n this.showLoader = true;\r\n this.loadAssessmentData();\r\n }\r\n\r\n if (this.enableSkillsToQuestionMapping) {\r\n this.getSkillsList();\r\n }\r\n\r\n if (this.checkForResponses && this.assessmentInstanceId) {\r\n this.loadResponseCount();\r\n }\r\n }\r\n\r\n private loadResponseCount() {\r\n this.assessmentMakerService.getResponseCount(this.assessmentInstanceId).subscribe({\r\n next: (count: any) => this.responseCount = Number(count) || 0,\r\n error: () => this.responseCount = 0 // fail open: don't warn if the count can't be fetched\r\n });\r\n }\r\n\r\n /**\r\n * Runs `action`, but first warns the user if the assessment already has responses\r\n * (only when `checkForResponses` is enabled and the count is greater than 0).\r\n */\r\n private confirmResponsesWarning(action: () => void) {\r\n if (this.responseCount > 0) {\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n autoFocus: false,\r\n maxWidth: '95%',\r\n width: '32rem',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n message: this.labelConfig['COMMONS_ASSESSMENT.WARNING.RESPONSES_EXIST'],\r\n confirmLabel: this.labelConfig['COMMONS_ASSESSMENT.LABEL.PROCEED'],\r\n cancelLabel: this.labelConfig['COMMONS_ASSESSMENT.LABEL.CANCEL']\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe((confirmed: boolean) => {\r\n if (confirmed) {\r\n action();\r\n }\r\n });\r\n } else {\r\n action();\r\n }\r\n }\r\n\r\n getConfigsFromJSON() {\r\n forkJoin({\r\n labelConfig: this.assessmentMakerService.getConfigJSON('json/labelConfig'),\r\n imageConfig: this.assessmentMakerService.getConfigJSON('json/imageConfig'),\r\n rules: this.assessmentMakerService.getConfigJSON('json/question-builder-rules'),\r\n ...(!this.questionTypes?.length && {\r\n questionTypes: this.assessmentMakerService.getConfigJSON('json/questionTypes')\r\n })\r\n }).subscribe((res: any) => {\r\n this.labelConfig = Object.assign({}, res?.labelConfig, this.labelConfig);\r\n this.imageConfig = Object.assign({}, res?.imageConfig, this.imageConfig);\r\n if (res?.questionTypes) {\r\n this.questionTypes = res?.questionTypes;\r\n }\r\n // Merge customRules per questionType over default rules\r\n this.rules = { ...res?.rules };\r\n if (this.customRules) {\r\n Object.keys(this.customRules).forEach(qType => {\r\n if (!this.rules[qType]) {\r\n this.rules[qType] = { ...this.customRules[qType] };\r\n } else {\r\n this.rules[qType] = { ...this.rules[qType], ...this.customRules[qType] };\r\n }\r\n });\r\n }\r\n\r\n this.configsLoaded = true;\r\n })\r\n }\r\n\r\n loadAssessmentData() {\r\n if (this.assessmentContext) {\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(this.assessmentContext?.questionDTOMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(this.assessmentContext?.assessmentQuestionPaperDTO);\r\n this.proctoringEnabled = this.readProctoringConfig(this.assessmentContext?.assessment);\r\n this.readDuration(this.assessmentContext?.assessmentInstanceDTO);\r\n this.showLoader = false;\r\n } else {\r\n this.assessmentMakerService.getAssessmentContext({ assessmentIds: [this.assessmentId] }).subscribe({\r\n next: (res: any) => {\r\n this.assessmentContext = res?.[0];\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(this.assessmentContext?.questionDTOMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(this.assessmentContext?.assessmentQuestionPaperDTO);\r\n this.proctoringEnabled = this.readProctoringConfig(this.assessmentContext?.assessment);\r\n this.readDuration(this.assessmentContext?.assessmentInstanceDTO);\r\n this.showLoader = false;\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'GET' }\r\n }\r\n })\r\n }\r\n }\r\n\r\n generateQuestionBank() {\r\n let childQuestionIds: number[] = [];\r\n\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.forEach((section: any) => {\r\n section?.sectionQuestionsList?.forEach((q: any) => {\r\n if (this.questionBank?.[q?.questionId]?.defaultOptionsList?.length) {\r\n this.questionBank?.[q?.questionId]?.defaultOptionsList?.forEach((option: any) => {\r\n if (option?.childQuestionList?.length) {\r\n option?.childQuestionList?.forEach((ccq: any) => {\r\n childQuestionIds.push(ccq);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n // Remove duplicates and filter out ones we already have in the bank\r\n childQuestionIds = [...new Set(childQuestionIds)].filter(id => !this.questionBank[id]);\r\n\r\n if (childQuestionIds?.length > 0) {\r\n const params = { questionIds: childQuestionIds };\r\n this.assessmentMakerService.getQuestionsByIds(params).subscribe({\r\n next: (res: any) => {\r\n res?.forEach((question: any) => {\r\n this.questionBank[question.id] = question;\r\n });\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n throw { error, method: 'GET', payload: params }\r\n }\r\n })\r\n }\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n focusSectionInput(sectionIndex: number, event: Event) {\r\n event.stopPropagation();\r\n const input = document.getElementById(`sectionNameInput_${sectionIndex}`) as HTMLInputElement;\r\n if (input) {\r\n input.focus();\r\n }\r\n }\r\n\r\n dropSection(event: CdkDragDrop<any[]>) {\r\n if (this.assessmentQuestionPaperData.questionPaperSectionList) {\r\n moveItemInArray(\r\n this.assessmentQuestionPaperData.questionPaperSectionList,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n }\r\n\r\n dropQuestion(event: CdkDragDrop<any[]>) {\r\n moveItemInArray(\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n\r\n addInstruction(section: any) {\r\n const dialogRef = this.dialog.open(AddEditSectionIntroductionComponent, {\r\n autoFocus: false,\r\n maxWidth: '95%',\r\n width: '40rem',\r\n maxHeight: '100dvh',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n imageConfig: this.imageConfig,\r\n labelConfig: this.labelConfig,\r\n sectionDetails: section\r\n },\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result?.update) {\r\n if (!section.qpsDesc) section.qpsDesc = [];\r\n if (!section.qpsDesc[0]) section.qpsDesc[0] = { id: 0, language: { code: 'ENG' }, text: '' };\r\n section.qpsDesc[0].text = result?.description;\r\n section.mediaUrl = result?.mediaUrl || null;\r\n this.patchAssessmentAndQuestionPaper(this.labelConfig['COMMONS_ASSESSMENT.TOAST.SECTION_INSTRUCTIONS_UPDATED_SUCCESS']);\r\n }\r\n });\r\n }\r\n\r\n deleteChildQuestion(option: any, childIdToRemove: number | any) {\r\n this.confirmResponsesWarning(() => {\r\n if (option.childQuestionList) {\r\n const idToRemove = typeof childIdToRemove === 'object' ? childIdToRemove?.id : childIdToRemove;\r\n option.childQuestionList = option.childQuestionList.filter((ccq: any) => {\r\n const id = typeof ccq === 'object' ? ccq?.id : ccq;\r\n return id !== idToRemove;\r\n });\r\n }\r\n });\r\n }\r\n\r\n deleteParentQuestion(sectionQuestion: SectionQuestion) {\r\n this.confirmResponsesWarning(() => {\r\n sectionQuestion.isActive = false;\r\n this.patchAssessmentAndQuestionPaper(this.labelConfig['COMMONS_ASSESSMENT.TOAST.QUESTION_DELETED_SUCCESS']);\r\n });\r\n }\r\n\r\n deleteSection(section: QuestionPaperSection) {\r\n this.confirmResponsesWarning(() => {\r\n section.isActive = false;\r\n this.patchAssessmentAndQuestionPaper(this.labelConfig['COMMONS_ASSESSMENT.TOAST.SECTION_DELETED_SUCCESS']);\r\n });\r\n }\r\n\r\n createEditQuestion(sectionDetails?: any, sectionQuestionId?: number, isChild?: boolean): void {\r\n // Editing an existing question is gated by the responses warning; adding a new one is not.\r\n if (sectionQuestionId != null) {\r\n this.confirmResponsesWarning(() => this.openQuestionBuilder(sectionDetails, sectionQuestionId, isChild));\r\n } else {\r\n this.openQuestionBuilder(sectionDetails, sectionQuestionId, isChild);\r\n }\r\n }\r\n\r\n private openQuestionBuilder(sectionDetails?: any, sectionQuestionId?: number, isChild?: boolean): void {\r\n const questionDetails = this.getQuestionFromBank(sectionQuestionId);\r\n const dialogRef = this.dialog.open(AssessmentBuilderComponent, {\r\n autoFocus: false,\r\n position: { right: '0' },\r\n maxWidth: '100%',\r\n width: '55rem',\r\n height: '100vh',\r\n panelClass: ['assessment-dialog', 'assessment-dialog-slider-animation'],\r\n hasBackdrop: true,\r\n data: {\r\n labelConfig: this.labelConfig,\r\n imageConfig: this.imageConfig,\r\n questionTypes: this.questionTypes,\r\n rules: this.rules,\r\n questionBank: this.questionBank,\r\n isChild: isChild,\r\n questionDetails,\r\n sectionDetails,\r\n assessmentQuestionPaperData: this.assessmentQuestionPaperData,\r\n assessmentId: this.assessmentId,\r\n skillsList: this.skillsList,\r\n snackbarMessageEmitter: this.snackbarMessage\r\n },\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((res: any) => {\r\n if (res?.success) {\r\n if (res?.assessmentId) {\r\n if (!this.assessmentId) {\r\n this.assessmentId = res.assessmentId;\r\n this.assessmentIdChange.emit(this.assessmentId);\r\n }\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(res?.questionMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(res.questionPaper);\r\n } else {\r\n this.patchAssessmentAndQuestionPaper();\r\n }\r\n }\r\n });\r\n }\r\n\r\n duplicateSection(sectionId: number) {\r\n if (!this.assessmentQuestionPaperData?.id) return;\r\n this.assessmentMakerService.duplicateSection(this.assessmentQuestionPaperData.id, sectionId).subscribe({\r\n next: (res: any) => {\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(res?.questionMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n this.generateQuestionBank();\r\n this.patchAssessmentAndQuestionPaper();\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.SECTION_DUPLICATED_SUCCESS'], type: 'success' });\r\n },\r\n error: (error: any) => {\r\n this.showLoader = false;\r\n console.error(error);\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH' }\r\n }\r\n });\r\n }\r\n\r\n duplicateQuestion(section: QuestionPaperSection, sectionQuestion: SectionQuestion) {\r\n if (!sectionQuestion.id) return;\r\n this.assessmentMakerService.duplicateQuestion(section.id, sectionQuestion.id).subscribe({\r\n next: (res: any) => {\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(res?.questionMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n this.generateQuestionBank();\r\n this.patchAssessmentAndQuestionPaper();\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.QUESTION_DUPLICATED_SUCCESS'], type: 'success' });\r\n },\r\n error: (error: any) => {\r\n this.showLoader = false;\r\n console.error(error);\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH' }\r\n }\r\n });\r\n }\r\n\r\n private readProctoringConfig(assessment?: Assessment): boolean {\r\n return assessment?.assessmentConfigs?.find(c => c.configKey === this.PROCTORING_CONFIG_KEY)?.configValue === '1';\r\n }\r\n\r\n /** Initializes the minutes input from an existing instance's duration (seconds). */\r\n private readDuration(instance?: AssessmentInstance): void {\r\n const seconds = instance?.duration ?? 0;\r\n // keep fractional minutes (e.g. 30s -> 0.5) rather than rounding to whole minutes\r\n this.durationMinutes = seconds > 0 ? Math.round((seconds / 60) * 100) / 100 : null;\r\n }\r\n\r\n /** Blocks characters that would enter a negative/exponent value in the duration input. */\r\n blockNegativeKeys(event: KeyboardEvent): void {\r\n if (['-', '+', 'e', 'E'].includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n /** Duration to persist, in SECONDS (the unit the taker's timer uses). 0 means untimed. */\r\n private get durationSeconds(): number {\r\n return this.durationMinutes ? Math.round(this.durationMinutes * 60) : 0;\r\n }\r\n\r\n /**\r\n * Returns the assessment configs with the proctoring flag ('1'/'0') upserted, preserving\r\n * any other existing configs. Returns undefined when the proctoring toggle is not enabled\r\n * so the saved payload is unchanged for consumers not using proctoring.\r\n */\r\n private buildProctoringConfigs(): Config[] | undefined {\r\n if (!this.showProctoringToggle) {\r\n return undefined;\r\n }\r\n const base = this.assessmentContext?.assessment?.assessmentConfigs ?? this.defaultAssessmentDTO?.assessmentConfigs ?? [];\r\n const configs: Config[] = base.map(c => ({ ...c }));\r\n const value = this.proctoringEnabled ? '1' : '0';\r\n const existing = configs.find(c => c.configKey === this.PROCTORING_CONFIG_KEY);\r\n if (existing) {\r\n existing.configValue = value;\r\n } else {\r\n configs.push({ configKey: this.PROCTORING_CONFIG_KEY, configValue: value });\r\n }\r\n return configs;\r\n }\r\n\r\n patchAssessmentAndQuestionPaper(successMessage?: string) {\r\n const payload = {\r\n questionPaper: this.assessmentBuilderService.generateQuestionPaperDTO(this.assessmentQuestionPaperData, this.questionBank),\r\n assessment: this.assessmentBuilderService.generateAssessmentDTO(this.assessmentId, this.assessmentQuestionPaperData, this.buildProctoringConfigs()),\r\n ...this.assessmentBuilderService.buildInstancePatch(this.showTimeInput, this.assessmentInstanceId, this.durationSeconds)\r\n }\r\n this.assessmentMakerService.patchAssessmentAndQuestionPaper(payload).subscribe({\r\n next: (res: any) => {\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n this.generateQuestionBank();\r\n if (successMessage) {\r\n this.snackbarMessage.emit({ message: successMessage, type: 'success' });\r\n }\r\n },\r\n error: error => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload }\r\n }\r\n })\r\n }\r\n\r\n finalSubmit() {\r\n if (this.isSubmitting) return;\r\n this.isSubmitting = true;\r\n const payload = {\r\n questionPaper: this.assessmentBuilderService.generateQuestionPaperDTO(this.assessmentQuestionPaperData, this.questionBank),\r\n assessment: this.assessmentBuilderService.generateAssessmentDTO(this.assessmentId, this.assessmentQuestionPaperData, this.buildProctoringConfigs()),\r\n ...this.assessmentBuilderService.buildInstancePatch(this.showTimeInput, this.assessmentInstanceId, this.durationSeconds)\r\n }\r\n if ((payload?.questionPaper?.questionPaperSectionList?.length ?? 0) < this.minimumRequiredSections) {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.MINIMUM_REQUIRED_SECTIONS_ERROR']?.replace('$Count', String(this.minimumRequiredSections)), type: 'info' });\r\n this.isSubmitting = false;\r\n return;\r\n }\r\n if (!this.assessmentId) {\r\n // returns null or 0 as assessment is not created yet. Handle the response in consumer app\r\n this.isSubmitting = false;\r\n this.assessmentInstanceIdChange.emit(this.assessmentInstanceId);\r\n return;\r\n }\r\n this.assessmentMakerService.patchAssessmentAndQuestionPaper(payload).subscribe({\r\n next: (res: any) => {\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n if (!this.assessmentInstanceId) {\r\n this.createAssessmentInstance();\r\n } else {\r\n this.isSubmitting = false;\r\n this.assessmentInstanceIdChange.emit(this.assessmentInstanceId);\r\n }\r\n },\r\n error: error => {\r\n this.isSubmitting = false;\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload }\r\n }\r\n })\r\n }\r\n\r\n createAssessmentInstance() {\r\n const payload = this.assessmentBuilderService.generateAssessmentInstanceDTO(this.assessmentId, this.predefinedAssessmentInstance, this.showTimeInput ? this.durationSeconds : undefined);\r\n this.assessmentMakerService.createAssessmentInstance(payload).subscribe({\r\n next: (res: any) => {\r\n this.assessmentInstanceId = res;\r\n this.isSubmitting = false;\r\n this.assessmentInstanceIdChange.emit(res);\r\n // this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ASSESSMENT_PUBLISHED_SUCCESS'], type: 'success' });\r\n },\r\n error: error => {\r\n this.isSubmitting = false;\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'POST', payload }\r\n }\r\n })\r\n }\r\n\r\n discardChanges() {\r\n if (this.assessmentId) {\r\n this.showLoader = true;\r\n this.loadAssessmentData();\r\n } else {\r\n // Reset fully to empty if no assessment existed yet\r\n this.assessmentQuestionPaperData = { id: 0, questionPaperSectionList: [] };\r\n }\r\n }\r\n\r\n getQuestionFromBank(questionId?: number) {\r\n return this.questionBank?.[questionId || -1];\r\n }\r\n\r\n updateAssessmentQuestionPaperData(newData: any) {\r\n const expandedList = this.assessmentQuestionPaperData?.questionPaperSectionList\r\n ?.filter((s: any) => s.isExpanded)\r\n ?.map((s: any, idx: number) => s.id ? s.id.toString() : `${idx}_${s.qpsName?.[0]?.text}`);\r\n\r\n this.assessmentQuestionPaperData = newData || { id: 0, questionPaperSectionList: [] };\r\n this.filterInactiveSectionsAndQuestions();\r\n\r\n if (expandedList?.length) {\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.forEach((s: any, idx: number) => {\r\n const key = s.id ? s.id.toString() : `${idx}_${s.qpsName?.[0]?.text}`;\r\n if (expandedList.includes(key)) {\r\n s.isExpanded = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n filterInactiveSectionsAndQuestions() {\r\n this.assessmentQuestionPaperData.questionPaperSectionList = sortByOrder(\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.filter((section: any) => section.isActive !== false)\r\n );\r\n\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.forEach((section: any) => {\r\n section.sectionQuestionsList = sortByOrder(\r\n section.sectionQuestionsList?.filter((question: any) => question.isActive !== false)\r\n );\r\n });\r\n\r\n if (this.questionBank) {\r\n Object.keys(this.questionBank).forEach(key => {\r\n const question = this.questionBank[key as any];\r\n if (question?.defaultOptionsList) {\r\n question.defaultOptionsList = sortByOrder(\r\n question.defaultOptionsList.filter((opt: any) => opt.isActive !== false)\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n capitalizeFirst(text: string | undefined): string {\r\n if (!text) return '';\r\n return text.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');\r\n }\r\n\r\n getSkillsList() {\r\n const params = {\r\n fetchContextDataOnly: false,\r\n page: 0,\r\n size: 20,\r\n direction: 'ASC'\r\n }\r\n this.assessmentMakerService.getRefDataByCode('REF.ASSESSMENT_QUESTION_SKILL', params).subscribe({\r\n next: (res: any) => {\r\n this.skillsList = res?.elements;\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n throw { error, method: 'GET', payload: this.assessmentId }\r\n }\r\n })\r\n }\r\n\r\n trackBySectionId(index: number, section: any) {\r\n return section?.id != null ? 's' + section.id : 'i' + index;\r\n }\r\n\r\n trackBySectionQuestion(index: number, sq: any) {\r\n if (sq?.questionId != null) return 'q' + sq.questionId;\r\n if (sq?.id != null) return 's' + sq.id;\r\n return 'i' + index;\r\n }\r\n}\r\n","<div *ngIf=\"configsLoaded && !showLoader; else loader\" class=\"col-12 h-100\">\r\n <div class=\"col-12 h-100 py-4\" [class.height-without-footer]=\"showFooter\">\r\n <ng-container *ngIf=\"assessmentQuestionPaperData?.questionPaperSectionList?.length\">\r\n <div *ngIf=\"showProctoringToggle || showTimeInput\"\r\n class=\"d-flex align-items-center justify-content-end flex-wrap gap-4 mb-3\">\r\n <div *ngIf=\"showTimeInput\" class=\"d-flex align-items-center gap-2\">\r\n <label for=\"durationInput\" class=\"assessment-text-medium-13 assessment-text-grey-ten mb-0 cursor-pointer\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.LABEL.DURATION'] }}\r\n </label>\r\n <input type=\"number\" id=\"durationInput\" min=\"1\" [(ngModel)]=\"durationMinutes\"\r\n (keydown)=\"blockNegativeKeys($event)\" (ngModelChange)=\"durationMinutes = $event > 0 ? $event : null\"\r\n [placeholder]=\"0\"\r\n class=\"form-control form-control-sm assessment-border-radius-two assessment-text-regular-13\" style=\"width: 4rem;\">\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.LABEL.MINUTES'] }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"showProctoringToggle\" class=\"d-flex align-items-center gap-2\">\r\n <label for=\"proctoringToggle\" class=\"assessment-text-medium-13 assessment-text-grey-ten mb-0 cursor-pointer\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.LABEL.ENABLE_PROCTORING'] }}\r\n </label>\r\n <div class=\"form-check form-switch m-0\">\r\n <input type=\"checkbox\" id=\"proctoringToggle\" class=\"form-check-input cursor-pointer\"\r\n [(ngModel)]=\"proctoringEnabled\">\r\n </div>\r\n </div>\r\n </div>\r\n <mat-accordion multi=\"true\" cdkDropList (cdkDropListDropped)=\"dropSection($event)\">\r\n <mat-expansion-panel [hideToggle]=\"true\" #panel=\"matExpansionPanel\" [expanded]=\"section.isExpanded\"\r\n (opened)=\"section.isExpanded = true\" (closed)=\"section.isExpanded = false\"\r\n class=\"mb-4 border-0 overflow-hidden assessment-panel shadow-none bg-transparent\" cdkDrag\r\n *ngFor=\"let section of assessmentQuestionPaperData?.questionPaperSectionList; let sectionIndex = index; trackBy: trackBySectionId\">\r\n <!-- Section Header -->\r\n <mat-expansion-panel-header class=\"col-12 p-0 h-auto bg-transparent\">\r\n <div class=\"d-flex col-12 align-items-center gap-md-3 gap-2\">\r\n <img cdkDragHandle [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DRAG_DROP']\"\r\n class=\"cursor-grab\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/drag-drop.svg')\" />\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1 justify-content-between p-3 assessment-border-radius-two assessment-border-two assessment-bg-white\"\r\n [class.no-border]=\"section.isExpanded\">\r\n <div>\r\n <div class=\"d-flex align-items-center mb-1\">\r\n <input type=\"text\" [id]=\"'sectionNameInput_' + sectionIndex\"\r\n class=\"col-md-11 col-10 assessment-text-semibold-18 border-0 outline-0 bg-transparent p-0 input-focus\"\r\n [(ngModel)]=\"section.qpsName[0].text\"\r\n [attr.size]=\"(section.qpsName[0].text?.length || 1)\"\r\n (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.EDIT']\"\r\n class=\"action-icon cursor-pointer\"\r\n (click)=\"focusSectionInput(sectionIndex, $event)\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/pencil.svg')\" />\r\n </div>\r\n <p class=\"mb-0 assessment-text-medium-12 assessment-text-grey-seven\">\r\n {{section?.sectionQuestionsList?.length || 0}}\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTIONS']}}\r\n </p>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-md-4 gap-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ARROW_DOWN_BLACK']\"\r\n [ngClass]=\"panel.expanded ? 'change-direction' : 'change-direction-reverse'\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/arrow-down-black.svg')\" />\r\n <button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\"\r\n class=\"border-0 bg-transparent py-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ACTION_DOTS']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/action-dots.svg')\" />\r\n </button>\r\n <mat-menu #menu=\"matMenu\"\r\n class=\"mat-menu assessment-border-radius-two assessment-border-grey-four-1\">\r\n <button (click)=\"addInstruction(section)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_INSTRUCTIONS']}}\r\n </button>\r\n <button (click)=\"duplicateSection(section.id)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DUPLICATE']}}\r\n </button>\r\n <button *ngIf=\"(assessmentQuestionPaperData?.questionPaperSectionList?.length ?? 0) > minimumRequiredSections\" \r\n (click)=\"deleteSection(section)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12 assessment-text-danger\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DELETE']}}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Questions inside section -->\r\n <div cdkDropList [cdkDropListData]=\"section.sectionQuestionsList || []\"\r\n (cdkDropListDropped)=\"dropQuestion($event)\">\r\n <div cdkDrag *ngFor=\"let sectionQuestion of section.sectionQuestionsList; let i = index; trackBy: trackBySectionQuestion\"\r\n class=\"d-flex align-items-start gap-md-3 gap-2 my-3 overflow-hidden\">\r\n <img cdkDragHandle [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DRAG_DROP']\"\r\n class=\"cursor-grab mt-4\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/drag-drop.svg')\" />\r\n <div class=\"flex-grow-1 p-3 assessment-border-two assessment-border-radius-two question-container assessment-bg-white\">\r\n <lib-question-details [sectionQuestion]=\"sectionQuestion\"\r\n [question]=\"getQuestionFromBank(sectionQuestion.questionId) || {}\"\r\n [questionBank]=\"questionBank\" [imageConfig]=\"imageConfig\"\r\n [labelConfig]=\"labelConfig\" [allowDelete]=\"(section?.sectionQuestionsList?.length ?? 0) > 1\"\r\n (editQuestion)=\"createEditQuestion(section, $event?.questionId, $event?.isChildQuestion)\"\r\n (duplicateQuestion)=\"duplicateQuestion(section, $event)\"\r\n (deleteParentQuestion)=\"deleteParentQuestion($event)\"\r\n (deleteChildQuestion)=\"deleteChildQuestion($event.option, $event.childQuestionId)\">\r\n </lib-question-details>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 ps-4 border-bottom pb-4\">\r\n <button (click)=\"createEditQuestion(section)\"\r\n class=\"assessment-zoom-animation assessment-button-padding d-flex align-items-center justify-content-center gap-3 assessment-text-primary-one assessment-bg-palette-EDF3FD assessment-text-semibold-12 outline-0 assessment-border-radius-two mt-3 border-ADC9F6\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_A_QUESTION']}}\r\n </button>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n <button (click)=\"createEditQuestion()\"\r\n class=\"assessment-zoom-animation assessment-button-padding d-flex align-items-center justify-content-center gap-3 assessment-text-primary-one assessment-bg-palette-EDF3FD assessment-text-semibold-12 outline-0 assessment-border-radius-two mt-3 border-ADC9F6 ms-4\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ADD_SECTION']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/add-section.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_A_SECTION']}}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!assessmentQuestionPaperData?.questionPaperSectionList?.length\"\r\n class=\"h-100 d-flex flex-column align-items-center justify-content-center gap-3\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.NO_QUESTIONS']\" class=\"col-sm-auto col-6\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/no-questions.svg')\" />\r\n <div class=\"text-center\">\r\n <p class=\"mb-1 assessment-text-medium-18\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_CUSTOM_QUESTIONS']}}</p>\r\n <p class=\"mb-0 assessment-text-medium-12 assessment-text-grey-seven\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_QUESTION_DESC']}}</p>\r\n </div>\r\n <button (click)=\"createEditQuestion()\"\r\n class=\"assessment-button-padding assessment-border-radius-two d-flex align-items-center gap-2 assessment-bg-palette-EDF3FD assessment-text-primary-one assessment-text-semibold-12 border-0 assessment-zoom-animation\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_A_QUESTION']}}\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showFooter\"\r\n class=\"bg-white p-3 position-sticky bottom-0 d-flex align-items-center justify-content-end border-top gap-3\">\r\n <button (click)=\"discardChanges()\" [disabled]=\"isSubmitting\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary-transparent assessment-text-semibold-13\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.DISCARD']}}</button>\r\n <button (click)=\"finalSubmit()\" [disabled]=\"isSubmitting\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary assessment-text-semibold-13 position-relative\">\r\n <span [ngClass]=\"{'opacity-0': isSubmitting}\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.PUBLISH']}}\r\n </span>\r\n <mat-spinner *ngIf=\"isSubmitting\" [diameter]=\"20\"\r\n class=\"position-absolute top-50 start-50 translate-middle assessment-spinner-white\"></mat-spinner>\r\n </button>\r\n </div>\r\n</div>\r\n<ng-template #loader>\r\n <div class=\"h-100 col-12 d-flex align-items-center justify-content-center py-5\">\r\n <mat-spinner diameter=\"60\" class=\"assessment-spinner-primary\"></mat-spinner>\r\n </div>\r\n</ng-template>","import { NgModule } from '@angular/core';\r\nimport { AssessmentMakerComponent } from './assessment-maker.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MaterialModules } from '../../shared/material-modules';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { AddEditSectionIntroductionComponent } from './components/add-edit-section-introduction/add-edit-section-introduction.component';\r\nimport { AssessmentBuilderComponent } from './components/assessment-builder/assessment-builder.component';\r\nimport { QuestionDetailsComponent } from './components/question-details/question-details.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AssessmentMakerComponent,\r\n AddEditSectionIntroductionComponent,\r\n AssessmentBuilderComponent,\r\n QuestionDetailsComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n MaterialModules,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [\r\n AssessmentMakerComponent\r\n ]\r\n})\r\nexport class AssessmentMakerModule {}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AssessmentMakerService } from './modules/assessment-maker/services/assessment-maker.service';\r\nimport { AssessmentTakerService } from './modules/assessment-taker/services/assessment-taker.service';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class CommonsAssessmentModule {\r\n static forRoot(): ModuleWithProviders<CommonsAssessmentModule> {\r\n return {\r\n ngModule: CommonsAssessmentModule,\r\n providers: [\r\n AssessmentMakerService,\r\n AssessmentTakerService,\r\n ],\r\n };\r\n }\r\n}","/*\r\n * Public API Surface of assessment-maker\r\n */\r\n\r\nexport * from './lib/shared/interfaces/assessment.interface';\r\nexport * from './lib/shared/interfaces/question.interface';\r\nexport * from './lib/shared/interfaces/question-paper.interface';\r\n\r\nexport * from './lib/modules/assessment-taker/assessment-taker.module';\r\nexport * from './lib/modules/assessment-maker/assessment-maker.module';\r\nexport * from './lib/commons-assessment.module';\r\n\r\nexport * from './lib/modules/assessment-maker/assessment-maker.component';\r\nexport * from './lib/modules/assessment-taker/assessment-taker.component';\r\n\r\nexport * from './lib/shared/utils';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i0","MAT_DIALOG_DATA","i2","i1","i3","Component","Inject","HttpHeaders","HttpParams","controllers.assessmentTakerController","controllers.googleDriveController","Injectable","i4","Observable","EventEmitter","ViewChild","Input","Output","FormControl","i2.AssessmentTakerService","Optional","Self","i2.TextEditorComponent","Pipe","i3.OrderByPipe","DatePipe","forkJoin","of","tap","switchMap","catchError","throwError","map","Validators","i1.AssessmentTakerService","i3.ResponseBuilderService","i5","i6.ProctoringService","i7.ProctoringConsentComponent","i8","i9","i10","i11.QuestionTypeShortComponent","i12.QuestionTypeLongComponent","i13.QuestionTypeEditorComponent","i14.QuestionTypeObjectiveComponent","i15.QuestionTypeMultiselectComponent","i16.QuestionTypePreferenceComponent","i17.QuestionTypeFileUploadComponent","i18.QuestionTypeDatePickerComponent","i19","i20","i21.OrderByPipe","HostListener","MatProgressSpinnerModule","MatExpansionModule","MatSelectModule","DragDropModule","MatMenuModule","MatDialogModule","MatTooltipModule","MatTabsModule","OverlayModule","MatDatepickerModule","MatNativeDateModule","NgModule","CommonModule","FormsModule","ReactiveFormsModule","AngularEditorModule","controllers.assessmentMakerController","controllers.refDataController","i6","i7","i8.TextEditorComponent","i4.OrderByPipe","moveItemInArray","i1.AssessmentMakerService","i2.AssessmentBuilderService","i6.QuestionDetailsComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;;;;;;;;;;;;;EAagF;EAChF;EAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC,EAAA;MAC/B,aAAa,GAAG,MAAM,CAAC,cAAc;WAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAA,EAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;UAC5E,UAAU,CAAC,EAAE,CAAC,EAAA,EAAI,KAAK,IAAI,CAAC,IAAI,CAAC;cAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;kBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;EACtG,IAAA,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEc,SAAA,SAAS,CAAC,CAAC,EAAE,CAAC,EAAA;EAC5B,IAAA,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;EACrC,QAAA,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;EAC9F,IAAA,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MACpB,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;EACvC,IAAA,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;EACvF,CAAC;EAEM,IAAI,QAAQ,GAAG,YAAA;MACpB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAA;EAC3C,QAAA,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACjD,YAAA,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;cACjB,KAAK,IAAI,CAAC,IAAI,CAAC;kBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;sBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAChF,SAAA;EACD,QAAA,OAAO,CAAC,CAAC;EACb,KAAC,CAAA;MACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EACzC,CAAC,CAAA;EAEe,SAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA;MACzB,IAAI,CAAC,GAAG,EAAE,CAAC;MACX,KAAK,IAAI,CAAC,IAAI,CAAC;UAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;cAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;UAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;cACpE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1E,gBAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACzB,SAAA;EACL,IAAA,OAAO,CAAC,CAAC;EACX,CAAC;EAEK,SAAU,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAA;EACtD,IAAA,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;MAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;EAAE,QAAA,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;EAC1H,QAAA,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;EAAE,YAAA,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;EAAE,gBAAA,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;EAClJ,IAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EAChE,CAAC;EAEe,SAAA,OAAO,CAAC,UAAU,EAAE,SAAS,EAAA;EAC3C,IAAA,OAAO,UAAU,MAAM,EAAE,GAAG,EAAA,EAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;EACvE,CAAC;EAEe,SAAA,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAA;EACrG,IAAA,SAAS,MAAM,CAAC,CAAC,EAAA,EAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,UAAU;UAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;EACvH,IAAA,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;MACjG,IAAI,MAAM,GAAG,CAAC,YAAY,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;MACxF,IAAI,UAAU,GAAG,YAAY,KAAK,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;EACzG,IAAA,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;EACpB,IAAA,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;UAC7C,IAAI,OAAO,GAAG,EAAE,CAAC;UACjB,KAAK,IAAI,CAAC,IAAI,SAAS;EAAE,YAAA,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EACzE,QAAA,KAAK,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM;EAAE,YAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACxE,QAAA,OAAO,CAAC,cAAc,GAAG,UAAU,CAAC,EAAA,EAAI,IAAI,IAAI;cAAE,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;EAC9K,QAAA,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,UAAU,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;UAC/H,IAAI,IAAI,KAAK,UAAU,EAAE;cACrB,IAAI,MAAM,KAAK,KAAK,CAAC;kBAAE,SAAS;EAChC,YAAA,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;EAAE,gBAAA,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;EAC1F,YAAA,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;EAAE,gBAAA,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;EAC/C,YAAA,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;EAAE,gBAAA,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;EAC/C,YAAA,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;EAAE,gBAAA,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACxD,SAAA;EACI,aAAA,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE;cACzB,IAAI,IAAI,KAAK,OAAO;EAAE,gBAAA,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;EACzC,gBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC5B,SAAA;EACJ,KAAA;EACD,IAAA,IAAI,MAAM;UAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;MACtE,IAAI,GAAG,IAAI,CAAC;EACd,CAAC;EAAA,CAAC;WAEc,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAA;EAC5D,IAAA,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;EACpC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,QAAA,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC3F,KAAA;MACD,OAAO,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;EACnC,CAAC;EAAA,CAAC;EAEI,SAAU,SAAS,CAAC,CAAC,EAAA;EACzB,IAAA,OAAO,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAClD,CAAC;EAAA,CAAC;WAEc,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAA;MAC/C,IAAI,OAAO,IAAI,KAAK,QAAQ;UAAE,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EAC/F,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;EACvH,CAAC;EAAA,CAAC;EAEc,SAAA,UAAU,CAAC,WAAW,EAAE,aAAa,EAAA;MACnD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;UAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;EACjI,CAAC;EAEK,SAAU,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAA;EACzD,IAAA,SAAS,KAAK,CAAC,KAAK,EAAA,EAAI,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAA,EAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;EAC5G,IAAA,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAA;EACrD,QAAA,SAAS,SAAS,CAAC,KAAK,EAAA,EAAI,IAAI;cAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAAE,SAAA;EAAC,QAAA,OAAO,CAAC,EAAE;cAAE,MAAM,CAAC,CAAC,CAAC,CAAC;EAAE,SAAA,EAAE;EAC3F,QAAA,SAAS,QAAQ,CAAC,KAAK,EAAA,EAAI,IAAI;cAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EAAE,SAAA;EAAC,QAAA,OAAO,CAAC,EAAE;cAAE,MAAM,CAAC,CAAC,CAAC,CAAC;EAAE,SAAA,EAAE;EAC9F,QAAA,SAAS,IAAI,CAAC,MAAM,EAAA,EAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;EAC9G,QAAA,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EAC1E,KAAC,CAAC,CAAC;EACL,CAAC;EAEe,SAAA,WAAW,CAAC,OAAO,EAAE,IAAI,EAAA;EACvC,IAAA,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAA,EAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;cAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;MACjM,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAa,EAAA,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAC5J,SAAS,IAAI,CAAC,CAAC,EAAA,EAAI,OAAO,UAAU,CAAC,EAAI,EAAA,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;MAClE,SAAS,IAAI,CAAC,EAAE,EAAA;EACZ,QAAA,IAAI,CAAC;EAAE,YAAA,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;EAC9D,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;cAAE,IAAI;EAC1C,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;EAAE,oBAAA,OAAO,CAAC,CAAC;EAC7J,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;EAAE,oBAAA,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;EACxC,gBAAA,QAAQ,EAAE,CAAC,CAAC,CAAC;EACT,oBAAA,KAAK,CAAC,CAAC;EAAC,oBAAA,KAAK,CAAC;0BAAE,CAAC,GAAG,EAAE,CAAC;0BAAC,MAAM;EAC9B,oBAAA,KAAK,CAAC;0BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EAAC,wBAAA,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;EACxD,oBAAA,KAAK,CAAC;0BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EAAC,wBAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAAC,wBAAA,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;0BAAC,SAAS;EACjD,oBAAA,KAAK,CAAC;EAAE,wBAAA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EAAC,wBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;0BAAC,SAAS;EACjD,oBAAA;EACI,wBAAA,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;8BAAE,CAAC,GAAG,CAAC,CAAC;8BAAC,SAAS;EAAE,yBAAA;EAC5G,wBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;8BAAC,MAAM;EAAE,yBAAA;EACtF,wBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;EAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;8BAAC,CAAC,GAAG,EAAE,CAAC;8BAAC,MAAM;EAAE,yBAAA;0BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;EAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAAC,4BAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;8BAAC,MAAM;EAAE,yBAAA;0BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;EAAE,4BAAA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EACtB,wBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;0BAAC,SAAS;EAC9B,iBAAA;kBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;EAC9B,aAAA;EAAC,YAAA,OAAO,CAAC,EAAE;EAAE,gBAAA,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;kBAAC,CAAC,GAAG,CAAC,CAAC;EAAE,aAAA;EAAS,oBAAA;EAAE,gBAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAAE,aAAA;EAC1D,QAAA,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;EAAE,YAAA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;UAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;OACpF;EACH,CAAC;EAEM,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAA;MAChE,IAAI,EAAE,KAAK,SAAS;UAAE,EAAE,GAAG,CAAC,CAAC;MAC7B,IAAI,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MACjD,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE;EAC/E,QAAA,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAA,EAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EACjE,KAAA;MACD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;EACrC,CAAC,KAAK,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAA;MACxB,IAAI,EAAE,KAAK,SAAS;UAAE,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACf,CAAC,CAAC,CAAC;EAEa,SAAA,YAAY,CAAC,CAAC,EAAE,CAAC,EAAA;MAC/B,KAAK,IAAI,CAAC,IAAI,CAAC;EAAE,QAAA,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;EAAE,YAAA,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAChH,CAAC;EAEK,SAAU,QAAQ,CAAC,CAAC,EAAA;MACxB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAC9E,IAAA,IAAI,CAAC;EAAE,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACxB,IAAA,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;UAAE,OAAO;EAC1C,YAAA,IAAI,EAAE,YAAA;EACF,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;sBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;EACnC,gBAAA,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;eAC3C;WACJ,CAAC;EACF,IAAA,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;EACzF,CAAC;EAEe,SAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA;EACzB,IAAA,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC3D,IAAA,IAAI,CAAC,CAAC;EAAE,QAAA,OAAO,CAAC,CAAC;EACjB,IAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;MACjC,IAAI;UACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;EAAE,YAAA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EAC9E,KAAA;EACD,IAAA,OAAO,KAAK,EAAE;EAAE,QAAA,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;EAAE,KAAA;EAC/B,YAAA;UACJ,IAAI;EACA,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;EAAE,gBAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpD,SAAA;EACO,gBAAA;EAAE,YAAA,IAAI,CAAC;kBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;EAAE,SAAA;EACpC,KAAA;EACD,IAAA,OAAO,EAAE,CAAC;EACZ,CAAC;EAED;WACgB,QAAQ,GAAA;EACtB,IAAA,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;EAC9C,QAAA,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACzC,IAAA,OAAO,EAAE,CAAC;EACZ,CAAC;EAED;WACgB,cAAc,GAAA;MAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EAAE,QAAA,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;MACpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;UAC5C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;cAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,IAAA,OAAO,CAAC,CAAC;EACX,CAAC;WAEe,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAA;EAC1C,IAAA,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;EAAE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;cACjF,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;EACpB,gBAAA,IAAI,CAAC,EAAE;EAAE,oBAAA,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;kBACrD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnB,aAAA;EACJ,SAAA;EACD,IAAA,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC3D,CAAC;EAEK,SAAU,OAAO,CAAC,CAAC,EAAA;MACvB,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;EACvE,CAAC;WAEe,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAA;MAC7D,IAAI,CAAC,MAAM,CAAC,aAAa;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;EACvF,IAAA,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;MAC9D,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,aAAa,KAAK,UAAU,GAAG,aAAa,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAc,EAAA,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;MACxN,SAAS,WAAW,CAAC,CAAC,EAAI,EAAA,OAAO,UAAU,CAAC,EAAI,EAAA,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;MAC/F,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAI,EAAA,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;UAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAA,EAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA,EAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;EAAC,QAAA,IAAI,CAAC;cAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAAE,KAAA,EAAE;EACxK,IAAA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI;UAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAAE,KAAA;EAAC,IAAA,OAAO,CAAC,EAAE;UAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAAE,KAAA,EAAE;MAClF,SAAS,IAAI,CAAC,CAAC,EAAA,EAAI,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;EACxH,IAAA,SAAS,OAAO,CAAC,KAAK,EAAA,EAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;EAClD,IAAA,SAAS,MAAM,CAAC,KAAK,EAAA,EAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;EAClD,IAAA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA,EAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;EAAE,QAAA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EACpF,CAAC;EAEK,SAAU,gBAAgB,CAAC,CAAC,EAAA;MAChC,IAAI,CAAC,EAAE,CAAC,CAAC;EACT,IAAA,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAA,EAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;EAC5I,IAAA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAI,EAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAA,EAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;EACxI,CAAC;EAEK,SAAU,aAAa,CAAC,CAAC,EAAA;MAC7B,IAAI,CAAC,MAAM,CAAC,aAAa;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;MACvF,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;EACnC,IAAA,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAA,EAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;MACjN,SAAS,IAAI,CAAC,CAAC,EAAI,EAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAA,EAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAI,EAAA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;EAChK,IAAA,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,EAAI,EAAA,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;EAC9H,CAAC;EAEe,SAAA,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAA;MAC9C,IAAI,MAAM,CAAC,cAAc,EAAE;EAAE,QAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;EAAE,KAAA;EAAM,SAAA;EAAE,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;EAAE,KAAA;EAC/G,IAAA,OAAO,MAAM,CAAC;EAChB,CAAC;EAAA,CAAC;EAEF,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAA;EACrD,IAAA,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EACtE,CAAC,IAAI,UAAS,CAAC,EAAE,CAAC,EAAA;EAChB,IAAA,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;EACnB,CAAC,CAAC;EAEF,IAAI,OAAO,GAAG,UAAS,CAAC,EAAA;EACtB,IAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,IAAI,UAAU,CAAC,EAAA;UACjD,IAAI,EAAE,GAAG,EAAE,CAAC;UACZ,KAAK,IAAI,CAAC,IAAI,CAAC;cAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;EAAE,gBAAA,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EACnF,QAAA,OAAO,EAAE,CAAC;EACZ,KAAC,CAAC;EACF,IAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;EACpB,CAAC,CAAC;EAEI,SAAU,YAAY,CAAC,GAAG,EAAA;EAC9B,IAAA,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;EAAE,QAAA,OAAO,GAAG,CAAC;MACtC,IAAI,MAAM,GAAG,EAAE,CAAC;MAChB,IAAI,GAAG,IAAI,IAAI;EAAE,QAAA,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;EAAE,YAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;kBAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACjI,IAAA,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EAChC,IAAA,OAAO,MAAM,CAAC;EAChB,CAAC;EAEK,SAAU,eAAe,CAAC,GAAG,EAAA;EACjC,IAAA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;EAC1D,CAAC;EAEK,SAAU,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA;EAC7D,IAAA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;MAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;EACnL,IAAA,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAChG,CAAC;EAEK,SAAU,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA;MACpE,IAAI,IAAI,KAAK,GAAG;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;EACxE,IAAA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;MAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;EAClL,IAAA,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;EAC5G,CAAC;EAEe,SAAA,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAA;EACnD,IAAA,IAAI,QAAQ,KAAK,IAAI,KAAK,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,CAAC;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;EACzJ,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAChF,CAAC;WAEe,uBAAuB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAA;MACvD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;UACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU;EAAE,YAAA,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;UACtG,IAAI,OAAO,EAAE,KAAK,CAAC;EACnB,QAAA,IAAI,KAAK,EAAE;cACT,IAAI,CAAC,MAAM,CAAC,YAAY;EAAE,gBAAA,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;EACrF,YAAA,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;EACtC,SAAA;EACD,QAAA,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE;cACtB,IAAI,CAAC,MAAM,CAAC,OAAO;EAAE,gBAAA,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;EAC3E,YAAA,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EAChC,YAAA,IAAI,KAAK;kBAAE,KAAK,GAAG,OAAO,CAAC;EAC5B,SAAA;UACD,IAAI,OAAO,OAAO,KAAK,UAAU;EAAE,YAAA,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;EACjF,QAAA,IAAI,KAAK;cAAE,OAAO,GAAG,cAAa,IAAI;EAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAAE,aAAA;EAAC,YAAA,OAAO,CAAC,EAAE;EAAE,gBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAAE,aAAA,EAAE,CAAC;EACtG,QAAA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;EAClE,KAAA;EACI,SAAA,IAAI,KAAK,EAAE;UACd,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EACjC,KAAA;EACD,IAAA,OAAO,KAAK,CAAC;EACf,CAAC;EAED,IAAI,gBAAgB,GAAG,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAA;EACnH,IAAA,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EAC3B,IAAA,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;EACnF,CAAC,CAAC;EAEI,SAAU,kBAAkB,CAAC,GAAG,EAAA;MACpC,SAAS,IAAI,CAAC,CAAC,EAAA;UACb,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,0CAA0C,CAAC,GAAG,CAAC,CAAC;EAC9G,QAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;OACrB;EACD,IAAA,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACb,IAAA,SAAS,IAAI,GAAA;UACX,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE;cAC1B,IAAI;EACF,gBAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC;sBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;kBACvF,IAAI,CAAC,CAAC,OAAO,EAAE;EACb,oBAAA,IAAI,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;sBACrC,IAAI,CAAC,CAAC,KAAK;EAAE,wBAAA,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAS,CAAC,EAAI,EAAA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACzG,iBAAA;;sBACI,CAAC,IAAI,CAAC,CAAC;EACb,aAAA;EACD,YAAA,OAAO,CAAC,EAAE;kBACR,IAAI,CAAC,CAAC,CAAC,CAAC;EACT,aAAA;EACF,SAAA;UACD,IAAI,CAAC,KAAK,CAAC;cAAE,OAAO,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;UACjF,IAAI,GAAG,CAAC,QAAQ;cAAE,MAAM,GAAG,CAAC,KAAK,CAAC;OACnC;MACD,OAAO,IAAI,EAAE,CAAC;EAChB,CAAC;EAEe,SAAA,gCAAgC,CAAC,IAAI,EAAE,WAAW,EAAA;MAChE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;EACnD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,kDAAkD,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAA;cAChG,OAAO,GAAG,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;EACnH,SAAC,CAAC,CAAC;EACN,KAAA;EACD,IAAA,OAAO,IAAI,CAAC;EACd,CAAC;AAED,kBAAe;EACb,IAAA,SAAS,EAAA,SAAA;EACT,IAAA,QAAQ,EAAA,QAAA;EACR,IAAA,MAAM,EAAA,MAAA;EACN,IAAA,UAAU,EAAA,UAAA;EACV,IAAA,OAAO,EAAA,OAAA;EACP,IAAA,YAAY,EAAA,YAAA;EACZ,IAAA,iBAAiB,EAAA,iBAAA;EACjB,IAAA,SAAS,EAAA,SAAA;EACT,IAAA,iBAAiB,EAAA,iBAAA;EACjB,IAAA,UAAU,EAAA,UAAA;EACV,IAAA,SAAS,EAAA,SAAA;EACT,IAAA,WAAW,EAAA,WAAA;EACX,IAAA,eAAe,EAAA,eAAA;EACf,IAAA,YAAY,EAAA,YAAA;EACZ,IAAA,QAAQ,EAAA,QAAA;EACR,IAAA,MAAM,EAAA,MAAA;EACN,IAAA,QAAQ,EAAA,QAAA;EACR,IAAA,cAAc,EAAA,cAAA;EACd,IAAA,aAAa,EAAA,aAAA;EACb,IAAA,OAAO,EAAA,OAAA;EACP,IAAA,gBAAgB,EAAA,gBAAA;EAChB,IAAA,gBAAgB,EAAA,gBAAA;EAChB,IAAA,aAAa,EAAA,aAAA;EACb,IAAA,oBAAoB,EAAA,oBAAA;EACpB,IAAA,YAAY,EAAA,YAAA;EACZ,IAAA,eAAe,EAAA,eAAA;EACf,IAAA,sBAAsB,EAAA,sBAAA;EACtB,IAAA,sBAAsB,EAAA,sBAAA;EACtB,IAAA,qBAAqB,EAAA,qBAAA;EACrB,IAAA,uBAAuB,EAAA,uBAAA;EACvB,IAAA,kBAAkB,EAAA,kBAAA;EAClB,IAAA,gCAAgC,EAAA,gCAAA;GACjC;;EChZK,SAAU,SAAS,CAAI,IAAO,EAAA;MAChC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EAC5C,CAAC;WAEe,YAAY,GAAA;EACxB,IAAA,IAAM,SAAS,GAAG,MAAM,CAAC,MAAa,CAAC;EAEvC,IAAA,IAAI,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,UAAU,EAAE;EACvB,QAAA,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC;EACjC,KAAA;;EAGD,IAAA,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAA,CAAC,EAAA;UAC5D,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACjC,QAAA,IAAM,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;EAC1C,QAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC1B,KAAC,CAAC,CAAC;EACP,CAAC;WAEe,WAAW,CACzB,IAA8B,EAC9B,QAA4B,EAC5B,KAA6B,EAAA;EAD7B,IAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAA4B,GAAA,SAAA,CAAA,EAAA;EAC5B,IAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAA6B,GAAA,KAAA,CAAA,EAAA;MAE7B,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;EAAE,QAAA,OAAO,EAAE,CAAC;MAE7C,OAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAI,IAAI,CAAE,CAAA,CAAA,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;;EACzB,QAAA,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAG,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;EAChC,QAAA,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAG,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;EAEhC,QAAA,IAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;EAE3B,QAAA,OAAO,KAAK,KAAK,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;EAC5C,KAAC,CAAC,CAAC;EACL;;ECvBA,IAAA,4BAAA,kBAAA,YAAA;EAKE,IAAA,SAAA,4BAAA,CACS,SAAqD,EAC5B,UAAe,EACvC,SAAuB,EAAA;EAFxB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAA4C;EAC5B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;EACvC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;EAPjC,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAc,CAAA,cAAA,GAAgC,IAAI,CAAC;OAM9C;EAEL,IAAA,4BAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;EACE,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,EAAE,CAAC;EACtD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,EAAE,CAAC;EACtD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,CAAC;OAClE,CAAA;MAED,4BAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,QAAgB,EAAA;EAClC,QAAA,IAAI,CAAC,QAAQ;EAAE,YAAA,OAAO,IAAI,CAAC;UAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;cAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;EAClD,SAAA;UACD,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;EAC1C,QAAA,IAAM,UAAU,GAAG,gCAAiC,GAAA,OAAS,CAAC;EAC9D,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;UACtG,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;OAClD,CAAA;MAED,4BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,QAAgB,EAAA;UACzB,IAAI,OAAO,GAAG,IAAI,CAAC;EACnB,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;cACpC,OAAO,GAAG,2KAA2K,CAAC;EACvL,SAAA;EAAM,aAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;cACxC,OAAO,GAAG,gCAAgC,CAAC;EAC5C,SAAA;EACD,QAAA,IAAI,OAAO,EAAE;cACX,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;EACtC,YAAA,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;EACrB,gBAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;EACjB,aAAA;EACF,SAAA;EACD,QAAA,OAAO,IAAI,CAAC;OACb,CAAA;EAED,IAAA,4BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;;;EA9CU,4BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,4BAA4B,yDAO7BC,kBAAe,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAAF,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAPd,4BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,2ECXzC,o2EAwCc,EAAA,MAAA,EAAA,CAAA,09XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAG,aAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHD7BD,4BAA4B,EAAA,UAAA,EAAA,CAAA;oBALxCC,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,0BAA0B;EACpC,oBAAA,WAAW,EAAE,uCAAuC;sBACpD,SAAS,EAAE,CAAC,uCAAuC,CAAC;mBACrD,CAAA;;;gCAQIC,SAAM;iCAACL,kBAAe,CAAA;;;;EET3B,IAAA,wBAAA,kBAAA,YAAA;MAIE,SACS,wBAAA,CAAA,SAAiD,EACxB,UAAmD,EAAA;EAD5E,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAwC;EACxB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyC;EAJrF,QAAA,IAAS,CAAA,SAAA,GAAiB,EAAE,CAAC;OAKxB;EAEL,IAAA,wBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;UACE,IAAI,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAK,EAAA,OAAA,CAAC,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,KAAK,KAAI,EAAE,EAAE,aAAa,CAAC,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,KAAK,KAAI,EAAE,CAAC,CAA9C,EAA8C,CAAC,CAAC;UAC3G,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;OACpC,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAa,KAAa,EAAE,KAAiB,EAAA;EAC3C,QAAA,OAAO,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,SAAS,KAAI,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;OACvE,CAAA;;;EAhBU,wBAAA,CAAA,IAAA,GAAAD,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,wBAAwB,yDAMzBC,kBAAe,EAAA,CAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EANd,wBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,uECTrC,igDAwBM,EAAA,MAAA,EAAA,CAAA,09XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAG,aAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDfO,wBAAwB,EAAA,UAAA,EAAA,CAAA;oBALpCG,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,sBAAsB;EAChC,oBAAA,WAAW,EAAE,mCAAmC;sBAChD,SAAS,EAAE,CAAC,mCAAmC,CAAC;mBACjD,CAAA;;;gCAOIC,SAAM;iCAACL,kBAAe,CAAA;;;;EEN3B,IAAA,2BAAA,kBAAA,YAAA;MAUE,SACS,2BAAA,CAAA,SAAoD,EAC3B,IAW/B,EAAA;EAZM,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAA2C;EAC3B,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAWnC;EAhBH,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;EAChB,QAAA,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;UAiBhB,IAAI,CAAC,KAAK,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,KAAK,KAAI,EAAE,CAAC;UAC/B,IAAI,CAAC,OAAO,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,KAAI,EAAE,CAAC;UACnC,IAAI,CAAC,IAAI,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,KAAI,EAAE,CAAC;UAC7B,IAAI,CAAC,YAAY,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,YAAY,KAAI,EAAE,CAAC;UAC7C,IAAI,CAAC,WAAW,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,WAAW,KAAI,EAAE,CAAC;UAC3C,IAAI,CAAC,UAAU,GAAG,CAAC,EAAC,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,UAAU,CAAA,CAAC;OACtC;EAED,IAAA,2BAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;UAAA,IAkBC,KAAA,GAAA,IAAA,CAAA;;UAjBC,IAAI,MAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE;cAC5B,IAAI,IAAI,CAAC,OAAO,EAAE;kBAChB,OAAO;EACR,aAAA;EACD,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACpB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EACvB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;EAClC,gBAAA,IAAI,EAAE,YAAA,EAAM,OAAA,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,EAAA;kBACtC,KAAK,EAAE,UAAC,GAAQ,EAAA;;EAEd,oBAAA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACrB,oBAAA,KAAI,CAAC,YAAY,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAK,EAAE,CAAC;mBAC1E;EACF,aAAA,CAAC,CAAC;cACH,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;OAC5B,CAAA;EAED,IAAA,2BAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;EACE,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;OAC7B,CAAA;;;EAvDU,2BAAA,CAAA,IAAA,GAAAD,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,2BAA2B,yDAY5BC,kBAAe,EAAA,CAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAZd,2BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,0ECTxC,wwCAiBA,EAAA,MAAA,EAAA,CAAA,y7XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDRa,2BAA2B,EAAA,UAAA,EAAA,CAAA;oBALvCG,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,yBAAyB;EACnC,oBAAA,WAAW,EAAE,sCAAsC;sBACnD,SAAS,EAAE,CAAC,sCAAsC,CAAC;mBACpD,CAAA;;;gCAaIC,SAAM;iCAACL,kBAAe,CAAA;;;;EErB3B,IAAM,0BAA0B,GAAG,qCAAqC,CAAC;EACzE,IAAM,yCAAyC,GAAG,oDAAoD,CAAC;EAEhG,IAAM,qBAAqB,GAAG;MACjC,WAAW,EAAE,yCAAyC,GAAG,sCAAsC;GAClG,CAAA;EAEM,IAAM,iBAAiB,GAAG;MAC7B,gBAAgB,EAAE,0BAA0B,GAAG,+BAA+B;GACjF,CAAA;EAGM,IAAM,yBAAyB,GAAG;MACrC,0BAA0B,EAAE,0BAA0B,GAAG,6BAA6B;MACtF,cAAc,EAAE,0BAA0B,GAAG,mBAAmB;MAChE,aAAa,EAAE,0BAA0B,GAAG,mBAAmB;MAC/D,oBAAoB,EAAE,0BAA0B,GAAG,8BAA8B;MACjF,iBAAiB,EAAE,0BAA0B,GAAG,+BAA+B;MAC/E,iBAAiB,EAAE,0BAA0B,GAAG,gHAAgH;MAChK,gBAAgB,EAAE,0BAA0B,GAAG,uGAAuG;MACtJ,wBAAwB,EAAE,0BAA0B,GAAG,6BAA6B;MACpF,gBAAgB,EAAE,0BAA0B,GAAG,6CAA6C;GAC/F,CAAA;EAEM,IAAM,yBAAyB,GAAG;MACrC,wBAAwB,EAAE,0BAA0B,GAAG,8BAA8B;MACrF,0BAA0B,EAAE,0BAA0B,GAAG,mCAAmC;MAC5F,sBAAsB,EAAE,0BAA0B,GAAG,uCAAuC;MAC5F,2BAA2B,EAAE,0BAA0B,GAAG,2CAA2C;MACrG,gBAAgB,EAAE,0BAA0B,GAAG,kEAAkE;MACjH,cAAc,EAAE,0BAA0B,GAAG,0BAA0B;MACvE,+BAA+B,EAAE,0BAA0B,GAAG,oCAAoC;MAClG,+BAA+B,EAAE,0BAA0B,GAAG,oCAAoC;MAClG,iBAAiB,EAAE,0BAA0B,GAAG,qCAAqC;MACrF,WAAW,EAAE,0BAA0B,GAAG,0CAA0C;MACpF,sBAAsB,EAAE,0BAA0B,GAAG,iEAAiE;MACtH,oBAAoB,EAAE,0BAA0B,GAAG,+DAA+D;MAClH,qBAAqB,EAAE,0BAA0B,GAAG,6DAA6D;MACjH,4BAA4B,EAAE,0BAA0B,GAAG,wCAAwC;GACtG;;EClCD,IAAA,sBAAA,kBAAA,YAAA;EAGE,IAAA,SAAA,sBAAA,CACU,IAAgB,EAAA;;EAAhB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;UAHT,IAAA,CAAA,aAAa,GAAG,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;OAIlE;EAEG,IAAA,sBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;UACN,OAAO,IAAIM,gBAAW,EAAE,CAAC,GAAG,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;OACxE,CAAA;MAED,sBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,MAAW,EAAA;;EACtB,QAAA,IAAI,KAAK,GAAG,IAAIC,eAAU,EAAE,CAAC;;cAC7B,KAAkB,IAAA,EAAA,GAAA,QAAA,CAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;EAAlC,gBAAA,IAAM,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;EACZ,gBAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EACrC,aAAA;;;;;;;;;EACD,QAAA,OAAO,KAAK,CAAC;OACd,CAAA;MAED,sBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,QAAgB,EAAA;EAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,IAAI,CAAC,aAAa,GAAA,6BAAA,GAA8B,QAAQ,GAAA,OAAO,CAAC,CAAC;OAC1F,CAAA;MAED,sBAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,MAAW,EAAA;EAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACC,yBAAqC,CAAC,wBAAwB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAClJ,CAAA;MAED,sBAA0B,CAAA,SAAA,CAAA,0BAAA,GAA1B,UAA2B,UAAkB,EAAA;EAC3C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,0BAA0B,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,EAAA,UAAA,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC5J,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,UAAuB,UAAe,EAAE,WAAgB,EAAA;EACtD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,EAAA,UAAA,EAAE,WAAW,EAAA,WAAA,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACrK,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,2BAA2B,GAA3B,UAA4B,UAAe,EAAE,WAAgB,EAAA;EAC3D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,2BAA2B,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,EAAA,UAAA,EAAE,WAAW,EAAA,WAAA,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC1K,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,iBAA2B,EAAE,MAAW,EAAA;EACvD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC9J,CAAA;MAED,sBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,MAAW,EAAA;EACxB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACxI,CAAA;MAED,sBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,OAAY,EAAA;UAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,+BAA+B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACvI,CAAA;MAED,sBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,OAAY,EAAA;UAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAACA,yBAAqC,CAAC,+BAA+B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACxI,CAAA;MAED,sBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,KAAU,EAAA;UAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,iBAAiB,GAAG,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACvH,CAAA;MAED,sBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,OAAY,EAAA;UACtB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAACA,yBAAqC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACpH,CAAA;MAED,sBAAsB,CAAA,SAAA,CAAA,sBAAA,GAAtB,UAAuB,UAAkB,EAAA;UACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAChK,CAAA;MAED,sBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,UAAkB,EAAA;UACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC9J,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,UAAsB,UAAkB,EAAE,MAAW,EAAA;UACnD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACtL,CAAA;MAED,sBAA4B,CAAA,SAAA,CAAA,4BAAA,GAA5B,UAA6B,SAAiB,EAAA;UAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,4BAA4B,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAChK,CAAA;MAED,sBAA0B,CAAA,SAAA,CAAA,0BAAA,GAA1B,UAA2B,eAAuB,EAAA;EAChD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACC,qBAAiC,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,eAAe,EAAA,eAAA,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC9I,CAAA;;;4IAjFU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,eAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gJAAtB,sBAAsB,EAAA,CAAA,CAAA;oHAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;oBADlCW,aAAU;;;ECQX,IAAA,yBAAA,kBAAA,YAAA;EAmBE,IAAA,SAAA,yBAAA,CACS,SAAkD,EACjD,sBAA8C,EACtB,IAK/B,EAAA;EAPM,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyC;EACjD,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EACtB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAKnC;EArBH,QAAA,IAAQ,CAAA,QAAA,GAA+B,EAAE,CAAC;EAC1C,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;EAChB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;EAChB,QAAA,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;EAClB,QAAA,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;EACJ,QAAA,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;EACA,QAAA,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;;EAG3B,QAAA,IAAe,CAAA,eAAA,GAA8C,EAAE,CAAC;EAChE,QAAA,IAAW,CAAA,WAAA,GAAyC,EAAE,CAAC;EAC/C,QAAA,IAAW,CAAA,WAAA,GAAqD,EAAE,CAAC;UAYzE,IAAI,CAAC,WAAW,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,WAAW,KAAI,EAAE,CAAC;UAC3C,IAAI,CAAC,WAAW,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,WAAW,KAAI,EAAE,CAAC;UAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,UAAoB,CAAC;UAC7C,IAAI,CAAC,YAAY,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,YAAY,KAAI,EAAE,CAAC;OAC9C;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;UACE,IAAI,CAAC,YAAY,EAAE,CAAC;OACrB,CAAA;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;UAAA,IAqBC,KAAA,GAAA,IAAA,CAAA;UApBC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;EACpC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EAAE,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EAAE,aAAA;cAC9C,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACpB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACrB,QAAA,IAAI,CAAC,sBAAsB;eACxB,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;EAC7G,aAAA,SAAS,CAAC;cACT,IAAI,EAAE,UAAC,GAAQ,EAAA;;EACb,gBAAA,KAAI,CAAC,QAAQ,GAAO,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAI,CAAC,QAAQ,CAAA,CAAA,EAAA,MAAA,EAAM,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAI,EAAE,GAAE,CAAC;kBAC5D,KAAI,CAAC,aAAa,GAAG,CAAA,EAAA,GAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,aAAa,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;EAChE,gBAAA,KAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;EAC9B,gBAAA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;eACtB;EACD,YAAA,KAAK,EAAE,YAAA;EACL,gBAAA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACrB,gBAAA,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;eACrB;EACF,SAAA,CAAC,CAAC;OACN,CAAA;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;UACE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;cAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;cACZ,IAAI,CAAC,YAAY,EAAE,CAAC;EACrB,SAAA;OACF,CAAA;;MAGD,yBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,OAAiC,EAAA;UAA5C,IAoBC,KAAA,GAAA,IAAA,CAAA;UAnBC,IAAM,EAAE,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,EAAE,CAAC;UACvB,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,QAAQ,EAAE;cACzF,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;UACjC,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;cACrE,IAAI,EAAE,UAAC,GAAQ,EAAA;EACb,gBAAA,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EACnC,oBAAA,KAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;sBAC/B,OAAO;EACR,iBAAA;EACD,gBAAA,KAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAC/B,gBAAA,KAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;eACjC;cACD,KAAK,EAAE,UAAC,GAAQ,EAAA;;EAEd,gBAAA,KAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,MAAM,MAAK,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC;eAChE;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,MAAc,EAAE,OAAiC,EAAA;;EAChE,QAAA,OAAO,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,MAAM,CAAC;OAC9B,CAAA;MAED,yBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAa,EAAA;EACxB,QAAA,OAAO,KAAK,CAAC;OACd,CAAA;;MAGD,yBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,MAAwB,EAAA;;EACvC,QAAA,IAAM,EAAE,GAAG,CAAA,EAAA,GAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,CAAC,CAAC;UAC5B,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;cAC7B,IAAI;EACF,gBAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,aAAa,IAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;EACxF,aAAA;EAAC,YAAA,OAAM,EAAA,EAAA;EACN,gBAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;EAC7B,aAAA;EACF,SAAA;EACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;OAC7B,CAAA;;MAGD,yBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAgB,EAAA;UAC7B,IAAI,OAAO,IAAI,IAAI,EAAE;EAAE,YAAA,OAAO,EAAE,CAAC;EAAE,SAAA;UACnC,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;EACnC,QAAA,IAAM,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC;EACvB,QAAA,OAAO,CAAC,GAAG,CAAC,GAAM,CAAC,GAAK,IAAA,GAAA,CAAC,MAAG,GAAM,CAAC,MAAG,CAAC;OACxC,CAAA;;MAGD,yBAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,WAAoB,EAAA;UAC3B,OAAO,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;OACzC,CAAA;EAED;;;;EAIG;MACH,yBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,MAAe,EAAA;UAC9B,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,WAAW,EAAE;EAClC,YAAA,KAAK,QAAQ,EAAE,OAAO,iDAAiD,CAAC;EACxE,YAAA,KAAK,YAAY,EAAE,OAAO,6CAA6C,CAAC;EACxE,YAAA,KAAK,WAAW,EAAE,OAAO,6CAA6C,CAAC;EACvE,YAAA,KAAK,QAAQ,EAAE,OAAO,4CAA4C,CAAC;EACnE,YAAA,KAAK,OAAO,CAAC;EACb,YAAA,SAAS,OAAO,8CAA8C,CAAC;EAChE,SAAA;OACF,CAAA;;MAGD,yBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,IAAa,EAAA;UAC1B,IAAI,CAAC,IAAI,EAAE;EAAE,YAAA,OAAO,EAAE,CAAC;EAAE,SAAA;UACzB,OAAO,IAAI,CAAC,WAAW,CAAC,sCAAsC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;OAChF,CAAA;;MAGD,yBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAa,EAAA;UAC3B,IAAI,CAAC,IAAI,EAAE;EAAE,YAAA,OAAO,EAAE,CAAC;EAAE,SAAA;UACzB,OAAO,IAAI,CAAC,WAAW,CAAC,uCAAuC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;OACjF,CAAA;;MAGD,yBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,IAAa,EAAA;UACxB,IAAI,CAAC,IAAI,EAAE;EAAE,YAAA,OAAO,KAAK,CAAC;EAAE,SAAA;EAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;EAClF,eAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;EACnF,eAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;OAClC,CAAA;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,KAAK,GAAL,YAAA;EACE,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;OACxB,CAAA;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;;;EAxKU,yBAAA,CAAA,IAAA,GAAAX,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,yBAAyB,4FAsB1BC,kBAAe,EAAA,CAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAtBd,yBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,wECZtC,sleAgOA,EAAA,MAAA,EAAA,CAAA,4qYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAI,aAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAQ,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAR,aAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAR,aAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAR,aAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,eAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,MAAA,EAAAA,eAAA,CAAA,QAAA,EAAA,UAAA,EAAAA,eAAA,CAAA,YAAA,EAAA,EAAA,CAAA,CAAA;oHDpNa,yBAAyB,EAAA,UAAA,EAAA,CAAA;oBALrCP,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,uBAAuB;EACjC,oBAAA,WAAW,EAAE,oCAAoC;sBACjD,SAAS,EAAE,CAAC,oCAAoC,CAAC;mBAClD,CAAA;;;gCAuBIC,SAAM;iCAACL,kBAAe,CAAA;;;;EExB3B,IAAA,sBAAA,kBAAA,YAAA;EAEI,IAAA,SAAA,sBAAA,GAAA;OAAiB;EAEjB;;;;EAIG;EACH,IAAA,sBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,UACI,gBAA8C,EAC9C,cAAuC,EACvC,iBAAgE,EAChE,YAAgD,EAChD,MAAc,EACd,oBAAiC,EAAA;EAAjC,QAAA,IAAA,oBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,oBAAiC,GAAA,EAAA,CAAA,EAAA;UAEjC,gBAAgB,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;EAC3E,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;;EAErH,QAAA,IAAI,oBAAoB,EAAE;EACtB,YAAA,OAAO,CAAC,UAAU,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,OAAO,CAAC,UAAU,IAAI,EAAE,MAAG,oBAAoB,sBAAA,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAA,CAAE,CAAC;EACpH,SAAA;EACD,QAAA,OAAO,OAAO,CAAC;OAClB,CAAA;MAED,sBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UACI,gBAA8C,EAC9C,cAAuC,EACvC,iBAAgE,EAChE,YAAgD,EAChD,MAAc,EAAA;UALlB,IAkFC,KAAA,GAAA,IAAA,CAAA;;EA3EG,QAAA,IAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;EACnD,QAAA,cAAc,CAAC,sBAAsB,GAAG,EAAE,CAAC;EAE3C,QAAA,CAAA,EAAA,GAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,OAAY,EAAA;;cAC3D,IAAM,uBAAuB,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAA1B,EAA0B,CAAC,CAAC;EAC/F,YAAA,IAAI,uBAAuB,EAAE;EACzB,gBAAA,IAAM,WAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC;kBAEpD,CAAA,EAAA,GAAA,OAAO,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,eAAgC,EAAA;;EACnE,oBAAA,IAAM,IAAI,GAAG,YAAY,CAAC,CAAA,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,UAAU,KAAI,CAAC,CAAC,CAAC,CAAC;EAC7D,oBAAA,IAAI,CAAC,IAAI;0BAAE,OAAO;EAElB,oBAAA,IAAM,UAAU,GAAG,KAAI,CAAC,sBAAsB,CAAC,WAAS,EAAE,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,EAAE,EAAE,YAAY,CAAC,CAAC;EAClF,oBAAA,IAAM,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;EAE3D,oBAAA,IAAI,mBAAmB,EAAE;0BACrB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;0BACpD,OAAO,MAAM,CAAC,aAAa,CAAC;EAE5B,wBAAA,IAAM,WAAW,GAAG,CAAA,EAAA,GAAA,gBAAgB,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAM,IAAI,IAAA,EAAA,CAAA,CACzE,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,eAAe,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,eAAe,CAAA,EAAA,CACrF,CAAC;EAEF,wBAAA,KAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;EAE3C,wBAAA,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,uBAAuB,CAAC,MAAM,KAAK,CAAC;8BAAE,OAAO;EAC1G,wBAAA,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,sBAAsB,IAAI,MAAM,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC;8BAAE,OAAO;EAExG,wBAAA,CAAA,EAAA,GAAA,cAAc,CAAC,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,iCACpC,MAAM,CAAA,EAAA,EACT,EAAE,EAAE,CAAA,WAAW,aAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,EAAE,KAAI,CAAC,EACxB,QAAQ,EAAE,IAAI,EACd,eAAe,iBAAA,EACf,MAAM,EAAA,MAAA,EACN,KAAK,EAAE,CAAA,CAAA,EAAA,GAAA,WAAS,CAAC,GAAG,CAAI,IAAI,CAAC,EAAE,GAAQ,QAAA,CAAC,0CAAE,KAAK,KAAI,IAAI,GAAG,MAAM,CAAC,MAAA,WAAS,CAAC,GAAG,CAAI,IAAI,CAAC,EAAE,GAAA,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,GAAG,IAAI,IACnH,CAAC;0BAEH,IAAI,MAAA,UAAU,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EACpC,4BAAA,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,UAAC,SAAc,EAAA;;kCAC9C,IAAM,QAAQ,GAAG,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,mBAAmB,CAAC;kCAChD,IAAM,YAAY,GAAG,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,oBAAoB,CAAC;EACrD,gCAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY;sCAAE,OAAO;kCAEvC,IAAI,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;kCACtD,OAAO,mBAAmB,CAAC,aAAa,CAAC;EAEzC,gCAAA,IAAM,gBAAgB,GAAG,CAAA,EAAA,GAAA,gBAAgB,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAM,EAAA,EAC1E,OAAA,CAAC,CAAC,eAAe,KAAK,YAAY,CAAC,EAAE;sCACrC,CAAC,CAAC,6BAA6B,KAAK,eAAe,CAAC,UAAU,CAAA,EAAA,CACjE,CAAC;EAEF,gCAAA,KAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;EAE7D,gCAAA,IAAI,CAAC,gBAAgB,IAAI,mBAAmB,CAAC,uBAAuB,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,MAAM,KAAK,CAAC;sCAAE,OAAO;EACzI,gCAAA,IAAI,CAAC,gBAAgB,IAAI,mBAAmB,CAAC,sBAAsB,IAAI,mBAAmB,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC;sCAAE,OAAO;EAEvI,gCAAA,CAAA,EAAA,GAAA,cAAc,CAAC,sBAAsB,0CAAE,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACvC,eAAe,EAAE,YAAY,CAAC,EAAE,EAChC,6BAA6B,EAAE,eAAe,CAAC,UAAU,EACzD,oBAAoB,EAAE,SAAS,CAAC,cAAc,EAAA,EAC3C,mBAAmB,CACtB,EAAA,EAAA,EAAE,EAAE,CAAA,gBAAgB,aAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,EAAE,KAAI,CAAC,EAC7B,QAAQ,EAAE,IAAI,EACd,eAAe,EAAA,eAAA,EACf,MAAM,EAAA,MAAA,EACN,KAAK,EAAE,CAAA,CAAA,EAAA,GAAA,WAAS,CAAC,GAAG,CAAI,YAAY,CAAC,EAAE,WAAQ,CAAC,0CAAE,KAAK,KAAI,IAAI,GAAG,MAAM,CAAC,MAAA,WAAS,CAAC,GAAG,CAAI,YAAY,CAAC,EAAE,GAAQ,QAAA,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,GAAG,IAAI,IACnI,CAAC;EACP,6BAAC,CAAC,CAAC;EACN,yBAAA;EACJ,qBAAA;EACL,iBAAC,CAAC,CAAC;EACN,aAAA;EACL,SAAC,CAAC,CAAC;EAEH,QAAA,OAAO,cAAc,CAAC;OACzB,CAAA;EAEO,IAAA,sBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,MAAW,EAAE,WAAgB,EAAA;EAClD,QAAA,IAAI,CAAC,WAAW;cAAE,OAAO;EAEzB,QAAA,IAAI,MAAM,CAAC,wBAAwB,IAAI,WAAW,CAAC,wBAAwB,EAAE;cACzE,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,UAAC,KAAU,EAAE,GAAW,EAAA;EAC5D,gBAAA,IAAI,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE;sBAC3C,KAAK,CAAC,EAAE,GAAG,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;EAC3D,iBAAA;EACL,aAAC,CAAC,CAAC;EACN,SAAA;EACD,QAAA,IAAI,MAAM,CAAC,uBAAuB,IAAI,WAAW,CAAC,uBAAuB,EAAE;cACvE,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAC,KAAU,EAAE,GAAW,EAAA;EAC3D,gBAAA,IAAM,YAAY,GAAG,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAC,KAAU,EAAI,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CACzE,OAAA,CAAA,CAAA,EAAA,GAAA,MAAA,KAAK,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,OAAK,CAAA,EAAA,GAAA,MAAA,KAAK,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAA,EAAA,CACxE,CAAC;EACF,gBAAA,IAAI,YAAY,EAAE;EACd,oBAAA,KAAK,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;EAC9B,iBAAA;EACL,aAAC,CAAC,CAAC;EAEH,YAAA,WAAW,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAC,KAAU,EAAA;EACnD,gBAAA,IAAM,WAAW,GAAG,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAC,KAAU,EAAI,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CACnE,OAAA,CAAA,CAAA,EAAA,GAAA,MAAA,KAAK,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,OAAK,CAAA,EAAA,GAAA,MAAA,KAAK,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAA,EAAA,CACxE,CAAC;kBACF,IAAI,CAAC,WAAW,EAAE;sBACd,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC5B,KAAK,CAAA,EAAA,EACR,QAAQ,EAAE,KAAK,EAAA,CAAA,CACjB,CAAC;EACN,iBAAA;EAAM,qBAAA;EACH,oBAAA,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC/B,iBAAA;EACL,aAAC,CAAC,CAAC;EACN,SAAA;EAED,QAAA,IAAI,MAAM,CAAC,sBAAsB,IAAI,WAAW,CAAC,sBAAsB,EAAE;EACrE,YAAA,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAC,KAAU,EAAA;kBAC7C,IAAM,YAAY,GAAG,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,KAAU,EAAA,EACpE,OAAA,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAA,EAAA,CACxB,CAAC;EACF,gBAAA,IAAI,YAAY,EAAE;EACd,oBAAA,KAAK,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;EAC9B,iBAAA;EACL,aAAC,CAAC,CAAC;EAEH,YAAA,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAC,KAAU,EAAA;kBAClD,IAAM,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,KAAU,EAAA,EAC9D,OAAA,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAA,EAAA,CACxB,CAAC;kBACF,IAAI,CAAC,WAAW,EAAE;sBACd,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC3B,KAAK,CAAA,EAAA,EACR,QAAQ,EAAE,KAAK,EAAA,CAAA,CACjB,CAAC;EACN,iBAAA;EAAM,qBAAA;EACH,oBAAA,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC/B,iBAAA;EACL,aAAC,CAAC,CAAC;EACN,SAAA;OACJ,CAAA;EAEO,IAAA,sBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,UAAuB,SAAc,EAAE,MAAmB,EAAE,YAAiB,EAAA;UAA7E,IA0HP,KAAA,GAAA,IAAA,CAAA;UA1H8C,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,UAAkB,CAAC,CAAA,EAAA;;EAC9D,QAAA,IAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;EAC7C,QAAA,IAAI,CAAC,eAAe;cAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;UAEhF,IAAI,mBAAmB,GAAQ,EAAE,CAAC;UAClC,IAAI,eAAe,GAAQ,EAAE,CAAC;UAC9B,IAAM,SAAS,GAAG,CAAA,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,WAAW,IAAG,SAAS,CAAC,WAAW,EAAE,IAAI,CAAA,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,KAAK,KAAI,EAAE,CAAC,CAAC;EAC9F,QAAA,IAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;UAE9B,IAAM,KAAK,GAAG,CAAA,EAAA,GAAA,eAAe,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC;;;;UAMjD,IAAI,KAAK,KAAK,yBAAyB,EAAE;cACrC,IAAM,cAAc,GAAG,CAAA,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,kBAAkB,KAAI,EAAE,CAAC;cACjE,IAAM,gBAAc,GAAG,CAAA,cAAc,KAAd,IAAA,IAAA,cAAc,uBAAd,cAAc,CAAE,IAAI,CAAC,UAAC,CAAM,YAAK,OAAA,CAAA,MAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,OAAO,0CAAE,EAAE,OAAK,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,EAAE,CAAA,CAAA,EAAA,CAAC,KAAI,EAAE,CAAC;EAE1F,YAAA,IAAI,gBAAc,EAAE;EAChB,gBAAA,mBAAmB,GAAG;EAClB,oBAAA,QAAQ,EAAE,gBAAc,KAAA,IAAA,IAAd,gBAAc,KAAd,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAc,CAAE,OAAO;EACjC,oBAAA,aAAa,EAAE,gBAAc;mBAChC,CAAC;kBAEF,IAAI,gBAAc,CAAC,eAAe,EAAE;sBAChC,IAAM,UAAU,GAAG,SAAS,CAAI,MAAM,iBAAY,gBAAc,CAAC,EAAI,CAAC,CAAC;EACvE,oBAAA,IAAI,UAAU,EAAE;EACZ,wBAAA,mBAAmB,CAAC,OAAO,GAAG,UAAU,CAAC;EAC5C,qBAAA;EACJ,iBAAA;EAED,gBAAA,IAAM,YAAY,GAAG,gBAAc,CAAC,iBAAiB,IAAI,EAAE,CAAC;EAC5D,gBAAA,YAAY,CAAC,OAAO,CAAC,UAAC,OAAe,EAAA;;EACjC,oBAAA,IAAM,aAAa,GAAG,KAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;EACpF,oBAAA,IAAI,aAAa,KAAb,IAAA,IAAA,aAAa,uBAAb,aAAa,CAAE,mBAAmB,EAAE;0BACpC,eAAe,CAAC,IAAI,CAAC;8BACjB,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;EACtD,4BAAA,oBAAoB,EAAE,YAAY,CAAC,OAAO,CAAC;EAC3C,4BAAA,cAAc,EAAE,gBAAc,CAAC,OAAO,CAAC,EAAE;EAC5C,yBAAA,CAAC,CAAC;0BACH,IAAI,MAAA,aAAa,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;8BACvC,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;EAC3E,yBAAA;EACJ,qBAAA;EACL,iBAAC,CAAC,CAAC;EACN,aAAA;EAAM,iBAAA;kBACH,mBAAmB,GAAG,IAAI,CAAC;EAC9B,aAAA;EACJ,SAAA;EAAM,aAAA,IAAI,KAAK,KAAK,4BAA4B,IAAI,KAAK,KAAK,0BAA0B,EAAE;EACvF,YAAA,IAAM,gBAAc,GAAG,eAAe,CAAC,kBAAkB,IAAI,EAAE,CAAC;cAChE,IAAM,yBAAuB,GAAU,EAAE,CAAC;EAE1C,YAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;EAE7D,YAAA,QAAQ,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAE,KAAa,EAAA;kBACrC,IAAM,cAAc,GAAG,gBAAc,CAAC,IAAI,CAAC,UAAC,CAAM,EAAA,EAAI,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,MAAA,CAAC,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAK,GAAG,CAAC,EAAE,CAAA,EAAA,CAAC,CAAC;EACjF,gBAAA,IAAI,cAAc,EAAE;EAChB,oBAAA,IAAM,GAAG,GAAQ;EACb,wBAAA,EAAE,EAAE,CAAC;EACL,wBAAA,aAAa,EAAE,cAAc;uBAChC,CAAC;sBAEF,IAAI,KAAK,KAAK,0BAA0B,EAAE;EACtC,wBAAA,GAAG,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;EAC3B,qBAAA;sBAED,IAAI,cAAc,CAAC,eAAe,EAAE;0BAChC,IAAM,UAAU,GAAG,SAAS,CAAI,MAAM,iBAAY,cAAc,CAAC,EAAI,CAAC,CAAC;EACvE,wBAAA,IAAI,UAAU,EAAE;EACZ,4BAAA,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC;EAC5B,yBAAA;EACJ,qBAAA;EAED,oBAAA,yBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAElC,oBAAA,IAAM,YAAY,GAAG,cAAc,CAAC,iBAAiB,IAAI,EAAE,CAAC;EAC5D,oBAAA,YAAY,CAAC,OAAO,CAAC,UAAC,OAAe,EAAA;;EACjC,wBAAA,IAAM,aAAa,GAAG,KAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;EACpF,wBAAA,IAAI,aAAa,KAAb,IAAA,IAAA,aAAa,uBAAb,aAAa,CAAE,mBAAmB,EAAE;8BACpC,eAAe,CAAC,IAAI,CAAC;kCACjB,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;EACtD,gCAAA,oBAAoB,EAAE,YAAY,CAAC,OAAO,CAAC;EAC3C,gCAAA,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE;EAC5C,6BAAA,CAAC,CAAC;8BACH,IAAI,MAAA,aAAa,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;kCACvC,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;EAC3E,6BAAA;EACJ,yBAAA;EACL,qBAAC,CAAC,CAAC;EACN,iBAAA;EACL,aAAC,CAAC,CAAC;EAEH,YAAA,mBAAmB,GAAG,EAAE,uBAAuB,EAAA,yBAAA,EAAE,CAAC;EACrD,SAAA;eAAM,IAAI,KAAK,KAAK,2BAA2B,EAAE;cAC9C,IAAM,wBAAsB,GAAU,EAAE,CAAC;EAEzC,YAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;EAC7D,YAAA,QAAQ,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAA;EACtB,gBAAA,wBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACrC,aAAC,CAAC,CAAC;EAEH,YAAA,mBAAmB,GAAG,EAAE,sBAAsB,EAAA,wBAAA,EAAE,CAAC;EACpD,SAAA;EAAM,aAAA;cACH,IAAI,YAAY,GAAG,GAAG,CAAC;EACvB,YAAA,IAAI,KAAK,KAAK,2BAA2B,IAAI,GAAG,EAAE;EAC9C,gBAAA,IAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;kBAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;EAC3B,oBAAA,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;EACxC,iBAAA;EACJ,aAAA;EACD,YAAA,mBAAmB,GAAG;EAClB,gBAAA,wBAAwB,EAAE;EACtB,oBAAA;EACI,wBAAA,EAAE,EAAE,CAAC;EACL,wBAAA,YAAY,EAAE,YAAY;EAC7B,qBAAA;EACJ,iBAAA;eACJ,CAAC;EACL,SAAA;EAED,QAAA,OAAO,EAAE,mBAAmB,EAAA,mBAAA,EAAE,eAAe,EAAA,eAAA,EAAE,CAAC;OACnD,CAAA;MAED,sBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,gBAA8C,EAAA;;UAC5D,IAAM,SAAS,GAAU,EAAE,CAAC;UAE5B,CAAA,EAAA,GAAA,gBAAgB,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,QAAa,EAAA;cAC3D,IAAI,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,KAAK,KAAI,IAAI,EAAE;kBACzB,SAAS,CAAC,IAAI,CAAC;sBACX,oBAAoB,EAAE,QAAQ,CAAC,EAAE;EACjC,oBAAA,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;EAChC,iBAAA,CAAC,CAAC;EACN,aAAA;EACL,SAAC,CAAC,CAAC;UAEH,OAAO;EACH,YAAA,4BAA4B,EAAE,gBAAgB,KAAA,IAAA,IAAhB,gBAAgB,KAAhB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAgB,CAAE,EAAE;EAClD,YAAA,SAAS,EAAE,SAAS;WACvB,CAAC;OACL,CAAA;;;4IAvTQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;EAAtB,sBAAA,CAAA,KAAA,GAAAA,aAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,sBAAsB,cAFnB,MAAM,EAAA,CAAA,CAAA;oHAET,sBAAsB,EAAA,UAAA,EAAA,CAAA;oBAHlCW,aAAU;EAAC,YAAA,IAAA,EAAA,CAAA;EACR,oBAAA,UAAU,EAAE,MAAM;mBACrB,CAAA;;;ECND;;;;;;;;EAQG;EAIH,IAAA,iBAAA,kBAAA,YAAA;EAHA,IAAA,SAAA,iBAAA,GAAA;;EAMU,QAAA,IAAW,CAAA,WAAA,GAAsB,EAAE,CAAC;OA0F7C;EAxFC;;;;;;;;EAQG;MACH,iBAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,OAML,EAAA;UAND,IA4DC,KAAA,GAAA,IAAA,CAAA;EArDC,QAAA,OAAO,IAAIE,eAAU,CAAO,UAAC,QAAQ,EAAA;cACnC,IAAI,OAAO,GAAG,KAAK,CAAC;EAEpB,YAAA,IAAM,OAAO,GAAG,YAAA;kBACd,IAAI,CAAC,OAAO,EAAE;sBAAE,OAAO,GAAG,IAAI,CAAC;sBAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;sBAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;EAAE,iBAAA;EACzE,aAAC,CAAC;cACF,IAAM,IAAI,GAAG,UAAC,GAAQ,EAAA;kBACpB,IAAI,CAAC,OAAO,EAAE;sBAAE,OAAO,GAAG,IAAI,CAAC;EAAC,oBAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAAE,iBAAA;EACxD,aAAC,CAAC;EAEF,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;EACtB,gBAAA,IAAI,CAAC,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC,CAAC;kBACzD,OAAO;EACR,aAAA;EAED,YAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,UAAC,GAAQ,EAAA;;kBACjD,IAAI;EACF,oBAAA,IAAM,WAAW,GAAG,CAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,WAAW,MAAI,CAAA,EAAA,GAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAA,KAAI,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,OAAO,CAAA,CAAC;EAClF,oBAAA,KAAI,CAAC,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC;0BACvC,GAAG,EAAE,OAAO,CAAC,GAAG;0BAChB,SAAS,EAAE,OAAO,CAAC,SAAS;EAC5B,wBAAA,SAAS,EAAE,IAAI;EAChB,qBAAA,CAAC,CAAC;sBAEH,IAAM,aAAa,GAAG,KAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,UAAC,MAAW,EAAA;0BAC9D,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,MAAM,MAAK,QAAQ,EAAE;EAC/B,4BAAA,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;EACjC,yBAAA;+BAAM,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,MAAM,MAAK,SAAS,EAAE;EACvC,4BAAA,OAAO,EAAE,CAAC;EACX,yBAAA;EACH,qBAAC,CAAC,CAAC;sBACH,IAAM,QAAQ,GAAG,KAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,GAAQ,EAAA,EAAK,OAAA,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;;sBAGnE,IAAM,eAAe,GAAG,KAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,YAAA;;EACvD,wBAAA,CAAA,EAAA,GAAA,OAAO,CAAC,YAAY,+CAApB,OAAO,CAAA,CAAkB,SAAS,CAAC;8BACjC,IAAI,EAAE,UAAC,GAAW,EAAA;;kCAAO,IAAI;sCAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,OAAO,0CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAG,GAAG,CAAC,CAAC;EAAE,iCAAA;EAAC,gCAAA,OAAO,CAAC,EAAE,cAAc;+BAAE;8BAC7F,KAAK,EAAE,eAAqF;EAC7F,yBAAA,CAAC,CAAC;EACL,qBAAC,CAAC,CAAC;;;;sBAKH,KAAI,CAAC,WAAW,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,UAAC,EAAE,EAAK,EAAA,OAAA,OAAO,EAAE,KAAK,UAAU,CAAA,EAAA,CAAC,CAAC;;sBAGvG,OAAO,CAAC,OAAO,CAAC,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAC,GAAQ,EAAK,EAAA,OAAA,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;EACtE,iBAAA;EAAC,gBAAA,OAAO,GAAG,EAAE;sBACZ,IAAI,CAAC,GAAG,CAAC,CAAC;EACX,iBAAA;EACH,aAAC,CAAC,CAAC,KAAK,CAAC,UAAC,GAAQ,EAAA,EAAK,OAAA,IAAI,CAAC,GAAG,CAAC,CAAT,EAAS,CAAC,CAAC;EACpC,SAAC,CAAC,CAAC;OACJ,CAAA;;MAGD,iBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,EAAwB,EAAA;;UAC9B,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAG,EAAE,CAAC,CAAC;OACpC,CAAA;;EAGD,IAAA,iBAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;;UACE,IAAI;cAAE,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,kDAAI,CAAC;EAAE,SAAA;EAAC,QAAA,OAAO,CAAC,EAAE,cAAc;OACzD,CAAA;;MAGD,iBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,MAAsD,EAAA;EAAtD,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAA,EAAoC,UAAU,EAAE,IAAI,EAAE,CAAA,EAAA;;EAC5D,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA;cAAO,IAAI;EAAE,gBAAA,GAAG,EAAE,CAAC;EAAE,aAAA;EAAC,YAAA,OAAO,CAAC,EAAE,cAAc;EAAC,SAAC,CAAC,CAAC;EAC/E,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;UACtB,IAAI;cAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAG,MAAM,CAAC,CAAC;EAAE,SAAA;EAAC,QAAA,OAAO,CAAC,EAAE,cAAc;EACjE,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;OAC1B,CAAA;;;uIA5FU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAb,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;EAAjB,iBAAA,CAAA,KAAA,GAAAA,aAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;oHAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;oBAH7BW,aAAU;EAAC,YAAA,IAAA,EAAA,CAAA;EACV,oBAAA,UAAU,EAAE,MAAM;mBACnB,CAAA;;;ECND,IAAA,0BAAA,kBAAA,YAAA;EALA,IAAA,SAAA,0BAAA,GAAA;EASW,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;;EAE5C,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;EAE1B,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;EACvB,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;EACjB,QAAA,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;EAClB,QAAA,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;;EAKnB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIG,eAAY,EAAQ,CAAC;EAE/C,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;EACpB,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;EACjB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;EACjB,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;EACjB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;EACjB,QAAA,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;EAGR,QAAA,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;OAwF7B;EArFC,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAU,CAAA,SAAA,EAAA,YAAA,EAAA;;EAAd,QAAA,GAAA,EAAA,YAAA;cACE,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC;WAC9C;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;EAAnB,QAAA,GAAA,EAAA,YAAA;;EAEE,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;WAC5D;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;UACE,IAAI,IAAI,CAAC,cAAc,EAAE;cACvB,IAAI,CAAC,WAAW,EAAE,CAAC;EACpB,SAAA;OACF,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UACE,IAAI,CAAC,UAAU,EAAE,CAAC;OACnB,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UAAA,IAcC,KAAA,GAAA,IAAA,CAAA;;EAbC,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;EACtB,QAAA,CAAA,EAAA,GAAA,SAAS,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjF,CAAA,IAAI,CAAC,UAAC,MAAM,EAAA;;EACX,YAAA,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACrB,YAAA,KAAI,CAAC,WAAW,GAAG,IAAI,CAAC;cACxB,IAAI,MAAA,KAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE;kBAChC,KAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC;EAChD,aAAA;WACF,CACA,CAAA,KAAK,CAAC,YAAA;EACL,YAAA,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;cACzB,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAAC;EACrF,SAAC,CAAC,CAAC;OACN,CAAA;;EAGD,IAAA,0BAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;;UACE,IAAM,KAAK,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC;UAC3C,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC;UAC7C,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;cAC1C,OAAO;EACR,SAAA;EACD,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;EAChC,QAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;EAClC,QAAA,CAAA,EAAA,GAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;UAC7E,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;;EAEvD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;EAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;OACtB,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;EACE,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EACtB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;EACtB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;EACzB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;OACtB,CAAA;;EAGD,IAAA,0BAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;UAAA,IAoBC,KAAA,GAAA,IAAA,CAAA;UAnBC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;cACrC,OAAO;EACR,SAAA;;UAED,IAAI,CAAC,UAAU,EAAE,CAAC;EAClB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;EACvB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;cACtB,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACrB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;UACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC;cAChD,IAAI,EAAE,YAAM,EAAA,OAAA,KAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA,EAAA;cACjC,KAAK,EAAE,UAAC,GAAQ,EAAA;EACd,gBAAA,KAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EACtB,gBAAA,KAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,OAAO;EAC1D,uBAAA,KAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAAC;eACtE;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;EAEO,IAAA,0BAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;;EACN,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,EAAA,CAAG,OAAO,CAAC,UAAC,CAAC,EAAK,EAAA,OAAA,CAAC,CAAC,IAAI,EAAE,CAAR,EAAQ,CAAC,CAAC;EAClD,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;OACzB,CAAA;;;gJAjHU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAd,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA1B,0BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,2hBCRvC,6/LAiGA,EAAA,MAAA,EAAA,CAAA,ynYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAG,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDzFa,0BAA0B,EAAA,UAAA,EAAA,CAAA;oBALtCE,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,wBAAwB;EAClC,oBAAA,WAAW,EAAE,qCAAqC;sBAClD,SAAS,EAAE,CAAC,qCAAqC,CAAC;mBACnD,CAAA;gCAEqB,QAAQ,EAAA,CAAA;wBAA3BU,YAAS;yBAAC,OAAO,CAAA;kBACG,SAAS,EAAA,CAAA;wBAA7BA,YAAS;yBAAC,QAAQ,CAAA;kBAEV,WAAW,EAAA,CAAA;wBAAnBC,QAAK;kBAEG,iBAAiB,EAAA,CAAA;wBAAzBA,QAAK;kBAEG,cAAc,EAAA,CAAA;wBAAtBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,aAAa,EAAA,CAAA;wBAArBA,QAAK;kBACG,eAAe,EAAA,CAAA;wBAAvBA,QAAK;kBAGG,aAAa,EAAA,CAAA;wBAArBA,QAAK;kBAEI,SAAS,EAAA,CAAA;wBAAlBC,SAAM;;;EEdT,IAAA,0BAAA,kBAAA,YAAA;MASE,SAC6B,0BAAA,CAAA,SAAoB,EACvC,sBAA8C,EAAA;EAD3B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EACvC,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EAR/C,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;UAC9C,IAAA,CAAA,WAAW,GAAgB,IAAIC,gBAAW,CAAC,EAAE,CAAC,CAAC;EAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,YAAA,GAAS,CAAC;EAMpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;UACE,IAAI,CAAC,SAAS,EAAE,CAAC;UACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;OAChC,CAAA;MAEO,0BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,KAAa,EAAA;UACrC,OAAO,8BAA8B,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;OACzD,CAAA;EAED;;;;EAIG;EACH,IAAA,0BAAA,CAAA,SAAA,CAAA,uBAAuB,GAAvB,YAAA;UAAA,IAoBC,KAAA,GAAA,IAAA,CAAA;;UAnBC,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC;UACxC,IAAI,CAAC,OAAO,EAAE;cACZ,OAAO;EACR,SAAA;EACD,QAAA,IAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;UACpD,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,mBAAmB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;cAC/F,IAAI,CAAC,qBAAqB,EAAE,CAAC;cAC7B,OAAO;EACR,SAAA;;;;UAID,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,QAAA,OAAO,CAAC,SAAS,CAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAG,EAAA,EAAA,kBAAkB,EAAE,IAAI,IAAG,CAAC;UAC3E,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;EACpE,YAAA,IAAI,EAAE,UAAC,QAAQ,EAAA,EAAK,OAAA,KAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,GAAA;;EAEpD,YAAA,KAAK,EAAE,YAAA,EAAM,OAAA,KAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA,EAAA;EAChD,SAAA,CAAC,CAAC;OACN,CAAA;EAEO,IAAA,0BAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,SAAkB,EAAE,QAAyB,EAAA;EAAzB,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAyB,GAAA,KAAA,CAAA,EAAA;;UACpE,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC;UACxC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;UAC9C,IAAI,CAAC,OAAO,EAAE;cACZ,OAAO;EACR,SAAA;EACD,QAAA,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE;EAC1B,YAAA,IAAM,MAAM,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAG,CAAC;EAC7C,YAAA,OAAO,MAAM,CAAC,oBAAoB,CAAC,CAAC;EACpC,YAAA,MAAM,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;EACnC,YAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;EAC3B,SAAA;EAAM,aAAA;;cAEL,OAAO,CAAC,sBAAsB,EAAE,CAAC;EAClC,SAAA;UACD,OAAO,CAAC,aAAa,EAAE,CAAC;OACzB,CAAA;EAEO,IAAA,0BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACN,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC;UACxC,IAAI,EAAC,CAAA,EAAA,GAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,mBAAmB,CAAC,CAAA,EAAE;cAC3C,OAAO;EACR,SAAA;EACD,QAAA,IAAM,MAAM,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,MAAM,CAAE,CAAC;EACrC,QAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC,CAAC;UACnC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;OAC/D,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC;;EAExC,QAAA,IAAI,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,oBAAoB,CAAC,EAAE;EAC3C,YAAA,OAAO,EAAE,CAAC;EACX,SAAA;EACD,QAAA,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,OAAO,MAAI,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,OAAO,CAAA,EAAE;EACxC,YAAA,OAAO,iCAAiC,CAAC;EAC1C,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;MAED,0BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;EACnB,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;EACzC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACxD,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,SAAA;OACF,CAAA;MAED,0BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,0BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAS,CAAC;OAC5B,CAAA;MAED,0BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAY,CAAA,SAAA,EAAA,cAAA,EAAA;EAAhB,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAnC,EAAmC,CAAC,CAAC;EAC9F,YAAA,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;WAChD;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAS,CAAA,SAAA,EAAA,WAAA,EAAA;EAAb,QAAA,GAAA,EAAA,YAAA;;cACE,QAAQ,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI;EACvC,gBAAA,KAAK,sBAAsB;EACzB,oBAAA,OAAO,QAAQ,CAAC;EAClB,gBAAA,KAAK,qBAAqB;EACxB,oBAAA,OAAO,OAAO,CAAC;EACjB,gBAAA,KAAK,8BAA8B;EACjC,oBAAA,OAAO,KAAK,CAAC;EACf,gBAAA,KAAK,mBAAmB;EACtB,oBAAA,OAAO,KAAK,CAAC;EACf,gBAAA;EACE,oBAAA,OAAO,MAAM,CAAC;EACjB,aAAA;WACF;;;EAAA,KAAA,CAAA,CAAA;MAED,0BAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,KAAoB,EAAA;;UACrC,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC;EAE/C,QAAA,IAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;;UAGpF,IAAI,IAAI,KAAK,sBAAsB,EAAE;cACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;kBAC7F,KAAK,CAAC,cAAc,EAAE,CAAC;EACxB,aAAA;EACF,SAAA;;UAGD,IAAI,IAAI,KAAK,8BAA8B,EAAE;cAC3C,IAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;cAEhD,IAAI,UAAU,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;kBACxD,KAAK,CAAC,cAAc,EAAE,CAAC;EACxB,aAAA;EACF,SAAA;OACF,CAAA;MAED,0BAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,KAAiB,EAAA;EAC7B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;cAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;EACxB,SAAA;OACF,CAAA;;;gJApKU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAAnB,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA1B,0BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,0LCVvC,4uBASc,EAAA,MAAA,EAAA,CAAA,y7XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAI,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDCD,0BAA0B,EAAA,UAAA,EAAA,CAAA;oBALtCE,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,yBAAyB;EACnC,oBAAA,WAAW,EAAE,sCAAsC;sBACnD,SAAS,EAAE,CAAC,sCAAsC,CAAC;mBACpD,CAAA;;;gCAWIe,WAAQ;;gCAAIC,OAAI;;2BATV,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;;;EELR,IAAA,yBAAA,kBAAA,YAAA;EASE,IAAA,SAAA,yBAAA,CAAuC,SAAoB,EAAA;EAApB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EANlD,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;UAC9C,IAAA,CAAA,WAAW,GAAgB,IAAIE,gBAAW,CAAC,EAAE,CAAC,CAAC;EAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,YAAA,GAAS,CAAC;EAGpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,iCAAiC,CAAC;EAC1C,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;MAED,yBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;EACnB,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;EACzC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACxD,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,SAAA;OACF,CAAA;MAED,yBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,yBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAS,CAAC;OAC5B,CAAA;MAED,yBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,yBAAY,CAAA,SAAA,EAAA,cAAA,EAAA;EAAhB,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAnC,EAAmC,CAAC,CAAC;EAC9F,YAAA,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;WAChD;;;EAAA,KAAA,CAAA,CAAA;;;+IAjDU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAzB,yBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,yLCTtC,mqBAQc,EAAA,MAAA,EAAA,CAAA,y7XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDCD,yBAAyB,EAAA,UAAA,EAAA,CAAA;oBALrCE,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,wBAAwB;EAClC,oBAAA,WAAW,EAAE,qCAAqC;sBAClD,SAAS,EAAE,CAAC,qCAAqC,CAAC;mBACnD,CAAA;;;gCAUce,WAAQ;;gCAAIC,OAAI;;2BARpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;;;EEGR,IAAA,mBAAA,kBAAA,YAAA;EA6CE,IAAA,SAAA,mBAAA,GAAA;EA5CS,QAAA,IAAM,CAAA,MAAA,GAAW,MAAM,CAAC;EACxB,QAAA,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;EACzB,QAAA,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;EACrB,QAAA,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;EACrB,QAAA,IAAS,CAAA,SAAA,GAAW,GAAG,CAAC;EACxB,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;EAC1B,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;EAClB,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAIF,eAAY,EAAO,CAAC;UAC1D,IAAA,CAAA,YAAY,GAAwB;EAC3C,YAAA,QAAQ,EAAE,IAAI;EACd,YAAA,UAAU,EAAE,IAAI;EAChB,YAAA,MAAM,EAAE,MAAM;EACd,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,aAAa,EAAE,IAAI;EACnB,YAAA,WAAW,EAAE,IAAI;cACjB,WAAW,EAAE,IAAI,CAAC,WAAW;EAC7B,YAAA,yBAAyB,EAAE,EAAE;EAC7B,YAAA,QAAQ,EAAE,KAAK;EACf,YAAA,eAAe,EAAE,KAAK;EACtB,YAAA,oBAAoB,EAAE;EACpB,gBAAA;sBACE,MAAM;sBACN,MAAM;sBACN,eAAe;sBACf,WAAW;sBACX,aAAa;sBACb,QAAQ;sBACR,SAAS;sBACT,mBAAmB;sBACnB,SAAS;sBACT,UAAU;sBACV,WAAW;sBACX,iBAAiB;EAClB,iBAAA;EACD,gBAAA;sBACE,UAAU;sBACV,aAAa;sBACb,aAAa;sBACb,eAAe;sBACf,kBAAkB;EACnB,iBAAA;EACF,aAAA;WACF,CAAC;EACF,QAAA,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;OACC;MAEjB,mBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,OAAsB,EAAA;UAChC,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;cACrD,IAAI,CAAC,mBAAmB,EAAE,CAAC;EAC5B,SAAA;EACD,QAAA,IAAI,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE;EACpB,YAAA,IAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;EACzC,YAAA,IAAI,GAAG,EAAE;kBACP,IAAI,qBAAqB,GAAG,GAAG,CAAC;kBAChC,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;kBAC7E,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;EACvE,gBAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC;EACjD,aAAA;EAAM,iBAAA;EACL,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;EACtB,aAAA;EACF,SAAA;UACD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;OAClD,CAAA;EAED,IAAA,mBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;UACE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;UACvC,IAAI,CAAC,mBAAmB,EAAE,CAAC;OAC5B,CAAA;EACD,IAAA,mBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;UACE,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;OAC7C,CAAA;MAED,mBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,KAAU,EAAA;EACtB,QAAA,IAAI,KAAK,EAAE;cACT,IAAI,qBAAqB,GAAG,KAAK,CAAC;cAClC,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;cAC7E,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;EACvE,YAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC;EACjD,SAAA;EACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OAC9B,CAAA;MACD,mBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,KAAqB,EAAA;UAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;EACvB,QAAA,IAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;EAC1C,QAAA,IAAI,CAAC,aAAa;cAAE,OAAO;UAC3B,IAAI,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;EACrD,QAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;UAC3C,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;OACvD,CAAA;MAED,mBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,IAAY,EAAA;EACvB,QAAA,OAAO,IAAI,CAAC;OACb,CAAA;;;yIA7FU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAd,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAnB,mBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,0UChBhC,+RAIM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAG,eAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDYO,mBAAmB,EAAA,UAAA,EAAA,CAAA;oBAL/BG,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,iBAAiB;EAC3B,oBAAA,WAAW,EAAE,8BAA8B;sBAC3C,SAAS,EAAE,CAAC,8BAA8B,CAAC;mBAC5C,CAAA;4EAEU,MAAM,EAAA,CAAA;wBAAdW,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,OAAO,EAAA,CAAA;wBAAfA,QAAK;kBACG,OAAO,EAAA,CAAA;wBAAfA,QAAK;kBACG,SAAS,EAAA,CAAA;wBAAjBA,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACI,WAAW,EAAA,CAAA;wBAApBC,SAAM;kBACE,YAAY,EAAA,CAAA;wBAApBD,QAAK;;;EEhBR,IAAA,2BAAA,kBAAA,YAAA;EASE,IAAA,SAAA,2BAAA,CAAuC,SAAoB,EAAA;EAApB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EANlD,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;UAC9C,IAAA,CAAA,WAAW,GAAgB,IAAIE,gBAAW,CAAC,EAAE,CAAC,CAAC;EAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,YAAA,GAAS,CAAC;EAGpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;EAED,IAAA,2BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,IAAI,CAAC;EACb,SAAA;EACD,QAAA,OAAO,KAAK,CAAC;OACd,CAAA;MAED,2BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;EACnB,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;EACzC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACxD,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,SAAA;OACF,CAAA;MAED,2BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,2BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAS,CAAC;OAC5B,CAAA;MAED,2BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;;;iJA5CU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA3B,2BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,2LCTxC,oxBAYc,EAAA,MAAA,EAAA,CAAA,y7XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAsB,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAlB,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDHD,2BAA2B,EAAA,UAAA,EAAA,CAAA;oBALvCC,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,0BAA0B;EACpC,oBAAA,WAAW,EAAE,uCAAuC;sBACpD,SAAS,EAAE,CAAC,uCAAuC,CAAC;mBACrD,CAAA;;;gCAUce,WAAQ;;gCAAIC,OAAI;;2BARpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;;;EEPR,IAAA,WAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,WAAA,GAAA;;EACI,IAAA,WAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,KAA+B,EAAE,KAAyB,EAAA;EAAzB,QAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAyB,GAAA,SAAA,CAAA,EAAA;EAChE,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;cACvB,OAAO,KAAK,IAAI,EAAE,CAAC;EACtB,SAAA;UAED,OAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAI,KAAK,CAAE,CAAA,CAAA,IAAI,CAAC,UAAC,CAAM,EAAE,CAAM,EAAA;;EAClC,YAAA,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAG,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;EAC7B,YAAA,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAG,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;cAC7B,OAAO,IAAI,GAAG,IAAI,CAAC;EACvB,SAAC,CAAC,CAAC;OACN,CAAA;;;iIAXQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAhB,aAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;+HAAX,WAAW,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;oHAAX,WAAW,EAAA,UAAA,EAAA,CAAA;oBAJvBuB,OAAI;EAAC,YAAA,IAAA,EAAA,CAAA;EACF,oBAAA,IAAI,EAAE,SAAS;EACf,oBAAA,IAAI,EAAE,IAAI;mBACb,CAAA;;;ECID,IAAA,8BAAA,kBAAA,YAAA;EAWE,IAAA,SAAA,8BAAA,CAAuC,SAAoB,EAAA;EAApB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EARlD,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;EACpC,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAE3C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIT,eAAY,EAAE,CAAC;EAClC,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAII,gBAAW,EAAE,CAAC;EAEpD,QAAA,IAAA,CAAA,WAAW,GAAG,YAAA,GAAS,CAAC;EAGtB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;MAED,8BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;;EACnB,QAAA,IAAI,KAAK,EAAE;EACT,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;EACnC,YAAA,IAAI,MAAM,GAAG,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAC,CAAM,EAAI,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,OAAK,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,EAAE,CAAA,CAAA,EAAA,CAAC,CAAC;EAC/F,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACpC,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EACnC,SAAA;OACF,CAAA;MAED,8BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,8BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAS,CAAC;OAC9B,CAAA;MAED,8BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;MAED,8BAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,IAAS,EAAA;EAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAC3B,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,GAAQ,EAAE,cAAuB,EAAA;EAC/C,QAAA,IAAI,IAAI,GAAG;cACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;EACvB,YAAA,IAAI,EAAE,GAAG,CAAC,mBAAmB,CAAC;EAC9B,YAAA,UAAU,EAAE,cAAc;WAC3B,CAAA;EACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;UAC1B,OAAO;OACR,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;UACE,IAAI,CAAC,WAAW,EAAE,CAAC;OACpB,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,8CAA8C,CAAC;EACvD,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;;UACE,OAAO,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC;OACrC,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;;EACE,QAAA,OAAO,IAAI,CAAC,kBAAkB,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC;OACvG,CAAA;MAED,8BAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,MAAW,EAAA;;EAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;EAC/B,YAAA,OAAO,IAAI,CAAC;EACb,SAAA;EAED,QAAA,IAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;EACpD,QAAA,IAAM,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAK,gBAAgB,CAAC;EAC3D,QAAA,IAAM,SAAS,GAAG,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,CAAC;EAE3C,QAAA,IAAI,UAAU,EAAE;cACd,OAAO,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;EAC5C,SAAA;EAAM,aAAA;;EAEL,YAAA,IAAM,cAAc,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAM,EAAI,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAK,gBAAgB,CAAA,EAAA,CAAC,CAAC;cAC/G,IAAM,iBAAiB,GAAG,CAAC,CAAA,EAAA,GAAA,cAAc,aAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,IAAI,CAAC,CAAC;EAC5D,YAAA,IAAI,CAAC,iBAAiB,IAAI,SAAS,EAAE;EACnC,gBAAA,OAAO,SAAS,CAAC;EAClB,aAAA;EACF,SAAA;EACD,QAAA,OAAO,IAAI,CAAC;OACb,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAa,EAAE,MAAW,EAAA;;EACxC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5E,CAAA;;;oJAxGU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA9B,8BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,yQCT3C,8jEAuBM,EAAA,MAAA,EAAA,CAAA,+/XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAAsB,WAAA,EAAA,EAAA,CAAA,CAAA;oHDdO,8BAA8B,EAAA,UAAA,EAAA,CAAA;oBAL1CnB,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,6BAA6B;EACvC,oBAAA,WAAW,EAAE,0CAA0C;sBACvD,SAAS,EAAE,CAAC,0CAA0C,CAAC;mBACxD,CAAA;;;gCAYce,WAAQ;;gCAAIC,OAAI;;2BAVpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,kBAAkB,EAAA,CAAA;wBAA1BA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,SAAS,EAAA,CAAA;wBAAjBA,QAAK;kBACI,SAAS,EAAA,CAAA;wBAAlBC,SAAM;;;EENT,IAAA,gCAAA,kBAAA,YAAA;EAYE,IAAA,SAAA,gCAAA,CAAuC,SAAoB,EAAA;EAApB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EATlD,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;EACpC,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAE3C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIH,eAAY,EAAE,CAAC;EACzC,QAAA,IAAU,CAAA,UAAA,GAAe,EAAE,CAAC;EACrB,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAII,gBAAW,EAAE,CAAC;EAEpD,QAAA,IAAA,CAAA,WAAW,GAAG,YAAA,GAAQ,CAAC;EAGrB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAU,EAAE,IAAS,EAAA;;EACnC,QAAA,IAAM,OAAO,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAK,CAAC,CAAC;EAC7H,QAAA,IAAI,OAAO,EAAE;EACX,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC5B,SAAA;EAAM,aAAA;cACL,IAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAA,KAAK,EAAA,EAAI,OAAA,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAA,EAAA,CAAC,CAAC;EAClE,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;kBACV,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC9B,aAAA;EACF,SAAA;UACD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAE,aAAA,CAAA,EAAA,EAAA,MAAA,CAAK,IAAI,CAAC,UAAU,KAAI,IAAI,CAAC,CAAC;EAClF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;OACnC,CAAA;MAED,gCAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;UACnB,IAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAChC,YAAA,IAAI,CAAC,UAAU,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAK,EAAC,CAAC;EAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAClE,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACrB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACvD,SAAA;OACF,CAAA;MAED,gCAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,MAAU,EAAA;;UACrB,IAAG,IAAI,CAAC,UAAU,EAAC;cACjB,OAAO,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,UAAC,CAAM,EAAA,EAAK,OAAA,CAAA,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,EAAE,KAAI,CAAA,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,EAAE,OAAK,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,EAAE,CAAA,CAA7B,EAA6B,CAAC,MAAK,CAAC,CAAC,CAAC;EACrF,SAAA;EAAC,QAAA,OAAO,KAAK,CAAA;OACf,CAAA;MAED,gCAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,gCAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAS,CAAC;OAC9B,CAAA;MAED,gCAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;UACE,IAAI,CAAC,WAAW,EAAE,CAAC;OACpB,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,8CAA8C,CAAC;EACvD,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,GAAQ,EAAE,cAAuB,EAAA;;EAC/C,QAAA,IAAI,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAvB,EAAuB,CAAC,CAAC;EAC1F,QAAA,IAAI,IAAI,GAAG;cACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;EACvB,YAAA,IAAI,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,iBAAiB;EAC/B,YAAA,UAAU,EAAE,cAAc;WAC3B,CAAA;EACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAC3B,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;EACE,QAAA,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,uBAAuB,CAAA,EAAE;EAC5C,YAAA,OAAO,EAAE,CAAC;EACX,SAAA;EACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB;EAC1C,aAAA,MAAM,CAAC,UAAC,CAAM,EAAA,EAAK,OAAA,CAAC,CAAC,QAAQ,KAAK,KAAK,CAApB,EAAoB,CAAC;EACxC,aAAA,GAAG,CAAC,UAAC,CAAM,EAAA,EAAI,IAAA,EAAA,EAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,0CAAE,EAAE,CAAA,EAAA,CAAC;eAC7C,MAAM,CAAC,UAAC,EAAO,EAAK,EAAA,OAAA,EAAE,IAAI,IAAI,CAAA,EAAA,CAAC,CAAC;OACpC,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;;EACE,QAAA,OAAO,IAAI,CAAC,kBAAkB,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;OAC3G,CAAA;MAED,gCAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,MAAW,EAAA;;EAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;EAC/B,YAAA,OAAO,IAAI,CAAC;EACb,SAAA;EAED,QAAA,IAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;EACtD,QAAA,IAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,CAAC;EAClE,QAAA,IAAM,SAAS,GAAG,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,CAAC;EAE3C,QAAA,IAAI,UAAU,EAAE;cACd,OAAO,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;EAC5C,SAAA;EAAM,aAAA;;EAEL,YAAA,IAAM,kBAAgB,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CACtD,MAAM,CAAC,UAAC,CAAM,IAAI,IAAA,EAAA,CAAA,CAAC,OAAA,CAAC,CAAA,EAAA,GAAA,CAAC,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC,0CACvC,GAAG,CAAC,UAAC,CAAM,EAAA,UAAK,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA,EAAA,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;cAEzC,IAAM,kBAAkB,GACtB,iBAAiB,CAAC,MAAM,KAAK,kBAAgB,CAAC,MAAM;EACpD,gBAAA,iBAAiB,CAAC,KAAK,CAAC,UAAC,EAAO,IAAK,OAAA,kBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAA7B,EAA6B,CAAC,CAAC;EAEtE,YAAA,IAAI,CAAC,kBAAkB,IAAI,SAAS,EAAE;EACpC,gBAAA,OAAO,SAAS,CAAC;EAClB,aAAA;EACF,SAAA;EACD,QAAA,OAAO,IAAI,CAAC;OACb,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAa,EAAE,MAAW,EAAA;;EACxC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5E,CAAA;;;sJArIU,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAhC,gCAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,2QCT7C,g/DAuBM,EAAA,MAAA,EAAA,CAAA,+/XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAAsB,WAAA,EAAA,EAAA,CAAA,CAAA;oHDdO,gCAAgC,EAAA,UAAA,EAAA,CAAA;oBAL5CnB,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,+BAA+B;EACzC,oBAAA,WAAW,EAAE,4CAA4C;sBACzD,SAAS,EAAE,CAAC,4CAA4C,CAAC;mBAC1D,CAAA;;;gCAace,WAAQ;;gCAAIC,OAAI;;2BAXpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,kBAAkB,EAAA,CAAA;wBAA1BA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,SAAS,EAAA,CAAA;wBAAjBA,QAAK;kBACI,SAAS,EAAA,CAAA;wBAAlBC,SAAM;;;EENT,IAAA,+BAAA,kBAAA,YAAA;EASE,IAAA,SAAA,+BAAA,CAAuC,SAAoB,EAAA;EAApB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EANjD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIH,eAAY,EAAE,CAAC;EACzC,QAAA,IAAU,CAAA,UAAA,GAAe,EAAE,CAAC;EACrB,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAII,gBAAW,EAAE,CAAC;EAEpD,QAAA,IAAA,CAAA,WAAW,GAAG,YAAA,GAAQ,CAAC;EAGrB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;MAED,+BAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAS,EAAA;EACvB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ;cAAE,OAAO;UAEtC,IAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;EAC3C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;EAChB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC5B,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;EAClC,SAAA;UAED,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAE,aAAA,CAAA,EAAA,EAAA,MAAA,CAAK,IAAI,CAAC,UAAU,KAAI,IAAI,CAAC,CAAC;EAClF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;UAClC,IAAI,CAAC,SAAS,EAAE,CAAC;OAClB,CAAA;MAED,+BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;UACnB,IAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAChC,YAAA,IAAI,CAAC,UAAU,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAK,EAAC,CAAC;EAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAClE,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACrB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACvD,SAAA;OACF,CAAA;MAED,+BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,MAAW,EAAA;;UAC3B,IAAI,IAAI,CAAC,UAAU,EAAE;cACnB,OAAO,MAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,UAAC,CAAM,EAAA,EAAK,OAAA,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,EAAE,KAAI,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,EAAE,OAAK,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,EAAE,CAAA,CAAA,EAAA,CAAC,CAAC;EAC9E,SAAA;EAAM,aAAA;cACL,OAAO,CAAC,CAAC,CAAC;EACX,SAAA;OACF,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,+BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAS,CAAC;OAC9B,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;UACE,IAAI,CAAC,WAAW,EAAE,CAAC;OACpB,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,8CAA8C,CAAC;EACvD,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,GAAQ,EAAE,cAAuB,EAAA;;EAC/C,QAAA,IAAI,MAAM,GAAG,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAC,CAAM,EAAI,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,OAAK,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,EAAE,CAAA,CAAA,EAAA,CAAC,CAAC;EAC7F,QAAA,IAAI,IAAI,GAAG;cACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;EACvB,YAAA,IAAI,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,iBAAiB;EAC/B,YAAA,UAAU,EAAE,cAAc;WAC3B,CAAA;EACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAC3B,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAa,EAAE,MAAW,EAAA;;EACxC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5E,CAAA;;;qJAvFU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA/B,+BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,4KCT5C,8sCAkBM,EAAA,MAAA,EAAA,CAAA,2mYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAAsB,WAAA,EAAA,EAAA,CAAA,CAAA;oHDTO,+BAA+B,EAAA,UAAA,EAAA,CAAA;oBAL3CnB,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,8BAA8B;EACxC,oBAAA,WAAW,EAAE,2CAA2C;sBACxD,SAAS,EAAE,CAAC,2CAA2C,CAAC;mBACzD,CAAA;;;gCAUce,WAAQ;;gCAAIC,OAAI;;2BARpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACI,SAAS,EAAA,CAAA;wBAAlBC,SAAM;;;EEDT,IAAA,+BAAA,kBAAA,YAAA;MAcE,SAC6B,+BAAA,CAAA,SAAoB,EACvC,iBAAyC,EAAA;EADtB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EACvC,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAwB;EAZ1C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAE3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAIH,eAAY,EAA2D,CAAC;EAEjG,QAAA,IAAK,CAAA,KAAA,GAAiB,EAAE,CAAC;UACzB,IAAA,CAAA,WAAW,GAAgB,IAAII,gBAAW,CAAC,EAAE,CAAC,CAAC;EAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,YAAA,GAAS,CAAC;EAMpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;MAED,+BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;UACnB,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EACjC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACnB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACxD,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EAChB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,SAAA;OACF,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,+BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAS,CAAC;OAC5B,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,+BAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;EAAZ,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,cAAc,CAA9B,EAA8B,CAAC,CAAC;EACzF,YAAA,OAAO,MAAM,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;WACtE;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,+BAAW,CAAA,SAAA,EAAA,aAAA,EAAA;EAAf,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,aAAa,CAA7B,EAA6B,CAAC,CAAC;;EAExF,YAAA,OAAO,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,WAAW,IAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;WAC3E;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,+BAAa,CAAA,SAAA,EAAA,eAAA,EAAA;EAAjB,QAAA,GAAA,EAAA,YAAA;cACE,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;WACjD;;;EAAA,KAAA,CAAA,CAAA;MAED,+BAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAU,EAAA;UAAvB,IAmBC,KAAA,GAAA,IAAA,CAAA;;EAlBC,QAAA,IAAM,UAAU,GAAa,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;EAChD,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;cACvC,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACxC,YAAA,IAAM,OAAK,GAAG,IAAI,CAAC,WAAW,CAAC;cAC/B,IAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,OAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAK,CAAA,EAAA,CAAC,CAAC;EAExE,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;EACvC,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,0CAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EAC1L,aAAA;EAED,YAAA,UAAU,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;EACrB,gBAAA,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EACxB,aAAC,CAAC,CAAC;EACJ,SAAA;UAED,IAAI,IAAI,CAAC,SAAS,EAAE;cAClB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;EACzC,SAAA;OACF,CAAA;MAED,+BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,IAAU,EAAA;UAArB,IA2BC,KAAA,GAAA,IAAA,CAAA;;EA1BC,QAAA,IAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;EAChC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EAC9B,QAAA,IAAM,MAAM,GAAG;EACb,YAAA,UAAU,EAAE,iCAAiC;EAC7C,YAAA,QAAQ,EAAE,IAAI;EACd,YAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;cAC5B,QAAQ,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,0CAAE,QAAQ;cACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;WAChD,CAAA;UACD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;cAClE,IAAI,EAAE,UAAC,IAAS,EAAA;kBAEd,IAAI,KAAI,CAAC,aAAa,EAAE;sBACtB,KAAI,CAAC,KAAK,GAAO,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAI,CAAC,KAAK,CAAA,CAAA,EAAA,CAAE,IAAI,CAAA,CAAC,CAAC;EACpC,iBAAA;EAAM,qBAAA;EACL,oBAAA,KAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;EACrB,iBAAA;kBAED,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;kBACtC,KAAI,CAAC,SAAS,EAAE,CAAC;eAClB;cACD,KAAK,EAAE,UAAC,KAAU,EAAA;kBAChB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EACvH,gBAAA,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;eACnD;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;MAED,+BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAa,EAAA;UACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;UAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,0BAAK,IAAI,CAAC,KAAK,CAAA,CAAA,CAAE,CAAC;UAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;OAClB,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;MAED,+BAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,UAAsB,EAAA;EAChC,QAAA,IAAM,WAAW,GAA8B;EAC7C,YAAA,KAAK,EAAE,6BAA6B;EACpC,YAAA,YAAY,EAAE,8BAA8B;EAC5C,YAAA,WAAW,EAAE,6BAA6B;EAC1C,YAAA,WAAW,EAAE,6BAA6B;EAC1C,YAAA,WAAW,EAAE,6BAA6B;WAC3C,CAAC;EACF,QAAA,IAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;EACrC,QAAA,IAAI,QAAQ,EAAE;EACZ,YAAA,IAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;EAC7C,YAAA,KAAK,IAAM,GAAG,IAAI,WAAW,EAAE;EAC7B,gBAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EAC/B,oBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC;EACvG,iBAAA;EACF,aAAA;EACF,SAAA;EAED,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC;OACjE,CAAA;MAED,+BAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,GAAW,EAAA;EAClB,QAAA,IAAI,GAAG,EAAE;EACP,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;EAC5B,SAAA;OACF,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,KAAa,EAAE,IAAgB,EAAA;EACzC,QAAA,OAAO,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OACvD,CAAA;;;qJAzJU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAAnB,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA/B,+BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,uYCX5C,klEA8BW,EAAA,MAAA,EAAA,CAAA,mgYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAI,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAAA,eAAA,CAAA,WAAA,EAAA,EAAA,CAAA,CAAA;oHDnBE,+BAA+B,EAAA,UAAA,EAAA,CAAA;oBAL3CC,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,+BAA+B;EACzC,oBAAA,WAAW,EAAE,4CAA4C;sBACzD,SAAS,EAAE,CAAC,4CAA4C,CAAC;mBAC1D,CAAA;;;gCAgBIe,WAAQ;;gCAAIC,OAAI;;2BAdV,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,oBAAoB,EAAA,CAAA;wBAA5BA,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACkB,SAAS,EAAA,CAAA;wBAAhCD,YAAS;yBAAC,WAAW,CAAA;kBACZ,eAAe,EAAA,CAAA;wBAAxBE,SAAM;;;EEdT;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAQA,IAAA,+BAAA,kBAAA,YAAA;MASE,SAAuC,+BAAA,CAAA,SAAoB,EAAU,QAAkB,EAAA;EAAhD,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;EAN9E,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;UAC9C,IAAA,CAAA,WAAW,GAAgB,IAAIC,gBAAW,CAAC,EAAE,CAAC,CAAC;EAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,YAAA,GAAS,CAAC;EAGpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,iCAAiC,CAAC;EAC1C,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;MAED,+BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;EACnB,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;cACzC,IAAI,SAAS,GAAG,KAAK,CAAC;cACtB,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE;EAC/C,gBAAA,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;EAC5B,aAAA;mBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;EACxD,gBAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;EAC9B,aAAA;EACD,YAAA,IAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;EACvE,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChE,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,SAAA;OACF,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,+BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAS,CAAC;OAC5B,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;EACE,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;EACnC,QAAA,IAAI,CAAC,GAAG;EAAE,YAAA,OAAO,EAAE,CAAC;UACpB,IAAI,SAAS,GAAG,GAAG,CAAC;UACpB,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;EAC3C,YAAA,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;EAC1B,SAAA;eAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;EACpD,YAAA,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;EAC5B,SAAA;EACD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;OAC/D,CAAA;;;qJA/DU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,eAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAAF,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA/B,+BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAF/B,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA,CAACyB,aAAQ,CAAC,qCCtBvB,q8BAYA,EAAA,MAAA,EAAA,CAAA,y7XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAArB,eAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAF,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDYa,+BAA+B,EAAA,UAAA,EAAA,CAAA;oBAN3CE,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,+BAA+B;EACzC,oBAAA,WAAW,EAAE,4CAA4C;sBACzD,SAAS,EAAE,CAAC,4CAA4C,CAAC;sBACzD,SAAS,EAAE,CAACoB,aAAQ,CAAC;mBACtB,CAAA;;;gCAUcL,WAAQ;;gCAAIC,OAAI;;2BARpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;;;AEHR,MAAA,wBAAA,kBAAA,YAAA;EA6IE,IAAA,SAAA,wBAAA,CACU,sBAA8C,EAC9C,EAAe,EACf,sBAA8C,EAC9C,SAAuB,EACvB,MAAiB,EACjB,GAAsB,EACtB,iBAAoC,EAAA;UAP9C,IAQK,KAAA,GAAA,IAAA,CAAA;EAPK,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EAC9C,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;EACf,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EAC9C,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;EACvB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;EACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;EACtB,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;EAnJrC,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;EAG5B,QAAA,IAAA,CAAA,YAAY,GAAgB,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;EACrE,QAAA,IAAA,CAAA,YAAY,GAAgB,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;EACrE,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;EAC1B,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;EAC9B,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;EAEjC,QAAA,IAAgB,CAAA,gBAAA,GAAiC,EAAE,CAAC;EACpD,QAAA,IAAe,CAAA,eAAA,GAAY,IAAI,CAAC;EAChC,QAAA,IAAgB,CAAA,gBAAA,GAA0C,EAAE,CAAC;EAC7D,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;EACpC,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;;;EAGpC,QAAA,IAAuB,CAAA,uBAAA,GAAY,KAAK,CAAC;EAGxC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAIF,eAAY,EAA2D,CAAC;EAC9F,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAIA,eAAY,EAAO,CAAC;EAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAIA,eAAY,EAAkB,CAAC;EACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAIA,eAAY,EAAW,CAAC;EAEzD,QAAA,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;EAC3B,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;EACZ,QAAA,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAC;EACjC,QAAA,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;EACvC,QAAA,IAAY,CAAA,YAAA,GAAuC,EAAE,CAAC;EACtD,QAAA,IAA2B,CAAA,2BAAA,GAA4B,EAAE,CAAC;EAC1D,QAAA,IAAc,CAAA,cAAA,GAAe,EAAE,CAAC;EAChC,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;EAC/B,QAAA,IAAa,CAAA,aAAA,GAAQ,IAAI,CAAC;EAC1B,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;EAC1B,QAAA,IAAW,CAAA,WAAA,GAAW,OAAO,CAAC;EAC9B,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;EAClC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;EAC9B,QAAA,IAAiB,CAAA,iBAAA,GAAkD,EAAE,CAAC;UACtE,IAAA,CAAA,gBAAgB,GAAG,IAAII,gBAAW,CAAC,EAAE,CAAC,CAAC;EACvC,QAAA,IAAa,CAAA,aAAA,GAAc,EAAE,CAAC;EACtB,QAAA,IAAe,CAAA,eAAA,GAA2B,EAAE,CAAC;EAC7C,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;EACpC,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;EACvB,QAAA,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;EAE5B,QAAA,IAAiB,CAAA,iBAAA,GAAW,CAAC,CAAC;EAWtC,QAAA,IAAa,CAAA,aAAA,GAAc,EAAE,CAAC;EAC9B,QAAA,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC;EACrB,QAAA,IAAY,CAAA,YAAA,GAA4B,EAAE,CAAC;UAE3C,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;;;EAgUnC,QAAA,IAAA,CAAA,kBAAkB,GAAG,UAAC,oBAA4B,EAChD,EAAA,OAAA,KAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAA,EAAA,CAAC;OA9O/C;EAjGL,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;EAApB,QAAA,GAAA,EAAA,YAAA;cACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;WAC/B;EACD,QAAA,GAAA,EAAA,UAAqB,KAAa,EAAA;EAChC,YAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE;EACpC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;kBAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;EACxB,aAAA;WACF;;;EANA,KAAA,CAAA,CAAA;EAeD,IAAA,wBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;UACE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;OACzC,CAAA;EAED;;;;EAIG;MAEH,wBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,KAAwB,EAAA;EACrC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;cAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;EACvB,YAAA,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;EACxB,SAAA;OACF,CAAA;EAED;;;;EAIG;EAEH,IAAA,wBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;UAAA,IAmBC,KAAA,GAAA,IAAA,CAAA;UAlBC,IAAI,IAAI,CAAC,mBAAmB,EAAE;;EAE5B,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;cACjC,OAAO;EACR,SAAA;UACD,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;cACvD,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,SAAS,CAAC,UAAC,SAAkB,EAAA;EACzD,YAAA,IAAI,SAAS,EAAE;EACb,gBAAA,KAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;EAChC,gBAAA,KAAI,CAAC,cAAc,GAAG,KAAK,CAAC;EAC5B,gBAAA,OAAO,CAAC,IAAI,EAAE,CAAC;EAChB,aAAA;EAAM,iBAAA;;kBAEL,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC5C,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;UACN,OAAO,IAAI,CAAC,wBAAwB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;OACtE,CAAA;;EAGO,IAAA,wBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;UACN,IAAI,IAAI,CAAC,cAAc,EAAE;cACvB,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;UAC3B,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;OAC5C,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,YAAA;EACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;EACnD,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,QAAQ,EAAE,KAAK;EACf,YAAA,KAAK,EAAE,OAAO;cACd,UAAU,EAAE,CAAC,mBAAmB,CAAC;EACjC,YAAA,IAAI,EAAE;EACJ,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,mDAAmD,CAAC;EAC5E,gBAAA,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,qDAAqD,CAAC;EAChF,gBAAA,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC;EAClE,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC;EACjE,aAAA;WACF,CAAC,CAAC,WAAW,EAAE,CAAC;OAClB,CAAA;EAYD,IAAA,wBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;UACE,IAAI,CAAC,kBAAkB,EAAE,CAAC;UAE1B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,0CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAK,2BAA2B,EAAE;EACpG,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACtB,SAAA;UAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;EAC1B,YAAA,IAAI,CAAC,oBAAoB,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,mCAAI,IAAI,CAAC,oBAAoB,CAAC;EAC3G,YAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,mCAAI,IAAI,CAAC,YAAY,CAAC;EACjF,SAAA;UAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;cAC7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC3B,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UACE,IAAI,IAAI,CAAC,aAAa,EAAE;EACtB,YAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACnC,SAAA;EACD,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;cAC9B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;EACvD,SAAA;OACF,CAAA;EAED;;;;EAIG;EACK,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;EACN,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;EAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;UACjC,IAAI,CAAC,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,sBAAsB,EAAE;cACjE,OAAO;EACR,SAAA;UACD,IAAM,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAI,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAC;UACtE,IAAI,CAAC,UAAU,EAAE;cACf,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;UACnC,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;cACrE,IAAI,EAAE,eAAwC;cAC9C,KAAK,EAAE,eAA4C;EACpD,SAAA,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;UAAA,IAUC,KAAA,GAAA,IAAA,CAAA;EATC,QAAAQ,aAAQ,CAAC;cACP,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,kBAAkB,CAAC;cAC1E,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,kBAAkB,CAAC;EAC3E,SAAA,CAAC,CAAC,SAAS,CAAC,UAAC,GAAQ,EAAA;EACpB,YAAA,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;EACzE,YAAA,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;EAEzE,YAAA,KAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC5B,SAAC,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;UAAA,IAwBC,KAAA,GAAA,IAAA,CAAA;;EAvBC,QAAA,IAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GACR,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,IAAI;EAC7C,YAAA,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;WAC7G,KACG,CAAA,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,EAAC,MAAA,IAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,IAAI;EACzD,YAAA,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;EACtF,SAAA,EACF,CAAA;UACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;EACpC,YAAAA,aAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;kBAC3B,IAAI,EAAE,UAAC,IAAS,EAAA;;EACd,oBAAA,KAAI,CAAC,iBAAiB,GAAG,MAAA,CAAA,EAAA,GAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,cAAc,0CAAG,CAAC,CAAC,mCAAI,KAAI,CAAC,iBAAiB,CAAC;EAC7E,oBAAA,KAAI,CAAC,gBAAgB,GAAG,CAAA,EAAA,GAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAI,CAAC,gBAAgB,CAAC;sBACxE,KAAI,CAAC,cAAc,EAAE,CAAA;mBACtB;kBACD,KAAK,EAAE,UAAA,KAAK,EAAA;sBACV,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;sBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;mBAC/B;EACF,aAAA,CAAC,CAAC;EACJ,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,cAAc,EAAE,CAAC;EACvB,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;;EACE,QAAA,IAAI,CAAC,2BAA2B,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,0BAA0B,CAAC;EACtF,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC;EACzD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAc,CAAC;EAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,0CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;UAElE,IAAI,MAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,EAAE;cAC7B,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,2BAA2B,EAAE;EAChF,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACtB,aAAA;EACF,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,gBAAgB,GAAG;EACtB,gBAAA,EAAE,EAAE,CAAC;EACL,gBAAA,kBAAkB,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE;kBACrD,QAAQ,EAAE,IAAI,CAAC,YAAY;kBAC3B,QAAQ,EAAE,IAAI,CAAC,YAAY;EAC3B,gBAAA,sBAAsB,EAAE,EAAE;kBAC1B,MAAM,EAAE,IAAI,CAAC,QAAQ;eACtB,CAAC;EACH,SAAA;EACD,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;UAClE,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;EAC7C,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;EACjC,SAAA;UACD,IAAI,CAAC,SAAS,EAAE,CAAC;OAClB,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;UAAA,IA8EC,KAAA,GAAA,IAAA,CAAA;;EA7EC,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;UAE5B,CAAA,EAAA,GAAA,WAAW,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,wBAAwB,CAAC,0CAAE,OAAO,CAAC,UAAC,OAA6B,EAAA;;cAC7G,IAAM,KAAK,GAAQ,EAAE,CAAC;cAEtB,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,oBAAoB,CAAC,0CAAE,OAAO,CAAC,UAAC,EAAmB,EAAA;;EACtE,gBAAA,IAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;kBAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC;sBAAE,OAAO;kBAE5C,IAAM,QAAQ,GAAG,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;kBACxC,KAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,WAAW,CAAC,CAAC;kBAEnE,IAAI,MAAA,QAAQ,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EACvC,oBAAA,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAC,MAAW,EAAA;;0BAC9C,IAAI,MAAM,CAAC,eAAe,EAAE;;8BAE1B,IAAI,SAAS,GAAG,IAAI,CAAC;8BACrB,IAAM,gBAAgB,GAAG,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;EACtD,4BAAA,IAAI,gBAAgB,EAAE;kCACpB,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,MAAA,KAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,0CAAE,IAAI,CAAC,UAAC,CAAM,IACxE,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAA,EAAA,CACzF,CAAC;EACF,gCAAA,IAAI,MAAM,EAAE;EACV,oCAAA,IAAI,CAAA,MAAA,QAAQ,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,yBAAyB,KAAK,gBAAgB,MAAM,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,MAAM,CAAC,EAAE,CAAC,IAAI,CAAA,gBAAgB,KAAhB,IAAA,IAAA,gBAAgB,uBAAhB,gBAAgB,CAAE,EAAE,OAAM,CAAA,EAAA,GAAA,MAAA,MAAM,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE;EACvL,wCAAA,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;EACpC,qCAAA;EAAM,yCAAA,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;EAC1C,wCAAA,IAAM,WAAW,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,uBAAuB,0CAAE,IAAI,CAAC,UAAC,CAAM,EAAK,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,0CAAE,EAAE,OAAM,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,0CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;EACzI,wCAAA,IAAI,WAAW,EAAE;EACf,4CAAA,SAAS,GAAG,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC;EACzC,yCAAA;EACF,qCAAA;EACF,iCAAA;EACF,6BAAA;EAED,4BAAA,IAAM,UAAU,GAAG,IAAIR,gBAAW,CAAC,SAAS,CAAC,CAAC;8BAC9C,IAAI,KAAI,CAAC,QAAQ,EAAE;kCACjB,UAAU,CAAC,OAAO,EAAE,CAAC;EACtB,6BAAA;8BAAA,CAAC;8BACF,KAAK,CAAI,GAAG,GAAY,WAAA,GAAA,MAAM,CAAC,EAAI,CAAC,GAAG,UAAU,CAAC;EACnD,yBAAA;0BAED,CAAA,EAAA,GAAA,MAAM,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,OAAe,EAAA;;8BAChD,IAAM,SAAS,GAAG,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;EAC7C,4BAAA,IAAI,SAAS,EAAE;EACb,gCAAA,KAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC,EAAE,CAAC,CAAC;EACjG,6BAAA;EACH,yBAAC,CAAC,CAAC;EACL,qBAAC,CAAC,CAAC;EACJ,iBAAA;EACH,aAAC,CAAC,CAAC;cAEH,IAAM,EAAE,GAAG,KAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;cAEhC,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,oBAAoB,CAAC,0CAAE,OAAO,CAAC,UAAC,EAAmB,EAAA;;EACtE,gBAAA,IAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;kBAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC;sBAAE,OAAO;kBAC5C,IAAM,QAAQ,GAAG,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;kBAExC,IAAI,MAAA,QAAQ,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EACvC,oBAAA,KAAI,CAAC,iCAAiC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;sBACrD,CAAA,EAAA,GAAA,EAAE,CAAC,GAAG,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,QAAQ,EAAE,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC,SAAS,CAAC,YAAA;EAC9C,wBAAA,KAAI,CAAC,iCAAiC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;EACvD,qBAAC,CAAC,CAAC;EACJ,iBAAA;EACH,aAAC,CAAC,CAAC;EAEH,YAAA,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;kBAC1B,SAAS,EAAE,OAAO,CAAC,EAAE;EACrB,gBAAA,SAAS,EAAE,EAAE;EACd,aAAA,CAAC,CAAC;EACH,YAAA,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACjC,SAAC,CAAC,CAAC;UAEH,IAAI,CAAC,eAAe,EAAE,CAAC;EACvB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;UAExB,IAAI,CAAC,eAAe,EAAE,CAAC;OACxB,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;EACN,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;;EAE5B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EACzB,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,eAAe,EAAE,CAAC;EACxB,SAAA;OACF,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;EAAvB,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,yCAAyC,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAK,GAAG,CAAC;WAC1I;;;EAAA,KAAA,CAAA,CAAA;EAED;;;EAGG;EACK,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;UACN,IAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;EACzF,QAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,IAAI,aAAa,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;OAC3F,CAAA;EAGD,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAuB,CAAA,SAAA,EAAA,yBAAA,EAAA;;EAA3B,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,0CAAE,EAAE,MAAI,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAC,CAAC;WAC1F;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;EAArB,QAAA,GAAA,EAAA,YAAA;;cACE,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,CAAC,CAAC;WAChF;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAkB,CAAA,SAAA,EAAA,oBAAA,EAAA;EAAtB,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,OAAO,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,KAAI,EAAE;EACrE,iBAAA,MAAM,CAAC,UAAC,GAAG,EAAE,OAAO,EAAA,EAAI,IAAA,EAAA,CAAA,CAAC,OAAA,GAAG,IAAI,CAAA,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,oBAAoB,0CAAE,MAAM,KAAI,CAAC,CAAC,CAAA,EAAA,EAAE,CAAC,CAAC,CAAC;WACpF;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAyB,CAAA,SAAA,EAAA,2BAAA,EAAA;EAA7B,QAAA,GAAA,EAAA,YAAA;;cACE,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,qBAAqB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,CAAC,CAAC;WACrE;;;EAAA,KAAA,CAAA,CAAA;;EAQD,IAAA,wBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;EACE,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACjC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EACzB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;;cAE9B,IAAI,CAAC,YAAY,EAAE,CAAC;EACrB,SAAA;UACD,IAAI,CAAC,eAAe,EAAE,CAAC;OACxB,CAAA;EAED;;;;;;;EAOG;MACK,wBAAsB,CAAA,SAAA,CAAA,sBAAA,GAAtB,UAAuB,oBAAiC,EAAA;UAAxD,IAmDP,KAAA,GAAA,IAAA,CAAA;EAnD8B,QAAA,IAAA,oBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,oBAAiC,GAAA,EAAA,CAAA,EAAA;;UAC9D,IAAM,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAI,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAC;UACtE,IAAM,QAAQ,GAAoB,UAAU;iBACvC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,UAAU,CAAC,GAAGS,OAAE,CAAC,IAAI,CAAC;EACvG,cAAE,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,CAAC,CAAC;EACtG,QAAA,OAAO,QAAQ,CAAC,IAAI,CAClBC,aAAG,CAAC,UAAC,GAAQ,EAAA;;EACX,YAAA,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;kBACnC,OAAO;EACR,aAAA;cACD,IAAI,KAAI,CAAC,mBAAmB,EAAE;;kBAE5B,IAAM,UAAU,GAAsB,CAAA,EAAA,GAAA,GAAG,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,GAAG,CAAC;EAC5D,gBAAA,IAAM,cAAc,GAAG,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,CAAC;EACjD,gBAAA,KAAI,CAAC,gBAAgB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAI,CAAC,gBAAgB,CAAA,EAAK,cAAc,CAAA,EAAA,EAAE,UAAU,EAAA,UAAA,EAAA,CAAE,CAAC;EACpF,gBAAA,KAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;EACtC,aAAA;EAAM,iBAAA;;kBAEL,KAAI,CAAC,gBAAgB,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,gBAAgB,CAAA,EAAK,GAAG,CAAE,CAAC;EAC9D,aAAA;cACD,IAAI,CAAC,UAAU,EAAE;EACf,gBAAA,KAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;;EAE/B,gBAAA,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;sBACzB,UAAU,EAAE,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,0CAAE,EAAE;sBACrC,gBAAgB,EAAE,KAAI,CAAC,gBAAgB;EACvC,oBAAA,SAAS,EAAE,KAAK;EACjB,iBAAA,CAAC,CAAC;EACJ,aAAA;EACH,SAAC,CAAC;;;EAGF,QAAAC,mBAAS,CAAC,YAAA;;cAAM,OAAA,KAAI,CAAC,mBAAmB;EACtC,kBAAE,KAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;sBAC7B,SAAS,EAAE,MAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB;sBAC/D,GAAG,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,KAAI,EAAE;;sBAEhE,YAAY,EAAE,cAAM,OAAA,KAAI,CAAC,oBAAoB,EAAE,GAAA;;sBAE/C,SAAS,EAAE,KAAI,CAAC,iBAAiB;mBAClC,CAAC;EACF,kBAAEF,OAAE,CAAC,KAAK,CAAC,CAAC,CAAA;EAAA,SAAA,CAAC,EACfG,oBAAU,CAAC,UAAC,GAAQ,EAAA;cAClB,IAAI,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,MAAK,eAAe,EAAE;;EAEjC,gBAAA,OAAOC,eAAU,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;EACjG,aAAA;cACD,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EAClH,YAAA,OAAOA,eAAU,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;WACjG,CAAC,CACH,CAAC;OACH,CAAA;EAED;;;;EAIG;EACK,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;UACN,IAAM,UAAU,GAAG,CAAA,MAAA,IAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAI,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA,IAAI,CAAC,CAAC;UAC3E,OAAO,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,IAAI,CACxEC,aAAG,CAAC,UAAC,GAAQ,EAAK,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAC,CAAA,EAAA,GAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,KAAK,EAAE,CAAA,EAAA,CAAC,CAC1F,CAAC;OACH,CAAA;MAEO,wBAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,oBAAiC,EAAA;EAAjC,QAAA,IAAA,oBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,oBAAiC,GAAA,EAAA,CAAA,EAAA;EAChE,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CACzD,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,2BAA2B,EAChC,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,QAAQ,EACb,oBAAoB,CACrB,CAAC;OACH,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;EACN,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC;EAChD,QAAA,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;cACnB,OAAO;EACR,SAAA;;EAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;EACrC,YAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;cAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;cACzB,OAAO;EACR,SAAA;UACD,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;EAC5D,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;EAClC,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;EAC3B,SAAA;OACF,CAAA;EAED;;;;EAIG;MACK,wBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,QAAgB,EAAA;;UACxC,IAAM,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC;UACnD,IAAM,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5E,QAAA,IAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;UACrC,IAAI,SAAS,IAAI,CAAC,EAAE;EAClB,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EACvB,YAAA,IAAI,CAAC,iBAAiB,EAAE,CAAC;cACzB,IAAI,CAAC,UAAU,EAAE,CAAC;cAClB,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;OAC5B,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iCAAiC,GAAjC,UAAkC,EAAa,EAAE,QAA4B,EAAA;UAA7E,IAmCC,KAAA,GAAA,IAAA,CAAA;;EAlCC,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAC,MAAA,QAAQ,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA;cAAE,OAAO;EAE9E,QAAA,IAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC;EACxB,QAAA,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAC,MAAW,EAAA;;EAC9C,YAAA,IAAM,UAAU,GAAG,KAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,CAAC;cAE3E,IAAI,MAAM,CAAC,eAAe,EAAE;EAC1B,gBAAA,IAAM,UAAU,GAAG,EAAE,CAAC,GAAG,CAAI,GAAG,GAAA,WAAA,GAAY,MAAM,CAAC,EAAI,CAAC,CAAC;EACzD,gBAAA,IAAI,UAAU,EAAE;sBACd,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,aAAa,CAACC,eAAU,CAAC,QAAQ,CAAC,CAAC;EAChD,iBAAA;EAAM,qBAAA;EACL,oBAAA,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,eAAe,EAAE,CAAC;sBAC9B,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC5B,iBAAA;EACD,gBAAA,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,sBAAsB,EAAE,CAAC;EACtC,aAAA;cAED,IAAI,MAAA,MAAM,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EACpC,gBAAA,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,OAAe,EAAA;;sBAC/C,IAAM,SAAS,GAAG,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;EAC7C,oBAAA,IAAI,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,EAAE,EAAE;EACjB,wBAAA,IAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA,EAAA,GAAA,SAAS,CAAC,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE,CAAC,CAAC;EACnD,wBAAA,IAAI,UAAU,EAAE;8BACd,IAAM,UAAU,GAAG,KAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;8BAC7G,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,aAAa,CAACA,eAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;EAC1D,yBAAA;EAAM,6BAAA;EACL,4BAAA,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,eAAe,EAAE,CAAC;8BAC7B,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC3B,yBAAA;EACD,wBAAA,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,sBAAsB,EAAE,CAAC;EACrC,qBAAA;EACH,iBAAC,CAAC,CAAC;EACJ,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;UACE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;EAC/D,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;kBACpB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;EACvC,gBAAA,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM;kBACzC,UAAU,EAAE,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;EACxE,aAAA,CAAC,CAAC;EACJ,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,UAAsB,KAAU,EAAE,QAA4B,EAAE,WAA4B,EAAE,OAAwB,EAAE,QAAiB,EAAE,cAAuB,EAAA;EAAlG,QAAA,IAAA,WAAA,KAAA,KAAA,CAAA,EAAA,EAAA,WAA4B,GAAA,KAAA,CAAA,EAAA;EAAE,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAwB,GAAA,KAAA,CAAA,EAAA;EACpH,QAAA,IAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC;EACxB,QAAA,IAAI,CAAC,GAAG;cAAE,OAAO;UAEjB,IAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;EACzF,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;EAErF,QAAA,IAAM,OAAO,GAAG,IAAIf,gBAAW,CAAC,cAAc,EAAEe,eAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;;UAGhF,IAAI,IAAI,CAAC,QAAQ,EAAE;cACjB,OAAO,CAAC,OAAO,EAAE,CAAC;EACnB,SAAA;EAED,QAAA,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;;UAGrB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE;EAC9D,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;cAC9E,KAAK,CAAI,GAAG,GAAA,QAAQ,CAAC,GAAG,IAAIf,gBAAW,CAAC,SAAS,CAAC,CAAC;EACpD,SAAA;OACF,CAAA;MAED,wBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,GAAW,EAAE,OAAwB,EAAE,QAAiB,EAAE,cAAuB,EAAA;EAApE,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAwB,GAAA,KAAA,CAAA,EAAA;;UACpD,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,CAAA;EAAE,YAAA,OAAO,IAAI,CAAC;UAChE,IAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,CAAM,EAAA;;EACzE,YAAA,IAAI,OAAO,EAAE;EACX,gBAAA,OAAO,CAAC,CAAC,eAAe,KAAK,GAAG,IAAI,CAAC,CAAC,6BAA6B,KAAK,QAAQ,IAAI,CAAC,CAAC,oBAAoB,KAAK,cAAc,CAAC;EAC/H,aAAA;EAAM,iBAAA;EACL,gBAAA,OAAO,CAAA,MAAA,CAAC,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAK,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC;EACjG,aAAA;EACH,SAAC,CAAC,CAAC;EACH,QAAA,OAAO,CAAA,EAAA,GAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;OACjC,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,UAAqB,GAAW,EAAE,cAA8B,EAAE,gBAAgC,EAAA;;UAChG,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,CAAA;EAAE,YAAA,OAAO,IAAI,CAAC;UAChE,IAAM,OAAO,GAAG,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,CAAC;UACxE,OAAO,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,CAAM,EAAA;;EAC9D,YAAA,IAAI,OAAO,EAAE;EACX,gBAAA,OAAO,CAAC,CAAC,eAAe,KAAK,GAAG,IAAI,CAAC,CAAC,6BAA6B,KAAK,gBAAgB,IAAI,CAAC,CAAC,oBAAoB,KAAK,cAAc,CAAC;EACvI,aAAA;EAAM,iBAAA;EACL,gBAAA,OAAO,CAAA,MAAA,CAAC,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAK,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC;EACjG,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;MAED,wBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,GAAW,EAAA;;EAC3B,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,CAAC,CAAC;OAC5C,CAAA;MAED,wBAAuB,CAAA,SAAA,CAAA,uBAAA,GAAvB,UAAwB,QAA4B,EAAA;;EAClD,QAAA,IAAM,iBAAiB,GAAG;cACxB,yBAAyB;cACzB,4BAA4B;WAC7B,CAAC;EACF,QAAA,IAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EAC/D,QAAA,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,YAAY,0CAAE,IAAI,KAAI,EAAE,CAAC,IAAI,SAAS,CAAC;OACpF,CAAA;MAED,wBAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,GAAW,EAAE,OAAwB,EAAE,QAAiB,EAAE,cAAuB,EAAA;EAApE,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAwB,GAAA,KAAA,CAAA,EAAA;;UACtD,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,CAAA;EAAE,YAAA,OAAO,IAAI,CAAC;UAEhE,IAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,CAAM,EAAA;;EACzE,YAAA,IAAI,OAAO,EAAE;EACX,gBAAA,OAAO,CAAC,CAAC,eAAe,KAAK,GAAG,IAAI,CAAC,CAAC,6BAA6B,KAAK,QAAQ,IAAI,CAAC,CAAC,oBAAoB,KAAK,cAAc,CAAC;EAC/H,aAAA;EAAM,iBAAA;EACL,gBAAA,OAAO,CAAA,MAAA,CAAC,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAK,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC;EACjG,aAAA;EACH,SAAC,CAAC,CAAC;EAEH,QAAA,IAAI,CAAC,SAAS;EAAE,YAAA,OAAO,IAAI,CAAC;UAE5B,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;EACxC,QAAA,IAAI,CAAC,QAAQ;EAAE,YAAA,OAAO,IAAI,CAAC;UAE3B,IAAM,KAAK,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC;UAE1C,IAAI,KAAK,KAAK,yBAAyB,EAAE;cACvC,OAAO,SAAS,CAAC,QAAQ,CAAC;EAC3B,SAAA;EAAM,aAAA,IAAI,KAAK,KAAK,4BAA4B,IAAI,KAAK,KAAK,0BAA0B,EAAE;cACzF,IAAI,UAAU,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,EAAC,SAAS,CAAC,uBAAuB,IAAI,EAAE,EAAC,CAAC,CAAC;cAChE,IAAI,KAAK,KAAK,0BAA0B,EAAE;kBACxC,UAAU,CAAC,IAAI,CAAC,UAAC,CAAM,EAAE,CAAM,EAAK,EAAA,OAAA,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;EAC1E,aAAA;EACD,YAAA,OAAO,UAAU,CAAC,GAAG,CAAC,UAAC,CAAM,IAAK,IAAA,EAAA,CAAA,CAAA,OAAA,MAAA,CAAC,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAA,EAAA,CAAC,IAAI,EAAE,CAAC;EACnE,SAAA;eAAM,IAAI,KAAK,KAAK,2BAA2B,EAAE;EAChD,YAAA,OAAO,SAAS,CAAC,sBAAsB,IAAI,EAAE,CAAC;EAC/C,SAAA;EAAM,aAAA;EACL,YAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,CAAC,wBAAwB,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;EACtE,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,UAAyB,QAA4B,EAAE,WAAoB,EAAA;;UACzE,IAAM,UAAU,GAAU,EAAE,CAAC;EAC7B,QAAA,IAAI,WAAW,EAAE;EACf,YAAA,UAAU,CAAC,IAAI,CAACe,eAAU,CAAC,QAAQ,EAAEA,eAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;EACpE,SAAA;UAED,IAAI,MAAA,QAAQ,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EACvC,YAAA,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;EAClE,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAA,MAAA,QAAQ,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,qBAAqB,EAAE;kBACzD,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,CAAC;EACzF,aAAA;EAAM,iBAAA,IAAI,CAAA,MAAA,QAAQ,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,mBAAmB,EAAE;kBAC9D,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,CAAC;EAC1F,aAAA;EAAM,iBAAA,IAAI,CAAA,MAAA,QAAQ,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,8BAA8B,EAAE;kBACzE,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;EACpD,aAAA;EAAM,iBAAA,IAAI,CAAA,MAAA,QAAQ,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,sBAAsB,EAAE;kBACjE,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;EACtD,aAAA;EACF,SAAA;UAED,IAAI,QAAQ,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;EACnE,YAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACrG,YAAA,IAAI,OAAO;kBAAE,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAEA,eAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;EAElG,YAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACrG,YAAA,IAAI,OAAO;EAAE,gBAAA,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAEpE,YAAA,IAAM,QAAM,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,uBAAuB,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACxG,YAAA,IAAI,QAAM,EAAE;EACV,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,OAAoB,EAAA;;EACnC,oBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,QAAM,CAAC,EAAE;0BAC3D,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAM,CAAC,EAAE,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,CAAC,EAAE,EAAE,CAAC;EACzF,qBAAA;EACD,oBAAA,OAAO,IAAI,CAAC;EACd,iBAAC,CAAC,CAAC;EACJ,aAAA;EAED,YAAA,IAAM,QAAM,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,uBAAuB,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACxG,YAAA,IAAI,QAAM,EAAE;EACV,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,OAAoB,EAAA;;EACnC,oBAAA,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,QAAM,CAAC,EAAE;0BAC1D,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAM,CAAC,EAAE,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,CAAC,EAAE,EAAE,CAAC;EACzF,qBAAA;EACD,oBAAA,OAAO,IAAI,CAAC;EACd,iBAAC,CAAC,CAAC;EACJ,aAAA;EAED,YAAA,IAAM,UAAQ,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,cAAc,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACjG,YAAA,IAAI,UAAQ,EAAE;EACZ,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,OAAoB,EAAA;;EACnC,oBAAA,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,UAAQ,CAAC,EAAE;0BAC5D,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAQ,CAAC,EAAE,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,CAAC,EAAE,EAAE,CAAC;EACzF,qBAAA;EACD,oBAAA,OAAO,IAAI,CAAC;EACd,iBAAC,CAAC,CAAC;EACJ,aAAA;EAED,YAAA,IAAM,aAAW,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,aAAa,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACnG,YAAA,IAAI,aAAW,EAAE;EACf,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,OAAoB,EAAA;EACnC,oBAAA,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;0BACjD,IAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,IAAS,EAAA,EAAK,OAAA,CAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,aAAW,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAA,EAAA,CAAC,CAAC;EACtH,wBAAA,IAAI,YAAY,EAAE;EAChB,4BAAA,OAAO,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,aAAW,CAAC,EAAE,EAAE,CAAC;EAC/D,yBAAA;EACF,qBAAA;EACD,oBAAA,OAAO,IAAI,CAAC;EACd,iBAAC,CAAC,CAAC;EACJ,aAAA;EACF,SAAA;EACD,QAAA,OAAO,UAAU,CAAC;OACnB,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,SAAoB,EAAE,QAA4B,EAAE,QAA4B,EAAA;;EAC/F,QAAA,IAAI,CAAC,QAAQ;EAAE,YAAA,OAAO,KAAK,CAAC;EAE5B,QAAA,IAAI,WAAW,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE,CAAC;EAE1C,QAAA,IAAI,CAAC,WAAW;EAAE,YAAA,OAAO,KAAK,CAAC;UAE/B,IAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;EAC3C,QAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI;EAAE,YAAA,OAAO,KAAK,CAAC;;UAGpD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;cAChC,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,GAAQ,EAAK,EAAA,OAAA,CAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,EAAE,MAAK,QAAQ,CAAA,EAAA,CAAC,CAAC;EACnG,SAAA;;EAGD,QAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;EACzD,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC;EACtC,SAAA;EAED,QAAA,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;OACnC,CAAA;MAED,wBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,QAA4B,EAAA;;UAC1C,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAA,EAAA,CAAC,CAAC;EACzF,QAAA,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;OAChD,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,QAA4B,EAAE,OAAY,EAAA;UAC1D,IAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;EAC3C,QAAA,IAAM,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;UAC/D,OAAO,GAAG,GAAG,aAAa,CAAC;OAC5B,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;EACE,QAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;cAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;EACzB,SAAA;OACF,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;EAAlB,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAA,KAAK,EAAA,EACvC,OAAA,CAAC,EAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,SAAS,CAAA,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAC,CAAM,EAAA,EAAI,IAAA,EAAA,CAAA,CAAC,OAAA,CAAC,EAAC,MAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,oBAAoB,CAAC,CAAA,CAAA,EAAA,CAAC,CAAnH,EAAmH,CACpH,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC;WACZ;;;EAAA,KAAA,CAAA,CAAA;MAED,wBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,KAAa,EAAA;;UAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;cAC9B,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE;EACjD,gBAAA,OAAO,IAAI,CAAC;EACb,aAAA;EACF,SAAA;EACD,QAAA,OAAO,KAAK,CAAC;OACd,CAAA;MAED,wBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,QAAwB,EAAA;EAAxB,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAwB,GAAA,IAAA,CAAA,EAAA;;EAC7B,QAAA,IAAM,IAAI,GAAG,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,IAAI,2CAA2C,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,GAAG,CAAC;UAC/I,IAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;EACrE,QAAA,IAAI,CAAC,cAAc;cAAE,OAAO;EAE5B,QAAA,cAAc,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;;UAG5C,IAAI,IAAI,CAAC,cAAc,EAAE;cACvB,OAAO;EACR,SAAA;EAED,QAAA,IAAI,cAAc,CAAC,SAAS,CAAC,OAAO,EAAE;cACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;cACjD,OAAO;EACR,SAAA;UAGD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;EAElD,QAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EACnF,YAAA,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC1D,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EAC9B,SAAA;OACF,CAAA;MAED,wBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,QAAwB,EAAA;UAAtC,IA4BC,KAAA,GAAA,IAAA,CAAA;EA5Ba,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAwB,GAAA,IAAA,CAAA,EAAA;;UAEpC,IAAI,IAAI,CAAC,cAAc,EAAE;cACvB,OAAO;EACR,SAAA;EACD,QAAA,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;UAC3B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,KAAK,EAAA;EAC1C,YAAA,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;EACnC,YAAA,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;EAC3B,gBAAA,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;kBACjC,IAAI,iBAAiB,KAAK,CAAC,CAAC;sBAAE,iBAAiB,GAAG,KAAK,CAAC;EACzD,aAAA;EAAM,iBAAA;EACL,gBAAA,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;EACnC,aAAA;EACH,SAAC,CAAC,CAAC;EAEH,QAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;EAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EACtB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC;EAC3C,aAAA;EAAM,iBAAA;EACL,gBAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;EAC9C,aAAA;cACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,qCAAqC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EAC/G,YAAA,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;cAClD,OAAO;EACR,SAAA;EAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;OAC3B,CAAA;MAED,wBAAyB,CAAA,SAAA,CAAA,yBAAA,GAAzB,UAA0B,YAAoB,EAAA;UAA9C,IAiBC,KAAA,GAAA,IAAA,CAAA;EAhBC,QAAA,UAAU,CAAC,YAAA;cACT,IAAM,SAAS,GAAG,KAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;EACjE,YAAA,KAAK,IAAM,WAAW,IAAI,SAAS,CAAC,QAAQ,EAAE;kBAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;sBAC3C,IAAI,GAAG,GAAG,WAAW,CAAC;EACtB,oBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;0BACvE,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACjC,qBAAA;sBACD,IAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAA,GAAsB,GAAK,CAAC,CAAC;EACrE,oBAAA,IAAI,OAAO,EAAE;EACX,wBAAA,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;0BAChE,MAAM;EACP,qBAAA;EACF,iBAAA;EACF,aAAA;WACF,EAAE,GAAG,CAAC,CAAC;OACT,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,MAAsB,EAAE,QAAwB,EAAA;UAArD,IA2EC,KAAA,GAAA,IAAA,CAAA;EA3EI,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAsB,GAAA,IAAA,CAAA,EAAA;EAAE,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAwB,GAAA,IAAA,CAAA,EAAA;;;EAEnD,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc;cAAE,OAAO;EAErD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;UACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;cAC3C,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE;kBACtI,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;EAC/E,aAAA;EAAM,iBAAA;kBACL,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;EACjF,aAAA;EACF,SAAA;EAED,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAC9D,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,2BAA2B,EAChC,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,QAAQ,CACd,CAAC;EAEF,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,EAAE;EACpD,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC;cAClE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;EAC7C,SAAA;EAED,QAAA,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;EAC/E,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;kBACzB,UAAU,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,0CAAE,EAAE;EACrC,gBAAA,gBAAgB,EAAE,OAAO;EACzB,gBAAA,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC;EACvG,aAAA,CAAC,CAAC;EACH,YAAA,IAAI,MAAM,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;kBACvE,IAAI,CAAC,gBAAgB,EAAE,CAAC;EACzB,aAAA;cACD,OAAO;EACR,SAAA;UACD,IAAI,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,IAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;EACvJ,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;cACrC,IAAM,YAAY,GAAQ,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;cACjF,IAAI,IAAI,CAAC,kBAAkB,EAAE;kBAC3B,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC;EAC1D,aAAA;cACD,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;EACjE,SAAA;UACD,OAAO,CAAC,SAAS,CAAC;cAChB,IAAI,EAAE,UAAC,GAAQ,EAAA;;EACb,gBAAA,KAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;EAC5B,gBAAA,KAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;kBAC5B,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,2BAA2B,EAAE;sBAC/E,KAAI,CAAC,WAAW,EAAE,CAAC;;sBAEnB,KAAI,CAAC,oBAAoB,EAAE,CAAC;EAC7B,iBAAA;EACD,gBAAA,KAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;EAClE,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,gBAAA,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;EACzB,oBAAA,UAAU,EAAE,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,GAAG;EAC5C,oBAAA,gBAAgB,EAAE,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,IAAG,KAAI,CAAC,gBAAgB,GAAG,OAAO;sBAC7E,SAAS,EAAE,MAAM,KAAK,KAAI,CAAC,gBAAgB,IAAI,KAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,KAAI,CAAC,YAAY,IAAI,KAAI,CAAC,gBAAgB,CAAC;EAChI,iBAAA,CAAC,CAAC;EACH,gBAAA,IAAI,MAAM,IAAI,KAAI,CAAC,gBAAgB,GAAG,KAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAI,CAAC,gBAAgB,EAAE;sBACjG,KAAI,CAAC,gBAAgB,EAAE,CAAC;EACzB,iBAAA;kBACD,IAAI,KAAI,CAAC,gBAAgB,EAAE;sBACzB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,yCAAyC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;EACnH,iBAAA;eACF;cACD,KAAK,EAAE,UAAA,KAAK,EAAA;;EACV,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;kBAC1B,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,sCAAsC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAChH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,IAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;eAC/E;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;MAED,wBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,UAAkB,EAAA;UAApC,IAcC,KAAA,GAAA,IAAA,CAAA;UAbC,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;cAClE,IAAI,EAAE,UAAC,GAAQ,EAAA;;EACb,gBAAA,KAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;kBAC5B,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,2BAA2B,EAAE;sBAC/E,KAAI,CAAC,WAAW,EAAE,CAAC;EACpB,iBAAA;EACD,gBAAA,KAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;eACnE;cACD,KAAK,EAAE,UAAA,KAAK,EAAA;kBACV,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,qCAAqC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAC/G,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;eAC/B;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;MAED,wBAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,QAAgB,EAAA;EAClC,QAAA,IAAI,CAAC,QAAQ;EAAE,YAAA,OAAO,IAAI,CAAC;EAC3B,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;EAClC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;EACvC,SAAA;UACD,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;EAC1C,QAAA,IAAM,UAAU,GAAG,gCAAiC,GAAA,OAAS,CAAC;EAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;EAC3F,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;OACvC,CAAA;MAED,wBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,QAAgB,EAAA;UACzB,IAAI,OAAO,GAAG,IAAI,CAAC;EACnB,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;cACpC,OAAO,GAAG,2KAA2K,CAAC;EACvL,SAAA;EAAM,aAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;cACxC,OAAO,GAAG,gCAAgC,CAAC;EAC5C,SAAA;EACD,QAAA,IAAI,OAAO,EAAE;cACX,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;EACtC,YAAA,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;EACrB,gBAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;EACjB,aAAA;EACF,SAAA;EACD,QAAA,OAAO,IAAI,CAAC;OACb,CAAA;MAED,wBAAsB,CAAA,SAAA,CAAA,sBAAA,GAAtB,UAAuB,OAA6B,EAAA;EAClD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;EAC7C,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,QAAQ,EAAE,KAAK;EACf,YAAA,KAAK,EAAE,qBAAqB;EAC5B,YAAA,SAAS,EAAE,OAAO;cAClB,UAAU,EAAE,CAAC,mBAAmB,CAAC;EACjC,YAAA,IAAI,EAAE;kBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;EAC7B,gBAAA,cAAc,EAAE,OAAO;kBACvB,eAAe,EAAE,IAAI,CAAC,eAAe;EACtC,aAAA;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,KAAU,EAAE,OAAY,EAAE,MAA0B,EAAA;UAC9D,IAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;UACvC,IAAI,UAAU,GAAG,CAAC,EAAE;cAClB,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;cACrC,IAAI,GAAG,GAAG,UAAU,EAAE;EACpB,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;kBAChC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,aAAA;EACF,SAAA;OACF,CAAA;MAED,wBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,KAAoB,EAAA;EACvC,QAAA,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;cAC5C,KAAK,CAAC,cAAc,EAAE,CAAC;EACxB,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;EACE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;EAC1C,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;EACxB,YAAA,QAAQ,EAAE,MAAM;EAChB,YAAA,KAAK,EAAE,OAAO;EACd,YAAA,MAAM,EAAE,QAAQ;EAChB,YAAA,SAAS,EAAE,QAAQ;EACnB,YAAA,UAAU,EAAE,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;EACvE,YAAA,WAAW,EAAE,IAAI;EACjB,YAAA,IAAI,EAAE;kBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,UAAU,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAI,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA;kBAC9D,YAAY,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,0CAAE,IAAI;EACtC,aAAA;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;MAED,wBAAyB,CAAA,SAAA,CAAA,yBAAA,GAAzB,UAA0B,SAAwB,EAAA;EAChD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;EACzC,YAAA,SAAS,EAAE,OAAO;EAClB,YAAA,QAAQ,EAAE,MAAM;EAChB,YAAA,KAAK,EAAE,OAAO;cACd,UAAU,EAAE,CAAC,mBAAmB,CAAC;EACjC,YAAA,IAAI,EAAE;kBACJ,KAAK,EAAE,IAAI,CAAC,WAAW;EACvB,gBAAA,SAAS,EAAA,SAAA;EACV,aAAA;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;;MAID,wBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,iBAAyB,EAAA;UAApC,IAeC,KAAA,GAAA,IAAA,CAAA;UAdC,IAAI,IAAI,CAAC,aAAa,EAAE;EACtB,YAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACnC,SAAA;EACD,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;UAC/C,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAEzB,QAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,YAAA;EAC/B,YAAA,IAAI,KAAI,CAAC,aAAa,GAAG,CAAC,EAAE;kBAC1B,KAAI,CAAC,aAAa,EAAE,CAAC;kBACrB,KAAI,CAAC,iBAAiB,EAAE,CAAC;EAC1B,aAAA;EAAM,iBAAA;kBACL,KAAI,CAAC,UAAU,EAAE,CAAC;EACnB,aAAA;WACF,EAAE,IAAI,CAAC,CAAC;OACV,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;EACE,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;EACpD,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;EACxC,QAAA,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EACvD,QAAA,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EACvD,QAAA,IAAI,CAAC,WAAW,GAAM,aAAa,GAAA,GAAA,GAAI,aAAe,CAAC;EACvD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;OAC1B,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;UACE,IAAI,IAAI,CAAC,aAAa,EAAE;EACtB,YAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACnC,SAAA;EACD,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EACvB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;UACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;UACzB,IAAI,CAAC,WAAW,EAAE,CAAC;EACnB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;UAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;OACb,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UAAA,IAUC,KAAA,GAAA,IAAA,CAAA;;EATC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;UACrB,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAA,KAAK,EAAA;;EACnC,YAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,CAAC,MAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAA,GAAG,EAAA;;kBAClD,IAAI,KAAI,CAAC,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;sBAC9C,OAAO;EACR,iBAAA;EACD,gBAAA,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAC;EAC/C,aAAC,CAAC,CAAC;EACL,SAAC,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,KAAa,EAAE,OAAY,EAAA;EAC1C,QAAA,OAAO,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7D,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,UAAuB,KAAa,EAAE,EAAO,EAAA;UAC3C,IAAI,CAAA,EAAE,KAAF,IAAA,IAAA,EAAE,uBAAF,EAAE,CAAE,UAAU,KAAI,IAAI;EAAE,YAAA,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;UACvD,IAAI,CAAA,EAAE,KAAF,IAAA,IAAA,EAAE,uBAAF,EAAE,CAAE,EAAE,KAAI,IAAI;EAAE,YAAA,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;UACvC,OAAO,GAAG,GAAG,KAAK,CAAC;OACpB,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAa,EAAE,MAAW,EAAA;;EACxC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5E,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,KAAa,EAAE,EAAO,EAAA;EACnC,QAAA,OAAO,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5C,CAAA;;;8IAjmCU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAhC,eAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAvB,aAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAwB,aAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAApC,aAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAArC,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAxB,wBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,0iCCzBrC,6o8BAkbc,EAAA,MAAA,EAAA,CAAA,01YAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAsC,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,cAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,gCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAX,aAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAAW,eAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAV,aAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAtC,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAiD,cAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,cAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,mCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,qCAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,sCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAjD,eAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAgD,eAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAhD,eAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAAkD,WAAA,EAAA,EAAA,CAAA,CAAA;oHDzZD,wBAAwB,EAAA,UAAA,EAAA,CAAA;oBANpC/C,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,sBAAsB;EAChC,oBAAA,WAAW,EAAE,mCAAmC;sBAChD,SAAS,EAAE,CAAC,mCAAmC,CAAC;mBACjD,CAAA;sUAGU,WAAW,EAAA,CAAA;wBAAnBW,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,UAAU,EAAA,CAAA;wBAAlBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,oBAAoB,EAAA,CAAA;wBAA5BA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,eAAe,EAAA,CAAA;wBAAvBA,QAAK;kBACG,iBAAiB,EAAA,CAAA;wBAAzBA,QAAK;kBACG,gBAAgB,EAAA,CAAA;wBAAxBA,QAAK;kBACG,eAAe,EAAA,CAAA;wBAAvBA,QAAK;kBACG,gBAAgB,EAAA,CAAA;wBAAxBA,QAAK;kBACG,kBAAkB,EAAA,CAAA;wBAA1BA,QAAK;kBACG,kBAAkB,EAAA,CAAA;wBAA1BA,QAAK;kBAGG,uBAAuB,EAAA,CAAA;wBAA/BA,QAAK;kBACG,iBAAiB,EAAA,CAAA;wBAAzBA,QAAK;kBAEI,eAAe,EAAA,CAAA;wBAAxBC,SAAM;kBACG,gBAAgB,EAAA,CAAA;wBAAzBA,SAAM;kBACG,WAAW,EAAA,CAAA;wBAApBA,SAAM;kBACG,gBAAgB,EAAA,CAAA;wBAAzBA,SAAM;kBA0CP,QAAQ,EAAA,CAAA;wBADPoC,eAAY;yBAAC,eAAe,CAAA;kBAW7B,cAAc,EAAA,CAAA;wBADbA,eAAY;yBAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,CAAA;kBAc/C,UAAU,EAAA,CAAA;wBADTA,eAAY;yBAAC,iBAAiB,CAAA;;;EEtGjC,IAAM,gBAAgB,GAAG;MACrBC,4BAAwB;MACxBC,qBAAkB;MAClBC,kBAAe;MACfC,oBAAc;MACdC,kBAAa;MACbC,kBAAe;MACfC,sBAAgB;MAChBC,gBAAa;MACbC,iBAAa;MACbC,wBAAmB;MACnBC,sBAAmB;GACtB,CAAC;EAMF,IAAA,eAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,eAAA,GAAA;;;;qIAAa,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAhE,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;EAAf,eAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,eAAe,YAjBxBsD,4BAAwB;UACxBC,qBAAkB;UAClBC,kBAAe;UACfC,oBAAc;UACdC,kBAAa;UACbC,kBAAe;UACfC,sBAAgB;UAChBC,gBAAa;UACbC,iBAAa;UACbC,wBAAmB;EACnB,QAAAC,sBAAmB,aAVnBV,4BAAwB;UACxBC,qBAAkB;UAClBC,kBAAe;UACfC,oBAAc;UACdC,kBAAa;UACbC,kBAAe;UACfC,sBAAgB;UAChBC,gBAAa;UACbC,iBAAa;UACbC,wBAAmB;UACnBC,sBAAmB,CAAA,EAAA,CAAA,CAAA;sIAOV,eAAe,EAAA,OAAA,EAAA,CAHf,gBAAgB,EAdzBV,4BAAwB;UACxBC,qBAAkB;UAClBC,kBAAe;UACfC,oBAAc;UACdC,kBAAa;UACbC,kBAAe;UACfC,sBAAgB;UAChBC,gBAAa;UACbC,iBAAa;UACbC,wBAAmB;UACnBC,sBAAmB,CAAA,EAAA,CAAA,CAAA;oHAOV,eAAe,EAAA,UAAA,EAAA,CAAA;oBAJ3BC,WAAQ;EAAC,YAAA,IAAA,EAAA,CAAA;EACN,oBAAA,OAAO,EAAE,gBAAgB;EACzB,oBAAA,OAAO,EAAE,gBAAgB;mBAC5B,CAAA;;;ECCD,IAAA,YAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,YAAA,GAAA;;;;kIAAa,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAjE,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;EAAZ,YAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,YAAY,iBApBjB,mBAAmB;UACnB,WAAW;UACX,wBAAwB;EACxB,QAAA,2BAA2B,aAG3BkE,iBAAY;UACZC,gBAAW;UACXC,wBAAmB;UACnB,eAAe;EACf,QAAAC,wBAAmB,aAGnB,mBAAmB;UACnB,wBAAwB;UACxB,2BAA2B;UAC3B,eAAe;UACf,WAAW,CAAA,EAAA,CAAA,CAAA;EAGN,YAAA,CAAA,IAAA,GAAArE,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,YAAY,EAfZ,OAAA,EAAA,CAAA;cACLkE,iBAAY;cACZC,gBAAW;cACXC,wBAAmB;cACnB,eAAe;cACfC,wBAAmB;EACtB,SAAA,EAKG,eAAe,CAAA,EAAA,CAAA,CAAA;oHAIV,YAAY,EAAA,UAAA,EAAA,CAAA;oBAtBxBJ,WAAQ;EAAC,YAAA,IAAA,EAAA,CAAA;EACN,oBAAA,YAAY,EAAE;0BACV,mBAAmB;0BACnB,WAAW;0BACX,wBAAwB;0BACxB,2BAA2B;EAC9B,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACLC,iBAAY;0BACZC,gBAAW;0BACXC,wBAAmB;0BACnB,eAAe;0BACfC,wBAAmB;EACtB,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACL,mBAAmB;0BACnB,wBAAwB;0BACxB,2BAA2B;0BAC3B,eAAe;0BACf,WAAW;EACd,qBAAA;mBACJ,CAAA;;;ACaD,MAAA,qBAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,qBAAA,GAAA;;;;2IAAa,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAArE,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;EAArB,qBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,qBAAqB,iBAxB9B,wBAAwB;UACxB,2BAA2B;UAC3B,+BAA+B;UAC/B,yBAAyB;UACzB,gCAAgC;UAChC,8BAA8B;UAC9B,+BAA+B;UAC/B,0BAA0B;UAC1B,4BAA4B;UAC5B,+BAA+B;UAC/B,yBAAyB;EACzB,QAAA,0BAA0B,aAG1BkE,iBAAY;UACZ,YAAY;UACZ,eAAe;UACfC,gBAAW;UACXC,wBAAmB,aAGnB,wBAAwB,CAAA,EAAA,CAAA,CAAA;EAGf,qBAAA,CAAA,IAAA,GAAApE,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,qBAAqB,EAXvB,OAAA,EAAA,CAAA;cACPkE,iBAAY;cACZ,YAAY;cACZ,eAAe;cACfC,gBAAW;cACXC,wBAAmB;WACpB,CAAA,EAAA,CAAA,CAAA;oHAKU,qBAAqB,EAAA,UAAA,EAAA,CAAA;oBA1BjCH,WAAQ;EAAC,YAAA,IAAA,EAAA,CAAA;EACR,oBAAA,YAAY,EAAE;0BACZ,wBAAwB;0BACxB,2BAA2B;0BAC3B,+BAA+B;0BAC/B,yBAAyB;0BACzB,gCAAgC;0BAChC,8BAA8B;0BAC9B,+BAA+B;0BAC/B,0BAA0B;0BAC1B,4BAA4B;0BAC5B,+BAA+B;0BAC/B,yBAAyB;0BACzB,0BAA0B;EAC3B,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACPC,iBAAY;0BACZ,YAAY;0BACZ,eAAe;0BACfC,gBAAW;0BACXC,wBAAmB;EACpB,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACP,wBAAwB;EACzB,qBAAA;mBACF,CAAA;;;ECjCD,IAAA,mCAAA,kBAAA,YAAA;MAOE,SACS,mCAAA,CAAA,SAA4D,EACnC,UAAe,EAAA;EADxC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAmD;EACnC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;EARjD,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAC;EAChC,QAAA,IAAc,CAAA,cAAA,GAAgC,IAAI,CAAC;EACnD,QAAA,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;OAKjB;EAEL,IAAA,mCAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;EACE,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,EAAE,CAAC;EACtD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,EAAE,CAAC;EACtD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,CAAC;EACjE,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;EAChG,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;EACrE,SAAA;EACD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,EAAE,CAAC;OACrD,CAAA;EAED,IAAA,mCAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,mCAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;EAAnB,QAAA,GAAA,EAAA,YAAA;cACE,IAAI,CAAC,IAAI,CAAC,QAAQ;EAAE,gBAAA,OAAO,IAAI,CAAC;cAChC,IAAM,UAAU,GAAG,4EAA4E,CAAC;cAChG,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;WACvC;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,mCAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;UACE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;OACvG,CAAA;;;EAlCU,mCAAA,CAAA,IAAA,GAAApE,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,mCAAmC,yDASpCC,kBAAe,EAAA,CAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EATd,mCAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,oFCVhD,w7EAuCM,EAAA,MAAA,EAAA,CAAA,y7XAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAsB,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAnB,aAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHD7BO,mCAAmC,EAAA,UAAA,EAAA,CAAA;oBAL/CP,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,mCAAmC;EAC7C,oBAAA,WAAW,EAAE,gDAAgD;sBAC7D,SAAS,EAAE,CAAC,gDAAgD,CAAC;mBAC9D,CAAA;;;gCAUIC,SAAM;iCAACL,kBAAe,CAAA;;;;EEX3B,IAAA,wBAAA,kBAAA,YAAA;EAQI,IAAA,SAAA,wBAAA,GAAA;EANQ,QAAA,IAAoB,CAAA,oBAAA,GAAe,EAAE,CAAC;OAM7B;MAJjB,wBAAuB,CAAA,SAAA,CAAA,uBAAA,GAAvB,UAAwB,KAAiB,EAAA;EACrC,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;OACrC,CAAA;EAID,IAAA,wBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,QAAa,EAAE,gBAAgD,EAAA;UAA9E,IAsFC,KAAA,GAAA,IAAA,CAAA;EAtF6B,QAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAgD,GAAA,EAAA,CAAA,EAAA;;UAE1E,IAAM,kBAAkB,GAAG,CAAC,CAAA,gBAAgB,KAAA,IAAA,IAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,eAAe,KAAI,EAAE;EAC9D,aAAA,MAAM,CAAC,UAAC,GAAQ,EAAE,MAAW,EAAA;EAC1B,YAAA,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;EAC/B,YAAA,OAAO,GAAG,CAAC;WACd,EAAE,EAAE,CAAC,CAAC;EAEX,QAAA,IAAM,eAAe,GAAG;cACpB,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,EAAE;cACvH,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,EAAE;cACvH,EAAE,SAAS,EAAE,uBAAuB,EAAE,WAAW,EAAE,QAAQ,CAAC,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,IAAI,EAAE;cACnI,EAAE,SAAS,EAAE,uBAAuB,EAAE,WAAW,EAAE,QAAQ,CAAC,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,IAAI,EAAE;cACnI,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE;cACrG,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,EAAE;;WAE3G,CAAC,GAAG,CAAC,UAAA,MAAM,EAAA;;cAAI,wBACZ,EAAE,EAAE,CAAA,CAAA,EAAA,GAAA,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,0CAAE,EAAE,KAAI,CAAC,EAC9C,EAAA,MAAM,GACX;EAAA,SAAA,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;UAEpB,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACO,gBAAgB,CAAA,EAAA,EACnB,YAAY,EAAE,CAAC;EACX,oBAAA,EAAE,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,gBAAgB,aAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,YAAY,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,CAAC;EAChD,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;EACzB,oBAAA,IAAI,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;mBACpC,CAAC,EACF,eAAe,EAAE,QAAQ,CAAC,eAAe,GAAG,CAAC;EACzC,oBAAA,EAAE,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,gBAAgB,aAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,eAAe,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,CAAC;EACnD,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;sBACzB,IAAI,EAAE,QAAQ,CAAC,eAAe;EACjC,iBAAA,CAAC,GAAG,EAAE,EACP,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,EACnD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,eAAe,KAAI,CAAA,EAAA,GAAA,QAAQ,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAA,IAAI,EAAE,EAAE,EACjI,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,KAAK,EAC1C,eAAe,EAAE,QAAQ,CAAC,eAAe,IAAI,KAAK,EAClD,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,EACxC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,EACjC,QAAQ,EAAE,QAAQ,CAAC,aAAa,IAAI,EAAE,EACtC,kBAAkB,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE,EAC9C,UAAU,EAAE,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,UAAC,KAAU,EAAK,EAAA,QAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,+BAA+B,EAAE,IAAC,CAAC,KAAI,EAAE,EACzH,eAAe,iBAAA,EACf,kBAAkB,EAAE,CAAC,YAAA;kBACjB,IAAM,eAAe,GAAG,CAAA,gBAAgB,KAAhB,IAAA,IAAA,gBAAgB,KAAhB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAgB,CAAE,kBAAkB,KAAI,EAAE,CAAC;EACnE,gBAAA,IAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;;kBAG3C,IAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,GAAQ,EAAE,KAAa,EAAA;;EAC7D,oBAAA,IAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA,EAAA,CAAC,IAAI,EAAE,CAAC;EAEtF,oBAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACO,WAAW,CACd,EAAA,EAAA,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EACf,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAClC,OAAO,EAAE,KAAK,GAAG,CAAC,EAClB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,EAC/B,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,KAAK,EAC7C,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,KAAK,EAChC,OAAO,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GACC,WAAW,CAAC,OAAO,IAAI,EAAE,EAC7B,EAAA,EAAA,EAAE,EAAE,CAAA,CAAA,EAAA,GAAA,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAI,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA,IAAI,CAAC,EACpD,UAAU,EAAE,CAAC;EACT,oCAAA,EAAE,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,0CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,CAAC;EACjD,oCAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;EACzB,oCAAA,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;EAC9B,iCAAA,CAAC,EAAA,CAAA,GACE,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,KAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,EAE1F,EAAA,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,WAAW,CAAC,iBAAiB,IAAI,EAAE,EAAA,CAAA,GAC3E,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,KAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,EACxF,CAAA;EACN,iBAAC,CAAC,CAAC;;EAGH,gBAAA,IAAM,aAAa,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,CAAC,CAAC,EAAE,CAAJ,EAAI,CAAC,CAAC,MAAM,CAAC,UAAC,EAAU,EAAA,EAAK,OAAA,EAAE,KAAK,CAAC,CAAA,EAAA,CAAC,CAAC,CAAC;kBACvG,IAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,UAAA,EAAE,EAAA,EAAI,OAAA,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC,GAAG,CAAC,UAAA,EAAE,EAAI,EAAA,QAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,EAAE,CAAE,EAAA,EAAA,QAAQ,EAAE,KAAK,EAAA,CAAA,EAAG,EAAA,CAAC,CAAC;kBAEhI,OAAW,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,gBAAgB,CAAK,CAAA,EAAA,MAAA,CAAA,cAAc,CAAE,CAAA,CAAA;EACpD,aAAC,GAAG,EACD,CAAA,GAAC,EAAC,gBAAgB,KAAA,IAAA,IAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,EAAE,CAAA,IACrB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAE,EAAE,CAAC,EACF,GAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,EACnF,GAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE,EACzF,EACH,CAAA;OACL,CAAA;MAED,wBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,YAAgC,EAAA;;EAC3C,QAAA,IAAM,SAAS,GAAG,UAAC,GAAW,IAAK,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,GAAG,CAAnB,EAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CAAA,EAAA,CAAC;UAE7G,OAAO;cACH,EAAE,EAAE,YAAY,CAAC,EAAE;cACnB,YAAY,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,EAAE;cACxD,eAAe,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,EAAE;EAC9D,YAAA,YAAY,EAAE,CAAA,CAAA,EAAA,GAAA,YAAY,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,KAAI,EAAE;EACnD,YAAA,WAAW,EAAE,YAAY,CAAC,WAAW,IAAI,KAAK;EAC9C,YAAA,eAAe,EAAE,YAAY,CAAC,eAAe,IAAI,KAAK;EACtD,YAAA,UAAU,EAAE,YAAY,CAAC,MAAM,IAAI,CAAC;EACpC,YAAA,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,EAAE;EACrC,YAAA,aAAa,EAAE,YAAY,CAAC,QAAQ,IAAI,EAAE;EAC1C,YAAA,iBAAiB,EAAE,SAAS,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,GAAG,IAAI;EACjG,YAAA,iBAAiB,EAAE,SAAS,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,GAAG,IAAI;EACjG,YAAA,qBAAqB,EAAE,SAAS,CAAC,uBAAuB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,GAAG,IAAI;EAC7G,YAAA,qBAAqB,EAAE,SAAS,CAAC,uBAAuB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,GAAG,IAAI;EAC7G,YAAA,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI;EAC/E,YAAA,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI;;EAElF,YAAA,WAAW,EAAE,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,kBAAkB;cAC7C,UAAU,EAAE,CAAA,CAAA,EAAA,GAAA,YAAY,aAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,UAAC,KAAU,EAAK,EAAA,OAAA,KAAK,CAAC,IAAI,CAAA,EAAA,CAAC,KAAI,EAAE;EAC3E,YAAA,OAAO,EAAE,CAAA,CAAA,EAAA,GAAA,YAAY,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,UAAA,GAAG,EAAA;;EAAI,gBAAA,QAAC;sBAClD,EAAE,EAAE,GAAG,CAAC,EAAE;sBACV,IAAI,EAAE,GAAG,CAAC,IAAI;EACd,oBAAA,WAAW,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,0CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,EAAE;EACrD,oBAAA,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC;EACvB,oBAAA,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,KAAK;EAC7C,oBAAA,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,KAAK;EAChC,oBAAA,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;EACjD,iBAAA,EAAC;eAAA,CAAC,KAAI,EAAE;cACT,cAAc,EAAE,CAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,uBAAZ,YAAY,CAAE,cAAc,KAAI,EAAE;WACrD,CAAA;OACJ,CAAA;MAED,wBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,QAAgB,EAAA;;UAC7B,OAAA,MAAA,CAAA,MAAA,CAAA,EACI,EAAE,EAAE,CAAC,EACL,OAAO,EAAE,CAAC;EACN,oBAAA,EAAE,EAAE,CAAC;EACL,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;sBACzB,IAAI,EAAE,aAAW,QAAU;EAC9B,iBAAA,CAAC,EACF,OAAO,EAAE,QAAQ,EACjB,oBAAoB,EAAE,EAAE,EACxB,UAAU,EAAE,CAAC,EACb,cAAc,EAAE,CAAC,EACd,GAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,EAAE,EACzF,CAAA;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,uBAAuB,GAAvB,UAAwB,QAA4B,EAAE,eAAqC,EAAA;EAArC,QAAA,IAAA,eAAA,KAAA,KAAA,CAAA,EAAA,EAAA,eAAqC,GAAA,EAAA,CAAA,EAAA;;EACvF,QAAA,OACI,MAAA,CAAA,MAAA,CAAA,EAAA,EAAE,EAAE,CAAA,eAAe,KAAA,IAAA,IAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,EAAE,KAAI,CAAC,EAC5B,QAAQ,EAAA,QAAA,EACR,WAAW,EAAE,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,WAAW,EAC/B,GAAC,EAAC,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,EAAE,CAAA,KAAI,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,IAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,EACjH,CAAA;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,UAAyB,aAAsC,EAAE,YAAgD,EAAA;;EAC7G,QAAA,IAAI,CAAC,aAAa;EAAE,YAAA,OAAO,aAAa,CAAC;UAEzC,IAAI,EAAC,aAAa,aAAb,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAb,aAAa,CAAE,EAAE,CAAA,KAAI,MAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,EAAE;EACzD,YAAA,aAAa,CAAC,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC;EAC5D,SAAA;EAGD,QAAA,CAAA,EAAA,GAAA,aAAa,CAAC,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,UAAC,OAAY,EAAE,MAAc,EAAA;;EACzE,YAAA,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;cAE7B,IAAI,YAAY,GAAG,CAAC,CAAC;cACrB,IAAI,qBAAqB,GAAG,CAAC,CAAC;EAE9B,YAAA,CAAA,EAAA,GAAA,OAAO,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,UAAC,CAAkB,EAAE,MAAc,EAAA;EACrE,gBAAA,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;kBACvB,IAAM,QAAQ,GAAG,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,QAAQ,KAAI,YAAY,CAAC,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,UAAU,KAAI,CAAC,CAAC,CAAC,CAAC;EAClE,gBAAA,IAAI,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE;sBAClC,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC7C,oBAAA,qBAAqB,EAAE,CAAC;EAC3B,iBAAA;EACL,aAAC,CAAC,CAAC;EAEH,YAAA,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC;EAClC,YAAA,OAAO,CAAC,cAAc,GAAG,qBAAqB,CAAC;EACnD,SAAC,CAAC,CAAC;EAEH,QAAA,OAAO,aAAa,CAAC;OACxB,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,UAAsB,YAAoB,EAAE,aAAsC,EAAE,iBAA4B,EAAA;;EAC5G,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACI,EAAE,EAAE,YAAY,EAChB,WAAW,EAAE,CAAA,CAAA,EAAA,GAAA,aAAa,aAAb,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAb,aAAa,CAAE,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,UAAC,OAAY,IAAK,OAAA,OAAO,CAAC,QAAQ,KAAK,KAAK,CAA1B,EAA0B,CAAA,CAAE,MAAM,CAAC,UAAC,GAAW,EAAE,OAAY,IAAK,OAAA,GAAG,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAA,EAAA,EAAE,CAAC,CAAC,KAAI,CAAC,EAAA,GACrL,CAAC,YAAY,IACV,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,oBAAoB,CAC/B,EAAC,GACE,iBAAiB,IAAI,EAAE,iBAAiB,EAAA,iBAAA,EAAE,EAAC,EAAA,EAC/C,oBAAoB,EAAE,IAAI,EAC5B,CAAA,CAAA;OACL,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,6BAA6B,GAA7B,UAA8B,YAAoB,EAAE,4BAAgD,EAAE,QAAiB,EAAA;;EACnH,QAAA,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;EACnB,QAAA,IAAI,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;EAC3B,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;EACzB,QAAA,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;EACtB,QAAA,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;UAC9C,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACI,EAAE,EAAE,CAAC,EACL,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,IAAI,IAAI,EAAE,EACrB,UAAU,kBACN,EAAE,EAAE,YAAY,EACb,GAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,KAAI,EAAE,MAAM,EAAE,MAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,EAAC,EAE3F,cAAc,EAAE;EACZ,gBAAA,IAAI,EAAE,oBAAoB;EAC7B,aAAA,EACE,EAAA,4BAA4B,CAE5B,GAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAA,QAAA,EAAE,EACvC,CAAA;OACJ,CAAA;EAED;;;EAGG;EACH,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,UAAmB,aAAsB,EAAE,oBAA4B,EAAE,eAAuB,EAAA;EAC5F,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,oBAAoB,EAAE;EACzC,YAAA,OAAO,EAAE,CAAC;EACb,SAAA;EACD,QAAA,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC;OAC1F,CAAA;;;8IAxOQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;EAAxB,wBAAA,CAAA,KAAA,GAAAA,aAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,wBAAwB,cAFrB,MAAM,EAAA,CAAA,CAAA;oHAET,wBAAwB,EAAA,UAAA,EAAA,CAAA;oBAHpCW,aAAU;EAAC,YAAA,IAAA,EAAA,CAAA;EACR,oBAAA,UAAU,EAAE,MAAM;mBACrB,CAAA;;;ECFD,IAAA,sBAAA,kBAAA,YAAA;EAGE,IAAA,SAAA,sBAAA,CACU,IAAgB,EAAA;;EAAhB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;UAHT,IAAA,CAAA,aAAa,GAAG,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;OAIlE;EAEG,IAAA,sBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;UACN,OAAO,IAAIJ,gBAAW,EAAE,CAAC,GAAG,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;OACxE,CAAA;MAED,sBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,MAAW,EAAA;;EACtB,QAAA,IAAI,KAAK,GAAG,IAAIC,eAAU,EAAE,CAAC;;cAC7B,KAAkB,IAAA,EAAA,GAAA,QAAA,CAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;EAAlC,gBAAA,IAAM,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;EACZ,gBAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EACrC,aAAA;;;;;;;;;EACD,QAAA,OAAO,KAAK,CAAC;OACd,CAAA;MAED,sBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,QAAgB,EAAA;EAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,IAAI,CAAC,aAAa,GAAA,6BAAA,GAA8B,QAAQ,GAAA,OAAO,CAAC,CAAC;OAC1F,CAAA;MAED,sBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,oBAA4B,EAAA;EAC3C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC8D,yBAAqC,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,oBAAoB,EAAA,oBAAA,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC5J,CAAA;MAED,sBAAgC,CAAA,SAAA,CAAA,gCAAA,GAAhC,UAAiC,OAAY,EAAA;UAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,0BAA0B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAClI,CAAA;MAED,sBAA+B,CAAA,SAAA,CAAA,+BAAA,GAA/B,UAAgC,OAAY,EAAA;UAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAACA,yBAAqC,CAAC,0BAA0B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACnI,CAAA;MAED,sBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAY,EAAA;UACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACtH,CAAA;MAED,sBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,OAAY,EAAA;UACxB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAACA,yBAAqC,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACtH,CAAA;MAED,sBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,MAAiC,EAAA;UACjD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAA,MAAA,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACvH,CAAA;MAED,sBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,MAAW,EAAA;EAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC9I,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,eAAuB,EAAE,SAAiB,EAAA;;UACzD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAAA,yBAAqC,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,4BAA4B,EAAE,eAAe,aAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,QAAQ,EAAE,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,YAAY,EAAE,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACtO,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,SAAiB,EAAE,iBAAyB,EAAA;;UAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAAA,yBAAqC,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,YAAY,EAAE,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,QAAQ,EAAE,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,oBAAoB,EAAE,iBAAiB,aAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACjO,CAAA;MAED,sBAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,OAAY,EAAA;UACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,wBAAwB,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAChI,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,IAAY,EAAE,MAAW,EAAA;EACxC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACC,iBAA6B,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACzJ,CAAA;;;4IAjEU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApE,eAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gJAAtB,sBAAsB,EAAA,CAAA,CAAA;oHAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;oBADlCW,aAAU;;;ECYX,IAAA,0BAAA,kBAAA,YAAA;MAqBI,SACY,0BAAA,CAAA,WAAwB,EACxB,wBAAkD,EAClD,sBAA8C,EAC/C,SAAmD,EAC1B,UAAe,EAAA;EAJvC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;EACxB,QAAA,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;EAClD,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EAC/C,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAA0C;EAC1B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;EAzBnD,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;EACnC,QAAA,IAAe,CAAA,eAAA,GAA8B,IAAI,CAAC;EAClD,QAAA,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;EAChB,QAAA,IAAa,CAAA,aAAA,GAAuG,EAAE,CAAC;EAGvH,QAAA,IAAmB,CAAA,mBAAA,GAAyF,EAAE,CAAC;EAG/G,QAAA,IAAY,CAAA,YAAA,GAAuC,EAAE,CAAC;EACtD,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;;EAGzB,QAAA,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;EAEzB,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;EAC9B,QAAA,IAAU,CAAA,UAAA,GAAc,EAAE,CAAC;OAQtB;EAEL,IAAA,0BAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;EACI,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EAChD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EAChD,QAAA,IAAI,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;EACpC,QAAA,IAAI,CAAC,aAAa,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAC;EACpD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC;EAClD,QAAA,IAAI,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC;EACxC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,KAAI,EAAE,CAAC;EACpD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC;EAElD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;EACjC,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,eAAe,CAAC,CAAC;EACtE,SAAA;UACD,IAAI,CAAC,cAAc,EAAE,CAAC;UACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;OACjC,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,yBAAyB,GAAzB,YAAA;UAAA,IAaC,KAAA,GAAA,IAAA,CAAA;;UAZG,IAAI,IAAI,CAAC,OAAO,EAAE;EACd,YAAA,OAAO,EAAE,CAAC;EACb,SAAA;EACD,QAAA,IAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;UAEpC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAA,MAAM,EAAA;;EACpD,YAAA,CAAA,EAAA,GAAA,MAAM,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAjB,EAAiB,CAAC,CAAC;EAC/D,SAAC,CAAC,CAAC;EAEH,QAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAC,UAAA,EAAE,EAAA;cAChC,OAAO,KAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;WAC1E,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,OAAO,CAAyB,CAAC;OAC/C,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;UAAA,IA2CC,KAAA,GAAA,IAAA,CAAA;;UA1CG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;EAC7C,YAAA,YAAY,EAAE,CAAC,EAAE,EAAEsB,eAAU,CAAC,QAAQ,CAAC;EACvC,YAAA,YAAY,EAAE,CAAC,EAAE,EAAEA,eAAU,CAAC,QAAQ,CAAC;cACvC,eAAe,EAAE,CAAC,EAAE,CAAC;cACrB,eAAe,EAAE,CAAC,KAAK,CAAC;cACxB,WAAW,EAAE,CAAC,KAAK,CAAC;;cAEpB,UAAU,EAAE,CAAC,IAAI,CAAC;cAClB,iBAAiB,EAAE,CAAC,IAAI,CAAC;cACzB,iBAAiB,EAAE,CAAC,IAAI,CAAC;cACzB,qBAAqB,EAAE,CAAC,IAAI,CAAC;cAC7B,qBAAqB,EAAE,CAAC,IAAI,CAAC;cAC7B,WAAW,EAAE,CAAC,IAAI,CAAC;cACnB,YAAY,EAAE,CAAC,IAAI,CAAC;cACpB,WAAW,EAAE,CAAC,EAAE,CAAC;cACjB,QAAQ,EAAE,CAAC,EAAE,CAAC;cACd,aAAa,EAAE,CAAC,EAAE,CAAC;cACnB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;cACnC,cAAc,EAAE,CAAC,EAAE,CAAC;cACpB,UAAU,EAAE,CAAC,EAAE,CAAC;EACnB,SAAA,CAAC,CAAC;EAEH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,SAAS,CAAC,YAAA;cAChE,KAAI,CAAC,sBAAsB,EAAE,CAAC;EAClC,SAAC,CAAC,CAAC;EACH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,SAAS,CAAC,YAAA;;EACrE,YAAA,CAAA,EAAA,GAAA,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACnG,SAAC,CAAC,CAAC;EACH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,SAAS,CAAC,YAAA;;EACrE,YAAA,CAAA,EAAA,GAAA,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACnG,SAAC,CAAC,CAAC;EACH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,SAAS,CAAC,YAAA;;EACzE,YAAA,CAAA,EAAA,GAAA,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACvG,SAAC,CAAC,CAAC;EACH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,SAAS,CAAC,YAAA;;EACzE,YAAA,CAAA,EAAA,GAAA,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACvG,SAAC,CAAC,CAAC;UACH,IAAI,IAAI,CAAC,eAAe,EAAE;cACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;EACjD,SAAA;EAAM,aAAA;EACH,YAAA,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;EACrC,SAAA;OACJ,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAa,eAAmC,EAAE,gBAAiC,EAAA;UAAnF,IAmBC,KAAA,GAAA,IAAA,CAAA;EAnBiD,QAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAiC,GAAA,KAAA,CAAA,EAAA;;EAC/E,QAAA,IAAI,CAAC,eAAe;cAAE,OAAO;EAC7B,QAAA,IAAM,cAAc,GAAG,CAAA,eAAe,aAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,cAAc,KAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;UAC3F,IAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,eAAe,CAAA,EAAA,EAAE,cAAc,EAAA,cAAA,EAAA,CAAA,CAAG,CAAC;EACtG,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;UAC7C,IAAI,MAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;cAC1B,IAAM,YAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EACpD,YAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAA;EAC9B,gBAAA,IAAM,QAAQ,GAAG,KAAI,CAAC,YAAY,EAAE,CAAC;EACrC,gBAAA,IAAI,YAAU,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE;sBACnE,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,YAAU,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EACjF,iBAAA;EACD,gBAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;EACzB,gBAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAChC,aAAC,CAAC,CAAC;EACN,SAAA;EACD,QAAA,IAAI,gBAAgB,EAAE;EAClB,YAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;EACjD,SAAA;OACJ,CAAA;EAEK,IAAA,0BAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;;;;;;;EACF,wBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;EACjC,4BAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;8BAC3C,OAAO,CAAA,CAAA,YAAA,CAAA;EACV,yBAAA;EAEK,wBAAA,UAAU,GAAG,MAAM,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,IAAI,CAAC,CAAC;EAC3E,wBAAA,KAAK,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;EAC3D,wBAAA,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,KAAI,EAAE,CAAC;0BACpE,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;EAEjE,wBAAA,IAAI,aAAa,IAAI,UAAU,GAAG,CAAC,EAAE;8BAC7B,YAAY,GAAG,CAAC,CAAC;8BACjB,gBAAgB,GAAG,KAAK,CAAC;;EAE7B,gCAAA,KAAkB,eAAA,GAAA,QAAA,CAAA,aAAa,CAAA,EAAE,iBAAA,GAAA,eAAA,CAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,iBAAA,GAAA,eAAA,CAAA,IAAA,EAAA,EAAA;sCAAtB,GAAG,GAAA,iBAAA,CAAA,KAAA,CAAA;EACV,oCAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK;0CAAE,SAAS;sCAC/B,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;sCAClC,IAAI,CAAC,GAAG,UAAU,EAAE;0CAChB,gBAAgB,GAAG,IAAI,CAAC;0CACxB,MAAM;EACT,qCAAA;sCACD,YAAY,IAAI,CAAC,CAAC;EACrB,iCAAA;;;;;;;;;EAED,4BAAA,IAAI,gBAAgB,EAAE;;EAElB,gCAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,gEAAgE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kCAC9J,OAAO,CAAA,CAAA,YAAA,CAAA;EACV,6BAAA;EAED,4BAAA,IAAI,KAAK,KAAK,4BAA4B,IAAI,YAAY,GAAG,UAAU,EAAE;EACrE,gCAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,wEAAwE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kCACtK,OAAO,CAAA,CAAA,YAAA,CAAA;EACV,6BAAA;EACJ,yBAAA;EAED,wBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;0BAEnB,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;EAC3D,wBAAA,IAAI,aAAa,IAAI,UAAU,GAAG,CAAC,KAAI,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,EAAE;EAC9D,4BAAA,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAA;kCAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE;sCACjD,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EACjF,iCAAA;EACL,6BAAC,CAAC,CAAC;EACN,yBAAA;gCAEG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAA,EAA7B,OAA6B,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;EAEvB,wBAAA,OAAA,GAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gCAE5D,CAAA,OAAK,KAAA,IAAA,IAAL,OAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,OAAK,CAAE,oBAAoB,MAAK,SAAS,CAAA,EAAzC,OAAyC,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;EACzC,wBAAA,IAAI,CAAC,OAAK,CAAC,eAAe,CAAC,cAAc,EAAE;EACvC,4BAAA,OAAK,CAAC,eAAe,CAAC,cAAc,GAAG,EAAE,CAAC;EAC7C,yBAAA;0BAEK,aAAa,GAAG,OAAK,CAAC,eAAe,CAAC,cAAc,CAAC,OAAK,CAAC,oBAAoB,CAAC,CAAC;0BACjF,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;;;;EAElE,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,CAAA;;EAA7C,wBAAA,QAAQ,GAAG,EAAkC,CAAA,IAAA,EAAA,CAAA;0BACnD,OAAK,CAAC,eAAe,CAAC,cAAc,CAAC,OAAK,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAAC;EAC5E,wBAAA,IAAI,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,EAAE,EAAE;8BACd,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;EAC7C,yBAAA;EACD,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;;;;EAE1B,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,wBAAA,OAAO,CAAC,KAAK,CAAC,OAAK,CAAC,CAAC;EACrB,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;0BACtI,MAAM,EAAE,KAAK,EAAA,OAAA,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;;;0BAIvC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;;;;EAEnD,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,CAAA;;EAA7C,wBAAA,QAAQ,GAAG,EAAkC,CAAA,IAAA,EAAA,CAAA;EACnD,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAK,KAAL,IAAA,IAAA,OAAK,uBAAL,OAAK,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,QAAQ,CAAC,CAAC;EACvD,wBAAA,IAAI,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,EAAE,EAAE;8BACd,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;8BAEpC,KAAM,GAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,CAAC,CAAC,EAAE,KAAK,OAAK,CAAC,eAAe,CAA9B,EAA8B,CAAC,CAAC;EACtF,4BAAA,IAAI,KAAG,EAAE;kCACL,CAAA,EAAA,GAAA,KAAG,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,EAAE,CAAC,CAAC;kCACpC,IAAI,KAAG,CAAC,QAAQ,EAAE;EACR,oCAAA,GAAG,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAK,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAM,EAAA,EAAK,OAAA,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,KAAG,CAAC,QAAQ,CAAhC,EAAgC,CAAC,CAAC;EAC1G,oCAAA,IAAI,GAAG,EAAE;0CACL,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;0CACpD,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC3C,qCAAA;EACJ,iCAAA;EACJ,6BAAA;EAAM,iCAAA;EACH,gCAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;sCAC1B,EAAE,EAAE,YAAY,EAAE;EAClB,oCAAA,QAAQ,EAAE,IAAI;sCACd,WAAW,EAAE,CAAC,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,EAAE,CAAC;EAC9B,iCAAA,CAAC,CAAC;EACN,6BAAA;EACJ,yBAAA;EAED,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;;;;EAE1B,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,wBAAA,OAAO,CAAC,KAAK,CAAC,OAAK,CAAC,CAAC;EACrB,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;0BACtI,MAAM,EAAE,KAAK,EAAA,OAAA,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;;EAGhD,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;;0BAGzB,IAAI,CAAC,gBAAgB,CAAC,OAAK,KAAA,IAAA,IAAL,OAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,OAAK,CAAE,eAAe,CAAC,CAAC;;;EAE1C,wBAAA,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gCAG5F,MAAA,IAAI,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA,EAAxB,OAAwB,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;;;;EAEN,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA,CAAA;;0BAApD,WAAW,GAAG,SAAsC,CAAC;EACrD,wBAAA,IAAI,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,EAAE,EAAE;8BACjB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,WAAW,CAAA;EAClD,yBAAA;EACD,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,mDAAmD,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;0BACnJ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;EACxC,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;;;;EAE1B,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,wBAAA,OAAO,CAAC,KAAK,CAAC,OAAK,CAAC,CAAC;EACrB,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EACtI,wBAAA,MAAM,EAAE,KAAK,EAAA,OAAA,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;;;EAG1D,wBAAA,IAAI,CAAC,sCAAsC,CAAC,WAAW,CAAC,CAAC;;;;;;OAGpE,CAAA;MAED,0BAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAY,EAAA;UAA3B,IAOC,KAAA,GAAA,IAAA,CAAA;EANG,QAAA,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM,EAAA;cAC/B,KAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;kBAC1D,IAAI,EAAE,UAAC,GAAG,EAAK,EAAA,OAAA,OAAO,CAAC,GAAyB,CAAC,CAAA,EAAA;kBACjD,KAAK,EAAE,UAAC,GAAG,EAAK,EAAA,OAAA,MAAM,CAAC,GAAG,CAAC,CAAA,EAAA;EAC9B,aAAA,CAAC,CAAC;EACP,SAAC,CAAC,CAAC;OACN,CAAA;MAED,0BAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAY,EAAA;UAA3B,IAOC,KAAA,GAAA,IAAA,CAAA;EANG,QAAA,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM,EAAA;cAC/B,KAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;kBACzD,IAAI,EAAE,UAAC,GAAG,EAAK,EAAA,OAAA,OAAO,CAAC,GAAyB,CAAC,CAAA,EAAA;kBACjD,KAAK,EAAE,UAAC,GAAG,EAAK,EAAA,OAAA,MAAM,CAAC,GAAG,CAAC,CAAA,EAAA;EAC9B,aAAA,CAAC,CAAC;EACP,SAAC,CAAC,CAAC;OACN,CAAA;MAED,0BAAsC,CAAA,SAAA,CAAA,sCAAA,GAAtC,UAAuC,QAA4B,EAAA;UAAnE,IA6CC,KAAA,GAAA,IAAA,CAAA;;EA5CG,QAAA,IAAM,aAAa,GAAG,SAAS,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,2BAA2B,CAAC,CAAC;UAC9E,IAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;EACxF,QAAA,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAA,EAAE;cAClC,IAAM,IAAI,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,wBAAwB,CAAC;EACrD,YAAA,IAAM,YAAY,GAAG,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,MAAM,IAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;EAC3E,YAAA,IAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAEpF,YAAA,CAAA,EAAA,GAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,eAAe,CAAC,CAAC;EAExD,YAAA,CAAA,EAAA,GAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAb,aAAa,CAAE,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EAC7D,SAAA;EAAM,aAAA;EACH,YAAA,IAAM,UAAU,GAAG,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,uBAAb,aAAa,CAAE,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,OAA6B,EAAA,cAAK,OAAA,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,EAAE,MAAI,MAAA,CAAA,EAAA,GAAA,KAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAA,EAAA,CAAC,CAAC;EACxJ,YAAA,CAAA,EAAA,GAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,eAAe,CAAC,CAAC;EAC3D,SAAA;EAED,QAAA,IAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;EAClH,QAAA,IAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;EAE/G,QAAA,IAAM,OAAO,GAAG;EACZ,YAAA,UAAU,EAAE,aAAa;EACzB,YAAA,aAAa,EAAE,gBAAgB;WAClC,CAAA;EAED,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,YAAY;gBAC3B,IAAI,CAAC,sBAAsB,CAAC,+BAA+B,CAAC,OAAO,CAAC;gBACpE,IAAI,CAAC,sBAAsB,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;UAE5E,OAAO,CAAC,SAAS,CAAC;cACd,IAAI,EAAE,UAAC,GAAQ,EAAA;;EACX,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,gBAAA,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC;EACjB,oBAAA,OAAO,EAAE,IAAI;EACb,oBAAA,YAAY,EAAE,CAAA,EAAA,GAAA,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE;EACjC,oBAAA,aAAa,EAAE,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,aAAa;EACjC,oBAAA,WAAW,EAAE,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,WAAW;EAChC,iBAAA,CAAC,CAAC;eACN;cACD,KAAK,EAAE,UAAC,KAAU,EAAA;;EACd,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACrB,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,gBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBACtI,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAI,CAAC,YAAY,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;eACzE;EACJ,SAAA,CAAC,CAAC;OACN,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,YAAA;;EACI,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;cAAE,OAAO;EAEhE,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC;EACrC,QAAA,IAAM,KAAK,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;UAC9C,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;UAE7C,IAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;;UAG5I,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAC,EAAc,EAAA;EAAd,YAAA,IAAA,EAAA,GAAA,aAAc,EAAb,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,OAAO,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;EAChD,YAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;kBAAE,OAAO;EAEtC,YAAA,IAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;EAE/B,YAAA,IAAI,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE;EACf,gBAAA,IAAM,UAAU,GAAG,CAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,QAAQ,IAAG,CAACA,eAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;kBAC/D,IAAI,GAAG,KAAK,eAAe,EAAE;sBACzB,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,4EAA4E,CAAC,CAAC,CAAC;EACrH,iBAAA;kBACD,IAAI,GAAG,KAAK,mBAAmB,EAAE;sBAC7B,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,iBAAA;kBACD,IAAI,GAAG,KAAK,mBAAmB,EAAE;sBAC7B,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACnC,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,IAAI,EAAA;;EACjB,wBAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;0BACtD,IAAM,MAAM,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;EAC9B,wBAAA,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;0BAC1B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;8BACxD,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE;8BAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;EAClC,gCAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;EACvC,6BAAA;EACJ,yBAAA;EACD,wBAAA,OAAO,IAAI,CAAC;EAChB,qBAAC,CAAC,CAAC;EACN,iBAAA;kBACD,IAAI,GAAG,KAAK,uBAAuB,EAAE;sBACjC,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,iBAAA;kBACD,IAAI,GAAG,KAAK,uBAAuB,EAAE;sBACjC,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACnC,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,IAAI,EAAA;;EACjB,wBAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,uBAAuB,CAAC,CAAC;0BAC1D,IAAM,MAAM,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;EAC9B,wBAAA,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;0BAC1B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;8BACxD,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE;8BAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;EAClC,gCAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;EACvC,6BAAA;EACJ,yBAAA;EACD,wBAAA,OAAO,IAAI,CAAC;EAChB,qBAAC,CAAC,CAAC;EACN,iBAAA;kBACD,IAAI,GAAG,KAAK,aAAa,EAAE;sBACvB,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,iBAAA;kBACD,IAAI,GAAG,KAAK,cAAc,EAAE;sBACxB,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,iBAAA;EACD,gBAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;EACpE,aAAA;EAAM,iBAAA;kBACH,OAAO,CAAC,eAAe,EAAE,CAAC;kBAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,gBAAgB,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChF,aAAA;cAED,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACzD,SAAC,CAAC,CAAC;;UAGH,IAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;EACxD,QAAA,IAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;UAE5C,IAAI,EAAC,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAA,EAAE;cACvB,cAAc,CAAC,eAAe,EAAE,CAAC;cACjC,cAAc,CAAC,KAAK,EAAE,CAAC;cACvB,cAAc,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;cAC5D,OAAO;EACV,SAAA;UAED,IAAM,gBAAgB,GAAG,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,QAAQ,IAAG,UAAC,OAAY,EAAA;cAC1D,IAAM,aAAa,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,UAAC,GAAQ,EAAA,EAAK,OAAA,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAA,EAAA,CAAC,CAAC;EACzF,YAAA,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;EAChE,SAAC,GAAG,IAAI,CAAC;EAET,QAAA,cAAc,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;UAE/C,IAAM,aAAa,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,aAAa,CAAC;UACjD,IAAM,WAAW,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,WAAW,CAAC;EAE7C,QAAA,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,QAAQ,EAAA;cACpC,IAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;cAC1C,IAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;EAEpD,YAAA,IAAI,CAAC,aAAa;kBAAE,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAClE,YAAA,IAAI,CAAC,WAAW;kBAAE,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;cAErE,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;cACzD,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC9D,SAAC,CAAC,CAAC;UAEH,cAAc,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;OAC/D,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,SAAiB,EAAE,UAAmB,EAAA;;UAC5C,IAAM,YAAY,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAC,cAAc,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;UACzE,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE;EACpF,YAAA,OAAO,KAAK,CAAC;EAChB,SAAA;EACD,QAAA,IAAI,UAAU,EAAE;EACZ,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;EAC5D,SAAA;EACD,QAAA,OAAO,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAA,CAAC;OACzD,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAO,CAAA,SAAA,EAAA,SAAA,EAAA;EAAX,QAAA,GAAA,EAAA,YAAA;cACI,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;WAC9D;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;;UACI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;EACvC,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;OACtG,CAAA;MAED,0BAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAa,EAAA;;UACtB,IAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;EAC7C,QAAA,IAAM,eAAe,GAAG,CAAA,EAAA,GAAA,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;EACvD,QAAA,IAAM,iBAAiB,GAAG,CAAA,EAAA,GAAA,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;EAC3D,QAAA,IAAM,QAAQ,GAAG,eAAe,IAAI,iBAAiB,CAAC;EAEtD,QAAA,IAAI,eAAe,EAAE;EACjB,YAAA,CAAA,EAAA,GAAA,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;EAClD,SAAA;EAAM,aAAA;EACH,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EAChC,SAAA;EAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAA,CAAC,EAAA;EAC9B,YAAA,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE;EACzB,gBAAA,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;EACrB,aAAA;EACL,SAAC,CAAC,CAAC;UAEH,IAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;EACrE,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE;cAC1F,IAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAA,GAAG,EAAA,UAAI,OAAA,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAK,KAAK,CAAA,EAAA,CAAC,CAAC,MAAM,CAAC;cAC5G,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,kBAAkB,EAAE;EAC5C,gBAAA,OAAO,CAAC,QAAQ,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC;EAChD,aAAA;EACJ,SAAA;EACD,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;OACtG,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;EACI,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;cAC1B,EAAE,EAAE,CAAC,CAAC,CAAC;EACP,YAAA,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;EACtB,YAAA,WAAW,EAAE,CAAC,EAAE,EAAEA,eAAU,CAAC,QAAQ,CAAC;cACtC,MAAM,EAAE,CAAC,CAAC,CAAC;cACX,eAAe,EAAE,CAAC,KAAK,CAAC;cACxB,QAAQ,EAAE,CAAC,IAAI,CAAC;cAChB,iBAAiB,EAAE,CAAC,EAAE,CAAC;EAC1B,SAAA,CAAC,CAAC;OACN,CAAA;MAED,0BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,KAAU,EAAA;EACvB,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;OAC9D,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,KAAU,EAAE,OAAY,EAAA;;EAChC,QAAA,IAAM,UAAU,GAAG,MAAM,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,IAAI,CAAC,CAAC;UACjF,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;UACrC,IAAI,GAAG,GAAG,UAAU,EAAE;EAClB,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;cAChC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACvD,SAAA;OACJ,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,UAAmB,KAAU,EAAE,OAAY,EAAA;UACvC,IAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAA,GAAG,EAAA,UAAI,OAAA,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAK,KAAK,CAAA,EAAA,CAAC,CAAC,MAAM,CAAC;UAC5G,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;UACrC,IAAI,GAAG,GAAG,kBAAkB,EAAE;EAC1B,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAAC;cACxC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,QAAQ,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/D,SAAA;OACJ,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC1C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC/B,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,UAAqB,aAAkC,EAAE,KAAc,EAAE,OAAgB,EAAA;;;UAErF,IAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;UAC3D,IAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;UACrD,IAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;EAEjE,QAAA,IAAI,aAAa,IAAI,UAAU,GAAG,CAAC,KAAI,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,EAAE;EAC9D,YAAA,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAA;kBAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE;sBACjD,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EACjF,iBAAA;EACL,aAAC,CAAC,CAAC;EACN,SAAA;EAED,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;EAEnG,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;cACpB,eAAe,kCAAO,YAAY,CAAA,EAAA,EAAE,cAAc,EAAE,MAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAA;EAC1G,YAAA,oBAAoB,EAAE,KAAK;EAC3B,YAAA,eAAe,EAAE,OAAO;EAC3B,SAAA,CAAC,CAAC;;EAGH,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;EAC1B,YAAA,YAAY,EAAE,EAAE;EAChB,YAAA,YAAY,EAAE,EAAE;EAChB,YAAA,WAAW,EAAE,KAAK;;EAElB,YAAA,UAAU,EAAE,IAAI;EAChB,YAAA,iBAAiB,EAAE,IAAI;EACvB,YAAA,iBAAiB,EAAE,IAAI;EACvB,YAAA,qBAAqB,EAAE,IAAI;EAC3B,YAAA,qBAAqB,EAAE,IAAI;EAC3B,YAAA,WAAW,EAAE,IAAI;EACjB,YAAA,YAAY,EAAE,IAAI;EAClB,YAAA,WAAW,EAAE,EAAE;EACf,YAAA,QAAQ,EAAE,EAAE;EACZ,YAAA,aAAa,EAAE,EAAE;EACjB,YAAA,cAAc,EAAE,EAAE;EAClB,YAAA,UAAU,EAAE,EAAE;EACjB,SAAA,CAAC,CAAC;UACH,IAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;EAC3E,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAA,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC9B,SAAA;UAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;EAC9B,QAAA,IAAI,aAAa,EAAE;EACf,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;EACpC,SAAA;UACD,IAAI,CAAC,WAAW,EAAE,CAAC;OACtB,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAoB,KAAa,EAAE,KAAY,EAAA;;UAC3C,KAAK,CAAC,eAAe,EAAE,CAAC;EACxB,QAAA,IAAM,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,KAAK,CAAC,CAAC;UAEjF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;;EAC7B,YAAA,IAAI,SAAS,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,EAAC,CAAA,MAAA,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,EAAE,GAAE,CAAC;EACjE,YAAA,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAC,EAAmB,EAAA,EAAK,OAAA,EAAE,KAAK,YAAY,CAAC,EAAE,CAAtB,EAAsB,CAAC,CAAC;EAC9E,YAAA,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;EACtD,SAAC,CAAC,CAAC;EAEH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;EAEtE,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAA,CAAC,EAAA;cAC9B,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,UAAA,GAAG,EAAI,EAAA,OAAA,GAAG,KAAK,YAAY,CAAC,EAAE,CAAA,EAAA,CAAC,CAAC;EACzE,SAAC,CAAC,CAAC;UACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;OAC7F,CAAA;MAED,0BAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,GAAQ,EAAA;;UAChB,OAAO,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,IAAG,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;OAC/E,CAAA;MAED,0BAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,EAAmB,EAAA;;EACpC,QAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAqB,IAAK,OAAA,CAAC,CAAC,EAAE,KAAK,EAAE,CAAX,EAAW,CAAC,CAAC;OAC7G,CAAA;MAED,0BAAqB,CAAA,SAAA,CAAA,qBAAA,GAArB,UAAsB,EAAsB,EAAA;;EACxC,QAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,UAAC,CAAqB,IAAK,OAAA,CAAC,CAAC,EAAE,KAAK,EAAE,CAAX,EAAW,CAAC,CAAC;OAClH,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,uBAAuB,GAAvB,UAAwB,EAAsB,EAAE,KAAY,EAAA;UACxD,KAAK,CAAC,eAAe,EAAE,CAAC;UACxB,IAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;EAC7C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;EACZ,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EAC1C,SAAA;OACJ,CAAA;MAED,0BAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,cAAoC,EAAA;UAA7D,IA2BC,KAAA,GAAA,IAAA,CAAA;EA1BG,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;EAC9B,QAAA,IAAM,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;UAEvC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;;cAC7B,IAAM,QAAQ,GAAG,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;EACvC,YAAA,IAAM,SAAS,GAAG,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,KAAI,EAAE,CAAC;EAE5D,YAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;EACtB,gBAAA,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;sBAC1B,EAAE,EAAE,YAAY,EAAE;EAClB,oBAAA,QAAQ,EAAE,QAAQ;sBAClB,WAAW,EAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAM,SAAS,CAAC,CAAA;EAC9B,iBAAA,CAAC,CAAC;EACH,gBAAA,SAAS,CAAC,OAAO,CAAC,UAAC,EAAO,IAAK,OAAA,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAA5B,EAA4B,CAAC,CAAC;EAChE,aAAA;EACL,SAAC,CAAC,CAAC;EAEH,QAAA,cAAc,CAAC,OAAO,CAAC,UAAA,EAAE,EAAA;EACrB,YAAA,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC3C,gBAAA,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;sBAC1B,EAAE,EAAE,YAAY,EAAE;EAClB,oBAAA,QAAQ,EAAE,IAAI;EACd,oBAAA,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACvB,iBAAA,CAAC,CAAC;EACN,aAAA;EACL,SAAC,CAAC,CAAC;OACN,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAoB,OAAe,EAAE,WAAmC,EAAA;;UAAxE,IAiCC,KAAA,GAAA,IAAA,CAAA;;UAhCG,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,KAAK,OAAO,CAAhB,EAAgB,CAAC,CAAC;UAC7E,IAAI,UAAU,KAAK,CAAC,CAAC;cAAE,OAAO;UAC9B,IAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;EAEnD,QAAA,IAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;EAEnC,QAAA,IAAI,WAAW,EAAE;cACb,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,WAAW,CAAA,EAAA,CAAC,CAAC;EACxF,YAAA,IAAI,MAAM,EAAE;EACR,gBAAA,IAAI,SAAS,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,EAAC,CAAA,MAAA,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,EAAE,GAAE,CAAC;kBACpE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAS,CAAC,CAAA,EAAA,CAAC,CAAC;EAC3E,gBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;EACxD,aAAA;EACJ,SAAA;UAED,IAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAA,EAAA,CAAC,CAAC;UAEzG,IAAI,aAAa,IAAI,WAAW,EAAE;cAC9B,CAAA,EAAA,GAAA,aAAa,CAAC,WAAW,EAAC,IAAI,CAAI,KAAA,CAAA,EAAA,EAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAK,CAAC,WAAW,CAAE,CAAA,CAAA,CAAA;cACrD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;EAClD,SAAA;EAAM,aAAA;EACH,YAAA,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;EAChC,SAAA;EAED,QAAA,IAAI,WAAW,EAAE;cACb,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,WAAW,CAAA,EAAA,CAAC,CAAC;EACxF,YAAA,IAAI,MAAM,EAAE;EACR,gBAAA,IAAI,SAAS,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,EAAC,CAAA,MAAA,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,EAAE,GAAE,CAAC;kBACpE,IAAM,GAAG,GAAG,IAAI,GAAG,CAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAK,SAAS,CAAA,CAAA,EAAA,MAAA,CAAK,KAAK,CAAC,WAAW,CAAA,CAAA,CAAE,CAAC;EAC1D,gBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9D,aAAA;EACJ,SAAA;OACJ,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;EACI,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;EACjC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;cACvB,OAAO;EACV,SAAA;UACD,IAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;UAEvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,eAAe,CAAC,CAAC;UAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;OACtB,CAAA;MAEO,0BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,WAAgB,EAAA;EACrC,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;UAEhC,IAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;EAC3E,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAA,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC9B,SAAA;EAED,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;OAClC,CAAA;EAEO,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UAAA,IAMP,KAAA,GAAA,IAAA,CAAA;UALG,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;EAC5D,YAAA,UAAU,CAAC,YAAA;kBACP,KAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;eACpD,EAAE,CAAC,CAAC,CAAC;EACT,SAAA;OACJ,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,KAAa,EAAE,IAAS,EAAA;EAChC,QAAA,OAAO,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,KAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7D,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,KAAa,EAAE,OAAY,EAAA;EACtC,QAAA,OAAO,OAAO,CAAC;OAClB,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,KAAa,EAAE,KAAU,EAAA;EACpC,QAAA,OAAO,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC3D,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAa,EAAE,EAAO,EAAA;EACpC,QAAA,OAAO,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC9C,CAAA;;;EAhtBQ,0BAAA,CAAA,IAAA,GAAAjC,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,0BAA0B,yKA0BvBC,kBAAe,EAAA,CAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EA1BlB,0BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,iMChBvC,wnqCAybM,EAAA,MAAA,EAAA,CAAA,+xZAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAoC,cAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAoC,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAlC,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA5B,aAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAT,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAqC,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAArC,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAAsC,gBAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDzaO,0BAA0B,EAAA,UAAA,EAAA,CAAA;oBANtCpC,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACP,oBAAA,QAAQ,EAAE,4BAA4B;EACtC,oBAAA,WAAW,EAAE,qCAAqC;sBAClD,SAAS,EAAE,CAAC,qCAAqC,CAAC;mBACrD,CAAA;;;gCA4BQC,SAAM;iCAACL,kBAAe,CAAA;;2BAnBG,eAAe,EAAA,CAAA;wBAA5Cc,YAAS;yBAAC,iBAAiB,CAAA;;;EEdhC,IAAA,wBAAA,kBAAA,YAAA;EALA,IAAA,SAAA,wBAAA,GAAA;EASW,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;EAE3B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAID,eAAY,EAAiD,CAAC;EACjF,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAIA,eAAY,EAAmB,CAAC;EACxD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAIA,eAAY,EAAmB,CAAC;EAC3D,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAIA,eAAY,EAA4C,CAAC;EAE7F,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;EACjB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;OA8CpB;EA3CC,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;UAAA,IAEC,KAAA,GAAA,IAAA,CAAA;UADC,UAAU,CAAC,YAAM,EAAA,OAAA,KAAI,CAAC,aAAa,EAAE,CAAA,EAAA,CAAC,CAAC;OACxC,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;UAAA,IAMC,KAAA,GAAA,IAAA,CAAA;EALC,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;EAE/B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;cAClB,UAAU,CAAC,YAAM,EAAA,OAAA,KAAI,CAAC,aAAa,EAAE,CAAA,EAAA,CAAC,CAAC;EACxC,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;EACE,QAAA,IAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;UAC3C,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;OACrD,CAAA;MAED,wBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAwB,EAAA;EACtC,QAAA,IAAI,CAAC,IAAI;EAAE,YAAA,OAAO,EAAE,CAAC;EACrB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OAC1G,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;MAED,wBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,QAA4B,EAAA;;EAC/C,QAAA,OAAO,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CACvC,UAAA,MAAM,EAAI,EAAA,OAAA,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,iBAAiB,KAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAhE,EAAgE,CAC3E,CAAC;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAa,EAAE,MAAW,EAAA;;EACxC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5E,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,KAAa,EAAE,EAAO,EAAA;EACnC,QAAA,OAAO,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5C,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,KAAa,EAAE,KAAU,EAAA;EACxC,QAAA,OAAO,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,IAAI,KAAI,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7D,CAAA;;;8IA3DU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAd,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAxB,wBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,0hBCTrC,y8MAgGe,EAAA,MAAA,EAAA,CAAA,6vZAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAG,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,aAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAF,aAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAAyE,WAAA,EAAA,EAAA,CAAA,CAAA;oHDvFF,wBAAwB,EAAA,UAAA,EAAA,CAAA;oBALpCtE,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,sBAAsB;EAChC,oBAAA,WAAW,EAAE,mCAAmC;sBAChD,SAAS,EAAE,CAAC,mCAAmC,CAAC;mBACjD,CAAA;gCAEU,eAAe,EAAA,CAAA;wBAAvBW,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBAEI,YAAY,EAAA,CAAA;wBAArBC,SAAM;kBACG,iBAAiB,EAAA,CAAA;wBAA1BA,SAAM;kBACG,oBAAoB,EAAA,CAAA;wBAA7BA,SAAM;kBACG,mBAAmB,EAAA,CAAA;wBAA5BA,SAAM;kBAIoB,YAAY,EAAA,CAAA;wBAAtCF,YAAS;yBAAC,cAAc,CAAA;;;AEJ3B,MAAA,wBAAA,kBAAA,YAAA;EAiCE,IAAA,SAAA,wBAAA,CACU,sBAA8C,EAC9C,wBAAkD,EAClD,MAAiB,EAAA;EAFjB,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EAC9C,QAAA,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;EAClD,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;EAnClB,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;EACnC,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;EAE5B,QAAA,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;EACzB,QAAA,IAAoB,CAAA,oBAAA,GAAW,CAAC,CAAC;EACjC,QAAA,IAAoB,CAAA,oBAAA,GAAe,EAAE,CAAC;EACtC,QAAA,IAA4B,CAAA,4BAAA,GAAuB,EAAE,CAAC;EACtD,QAAA,IAA6B,CAAA,6BAAA,GAAY,KAAK,CAAC;EAE/C,QAAA,IAAuB,CAAA,uBAAA,GAAW,CAAC,CAAC;EACpC,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;EACnC,QAAA,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;EACtC,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;EAE9B,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAID,eAAY,EAAU,CAAC;EAChD,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAIA,eAAY,EAAU,CAAC;EACxD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAIA,eAAY,EAA2D,CAAC;EAExG,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;EAC5B,QAAA,IAAY,CAAA,YAAA,GAAuC,EAAE,CAAC;EACtD,QAAA,IAA2B,CAAA,2BAAA,GAA4B,EAAE,EAAE,EAAE,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC;EAC/F,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;EAE/B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;EAC9B,QAAA,IAAU,CAAA,UAAA,GAAc,EAAE,CAAC;EAC3B,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;EAC1B,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;EACnC,QAAA,IAAe,CAAA,eAAA,GAAkB,IAAI,CAAC;EACrB,QAAA,IAAqB,CAAA,qBAAA,GAAG,yCAAyC,CAAC;OAM9E;EAEL,IAAA,wBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;UACE,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;UACjF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;EAC9E,QAAA,IAAI,CAAC,YAAY,CAAC,CAAA,MAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,KAAI,IAAI,CAAC,4BAA4B,CAAC,CAAC;UACtG,IAAI,CAAC,kBAAkB,EAAE,CAAC;UAE1B,IAAI,IAAI,CAAC,iBAAiB,EAAE;cAC1B,IAAI,CAAC,oBAAoB,GAAG,CAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,IAAI,CAAC,oBAAoB,CAAC;cAC3G,IAAI,CAAC,YAAY,GAAG,CAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,IAAI,CAAC,YAAY,CAAC;EACjF,SAAA;UAED,IAAI,IAAI,CAAC,YAAY,EAAE;EACrB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;cACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC3B,SAAA;UAED,IAAI,IAAI,CAAC,6BAA6B,EAAE;cACtC,IAAI,CAAC,aAAa,EAAE,CAAC;EACtB,SAAA;EAED,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,EAAE;cACvD,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAC1B,SAAA;OACF,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;UAAA,IAKP,KAAA,GAAA,IAAA,CAAA;UAJC,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC;EAChF,YAAA,IAAI,EAAE,UAAC,KAAU,EAAK,EAAA,OAAA,KAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAA;cAC7D,KAAK,EAAE,YAAM,EAAA,OAAA,KAAI,CAAC,aAAa,GAAG,CAAC,CAAA,EAAA;EACpC,SAAA,CAAC,CAAC;OACJ,CAAA;EAED;;;EAGG;MACK,wBAAuB,CAAA,SAAA,CAAA,uBAAA,GAAvB,UAAwB,MAAkB,EAAA;EAChD,QAAA,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;cAC1B,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;EAC9D,gBAAA,SAAS,EAAE,KAAK;EAChB,gBAAA,QAAQ,EAAE,KAAK;EACf,gBAAA,KAAK,EAAE,OAAO;kBACd,UAAU,EAAE,CAAC,mBAAmB,CAAC;EACjC,gBAAA,IAAI,EAAE;EACJ,oBAAA,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,4CAA4C,CAAC;EACvE,oBAAA,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC;EAClE,oBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC;EACjE,iBAAA;EACF,aAAA,CAAC,CAAC;EACH,YAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,UAAC,SAAkB,EAAA;EACnD,gBAAA,IAAI,SAAS,EAAE;EACb,oBAAA,MAAM,EAAE,CAAC;EACV,iBAAA;EACH,aAAC,CAAC,CAAC;EACJ,SAAA;EAAM,aAAA;EACL,YAAA,MAAM,EAAE,CAAC;EACV,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;UAAA,IA4BC,KAAA,GAAA,IAAA,CAAA;;EA3BC,QAAAY,aAAQ,CAAA,MAAA,CAAA,MAAA,CAAA,EACN,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAC1E,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAC1E,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,6BAA6B,CAAC,EAAA,GAC3E,EAAC,MAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,IAAI;cACjC,aAAa,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,oBAAoB,CAAC;EAC/E,SAAA,GACD,CAAC,SAAS,CAAC,UAAC,GAAQ,EAAA;EACpB,YAAA,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;EACzE,YAAA,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;EACzE,YAAA,IAAI,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,aAAa,EAAE;kBACtB,KAAI,CAAC,aAAa,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,aAAa,CAAC;EACzC,aAAA;;EAED,YAAA,KAAI,CAAC,KAAK,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,CAAE,CAAC;cAC/B,IAAI,KAAI,CAAC,WAAW,EAAE;kBACpB,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,EAAA;EACzC,oBAAA,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;EACtB,wBAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAE,CAAC;EACpD,qBAAA;EAAM,yBAAA;EACL,wBAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,EAAK,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAE,CAAC;EAC1E,qBAAA;EACH,iBAAC,CAAC,CAAC;EACJ,aAAA;EAED,YAAA,KAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC5B,SAAC,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;UAAA,IA8BC,KAAA,GAAA,IAAA,CAAA;;UA7BC,IAAI,IAAI,CAAC,iBAAiB,EAAE;cAC1B,IAAI,CAAC,YAAY,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACZ,IAAI,CAAC,YAAY,IAChB,CAAA,MAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAc,KAAI,EAAE,EACjD,CAAC;EACF,YAAA,IAAI,CAAC,iCAAiC,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,0BAA0B,CAAC,CAAC;EAC3F,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC,CAAC;EACvF,YAAA,IAAI,CAAC,YAAY,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,CAAC,CAAC;EACjE,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EACzB,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;kBACjG,IAAI,EAAE,UAAC,GAAQ,EAAA;;sBACb,KAAI,CAAC,iBAAiB,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAG,CAAC,CAAC,CAAC;sBAClC,KAAI,CAAC,YAAY,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACZ,KAAI,CAAC,YAAY,IAChB,CAAA,MAAA,KAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAc,KAAI,EAAE,EACjD,CAAC;EACF,oBAAA,KAAI,CAAC,iCAAiC,CAAC,CAAA,EAAA,GAAA,KAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,0BAA0B,CAAC,CAAC;EAC3F,oBAAA,KAAI,CAAC,iBAAiB,GAAG,KAAI,CAAC,oBAAoB,CAAC,CAAA,EAAA,GAAA,KAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC,CAAC;EACvF,oBAAA,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA,GAAA,KAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,CAAC,CAAC;EACjE,oBAAA,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;mBACzB;kBACD,KAAK,EAAE,UAAC,KAAU,EAAA;EAChB,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;sBACrB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;sBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;mBAC/B;EACF,aAAA,CAAC,CAAA;EACH,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;UAAA,IAkCC,KAAA,GAAA,IAAA,CAAA;;UAjCC,IAAI,gBAAgB,GAAa,EAAE,CAAC;UAEpC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,UAAC,OAAY,EAAA;;EAC/E,YAAA,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,CAAM,EAAA;;EAC5C,gBAAA,IAAI,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,YAAY,0CAAG,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,UAAU,CAAC,0CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EAClE,oBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,KAAI,CAAC,YAAY,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,UAAU,CAAC,0CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,MAAW,EAAA;;EAC1E,wBAAA,IAAI,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;EACrC,4BAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,GAAQ,EAAA;EAC1C,gCAAA,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC7B,6BAAC,CAAC,CAAC;EACJ,yBAAA;EACH,qBAAC,CAAC,CAAC;EACJ,iBAAA;EACH,aAAC,CAAC,CAAC;EACL,SAAC,CAAC,CAAC;;UAGH,gBAAgB,GAAG,aAAI,CAAA,EAAA,EAAA,MAAA,CAAA,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAA,CAAA,CAAE,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,KAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;UAEvF,IAAI,CAAA,gBAAgB,KAAA,IAAA,IAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,MAAM,IAAG,CAAC,EAAE;EAChC,YAAA,IAAM,QAAM,GAAG,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;cACjD,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,QAAM,CAAC,CAAC,SAAS,CAAC;kBAC9D,IAAI,EAAE,UAAC,GAAQ,EAAA;sBACb,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,CAAC,UAAC,QAAa,EAAA;0BACzB,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;EAC5C,qBAAC,CAAC,CAAC;mBACJ;kBACD,KAAK,EAAE,UAAC,KAAU,EAAA;EAChB,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACrB,oBAAA,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAM,EAAE,CAAA;mBAChD;EACF,aAAA,CAAC,CAAA;EACH,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,YAAoB,EAAE,KAAY,EAAA;UAClD,KAAK,CAAC,eAAe,EAAE,CAAC;UACxB,IAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAA,GAAoB,YAAc,CAAqB,CAAC;EAC9F,QAAA,IAAI,KAAK,EAAE;cACT,KAAK,CAAC,KAAK,EAAE,CAAC;EACf,SAAA;OACF,CAAA;MAED,wBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,KAAyB,EAAA;EACnC,QAAA,IAAI,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,EAAE;EAC7D,YAAAkD,qBAAe,CACb,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,EACzD,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB,CAAC;EACH,SAAA;OACF,CAAA;MAED,wBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAyB,EAAA;EACpC,QAAAA,qBAAe,CACb,KAAK,CAAC,SAAS,CAAC,IAAI,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB,CAAC;OACH,CAAA;MAED,wBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAY,EAAA;UAA3B,IAuBC,KAAA,GAAA,IAAA,CAAA;UAtBC,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;EACtE,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,QAAQ,EAAE,KAAK;EACf,YAAA,KAAK,EAAE,OAAO;EACd,YAAA,SAAS,EAAE,QAAQ;cACnB,UAAU,EAAE,CAAC,mBAAmB,CAAC;EACjC,YAAA,IAAI,EAAE;kBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;EAC7B,gBAAA,cAAc,EAAE,OAAO;EACxB,aAAA;EACF,SAAA,CAAC,CAAC;EAEH,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,UAAC,MAAM,EAAA;EACvC,YAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAE;kBAClB,IAAI,CAAC,OAAO,CAAC,OAAO;EAAE,oBAAA,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;EAC3C,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;sBAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;kBAC7F,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,WAAW,CAAC;kBAC9C,OAAO,CAAC,QAAQ,GAAG,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,QAAQ,KAAI,IAAI,CAAC;kBAC5C,KAAI,CAAC,+BAA+B,CAAC,KAAI,CAAC,WAAW,CAAC,+DAA+D,CAAC,CAAC,CAAC;EACzH,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAoB,MAAW,EAAE,eAA6B,EAAA;UAC5D,IAAI,CAAC,uBAAuB,CAAC,YAAA;cAC3B,IAAI,MAAM,CAAC,iBAAiB,EAAE;EAC5B,gBAAA,IAAM,YAAU,GAAG,OAAO,eAAe,KAAK,QAAQ,GAAG,eAAe,aAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,EAAE,GAAG,eAAe,CAAC;kBAC/F,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAC,GAAQ,EAAA;EAClE,oBAAA,IAAM,EAAE,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,EAAE,GAAG,GAAG,CAAC;sBACnD,OAAO,EAAE,KAAK,YAAU,CAAC;EAC3B,iBAAC,CAAC,CAAC;EACJ,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;MAED,wBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,eAAgC,EAAA;UAArD,IAKC,KAAA,GAAA,IAAA,CAAA;UAJC,IAAI,CAAC,uBAAuB,CAAC,YAAA;EAC3B,YAAA,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC;cACjC,KAAI,CAAC,+BAA+B,CAAC,KAAI,CAAC,WAAW,CAAC,mDAAmD,CAAC,CAAC,CAAC;EAC9G,SAAC,CAAC,CAAC;OACJ,CAAA;MAED,wBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,OAA6B,EAAA;UAA3C,IAKC,KAAA,GAAA,IAAA,CAAA;UAJC,IAAI,CAAC,uBAAuB,CAAC,YAAA;EAC3B,YAAA,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;cACzB,KAAI,CAAC,+BAA+B,CAAC,KAAI,CAAC,WAAW,CAAC,kDAAkD,CAAC,CAAC,CAAC;EAC7G,SAAC,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,UAAmB,cAAoB,EAAE,iBAA0B,EAAE,OAAiB,EAAA;UAAtF,IAOC,KAAA,GAAA,IAAA,CAAA;;UALC,IAAI,iBAAiB,IAAI,IAAI,EAAE;EAC7B,YAAA,IAAI,CAAC,uBAAuB,CAAC,cAAM,OAAA,KAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAApE,EAAoE,CAAC,CAAC;EAC1G,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;EACtE,SAAA;OACF,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAoB,cAAoB,EAAE,iBAA0B,EAAE,OAAiB,EAAA;UAAvF,IA2CP,KAAA,GAAA,IAAA,CAAA;UA1CC,IAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;UACpE,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;EAC7D,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;EACxB,YAAA,QAAQ,EAAE,MAAM;EAChB,YAAA,KAAK,EAAE,OAAO;EACd,YAAA,MAAM,EAAE,OAAO;EACf,YAAA,UAAU,EAAE,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;EACvE,YAAA,WAAW,EAAE,IAAI;EACjB,YAAA,IAAI,EAAE;kBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;kBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;kBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;EAC/B,gBAAA,OAAO,EAAE,OAAO;EAChB,gBAAA,eAAe,EAAA,eAAA;EACf,gBAAA,cAAc,EAAA,cAAA;kBACd,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;kBAC7D,YAAY,EAAE,IAAI,CAAC,YAAY;kBAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;kBAC3B,sBAAsB,EAAE,IAAI,CAAC,eAAe;EAC7C,aAAA;EACF,SAAA,CAAC,CAAC;EAEH,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,UAAC,GAAQ,EAAA;EACzC,YAAA,IAAI,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,OAAO,EAAE;EAChB,gBAAA,IAAI,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE;EACrB,oBAAA,IAAI,CAAC,KAAI,CAAC,YAAY,EAAE;EACtB,wBAAA,KAAI,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;0BACrC,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC;EACjD,qBAAA;sBACD,KAAI,CAAC,YAAY,GACZ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,YAAY,CAAA,GAChB,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,KAAI,EAAE,EAC3B,CAAC;EACF,oBAAA,KAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;EAC3D,iBAAA;EAAM,qBAAA;sBACL,KAAI,CAAC,+BAA+B,EAAE,CAAC;EACxC,iBAAA;EACF,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;MAED,wBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,SAAiB,EAAA;UAAlC,IAoBC,KAAA,GAAA,IAAA,CAAA;;UAnBC,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA;cAAE,OAAO;EAClD,QAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC;cACrG,IAAI,EAAE,UAAC,GAAQ,EAAA;kBACb,KAAI,CAAC,YAAY,GACZ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,YAAY,CAAA,GAChB,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,KAAI,EAAE,EAC3B,CAAC;kBACF,KAAI,CAAC,iCAAiC,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,aAAa,CAAC,CAAC;kBAC3D,KAAI,CAAC,oBAAoB,EAAE,CAAC;kBAC5B,KAAI,CAAC,+BAA+B,EAAE,CAAC;kBACvC,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,qDAAqD,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;eAClI;cACD,KAAK,EAAE,UAAC,KAAU,EAAA;EAChB,gBAAA,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;kBACrB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;eACjC;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,OAA6B,EAAE,eAAgC,EAAA;UAAjF,IAoBC,KAAA,GAAA,IAAA,CAAA;UAnBC,IAAI,CAAC,eAAe,CAAC,EAAE;cAAE,OAAO;EAChC,QAAA,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;cACtF,IAAI,EAAE,UAAC,GAAQ,EAAA;kBACb,KAAI,CAAC,YAAY,GACZ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,YAAY,CAAA,GAChB,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,KAAI,EAAE,EAC3B,CAAC;kBACF,KAAI,CAAC,iCAAiC,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,aAAa,CAAC,CAAC;kBAC3D,KAAI,CAAC,oBAAoB,EAAE,CAAC;kBAC5B,KAAI,CAAC,+BAA+B,EAAE,CAAC;kBACvC,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,sDAAsD,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;eACnI;cACD,KAAK,EAAE,UAAC,KAAU,EAAA;EAChB,gBAAA,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;kBACrB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;eACjC;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;MAEO,wBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,UAAuB,EAAA;UAA5C,IAEP,KAAA,GAAA,IAAA,CAAA;;EADC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,KAAK,KAAI,CAAC,qBAAqB,CAA1C,EAA0C,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,MAAK,GAAG,CAAC;OAClH,CAAA;;MAGO,wBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,QAA6B,EAAA;;EAChD,QAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,CAAC;;UAExC,IAAI,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;OACpF,CAAA;;MAGD,wBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,KAAoB,EAAA;EACpC,QAAA,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;cAC5C,KAAK,CAAC,cAAc,EAAE,CAAC;EACxB,SAAA;OACF,CAAA;EAGD,IAAA,MAAA,CAAA,cAAA,CAAY,wBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;;EAA3B,QAAA,GAAA,EAAA,YAAA;cACE,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;WACzE;;;EAAA,KAAA,CAAA,CAAA;EAED;;;;EAIG;EACK,IAAA,wBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,YAAA;UAAA,IAcP,KAAA,GAAA,IAAA,CAAA;;EAbC,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;EAC9B,YAAA,OAAO,SAAS,CAAC;EAClB,SAAA;UACD,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,0CAAE,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;UACzH,IAAM,OAAO,GAAa,IAAI,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,QAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,CAAC,CAAA,EAAG,EAAA,CAAC,CAAC;EACpD,QAAA,IAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,GAAG,GAAG,GAAG,GAAG,CAAC;UACjD,IAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,KAAI,CAAC,qBAAqB,CAA1C,EAA0C,CAAC,CAAC;EAC/E,QAAA,IAAI,QAAQ,EAAE;EACZ,YAAA,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;EAC9B,SAAA;EAAM,aAAA;EACL,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;EAC7E,SAAA;EACD,QAAA,OAAO,OAAO,CAAC;OAChB,CAAA;MAED,wBAA+B,CAAA,SAAA,CAAA,+BAAA,GAA/B,UAAgC,cAAuB,EAAA;UAAvD,IAmBC,KAAA,GAAA,IAAA,CAAA;EAlBC,QAAA,IAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EACX,aAAa,EAAE,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,YAAY,CAAC,EAC1H,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAChJ,EAAA,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC,CACzH,CAAA;UACD,IAAI,CAAC,sBAAsB,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;cAC7E,IAAI,EAAE,UAAC,GAAQ,EAAA;kBACb,KAAI,CAAC,iCAAiC,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,aAAa,CAAC,CAAC;kBAC3D,KAAI,CAAC,oBAAoB,EAAE,CAAC;EAC5B,gBAAA,IAAI,cAAc,EAAE;EAClB,oBAAA,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;EACzE,iBAAA;eACF;cACD,KAAK,EAAE,UAAA,KAAK,EAAA;kBACV,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;eAC1C;EACF,SAAA,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UAAA,IAmCC,KAAA,GAAA,IAAA,CAAA;;UAlCC,IAAI,IAAI,CAAC,YAAY;cAAE,OAAO;EAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EACzB,QAAA,IAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EACX,aAAa,EAAE,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,YAAY,CAAC,EAC1H,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAChJ,EAAA,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC,CACzH,CAAA;EACD,QAAA,IAAI,CAAC,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,aAAa,0CAAE,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,IAAI,IAAI,CAAC,uBAAuB,EAAE;cAClG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,CAAC,0DAA0D,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;EAC5L,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;cAC1B,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;;EAEtB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;cAC1B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;cAChE,OAAO;EACR,SAAA;UACD,IAAI,CAAC,sBAAsB,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;cAC7E,IAAI,EAAE,UAAC,GAAQ,EAAA;kBACb,KAAI,CAAC,iCAAiC,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,aAAa,CAAC,CAAC;EAC3D,gBAAA,IAAI,CAAC,KAAI,CAAC,oBAAoB,EAAE;sBAC9B,KAAI,CAAC,wBAAwB,EAAE,CAAC;EACjC,iBAAA;EAAM,qBAAA;EACL,oBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;sBAC1B,KAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC;EACjE,iBAAA;eACF;cACD,KAAK,EAAE,UAAA,KAAK,EAAA;EACV,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;kBAC1B,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;eAC1C;EACF,SAAA,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,YAAA;UAAA,IAeC,KAAA,GAAA,IAAA,CAAA;EAdC,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,6BAA6B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;UACzL,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;cACtE,IAAI,EAAE,UAAC,GAAQ,EAAA;EACb,gBAAA,KAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;EAChC,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,gBAAA,KAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;eAE3C;cACD,KAAK,EAAE,UAAA,KAAK,EAAA;EACV,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;kBAC1B,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;eACzC;EACF,SAAA,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;UACE,IAAI,IAAI,CAAC,YAAY,EAAE;EACrB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;cACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC3B,SAAA;EAAM,aAAA;;EAEL,YAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC;EAC5E,SAAA;OACF,CAAA;MAED,wBAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,UAAmB,EAAA;;EACrC,QAAA,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;OAC9C,CAAA;MAED,wBAAiC,CAAA,SAAA,CAAA,iCAAA,GAAjC,UAAkC,OAAY,EAAA;;EAC5C,QAAA,IAAM,YAAY,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,MAC3E,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,UAAU,CAAA,EAAA,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAChC,GAAG,CAAC,UAAC,CAAM,EAAE,GAAW,EAAI,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAC,OAAA,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAM,GAAG,GAAI,GAAA,IAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAE,CAAA,EAAA,CAAC,CAAC;EAE5F,QAAA,IAAI,CAAC,2BAA2B,GAAG,OAAO,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC;UACtF,IAAI,CAAC,kCAAkC,EAAE,CAAC;EAE1C,QAAA,IAAI,YAAY,KAAZ,IAAA,IAAA,YAAY,uBAAZ,YAAY,CAAE,MAAM,EAAE;cACxB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,0CAAE,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,CAAM,EAAE,GAAW,EAAA;;EACtF,gBAAA,IAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAM,GAAG,GAAI,GAAA,IAAA,CAAA,EAAA,GAAA,MAAA,CAAC,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAE,CAAC;EACtE,gBAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EAC9B,oBAAA,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;EACrB,iBAAA;EACH,aAAC,CAAC,CAAC;EACJ,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kCAAkC,GAAlC,YAAA;UAAA,IAqBC,KAAA,GAAA,IAAA,CAAA;;EApBC,QAAA,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,GAAG,WAAW,CACrE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,UAAC,OAAY,EAAA,EAAK,OAAA,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAA,EAAA,CAAC,CACjH,CAAC;UAEF,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,UAAC,OAAY,EAAA;;cAC/E,OAAO,CAAC,oBAAoB,GAAG,WAAW,CACxC,MAAA,OAAO,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,UAAC,QAAa,EAAA,EAAK,OAAA,QAAQ,CAAC,QAAQ,KAAK,KAAK,GAAA,CAAC,CACrF,CAAC;EACJ,SAAC,CAAC,CAAC;UAEH,IAAI,IAAI,CAAC,YAAY,EAAE;cACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;kBACxC,IAAM,QAAQ,GAAG,KAAI,CAAC,YAAY,CAAC,GAAU,CAAC,CAAC;EAC/C,gBAAA,IAAI,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,kBAAkB,EAAE;sBAChC,QAAQ,CAAC,kBAAkB,GAAG,WAAW,CACvC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAC,GAAQ,EAAK,EAAA,OAAA,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAtB,EAAsB,CAAC,CACzE,CAAC;EACH,iBAAA;EACH,aAAC,CAAC,CAAC;EACJ,SAAA;OACF,CAAA;MAED,wBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAwB,EAAA;EACtC,QAAA,IAAI,CAAC,IAAI;EAAE,YAAA,OAAO,EAAE,CAAC;EACrB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OAC1G,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;UAAA,IAgBC,KAAA,GAAA,IAAA,CAAA;EAfC,QAAA,IAAM,MAAM,GAAG;EACb,YAAA,oBAAoB,EAAE,KAAK;EAC3B,YAAA,IAAI,EAAE,CAAC;EACP,YAAA,IAAI,EAAE,EAAE;EACR,YAAA,SAAS,EAAE,KAAK;WACjB,CAAA;UACD,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;cAC9F,IAAI,EAAE,UAAC,GAAQ,EAAA;kBACb,KAAI,CAAC,UAAU,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,QAAQ,CAAC;eACjC;cACD,KAAK,EAAE,UAAC,KAAU,EAAA;EAChB,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACrB,gBAAA,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAI,CAAC,YAAY,EAAE,CAAA;eAC3D;EACF,SAAA,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,KAAa,EAAE,OAAY,EAAA;EAC1C,QAAA,OAAO,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7D,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,UAAuB,KAAa,EAAE,EAAO,EAAA;UAC3C,IAAI,CAAA,EAAE,KAAF,IAAA,IAAA,EAAE,uBAAF,EAAE,CAAE,UAAU,KAAI,IAAI;EAAE,YAAA,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;UACvD,IAAI,CAAA,EAAE,KAAF,IAAA,IAAA,EAAE,uBAAF,EAAE,CAAE,EAAE,KAAI,IAAI;EAAE,YAAA,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;UACvC,OAAO,GAAG,GAAG,KAAK,CAAC;OACpB,CAAA;;;8IApkBU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA1E,aAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAAJ,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAxB,wBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,g0BCpBrC,8pbAiKc,EAAA,MAAA,EAAA,CAAA,kjZAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAY,aAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAwB,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA2C,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAN,cAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAlC,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA5B,aAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA6B,gBAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAF,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAE,gBAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,gBAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAF,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAH,eAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHD7ID,wBAAwB,EAAA,UAAA,EAAA,CAAA;oBANpC/B,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,sBAAsB;EAChC,oBAAA,WAAW,EAAE,mCAAmC;sBAChD,SAAS,EAAE,CAAC,mCAAmC,CAAC;mBACjD,CAAA;mLAGU,WAAW,EAAA,CAAA;wBAAnBW,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,aAAa,EAAA,CAAA;wBAArBA,QAAK;kBACG,UAAU,EAAA,CAAA;wBAAlBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,oBAAoB,EAAA,CAAA;wBAA5BA,QAAK;kBACG,oBAAoB,EAAA,CAAA;wBAA5BA,QAAK;kBACG,4BAA4B,EAAA,CAAA;wBAApCA,QAAK;kBACG,6BAA6B,EAAA,CAAA;wBAArCA,QAAK;kBACG,iBAAiB,EAAA,CAAA;wBAAzBA,QAAK;kBACG,uBAAuB,EAAA,CAAA;wBAA/BA,QAAK;kBACG,iBAAiB,EAAA,CAAA;wBAAzBA,QAAK;kBACG,oBAAoB,EAAA,CAAA;wBAA5BA,QAAK;kBACG,aAAa,EAAA,CAAA;wBAArBA,QAAK;kBAEI,kBAAkB,EAAA,CAAA;wBAA3BC,SAAM;kBACG,0BAA0B,EAAA,CAAA;wBAAnCA,SAAM;kBACG,eAAe,EAAA,CAAA;wBAAxBA,SAAM;;;AEXT,MAAA,qBAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,qBAAA,GAAA;;;;2IAAa,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAjB,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;EAArB,qBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,qBAAqB,iBAhB9B,wBAAwB;UACxB,mCAAmC;UACnC,0BAA0B;EAC1B,QAAA,wBAAwB,aAGxBkE,iBAAY;UACZ,YAAY;UACZ,eAAe;UACfC,gBAAW;UACXC,wBAAmB,aAGnB,wBAAwB,CAAA,EAAA,CAAA,CAAA;EAGf,qBAAA,CAAA,IAAA,GAAApE,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,qBAAqB,EAXvB,OAAA,EAAA,CAAA;cACPkE,iBAAY;cACZ,YAAY;cACZ,eAAe;cACfC,gBAAW;cACXC,wBAAmB;WACpB,CAAA,EAAA,CAAA,CAAA;oHAKU,qBAAqB,EAAA,UAAA,EAAA,CAAA;oBAlBjCH,WAAQ;EAAC,YAAA,IAAA,EAAA,CAAA;EACR,oBAAA,YAAY,EAAE;0BACZ,wBAAwB;0BACxB,mCAAmC;0BACnC,0BAA0B;0BAC1B,wBAAwB;EACzB,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACPC,iBAAY;0BACZ,YAAY;0BACZ,eAAe;0BACfC,gBAAW;0BACXC,wBAAmB;EACpB,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACP,wBAAwB;EACzB,qBAAA;mBACF,CAAA;;;AChBD,MAAA,uBAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,uBAAA,GAAA;;EACW,IAAA,uBAAA,CAAA,OAAO,GAAd,YAAA;UACI,OAAO;EACH,YAAA,QAAQ,EAAE,uBAAuB;EACjC,YAAA,SAAS,EAAE;kBACP,sBAAsB;kBACtB,sBAAsB;EACzB,aAAA;WACJ,CAAC;OACL,CAAA;;;6IATQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAApE,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;EAAvB,uBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,uBAAuB,YAH5BkE,iBAAY,CAAA,EAAA,CAAA,CAAA;EAGP,uBAAA,CAAA,IAAA,GAAAlE,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,uBAAuB,EAJvB,OAAA,EAAA,CAAA;cACLkE,iBAAY;WACf,CAAA,EAAA,CAAA,CAAA;oHAEQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;oBALnCD,WAAQ;EAAC,YAAA,IAAA,EAAA,CAAA;EACN,oBAAA,OAAO,EAAE;0BACLC,iBAAY;EACf,qBAAA;mBACJ,CAAA;;;ECVD;;EAEG;;ECFH;;EAEG;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"commons-assessment.umd.js","sources":["../../../node_modules/tslib/tslib.es6.mjs","../../../projects/commons-assessment/src/lib/shared/utils.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.html","../../../projects/commons-assessment/src/lib/shared/components/skill-allocation/skill-allocation.component.ts","../../../projects/commons-assessment/src/lib/shared/components/skill-allocation/skill-allocation.component.html","../../../projects/commons-assessment/src/lib/shared/components/confirmation-dialog/confirmation-dialog.component.ts","../../../projects/commons-assessment/src/lib/shared/components/confirmation-dialog/confirmation-dialog.component.html","../../../projects/commons-assessment/src/lib/shared/controllers.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/services/assessment-taker.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/proctoring-result/proctoring-result.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/proctoring-result/proctoring-result.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/services/response-builder.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/services/proctoring.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/proctoring-consent/proctoring-consent.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/proctoring-consent/proctoring-consent.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.html","../../../projects/commons-assessment/src/lib/shared/components/text-editor/text-editor.component.ts","../../../projects/commons-assessment/src/lib/shared/components/text-editor/text-editor.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.html","../../../projects/commons-assessment/src/lib/shared/pipes/order-by.pipe.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-date-picker/question-type-date-picker.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-date-picker/question-type-date-picker.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/assessment-taker.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/assessment-taker.component.html","../../../projects/commons-assessment/src/lib/shared/material-modules.ts","../../../projects/commons-assessment/src/lib/shared/shared.module.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/assessment-taker.module.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/services/assessment-builder.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/services/assessment-maker.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/question-details/question-details.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/question-details/question-details.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/assessment-maker.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/assessment-maker.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/assessment-maker.module.ts","../../../projects/commons-assessment/src/lib/commons-assessment.module.ts","../../../projects/commons-assessment/src/public-api.ts","../../../projects/commons-assessment/src/commons-assessment.ts"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export function deepClone<T>(data: T): T {\r\n return JSON.parse(JSON.stringify(data));\r\n}\r\n\r\nexport function generateUuid(): string {\r\n const cryptoObj = window.crypto as any;\r\n\r\n if (cryptoObj?.randomUUID) {\r\n return cryptoObj.randomUUID();\r\n }\r\n\r\n // fallback\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = Math.random() * 16 | 0;\r\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n}\r\n\r\nexport function sortByOrder(\r\n list: any[] | undefined | null,\r\n property: string = 'orderNo',\r\n order: 'asc' | 'desc' = 'asc'\r\n): any[] {\r\n if (!list || !Array.isArray(list)) return [];\r\n\r\n return [...list].sort((a, b) => {\r\n const valA = a?.[property] ?? 0;\r\n const valB = b?.[property] ?? 0;\r\n\r\n const result = valA - valB;\r\n\r\n return order === 'asc' ? result : -result;\r\n });\r\n}","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { deepClone } from '../../../../shared/utils';\r\nimport { QuestionPaperSection } from '../../../../shared/interfaces/question-paper.interface';\r\n\r\n@Component({\r\n selector: 'lib-section-instructions',\r\n templateUrl: './section-instructions.component.html',\r\n styleUrls: ['./section-instructions.component.scss']\r\n})\r\nexport class SectionInstructionsComponent implements OnInit {\r\n imageConfig: { [key: string]: string } = {};\r\n labelConfig: { [key: string]: string } = {};\r\n sectionDetails: QuestionPaperSection | null = null;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<SectionInstructionsComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any,\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.imageConfig = this.dialogData?.imageConfig || {};\r\n this.labelConfig = this.dialogData?.labelConfig || {};\r\n this.sectionDetails = deepClone(this.dialogData?.sectionDetails);\r\n }\r\n\r\n addYoutubeIframeSrc(videoUrl: string) {\r\n if (!videoUrl) return null;\r\n if (this.dialogData.youtubeUrlCache[videoUrl]) {\r\n return this.dialogData.youtubeUrlCache[videoUrl];\r\n }\r\n const videoId = this.getVideoId(videoUrl);\r\n const youtubeUrl = `https://www.youtube.com/embed/${videoId}`;\r\n this.dialogData.youtubeUrlCache[videoUrl] = this.sanitizer.bypassSecurityTrustResourceUrl(youtubeUrl);\r\n return this.dialogData.youtubeUrlCache[videoUrl];\r\n }\r\n\r\n getVideoId(videoUrl: string) {\r\n let pattern = null;\r\n if (videoUrl.includes('youtube.com')) {\r\n pattern = /(?:\\?v=|&v=|youtu\\.be\\/|\\/embed\\/|\\/\\d\\/|\\/vi\\/|\\/v\\/|https?:\\/\\/(?:www\\.)?youtube\\.com\\/(?:v\\/|embed\\/|watch\\?(?:\\S+&)?v=|watch\\?(?:\\S+&)?vi=|\\S+\\/))([a-zA-Z0-9_-]{11})/;\r\n } else if (videoUrl.includes('youtu.be')) {\r\n pattern = /youtu\\.be\\/([a-zA-Z0-9_-]{11})/;\r\n }\r\n if (pattern) {\r\n const match = videoUrl.match(pattern);\r\n if (match && match[1]) {\r\n return match[1];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n}\r\n","<div class=\"col-12\">\r\n <header class=\"p-3 d-flex align-items-center justify-content-between col-12 assessment-bg-grey-one\">\r\n <p class=\"mb-0 assessment-text-semibold-18\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.INSTRUCTIONS']}}\r\n </p>\r\n <img mat-dialog-close [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\" class=\"cursor-pointer\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\r\n </header>\r\n\r\n <div class=\"col-12 px-md-4 px-3 my-4\">\r\n <p *ngIf=\"sectionDetails?.qpsDesc?.[0]?.text\" class=\"assessment-text-medium-14 assessment-grey-ten mb-0\"\r\n [innerHtml]=\"sectionDetails?.qpsDesc?.[0]?.text\"></p>\r\n <div class=\"mt-3 col-12\" *ngIf=\"sectionDetails?.mediaUrl\">\r\n <ng-container *ngTemplateOutlet=\"VideoTemplate; context:{videoUrl:sectionDetails?.mediaUrl}\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <footer class=\"mt-auto p-3 d-flex align-items-center justify-content-end gap-3 col-12 border-top\">\r\n <button mat-dialog-close\r\n class=\"assessment-text-white assessment-bg-grey-ten assessment-border-radius-two border-0 assessment-zoom-animation assessment-button-padding-large assessment-text-medium-13\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.GOT_IT']}}\r\n </button>\r\n </footer>\r\n</div>\r\n\r\n<!-- video preview -->\r\n<ng-template let-videoUrl=\"videoUrl\" #VideoTemplate>\r\n <div class=\"assessment-border-radius-two overflow-hidden col-md-10 col-12 mx-auto\">\r\n <video *ngIf=\"videoUrl?.includes('.mp4') else youtubeVideo\" width=\"400\" controls class=\"mw-100 d-block mx-auto\">\r\n <source [src]=\"videoUrl\" type=\"video/mp4\">\r\n </video>\r\n <ng-template #youtubeVideo>\r\n <div class=\"youtube-video position-relative h-100\">\r\n <iframe [src]=\"addYoutubeIframeSrc(videoUrl)\" title=\"YouTube video player\" frameborder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n allowfullscreen class=\"position-absolute top-0 start-0 w-100 h-100 d-block\">\r\n </iframe>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ng-template>","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { SkillScore } from '../../interfaces/assessment.interface';\r\n\r\n@Component({\r\n selector: 'app-skill-allocation',\r\n templateUrl: './skill-allocation.component.html',\r\n styleUrls: ['./skill-allocation.component.scss']\r\n})\r\nexport class SkillAllocationComponent implements OnInit {\r\n label: any;\r\n skillList: SkillScore[] = [];\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<SkillAllocationComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: { skillList: SkillScore[], label: any },\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.skillList = this.dialogData.skillList?.sort((a, b) => (a?.label || '').localeCompare(b?.label || ''));\r\n this.label = this.dialogData.label;\r\n }\r\n\r\n trackBySkill(index: number, skill: SkillScore) {\r\n return skill?.skillCode != null ? 'k' + skill.skillCode : 'i' + index;\r\n }\r\n}\r\n","<header class=\"px-md-4 p-3 modal-header assessment-bg-grey-one\">\r\n <p class=\"modal-title mb-0 assessment-text-semibold-18\" id=\"staticBackdropLabel\">\r\n {{label['COMMONS_ASSESSMENT.LABEL.SKILL_EVALUATION']}}\r\n </p>\r\n <button mat-dialog-close type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\">\r\n </button>\r\n</header>\r\n<div class=\"p-3 px-md-4\">\r\n <div class=\"d-flex col-12 gap-md-2\">\r\n <p class=\"flex-grow-1 assessment-text-medium-12 mb-0\"></p>\r\n <p class=\"assessment-text-medium-12 assessment-text-grey-eight mb-0 marks text-center\">\r\n {{label['COMMONS_ASSESSMENT.LABEL.QUESTIONS']}}</p>\r\n <p class=\"assessment-text-medium-12 assessment-text-grey-eight mb-0 marks text-center\">\r\n {{label['COMMONS_ASSESSMENT.LABEL.MARKS']}}</p>\r\n </div>\r\n <div class=\"d-flex col-12 py-3 gap-md-2\" *ngFor=\"let skill of skillList; let isLast = last; trackBy: trackBySkill\"\r\n [ngClass]=\"{'border-bottom': !isLast}\">\r\n <div class=\"flex-grow-1\">\r\n <div class=\"col-auto assessment-text-medium-12 assessment-text-grey-ten rounded-2 skill-chip px-2 py-1\">{{skill?.label}}</div>\r\n </div>\r\n <p class=\"assessment-text-semibold-18 mb-0 marks text-center\">{{skill?.totalQuestions ?? 0}}</p>\r\n <p class=\"assessment-text-semibold-18 mb-0 marks text-center\">\r\n {{skill.obtainedMarks}} / {{skill?.totalMarks}}</p>\r\n </div>\r\n</div>","import { Component, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-confirmation-dialog',\r\n templateUrl: './confirmation-dialog.component.html',\r\n styleUrls: ['./confirmation-dialog.component.scss']\r\n})\r\nexport class ConfirmationDialogComponent {\r\n title: string;\r\n message: string;\r\n note: string;\r\n confirmLabel: string;\r\n cancelLabel: string;\r\n hideCancel: boolean;\r\n loading = false;\r\n errorMessage = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ConfirmationDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: {\r\n title?: string;\r\n message?: string;\r\n // Optional secondary line shown below the main message (e.g. usage guidance).\r\n note?: string;\r\n confirmLabel?: string;\r\n cancelLabel?: string;\r\n hideCancel?: boolean;\r\n // Optional async action run on confirm — the dialog shows a loader and stays open\r\n // until it completes, closing with `true` on success or staying open on error.\r\n confirmAction?: () => Observable<any>;\r\n }\r\n ) {\r\n this.title = data?.title || '';\r\n this.message = data?.message || '';\r\n this.note = data?.note || '';\r\n this.confirmLabel = data?.confirmLabel || '';\r\n this.cancelLabel = data?.cancelLabel || '';\r\n this.hideCancel = !!data?.hideCancel;\r\n }\r\n\r\n onConfirm() {\r\n if (this.data?.confirmAction) {\r\n if (this.loading) {\r\n return;\r\n }\r\n this.loading = true;\r\n this.errorMessage = '';\r\n this.data.confirmAction().subscribe({\r\n next: () => this.dialogRef.close(true),\r\n error: (err: any) => {\r\n // keep the dialog open so the user can fix the issue and retry\r\n this.loading = false;\r\n this.errorMessage = (typeof err === 'string' ? err : err?.message) || '';\r\n }\r\n });\r\n return;\r\n }\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onCancel() {\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n","<div class=\"p-3 px-md-4\">\r\n <h2 *ngIf=\"title\" class=\"assessment-text-semibold-16 assessment-text-grey-ten mb-3\">{{ title }}</h2>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten\" [class.mb-4]=\"!note\" [class.mb-2]=\"note\">{{ message }}</p>\r\n <p *ngIf=\"note\" class=\"assessment-text-regular-13 assessment-text-grey-seven mb-4\">{{ note }}</p>\r\n <p *ngIf=\"errorMessage\" class=\"assessment-text-regular-12 assessment-text-danger mb-3\">{{ errorMessage }}</p>\r\n <div class=\"d-flex justify-content-end gap-2\">\r\n <button *ngIf=\"!hideCancel\" type=\"button\" (click)=\"onCancel()\" [disabled]=\"loading\"\r\n class=\"assessment-zoom-animation assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ cancelLabel }}\r\n </button>\r\n <button type=\"button\" (click)=\"onConfirm()\" [disabled]=\"loading\"\r\n class=\"assessment-zoom-animation assessment-btn-primary assessment-border-radius-two assessment-text-semibold-13 px-3 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ confirmLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n","const COMMONS_ASSESSMENT_SERVICE = '/gateway/commons-assessment-service';\r\nconst COMMONS_CHANGEMAKER_ORCHESTRATION_SERVICE = '/gateway/commons-changemaker-orchestration-service';\r\n\r\nexport const googleDriveController = {\r\n checkPublic: COMMONS_CHANGEMAKER_ORCHESTRATION_SERVICE + '/api/v1/consent/google-drive/public?'\r\n}\r\n\r\nexport const refDataController = {\r\n getRefDataByCode: COMMONS_ASSESSMENT_SERVICE + '/api/v1/ref-data/class/$Code?'\r\n}\r\n\r\n\r\nexport const assessmentMakerController = {\r\n assessmentAndQuestionPaper: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessments/bundled',\r\n createQuestion: COMMONS_ASSESSMENT_SERVICE + '/api/v2/questions',\r\n patchQuestion: COMMONS_ASSESSMENT_SERVICE + '/api/v2/questions',\r\n getAssessmentContext: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessments/context?',\r\n getQuestionsByIds: COMMONS_ASSESSMENT_SERVICE + '/api/v2/questions/questionids',\r\n duplicateQuestion: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentQuestionPapers/questionPaperSection/$SectionId/sectionQuestions/$SectionQuestionId/duplicate',\r\n duplicateSection: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentQuestionPapers/$AssessmentQuestionPaperId/questionPaperSection/$SectionId/duplicate',\r\n createAssessmentInstance: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentinstances',\r\n getResponseCount: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessment-instance-assesses/count?'\r\n}\r\n\r\nexport const assessmentTakerController = {\r\n getAssessmentContextById: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessments/context?',\r\n getAssessmentQuestionPaper: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessmentQuestionPapers?',\r\n getAssessmentQuestions: COMMONS_ASSESSMENT_SERVICE + '/api/v3/questions/questions/instance?',\r\n getChildQuestionsWithIdList: COMMONS_ASSESSMENT_SERVICE + '/api/v3/questions/childquestion/instance?',\r\n uploadAttachment: COMMONS_ASSESSMENT_SERVICE + '/api/v1/consent/assessmentInstanceAssesses/question/attachments?',\r\n getAttachments: COMMONS_ASSESSMENT_SERVICE + '/api/v1/attachments/ids?',\r\n createAssessmentInstanceAssesse: COMMONS_ASSESSMENT_SERVICE + '/api/v3/assessmentInstanceAssesses',\r\n updateAssessmentInstanceAssesse: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessmentInstanceAssesses',\r\n getAnswersByAiaId: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessmentInstanceAssesses/',\r\n updateMarks: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentInstanceAssesses/marks',\r\n refreshProctoringToken: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentInstanceAssesses/$Id/proctoring-token/refresh',\r\n endProctoringSession: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentInstanceAssesses/$Id/proctoring-session/end',\r\n getProctoringSessions: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentInstanceAssesses/$Id/proctoring-sessions?',\r\n getProctoringReportBySession: COMMONS_ASSESSMENT_SERVICE + '/api/v1/proctoring-reports/session/$Id'\r\n}","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport * as controllers from '../../../shared/controllers';\r\n\r\n@Injectable()\r\nexport class AssessmentTakerService {\r\n private readonly assetsBaseUrl = document?.baseURI?.replace(/\\/$/, '');\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n private getHeaders(): HttpHeaders {\r\n return new HttpHeaders().set('X-Library-Source', 'commons-assessment');\r\n }\r\n\r\n createParams(params: any): HttpParams {\r\n let param = new HttpParams();\r\n for (const key of Object.keys(params)) {\r\n param = param.set(key, params[key]);\r\n }\r\n return param;\r\n }\r\n\r\n getConfigJSON(fileName: string) {\r\n return this.http.get(`${this.assetsBaseUrl}/assets/commons-assessment/${fileName}.json`);\r\n }\r\n\r\n getAssessmentContextById(params: any) {\r\n return this.http.get(controllers.assessmentTakerController.getAssessmentContextById + this.createParams(params), { headers: this.getHeaders() });\r\n }\r\n\r\n getAssessmentQuestionPaper(instanceId: number) {\r\n return this.http.get(controllers.assessmentTakerController.getAssessmentQuestionPaper + this.createParams({ instanceId }), { headers: this.getHeaders() });\r\n }\r\n\r\n getAssessmentQuestions(instanceId: any, questionIds: any) {\r\n return this.http.get(controllers.assessmentTakerController.getAssessmentQuestions + this.createParams({ instanceId, questionIds }), { headers: this.getHeaders() });\r\n }\r\n\r\n getChildQuestionsWithIdList(instanceId: any, questionIds: any) {\r\n return this.http.get(controllers.assessmentTakerController.getChildQuestionsWithIdList + this.createParams({ instanceId, questionIds }), { headers: this.getHeaders() });\r\n }\r\n\r\n uploadAttachment(fileUploadPayload: FormData, params: any) {\r\n return this.http.post(controllers.assessmentTakerController.uploadAttachment + this.createParams(params), fileUploadPayload, { headers: this.getHeaders() });\r\n }\r\n\r\n getAttachments(params: any) {\r\n return this.http.get(controllers.assessmentTakerController.getAttachments + this.createParams(params), { headers: this.getHeaders() });\r\n }\r\n\r\n submitAssessment(payload: any) {\r\n return this.http.post(controllers.assessmentTakerController.createAssessmentInstanceAssesse, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n patchAssessment(payload: any) {\r\n return this.http.patch(controllers.assessmentTakerController.updateAssessmentInstanceAssesse, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n getAnswersByAiaId(aiaId: any) {\r\n return this.http.get(controllers.assessmentTakerController.getAnswersByAiaId + aiaId, { headers: this.getHeaders() });\r\n }\r\n\r\n updateMarks(payload: any) {\r\n return this.http.patch(controllers.assessmentTakerController.updateMarks, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n refreshProctoringToken(assesseeId: number) {\r\n return this.http.post(controllers.assessmentTakerController.refreshProctoringToken.replace('$Id', assesseeId?.toString()), {}, { headers: this.getHeaders() });\r\n }\r\n\r\n endProctoringSession(assesseeId: number) {\r\n return this.http.post(controllers.assessmentTakerController.endProctoringSession.replace('$Id', assesseeId?.toString()), '', { headers: this.getHeaders() });\r\n }\r\n\r\n getProctoringSessions(assesseeId: number, params: any) {\r\n return this.http.get(controllers.assessmentTakerController.getProctoringSessions.replace('$Id', assesseeId?.toString()) + this.createParams(params), { headers: this.getHeaders() });\r\n }\r\n\r\n getProctoringReportBySession(sessionId: number) {\r\n return this.http.get(controllers.assessmentTakerController.getProctoringReportBySession.replace('$Id', sessionId?.toString()), { headers: this.getHeaders() });\r\n }\r\n\r\n checkGoogleDriveLinkPublic(googleDriveLink: string) {\r\n return this.http.get(controllers.googleDriveController.checkPublic + this.createParams({ googleDriveLink }), { headers: this.getHeaders() });\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { AssessmentTakerService } from '../../services/assessment-taker.service';\r\nimport { ProctoringPayload, ProctoringReport, ProctoringSessionSummary } from '../../../../shared/interfaces/proctoring.interface';\r\n\r\ntype ReportState = 'loading' | 'loaded' | 'empty' | 'error';\r\n\r\n@Component({\r\n selector: 'lib-proctoring-result',\r\n templateUrl: './proctoring-result.component.html',\r\n styleUrls: ['./proctoring-result.component.scss']\r\n})\r\nexport class ProctoringResultComponent implements OnInit {\r\n labelConfig: { [key: string]: string };\r\n imageConfig: { [key: string]: string };\r\n assesseeId: number;\r\n assesseeName: string;\r\n\r\n sessions: ProctoringSessionSummary[] = [];\r\n loading = false;\r\n errored = false;\r\n totalElements = 0;\r\n last = true;\r\n private page = 0;\r\n private readonly size = 20;\r\n\r\n // per-session lazy report data + state (keyed by session id)\r\n reportBySession: { [sessionId: number]: ProctoringReport } = {};\r\n reportState: { [sessionId: number]: ReportState } = {};\r\n private parsedCache: { [reportId: number]: ProctoringPayload | null } = {};\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ProctoringResultComponent>,\r\n private assessmentTakerService: AssessmentTakerService,\r\n @Inject(MAT_DIALOG_DATA) public data: {\r\n labelConfig?: { [key: string]: string };\r\n imageConfig?: { [key: string]: string };\r\n assesseeId?: number;\r\n assesseeName?: string;\r\n }\r\n ) {\r\n this.labelConfig = data?.labelConfig || {};\r\n this.imageConfig = data?.imageConfig || {};\r\n this.assesseeId = data?.assesseeId as number;\r\n this.assesseeName = data?.assesseeName || '';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadSessions();\r\n }\r\n\r\n loadSessions(): void {\r\n if (!this.assesseeId || this.loading) {\r\n if (!this.assesseeId) { this.errored = true; }\r\n return;\r\n }\r\n this.loading = true;\r\n this.errored = false;\r\n this.assessmentTakerService\r\n .getProctoringSessions(this.assesseeId, { direction: 'desc', page: this.page, size: this.size, sortBy: 'id' })\r\n .subscribe({\r\n next: (res: any) => {\r\n this.sessions = [...this.sessions, ...(res?.content || [])];\r\n this.totalElements = res?.totalElements ?? this.sessions.length;\r\n this.last = res?.last ?? true;\r\n this.loading = false;\r\n },\r\n error: () => {\r\n this.loading = false;\r\n this.errored = true;\r\n }\r\n });\r\n }\r\n\r\n loadMore(): void {\r\n if (!this.last && !this.loading) {\r\n this.page++;\r\n this.loadSessions();\r\n }\r\n }\r\n\r\n /** Fetches the report for a session the first time its panel is expanded. */\r\n loadReport(session: ProctoringSessionSummary): void {\r\n const id = session?.id;\r\n if (id == null || this.reportState[id] === 'loading' || this.reportState[id] === 'loaded') {\r\n return;\r\n }\r\n this.reportState[id] = 'loading';\r\n this.assessmentTakerService.getProctoringReportBySession(id).subscribe({\r\n next: (res: any) => {\r\n if (!res || typeof res !== 'object') {\r\n this.reportState[id] = 'empty';\r\n return;\r\n }\r\n this.reportBySession[id] = res;\r\n this.reportState[id] = 'loaded';\r\n },\r\n error: (err: any) => {\r\n // no report yet (e.g. session not validated) → empty; anything else → error\r\n this.reportState[id] = err?.status === 404 ? 'empty' : 'error';\r\n }\r\n });\r\n }\r\n\r\n trackBySessionId(_index: number, session: ProctoringSessionSummary): number {\r\n return session?.id ?? _index;\r\n }\r\n\r\n trackByIndex(index: number): number {\r\n return index;\r\n }\r\n\r\n /** Parses (and caches) the reportPayload JSON. Returns null if absent or not valid JSON. */\r\n getParsedPayload(report: ProctoringReport): ProctoringPayload | null {\r\n const id = report?.id ?? -1;\r\n if (!(id in this.parsedCache)) {\r\n try {\r\n this.parsedCache[id] = report?.reportPayload ? JSON.parse(report.reportPayload) : null;\r\n } catch {\r\n this.parsedCache[id] = null;\r\n }\r\n }\r\n return this.parsedCache[id];\r\n }\r\n\r\n /** Formats a duration in seconds as `Mm Ss` (or `Ss` under a minute). */\r\n formatDuration(seconds?: number): string {\r\n if (seconds == null) { return ''; }\r\n const m = Math.floor(seconds / 60);\r\n const s = seconds % 60;\r\n return m > 0 ? `${m}m ${s}s` : `${s}s`;\r\n }\r\n\r\n /** Session timestamps are epoch milliseconds already; guard 0/undefined so nothing renders. */\r\n toMillis(epochMillis?: number): number | null {\r\n return epochMillis ? epochMillis : null;\r\n }\r\n\r\n /**\r\n * Theme badge classes for a session status.\r\n * ACTIVE = running, VALIDATING = report in progress, VALIDATED = report ready,\r\n * ENDED = stopped/invalidated, FAILED = errored.\r\n */\r\n statusBadgeClass(status?: string): string {\r\n switch ((status || '').toUpperCase()) {\r\n case 'ACTIVE': return 'assessment-bg-primary-one assessment-text-white';\r\n case 'VALIDATING': return 'assessment-bg-warning assessment-text-white';\r\n case 'VALIDATED': return 'assessment-bg-success assessment-text-white';\r\n case 'FAILED': return 'assessment-bg-danger assessment-text-white';\r\n case 'ENDED':\r\n default: return 'assessment-bg-grey-six assessment-text-white';\r\n }\r\n }\r\n\r\n /** Maps a raw event code (e.g. `tab.hidden`) to a friendly label, falling back to the raw code. */\r\n eventTypeLabel(type?: string): string {\r\n if (!type) { return ''; }\r\n return this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.EVENT.' + type] || type;\r\n }\r\n\r\n /** Maps a raw reason code (e.g. `browser_activity`) to a friendly label, falling back to the raw code. */\r\n reasonCodeLabel(code?: string): string {\r\n if (!code) { return ''; }\r\n return this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.REASON.' + code] || code;\r\n }\r\n\r\n /** Highlights integrity-relevant timeline events (tab switches, face issues, session markers). */\r\n isNoteworthy(type?: string): boolean {\r\n if (!type) { return false; }\r\n return type.includes('tab.') || type.includes('no_face') || type.includes('multi_face')\r\n || type.includes('session.') || type.includes('camera.') || type.includes('clipboard')\r\n || type.includes('fullscreen');\r\n }\r\n\r\n close(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string): void {\r\n event.target.src = filePath;\r\n }\r\n}\r\n","<div class=\"d-flex flex-column h-100 overflow-hidden assessment-bg-white\">\r\n\r\n <!-- Header -->\r\n <div class=\"d-flex align-items-start justify-content-between gap-3 p-3 px-md-4 border-bottom\">\r\n <div class=\"flex-grow-1\">\r\n <p class=\"assessment-text-semibold-16 assessment-text-grey-ten mb-1\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.RESULT_TITLE'] }}\r\n </p>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0\">\r\n <span *ngIf=\"assesseeName\">{{ assesseeName }} · </span>{{ totalElements }} {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_COUNT'] }}\r\n </p>\r\n </div>\r\n <button type=\"button\" class=\"btn-close\" (click)=\"close()\" aria-label=\"Close\"></button>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"flex-grow-1 overflow-auto p-3 px-md-4\">\r\n\r\n <!-- Loading (initial) -->\r\n <div *ngIf=\"loading && !sessions.length\" class=\"d-flex align-items-center justify-content-center gap-2 py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngIf=\"errored && !sessions.length\" class=\"text-center py-5\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-3\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadSessions()\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- Empty -->\r\n <div *ngIf=\"!loading && !errored && !sessions.length\" class=\"text-center py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Sessions accordion -->\r\n <mat-accordion class=\"d-block\" *ngIf=\"sessions.length\">\r\n <mat-expansion-panel *ngFor=\"let session of sessions; trackBy: trackBySessionId\"\r\n class=\"shadow-none assessment-border-radius-two assessment-panel border mb-2\" (opened)=\"loadReport(session)\">\r\n\r\n <mat-expansion-panel-header class=\"proctoring-panel-header p-3\">\r\n <mat-panel-title class=\"d-flex flex-column my-1 align-items-start\">\r\n <span class=\"assessment-text-semibold-13 assessment-text-grey-ten\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_SESSION'] }} {{ session.id }}\r\n </span>\r\n <span class=\"d-flex align-items-center gap-2 mt-1\">\r\n <span *ngIf=\"session.status\" class=\"badge rounded-pill text-capitalize assessment-text-medium-10\" [ngClass]=\"statusBadgeClass(session.status)\">\r\n {{ session.status }}\r\n </span>\r\n <span *ngIf=\"session?.integritySummary?.integrityFlagged\"\r\n class=\"badge rounded-pill assessment-bg-danger assessment-text-white assessment-text-medium-10\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FLAGGED'] }}\r\n </span>\r\n </span>\r\n </mat-panel-title>\r\n <mat-panel-description class=\"justify-content-end align-items-center me-3\">\r\n <span *ngIf=\"toMillis(session.startedAt) as started\" class=\"assessment-text-regular-11 assessment-text-grey-seven\">\r\n {{ started | date:'dd MMM, HH:mm' }}\r\n </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Report is fetched when the panel opens -->\r\n <ng-template matExpansionPanelContent>\r\n <div class=\"p-3 pt-1\" [ngSwitch]=\"reportState[session.id!]\">\r\n\r\n <!-- Loading -->\r\n <div *ngSwitchCase=\"'loading'\" class=\"d-flex align-items-center gap-2 py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngSwitchCase=\"'error'\" class=\"py-3\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadReport(session)\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- No report yet -->\r\n <div *ngSwitchCase=\"'empty'\" class=\"py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Loaded report -->\r\n <ng-container *ngSwitchCase=\"'loaded'\">\r\n <ng-container *ngIf=\"reportBySession[session.id!] as report\">\r\n\r\n <!-- Integrity summary (report top-level) -->\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_INTEGRITY_SCORE'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\" [class.assessment-text-danger]=\"report.integrityFlagged\">\r\n {{ report.integrityScore }}<span *ngIf=\"report.integrityLevel\"> ({{ report.integrityLevel }})</span>\r\n </p>\r\n </div>\r\n <div class=\"col-6\" *ngIf=\"report.identityMatch\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IDENTITY_MATCH'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\">{{ report.identityMatch }}</p>\r\n </div>\r\n <div class=\"col-12\" *ngIf=\"report.failureReason\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FAILURE_REASON'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-0\">{{ report.failureReason }}</p>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getParsedPayload(report) as p; else rawPayload\">\r\n\r\n <!-- Summary meta -->\r\n <div class=\"d-flex flex-wrap align-items-center gap-2 mt-3 assessment-text-regular-12 assessment-text-grey-seven\">\r\n <span *ngIf=\"p.duration_seconds != null\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_DURATION'] }}: {{ formatDuration(p.duration_seconds) }}</span>\r\n <span *ngIf=\"p.started_at\">· {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_STARTED'] }}: {{ p.started_at | date:'dd MMM, HH:mm:ss' }}</span>\r\n <span *ngIf=\"p.ended_at\">· {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ENDED'] }}: {{ p.ended_at | date:'HH:mm:ss' }}</span>\r\n </div>\r\n\r\n <!-- Reasons -->\r\n <div *ngIf=\"p.integrity?.reasons?.length\" class=\"d-flex flex-column gap-2 mt-2\">\r\n <div *ngFor=\"let r of p.integrity?.reasons; trackBy: trackByIndex\" class=\"border rounded p-2\">\r\n <div class=\"d-flex align-items-center justify-content-between gap-2\">\r\n <span class=\"assessment-text-semibold-12 assessment-text-grey-ten\">{{ reasonCodeLabel(r.code) }}</span>\r\n <span *ngIf=\"r.weight != null\" class=\"badge rounded-pill assessment-text-white\" [ngClass]=\"(r.weight || 0) < 0 ? 'assessment-bg-danger' : 'assessment-bg-success'\">{{ (r.weight || 0) > 0 ? '+' : '' }}{{ r.weight }}</span>\r\n </div>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0 mt-1\">{{ r.detail }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Stat tiles: face analysis -->\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ANALYSIS'] }}</p>\r\n <div class=\"row row-cols-2 row-cols-md-4 g-2 text-center\">\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\">{{ p.face_analysis?.frames_checked ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FRAMES'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.no_face_frames || 0) > 0\">{{ p.face_analysis?.no_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_NO_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.multi_face_frames || 0) > 0\">{{ p.face_analysis?.multi_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_MULTI_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.impersonation_frames || 0) > 0\">{{ p.face_analysis?.impersonation_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IMPERSONATION'] }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Activity breakdown -->\r\n <div *ngIf=\"p.activity?.by_type\" class=\"d-flex flex-wrap gap-2 mt-3\">\r\n <span *ngFor=\"let item of (p.activity?.by_type | keyvalue); trackBy: trackByIndex\"\r\n class=\"badge rounded-pill assessment-bg-palette-EDF3FD assessment-text-grey-ten assessment-text-medium-12\">\r\n {{ eventTypeLabel(item.key) }} <span class=\"assessment-text-semibold-12\">{{ item.value }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- Evidence images -->\r\n <ng-container *ngIf=\"p.evidence?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EVIDENCE'] }}</p>\r\n <div class=\"d-flex flex-wrap gap-3\">\r\n <a *ngFor=\"let ev of p.evidence; trackBy: trackByIndex\" class=\"text-center text-decoration-none\"\r\n [href]=\"ev.image_url\" target=\"_blank\" rel=\"noopener\">\r\n <img class=\"proctoring-evi-img rounded border\" [src]=\"ev.image_url\" [attr.alt]=\"'frame ' + ev.seq\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/user.svg')\" />\r\n <span class=\"d-block assessment-text-regular-11 assessment-text-grey-seven mt-1\">\r\n <span *ngIf=\"ev.is_reference\" class=\"badge rounded-pill assessment-bg-primary-one assessment-text-white me-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_REFERENCE'] }}</span>\r\n #{{ ev.seq }} · {{ ev.captured_at | date:'HH:mm:ss' }}\r\n </span>\r\n </a>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Timeline -->\r\n <ng-container *ngIf=\"p.timeline?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_TIMELINE'] }} ({{ p.timeline?.length }})\r\n </p>\r\n <div class=\"proctoring-log assessment-bg-grey-ten assessment-text-grey-one font-monospace small rounded p-3 overflow-auto\">\r\n <div *ngFor=\"let ev of p.timeline; trackBy: trackByIndex\" class=\"text-nowrap\" [class.fw-semibold]=\"isNoteworthy(ev.type)\">\r\n <span class=\"assessment-text-grey-five me-2\">#{{ ev.seq }}</span>\r\n <span [class.assessment-text-palette-ADC9F6]=\"isNoteworthy(ev.type)\">{{ eventTypeLabel(ev.type) }}</span>\r\n <span class=\"assessment-text-grey-five ms-2\">{{ ev.at | date:'HH:mm:ss' }} ({{ ev.source }})</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <!-- Fallback: raw payload if it isn't parseable JSON -->\r\n <ng-template #rawPayload>\r\n <pre *ngIf=\"report.reportPayload\" class=\"proctoring-payload assessment-bg-grey-ten assessment-text-grey-one small rounded p-3 overflow-auto mb-0 mt-3\">{{ report.reportPayload }}</pre>\r\n </ng-template>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n <!-- Load more -->\r\n <div *ngIf=\"sessions.length && !last\" class=\"text-center mt-3\">\r\n <button type=\"button\" (click)=\"loadMore()\" [disabled]=\"loading\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.LOAD_MORE'] }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { deepClone } from '../../../shared/utils';\r\nimport { AssessmentQuestionPaper, SectionQuestion } from '../../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentInstanceAssesseDTO } from '../../../shared/interfaces/assessment.interface';\r\nimport { AssessmentQuestion } from '../../../shared/interfaces/question.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResponseBuilderService {\r\n\r\n constructor() { }\r\n\r\n /**\r\n * Builds the payload used to create the assessee record up front (marked in-progress) so the\r\n * backend issues a proctoring session / anchors the timer. Optionally carries the captured\r\n * reference image (base64) for proctoring's first attempt.\r\n */\r\n buildInitAssesseePayload(\r\n assesseeResponse: AssessmentInstanceAssesseDTO,\r\n assessmentData: AssessmentQuestionPaper,\r\n sectionFormGroups: { sectionId: number; formGroup: FormGroup }[],\r\n questionBank: Record<number, AssessmentQuestion>,\r\n tenant: number,\r\n referenceImageBase64: string = ''\r\n ) {\r\n assesseeResponse.assessmentTaken = { code: 'ASSESSMENT_TAKEN.INCOMPLETE' };\r\n const payload = this.buildResponsePayload(assesseeResponse, assessmentData, sectionFormGroups, questionBank, tenant);\r\n // send the captured reference image + host origin so the backend registers it for identity verification\r\n if (referenceImageBase64) {\r\n payload.proctoring = { ...(payload.proctoring || {}), referenceImageBase64, appBaseUrl: window.location.origin };\r\n }\r\n return payload;\r\n }\r\n\r\n buildResponsePayload(\r\n assesseeResponse: AssessmentInstanceAssesseDTO,\r\n assessmentData: AssessmentQuestionPaper,\r\n sectionFormGroups: { sectionId: number; formGroup: FormGroup }[],\r\n questionBank: Record<number, AssessmentQuestion>,\r\n tenant: number\r\n ) {\r\n const requestPayload = deepClone(assesseeResponse);\r\n requestPayload.aiadefaultResponseList = [];\r\n\r\n assessmentData?.questionPaperSectionList?.forEach((section: any) => {\r\n const sectionFormGroupWrapper = sectionFormGroups.find((s: any) => s.sectionId === section.id);\r\n if (sectionFormGroupWrapper) {\r\n const formGroup = sectionFormGroupWrapper.formGroup;\r\n\r\n section.sectionQuestionsList?.forEach((sectionQuestion: SectionQuestion) => {\r\n const ques = questionBank[sectionQuestion?.questionId || -1];\r\n if (!ques) return;\r\n\r\n const quesResObj = this.getQuestionResponseObj(formGroup, ques?.id, questionBank);\r\n const questionResponseObj = quesResObj.questionResponseObj;\r\n\r\n if (questionResponseObj) {\r\n let reqObj = Object.assign({}, questionResponseObj);\r\n delete reqObj.defaultOption;\r\n\r\n const existingAns = assesseeResponse.aiadefaultResponseList?.find((a: any) =>\r\n a.sectionQuestion?.questionId === sectionQuestion.questionId && !a.childQuestionId\r\n );\r\n\r\n this.mergeExistingIds(reqObj, existingAns);\r\n\r\n if (!existingAns && reqObj.drobjectiveresponseList && reqObj.drobjectiveresponseList.length === 0) return;\r\n if (!existingAns && reqObj.attachmentResponseList && reqObj.attachmentResponseList.length === 0) return;\r\n\r\n requestPayload.aiadefaultResponseList?.push({\r\n ...reqObj,\r\n id: existingAns?.id || 0,\r\n isActive: true,\r\n sectionQuestion,\r\n tenant,\r\n marks: formGroup.get(`${ques.id}_marks`)?.value != null ? Number(formGroup.get(`${ques.id}_marks`)?.value) : null\r\n });\r\n\r\n if (quesResObj.childQuesResObj?.length) {\r\n quesResObj.childQuesResObj.forEach((childData: any) => {\r\n const childObj = childData?.questionResponseObj;\r\n const childDetails = childData?.childQuestionDetails;\r\n if (!childObj || !childDetails) return;\r\n\r\n let specificChildReqObj = Object.assign({}, childObj);\r\n delete specificChildReqObj.defaultOption;\r\n\r\n const existingChildAns = assesseeResponse.aiadefaultResponseList?.find((a: any) =>\r\n a.childQuestionId === childDetails.id &&\r\n a.childQuestionParentQuestionId === sectionQuestion.questionId\r\n );\r\n\r\n this.mergeExistingIds(specificChildReqObj, existingChildAns);\r\n\r\n if (!existingChildAns && specificChildReqObj.drobjectiveresponseList && specificChildReqObj.drobjectiveresponseList.length === 0) return;\r\n if (!existingChildAns && specificChildReqObj.attachmentResponseList && specificChildReqObj.attachmentResponseList.length === 0) return;\r\n\r\n requestPayload.aiadefaultResponseList?.push({\r\n childQuestionId: childDetails.id,\r\n childQuestionParentQuestionId: sectionQuestion.questionId,\r\n childDefaultOptionId: childData.parentOptionId,\r\n ...specificChildReqObj,\r\n id: existingChildAns?.id || 0,\r\n isActive: true,\r\n sectionQuestion,\r\n tenant,\r\n marks: formGroup.get(`${childDetails.id}_marks`)?.value != null ? Number(formGroup.get(`${childDetails.id}_marks`)?.value) : null\r\n });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n return requestPayload;\r\n }\r\n\r\n private mergeExistingIds(newAns: any, existingAns: any) {\r\n if (!existingAns) return;\r\n\r\n if (newAns.drsubjectiveresponseList && existingAns.drsubjectiveresponseList) {\r\n newAns.drsubjectiveresponseList.forEach((nItem: any, idx: number) => {\r\n if (existingAns.drsubjectiveresponseList[idx]) {\r\n nItem.id = existingAns.drsubjectiveresponseList[idx].id;\r\n }\r\n });\r\n }\r\n if (newAns.drobjectiveresponseList && existingAns.drobjectiveresponseList) {\r\n newAns.drobjectiveresponseList.forEach((nItem: any, idx: number) => {\r\n const existingItem = existingAns.drobjectiveresponseList.find((eItem: any) =>\r\n eItem.defaultOption?.options?.id === nItem.defaultOption?.options?.id\r\n );\r\n if (existingItem) {\r\n nItem.id = existingItem.id;\r\n }\r\n });\r\n\r\n existingAns.drobjectiveresponseList.forEach((eItem: any) => {\r\n const stillExists = newAns.drobjectiveresponseList.find((nItem: any) =>\r\n nItem.defaultOption?.options?.id === eItem.defaultOption?.options?.id\r\n );\r\n if (!stillExists) {\r\n newAns.drobjectiveresponseList.push({\r\n ...eItem,\r\n isActive: false\r\n });\r\n } else {\r\n stillExists.isActive = true;\r\n }\r\n });\r\n }\r\n\r\n if (newAns.attachmentResponseList && existingAns.attachmentResponseList) {\r\n newAns.attachmentResponseList.forEach((nItem: any) => {\r\n const existingItem = existingAns.attachmentResponseList.find((eItem: any) =>\r\n eItem.id === nItem.id\r\n );\r\n if (existingItem) {\r\n nItem.id = existingItem.id;\r\n }\r\n });\r\n\r\n existingAns.attachmentResponseList.forEach((eItem: any) => {\r\n const stillExists = newAns.attachmentResponseList.find((nItem: any) =>\r\n nItem.id === eItem.id\r\n );\r\n if (!stillExists) {\r\n newAns.attachmentResponseList.push({\r\n ...eItem,\r\n isActive: false\r\n });\r\n } else {\r\n stillExists.isActive = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n private getQuestionResponseObj(formGroup: any, quesId: number = -1, questionBank: any): any {\r\n const questionDetails = questionBank[quesId];\r\n if (!questionDetails) return { questionResponseObj: null, childQuesResObj: [] };\r\n\r\n let questionResponseObj: any = {};\r\n let childQuesResObj: any = [];\r\n const rawValues = formGroup?.getRawValue ? formGroup.getRawValue() : (formGroup?.value || {});\r\n const val = rawValues[quesId];\r\n\r\n const qType = questionDetails.questionType?.code;\r\n\r\n // if (!val && qType !== 'QUESTION_TYPE.MULTI_SELECT' && qType !== 'QUESTION_TYPE.PREFERENCE' && qType !== 'QUESTION_TYPE.FILE_UPLOAD') {\r\n // return { questionResponseObj: null, childQuesResObj: [] };\r\n // }\r\n\r\n if (qType === 'QUESTION_TYPE.OBJECTIVE') {\r\n const defaultOptions = questionDetails?.defaultOptionsList || [];\r\n const selectedOption = defaultOptions?.find((i: any) => i?.options?.id === val?.id) || {};\r\n\r\n if (selectedOption) {\r\n questionResponseObj = {\r\n optionId: selectedOption?.options,\r\n defaultOption: selectedOption\r\n };\r\n\r\n if (selectedOption.remarksRequired) {\r\n const remarksVal = rawValues[`${quesId}_remarks_${selectedOption.id}`];\r\n if (remarksVal) {\r\n questionResponseObj.remarks = remarksVal;\r\n }\r\n }\r\n\r\n const childQuesIds = selectedOption.childQuestionList || [];\r\n childQuesIds.forEach((childId: number) => {\r\n const childResponse = this.getQuestionResponseObj(formGroup, childId, questionBank);\r\n if (childResponse?.questionResponseObj) {\r\n childQuesResObj.push({\r\n questionResponseObj: childResponse.questionResponseObj,\r\n childQuestionDetails: questionBank[childId],\r\n parentOptionId: selectedOption.options.id\r\n });\r\n if (childResponse.childQuesResObj?.length) {\r\n childQuesResObj = childQuesResObj.concat(childResponse.childQuesResObj);\r\n }\r\n }\r\n });\r\n } else {\r\n questionResponseObj = null;\r\n }\r\n } else if (qType === 'QUESTION_TYPE.MULTI_SELECT' || qType === 'QUESTION_TYPE.PREFERENCE') {\r\n const defaultOptions = questionDetails.defaultOptionsList || [];\r\n const drobjectiveresponseList: any[] = [];\r\n\r\n let valArray = Array.isArray(val) ? val : (val ? [val] : []);\r\n\r\n valArray.forEach((opt: any, index: number) => {\r\n const selectedOption = defaultOptions.find((i: any) => i.options?.id === opt.id);\r\n if (selectedOption) {\r\n const obj: any = {\r\n id: 0,\r\n defaultOption: selectedOption\r\n };\r\n\r\n if (qType === 'QUESTION_TYPE.PREFERENCE') {\r\n obj.orderNo = index + 1;\r\n }\r\n\r\n if (selectedOption.remarksRequired) {\r\n const remarksVal = rawValues[`${quesId}_remarks_${selectedOption.id}`];\r\n if (remarksVal) {\r\n obj.remarks = remarksVal;\r\n }\r\n }\r\n\r\n drobjectiveresponseList.push(obj);\r\n\r\n const childQuesIds = selectedOption.childQuestionList || [];\r\n childQuesIds.forEach((childId: number) => {\r\n const childResponse = this.getQuestionResponseObj(formGroup, childId, questionBank);\r\n if (childResponse?.questionResponseObj) {\r\n childQuesResObj.push({\r\n questionResponseObj: childResponse.questionResponseObj,\r\n childQuestionDetails: questionBank[childId],\r\n parentOptionId: selectedOption.options.id\r\n });\r\n if (childResponse.childQuesResObj?.length) {\r\n childQuesResObj = childQuesResObj.concat(childResponse.childQuesResObj);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n questionResponseObj = { drobjectiveresponseList };\r\n } else if (qType === 'QUESTION_TYPE.FILE_UPLOAD') {\r\n const attachmentResponseList: any[] = [];\r\n\r\n let valArray = Array.isArray(val) ? val : (val ? [val] : []);\r\n valArray.forEach((opt: any) => {\r\n attachmentResponseList.push(opt);\r\n });\r\n\r\n questionResponseObj = { attachmentResponseList };\r\n } else {\r\n let responseText = val;\r\n if (qType === 'QUESTION_TYPE.DATE_PICKER' && val) {\r\n const dateObj = new Date(val);\r\n if (!isNaN(dateObj.getTime())) {\r\n responseText = dateObj.toISOString();\r\n }\r\n }\r\n questionResponseObj = {\r\n drsubjectiveresponseList: [\r\n {\r\n id: 0,\r\n responseText: responseText\r\n }\r\n ]\r\n };\r\n }\r\n\r\n return { questionResponseObj, childQuesResObj };\r\n }\r\n\r\n buildMarksPayload(assesseeResponse: AssessmentInstanceAssesseDTO) {\r\n const responses: any[] = [];\r\n\r\n assesseeResponse.aiadefaultResponseList?.forEach((response: any) => {\r\n if (response?.marks != null) {\r\n responses.push({\r\n aiaDefaultResponseId: response.id,\r\n marks: Number(response.marks)\r\n });\r\n }\r\n });\r\n\r\n return {\r\n assessmentInstanceAssesseeId: assesseeResponse?.id,\r\n responses: responses\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * Thin wrapper around the ProctorLink browser SDK (`@proctorlink/sdk`).\r\n *\r\n * The SDK is an OPTIONAL dependency. The library never imports it directly — otherwise every\r\n * consumer's bundler would have to resolve `@proctorlink/sdk` at build time (and fail when it\r\n * isn't installed). Instead, a host that uses proctoring passes a `sdkLoader` (e.g.\r\n * `() => import('@proctorlink/sdk')`) so the module reference lives in the host app, where the\r\n * package is installed. Consumers who don't use proctoring never reference it and build cleanly.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProctoringService {\r\n private session: any;\r\n // SDK event unsubscribers — kept for the life of the session and removed only in destroy()\r\n private offHandlers: Array<() => void> = [];\r\n\r\n /**\r\n * Creates a ProctorLink session with the given id + JWT and requests camera access.\r\n * The returned observable completes once the candidate GRANTS camera access, and errors\r\n * with `{ code: 'camera_denied' }` if the camera is denied (so the caller can prompt a retry).\r\n *\r\n * `refreshToken` is called if the SDK emits `token-expired` (the exam outlived the token): it\r\n * must return ONLY the new session JWT, which is handed back to the SDK via `updateToken` to\r\n * resume the same session.\r\n */\r\n start(options: {\r\n sessionId?: string;\r\n jwt: string;\r\n refreshToken?: () => Observable<string>;\r\n // host-provided loader for the SDK, e.g. `() => import('@proctorlink/sdk')`\r\n sdkLoader?: () => Promise<any>;\r\n }): Observable<void> {\r\n return new Observable<void>((observer) => {\r\n let settled = false;\r\n\r\n const succeed = () => {\r\n if (!settled) { settled = true; observer.next(); observer.complete(); }\r\n };\r\n const fail = (err: any) => {\r\n if (!settled) { settled = true; observer.error(err); }\r\n };\r\n\r\n if (!options.sdkLoader) {\r\n fail({ message: 'ProctorLink SDK loader not provided' });\r\n return;\r\n }\r\n\r\n Promise.resolve(options.sdkLoader()).then((sdk: any) => {\r\n try {\r\n const ProctorLink = sdk?.ProctorLink || sdk?.default?.ProctorLink || sdk?.default;\r\n this.session = ProctorLink.createSession({\r\n jwt: options.jwt,\r\n sessionId: options.sessionId,\r\n draggable: true\r\n });\r\n\r\n const offPermission = this.session.on('permission', (result: any) => {\r\n if (result?.camera === 'denied') {\r\n fail({ code: 'camera_denied' });\r\n } else if (result?.camera === 'granted') {\r\n succeed();\r\n }\r\n });\r\n const offError = this.session.on('error', (err: any) => fail(err));\r\n\r\n // token outlived the exam — re-mint for the same session and hand the new JWT back\r\n const offTokenExpired = this.session.on('token-expired', () => {\r\n options.refreshToken?.().subscribe({\r\n next: (jwt: string) => { try { this.session?.updateToken?.(jwt); } catch (e) { /* noop */ } },\r\n error: () => { /* refresh failed; SDK will surface a session error if it can't continue */ }\r\n });\r\n });\r\n\r\n // Keep these listeners for the LIFE of the session — they are removed in destroy().\r\n // (Do NOT tear them down when this observable completes on camera-granted, otherwise the\r\n // long-lived `token-expired`/`error` events would never reach us again.)\r\n this.offHandlers = [offPermission, offError, offTokenExpired].filter((fn) => typeof fn === 'function');\r\n\r\n // mounts the enclave, requests the camera and begins capture\r\n Promise.resolve(this.session.start()).catch((err: any) => fail(err));\r\n } catch (err) {\r\n fail(err);\r\n }\r\n }).catch((err: any) => fail(err));\r\n });\r\n }\r\n\r\n /** Subscribe to the live proctoring event stream. */\r\n onEvent(cb: (event: any) => void) {\r\n return this.session?.onEvent?.(cb);\r\n }\r\n\r\n /** End capture and flush pending data. */\r\n stop() {\r\n try { this.session?.stop?.(); } catch (e) { /* noop */ }\r\n }\r\n\r\n /** Tear down and remove the camera preview. */\r\n destroy(params: { endSession: boolean } = { endSession: true }) {\r\n this.offHandlers.forEach((off) => { try { off(); } catch (e) { /* noop */ } });\r\n this.offHandlers = [];\r\n try { this.session?.destroy?.(params); } catch (e) { /* noop */ }\r\n this.session = undefined;\r\n }\r\n}\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-proctoring-consent',\r\n templateUrl: './proctoring-consent.component.html',\r\n styleUrls: ['./proctoring-consent.component.scss']\r\n})\r\nexport class ProctoringConsentComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild('video') videoRef!: ElementRef<HTMLVideoElement>;\r\n @ViewChild('canvas') canvasRef!: ElementRef<HTMLCanvasElement>;\r\n\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n // when true, shows the proctoring consent notice (biometric capture); false for a timed-only intro\r\n @Input() proctoringEnabled = false;\r\n // when true, the candidate must capture a reference photo before proceeding (proctoring first attempt)\r\n @Input() requireCapture = false;\r\n @Input() sectionCount = 0;\r\n @Input() questionCount = 0;\r\n @Input() durationSeconds = 0;\r\n // starts the proctoring session, passing the captured reference image (base64, no data URI prefix;\r\n // empty when no capture is required). Returns an observable that completes once the session is live.\r\n @Input() confirmAction?: (referenceImageBase64: string) => Observable<any>;\r\n // emitted once the candidate proceeds and the proctoring session has started\r\n @Output() proceeded = new EventEmitter<void>();\r\n\r\n cameraReady = false;\r\n cameraError = '';\r\n captured = false;\r\n capturedUrl = '';\r\n starting = false;\r\n startError = '';\r\n\r\n private stream?: MediaStream;\r\n private capturedBase64 = '';\r\n\r\n /** Proceed is allowed once a photo is captured, or immediately when no capture is required. */\r\n get canProceed(): boolean {\r\n return !this.requireCapture || this.captured;\r\n }\r\n\r\n get durationMinutes(): number {\r\n // keep fractional minutes (e.g. 30s -> 0.5) so the display matches the saved duration\r\n return Math.round((this.durationSeconds / 60) * 100) / 100;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.requireCapture) {\r\n this.startCamera();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stopCamera();\r\n }\r\n\r\n startCamera(): void {\r\n this.cameraError = '';\r\n navigator.mediaDevices?.getUserMedia({ video: { facingMode: 'user' }, audio: false })\r\n .then((stream) => {\r\n this.stream = stream;\r\n this.cameraReady = true;\r\n if (this.videoRef?.nativeElement) {\r\n this.videoRef.nativeElement.srcObject = stream;\r\n }\r\n })\r\n .catch(() => {\r\n this.cameraReady = false;\r\n this.cameraError = this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAMERA_DENIED'];\r\n });\r\n }\r\n\r\n /** Grabs a still frame from the live preview into a JPEG (used as the reference image). */\r\n capture(): void {\r\n const video = this.videoRef?.nativeElement;\r\n const canvas = this.canvasRef?.nativeElement;\r\n if (!video || !canvas || !this.cameraReady) {\r\n return;\r\n }\r\n canvas.width = video.videoWidth;\r\n canvas.height = video.videoHeight;\r\n canvas.getContext('2d')?.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n this.capturedUrl = canvas.toDataURL('image/jpeg', 0.9);\r\n // strip the `data:image/jpeg;base64,` prefix — the API field carries raw base64\r\n this.capturedBase64 = this.capturedUrl.split(',')[1] || '';\r\n this.captured = true;\r\n }\r\n\r\n retake(): void {\r\n this.captured = false;\r\n this.capturedUrl = '';\r\n this.capturedBase64 = '';\r\n this.startError = '';\r\n }\r\n\r\n /** Enabled only once a photo is captured (when required); runs the session-start action. */\r\n proceed(): void {\r\n if (!this.canProceed || this.starting) {\r\n return;\r\n }\r\n // release our capture stream before the SDK opens the camera for the live session\r\n this.stopCamera();\r\n if (!this.confirmAction) {\r\n this.proceeded.emit();\r\n return;\r\n }\r\n this.starting = true;\r\n this.startError = '';\r\n this.confirmAction(this.capturedBase64).subscribe({\r\n next: () => this.proceeded.emit(),\r\n error: (err: any) => {\r\n this.starting = false;\r\n this.startError = (typeof err === 'string' ? err : err?.message)\r\n || this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSION_ERROR'];\r\n }\r\n });\r\n }\r\n\r\n private stopCamera(): void {\r\n this.stream?.getTracks().forEach((t) => t.stop());\r\n this.stream = undefined;\r\n }\r\n}\r\n","<div class=\"proctoring-intro d-flex flex-column align-items-center justify-content-start py-4\">\r\n <div class=\"proctoring-intro-card w-100\">\r\n\r\n <h2 class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_TITLE'] }}\r\n </h2>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-seven mb-3\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_SUBTITLE'] }}\r\n </p>\r\n\r\n <!-- Assessment stats -->\r\n <div class=\"row g-2 mb-4\">\r\n <div class=\"col\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ sectionCount }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_SECTIONS'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ questionCount }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTIONS'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\" *ngIf=\"durationSeconds > 0\">\r\n <div class=\"border rounded p-3 text-center h-100\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-1\">{{ durationMinutes }} {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_MINUTES'] }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_TIME'] }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Proctoring consent (only when proctoring is enabled) -->\r\n <p *ngIf=\"proctoringEnabled\" class=\"assessment-text-regular-13 assessment-text-grey-ten mb-3\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CONSENT_MESSAGE'] }}\r\n </p>\r\n\r\n <!-- Notes -->\r\n <div class=\"assessment-bg-palette-FEF1E8 assessment-border-radius-two p-3 mb-4\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.INTRO_WARNINGS_TITLE'] }}</p>\r\n <ul class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0 ps-3\">\r\n <li class=\"mb-1\" *ngIf=\"durationSeconds > 0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_AUTO_SUBMIT'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_ONE_ATTEMPT'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_NO_TAB_SWITCH'] }}</li>\r\n <li class=\"mb-1\" *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_NO_REFRESH'] }}</li>\r\n <li *ngIf=\"proctoringEnabled\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.WARN_QUIET_ROOM'] }}</li>\r\n </ul>\r\n </div>\r\n\r\n <!-- Reference-image capture (first attempt only) -->\r\n <ng-container *ngIf=\"requireCapture\">\r\n <p class=\"assessment-text-medium-13 assessment-text-grey-ten mb-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAPTURE_INSTRUCTION'] }}\r\n </p>\r\n\r\n <div class=\"position-relative overflow-hidden assessment-bg-grey-two assessment-border-radius-two mb-2\">\r\n <video #video autoplay playsinline muted class=\"proctoring-cam proctoring-cam--mirror\" [hidden]=\"captured\"></video>\r\n <img *ngIf=\"captured\" [src]=\"capturedUrl\" class=\"proctoring-cam\" alt=\"reference\" />\r\n <canvas #canvas hidden></canvas>\r\n\r\n <div *ngIf=\"!cameraReady && !cameraError && !captured\"\r\n class=\"proctoring-cam-overlay assessment-text-regular-12 assessment-text-grey-seven position-absolute d-flex align-items-center justify-content-center\">\r\n <span class=\"spinner-border spinner-border-sm me-2\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAMERA_STARTING'] }}\r\n </div>\r\n </div>\r\n\r\n <p *ngIf=\"cameraError\" class=\"assessment-text-regular-12 assessment-text-danger mb-2\">{{ cameraError }}</p>\r\n\r\n <div class=\"d-flex gap-2 mb-3\">\r\n <button *ngIf=\"captured\" type=\"button\" (click)=\"retake()\" [disabled]=\"starting\"\r\n class=\"assessment-zoom-animation assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.RETAKE'] }}\r\n </button>\r\n <button *ngIf=\"cameraError\" type=\"button\" (click)=\"startCamera()\" [disabled]=\"starting\"\r\n class=\"assessment-zoom-animation assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n <button *ngIf=\"!captured\" type=\"button\" (click)=\"capture()\" [disabled]=\"!cameraReady || starting\"\r\n class=\"assessment-zoom-animation assessment-btn-primary assessment-border-radius-two assessment-text-semibold-13 px-3 py-2 ms-auto\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAPTURE'] }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <p *ngIf=\"startError\" class=\"assessment-text-regular-12 assessment-text-danger mb-3\">{{ startError }}</p>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button *ngIf=\"canProceed\" type=\"button\" (click)=\"proceed()\" [disabled]=\"starting\"\r\n class=\"assessment-zoom-animation assessment-btn-primary assessment-border-radius-two assessment-text-semibold-13 px-4 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"starting\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.CONSENT_ACCEPT'] }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { AssessmentTakerService } from '../../services/assessment-taker.service';\r\n\r\n@Component({\r\n selector: 'lib-question-type-short',\r\n templateUrl: './question-type-short.component.html',\r\n styleUrls: ['./question-type-short.component.scss']\r\n})\r\nexport class QuestionTypeShortComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl,\r\n private assessmentTakerService: AssessmentTakerService\r\n ) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n onBlur() {\r\n this.onTouched();\r\n this.validateGoogleDriveLink();\r\n }\r\n\r\n private isGoogleDriveLink(value: string): boolean {\r\n return /(?:drive|docs)\\.google\\.com/i.test(value || '');\r\n }\r\n\r\n /**\r\n * For URL-type questions, if the entered value is a Google Drive link, verify it is public.\r\n * A private link sets a `privateGdriveLink` error on the (outer) control so the taker shows\r\n * an invalid-input message and blocks submission. Fails open on API/network errors.\r\n */\r\n validateGoogleDriveLink() {\r\n const control = this.ngControl?.control;\r\n if (!control) {\r\n return;\r\n }\r\n const value = (this.formControl.value || '').trim();\r\n if (this.question?.questionType?.code !== 'QUESTION_TYPE.URL' || !this.isGoogleDriveLink(value)) {\r\n this.clearPrivateLinkError();\r\n return;\r\n }\r\n // Hold the field and mark the control INVALID (transient \"checking\" error) so\r\n // submission stays blocked everywhere — including the consumer app, which relies\r\n // on form validity (a PENDING control is not `invalid` and would slip through).\r\n this.formControl.disable({ emitEvent: false });\r\n control.setErrors({ ...(control.errors || {}), gdriveLinkChecking: true });\r\n this.assessmentTakerService.checkGoogleDriveLinkPublic(value).subscribe({\r\n next: (isPublic) => this.finishValidation(!isPublic),\r\n // fail open on API error so a backend hiccup never blocks the user\r\n error: () => this.finishValidation(false, true)\r\n });\r\n }\r\n\r\n private finishValidation(isPrivate: boolean, failOpen: boolean = false) {\r\n const control = this.ngControl?.control;\r\n this.formControl.enable({ emitEvent: false });\r\n if (!control) {\r\n return;\r\n }\r\n if (isPrivate && !failOpen) {\r\n const errors = { ...(control.errors || {}) };\r\n delete errors['gdriveLinkChecking'];\r\n errors['privateGdriveLink'] = true;\r\n control.setErrors(errors);\r\n } else {\r\n // public / fail-open: drop the transient + private-link errors, re-run sync validators\r\n control.updateValueAndValidity();\r\n }\r\n control.markAsTouched();\r\n }\r\n\r\n private clearPrivateLinkError() {\r\n const control = this.ngControl?.control;\r\n if (!control?.errors?.['privateGdriveLink']) {\r\n return;\r\n }\r\n const errors = { ...control.errors };\r\n delete errors['privateGdriveLink'];\r\n control.setErrors(Object.keys(errors).length ? errors : null);\r\n }\r\n\r\n checkFormControlValid() {\r\n const control = this.ngControl?.control;\r\n // while the Google Drive link is being checked the field is on hold — don't flag it red yet\r\n if (control?.errors?.['gdriveLinkChecking']) {\r\n return '';\r\n }\r\n if (control?.touched && control?.invalid) {\r\n return 'assessment-input-border-invalid';\r\n }\r\n return '';\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n get maxCharCount(): number {\r\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxCharacterCount');\r\n return config ? Number(config.configValue) : 0;\r\n }\r\n\r\n get inputType(): string {\r\n switch (this.question?.questionType?.code) {\r\n case 'QUESTION_TYPE.NUMBER':\r\n return 'number';\r\n case 'QUESTION_TYPE.EMAIL':\r\n return 'email';\r\n case 'QUESTION_TYPE.CONTACT_NUMBER':\r\n return 'tel';\r\n case 'QUESTION_TYPE.URL':\r\n return 'url';\r\n default:\r\n return 'text';\r\n }\r\n }\r\n\r\n restrictNumberOnly(event: KeyboardEvent) {\r\n const code = this.question?.questionType?.code;\r\n\r\n const commonAllowedKeys = ['Backspace', 'ArrowLeft', 'ArrowRight', 'Tab', 'Delete'];\r\n\r\n // Strict number (only digits)\r\n if (code === 'QUESTION_TYPE.NUMBER') {\r\n if (!/^[0-9]$/.test(event.key) && !commonAllowedKeys.includes(event.key) && event.key !== '.') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n // Contact number (block alphabets only)\r\n if (code === 'QUESTION_TYPE.CONTACT_NUMBER') {\r\n const isAlphabet = /^[a-zA-Z]$/.test(event.key);\r\n\r\n if (isAlphabet && !commonAllowedKeys.includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n preventScroll(event: WheelEvent) {\r\n if (this.inputType === 'number') {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","<input *ngIf=\"!previewMode else previewModeTemplate\" [type]=\"inputType\" [ngClass]=\"checkFormControlValid()\"\r\n [id]=\"question.id\" [formControl]=\"formControl\"\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\" [required]=\"required\" (blur)=\"onBlur()\"\r\n [attr.maxlength]=\"maxCharCount || null\" (keydown)=\"restrictNumberOnly($event)\"\r\n (wheel)=\"preventScroll($event)\">\r\n\r\n<ng-template #previewModeTemplate>\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\">{{ formControl.value }}</span>\r\n</ng-template>","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-long',\r\n templateUrl: './question-type-long.component.html',\r\n styleUrls: ['./question-type-long.component.scss']\r\n})\r\nexport class QuestionTypeLongComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-input-border-invalid';\r\n }\r\n return '';\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n get maxCharCount(): number {\r\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxCharacterCount');\r\n return config ? Number(config.configValue) : 0;\r\n }\r\n}\r\n","<textarea *ngIf=\"!previewMode else previewModeTemplate\" [ngClass]=\"checkFormControlValid()\" [id]=\"question.id\"\r\n [formControl]=\"formControl\"\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\" [required]=\"required\" (blur)=\"onTouched()\" rows=\"4\"\r\n [attr.maxlength]=\"maxCharCount || null\"></textarea>\r\n\r\n<ng-template #previewModeTemplate>\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\">{{ formControl.value }}</span>\r\n</ng-template>","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\n\r\n@Component({\r\n selector: 'app-text-editor',\r\n templateUrl: './text-editor.component.html',\r\n styleUrls: ['./text-editor.component.scss']\r\n})\r\nexport class TextEditorComponent implements OnInit, OnChanges {\r\n @Input() height: string = 'auto';\r\n @Input() placeholder: string = '';\r\n @Input() subject: string = '';\r\n @Input() preText: string = '';\r\n @Input() maxLength: number = 100;\r\n @Input() disabled: boolean = false;\r\n @Input() showToolbar = true;\r\n @Output() inputChange: EventEmitter<any> = new EventEmitter<any>();\r\n @Input() editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: this.placeholder,\r\n defaultParagraphSeparator: '',\r\n sanitize: false,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n [\r\n 'undo',\r\n 'redo',\r\n 'strikeThrough',\r\n 'subscript',\r\n 'superscript',\r\n 'indent',\r\n 'outdent',\r\n 'insertOrderedList',\r\n 'heading',\r\n 'fontName',\r\n 'textColor',\r\n 'backgroundColor',\r\n ],\r\n [\r\n 'fontSize',\r\n 'insertImage',\r\n 'insertVideo',\r\n 'customClasses',\r\n 'toggleEditorMode',\r\n ],\r\n ],\r\n };\r\n inputLength = 0;\r\n constructor() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.disabled && !changes.disabled.firstChange) {\r\n this.updateDisabledState();\r\n }\r\n if (changes?.preText) {\r\n const val = changes.preText.currentValue;\r\n if (val) {\r\n let textAfterRemovingTags = val;\r\n textAfterRemovingTags = textAfterRemovingTags.replace(/<\\/?[^>]+(>|$)/g, '');\r\n textAfterRemovingTags = textAfterRemovingTags.replace(/\\ /g, ' ');\r\n this.inputLength = textAfterRemovingTags.length;\r\n } else {\r\n this.inputLength = 0;\r\n }\r\n }\r\n this.editorConfig.showToolbar = this.showToolbar;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.editorConfig.height = this.height;\r\n this.updateDisabledState();\r\n }\r\n updateDisabledState() {\r\n this.editorConfig.editable = !this.disabled;\r\n }\r\n\r\n onValueChange(event: any) {\r\n if (event) {\r\n let textAfterRemovingTags = event;\r\n textAfterRemovingTags = textAfterRemovingTags.replace(/<\\/?[^>]+(>|$)/g, '');\r\n textAfterRemovingTags = textAfterRemovingTags.replace(/\\ /g, ' ');\r\n this.inputLength = textAfterRemovingTags.length;\r\n }\r\n this.inputChange.emit(event);\r\n }\r\n onPaste(event: ClipboardEvent) {\r\n event.preventDefault();\r\n const clipboardData = event.clipboardData;\r\n if (!clipboardData) return;\r\n let pastedText = clipboardData.getData('text/plain');\r\n pastedText = this.sanitizeText(pastedText);\r\n document.execCommand('insertText', false, pastedText);\r\n }\r\n\r\n sanitizeText(text: string): string {\r\n return text;\r\n }\r\n}\r\n","<div class=\"assessment-custom-scrollbar-thumb\">\r\n <angular-editor [placeholder]=\"placeholder\" [(ngModel)]=\"preText\" [disabled]=\"disabled\"\r\n (ngModelChange)=\"onValueChange($event)\" [config]=\"editorConfig\" (paste)=\"onPaste($event)\">\r\n </angular-editor>\r\n</div>","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-editor',\r\n templateUrl: './question-type-editor.component.html',\r\n styleUrls: ['./question-type-editor.component.scss']\r\n})\r\nexport class QuestionTypeEditorComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n}\r\n","<div *ngIf=\"!previewMode else previewModeTemplate\" class=\"col-12\" (focusout)=\"onTouched()\">\r\n <app-text-editor [preText]=\"formControl.value\"\r\n (inputChange)=\"formControl.setValue($event); formControl.markAsTouched()\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\"\r\n [disabled]=\"formControl.disabled\"\r\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\r\n [ngClass]=\"{'assessment-custom-angular-editor-invalid': checkFormControlValid()}\" [height]=\"'10rem'\">\r\n </app-text-editor>\r\n</div>\r\n\r\n<ng-template #previewModeTemplate>\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\" [innerHTML]=\"formControl.value\"></span>\r\n</ng-template>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'orderBy',\r\n pure: true\r\n})\r\nexport class OrderByPipe implements PipeTransform {\r\n transform(array: any[] | null | undefined, field: string = 'orderNo'): any[] {\r\n if (!Array.isArray(array)) {\r\n return array || [];\r\n }\r\n\r\n return [...array].sort((a: any, b: any) => {\r\n const valA = a?.[field] ?? 0;\r\n const valB = b?.[field] ?? 0;\r\n return valA - valB;\r\n });\r\n }\r\n}\r\n","import { Component, EventEmitter, Optional, Self, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-objective',\r\n templateUrl: './question-type-objective.component.html',\r\n styleUrls: ['./question-type-objective.component.scss']\r\n})\r\nexport class QuestionTypeObjectiveComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() showCorrectAnswers: boolean = false;\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() answerObj: any;\r\n @Output() viewChild = new EventEmitter();\r\n public formControl: FormControl = new FormControl();\r\n\r\n onTouchedFn = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value) {\r\n this.formControl.patchValue(value);\r\n let option = this.question?.defaultOptionsList?.find((o: any) => o?.options?.id === value?.id);\r\n this.optionDetection(option, true);\r\n } else {\r\n this.formControl.patchValue(null);\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouchedFn = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n onChildDataChanged(data: any) {\r\n this.viewChild.emit(data);\r\n }\r\n\r\n optionDetection(obj: any, detectFromEdit: boolean) {\r\n let data = {\r\n question: this.question,\r\n list: obj['childQuestionList'],\r\n detectFrom: detectFromEdit\r\n }\r\n this.viewChild.emit(data);\r\n return;\r\n }\r\n\r\n onTouched() {\r\n this.onTouchedFn();\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-error-text assessment-text-danger';\r\n }\r\n return '';\r\n }\r\n\r\n getSelectedOptionId(): number | null | undefined {\r\n return this.answerObj?.optionId?.id;\r\n }\r\n\r\n isEvaluationEnabled(): boolean {\r\n return this.showCorrectAnswers && this.question?.weight != null && this.getSelectedOptionId() != null;\r\n }\r\n\r\n getSelectionStatus(option: any): string | null {\r\n if (!this.isEvaluationEnabled()) {\r\n return null;\r\n }\r\n\r\n const selectedOptionId = this.getSelectedOptionId();\r\n const isSelected = option.options?.id === selectedOptionId;\r\n const isCorrect = (option.weight ?? 0) > 0;\r\n\r\n if (isSelected) {\r\n return isCorrect ? 'CORRECT' : 'INCORRECT';\r\n } else {\r\n // Show correct answer if the selected answer is wrong\r\n const selectedOption = this.question?.defaultOptionsList?.find((o: any) => o.options?.id === selectedOptionId);\r\n const isSelectedCorrect = (selectedOption?.weight ?? 0) > 0;\r\n if (!isSelectedCorrect && isCorrect) {\r\n return 'CORRECT';\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n trackByOptionId(index: number, option: any) {\r\n return option?.options?.id != null ? 'o' + option.options.id : 'i' + index;\r\n }\r\n}\r\n","<div class=\"d-flex flex-column custom-gap assessment-form-check-input-primary-one\" (focusout)=\"onTouched()\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList | orderBy; trackBy: trackByOptionId\">\r\n <label class=\"d-flex align-items-center gap-2 rounded-1 cursor-pointer w-100 m-0\"\r\n [ngClass]=\"{ 'px-2 py-1': isEvaluationEnabled() ,'assessment-bg-danger-bg': getSelectionStatus(option) == 'INCORRECT', 'assessment-bg-palette-E8F7F0': getSelectionStatus(option) == 'CORRECT' }\">\r\n <input type=\"radio\" [id]=\"'option-' + option.options.id + '-' + question.id\"\r\n [name]=\"'question-' + question.id\" class=\"form-check-input cursor-pointer m-0\" [value]=\"option.options\"\r\n [checked]=\"formControl.value?.id === option.options.id\" [disabled]=\"formControl.disabled\"\r\n (change)=\"formControl.setValue(option.options); optionDetection(option, false); onTouched()\">\r\n <div\r\n class=\"text-wrap assessment-text-grey-ten assessment-text-regular-13 w-100 d-flex justify-content-between align-items-center gap-2 cursor-pointer\">\r\n <span [innerHtml]=\"option.options.optionName[0]?.text\"></span>\r\n\r\n <ng-container *ngIf=\"getSelectionStatus(option) as selectionStatus\">\r\n <img *ngIf=\"selectionStatus === 'CORRECT'\" class=\"answer-status-icon\"\r\n [src]=\"imageConfig?.['COMMONS_ASSESSMENT.ICON.CHECK_GREEN']\" alt=\"answer-logo\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/check-green.svg')\">\r\n <img *ngIf=\"selectionStatus === 'INCORRECT'\" class=\"answer-status-icon\"\r\n [src]=\"imageConfig?.['COMMONS_ASSESSMENT.ICON.CROSS_RED']\" alt=\"answer-logo\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/cross-red.svg')\">\r\n </ng-container>\r\n </div>\r\n </label>\r\n </ng-container>\r\n</div>","import { Component, EventEmitter, Optional, Self, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-multiselect',\r\n templateUrl: './question-type-multiselect.component.html',\r\n styleUrls: ['./question-type-multiselect.component.scss']\r\n})\r\nexport class QuestionTypeMultiselectComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() showCorrectAnswers: boolean = false;\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() answerObj: any;\r\n @Output() viewChild = new EventEmitter();\r\n selectData: Array<any> = [];\r\n public formControl: FormControl = new FormControl();\r\n\r\n onTouchedFn = () => {};\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n toggleSelection(event: any, data: any) {\r\n const checked = event && typeof event === 'object' && 'checked' in event ? event.checked : (event?.target?.checked ?? event);\r\n if (checked) {\r\n this.selectData.push(data);\r\n } else {\r\n const i = this.selectData.findIndex(value => value.id == data.id);\r\n if (i > -1) {\r\n this.selectData.splice(i, 1);\r\n }\r\n }\r\n this.formControl.patchValue(this.selectData.length ? [...this.selectData] : null);\r\n this.optionDetection(data, false);\r\n }\r\n\r\n writeValue(value: any) {\r\n if(value && Array.isArray(value)) { \r\n this.selectData = [...value]; \r\n this.formControl.setValue(this.selectData, { emitEvent: false });\r\n } else {\r\n this.selectData = [];\r\n this.formControl.setValue(null, { emitEvent: false });\r\n }\r\n }\r\n\r\n getSelection(option:any) {\r\n if(this.selectData){\r\n return this.selectData?.findIndex((s: any) => s?.id && s?.id === option?.id) !== -1;\r\n } return false\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouchedFn = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n onTouched() {\r\n this.onTouchedFn();\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-error-text assessment-text-danger';\r\n }\r\n return '';\r\n }\r\n\r\n optionDetection(obj: any, detectFromEdit: boolean) {\r\n let option = this.question?.defaultOptionsList?.find((o: any) => o.options.id === obj.id);\r\n let data = {\r\n question: this.question,\r\n list: option?.childQuestionList,\r\n detectFrom: detectFromEdit\r\n }\r\n this.viewChild.emit(data);\r\n }\r\n\r\n getSelectedOptionIds(): number[] {\r\n if (!this.answerObj?.drobjectiveresponseList) {\r\n return [];\r\n }\r\n return this.answerObj.drobjectiveresponseList\r\n .filter((r: any) => r.isActive !== false)\r\n .map((r: any) => r.defaultOption?.options?.id)\r\n .filter((id: any) => id != null);\r\n }\r\n\r\n isEvaluationEnabled(): boolean {\r\n return this.showCorrectAnswers && this.question?.weight != null && this.getSelectedOptionIds().length > 0;\r\n }\r\n\r\n getSelectionStatus(option: any): string | null {\r\n if (!this.isEvaluationEnabled()) {\r\n return null;\r\n }\r\n\r\n const selectedOptionIds = this.getSelectedOptionIds();\r\n const isSelected = selectedOptionIds.includes(option.options?.id);\r\n const isCorrect = (option.weight ?? 0) > 0;\r\n\r\n if (isSelected) {\r\n return isCorrect ? 'CORRECT' : 'INCORRECT';\r\n } else {\r\n // Show correct answer if the selected answer is wrong (i.e. not fully correct)\r\n const correctOptionIds = this.question?.defaultOptionsList\r\n ?.filter((o: any) => (o.weight ?? 0) > 0)\r\n ?.map((o: any) => o.options?.id) ?? [];\r\n \r\n const isSelectionCorrect = \r\n selectedOptionIds.length === correctOptionIds.length &&\r\n selectedOptionIds.every((id: any) => correctOptionIds.includes(id));\r\n\r\n if (!isSelectionCorrect && isCorrect) {\r\n return 'CORRECT';\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n trackByOptionId(index: number, option: any) {\r\n return option?.options?.id != null ? 'o' + option.options.id : 'i' + index;\r\n }\r\n}\r\n","<div class=\"d-flex flex-column custom-gap assessment-form-check-input-primary-one\" (focusout)=\"onTouched()\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList | orderBy; trackBy: trackByOptionId\">\r\n <label class=\"d-flex align-items-center gap-2 rounded-1 cursor-pointer w-100 m-0\"\r\n [ngClass]=\"{ 'px-2 py-1': isEvaluationEnabled() ,'assessment-bg-danger-bg': getSelectionStatus(option) == 'INCORRECT', 'assessment-bg-palette-E8F7F0': getSelectionStatus(option) == 'CORRECT' }\">\r\n <input type=\"checkbox\" [id]=\"'option-' + option.options.id + '-' + question.id\"\r\n class=\"form-check-input cursor-pointer m-0\" [value]=\"option.options\"\r\n [checked]=\"getSelection(option.options)\" [disabled]=\"formControl.disabled\"\r\n (change)=\"toggleSelection($event, option.options); onTouched()\">\r\n <div\r\n class=\"text-wrap assessment-text-grey-ten assessment-text-regular-13 w-100 d-flex justify-content-between align-items-center gap-2 cursor-pointer\">\r\n <span [innerHtml]=\"option.options.optionName[0]?.text\"></span>\r\n\r\n <ng-container *ngIf=\"getSelectionStatus(option) as selectionStatus\">\r\n <img *ngIf=\"selectionStatus === 'CORRECT'\" class=\"answer-status-icon\"\r\n [src]=\"imageConfig?.['COMMONS_ASSESSMENT.ICON.CHECK_GREEN']\" alt=\"answer-logo\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/check-green.svg')\">\r\n <img *ngIf=\"selectionStatus === 'INCORRECT'\" class=\"answer-status-icon\"\r\n [src]=\"imageConfig?.['COMMONS_ASSESSMENT.ICON.CROSS_RED']\" alt=\"answer-logo\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/cross-red.svg')\">\r\n </ng-container>\r\n </div>\r\n </label>\r\n </ng-container>\r\n</div>","import { Component, EventEmitter, Optional, Self, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-preference',\r\n templateUrl: './question-type-preference.component.html',\r\n styleUrls: ['./question-type-preference.component.scss']\r\n})\r\nexport class QuestionTypePreferenceComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Output() viewChild = new EventEmitter();\r\n selectData: Array<any> = [];\r\n public formControl: FormControl = new FormControl();\r\n\r\n onTouchedFn = () => {};\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n toggleSelection(data: any) {\r\n if (this.formControl.disabled) return;\r\n \r\n const index = this.getSelectionIndex(data);\r\n if (index === -1) {\r\n this.selectData.push(data);\r\n } else {\r\n this.selectData.splice(index, 1);\r\n }\r\n \r\n this.formControl.patchValue(this.selectData.length ? [...this.selectData] : null);\r\n this.optionDetection(data, false);\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: any) {\r\n if(value && Array.isArray(value)) { \r\n this.selectData = [...value]; \r\n this.formControl.setValue(this.selectData, { emitEvent: false });\r\n } else {\r\n this.selectData = [];\r\n this.formControl.setValue(null, { emitEvent: false });\r\n }\r\n }\r\n\r\n getSelectionIndex(option: any): number {\r\n if (this.selectData) {\r\n return this.selectData?.findIndex((s: any) => s?.id && s?.id === option?.id);\r\n } else {\r\n return -1;\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouchedFn = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n onTouched() {\r\n this.onTouchedFn();\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-error-text assessment-text-danger';\r\n }\r\n return '';\r\n }\r\n\r\n optionDetection(obj: any, detectFromEdit: boolean) {\r\n let option = this.question?.defaultOptionsList?.find((o: any) => o?.options?.id === obj?.id);\r\n let data = {\r\n question: this.question,\r\n list: option?.childQuestionList,\r\n detectFrom: detectFromEdit\r\n }\r\n this.viewChild.emit(data);\r\n }\r\n\r\n trackByOptionId(index: number, option: any) {\r\n return option?.options?.id != null ? 'o' + option.options.id : 'i' + index;\r\n }\r\n}\r\n","<div class=\"d-flex flex-column gap-2 assessment-checkboxes\" (focusout)=\"onTouched()\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList | orderBy; trackBy: trackByOptionId\">\r\n <div class=\"d-flex align-items-center gap-3 cursor-pointer\" [class.assessment-text-grey]=\"formControl.disabled\"\r\n (click)=\"toggleSelection(option.options)\">\r\n\r\n <div class=\"preference-box assessment-bg-white flex-shrink-0 assessment-input-border-one assessment-border-radius-two d-flex align-items-center justify-content-center p-1\"\r\n [ngClass]=\"{\r\n 'selected assessment-bg-primary-one assessment-text-white': getSelectionIndex(option.options) > -1,\r\n 'disabled': formControl.disabled\r\n }\">\r\n <span class=\"assessment-text-semibold-12\" *ngIf=\"getSelectionIndex(option.options) > -1\">\r\n {{getSelectionIndex(option.options) + 1}}\r\n </span>\r\n </div>\r\n\r\n <span class=\"text-wrap assessment-text-regular-13\" [innerHtml]=\"option.options.optionName[0]?.text\"></span>\r\n </div>\r\n </ng-container>\r\n</div>","import { Component, Optional, Self, Input, ElementRef, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentTakerService } from '../../services/assessment-taker.service';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { Attachment } from '../../../../shared/interfaces/assessment.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-file-upload',\r\n templateUrl: './question-type-file-upload.component.html',\r\n styleUrls: ['./question-type-file-upload.component.scss']\r\n})\r\nexport class QuestionTypeFileUploadComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() assessmentInstanceId!: number;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @ViewChild('fileInput') fileInput!: ElementRef;\r\n @Output() snackbarMessage = new EventEmitter<{ message: string, type: 'success' | 'error' | 'info' }>();\r\n\r\n public files: Attachment[] = [];\r\n public formControl: FormControl = new FormControl([]);\r\n\r\n onTouched = () => { };\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl,\r\n private assessmentService: AssessmentTakerService,\r\n ) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value && Array.isArray(value)) {\r\n this.files = value;\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.files = [];\r\n this.formControl.setValue([], { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n get maxFiles(): number {\r\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxNoOfFiles');\r\n return config && config.configValue ? Number(config.configValue) : 0;\r\n }\r\n\r\n get maxFileSize(): number {\r\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxFileSize');\r\n // maxFileSize config is in MB, convert to bytes for comparison\r\n return config?.configValue ? Number(config.configValue) * 1024 * 1024 : 0;\r\n }\r\n\r\n get allowMultiple(): boolean {\r\n return this.maxFiles === 0 || this.maxFiles > 1;\r\n }\r\n\r\n onFileChange(event: any) {\r\n const inputFiles: FileList = event.target.files;\r\n if (inputFiles && inputFiles.length > 0) {\r\n const newFiles = Array.from(inputFiles);\r\n const limit = this.maxFileSize;\r\n const validFiles = newFiles.filter(f => limit === 0 || f.size <= limit);\r\n\r\n if (validFiles.length < newFiles.length) {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.FILE_SIZE_EXCEEDED']?.replace('[SIZE]', (this.maxFileSize / (1024 * 1024)).toFixed(2)), type: 'error' });\r\n }\r\n\r\n validFiles.forEach(file => {\r\n this.uploadFile(file);\r\n });\r\n }\r\n\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n }\r\n\r\n uploadFile(file: File) {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n const params = {\r\n entityType: 'ENTITY_TYPE.ASSESSMENT_QUESTION',\r\n isPublic: true,\r\n questionId: this.question.id,\r\n tenantId: this.question?.tenantId,\r\n assessmentInstanceId: this.assessmentInstanceId\r\n }\r\n this.assessmentService.uploadAttachment(formData, params).subscribe({\r\n next: (data: any) => {\r\n\r\n if (this.allowMultiple) {\r\n this.files = [...this.files, data];\r\n } else {\r\n this.files = [data];\r\n }\r\n\r\n this.formControl.setValue(this.files);\r\n this.onTouched();\r\n },\r\n error: (error: any) => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.FILE_UPLOAD_FAILED'], type: 'error' });\r\n throw { error, method: 'POST', payload: formData }\r\n }\r\n });\r\n }\r\n\r\n removeFile(index: number) {\r\n this.files.splice(index, 1);\r\n this.formControl.setValue([...this.files]);\r\n this.onTouched();\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n getFileIcon(attachment: Attachment): string {\r\n const mimeTypeMap: { [key: string]: string } = {\r\n 'pdf': 'COMMONS_ASSESSMENT.ICON.PDF',\r\n 'image/jpeg': 'COMMONS_ASSESSMENT.ICON.JPEG',\r\n 'image/jpg': 'COMMONS_ASSESSMENT.ICON.JPG',\r\n 'image/png': 'COMMONS_ASSESSMENT.ICON.PNG',\r\n 'image/svg': 'COMMONS_ASSESSMENT.ICON.SVG'\r\n };\r\n const mimeType = attachment.mimeType;\r\n if (mimeType) {\r\n const mimeTypeLower = mimeType.toLowerCase();\r\n for (const key in mimeTypeMap) {\r\n if (mimeTypeLower.includes(key)) {\r\n return this.imageConfig[mimeTypeMap[key]] || this.imageConfig['COMMONS_ASSESSMENT.ICON.DEFAULT_FILE'];\r\n }\r\n }\r\n }\r\n\r\n return this.imageConfig['COMMONS_ASSESSMENT.ICON.DEFAULT_FILE'];\r\n }\r\n\r\n viewFile(url: string) {\r\n if (url) {\r\n window.open(url, '_blank');\r\n }\r\n }\r\n\r\n trackByFile(index: number, file: Attachment) {\r\n return file?.id != null ? 'f' + file.id : 'i' + index;\r\n }\r\n}\r\n","<div class=\"file-upload-container col-12\">\r\n <input type=\"file\" #fileInput (change)=\"onFileChange($event)\" [multiple]=\"allowMultiple\" class=\"d-none\"\r\n [id]=\"question.id + '_file'\" [disabled]=\"formControl.disabled\" (blur)=\"onTouched()\">\r\n\r\n <div class=\"my-3 row mx-0 row-gap-3\" *ngIf=\"files.length > 0\">\r\n <div *ngFor=\"let file of files; let i = index; trackBy: trackByFile\" class=\"col-lg-4 col-md-6 col-12 assessment-file\">\r\n <div\r\n class=\"col-12 d-flex align-items-center gap-3 assessment-border-radius-two assessment-bg-grey-one p-3 assessment-card-border cursor-pointer\">\r\n <img [src]=\"getFileIcon(file)\"\r\n (error)=\"imageErrorHandler($event, imageConfig['COMMONS_ASSESSMENT.ICON.DEFAULT_FILE'])\" class=\"file-icon\"\r\n alt=\"file icon\">\r\n <div class=\"flex-grow-1 cursor-pointer\" (click)=\"viewFile(file.completeURL)\">\r\n <p class=\"assessment-text-medium-15 mb-0 assessment-text-grey-ten text-break\">\r\n {{ file.fileName }}</p>\r\n <p class=\"mb-0 assessment-text-medium-12 assessment-text-grey-eight\">\r\n {{file.fileSizeInBytes < 1024 ? (file.fileSizeInBytes | number: '1.1-1' ) + ' Kb' : file.fileSizeInBytes <\r\n 1000000 ? (file.fileSizeInBytes / 1024 | number: '1.1-1' ) + ' Kb' : (file.fileSizeInBytes / 1000000 |\r\n number: '1.1-1' ) + ' Mb' }} </p>\r\n </div>\r\n <img *ngIf=\"!formControl.disabled\" (click)=\"removeFile(i)\" [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/delete.svg')\"\r\n class=\"icon cursor-pointer\" alt=\"delete\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button *ngIf=\"!formControl.disabled\" type=\"button\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary-transparent assessment-text-semibold-13\"\r\n (click)=\"fileInput.click()\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.UPLOAD']}}\r\n </button>","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { DatePipe } from '@angular/common';\r\n// import { MAT_DATE_FORMATS } from '@angular/material/core';\r\n\r\n// export const MY_DATE_FORMATS = {\r\n// parse: {\r\n// dateInput: null,\r\n// },\r\n// display: {\r\n// dateInput: { year: 'numeric', month: 'short', day: 'numeric' },\r\n// monthYearLabel: { year: 'numeric', month: 'short' },\r\n// dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\r\n// monthYearA11yLabel: { year: 'numeric', month: 'long' },\r\n// }\r\n// };\r\n\r\n@Component({\r\n selector: 'lib-question-type-date-picker',\r\n templateUrl: './question-type-date-picker.component.html',\r\n styleUrls: ['./question-type-date-picker.component.scss'],\r\n providers: [DatePipe]\r\n})\r\nexport class QuestionTypeDatePickerComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl, private datePipe: DatePipe) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-input-border-invalid';\r\n }\r\n return '';\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n let dateValue = value;\r\n if (value && typeof value.toDate === 'function') {\r\n dateValue = value.toDate();\r\n } else if (value && typeof value.toJSDate === 'function') {\r\n dateValue = value.toJSDate();\r\n }\r\n const formattedDate = this.datePipe.transform(dateValue, 'yyyy-MM-dd');\r\n this.formControl.setValue(formattedDate, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n getDisplayDate(): string {\r\n const val = this.formControl.value;\r\n if (!val) return '';\r\n let dateValue = val;\r\n if (val && typeof val.toDate === 'function') {\r\n dateValue = val.toDate();\r\n } else if (val && typeof val.toJSDate === 'function') {\r\n dateValue = val.toJSDate();\r\n }\r\n return this.datePipe.transform(dateValue, 'mediumDate') || '';\r\n }\r\n}\r\n","<div *ngIf=\"!previewMode else previewModeTemplate\" class=\"position-relative col-md-6 col-12 d-flex align-items-center cursor-pointer assessment-date-picker\" (click)=\"picker.open()\">\n <input [matDatepicker]=\"picker\" [ngClass]=\"checkFormControlValid()\"\n [id]=\"question.id\" [formControl]=\"formControl\" readonly\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one pe-5\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\" [required]=\"required\" (blur)=\"onTouched()\">\n <mat-datepicker-toggle [for]=\"picker\" class=\"position-absolute end-0 me-2 assessment-text-grey-six\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n</div>\n\n<ng-template #previewModeTemplate>\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\">{{ getDisplayDate() }}</span>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output, OnDestroy, ChangeDetectorRef, HostListener } from '@angular/core';\r\nimport { forkJoin, Observable, throwError, of } from 'rxjs';\r\nimport { tap, catchError, switchMap, map } from 'rxjs/operators';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { AssessmentTakerService } from './services/assessment-taker.service';\r\nimport { ResponseBuilderService } from './services/response-builder.service';\r\nimport { SectionInstructionsComponent } from './components/section-instructions/section-instructions.component';\r\nimport { AssesseeDTO, AssessorDTO, Assessment, AssessmentInstanceAssesseDTO, AssessmentStep, AssessmentContextDTO, SectionScore, SkillScore, Attachment } from '../../shared/interfaces/assessment.interface';\r\nimport { ProctoringSession } from '../../shared/interfaces/proctoring.interface';\r\nimport { AssessmentQuestion } from '../../shared/interfaces/question.interface';\r\nimport { AssessmentQuestionPaper, QuestionPaperSection, SectionQuestion } from '../../shared/interfaces/question-paper.interface';\r\nimport { SkillAllocationComponent } from '../../shared/components/skill-allocation/skill-allocation.component';\r\nimport { ConfirmationDialogComponent } from '../../shared/components/confirmation-dialog/confirmation-dialog.component';\r\nimport { ProctoringResultComponent } from './components/proctoring-result/proctoring-result.component';\r\nimport { ProctoringService } from './services/proctoring.service';\r\nimport { sortByOrder } from '../../shared/utils';\r\n\r\n@Component({\r\n selector: 'lib-assessment-taker',\r\n templateUrl: './assessment-taker.component.html',\r\n styleUrls: ['./assessment-taker.component.scss']\r\n})\r\n\r\nexport class AssessmentTakerComponent implements OnInit, OnDestroy {\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() showFooter: boolean = false;\r\n @Input() assessmentId!: number;\r\n @Input() assessmentInstanceId!: number;\r\n @Input() assesseeData: AssesseeDTO = { id: 0, actorId: 0, actorType: 'USER' };\r\n @Input() assessorData: AssessorDTO = { id: 0, actorId: 0, actorType: 'USER' };\r\n @Input() disabled: boolean = false;\r\n @Input() previewMode: boolean = false;\r\n @Input() verticalView: boolean = false;\r\n @Input() enableMarks: boolean = false;\r\n @Input() hideSectionTabs: boolean = false;\r\n @Input() assessmentContext!: AssessmentContextDTO;\r\n @Input() assesseeResponse: AssessmentInstanceAssesseDTO = {};\r\n @Input() markAsCompleted: boolean = true;\r\n @Input() sectionWiseScore: { [sectionId: number]: SectionScore } = {};\r\n @Input() showOverallRemarks: boolean = false;\r\n @Input() showCorrectAnswers: boolean = false;\r\n @Input() resumeTimerAcrossVisits: boolean = false;\r\n @Input() warnOnLeaveDuringProctoring: boolean = true;\r\n @Input() proctorLinkLoader?: () => Promise<any>;\r\n\r\n @Output() snackbarMessage = new EventEmitter<{ message: string, type: 'success' | 'error' | 'info' }>();\r\n @Output() submitAssessment = new EventEmitter<any>();\r\n @Output() stepChanged = new EventEmitter<AssessmentStep>();\r\n @Output() consentToProceed = new EventEmitter<boolean>();\r\n\r\n showLoader: boolean = true;\r\n introActive = false;\r\n private proctoringSessionStarted = false;\r\n private proctoringSessionEnded = false;\r\n questionBank: Record<number, AssessmentQuestion> = {};\r\n assessmentQuestionPaperData: AssessmentQuestionPaper = {};\r\n assessmentData: Assessment = {};\r\n configsLoaded: boolean = false;\r\n timerInterval: any = null;\r\n remainingTime: number = 0;\r\n displayTime: string = '00:00';\r\n timeExpired: boolean = false;\r\n isAutoSubmitting: boolean = false;\r\n isSubmitting: boolean = false;\r\n sectionFormGroups: { sectionId: number; formGroup: FormGroup }[] = [];\r\n overallNotesCtrl = new FormControl('');\r\n expandedState: boolean[] = [];\r\n private youtubeUrlCache: { [url: string]: any } = {};\r\n private newAssesseeSession: boolean = false;\r\n private backGuardArmed = false;\r\n private allowBackNavigation = false;\r\n\r\n private _selectedTabIndex: number = 0;\r\n get selectedTabIndex(): number {\r\n return this._selectedTabIndex;\r\n }\r\n set selectedTabIndex(value: number) {\r\n if (this._selectedTabIndex !== value) {\r\n this._selectedTabIndex = value;\r\n this.emitStepDetails();\r\n }\r\n }\r\n\r\n sectionErrors: boolean[] = [];\r\n tenantId: number = 0;\r\n tooltipState: Record<number, boolean> = {};\r\n\r\n isMobile = window.innerWidth < 768;\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.isMobile = window.innerWidth < 768;\r\n }\r\n\r\n /**\r\n * While a proctoring session is running, warn the candidate before they refresh, close the tab, or\r\n * navigate away. Browsers show their own generic \"Leave site?\" confirmation here — the message text\r\n * cannot be customized for security reasons — so this only guarantees a prompt, not our wording.\r\n */\r\n @HostListener('window:beforeunload', ['$event'])\r\n onBeforeUnload(event: BeforeUnloadEvent): void {\r\n if (this.warnOnLeaveDuringProctoring && this.isProctoringRunning()) {\r\n event.preventDefault();\r\n event.returnValue = '';\r\n }\r\n }\r\n\r\n /**\r\n * In-app Back button (SPA popstate — not caught by beforeunload). While proctoring runs we keep a\r\n * sentinel history entry; when Back pops it we show a custom warning and either re-arm (stay) or\r\n * proceed with the navigation (leave).\r\n */\r\n @HostListener('window:popstate')\r\n onPopState(): void {\r\n if (this.allowBackNavigation) {\r\n // this popstate is the navigation we just approved — let it through once\r\n this.allowBackNavigation = false;\r\n return;\r\n }\r\n if (!this.backGuardArmed || !this.isProctoringRunning()) {\r\n return;\r\n }\r\n this.confirmLeaveAssessment().subscribe((confirmed: boolean) => {\r\n if (confirmed) {\r\n this.allowBackNavigation = true;\r\n this.backGuardArmed = false;\r\n history.back(); // proceed to the actual previous page\r\n } else {\r\n // stay on the assessment — re-arm the sentinel entry\r\n history.pushState(null, '', location.href);\r\n }\r\n });\r\n }\r\n\r\n private isProctoringRunning(): boolean {\r\n return this.proctoringSessionStarted && !this.proctoringSessionEnded;\r\n }\r\n\r\n /** Pushes a sentinel history entry so the next in-app Back press triggers our guard. */\r\n private armBackGuard(): void {\r\n if (this.backGuardArmed) {\r\n return;\r\n }\r\n this.backGuardArmed = true;\r\n history.pushState(null, '', location.href);\r\n }\r\n\r\n private confirmLeaveAssessment(): Observable<boolean> {\r\n return this.dialog.open(ConfirmationDialogComponent, {\r\n autoFocus: false,\r\n maxWidth: '95%',\r\n width: '32rem',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n title: this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.LEAVE_WARNING_TITLE'],\r\n message: this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.LEAVE_WARNING_MESSAGE'],\r\n confirmLabel: this.labelConfig['COMMONS_ASSESSMENT.LABEL.PROCEED'],\r\n cancelLabel: this.labelConfig['COMMONS_ASSESSMENT.LABEL.CANCEL']\r\n }\r\n }).afterClosed();\r\n }\r\n\r\n constructor(\r\n private assessmentTakerService: AssessmentTakerService,\r\n private fb: FormBuilder,\r\n private responseBuilderService: ResponseBuilderService,\r\n private sanitizer: DomSanitizer,\r\n private dialog: MatDialog,\r\n private cdr: ChangeDetectorRef,\r\n private proctoringService: ProctoringService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.getConfigsFromJSON();\r\n\r\n if (this.previewMode || this.assesseeResponse?.assessmentTaken?.code === 'ASSESSMENT_TAKEN.COMPLETE') {\r\n this.disabled = true;\r\n }\r\n\r\n if (this.assessmentContext) {\r\n this.assessmentInstanceId = this.assessmentContext?.assessmentInstanceDTO?.id ?? this.assessmentInstanceId;\r\n this.assessmentId = this.assessmentContext?.assessment?.id ?? this.assessmentId;\r\n }\r\n\r\n if (this.assessmentInstanceId) {\r\n this.loadAssessmentData();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.timerInterval) {\r\n clearInterval(this.timerInterval);\r\n }\r\n if (this.isProctoringRunning()) {\r\n this.proctoringService.destroy({ endSession: false });\r\n }\r\n }\r\n\r\n /**\r\n * Ends the proctoring session after the assessment is submitted: stops + destroys the ProctorLink\r\n * SDK and notifies the backend to end the session. Only ends a session that actually started, and\r\n * is guarded so the backend is called at most once.\r\n */\r\n private endProctoringSession(): void {\r\n this.proctoringService.stop();\r\n this.proctoringService.destroy();\r\n if (!this.proctoringSessionStarted || this.proctoringSessionEnded) {\r\n return;\r\n }\r\n const assesseeId = this.assesseeResponse?.id || this.assesseeData?.id;\r\n if (!assesseeId) {\r\n return;\r\n }\r\n this.proctoringSessionEnded = true;\r\n this.assessmentTakerService.endProctoringSession(assesseeId).subscribe({\r\n next: () => { /* session ended on backend */ },\r\n error: () => { /* best-effort teardown; ignore */ }\r\n });\r\n }\r\n\r\n getConfigsFromJSON() {\r\n forkJoin({\r\n labelConfig: this.assessmentTakerService.getConfigJSON('json/labelConfig'),\r\n imageConfig: this.assessmentTakerService.getConfigJSON('json/imageConfig')\r\n }).subscribe((res: any) => {\r\n this.labelConfig = Object.assign({}, res?.labelConfig, this.labelConfig);\r\n this.imageConfig = Object.assign({}, res?.imageConfig, this.imageConfig);\r\n\r\n this.configsLoaded = true;\r\n })\r\n }\r\n\r\n loadAssessmentData() {\r\n const apiCalls = {\r\n ...(!this.assessmentContext?.assessment?.id && {\r\n assessmentData: this.assessmentTakerService.getAssessmentContextById({ assessmentIds: [this.assessmentId] })\r\n }),\r\n ...(this.assesseeData?.id && !this.assesseeResponse?.id && {\r\n assesseeResponse: this.assessmentTakerService.getAnswersByAiaId(this.assesseeData.id)\r\n })\r\n }\r\n if (Object.keys(apiCalls).length > 0) {\r\n forkJoin(apiCalls).subscribe({\r\n next: (data: any) => {\r\n this.assessmentContext = data?.assessmentData?.[0] ?? this.assessmentContext;\r\n this.assesseeResponse = data?.assesseeResponse ?? this.assesseeResponse;\r\n this.handleResponse()\r\n },\r\n error: error => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'GET' }\r\n }\r\n });\r\n } else {\r\n this.handleResponse();\r\n }\r\n }\r\n\r\n handleResponse() {\r\n this.assessmentQuestionPaperData = this.assessmentContext?.assessmentQuestionPaperDTO;\r\n this.assessmentData = this.assessmentContext?.assessment;\r\n this.questionBank = this.assessmentContext?.questionDTOMap;\r\n this.tenantId = this.assessmentContext?.assessment?.tenantId ?? 0;\r\n\r\n if (this.assesseeResponse?.id) {\r\n if (this.assesseeResponse?.assessmentTaken?.code === 'ASSESSMENT_TAKEN.COMPLETE') {\r\n this.disabled = true;\r\n }\r\n } else {\r\n this.assesseeResponse = {\r\n id: 0,\r\n assessmentInstance: { id: this.assessmentInstanceId },\r\n assessee: this.assesseeData,\r\n assessor: this.assessorData,\r\n aiadefaultResponseList: [],\r\n tenant: this.tenantId\r\n };\r\n }\r\n this.overallNotesCtrl.setValue(this.assesseeResponse.notes || '');\r\n if (this.disabled && !this.showOverallRemarks) {\r\n this.overallNotesCtrl.disable();\r\n }\r\n this.formSetup();\r\n }\r\n\r\n formSetup() {\r\n this.sectionFormGroups = [];\r\n\r\n sortByOrder(this.assessmentQuestionPaperData?.questionPaperSectionList)?.forEach((section: QuestionPaperSection) => {\r\n const group: any = {};\r\n\r\n sortByOrder(section?.sectionQuestionsList)?.forEach((sq: SectionQuestion) => {\r\n const qId = sq.questionId;\r\n if (!qId || !this.questionBank[qId]) return;\r\n\r\n const question = this.questionBank[qId];\r\n this.addControlForQuestion(group, question, question?.isMandatory);\r\n\r\n if (question.defaultOptionsList?.length) {\r\n question.defaultOptionsList.forEach((option: any) => {\r\n if (option.remarksRequired) {\r\n // Pre-populate remarks if we have answers matching this option.\r\n let remarkVal = null;\r\n const prefilledOptions = this.getPrefilledAnswer(qId);\r\n if (prefilledOptions) {\r\n const ansObj = this.assesseeResponse?.aiadefaultResponseList?.find((a: any) =>\r\n a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0)\r\n );\r\n if (ansObj) {\r\n if (question.questionType?.code === 'QUESTION_TYPE.OBJECTIVE' && (prefilledOptions === (option.options?.id ?? option.id) || prefilledOptions?.id === (option.options?.id ?? option.id))) {\r\n remarkVal = ansObj.remarks || null;\r\n } else if (Array.isArray(prefilledOptions)) {\r\n const matchingObj = ansObj.drobjectiveresponseList?.find((r: any) => r.defaultOption?.options?.id === (option.options?.id ?? option.id));\r\n if (matchingObj) {\r\n remarkVal = matchingObj.remarks || null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const remarkCtrl = new FormControl(remarkVal);\r\n if (this.disabled) {\r\n remarkCtrl.disable();\r\n };\r\n group[`${qId}_remarks_${option.id}`] = remarkCtrl;\r\n }\r\n\r\n option.childQuestionList?.forEach((childId: number) => {\r\n const childQues = this.questionBank[childId];\r\n if (childQues) {\r\n this.addControlForQuestion(group, childQues, false, true, qId, option.options?.id ?? option.id);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n const fg = this.fb.group(group);\r\n\r\n sortByOrder(section?.sectionQuestionsList)?.forEach((sq: SectionQuestion) => {\r\n const qId = sq.questionId;\r\n if (!qId || !this.questionBank[qId]) return;\r\n const question = this.questionBank[qId];\r\n\r\n if (question.defaultOptionsList?.length) {\r\n this.updateQuestionConditionalControls(fg, question);\r\n fg.get(qId?.toString())?.valueChanges.subscribe(() => {\r\n this.updateQuestionConditionalControls(fg, question);\r\n });\r\n }\r\n });\r\n\r\n this.sectionFormGroups.push({\r\n sectionId: section.id,\r\n formGroup: fg\r\n });\r\n this.sectionErrors.push(false);\r\n });\r\n\r\n this.emitStepDetails();\r\n this.showLoader = false;\r\n\r\n this.startAssessment();\r\n }\r\n\r\n private startAssessment() {\r\n if (this.requiresStartGate()) {\r\n // show the full-screen intro gate; questions stay hidden until the candidate proceeds\r\n this.introActive = true;\r\n } else {\r\n this.beginAssessment();\r\n }\r\n }\r\n\r\n get isProctoringEnabled(): boolean {\r\n return this.assessmentData?.assessmentConfigs?.find(c => c.configKey === 'assessment.config.is-proctoring-enabled')?.configValue === '1';\r\n }\r\n\r\n /**\r\n * The full-screen intro gate is shown when proctoring is enabled, or when a timed assessment tracks\r\n * elapsed time across visits (so the assessee is created up front to anchor the timer).\r\n */\r\n private requiresStartGate(): boolean {\r\n const timedTracking = this.resumeTimerAcrossVisits && this.assessmentDurationSeconds > 0;\r\n return (this.isProctoringEnabled || timedTracking) && !this.previewMode && !this.disabled;\r\n }\r\n\r\n /** A reference image is captured only for proctoring, and only on the first attempt (no assessee id yet). */\r\n get requireReferenceCapture(): boolean {\r\n return this.isProctoringEnabled && !(this.assesseeResponse?.id || this.assesseeData?.id);\r\n }\r\n\r\n get totalSectionCount(): number {\r\n return this.assessmentQuestionPaperData?.questionPaperSectionList?.length || 0;\r\n }\r\n\r\n get totalQuestionCount(): number {\r\n return (this.assessmentQuestionPaperData?.questionPaperSectionList || [])\r\n .reduce((sum, section) => sum + (section?.sectionQuestionsList?.length || 0), 0);\r\n }\r\n\r\n get assessmentDurationSeconds(): number {\r\n return this.assessmentContext?.assessmentInstanceDTO?.duration || 0;\r\n }\r\n\r\n // bound so it can be passed as an @Input callback to the full-screen intro gate; creates the\r\n // assessee (passing the captured reference image for proctoring) and starts the SDK when proctored.\r\n startSessionAction = (referenceImageBase64: string): Observable<any> =>\r\n this.startAssessmentSession(referenceImageBase64);\r\n\r\n // once the candidate proceeds from the intro gate (assessee created / session started), reveal the assessment\r\n onIntroProceeded(): void {\r\n this.consentToProceed.emit(true);\r\n this.introActive = false;\r\n if (this.warnOnLeaveDuringProctoring && this.isProctoringRunning()) {\r\n // guard the in-app Back button while proctoring is active\r\n this.armBackGuard();\r\n }\r\n this.beginAssessment();\r\n }\r\n\r\n /**\r\n * Creates the assessee up front when the candidate proceeds from the intro gate.\r\n * - First attempt (no assessee id): POST creates the assessee — for proctoring the response carries\r\n * a nested `proctoring` session; otherwise it's a plain assessee DTO (with `createdAt`).\r\n * - Existing attempt: proctoring refreshes the token (flat ProctoringSession); non-proctoring is a no-op\r\n * (the assessee was already loaded, so `createdAt` is known).\r\n * When proctoring is enabled it then starts the ProctorLink SDK and waits for camera permission.\r\n */\r\n private startAssessmentSession(referenceImageBase64: string = ''): Observable<any> {\r\n const assesseeId = this.assesseeResponse?.id || this.assesseeData?.id;\r\n const request$: Observable<any> = assesseeId\r\n ? (this.isProctoringEnabled ? this.assessmentTakerService.refreshProctoringToken(assesseeId) : of(null))\r\n : this.assessmentTakerService.submitAssessment(this.buildInitAssesseePayload(referenceImageBase64));\r\n return request$.pipe(\r\n tap((res: any) => {\r\n if (!res || typeof res !== 'object') {\r\n return;\r\n }\r\n if (this.isProctoringEnabled) {\r\n // create returns the DTO (nested `proctoring`); refresh returns the session fields flat\r\n const proctoring: ProctoringSession = res.proctoring ?? res;\r\n const assesseeFields = res.proctoring ? res : {};\r\n this.assesseeResponse = { ...this.assesseeResponse, ...assesseeFields, proctoring };\r\n this.proctoringSessionStarted = true;\r\n } else {\r\n // non-proctoring create → merge the new assessee (id + createdAt)\r\n this.assesseeResponse = { ...this.assesseeResponse, ...res };\r\n }\r\n if (!assesseeId) {\r\n this.newAssesseeSession = true;\r\n // first attempt just created the assessee — notify the host it's in progress\r\n this.submitAssessment.emit({\r\n assesseeId: this.assesseeResponse?.id,\r\n assesseeResponse: this.assesseeResponse,\r\n completed: false\r\n });\r\n }\r\n }),\r\n // proctored: start the ProctorLink session and request camera; completes only once granted.\r\n // non-proctored: nothing more to do.\r\n switchMap(() => this.isProctoringEnabled\r\n ? this.proctoringService.start({\r\n sessionId: this.assesseeResponse?.proctoring?.providerSessionId,\r\n jwt: this.assesseeResponse?.proctoring?.providerSessionJwt || '',\r\n // on token-expired, re-mint via the refresh API and return ONLY the new JWT to the SDK\r\n refreshToken: () => this.refreshProctoringJwt(),\r\n // the SDK is loaded by the host (keeps @proctorlink/sdk out of the library bundle)\r\n sdkLoader: this.proctorLinkLoader\r\n })\r\n : of(void 0)),\r\n catchError((err: any) => {\r\n if (err?.code === 'camera_denied') {\r\n // surfaced inside the intro gate so the candidate can allow the camera and retry\r\n return throwError({ message: this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.CAMERA_DENIED'] });\r\n }\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n return throwError({ message: this.labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSION_ERROR'] });\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Re-mints the proctoring token via the refresh API and returns ONLY the new provider JWT\r\n * (used by the SDK's token-expired flow). The rest of the refresh response is intentionally\r\n * ignored — the live session must not be re-seeded from it mid-attempt.\r\n */\r\n private refreshProctoringJwt(): Observable<string> {\r\n const assesseeId = this.assesseeResponse?.id || this.assesseeData?.id || 0;\r\n return this.assessmentTakerService.refreshProctoringToken(assesseeId).pipe(\r\n map((res: any) => (res?.providerSessionJwt ?? res?.proctoring?.providerSessionJwt) || '')\r\n );\r\n }\r\n\r\n private buildInitAssesseePayload(referenceImageBase64: string = ''): any {\r\n return this.responseBuilderService.buildInitAssesseePayload(\r\n this.assesseeResponse,\r\n this.assessmentQuestionPaperData,\r\n this.sectionFormGroups,\r\n this.questionBank,\r\n this.tenantId,\r\n referenceImageBase64\r\n );\r\n }\r\n\r\n private beginAssessment() {\r\n const duration = this.assessmentDurationSeconds;\r\n if (!(duration > 0)) {\r\n return;\r\n }\r\n // preview/disabled: show the static full duration, no countdown\r\n if (this.disabled || this.previewMode) {\r\n this.remainingTime = duration;\r\n this.updateDisplayTime();\r\n return;\r\n }\r\n if (this.resumeTimerAcrossVisits && !this.newAssesseeSession) {\r\n this.beginTrackedTimer(duration);\r\n } else {\r\n this.startTimer(duration);\r\n }\r\n }\r\n\r\n /**\r\n * Starts a timer anchored to the assessee's first-visit time. The assessee is already created by the\r\n * intro gate (so `createdAt` is known); remaining time is `duration - elapsedSinceCreatedAt`.\r\n * If the time has already run out (candidate left and returned late), shows 00:00 and auto-submits.\r\n */\r\n private beginTrackedTimer(duration: number) {\r\n const createdAt = this.assesseeResponse?.createdAt;\r\n const elapsed = createdAt ? Math.floor((Date.now() - createdAt) / 1000) : 0;\r\n const remaining = duration - elapsed;\r\n if (remaining <= 0) {\r\n this.remainingTime = 0;\r\n this.updateDisplayTime(); // shows 00:00\r\n this.autoSubmit();\r\n return;\r\n }\r\n this.startTimer(remaining);\r\n }\r\n\r\n updateQuestionConditionalControls(fg: FormGroup, question: AssessmentQuestion) {\r\n if (!question || !question.id || !question.defaultOptionsList?.length) return;\r\n\r\n const qId = question.id;\r\n question.defaultOptionsList.forEach((option: any) => {\r\n const isSelected = this.isOptionSelected(fg, question, option.options?.id);\r\n\r\n if (option.remarksRequired) {\r\n const remarkCtrl = fg.get(`${qId}_remarks_${option.id}`);\r\n if (isSelected) {\r\n remarkCtrl?.setValidators(Validators.required);\r\n } else {\r\n remarkCtrl?.clearValidators();\r\n remarkCtrl?.setValue(null);\r\n }\r\n remarkCtrl?.updateValueAndValidity();\r\n }\r\n\r\n if (option.childQuestionList?.length) {\r\n option.childQuestionList.forEach((childId: number) => {\r\n const childQues = this.questionBank[childId];\r\n if (childQues?.id) {\r\n const childCtrl = fg.get(childQues.id?.toString());\r\n if (isSelected) {\r\n const validators = this.getValidatorsForQuestion(childQues, childQues.isMandatory || false).filter(v => !!v);\r\n childCtrl?.setValidators(Validators.compose(validators));\r\n } else {\r\n childCtrl?.clearValidators();\r\n childCtrl?.setValue(null);\r\n }\r\n childCtrl?.updateValueAndValidity();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n emitStepDetails() {\r\n if (this.sectionFormGroups && this.sectionFormGroups.length > 0) {\r\n this.stepChanged.emit({\r\n currentStepIndex: this.selectedTabIndex,\r\n totalSteps: this.sectionFormGroups.length,\r\n isLastStep: this.selectedTabIndex === this.sectionFormGroups.length - 1\r\n });\r\n }\r\n }\r\n\r\n addControlForQuestion(group: any, question: AssessmentQuestion, isMandatory: boolean = false, isChild: boolean = false, parentId?: number, parentOptionId?: number) {\r\n const qId = question.id;\r\n if (!qId) return;\r\n\r\n const validators = this.getValidatorsForQuestion(question, isMandatory).filter(v => !!v);\r\n let prefilledValue = this.getPrefilledAnswer(qId, isChild, parentId, parentOptionId);\r\n\r\n const control = new FormControl(prefilledValue, Validators.compose(validators));\r\n\r\n // Disable if assessment is completed\r\n if (this.disabled) {\r\n control.disable();\r\n }\r\n\r\n group[qId] = control;\r\n\r\n // Attach mark assignment control if required\r\n if (this.enableMarks && this.shouldShowMarksDropdown(question)) {\r\n let markValue = this.getPrefilledMark(qId, isChild, parentId, parentOptionId);\r\n group[`${qId}_marks`] = new FormControl(markValue);\r\n }\r\n }\r\n\r\n getPrefilledMark(qId: number, isChild: boolean = false, parentId?: number, parentOptionId?: number): any {\r\n if (!this.assesseeResponse?.aiadefaultResponseList) return null;\r\n const answerObj = this.assesseeResponse.aiadefaultResponseList.find((a: any) => {\r\n if (isChild) {\r\n return a.childQuestionId === qId && a.childQuestionParentQuestionId === parentId && a.childDefaultOptionId === parentOptionId;\r\n } else {\r\n return a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0);\r\n }\r\n });\r\n return answerObj?.marks ?? null;\r\n }\r\n\r\n getQuestionAnswerObj(qId: number, parentOptionId?: number | null, parentQuestionId?: number | null): any {\r\n if (!this.assesseeResponse?.aiadefaultResponseList) return null;\r\n const isChild = parentOptionId !== undefined && parentOptionId !== null;\r\n return this.assesseeResponse.aiadefaultResponseList.find((a: any) => {\r\n if (isChild) {\r\n return a.childQuestionId === qId && a.childQuestionParentQuestionId === parentQuestionId && a.childDefaultOptionId === parentOptionId;\r\n } else {\r\n return a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0);\r\n }\r\n });\r\n }\r\n\r\n getQuestionWeight(qId: number): number {\r\n return this.questionBank[qId]?.weight || 0;\r\n }\r\n\r\n shouldShowMarksDropdown(question: AssessmentQuestion): boolean {\r\n const autoAssignedTypes = [\r\n 'QUESTION_TYPE.OBJECTIVE',\r\n 'QUESTION_TYPE.MULTI_SELECT'\r\n ];\r\n const hasWeight = this.getQuestionWeight(question.id || 0) > 0;\r\n return !autoAssignedTypes.includes(question.questionType?.code || '') && hasWeight;\r\n }\r\n\r\n getPrefilledAnswer(qId: number, isChild: boolean = false, parentId?: number, parentOptionId?: number): any {\r\n if (!this.assesseeResponse?.aiadefaultResponseList) return null;\r\n\r\n const answerObj = this.assesseeResponse.aiadefaultResponseList.find((a: any) => {\r\n if (isChild) {\r\n return a.childQuestionId === qId && a.childQuestionParentQuestionId === parentId && a.childDefaultOptionId === parentOptionId;\r\n } else {\r\n return a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0);\r\n }\r\n });\r\n\r\n if (!answerObj) return null;\r\n\r\n const question = this.questionBank[qId];\r\n if (!question) return null;\r\n\r\n const qType = question.questionType?.code;\r\n\r\n if (qType === 'QUESTION_TYPE.OBJECTIVE') {\r\n return answerObj.optionId;\r\n } else if (qType === 'QUESTION_TYPE.MULTI_SELECT' || qType === 'QUESTION_TYPE.PREFERENCE') {\r\n let sortedList = [...(answerObj.drobjectiveresponseList || [])];\r\n if (qType === 'QUESTION_TYPE.PREFERENCE') {\r\n sortedList.sort((a: any, b: any) => (a.orderNo || 0) - (b.orderNo || 0));\r\n }\r\n return sortedList.map((r: any) => r.defaultOption?.options) || [];\r\n } else if (qType === 'QUESTION_TYPE.FILE_UPLOAD') {\r\n return answerObj.attachmentResponseList || [];\r\n } else {\r\n return answerObj.drsubjectiveresponseList?.[0]?.responseText ?? null;\r\n }\r\n }\r\n\r\n getValidatorsForQuestion(question: AssessmentQuestion, isMandatory: boolean): any[] {\r\n const validators: any[] = [];\r\n if (isMandatory) {\r\n validators.push(Validators.required, Validators.pattern(/.*\\S.*/));\r\n }\r\n\r\n if (question.responseValidation?.length) {\r\n validators.push(Validators.pattern(question.responseValidation));\r\n } else {\r\n if (question.questionType?.code === 'QUESTION_TYPE.EMAIL') {\r\n validators.push(Validators.pattern(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/));\r\n } else if (question.questionType?.code === 'QUESTION_TYPE.URL') {\r\n validators.push(Validators.pattern(/^(https?:\\/\\/)?([\\w\\-]+(\\.[\\w\\-]+)+)([\\/?#].*)?$/i));\r\n } else if (question.questionType?.code === 'QUESTION_TYPE.CONTACT_NUMBER') {\r\n validators.push(Validators.pattern(/^[0-9]{10}$/));\r\n } else if (question.questionType?.code === 'QUESTION_TYPE.NUMBER') {\r\n validators.push(Validators.pattern(/^\\d+(\\.\\d+)?$/));\r\n }\r\n }\r\n\r\n if (question.questionConfigs && question.questionConfigs.length > 0) {\r\n const minChar = question.questionConfigs.find(c => c.configKey === 'minCharacterCount')?.configValue;\r\n if (minChar) validators.push(Validators.minLength(Number(minChar)), Validators.pattern(/.*\\S.*/));\r\n\r\n const maxChar = question.questionConfigs.find(c => c.configKey === 'maxCharacterCount')?.configValue;\r\n if (maxChar) validators.push(Validators.maxLength(Number(maxChar)));\r\n\r\n const minOpt = question.questionConfigs.find(c => c.configKey === 'minimumNumberOfOption')?.configValue;\r\n if (minOpt) {\r\n validators.push((control: FormControl) => {\r\n if (!control.value || control.value.length < Number(minOpt)) {\r\n return { minOptions: { required: Number(minOpt), actual: control.value?.length || 0 } };\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n const maxOpt = question.questionConfigs.find(c => c.configKey === 'maximumNumberOfOption')?.configValue;\r\n if (maxOpt) {\r\n validators.push((control: FormControl) => {\r\n if (control.value && control.value.length > Number(maxOpt)) {\r\n return { maxOptions: { required: Number(maxOpt), actual: control.value?.length || 0 } };\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n const maxFiles = question.questionConfigs.find(c => c.configKey === 'maxNoOfFiles')?.configValue;\r\n if (maxFiles) {\r\n validators.push((control: FormControl) => {\r\n if (control.value && control.value.length > Number(maxFiles)) {\r\n return { maxFiles: { required: Number(maxFiles), actual: control.value?.length || 0 } };\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n const maxFileSize = question.questionConfigs.find(c => c.configKey === 'maxFileSize')?.configValue;\r\n if (maxFileSize) {\r\n validators.push((control: FormControl) => {\r\n if (control.value && Array.isArray(control.value)) {\r\n const hasLargeFile = control.value.some((file: any) => file?.size && file.size > (Number(maxFileSize) * 1024 * 1024));\r\n if (hasLargeFile) {\r\n return { maxFileSize: { requiredSize: Number(maxFileSize) } };\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n }\r\n return validators;\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n isOptionSelected(formGroup: FormGroup, question: AssessmentQuestion, optionId: number | undefined): boolean {\r\n if (!optionId) return false;\r\n\r\n let controlName = question.id?.toString();\r\n\r\n if (!controlName) return false;\r\n\r\n const control = formGroup.get(controlName);\r\n if (!control || control.value == null) return false;\r\n\r\n // Multi-select deals with an array of values\r\n if (Array.isArray(control.value)) {\r\n return control.value.includes(optionId) || control.value.some((val: any) => val?.id === optionId);\r\n }\r\n\r\n // Objective / Single select deals with a single value (could be integer ID or object)\r\n if (typeof control.value === 'object' && control.value.id) {\r\n return control.value.id === optionId;\r\n }\r\n\r\n return control.value === optionId;\r\n }\r\n\r\n getMaxCharCount(question: AssessmentQuestion): number {\r\n const config = question?.questionConfigs?.find(c => c.configKey === 'maxCharacterCount');\r\n return config ? Number(config.configValue) : 0;\r\n }\r\n\r\n getRemainingChars(question: AssessmentQuestion, control: any): number {\r\n const max = this.getMaxCharCount(question);\r\n const currentLength = control.value ? control.value.length : 0;\r\n return max - currentLength;\r\n }\r\n\r\n goBack() {\r\n if (this.selectedTabIndex > 0) {\r\n this.selectedTabIndex--;\r\n }\r\n }\r\n\r\n get isCheckingLink(): boolean {\r\n return this.sectionFormGroups?.some(group =>\r\n !!group?.formGroup && Object.values(group.formGroup.controls).some((c: any) => !!c?.errors?.['gdriveLinkChecking'])\r\n ) ?? false;\r\n }\r\n\r\n shouldDisableTab(index: number): boolean {\r\n for (let j = 0; j < index; j++) {\r\n if (this.sectionFormGroups[j]?.formGroup?.invalid) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n goNext(saveData: boolean = true) {\r\n const save = this.assessmentData?.assessmentConfigs?.find(c => c.configKey == 'assesment.config.allowed-partial-response')?.configValue == '1';\r\n const currentSection = this.sectionFormGroups[this.selectedTabIndex];\r\n if (!currentSection) return;\r\n\r\n currentSection.formGroup.markAllAsTouched();\r\n\r\n // wait while a Google Drive public-link check is in progress\r\n if (this.isCheckingLink) {\r\n return;\r\n }\r\n\r\n if (currentSection.formGroup.invalid) {\r\n this.sectionErrors[this.selectedTabIndex] = true;\r\n return;\r\n }\r\n\r\n\r\n this.sectionErrors[this.selectedTabIndex] = false;\r\n\r\n if (this.selectedTabIndex < this.sectionFormGroups.length - 1 && !this.verticalView) {\r\n save && saveData ? this.save() : this.selectedTabIndex++;\r\n } else {\r\n this.processSubmit(saveData);\r\n }\r\n }\r\n\r\n processSubmit(saveData: boolean = true) {\r\n // wait while a Google Drive public-link check is in progress\r\n if (this.isCheckingLink) {\r\n return;\r\n }\r\n let firstInvalidIndex = -1;\r\n this.sectionFormGroups.forEach((group, index) => {\r\n group.formGroup.markAllAsTouched();\r\n if (group.formGroup.invalid) {\r\n this.sectionErrors[index] = true;\r\n if (firstInvalidIndex === -1) firstInvalidIndex = index;\r\n } else {\r\n this.sectionErrors[index] = false;\r\n }\r\n });\r\n\r\n if (firstInvalidIndex !== -1) {\r\n if (!this.verticalView) {\r\n this.selectedTabIndex = firstInvalidIndex;\r\n } else {\r\n this.expandedState[firstInvalidIndex] = true;\r\n }\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.FIX_ERRORS'], type: 'error' });\r\n this.scrollToFirstInvalidField(firstInvalidIndex);\r\n return;\r\n }\r\n\r\n this.save(true, saveData);\r\n }\r\n\r\n scrollToFirstInvalidField(sectionIndex: number) {\r\n setTimeout(() => {\r\n const formGroup = this.sectionFormGroups[sectionIndex].formGroup;\r\n for (const controlName in formGroup.controls) {\r\n if (formGroup.controls[controlName].invalid) {\r\n let qId = controlName;\r\n if (controlName.includes('_remarks_') || controlName.includes('_marks')) {\r\n qId = controlName.split('_')[0];\r\n }\r\n const element = document.getElementById(`question-container-${qId}`);\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n break;\r\n }\r\n }\r\n }\r\n }, 100);\r\n }\r\n\r\n save(goNext: boolean = true, saveData: boolean = true) {\r\n // block while a Google Drive public-link check is in progress\r\n if (this.isSubmitting || this.isCheckingLink) return;\r\n\r\n this.isSubmitting = true;\r\n if (!this.disabled || this.isAutoSubmitting) {\r\n if (this.markAsCompleted && (this.selectedTabIndex == this.sectionFormGroups.length - 1 || this.verticalView || this.isAutoSubmitting)) {\r\n this.assesseeResponse.assessmentTaken = { code: 'ASSESSMENT_TAKEN.COMPLETE' };\r\n } else {\r\n this.assesseeResponse.assessmentTaken = { code: 'ASSESSMENT_TAKEN.INCOMPLETE' };\r\n }\r\n }\r\n\r\n const payload = this.responseBuilderService.buildResponsePayload(\r\n this.assesseeResponse,\r\n this.assessmentQuestionPaperData,\r\n this.sectionFormGroups,\r\n this.questionBank,\r\n this.tenantId\r\n );\r\n\r\n if (this.showOverallRemarks && this.assesseeResponse) {\r\n this.assesseeResponse.notes = this.overallNotesCtrl.value || null;\r\n payload.notes = this.assesseeResponse.notes;\r\n }\r\n\r\n if (!saveData || (this.disabled && !this.enableMarks && !this.isAutoSubmitting)) {\r\n this.isSubmitting = false;\r\n this.submitAssessment.emit({\r\n assesseeId: this.assesseeResponse?.id,\r\n assesseeResponse: payload,\r\n completed: goNext && (this.selectedTabIndex == this.sectionFormGroups.length - 1 || this.verticalView)\r\n });\r\n if (goNext && this.selectedTabIndex < this.sectionFormGroups.length - 1) {\r\n this.selectedTabIndex++;\r\n }\r\n return;\r\n }\r\n let apiCall = this.assesseeResponse?.id ? this.assessmentTakerService.patchAssessment(payload) : this.assessmentTakerService.submitAssessment(payload);\r\n if (this.disabled && this.enableMarks) {\r\n const marksPayload: any = this.responseBuilderService.buildMarksPayload(payload);\r\n if (this.showOverallRemarks) {\r\n marksPayload.notes = this.overallNotesCtrl.value || null;\r\n }\r\n apiCall = this.assessmentTakerService.updateMarks(marksPayload);\r\n }\r\n apiCall.subscribe({\r\n next: (res: any) => {\r\n this.assesseeResponse = res;\r\n this.assesseeResponse = res;\r\n if (this.assesseeResponse?.assessmentTaken?.code == 'ASSESSMENT_TAKEN.COMPLETE') {\r\n this.disableForm();\r\n // assessment finished — stop proctoring capture and end the backend session\r\n this.endProctoringSession();\r\n }\r\n this.overallNotesCtrl.setValue(this.assesseeResponse.notes || '');\r\n this.isSubmitting = false;\r\n this.submitAssessment.emit({\r\n assesseeId: this.assesseeResponse?.id || res,\r\n assesseeResponse: this.assesseeResponse?.id ? this.assesseeResponse : payload,\r\n completed: goNext && (this.selectedTabIndex == this.sectionFormGroups.length - 1 || this.verticalView || this.isAutoSubmitting)\r\n });\r\n if (goNext && this.selectedTabIndex < this.sectionFormGroups.length - 1 && !this.isAutoSubmitting) {\r\n this.selectedTabIndex++;\r\n }\r\n if (this.isAutoSubmitting) {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.AUTO_SUBMITTED'], type: 'info' });\r\n }\r\n },\r\n error: error => {\r\n this.isSubmitting = false;\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.SAVE_FAILED'], type: 'error' });\r\n throw { error, method: this.assesseeResponse?.id ? 'PATCH' : 'POST', payload }\r\n }\r\n });\r\n }\r\n\r\n getAnswersByAiaId(assesseeId: number) {\r\n this.assessmentTakerService.getAnswersByAiaId(assesseeId).subscribe({\r\n next: (res: any) => {\r\n this.assesseeResponse = res;\r\n if (this.assesseeResponse?.assessmentTaken?.code == 'ASSESSMENT_TAKEN.COMPLETE') {\r\n this.disableForm();\r\n }\r\n this.overallNotesCtrl.setValue(this.assesseeResponse.notes || '');\r\n },\r\n error: error => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.GET_FAILED'], type: 'error' });\r\n throw { error, method: 'GET' }\r\n }\r\n });\r\n }\r\n\r\n addYoutubeIframeSrc(videoUrl: string) {\r\n if (!videoUrl) return null;\r\n if (this.youtubeUrlCache[videoUrl]) {\r\n return this.youtubeUrlCache[videoUrl];\r\n }\r\n const videoId = this.getVideoId(videoUrl);\r\n const youtubeUrl = `https://www.youtube.com/embed/${videoId}`;\r\n this.youtubeUrlCache[videoUrl] = this.sanitizer.bypassSecurityTrustResourceUrl(youtubeUrl);\r\n return this.youtubeUrlCache[videoUrl];\r\n }\r\n\r\n getVideoId(videoUrl: string) {\r\n let pattern = null;\r\n if (videoUrl.includes('youtube.com')) {\r\n pattern = /(?:\\?v=|&v=|youtu\\.be\\/|\\/embed\\/|\\/\\d\\/|\\/vi\\/|\\/v\\/|https?:\\/\\/(?:www\\.)?youtube\\.com\\/(?:v\\/|embed\\/|watch\\?(?:\\S+&)?v=|watch\\?(?:\\S+&)?vi=|\\S+\\/))([a-zA-Z0-9_-]{11})/;\r\n } else if (videoUrl.includes('youtu.be')) {\r\n pattern = /youtu\\.be\\/([a-zA-Z0-9_-]{11})/;\r\n }\r\n if (pattern) {\r\n const match = videoUrl.match(pattern);\r\n if (match && match[1]) {\r\n return match[1];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n openInstructionsDialog(section: QuestionPaperSection) {\r\n this.dialog.open(SectionInstructionsComponent, {\r\n autoFocus: false,\r\n maxWidth: '95%',\r\n width: 'calc(20rem + 500px)',\r\n maxHeight: '95dvh',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n imageConfig: this.imageConfig,\r\n labelConfig: this.labelConfig,\r\n sectionDetails: section,\r\n youtubeUrlCache: this.youtubeUrlCache\r\n },\r\n });\r\n }\r\n\r\n checkMaxVal(event: any, control: any, maxVal: number | undefined) {\r\n const totalMarks = Number(maxVal) || 0;\r\n if (totalMarks > 0) {\r\n let val = Number(event.target.value);\r\n if (val > totalMarks) {\r\n event.target.value = totalMarks;\r\n control?.setValue(totalMarks, { emitEvent: false });\r\n }\r\n }\r\n }\r\n\r\n preventNegativeInput(event: KeyboardEvent): void {\r\n if (['-', '+', 'e', 'E'].includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n openProctoringResult() {\r\n this.dialog.open(ProctoringResultComponent, {\r\n autoFocus: false,\r\n position: { right: '0' },\r\n maxWidth: '100%',\r\n width: '34rem',\r\n height: '100dvh',\r\n maxHeight: '100dvh',\r\n panelClass: ['assessment-dialog', 'assessment-dialog-slider-animation'],\r\n hasBackdrop: true,\r\n data: {\r\n labelConfig: this.labelConfig,\r\n imageConfig: this.imageConfig,\r\n assesseeId: this.assesseeResponse?.id || this.assesseeData?.id,\r\n assesseeName: this.assesseeData?.name\r\n }\r\n });\r\n }\r\n\r\n openSkillAllocationDialog(skillList?: SkillScore[]) {\r\n this.dialog.open(SkillAllocationComponent, {\r\n maxHeight: '95dvh',\r\n maxWidth: '90vw',\r\n width: '35rem',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n label: this.labelConfig,\r\n skillList\r\n }\r\n });\r\n }\r\n\r\n\r\n // timer\r\n startTimer(durationInSeconds: number) {\r\n if (this.timerInterval) {\r\n clearInterval(this.timerInterval);\r\n }\r\n this.remainingTime = Number(durationInSeconds);\r\n this.updateDisplayTime();\r\n\r\n this.timerInterval = setInterval(() => {\r\n if (this.remainingTime > 0) {\r\n this.remainingTime--;\r\n this.updateDisplayTime();\r\n } else {\r\n this.autoSubmit();\r\n }\r\n }, 1000);\r\n }\r\n\r\n updateDisplayTime() {\r\n const minutes = Math.floor(this.remainingTime / 60);\r\n const seconds = this.remainingTime % 60;\r\n const paddedMinutes = String(minutes).padStart(2, '0');\r\n const paddedSeconds = String(seconds).padStart(2, '0');\r\n this.displayTime = `${paddedMinutes}:${paddedSeconds}`;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n autoSubmit() {\r\n if (this.timerInterval) {\r\n clearInterval(this.timerInterval);\r\n }\r\n this.remainingTime = 0;\r\n this.timeExpired = true;\r\n this.updateDisplayTime();\r\n this.disableForm();\r\n this.isAutoSubmitting = true;\r\n this.save();\r\n }\r\n\r\n disableForm() {\r\n this.disabled = true;\r\n this.sectionFormGroups?.forEach(group => {\r\n Object.keys(group?.formGroup?.controls)?.forEach(key => {\r\n if (this.enableMarks && key.endsWith('_marks')) {\r\n return;\r\n }\r\n group?.formGroup?.controls?.[key]?.disable();\r\n });\r\n });\r\n }\r\n\r\n trackBySectionId(index: number, section: any) {\r\n return section?.id != null ? 's' + section.id : 'i' + index;\r\n }\r\n\r\n trackBySectionQuestion(index: number, sq: any) {\r\n if (sq?.questionId != null) return 'q' + sq.questionId;\r\n if (sq?.id != null) return 's' + sq.id;\r\n return 'i' + index;\r\n }\r\n\r\n trackByOptionId(index: number, option: any) {\r\n return option?.options?.id != null ? 'o' + option.options.id : 'i' + index;\r\n }\r\n\r\n trackByChildId(index: number, id: any) {\r\n return id != null ? 'c' + id : 'i' + index;\r\n }\r\n}\r\n","<div *ngIf=\"configsLoaded && !showLoader; else loader\" class=\"col-12 h-100\">\r\n <div class=\"col-12 h-100 pt-2 pb-4\" [class.height-without-footer]=\"showFooter\">\r\n <div *ngIf=\"previewMode && isProctoringEnabled && (assesseeResponse?.id || assesseeData?.id)\" class=\"d-flex justify-content-end mb-3\">\r\n <button type=\"button\" (click)=\"openProctoringResult()\"\r\n class=\"assessment-zoom-animation assessment-button-padding assessment-border-radius-two assessment-btn-primary-transparent assessment-text-semibold-13 d-flex align-items-center gap-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PROCTORING']\" width=\"16\" height=\"16\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/proctoring.svg')\" />\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.VIEW_REPORT'] }}\r\n </button>\r\n </div>\r\n <!-- Full-screen intro gate — questions stay hidden until proceed -->\r\n <lib-proctoring-consent *ngIf=\"introActive\" [labelConfig]=\"labelConfig\"\r\n [proctoringEnabled]=\"isProctoringEnabled\" [requireCapture]=\"requireReferenceCapture\"\r\n [sectionCount]=\"totalSectionCount\" [questionCount]=\"totalQuestionCount\"\r\n [durationSeconds]=\"assessmentDurationSeconds\"\r\n [confirmAction]=\"startSessionAction\" (proceeded)=\"onIntroProceeded()\">\r\n </lib-proctoring-consent>\r\n\r\n <div *ngIf=\"assessmentContext?.assessmentInstanceDTO?.duration && !previewMode && !introActive && (!disabled || timeExpired)\"\r\n class=\"d-flex align-items-center gap-md-3 gap-2 px-3 py-2 assessment-border-radius-two mb-4 timer-container assessment-bg-palette-FEF1E8\">\r\n <p class=\"assessment-text-semibold-18 assessment-text-grey-ten mb-0\">{{displayTime}}</p>\r\n <p class=\"assessment-text-grey-ten assessment-text-medium-12 mb-0\">\r\n {{ timeExpired\r\n ? labelConfig['COMMONS_ASSESSMENT.LABEL.TIMER_EXPIRED']\r\n : labelConfig['COMMONS_ASSESSMENT.LABEL.TIMER_AUTO_SUBMIT'] }}</p>\r\n </div>\r\n <ng-container *ngIf=\"assessmentQuestionPaperData?.questionPaperSectionList?.length && !introActive\">\r\n <mat-tab-group *ngIf=\"!verticalView\" animationDuration=\"0ms\" class=\"assessment-mat-custom-tabs\"\r\n [ngClass]=\"{'assessment-hide-tabs': hideSectionTabs}\" [(selectedIndex)]=\"selectedTabIndex\">\r\n <mat-tab\r\n *ngFor=\"let section of assessmentQuestionPaperData.questionPaperSectionList | orderBy; let i = index; trackBy: trackBySectionId\"\r\n [disabled]=\"shouldDisableTab(i)\">\r\n <ng-template mat-tab-label>\r\n <span class=\"assessment-text-semibold-16\"\r\n [ngClass]=\"sectionErrors[i] ? 'assessment-text-danger' : ''\">{{section.qpsName?.[0]?.text}}</span>\r\n </ng-template>\r\n <div class=\"mt-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sectionContent; context: { section: section, i: i }\"></ng-container>\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <mat-accordion *ngIf=\"verticalView\" multi=\"true\" class=\"d-flex flex-column gap-4\">\r\n <mat-expansion-panel\r\n *ngFor=\"let section of assessmentQuestionPaperData.questionPaperSectionList | orderBy; let i = index; trackBy: trackBySectionId\"\r\n [expanded]=\"expandedState[i] !== false\" (opened)=\"expandedState[i] = true\"\r\n (closed)=\"expandedState[i] = false\"\r\n class=\"assessment-border-radius-two shadow-none m-0 assessment-panel bg-transparent\">\r\n <mat-expansion-panel-header class=\"assessment-bg-grey-two h-auto assessment-panel-header\">\r\n <div class=\"d-flex align-items-center justify-content-between gap-2 col-12 pe-3\">\r\n <span class=\"assessment-text-semibold-16\"\r\n [ngClass]=\"sectionErrors[i] ? 'assessment-text-danger' : ''\">\r\n {{section.qpsName?.[0]?.text}}</span>\r\n\r\n <ng-container *ngIf=\"sectionWiseScore?.[section?.id] as sectionScore\">\r\n <div *ngIf=\"(sectionScore?.totalMarks ?? 0) > 0\"\r\n class=\"d-flex align-items-center gap-2 assessment-text-primary-four\">\r\n <span *ngIf=\"(sectionScore?.skillScores?.length ?? 0) > 0\"\r\n class=\"assessment-text-medium-11 assessment-text-grey-ten px-2 py-1 assessment-border-radius-two skill-chip cursor-pointer\"\r\n (click)=\"$event.stopPropagation(); openSkillAllocationDialog(sectionScore?.skillScores)\">\r\n {{sectionScore?.skillScores?.length}}\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SKILLS']}}\r\n </span>\r\n <span class=\"white-space-nowrap assessment-text-semibold-13\">\r\n <span class=\"assessment-text-medium-15 me-1\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SCORE']}}:</span>\r\n {{sectionScore.obtainedMarks || 0}}/{{sectionScore.totalMarks}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <div class=\"mt-3\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sectionContent; context: { section: section, i: i }\"></ng-container>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n\r\n <div *ngIf=\"!assessmentQuestionPaperData?.questionPaperSectionList?.length\"\r\n class=\"h-100 d-flex flex-column align-items-center justify-content-center gap-3\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.NO_QUESTIONS']\" class=\"col-sm-auto col-6\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/no-questions.svg')\" />\r\n <div class=\"text-center\">\r\n <p class=\"mb-1 assessment-text-medium-18\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.NO_QUESTIONS']}}</p>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showOverallRemarks && assessmentQuestionPaperData?.questionPaperSectionList?.length\" class=\"mt-3\">\r\n <p class=\"assessment-text-medium-15 mb-2\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.OVERALL_REMARKS']}}</p>\r\n <textarea\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"\r\n rows=\"3\" [formControl]=\"overallNotesCtrl\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.REMARKS']\"></textarea>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showFooter && !introActive\"\r\n class=\"bg-white p-3 position-sticky bottom-0 d-flex align-items-center justify-content-end border-top gap-3 z-index-1\">\r\n <button\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary-transparent assessment-text-semibold-13\"\r\n (click)=\"goBack()\" *ngIf=\"selectedTabIndex > 0 && !verticalView\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.GO_BACK']}}</button>\r\n <button [disabled]=\"isSubmitting || (disabled && !enableMarks && !showOverallRemarks) || isCheckingLink\" (click)=\"verticalView ? goNext(true) : goNext()\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary assessment-text-semibold-13 position-relative\">\r\n <span [ngClass]=\"{'opacity-0': isSubmitting}\">\r\n {{ (verticalView || selectedTabIndex === sectionFormGroups.length - 1) ?\r\n labelConfig['COMMONS_ASSESSMENT.LABEL.SUBMIT'] : labelConfig['COMMONS_ASSESSMENT.LABEL.NEXT'] }}\r\n </span>\r\n <mat-spinner *ngIf=\"isSubmitting\" [diameter]=\"20\"\r\n class=\"position-absolute top-50 start-50 translate-middle assessment-spinner-white\"></mat-spinner>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loader>\r\n <div class=\"h-100 col-12 d-flex align-items-center justify-content-center py-5\">\r\n <mat-spinner diameter=\"60\" class=\"assessment-spinner-primary\"></mat-spinner>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Recursive Template for Questions & Child Questions -->\r\n<ng-template #questionTemplate let-questionId=\"questionId\" let-isMandatory=\"isMandatory\" let-groupIndex=\"groupIndex\"\r\n let-parentOptionId=\"parentOptionId\" let-parentQuestionId=\"parentQuestionId\" let-sequence=\"sequence\">\r\n <div *ngIf=\"sectionFormGroups[groupIndex].formGroup as formGroup\" [formGroup]=\"formGroup\"\r\n [id]=\"'question-container-' + questionId\">\r\n <div class=\"assessment-border-radius-two assessment-bg-white\"\r\n [ngClass]=\"{'p-3 assessment-card-border': !parentOptionId}\" *ngIf=\"questionBank[questionId] as question\">\r\n <div class=\"d-flex flex-md-row flex-column gap-2 align-items-start\">\r\n <div class=\"flex-grow-1 d-flex align-items-start gap-1\">\r\n <span class=\"assessment-text-medium-15 text-nowrap d-md-block d-none\"\r\n *ngIf=\"sequence\">{{sequence}}.</span>\r\n <div class=\"flex-grow-1\">\r\n <div class=\"d-flex gap-2 align-items-start col-12\">\r\n <div class=\"flex-grow-1\">\r\n <p class=\"assessment-text-medium-15 mb-0 d-flex gap-1\">\r\n <span>\r\n <span [innerHtml]=\"question.questionText?.[0]?.text\"></span>\r\n <span *ngIf=\"isMandatory\"\r\n class=\"assessment-text-regular-11 assessment-text-grey-eight\">\r\n ({{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY']}})</span>\r\n </span>\r\n </p>\r\n <div class=\"mt-3 col-12\" *ngIf=\"question?.mediaUrl?.length\">\r\n <ng-container\r\n *ngTemplateOutlet=\"VideoTemplate; context:{videoUrl:question?.mediaUrl}\"></ng-container>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"question.hintText?.length && !previewMode\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.INFO']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/info.svg')\"\r\n cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\r\n (mouseenter)=\"tooltipState[question.id!] = true\"\r\n (mouseleave)=\"tooltipState[question.id!] = false\" class=\"cursor-pointer\" />\r\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"tooltipState[question.id!] || false\"\r\n [cdkConnectedOverlayPositions]=\"[{ originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8, offsetY: 0 }, { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8, offsetY: 0 }]\">\r\n <div class=\"assessment-bg-grey-two assessment-tooltip-border p-3 assessment-border-radius-two assessment-box-shadow-tooltip question-info assessment-text-regular-13\"\r\n (mouseenter)=\"tooltipState[question.id!] = true\"\r\n (mouseleave)=\"tooltipState[question.id!] = false\"\r\n [innerHTML]=\"question.hintText\">\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- answer field -->\r\n <div *ngIf=\"previewMode && !isMobile\" class=\"mt-2\">\r\n <ng-container\r\n *ngTemplateOutlet=\"answerField; context: {question: question,previewMode: previewMode,isMandatory: isMandatory,groupIndex: groupIndex,parentOptionId: parentOptionId,parentQuestionId: parentQuestionId}\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- answer field -->\r\n <div *ngIf=\"isMobile\" class=\"col-12 mt-2\">\r\n <ng-container\r\n *ngTemplateOutlet=\"answerField; context: {question: question,previewMode: previewMode,isMandatory: isMandatory,groupIndex: groupIndex,parentOptionId: parentOptionId,parentQuestionId: parentQuestionId}\"></ng-container>\r\n </div>\r\n\r\n <!-- Assessor Marks Logic -->\r\n <div class=\"assessment-marks-field\"\r\n *ngIf=\"enableMarks && shouldShowMarksDropdown(question) && formGroup.get(question.id + '_marks') as marksControl\">\r\n <label class=\"assessment-text-medium-12 assessment-text-grey-ten\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}(Max: {{question.weight}})</label>\r\n <input (keydown)=\"preventNegativeInput($event)\"\r\n (input)=\"checkMaxVal($event, marksControl, question?.weight)\"\r\n class=\"col-12 assessment-input-border-one assessment-border-radius-two px-2 py-1 outline-0 assessment-bg-grey-one assessment-text-medium-12\"\r\n [formControlName]=\"question.id + '_marks'\" type=\"number\" min=\"0\"\r\n (wheel)=\"$event.preventDefault()\">\r\n </div>\r\n </div>\r\n\r\n <!-- answer field -->\r\n <div *ngIf=\"!previewMode && !isMobile\" class=\"mt-3\">\r\n <ng-container\r\n *ngTemplateOutlet=\"answerField; context: {question: question,previewMode: previewMode,isMandatory: isMandatory,groupIndex: groupIndex,parentOptionId: parentOptionId,parentQuestionId: parentQuestionId}\"></ng-container>\r\n </div>\r\n\r\n <!-- Child Questions and Remarks Rendering Logic based on checked form state -->\r\n <ng-container *ngIf=\"question.defaultOptionsList?.length\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList; trackBy: trackByOptionId\">\r\n\r\n <ng-container *ngIf=\"isOptionSelected(formGroup, question, option.options?.id)\">\r\n\r\n <!-- REMARKS FIELD -->\r\n <div class=\"mt-3\"\r\n *ngIf=\"option.remarksRequired && formGroup.get(question.id + '_remarks_' + option.id) as remarksControl\">\r\n <p class=\"assessment-text-regular-15 mb-2\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.REMARKS']}}</p>\r\n <textarea *ngIf=\"!previewMode\" formControlName=\"{{question.id}}_remarks_{{option.id}}\"\r\n rows=\"2\" [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.REMARKS']\"\r\n [ngClass]=\"remarksControl.invalid && remarksControl.touched ? 'assessment-input-border-invalid' : ''\"\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"></textarea>\r\n <ng-container *ngIf=\"previewMode\">\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\">\r\n {{ remarksControl.value }}</span>\r\n </ng-container>\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"remarksControl.invalid && remarksControl.touched\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.FIELD_REQUIRED']}}\r\n </div>\r\n </div>\r\n\r\n <!-- CHILD QUESTIONS RECURSION -->\r\n <div class=\"col-12 mt-4 d-flex flex-column gap-3\" *ngIf=\"option.childQuestionList?.length\">\r\n <ng-container *ngFor=\"let childId of option.childQuestionList; let childIndex = index; trackBy: trackByChildId\">\r\n <ng-container *ngTemplateOutlet=\"questionTemplate; context: {\r\n questionId: childId,\r\n isMandatory: questionBank[childId]?.isMandatory,\r\n groupIndex: groupIndex,\r\n parentOptionId: option.id,\r\n parentQuestionId: question.id,\r\n sequence: sequence + '.' + (childIndex + 1)\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- answer field template -->\r\n<ng-template #answerField let-question=\"question\" let-previewMode=\"previewMode\" let-isMandatory=\"isMandatory\"\r\n let-groupIndex=\"groupIndex\" let-parentOptionId=\"parentOptionId\" let-parentQuestionId=\"parentQuestionId\">\r\n <div *ngIf=\"sectionFormGroups[groupIndex].formGroup\" [formGroup]=\"sectionFormGroups[groupIndex].formGroup\"\r\n class=\"col-12\">\r\n <ng-container [ngSwitch]=\"question.questionType?.code\">\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.SUBJECTIVE_SHORT'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.SUBJECTIVE_LONG'\">\r\n <lib-question-type-long [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-long>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.SUBJECTIVE_RICH_TEXT'\">\r\n <lib-question-type-editor [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-editor>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.OBJECTIVE'\">\r\n <lib-question-type-objective [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [showCorrectAnswers]=\"showCorrectAnswers\" [imageConfig]=\"imageConfig\"\r\n [answerObj]=\"getQuestionAnswerObj(question.id!, parentOptionId, parentQuestionId)\"></lib-question-type-objective>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.MULTI_SELECT'\">\r\n <lib-question-type-multiselect [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [showCorrectAnswers]=\"showCorrectAnswers\" [imageConfig]=\"imageConfig\"\r\n [answerObj]=\"getQuestionAnswerObj(question.id!, parentOptionId, parentQuestionId)\"></lib-question-type-multiselect>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.PREFERENCE'\">\r\n <lib-question-type-preference [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\"></lib-question-type-preference>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.NUMBER'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.EMAIL'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.CONTACT_NUMBER'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.URL'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\" [required]=\"isMandatory\"\r\n [previewMode]=\"previewMode\" [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.FILE_UPLOAD'\">\r\n <lib-question-type-file-upload [question]=\"question\" [assessmentInstanceId]=\"assessmentInstanceId\"\r\n [formControlName]=\"question.id!\" [required]=\"isMandatory\" [labelConfig]=\"labelConfig\"\r\n [imageConfig]=\"imageConfig\" (snackbarMessage)=\"snackbarMessage.emit($event)\"></lib-question-type-file-upload>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'QUESTION_TYPE.DATE_PICKER'\">\r\n <lib-question-type-date-picker [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-date-picker>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Error Messages and Character Count Container -->\r\n <ng-container\r\n *ngIf=\"!previewMode && sectionFormGroups[groupIndex].formGroup.get(question.id?.toString() || '') as control\">\r\n <div class=\"d-flex justify-content-between align-items-start mt-1\">\r\n <span>\r\n <div class=\"assessment-text-regular-12 assessment-text-danger\"\r\n *ngIf=\"control.touched && control.errors?.['required']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED_RESPONSE']}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['pattern']\">\r\n {{question?.validationMessage || labelConfig['COMMONS_ASSESSMENT.ERROR.INVALID_FORMAT']}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['privateGdriveLink']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.PRIVATE_DRIVE_LINK']}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['minlength']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MIN_CHARS']?.replace('{{length}}',\r\n control.errors?.['minlength'].requiredLength + '')}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxlength']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_CHARS']?.replace('{{length}}',\r\n control.errors?.['maxlength'].requiredLength + '')}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['minOptions']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MIN_OPTIONS']?.replace('{{count}}',\r\n control.errors?.['minOptions'].required + '')}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxOptions']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_OPTIONS']?.replace('{{count}}',\r\n control.errors?.['maxOptions'].required + '')}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxFiles']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_FILES']?.replace('{{count}}',\r\n control.errors?.['maxFiles'].required + '')}}\r\n </div>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxFileSize']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_FILE_SIZE']?.replace('{{size}}',\r\n control.errors?.['maxFileSize'].requiredSize + '')}}\r\n </div>\r\n </span>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-grey-seven white-space-nowrap ms-2\"\r\n *ngIf=\"getMaxCharCount(question) > 0\">\r\n {{ getRemainingChars(question, control) }}\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.CHARACTER']}}{{getRemainingChars(question, control) !==\r\n 1\r\n ? 's' : ''}} {{labelConfig['COMMONS_ASSESSMENT.LABEL.REMAINING']}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Reusable Section Form Template -->\r\n<ng-template #sectionContent let-section=\"section\" let-i=\"i\">\r\n <form class=\"w-100\" *ngIf=\"sectionFormGroups[i].formGroup\" [formGroup]=\"sectionFormGroups[i].formGroup\"\r\n [name]=\"'sectionfrm-' + i\" novalidate>\r\n <div class=\"d-flex justify-content-between align-items-center mb-4\"\r\n *ngIf=\"!previewMode && (section?.qpsDesc?.[0]?.text || section?.mediaUrl)\">\r\n <span class=\"assessment-text-semibold-14 assessment-text-grey-ten\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.TOTAL_QUESTIONS']}}: {{ section?.totalQuestions || 0 }}\r\n </span>\r\n <button (click)=\"openInstructionsDialog(section)\"\r\n class=\"assessment-zoom-animation assessment-button-padding assessment-text-medium-13 assessment-btn-primary-transparent\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.VIEW_INSTRUCTIONS']}}\r\n </button>\r\n </div>\r\n\r\n <div class=\"col-12 d-flex flex-column gap-3\">\r\n <ng-container *ngFor=\"let sq of section.sectionQuestionsList | orderBy; let j = index; trackBy: trackBySectionQuestion\">\r\n <ng-container *ngTemplateOutlet=\"questionTemplate; context: {\r\n questionId: sq.questionId,\r\n isMandatory: questionBank[sq.questionId]?.isMandatory,\r\n groupIndex: i,\r\n parentOptionId: null,\r\n parentQuestionId: null,\r\n sequence: j + 1\r\n }\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n<!-- video preview -->\r\n<ng-template let-videoUrl=\"videoUrl\" #VideoTemplate>\r\n <div class=\"assessment-border-radius-two overflow-hidden col-md-10 col-12\">\r\n <video *ngIf=\"videoUrl?.includes('.mp4') else youtubeVideo\" width=\"400\" controls class=\"mw-100 d-block mx-auto\">\r\n <source [src]=\"videoUrl\" type=\"video/mp4\">\r\n </video>\r\n <ng-template #youtubeVideo>\r\n <div class=\"youtube-video position-relative h-100\">\r\n <iframe [src]=\"addYoutubeIframeSrc(videoUrl)\" title=\"YouTube video player\" frameborder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n allowfullscreen class=\"position-absolute top-0 start-0 w-100 h-100 d-block\">\r\n </iframe>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ng-template>","import { NgModule } from \"@angular/core\";\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\n\r\nconst MATERIAL_MODULES = [\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatSelectModule,\r\n DragDropModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatTooltipModule,\r\n MatTabsModule,\r\n OverlayModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule\r\n];\r\n\r\n@NgModule({\r\n imports: MATERIAL_MODULES,\r\n exports: MATERIAL_MODULES\r\n})\r\nexport class MaterialModules { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { MaterialModules } from \"./material-modules\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AngularEditorModule } from \"@kolkov/angular-editor\";\r\nimport { TextEditorComponent } from \"./components/text-editor/text-editor.component\";\r\nimport { OrderByPipe } from \"./pipes/order-by.pipe\";\r\nimport { SkillAllocationComponent } from \"./components/skill-allocation/skill-allocation.component\";\r\nimport { ConfirmationDialogComponent } from \"./components/confirmation-dialog/confirmation-dialog.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n TextEditorComponent,\r\n OrderByPipe,\r\n SkillAllocationComponent,\r\n ConfirmationDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MaterialModules,\r\n AngularEditorModule\r\n ],\r\n exports: [\r\n TextEditorComponent,\r\n SkillAllocationComponent,\r\n ConfirmationDialogComponent,\r\n MaterialModules,\r\n OrderByPipe\r\n ]\r\n})\r\nexport class SharedModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { AssessmentTakerComponent } from './assessment-taker.component';\r\nimport { MaterialModules } from '../../shared/material-modules';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { QuestionTypeEditorComponent } from './components/question-type-editor/question-type-editor.component';\r\nimport { QuestionTypeFileUploadComponent } from './components/question-type-file-upload/question-type-file-upload.component';\r\nimport { QuestionTypeLongComponent } from './components/question-type-long/question-type-long.component';\r\nimport { QuestionTypeMultiselectComponent } from './components/question-type-multiselect/question-type-multiselect.component';\r\nimport { QuestionTypeObjectiveComponent } from './components/question-type-objective/question-type-objective.component';\r\nimport { QuestionTypePreferenceComponent } from './components/question-type-preference/question-type-preference.component';\r\nimport { QuestionTypeShortComponent } from './components/question-type-short/question-type-short.component';\r\nimport { SectionInstructionsComponent } from './components/section-instructions/section-instructions.component';\r\nimport { QuestionTypeDatePickerComponent } from './components/question-type-date-picker/question-type-date-picker.component';\r\nimport { ProctoringResultComponent } from './components/proctoring-result/proctoring-result.component';\r\nimport { ProctoringConsentComponent } from './components/proctoring-consent/proctoring-consent.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AssessmentTakerComponent,\r\n QuestionTypeEditorComponent,\r\n QuestionTypeFileUploadComponent,\r\n QuestionTypeLongComponent,\r\n QuestionTypeMultiselectComponent,\r\n QuestionTypeObjectiveComponent,\r\n QuestionTypePreferenceComponent,\r\n QuestionTypeShortComponent,\r\n SectionInstructionsComponent,\r\n QuestionTypeDatePickerComponent,\r\n ProctoringResultComponent,\r\n ProctoringConsentComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n MaterialModules,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [\r\n AssessmentTakerComponent\r\n ]\r\n})\r\nexport class AssessmentTakerModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { QuestionPaperSection } from '../../../../shared/interfaces/question-paper.interface';\r\nimport { deepClone } from '../../../../shared/utils';\r\n\r\n@Component({\r\n selector: 'lib-add-edit-section-introduction',\r\n templateUrl: './add-edit-section-introduction.component.html',\r\n styleUrls: ['./add-edit-section-introduction.component.scss']\r\n})\r\nexport class AddEditSectionIntroductionComponent implements OnInit {\r\n imageConfig: { [key: string]: string } = {};\r\n labelConfig: { [key: string]: string } = {};\r\n sectionDescription: string = '';\r\n sectionDetails: QuestionPaperSection | null = null;\r\n videoUrl: string = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<AddEditSectionIntroductionComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.imageConfig = this.dialogData?.imageConfig || {};\r\n this.labelConfig = this.dialogData?.labelConfig || {};\r\n this.sectionDetails = deepClone(this.dialogData?.sectionDetails);\r\n if (this.sectionDetails && this.sectionDetails.qpsDesc && this.sectionDetails.qpsDesc.length > 0) {\r\n this.sectionDescription = this.sectionDetails.qpsDesc[0].text || '';\r\n }\r\n this.videoUrl = this.sectionDetails?.mediaUrl || '';\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n get isVideoUrlValid(): boolean {\r\n if (!this.videoUrl) return true;\r\n const urlPattern = /^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?(\\?[^\\s]*)?$/i;\r\n return urlPattern.test(this.videoUrl);\r\n }\r\n\r\n onSubmit() {\r\n this.dialogRef.close({ update: true, description: this.sectionDescription, mediaUrl: this.videoUrl });\r\n }\r\n}\r\n","<div class=\"col-12\">\r\n <header class=\"p-3 d-flex align-items-center justify-content-between col-12 assessment-bg-grey-one pb-4\">\r\n <p class=\"mb-0 assessment-text-semibold-18\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_INSTRUCTIONS_HEADER']}}\r\n </p>\r\n <img mat-dialog-close [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\" class=\"cursor-pointer\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\r\n </header>\r\n\r\n <div class=\"col-12 px-md-4 px-3\">\r\n <div class=\"col-12 my-4\">\r\n <app-text-editor [preText]=\"sectionDescription\" (inputChange)=\"sectionDescription = $event\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_INSTRUCTIONS']\"\r\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\r\n [height]=\"'15rem'\">\r\n </app-text-editor>\r\n </div>\r\n <div class=\"col-12 my-4\">\r\n <input [(ngModel)]=\"videoUrl\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_INSTRUCTIONS_MEDIA']\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\r\n [ngClass]=\"{'assessment-input-border-invalid': !isVideoUrlValid}\">\r\n <div *ngIf=\"!isVideoUrlValid\" class=\"text-danger assessment-text-regular-12 mt-1\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.INVALID_URL']}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <footer class=\"mt-auto p-3 pb-4 d-flex align-items-center justify-content-end gap-3 col-12\">\r\n <button mat-dialog-close\r\n class=\"assessment-btn-primary-transparent assessment-zoom-animation p-2 px-3 assessment-text-medium-13\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DISCARD']}}\r\n </button>\r\n <button (click)=\"onSubmit()\" [disabled]=\"!isVideoUrlValid\"\r\n class=\"assessment-btn-primary assessment-zoom-animation p-2 px-3 assessment-text-medium-13\"\r\n [ngClass]=\"{'opacity-50': !isVideoUrlValid, 'cursor-not-allowed': !isVideoUrlValid}\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SAVE_DETAILS']}}\r\n </button>\r\n </footer>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { Assessment, AssessmentInstance, Config } from '../../../shared/interfaces/assessment.interface';\r\nimport { QuestionPaperSection, SectionQuestion, AssessmentQuestionPaper } from '../../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentQuestion } from '../../../shared/interfaces/question.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AssessmentBuilderService {\r\n\r\n private defaultAssessmentDTO: Assessment = {};\r\n\r\n setDefaultAssessmentDTO(value: Assessment) {\r\n this.defaultAssessmentDTO = value;\r\n }\r\n\r\n constructor() { }\r\n\r\n setQuestionDTO(formData: any, existingQuestion: AssessmentQuestion | null = {}): AssessmentQuestion {\r\n\r\n const existingConfigsMap = (existingQuestion?.questionConfigs || [])\r\n .reduce((acc: any, config: any) => {\r\n acc[config.configKey] = config;\r\n return acc;\r\n }, {});\r\n\r\n const questionConfigs = [\r\n { configKey: 'minCharacterCount', configValue: formData.minCharacterCount ? String(formData.minCharacterCount) : null },\r\n { configKey: 'maxCharacterCount', configValue: formData.maxCharacterCount ? String(formData.maxCharacterCount) : null },\r\n { configKey: 'minimumNumberOfOption', configValue: formData.minimumNumberOfOption ? String(formData.minimumNumberOfOption) : null },\r\n { configKey: 'maximumNumberOfOption', configValue: formData.maximumNumberOfOption ? String(formData.maximumNumberOfOption) : null },\r\n { configKey: 'maxFileSize', configValue: formData.maxFileSize ? String(formData.maxFileSize) : null },\r\n { configKey: 'maxNoOfFiles', configValue: formData.maxNoOfFiles ? String(formData.maxNoOfFiles) : null },\r\n // { configKey: 'visibility', configValue: formData.visibility ? 'true' : 'false' }\r\n ].map(config => ({\r\n id: existingConfigsMap[config.configKey]?.id || 0,\r\n ...config,\r\n })).filter(Boolean);\r\n\r\n return {\r\n ...existingQuestion,\r\n questionText: [{\r\n id: existingQuestion?.questionText?.[0]?.id || 0,\r\n language: { code: 'ENG' },\r\n text: formData.questionText || ''\r\n }],\r\n questionSubText: formData.questionSubText ? [{\r\n id: existingQuestion?.questionSubText?.[0]?.id || 0,\r\n language: { code: 'ENG' },\r\n text: formData.questionSubText\r\n }] : [],\r\n questionType: { code: formData.questionType || '' },\r\n questionSubtype: { code: formData.questionSubtype || formData.questionType?.replace('QUESTION_TYPE', 'QUESTION_SUB_TYPE') || '' },\r\n isMandatory: formData.isMandatory || false,\r\n isFilterEnabled: formData.isFilterEnabled || false,\r\n weight: Number(formData.totalMarks || 0),\r\n hintText: formData.hintText || '',\r\n mediaUrl: formData.questionMedia || '',\r\n responseValidation: formData.customRegex || '',\r\n skillCodes: formData.skillCodes?.map((skill: any) => ({ code: skill, classCode: \"REF.ASSESSMENT_QUESTION_SKILL\" })) || [],\r\n questionConfigs,\r\n defaultOptionsList: (() => {\r\n const existingOptions = existingQuestion?.defaultOptionsList || [];\r\n const formOptions = formData.options || [];\r\n\r\n // 1. Process items from formData (new and updated)\r\n const processedOptions = formOptions.map((opt: any, index: number) => {\r\n const existingOpt = existingOptions.find(eo => eo.id === opt.id && eo.id !== 0) || {};\r\n\r\n return {\r\n ...existingOpt,\r\n id: opt.id || 0,\r\n uuid: existingOpt.uuid || opt.uuid,\r\n orderNo: index + 1,\r\n weight: Number(opt.weight || 0),\r\n remarksRequired: opt.remarksRequired || false,\r\n isActive: opt.isActive !== false,\r\n options: {\r\n ...(existingOpt.options || {}),\r\n id: opt?.options?.id || existingOpt.options?.id || 0,\r\n optionName: [{\r\n id: existingOpt.options?.optionName?.[0]?.id || 0,\r\n language: { code: 'ENG' },\r\n text: opt.optionLabel || ''\r\n }],\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n },\r\n childQuestionList: opt.childQuestionList || existingOpt.childQuestionList || [],\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n };\r\n });\r\n\r\n // 2. Identify existing options that are NOT in formData (removed by user) and mark them inactive\r\n const formOptionIds = new Set(processedOptions.map((o: any) => o.id).filter((id: number) => id !== 0));\r\n const removedOptions = existingOptions.filter(eo => eo.id && !formOptionIds.has(eo.id)).map(eo => ({ ...eo, isActive: false }));\r\n\r\n return [...processedOptions, ...removedOptions];\r\n })(),\r\n ...(!existingQuestion?.id && {\r\n id: 0,\r\n ...(this.defaultAssessmentDTO?.domain && { domain: this.defaultAssessmentDTO?.domain }),\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n })\r\n };\r\n }\r\n\r\n getQuestionDTO(questionData: AssessmentQuestion) {\r\n const getConfig = (key: string) => questionData.questionConfigs?.find(c => c.configKey === key)?.configValue;\r\n\r\n return {\r\n id: questionData.id,\r\n questionText: questionData.questionText?.[0]?.text || '',\r\n questionSubText: questionData.questionSubText?.[0]?.text || '',\r\n questionType: questionData.questionType?.code || '',\r\n isMandatory: questionData.isMandatory || false,\r\n isFilterEnabled: questionData.isFilterEnabled || false,\r\n totalMarks: questionData.weight || 0,\r\n hintText: questionData.hintText || '',\r\n questionMedia: questionData.mediaUrl || '',\r\n minCharacterCount: getConfig('minCharacterCount') ? Number(getConfig('minCharacterCount')) : null,\r\n maxCharacterCount: getConfig('maxCharacterCount') ? Number(getConfig('maxCharacterCount')) : null,\r\n minimumNumberOfOption: getConfig('minimumNumberOfOption') ? Number(getConfig('minimumNumberOfOption')) : null,\r\n maximumNumberOfOption: getConfig('maximumNumberOfOption') ? Number(getConfig('maximumNumberOfOption')) : null,\r\n maxFileSize: getConfig('maxFileSize') ? Number(getConfig('maxFileSize')) : null,\r\n maxNoOfFiles: getConfig('maxNoOfFiles') ? Number(getConfig('maxNoOfFiles')) : null,\r\n // visibility: getConfig('visibility') === 'true',\r\n customRegex: questionData?.responseValidation,\r\n skillCodes: questionData?.skillCodes?.map((skill: any) => skill.code) || [],\r\n options: questionData.defaultOptionsList?.map(opt => ({\r\n id: opt.id,\r\n uuid: opt.uuid,\r\n optionLabel: opt.options?.optionName?.[0]?.text || '',\r\n weight: opt.weight || 0,\r\n remarksRequired: opt.remarksRequired || false,\r\n isActive: opt.isActive !== false,\r\n childQuestionList: opt.childQuestionList || [],\r\n })) || [],\r\n childQuestions: questionData?.childQuestions || []\r\n }\r\n }\r\n\r\n createNewSection(sequence: number): QuestionPaperSection {\r\n return {\r\n id: 0,\r\n qpsName: [{\r\n id: 0,\r\n language: { code: 'ENG' },\r\n text: `Section ${sequence}`\r\n }],\r\n orderNo: sequence,\r\n sectionQuestionsList: [],\r\n totalMarks: 0,\r\n totalQuestions: 0,\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n }\r\n }\r\n\r\n generateSectionQuestion(question: AssessmentQuestion, sectionQuestion: SectionQuestion = {}): SectionQuestion {\r\n return {\r\n id: sectionQuestion?.id || 0,\r\n question,\r\n isMandatory: question?.isMandatory,\r\n ...(!sectionQuestion?.id && this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant })\r\n }\r\n }\r\n\r\n generateQuestionPaperDTO(questionPaper: AssessmentQuestionPaper, questionBank: Record<number, AssessmentQuestion>): AssessmentQuestionPaper {\r\n if (!questionPaper) return questionPaper;\r\n\r\n if (!questionPaper?.id && this.defaultAssessmentDTO?.tenant) {\r\n questionPaper.tenant = this.defaultAssessmentDTO?.tenant;\r\n }\r\n\r\n\r\n questionPaper.questionPaperSectionList?.forEach((section: any, sIndex: number) => {\r\n section.orderNo = sIndex + 1;\r\n\r\n let sectionMarks = 0;\r\n let sectionQuestionsCount = 0;\r\n\r\n section.sectionQuestionsList?.forEach((q: SectionQuestion, qIndex: number) => {\r\n q.orderNo = qIndex + 1;\r\n const question = q?.question || questionBank[q?.questionId || -1];\r\n if (question && q.isActive !== false) {\r\n sectionMarks += Number(question.weight) || 0;\r\n sectionQuestionsCount++;\r\n }\r\n });\r\n\r\n section.totalMarks = sectionMarks;\r\n section.totalQuestions = sectionQuestionsCount;\r\n });\r\n\r\n return questionPaper;\r\n }\r\n\r\n generateAssessmentDTO(assessmentId: number, questionPaper: AssessmentQuestionPaper, assessmentConfigs?: Config[]): Assessment {\r\n return {\r\n id: assessmentId,\r\n totallMarks: questionPaper?.questionPaperSectionList?.filter((section: any) => section.isActive !== false).reduce((acc: number, section: any) => acc + (section.totalMarks || 0), 0) || 0,\r\n ...(!assessmentId && {\r\n ...this.defaultAssessmentDTO\r\n }),\r\n ...(assessmentConfigs && { assessmentConfigs }),\r\n cacheEvictionEnabled: true\r\n };\r\n }\r\n\r\n generateAssessmentInstanceDTO(assessmentId: number, predefinedAssessmentInstance: AssessmentInstance, duration?: number): AssessmentInstance {\r\n let d = new Date();\r\n let year = d.getFullYear();\r\n let month = d.getMonth();\r\n let day = d.getDate();\r\n let endDate = new Date(year + 20, month, day);\r\n return {\r\n id: 0,\r\n endDate: endDate,\r\n startDate: new Date(),\r\n assessment: {\r\n id: assessmentId,\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant })\r\n },\r\n scheduleStatus: {\r\n code: 'ASSESSMENT.PUBLISH'\r\n },\r\n ...predefinedAssessmentInstance,\r\n // the maker's chosen duration (seconds) wins over any predefined value\r\n ...(duration != null && { duration })\r\n }\r\n }\r\n\r\n /**\r\n * Patch fragment carrying the duration onto an already-created instance (by id), to bundle into\r\n * the assessment/question-paper patch. Empty unless the time input is enabled and an instance exists.\r\n */\r\n buildInstancePatch(showTimeInput: boolean, assessmentInstanceId: number, durationSeconds: number): { assessmentInstance?: AssessmentInstance } {\r\n if (!showTimeInput || !assessmentInstanceId) {\r\n return {};\r\n }\r\n return { assessmentInstance: { id: assessmentInstanceId, duration: durationSeconds } };\r\n }\r\n}","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport * as controllers from '../../../shared/controllers';\r\n\r\n@Injectable()\r\nexport class AssessmentMakerService {\r\n private readonly assetsBaseUrl = document?.baseURI?.replace(/\\/$/, '');\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n private getHeaders(): HttpHeaders {\r\n return new HttpHeaders().set('X-Library-Source', 'commons-assessment');\r\n }\r\n\r\n createParams(params: any): HttpParams {\r\n let param = new HttpParams();\r\n for (const key of Object.keys(params)) {\r\n param = param.set(key, params[key]);\r\n }\r\n return param;\r\n }\r\n\r\n getConfigJSON(fileName: string) {\r\n return this.http.get(`${this.assetsBaseUrl}/assets/commons-assessment/${fileName}.json`);\r\n }\r\n\r\n getResponseCount(assessmentInstanceId: number) {\r\n return this.http.get(controllers.assessmentMakerController.getResponseCount + this.createParams({ assessmentInstanceId }), { headers: this.getHeaders() });\r\n }\r\n\r\n createAssessmentAndQuestionPaper(payload: any) {\r\n return this.http.post(controllers.assessmentMakerController.assessmentAndQuestionPaper, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n patchAssessmentAndQuestionPaper(payload: any) {\r\n return this.http.patch(controllers.assessmentMakerController.assessmentAndQuestionPaper, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n createQuestion(payload: any) {\r\n return this.http.post(controllers.assessmentMakerController.createQuestion, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n patchQuestion(payload: any) {\r\n return this.http.patch(controllers.assessmentMakerController.patchQuestion, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n getQuestionsByIds(params: { questionIds: number[] }) {\r\n return this.http.get(controllers.assessmentMakerController.getQuestionsByIds, { params, headers: this.getHeaders() });\r\n }\r\n\r\n getAssessmentContext(params: any) {\r\n return this.http.get(controllers.assessmentMakerController.getAssessmentContext + this.createParams(params), { headers: this.getHeaders() });\r\n }\r\n\r\n duplicateSection(questionPaperId: number, sectionId: number) {\r\n return this.http.patch(controllers.assessmentMakerController.duplicateSection?.replace('$AssessmentQuestionPaperId', questionPaperId?.toString())?.replace('$SectionId', sectionId?.toString()), {}, { headers: this.getHeaders() });\r\n }\r\n\r\n duplicateQuestion(sectionId: number, sectionQuestionId: number) {\r\n return this.http.patch(controllers.assessmentMakerController.duplicateQuestion?.replace('$SectionId', sectionId?.toString())?.replace('$SectionQuestionId', sectionQuestionId?.toString()), {}, { headers: this.getHeaders() });\r\n }\r\n\r\n createAssessmentInstance(payload: any) {\r\n return this.http.post(controllers.assessmentMakerController.createAssessmentInstance, payload, { headers: this.getHeaders() });\r\n }\r\n\r\n getRefDataByCode(code: string, params: any) {\r\n return this.http.get(controllers.refDataController.getRefDataByCode.replace('$Code', code) + this.createParams(params), { headers: this.getHeaders() });\r\n }\r\n}\r\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { QuestionType, RefData } from '../../../../shared/interfaces/assessment.interface';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { AssessmentMakerService } from '../../services/assessment-maker.service';\r\nimport { QuestionPaperSection } from '../../../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentBuilderService } from '../../services/assessment-builder.service';\r\nimport { deepClone, generateUuid } from '../../../../shared/utils';\r\n\r\n@Component({\r\n selector: 'lib-app-assessment-builder',\r\n templateUrl: './assessment-builder.component.html',\r\n styleUrls: ['./assessment-builder.component.scss']\r\n})\r\n\r\nexport class AssessmentBuilderComponent implements OnInit {\r\n labelConfig: { [key: string]: string } = {};\r\n imageConfig: { [key: string]: string } = {};\r\n questionTypes: QuestionType[] = [];\r\n questionDetails: AssessmentQuestion | null = null;\r\n rules: any = {};\r\n questionStack: { parentFormValue: AssessmentQuestion, editingQuestionIndex?: number, addingToGroupId?: string }[] = [];\r\n @ViewChild('scrollContainer') scrollContainer!: ElementRef;\r\n\r\n childQuestionGroups: { id: string, optionId: string | number | null, questionIds: (string | number)[] }[] = [];\r\n\r\n questionsFormGroup!: FormGroup;\r\n questionBank: Record<number, AssessmentQuestion> = {};\r\n isChild: boolean = false;\r\n // parentQuestion: AssessmentQuestion | null = null;\r\n\r\n assessmentId: number = 0;\r\n\r\n isSubmitting: boolean = false;\r\n skillsList: RefData[] = [];\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private assessmentBuilderService: AssessmentBuilderService,\r\n private assessmentMakerService: AssessmentMakerService,\r\n public dialogRef: MatDialogRef<AssessmentBuilderComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.labelConfig = this.dialogData?.labelConfig;\r\n this.imageConfig = this.dialogData?.imageConfig;\r\n this.rules = this.dialogData?.rules;\r\n this.questionTypes = this.dialogData?.questionTypes;\r\n this.questionBank = this.dialogData?.questionBank;\r\n this.isChild = this.dialogData?.isChild;\r\n this.skillsList = this.dialogData?.skillsList || [];\r\n this.assessmentId = this.dialogData?.assessmentId;\r\n\r\n if (this.dialogData.questionDetails) {\r\n this.questionDetails = deepClone(this.dialogData?.questionDetails);\r\n }\r\n this.setupFormGroup();\r\n this.applyDynamicValidators();\r\n }\r\n\r\n generateChildQuestionList() {\r\n if (this.isChild) {\r\n return [];\r\n }\r\n const uniqueIds = new Set<number>();\r\n\r\n this.questionDetails?.defaultOptionsList?.forEach(option => {\r\n option.childQuestionList?.forEach(id => uniqueIds.add(id));\r\n });\r\n\r\n return Array.from(uniqueIds)?.map(id => {\r\n return this.questionBank[id] ? deepClone(this.questionBank[id]) : null;\r\n })?.filter(Boolean) as AssessmentQuestion[];\r\n }\r\n\r\n setupFormGroup() {\r\n this.questionsFormGroup = this.formBuilder.group({\r\n questionType: ['', Validators.required],\r\n questionText: ['', Validators.required],\r\n questionSubText: [''],\r\n isFilterEnabled: [false],\r\n isMandatory: [false],\r\n // visibility: [true],\r\n totalMarks: [null],\r\n minCharacterCount: [null],\r\n maxCharacterCount: [null],\r\n maximumNumberOfOption: [null],\r\n minimumNumberOfOption: [null],\r\n maxFileSize: [null],\r\n maxNoOfFiles: [null],\r\n customRegex: [''],\r\n hintText: [''],\r\n questionMedia: [''],\r\n options: this.formBuilder.array([]),\r\n childQuestions: [[]],\r\n skillCodes: [[]]\r\n });\r\n\r\n this.questionsFormGroup.get('questionType')?.valueChanges.subscribe(() => {\r\n this.applyDynamicValidators();\r\n });\r\n this.questionsFormGroup.get('minCharacterCount')?.valueChanges.subscribe(() => {\r\n this.questionsFormGroup.get('maxCharacterCount')?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n this.questionsFormGroup.get('maxCharacterCount')?.valueChanges.subscribe(() => {\r\n this.questionsFormGroup.get('minCharacterCount')?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n this.questionsFormGroup.get('minimumNumberOfOption')?.valueChanges.subscribe(() => {\r\n this.questionsFormGroup.get('maximumNumberOfOption')?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n this.questionsFormGroup.get('maximumNumberOfOption')?.valueChanges.subscribe(() => {\r\n this.questionsFormGroup.get('minimumNumberOfOption')?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n if (this.questionDetails) {\r\n this.populateForm(this.questionDetails, true);\r\n } else {\r\n this.buildChildQuestionGroups([]);\r\n }\r\n }\r\n\r\n populateForm(questionDetails: AssessmentQuestion, buildChildGroups: boolean = false) {\r\n if (!questionDetails) return;\r\n const childQuestions = questionDetails?.childQuestions || this.generateChildQuestionList();\r\n const formData = this.assessmentBuilderService.getQuestionDTO({ ...questionDetails, childQuestions });\r\n this.questionsFormGroup.patchValue(formData);\r\n if (formData.options?.length) {\r\n const totalMarks = Number(formData.totalMarks) || 0;\r\n formData.options.forEach((opt: any) => {\r\n const optGroup = this.createOption();\r\n if (totalMarks > 0 && opt.weight !== undefined && opt.weight !== null) {\r\n opt.weight = parseFloat(((Number(opt.weight) * totalMarks) / 100).toFixed(2));\r\n }\r\n optGroup.patchValue(opt);\r\n this.options.push(optGroup);\r\n });\r\n }\r\n if (buildChildGroups) {\r\n this.buildChildQuestionGroups(childQuestions);\r\n }\r\n }\r\n\r\n async onSubmit() {\r\n if (this.questionsFormGroup.invalid) {\r\n this.questionsFormGroup.markAllAsTouched();\r\n return;\r\n }\r\n\r\n const totalMarks = Number(this.questionsFormGroup.get('totalMarks')?.value) || 0;\r\n const qType = this.questionsFormGroup.get('questionType')?.value;\r\n const optionsValues = this.questionsFormGroup.get('options')?.value || [];\r\n const showWeightage = this.showField('options', 'showWeightage');\r\n\r\n if (showWeightage && totalMarks > 0) {\r\n let totalWeights = 0;\r\n let hasInvalidWeight = false;\r\n\r\n for (const opt of optionsValues) {\r\n if (opt.isActive === false) continue;\r\n const w = Number(opt.weight) || 0;\r\n if (w > totalMarks) {\r\n hasInvalidWeight = true;\r\n break;\r\n }\r\n totalWeights += w;\r\n }\r\n\r\n if (hasInvalidWeight) {\r\n // To keep within existing styles, emitting default error with our specific message\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.OPTION_SCORE_GREATER_THAN_TOTAL_MARKS'], type: 'error' });\r\n return;\r\n }\r\n\r\n if (qType === 'QUESTION_TYPE.MULTI_SELECT' && totalWeights > totalMarks) {\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.SUM_OF_OPTION_SCORES_GREATER_THAN_TOTAL_MARKS'], type: 'error' });\r\n return;\r\n }\r\n }\r\n\r\n this.isSubmitting = true;\r\n\r\n const formValue = deepClone(this.questionsFormGroup.value);\r\n if (showWeightage && totalMarks > 0 && formValue.options?.length) {\r\n formValue.options.forEach((opt: any) => {\r\n if (opt.weight !== undefined && opt.weight !== null) {\r\n opt.weight = parseFloat(((Number(opt.weight) / totalMarks) * 100).toFixed(2));\r\n }\r\n });\r\n }\r\n\r\n if (this.questionStack.length > 0) {\r\n // child question logic\r\n const state = this.questionStack[this.questionStack.length - 1];\r\n\r\n if (state?.editingQuestionIndex !== undefined) {\r\n if (!state.parentFormValue.childQuestions) {\r\n state.parentFormValue.childQuestions = [];\r\n }\r\n // Update existing child\r\n const childQuestion = state.parentFormValue.childQuestions[state.editingQuestionIndex];\r\n const payload = this.assessmentBuilderService.setQuestionDTO(formValue, childQuestion);\r\n try {\r\n const question = await this.updateQuestion(payload);\r\n state.parentFormValue.childQuestions[state.editingQuestionIndex] = question;\r\n if (question?.id) {\r\n this.questionBank[question.id] = question;\r\n }\r\n this.isSubmitting = false;\r\n } catch (error) {\r\n this.isSubmitting = false;\r\n console.error(error);\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload }\r\n }\r\n } else {\r\n // Add new child \r\n const payload = this.assessmentBuilderService.setQuestionDTO(formValue);\r\n try {\r\n const question = await this.createQuestion(payload);\r\n state?.parentFormValue?.childQuestions?.push(question);\r\n if (question?.id) {\r\n this.questionBank[question.id] = question;\r\n\r\n const grp = this.childQuestionGroups.find((g: any) => g.id === state.addingToGroupId);\r\n if (grp) {\r\n grp.questionIds?.push(question?.id);\r\n if (grp.optionId) {\r\n const opt = state.parentFormValue?.defaultOptionsList?.find((o: any) => (o.id || o.uuid) == grp.optionId);\r\n if (opt) {\r\n opt.childQuestionList = opt.childQuestionList || [];\r\n opt.childQuestionList.push(question.id);\r\n }\r\n }\r\n } else {\r\n this.childQuestionGroups.push({\r\n id: generateUuid(),\r\n optionId: null,\r\n questionIds: [question?.id]\r\n });\r\n }\r\n }\r\n\r\n this.isSubmitting = false;\r\n } catch (error) {\r\n this.isSubmitting = false;\r\n console.error(error);\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'POST', payload }\r\n }\r\n }\r\n this.questionStack.pop();\r\n\r\n // Re-populate parent form\r\n this.resetAndPopulate(state?.parentFormValue);\r\n } else {\r\n let questionDTO = this.assessmentBuilderService.setQuestionDTO(formValue, this.questionDetails);\r\n\r\n // Update local template tree representation\r\n if (this.questionDetails?.id) {\r\n try {\r\n questionDTO = await this.updateQuestion(questionDTO);\r\n if (questionDTO?.id) {\r\n this.questionBank[questionDTO.id] = questionDTO\r\n }\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.QUESTION_UPDATED_SUCCESS'], type: 'success' });\r\n this.dialogRef.close({ success: true });\r\n this.isSubmitting = false;\r\n } catch (error) {\r\n this.isSubmitting = false;\r\n console.error(error);\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload: questionDTO }\r\n }\r\n } else {\r\n this.createOrEditAssessmentAndQuestionPaper(questionDTO);\r\n }\r\n }\r\n }\r\n\r\n createQuestion(payload: any): Promise<AssessmentQuestion> {\r\n return new Promise((resolve, reject) => {\r\n this.assessmentMakerService.createQuestion(payload).subscribe({\r\n next: (res) => resolve(res as AssessmentQuestion),\r\n error: (err) => reject(err)\r\n });\r\n });\r\n }\r\n\r\n updateQuestion(payload: any): Promise<AssessmentQuestion> {\r\n return new Promise((resolve, reject) => {\r\n this.assessmentMakerService.patchQuestion(payload).subscribe({\r\n next: (res) => resolve(res as AssessmentQuestion),\r\n error: (err) => reject(err)\r\n });\r\n });\r\n }\r\n\r\n createOrEditAssessmentAndQuestionPaper(question: AssessmentQuestion) {\r\n const questionPaper = deepClone(this.dialogData?.assessmentQuestionPaperData);\r\n const sectionQuestion = this.assessmentBuilderService.generateSectionQuestion(question);\r\n if (!this.dialogData?.sectionDetails) {\r\n const list = questionPaper?.questionPaperSectionList;\r\n const lastSequence = list?.length ? list[list.length - 1].orderNo || 0 : 0;\r\n const newSection = this.assessmentBuilderService.createNewSection(lastSequence + 1);\r\n\r\n newSection?.sectionQuestionsList?.push(sectionQuestion);\r\n\r\n questionPaper?.questionPaperSectionList?.push(newSection);\r\n } else {\r\n const sectionRef = questionPaper?.questionPaperSectionList?.find((section: QuestionPaperSection) => section?.id == this.dialogData?.sectionDetails?.id);\r\n sectionRef?.sectionQuestionsList?.push(sectionQuestion);\r\n }\r\n\r\n const questionPaperDTO = this.assessmentBuilderService.generateQuestionPaperDTO(questionPaper, this.questionBank);\r\n const assessmentDTO = this.assessmentBuilderService.generateAssessmentDTO(this.assessmentId, questionPaperDTO);\r\n\r\n const payload = {\r\n assessment: assessmentDTO,\r\n questionPaper: questionPaperDTO\r\n }\r\n\r\n const apiCall = this.assessmentId\r\n ? this.assessmentMakerService.patchAssessmentAndQuestionPaper(payload)\r\n : this.assessmentMakerService.createAssessmentAndQuestionPaper(payload);\r\n\r\n apiCall.subscribe({\r\n next: (res: any) => {\r\n this.isSubmitting = false;\r\n this.dialogRef.close({\r\n success: true,\r\n assessmentId: res?.assessment?.id,\r\n questionPaper: res?.questionPaper,\r\n questionMap: res?.questionMap\r\n });\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n this.isSubmitting = false;\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: this.assessmentId ? 'PATCH' : 'POST', payload }\r\n }\r\n });\r\n }\r\n\r\n applyDynamicValidators() {\r\n if (!this.rules || Object.keys(this.rules).length === 0) return;\r\n\r\n const form = this.questionsFormGroup;\r\n const qType = form.get('questionType')?.value;\r\n const currentRules = this.rules[qType] || {};\r\n\r\n const excludedControls = new Set(['questionType', 'questionText', 'options', 'visibility', 'isMandatory', 'questionSubText', 'skillCodes']);\r\n\r\n // Handle normal controls\r\n Object.entries(form.controls).forEach(([key, control]) => {\r\n if (excludedControls.has(key)) return;\r\n\r\n const rule = currentRules[key];\r\n\r\n if (rule?.visible) {\r\n const validators = rule?.required ? [Validators.required] : [];\r\n if (key === 'questionMedia') {\r\n validators.push(Validators.pattern(/^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?(\\?[^\\s]*)?$/i));\r\n }\r\n if (key === 'minCharacterCount') {\r\n validators.push(Validators.min(1));\r\n }\r\n if (key === 'maxCharacterCount') {\r\n validators.push(Validators.min(1));\r\n validators.push((ctrl) => {\r\n const minCtrl = ctrl.parent?.get('minCharacterCount');\r\n const minVal = minCtrl?.value;\r\n const maxVal = ctrl.value;\r\n if (minVal !== null && minVal !== undefined && minVal !== '' &&\r\n maxVal !== null && maxVal !== undefined && maxVal !== '') {\r\n if (Number(maxVal) <= Number(minVal)) {\r\n return { lessThanOrEqualMin: true };\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n if (key === 'minimumNumberOfOption') {\r\n validators.push(Validators.min(1));\r\n }\r\n if (key === 'maximumNumberOfOption') {\r\n validators.push(Validators.min(1));\r\n validators.push((ctrl) => {\r\n const minCtrl = ctrl.parent?.get('minimumNumberOfOption');\r\n const minVal = minCtrl?.value;\r\n const maxVal = ctrl.value;\r\n if (minVal !== null && minVal !== undefined && minVal !== '' &&\r\n maxVal !== null && maxVal !== undefined && maxVal !== '') {\r\n if (Number(maxVal) <= Number(minVal)) {\r\n return { lessThanOrEqualMin: true };\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n if (key === 'maxFileSize') {\r\n validators.push(Validators.min(1));\r\n }\r\n if (key === 'maxNoOfFiles') {\r\n validators.push(Validators.min(1));\r\n }\r\n control.setValidators(validators.length > 0 ? validators : null);\r\n } else {\r\n control.clearValidators();\r\n control.setValue(key === 'childQuestions' ? [] : null, { emitEvent: false });\r\n }\r\n\r\n control.updateValueAndValidity({ emitEvent: false });\r\n });\r\n\r\n // Handle options FormArray\r\n const optionsControl = form.get('options') as FormArray;\r\n const optionsRule = currentRules['options'];\r\n\r\n if (!optionsRule?.visible) {\r\n optionsControl.clearValidators();\r\n optionsControl.clear();\r\n optionsControl.updateValueAndValidity({ emitEvent: false });\r\n return;\r\n }\r\n\r\n const optionsValidator = optionsRule?.required ? (control: any) => {\r\n const activeOptions = (control.value || []).filter((opt: any) => opt.isActive !== false);\r\n return activeOptions.length > 0 ? null : { required: true };\r\n } : null;\r\n\r\n optionsControl.setValidators(optionsValidator);\r\n\r\n const showWeightage = optionsRule?.showWeightage;\r\n const showRemarks = optionsRule?.showRemarks;\r\n\r\n optionsControl.controls.forEach(optGroup => {\r\n const weightCtrl = optGroup.get('weight');\r\n const remarksCtrl = optGroup.get('remarksRequired');\r\n\r\n if (!showWeightage) weightCtrl?.setValue(0, { emitEvent: false });\r\n if (!showRemarks) remarksCtrl?.setValue(false, { emitEvent: false });\r\n\r\n weightCtrl?.updateValueAndValidity({ emitEvent: false });\r\n remarksCtrl?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n\r\n optionsControl.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n showField(fieldName: string, nestedProp?: string): boolean {\r\n const questionType = this.questionsFormGroup?.get('questionType')?.value;\r\n if (!questionType || !this.rules[questionType] || !this.rules[questionType][fieldName]) {\r\n return false;\r\n }\r\n if (nestedProp) {\r\n return !!this.rules[questionType][fieldName][nestedProp];\r\n }\r\n return !!this.rules[questionType][fieldName]?.visible;\r\n }\r\n\r\n get options(): FormArray {\r\n return this.questionsFormGroup.get('options') as FormArray;\r\n }\r\n\r\n addOption() {\r\n this.options.push(this.createOption());\r\n this.questionsFormGroup.get('maximumNumberOfOption')?.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n removeOption(index: number) {\r\n const removedOption = this.options.at(index);\r\n const removedOptionId = removedOption.get('id')?.value;\r\n const removedOptionUuid = removedOption.get('uuid')?.value;\r\n const uniqueId = removedOptionId || removedOptionUuid;\r\n\r\n if (removedOptionId) {\r\n removedOption.get('isActive')?.setValue(false);\r\n } else {\r\n this.options.removeAt(index);\r\n }\r\n\r\n this.childQuestionGroups.forEach(g => {\r\n if (g.optionId === uniqueId) {\r\n g.optionId = null;\r\n }\r\n });\r\n\r\n const maxCtrl = this.questionsFormGroup.get('maximumNumberOfOption');\r\n if (maxCtrl && maxCtrl.value !== null && maxCtrl.value !== undefined && maxCtrl.value !== '') {\r\n const activeOptionsCount = this.options.controls.filter(opt => opt.get('isActive')?.value !== false).length;\r\n if (Number(maxCtrl.value) > activeOptionsCount) {\r\n maxCtrl.setValue(activeOptionsCount || null);\r\n }\r\n }\r\n this.questionsFormGroup.get('maximumNumberOfOption')?.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n createOption(): FormGroup {\r\n return this.formBuilder.group({\r\n id: [0],\r\n uuid: [generateUuid()],\r\n optionLabel: ['', Validators.required],\r\n weight: [0],\r\n remarksRequired: [false],\r\n isActive: [true],\r\n childQuestionList: [[]]\r\n });\r\n }\r\n\r\n allowOnlyNumbers(event: any) {\r\n event.target.value = event.target.value.replace(/\\D/g, '');\r\n }\r\n\r\n checkMaxVal(event: any, control: any) {\r\n const totalMarks = Number(this.questionsFormGroup.get('totalMarks')?.value) || 0;\r\n let val = Number(event.target.value);\r\n if (val > totalMarks) {\r\n event.target.value = totalMarks;\r\n control?.setValue(totalMarks, { emitEvent: false });\r\n }\r\n }\r\n\r\n checkMaxOptionsVal(event: any, control: any) {\r\n const activeOptionsCount = this.options.controls.filter(opt => opt.get('isActive')?.value !== false).length;\r\n let val = Number(event.target.value);\r\n if (val > activeOptionsCount) {\r\n event.target.value = activeOptionsCount;\r\n control?.setValue(activeOptionsCount, { emitEvent: false });\r\n }\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n addEditChildQuestion(childQuestion?: AssessmentQuestion, index?: number, groupId?: string) {\r\n // Save current parent state\r\n const formValue = deepClone(this.questionsFormGroup.value);\r\n const totalMarks = Number(formValue.totalMarks) || 0;\r\n const showWeightage = this.showField('options', 'showWeightage');\r\n\r\n if (showWeightage && totalMarks > 0 && formValue.options?.length) {\r\n formValue.options.forEach((opt: any) => {\r\n if (opt.weight !== undefined && opt.weight !== null) {\r\n opt.weight = parseFloat(((Number(opt.weight) / totalMarks) * 100).toFixed(2));\r\n }\r\n });\r\n }\r\n\r\n const questionData = this.assessmentBuilderService.setQuestionDTO(formValue, this.questionDetails);\r\n\r\n this.questionStack.push({\r\n parentFormValue: { ...questionData, childQuestions: this.questionsFormGroup.get('childQuestions')?.value },\r\n editingQuestionIndex: index,\r\n addingToGroupId: groupId\r\n });\r\n\r\n // Reset form for child\r\n this.questionsFormGroup.reset({\r\n questionType: '',\r\n questionText: '',\r\n isMandatory: false,\r\n // visibility: true,\r\n totalMarks: null,\r\n minCharacterCount: null,\r\n maxCharacterCount: null,\r\n maximumNumberOfOption: null,\r\n minimumNumberOfOption: null,\r\n maxFileSize: null,\r\n maxNoOfFiles: null,\r\n customRegex: '',\r\n hintText: '',\r\n questionMedia: '',\r\n childQuestions: [],\r\n skillCodes: []\r\n });\r\n const optionsControl = this.questionsFormGroup.get('options') as FormArray;\r\n while (optionsControl.length !== 0) {\r\n optionsControl.removeAt(0);\r\n }\r\n\r\n this.applyDynamicValidators();\r\n if (childQuestion) {\r\n this.populateForm(childQuestion);\r\n }\r\n this.scrollToTop();\r\n }\r\n\r\n deleteChildQuestion(index: number, event: Event) {\r\n event.stopPropagation();\r\n const deletedChild = this.questionsFormGroup.get('childQuestions')?.value[index];\r\n\r\n this.options.controls.forEach(opt => {\r\n let childList = [...(opt.get('childQuestionList')?.value || [])];\r\n childList = childList.filter((id: string | number) => id !== deletedChild.id);\r\n opt.get('childQuestionList')?.setValue(childList);\r\n });\r\n\r\n this.questionsFormGroup.get('childQuestions')?.value.splice(index, 1);\r\n\r\n this.childQuestionGroups.forEach(g => {\r\n g.questionIds = g.questionIds.filter(qid => qid !== deletedChild.id);\r\n });\r\n this.childQuestionGroups = this.childQuestionGroups.filter(g => g.questionIds.length > 0);\r\n }\r\n\r\n getOptionId(opt: any): string | number {\r\n return opt.get('id')?.value ? opt.get('id')?.value : opt.get('uuid')?.value;\r\n }\r\n\r\n getChildQuestionById(id: string | number): AssessmentQuestion | undefined {\r\n return this.questionsFormGroup.get('childQuestions')?.value?.find((q: AssessmentQuestion) => q.id === id);\r\n }\r\n\r\n getChildQuestionIndex(id: number | undefined): number {\r\n return this.questionsFormGroup.get('childQuestions')?.value?.findIndex((q: AssessmentQuestion) => q.id === id);\r\n }\r\n\r\n deleteChildQuestionById(id: number | undefined, event: Event) {\r\n event.stopPropagation();\r\n const index = this.getChildQuestionIndex(id);\r\n if (index > -1) {\r\n this.deleteChildQuestion(index, event);\r\n }\r\n }\r\n\r\n buildChildQuestionGroups(childQuestions: AssessmentQuestion[]) {\r\n this.childQuestionGroups = [];\r\n const processedQuestionIds = new Set();\r\n\r\n this.options.controls.forEach(opt => {\r\n const optionId = this.getOptionId(opt);\r\n const childList = opt.get('childQuestionList')?.value || [];\r\n\r\n if (childList.length > 0) {\r\n this.childQuestionGroups.push({\r\n id: generateUuid(),\r\n optionId: optionId,\r\n questionIds: [...childList]\r\n });\r\n childList.forEach((id: any) => processedQuestionIds.add(id));\r\n }\r\n });\r\n\r\n childQuestions.forEach(cq => {\r\n if (cq.id && !processedQuestionIds.has(cq.id)) {\r\n this.childQuestionGroups.push({\r\n id: generateUuid(),\r\n optionId: null,\r\n questionIds: [cq.id]\r\n });\r\n }\r\n });\r\n }\r\n\r\n onGroupOptionChange(groupId: string, newOptionId: string | number | null) {\r\n const groupIndex = this.childQuestionGroups.findIndex(g => g.id === groupId);\r\n if (groupIndex === -1) return;\r\n const group = this.childQuestionGroups[groupIndex];\r\n\r\n const oldOptionId = group.optionId;\r\n\r\n if (oldOptionId) {\r\n const oldOpt = this.options.controls.find(opt => this.getOptionId(opt) === oldOptionId);\r\n if (oldOpt) {\r\n let childList = [...(oldOpt.get('childQuestionList')?.value || [])];\r\n childList = childList.filter(id => !group.questionIds.includes(id as any));\r\n oldOpt.get('childQuestionList')?.setValue(childList);\r\n }\r\n }\r\n\r\n const existingGroup = this.childQuestionGroups.find(g => g.id !== groupId && g.optionId === newOptionId);\r\n\r\n if (existingGroup && newOptionId) {\r\n existingGroup.questionIds.push(...group.questionIds);\r\n this.childQuestionGroups.splice(groupIndex, 1);\r\n } else {\r\n group.optionId = newOptionId;\r\n }\r\n\r\n if (newOptionId) {\r\n const newOpt = this.options.controls.find(opt => this.getOptionId(opt) === newOptionId);\r\n if (newOpt) {\r\n let childList = [...(newOpt.get('childQuestionList')?.value || [])];\r\n const set = new Set([...childList, ...group.questionIds]);\r\n newOpt.get('childQuestionList')?.setValue(Array.from(set));\r\n }\r\n }\r\n }\r\n\r\n goBack() {\r\n if (this.questionStack.length === 0) {\r\n this.dialogRef.close();\r\n return;\r\n }\r\n const state = this.questionStack.pop();\r\n\r\n this.resetAndPopulate(state?.parentFormValue);\r\n this.scrollToTop();\r\n }\r\n\r\n private resetAndPopulate(parentValue: any) {\r\n this.questionsFormGroup.reset();\r\n\r\n const optionsControl = this.questionsFormGroup.get('options') as FormArray;\r\n while (optionsControl.length !== 0) {\r\n optionsControl.removeAt(0);\r\n }\r\n\r\n this.populateForm(parentValue);\r\n }\r\n\r\n private scrollToTop() {\r\n if (this.scrollContainer && this.scrollContainer.nativeElement) {\r\n setTimeout(() => {\r\n this.scrollContainer.nativeElement.scrollTop = 0;\r\n }, 0);\r\n }\r\n }\r\n\r\n trackByCode(index: number, item: any) {\r\n return item?.code != null ? 'c' + item.code : 'i' + index;\r\n }\r\n\r\n trackByControl(index: number, control: any) {\r\n return control;\r\n }\r\n\r\n trackByGroupId(index: number, group: any) {\r\n return group?.id != null ? 'g' + group.id : 'i' + index;\r\n }\r\n\r\n trackByQuestionId(index: number, id: any) {\r\n return id != null ? 'q' + id : 'i' + index;\r\n }\r\n}\r\n","<div class=\"d-flex vh-100 position-relative overflow-hidden\">\n <div *ngIf=\"questionStack.length > 0 || isChild\"\n class=\"p-3 px-2 col-auto assessment-bg-palette-C8DAF9 flex-column align-items-center justify-content-end d-md-flex d-none\">\n <p class=\"m-0 assessment-text-semibold-18 vertical-text\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTION']}}\n </p>\n </div>\n <div class=\"flex-grow-1 h-100 d-flex flex-column position-relative\">\n <header\n class=\"p-3 d-flex align-items-center justify-content-between position-sticky top-0 col-12 border-bottom\">\n <p *ngIf=\"questionStack.length == 0\" class=\"mb-0 assessment-text-semibold-18 d-md-inline d-none\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.INPUT_FIELD_SETTINGS']}}\n </p>\n <button *ngIf=\"questionStack.length > 0\" (click)=\"goBack()\"\n class=\"d-flex align-items-center gap-2 assessment-text-grey-ten border-0 outline-0 assessment-text-medium-14 bg-transparent\">\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.GO_BACK']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/go-back.svg')\" />\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.GO_BACK']}}\n </button>\n <div class=\"d-flex align-items-center justify-content-md-end justify-content-between gap-3 flex-grow-1\">\n <button (click)=\"onSubmit()\" [disabled]=\"isSubmitting\"\n class=\"assessment-btn-primary assessment-button-padding assessment-text-medium-13 assessment-zoom-animation assessment-button-padding position-relative\">\n <span [ngClass]=\"{'opacity-0': isSubmitting}\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SAVE_QUESTION']}}\n </span>\n <mat-spinner *ngIf=\"isSubmitting\" [diameter]=\"20\"\n class=\"position-absolute top-50 start-50 translate-middle assessment-spinner-white\"></mat-spinner>\n </button>\n <img class=\"d-md-none\" *ngIf=\"questionStack.length == 0\" mat-dialog-close\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\n </div>\n </header>\n <div #scrollContainer class=\"col-12 py-4 px-md-4 px-3 flex-grow-1 overflow-y-auto form-container\"\n [formGroup]=\"questionsFormGroup\">\n <div class=\"pb-4 col-12\">\n <label\n class=\"mb-2 assessment-text-medium-16 assessment-text-grey-ten col-12\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.TYPE']}}</label>\n <mat-select formControlName=\"questionType\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.SELECT_QUESTION_TYPE']\"\n class=\"assessment-mat-select col-12 assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n <mat-option class=\"assessment-text-medium-13\" *ngFor=\"let type of questionTypes; trackBy: trackByCode\"\n [value]=\"type?.code\">\n {{type?.label}}\n </mat-option>\n </mat-select>\n <div\n *ngIf=\"questionsFormGroup.get('questionType')?.errors && questionsFormGroup.get('questionType')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n <div class=\"pb-4 col-12\">\n <label class=\"mb-2 assessment-text-medium-16 assessment-text-grey-ten\">Question</label>\n <app-text-editor [preText]=\"questionsFormGroup?.get('questionText')?.value\"\n (inputChange)=\"questionsFormGroup?.get('questionText')?.patchValue($event)\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_QUESTION']\"\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\n [height]=\"'8rem'\">\n </app-text-editor>\n <div\n *ngIf=\"questionsFormGroup.get('questionText')?.errors && questionsFormGroup.get('questionText')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div class=\"col-12 position-relative mt-3\" *ngIf=\"showField('questionMedia')\">\n <input formControlName=\"questionMedia\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_QUESTION_MEDIA']\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('questionMedia')?.invalid && questionsFormGroup.get('questionMedia')?.touched}\">\n <div\n *ngIf=\"questionsFormGroup.get('questionMedia')?.hasError('pattern') && questionsFormGroup.get('questionMedia')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger mt-1\">\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.INVALID_URL']}}\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('questionMedia')?.hasError('required') && questionsFormGroup.get('questionMedia')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger mt-1\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n </div>\n <div class=\"row mx-0 col-12 pb-4\" *ngIf=\"showField('minCharacterCount') || showField('maxCharacterCount')\">\n <div class=\"col-6 ps-0\" *ngIf=\"showField('minCharacterCount')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MIN_CHARACTER_LIMIT']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"minCharacterCount\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\n (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('minCharacterCount')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('minCharacterCount')?.invalid && questionsFormGroup.get('minCharacterCount')?.touched}\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHARACTERS']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('minCharacterCount')?.hasError('required') && questionsFormGroup.get('minCharacterCount')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('minCharacterCount')?.hasError('min') && questionsFormGroup.get('minCharacterCount')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO']}}</div>\n </div>\n <div class=\"col-6 pe-0\" *ngIf=\"showField('maxCharacterCount')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_CHARACTER_LIMIT']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"maxCharacterCount\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\n (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('maxCharacterCount')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('maxCharacterCount')?.invalid && questionsFormGroup.get('maxCharacterCount')?.touched}\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHARACTERS']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('maxCharacterCount')?.hasError('required') && questionsFormGroup.get('maxCharacterCount')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maxCharacterCount')?.hasError('min') && questionsFormGroup.get('maxCharacterCount')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maxCharacterCount')?.hasError('lessThanOrEqualMin') && questionsFormGroup.get('maxCharacterCount')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_LIMIT_GREATER']}}</div>\n </div>\n </div>\n <div class=\"row mx-0 col-12 pb-4\" *ngIf=\"showField('maxFileSize') || showField('maxNoOfFiles')\">\n <div class=\"col-6 ps-0\" *ngIf=\"showField('maxFileSize')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_FILE_SIZE']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"maxFileSize\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\n (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('maxFileSize')?.markAsTouched()\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('maxFileSize')?.invalid && questionsFormGroup.get('maxFileSize')?.touched}\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MB']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('maxFileSize')?.hasError('required') && questionsFormGroup.get('maxFileSize')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maxFileSize')?.hasError('min') && questionsFormGroup.get('maxFileSize')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO']}}</div>\n </div>\n <div class=\"col-6 pe-0\" *ngIf=\"showField('maxNoOfFiles')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_NO_OF_FILES']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"maxNoOfFiles\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\n (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('maxNoOfFiles')?.markAsTouched()\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('maxNoOfFiles')?.invalid && questionsFormGroup.get('maxNoOfFiles')?.touched}\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.FILES']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('maxNoOfFiles')?.hasError('required') && questionsFormGroup.get('maxNoOfFiles')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maxNoOfFiles')?.hasError('min') && questionsFormGroup.get('maxNoOfFiles')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO']}}</div>\n </div>\n </div>\n <div class=\"pb-4 col-12\" *ngIf=\"showField('customRegex')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CUSTOM_REGEX']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"customRegex\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_CUSTOM_REGEX']\"\n (blur)=\"questionsFormGroup.get('customRegex')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('customRegex')?.errors && questionsFormGroup.get('customRegex')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n <div class=\"pb-4 col-12\" *ngIf=\"showField('totalMarks') && !isChild && questionStack.length == 0\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.TOTAL_MARKS']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"totalMarks\" placeholder=\"0\" (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('totalMarks')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('totalMarks')?.errors && questionsFormGroup.get('totalMarks')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n\n <div class=\"row mx-0 col-12 pb-4\"\n *ngIf=\"showField('minimumNumberOfOption') || showField('maximumNumberOfOption')\">\n <div class=\"col-6 ps-0\" *ngIf=\"showField('minimumNumberOfOption')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MIN_OPTION_SELECT_LIMIT']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"minimumNumberOfOption\" placeholder=\"0\"\n (input)=\"allowOnlyNumbers($event)\"\n (blur)=\"questionsFormGroup.get('minimumNumberOfOption')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('minimumNumberOfOption')?.invalid && questionsFormGroup.get('minimumNumberOfOption')?.touched}\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.OPTIONS']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('minimumNumberOfOption')?.hasError('required') && questionsFormGroup.get('minimumNumberOfOption')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('minimumNumberOfOption')?.hasError('min') && questionsFormGroup.get('minimumNumberOfOption')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO'] || 'Limit cannot be 0'}}</div>\n </div>\n <div class=\"col-6 pe-0\" *ngIf=\"showField('maximumNumberOfOption')\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_OPTION_SELECT_LIMIT']}}</label>\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\n <input formControlName=\"maximumNumberOfOption\" [placeholder]=\"options.length || 0\"\n (input)=\"allowOnlyNumbers($event); checkMaxOptionsVal($event, questionsFormGroup.get('maximumNumberOfOption'))\"\n (blur)=\"questionsFormGroup.get('maximumNumberOfOption')?.markAsTouched()\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('maximumNumberOfOption')?.invalid && questionsFormGroup.get('maximumNumberOfOption')?.touched}\">\n <span\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.OPTIONS']}}</span>\n </div>\n <div\n *ngIf=\"questionsFormGroup.get('maximumNumberOfOption')?.hasError('required') && questionsFormGroup.get('maximumNumberOfOption')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maximumNumberOfOption')?.hasError('min') && questionsFormGroup.get('maximumNumberOfOption')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.CANNOT_BE_ZERO'] || 'Limit cannot be 0'}}</div>\n <div\n *ngIf=\"questionsFormGroup.get('maximumNumberOfOption')?.hasError('lessThanOrEqualMin') && questionsFormGroup.get('maximumNumberOfOption')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_LIMIT_GREATER'] || 'Max limit should be greater than min limit'}}</div>\n </div>\n </div>\n\n <div class=\"pb-4 col-12 mt-md-3\" *ngIf=\"showField('options')\">\n <div formArrayName=\"options\">\n <ng-container *ngFor=\"let option of options.controls; let i = index; trackBy: trackByControl\">\n <div [formGroupName]=\"i\" *ngIf=\"option.get('isActive')?.value !== false\"\n class=\"py-md-0 py-3 border-bottom border-md-0 col-12 d-flex flex-wrap flex-md-nowrap align-items-md-start align-items-center justify-content-between gap-md-4 gap-3\">\n\n <div class=\"col-12 col-md flex-md-grow-1 d-flex flex-column justify-content-center mt-md-3\"\n [class.pt-md-3]=\"i == 0\">\n <div class=\"col-12 d-flex align-items-center justify-content-between gap-3\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-2\">\n <div class=\"rounded-circle p-2 border-grey-ten-2 mt-1\"></div>\n <input formControlName=\"optionLabel\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_OPTION']\"\n class=\"flex-grow-1 assessment-text-medium-13 border-0 outline-0 bg-transparent input-focus py-1\">\n </div>\n <img class=\"cursor-pointer d-md-none\"\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\" (click)=\"removeOption(i)\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\n </div>\n <div\n *ngIf=\"option.get('optionLabel')?.invalid && option.get('optionLabel')?.touched\"\n class=\"assessment-text-regular-12 mt-1\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n\n <div *ngIf=\"showField('options', 'showWeightage') && !isChild && questionStack.length == 0\"\n class=\"col-auto\">\n <p class=\"assessment-text-medium-12 assessment-text-grey-six mb-2 mb-md-3\"\n [ngClass]=\"{'hidden-label': i > 0}\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.WEIGHTAGE']}}\n </p>\n <input type=\"number\" (input)=\"checkMaxVal($event, option.get('weight'))\"\n formControlName=\"weight\" (wheel)=\"$event.preventDefault()\"\n class=\"p-2 py-md-1 assessment-border-radius-two assessment-input-border-one outline-0 assessment-text-regular-12 assessment-marks-input assessment-bg-grey-one\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.LABEL.WEIGHTAGE']\">\n </div>\n\n <div *ngIf=\"showField('options', 'showRemarks') && !isChild && questionStack.length == 0\" class=\"col-auto\">\n <p class=\"assessment-text-medium-12 assessment-text-grey-six mb-2 mb-md-3 pb-md-1\"\n [ngClass]=\"{'hidden-label': i > 0}\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.REMARKS']}}\n </p>\n <div class=\"form-check form-switch\">\n <input type=\"checkbox\" class=\"form-check-input cursor-pointer\"\n name=\"remarksRequired\" formControlName=\"remarksRequired\">\n </div>\n </div>\n\n <div class=\"d-none d-md-block pt-3\" [class.custom-margin]=\"i == 0\">\n <img class=\"cursor-pointer\" [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\"\n (click)=\"removeOption(i)\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\n </div>\n\n </div>\n </ng-container>\n </div>\n\n <button type=\"button\" (click)=\"addOption()\"\n class=\"assessment-border-radius-two d-flex align-items-center gap-2 bg-transparent assessment-text-primary-one assessment-text-medium-12 border-0 assessment-zoom-animation mt-4\">\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_OPTION']}}\n </button>\n <div\n *ngIf=\"questionsFormGroup.get('options')?.errors && questionsFormGroup.get('options')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n <div class=\"py-4 col-12 border-top\"\n *ngIf=\"showField('childQuestions') && questionStack.length == 0 && !isChild\">\n <div class=\"d-flex align-items-center justify-content-between mb-2\">\n <label\n class=\"assessment-text-medium-16 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS']}}</label>\n <img matTooltip=\"{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS_INFO']}}\"\n matTooltipPosition=\"above\" matTooltipClass=\"assessment-tooltip\"\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.INFO']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/info.svg')\" />\n </div>\n\n <div *ngFor=\"let group of childQuestionGroups; let groupIndex = index; trackBy: trackByGroupId\"\n class=\"col-12 p-3 my-3 assessment-bg-grey-one assessment-border-radius-three assessment-input-border-one\">\n <div class=\"col-12 mb-3\" *ngIf=\"options.length > 0\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.ASSIGNED_OPTION']}}</label>\n <mat-select [value]=\"group.optionId\"\n (selectionChange)=\"onGroupOptionChange(group.id, $event.value)\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.SELECT_OPTION_TO_LINK']\"\n class=\"col-12 assessment-mat-select assessment-border-radius-two assessment-bg-white outline-0 assessment-input-border-one assessment-text-medium-13\">\n <mat-option class=\"assessment-text-medium-13\" [value]=\"null\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.NONE']}}\n </mat-option>\n <ng-container *ngFor=\"let opt of options.controls; let opIndex = index; trackBy: trackByControl\">\n <mat-option *ngIf=\"opt.get('isActive')?.value !== false\"\n class=\"assessment-text-medium-13\" [value]=\"getOptionId(opt)\">\n {{ opt.get('optionLabel')?.value || ('Option ' + (opIndex + 1)) }}\n </mat-option>\n </ng-container>\n </mat-select>\n </div>\n\n <ng-container *ngFor=\"let questionId of group.questionIds; let i = index; trackBy: trackByQuestionId\">\n <ng-container *ngIf=\"getChildQuestionById(questionId) as child\">\n <div class=\"d-flex align-items-center justify-content-between mb-1 mt-3\">\n <div class=\"d-flex align-items-center gap-2\">\n <p class=\"mb-0 assessment-text-medium-14\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTION']}} {{i + 1}}</p>\n </div>\n <div class=\"d-flex align-items-center gap-2\">\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\n class=\"action-icon cursor-pointer\"\n (click)=\"deleteChildQuestionById(child.id, $event)\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/delete.svg')\" />\n </div>\n </div>\n <div [innerHTML]=\"child?.questionText?.[0]?.text\"\n (click)=\"addEditChildQuestion(child, getChildQuestionIndex(child.id))\"\n class=\"col-12 assessment-button-padding assessment-border-radius-two assessment-bg-white assessment-input-border-one assessment-text-medium-12 cursor-pointer\">\n </div>\n </ng-container>\n </ng-container>\n\n <button (click)=\"addEditChildQuestion(undefined, undefined, group.id)\"\n class=\"assessment-zoom-animation border-0 d-flex align-items-center justify-content-center gap-2 assessment-text-primary-one bg-transparent assessment-text-semibold-12 outline-0 mt-3\">\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_MORE']}}\n </button>\n </div>\n\n <button (click)=\"addEditChildQuestion()\"\n class=\"assessment-zoom-animation assessment-button-padding d-flex align-items-center justify-content-center gap-3 assessment-text-primary-one assessment-bg-palette-EDF3FD assessment-text-semibold-12 outline-0 col-12 assessment-border-radius-two mt-3 border-ADC9F6\">\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_CHILD_QUESTION']}}\n </button>\n </div>\n <div class=\"py-4 col-12 border-top\" *ngIf=\"showField('hintText')\">\n <label\n class=\"mb-2 assessment-text-medium-16 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_HINT']}}</label>\n <app-text-editor [preText]=\"questionsFormGroup?.get('hintText')?.value\"\n (inputChange)=\"questionsFormGroup?.get('hintText')?.patchValue($event)\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_HINT']\"\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\n [height]=\"'8rem'\">\n </app-text-editor>\n <div\n *ngIf=\"questionsFormGroup.get('hintText')?.errors && questionsFormGroup.get('hintText')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n <div class=\"py-4 col-12 border-top\">\n <label class=\"mb-2 assessment-text-semibold-18 assessment-text-grey-ten col-12\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.FIELDS_SETTINGS']}}</label>\n <div class=\"my-3 d-flex align-items-center justify-content-between gap-2\">\n <div>\n <p class=\"mb-0 assessment-text-medium-13 assessment-text-grey-ten\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY']}}</p>\n <p class=\"mb-0 assessment-text-regular-11 assessment-text-grey-eight\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY_DESC']}}</p>\n </div>\n <div class=\"form-check form-switch\">\n <input type=\"checkbox\" class=\"form-check-input cursor-pointer\" name=\"isMandatory\"\n formControlName=\"isMandatory\">\n </div>\n </div>\n\n <div class=\"my-3 d-flex align-items-center justify-content-between gap-2\"\n *ngIf=\"showField('isFilterEnabled')\">\n <div>\n <p class=\"mb-0 assessment-text-medium-13 assessment-text-grey-ten\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.FILTER_ENABLED']}}</p>\n <p class=\"mb-0 assessment-text-regular-11 assessment-text-grey-eight\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.FILTER_ENABLED_DESC']}}</p>\n </div>\n <div class=\"form-check form-switch\">\n <input type=\"checkbox\" class=\"form-check-input cursor-pointer\" name=\"isFilterEnabled\"\n formControlName=\"isFilterEnabled\">\n </div>\n </div>\n\n <div class=\"my-3 col-12\"\n *ngIf=\"showField('isFilterEnabled') && questionsFormGroup.get('isFilterEnabled')?.value\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTION_NAME']}}</label>\n <input formControlName=\"questionSubText\"\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.QUESTION_NAME']\"\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\n [ngClass]=\"{'assessment-input-border-invalid': questionsFormGroup.get('questionSubText')?.invalid && questionsFormGroup.get('questionSubText')?.touched}\">\n <div\n *ngIf=\"questionsFormGroup.get('questionSubText')?.invalid && questionsFormGroup.get('questionSubText')?.touched\"\n class=\"assessment-text-regular-12 assessment-text-danger mt-1\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</div>\n </div>\n\n <div class=\"my-3 col-12\" *ngIf=\"!isChild && questionStack.length == 0 && (skillsList?.length ?? 0) > 0\">\n <label\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAP_SKILLS']}}</label>\n <mat-select formControlName=\"skillCodes\" multiple\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.SELECT_SKILLS']\"\n panelClass=\"assessment-checkboxes\"\n class=\"col-12 assessment-mat-select assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\n <mat-option class=\"assessment-text-medium-13\" *ngFor=\"let skill of skillsList; trackBy: trackByCode\"\n [value]=\"skill?.code\">{{skill?.labels?.[0]?.text}}</mat-option>\n </mat-select>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { SectionQuestion } from '../../../../shared/interfaces/question-paper.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-details',\r\n templateUrl: './question-details.component.html',\r\n styleUrls: ['./question-details.component.scss']\r\n})\r\nexport class QuestionDetailsComponent implements AfterViewInit {\r\n @Input() sectionQuestion!: SectionQuestion;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() questionBank!: Record<number, AssessmentQuestion>;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() allowDelete: boolean = true;\r\n\r\n @Output() editQuestion = new EventEmitter<{ questionId: any, isChildQuestion: boolean }>();\r\n @Output() duplicateQuestion = new EventEmitter<SectionQuestion>();\r\n @Output() deleteParentQuestion = new EventEmitter<SectionQuestion>();\r\n @Output() deleteChildQuestion = new EventEmitter<{ option: any, childQuestionId: number }>();\r\n\r\n expanded = false;\r\n showToggle = false;\r\n @ViewChild('questionText') questionText!: ElementRef;\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => this.checkOverflow());\r\n }\r\n\r\n toggleText() {\r\n this.expanded = !this.expanded;\r\n\r\n if (!this.expanded) {\r\n setTimeout(() => this.checkOverflow());\r\n }\r\n }\r\n\r\n checkOverflow() {\r\n const el = this.questionText.nativeElement;\r\n this.showToggle = el.scrollHeight > el.clientHeight;\r\n }\r\n\r\n capitalizeFirst(text: string | undefined): string {\r\n if (!text) return '';\r\n return text.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n childQuestionPresent(question: AssessmentQuestion) {\r\n return question?.defaultOptionsList?.some(\r\n option => option?.childQuestionList && option.childQuestionList.length > 0\r\n );\r\n }\r\n\r\n trackByOptionId(index: number, option: any) {\r\n return option?.options?.id != null ? 'o' + option.options.id : 'i' + index;\r\n }\r\n\r\n trackByChildId(index: number, id: any) {\r\n return id != null ? 'c' + id : 'i' + index;\r\n }\r\n\r\n trackBySkillCode(index: number, skill: any) {\r\n return skill?.code != null ? 'k' + skill.code : 'i' + index;\r\n }\r\n}\r\n","<div class=\"d-flex align-items-center justify-content-between mb-3\">\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <span\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-FEF9F1 assessment-text-medium-12 border-palette-F9DAA6\">\r\n {{capitalizeFirst(question?.questionType?.labels?.[0]?.text)}}\r\n </span>\r\n <span *ngIf=\"question?.weight\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-EDF3FD assessment-text-medium-12 border-palette-C8DAF9\">\r\n {{question?.weight}} {{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}\r\n </span>\r\n <span *ngIf=\"question?.isMandatory\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-E8F7F0 assessment-text-medium-12 border-palette-B7E7CF\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY']}}\r\n </span>\r\n </div>\r\n <button [matMenuTriggerFor]=\"questionsMenu\" (click)=\"$event.stopPropagation()\" class=\"border-0 bg-transparent py-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ACTION_DOTS']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/action-dots.svg')\" />\r\n </button>\r\n <mat-menu #questionsMenu=\"matMenu\" class=\"mat-menu assessment-border-radius-two assessment-border-grey-four-1\">\r\n <button (click)=\"duplicateQuestion.emit(sectionQuestion)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DUPLICATE']}}\r\n </button>\r\n <button *ngIf=\"allowDelete\" (click)=\"deleteParentQuestion.emit(sectionQuestion)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12 assessment-text-danger\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DELETE']}}\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<div class=\"col-12\">\r\n <div #questionText class=\"assessment-text-medium-15 question-text cursor-pointer\" [class.collapsed]=\"!expanded\"\r\n (click)=\"$event.stopPropagation(); editQuestion.emit({questionId: sectionQuestion?.questionId, isChildQuestion: false})\"\r\n [innerHTML]=\"question?.questionText?.[0]?.text\">\r\n </div>\r\n\r\n <span *ngIf=\"showToggle\" class=\"assessment-text-semibold-15 assessment-text-primary-one cursor-pointer\"\r\n (click)=\"$event.stopPropagation(); expanded = !expanded\">\r\n {{ labelConfig[expanded ? 'COMMONS_ASSESSMENT.LABEL.READ_LESS' : 'COMMONS_ASSESSMENT.LABEL.READ_MORE'] }}\r\n </span>\r\n</div>\r\n\r\n<div *ngIf=\"(question?.skillCodes?.length ?? 0) > 0\" class=\"mt-3\">\r\n <p class=\"assessment-text-medium-13 assessment-text-grey-eight mb-1\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.SKILLS']}}</p>\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <span *ngFor=\"let skill of question?.skillCodes; trackBy: trackBySkillCode\"\r\n class=\"assessment-text-medium-12 assessment-text-grey-ten rounded-2 skill-chip px-3 py-1\">{{skill?.labels?.[0]?.text || skill?.name}}</span>\r\n </div>\r\n</div>\r\n\r\n<!-- Child Questions -->\r\n<ng-container *ngIf=\"question?.defaultOptionsList?.length\">\r\n <div class=\"mt-4 col-12\">\r\n <div *ngFor=\"let option of question?.defaultOptionsList | orderBy; trackBy: trackByOptionId\" class=\"my-3 d-flex align-items-start gap-2\">\r\n <div class=\"rounded-circle custom-padding border-grey-ten-2\"></div>\r\n <span class=\"assessment-text-medium-13\">{{option.options?.optionName?.[0]?.text}}</span>\r\n </div>\r\n </div>\r\n\r\n <mat-accordion *ngIf=\"childQuestionPresent(question)\">\r\n <mat-expansion-panel (click)=\"$event.stopPropagation()\"\r\n class=\"mt-4 col-12 border-0 overflow-hidden assessment-panel shadow-none bg-transparent\">\r\n <mat-expansion-panel-header class=\"p-0 bg-transparent pe-1 h-auto\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1 pe-2\">\r\n <span\r\n class=\"assessment-text-semibold-12 assessment-text-grey-eight\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS']}}</span>\r\n <div class=\"flex-grow-1 border-bottom\"></div>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngFor=\"let option of question?.defaultOptionsList | orderBy; trackBy: trackByOptionId\">\r\n <div *ngIf=\"option.childQuestionList?.length\" class=\"mt-3\">\r\n <p class=\"assessment-text-primary-one assessment-text-semibold-14 mb-0\">\r\n {{option.options?.optionName?.[0]?.text}}</p>\r\n <div class=\"position-relative overflow-hidden\">\r\n <div *ngFor=\"let childQuestionId of option.childQuestionList; trackBy: trackByChildId\"\r\n class=\"assessment-child-node position-relative mt-3 ms-md-4 ms-3\">\r\n <div *ngIf=\"questionBank[childQuestionId] as childQuestion\"\r\n class=\"d-flex align-items-start justify-content-between gap-3 ps-1\">\r\n <div (click)=\"$event.stopPropagation(); editQuestion.emit({questionId: childQuestionId, isChildQuestion: true})\"\r\n [innerHTML]=\"childQuestion?.questionText?.[0]?.text\"\r\n class=\"flex-grow-1 assessment-text-regular-13 question-text collapsed cursor-pointer\">\r\n </div>\r\n <span\r\n class=\"assessment-text-medium-12 assessment-text-grey-eight d-md-inline d-none text-nowrap\">\r\n {{capitalizeFirst(childQuestion?.questionType?.labels?.[0]?.text)}}\r\n </span>\r\n <!-- <img (click)=\"$event.stopPropagation(); deleteChildQuestion.emit({option: option, childQuestionId: childQuestionId})\"\r\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\r\n class=\"action-icon d-md-inline d-none cursor-pointer\" /> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n</ng-container>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { forkJoin } from 'rxjs';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AddEditSectionIntroductionComponent } from './components/add-edit-section-introduction/add-edit-section-introduction.component';\r\nimport { AssessmentBuilderComponent } from './components/assessment-builder/assessment-builder.component';\r\nimport { ConfirmationDialogComponent } from '../../shared/components/confirmation-dialog/confirmation-dialog.component';\r\nimport { QuestionType, Assessment, RefData, AssessmentContextDTO, AssessmentInstance, Config } from '../../shared/interfaces/assessment.interface';\r\nimport { AssessmentQuestionPaper, SectionQuestion, QuestionPaperSection } from '../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentQuestion } from '../../shared/interfaces/question.interface';\r\nimport { AssessmentBuilderService } from './services/assessment-builder.service';\r\nimport { AssessmentMakerService } from './services/assessment-maker.service';\r\nimport { sortByOrder } from '../../shared/utils';\r\n\r\n@Component({\r\n selector: 'lib-assessment-maker',\r\n templateUrl: './assessment-maker.component.html',\r\n styleUrls: ['./assessment-maker.component.scss']\r\n})\r\n\r\nexport class AssessmentMakerComponent implements OnInit {\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() questionTypes: QuestionType[] = [];\r\n @Input() showFooter: boolean = false;\r\n @Input() customRules?: any;\r\n @Input() assessmentId: number = 0;\r\n @Input() assessmentInstanceId: number = 0;\r\n @Input() defaultAssessmentDTO: Assessment = {};\r\n @Input() predefinedAssessmentInstance: AssessmentInstance = {};\r\n @Input() enableSkillsToQuestionMapping: boolean = false;\r\n @Input() assessmentContext!: AssessmentContextDTO;\r\n @Input() minimumRequiredSections: number = 0;\r\n @Input() checkForResponses: boolean = false;\r\n @Input() showProctoringToggle: boolean = false;\r\n @Input() showTimeInput: boolean = false;\r\n\r\n @Output() assessmentIdChange = new EventEmitter<number>();\r\n @Output() assessmentInstanceIdChange = new EventEmitter<number>();\r\n @Output() snackbarMessage = new EventEmitter<{ message: string, type: 'success' | 'error' | 'info' }>();\r\n\r\n showLoader: boolean = false;\r\n questionBank: Record<number, AssessmentQuestion> = {};\r\n assessmentQuestionPaperData: AssessmentQuestionPaper = { id: 0, questionPaperSectionList: [] };\r\n configsLoaded: boolean = false;\r\n rules: any;\r\n isSubmitting: boolean = false;\r\n skillsList: RefData[] = [];\r\n responseCount: number = 0;\r\n proctoringEnabled: boolean = false;\r\n durationMinutes: number | null = null;\r\n private readonly PROCTORING_CONFIG_KEY = 'assessment.config.is-proctoring-enabled';\r\n\r\n constructor(\r\n private assessmentMakerService: AssessmentMakerService,\r\n private assessmentBuilderService: AssessmentBuilderService,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.assessmentBuilderService.setDefaultAssessmentDTO(this.defaultAssessmentDTO);\r\n this.proctoringEnabled = this.readProctoringConfig(this.defaultAssessmentDTO);\r\n this.readDuration(this.assessmentContext?.assessmentInstanceDTO || this.predefinedAssessmentInstance);\r\n this.getConfigsFromJSON();\r\n\r\n if (this.assessmentContext) {\r\n this.assessmentInstanceId = this.assessmentContext?.assessmentInstanceDTO?.id || this.assessmentInstanceId;\r\n this.assessmentId = this.assessmentContext?.assessment?.id || this.assessmentId;\r\n }\r\n\r\n if (this.assessmentId) {\r\n this.showLoader = true;\r\n this.loadAssessmentData();\r\n }\r\n\r\n if (this.enableSkillsToQuestionMapping) {\r\n this.getSkillsList();\r\n }\r\n\r\n if (this.checkForResponses && this.assessmentInstanceId) {\r\n this.loadResponseCount();\r\n }\r\n }\r\n\r\n private loadResponseCount() {\r\n this.assessmentMakerService.getResponseCount(this.assessmentInstanceId).subscribe({\r\n next: (count: any) => this.responseCount = Number(count) || 0,\r\n error: () => this.responseCount = 0 // fail open: don't warn if the count can't be fetched\r\n });\r\n }\r\n\r\n /**\r\n * Runs `action`, but first warns the user if the assessment already has responses\r\n * (only when `checkForResponses` is enabled and the count is greater than 0).\r\n */\r\n private confirmResponsesWarning(action: () => void) {\r\n if (this.responseCount > 0) {\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n autoFocus: false,\r\n maxWidth: '95%',\r\n width: '32rem',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n message: this.labelConfig['COMMONS_ASSESSMENT.WARNING.RESPONSES_EXIST'],\r\n confirmLabel: this.labelConfig['COMMONS_ASSESSMENT.LABEL.PROCEED'],\r\n cancelLabel: this.labelConfig['COMMONS_ASSESSMENT.LABEL.CANCEL']\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe((confirmed: boolean) => {\r\n if (confirmed) {\r\n action();\r\n }\r\n });\r\n } else {\r\n action();\r\n }\r\n }\r\n\r\n getConfigsFromJSON() {\r\n forkJoin({\r\n labelConfig: this.assessmentMakerService.getConfigJSON('json/labelConfig'),\r\n imageConfig: this.assessmentMakerService.getConfigJSON('json/imageConfig'),\r\n rules: this.assessmentMakerService.getConfigJSON('json/question-builder-rules'),\r\n ...(!this.questionTypes?.length && {\r\n questionTypes: this.assessmentMakerService.getConfigJSON('json/questionTypes')\r\n })\r\n }).subscribe((res: any) => {\r\n this.labelConfig = Object.assign({}, res?.labelConfig, this.labelConfig);\r\n this.imageConfig = Object.assign({}, res?.imageConfig, this.imageConfig);\r\n if (res?.questionTypes) {\r\n this.questionTypes = res?.questionTypes;\r\n }\r\n // Merge customRules per questionType over default rules\r\n this.rules = { ...res?.rules };\r\n if (this.customRules) {\r\n Object.keys(this.customRules).forEach(qType => {\r\n if (!this.rules[qType]) {\r\n this.rules[qType] = { ...this.customRules[qType] };\r\n } else {\r\n this.rules[qType] = { ...this.rules[qType], ...this.customRules[qType] };\r\n }\r\n });\r\n }\r\n\r\n this.configsLoaded = true;\r\n })\r\n }\r\n\r\n loadAssessmentData() {\r\n if (this.assessmentContext) {\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(this.assessmentContext?.questionDTOMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(this.assessmentContext?.assessmentQuestionPaperDTO);\r\n this.proctoringEnabled = this.readProctoringConfig(this.assessmentContext?.assessment);\r\n this.readDuration(this.assessmentContext?.assessmentInstanceDTO);\r\n this.showLoader = false;\r\n } else {\r\n this.assessmentMakerService.getAssessmentContext({ assessmentIds: [this.assessmentId] }).subscribe({\r\n next: (res: any) => {\r\n this.assessmentContext = res?.[0];\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(this.assessmentContext?.questionDTOMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(this.assessmentContext?.assessmentQuestionPaperDTO);\r\n this.proctoringEnabled = this.readProctoringConfig(this.assessmentContext?.assessment);\r\n this.readDuration(this.assessmentContext?.assessmentInstanceDTO);\r\n this.showLoader = false;\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'GET' }\r\n }\r\n })\r\n }\r\n }\r\n\r\n generateQuestionBank() {\r\n let childQuestionIds: number[] = [];\r\n\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.forEach((section: any) => {\r\n section?.sectionQuestionsList?.forEach((q: any) => {\r\n if (this.questionBank?.[q?.questionId]?.defaultOptionsList?.length) {\r\n this.questionBank?.[q?.questionId]?.defaultOptionsList?.forEach((option: any) => {\r\n if (option?.childQuestionList?.length) {\r\n option?.childQuestionList?.forEach((ccq: any) => {\r\n childQuestionIds.push(ccq);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n // Remove duplicates and filter out ones we already have in the bank\r\n childQuestionIds = [...new Set(childQuestionIds)].filter(id => !this.questionBank[id]);\r\n\r\n if (childQuestionIds?.length > 0) {\r\n const params = { questionIds: childQuestionIds };\r\n this.assessmentMakerService.getQuestionsByIds(params).subscribe({\r\n next: (res: any) => {\r\n res?.forEach((question: any) => {\r\n this.questionBank[question.id] = question;\r\n });\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n throw { error, method: 'GET', payload: params }\r\n }\r\n })\r\n }\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n focusSectionInput(sectionIndex: number, event: Event) {\r\n event.stopPropagation();\r\n const input = document.getElementById(`sectionNameInput_${sectionIndex}`) as HTMLInputElement;\r\n if (input) {\r\n input.focus();\r\n }\r\n }\r\n\r\n dropSection(event: CdkDragDrop<any[]>) {\r\n if (this.assessmentQuestionPaperData.questionPaperSectionList) {\r\n moveItemInArray(\r\n this.assessmentQuestionPaperData.questionPaperSectionList,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n }\r\n\r\n dropQuestion(event: CdkDragDrop<any[]>) {\r\n moveItemInArray(\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n\r\n addInstruction(section: any) {\r\n const dialogRef = this.dialog.open(AddEditSectionIntroductionComponent, {\r\n autoFocus: false,\r\n maxWidth: '95%',\r\n width: '40rem',\r\n maxHeight: '100dvh',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n imageConfig: this.imageConfig,\r\n labelConfig: this.labelConfig,\r\n sectionDetails: section\r\n },\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result?.update) {\r\n if (!section.qpsDesc) section.qpsDesc = [];\r\n if (!section.qpsDesc[0]) section.qpsDesc[0] = { id: 0, language: { code: 'ENG' }, text: '' };\r\n section.qpsDesc[0].text = result?.description;\r\n section.mediaUrl = result?.mediaUrl || null;\r\n this.patchAssessmentAndQuestionPaper(this.labelConfig['COMMONS_ASSESSMENT.TOAST.SECTION_INSTRUCTIONS_UPDATED_SUCCESS']);\r\n }\r\n });\r\n }\r\n\r\n deleteChildQuestion(option: any, childIdToRemove: number | any) {\r\n this.confirmResponsesWarning(() => {\r\n if (option.childQuestionList) {\r\n const idToRemove = typeof childIdToRemove === 'object' ? childIdToRemove?.id : childIdToRemove;\r\n option.childQuestionList = option.childQuestionList.filter((ccq: any) => {\r\n const id = typeof ccq === 'object' ? ccq?.id : ccq;\r\n return id !== idToRemove;\r\n });\r\n }\r\n });\r\n }\r\n\r\n deleteParentQuestion(sectionQuestion: SectionQuestion) {\r\n this.confirmResponsesWarning(() => {\r\n sectionQuestion.isActive = false;\r\n this.patchAssessmentAndQuestionPaper(this.labelConfig['COMMONS_ASSESSMENT.TOAST.QUESTION_DELETED_SUCCESS']);\r\n });\r\n }\r\n\r\n deleteSection(section: QuestionPaperSection) {\r\n this.confirmResponsesWarning(() => {\r\n section.isActive = false;\r\n this.patchAssessmentAndQuestionPaper(this.labelConfig['COMMONS_ASSESSMENT.TOAST.SECTION_DELETED_SUCCESS']);\r\n });\r\n }\r\n\r\n createEditQuestion(sectionDetails?: any, sectionQuestionId?: number, isChild?: boolean): void {\r\n // Editing an existing question is gated by the responses warning; adding a new one is not.\r\n if (sectionQuestionId != null) {\r\n this.confirmResponsesWarning(() => this.openQuestionBuilder(sectionDetails, sectionQuestionId, isChild));\r\n } else {\r\n this.openQuestionBuilder(sectionDetails, sectionQuestionId, isChild);\r\n }\r\n }\r\n\r\n private openQuestionBuilder(sectionDetails?: any, sectionQuestionId?: number, isChild?: boolean): void {\r\n const questionDetails = this.getQuestionFromBank(sectionQuestionId);\r\n const dialogRef = this.dialog.open(AssessmentBuilderComponent, {\r\n autoFocus: false,\r\n position: { right: '0' },\r\n maxWidth: '100%',\r\n width: '55rem',\r\n height: '100vh',\r\n panelClass: ['assessment-dialog', 'assessment-dialog-slider-animation'],\r\n hasBackdrop: true,\r\n data: {\r\n labelConfig: this.labelConfig,\r\n imageConfig: this.imageConfig,\r\n questionTypes: this.questionTypes,\r\n rules: this.rules,\r\n questionBank: this.questionBank,\r\n isChild: isChild,\r\n questionDetails,\r\n sectionDetails,\r\n assessmentQuestionPaperData: this.assessmentQuestionPaperData,\r\n assessmentId: this.assessmentId,\r\n skillsList: this.skillsList,\r\n snackbarMessageEmitter: this.snackbarMessage\r\n },\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((res: any) => {\r\n if (res?.success) {\r\n if (res?.assessmentId) {\r\n if (!this.assessmentId) {\r\n this.assessmentId = res.assessmentId;\r\n this.assessmentIdChange.emit(this.assessmentId);\r\n }\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(res?.questionMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(res.questionPaper);\r\n } else {\r\n this.patchAssessmentAndQuestionPaper();\r\n }\r\n }\r\n });\r\n }\r\n\r\n duplicateSection(sectionId: number) {\r\n if (!this.assessmentQuestionPaperData?.id) return;\r\n this.assessmentMakerService.duplicateSection(this.assessmentQuestionPaperData.id, sectionId).subscribe({\r\n next: (res: any) => {\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(res?.questionMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n this.generateQuestionBank();\r\n this.patchAssessmentAndQuestionPaper();\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.SECTION_DUPLICATED_SUCCESS'], type: 'success' });\r\n },\r\n error: (error: any) => {\r\n this.showLoader = false;\r\n console.error(error);\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH' }\r\n }\r\n });\r\n }\r\n\r\n duplicateQuestion(section: QuestionPaperSection, sectionQuestion: SectionQuestion) {\r\n if (!sectionQuestion.id) return;\r\n this.assessmentMakerService.duplicateQuestion(section.id, sectionQuestion.id).subscribe({\r\n next: (res: any) => {\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(res?.questionMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n this.generateQuestionBank();\r\n this.patchAssessmentAndQuestionPaper();\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.QUESTION_DUPLICATED_SUCCESS'], type: 'success' });\r\n },\r\n error: (error: any) => {\r\n this.showLoader = false;\r\n console.error(error);\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH' }\r\n }\r\n });\r\n }\r\n\r\n private readProctoringConfig(assessment?: Assessment): boolean {\r\n return assessment?.assessmentConfigs?.find(c => c.configKey === this.PROCTORING_CONFIG_KEY)?.configValue === '1';\r\n }\r\n\r\n /** Initializes the minutes input from an existing instance's duration (seconds). */\r\n private readDuration(instance?: AssessmentInstance): void {\r\n const seconds = instance?.duration ?? 0;\r\n // keep fractional minutes (e.g. 30s -> 0.5) rather than rounding to whole minutes\r\n this.durationMinutes = seconds > 0 ? Math.round((seconds / 60) * 100) / 100 : null;\r\n }\r\n\r\n /** Blocks characters that would enter a negative/exponent value in the duration input. */\r\n blockNegativeKeys(event: KeyboardEvent): void {\r\n if (['-', '+', 'e', 'E'].includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n /** Duration to persist, in SECONDS (the unit the taker's timer uses). 0 means untimed. */\r\n private get durationSeconds(): number {\r\n return this.durationMinutes ? Math.round(this.durationMinutes * 60) : 0;\r\n }\r\n\r\n /**\r\n * Returns the assessment configs with the proctoring flag ('1'/'0') upserted, preserving\r\n * any other existing configs. Returns undefined when the proctoring toggle is not enabled\r\n * so the saved payload is unchanged for consumers not using proctoring.\r\n */\r\n private buildProctoringConfigs(): Config[] | undefined {\r\n if (!this.showProctoringToggle) {\r\n return undefined;\r\n }\r\n const base = this.assessmentContext?.assessment?.assessmentConfigs ?? this.defaultAssessmentDTO?.assessmentConfigs ?? [];\r\n const configs: Config[] = base.map(c => ({ ...c }));\r\n const value = this.proctoringEnabled ? '1' : '0';\r\n const existing = configs.find(c => c.configKey === this.PROCTORING_CONFIG_KEY);\r\n if (existing) {\r\n existing.configValue = value;\r\n } else {\r\n configs.push({ configKey: this.PROCTORING_CONFIG_KEY, configValue: value });\r\n }\r\n return configs;\r\n }\r\n\r\n patchAssessmentAndQuestionPaper(successMessage?: string) {\r\n const payload = {\r\n questionPaper: this.assessmentBuilderService.generateQuestionPaperDTO(this.assessmentQuestionPaperData, this.questionBank),\r\n assessment: this.assessmentBuilderService.generateAssessmentDTO(this.assessmentId, this.assessmentQuestionPaperData, this.buildProctoringConfigs()),\r\n ...this.assessmentBuilderService.buildInstancePatch(this.showTimeInput, this.assessmentInstanceId, this.durationSeconds)\r\n }\r\n this.assessmentMakerService.patchAssessmentAndQuestionPaper(payload).subscribe({\r\n next: (res: any) => {\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n this.generateQuestionBank();\r\n if (successMessage) {\r\n this.snackbarMessage.emit({ message: successMessage, type: 'success' });\r\n }\r\n },\r\n error: error => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload }\r\n }\r\n })\r\n }\r\n\r\n finalSubmit() {\r\n if (this.isSubmitting) return;\r\n this.isSubmitting = true;\r\n const payload = {\r\n questionPaper: this.assessmentBuilderService.generateQuestionPaperDTO(this.assessmentQuestionPaperData, this.questionBank),\r\n assessment: this.assessmentBuilderService.generateAssessmentDTO(this.assessmentId, this.assessmentQuestionPaperData, this.buildProctoringConfigs()),\r\n ...this.assessmentBuilderService.buildInstancePatch(this.showTimeInput, this.assessmentInstanceId, this.durationSeconds)\r\n }\r\n if ((payload?.questionPaper?.questionPaperSectionList?.length ?? 0) < this.minimumRequiredSections) {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.MINIMUM_REQUIRED_SECTIONS_ERROR']?.replace('$Count', String(this.minimumRequiredSections)), type: 'info' });\r\n this.isSubmitting = false;\r\n return;\r\n }\r\n if (!this.assessmentId) {\r\n // returns null or 0 as assessment is not created yet. Handle the response in consumer app\r\n this.isSubmitting = false;\r\n this.assessmentInstanceIdChange.emit(this.assessmentInstanceId);\r\n return;\r\n }\r\n this.assessmentMakerService.patchAssessmentAndQuestionPaper(payload).subscribe({\r\n next: (res: any) => {\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n if (!this.assessmentInstanceId) {\r\n this.createAssessmentInstance();\r\n } else {\r\n this.isSubmitting = false;\r\n this.assessmentInstanceIdChange.emit(this.assessmentInstanceId);\r\n }\r\n },\r\n error: error => {\r\n this.isSubmitting = false;\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload }\r\n }\r\n })\r\n }\r\n\r\n createAssessmentInstance() {\r\n const payload = this.assessmentBuilderService.generateAssessmentInstanceDTO(this.assessmentId, this.predefinedAssessmentInstance, this.showTimeInput ? this.durationSeconds : undefined);\r\n this.assessmentMakerService.createAssessmentInstance(payload).subscribe({\r\n next: (res: any) => {\r\n this.assessmentInstanceId = res;\r\n this.isSubmitting = false;\r\n this.assessmentInstanceIdChange.emit(res);\r\n // this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ASSESSMENT_PUBLISHED_SUCCESS'], type: 'success' });\r\n },\r\n error: error => {\r\n this.isSubmitting = false;\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'POST', payload }\r\n }\r\n })\r\n }\r\n\r\n discardChanges() {\r\n if (this.assessmentId) {\r\n this.showLoader = true;\r\n this.loadAssessmentData();\r\n } else {\r\n // Reset fully to empty if no assessment existed yet\r\n this.assessmentQuestionPaperData = { id: 0, questionPaperSectionList: [] };\r\n }\r\n }\r\n\r\n getQuestionFromBank(questionId?: number) {\r\n return this.questionBank?.[questionId || -1];\r\n }\r\n\r\n updateAssessmentQuestionPaperData(newData: any) {\r\n const expandedList = this.assessmentQuestionPaperData?.questionPaperSectionList\r\n ?.filter((s: any) => s.isExpanded)\r\n ?.map((s: any, idx: number) => s.id ? s.id.toString() : `${idx}_${s.qpsName?.[0]?.text}`);\r\n\r\n this.assessmentQuestionPaperData = newData || { id: 0, questionPaperSectionList: [] };\r\n this.filterInactiveSectionsAndQuestions();\r\n\r\n if (expandedList?.length) {\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.forEach((s: any, idx: number) => {\r\n const key = s.id ? s.id.toString() : `${idx}_${s.qpsName?.[0]?.text}`;\r\n if (expandedList.includes(key)) {\r\n s.isExpanded = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n filterInactiveSectionsAndQuestions() {\r\n this.assessmentQuestionPaperData.questionPaperSectionList = sortByOrder(\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.filter((section: any) => section.isActive !== false)\r\n );\r\n\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.forEach((section: any) => {\r\n section.sectionQuestionsList = sortByOrder(\r\n section.sectionQuestionsList?.filter((question: any) => question.isActive !== false)\r\n );\r\n });\r\n\r\n if (this.questionBank) {\r\n Object.keys(this.questionBank).forEach(key => {\r\n const question = this.questionBank[key as any];\r\n if (question?.defaultOptionsList) {\r\n question.defaultOptionsList = sortByOrder(\r\n question.defaultOptionsList.filter((opt: any) => opt.isActive !== false)\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n capitalizeFirst(text: string | undefined): string {\r\n if (!text) return '';\r\n return text.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');\r\n }\r\n\r\n getSkillsList() {\r\n const params = {\r\n fetchContextDataOnly: false,\r\n page: 0,\r\n size: 20,\r\n direction: 'ASC'\r\n }\r\n this.assessmentMakerService.getRefDataByCode('REF.ASSESSMENT_QUESTION_SKILL', params).subscribe({\r\n next: (res: any) => {\r\n this.skillsList = res?.elements;\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n throw { error, method: 'GET', payload: this.assessmentId }\r\n }\r\n })\r\n }\r\n\r\n trackBySectionId(index: number, section: any) {\r\n return section?.id != null ? 's' + section.id : 'i' + index;\r\n }\r\n\r\n trackBySectionQuestion(index: number, sq: any) {\r\n if (sq?.questionId != null) return 'q' + sq.questionId;\r\n if (sq?.id != null) return 's' + sq.id;\r\n return 'i' + index;\r\n }\r\n}\r\n","<div *ngIf=\"configsLoaded && !showLoader; else loader\" class=\"col-12 h-100\">\r\n <div class=\"col-12 h-100 py-4\" [class.height-without-footer]=\"showFooter\">\r\n <ng-container *ngIf=\"assessmentQuestionPaperData?.questionPaperSectionList?.length\">\r\n <div *ngIf=\"showProctoringToggle || showTimeInput\"\r\n class=\"d-flex align-items-center justify-content-end flex-wrap gap-4 mb-3\">\r\n <div *ngIf=\"showTimeInput\" class=\"d-flex align-items-center gap-2\">\r\n <label for=\"durationInput\" class=\"assessment-text-medium-13 assessment-text-grey-ten mb-0 cursor-pointer\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.LABEL.DURATION'] }}\r\n </label>\r\n <input type=\"number\" id=\"durationInput\" min=\"1\" [(ngModel)]=\"durationMinutes\"\r\n (keydown)=\"blockNegativeKeys($event)\" (ngModelChange)=\"durationMinutes = $event > 0 ? $event : null\"\r\n [placeholder]=\"0\"\r\n class=\"form-control form-control-sm assessment-border-radius-two assessment-text-regular-13\" style=\"width: 4rem;\">\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.LABEL.MINUTES'] }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"showProctoringToggle\" class=\"d-flex align-items-center gap-2\">\r\n <label for=\"proctoringToggle\" class=\"assessment-text-medium-13 assessment-text-grey-ten mb-0 cursor-pointer\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.LABEL.ENABLE_PROCTORING'] }}\r\n </label>\r\n <div class=\"form-check form-switch m-0\">\r\n <input type=\"checkbox\" id=\"proctoringToggle\" class=\"form-check-input cursor-pointer\"\r\n [(ngModel)]=\"proctoringEnabled\">\r\n </div>\r\n </div>\r\n </div>\r\n <mat-accordion multi=\"true\" cdkDropList (cdkDropListDropped)=\"dropSection($event)\">\r\n <mat-expansion-panel [hideToggle]=\"true\" #panel=\"matExpansionPanel\" [expanded]=\"section.isExpanded\"\r\n (opened)=\"section.isExpanded = true\" (closed)=\"section.isExpanded = false\"\r\n class=\"mb-4 border-0 overflow-hidden assessment-panel shadow-none bg-transparent\" cdkDrag\r\n *ngFor=\"let section of assessmentQuestionPaperData?.questionPaperSectionList; let sectionIndex = index; trackBy: trackBySectionId\">\r\n <!-- Section Header -->\r\n <mat-expansion-panel-header class=\"col-12 p-0 h-auto bg-transparent\">\r\n <div class=\"d-flex col-12 align-items-center gap-md-3 gap-2\">\r\n <img cdkDragHandle [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DRAG_DROP']\"\r\n class=\"cursor-grab\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/drag-drop.svg')\" />\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1 justify-content-between p-3 assessment-border-radius-two assessment-border-two assessment-bg-white\"\r\n [class.no-border]=\"section.isExpanded\">\r\n <div>\r\n <div class=\"d-flex align-items-center mb-1\">\r\n <input type=\"text\" [id]=\"'sectionNameInput_' + sectionIndex\"\r\n class=\"col-md-11 col-10 assessment-text-semibold-18 border-0 outline-0 bg-transparent p-0 input-focus\"\r\n [(ngModel)]=\"section.qpsName[0].text\"\r\n [attr.size]=\"(section.qpsName[0].text?.length || 1)\"\r\n (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.EDIT']\"\r\n class=\"action-icon cursor-pointer\"\r\n (click)=\"focusSectionInput(sectionIndex, $event)\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/pencil.svg')\" />\r\n </div>\r\n <p class=\"mb-0 assessment-text-medium-12 assessment-text-grey-seven\">\r\n {{section?.sectionQuestionsList?.length || 0}}\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTIONS']}}\r\n </p>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-md-4 gap-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ARROW_DOWN_BLACK']\"\r\n [ngClass]=\"panel.expanded ? 'change-direction' : 'change-direction-reverse'\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/arrow-down-black.svg')\" />\r\n <button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\"\r\n class=\"border-0 bg-transparent py-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ACTION_DOTS']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/action-dots.svg')\" />\r\n </button>\r\n <mat-menu #menu=\"matMenu\"\r\n class=\"mat-menu assessment-border-radius-two assessment-border-grey-four-1\">\r\n <button (click)=\"addInstruction(section)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_INSTRUCTIONS']}}\r\n </button>\r\n <button (click)=\"duplicateSection(section.id)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DUPLICATE']}}\r\n </button>\r\n <button *ngIf=\"(assessmentQuestionPaperData?.questionPaperSectionList?.length ?? 0) > minimumRequiredSections\" \r\n (click)=\"deleteSection(section)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12 assessment-text-danger\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DELETE']}}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Questions inside section -->\r\n <div cdkDropList [cdkDropListData]=\"section.sectionQuestionsList || []\"\r\n (cdkDropListDropped)=\"dropQuestion($event)\">\r\n <div cdkDrag *ngFor=\"let sectionQuestion of section.sectionQuestionsList; let i = index; trackBy: trackBySectionQuestion\"\r\n class=\"d-flex align-items-start gap-md-3 gap-2 my-3 overflow-hidden\">\r\n <img cdkDragHandle [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DRAG_DROP']\"\r\n class=\"cursor-grab mt-4\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/drag-drop.svg')\" />\r\n <div class=\"flex-grow-1 p-3 assessment-border-two assessment-border-radius-two question-container assessment-bg-white\">\r\n <lib-question-details [sectionQuestion]=\"sectionQuestion\"\r\n [question]=\"getQuestionFromBank(sectionQuestion.questionId) || {}\"\r\n [questionBank]=\"questionBank\" [imageConfig]=\"imageConfig\"\r\n [labelConfig]=\"labelConfig\" [allowDelete]=\"(section?.sectionQuestionsList?.length ?? 0) > 1\"\r\n (editQuestion)=\"createEditQuestion(section, $event?.questionId, $event?.isChildQuestion)\"\r\n (duplicateQuestion)=\"duplicateQuestion(section, $event)\"\r\n (deleteParentQuestion)=\"deleteParentQuestion($event)\"\r\n (deleteChildQuestion)=\"deleteChildQuestion($event.option, $event.childQuestionId)\">\r\n </lib-question-details>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 ps-4 border-bottom pb-4\">\r\n <button (click)=\"createEditQuestion(section)\"\r\n class=\"assessment-zoom-animation assessment-button-padding d-flex align-items-center justify-content-center gap-3 assessment-text-primary-one assessment-bg-palette-EDF3FD assessment-text-semibold-12 outline-0 assessment-border-radius-two mt-3 border-ADC9F6\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_A_QUESTION']}}\r\n </button>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n <button (click)=\"createEditQuestion()\"\r\n class=\"assessment-zoom-animation assessment-button-padding d-flex align-items-center justify-content-center gap-3 assessment-text-primary-one assessment-bg-palette-EDF3FD assessment-text-semibold-12 outline-0 assessment-border-radius-two mt-3 border-ADC9F6 ms-4\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ADD_SECTION']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/add-section.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_A_SECTION']}}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!assessmentQuestionPaperData?.questionPaperSectionList?.length\"\r\n class=\"h-100 d-flex flex-column align-items-center justify-content-center gap-3\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.NO_QUESTIONS']\" class=\"col-sm-auto col-6\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/no-questions.svg')\" />\r\n <div class=\"text-center\">\r\n <p class=\"mb-1 assessment-text-medium-18\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_CUSTOM_QUESTIONS']}}</p>\r\n <p class=\"mb-0 assessment-text-medium-12 assessment-text-grey-seven\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_QUESTION_DESC']}}</p>\r\n </div>\r\n <button (click)=\"createEditQuestion()\"\r\n class=\"assessment-button-padding assessment-border-radius-two d-flex align-items-center gap-2 assessment-bg-palette-EDF3FD assessment-text-primary-one assessment-text-semibold-12 border-0 assessment-zoom-animation\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_A_QUESTION']}}\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showFooter\"\r\n class=\"bg-white p-3 position-sticky bottom-0 d-flex align-items-center justify-content-end border-top gap-3\">\r\n <button (click)=\"discardChanges()\" [disabled]=\"isSubmitting\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary-transparent assessment-text-semibold-13\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.DISCARD']}}</button>\r\n <button (click)=\"finalSubmit()\" [disabled]=\"isSubmitting\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary assessment-text-semibold-13 position-relative\">\r\n <span [ngClass]=\"{'opacity-0': isSubmitting}\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.PUBLISH']}}\r\n </span>\r\n <mat-spinner *ngIf=\"isSubmitting\" [diameter]=\"20\"\r\n class=\"position-absolute top-50 start-50 translate-middle assessment-spinner-white\"></mat-spinner>\r\n </button>\r\n </div>\r\n</div>\r\n<ng-template #loader>\r\n <div class=\"h-100 col-12 d-flex align-items-center justify-content-center py-5\">\r\n <mat-spinner diameter=\"60\" class=\"assessment-spinner-primary\"></mat-spinner>\r\n </div>\r\n</ng-template>","import { NgModule } from '@angular/core';\r\nimport { AssessmentMakerComponent } from './assessment-maker.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MaterialModules } from '../../shared/material-modules';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { AddEditSectionIntroductionComponent } from './components/add-edit-section-introduction/add-edit-section-introduction.component';\r\nimport { AssessmentBuilderComponent } from './components/assessment-builder/assessment-builder.component';\r\nimport { QuestionDetailsComponent } from './components/question-details/question-details.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AssessmentMakerComponent,\r\n AddEditSectionIntroductionComponent,\r\n AssessmentBuilderComponent,\r\n QuestionDetailsComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n MaterialModules,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [\r\n AssessmentMakerComponent\r\n ]\r\n})\r\nexport class AssessmentMakerModule {}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AssessmentMakerService } from './modules/assessment-maker/services/assessment-maker.service';\r\nimport { AssessmentTakerService } from './modules/assessment-taker/services/assessment-taker.service';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class CommonsAssessmentModule {\r\n static forRoot(): ModuleWithProviders<CommonsAssessmentModule> {\r\n return {\r\n ngModule: CommonsAssessmentModule,\r\n providers: [\r\n AssessmentMakerService,\r\n AssessmentTakerService,\r\n ],\r\n };\r\n }\r\n}","/*\r\n * Public API Surface of assessment-maker\r\n */\r\n\r\nexport * from './lib/shared/interfaces/assessment.interface';\r\nexport * from './lib/shared/interfaces/question.interface';\r\nexport * from './lib/shared/interfaces/question-paper.interface';\r\n\r\nexport * from './lib/modules/assessment-taker/assessment-taker.module';\r\nexport * from './lib/modules/assessment-maker/assessment-maker.module';\r\nexport * from './lib/commons-assessment.module';\r\n\r\nexport * from './lib/modules/assessment-maker/assessment-maker.component';\r\nexport * from './lib/modules/assessment-taker/assessment-taker.component';\r\n\r\nexport * from './lib/shared/utils';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i0","MAT_DIALOG_DATA","i2","i1","i3","Component","Inject","HttpHeaders","HttpParams","controllers.assessmentTakerController","controllers.googleDriveController","Injectable","i4","Observable","EventEmitter","ViewChild","Input","Output","FormControl","i2.AssessmentTakerService","Optional","Self","i2.TextEditorComponent","Pipe","i3.OrderByPipe","DatePipe","forkJoin","of","tap","switchMap","catchError","throwError","map","Validators","i1.AssessmentTakerService","i3.ResponseBuilderService","i5","i6.ProctoringService","i7.ProctoringConsentComponent","i8","i9","i10","i11.QuestionTypeShortComponent","i12.QuestionTypeLongComponent","i13.QuestionTypeEditorComponent","i14.QuestionTypeObjectiveComponent","i15.QuestionTypeMultiselectComponent","i16.QuestionTypePreferenceComponent","i17.QuestionTypeFileUploadComponent","i18.QuestionTypeDatePickerComponent","i19","i20","i21.OrderByPipe","HostListener","MatProgressSpinnerModule","MatExpansionModule","MatSelectModule","DragDropModule","MatMenuModule","MatDialogModule","MatTooltipModule","MatTabsModule","OverlayModule","MatDatepickerModule","MatNativeDateModule","NgModule","CommonModule","FormsModule","ReactiveFormsModule","AngularEditorModule","controllers.assessmentMakerController","controllers.refDataController","i6","i7","i8.TextEditorComponent","i4.OrderByPipe","moveItemInArray","i1.AssessmentMakerService","i2.AssessmentBuilderService","i6.QuestionDetailsComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;;;;;;;;;;;;;EAagF;EAChF;EAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC,EAAA;MAC/B,aAAa,GAAG,MAAM,CAAC,cAAc;WAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAA,EAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;UAC5E,UAAU,CAAC,EAAE,CAAC,EAAA,EAAI,KAAK,IAAI,CAAC,IAAI,CAAC;cAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;kBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;EACtG,IAAA,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEc,SAAA,SAAS,CAAC,CAAC,EAAE,CAAC,EAAA;EAC5B,IAAA,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;EACrC,QAAA,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;EAC9F,IAAA,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MACpB,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;EACvC,IAAA,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;EACvF,CAAC;EAEM,IAAI,QAAQ,GAAG,YAAA;MACpB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAA;EAC3C,QAAA,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACjD,YAAA,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;cACjB,KAAK,IAAI,CAAC,IAAI,CAAC;kBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;sBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAChF,SAAA;EACD,QAAA,OAAO,CAAC,CAAC;EACb,KAAC,CAAA;MACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EACzC,CAAC,CAAA;EAEe,SAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA;MACzB,IAAI,CAAC,GAAG,EAAE,CAAC;MACX,KAAK,IAAI,CAAC,IAAI,CAAC;UAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;cAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;UAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;cACpE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1E,gBAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACzB,SAAA;EACL,IAAA,OAAO,CAAC,CAAC;EACX,CAAC;EAEK,SAAU,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAA;EACtD,IAAA,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;MAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;EAAE,QAAA,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;EAC1H,QAAA,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;EAAE,YAAA,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;EAAE,gBAAA,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;EAClJ,IAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EAChE,CAAC;EAEe,SAAA,OAAO,CAAC,UAAU,EAAE,SAAS,EAAA;EAC3C,IAAA,OAAO,UAAU,MAAM,EAAE,GAAG,EAAA,EAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;EACvE,CAAC;EAEe,SAAA,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAA;EACrG,IAAA,SAAS,MAAM,CAAC,CAAC,EAAA,EAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,UAAU;UAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;EACvH,IAAA,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;MACjG,IAAI,MAAM,GAAG,CAAC,YAAY,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;MACxF,IAAI,UAAU,GAAG,YAAY,KAAK,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;EACzG,IAAA,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;EACpB,IAAA,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;UAC7C,IAAI,OAAO,GAAG,EAAE,CAAC;UACjB,KAAK,IAAI,CAAC,IAAI,SAAS;EAAE,YAAA,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EACzE,QAAA,KAAK,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM;EAAE,YAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACxE,QAAA,OAAO,CAAC,cAAc,GAAG,UAAU,CAAC,EAAA,EAAI,IAAI,IAAI;cAAE,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;EAC9K,QAAA,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,UAAU,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;UAC/H,IAAI,IAAI,KAAK,UAAU,EAAE;cACrB,IAAI,MAAM,KAAK,KAAK,CAAC;kBAAE,SAAS;EAChC,YAAA,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;EAAE,gBAAA,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;EAC1F,YAAA,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;EAAE,gBAAA,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;EAC/C,YAAA,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;EAAE,gBAAA,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;EAC/C,YAAA,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;EAAE,gBAAA,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACxD,SAAA;EACI,aAAA,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE;cACzB,IAAI,IAAI,KAAK,OAAO;EAAE,gBAAA,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;EACzC,gBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC5B,SAAA;EACJ,KAAA;EACD,IAAA,IAAI,MAAM;UAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;MACtE,IAAI,GAAG,IAAI,CAAC;EACd,CAAC;EAAA,CAAC;WAEc,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAA;EAC5D,IAAA,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;EACpC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,QAAA,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC3F,KAAA;MACD,OAAO,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;EACnC,CAAC;EAAA,CAAC;EAEI,SAAU,SAAS,CAAC,CAAC,EAAA;EACzB,IAAA,OAAO,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAClD,CAAC;EAAA,CAAC;WAEc,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAA;MAC/C,IAAI,OAAO,IAAI,KAAK,QAAQ;UAAE,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EAC/F,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;EACvH,CAAC;EAAA,CAAC;EAEc,SAAA,UAAU,CAAC,WAAW,EAAE,aAAa,EAAA;MACnD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;UAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;EACjI,CAAC;EAEK,SAAU,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAA;EACzD,IAAA,SAAS,KAAK,CAAC,KAAK,EAAA,EAAI,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAA,EAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;EAC5G,IAAA,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAA;EACrD,QAAA,SAAS,SAAS,CAAC,KAAK,EAAA,EAAI,IAAI;cAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAAE,SAAA;EAAC,QAAA,OAAO,CAAC,EAAE;cAAE,MAAM,CAAC,CAAC,CAAC,CAAC;EAAE,SAAA,EAAE;EAC3F,QAAA,SAAS,QAAQ,CAAC,KAAK,EAAA,EAAI,IAAI;cAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EAAE,SAAA;EAAC,QAAA,OAAO,CAAC,EAAE;cAAE,MAAM,CAAC,CAAC,CAAC,CAAC;EAAE,SAAA,EAAE;EAC9F,QAAA,SAAS,IAAI,CAAC,MAAM,EAAA,EAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;EAC9G,QAAA,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EAC1E,KAAC,CAAC,CAAC;EACL,CAAC;EAEe,SAAA,WAAW,CAAC,OAAO,EAAE,IAAI,EAAA;EACvC,IAAA,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAA,EAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;cAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;MACjM,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAa,EAAA,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAC5J,SAAS,IAAI,CAAC,CAAC,EAAA,EAAI,OAAO,UAAU,CAAC,EAAI,EAAA,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;MAClE,SAAS,IAAI,CAAC,EAAE,EAAA;EACZ,QAAA,IAAI,CAAC;EAAE,YAAA,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;EAC9D,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;cAAE,IAAI;EAC1C,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;EAAE,oBAAA,OAAO,CAAC,CAAC;EAC7J,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;EAAE,oBAAA,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;EACxC,gBAAA,QAAQ,EAAE,CAAC,CAAC,CAAC;EACT,oBAAA,KAAK,CAAC,CAAC;EAAC,oBAAA,KAAK,CAAC;0BAAE,CAAC,GAAG,EAAE,CAAC;0BAAC,MAAM;EAC9B,oBAAA,KAAK,CAAC;0BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EAAC,wBAAA,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;EACxD,oBAAA,KAAK,CAAC;0BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;EAAC,wBAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAAC,wBAAA,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;0BAAC,SAAS;EACjD,oBAAA,KAAK,CAAC;EAAE,wBAAA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EAAC,wBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;0BAAC,SAAS;EACjD,oBAAA;EACI,wBAAA,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;8BAAE,CAAC,GAAG,CAAC,CAAC;8BAAC,SAAS;EAAE,yBAAA;EAC5G,wBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;8BAAC,MAAM;EAAE,yBAAA;EACtF,wBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;EAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;8BAAC,CAAC,GAAG,EAAE,CAAC;8BAAC,MAAM;EAAE,yBAAA;0BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;EAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAAC,4BAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;8BAAC,MAAM;EAAE,yBAAA;0BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;EAAE,4BAAA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EACtB,wBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;0BAAC,SAAS;EAC9B,iBAAA;kBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;EAC9B,aAAA;EAAC,YAAA,OAAO,CAAC,EAAE;EAAE,gBAAA,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;kBAAC,CAAC,GAAG,CAAC,CAAC;EAAE,aAAA;EAAS,oBAAA;EAAE,gBAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAAE,aAAA;EAC1D,QAAA,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;EAAE,YAAA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;UAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;OACpF;EACH,CAAC;EAEM,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAA;MAChE,IAAI,EAAE,KAAK,SAAS;UAAE,EAAE,GAAG,CAAC,CAAC;MAC7B,IAAI,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MACjD,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE;EAC/E,QAAA,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAA,EAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EACjE,KAAA;MACD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;EACrC,CAAC,KAAK,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAA;MACxB,IAAI,EAAE,KAAK,SAAS;UAAE,EAAE,GAAG,CAAC,CAAC;MAC7B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACf,CAAC,CAAC,CAAC;EAEa,SAAA,YAAY,CAAC,CAAC,EAAE,CAAC,EAAA;MAC/B,KAAK,IAAI,CAAC,IAAI,CAAC;EAAE,QAAA,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;EAAE,YAAA,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAChH,CAAC;EAEK,SAAU,QAAQ,CAAC,CAAC,EAAA;MACxB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAC9E,IAAA,IAAI,CAAC;EAAE,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACxB,IAAA,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;UAAE,OAAO;EAC1C,YAAA,IAAI,EAAE,YAAA;EACF,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;sBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;EACnC,gBAAA,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;eAC3C;WACJ,CAAC;EACF,IAAA,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;EACzF,CAAC;EAEe,SAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA;EACzB,IAAA,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC3D,IAAA,IAAI,CAAC,CAAC;EAAE,QAAA,OAAO,CAAC,CAAC;EACjB,IAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;MACjC,IAAI;UACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;EAAE,YAAA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EAC9E,KAAA;EACD,IAAA,OAAO,KAAK,EAAE;EAAE,QAAA,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;EAAE,KAAA;EAC/B,YAAA;UACJ,IAAI;EACA,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;EAAE,gBAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpD,SAAA;EACO,gBAAA;EAAE,YAAA,IAAI,CAAC;kBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;EAAE,SAAA;EACpC,KAAA;EACD,IAAA,OAAO,EAAE,CAAC;EACZ,CAAC;EAED;WACgB,QAAQ,GAAA;EACtB,IAAA,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;EAC9C,QAAA,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACzC,IAAA,OAAO,EAAE,CAAC;EACZ,CAAC;EAED;WACgB,cAAc,GAAA;MAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EAAE,QAAA,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;MACpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;UAC5C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;cAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,IAAA,OAAO,CAAC,CAAC;EACX,CAAC;WAEe,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAA;EAC1C,IAAA,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;EAAE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;cACjF,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;EACpB,gBAAA,IAAI,CAAC,EAAE;EAAE,oBAAA,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;kBACrD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnB,aAAA;EACJ,SAAA;EACD,IAAA,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC3D,CAAC;EAEK,SAAU,OAAO,CAAC,CAAC,EAAA;MACvB,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;EACvE,CAAC;WAEe,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAA;MAC7D,IAAI,CAAC,MAAM,CAAC,aAAa;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;EACvF,IAAA,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;MAC9D,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,aAAa,KAAK,UAAU,GAAG,aAAa,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAc,EAAA,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;MACxN,SAAS,WAAW,CAAC,CAAC,EAAI,EAAA,OAAO,UAAU,CAAC,EAAI,EAAA,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;MAC/F,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAI,EAAA,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;UAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAA,EAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA,EAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;EAAC,QAAA,IAAI,CAAC;cAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAAE,KAAA,EAAE;EACxK,IAAA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI;UAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAAE,KAAA;EAAC,IAAA,OAAO,CAAC,EAAE;UAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAAE,KAAA,EAAE;MAClF,SAAS,IAAI,CAAC,CAAC,EAAA,EAAI,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;EACxH,IAAA,SAAS,OAAO,CAAC,KAAK,EAAA,EAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;EAClD,IAAA,SAAS,MAAM,CAAC,KAAK,EAAA,EAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;EAClD,IAAA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA,EAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;EAAE,QAAA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EACpF,CAAC;EAEK,SAAU,gBAAgB,CAAC,CAAC,EAAA;MAChC,IAAI,CAAC,EAAE,CAAC,CAAC;EACT,IAAA,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAA,EAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;EAC5I,IAAA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAI,EAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAA,EAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;EACxI,CAAC;EAEK,SAAU,aAAa,CAAC,CAAC,EAAA;MAC7B,IAAI,CAAC,MAAM,CAAC,aAAa;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;MACvF,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;EACnC,IAAA,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAA,EAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;MACjN,SAAS,IAAI,CAAC,CAAC,EAAI,EAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAA,EAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAI,EAAA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;EAChK,IAAA,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,EAAI,EAAA,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;EAC9H,CAAC;EAEe,SAAA,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAA;MAC9C,IAAI,MAAM,CAAC,cAAc,EAAE;EAAE,QAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;EAAE,KAAA;EAAM,SAAA;EAAE,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;EAAE,KAAA;EAC/G,IAAA,OAAO,MAAM,CAAC;EAChB,CAAC;EAAA,CAAC;EAEF,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAA;EACrD,IAAA,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EACtE,CAAC,IAAI,UAAS,CAAC,EAAE,CAAC,EAAA;EAChB,IAAA,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;EACnB,CAAC,CAAC;EAEF,IAAI,OAAO,GAAG,UAAS,CAAC,EAAA;EACtB,IAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,IAAI,UAAU,CAAC,EAAA;UACjD,IAAI,EAAE,GAAG,EAAE,CAAC;UACZ,KAAK,IAAI,CAAC,IAAI,CAAC;cAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;EAAE,gBAAA,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EACnF,QAAA,OAAO,EAAE,CAAC;EACZ,KAAC,CAAC;EACF,IAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;EACpB,CAAC,CAAC;EAEI,SAAU,YAAY,CAAC,GAAG,EAAA;EAC9B,IAAA,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;EAAE,QAAA,OAAO,GAAG,CAAC;MACtC,IAAI,MAAM,GAAG,EAAE,CAAC;MAChB,IAAI,GAAG,IAAI,IAAI;EAAE,QAAA,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;EAAE,YAAA,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;kBAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACjI,IAAA,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EAChC,IAAA,OAAO,MAAM,CAAC;EAChB,CAAC;EAEK,SAAU,eAAe,CAAC,GAAG,EAAA;EACjC,IAAA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;EAC1D,CAAC;EAEK,SAAU,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA;EAC7D,IAAA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;MAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;EACnL,IAAA,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAChG,CAAC;EAEK,SAAU,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA;MACpE,IAAI,IAAI,KAAK,GAAG;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;EACxE,IAAA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;MAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;EAClL,IAAA,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;EAC5G,CAAC;EAEe,SAAA,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAA;EACnD,IAAA,IAAI,QAAQ,KAAK,IAAI,KAAK,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,CAAC;EAAE,QAAA,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;EACzJ,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAChF,CAAC;WAEe,uBAAuB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAA;MACvD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;UACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU;EAAE,YAAA,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;UACtG,IAAI,OAAO,EAAE,KAAK,CAAC;EACnB,QAAA,IAAI,KAAK,EAAE;cACT,IAAI,CAAC,MAAM,CAAC,YAAY;EAAE,gBAAA,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;EACrF,YAAA,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;EACtC,SAAA;EACD,QAAA,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE;cACtB,IAAI,CAAC,MAAM,CAAC,OAAO;EAAE,gBAAA,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;EAC3E,YAAA,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EAChC,YAAA,IAAI,KAAK;kBAAE,KAAK,GAAG,OAAO,CAAC;EAC5B,SAAA;UACD,IAAI,OAAO,OAAO,KAAK,UAAU;EAAE,YAAA,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;EACjF,QAAA,IAAI,KAAK;cAAE,OAAO,GAAG,cAAa,IAAI;EAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAAE,aAAA;EAAC,YAAA,OAAO,CAAC,EAAE;EAAE,gBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAAE,aAAA,EAAE,CAAC;EACtG,QAAA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;EAClE,KAAA;EACI,SAAA,IAAI,KAAK,EAAE;UACd,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EACjC,KAAA;EACD,IAAA,OAAO,KAAK,CAAC;EACf,CAAC;EAED,IAAI,gBAAgB,GAAG,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAA;EACnH,IAAA,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EAC3B,IAAA,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;EACnF,CAAC,CAAC;EAEI,SAAU,kBAAkB,CAAC,GAAG,EAAA;MACpC,SAAS,IAAI,CAAC,CAAC,EAAA;UACb,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,0CAA0C,CAAC,GAAG,CAAC,CAAC;EAC9G,QAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;OACrB;EACD,IAAA,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACb,IAAA,SAAS,IAAI,GAAA;UACX,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE;cAC1B,IAAI;EACF,gBAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC;sBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;kBACvF,IAAI,CAAC,CAAC,OAAO,EAAE;EACb,oBAAA,IAAI,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;sBACrC,IAAI,CAAC,CAAC,KAAK;EAAE,wBAAA,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAS,CAAC,EAAI,EAAA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACzG,iBAAA;;sBACI,CAAC,IAAI,CAAC,CAAC;EACb,aAAA;EACD,YAAA,OAAO,CAAC,EAAE;kBACR,IAAI,CAAC,CAAC,CAAC,CAAC;EACT,aAAA;EACF,SAAA;UACD,IAAI,CAAC,KAAK,CAAC;cAAE,OAAO,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;UACjF,IAAI,GAAG,CAAC,QAAQ;cAAE,MAAM,GAAG,CAAC,KAAK,CAAC;OACnC;MACD,OAAO,IAAI,EAAE,CAAC;EAChB,CAAC;EAEe,SAAA,gCAAgC,CAAC,IAAI,EAAE,WAAW,EAAA;MAChE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;EACnD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,kDAAkD,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAA;cAChG,OAAO,GAAG,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;EACnH,SAAC,CAAC,CAAC;EACN,KAAA;EACD,IAAA,OAAO,IAAI,CAAC;EACd,CAAC;AAED,kBAAe;EACb,IAAA,SAAS,EAAA,SAAA;EACT,IAAA,QAAQ,EAAA,QAAA;EACR,IAAA,MAAM,EAAA,MAAA;EACN,IAAA,UAAU,EAAA,UAAA;EACV,IAAA,OAAO,EAAA,OAAA;EACP,IAAA,YAAY,EAAA,YAAA;EACZ,IAAA,iBAAiB,EAAA,iBAAA;EACjB,IAAA,SAAS,EAAA,SAAA;EACT,IAAA,iBAAiB,EAAA,iBAAA;EACjB,IAAA,UAAU,EAAA,UAAA;EACV,IAAA,SAAS,EAAA,SAAA;EACT,IAAA,WAAW,EAAA,WAAA;EACX,IAAA,eAAe,EAAA,eAAA;EACf,IAAA,YAAY,EAAA,YAAA;EACZ,IAAA,QAAQ,EAAA,QAAA;EACR,IAAA,MAAM,EAAA,MAAA;EACN,IAAA,QAAQ,EAAA,QAAA;EACR,IAAA,cAAc,EAAA,cAAA;EACd,IAAA,aAAa,EAAA,aAAA;EACb,IAAA,OAAO,EAAA,OAAA;EACP,IAAA,gBAAgB,EAAA,gBAAA;EAChB,IAAA,gBAAgB,EAAA,gBAAA;EAChB,IAAA,aAAa,EAAA,aAAA;EACb,IAAA,oBAAoB,EAAA,oBAAA;EACpB,IAAA,YAAY,EAAA,YAAA;EACZ,IAAA,eAAe,EAAA,eAAA;EACf,IAAA,sBAAsB,EAAA,sBAAA;EACtB,IAAA,sBAAsB,EAAA,sBAAA;EACtB,IAAA,qBAAqB,EAAA,qBAAA;EACrB,IAAA,uBAAuB,EAAA,uBAAA;EACvB,IAAA,kBAAkB,EAAA,kBAAA;EAClB,IAAA,gCAAgC,EAAA,gCAAA;GACjC;;EChZK,SAAU,SAAS,CAAI,IAAO,EAAA;MAChC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;EAC5C,CAAC;WAEe,YAAY,GAAA;EACxB,IAAA,IAAM,SAAS,GAAG,MAAM,CAAC,MAAa,CAAC;EAEvC,IAAA,IAAI,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,UAAU,EAAE;EACvB,QAAA,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC;EACjC,KAAA;;EAGD,IAAA,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAA,CAAC,EAAA;UAC5D,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACjC,QAAA,IAAM,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;EAC1C,QAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC1B,KAAC,CAAC,CAAC;EACP,CAAC;WAEe,WAAW,CACzB,IAA8B,EAC9B,QAA4B,EAC5B,KAA6B,EAAA;EAD7B,IAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAA4B,GAAA,SAAA,CAAA,EAAA;EAC5B,IAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAA6B,GAAA,KAAA,CAAA,EAAA;MAE7B,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;EAAE,QAAA,OAAO,EAAE,CAAC;MAE7C,OAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAI,IAAI,CAAE,CAAA,CAAA,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;;EACzB,QAAA,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAG,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;EAChC,QAAA,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAG,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;EAEhC,QAAA,IAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;EAE3B,QAAA,OAAO,KAAK,KAAK,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;EAC5C,KAAC,CAAC,CAAC;EACL;;ECvBA,IAAA,4BAAA,kBAAA,YAAA;EAKE,IAAA,SAAA,4BAAA,CACS,SAAqD,EAC5B,UAAe,EACvC,SAAuB,EAAA;EAFxB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAA4C;EAC5B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;EACvC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;EAPjC,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAc,CAAA,cAAA,GAAgC,IAAI,CAAC;OAM9C;EAEL,IAAA,4BAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;EACE,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,EAAE,CAAC;EACtD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,EAAE,CAAC;EACtD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,CAAC;OAClE,CAAA;MAED,4BAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,QAAgB,EAAA;EAClC,QAAA,IAAI,CAAC,QAAQ;EAAE,YAAA,OAAO,IAAI,CAAC;UAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;cAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;EAClD,SAAA;UACD,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;EAC1C,QAAA,IAAM,UAAU,GAAG,gCAAiC,GAAA,OAAS,CAAC;EAC9D,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;UACtG,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;OAClD,CAAA;MAED,4BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,QAAgB,EAAA;UACzB,IAAI,OAAO,GAAG,IAAI,CAAC;EACnB,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;cACpC,OAAO,GAAG,2KAA2K,CAAC;EACvL,SAAA;EAAM,aAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;cACxC,OAAO,GAAG,gCAAgC,CAAC;EAC5C,SAAA;EACD,QAAA,IAAI,OAAO,EAAE;cACX,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;EACtC,YAAA,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;EACrB,gBAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;EACjB,aAAA;EACF,SAAA;EACD,QAAA,OAAO,IAAI,CAAC;OACb,CAAA;EAED,IAAA,4BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;;;EA9CU,4BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,4BAA4B,yDAO7BC,kBAAe,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAAF,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAPd,4BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,2ECXzC,o2EAwCc,EAAA,MAAA,EAAA,CAAA,2jYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAG,aAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHD7BD,4BAA4B,EAAA,UAAA,EAAA,CAAA;oBALxCC,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,0BAA0B;EACpC,oBAAA,WAAW,EAAE,uCAAuC;sBACpD,SAAS,EAAE,CAAC,uCAAuC,CAAC;mBACrD,CAAA;;;gCAQIC,SAAM;iCAACL,kBAAe,CAAA;;;;EET3B,IAAA,wBAAA,kBAAA,YAAA;MAIE,SACS,wBAAA,CAAA,SAAiD,EACxB,UAAmD,EAAA;EAD5E,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAwC;EACxB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyC;EAJrF,QAAA,IAAS,CAAA,SAAA,GAAiB,EAAE,CAAC;OAKxB;EAEL,IAAA,wBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;UACE,IAAI,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAK,EAAA,OAAA,CAAC,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,KAAK,KAAI,EAAE,EAAE,aAAa,CAAC,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,KAAK,KAAI,EAAE,CAAC,CAA9C,EAA8C,CAAC,CAAC;UAC3G,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;OACpC,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAa,KAAa,EAAE,KAAiB,EAAA;EAC3C,QAAA,OAAO,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,SAAS,KAAI,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;OACvE,CAAA;;;EAhBU,wBAAA,CAAA,IAAA,GAAAD,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,wBAAwB,yDAMzBC,kBAAe,EAAA,CAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EANd,wBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,uECTrC,igDAwBM,EAAA,MAAA,EAAA,CAAA,2jYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAG,aAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDfO,wBAAwB,EAAA,UAAA,EAAA,CAAA;oBALpCG,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,sBAAsB;EAChC,oBAAA,WAAW,EAAE,mCAAmC;sBAChD,SAAS,EAAE,CAAC,mCAAmC,CAAC;mBACjD,CAAA;;;gCAOIC,SAAM;iCAACL,kBAAe,CAAA;;;;EEN3B,IAAA,2BAAA,kBAAA,YAAA;MAUE,SACS,2BAAA,CAAA,SAAoD,EAC3B,IAW/B,EAAA;EAZM,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAA2C;EAC3B,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAWnC;EAhBH,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;EAChB,QAAA,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;UAiBhB,IAAI,CAAC,KAAK,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,KAAK,KAAI,EAAE,CAAC;UAC/B,IAAI,CAAC,OAAO,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,KAAI,EAAE,CAAC;UACnC,IAAI,CAAC,IAAI,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,KAAI,EAAE,CAAC;UAC7B,IAAI,CAAC,YAAY,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,YAAY,KAAI,EAAE,CAAC;UAC7C,IAAI,CAAC,WAAW,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,WAAW,KAAI,EAAE,CAAC;UAC3C,IAAI,CAAC,UAAU,GAAG,CAAC,EAAC,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,UAAU,CAAA,CAAC;OACtC;EAED,IAAA,2BAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;UAAA,IAkBC,KAAA,GAAA,IAAA,CAAA;;UAjBC,IAAI,MAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE;cAC5B,IAAI,IAAI,CAAC,OAAO,EAAE;kBAChB,OAAO;EACR,aAAA;EACD,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACpB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EACvB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;EAClC,gBAAA,IAAI,EAAE,YAAA,EAAM,OAAA,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,EAAA;kBACtC,KAAK,EAAE,UAAC,GAAQ,EAAA;;EAEd,oBAAA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACrB,oBAAA,KAAI,CAAC,YAAY,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAK,EAAE,CAAC;mBAC1E;EACF,aAAA,CAAC,CAAC;cACH,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;OAC5B,CAAA;EAED,IAAA,2BAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;EACE,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;OAC7B,CAAA;;;EAvDU,2BAAA,CAAA,IAAA,GAAAD,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,2BAA2B,yDAY5BC,kBAAe,EAAA,CAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAZd,2BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,0ECTxC,wwCAiBA,EAAA,MAAA,EAAA,CAAA,0hYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDRa,2BAA2B,EAAA,UAAA,EAAA,CAAA;oBALvCG,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,yBAAyB;EACnC,oBAAA,WAAW,EAAE,sCAAsC;sBACnD,SAAS,EAAE,CAAC,sCAAsC,CAAC;mBACpD,CAAA;;;gCAaIC,SAAM;iCAACL,kBAAe,CAAA;;;;EErB3B,IAAM,0BAA0B,GAAG,qCAAqC,CAAC;EACzE,IAAM,yCAAyC,GAAG,oDAAoD,CAAC;EAEhG,IAAM,qBAAqB,GAAG;MACjC,WAAW,EAAE,yCAAyC,GAAG,sCAAsC;GAClG,CAAA;EAEM,IAAM,iBAAiB,GAAG;MAC7B,gBAAgB,EAAE,0BAA0B,GAAG,+BAA+B;GACjF,CAAA;EAGM,IAAM,yBAAyB,GAAG;MACrC,0BAA0B,EAAE,0BAA0B,GAAG,6BAA6B;MACtF,cAAc,EAAE,0BAA0B,GAAG,mBAAmB;MAChE,aAAa,EAAE,0BAA0B,GAAG,mBAAmB;MAC/D,oBAAoB,EAAE,0BAA0B,GAAG,8BAA8B;MACjF,iBAAiB,EAAE,0BAA0B,GAAG,+BAA+B;MAC/E,iBAAiB,EAAE,0BAA0B,GAAG,gHAAgH;MAChK,gBAAgB,EAAE,0BAA0B,GAAG,uGAAuG;MACtJ,wBAAwB,EAAE,0BAA0B,GAAG,6BAA6B;MACpF,gBAAgB,EAAE,0BAA0B,GAAG,6CAA6C;GAC/F,CAAA;EAEM,IAAM,yBAAyB,GAAG;MACrC,wBAAwB,EAAE,0BAA0B,GAAG,8BAA8B;MACrF,0BAA0B,EAAE,0BAA0B,GAAG,mCAAmC;MAC5F,sBAAsB,EAAE,0BAA0B,GAAG,uCAAuC;MAC5F,2BAA2B,EAAE,0BAA0B,GAAG,2CAA2C;MACrG,gBAAgB,EAAE,0BAA0B,GAAG,kEAAkE;MACjH,cAAc,EAAE,0BAA0B,GAAG,0BAA0B;MACvE,+BAA+B,EAAE,0BAA0B,GAAG,oCAAoC;MAClG,+BAA+B,EAAE,0BAA0B,GAAG,oCAAoC;MAClG,iBAAiB,EAAE,0BAA0B,GAAG,qCAAqC;MACrF,WAAW,EAAE,0BAA0B,GAAG,0CAA0C;MACpF,sBAAsB,EAAE,0BAA0B,GAAG,iEAAiE;MACtH,oBAAoB,EAAE,0BAA0B,GAAG,+DAA+D;MAClH,qBAAqB,EAAE,0BAA0B,GAAG,6DAA6D;MACjH,4BAA4B,EAAE,0BAA0B,GAAG,wCAAwC;GACtG;;EClCD,IAAA,sBAAA,kBAAA,YAAA;EAGE,IAAA,SAAA,sBAAA,CACU,IAAgB,EAAA;;EAAhB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;UAHT,IAAA,CAAA,aAAa,GAAG,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;OAIlE;EAEG,IAAA,sBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;UACN,OAAO,IAAIM,gBAAW,EAAE,CAAC,GAAG,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;OACxE,CAAA;MAED,sBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,MAAW,EAAA;;EACtB,QAAA,IAAI,KAAK,GAAG,IAAIC,eAAU,EAAE,CAAC;;cAC7B,KAAkB,IAAA,EAAA,GAAA,QAAA,CAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;EAAlC,gBAAA,IAAM,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;EACZ,gBAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EACrC,aAAA;;;;;;;;;EACD,QAAA,OAAO,KAAK,CAAC;OACd,CAAA;MAED,sBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,QAAgB,EAAA;EAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,IAAI,CAAC,aAAa,GAAA,6BAAA,GAA8B,QAAQ,GAAA,OAAO,CAAC,CAAC;OAC1F,CAAA;MAED,sBAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,MAAW,EAAA;EAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACC,yBAAqC,CAAC,wBAAwB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAClJ,CAAA;MAED,sBAA0B,CAAA,SAAA,CAAA,0BAAA,GAA1B,UAA2B,UAAkB,EAAA;EAC3C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,0BAA0B,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,EAAA,UAAA,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC5J,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,UAAuB,UAAe,EAAE,WAAgB,EAAA;EACtD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,EAAA,UAAA,EAAE,WAAW,EAAA,WAAA,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACrK,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,2BAA2B,GAA3B,UAA4B,UAAe,EAAE,WAAgB,EAAA;EAC3D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,2BAA2B,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,EAAA,UAAA,EAAE,WAAW,EAAA,WAAA,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC1K,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,iBAA2B,EAAE,MAAW,EAAA;EACvD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC9J,CAAA;MAED,sBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,MAAW,EAAA;EACxB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACxI,CAAA;MAED,sBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,OAAY,EAAA;UAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,+BAA+B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACvI,CAAA;MAED,sBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,OAAY,EAAA;UAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAACA,yBAAqC,CAAC,+BAA+B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACxI,CAAA;MAED,sBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,KAAU,EAAA;UAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,iBAAiB,GAAG,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACvH,CAAA;MAED,sBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,OAAY,EAAA;UACtB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAACA,yBAAqC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACpH,CAAA;MAED,sBAAsB,CAAA,SAAA,CAAA,sBAAA,GAAtB,UAAuB,UAAkB,EAAA;UACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAChK,CAAA;MAED,sBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,UAAkB,EAAA;UACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC9J,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,UAAsB,UAAkB,EAAE,MAAW,EAAA;UACnD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACtL,CAAA;MAED,sBAA4B,CAAA,SAAA,CAAA,4BAAA,GAA5B,UAA6B,SAAiB,EAAA;UAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,4BAA4B,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAChK,CAAA;MAED,sBAA0B,CAAA,SAAA,CAAA,0BAAA,GAA1B,UAA2B,eAAuB,EAAA;EAChD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACC,qBAAiC,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,eAAe,EAAA,eAAA,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC9I,CAAA;;;4IAjFU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,eAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gJAAtB,sBAAsB,EAAA,CAAA,CAAA;oHAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;oBADlCW,aAAU;;;ECQX,IAAA,yBAAA,kBAAA,YAAA;EAmBE,IAAA,SAAA,yBAAA,CACS,SAAkD,EACjD,sBAA8C,EACtB,IAK/B,EAAA;EAPM,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyC;EACjD,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EACtB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAKnC;EArBH,QAAA,IAAQ,CAAA,QAAA,GAA+B,EAAE,CAAC;EAC1C,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;EAChB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;EAChB,QAAA,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;EAClB,QAAA,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;EACJ,QAAA,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;EACA,QAAA,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;;EAG3B,QAAA,IAAe,CAAA,eAAA,GAA8C,EAAE,CAAC;EAChE,QAAA,IAAW,CAAA,WAAA,GAAyC,EAAE,CAAC;EAC/C,QAAA,IAAW,CAAA,WAAA,GAAqD,EAAE,CAAC;UAYzE,IAAI,CAAC,WAAW,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,WAAW,KAAI,EAAE,CAAC;UAC3C,IAAI,CAAC,WAAW,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,WAAW,KAAI,EAAE,CAAC;UAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,UAAoB,CAAC;UAC7C,IAAI,CAAC,YAAY,GAAG,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,YAAY,KAAI,EAAE,CAAC;OAC9C;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;UACE,IAAI,CAAC,YAAY,EAAE,CAAC;OACrB,CAAA;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;UAAA,IAqBC,KAAA,GAAA,IAAA,CAAA;UApBC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;EACpC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;EAAE,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EAAE,aAAA;cAC9C,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACpB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACrB,QAAA,IAAI,CAAC,sBAAsB;eACxB,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;EAC7G,aAAA,SAAS,CAAC;cACT,IAAI,EAAE,UAAC,GAAQ,EAAA;;EACb,gBAAA,KAAI,CAAC,QAAQ,GAAO,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAI,CAAC,QAAQ,CAAA,CAAA,EAAA,MAAA,EAAM,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,KAAI,EAAE,GAAE,CAAC;kBAC5D,KAAI,CAAC,aAAa,GAAG,CAAA,EAAA,GAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,aAAa,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;EAChE,gBAAA,KAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;EAC9B,gBAAA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;eACtB;EACD,YAAA,KAAK,EAAE,YAAA;EACL,gBAAA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACrB,gBAAA,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;eACrB;EACF,SAAA,CAAC,CAAC;OACN,CAAA;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;UACE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;cAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;cACZ,IAAI,CAAC,YAAY,EAAE,CAAC;EACrB,SAAA;OACF,CAAA;;MAGD,yBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,OAAiC,EAAA;UAA5C,IAoBC,KAAA,GAAA,IAAA,CAAA;UAnBC,IAAM,EAAE,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,EAAE,CAAC;UACvB,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,QAAQ,EAAE;cACzF,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;UACjC,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;cACrE,IAAI,EAAE,UAAC,GAAQ,EAAA;EACb,gBAAA,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EACnC,oBAAA,KAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;sBAC/B,OAAO;EACR,iBAAA;EACD,gBAAA,KAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAC/B,gBAAA,KAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;eACjC;cACD,KAAK,EAAE,UAAC,GAAQ,EAAA;;EAEd,gBAAA,KAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,MAAM,MAAK,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC;eAChE;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,MAAc,EAAE,OAAiC,EAAA;;EAChE,QAAA,OAAO,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,MAAM,CAAC;OAC9B,CAAA;MAED,yBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAa,EAAA;EACxB,QAAA,OAAO,KAAK,CAAC;OACd,CAAA;;MAGD,yBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,MAAwB,EAAA;;EACvC,QAAA,IAAM,EAAE,GAAG,CAAA,EAAA,GAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,CAAC,CAAC;UAC5B,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;cAC7B,IAAI;EACF,gBAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,aAAa,IAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;EACxF,aAAA;EAAC,YAAA,OAAM,EAAA,EAAA;EACN,gBAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;EAC7B,aAAA;EACF,SAAA;EACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;OAC7B,CAAA;;MAGD,yBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAgB,EAAA;UAC7B,IAAI,OAAO,IAAI,IAAI,EAAE;EAAE,YAAA,OAAO,EAAE,CAAC;EAAE,SAAA;UACnC,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;EACnC,QAAA,IAAM,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC;EACvB,QAAA,OAAO,CAAC,GAAG,CAAC,GAAM,CAAC,GAAK,IAAA,GAAA,CAAC,MAAG,GAAM,CAAC,MAAG,CAAC;OACxC,CAAA;;MAGD,yBAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,WAAoB,EAAA;UAC3B,OAAO,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;OACzC,CAAA;EAED;;;;EAIG;MACH,yBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,MAAe,EAAA;UAC9B,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,WAAW,EAAE;EAClC,YAAA,KAAK,QAAQ,EAAE,OAAO,iDAAiD,CAAC;EACxE,YAAA,KAAK,YAAY,EAAE,OAAO,6CAA6C,CAAC;EACxE,YAAA,KAAK,WAAW,EAAE,OAAO,6CAA6C,CAAC;EACvE,YAAA,KAAK,QAAQ,EAAE,OAAO,4CAA4C,CAAC;EACnE,YAAA,KAAK,OAAO,CAAC;EACb,YAAA,SAAS,OAAO,8CAA8C,CAAC;EAChE,SAAA;OACF,CAAA;;MAGD,yBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,IAAa,EAAA;UAC1B,IAAI,CAAC,IAAI,EAAE;EAAE,YAAA,OAAO,EAAE,CAAC;EAAE,SAAA;UACzB,OAAO,IAAI,CAAC,WAAW,CAAC,sCAAsC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;OAChF,CAAA;;MAGD,yBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAa,EAAA;UAC3B,IAAI,CAAC,IAAI,EAAE;EAAE,YAAA,OAAO,EAAE,CAAC;EAAE,SAAA;UACzB,OAAO,IAAI,CAAC,WAAW,CAAC,uCAAuC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;OACjF,CAAA;;MAGD,yBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,IAAa,EAAA;UACxB,IAAI,CAAC,IAAI,EAAE;EAAE,YAAA,OAAO,KAAK,CAAC;EAAE,SAAA;EAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;EAClF,eAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;EACnF,eAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;OAClC,CAAA;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,KAAK,GAAL,YAAA;EACE,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;OACxB,CAAA;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;;;EAxKU,yBAAA,CAAA,IAAA,GAAAX,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,yBAAyB,4FAsB1BC,kBAAe,EAAA,CAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAtBd,yBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,wECZtC,sleAgOA,EAAA,MAAA,EAAA,CAAA,6wYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAI,aAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAQ,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAR,aAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAR,aAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAR,aAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,eAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,MAAA,EAAAA,eAAA,CAAA,QAAA,EAAA,UAAA,EAAAA,eAAA,CAAA,YAAA,EAAA,EAAA,CAAA,CAAA;oHDpNa,yBAAyB,EAAA,UAAA,EAAA,CAAA;oBALrCP,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,uBAAuB;EACjC,oBAAA,WAAW,EAAE,oCAAoC;sBACjD,SAAS,EAAE,CAAC,oCAAoC,CAAC;mBAClD,CAAA;;;gCAuBIC,SAAM;iCAACL,kBAAe,CAAA;;;;EExB3B,IAAA,sBAAA,kBAAA,YAAA;EAEI,IAAA,SAAA,sBAAA,GAAA;OAAiB;EAEjB;;;;EAIG;EACH,IAAA,sBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,UACI,gBAA8C,EAC9C,cAAuC,EACvC,iBAAgE,EAChE,YAAgD,EAChD,MAAc,EACd,oBAAiC,EAAA;EAAjC,QAAA,IAAA,oBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,oBAAiC,GAAA,EAAA,CAAA,EAAA;UAEjC,gBAAgB,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;EAC3E,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;;EAErH,QAAA,IAAI,oBAAoB,EAAE;EACtB,YAAA,OAAO,CAAC,UAAU,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,OAAO,CAAC,UAAU,IAAI,EAAE,MAAG,oBAAoB,sBAAA,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAA,CAAE,CAAC;EACpH,SAAA;EACD,QAAA,OAAO,OAAO,CAAC;OAClB,CAAA;MAED,sBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UACI,gBAA8C,EAC9C,cAAuC,EACvC,iBAAgE,EAChE,YAAgD,EAChD,MAAc,EAAA;UALlB,IAkFC,KAAA,GAAA,IAAA,CAAA;;EA3EG,QAAA,IAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;EACnD,QAAA,cAAc,CAAC,sBAAsB,GAAG,EAAE,CAAC;EAE3C,QAAA,CAAA,EAAA,GAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,OAAY,EAAA;;cAC3D,IAAM,uBAAuB,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAA1B,EAA0B,CAAC,CAAC;EAC/F,YAAA,IAAI,uBAAuB,EAAE;EACzB,gBAAA,IAAM,WAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC;kBAEpD,CAAA,EAAA,GAAA,OAAO,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,eAAgC,EAAA;;EACnE,oBAAA,IAAM,IAAI,GAAG,YAAY,CAAC,CAAA,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,UAAU,KAAI,CAAC,CAAC,CAAC,CAAC;EAC7D,oBAAA,IAAI,CAAC,IAAI;0BAAE,OAAO;EAElB,oBAAA,IAAM,UAAU,GAAG,KAAI,CAAC,sBAAsB,CAAC,WAAS,EAAE,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,EAAE,EAAE,YAAY,CAAC,CAAC;EAClF,oBAAA,IAAM,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;EAE3D,oBAAA,IAAI,mBAAmB,EAAE;0BACrB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;0BACpD,OAAO,MAAM,CAAC,aAAa,CAAC;EAE5B,wBAAA,IAAM,WAAW,GAAG,CAAA,EAAA,GAAA,gBAAgB,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAM,IAAI,IAAA,EAAA,CAAA,CACzE,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,eAAe,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,eAAe,CAAA,EAAA,CACrF,CAAC;EAEF,wBAAA,KAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;EAE3C,wBAAA,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,uBAAuB,CAAC,MAAM,KAAK,CAAC;8BAAE,OAAO;EAC1G,wBAAA,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,sBAAsB,IAAI,MAAM,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC;8BAAE,OAAO;EAExG,wBAAA,CAAA,EAAA,GAAA,cAAc,CAAC,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,iCACpC,MAAM,CAAA,EAAA,EACT,EAAE,EAAE,CAAA,WAAW,aAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,EAAE,KAAI,CAAC,EACxB,QAAQ,EAAE,IAAI,EACd,eAAe,iBAAA,EACf,MAAM,EAAA,MAAA,EACN,KAAK,EAAE,CAAA,CAAA,EAAA,GAAA,WAAS,CAAC,GAAG,CAAI,IAAI,CAAC,EAAE,GAAQ,QAAA,CAAC,0CAAE,KAAK,KAAI,IAAI,GAAG,MAAM,CAAC,MAAA,WAAS,CAAC,GAAG,CAAI,IAAI,CAAC,EAAE,GAAA,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,GAAG,IAAI,IACnH,CAAC;0BAEH,IAAI,MAAA,UAAU,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EACpC,4BAAA,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,UAAC,SAAc,EAAA;;kCAC9C,IAAM,QAAQ,GAAG,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,mBAAmB,CAAC;kCAChD,IAAM,YAAY,GAAG,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,oBAAoB,CAAC;EACrD,gCAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY;sCAAE,OAAO;kCAEvC,IAAI,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;kCACtD,OAAO,mBAAmB,CAAC,aAAa,CAAC;EAEzC,gCAAA,IAAM,gBAAgB,GAAG,CAAA,EAAA,GAAA,gBAAgB,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAM,EAAA,EAC1E,OAAA,CAAC,CAAC,eAAe,KAAK,YAAY,CAAC,EAAE;sCACrC,CAAC,CAAC,6BAA6B,KAAK,eAAe,CAAC,UAAU,CAAA,EAAA,CACjE,CAAC;EAEF,gCAAA,KAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;EAE7D,gCAAA,IAAI,CAAC,gBAAgB,IAAI,mBAAmB,CAAC,uBAAuB,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,MAAM,KAAK,CAAC;sCAAE,OAAO;EACzI,gCAAA,IAAI,CAAC,gBAAgB,IAAI,mBAAmB,CAAC,sBAAsB,IAAI,mBAAmB,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC;sCAAE,OAAO;EAEvI,gCAAA,CAAA,EAAA,GAAA,cAAc,CAAC,sBAAsB,0CAAE,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACvC,eAAe,EAAE,YAAY,CAAC,EAAE,EAChC,6BAA6B,EAAE,eAAe,CAAC,UAAU,EACzD,oBAAoB,EAAE,SAAS,CAAC,cAAc,EAAA,EAC3C,mBAAmB,CACtB,EAAA,EAAA,EAAE,EAAE,CAAA,gBAAgB,aAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,EAAE,KAAI,CAAC,EAC7B,QAAQ,EAAE,IAAI,EACd,eAAe,EAAA,eAAA,EACf,MAAM,EAAA,MAAA,EACN,KAAK,EAAE,CAAA,CAAA,EAAA,GAAA,WAAS,CAAC,GAAG,CAAI,YAAY,CAAC,EAAE,WAAQ,CAAC,0CAAE,KAAK,KAAI,IAAI,GAAG,MAAM,CAAC,MAAA,WAAS,CAAC,GAAG,CAAI,YAAY,CAAC,EAAE,GAAQ,QAAA,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,GAAG,IAAI,IACnI,CAAC;EACP,6BAAC,CAAC,CAAC;EACN,yBAAA;EACJ,qBAAA;EACL,iBAAC,CAAC,CAAC;EACN,aAAA;EACL,SAAC,CAAC,CAAC;EAEH,QAAA,OAAO,cAAc,CAAC;OACzB,CAAA;EAEO,IAAA,sBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,MAAW,EAAE,WAAgB,EAAA;EAClD,QAAA,IAAI,CAAC,WAAW;cAAE,OAAO;EAEzB,QAAA,IAAI,MAAM,CAAC,wBAAwB,IAAI,WAAW,CAAC,wBAAwB,EAAE;cACzE,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,UAAC,KAAU,EAAE,GAAW,EAAA;EAC5D,gBAAA,IAAI,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE;sBAC3C,KAAK,CAAC,EAAE,GAAG,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;EAC3D,iBAAA;EACL,aAAC,CAAC,CAAC;EACN,SAAA;EACD,QAAA,IAAI,MAAM,CAAC,uBAAuB,IAAI,WAAW,CAAC,uBAAuB,EAAE;cACvE,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAC,KAAU,EAAE,GAAW,EAAA;EAC3D,gBAAA,IAAM,YAAY,GAAG,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAC,KAAU,EAAI,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CACzE,OAAA,CAAA,CAAA,EAAA,GAAA,MAAA,KAAK,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,OAAK,CAAA,EAAA,GAAA,MAAA,KAAK,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAA,EAAA,CACxE,CAAC;EACF,gBAAA,IAAI,YAAY,EAAE;EACd,oBAAA,KAAK,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;EAC9B,iBAAA;EACL,aAAC,CAAC,CAAC;EAEH,YAAA,WAAW,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAC,KAAU,EAAA;EACnD,gBAAA,IAAM,WAAW,GAAG,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAC,KAAU,EAAI,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CACnE,OAAA,CAAA,CAAA,EAAA,GAAA,MAAA,KAAK,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,OAAK,CAAA,EAAA,GAAA,MAAA,KAAK,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAA,EAAA,CACxE,CAAC;kBACF,IAAI,CAAC,WAAW,EAAE;sBACd,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC5B,KAAK,CAAA,EAAA,EACR,QAAQ,EAAE,KAAK,EAAA,CAAA,CACjB,CAAC;EACN,iBAAA;EAAM,qBAAA;EACH,oBAAA,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC/B,iBAAA;EACL,aAAC,CAAC,CAAC;EACN,SAAA;EAED,QAAA,IAAI,MAAM,CAAC,sBAAsB,IAAI,WAAW,CAAC,sBAAsB,EAAE;EACrE,YAAA,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAC,KAAU,EAAA;kBAC7C,IAAM,YAAY,GAAG,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,KAAU,EAAA,EACpE,OAAA,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAA,EAAA,CACxB,CAAC;EACF,gBAAA,IAAI,YAAY,EAAE;EACd,oBAAA,KAAK,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;EAC9B,iBAAA;EACL,aAAC,CAAC,CAAC;EAEH,YAAA,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAC,KAAU,EAAA;kBAClD,IAAM,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,KAAU,EAAA,EAC9D,OAAA,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAA,EAAA,CACxB,CAAC;kBACF,IAAI,CAAC,WAAW,EAAE;sBACd,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC3B,KAAK,CAAA,EAAA,EACR,QAAQ,EAAE,KAAK,EAAA,CAAA,CACjB,CAAC;EACN,iBAAA;EAAM,qBAAA;EACH,oBAAA,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC/B,iBAAA;EACL,aAAC,CAAC,CAAC;EACN,SAAA;OACJ,CAAA;EAEO,IAAA,sBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,UAAuB,SAAc,EAAE,MAAmB,EAAE,YAAiB,EAAA;UAA7E,IA0HP,KAAA,GAAA,IAAA,CAAA;UA1H8C,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,UAAkB,CAAC,CAAA,EAAA;;EAC9D,QAAA,IAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;EAC7C,QAAA,IAAI,CAAC,eAAe;cAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;UAEhF,IAAI,mBAAmB,GAAQ,EAAE,CAAC;UAClC,IAAI,eAAe,GAAQ,EAAE,CAAC;UAC9B,IAAM,SAAS,GAAG,CAAA,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,WAAW,IAAG,SAAS,CAAC,WAAW,EAAE,IAAI,CAAA,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,KAAK,KAAI,EAAE,CAAC,CAAC;EAC9F,QAAA,IAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;UAE9B,IAAM,KAAK,GAAG,CAAA,EAAA,GAAA,eAAe,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC;;;;UAMjD,IAAI,KAAK,KAAK,yBAAyB,EAAE;cACrC,IAAM,cAAc,GAAG,CAAA,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,kBAAkB,KAAI,EAAE,CAAC;cACjE,IAAM,gBAAc,GAAG,CAAA,cAAc,KAAd,IAAA,IAAA,cAAc,uBAAd,cAAc,CAAE,IAAI,CAAC,UAAC,CAAM,YAAK,OAAA,CAAA,MAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,OAAO,0CAAE,EAAE,OAAK,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,EAAE,CAAA,CAAA,EAAA,CAAC,KAAI,EAAE,CAAC;EAE1F,YAAA,IAAI,gBAAc,EAAE;EAChB,gBAAA,mBAAmB,GAAG;EAClB,oBAAA,QAAQ,EAAE,gBAAc,KAAA,IAAA,IAAd,gBAAc,KAAd,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAc,CAAE,OAAO;EACjC,oBAAA,aAAa,EAAE,gBAAc;mBAChC,CAAC;kBAEF,IAAI,gBAAc,CAAC,eAAe,EAAE;sBAChC,IAAM,UAAU,GAAG,SAAS,CAAI,MAAM,iBAAY,gBAAc,CAAC,EAAI,CAAC,CAAC;EACvE,oBAAA,IAAI,UAAU,EAAE;EACZ,wBAAA,mBAAmB,CAAC,OAAO,GAAG,UAAU,CAAC;EAC5C,qBAAA;EACJ,iBAAA;EAED,gBAAA,IAAM,YAAY,GAAG,gBAAc,CAAC,iBAAiB,IAAI,EAAE,CAAC;EAC5D,gBAAA,YAAY,CAAC,OAAO,CAAC,UAAC,OAAe,EAAA;;EACjC,oBAAA,IAAM,aAAa,GAAG,KAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;EACpF,oBAAA,IAAI,aAAa,KAAb,IAAA,IAAA,aAAa,uBAAb,aAAa,CAAE,mBAAmB,EAAE;0BACpC,eAAe,CAAC,IAAI,CAAC;8BACjB,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;EACtD,4BAAA,oBAAoB,EAAE,YAAY,CAAC,OAAO,CAAC;EAC3C,4BAAA,cAAc,EAAE,gBAAc,CAAC,OAAO,CAAC,EAAE;EAC5C,yBAAA,CAAC,CAAC;0BACH,IAAI,MAAA,aAAa,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;8BACvC,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;EAC3E,yBAAA;EACJ,qBAAA;EACL,iBAAC,CAAC,CAAC;EACN,aAAA;EAAM,iBAAA;kBACH,mBAAmB,GAAG,IAAI,CAAC;EAC9B,aAAA;EACJ,SAAA;EAAM,aAAA,IAAI,KAAK,KAAK,4BAA4B,IAAI,KAAK,KAAK,0BAA0B,EAAE;EACvF,YAAA,IAAM,gBAAc,GAAG,eAAe,CAAC,kBAAkB,IAAI,EAAE,CAAC;cAChE,IAAM,yBAAuB,GAAU,EAAE,CAAC;EAE1C,YAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;EAE7D,YAAA,QAAQ,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAE,KAAa,EAAA;kBACrC,IAAM,cAAc,GAAG,gBAAc,CAAC,IAAI,CAAC,UAAC,CAAM,EAAA,EAAI,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,MAAA,CAAC,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAK,GAAG,CAAC,EAAE,CAAA,EAAA,CAAC,CAAC;EACjF,gBAAA,IAAI,cAAc,EAAE;EAChB,oBAAA,IAAM,GAAG,GAAQ;EACb,wBAAA,EAAE,EAAE,CAAC;EACL,wBAAA,aAAa,EAAE,cAAc;uBAChC,CAAC;sBAEF,IAAI,KAAK,KAAK,0BAA0B,EAAE;EACtC,wBAAA,GAAG,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;EAC3B,qBAAA;sBAED,IAAI,cAAc,CAAC,eAAe,EAAE;0BAChC,IAAM,UAAU,GAAG,SAAS,CAAI,MAAM,iBAAY,cAAc,CAAC,EAAI,CAAC,CAAC;EACvE,wBAAA,IAAI,UAAU,EAAE;EACZ,4BAAA,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC;EAC5B,yBAAA;EACJ,qBAAA;EAED,oBAAA,yBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAElC,oBAAA,IAAM,YAAY,GAAG,cAAc,CAAC,iBAAiB,IAAI,EAAE,CAAC;EAC5D,oBAAA,YAAY,CAAC,OAAO,CAAC,UAAC,OAAe,EAAA;;EACjC,wBAAA,IAAM,aAAa,GAAG,KAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;EACpF,wBAAA,IAAI,aAAa,KAAb,IAAA,IAAA,aAAa,uBAAb,aAAa,CAAE,mBAAmB,EAAE;8BACpC,eAAe,CAAC,IAAI,CAAC;kCACjB,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;EACtD,gCAAA,oBAAoB,EAAE,YAAY,CAAC,OAAO,CAAC;EAC3C,gCAAA,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE;EAC5C,6BAAA,CAAC,CAAC;8BACH,IAAI,MAAA,aAAa,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;kCACvC,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;EAC3E,6BAAA;EACJ,yBAAA;EACL,qBAAC,CAAC,CAAC;EACN,iBAAA;EACL,aAAC,CAAC,CAAC;EAEH,YAAA,mBAAmB,GAAG,EAAE,uBAAuB,EAAA,yBAAA,EAAE,CAAC;EACrD,SAAA;eAAM,IAAI,KAAK,KAAK,2BAA2B,EAAE;cAC9C,IAAM,wBAAsB,GAAU,EAAE,CAAC;EAEzC,YAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;EAC7D,YAAA,QAAQ,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAA;EACtB,gBAAA,wBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACrC,aAAC,CAAC,CAAC;EAEH,YAAA,mBAAmB,GAAG,EAAE,sBAAsB,EAAA,wBAAA,EAAE,CAAC;EACpD,SAAA;EAAM,aAAA;cACH,IAAI,YAAY,GAAG,GAAG,CAAC;EACvB,YAAA,IAAI,KAAK,KAAK,2BAA2B,IAAI,GAAG,EAAE;EAC9C,gBAAA,IAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;kBAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;EAC3B,oBAAA,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;EACxC,iBAAA;EACJ,aAAA;EACD,YAAA,mBAAmB,GAAG;EAClB,gBAAA,wBAAwB,EAAE;EACtB,oBAAA;EACI,wBAAA,EAAE,EAAE,CAAC;EACL,wBAAA,YAAY,EAAE,YAAY;EAC7B,qBAAA;EACJ,iBAAA;eACJ,CAAC;EACL,SAAA;EAED,QAAA,OAAO,EAAE,mBAAmB,EAAA,mBAAA,EAAE,eAAe,EAAA,eAAA,EAAE,CAAC;OACnD,CAAA;MAED,sBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,gBAA8C,EAAA;;UAC5D,IAAM,SAAS,GAAU,EAAE,CAAC;UAE5B,CAAA,EAAA,GAAA,gBAAgB,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,QAAa,EAAA;cAC3D,IAAI,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,KAAK,KAAI,IAAI,EAAE;kBACzB,SAAS,CAAC,IAAI,CAAC;sBACX,oBAAoB,EAAE,QAAQ,CAAC,EAAE;EACjC,oBAAA,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;EAChC,iBAAA,CAAC,CAAC;EACN,aAAA;EACL,SAAC,CAAC,CAAC;UAEH,OAAO;EACH,YAAA,4BAA4B,EAAE,gBAAgB,KAAA,IAAA,IAAhB,gBAAgB,KAAhB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAgB,CAAE,EAAE;EAClD,YAAA,SAAS,EAAE,SAAS;WACvB,CAAC;OACL,CAAA;;;4IAvTQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;EAAtB,sBAAA,CAAA,KAAA,GAAAA,aAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,sBAAsB,cAFnB,MAAM,EAAA,CAAA,CAAA;oHAET,sBAAsB,EAAA,UAAA,EAAA,CAAA;oBAHlCW,aAAU;EAAC,YAAA,IAAA,EAAA,CAAA;EACR,oBAAA,UAAU,EAAE,MAAM;mBACrB,CAAA;;;ECND;;;;;;;;EAQG;EAIH,IAAA,iBAAA,kBAAA,YAAA;EAHA,IAAA,SAAA,iBAAA,GAAA;;EAMU,QAAA,IAAW,CAAA,WAAA,GAAsB,EAAE,CAAC;OA0F7C;EAxFC;;;;;;;;EAQG;MACH,iBAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,OAML,EAAA;UAND,IA4DC,KAAA,GAAA,IAAA,CAAA;EArDC,QAAA,OAAO,IAAIE,eAAU,CAAO,UAAC,QAAQ,EAAA;cACnC,IAAI,OAAO,GAAG,KAAK,CAAC;EAEpB,YAAA,IAAM,OAAO,GAAG,YAAA;kBACd,IAAI,CAAC,OAAO,EAAE;sBAAE,OAAO,GAAG,IAAI,CAAC;sBAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;sBAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;EAAE,iBAAA;EACzE,aAAC,CAAC;cACF,IAAM,IAAI,GAAG,UAAC,GAAQ,EAAA;kBACpB,IAAI,CAAC,OAAO,EAAE;sBAAE,OAAO,GAAG,IAAI,CAAC;EAAC,oBAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAAE,iBAAA;EACxD,aAAC,CAAC;EAEF,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;EACtB,gBAAA,IAAI,CAAC,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC,CAAC;kBACzD,OAAO;EACR,aAAA;EAED,YAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,UAAC,GAAQ,EAAA;;kBACjD,IAAI;EACF,oBAAA,IAAM,WAAW,GAAG,CAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,WAAW,MAAI,CAAA,EAAA,GAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAA,KAAI,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,OAAO,CAAA,CAAC;EAClF,oBAAA,KAAI,CAAC,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC;0BACvC,GAAG,EAAE,OAAO,CAAC,GAAG;0BAChB,SAAS,EAAE,OAAO,CAAC,SAAS;EAC5B,wBAAA,SAAS,EAAE,IAAI;EAChB,qBAAA,CAAC,CAAC;sBAEH,IAAM,aAAa,GAAG,KAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,UAAC,MAAW,EAAA;0BAC9D,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,MAAM,MAAK,QAAQ,EAAE;EAC/B,4BAAA,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;EACjC,yBAAA;+BAAM,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,MAAM,MAAK,SAAS,EAAE;EACvC,4BAAA,OAAO,EAAE,CAAC;EACX,yBAAA;EACH,qBAAC,CAAC,CAAC;sBACH,IAAM,QAAQ,GAAG,KAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,GAAQ,EAAA,EAAK,OAAA,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;;sBAGnE,IAAM,eAAe,GAAG,KAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,YAAA;;EACvD,wBAAA,CAAA,EAAA,GAAA,OAAO,CAAC,YAAY,+CAApB,OAAO,CAAA,CAAkB,SAAS,CAAC;8BACjC,IAAI,EAAE,UAAC,GAAW,EAAA;;kCAAO,IAAI;sCAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,OAAO,0CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAG,GAAG,CAAC,CAAC;EAAE,iCAAA;EAAC,gCAAA,OAAO,CAAC,EAAE,cAAc;+BAAE;8BAC7F,KAAK,EAAE,eAAqF;EAC7F,yBAAA,CAAC,CAAC;EACL,qBAAC,CAAC,CAAC;;;;sBAKH,KAAI,CAAC,WAAW,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,UAAC,EAAE,EAAK,EAAA,OAAA,OAAO,EAAE,KAAK,UAAU,CAAA,EAAA,CAAC,CAAC;;sBAGvG,OAAO,CAAC,OAAO,CAAC,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAC,GAAQ,EAAK,EAAA,OAAA,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;EACtE,iBAAA;EAAC,gBAAA,OAAO,GAAG,EAAE;sBACZ,IAAI,CAAC,GAAG,CAAC,CAAC;EACX,iBAAA;EACH,aAAC,CAAC,CAAC,KAAK,CAAC,UAAC,GAAQ,EAAA,EAAK,OAAA,IAAI,CAAC,GAAG,CAAC,CAAT,EAAS,CAAC,CAAC;EACpC,SAAC,CAAC,CAAC;OACJ,CAAA;;MAGD,iBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,EAAwB,EAAA;;UAC9B,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAG,EAAE,CAAC,CAAC;OACpC,CAAA;;EAGD,IAAA,iBAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;;UACE,IAAI;cAAE,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,kDAAI,CAAC;EAAE,SAAA;EAAC,QAAA,OAAO,CAAC,EAAE,cAAc;OACzD,CAAA;;MAGD,iBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,MAAsD,EAAA;EAAtD,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAA,EAAoC,UAAU,EAAE,IAAI,EAAE,CAAA,EAAA;;EAC5D,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA;cAAO,IAAI;EAAE,gBAAA,GAAG,EAAE,CAAC;EAAE,aAAA;EAAC,YAAA,OAAO,CAAC,EAAE,cAAc;EAAC,SAAC,CAAC,CAAC;EAC/E,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;UACtB,IAAI;cAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAG,MAAM,CAAC,CAAC;EAAE,SAAA;EAAC,QAAA,OAAO,CAAC,EAAE,cAAc;EACjE,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;OAC1B,CAAA;;;uIA5FU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAb,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;EAAjB,iBAAA,CAAA,KAAA,GAAAA,aAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;oHAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;oBAH7BW,aAAU;EAAC,YAAA,IAAA,EAAA,CAAA;EACV,oBAAA,UAAU,EAAE,MAAM;mBACnB,CAAA;;;ECND,IAAA,0BAAA,kBAAA,YAAA;EALA,IAAA,SAAA,0BAAA,GAAA;EASW,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;;EAE5C,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;EAE1B,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;EACvB,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;EACjB,QAAA,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;EAClB,QAAA,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;;EAKnB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIG,eAAY,EAAQ,CAAC;EAE/C,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;EACpB,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;EACjB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;EACjB,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;EACjB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;EACjB,QAAA,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;EAGR,QAAA,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;OAwF7B;EArFC,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAU,CAAA,SAAA,EAAA,YAAA,EAAA;;EAAd,QAAA,GAAA,EAAA,YAAA;cACE,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC;WAC9C;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;EAAnB,QAAA,GAAA,EAAA,YAAA;;EAEE,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;WAC5D;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;UACE,IAAI,IAAI,CAAC,cAAc,EAAE;cACvB,IAAI,CAAC,WAAW,EAAE,CAAC;EACpB,SAAA;OACF,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UACE,IAAI,CAAC,UAAU,EAAE,CAAC;OACnB,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UAAA,IAcC,KAAA,GAAA,IAAA,CAAA;;EAbC,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;EACtB,QAAA,CAAA,EAAA,GAAA,SAAS,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjF,CAAA,IAAI,CAAC,UAAC,MAAM,EAAA;;EACX,YAAA,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACrB,YAAA,KAAI,CAAC,WAAW,GAAG,IAAI,CAAC;cACxB,IAAI,MAAA,KAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE;kBAChC,KAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC;EAChD,aAAA;WACF,CACA,CAAA,KAAK,CAAC,YAAA;EACL,YAAA,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;cACzB,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAAC;EACrF,SAAC,CAAC,CAAC;OACN,CAAA;;EAGD,IAAA,0BAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;;UACE,IAAM,KAAK,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC;UAC3C,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC;UAC7C,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;cAC1C,OAAO;EACR,SAAA;EACD,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;EAChC,QAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;EAClC,QAAA,CAAA,EAAA,GAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;UAC7E,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;;EAEvD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;EAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;OACtB,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;EACE,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EACtB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;EACtB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;EACzB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;OACtB,CAAA;;EAGD,IAAA,0BAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;UAAA,IAoBC,KAAA,GAAA,IAAA,CAAA;UAnBC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;cACrC,OAAO;EACR,SAAA;;UAED,IAAI,CAAC,UAAU,EAAE,CAAC;EAClB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;EACvB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;cACtB,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACrB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;UACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC;cAChD,IAAI,EAAE,YAAM,EAAA,OAAA,KAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA,EAAA;cACjC,KAAK,EAAE,UAAC,GAAQ,EAAA;EACd,gBAAA,KAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EACtB,gBAAA,KAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,OAAO;EAC1D,uBAAA,KAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAAC;eACtE;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;EAEO,IAAA,0BAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;;EACN,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,EAAA,CAAG,OAAO,CAAC,UAAC,CAAC,EAAK,EAAA,OAAA,CAAC,CAAC,IAAI,EAAE,CAAR,EAAQ,CAAC,CAAC;EAClD,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;OACzB,CAAA;;;gJAjHU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAd,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA1B,0BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,2hBCRvC,gnMAiGA,EAAA,MAAA,EAAA,CAAA,0tYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAG,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDzFa,0BAA0B,EAAA,UAAA,EAAA,CAAA;oBALtCE,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,wBAAwB;EAClC,oBAAA,WAAW,EAAE,qCAAqC;sBAClD,SAAS,EAAE,CAAC,qCAAqC,CAAC;mBACnD,CAAA;gCAEqB,QAAQ,EAAA,CAAA;wBAA3BU,YAAS;yBAAC,OAAO,CAAA;kBACG,SAAS,EAAA,CAAA;wBAA7BA,YAAS;yBAAC,QAAQ,CAAA;kBAEV,WAAW,EAAA,CAAA;wBAAnBC,QAAK;kBAEG,iBAAiB,EAAA,CAAA;wBAAzBA,QAAK;kBAEG,cAAc,EAAA,CAAA;wBAAtBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,aAAa,EAAA,CAAA;wBAArBA,QAAK;kBACG,eAAe,EAAA,CAAA;wBAAvBA,QAAK;kBAGG,aAAa,EAAA,CAAA;wBAArBA,QAAK;kBAEI,SAAS,EAAA,CAAA;wBAAlBC,SAAM;;;EEdT,IAAA,0BAAA,kBAAA,YAAA;MASE,SAC6B,0BAAA,CAAA,SAAoB,EACvC,sBAA8C,EAAA;EAD3B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EACvC,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EAR/C,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;UAC9C,IAAA,CAAA,WAAW,GAAgB,IAAIC,gBAAW,CAAC,EAAE,CAAC,CAAC;EAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,YAAA,GAAS,CAAC;EAMpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;UACE,IAAI,CAAC,SAAS,EAAE,CAAC;UACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;OAChC,CAAA;MAEO,0BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,KAAa,EAAA;UACrC,OAAO,8BAA8B,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;OACzD,CAAA;EAED;;;;EAIG;EACH,IAAA,0BAAA,CAAA,SAAA,CAAA,uBAAuB,GAAvB,YAAA;UAAA,IAoBC,KAAA,GAAA,IAAA,CAAA;;UAnBC,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC;UACxC,IAAI,CAAC,OAAO,EAAE;cACZ,OAAO;EACR,SAAA;EACD,QAAA,IAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;UACpD,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,mBAAmB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;cAC/F,IAAI,CAAC,qBAAqB,EAAE,CAAC;cAC7B,OAAO;EACR,SAAA;;;;UAID,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,QAAA,OAAO,CAAC,SAAS,CAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAG,EAAA,EAAA,kBAAkB,EAAE,IAAI,IAAG,CAAC;UAC3E,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;EACpE,YAAA,IAAI,EAAE,UAAC,QAAQ,EAAA,EAAK,OAAA,KAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,GAAA;;EAEpD,YAAA,KAAK,EAAE,YAAA,EAAM,OAAA,KAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA,EAAA;EAChD,SAAA,CAAC,CAAC;OACN,CAAA;EAEO,IAAA,0BAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,SAAkB,EAAE,QAAyB,EAAA;EAAzB,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAyB,GAAA,KAAA,CAAA,EAAA;;UACpE,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC;UACxC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;UAC9C,IAAI,CAAC,OAAO,EAAE;cACZ,OAAO;EACR,SAAA;EACD,QAAA,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE;EAC1B,YAAA,IAAM,MAAM,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAG,CAAC;EAC7C,YAAA,OAAO,MAAM,CAAC,oBAAoB,CAAC,CAAC;EACpC,YAAA,MAAM,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;EACnC,YAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;EAC3B,SAAA;EAAM,aAAA;;cAEL,OAAO,CAAC,sBAAsB,EAAE,CAAC;EAClC,SAAA;UACD,OAAO,CAAC,aAAa,EAAE,CAAC;OACzB,CAAA;EAEO,IAAA,0BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACN,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC;UACxC,IAAI,EAAC,CAAA,EAAA,GAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,mBAAmB,CAAC,CAAA,EAAE;cAC3C,OAAO;EACR,SAAA;EACD,QAAA,IAAM,MAAM,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,MAAM,CAAE,CAAC;EACrC,QAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC,CAAC;UACnC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;OAC/D,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC;;EAExC,QAAA,IAAI,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,oBAAoB,CAAC,EAAE;EAC3C,YAAA,OAAO,EAAE,CAAC;EACX,SAAA;EACD,QAAA,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,OAAO,MAAI,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,OAAO,CAAA,EAAE;EACxC,YAAA,OAAO,iCAAiC,CAAC;EAC1C,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;MAED,0BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;EACnB,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;EACzC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACxD,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,SAAA;OACF,CAAA;MAED,0BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,0BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAS,CAAC;OAC5B,CAAA;MAED,0BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAY,CAAA,SAAA,EAAA,cAAA,EAAA;EAAhB,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAnC,EAAmC,CAAC,CAAC;EAC9F,YAAA,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;WAChD;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAS,CAAA,SAAA,EAAA,WAAA,EAAA;EAAb,QAAA,GAAA,EAAA,YAAA;;cACE,QAAQ,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI;EACvC,gBAAA,KAAK,sBAAsB;EACzB,oBAAA,OAAO,QAAQ,CAAC;EAClB,gBAAA,KAAK,qBAAqB;EACxB,oBAAA,OAAO,OAAO,CAAC;EACjB,gBAAA,KAAK,8BAA8B;EACjC,oBAAA,OAAO,KAAK,CAAC;EACf,gBAAA,KAAK,mBAAmB;EACtB,oBAAA,OAAO,KAAK,CAAC;EACf,gBAAA;EACE,oBAAA,OAAO,MAAM,CAAC;EACjB,aAAA;WACF;;;EAAA,KAAA,CAAA,CAAA;MAED,0BAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,KAAoB,EAAA;;UACrC,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC;EAE/C,QAAA,IAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;;UAGpF,IAAI,IAAI,KAAK,sBAAsB,EAAE;cACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;kBAC7F,KAAK,CAAC,cAAc,EAAE,CAAC;EACxB,aAAA;EACF,SAAA;;UAGD,IAAI,IAAI,KAAK,8BAA8B,EAAE;cAC3C,IAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;cAEhD,IAAI,UAAU,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;kBACxD,KAAK,CAAC,cAAc,EAAE,CAAC;EACxB,aAAA;EACF,SAAA;OACF,CAAA;MAED,0BAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,KAAiB,EAAA;EAC7B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;cAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;EACxB,SAAA;OACF,CAAA;;;gJApKU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAAnB,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA1B,0BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,0LCVvC,4uBASc,EAAA,MAAA,EAAA,CAAA,0hYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAI,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDCD,0BAA0B,EAAA,UAAA,EAAA,CAAA;oBALtCE,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,yBAAyB;EACnC,oBAAA,WAAW,EAAE,sCAAsC;sBACnD,SAAS,EAAE,CAAC,sCAAsC,CAAC;mBACpD,CAAA;;;gCAWIe,WAAQ;;gCAAIC,OAAI;;2BATV,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;;;EELR,IAAA,yBAAA,kBAAA,YAAA;EASE,IAAA,SAAA,yBAAA,CAAuC,SAAoB,EAAA;EAApB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EANlD,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;UAC9C,IAAA,CAAA,WAAW,GAAgB,IAAIE,gBAAW,CAAC,EAAE,CAAC,CAAC;EAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,YAAA,GAAS,CAAC;EAGpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;EAED,IAAA,yBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,iCAAiC,CAAC;EAC1C,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;MAED,yBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;EACnB,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;EACzC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACxD,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,SAAA;OACF,CAAA;MAED,yBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,yBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAS,CAAC;OAC5B,CAAA;MAED,yBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,yBAAY,CAAA,SAAA,EAAA,cAAA,EAAA;EAAhB,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAnC,EAAmC,CAAC,CAAC;EAC9F,YAAA,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;WAChD;;;EAAA,KAAA,CAAA,CAAA;;;+IAjDU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAzB,yBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,yLCTtC,mqBAQc,EAAA,MAAA,EAAA,CAAA,0hYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDCD,yBAAyB,EAAA,UAAA,EAAA,CAAA;oBALrCE,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,wBAAwB;EAClC,oBAAA,WAAW,EAAE,qCAAqC;sBAClD,SAAS,EAAE,CAAC,qCAAqC,CAAC;mBACnD,CAAA;;;gCAUce,WAAQ;;gCAAIC,OAAI;;2BARpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;;;EEGR,IAAA,mBAAA,kBAAA,YAAA;EA6CE,IAAA,SAAA,mBAAA,GAAA;EA5CS,QAAA,IAAM,CAAA,MAAA,GAAW,MAAM,CAAC;EACxB,QAAA,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;EACzB,QAAA,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;EACrB,QAAA,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;EACrB,QAAA,IAAS,CAAA,SAAA,GAAW,GAAG,CAAC;EACxB,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;EAC1B,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;EAClB,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAIF,eAAY,EAAO,CAAC;UAC1D,IAAA,CAAA,YAAY,GAAwB;EAC3C,YAAA,QAAQ,EAAE,IAAI;EACd,YAAA,UAAU,EAAE,IAAI;EAChB,YAAA,MAAM,EAAE,MAAM;EACd,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,aAAa,EAAE,IAAI;EACnB,YAAA,WAAW,EAAE,IAAI;cACjB,WAAW,EAAE,IAAI,CAAC,WAAW;EAC7B,YAAA,yBAAyB,EAAE,EAAE;EAC7B,YAAA,QAAQ,EAAE,KAAK;EACf,YAAA,eAAe,EAAE,KAAK;EACtB,YAAA,oBAAoB,EAAE;EACpB,gBAAA;sBACE,MAAM;sBACN,MAAM;sBACN,eAAe;sBACf,WAAW;sBACX,aAAa;sBACb,QAAQ;sBACR,SAAS;sBACT,mBAAmB;sBACnB,SAAS;sBACT,UAAU;sBACV,WAAW;sBACX,iBAAiB;EAClB,iBAAA;EACD,gBAAA;sBACE,UAAU;sBACV,aAAa;sBACb,aAAa;sBACb,eAAe;sBACf,kBAAkB;EACnB,iBAAA;EACF,aAAA;WACF,CAAC;EACF,QAAA,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;OACC;MAEjB,mBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,OAAsB,EAAA;UAChC,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;cACrD,IAAI,CAAC,mBAAmB,EAAE,CAAC;EAC5B,SAAA;EACD,QAAA,IAAI,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE;EACpB,YAAA,IAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;EACzC,YAAA,IAAI,GAAG,EAAE;kBACP,IAAI,qBAAqB,GAAG,GAAG,CAAC;kBAChC,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;kBAC7E,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;EACvE,gBAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC;EACjD,aAAA;EAAM,iBAAA;EACL,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;EACtB,aAAA;EACF,SAAA;UACD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;OAClD,CAAA;EAED,IAAA,mBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;UACE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;UACvC,IAAI,CAAC,mBAAmB,EAAE,CAAC;OAC5B,CAAA;EACD,IAAA,mBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;UACE,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;OAC7C,CAAA;MAED,mBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,KAAU,EAAA;EACtB,QAAA,IAAI,KAAK,EAAE;cACT,IAAI,qBAAqB,GAAG,KAAK,CAAC;cAClC,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;cAC7E,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;EACvE,YAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC;EACjD,SAAA;EACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OAC9B,CAAA;MACD,mBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,KAAqB,EAAA;UAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;EACvB,QAAA,IAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;EAC1C,QAAA,IAAI,CAAC,aAAa;cAAE,OAAO;UAC3B,IAAI,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;EACrD,QAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;UAC3C,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;OACvD,CAAA;MAED,mBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,IAAY,EAAA;EACvB,QAAA,OAAO,IAAI,CAAC;OACb,CAAA;;;yIA7FU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAd,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAnB,mBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,0UChBhC,+RAIM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAG,eAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDYO,mBAAmB,EAAA,UAAA,EAAA,CAAA;oBAL/BG,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,iBAAiB;EAC3B,oBAAA,WAAW,EAAE,8BAA8B;sBAC3C,SAAS,EAAE,CAAC,8BAA8B,CAAC;mBAC5C,CAAA;4EAEU,MAAM,EAAA,CAAA;wBAAdW,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,OAAO,EAAA,CAAA;wBAAfA,QAAK;kBACG,OAAO,EAAA,CAAA;wBAAfA,QAAK;kBACG,SAAS,EAAA,CAAA;wBAAjBA,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACI,WAAW,EAAA,CAAA;wBAApBC,SAAM;kBACE,YAAY,EAAA,CAAA;wBAApBD,QAAK;;;EEhBR,IAAA,2BAAA,kBAAA,YAAA;EASE,IAAA,SAAA,2BAAA,CAAuC,SAAoB,EAAA;EAApB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EANlD,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;UAC9C,IAAA,CAAA,WAAW,GAAgB,IAAIE,gBAAW,CAAC,EAAE,CAAC,CAAC;EAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,YAAA,GAAS,CAAC;EAGpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;EAED,IAAA,2BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,IAAI,CAAC;EACb,SAAA;EACD,QAAA,OAAO,KAAK,CAAC;OACd,CAAA;MAED,2BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;EACnB,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;EACzC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACxD,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,SAAA;OACF,CAAA;MAED,2BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,2BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAS,CAAC;OAC5B,CAAA;MAED,2BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;;;iJA5CU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA3B,2BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,2LCTxC,oxBAYc,EAAA,MAAA,EAAA,CAAA,0hYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAsB,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAlB,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDHD,2BAA2B,EAAA,UAAA,EAAA,CAAA;oBALvCC,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,0BAA0B;EACpC,oBAAA,WAAW,EAAE,uCAAuC;sBACpD,SAAS,EAAE,CAAC,uCAAuC,CAAC;mBACrD,CAAA;;;gCAUce,WAAQ;;gCAAIC,OAAI;;2BARpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;;;EEPR,IAAA,WAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,WAAA,GAAA;;EACI,IAAA,WAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,KAA+B,EAAE,KAAyB,EAAA;EAAzB,QAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAyB,GAAA,SAAA,CAAA,EAAA;EAChE,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;cACvB,OAAO,KAAK,IAAI,EAAE,CAAC;EACtB,SAAA;UAED,OAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAI,KAAK,CAAE,CAAA,CAAA,IAAI,CAAC,UAAC,CAAM,EAAE,CAAM,EAAA;;EAClC,YAAA,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAG,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;EAC7B,YAAA,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAG,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;cAC7B,OAAO,IAAI,GAAG,IAAI,CAAC;EACvB,SAAC,CAAC,CAAC;OACN,CAAA;;;iIAXQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAhB,aAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;+HAAX,WAAW,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;oHAAX,WAAW,EAAA,UAAA,EAAA,CAAA;oBAJvBuB,OAAI;EAAC,YAAA,IAAA,EAAA,CAAA;EACF,oBAAA,IAAI,EAAE,SAAS;EACf,oBAAA,IAAI,EAAE,IAAI;mBACb,CAAA;;;ECID,IAAA,8BAAA,kBAAA,YAAA;EAWE,IAAA,SAAA,8BAAA,CAAuC,SAAoB,EAAA;EAApB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EARlD,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;EACpC,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAE3C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIT,eAAY,EAAE,CAAC;EAClC,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAII,gBAAW,EAAE,CAAC;EAEpD,QAAA,IAAA,CAAA,WAAW,GAAG,YAAA,GAAS,CAAC;EAGtB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;MAED,8BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;;EACnB,QAAA,IAAI,KAAK,EAAE;EACT,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;EACnC,YAAA,IAAI,MAAM,GAAG,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAC,CAAM,EAAI,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,OAAK,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,EAAE,CAAA,CAAA,EAAA,CAAC,CAAC;EAC/F,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACpC,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EACnC,SAAA;OACF,CAAA;MAED,8BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,8BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAS,CAAC;OAC9B,CAAA;MAED,8BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;MAED,8BAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,IAAS,EAAA;EAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAC3B,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,GAAQ,EAAE,cAAuB,EAAA;EAC/C,QAAA,IAAI,IAAI,GAAG;cACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;EACvB,YAAA,IAAI,EAAE,GAAG,CAAC,mBAAmB,CAAC;EAC9B,YAAA,UAAU,EAAE,cAAc;WAC3B,CAAA;EACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;UAC1B,OAAO;OACR,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;UACE,IAAI,CAAC,WAAW,EAAE,CAAC;OACpB,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,8CAA8C,CAAC;EACvD,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;;UACE,OAAO,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC;OACrC,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;;EACE,QAAA,OAAO,IAAI,CAAC,kBAAkB,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC;OACvG,CAAA;MAED,8BAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,MAAW,EAAA;;EAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;EAC/B,YAAA,OAAO,IAAI,CAAC;EACb,SAAA;EAED,QAAA,IAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;EACpD,QAAA,IAAM,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAK,gBAAgB,CAAC;EAC3D,QAAA,IAAM,SAAS,GAAG,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,CAAC;EAE3C,QAAA,IAAI,UAAU,EAAE;cACd,OAAO,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;EAC5C,SAAA;EAAM,aAAA;;EAEL,YAAA,IAAM,cAAc,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAM,EAAI,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAK,gBAAgB,CAAA,EAAA,CAAC,CAAC;cAC/G,IAAM,iBAAiB,GAAG,CAAC,CAAA,EAAA,GAAA,cAAc,aAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,IAAI,CAAC,CAAC;EAC5D,YAAA,IAAI,CAAC,iBAAiB,IAAI,SAAS,EAAE;EACnC,gBAAA,OAAO,SAAS,CAAC;EAClB,aAAA;EACF,SAAA;EACD,QAAA,OAAO,IAAI,CAAC;OACb,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;EAED,IAAA,8BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAa,EAAE,MAAW,EAAA;;EACxC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5E,CAAA;;;oJAxGU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA9B,8BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,yQCT3C,8jEAuBM,EAAA,MAAA,EAAA,CAAA,gmYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAAsB,WAAA,EAAA,EAAA,CAAA,CAAA;oHDdO,8BAA8B,EAAA,UAAA,EAAA,CAAA;oBAL1CnB,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,6BAA6B;EACvC,oBAAA,WAAW,EAAE,0CAA0C;sBACvD,SAAS,EAAE,CAAC,0CAA0C,CAAC;mBACxD,CAAA;;;gCAYce,WAAQ;;gCAAIC,OAAI;;2BAVpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,kBAAkB,EAAA,CAAA;wBAA1BA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,SAAS,EAAA,CAAA;wBAAjBA,QAAK;kBACI,SAAS,EAAA,CAAA;wBAAlBC,SAAM;;;EENT,IAAA,gCAAA,kBAAA,YAAA;EAYE,IAAA,SAAA,gCAAA,CAAuC,SAAoB,EAAA;EAApB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EATlD,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;EACpC,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAE3C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIH,eAAY,EAAE,CAAC;EACzC,QAAA,IAAU,CAAA,UAAA,GAAe,EAAE,CAAC;EACrB,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAII,gBAAW,EAAE,CAAC;EAEpD,QAAA,IAAA,CAAA,WAAW,GAAG,YAAA,GAAQ,CAAC;EAGrB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAU,EAAE,IAAS,EAAA;;EACnC,QAAA,IAAM,OAAO,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAK,CAAC,CAAC;EAC7H,QAAA,IAAI,OAAO,EAAE;EACX,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC5B,SAAA;EAAM,aAAA;cACL,IAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAA,KAAK,EAAA,EAAI,OAAA,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAA,EAAA,CAAC,CAAC;EAClE,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;kBACV,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC9B,aAAA;EACF,SAAA;UACD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAE,aAAA,CAAA,EAAA,EAAA,MAAA,CAAK,IAAI,CAAC,UAAU,KAAI,IAAI,CAAC,CAAC;EAClF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;OACnC,CAAA;MAED,gCAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;UACnB,IAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAChC,YAAA,IAAI,CAAC,UAAU,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAK,EAAC,CAAC;EAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAClE,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACrB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACvD,SAAA;OACF,CAAA;MAED,gCAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,MAAU,EAAA;;UACrB,IAAG,IAAI,CAAC,UAAU,EAAC;cACjB,OAAO,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,UAAC,CAAM,EAAA,EAAK,OAAA,CAAA,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,EAAE,KAAI,CAAA,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,EAAE,OAAK,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,EAAE,CAAA,CAA7B,EAA6B,CAAC,MAAK,CAAC,CAAC,CAAC;EACrF,SAAA;EAAC,QAAA,OAAO,KAAK,CAAA;OACf,CAAA;MAED,gCAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,gCAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAS,CAAC;OAC9B,CAAA;MAED,gCAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;UACE,IAAI,CAAC,WAAW,EAAE,CAAC;OACpB,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,8CAA8C,CAAC;EACvD,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,GAAQ,EAAE,cAAuB,EAAA;;EAC/C,QAAA,IAAI,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAvB,EAAuB,CAAC,CAAC;EAC1F,QAAA,IAAI,IAAI,GAAG;cACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;EACvB,YAAA,IAAI,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,iBAAiB;EAC/B,YAAA,UAAU,EAAE,cAAc;WAC3B,CAAA;EACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAC3B,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;EACE,QAAA,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,uBAAuB,CAAA,EAAE;EAC5C,YAAA,OAAO,EAAE,CAAC;EACX,SAAA;EACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB;EAC1C,aAAA,MAAM,CAAC,UAAC,CAAM,EAAA,EAAK,OAAA,CAAC,CAAC,QAAQ,KAAK,KAAK,CAApB,EAAoB,CAAC;EACxC,aAAA,GAAG,CAAC,UAAC,CAAM,EAAA,EAAI,IAAA,EAAA,EAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,0CAAE,EAAE,CAAA,EAAA,CAAC;eAC7C,MAAM,CAAC,UAAC,EAAO,EAAK,EAAA,OAAA,EAAE,IAAI,IAAI,CAAA,EAAA,CAAC,CAAC;OACpC,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;;EACE,QAAA,OAAO,IAAI,CAAC,kBAAkB,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;OAC3G,CAAA;MAED,gCAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,MAAW,EAAA;;EAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;EAC/B,YAAA,OAAO,IAAI,CAAC;EACb,SAAA;EAED,QAAA,IAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;EACtD,QAAA,IAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,CAAC;EAClE,QAAA,IAAM,SAAS,GAAG,CAAC,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,CAAC;EAE3C,QAAA,IAAI,UAAU,EAAE;cACd,OAAO,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;EAC5C,SAAA;EAAM,aAAA;;EAEL,YAAA,IAAM,kBAAgB,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CACtD,MAAM,CAAC,UAAC,CAAM,IAAI,IAAA,EAAA,CAAA,CAAC,OAAA,CAAC,CAAA,EAAA,GAAA,CAAC,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC,0CACvC,GAAG,CAAC,UAAC,CAAM,EAAA,UAAK,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA,EAAA,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;cAEzC,IAAM,kBAAkB,GACtB,iBAAiB,CAAC,MAAM,KAAK,kBAAgB,CAAC,MAAM;EACpD,gBAAA,iBAAiB,CAAC,KAAK,CAAC,UAAC,EAAO,IAAK,OAAA,kBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAA7B,EAA6B,CAAC,CAAC;EAEtE,YAAA,IAAI,CAAC,kBAAkB,IAAI,SAAS,EAAE;EACpC,gBAAA,OAAO,SAAS,CAAC;EAClB,aAAA;EACF,SAAA;EACD,QAAA,OAAO,IAAI,CAAC;OACb,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;EAED,IAAA,gCAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAa,EAAE,MAAW,EAAA;;EACxC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5E,CAAA;;;sJArIU,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAhC,gCAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,2QCT7C,g/DAuBM,EAAA,MAAA,EAAA,CAAA,gmYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAAsB,WAAA,EAAA,EAAA,CAAA,CAAA;oHDdO,gCAAgC,EAAA,UAAA,EAAA,CAAA;oBAL5CnB,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,+BAA+B;EACzC,oBAAA,WAAW,EAAE,4CAA4C;sBACzD,SAAS,EAAE,CAAC,4CAA4C,CAAC;mBAC1D,CAAA;;;gCAace,WAAQ;;gCAAIC,OAAI;;2BAXpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,kBAAkB,EAAA,CAAA;wBAA1BA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,SAAS,EAAA,CAAA;wBAAjBA,QAAK;kBACI,SAAS,EAAA,CAAA;wBAAlBC,SAAM;;;EENT,IAAA,+BAAA,kBAAA,YAAA;EASE,IAAA,SAAA,+BAAA,CAAuC,SAAoB,EAAA;EAApB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EANjD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAIH,eAAY,EAAE,CAAC;EACzC,QAAA,IAAU,CAAA,UAAA,GAAe,EAAE,CAAC;EACrB,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAII,gBAAW,EAAE,CAAC;EAEpD,QAAA,IAAA,CAAA,WAAW,GAAG,YAAA,GAAQ,CAAC;EAGrB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;MAED,+BAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAS,EAAA;EACvB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ;cAAE,OAAO;UAEtC,IAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;EAC3C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;EAChB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC5B,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;EAClC,SAAA;UAED,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAE,aAAA,CAAA,EAAA,EAAA,MAAA,CAAK,IAAI,CAAC,UAAU,KAAI,IAAI,CAAC,CAAC;EAClF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;UAClC,IAAI,CAAC,SAAS,EAAE,CAAC;OAClB,CAAA;MAED,+BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;UACnB,IAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAChC,YAAA,IAAI,CAAC,UAAU,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAK,EAAC,CAAC;EAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAClE,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACrB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACvD,SAAA;OACF,CAAA;MAED,+BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,MAAW,EAAA;;UAC3B,IAAI,IAAI,CAAC,UAAU,EAAE;cACnB,OAAO,MAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,UAAC,CAAM,EAAA,EAAK,OAAA,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,EAAE,KAAI,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,EAAE,OAAK,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,EAAE,CAAA,CAAA,EAAA,CAAC,CAAC;EAC9E,SAAA;EAAM,aAAA;cACL,OAAO,CAAC,CAAC,CAAC;EACX,SAAA;OACF,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,+BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAS,CAAC;OAC9B,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;UACE,IAAI,CAAC,WAAW,EAAE,CAAC;OACpB,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,8CAA8C,CAAC;EACvD,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,GAAQ,EAAE,cAAuB,EAAA;;EAC/C,QAAA,IAAI,MAAM,GAAG,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAC,CAAM,EAAI,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,OAAK,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,EAAE,CAAA,CAAA,EAAA,CAAC,CAAC;EAC7F,QAAA,IAAI,IAAI,GAAG;cACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;EACvB,YAAA,IAAI,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,iBAAiB;EAC/B,YAAA,UAAU,EAAE,cAAc;WAC3B,CAAA;EACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAC3B,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAa,EAAE,MAAW,EAAA;;EACxC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5E,CAAA;;;qJAvFU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA/B,+BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,4KCT5C,8sCAkBM,EAAA,MAAA,EAAA,CAAA,4sYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAAsB,WAAA,EAAA,EAAA,CAAA,CAAA;oHDTO,+BAA+B,EAAA,UAAA,EAAA,CAAA;oBAL3CnB,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,8BAA8B;EACxC,oBAAA,WAAW,EAAE,2CAA2C;sBACxD,SAAS,EAAE,CAAC,2CAA2C,CAAC;mBACzD,CAAA;;;gCAUce,WAAQ;;gCAAIC,OAAI;;2BARpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACI,SAAS,EAAA,CAAA;wBAAlBC,SAAM;;;EEDT,IAAA,+BAAA,kBAAA,YAAA;MAcE,SAC6B,+BAAA,CAAA,SAAoB,EACvC,iBAAyC,EAAA;EADtB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EACvC,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAwB;EAZ1C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAE3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAIH,eAAY,EAA2D,CAAC;EAEjG,QAAA,IAAK,CAAA,KAAA,GAAiB,EAAE,CAAC;UACzB,IAAA,CAAA,WAAW,GAAgB,IAAII,gBAAW,CAAC,EAAE,CAAC,CAAC;EAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,YAAA,GAAS,CAAC;EAMpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;MAED,+BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;UACnB,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EACjC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACnB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACxD,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EAChB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,SAAA;OACF,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,+BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAS,CAAC;OAC5B,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,+BAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;EAAZ,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,cAAc,CAA9B,EAA8B,CAAC,CAAC;EACzF,YAAA,OAAO,MAAM,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;WACtE;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,+BAAW,CAAA,SAAA,EAAA,aAAA,EAAA;EAAf,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,aAAa,CAA7B,EAA6B,CAAC,CAAC;;EAExF,YAAA,OAAO,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,WAAW,IAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;WAC3E;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,+BAAa,CAAA,SAAA,EAAA,eAAA,EAAA;EAAjB,QAAA,GAAA,EAAA,YAAA;cACE,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;WACjD;;;EAAA,KAAA,CAAA,CAAA;MAED,+BAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAU,EAAA;UAAvB,IAmBC,KAAA,GAAA,IAAA,CAAA;;EAlBC,QAAA,IAAM,UAAU,GAAa,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;EAChD,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;cACvC,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACxC,YAAA,IAAM,OAAK,GAAG,IAAI,CAAC,WAAW,CAAC;cAC/B,IAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,OAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAK,CAAA,EAAA,CAAC,CAAC;EAExE,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;EACvC,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,0CAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EAC1L,aAAA;EAED,YAAA,UAAU,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;EACrB,gBAAA,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EACxB,aAAC,CAAC,CAAC;EACJ,SAAA;UAED,IAAI,IAAI,CAAC,SAAS,EAAE;cAClB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;EACzC,SAAA;OACF,CAAA;MAED,+BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,IAAU,EAAA;UAArB,IA2BC,KAAA,GAAA,IAAA,CAAA;;EA1BC,QAAA,IAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;EAChC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EAC9B,QAAA,IAAM,MAAM,GAAG;EACb,YAAA,UAAU,EAAE,iCAAiC;EAC7C,YAAA,QAAQ,EAAE,IAAI;EACd,YAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;cAC5B,QAAQ,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,0CAAE,QAAQ;cACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;WAChD,CAAA;UACD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;cAClE,IAAI,EAAE,UAAC,IAAS,EAAA;kBAEd,IAAI,KAAI,CAAC,aAAa,EAAE;sBACtB,KAAI,CAAC,KAAK,GAAO,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAI,CAAC,KAAK,CAAA,CAAA,EAAA,CAAE,IAAI,CAAA,CAAC,CAAC;EACpC,iBAAA;EAAM,qBAAA;EACL,oBAAA,KAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;EACrB,iBAAA;kBAED,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;kBACtC,KAAI,CAAC,SAAS,EAAE,CAAC;eAClB;cACD,KAAK,EAAE,UAAC,KAAU,EAAA;kBAChB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EACvH,gBAAA,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;eACnD;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;MAED,+BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAa,EAAA;UACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;UAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,0BAAK,IAAI,CAAC,KAAK,CAAA,CAAA,CAAE,CAAC;UAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;OAClB,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;MAED,+BAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,UAAsB,EAAA;EAChC,QAAA,IAAM,WAAW,GAA8B;EAC7C,YAAA,KAAK,EAAE,6BAA6B;EACpC,YAAA,YAAY,EAAE,8BAA8B;EAC5C,YAAA,WAAW,EAAE,6BAA6B;EAC1C,YAAA,WAAW,EAAE,6BAA6B;EAC1C,YAAA,WAAW,EAAE,6BAA6B;WAC3C,CAAC;EACF,QAAA,IAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;EACrC,QAAA,IAAI,QAAQ,EAAE;EACZ,YAAA,IAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;EAC7C,YAAA,KAAK,IAAM,GAAG,IAAI,WAAW,EAAE;EAC7B,gBAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EAC/B,oBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC;EACvG,iBAAA;EACF,aAAA;EACF,SAAA;EAED,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC;OACjE,CAAA;MAED,+BAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,GAAW,EAAA;EAClB,QAAA,IAAI,GAAG,EAAE;EACP,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;EAC5B,SAAA;OACF,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,KAAa,EAAE,IAAgB,EAAA;EACzC,QAAA,OAAO,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OACvD,CAAA;;;qJAzJU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAAnB,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA/B,+BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,uYCX5C,klEA8BW,EAAA,MAAA,EAAA,CAAA,omYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAI,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAAA,eAAA,CAAA,WAAA,EAAA,EAAA,CAAA,CAAA;oHDnBE,+BAA+B,EAAA,UAAA,EAAA,CAAA;oBAL3CC,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,+BAA+B;EACzC,oBAAA,WAAW,EAAE,4CAA4C;sBACzD,SAAS,EAAE,CAAC,4CAA4C,CAAC;mBAC1D,CAAA;;;gCAgBIe,WAAQ;;gCAAIC,OAAI;;2BAdV,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,oBAAoB,EAAA,CAAA;wBAA5BA,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACkB,SAAS,EAAA,CAAA;wBAAhCD,YAAS;yBAAC,WAAW,CAAA;kBACZ,eAAe,EAAA,CAAA;wBAAxBE,SAAM;;;EEdT;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAQA,IAAA,+BAAA,kBAAA,YAAA;MASE,SAAuC,+BAAA,CAAA,SAAoB,EAAU,QAAkB,EAAA;EAAhD,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;EAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;EAN9E,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;UAC9C,IAAA,CAAA,WAAW,GAAgB,IAAIC,gBAAW,CAAC,EAAE,CAAC,CAAC;EAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,YAAA,GAAS,CAAC;EAGpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;EAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;EACrC,SAAA;OACF;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,YAAA;;UACE,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAA,EAAE;EACxE,YAAA,OAAO,iCAAiC,CAAC;EAC1C,SAAA;EACD,QAAA,OAAO,EAAE,CAAC;OACX,CAAA;MAED,+BAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAU,EAAA;EACnB,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;cACzC,IAAI,SAAS,GAAG,KAAK,CAAC;cACtB,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE;EAC/C,gBAAA,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;EAC5B,aAAA;mBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;EACxD,gBAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;EAC9B,aAAA;EACD,YAAA,IAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;EACvE,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChE,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,SAAA;OACF,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,EAAY,EAAA;EAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,EAAE,CAAC,GAAG,CAAC,CAAP,EAAO,CAAC,CAAC;OAC3D,CAAA;MAED,+BAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,EAAY,EAAA;EAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAS,CAAC;OAC5B,CAAA;MAED,+BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,UAAmB,EAAA;EAClC,QAAA,IAAI,UAAU,EAAE;cACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChD,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/C,SAAA;OACF,CAAA;EAED,IAAA,+BAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;EACE,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;EACnC,QAAA,IAAI,CAAC,GAAG;EAAE,YAAA,OAAO,EAAE,CAAC;UACpB,IAAI,SAAS,GAAG,GAAG,CAAC;UACpB,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;EAC3C,YAAA,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;EAC1B,SAAA;eAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;EACpD,YAAA,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;EAC5B,SAAA;EACD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;OAC/D,CAAA;;;qJA/DU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,eAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAAF,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAA/B,+BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAF/B,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA,CAACyB,aAAQ,CAAC,qCCtBvB,q8BAYA,EAAA,MAAA,EAAA,CAAA,0hYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAArB,eAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAF,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDYa,+BAA+B,EAAA,UAAA,EAAA,CAAA;oBAN3CE,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,+BAA+B;EACzC,oBAAA,WAAW,EAAE,4CAA4C;sBACzD,SAAS,EAAE,CAAC,4CAA4C,CAAC;sBACzD,SAAS,EAAE,CAACoB,aAAQ,CAAC;mBACtB,CAAA;;;gCAUcL,WAAQ;;gCAAIC,OAAI;;2BARpB,QAAQ,EAAA,CAAA;wBAAhBL,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;;;AEHR,MAAA,wBAAA,kBAAA,YAAA;EA4IE,IAAA,SAAA,wBAAA,CACU,sBAA8C,EAC9C,EAAe,EACf,sBAA8C,EAC9C,SAAuB,EACvB,MAAiB,EACjB,GAAsB,EACtB,iBAAoC,EAAA;UAP9C,IAQK,KAAA,GAAA,IAAA,CAAA;EAPK,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EAC9C,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;EACf,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EAC9C,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;EACvB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;EACjB,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;EACtB,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;EAlJrC,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;EAG5B,QAAA,IAAA,CAAA,YAAY,GAAgB,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;EACrE,QAAA,IAAA,CAAA,YAAY,GAAgB,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;EACrE,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;EAC1B,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;EAC9B,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;EAEjC,QAAA,IAAgB,CAAA,gBAAA,GAAiC,EAAE,CAAC;EACpD,QAAA,IAAe,CAAA,eAAA,GAAY,IAAI,CAAC;EAChC,QAAA,IAAgB,CAAA,gBAAA,GAA0C,EAAE,CAAC;EAC7D,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;EACpC,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;EACpC,QAAA,IAAuB,CAAA,uBAAA,GAAY,KAAK,CAAC;EACzC,QAAA,IAA2B,CAAA,2BAAA,GAAY,IAAI,CAAC;EAG3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAIF,eAAY,EAA2D,CAAC;EAC9F,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAIA,eAAY,EAAO,CAAC;EAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAIA,eAAY,EAAkB,CAAC;EACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAIA,eAAY,EAAW,CAAC;EAEzD,QAAA,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;EAC3B,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;EACZ,QAAA,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAC;EACjC,QAAA,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;EACvC,QAAA,IAAY,CAAA,YAAA,GAAuC,EAAE,CAAC;EACtD,QAAA,IAA2B,CAAA,2BAAA,GAA4B,EAAE,CAAC;EAC1D,QAAA,IAAc,CAAA,cAAA,GAAe,EAAE,CAAC;EAChC,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;EAC/B,QAAA,IAAa,CAAA,aAAA,GAAQ,IAAI,CAAC;EAC1B,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;EAC1B,QAAA,IAAW,CAAA,WAAA,GAAW,OAAO,CAAC;EAC9B,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;EAC7B,QAAA,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;EAClC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;EAC9B,QAAA,IAAiB,CAAA,iBAAA,GAAkD,EAAE,CAAC;UACtE,IAAA,CAAA,gBAAgB,GAAG,IAAII,gBAAW,CAAC,EAAE,CAAC,CAAC;EACvC,QAAA,IAAa,CAAA,aAAA,GAAc,EAAE,CAAC;EACtB,QAAA,IAAe,CAAA,eAAA,GAA2B,EAAE,CAAC;EAC7C,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;EACpC,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;EACvB,QAAA,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;EAE5B,QAAA,IAAiB,CAAA,iBAAA,GAAW,CAAC,CAAC;EAWtC,QAAA,IAAa,CAAA,aAAA,GAAc,EAAE,CAAC;EAC9B,QAAA,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC;EACrB,QAAA,IAAY,CAAA,YAAA,GAA4B,EAAE,CAAC;UAE3C,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;;;EAgUnC,QAAA,IAAA,CAAA,kBAAkB,GAAG,UAAC,oBAA4B,EAChD,EAAA,OAAA,KAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAA,EAAA,CAAC;OA9O/C;EAjGL,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;EAApB,QAAA,GAAA,EAAA,YAAA;cACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;WAC/B;EACD,QAAA,GAAA,EAAA,UAAqB,KAAa,EAAA;EAChC,YAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE;EACpC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;kBAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;EACxB,aAAA;WACF;;;EANA,KAAA,CAAA,CAAA;EAeD,IAAA,wBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;UACE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;OACzC,CAAA;EAED;;;;EAIG;MAEH,wBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,KAAwB,EAAA;UACrC,IAAI,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;cAClE,KAAK,CAAC,cAAc,EAAE,CAAC;EACvB,YAAA,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;EACxB,SAAA;OACF,CAAA;EAED;;;;EAIG;EAEH,IAAA,wBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;UAAA,IAmBC,KAAA,GAAA,IAAA,CAAA;UAlBC,IAAI,IAAI,CAAC,mBAAmB,EAAE;;EAE5B,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;cACjC,OAAO;EACR,SAAA;UACD,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;cACvD,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,SAAS,CAAC,UAAC,SAAkB,EAAA;EACzD,YAAA,IAAI,SAAS,EAAE;EACb,gBAAA,KAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;EAChC,gBAAA,KAAI,CAAC,cAAc,GAAG,KAAK,CAAC;EAC5B,gBAAA,OAAO,CAAC,IAAI,EAAE,CAAC;EAChB,aAAA;EAAM,iBAAA;;kBAEL,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC5C,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;UACN,OAAO,IAAI,CAAC,wBAAwB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;OACtE,CAAA;;EAGO,IAAA,wBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;UACN,IAAI,IAAI,CAAC,cAAc,EAAE;cACvB,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;UAC3B,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;OAC5C,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,YAAA;EACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;EACnD,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,QAAQ,EAAE,KAAK;EACf,YAAA,KAAK,EAAE,OAAO;cACd,UAAU,EAAE,CAAC,mBAAmB,CAAC;EACjC,YAAA,IAAI,EAAE;EACJ,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,mDAAmD,CAAC;EAC5E,gBAAA,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,qDAAqD,CAAC;EAChF,gBAAA,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC;EAClE,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC;EACjE,aAAA;WACF,CAAC,CAAC,WAAW,EAAE,CAAC;OAClB,CAAA;EAYD,IAAA,wBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;UACE,IAAI,CAAC,kBAAkB,EAAE,CAAC;UAE1B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,0CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAK,2BAA2B,EAAE;EACpG,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACtB,SAAA;UAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;EAC1B,YAAA,IAAI,CAAC,oBAAoB,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,mCAAI,IAAI,CAAC,oBAAoB,CAAC;EAC3G,YAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,mCAAI,IAAI,CAAC,YAAY,CAAC;EACjF,SAAA;UAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;cAC7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC3B,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UACE,IAAI,IAAI,CAAC,aAAa,EAAE;EACtB,YAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACnC,SAAA;EACD,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;cAC9B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;EACvD,SAAA;OACF,CAAA;EAED;;;;EAIG;EACK,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;EACN,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;EAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;UACjC,IAAI,CAAC,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,sBAAsB,EAAE;cACjE,OAAO;EACR,SAAA;UACD,IAAM,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAI,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAC;UACtE,IAAI,CAAC,UAAU,EAAE;cACf,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;UACnC,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;cACrE,IAAI,EAAE,eAAwC;cAC9C,KAAK,EAAE,eAA4C;EACpD,SAAA,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;UAAA,IAUC,KAAA,GAAA,IAAA,CAAA;EATC,QAAAQ,aAAQ,CAAC;cACP,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,kBAAkB,CAAC;cAC1E,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,kBAAkB,CAAC;EAC3E,SAAA,CAAC,CAAC,SAAS,CAAC,UAAC,GAAQ,EAAA;EACpB,YAAA,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;EACzE,YAAA,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;EAEzE,YAAA,KAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC5B,SAAC,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;UAAA,IAwBC,KAAA,GAAA,IAAA,CAAA;;EAvBC,QAAA,IAAM,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GACR,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,IAAI;EAC7C,YAAA,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;WAC7G,KACG,CAAA,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,EAAC,MAAA,IAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,IAAI;EACzD,YAAA,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;EACtF,SAAA,EACF,CAAA;UACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;EACpC,YAAAA,aAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;kBAC3B,IAAI,EAAE,UAAC,IAAS,EAAA;;EACd,oBAAA,KAAI,CAAC,iBAAiB,GAAG,MAAA,CAAA,EAAA,GAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,cAAc,0CAAG,CAAC,CAAC,mCAAI,KAAI,CAAC,iBAAiB,CAAC;EAC7E,oBAAA,KAAI,CAAC,gBAAgB,GAAG,CAAA,EAAA,GAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAI,CAAC,gBAAgB,CAAC;sBACxE,KAAI,CAAC,cAAc,EAAE,CAAA;mBACtB;kBACD,KAAK,EAAE,UAAA,KAAK,EAAA;sBACV,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;sBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;mBAC/B;EACF,aAAA,CAAC,CAAC;EACJ,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,cAAc,EAAE,CAAC;EACvB,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;;EACE,QAAA,IAAI,CAAC,2BAA2B,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,0BAA0B,CAAC;EACtF,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC;EACzD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAc,CAAC;EAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,0CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;UAElE,IAAI,MAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,EAAE;cAC7B,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,2BAA2B,EAAE;EAChF,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACtB,aAAA;EACF,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,gBAAgB,GAAG;EACtB,gBAAA,EAAE,EAAE,CAAC;EACL,gBAAA,kBAAkB,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE;kBACrD,QAAQ,EAAE,IAAI,CAAC,YAAY;kBAC3B,QAAQ,EAAE,IAAI,CAAC,YAAY;EAC3B,gBAAA,sBAAsB,EAAE,EAAE;kBAC1B,MAAM,EAAE,IAAI,CAAC,QAAQ;eACtB,CAAC;EACH,SAAA;EACD,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;UAClE,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;EAC7C,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;EACjC,SAAA;UACD,IAAI,CAAC,SAAS,EAAE,CAAC;OAClB,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;UAAA,IA8EC,KAAA,GAAA,IAAA,CAAA;;EA7EC,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;UAE5B,CAAA,EAAA,GAAA,WAAW,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,wBAAwB,CAAC,0CAAE,OAAO,CAAC,UAAC,OAA6B,EAAA;;cAC7G,IAAM,KAAK,GAAQ,EAAE,CAAC;cAEtB,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,oBAAoB,CAAC,0CAAE,OAAO,CAAC,UAAC,EAAmB,EAAA;;EACtE,gBAAA,IAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;kBAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC;sBAAE,OAAO;kBAE5C,IAAM,QAAQ,GAAG,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;kBACxC,KAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,WAAW,CAAC,CAAC;kBAEnE,IAAI,MAAA,QAAQ,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EACvC,oBAAA,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAC,MAAW,EAAA;;0BAC9C,IAAI,MAAM,CAAC,eAAe,EAAE;;8BAE1B,IAAI,SAAS,GAAG,IAAI,CAAC;8BACrB,IAAM,gBAAgB,GAAG,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;EACtD,4BAAA,IAAI,gBAAgB,EAAE;kCACpB,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,MAAA,KAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,0CAAE,IAAI,CAAC,UAAC,CAAM,IACxE,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,CAAC,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAA,EAAA,CACzF,CAAC;EACF,gCAAA,IAAI,MAAM,EAAE;EACV,oCAAA,IAAI,CAAA,MAAA,QAAQ,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,yBAAyB,KAAK,gBAAgB,MAAM,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,MAAM,CAAC,EAAE,CAAC,IAAI,CAAA,gBAAgB,KAAhB,IAAA,IAAA,gBAAgB,uBAAhB,gBAAgB,CAAE,EAAE,OAAM,CAAA,EAAA,GAAA,MAAA,MAAM,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE;EACvL,wCAAA,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;EACpC,qCAAA;EAAM,yCAAA,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;EAC1C,wCAAA,IAAM,WAAW,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,uBAAuB,0CAAE,IAAI,CAAC,UAAC,CAAM,EAAK,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,0CAAE,EAAE,OAAM,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,0CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;EACzI,wCAAA,IAAI,WAAW,EAAE;EACf,4CAAA,SAAS,GAAG,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC;EACzC,yCAAA;EACF,qCAAA;EACF,iCAAA;EACF,6BAAA;EAED,4BAAA,IAAM,UAAU,GAAG,IAAIR,gBAAW,CAAC,SAAS,CAAC,CAAC;8BAC9C,IAAI,KAAI,CAAC,QAAQ,EAAE;kCACjB,UAAU,CAAC,OAAO,EAAE,CAAC;EACtB,6BAAA;8BAAA,CAAC;8BACF,KAAK,CAAI,GAAG,GAAY,WAAA,GAAA,MAAM,CAAC,EAAI,CAAC,GAAG,UAAU,CAAC;EACnD,yBAAA;0BAED,CAAA,EAAA,GAAA,MAAM,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,OAAe,EAAA;;8BAChD,IAAM,SAAS,GAAG,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;EAC7C,4BAAA,IAAI,SAAS,EAAE;EACb,gCAAA,KAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC,EAAE,CAAC,CAAC;EACjG,6BAAA;EACH,yBAAC,CAAC,CAAC;EACL,qBAAC,CAAC,CAAC;EACJ,iBAAA;EACH,aAAC,CAAC,CAAC;cAEH,IAAM,EAAE,GAAG,KAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;cAEhC,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,oBAAoB,CAAC,0CAAE,OAAO,CAAC,UAAC,EAAmB,EAAA;;EACtE,gBAAA,IAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;kBAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC;sBAAE,OAAO;kBAC5C,IAAM,QAAQ,GAAG,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;kBAExC,IAAI,MAAA,QAAQ,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EACvC,oBAAA,KAAI,CAAC,iCAAiC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;sBACrD,CAAA,EAAA,GAAA,EAAE,CAAC,GAAG,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,QAAQ,EAAE,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC,SAAS,CAAC,YAAA;EAC9C,wBAAA,KAAI,CAAC,iCAAiC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;EACvD,qBAAC,CAAC,CAAC;EACJ,iBAAA;EACH,aAAC,CAAC,CAAC;EAEH,YAAA,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;kBAC1B,SAAS,EAAE,OAAO,CAAC,EAAE;EACrB,gBAAA,SAAS,EAAE,EAAE;EACd,aAAA,CAAC,CAAC;EACH,YAAA,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACjC,SAAC,CAAC,CAAC;UAEH,IAAI,CAAC,eAAe,EAAE,CAAC;EACvB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;UAExB,IAAI,CAAC,eAAe,EAAE,CAAC;OACxB,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;EACN,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;;EAE5B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EACzB,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,eAAe,EAAE,CAAC;EACxB,SAAA;OACF,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;EAAvB,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,yCAAyC,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAK,GAAG,CAAC;WAC1I;;;EAAA,KAAA,CAAA,CAAA;EAED;;;EAGG;EACK,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;UACN,IAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;EACzF,QAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,IAAI,aAAa,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;OAC3F,CAAA;EAGD,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAuB,CAAA,SAAA,EAAA,yBAAA,EAAA;;EAA3B,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,0CAAE,EAAE,MAAI,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAC,CAAC;WAC1F;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;EAArB,QAAA,GAAA,EAAA,YAAA;;cACE,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,CAAC,CAAC;WAChF;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAkB,CAAA,SAAA,EAAA,oBAAA,EAAA;EAAtB,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,OAAO,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,KAAI,EAAE;EACrE,iBAAA,MAAM,CAAC,UAAC,GAAG,EAAE,OAAO,EAAA,EAAI,IAAA,EAAA,CAAA,CAAC,OAAA,GAAG,IAAI,CAAA,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,oBAAoB,0CAAE,MAAM,KAAI,CAAC,CAAC,CAAA,EAAA,EAAE,CAAC,CAAC,CAAC;WACpF;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAyB,CAAA,SAAA,EAAA,2BAAA,EAAA;EAA7B,QAAA,GAAA,EAAA,YAAA;;cACE,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,qBAAqB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,CAAC,CAAC;WACrE;;;EAAA,KAAA,CAAA,CAAA;;EAQD,IAAA,wBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,YAAA;EACE,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACjC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;UACzB,IAAI,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;;cAElE,IAAI,CAAC,YAAY,EAAE,CAAC;EACrB,SAAA;UACD,IAAI,CAAC,eAAe,EAAE,CAAC;OACxB,CAAA;EAED;;;;;;;EAOG;MACK,wBAAsB,CAAA,SAAA,CAAA,sBAAA,GAAtB,UAAuB,oBAAiC,EAAA;UAAxD,IAmDP,KAAA,GAAA,IAAA,CAAA;EAnD8B,QAAA,IAAA,oBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,oBAAiC,GAAA,EAAA,CAAA,EAAA;;UAC9D,IAAM,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAI,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAC;UACtE,IAAM,QAAQ,GAAoB,UAAU;iBACvC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,UAAU,CAAC,GAAGS,OAAE,CAAC,IAAI,CAAC;EACvG,cAAE,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,CAAC,CAAC;EACtG,QAAA,OAAO,QAAQ,CAAC,IAAI,CAClBC,aAAG,CAAC,UAAC,GAAQ,EAAA;;EACX,YAAA,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;kBACnC,OAAO;EACR,aAAA;cACD,IAAI,KAAI,CAAC,mBAAmB,EAAE;;kBAE5B,IAAM,UAAU,GAAsB,CAAA,EAAA,GAAA,GAAG,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,GAAG,CAAC;EAC5D,gBAAA,IAAM,cAAc,GAAG,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,CAAC;EACjD,gBAAA,KAAI,CAAC,gBAAgB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAI,CAAC,gBAAgB,CAAA,EAAK,cAAc,CAAA,EAAA,EAAE,UAAU,EAAA,UAAA,EAAA,CAAE,CAAC;EACpF,gBAAA,KAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;EACtC,aAAA;EAAM,iBAAA;;kBAEL,KAAI,CAAC,gBAAgB,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,gBAAgB,CAAA,EAAK,GAAG,CAAE,CAAC;EAC9D,aAAA;cACD,IAAI,CAAC,UAAU,EAAE;EACf,gBAAA,KAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;;EAE/B,gBAAA,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;sBACzB,UAAU,EAAE,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,0CAAE,EAAE;sBACrC,gBAAgB,EAAE,KAAI,CAAC,gBAAgB;EACvC,oBAAA,SAAS,EAAE,KAAK;EACjB,iBAAA,CAAC,CAAC;EACJ,aAAA;EACH,SAAC,CAAC;;;EAGF,QAAAC,mBAAS,CAAC,YAAA;;cAAM,OAAA,KAAI,CAAC,mBAAmB;EACtC,kBAAE,KAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;sBAC7B,SAAS,EAAE,MAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB;sBAC/D,GAAG,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,KAAI,EAAE;;sBAEhE,YAAY,EAAE,cAAM,OAAA,KAAI,CAAC,oBAAoB,EAAE,GAAA;;sBAE/C,SAAS,EAAE,KAAI,CAAC,iBAAiB;mBAClC,CAAC;EACF,kBAAEF,OAAE,CAAC,KAAK,CAAC,CAAC,CAAA;EAAA,SAAA,CAAC,EACfG,oBAAU,CAAC,UAAC,GAAQ,EAAA;cAClB,IAAI,CAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,IAAI,MAAK,eAAe,EAAE;;EAEjC,gBAAA,OAAOC,eAAU,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;EACjG,aAAA;cACD,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EAClH,YAAA,OAAOA,eAAU,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;WACjG,CAAC,CACH,CAAC;OACH,CAAA;EAED;;;;EAIG;EACK,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;UACN,IAAM,UAAU,GAAG,CAAA,MAAA,IAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAI,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA,IAAI,CAAC,CAAC;UAC3E,OAAO,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,IAAI,CACxEC,aAAG,CAAC,UAAC,GAAQ,EAAK,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAC,CAAA,EAAA,GAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAA,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,KAAK,EAAE,CAAA,EAAA,CAAC,CAC1F,CAAC;OACH,CAAA;MAEO,wBAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,oBAAiC,EAAA;EAAjC,QAAA,IAAA,oBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,oBAAiC,GAAA,EAAA,CAAA,EAAA;EAChE,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CACzD,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,2BAA2B,EAChC,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,QAAQ,EACb,oBAAoB,CACrB,CAAC;OACH,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;EACN,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC;EAChD,QAAA,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;cACnB,OAAO;EACR,SAAA;;EAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;EACrC,YAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;cAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;cACzB,OAAO;EACR,SAAA;UACD,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;EAC5D,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;EAClC,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;EAC3B,SAAA;OACF,CAAA;EAED;;;;EAIG;MACK,wBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,QAAgB,EAAA;;UACxC,IAAM,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC;UACnD,IAAM,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5E,QAAA,IAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;UACrC,IAAI,SAAS,IAAI,CAAC,EAAE;EAClB,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EACvB,YAAA,IAAI,CAAC,iBAAiB,EAAE,CAAC;cACzB,IAAI,CAAC,UAAU,EAAE,CAAC;cAClB,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;OAC5B,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iCAAiC,GAAjC,UAAkC,EAAa,EAAE,QAA4B,EAAA;UAA7E,IAmCC,KAAA,GAAA,IAAA,CAAA;;EAlCC,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAC,MAAA,QAAQ,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA;cAAE,OAAO;EAE9E,QAAA,IAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC;EACxB,QAAA,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAC,MAAW,EAAA;;EAC9C,YAAA,IAAM,UAAU,GAAG,KAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAA,MAAM,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,CAAC;cAE3E,IAAI,MAAM,CAAC,eAAe,EAAE;EAC1B,gBAAA,IAAM,UAAU,GAAG,EAAE,CAAC,GAAG,CAAI,GAAG,GAAA,WAAA,GAAY,MAAM,CAAC,EAAI,CAAC,CAAC;EACzD,gBAAA,IAAI,UAAU,EAAE;sBACd,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,aAAa,CAACC,eAAU,CAAC,QAAQ,CAAC,CAAC;EAChD,iBAAA;EAAM,qBAAA;EACL,oBAAA,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,eAAe,EAAE,CAAC;sBAC9B,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC5B,iBAAA;EACD,gBAAA,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,sBAAsB,EAAE,CAAC;EACtC,aAAA;cAED,IAAI,MAAA,MAAM,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EACpC,gBAAA,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,OAAe,EAAA;;sBAC/C,IAAM,SAAS,GAAG,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;EAC7C,oBAAA,IAAI,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,EAAE,EAAE;EACjB,wBAAA,IAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA,EAAA,GAAA,SAAS,CAAC,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE,CAAC,CAAC;EACnD,wBAAA,IAAI,UAAU,EAAE;8BACd,IAAM,UAAU,GAAG,KAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;8BAC7G,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,aAAa,CAACA,eAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;EAC1D,yBAAA;EAAM,6BAAA;EACL,4BAAA,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,eAAe,EAAE,CAAC;8BAC7B,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC3B,yBAAA;EACD,wBAAA,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,sBAAsB,EAAE,CAAC;EACrC,qBAAA;EACH,iBAAC,CAAC,CAAC;EACJ,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;UACE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;EAC/D,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;kBACpB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;EACvC,gBAAA,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM;kBACzC,UAAU,EAAE,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;EACxE,aAAA,CAAC,CAAC;EACJ,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,UAAsB,KAAU,EAAE,QAA4B,EAAE,WAA4B,EAAE,OAAwB,EAAE,QAAiB,EAAE,cAAuB,EAAA;EAAlG,QAAA,IAAA,WAAA,KAAA,KAAA,CAAA,EAAA,EAAA,WAA4B,GAAA,KAAA,CAAA,EAAA;EAAE,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAwB,GAAA,KAAA,CAAA,EAAA;EACpH,QAAA,IAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC;EACxB,QAAA,IAAI,CAAC,GAAG;cAAE,OAAO;UAEjB,IAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;EACzF,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;EAErF,QAAA,IAAM,OAAO,GAAG,IAAIf,gBAAW,CAAC,cAAc,EAAEe,eAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;;UAGhF,IAAI,IAAI,CAAC,QAAQ,EAAE;cACjB,OAAO,CAAC,OAAO,EAAE,CAAC;EACnB,SAAA;EAED,QAAA,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;;UAGrB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE;EAC9D,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;cAC9E,KAAK,CAAI,GAAG,GAAA,QAAQ,CAAC,GAAG,IAAIf,gBAAW,CAAC,SAAS,CAAC,CAAC;EACpD,SAAA;OACF,CAAA;MAED,wBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,GAAW,EAAE,OAAwB,EAAE,QAAiB,EAAE,cAAuB,EAAA;EAApE,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAwB,GAAA,KAAA,CAAA,EAAA;;UACpD,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,CAAA;EAAE,YAAA,OAAO,IAAI,CAAC;UAChE,IAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,CAAM,EAAA;;EACzE,YAAA,IAAI,OAAO,EAAE;EACX,gBAAA,OAAO,CAAC,CAAC,eAAe,KAAK,GAAG,IAAI,CAAC,CAAC,6BAA6B,KAAK,QAAQ,IAAI,CAAC,CAAC,oBAAoB,KAAK,cAAc,CAAC;EAC/H,aAAA;EAAM,iBAAA;EACL,gBAAA,OAAO,CAAA,MAAA,CAAC,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAK,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC;EACjG,aAAA;EACH,SAAC,CAAC,CAAC;EACH,QAAA,OAAO,CAAA,EAAA,GAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;OACjC,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,UAAqB,GAAW,EAAE,cAA8B,EAAE,gBAAgC,EAAA;;UAChG,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,CAAA;EAAE,YAAA,OAAO,IAAI,CAAC;UAChE,IAAM,OAAO,GAAG,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,CAAC;UACxE,OAAO,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,CAAM,EAAA;;EAC9D,YAAA,IAAI,OAAO,EAAE;EACX,gBAAA,OAAO,CAAC,CAAC,eAAe,KAAK,GAAG,IAAI,CAAC,CAAC,6BAA6B,KAAK,gBAAgB,IAAI,CAAC,CAAC,oBAAoB,KAAK,cAAc,CAAC;EACvI,aAAA;EAAM,iBAAA;EACL,gBAAA,OAAO,CAAA,MAAA,CAAC,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAK,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC;EACjG,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;MAED,wBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,GAAW,EAAA;;EAC3B,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,CAAC,CAAC;OAC5C,CAAA;MAED,wBAAuB,CAAA,SAAA,CAAA,uBAAA,GAAvB,UAAwB,QAA4B,EAAA;;EAClD,QAAA,IAAM,iBAAiB,GAAG;cACxB,yBAAyB;cACzB,4BAA4B;WAC7B,CAAC;EACF,QAAA,IAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EAC/D,QAAA,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,YAAY,0CAAE,IAAI,KAAI,EAAE,CAAC,IAAI,SAAS,CAAC;OACpF,CAAA;MAED,wBAAkB,CAAA,SAAA,CAAA,kBAAA,GAAlB,UAAmB,GAAW,EAAE,OAAwB,EAAE,QAAiB,EAAE,cAAuB,EAAA;EAApE,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAwB,GAAA,KAAA,CAAA,EAAA;;UACtD,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,CAAA;EAAE,YAAA,OAAO,IAAI,CAAC;UAEhE,IAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,CAAM,EAAA;;EACzE,YAAA,IAAI,OAAO,EAAE;EACX,gBAAA,OAAO,CAAC,CAAC,eAAe,KAAK,GAAG,IAAI,CAAC,CAAC,6BAA6B,KAAK,QAAQ,IAAI,CAAC,CAAC,oBAAoB,KAAK,cAAc,CAAC;EAC/H,aAAA;EAAM,iBAAA;EACL,gBAAA,OAAO,CAAA,MAAA,CAAC,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAK,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC;EACjG,aAAA;EACH,SAAC,CAAC,CAAC;EAEH,QAAA,IAAI,CAAC,SAAS;EAAE,YAAA,OAAO,IAAI,CAAC;UAE5B,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;EACxC,QAAA,IAAI,CAAC,QAAQ;EAAE,YAAA,OAAO,IAAI,CAAC;UAE3B,IAAM,KAAK,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC;UAE1C,IAAI,KAAK,KAAK,yBAAyB,EAAE;cACvC,OAAO,SAAS,CAAC,QAAQ,CAAC;EAC3B,SAAA;EAAM,aAAA,IAAI,KAAK,KAAK,4BAA4B,IAAI,KAAK,KAAK,0BAA0B,EAAE;cACzF,IAAI,UAAU,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,EAAC,SAAS,CAAC,uBAAuB,IAAI,EAAE,EAAC,CAAC,CAAC;cAChE,IAAI,KAAK,KAAK,0BAA0B,EAAE;kBACxC,UAAU,CAAC,IAAI,CAAC,UAAC,CAAM,EAAE,CAAM,EAAK,EAAA,OAAA,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;EAC1E,aAAA;EACD,YAAA,OAAO,UAAU,CAAC,GAAG,CAAC,UAAC,CAAM,IAAK,IAAA,EAAA,CAAA,CAAA,OAAA,MAAA,CAAC,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAA,EAAA,CAAC,IAAI,EAAE,CAAC;EACnE,SAAA;eAAM,IAAI,KAAK,KAAK,2BAA2B,EAAE;EAChD,YAAA,OAAO,SAAS,CAAC,sBAAsB,IAAI,EAAE,CAAC;EAC/C,SAAA;EAAM,aAAA;EACL,YAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,CAAC,wBAAwB,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;EACtE,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,UAAyB,QAA4B,EAAE,WAAoB,EAAA;;UACzE,IAAM,UAAU,GAAU,EAAE,CAAC;EAC7B,QAAA,IAAI,WAAW,EAAE;EACf,YAAA,UAAU,CAAC,IAAI,CAACe,eAAU,CAAC,QAAQ,EAAEA,eAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;EACpE,SAAA;UAED,IAAI,MAAA,QAAQ,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EACvC,YAAA,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;EAClE,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAA,MAAA,QAAQ,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,qBAAqB,EAAE;kBACzD,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,CAAC;EACzF,aAAA;EAAM,iBAAA,IAAI,CAAA,MAAA,QAAQ,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,mBAAmB,EAAE;kBAC9D,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,CAAC;EAC1F,aAAA;EAAM,iBAAA,IAAI,CAAA,MAAA,QAAQ,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,8BAA8B,EAAE;kBACzE,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;EACpD,aAAA;EAAM,iBAAA,IAAI,CAAA,MAAA,QAAQ,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAK,sBAAsB,EAAE;kBACjE,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;EACtD,aAAA;EACF,SAAA;UAED,IAAI,QAAQ,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;EACnE,YAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACrG,YAAA,IAAI,OAAO;kBAAE,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAEA,eAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;EAElG,YAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACrG,YAAA,IAAI,OAAO;EAAE,gBAAA,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAEpE,YAAA,IAAM,QAAM,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,uBAAuB,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACxG,YAAA,IAAI,QAAM,EAAE;EACV,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,OAAoB,EAAA;;EACnC,oBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,QAAM,CAAC,EAAE;0BAC3D,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAM,CAAC,EAAE,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,CAAC,EAAE,EAAE,CAAC;EACzF,qBAAA;EACD,oBAAA,OAAO,IAAI,CAAC;EACd,iBAAC,CAAC,CAAC;EACJ,aAAA;EAED,YAAA,IAAM,QAAM,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,uBAAuB,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACxG,YAAA,IAAI,QAAM,EAAE;EACV,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,OAAoB,EAAA;;EACnC,oBAAA,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,QAAM,CAAC,EAAE;0BAC1D,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAM,CAAC,EAAE,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,CAAC,EAAE,EAAE,CAAC;EACzF,qBAAA;EACD,oBAAA,OAAO,IAAI,CAAC;EACd,iBAAC,CAAC,CAAC;EACJ,aAAA;EAED,YAAA,IAAM,UAAQ,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,cAAc,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACjG,YAAA,IAAI,UAAQ,EAAE;EACZ,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,OAAoB,EAAA;;EACnC,oBAAA,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,UAAQ,CAAC,EAAE;0BAC5D,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAQ,CAAC,EAAE,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,CAAC,EAAE,EAAE,CAAC;EACzF,qBAAA;EACD,oBAAA,OAAO,IAAI,CAAC;EACd,iBAAC,CAAC,CAAC;EACJ,aAAA;EAED,YAAA,IAAM,aAAW,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,aAAa,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EACnG,YAAA,IAAI,aAAW,EAAE;EACf,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,OAAoB,EAAA;EACnC,oBAAA,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;0BACjD,IAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,IAAS,EAAA,EAAK,OAAA,CAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,KAAI,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,aAAW,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAA,EAAA,CAAC,CAAC;EACtH,wBAAA,IAAI,YAAY,EAAE;EAChB,4BAAA,OAAO,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,aAAW,CAAC,EAAE,EAAE,CAAC;EAC/D,yBAAA;EACF,qBAAA;EACD,oBAAA,OAAO,IAAI,CAAC;EACd,iBAAC,CAAC,CAAC;EACJ,aAAA;EACF,SAAA;EACD,QAAA,OAAO,UAAU,CAAC;OACnB,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,SAAoB,EAAE,QAA4B,EAAE,QAA4B,EAAA;;EAC/F,QAAA,IAAI,CAAC,QAAQ;EAAE,YAAA,OAAO,KAAK,CAAC;EAE5B,QAAA,IAAI,WAAW,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE,CAAC;EAE1C,QAAA,IAAI,CAAC,WAAW;EAAE,YAAA,OAAO,KAAK,CAAC;UAE/B,IAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;EAC3C,QAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI;EAAE,YAAA,OAAO,KAAK,CAAC;;UAGpD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;cAChC,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,GAAQ,EAAK,EAAA,OAAA,CAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,EAAE,MAAK,QAAQ,CAAA,EAAA,CAAC,CAAC;EACnG,SAAA;;EAGD,QAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;EACzD,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC;EACtC,SAAA;EAED,QAAA,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;OACnC,CAAA;MAED,wBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,QAA4B,EAAA;;UAC1C,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAA,EAAA,CAAC,CAAC;EACzF,QAAA,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;OAChD,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,QAA4B,EAAE,OAAY,EAAA;UAC1D,IAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;EAC3C,QAAA,IAAM,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;UAC/D,OAAO,GAAG,GAAG,aAAa,CAAC;OAC5B,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;EACE,QAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;cAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;EACzB,SAAA;OACF,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,wBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;EAAlB,QAAA,GAAA,EAAA,YAAA;;EACE,YAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAA,KAAK,EAAA,EACvC,OAAA,CAAC,EAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,SAAS,CAAA,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAC,CAAM,EAAA,EAAI,IAAA,EAAA,CAAA,CAAC,OAAA,CAAC,EAAC,MAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,oBAAoB,CAAC,CAAA,CAAA,EAAA,CAAC,CAAnH,EAAmH,CACpH,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC;WACZ;;;EAAA,KAAA,CAAA,CAAA;MAED,wBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,KAAa,EAAA;;UAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;cAC9B,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE;EACjD,gBAAA,OAAO,IAAI,CAAC;EACb,aAAA;EACF,SAAA;EACD,QAAA,OAAO,KAAK,CAAC;OACd,CAAA;MAED,wBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,QAAwB,EAAA;EAAxB,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAwB,GAAA,IAAA,CAAA,EAAA;;EAC7B,QAAA,IAAM,IAAI,GAAG,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,IAAI,2CAA2C,CAAA,EAAA,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,GAAG,CAAC;UAC/I,IAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;EACrE,QAAA,IAAI,CAAC,cAAc;cAAE,OAAO;EAE5B,QAAA,cAAc,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;;UAG5C,IAAI,IAAI,CAAC,cAAc,EAAE;cACvB,OAAO;EACR,SAAA;EAED,QAAA,IAAI,cAAc,CAAC,SAAS,CAAC,OAAO,EAAE;cACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;cACjD,OAAO;EACR,SAAA;UAGD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;EAElD,QAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EACnF,YAAA,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC1D,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EAC9B,SAAA;OACF,CAAA;MAED,wBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,QAAwB,EAAA;UAAtC,IA4BC,KAAA,GAAA,IAAA,CAAA;EA5Ba,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAwB,GAAA,IAAA,CAAA,EAAA;;UAEpC,IAAI,IAAI,CAAC,cAAc,EAAE;cACvB,OAAO;EACR,SAAA;EACD,QAAA,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;UAC3B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,KAAK,EAAA;EAC1C,YAAA,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;EACnC,YAAA,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;EAC3B,gBAAA,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;kBACjC,IAAI,iBAAiB,KAAK,CAAC,CAAC;sBAAE,iBAAiB,GAAG,KAAK,CAAC;EACzD,aAAA;EAAM,iBAAA;EACL,gBAAA,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;EACnC,aAAA;EACH,SAAC,CAAC,CAAC;EAEH,QAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;EAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EACtB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC;EAC3C,aAAA;EAAM,iBAAA;EACL,gBAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;EAC9C,aAAA;cACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,qCAAqC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EAC/G,YAAA,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;cAClD,OAAO;EACR,SAAA;EAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;OAC3B,CAAA;MAED,wBAAyB,CAAA,SAAA,CAAA,yBAAA,GAAzB,UAA0B,YAAoB,EAAA;UAA9C,IAiBC,KAAA,GAAA,IAAA,CAAA;EAhBC,QAAA,UAAU,CAAC,YAAA;cACT,IAAM,SAAS,GAAG,KAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;EACjE,YAAA,KAAK,IAAM,WAAW,IAAI,SAAS,CAAC,QAAQ,EAAE;kBAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;sBAC3C,IAAI,GAAG,GAAG,WAAW,CAAC;EACtB,oBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;0BACvE,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACjC,qBAAA;sBACD,IAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAA,GAAsB,GAAK,CAAC,CAAC;EACrE,oBAAA,IAAI,OAAO,EAAE;EACX,wBAAA,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;0BAChE,MAAM;EACP,qBAAA;EACF,iBAAA;EACF,aAAA;WACF,EAAE,GAAG,CAAC,CAAC;OACT,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,UAAK,MAAsB,EAAE,QAAwB,EAAA;UAArD,IA2EC,KAAA,GAAA,IAAA,CAAA;EA3EI,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAsB,GAAA,IAAA,CAAA,EAAA;EAAE,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAwB,GAAA,IAAA,CAAA,EAAA;;;EAEnD,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc;cAAE,OAAO;EAErD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;UACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;cAC3C,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE;kBACtI,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;EAC/E,aAAA;EAAM,iBAAA;kBACL,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;EACjF,aAAA;EACF,SAAA;EAED,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAC9D,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,2BAA2B,EAChC,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,QAAQ,CACd,CAAC;EAEF,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,EAAE;EACpD,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC;cAClE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;EAC7C,SAAA;EAED,QAAA,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;EAC/E,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;kBACzB,UAAU,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,0CAAE,EAAE;EACrC,gBAAA,gBAAgB,EAAE,OAAO;EACzB,gBAAA,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC;EACvG,aAAA,CAAC,CAAC;EACH,YAAA,IAAI,MAAM,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;kBACvE,IAAI,CAAC,gBAAgB,EAAE,CAAC;EACzB,aAAA;cACD,OAAO;EACR,SAAA;UACD,IAAI,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,IAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;EACvJ,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;cACrC,IAAM,YAAY,GAAQ,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;cACjF,IAAI,IAAI,CAAC,kBAAkB,EAAE;kBAC3B,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC;EAC1D,aAAA;cACD,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;EACjE,SAAA;UACD,OAAO,CAAC,SAAS,CAAC;cAChB,IAAI,EAAE,UAAC,GAAQ,EAAA;;EACb,gBAAA,KAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;EAC5B,gBAAA,KAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;kBAC5B,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,2BAA2B,EAAE;sBAC/E,KAAI,CAAC,WAAW,EAAE,CAAC;;sBAEnB,KAAI,CAAC,oBAAoB,EAAE,CAAC;EAC7B,iBAAA;EACD,gBAAA,KAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;EAClE,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,gBAAA,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;EACzB,oBAAA,UAAU,EAAE,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,GAAG;EAC5C,oBAAA,gBAAgB,EAAE,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,IAAG,KAAI,CAAC,gBAAgB,GAAG,OAAO;sBAC7E,SAAS,EAAE,MAAM,KAAK,KAAI,CAAC,gBAAgB,IAAI,KAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,KAAI,CAAC,YAAY,IAAI,KAAI,CAAC,gBAAgB,CAAC;EAChI,iBAAA,CAAC,CAAC;EACH,gBAAA,IAAI,MAAM,IAAI,KAAI,CAAC,gBAAgB,GAAG,KAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAI,CAAC,gBAAgB,EAAE;sBACjG,KAAI,CAAC,gBAAgB,EAAE,CAAC;EACzB,iBAAA;kBACD,IAAI,KAAI,CAAC,gBAAgB,EAAE;sBACzB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,yCAAyC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;EACnH,iBAAA;eACF;cACD,KAAK,EAAE,UAAA,KAAK,EAAA;;EACV,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;kBAC1B,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,sCAAsC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAChH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,IAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;eAC/E;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;MAED,wBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,UAAkB,EAAA;UAApC,IAcC,KAAA,GAAA,IAAA,CAAA;UAbC,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;cAClE,IAAI,EAAE,UAAC,GAAQ,EAAA;;EACb,gBAAA,KAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;kBAC5B,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,2BAA2B,EAAE;sBAC/E,KAAI,CAAC,WAAW,EAAE,CAAC;EACpB,iBAAA;EACD,gBAAA,KAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;eACnE;cACD,KAAK,EAAE,UAAA,KAAK,EAAA;kBACV,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,qCAAqC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAC/G,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;eAC/B;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;MAED,wBAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,QAAgB,EAAA;EAClC,QAAA,IAAI,CAAC,QAAQ;EAAE,YAAA,OAAO,IAAI,CAAC;EAC3B,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;EAClC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;EACvC,SAAA;UACD,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;EAC1C,QAAA,IAAM,UAAU,GAAG,gCAAiC,GAAA,OAAS,CAAC;EAC9D,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;EAC3F,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;OACvC,CAAA;MAED,wBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,QAAgB,EAAA;UACzB,IAAI,OAAO,GAAG,IAAI,CAAC;EACnB,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;cACpC,OAAO,GAAG,2KAA2K,CAAC;EACvL,SAAA;EAAM,aAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;cACxC,OAAO,GAAG,gCAAgC,CAAC;EAC5C,SAAA;EACD,QAAA,IAAI,OAAO,EAAE;cACX,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;EACtC,YAAA,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;EACrB,gBAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;EACjB,aAAA;EACF,SAAA;EACD,QAAA,OAAO,IAAI,CAAC;OACb,CAAA;MAED,wBAAsB,CAAA,SAAA,CAAA,sBAAA,GAAtB,UAAuB,OAA6B,EAAA;EAClD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;EAC7C,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,QAAQ,EAAE,KAAK;EACf,YAAA,KAAK,EAAE,qBAAqB;EAC5B,YAAA,SAAS,EAAE,OAAO;cAClB,UAAU,EAAE,CAAC,mBAAmB,CAAC;EACjC,YAAA,IAAI,EAAE;kBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;EAC7B,gBAAA,cAAc,EAAE,OAAO;kBACvB,eAAe,EAAE,IAAI,CAAC,eAAe;EACtC,aAAA;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,KAAU,EAAE,OAAY,EAAE,MAA0B,EAAA;UAC9D,IAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;UACvC,IAAI,UAAU,GAAG,CAAC,EAAE;cAClB,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;cACrC,IAAI,GAAG,GAAG,UAAU,EAAE;EACpB,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;kBAChC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACrD,aAAA;EACF,SAAA;OACF,CAAA;MAED,wBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,KAAoB,EAAA;EACvC,QAAA,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;cAC5C,KAAK,CAAC,cAAc,EAAE,CAAC;EACxB,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;;EACE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;EAC1C,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;EACxB,YAAA,QAAQ,EAAE,MAAM;EAChB,YAAA,KAAK,EAAE,OAAO;EACd,YAAA,MAAM,EAAE,QAAQ;EAChB,YAAA,SAAS,EAAE,QAAQ;EACnB,YAAA,UAAU,EAAE,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;EACvE,YAAA,WAAW,EAAE,IAAI;EACjB,YAAA,IAAI,EAAE;kBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,UAAU,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAI,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA;kBAC9D,YAAY,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,0CAAE,IAAI;EACtC,aAAA;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;MAED,wBAAyB,CAAA,SAAA,CAAA,yBAAA,GAAzB,UAA0B,SAAwB,EAAA;EAChD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;EACzC,YAAA,SAAS,EAAE,OAAO;EAClB,YAAA,QAAQ,EAAE,MAAM;EAChB,YAAA,KAAK,EAAE,OAAO;cACd,UAAU,EAAE,CAAC,mBAAmB,CAAC;EACjC,YAAA,IAAI,EAAE;kBACJ,KAAK,EAAE,IAAI,CAAC,WAAW;EACvB,gBAAA,SAAS,EAAA,SAAA;EACV,aAAA;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;;MAID,wBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,iBAAyB,EAAA;UAApC,IAeC,KAAA,GAAA,IAAA,CAAA;UAdC,IAAI,IAAI,CAAC,aAAa,EAAE;EACtB,YAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACnC,SAAA;EACD,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;UAC/C,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAEzB,QAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,YAAA;EAC/B,YAAA,IAAI,KAAI,CAAC,aAAa,GAAG,CAAC,EAAE;kBAC1B,KAAI,CAAC,aAAa,EAAE,CAAC;kBACrB,KAAI,CAAC,iBAAiB,EAAE,CAAC;EAC1B,aAAA;EAAM,iBAAA;kBACL,KAAI,CAAC,UAAU,EAAE,CAAC;EACnB,aAAA;WACF,EAAE,IAAI,CAAC,CAAC;OACV,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;EACE,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;EACpD,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;EACxC,QAAA,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EACvD,QAAA,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EACvD,QAAA,IAAI,CAAC,WAAW,GAAM,aAAa,GAAA,GAAA,GAAI,aAAe,CAAC;EACvD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;OAC1B,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;UACE,IAAI,IAAI,CAAC,aAAa,EAAE;EACtB,YAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACnC,SAAA;EACD,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EACvB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;UACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;UACzB,IAAI,CAAC,WAAW,EAAE,CAAC;EACnB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;UAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;OACb,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UAAA,IAUC,KAAA,GAAA,IAAA,CAAA;;EATC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;UACrB,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAA,KAAK,EAAA;;EACnC,YAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,CAAC,MAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAA,GAAG,EAAA;;kBAClD,IAAI,KAAI,CAAC,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;sBAC9C,OAAO;EACR,iBAAA;EACD,gBAAA,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAC;EAC/C,aAAC,CAAC,CAAC;EACL,SAAC,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,KAAa,EAAE,OAAY,EAAA;EAC1C,QAAA,OAAO,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7D,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,UAAuB,KAAa,EAAE,EAAO,EAAA;UAC3C,IAAI,CAAA,EAAE,KAAF,IAAA,IAAA,EAAE,uBAAF,EAAE,CAAE,UAAU,KAAI,IAAI;EAAE,YAAA,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;UACvD,IAAI,CAAA,EAAE,KAAF,IAAA,IAAA,EAAE,uBAAF,EAAE,CAAE,EAAE,KAAI,IAAI;EAAE,YAAA,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;UACvC,OAAO,GAAG,GAAG,KAAK,CAAC;OACpB,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAa,EAAE,MAAW,EAAA;;EACxC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5E,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,KAAa,EAAE,EAAO,EAAA;EACnC,QAAA,OAAO,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5C,CAAA;;;8IAhmCU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAhC,eAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAvB,aAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAwB,aAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAApC,aAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAArC,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAxB,wBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,smCCzBrC,6o8BAkbc,EAAA,MAAA,EAAA,CAAA,27YAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAsC,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,cAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,gCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAX,aAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAAW,eAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAV,aAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAtC,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAiD,cAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,cAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,mCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,qCAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,sCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAjD,eAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAgD,eAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAhD,eAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAAkD,WAAA,EAAA,EAAA,CAAA,CAAA;oHDzZD,wBAAwB,EAAA,UAAA,EAAA,CAAA;oBANpC/C,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,sBAAsB;EAChC,oBAAA,WAAW,EAAE,mCAAmC;sBAChD,SAAS,EAAE,CAAC,mCAAmC,CAAC;mBACjD,CAAA;sUAGU,WAAW,EAAA,CAAA;wBAAnBW,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,UAAU,EAAA,CAAA;wBAAlBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,oBAAoB,EAAA,CAAA;wBAA5BA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,eAAe,EAAA,CAAA;wBAAvBA,QAAK;kBACG,iBAAiB,EAAA,CAAA;wBAAzBA,QAAK;kBACG,gBAAgB,EAAA,CAAA;wBAAxBA,QAAK;kBACG,eAAe,EAAA,CAAA;wBAAvBA,QAAK;kBACG,gBAAgB,EAAA,CAAA;wBAAxBA,QAAK;kBACG,kBAAkB,EAAA,CAAA;wBAA1BA,QAAK;kBACG,kBAAkB,EAAA,CAAA;wBAA1BA,QAAK;kBACG,uBAAuB,EAAA,CAAA;wBAA/BA,QAAK;kBACG,2BAA2B,EAAA,CAAA;wBAAnCA,QAAK;kBACG,iBAAiB,EAAA,CAAA;wBAAzBA,QAAK;kBAEI,eAAe,EAAA,CAAA;wBAAxBC,SAAM;kBACG,gBAAgB,EAAA,CAAA;wBAAzBA,SAAM;kBACG,WAAW,EAAA,CAAA;wBAApBA,SAAM;kBACG,gBAAgB,EAAA,CAAA;wBAAzBA,SAAM;kBA0CP,QAAQ,EAAA,CAAA;wBADPoC,eAAY;yBAAC,eAAe,CAAA;kBAW7B,cAAc,EAAA,CAAA;wBADbA,eAAY;yBAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,CAAA;kBAc/C,UAAU,EAAA,CAAA;wBADTA,eAAY;yBAAC,iBAAiB,CAAA;;;EErGjC,IAAM,gBAAgB,GAAG;MACrBC,4BAAwB;MACxBC,qBAAkB;MAClBC,kBAAe;MACfC,oBAAc;MACdC,kBAAa;MACbC,kBAAe;MACfC,sBAAgB;MAChBC,gBAAa;MACbC,iBAAa;MACbC,wBAAmB;MACnBC,sBAAmB;GACtB,CAAC;EAMF,IAAA,eAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,eAAA,GAAA;;;;qIAAa,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAhE,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;EAAf,eAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,eAAe,YAjBxBsD,4BAAwB;UACxBC,qBAAkB;UAClBC,kBAAe;UACfC,oBAAc;UACdC,kBAAa;UACbC,kBAAe;UACfC,sBAAgB;UAChBC,gBAAa;UACbC,iBAAa;UACbC,wBAAmB;EACnB,QAAAC,sBAAmB,aAVnBV,4BAAwB;UACxBC,qBAAkB;UAClBC,kBAAe;UACfC,oBAAc;UACdC,kBAAa;UACbC,kBAAe;UACfC,sBAAgB;UAChBC,gBAAa;UACbC,iBAAa;UACbC,wBAAmB;UACnBC,sBAAmB,CAAA,EAAA,CAAA,CAAA;sIAOV,eAAe,EAAA,OAAA,EAAA,CAHf,gBAAgB,EAdzBV,4BAAwB;UACxBC,qBAAkB;UAClBC,kBAAe;UACfC,oBAAc;UACdC,kBAAa;UACbC,kBAAe;UACfC,sBAAgB;UAChBC,gBAAa;UACbC,iBAAa;UACbC,wBAAmB;UACnBC,sBAAmB,CAAA,EAAA,CAAA,CAAA;oHAOV,eAAe,EAAA,UAAA,EAAA,CAAA;oBAJ3BC,WAAQ;EAAC,YAAA,IAAA,EAAA,CAAA;EACN,oBAAA,OAAO,EAAE,gBAAgB;EACzB,oBAAA,OAAO,EAAE,gBAAgB;mBAC5B,CAAA;;;ECCD,IAAA,YAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,YAAA,GAAA;;;;kIAAa,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAjE,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;EAAZ,YAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,YAAY,iBApBjB,mBAAmB;UACnB,WAAW;UACX,wBAAwB;EACxB,QAAA,2BAA2B,aAG3BkE,iBAAY;UACZC,gBAAW;UACXC,wBAAmB;UACnB,eAAe;EACf,QAAAC,wBAAmB,aAGnB,mBAAmB;UACnB,wBAAwB;UACxB,2BAA2B;UAC3B,eAAe;UACf,WAAW,CAAA,EAAA,CAAA,CAAA;EAGN,YAAA,CAAA,IAAA,GAAArE,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,YAAY,EAfZ,OAAA,EAAA,CAAA;cACLkE,iBAAY;cACZC,gBAAW;cACXC,wBAAmB;cACnB,eAAe;cACfC,wBAAmB;EACtB,SAAA,EAKG,eAAe,CAAA,EAAA,CAAA,CAAA;oHAIV,YAAY,EAAA,UAAA,EAAA,CAAA;oBAtBxBJ,WAAQ;EAAC,YAAA,IAAA,EAAA,CAAA;EACN,oBAAA,YAAY,EAAE;0BACV,mBAAmB;0BACnB,WAAW;0BACX,wBAAwB;0BACxB,2BAA2B;EAC9B,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACLC,iBAAY;0BACZC,gBAAW;0BACXC,wBAAmB;0BACnB,eAAe;0BACfC,wBAAmB;EACtB,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACL,mBAAmB;0BACnB,wBAAwB;0BACxB,2BAA2B;0BAC3B,eAAe;0BACf,WAAW;EACd,qBAAA;mBACJ,CAAA;;;ACaD,MAAA,qBAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,qBAAA,GAAA;;;;2IAAa,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAArE,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;EAArB,qBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,qBAAqB,iBAxB9B,wBAAwB;UACxB,2BAA2B;UAC3B,+BAA+B;UAC/B,yBAAyB;UACzB,gCAAgC;UAChC,8BAA8B;UAC9B,+BAA+B;UAC/B,0BAA0B;UAC1B,4BAA4B;UAC5B,+BAA+B;UAC/B,yBAAyB;EACzB,QAAA,0BAA0B,aAG1BkE,iBAAY;UACZ,YAAY;UACZ,eAAe;UACfC,gBAAW;UACXC,wBAAmB,aAGnB,wBAAwB,CAAA,EAAA,CAAA,CAAA;EAGf,qBAAA,CAAA,IAAA,GAAApE,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,qBAAqB,EAXvB,OAAA,EAAA,CAAA;cACPkE,iBAAY;cACZ,YAAY;cACZ,eAAe;cACfC,gBAAW;cACXC,wBAAmB;WACpB,CAAA,EAAA,CAAA,CAAA;oHAKU,qBAAqB,EAAA,UAAA,EAAA,CAAA;oBA1BjCH,WAAQ;EAAC,YAAA,IAAA,EAAA,CAAA;EACR,oBAAA,YAAY,EAAE;0BACZ,wBAAwB;0BACxB,2BAA2B;0BAC3B,+BAA+B;0BAC/B,yBAAyB;0BACzB,gCAAgC;0BAChC,8BAA8B;0BAC9B,+BAA+B;0BAC/B,0BAA0B;0BAC1B,4BAA4B;0BAC5B,+BAA+B;0BAC/B,yBAAyB;0BACzB,0BAA0B;EAC3B,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACPC,iBAAY;0BACZ,YAAY;0BACZ,eAAe;0BACfC,gBAAW;0BACXC,wBAAmB;EACpB,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACP,wBAAwB;EACzB,qBAAA;mBACF,CAAA;;;ECjCD,IAAA,mCAAA,kBAAA,YAAA;MAOE,SACS,mCAAA,CAAA,SAA4D,EACnC,UAAe,EAAA;EADxC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAmD;EACnC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;EARjD,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAC;EAChC,QAAA,IAAc,CAAA,cAAA,GAAgC,IAAI,CAAC;EACnD,QAAA,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;OAKjB;EAEL,IAAA,mCAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;EACE,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,EAAE,CAAC;EACtD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,EAAE,CAAC;EACtD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,CAAC;EACjE,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;EAChG,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;EACrE,SAAA;EACD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,EAAE,CAAC;OACrD,CAAA;EAED,IAAA,mCAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,mCAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;EAAnB,QAAA,GAAA,EAAA,YAAA;cACE,IAAI,CAAC,IAAI,CAAC,QAAQ;EAAE,gBAAA,OAAO,IAAI,CAAC;cAChC,IAAM,UAAU,GAAG,4EAA4E,CAAC;cAChG,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;WACvC;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,mCAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;UACE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;OACvG,CAAA;;;EAlCU,mCAAA,CAAA,IAAA,GAAApE,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,mCAAmC,yDASpCC,kBAAe,EAAA,CAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EATd,mCAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,oFCVhD,w7EAuCM,EAAA,MAAA,EAAA,CAAA,0hYAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAsB,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAnB,aAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHD7BO,mCAAmC,EAAA,UAAA,EAAA,CAAA;oBAL/CP,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,mCAAmC;EAC7C,oBAAA,WAAW,EAAE,gDAAgD;sBAC7D,SAAS,EAAE,CAAC,gDAAgD,CAAC;mBAC9D,CAAA;;;gCAUIC,SAAM;iCAACL,kBAAe,CAAA;;;;EEX3B,IAAA,wBAAA,kBAAA,YAAA;EAQI,IAAA,SAAA,wBAAA,GAAA;EANQ,QAAA,IAAoB,CAAA,oBAAA,GAAe,EAAE,CAAC;OAM7B;MAJjB,wBAAuB,CAAA,SAAA,CAAA,uBAAA,GAAvB,UAAwB,KAAiB,EAAA;EACrC,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;OACrC,CAAA;EAID,IAAA,wBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,QAAa,EAAE,gBAAgD,EAAA;UAA9E,IAsFC,KAAA,GAAA,IAAA,CAAA;EAtF6B,QAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAgD,GAAA,EAAA,CAAA,EAAA;;UAE1E,IAAM,kBAAkB,GAAG,CAAC,CAAA,gBAAgB,KAAA,IAAA,IAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,eAAe,KAAI,EAAE;EAC9D,aAAA,MAAM,CAAC,UAAC,GAAQ,EAAE,MAAW,EAAA;EAC1B,YAAA,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;EAC/B,YAAA,OAAO,GAAG,CAAC;WACd,EAAE,EAAE,CAAC,CAAC;EAEX,QAAA,IAAM,eAAe,GAAG;cACpB,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,EAAE;cACvH,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,EAAE;cACvH,EAAE,SAAS,EAAE,uBAAuB,EAAE,WAAW,EAAE,QAAQ,CAAC,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,IAAI,EAAE;cACnI,EAAE,SAAS,EAAE,uBAAuB,EAAE,WAAW,EAAE,QAAQ,CAAC,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,IAAI,EAAE;cACnI,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE;cACrG,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,EAAE;;WAE3G,CAAC,GAAG,CAAC,UAAA,MAAM,EAAA;;cAAI,wBACZ,EAAE,EAAE,CAAA,CAAA,EAAA,GAAA,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,0CAAE,EAAE,KAAI,CAAC,EAC9C,EAAA,MAAM,GACX;EAAA,SAAA,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;UAEpB,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACO,gBAAgB,CAAA,EAAA,EACnB,YAAY,EAAE,CAAC;EACX,oBAAA,EAAE,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,gBAAgB,aAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,YAAY,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,CAAC;EAChD,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;EACzB,oBAAA,IAAI,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;mBACpC,CAAC,EACF,eAAe,EAAE,QAAQ,CAAC,eAAe,GAAG,CAAC;EACzC,oBAAA,EAAE,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,gBAAgB,aAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,eAAe,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,CAAC;EACnD,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;sBACzB,IAAI,EAAE,QAAQ,CAAC,eAAe;EACjC,iBAAA,CAAC,GAAG,EAAE,EACP,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,EACnD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,eAAe,KAAI,CAAA,EAAA,GAAA,QAAQ,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAA,IAAI,EAAE,EAAE,EACjI,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,KAAK,EAC1C,eAAe,EAAE,QAAQ,CAAC,eAAe,IAAI,KAAK,EAClD,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,EACxC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,EACjC,QAAQ,EAAE,QAAQ,CAAC,aAAa,IAAI,EAAE,EACtC,kBAAkB,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE,EAC9C,UAAU,EAAE,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,UAAC,KAAU,EAAK,EAAA,QAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,+BAA+B,EAAE,IAAC,CAAC,KAAI,EAAE,EACzH,eAAe,iBAAA,EACf,kBAAkB,EAAE,CAAC,YAAA;kBACjB,IAAM,eAAe,GAAG,CAAA,gBAAgB,KAAhB,IAAA,IAAA,gBAAgB,KAAhB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAgB,CAAE,kBAAkB,KAAI,EAAE,CAAC;EACnE,gBAAA,IAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;;kBAG3C,IAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,GAAQ,EAAE,KAAa,EAAA;;EAC7D,oBAAA,IAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA,EAAA,CAAC,IAAI,EAAE,CAAC;EAEtF,oBAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACO,WAAW,CACd,EAAA,EAAA,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EACf,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAClC,OAAO,EAAE,KAAK,GAAG,CAAC,EAClB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,EAC/B,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,KAAK,EAC7C,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,KAAK,EAChC,OAAO,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GACC,WAAW,CAAC,OAAO,IAAI,EAAE,EAC7B,EAAA,EAAA,EAAE,EAAE,CAAA,CAAA,EAAA,GAAA,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,MAAI,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA,IAAI,CAAC,EACpD,UAAU,EAAE,CAAC;EACT,oCAAA,EAAE,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,0CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,CAAC;EACjD,oCAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;EACzB,oCAAA,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;EAC9B,iCAAA,CAAC,EAAA,CAAA,GACE,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,KAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,EAE1F,EAAA,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,WAAW,CAAC,iBAAiB,IAAI,EAAE,EAAA,CAAA,GAC3E,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,KAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,EACxF,CAAA;EACN,iBAAC,CAAC,CAAC;;EAGH,gBAAA,IAAM,aAAa,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,CAAC,CAAC,EAAE,CAAJ,EAAI,CAAC,CAAC,MAAM,CAAC,UAAC,EAAU,EAAA,EAAK,OAAA,EAAE,KAAK,CAAC,CAAA,EAAA,CAAC,CAAC,CAAC;kBACvG,IAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,UAAA,EAAE,EAAA,EAAI,OAAA,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC,GAAG,CAAC,UAAA,EAAE,EAAI,EAAA,QAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,EAAE,CAAE,EAAA,EAAA,QAAQ,EAAE,KAAK,EAAA,CAAA,EAAG,EAAA,CAAC,CAAC;kBAEhI,OAAW,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,gBAAgB,CAAK,CAAA,EAAA,MAAA,CAAA,cAAc,CAAE,CAAA,CAAA;EACpD,aAAC,GAAG,EACD,CAAA,GAAC,EAAC,gBAAgB,KAAA,IAAA,IAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,EAAE,CAAA,IACrB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAE,EAAE,CAAC,EACF,GAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,EACnF,GAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE,EACzF,EACH,CAAA;OACL,CAAA;MAED,wBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,YAAgC,EAAA;;EAC3C,QAAA,IAAM,SAAS,GAAG,UAAC,GAAW,IAAK,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,GAAG,CAAnB,EAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CAAA,EAAA,CAAC;UAE7G,OAAO;cACH,EAAE,EAAE,YAAY,CAAC,EAAE;cACnB,YAAY,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,EAAE;cACxD,eAAe,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAY,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,EAAE;EAC9D,YAAA,YAAY,EAAE,CAAA,CAAA,EAAA,GAAA,YAAY,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,KAAI,EAAE;EACnD,YAAA,WAAW,EAAE,YAAY,CAAC,WAAW,IAAI,KAAK;EAC9C,YAAA,eAAe,EAAE,YAAY,CAAC,eAAe,IAAI,KAAK;EACtD,YAAA,UAAU,EAAE,YAAY,CAAC,MAAM,IAAI,CAAC;EACpC,YAAA,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,EAAE;EACrC,YAAA,aAAa,EAAE,YAAY,CAAC,QAAQ,IAAI,EAAE;EAC1C,YAAA,iBAAiB,EAAE,SAAS,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,GAAG,IAAI;EACjG,YAAA,iBAAiB,EAAE,SAAS,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,GAAG,IAAI;EACjG,YAAA,qBAAqB,EAAE,SAAS,CAAC,uBAAuB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,GAAG,IAAI;EAC7G,YAAA,qBAAqB,EAAE,SAAS,CAAC,uBAAuB,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,GAAG,IAAI;EAC7G,YAAA,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI;EAC/E,YAAA,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI;;EAElF,YAAA,WAAW,EAAE,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,kBAAkB;cAC7C,UAAU,EAAE,CAAA,CAAA,EAAA,GAAA,YAAY,aAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,UAAC,KAAU,EAAK,EAAA,OAAA,KAAK,CAAC,IAAI,CAAA,EAAA,CAAC,KAAI,EAAE;EAC3E,YAAA,OAAO,EAAE,CAAA,CAAA,EAAA,GAAA,YAAY,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,UAAA,GAAG,EAAA;;EAAI,gBAAA,QAAC;sBAClD,EAAE,EAAE,GAAG,CAAC,EAAE;sBACV,IAAI,EAAE,GAAG,CAAC,IAAI;EACd,oBAAA,WAAW,EAAE,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,0CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,KAAI,EAAE;EACrD,oBAAA,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC;EACvB,oBAAA,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,KAAK;EAC7C,oBAAA,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,KAAK;EAChC,oBAAA,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;EACjD,iBAAA,EAAC;eAAA,CAAC,KAAI,EAAE;cACT,cAAc,EAAE,CAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,uBAAZ,YAAY,CAAE,cAAc,KAAI,EAAE;WACrD,CAAA;OACJ,CAAA;MAED,wBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,QAAgB,EAAA;;UAC7B,OAAA,MAAA,CAAA,MAAA,CAAA,EACI,EAAE,EAAE,CAAC,EACL,OAAO,EAAE,CAAC;EACN,oBAAA,EAAE,EAAE,CAAC;EACL,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;sBACzB,IAAI,EAAE,aAAW,QAAU;EAC9B,iBAAA,CAAC,EACF,OAAO,EAAE,QAAQ,EACjB,oBAAoB,EAAE,EAAE,EACxB,UAAU,EAAE,CAAC,EACb,cAAc,EAAE,CAAC,EACd,GAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,EAAE,EACzF,CAAA;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,uBAAuB,GAAvB,UAAwB,QAA4B,EAAE,eAAqC,EAAA;EAArC,QAAA,IAAA,eAAA,KAAA,KAAA,CAAA,EAAA,EAAA,eAAqC,GAAA,EAAA,CAAA,EAAA;;EACvF,QAAA,OACI,MAAA,CAAA,MAAA,CAAA,EAAA,EAAE,EAAE,CAAA,eAAe,KAAA,IAAA,IAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,EAAE,KAAI,CAAC,EAC5B,QAAQ,EAAA,QAAA,EACR,WAAW,EAAE,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,WAAW,EAC/B,GAAC,EAAC,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,EAAE,CAAA,KAAI,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,IAAI,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,EACjH,CAAA;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,UAAyB,aAAsC,EAAE,YAAgD,EAAA;;EAC7G,QAAA,IAAI,CAAC,aAAa;EAAE,YAAA,OAAO,aAAa,CAAC;UAEzC,IAAI,EAAC,aAAa,aAAb,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAb,aAAa,CAAE,EAAE,CAAA,KAAI,MAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,EAAE;EACzD,YAAA,aAAa,CAAC,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC;EAC5D,SAAA;EAGD,QAAA,CAAA,EAAA,GAAA,aAAa,CAAC,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,UAAC,OAAY,EAAE,MAAc,EAAA;;EACzE,YAAA,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;cAE7B,IAAI,YAAY,GAAG,CAAC,CAAC;cACrB,IAAI,qBAAqB,GAAG,CAAC,CAAC;EAE9B,YAAA,CAAA,EAAA,GAAA,OAAO,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,UAAC,CAAkB,EAAE,MAAc,EAAA;EACrE,gBAAA,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;kBACvB,IAAM,QAAQ,GAAG,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,QAAQ,KAAI,YAAY,CAAC,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,UAAU,KAAI,CAAC,CAAC,CAAC,CAAC;EAClE,gBAAA,IAAI,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE;sBAClC,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC7C,oBAAA,qBAAqB,EAAE,CAAC;EAC3B,iBAAA;EACL,aAAC,CAAC,CAAC;EAEH,YAAA,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC;EAClC,YAAA,OAAO,CAAC,cAAc,GAAG,qBAAqB,CAAC;EACnD,SAAC,CAAC,CAAC;EAEH,QAAA,OAAO,aAAa,CAAC;OACxB,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,qBAAqB,GAArB,UAAsB,YAAoB,EAAE,aAAsC,EAAE,iBAA4B,EAAA;;EAC5G,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACI,EAAE,EAAE,YAAY,EAChB,WAAW,EAAE,CAAA,CAAA,EAAA,GAAA,aAAa,aAAb,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAb,aAAa,CAAE,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,UAAC,OAAY,IAAK,OAAA,OAAO,CAAC,QAAQ,KAAK,KAAK,CAA1B,EAA0B,CAAA,CAAE,MAAM,CAAC,UAAC,GAAW,EAAE,OAAY,IAAK,OAAA,GAAG,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAA,EAAA,EAAE,CAAC,CAAC,KAAI,CAAC,EAAA,GACrL,CAAC,YAAY,IACV,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,oBAAoB,CAC/B,EAAC,GACE,iBAAiB,IAAI,EAAE,iBAAiB,EAAA,iBAAA,EAAE,EAAC,EAAA,EAC/C,oBAAoB,EAAE,IAAI,EAC5B,CAAA,CAAA;OACL,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,6BAA6B,GAA7B,UAA8B,YAAoB,EAAE,4BAAgD,EAAE,QAAiB,EAAA;;EACnH,QAAA,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;EACnB,QAAA,IAAI,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;EAC3B,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;EACzB,QAAA,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;EACtB,QAAA,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;UAC9C,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACI,EAAE,EAAE,CAAC,EACL,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,IAAI,IAAI,EAAE,EACrB,UAAU,kBACN,EAAE,EAAE,YAAY,EACb,GAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,KAAI,EAAE,MAAM,EAAE,MAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,EAAC,EAE3F,cAAc,EAAE;EACZ,gBAAA,IAAI,EAAE,oBAAoB;EAC7B,aAAA,EACE,EAAA,4BAA4B,CAE5B,GAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAA,QAAA,EAAE,EACvC,CAAA;OACJ,CAAA;EAED;;;EAGG;EACH,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,UAAmB,aAAsB,EAAE,oBAA4B,EAAE,eAAuB,EAAA;EAC5F,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,oBAAoB,EAAE;EACzC,YAAA,OAAO,EAAE,CAAC;EACb,SAAA;EACD,QAAA,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC;OAC1F,CAAA;;;8IAxOQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;EAAxB,wBAAA,CAAA,KAAA,GAAAA,aAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,wBAAwB,cAFrB,MAAM,EAAA,CAAA,CAAA;oHAET,wBAAwB,EAAA,UAAA,EAAA,CAAA;oBAHpCW,aAAU;EAAC,YAAA,IAAA,EAAA,CAAA;EACR,oBAAA,UAAU,EAAE,MAAM;mBACrB,CAAA;;;ECFD,IAAA,sBAAA,kBAAA,YAAA;EAGE,IAAA,SAAA,sBAAA,CACU,IAAgB,EAAA;;EAAhB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;UAHT,IAAA,CAAA,aAAa,GAAG,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;OAIlE;EAEG,IAAA,sBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;UACN,OAAO,IAAIJ,gBAAW,EAAE,CAAC,GAAG,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;OACxE,CAAA;MAED,sBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,MAAW,EAAA;;EACtB,QAAA,IAAI,KAAK,GAAG,IAAIC,eAAU,EAAE,CAAC;;cAC7B,KAAkB,IAAA,EAAA,GAAA,QAAA,CAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;EAAlC,gBAAA,IAAM,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;EACZ,gBAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EACrC,aAAA;;;;;;;;;EACD,QAAA,OAAO,KAAK,CAAC;OACd,CAAA;MAED,sBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,QAAgB,EAAA;EAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,IAAI,CAAC,aAAa,GAAA,6BAAA,GAA8B,QAAQ,GAAA,OAAO,CAAC,CAAC;OAC1F,CAAA;MAED,sBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,oBAA4B,EAAA;EAC3C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC8D,yBAAqC,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,oBAAoB,EAAA,oBAAA,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC5J,CAAA;MAED,sBAAgC,CAAA,SAAA,CAAA,gCAAA,GAAhC,UAAiC,OAAY,EAAA;UAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,0BAA0B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAClI,CAAA;MAED,sBAA+B,CAAA,SAAA,CAAA,+BAAA,GAA/B,UAAgC,OAAY,EAAA;UAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAACA,yBAAqC,CAAC,0BAA0B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACnI,CAAA;MAED,sBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAY,EAAA;UACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACtH,CAAA;MAED,sBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,OAAY,EAAA;UACxB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAACA,yBAAqC,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACtH,CAAA;MAED,sBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,MAAiC,EAAA;UACjD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAA,MAAA,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACvH,CAAA;MAED,sBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,MAAW,EAAA;EAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACA,yBAAqC,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAC9I,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,eAAuB,EAAE,SAAiB,EAAA;;UACzD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAAA,yBAAqC,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,4BAA4B,EAAE,eAAe,aAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,QAAQ,EAAE,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,YAAY,EAAE,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACtO,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,SAAiB,EAAE,iBAAyB,EAAA;;UAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAAA,yBAAqC,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,YAAY,EAAE,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAE,QAAQ,EAAE,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,oBAAoB,EAAE,iBAAiB,aAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACjO,CAAA;MAED,sBAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,OAAY,EAAA;UACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAACA,yBAAqC,CAAC,wBAAwB,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OAChI,CAAA;EAED,IAAA,sBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,IAAY,EAAE,MAAW,EAAA;EACxC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAACC,iBAA6B,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;OACzJ,CAAA;;;4IAjEU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApE,eAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAAH,aAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gJAAtB,sBAAsB,EAAA,CAAA,CAAA;oHAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;oBADlCW,aAAU;;;ECYX,IAAA,0BAAA,kBAAA,YAAA;MAqBI,SACY,0BAAA,CAAA,WAAwB,EACxB,wBAAkD,EAClD,sBAA8C,EAC/C,SAAmD,EAC1B,UAAe,EAAA;EAJvC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;EACxB,QAAA,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;EAClD,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EAC/C,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAA0C;EAC1B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;EAzBnD,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;EACnC,QAAA,IAAe,CAAA,eAAA,GAA8B,IAAI,CAAC;EAClD,QAAA,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;EAChB,QAAA,IAAa,CAAA,aAAA,GAAuG,EAAE,CAAC;EAGvH,QAAA,IAAmB,CAAA,mBAAA,GAAyF,EAAE,CAAC;EAG/G,QAAA,IAAY,CAAA,YAAA,GAAuC,EAAE,CAAC;EACtD,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;;EAGzB,QAAA,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;EAEzB,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;EAC9B,QAAA,IAAU,CAAA,UAAA,GAAc,EAAE,CAAC;OAQtB;EAEL,IAAA,0BAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;EACI,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EAChD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC;EAChD,QAAA,IAAI,CAAC,KAAK,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;EACpC,QAAA,IAAI,CAAC,aAAa,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAC;EACpD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC;EAClD,QAAA,IAAI,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC;EACxC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,KAAI,EAAE,CAAC;EACpD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC;EAElD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;EACjC,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,eAAe,CAAC,CAAC;EACtE,SAAA;UACD,IAAI,CAAC,cAAc,EAAE,CAAC;UACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;OACjC,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,yBAAyB,GAAzB,YAAA;UAAA,IAaC,KAAA,GAAA,IAAA,CAAA;;UAZG,IAAI,IAAI,CAAC,OAAO,EAAE;EACd,YAAA,OAAO,EAAE,CAAC;EACb,SAAA;EACD,QAAA,IAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;UAEpC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAA,MAAM,EAAA;;EACpD,YAAA,CAAA,EAAA,GAAA,MAAM,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAjB,EAAiB,CAAC,CAAC;EAC/D,SAAC,CAAC,CAAC;EAEH,QAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAC,UAAA,EAAE,EAAA;cAChC,OAAO,KAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;WAC1E,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,OAAO,CAAyB,CAAC;OAC/C,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;UAAA,IA2CC,KAAA,GAAA,IAAA,CAAA;;UA1CG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;EAC7C,YAAA,YAAY,EAAE,CAAC,EAAE,EAAEsB,eAAU,CAAC,QAAQ,CAAC;EACvC,YAAA,YAAY,EAAE,CAAC,EAAE,EAAEA,eAAU,CAAC,QAAQ,CAAC;cACvC,eAAe,EAAE,CAAC,EAAE,CAAC;cACrB,eAAe,EAAE,CAAC,KAAK,CAAC;cACxB,WAAW,EAAE,CAAC,KAAK,CAAC;;cAEpB,UAAU,EAAE,CAAC,IAAI,CAAC;cAClB,iBAAiB,EAAE,CAAC,IAAI,CAAC;cACzB,iBAAiB,EAAE,CAAC,IAAI,CAAC;cACzB,qBAAqB,EAAE,CAAC,IAAI,CAAC;cAC7B,qBAAqB,EAAE,CAAC,IAAI,CAAC;cAC7B,WAAW,EAAE,CAAC,IAAI,CAAC;cACnB,YAAY,EAAE,CAAC,IAAI,CAAC;cACpB,WAAW,EAAE,CAAC,EAAE,CAAC;cACjB,QAAQ,EAAE,CAAC,EAAE,CAAC;cACd,aAAa,EAAE,CAAC,EAAE,CAAC;cACnB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;cACnC,cAAc,EAAE,CAAC,EAAE,CAAC;cACpB,UAAU,EAAE,CAAC,EAAE,CAAC;EACnB,SAAA,CAAC,CAAC;EAEH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,SAAS,CAAC,YAAA;cAChE,KAAI,CAAC,sBAAsB,EAAE,CAAC;EAClC,SAAC,CAAC,CAAC;EACH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,SAAS,CAAC,YAAA;;EACrE,YAAA,CAAA,EAAA,GAAA,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACnG,SAAC,CAAC,CAAC;EACH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,SAAS,CAAC,YAAA;;EACrE,YAAA,CAAA,EAAA,GAAA,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACnG,SAAC,CAAC,CAAC;EACH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,SAAS,CAAC,YAAA;;EACzE,YAAA,CAAA,EAAA,GAAA,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACvG,SAAC,CAAC,CAAC;EACH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,SAAS,CAAC,YAAA;;EACzE,YAAA,CAAA,EAAA,GAAA,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACvG,SAAC,CAAC,CAAC;UACH,IAAI,IAAI,CAAC,eAAe,EAAE;cACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;EACjD,SAAA;EAAM,aAAA;EACH,YAAA,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;EACrC,SAAA;OACJ,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAa,eAAmC,EAAE,gBAAiC,EAAA;UAAnF,IAmBC,KAAA,GAAA,IAAA,CAAA;EAnBiD,QAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAiC,GAAA,KAAA,CAAA,EAAA;;EAC/E,QAAA,IAAI,CAAC,eAAe;cAAE,OAAO;EAC7B,QAAA,IAAM,cAAc,GAAG,CAAA,eAAe,aAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,cAAc,KAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;UAC3F,IAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,eAAe,CAAA,EAAA,EAAE,cAAc,EAAA,cAAA,EAAA,CAAA,CAAG,CAAC;EACtG,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;UAC7C,IAAI,MAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;cAC1B,IAAM,YAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EACpD,YAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAA;EAC9B,gBAAA,IAAM,QAAQ,GAAG,KAAI,CAAC,YAAY,EAAE,CAAC;EACrC,gBAAA,IAAI,YAAU,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE;sBACnE,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,YAAU,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EACjF,iBAAA;EACD,gBAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;EACzB,gBAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAChC,aAAC,CAAC,CAAC;EACN,SAAA;EACD,QAAA,IAAI,gBAAgB,EAAE;EAClB,YAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;EACjD,SAAA;OACJ,CAAA;EAEK,IAAA,0BAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;;;;;;;EACF,wBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;EACjC,4BAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;8BAC3C,OAAO,CAAA,CAAA,YAAA,CAAA;EACV,yBAAA;EAEK,wBAAA,UAAU,GAAG,MAAM,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,IAAI,CAAC,CAAC;EAC3E,wBAAA,KAAK,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;EAC3D,wBAAA,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,KAAI,EAAE,CAAC;0BACpE,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;EAEjE,wBAAA,IAAI,aAAa,IAAI,UAAU,GAAG,CAAC,EAAE;8BAC7B,YAAY,GAAG,CAAC,CAAC;8BACjB,gBAAgB,GAAG,KAAK,CAAC;;EAE7B,gCAAA,KAAkB,eAAA,GAAA,QAAA,CAAA,aAAa,CAAA,EAAE,iBAAA,GAAA,eAAA,CAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,iBAAA,GAAA,eAAA,CAAA,IAAA,EAAA,EAAA;sCAAtB,GAAG,GAAA,iBAAA,CAAA,KAAA,CAAA;EACV,oCAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK;0CAAE,SAAS;sCAC/B,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;sCAClC,IAAI,CAAC,GAAG,UAAU,EAAE;0CAChB,gBAAgB,GAAG,IAAI,CAAC;0CACxB,MAAM;EACT,qCAAA;sCACD,YAAY,IAAI,CAAC,CAAC;EACrB,iCAAA;;;;;;;;;EAED,4BAAA,IAAI,gBAAgB,EAAE;;EAElB,gCAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,gEAAgE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kCAC9J,OAAO,CAAA,CAAA,YAAA,CAAA;EACV,6BAAA;EAED,4BAAA,IAAI,KAAK,KAAK,4BAA4B,IAAI,YAAY,GAAG,UAAU,EAAE;EACrE,gCAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,wEAAwE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kCACtK,OAAO,CAAA,CAAA,YAAA,CAAA;EACV,6BAAA;EACJ,yBAAA;EAED,wBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;0BAEnB,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;EAC3D,wBAAA,IAAI,aAAa,IAAI,UAAU,GAAG,CAAC,KAAI,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,EAAE;EAC9D,4BAAA,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAA;kCAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE;sCACjD,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EACjF,iCAAA;EACL,6BAAC,CAAC,CAAC;EACN,yBAAA;gCAEG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAA,EAA7B,OAA6B,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;EAEvB,wBAAA,OAAA,GAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gCAE5D,CAAA,OAAK,KAAA,IAAA,IAAL,OAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,OAAK,CAAE,oBAAoB,MAAK,SAAS,CAAA,EAAzC,OAAyC,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;EACzC,wBAAA,IAAI,CAAC,OAAK,CAAC,eAAe,CAAC,cAAc,EAAE;EACvC,4BAAA,OAAK,CAAC,eAAe,CAAC,cAAc,GAAG,EAAE,CAAC;EAC7C,yBAAA;0BAEK,aAAa,GAAG,OAAK,CAAC,eAAe,CAAC,cAAc,CAAC,OAAK,CAAC,oBAAoB,CAAC,CAAC;0BACjF,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;;;;EAElE,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,CAAA;;EAA7C,wBAAA,QAAQ,GAAG,EAAkC,CAAA,IAAA,EAAA,CAAA;0BACnD,OAAK,CAAC,eAAe,CAAC,cAAc,CAAC,OAAK,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAAC;EAC5E,wBAAA,IAAI,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,EAAE,EAAE;8BACd,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;EAC7C,yBAAA;EACD,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;;;;EAE1B,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,wBAAA,OAAO,CAAC,KAAK,CAAC,OAAK,CAAC,CAAC;EACrB,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;0BACtI,MAAM,EAAE,KAAK,EAAA,OAAA,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;;;0BAIvC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;;;;EAEnD,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,CAAA;;EAA7C,wBAAA,QAAQ,GAAG,EAAkC,CAAA,IAAA,EAAA,CAAA;EACnD,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAK,KAAL,IAAA,IAAA,OAAK,uBAAL,OAAK,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,QAAQ,CAAC,CAAC;EACvD,wBAAA,IAAI,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,EAAE,EAAE;8BACd,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;8BAEpC,KAAM,GAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAC,CAAM,EAAK,EAAA,OAAA,CAAC,CAAC,EAAE,KAAK,OAAK,CAAC,eAAe,CAA9B,EAA8B,CAAC,CAAC;EACtF,4BAAA,IAAI,KAAG,EAAE;kCACL,CAAA,EAAA,GAAA,KAAG,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,EAAE,CAAC,CAAC;kCACpC,IAAI,KAAG,CAAC,QAAQ,EAAE;EACR,oCAAA,GAAG,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAK,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAM,EAAA,EAAK,OAAA,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,KAAG,CAAC,QAAQ,CAAhC,EAAgC,CAAC,CAAC;EAC1G,oCAAA,IAAI,GAAG,EAAE;0CACL,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;0CACpD,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC3C,qCAAA;EACJ,iCAAA;EACJ,6BAAA;EAAM,iCAAA;EACH,gCAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;sCAC1B,EAAE,EAAE,YAAY,EAAE;EAClB,oCAAA,QAAQ,EAAE,IAAI;sCACd,WAAW,EAAE,CAAC,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,EAAE,CAAC;EAC9B,iCAAA,CAAC,CAAC;EACN,6BAAA;EACJ,yBAAA;EAED,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;;;;EAE1B,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,wBAAA,OAAO,CAAC,KAAK,CAAC,OAAK,CAAC,CAAC;EACrB,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;0BACtI,MAAM,EAAE,KAAK,EAAA,OAAA,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;;EAGhD,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;;0BAGzB,IAAI,CAAC,gBAAgB,CAAC,OAAK,KAAA,IAAA,IAAL,OAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,OAAK,CAAE,eAAe,CAAC,CAAC;;;EAE1C,wBAAA,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gCAG5F,MAAA,IAAI,CAAC,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA,EAAxB,OAAwB,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;;;;EAEN,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA,CAAA;;0BAApD,WAAW,GAAG,SAAsC,CAAC;EACrD,wBAAA,IAAI,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,EAAE,EAAE;8BACjB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,WAAW,CAAA;EAClD,yBAAA;EACD,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,mDAAmD,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;0BACnJ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;EACxC,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;;;;EAE1B,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,wBAAA,OAAO,CAAC,KAAK,CAAC,OAAK,CAAC,CAAC;EACrB,wBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EACtI,wBAAA,MAAM,EAAE,KAAK,EAAA,OAAA,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;;;EAG1D,wBAAA,IAAI,CAAC,sCAAsC,CAAC,WAAW,CAAC,CAAC;;;;;;OAGpE,CAAA;MAED,0BAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAY,EAAA;UAA3B,IAOC,KAAA,GAAA,IAAA,CAAA;EANG,QAAA,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM,EAAA;cAC/B,KAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;kBAC1D,IAAI,EAAE,UAAC,GAAG,EAAK,EAAA,OAAA,OAAO,CAAC,GAAyB,CAAC,CAAA,EAAA;kBACjD,KAAK,EAAE,UAAC,GAAG,EAAK,EAAA,OAAA,MAAM,CAAC,GAAG,CAAC,CAAA,EAAA;EAC9B,aAAA,CAAC,CAAC;EACP,SAAC,CAAC,CAAC;OACN,CAAA;MAED,0BAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAY,EAAA;UAA3B,IAOC,KAAA,GAAA,IAAA,CAAA;EANG,QAAA,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM,EAAA;cAC/B,KAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;kBACzD,IAAI,EAAE,UAAC,GAAG,EAAK,EAAA,OAAA,OAAO,CAAC,GAAyB,CAAC,CAAA,EAAA;kBACjD,KAAK,EAAE,UAAC,GAAG,EAAK,EAAA,OAAA,MAAM,CAAC,GAAG,CAAC,CAAA,EAAA;EAC9B,aAAA,CAAC,CAAC;EACP,SAAC,CAAC,CAAC;OACN,CAAA;MAED,0BAAsC,CAAA,SAAA,CAAA,sCAAA,GAAtC,UAAuC,QAA4B,EAAA;UAAnE,IA6CC,KAAA,GAAA,IAAA,CAAA;;EA5CG,QAAA,IAAM,aAAa,GAAG,SAAS,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,2BAA2B,CAAC,CAAC;UAC9E,IAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;EACxF,QAAA,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAA,EAAE;cAClC,IAAM,IAAI,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,wBAAwB,CAAC;EACrD,YAAA,IAAM,YAAY,GAAG,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,MAAM,IAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;EAC3E,YAAA,IAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;EAEpF,YAAA,CAAA,EAAA,GAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,eAAe,CAAC,CAAC;EAExD,YAAA,CAAA,EAAA,GAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAb,aAAa,CAAE,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EAC7D,SAAA;EAAM,aAAA;EACH,YAAA,IAAM,UAAU,GAAG,CAAA,EAAA,GAAA,aAAa,KAAb,IAAA,IAAA,aAAa,uBAAb,aAAa,CAAE,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,OAA6B,EAAA,cAAK,OAAA,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,EAAE,MAAI,MAAA,CAAA,EAAA,GAAA,KAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,CAAA,EAAA,CAAC,CAAC;EACxJ,YAAA,CAAA,EAAA,GAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,eAAe,CAAC,CAAC;EAC3D,SAAA;EAED,QAAA,IAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;EAClH,QAAA,IAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;EAE/G,QAAA,IAAM,OAAO,GAAG;EACZ,YAAA,UAAU,EAAE,aAAa;EACzB,YAAA,aAAa,EAAE,gBAAgB;WAClC,CAAA;EAED,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,YAAY;gBAC3B,IAAI,CAAC,sBAAsB,CAAC,+BAA+B,CAAC,OAAO,CAAC;gBACpE,IAAI,CAAC,sBAAsB,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;UAE5E,OAAO,CAAC,SAAS,CAAC;cACd,IAAI,EAAE,UAAC,GAAQ,EAAA;;EACX,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,gBAAA,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC;EACjB,oBAAA,OAAO,EAAE,IAAI;EACb,oBAAA,YAAY,EAAE,CAAA,EAAA,GAAA,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE;EACjC,oBAAA,aAAa,EAAE,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,aAAa;EACjC,oBAAA,WAAW,EAAE,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,WAAW;EAChC,iBAAA,CAAC,CAAC;eACN;cACD,KAAK,EAAE,UAAC,KAAU,EAAA;;EACd,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACrB,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,gBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,sBAAsB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBACtI,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAI,CAAC,YAAY,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;eACzE;EACJ,SAAA,CAAC,CAAC;OACN,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,YAAA;;EACI,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;cAAE,OAAO;EAEhE,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC;EACrC,QAAA,IAAM,KAAK,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;UAC9C,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;UAE7C,IAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;;UAG5I,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAC,EAAc,EAAA;EAAd,YAAA,IAAA,EAAA,GAAA,aAAc,EAAb,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,OAAO,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;EAChD,YAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;kBAAE,OAAO;EAEtC,YAAA,IAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;EAE/B,YAAA,IAAI,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE;EACf,gBAAA,IAAM,UAAU,GAAG,CAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,QAAQ,IAAG,CAACA,eAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;kBAC/D,IAAI,GAAG,KAAK,eAAe,EAAE;sBACzB,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,OAAO,CAAC,4EAA4E,CAAC,CAAC,CAAC;EACrH,iBAAA;kBACD,IAAI,GAAG,KAAK,mBAAmB,EAAE;sBAC7B,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,iBAAA;kBACD,IAAI,GAAG,KAAK,mBAAmB,EAAE;sBAC7B,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACnC,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,IAAI,EAAA;;EACjB,wBAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;0BACtD,IAAM,MAAM,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;EAC9B,wBAAA,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;0BAC1B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;8BACxD,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE;8BAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;EAClC,gCAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;EACvC,6BAAA;EACJ,yBAAA;EACD,wBAAA,OAAO,IAAI,CAAC;EAChB,qBAAC,CAAC,CAAC;EACN,iBAAA;kBACD,IAAI,GAAG,KAAK,uBAAuB,EAAE;sBACjC,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,iBAAA;kBACD,IAAI,GAAG,KAAK,uBAAuB,EAAE;sBACjC,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACnC,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAC,IAAI,EAAA;;EACjB,wBAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,uBAAuB,CAAC,CAAC;0BAC1D,IAAM,MAAM,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAC;EAC9B,wBAAA,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;0BAC1B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;8BACxD,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE;8BAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;EAClC,gCAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;EACvC,6BAAA;EACJ,yBAAA;EACD,wBAAA,OAAO,IAAI,CAAC;EAChB,qBAAC,CAAC,CAAC;EACN,iBAAA;kBACD,IAAI,GAAG,KAAK,aAAa,EAAE;sBACvB,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,iBAAA;kBACD,IAAI,GAAG,KAAK,cAAc,EAAE;sBACxB,UAAU,CAAC,IAAI,CAACA,eAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,iBAAA;EACD,gBAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;EACpE,aAAA;EAAM,iBAAA;kBACH,OAAO,CAAC,eAAe,EAAE,CAAC;kBAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,gBAAgB,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAChF,aAAA;cAED,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACzD,SAAC,CAAC,CAAC;;UAGH,IAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;EACxD,QAAA,IAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;UAE5C,IAAI,EAAC,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAA,EAAE;cACvB,cAAc,CAAC,eAAe,EAAE,CAAC;cACjC,cAAc,CAAC,KAAK,EAAE,CAAC;cACvB,cAAc,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;cAC5D,OAAO;EACV,SAAA;UAED,IAAM,gBAAgB,GAAG,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,QAAQ,IAAG,UAAC,OAAY,EAAA;cAC1D,IAAM,aAAa,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,UAAC,GAAQ,EAAA,EAAK,OAAA,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAA,EAAA,CAAC,CAAC;EACzF,YAAA,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;EAChE,SAAC,GAAG,IAAI,CAAC;EAET,QAAA,cAAc,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;UAE/C,IAAM,aAAa,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,aAAa,CAAC;UACjD,IAAM,WAAW,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,WAAW,CAAC;EAE7C,QAAA,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,QAAQ,EAAA;cACpC,IAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;cAC1C,IAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;EAEpD,YAAA,IAAI,CAAC,aAAa;kBAAE,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAClE,YAAA,IAAI,CAAC,WAAW;kBAAE,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;cAErE,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;cACzD,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC9D,SAAC,CAAC,CAAC;UAEH,cAAc,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;OAC/D,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,SAAiB,EAAE,UAAmB,EAAA;;UAC5C,IAAM,YAAY,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAC,cAAc,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;UACzE,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE;EACpF,YAAA,OAAO,KAAK,CAAC;EAChB,SAAA;EACD,QAAA,IAAI,UAAU,EAAE;EACZ,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;EAC5D,SAAA;EACD,QAAA,OAAO,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAA,CAAC;OACzD,CAAA;EAED,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAO,CAAA,SAAA,EAAA,SAAA,EAAA;EAAX,QAAA,GAAA,EAAA,YAAA;cACI,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;WAC9D;;;EAAA,KAAA,CAAA,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;;UACI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;EACvC,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;OACtG,CAAA;MAED,0BAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAa,EAAA;;UACtB,IAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;EAC7C,QAAA,IAAM,eAAe,GAAG,CAAA,EAAA,GAAA,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;EACvD,QAAA,IAAM,iBAAiB,GAAG,CAAA,EAAA,GAAA,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC;EAC3D,QAAA,IAAM,QAAQ,GAAG,eAAe,IAAI,iBAAiB,CAAC;EAEtD,QAAA,IAAI,eAAe,EAAE;EACjB,YAAA,CAAA,EAAA,GAAA,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;EAClD,SAAA;EAAM,aAAA;EACH,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EAChC,SAAA;EAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAA,CAAC,EAAA;EAC9B,YAAA,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE;EACzB,gBAAA,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;EACrB,aAAA;EACL,SAAC,CAAC,CAAC;UAEH,IAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;EACrE,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE;cAC1F,IAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAA,GAAG,EAAA,UAAI,OAAA,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAK,KAAK,CAAA,EAAA,CAAC,CAAC,MAAM,CAAC;cAC5G,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,kBAAkB,EAAE;EAC5C,gBAAA,OAAO,CAAC,QAAQ,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC;EAChD,aAAA;EACJ,SAAA;EACD,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;OACtG,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;EACI,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;cAC1B,EAAE,EAAE,CAAC,CAAC,CAAC;EACP,YAAA,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;EACtB,YAAA,WAAW,EAAE,CAAC,EAAE,EAAEA,eAAU,CAAC,QAAQ,CAAC;cACtC,MAAM,EAAE,CAAC,CAAC,CAAC;cACX,eAAe,EAAE,CAAC,KAAK,CAAC;cACxB,QAAQ,EAAE,CAAC,IAAI,CAAC;cAChB,iBAAiB,EAAE,CAAC,EAAE,CAAC;EAC1B,SAAA,CAAC,CAAC;OACN,CAAA;MAED,0BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,KAAU,EAAA;EACvB,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;OAC9D,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,KAAU,EAAE,OAAY,EAAA;;EAChC,QAAA,IAAM,UAAU,GAAG,MAAM,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,IAAI,CAAC,CAAC;UACjF,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;UACrC,IAAI,GAAG,GAAG,UAAU,EAAE;EAClB,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;cAChC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EACvD,SAAA;OACJ,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,UAAmB,KAAU,EAAE,OAAY,EAAA;UACvC,IAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAA,GAAG,EAAA,UAAI,OAAA,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAK,KAAK,CAAA,EAAA,CAAC,CAAC,MAAM,CAAC;UAC5G,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;UACrC,IAAI,GAAG,GAAG,kBAAkB,EAAE;EAC1B,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAAC;cACxC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,QAAQ,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;EAC/D,SAAA;OACJ,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC1C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC/B,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,UAAqB,aAAkC,EAAE,KAAc,EAAE,OAAgB,EAAA;;;UAErF,IAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;UAC3D,IAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;UACrD,IAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;EAEjE,QAAA,IAAI,aAAa,IAAI,UAAU,GAAG,CAAC,KAAI,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,EAAE;EAC9D,YAAA,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAA;kBAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE;sBACjD,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EACjF,iBAAA;EACL,aAAC,CAAC,CAAC;EACN,SAAA;EAED,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;EAEnG,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;cACpB,eAAe,kCAAO,YAAY,CAAA,EAAA,EAAE,cAAc,EAAE,MAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAA;EAC1G,YAAA,oBAAoB,EAAE,KAAK;EAC3B,YAAA,eAAe,EAAE,OAAO;EAC3B,SAAA,CAAC,CAAC;;EAGH,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;EAC1B,YAAA,YAAY,EAAE,EAAE;EAChB,YAAA,YAAY,EAAE,EAAE;EAChB,YAAA,WAAW,EAAE,KAAK;;EAElB,YAAA,UAAU,EAAE,IAAI;EAChB,YAAA,iBAAiB,EAAE,IAAI;EACvB,YAAA,iBAAiB,EAAE,IAAI;EACvB,YAAA,qBAAqB,EAAE,IAAI;EAC3B,YAAA,qBAAqB,EAAE,IAAI;EAC3B,YAAA,WAAW,EAAE,IAAI;EACjB,YAAA,YAAY,EAAE,IAAI;EAClB,YAAA,WAAW,EAAE,EAAE;EACf,YAAA,QAAQ,EAAE,EAAE;EACZ,YAAA,aAAa,EAAE,EAAE;EACjB,YAAA,cAAc,EAAE,EAAE;EAClB,YAAA,UAAU,EAAE,EAAE;EACjB,SAAA,CAAC,CAAC;UACH,IAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;EAC3E,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAA,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC9B,SAAA;UAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;EAC9B,QAAA,IAAI,aAAa,EAAE;EACf,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;EACpC,SAAA;UACD,IAAI,CAAC,WAAW,EAAE,CAAC;OACtB,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAoB,KAAa,EAAE,KAAY,EAAA;;UAC3C,KAAK,CAAC,eAAe,EAAE,CAAC;EACxB,QAAA,IAAM,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,KAAK,CAAC,CAAC;UAEjF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;;EAC7B,YAAA,IAAI,SAAS,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,EAAC,CAAA,MAAA,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,EAAE,GAAE,CAAC;EACjE,YAAA,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAC,EAAmB,EAAA,EAAK,OAAA,EAAE,KAAK,YAAY,CAAC,EAAE,CAAtB,EAAsB,CAAC,CAAC;EAC9E,YAAA,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;EACtD,SAAC,CAAC,CAAC;EAEH,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;EAEtE,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAA,CAAC,EAAA;cAC9B,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,UAAA,GAAG,EAAI,EAAA,OAAA,GAAG,KAAK,YAAY,CAAC,EAAE,CAAA,EAAA,CAAC,CAAC;EACzE,SAAC,CAAC,CAAC;UACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;OAC7F,CAAA;MAED,0BAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,GAAQ,EAAA;;UAChB,OAAO,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,IAAG,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC;OAC/E,CAAA;MAED,0BAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,EAAmB,EAAA;;EACpC,QAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,CAAqB,IAAK,OAAA,CAAC,CAAC,EAAE,KAAK,EAAE,CAAX,EAAW,CAAC,CAAC;OAC7G,CAAA;MAED,0BAAqB,CAAA,SAAA,CAAA,qBAAA,GAArB,UAAsB,EAAsB,EAAA;;EACxC,QAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,UAAC,CAAqB,IAAK,OAAA,CAAC,CAAC,EAAE,KAAK,EAAE,CAAX,EAAW,CAAC,CAAC;OAClH,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,uBAAuB,GAAvB,UAAwB,EAAsB,EAAE,KAAY,EAAA;UACxD,KAAK,CAAC,eAAe,EAAE,CAAC;UACxB,IAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;EAC7C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;EACZ,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EAC1C,SAAA;OACJ,CAAA;MAED,0BAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,cAAoC,EAAA;UAA7D,IA2BC,KAAA,GAAA,IAAA,CAAA;EA1BG,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;EAC9B,QAAA,IAAM,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;UAEvC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;;cAC7B,IAAM,QAAQ,GAAG,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;EACvC,YAAA,IAAM,SAAS,GAAG,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,KAAI,EAAE,CAAC;EAE5D,YAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;EACtB,gBAAA,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;sBAC1B,EAAE,EAAE,YAAY,EAAE;EAClB,oBAAA,QAAQ,EAAE,QAAQ;sBAClB,WAAW,EAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAM,SAAS,CAAC,CAAA;EAC9B,iBAAA,CAAC,CAAC;EACH,gBAAA,SAAS,CAAC,OAAO,CAAC,UAAC,EAAO,IAAK,OAAA,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAA5B,EAA4B,CAAC,CAAC;EAChE,aAAA;EACL,SAAC,CAAC,CAAC;EAEH,QAAA,cAAc,CAAC,OAAO,CAAC,UAAA,EAAE,EAAA;EACrB,YAAA,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC3C,gBAAA,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;sBAC1B,EAAE,EAAE,YAAY,EAAE;EAClB,oBAAA,QAAQ,EAAE,IAAI;EACd,oBAAA,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACvB,iBAAA,CAAC,CAAC;EACN,aAAA;EACL,SAAC,CAAC,CAAC;OACN,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAoB,OAAe,EAAE,WAAmC,EAAA;;UAAxE,IAiCC,KAAA,GAAA,IAAA,CAAA;;UAhCG,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,KAAK,OAAO,CAAhB,EAAgB,CAAC,CAAC;UAC7E,IAAI,UAAU,KAAK,CAAC,CAAC;cAAE,OAAO;UAC9B,IAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;EAEnD,QAAA,IAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;EAEnC,QAAA,IAAI,WAAW,EAAE;cACb,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,WAAW,CAAA,EAAA,CAAC,CAAC;EACxF,YAAA,IAAI,MAAM,EAAE;EACR,gBAAA,IAAI,SAAS,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,EAAC,CAAA,MAAA,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,EAAE,GAAE,CAAC;kBACpE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAS,CAAC,CAAA,EAAA,CAAC,CAAC;EAC3E,gBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;EACxD,aAAA;EACJ,SAAA;UAED,IAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAA,EAAA,CAAC,CAAC;UAEzG,IAAI,aAAa,IAAI,WAAW,EAAE;cAC9B,CAAA,EAAA,GAAA,aAAa,CAAC,WAAW,EAAC,IAAI,CAAI,KAAA,CAAA,EAAA,EAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAK,CAAC,WAAW,CAAE,CAAA,CAAA,CAAA;cACrD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;EAClD,SAAA;EAAM,aAAA;EACH,YAAA,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;EAChC,SAAA;EAED,QAAA,IAAI,WAAW,EAAE;cACb,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,WAAW,CAAA,EAAA,CAAC,CAAC;EACxF,YAAA,IAAI,MAAM,EAAE;EACR,gBAAA,IAAI,SAAS,GAAO,aAAA,CAAA,EAAA,EAAA,MAAA,EAAC,CAAA,MAAA,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,EAAE,GAAE,CAAC;kBACpE,IAAM,GAAG,GAAG,IAAI,GAAG,CAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAK,SAAS,CAAA,CAAA,EAAA,MAAA,CAAK,KAAK,CAAC,WAAW,CAAA,CAAA,CAAE,CAAC;EAC1D,gBAAA,CAAA,EAAA,GAAA,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9D,aAAA;EACJ,SAAA;OACJ,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;EACI,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;EACjC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;cACvB,OAAO;EACV,SAAA;UACD,IAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;UAEvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,eAAe,CAAC,CAAC;UAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;OACtB,CAAA;MAEO,0BAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,WAAgB,EAAA;EACrC,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;UAEhC,IAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;EAC3E,QAAA,OAAO,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAA,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC9B,SAAA;EAED,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;OAClC,CAAA;EAEO,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UAAA,IAMP,KAAA,GAAA,IAAA,CAAA;UALG,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;EAC5D,YAAA,UAAU,CAAC,YAAA;kBACP,KAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;eACpD,EAAE,CAAC,CAAC,CAAC;EACT,SAAA;OACJ,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,KAAa,EAAE,IAAS,EAAA;EAChC,QAAA,OAAO,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,KAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7D,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,KAAa,EAAE,OAAY,EAAA;EACtC,QAAA,OAAO,OAAO,CAAC;OAClB,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,KAAa,EAAE,KAAU,EAAA;EACpC,QAAA,OAAO,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC3D,CAAA;EAED,IAAA,0BAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAa,EAAE,EAAO,EAAA;EACpC,QAAA,OAAO,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC9C,CAAA;;;EAhtBQ,0BAAA,CAAA,IAAA,GAAAjC,aAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,0BAA0B,yKA0BvBC,kBAAe,EAAA,CAAA,EAAA,MAAA,EAAAD,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EA1BlB,0BAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,iMChBvC,wnqCAybM,EAAA,MAAA,EAAA,CAAA,g4ZAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAoC,cAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAoC,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAlC,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA5B,aAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAT,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAqC,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAArC,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAAsC,gBAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHDzaO,0BAA0B,EAAA,UAAA,EAAA,CAAA;oBANtCpC,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACP,oBAAA,QAAQ,EAAE,4BAA4B;EACtC,oBAAA,WAAW,EAAE,qCAAqC;sBAClD,SAAS,EAAE,CAAC,qCAAqC,CAAC;mBACrD,CAAA;;;gCA4BQC,SAAM;iCAACL,kBAAe,CAAA;;2BAnBG,eAAe,EAAA,CAAA;wBAA5Cc,YAAS;yBAAC,iBAAiB,CAAA;;;EEdhC,IAAA,wBAAA,kBAAA,YAAA;EALA,IAAA,SAAA,wBAAA,GAAA;EASW,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;EAE3B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAID,eAAY,EAAiD,CAAC;EACjF,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAIA,eAAY,EAAmB,CAAC;EACxD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAIA,eAAY,EAAmB,CAAC;EAC3D,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAIA,eAAY,EAA4C,CAAC;EAE7F,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;EACjB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;OA8CpB;EA3CC,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;UAAA,IAEC,KAAA,GAAA,IAAA,CAAA;UADC,UAAU,CAAC,YAAM,EAAA,OAAA,KAAI,CAAC,aAAa,EAAE,CAAA,EAAA,CAAC,CAAC;OACxC,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;UAAA,IAMC,KAAA,GAAA,IAAA,CAAA;EALC,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;EAE/B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;cAClB,UAAU,CAAC,YAAM,EAAA,OAAA,KAAI,CAAC,aAAa,EAAE,CAAA,EAAA,CAAC,CAAC;EACxC,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;EACE,QAAA,IAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;UAC3C,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;OACrD,CAAA;MAED,wBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAwB,EAAA;EACtC,QAAA,IAAI,CAAC,IAAI;EAAE,YAAA,OAAO,EAAE,CAAC;EACrB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OAC1G,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;MAED,wBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,QAA4B,EAAA;;EAC/C,QAAA,OAAO,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CACvC,UAAA,MAAM,EAAI,EAAA,OAAA,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,iBAAiB,KAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAhE,EAAgE,CAC3E,CAAC;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAa,EAAE,MAAW,EAAA;;EACxC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5E,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,KAAa,EAAE,EAAO,EAAA;EACnC,QAAA,OAAO,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC5C,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,KAAa,EAAE,KAAU,EAAA;EACxC,QAAA,OAAO,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,IAAI,KAAI,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7D,CAAA;;;8IA3DU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAd,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAxB,wBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,0hBCTrC,y8MAgGe,EAAA,MAAA,EAAA,CAAA,81ZAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAG,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,aAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,eAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAF,aAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAAyE,WAAA,EAAA,EAAA,CAAA,CAAA;oHDvFF,wBAAwB,EAAA,UAAA,EAAA,CAAA;oBALpCtE,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,sBAAsB;EAChC,oBAAA,WAAW,EAAE,mCAAmC;sBAChD,SAAS,EAAE,CAAC,mCAAmC,CAAC;mBACjD,CAAA;gCAEU,eAAe,EAAA,CAAA;wBAAvBW,QAAK;kBACG,QAAQ,EAAA,CAAA;wBAAhBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBAEI,YAAY,EAAA,CAAA;wBAArBC,SAAM;kBACG,iBAAiB,EAAA,CAAA;wBAA1BA,SAAM;kBACG,oBAAoB,EAAA,CAAA;wBAA7BA,SAAM;kBACG,mBAAmB,EAAA,CAAA;wBAA5BA,SAAM;kBAIoB,YAAY,EAAA,CAAA;wBAAtCF,YAAS;yBAAC,cAAc,CAAA;;;AEJ3B,MAAA,wBAAA,kBAAA,YAAA;EAiCE,IAAA,SAAA,wBAAA,CACU,sBAA8C,EAC9C,wBAAkD,EAClD,MAAiB,EAAA;EAFjB,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;EAC9C,QAAA,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;EAClD,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;EAnClB,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;EAC5C,QAAA,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;EACnC,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;EAE5B,QAAA,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;EACzB,QAAA,IAAoB,CAAA,oBAAA,GAAW,CAAC,CAAC;EACjC,QAAA,IAAoB,CAAA,oBAAA,GAAe,EAAE,CAAC;EACtC,QAAA,IAA4B,CAAA,4BAAA,GAAuB,EAAE,CAAC;EACtD,QAAA,IAA6B,CAAA,6BAAA,GAAY,KAAK,CAAC;EAE/C,QAAA,IAAuB,CAAA,uBAAA,GAAW,CAAC,CAAC;EACpC,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;EACnC,QAAA,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;EACtC,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;EAE9B,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAID,eAAY,EAAU,CAAC;EAChD,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAIA,eAAY,EAAU,CAAC;EACxD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAIA,eAAY,EAA2D,CAAC;EAExG,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;EAC5B,QAAA,IAAY,CAAA,YAAA,GAAuC,EAAE,CAAC;EACtD,QAAA,IAA2B,CAAA,2BAAA,GAA4B,EAAE,EAAE,EAAE,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC;EAC/F,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;EAE/B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;EAC9B,QAAA,IAAU,CAAA,UAAA,GAAc,EAAE,CAAC;EAC3B,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;EAC1B,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;EACnC,QAAA,IAAe,CAAA,eAAA,GAAkB,IAAI,CAAC;EACrB,QAAA,IAAqB,CAAA,qBAAA,GAAG,yCAAyC,CAAC;OAM9E;EAEL,IAAA,wBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,YAAA;;UACE,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;UACjF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;EAC9E,QAAA,IAAI,CAAC,YAAY,CAAC,CAAA,MAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,KAAI,IAAI,CAAC,4BAA4B,CAAC,CAAC;UACtG,IAAI,CAAC,kBAAkB,EAAE,CAAC;UAE1B,IAAI,IAAI,CAAC,iBAAiB,EAAE;cAC1B,IAAI,CAAC,oBAAoB,GAAG,CAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,IAAI,CAAC,oBAAoB,CAAC;cAC3G,IAAI,CAAC,YAAY,GAAG,CAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,IAAI,CAAC,YAAY,CAAC;EACjF,SAAA;UAED,IAAI,IAAI,CAAC,YAAY,EAAE;EACrB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;cACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC3B,SAAA;UAED,IAAI,IAAI,CAAC,6BAA6B,EAAE;cACtC,IAAI,CAAC,aAAa,EAAE,CAAC;EACtB,SAAA;EAED,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,EAAE;cACvD,IAAI,CAAC,iBAAiB,EAAE,CAAC;EAC1B,SAAA;OACF,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;UAAA,IAKP,KAAA,GAAA,IAAA,CAAA;UAJC,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC;EAChF,YAAA,IAAI,EAAE,UAAC,KAAU,EAAK,EAAA,OAAA,KAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAA;cAC7D,KAAK,EAAE,YAAM,EAAA,OAAA,KAAI,CAAC,aAAa,GAAG,CAAC,CAAA,EAAA;EACpC,SAAA,CAAC,CAAC;OACJ,CAAA;EAED;;;EAGG;MACK,wBAAuB,CAAA,SAAA,CAAA,uBAAA,GAAvB,UAAwB,MAAkB,EAAA;EAChD,QAAA,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;cAC1B,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;EAC9D,gBAAA,SAAS,EAAE,KAAK;EAChB,gBAAA,QAAQ,EAAE,KAAK;EACf,gBAAA,KAAK,EAAE,OAAO;kBACd,UAAU,EAAE,CAAC,mBAAmB,CAAC;EACjC,gBAAA,IAAI,EAAE;EACJ,oBAAA,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,4CAA4C,CAAC;EACvE,oBAAA,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,kCAAkC,CAAC;EAClE,oBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC;EACjE,iBAAA;EACF,aAAA,CAAC,CAAC;EACH,YAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,UAAC,SAAkB,EAAA;EACnD,gBAAA,IAAI,SAAS,EAAE;EACb,oBAAA,MAAM,EAAE,CAAC;EACV,iBAAA;EACH,aAAC,CAAC,CAAC;EACJ,SAAA;EAAM,aAAA;EACL,YAAA,MAAM,EAAE,CAAC;EACV,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;UAAA,IA4BC,KAAA,GAAA,IAAA,CAAA;;EA3BC,QAAAY,aAAQ,CAAA,MAAA,CAAA,MAAA,CAAA,EACN,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAC1E,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAC1E,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,6BAA6B,CAAC,EAAA,GAC3E,EAAC,MAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,IAAI;cACjC,aAAa,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,oBAAoB,CAAC;EAC/E,SAAA,GACD,CAAC,SAAS,CAAC,UAAC,GAAQ,EAAA;EACpB,YAAA,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;EACzE,YAAA,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;EACzE,YAAA,IAAI,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,aAAa,EAAE;kBACtB,KAAI,CAAC,aAAa,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,aAAa,CAAC;EACzC,aAAA;;EAED,YAAA,KAAI,CAAC,KAAK,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,KAAK,CAAE,CAAC;cAC/B,IAAI,KAAI,CAAC,WAAW,EAAE;kBACpB,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,EAAA;EACzC,oBAAA,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;EACtB,wBAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAE,CAAC;EACpD,qBAAA;EAAM,yBAAA;EACL,wBAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,EAAK,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAE,CAAC;EAC1E,qBAAA;EACH,iBAAC,CAAC,CAAC;EACJ,aAAA;EAED,YAAA,KAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC5B,SAAC,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;UAAA,IA8BC,KAAA,GAAA,IAAA,CAAA;;UA7BC,IAAI,IAAI,CAAC,iBAAiB,EAAE;cAC1B,IAAI,CAAC,YAAY,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACZ,IAAI,CAAC,YAAY,IAChB,CAAA,MAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAc,KAAI,EAAE,EACjD,CAAC;EACF,YAAA,IAAI,CAAC,iCAAiC,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,0BAA0B,CAAC,CAAC;EAC3F,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC,CAAC;EACvF,YAAA,IAAI,CAAC,YAAY,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,CAAC,CAAC;EACjE,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EACzB,SAAA;EAAM,aAAA;EACL,YAAA,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;kBACjG,IAAI,EAAE,UAAC,GAAQ,EAAA;;sBACb,KAAI,CAAC,iBAAiB,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAG,CAAC,CAAC,CAAC;sBAClC,KAAI,CAAC,YAAY,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACZ,KAAI,CAAC,YAAY,IAChB,CAAA,MAAA,KAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAc,KAAI,EAAE,EACjD,CAAC;EACF,oBAAA,KAAI,CAAC,iCAAiC,CAAC,CAAA,EAAA,GAAA,KAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,0BAA0B,CAAC,CAAC;EAC3F,oBAAA,KAAI,CAAC,iBAAiB,GAAG,KAAI,CAAC,oBAAoB,CAAC,CAAA,EAAA,GAAA,KAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC,CAAC;EACvF,oBAAA,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA,GAAA,KAAI,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,CAAC,CAAC;EACjE,oBAAA,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;mBACzB;kBACD,KAAK,EAAE,UAAC,KAAU,EAAA;EAChB,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;sBACrB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;sBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;mBAC/B;EACF,aAAA,CAAC,CAAA;EACH,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;UAAA,IAkCC,KAAA,GAAA,IAAA,CAAA;;UAjCC,IAAI,gBAAgB,GAAa,EAAE,CAAC;UAEpC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,UAAC,OAAY,EAAA;;EAC/E,YAAA,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,CAAM,EAAA;;EAC5C,gBAAA,IAAI,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAI,CAAC,YAAY,0CAAG,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,UAAU,CAAC,0CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;EAClE,oBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,KAAI,CAAC,YAAY,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAC,CAAE,UAAU,CAAC,0CAAE,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,MAAW,EAAA;;EAC1E,wBAAA,IAAI,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;EACrC,4BAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,GAAQ,EAAA;EAC1C,gCAAA,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC7B,6BAAC,CAAC,CAAC;EACJ,yBAAA;EACH,qBAAC,CAAC,CAAC;EACJ,iBAAA;EACH,aAAC,CAAC,CAAC;EACL,SAAC,CAAC,CAAC;;UAGH,gBAAgB,GAAG,aAAI,CAAA,EAAA,EAAA,MAAA,CAAA,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAA,CAAA,CAAE,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,KAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;UAEvF,IAAI,CAAA,gBAAgB,KAAA,IAAA,IAAhB,gBAAgB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhB,gBAAgB,CAAE,MAAM,IAAG,CAAC,EAAE;EAChC,YAAA,IAAM,QAAM,GAAG,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;cACjD,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,QAAM,CAAC,CAAC,SAAS,CAAC;kBAC9D,IAAI,EAAE,UAAC,GAAQ,EAAA;sBACb,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,OAAO,CAAC,UAAC,QAAa,EAAA;0BACzB,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;EAC5C,qBAAC,CAAC,CAAC;mBACJ;kBACD,KAAK,EAAE,UAAC,KAAU,EAAA;EAChB,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACrB,oBAAA,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAM,EAAE,CAAA;mBAChD;EACF,aAAA,CAAC,CAAA;EACH,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,KAAU,EAAE,QAAgB,EAAA;EAC5C,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC;OAC7B,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,YAAoB,EAAE,KAAY,EAAA;UAClD,KAAK,CAAC,eAAe,EAAE,CAAC;UACxB,IAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAA,GAAoB,YAAc,CAAqB,CAAC;EAC9F,QAAA,IAAI,KAAK,EAAE;cACT,KAAK,CAAC,KAAK,EAAE,CAAC;EACf,SAAA;OACF,CAAA;MAED,wBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,KAAyB,EAAA;EACnC,QAAA,IAAI,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,EAAE;EAC7D,YAAAkD,qBAAe,CACb,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,EACzD,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB,CAAC;EACH,SAAA;OACF,CAAA;MAED,wBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,KAAyB,EAAA;EACpC,QAAAA,qBAAe,CACb,KAAK,CAAC,SAAS,CAAC,IAAI,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB,CAAC;OACH,CAAA;MAED,wBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,OAAY,EAAA;UAA3B,IAuBC,KAAA,GAAA,IAAA,CAAA;UAtBC,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;EACtE,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,QAAQ,EAAE,KAAK;EACf,YAAA,KAAK,EAAE,OAAO;EACd,YAAA,SAAS,EAAE,QAAQ;cACnB,UAAU,EAAE,CAAC,mBAAmB,CAAC;EACjC,YAAA,IAAI,EAAE;kBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;EAC7B,gBAAA,cAAc,EAAE,OAAO;EACxB,aAAA;EACF,SAAA,CAAC,CAAC;EAEH,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,UAAC,MAAM,EAAA;EACvC,YAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAE;kBAClB,IAAI,CAAC,OAAO,CAAC,OAAO;EAAE,oBAAA,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;EAC3C,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;sBAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;kBAC7F,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,WAAW,CAAC;kBAC9C,OAAO,CAAC,QAAQ,GAAG,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,QAAQ,KAAI,IAAI,CAAC;kBAC5C,KAAI,CAAC,+BAA+B,CAAC,KAAI,CAAC,WAAW,CAAC,+DAA+D,CAAC,CAAC,CAAC;EACzH,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAoB,MAAW,EAAE,eAA6B,EAAA;UAC5D,IAAI,CAAC,uBAAuB,CAAC,YAAA;cAC3B,IAAI,MAAM,CAAC,iBAAiB,EAAE;EAC5B,gBAAA,IAAM,YAAU,GAAG,OAAO,eAAe,KAAK,QAAQ,GAAG,eAAe,aAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,EAAE,GAAG,eAAe,CAAC;kBAC/F,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAC,GAAQ,EAAA;EAClE,oBAAA,IAAM,EAAE,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,EAAE,GAAG,GAAG,CAAC;sBACnD,OAAO,EAAE,KAAK,YAAU,CAAC;EAC3B,iBAAC,CAAC,CAAC;EACJ,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;MAED,wBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,eAAgC,EAAA;UAArD,IAKC,KAAA,GAAA,IAAA,CAAA;UAJC,IAAI,CAAC,uBAAuB,CAAC,YAAA;EAC3B,YAAA,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC;cACjC,KAAI,CAAC,+BAA+B,CAAC,KAAI,CAAC,WAAW,CAAC,mDAAmD,CAAC,CAAC,CAAC;EAC9G,SAAC,CAAC,CAAC;OACJ,CAAA;MAED,wBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,OAA6B,EAAA;UAA3C,IAKC,KAAA,GAAA,IAAA,CAAA;UAJC,IAAI,CAAC,uBAAuB,CAAC,YAAA;EAC3B,YAAA,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;cACzB,KAAI,CAAC,+BAA+B,CAAC,KAAI,CAAC,WAAW,CAAC,kDAAkD,CAAC,CAAC,CAAC;EAC7G,SAAC,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,UAAmB,cAAoB,EAAE,iBAA0B,EAAE,OAAiB,EAAA;UAAtF,IAOC,KAAA,GAAA,IAAA,CAAA;;UALC,IAAI,iBAAiB,IAAI,IAAI,EAAE;EAC7B,YAAA,IAAI,CAAC,uBAAuB,CAAC,cAAM,OAAA,KAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAApE,EAAoE,CAAC,CAAC;EAC1G,SAAA;EAAM,aAAA;cACL,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;EACtE,SAAA;OACF,CAAA;EAEO,IAAA,wBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAoB,cAAoB,EAAE,iBAA0B,EAAE,OAAiB,EAAA;UAAvF,IA2CP,KAAA,GAAA,IAAA,CAAA;UA1CC,IAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;UACpE,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;EAC7D,YAAA,SAAS,EAAE,KAAK;EAChB,YAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;EACxB,YAAA,QAAQ,EAAE,MAAM;EAChB,YAAA,KAAK,EAAE,OAAO;EACd,YAAA,MAAM,EAAE,OAAO;EACf,YAAA,UAAU,EAAE,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;EACvE,YAAA,WAAW,EAAE,IAAI;EACjB,YAAA,IAAI,EAAE;kBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;kBAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;kBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;kBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;EAC/B,gBAAA,OAAO,EAAE,OAAO;EAChB,gBAAA,eAAe,EAAA,eAAA;EACf,gBAAA,cAAc,EAAA,cAAA;kBACd,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;kBAC7D,YAAY,EAAE,IAAI,CAAC,YAAY;kBAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;kBAC3B,sBAAsB,EAAE,IAAI,CAAC,eAAe;EAC7C,aAAA;EACF,SAAA,CAAC,CAAC;EAEH,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,UAAC,GAAQ,EAAA;EACzC,YAAA,IAAI,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,OAAO,EAAE;EAChB,gBAAA,IAAI,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,YAAY,EAAE;EACrB,oBAAA,IAAI,CAAC,KAAI,CAAC,YAAY,EAAE;EACtB,wBAAA,KAAI,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;0BACrC,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC;EACjD,qBAAA;sBACD,KAAI,CAAC,YAAY,GACZ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,YAAY,CAAA,GAChB,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,KAAI,EAAE,EAC3B,CAAC;EACF,oBAAA,KAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;EAC3D,iBAAA;EAAM,qBAAA;sBACL,KAAI,CAAC,+BAA+B,EAAE,CAAC;EACxC,iBAAA;EACF,aAAA;EACH,SAAC,CAAC,CAAC;OACJ,CAAA;MAED,wBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,SAAiB,EAAA;UAAlC,IAoBC,KAAA,GAAA,IAAA,CAAA;;UAnBC,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA;cAAE,OAAO;EAClD,QAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC;cACrG,IAAI,EAAE,UAAC,GAAQ,EAAA;kBACb,KAAI,CAAC,YAAY,GACZ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,YAAY,CAAA,GAChB,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,KAAI,EAAE,EAC3B,CAAC;kBACF,KAAI,CAAC,iCAAiC,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,aAAa,CAAC,CAAC;kBAC3D,KAAI,CAAC,oBAAoB,EAAE,CAAC;kBAC5B,KAAI,CAAC,+BAA+B,EAAE,CAAC;kBACvC,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,qDAAqD,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;eAClI;cACD,KAAK,EAAE,UAAC,KAAU,EAAA;EAChB,gBAAA,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;kBACrB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;eACjC;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,OAA6B,EAAE,eAAgC,EAAA;UAAjF,IAoBC,KAAA,GAAA,IAAA,CAAA;UAnBC,IAAI,CAAC,eAAe,CAAC,EAAE;cAAE,OAAO;EAChC,QAAA,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;cACtF,IAAI,EAAE,UAAC,GAAQ,EAAA;kBACb,KAAI,CAAC,YAAY,GACZ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAI,CAAC,YAAY,CAAA,GAChB,CAAA,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,WAAW,KAAI,EAAE,EAC3B,CAAC;kBACF,KAAI,CAAC,iCAAiC,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,aAAa,CAAC,CAAC;kBAC3D,KAAI,CAAC,oBAAoB,EAAE,CAAC;kBAC5B,KAAI,CAAC,+BAA+B,EAAE,CAAC;kBACvC,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,sDAAsD,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;eACnI;cACD,KAAK,EAAE,UAAC,KAAU,EAAA;EAChB,gBAAA,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;kBACrB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;eACjC;EACF,SAAA,CAAC,CAAC;OACJ,CAAA;MAEO,wBAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,UAAuB,EAAA;UAA5C,IAEP,KAAA,GAAA,IAAA,CAAA;;EADC,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,KAAK,KAAI,CAAC,qBAAqB,CAA1C,EAA0C,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,MAAK,GAAG,CAAC;OAClH,CAAA;;MAGO,wBAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,QAA6B,EAAA;;EAChD,QAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,CAAC;;UAExC,IAAI,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;OACpF,CAAA;;MAGD,wBAAiB,CAAA,SAAA,CAAA,iBAAA,GAAjB,UAAkB,KAAoB,EAAA;EACpC,QAAA,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;cAC5C,KAAK,CAAC,cAAc,EAAE,CAAC;EACxB,SAAA;OACF,CAAA;EAGD,IAAA,MAAA,CAAA,cAAA,CAAY,wBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;;EAA3B,QAAA,GAAA,EAAA,YAAA;cACE,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;WACzE;;;EAAA,KAAA,CAAA,CAAA;EAED;;;;EAIG;EACK,IAAA,wBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,YAAA;UAAA,IAcP,KAAA,GAAA,IAAA,CAAA;;EAbC,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;EAC9B,YAAA,OAAO,SAAS,CAAC;EAClB,SAAA;UACD,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,0CAAE,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;UACzH,IAAM,OAAO,GAAa,IAAI,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,QAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,CAAC,CAAA,EAAG,EAAA,CAAC,CAAC;EACpD,QAAA,IAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,GAAG,GAAG,GAAG,GAAG,CAAC;UACjD,IAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,KAAI,CAAC,qBAAqB,CAA1C,EAA0C,CAAC,CAAC;EAC/E,QAAA,IAAI,QAAQ,EAAE;EACZ,YAAA,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;EAC9B,SAAA;EAAM,aAAA;EACL,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;EAC7E,SAAA;EACD,QAAA,OAAO,OAAO,CAAC;OAChB,CAAA;MAED,wBAA+B,CAAA,SAAA,CAAA,+BAAA,GAA/B,UAAgC,cAAuB,EAAA;UAAvD,IAmBC,KAAA,GAAA,IAAA,CAAA;EAlBC,QAAA,IAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EACX,aAAa,EAAE,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,YAAY,CAAC,EAC1H,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAChJ,EAAA,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC,CACzH,CAAA;UACD,IAAI,CAAC,sBAAsB,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;cAC7E,IAAI,EAAE,UAAC,GAAQ,EAAA;kBACb,KAAI,CAAC,iCAAiC,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,aAAa,CAAC,CAAC;kBAC3D,KAAI,CAAC,oBAAoB,EAAE,CAAC;EAC5B,gBAAA,IAAI,cAAc,EAAE;EAClB,oBAAA,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;EACzE,iBAAA;eACF;cACD,KAAK,EAAE,UAAA,KAAK,EAAA;kBACV,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;eAC1C;EACF,SAAA,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;UAAA,IAmCC,KAAA,GAAA,IAAA,CAAA;;UAlCC,IAAI,IAAI,CAAC,YAAY;cAAE,OAAO;EAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EACzB,QAAA,IAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EACX,aAAa,EAAE,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,YAAY,CAAC,EAC1H,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAChJ,EAAA,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC,CACzH,CAAA;EACD,QAAA,IAAI,CAAC,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,aAAa,0CAAE,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,IAAI,IAAI,CAAC,uBAAuB,EAAE;cAClG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,CAAC,0DAA0D,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;EAC5L,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;cAC1B,OAAO;EACR,SAAA;EACD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;;EAEtB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;cAC1B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;cAChE,OAAO;EACR,SAAA;UACD,IAAI,CAAC,sBAAsB,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;cAC7E,IAAI,EAAE,UAAC,GAAQ,EAAA;kBACb,KAAI,CAAC,iCAAiC,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,aAAa,CAAC,CAAC;EAC3D,gBAAA,IAAI,CAAC,KAAI,CAAC,oBAAoB,EAAE;sBAC9B,KAAI,CAAC,wBAAwB,EAAE,CAAC;EACjC,iBAAA;EAAM,qBAAA;EACL,oBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;sBAC1B,KAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC;EACjE,iBAAA;eACF;cACD,KAAK,EAAE,UAAA,KAAK,EAAA;EACV,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;kBAC1B,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;eAC1C;EACF,SAAA,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,YAAA;UAAA,IAeC,KAAA,GAAA,IAAA,CAAA;EAdC,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,6BAA6B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;UACzL,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;cACtE,IAAI,EAAE,UAAC,GAAQ,EAAA;EACb,gBAAA,KAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;EAChC,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;EAC1B,gBAAA,KAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;eAE3C;cACD,KAAK,EAAE,UAAA,KAAK,EAAA;EACV,gBAAA,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;kBAC1B,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,CAAC,wCAAwC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;kBAClH,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA;eACzC;EACF,SAAA,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;UACE,IAAI,IAAI,CAAC,YAAY,EAAE;EACrB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;cACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC3B,SAAA;EAAM,aAAA;;EAEL,YAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC;EAC5E,SAAA;OACF,CAAA;MAED,wBAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,UAAmB,EAAA;;EACrC,QAAA,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;OAC9C,CAAA;MAED,wBAAiC,CAAA,SAAA,CAAA,iCAAA,GAAjC,UAAkC,OAAY,EAAA;;EAC5C,QAAA,IAAM,YAAY,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,MAC3E,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,UAAU,CAAA,EAAA,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAChC,GAAG,CAAC,UAAC,CAAM,EAAE,GAAW,EAAI,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAC,OAAA,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAM,GAAG,GAAI,GAAA,IAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAE,CAAA,EAAA,CAAC,CAAC;EAE5F,QAAA,IAAI,CAAC,2BAA2B,GAAG,OAAO,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC;UACtF,IAAI,CAAC,kCAAkC,EAAE,CAAC;EAE1C,QAAA,IAAI,YAAY,KAAZ,IAAA,IAAA,YAAY,uBAAZ,YAAY,CAAE,MAAM,EAAE;cACxB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,0CAAE,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,UAAC,CAAM,EAAE,GAAW,EAAA;;EACtF,gBAAA,IAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAM,GAAG,GAAI,GAAA,IAAA,CAAA,EAAA,GAAA,MAAA,CAAC,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAE,CAAC;EACtE,gBAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EAC9B,oBAAA,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;EACrB,iBAAA;EACH,aAAC,CAAC,CAAC;EACJ,SAAA;OACF,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,kCAAkC,GAAlC,YAAA;UAAA,IAqBC,KAAA,GAAA,IAAA,CAAA;;EApBC,QAAA,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,GAAG,WAAW,CACrE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,UAAC,OAAY,EAAA,EAAK,OAAA,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAA,EAAA,CAAC,CACjH,CAAC;UAEF,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,2BAA2B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,wBAAwB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,UAAC,OAAY,EAAA;;cAC/E,OAAO,CAAC,oBAAoB,GAAG,WAAW,CACxC,MAAA,OAAO,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,UAAC,QAAa,EAAA,EAAK,OAAA,QAAQ,CAAC,QAAQ,KAAK,KAAK,GAAA,CAAC,CACrF,CAAC;EACJ,SAAC,CAAC,CAAC;UAEH,IAAI,IAAI,CAAC,YAAY,EAAE;cACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;kBACxC,IAAM,QAAQ,GAAG,KAAI,CAAC,YAAY,CAAC,GAAU,CAAC,CAAC;EAC/C,gBAAA,IAAI,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,kBAAkB,EAAE;sBAChC,QAAQ,CAAC,kBAAkB,GAAG,WAAW,CACvC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAC,GAAQ,EAAK,EAAA,OAAA,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAtB,EAAsB,CAAC,CACzE,CAAC;EACH,iBAAA;EACH,aAAC,CAAC,CAAC;EACJ,SAAA;OACF,CAAA;MAED,wBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAwB,EAAA;EACtC,QAAA,IAAI,CAAC,IAAI;EAAE,YAAA,OAAO,EAAE,CAAC;EACrB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OAC1G,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;UAAA,IAgBC,KAAA,GAAA,IAAA,CAAA;EAfC,QAAA,IAAM,MAAM,GAAG;EACb,YAAA,oBAAoB,EAAE,KAAK;EAC3B,YAAA,IAAI,EAAE,CAAC;EACP,YAAA,IAAI,EAAE,EAAE;EACR,YAAA,SAAS,EAAE,KAAK;WACjB,CAAA;UACD,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;cAC9F,IAAI,EAAE,UAAC,GAAQ,EAAA;kBACb,KAAI,CAAC,UAAU,GAAG,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,QAAQ,CAAC;eACjC;cACD,KAAK,EAAE,UAAC,KAAU,EAAA;EAChB,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACrB,gBAAA,MAAM,EAAE,KAAK,EAAA,KAAA,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAI,CAAC,YAAY,EAAE,CAAA;eAC3D;EACF,SAAA,CAAC,CAAA;OACH,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,KAAa,EAAE,OAAY,EAAA;EAC1C,QAAA,OAAO,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,EAAE,KAAI,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7D,CAAA;EAED,IAAA,wBAAA,CAAA,SAAA,CAAA,sBAAsB,GAAtB,UAAuB,KAAa,EAAE,EAAO,EAAA;UAC3C,IAAI,CAAA,EAAE,KAAF,IAAA,IAAA,EAAE,uBAAF,EAAE,CAAE,UAAU,KAAI,IAAI;EAAE,YAAA,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;UACvD,IAAI,CAAA,EAAE,KAAF,IAAA,IAAA,EAAE,uBAAF,EAAE,CAAE,EAAE,KAAI,IAAI;EAAE,YAAA,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;UACvC,OAAO,GAAG,GAAG,KAAK,CAAC;OACpB,CAAA;;;8IApkBU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA1E,aAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAAJ,aAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;EAAxB,wBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,g0BCpBrC,8pbAiKc,EAAA,MAAA,EAAA,CAAA,mpZAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAY,aAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,aAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAwB,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA2C,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAN,cAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAlC,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,eAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA5B,aAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA6B,gBAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAF,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAE,gBAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,gBAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAF,eAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAH,eAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;oHD7ID,wBAAwB,EAAA,UAAA,EAAA,CAAA;oBANpC/B,YAAS;EAAC,YAAA,IAAA,EAAA,CAAA;EACT,oBAAA,QAAQ,EAAE,sBAAsB;EAChC,oBAAA,WAAW,EAAE,mCAAmC;sBAChD,SAAS,EAAE,CAAC,mCAAmC,CAAC;mBACjD,CAAA;mLAGU,WAAW,EAAA,CAAA;wBAAnBW,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,aAAa,EAAA,CAAA;wBAArBA,QAAK;kBACG,UAAU,EAAA,CAAA;wBAAlBA,QAAK;kBACG,WAAW,EAAA,CAAA;wBAAnBA,QAAK;kBACG,YAAY,EAAA,CAAA;wBAApBA,QAAK;kBACG,oBAAoB,EAAA,CAAA;wBAA5BA,QAAK;kBACG,oBAAoB,EAAA,CAAA;wBAA5BA,QAAK;kBACG,4BAA4B,EAAA,CAAA;wBAApCA,QAAK;kBACG,6BAA6B,EAAA,CAAA;wBAArCA,QAAK;kBACG,iBAAiB,EAAA,CAAA;wBAAzBA,QAAK;kBACG,uBAAuB,EAAA,CAAA;wBAA/BA,QAAK;kBACG,iBAAiB,EAAA,CAAA;wBAAzBA,QAAK;kBACG,oBAAoB,EAAA,CAAA;wBAA5BA,QAAK;kBACG,aAAa,EAAA,CAAA;wBAArBA,QAAK;kBAEI,kBAAkB,EAAA,CAAA;wBAA3BC,SAAM;kBACG,0BAA0B,EAAA,CAAA;wBAAnCA,SAAM;kBACG,eAAe,EAAA,CAAA;wBAAxBA,SAAM;;;AEXT,MAAA,qBAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,qBAAA,GAAA;;;;2IAAa,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAAjB,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;EAArB,qBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,qBAAqB,iBAhB9B,wBAAwB;UACxB,mCAAmC;UACnC,0BAA0B;EAC1B,QAAA,wBAAwB,aAGxBkE,iBAAY;UACZ,YAAY;UACZ,eAAe;UACfC,gBAAW;UACXC,wBAAmB,aAGnB,wBAAwB,CAAA,EAAA,CAAA,CAAA;EAGf,qBAAA,CAAA,IAAA,GAAApE,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,qBAAqB,EAXvB,OAAA,EAAA,CAAA;cACPkE,iBAAY;cACZ,YAAY;cACZ,eAAe;cACfC,gBAAW;cACXC,wBAAmB;WACpB,CAAA,EAAA,CAAA,CAAA;oHAKU,qBAAqB,EAAA,UAAA,EAAA,CAAA;oBAlBjCH,WAAQ;EAAC,YAAA,IAAA,EAAA,CAAA;EACR,oBAAA,YAAY,EAAE;0BACZ,wBAAwB;0BACxB,mCAAmC;0BACnC,0BAA0B;0BAC1B,wBAAwB;EACzB,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACPC,iBAAY;0BACZ,YAAY;0BACZ,eAAe;0BACfC,gBAAW;0BACXC,wBAAmB;EACpB,qBAAA;EACD,oBAAA,OAAO,EAAE;0BACP,wBAAwB;EACzB,qBAAA;mBACF,CAAA;;;AChBD,MAAA,uBAAA,kBAAA,YAAA;EAAA,IAAA,SAAA,uBAAA,GAAA;;EACW,IAAA,uBAAA,CAAA,OAAO,GAAd,YAAA;UACI,OAAO;EACH,YAAA,QAAQ,EAAE,uBAAuB;EACjC,YAAA,SAAS,EAAE;kBACP,sBAAsB;kBACtB,sBAAsB;EACzB,aAAA;WACJ,CAAC;OACL,CAAA;;;6IATQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAApE,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;EAAvB,uBAAA,CAAA,IAAA,GAAAA,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,uBAAuB,YAH5BkE,iBAAY,CAAA,EAAA,CAAA,CAAA;EAGP,uBAAA,CAAA,IAAA,GAAAlE,aAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,uBAAuB,EAJvB,OAAA,EAAA,CAAA;cACLkE,iBAAY;WACf,CAAA,EAAA,CAAA,CAAA;oHAEQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;oBALnCD,WAAQ;EAAC,YAAA,IAAA,EAAA,CAAA;EACN,oBAAA,OAAO,EAAE;0BACLC,iBAAY;EACf,qBAAA;mBACJ,CAAA;;;ECVD;;EAEG;;ECFH;;EAEG;;;;;;;;;;;;;;;;;"}
|