@stemy/backend 3.4.2 → 3.4.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stemy-backend.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/utils.ts","../../src/validators.ts","../../src/rest-openapi.ts","../../src/common-types.ts","../../src/services/asset-processor.ts","../../src/services/configuration.ts","../../src/services/mongo-connector.ts","../../src/services/entities/base-entity.ts","../../src/services/entities/asset.ts","../../src/services/entities/temp-asset.ts","../../src/services/assets.ts","../../src/services/entities/lazy-asset.ts","../../src/services/job-manager.ts","../../src/services/entities/progress.ts","../../src/services/progresses.ts","../../src/services/lazy-assets.ts","../../src/services/asset-resolver.ts","../../src/services/backend-provider.ts","../../src/services/cache-processor.ts","../../src/services/cache.ts","../../src/services/endpoint-provider.ts","../../src/services/fixtures.ts","../../src/services/gallery-image.ts","../../src/services/gallery-cache.ts","../../src/services/gallery.ts","../../src/services/id-generator.ts","../../src/services/translation-provider.ts","../../src/services/translator.ts","../../src/services/template-renderer.ts","../../src/services/mail-sender.ts","../../src/services/memory-cache.ts","../../src/services/user-manager.ts","../../src/requests/asset-image-params.ts","../../src/rest-controllers/assets.controller.ts","../../src/rest-controllers/auth.controller.ts","../../src/rest-controllers/gallery.controller.ts","../../src/rest-controllers/progresses.controller.ts","../../src/rest-middlewares/error-handler.middleware.ts","../../src/rest-middlewares/container.middleware.ts","../../src/rest-middlewares/language.middleware.ts","../../src/rest-middlewares/request-ended.middleware.ts","../../src/rest-middlewares/request-started.middleware.ts","../../src/socket-controllers/progress.controller.ts","../../src/socket-middlewares/compression.middleware.ts","../../src/static.ts","../../src/utilities/base-doc.ts","../../src/utilities/tree.ts","../../src/utilities/di-container.ts","../../src/utilities/lazy-asset-generator.ts","../../src/utilities/mongoose.ts","../../src/public_api.ts","../../src/stemy-backend.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import {exec as execChildProcess} from \"child_process\";\r\nimport {createHash} from \"crypto\";\r\nimport {DependencyContainer} from \"tsyringe\";\r\nimport {from, Observable, Subject, Subscription} from \"rxjs\";\r\nimport {canReportError} from \"rxjs/internal/util/canReportError\";\r\nimport {Server} from \"socket.io\";\r\nimport {mkdir, readFile as fsReadFile, unlink, writeFile as fsWriteFile} from \"fs\";\r\nimport {basename, dirname} from \"path\";\r\nimport {GridFSBucket, ObjectId} from \"mongodb\";\r\nimport {Document, Types} from \"mongoose\";\r\nimport {PassThrough, Readable, ReadableOptions} from \"stream\";\r\nimport sharp_, {Region} from \"sharp\";\r\nimport {IAssetCropInfo, IAssetImageParams, IAssetMeta, IClientSocket, Type} from \"./common-types\";\r\n\r\nconst sharp = sharp_;\r\n\r\nexport interface IDIContainers {\r\n appContainer: DependencyContainer\r\n}\r\n\r\nexport const diContainers: IDIContainers = {\r\n appContainer: null\r\n};\r\n\r\nexport type FilterPredicate = (value: any, key?: any, target?: any, source?: any) => boolean;\r\n\r\nexport function isNullOrUndefined(value: any): boolean {\r\n return value == null || typeof value == \"undefined\";\r\n}\r\n\r\nexport function isDefined(value: any): boolean {\r\n return !isNullOrUndefined(value);\r\n}\r\n\r\nexport function getType(obj: any): string {\r\n const regex = new RegExp(\"\\\\s([a-zA-Z]+)\");\r\n return Object.prototype.toString.call(obj).match(regex)[1].toLowerCase();\r\n}\r\n\r\nexport function isObject(value: any): boolean {\r\n return getType(value) == \"object\";\r\n}\r\n\r\nexport function isArray(value: any): value is Array<any> {\r\n return Array.isArray(value);\r\n}\r\n\r\nexport function isBoolean(value: any): value is boolean {\r\n return typeof value === \"boolean\";\r\n}\r\n\r\nexport function isDate(value: any): value is Date {\r\n return !!value && value[Symbol.toPrimitive] && !isNaN(value) && \"undefined\" !== typeof value.getDate;\r\n}\r\n\r\nexport function isPrimitive(value: any): boolean {\r\n const type = typeof value;\r\n return value == null || (type !== \"object\" && type !== \"function\");\r\n}\r\n\r\nexport function isString(value: any): value is string {\r\n return typeof value === \"string\";\r\n}\r\n\r\nexport function isFunction(value: any): value is Function {\r\n return typeof value === \"function\";\r\n}\r\n\r\nexport function isConstructor(value: any): boolean {\r\n return (value && typeof value === \"function\" && value.prototype && value.prototype.constructor) === value && value.name !== \"Object\";\r\n}\r\n\r\nexport function isType(value: any): value is Type<any> {\r\n return isConstructor(value);\r\n}\r\n\r\nexport function isInterface(obj: any, interFaceObject: { [key: string]: string }): boolean {\r\n if (!obj || typeof obj !== \"object\" || isArray(obj) || !isObject(interFaceObject)) return false;\r\n const keys = Object.keys(interFaceObject);\r\n for (const key of keys) {\r\n let type = interFaceObject[key] || \"\";\r\n if (type.startsWith(\"*\")) {\r\n type = type.substr(1);\r\n if (obj.hasOwnProperty(key) && getType(obj[key]) !== type) return false;\r\n } else if (!obj.hasOwnProperty(key) || getType(obj[key]) !== type) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport function ucFirst(value: string): string {\r\n if (!value) return \"\";\r\n return value[0].toUpperCase() + value.substr(1);\r\n}\r\n\r\nexport function lcFirst(value: string): string {\r\n if (!value) return \"\";\r\n return value[0].toLowerCase() + value.substr(1);\r\n}\r\n\r\nexport function isObjectId(id: string): boolean {\r\n return typeof id === \"string\" && id.length == 24 && !isNaN(Number(\"0x\" + id));\r\n}\r\n\r\nexport function firstItem<T>(value: T[]): T {\r\n return value[0];\r\n}\r\n\r\nexport function lastItem<T>(value: T[]): T {\r\n return value[value.length - 1];\r\n}\r\n\r\nexport function regroup<T>(value: T[], comparator: (a: T, b: T) => boolean): Array<T[]> {\r\n const result: Array<T[]> = [];\r\n if (!isArray(value) || value.length == 0) return result;\r\n value = Array.from(value);\r\n result.push([value.shift()]);\r\n value.forEach(item => {\r\n const group = result.find(g => g.some(a => comparator(a, item)));\r\n if (group) {\r\n group.push(item);\r\n return;\r\n }\r\n result.push([item]);\r\n });\r\n return result;\r\n}\r\n\r\nexport function uniqueItems<T>(value: T[]): T[] {\r\n return value.filter((v, ix) => value.indexOf(v) === ix);\r\n}\r\n\r\nexport function getValue(obj: any, key: string, defaultValue?: any, treeFallback: boolean = false): any {\r\n key = key || \"\";\r\n const keys = key.split(\".\");\r\n let curKey = \"\";\r\n do {\r\n curKey += keys.shift();\r\n if (isDefined(obj) && isDefined(obj[curKey]) && (typeof obj[curKey] === \"object\" || !keys.length)) {\r\n obj = obj[curKey];\r\n curKey = \"\";\r\n } else if (!keys.length) {\r\n defaultValue = typeof defaultValue == \"undefined\" ? key.replace(new RegExp(`${curKey}$`), `{${curKey}}`) : defaultValue;\r\n obj = treeFallback ? obj || defaultValue : defaultValue;\r\n } else {\r\n curKey += \".\";\r\n }\r\n } while (keys.length);\r\n return obj;\r\n}\r\n\r\nexport function groupBy<T>(items: T[], cb: (item: T) => string) {\r\n return items.reduce((res, item) => {\r\n const group = cb(item);\r\n res[group] = res[group] || [];\r\n res[group].push(item);\r\n return res;\r\n }, {});\r\n}\r\n\r\nexport function convertValue(value: any, type: string): any {\r\n switch (type) {\r\n case \"boolean\":\r\n value = typeof value == \"string\" ? value.toLowerCase() : value;\r\n return (value == \"no\" || value == \"false\" || value == \"0\") ? false : !!value;\r\n case \"number\":\r\n const val = parseFloat(value);\r\n return isNaN(val) ? 0 : val;\r\n case \"array\":\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return `${value}`.split(\", \");\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nconst cropInterface = {\r\n x: \"number\",\r\n y: \"number\",\r\n w: \"number\",\r\n h: \"number\"\r\n};\r\n\r\nfunction toCropRegion(cropInfo: string | boolean | IAssetCropInfo): Region {\r\n let crop = cropInfo as IAssetCropInfo;\r\n if (isString(cropInfo)) {\r\n try {\r\n crop = JSON.parse(cropInfo as string);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n if (!isInterface(crop, cropInterface)) return null;\r\n return {\r\n width: Math.round(crop.w),\r\n height: Math.round(crop.h),\r\n top: Math.round(crop.y),\r\n left: Math.round(crop.x)\r\n };\r\n}\r\n\r\nexport async function toImage<T = Buffer | Readable>(src: T, params?: IAssetImageParams, meta?: IAssetMeta): Promise<T> {\r\n\r\n // Default params and meta\r\n params = params || {};\r\n meta = meta || {};\r\n\r\n // Get default crop info\r\n const crop = toCropRegion(meta.crop);\r\n\r\n // Return the src if there are no params and no default crop exists\r\n if (meta.extension === \"svg\" || (Object.keys(params).length == 0 && !crop)) {\r\n return src;\r\n }\r\n\r\n // Parse params\r\n params.rotation = isNaN(params.rotation) ? 0 : Math.round(params.rotation / 90) * 90;\r\n params.canvasScaleX = isNaN(params.canvasScaleX) ? 1 : Number(params.canvasScaleX);\r\n params.canvasScaleY = isNaN(params.canvasScaleY) ? 1 : Number(params.canvasScaleY);\r\n params.scaleX = isNaN(params.scaleX) ? 1 : Number(params.scaleX);\r\n params.scaleY = isNaN(params.scaleY) ? 1 : Number(params.scaleY);\r\n params.crop = isBoolean(params.crop) ? params.crop : params.crop == \"true\";\r\n\r\n let buffer = src instanceof Readable ? await streamToBuffer(src) : src as any;\r\n try {\r\n // Get crop info\r\n const cropBefore = toCropRegion(params.cropBefore || (params.crop ? meta.cropBefore : null));\r\n const cropAfter = toCropRegion(params.cropAfter || (params.crop ? meta.cropAfter : null));\r\n // Get metadata\r\n let img = sharp(buffer);\r\n let {width, height} = await img.metadata();\r\n // Crop before resize\r\n if (cropBefore) {\r\n width = cropBefore.width;\r\n height = cropBefore.height;\r\n img = img.extract(cropBefore);\r\n } else if (crop) {\r\n width = crop.width;\r\n height = crop.height;\r\n img = img.extract(crop);\r\n }\r\n // Resize canvas\r\n const canvasScaleX = meta?.canvasScaleX || 1;\r\n const canvasScaleY = meta?.canvasScaleY || 1;\r\n if (params.canvasScaleX !== canvasScaleX || params.canvasScaleY !== canvasScaleY) {\r\n width = Math.round(width * params.canvasScaleX);\r\n height = Math.round(height * params.canvasScaleY);\r\n img = img.resize({width, height, background: \"#00000000\", fit: \"contain\"});\r\n }\r\n // Resize image\r\n if (params.scaleX !== 1 || params.scaleY !== 1) {\r\n width = Math.round(width * params.scaleX);\r\n height = Math.round(height * params.scaleY);\r\n img = img.resize({width, height, background: \"#00000000\", fit: \"fill\"});\r\n }\r\n // Crop after resize\r\n if (cropAfter) {\r\n img = img.extract(cropAfter);\r\n }\r\n // Rotate\r\n if (params.rotation !== 0) {\r\n buffer = await img.toBuffer();\r\n img = sharp(buffer).rotate(params.rotation);\r\n }\r\n buffer = await img.toBuffer();\r\n src = src instanceof Readable ? bufferToStream(buffer) : buffer;\r\n return src;\r\n } catch (e) {\r\n console.log(\"Image conversion error\", e);\r\n src = src instanceof Readable ? bufferToStream(buffer) : buffer;\r\n return src;\r\n }\r\n}\r\n\r\nexport function bufferToStream(buffer: Buffer): Readable {\r\n const readStream = new PassThrough();\r\n readStream.end(buffer);\r\n return readStream\r\n}\r\n\r\nexport function streamToBuffer(stream: Readable): Promise<Buffer> {\r\n return new Promise<Buffer>((resolve, reject) => {\r\n const concat = [];\r\n stream.on(\"data\", data => {\r\n concat.push(data);\r\n });\r\n stream.on(\"error\", reject);\r\n stream.on(\"end\", () => resolve(Buffer.concat(concat)));\r\n })\r\n}\r\n\r\nclass ReadableStreamClone extends Readable {\r\n\r\n constructor(readableStream: Readable, opts?: ReadableOptions) {\r\n super(opts);\r\n readableStream?.on(\"data\", chunk => {\r\n this.push(chunk);\r\n });\r\n readableStream?.on(\"end\", () => {\r\n this.push(null);\r\n });\r\n readableStream?.on(\"error\", err => {\r\n this.emit(\"error\", err);\r\n });\r\n }\r\n\r\n _read(size: number) {\r\n\r\n }\r\n}\r\n\r\nexport function copyStream(stream: Readable, opts?: ReadableOptions): Readable {\r\n return new ReadableStreamClone(stream, opts);\r\n}\r\n\r\nexport function mkdirRecursive(path: string, mode: number = null): Promise<void> {\r\n return new Promise<void>((resolve, reject) => {\r\n mkdir(path, {mode: mode || 0o777, recursive: true}, err => {\r\n if (err) {\r\n reject(err);\r\n return;\r\n }\r\n resolve();\r\n });\r\n });\r\n}\r\n\r\nexport function deleteFile(path: string): Promise<void> {\r\n return new Promise<void>((resolve, reject) => {\r\n unlink(path, err => {\r\n if (err) {\r\n reject(err);\r\n return;\r\n }\r\n resolve();\r\n });\r\n });\r\n}\r\n\r\nexport function readFile(path: string): Promise<Buffer> {\r\n return new Promise<Buffer>((res, rej) => {\r\n fsReadFile(path, (err, data) => {\r\n if (err) {\r\n rej(err);\r\n return;\r\n }\r\n res(data);\r\n });\r\n });\r\n}\r\n\r\nexport async function readAndDeleteFile(path: string, timeout: number = 5000): Promise<Buffer> {\r\n const data = await readFile(path);\r\n setTimeout(() => {\r\n unlink(path, () => {\r\n });\r\n }, timeout);\r\n return data;\r\n}\r\n\r\nexport async function writeFile(path: string, data: Buffer): Promise<Buffer> {\r\n await mkdirRecursive(dirname(path));\r\n return new Promise<Buffer>((res, rej) => {\r\n fsWriteFile(path, data, err => {\r\n if (err) {\r\n rej(err);\r\n return;\r\n }\r\n res(data);\r\n });\r\n });\r\n}\r\n\r\nexport function valueToPromise(value: any): Promise<any> {\r\n return value instanceof Promise ? value : Promise.resolve(value);\r\n}\r\n\r\nexport function promiseTimeout(timeout: number = 1000, error: boolean = false): Promise<string> {\r\n return new Promise<any>((resolve, reject) => {\r\n setTimeout(() => {\r\n if (error) {\r\n reject(`Timeout exceeded: ${timeout}ms`);\r\n return;\r\n }\r\n resolve(`Timeout: ${timeout}ms`);\r\n }, timeout);\r\n });\r\n}\r\n\r\nexport function getConstructorName(type: Type<any>): string {\r\n return type.prototype.constructor.name;\r\n}\r\n\r\nexport function getFunctionParams(func: Function): string[] {\r\n // Remove comments of the form /* ... */\r\n // Removing comments of the form //\r\n // Remove body of the function { ... }\r\n // removing \"=>\" if func is arrow function\r\n const str = func.toString()\r\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\")\r\n .replace(/\\/\\/(.)*/g, \"\")\r\n .replace(/{[\\s\\S]*}/, \"\")\r\n .replace(/=>/g, \"\")\r\n .trim();\r\n\r\n // Start parameter names after first \"(\"\r\n const start = str.indexOf(\"(\") + 1;\r\n\r\n // End parameter names is just before last \")\"\r\n const end = str.length - 1;\r\n const result = str.substring(start, end).split(\", \");\r\n const params = [];\r\n\r\n result.forEach(element => {\r\n\r\n // Removing any default value\r\n element = element.replace(/=[\\s\\S]*/g, \"\").trim();\r\n\r\n if (element.length > 0)\r\n params.push(element);\r\n });\r\n\r\n return params;\r\n}\r\n\r\nexport function getFileName(path: string, withExtension: boolean = false): string {\r\n const name = basename(path || \"\");\r\n return withExtension ? name : name.split(\".\").slice(0, -1).join(\".\");\r\n}\r\n\r\nexport function getExtension(path: string): string {\r\n const name = basename(path || \"\");\r\n return name.split(\".\").pop();\r\n}\r\n\r\nexport function idToString(value: any): any {\r\n if (Array.isArray(value)) {\r\n return value.map(idToString);\r\n }\r\n return value instanceof ObjectId || value instanceof Types.ObjectId\r\n ? value.toHexString()\r\n : (isString(value) ? value : value || null);\r\n}\r\n\r\nexport function createTransformer(transform?: (doc: Document, ret: any, options?: any) => any) {\r\n return (doc: Document, ret: any, options?: any) => {\r\n ret.id = idToString(ret.id) || ret.id;\r\n if (doc._id) {\r\n ret._id = idToString(doc._id);\r\n ret.id = ret.id || ret._id;\r\n }\r\n delete ret.__v;\r\n return isFunction(transform) ? transform(doc, ret, options) || ret : ret;\r\n };\r\n}\r\n\r\nexport function broadcast(socketServer: Server, cb: (client: IClientSocket) => void): void {\r\n Array.from(Object.values(socketServer.sockets.sockets)).forEach(cb);\r\n}\r\n\r\nexport function rand(min: number, max: number): number {\r\n return Math.round(random(min, max));\r\n}\r\n\r\nexport function random(min: number, max: number): number {\r\n return min + Math.random() * (max - min);\r\n}\r\n\r\nexport function multiSubscription(...subscriptions: Subscription[]): Subscription {\r\n return new Subscription(() => {\r\n subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n });\r\n}\r\n\r\nexport function observableFromFunction(callbackFunc: () => any): Observable<any> {\r\n let subject: any;\r\n return new Observable<any>((subscriber) => {\r\n if (!subject) {\r\n subject = new Subject();\r\n try {\r\n subject = from(callbackFunc());\r\n } catch (err) {\r\n if (canReportError(subject)) {\r\n subject.error(err);\r\n } else {\r\n console.warn(err);\r\n }\r\n }\r\n }\r\n return subject.subscribe(subscriber);\r\n });\r\n}\r\n\r\nexport function padLeft(value: any, count: number = 3, padWith: string = \"0\"): string {\r\n return `${value}`.padStart(count, padWith);\r\n}\r\n\r\nexport function padRight(value: any, count: number = 3, padWith: string = \"0\"): string {\r\n return `${value}`.padEnd(count, padWith);\r\n}\r\n\r\nexport function deleteFromBucket(bucket: GridFSBucket, fileId: ObjectId): Promise<string> {\r\n return new Promise<string>(((resolve, reject) => {\r\n bucket.delete(fileId, error => {\r\n let err = error as any;\r\n if (error) {\r\n err = error.message || error || \"\";\r\n if (!isString(err) || !err.startsWith(\"FileNotFound\")) {\r\n reject(err);\r\n return;\r\n }\r\n }\r\n resolve(fileId.toHexString());\r\n });\r\n }));\r\n}\r\n\r\nconst defaultPredicate: FilterPredicate = () => true;\r\n\r\nfunction copyRecursive(target: any, source: any, predicate?: FilterPredicate): any {\r\n predicate = predicate || defaultPredicate;\r\n if (isPrimitive(source) || isDate(source) || isFunction(source)) return source;\r\n if (isArray(source)) {\r\n target = isArray(target) ? Array.from(target) : [];\r\n source.forEach((item, index) => {\r\n if (!predicate(item, index, target, source)) return;\r\n if (target.length > index)\r\n target[index] = copyRecursive(target[index], item, predicate);\r\n else\r\n target.push(copyRecursive(null, item, predicate));\r\n });\r\n return target;\r\n }\r\n const shouldCopy = isFunction(source.__shouldCopy) ? source.__shouldCopy : () => true;\r\n if (isConstructor(source.constructor)) {\r\n if (source.__shouldCopy === false) return source;\r\n if (!target) {\r\n try {\r\n target = new source.constructor();\r\n } catch (e) {\r\n const proto = source.constructor.prototype || source.prototype;\r\n target = Object.create(proto);\r\n }\r\n }\r\n } else {\r\n target = Object.assign({}, target || {});\r\n }\r\n // Copy map entries\r\n if (target instanceof Map) {\r\n if (source instanceof Map) {\r\n for (let [key, value] of source.entries()) {\r\n if (!predicate(value, key, target, source)) continue;\r\n target.set(key, !shouldCopy(key, value) ? value : copyRecursive(target.get(key), value, predicate));\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n // Copy object members\r\n let keys = Object.keys(source);\r\n target = keys.reduce((result, key) => {\r\n if (!predicate(source[key], key, result, source)) return result;\r\n result[key] = !shouldCopy(key, source[key]) ? source[key] : copyRecursive(result[key], source[key], predicate);\r\n return result;\r\n }, target);\r\n\r\n // Copy object properties\r\n const descriptors = Object.getOwnPropertyDescriptors(source);\r\n keys = Object.keys(descriptors).filter(k => keys.indexOf(k) < 0);\r\n keys.forEach(key => {\r\n Object.defineProperty(target, key, descriptors[key]);\r\n });\r\n return target;\r\n}\r\n\r\nexport function filter<T>(obj: T, predicate: FilterPredicate): Partial<T> {\r\n return copyRecursive(null, obj, predicate);\r\n}\r\n\r\nexport function copy<T>(obj: T): T {\r\n return copyRecursive(null, obj);\r\n}\r\n\r\nexport function assign<T>(target: T, source: any, predicate?: FilterPredicate): T {\r\n return copyRecursive(target, source, predicate);\r\n}\r\n\r\nexport function md5(data: any): string {\r\n if (isObject(data)) {\r\n data = JSON.stringify(data);\r\n }\r\n if (!isString(data)) {\r\n throw `Can't md5 other that raw object or string`;\r\n }\r\n return createHash(\"md5\").update(data).digest(\"hex\");\r\n}\r\n\r\nexport function runCommand(scriptPath: string, expectedCode: number = 0): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const cp = execChildProcess(scriptPath, (error, stdout) => {\r\n if (error && expectedCode !== error.code) {\r\n console.log(error);\r\n reject(error);\r\n return;\r\n }\r\n const lines = (stdout || \"\").split(\"\\n\");\r\n let line = null;\r\n while (!line && lines.length > 0) {\r\n line = lines.pop();\r\n }\r\n resolve(line);\r\n });\r\n cp.stdout.on(\"data\", function (data) {\r\n console.log(data.toString());\r\n });\r\n cp.stderr.on(\"data\", function (data) {\r\n console.error(data.toString());\r\n });\r\n });\r\n}\r\n\r\nexport enum ConsoleColor {\r\n Reset = \"\\x1b[0m\",\r\n Bright = \"\\x1b[1m\",\r\n Dim = \"\\x1b[2m\",\r\n Underscore = \"\\x1b[4m\",\r\n Blink = \"\\x1b[5m\",\r\n Reverse = \"\\x1b[7m\",\r\n Hidden = \"\\x1b[8m\",\r\n\r\n FgBlack = \"\\x1b[30m\",\r\n FgRed = \"\\x1b[31m\",\r\n FgGreen = \"\\x1b[32m\",\r\n FgYellow = \"\\x1b[33m\",\r\n FgBlue = \"\\x1b[34m\",\r\n FgMagenta = \"\\x1b[35m\",\r\n FgCyan = \"\\x1b[36m\",\r\n FgWhite = \"\\x1b[37m\",\r\n FgDefault = \"\\x1b[38m\",\r\n\r\n BgBlack = \"\\x1b[40m\",\r\n BgRed = \"\\x1b[41m\",\r\n BgGreen = \"\\x1b[42m\",\r\n BgYellow = \"\\x1b[43m\",\r\n BgBlue = \"\\x1b[44m\",\r\n BgMagenta = \"\\x1b[45m\",\r\n BgCyan = \"\\x1b[46m\",\r\n BgWhite = \"\\x1b[47m\",\r\n BgDefault = \"\\x1b[48m\"\r\n}\r\n\r\nexport interface IJsonColors {\r\n keyColor?: ConsoleColor;\r\n numberColor?: ConsoleColor;\r\n stringColor?: ConsoleColor;\r\n trueColor?: ConsoleColor;\r\n falseColor?: ConsoleColor;\r\n nullColor?: ConsoleColor;\r\n}\r\n\r\nconst defaultColors: IJsonColors = {\r\n keyColor: ConsoleColor.FgWhite,\r\n numberColor: ConsoleColor.FgBlue,\r\n stringColor: ConsoleColor.FgYellow,\r\n trueColor: ConsoleColor.FgGreen,\r\n falseColor: ConsoleColor.FgRed,\r\n nullColor: ConsoleColor.BgMagenta\r\n}\r\n\r\nexport function colorize(input: any, color: ConsoleColor): string {\r\n return `${color}${input}${ConsoleColor.Reset}`;\r\n}\r\n\r\nexport function jsonHighlight(input: string | object, colorOptions?: IJsonColors): string {\r\n const colors = Object.assign({}, defaultColors, colorOptions)\r\n const json = (isString(input) ? input : JSON.stringify(input, null, 2)).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\r\n return json.replace(/(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+]?\\d+)?)/g, (match) => {\r\n let color = colors.numberColor\r\n if (/^\"/.test(match)) {\r\n if (/:$/.test(match)) {\r\n color = colors.keyColor\r\n } else {\r\n color = colors.stringColor;\r\n match = '\"' + match.substr(1, match.length - 2) + '\"';\r\n }\r\n } else {\r\n color = /true/.test(match)\r\n ? colors.trueColor\r\n : /false/.test(match)\r\n ? colors.falseColor\r\n : /null/.test(match)\r\n ? colors.nullColor\r\n : color\r\n }\r\n return `${color}${match}${ConsoleColor.Reset}`\r\n })\r\n}\r\n\r\nexport function replaceSpecialChars(str: string, to: string = \"-\"): string {\r\n return `${str}`.replace(/[&\\/\\\\#, +()$~%.@'\":*?<>{}]/g, to);\r\n}\r\n","import {ValidationArguments, ValidatorConstraint, ValidatorConstraintInterface} from \"class-validator\";\r\nimport {ObjectId} from \"bson\";\r\n\r\nfunction checkValue(multi: boolean, value: any): boolean {\r\n if (multi) {\r\n return Array.isArray(value) && value.every(v => {\r\n try {\r\n const id = new ObjectId(v);\r\n return id instanceof ObjectId;\r\n } catch (e) {\r\n return false;\r\n }\r\n });\r\n }\r\n if (null === value) return true;\r\n try {\r\n const id = new ObjectId(value);\r\n return id instanceof ObjectId;\r\n } catch (e) {\r\n return false;\r\n }\r\n}\r\n\r\n@ValidatorConstraint()\r\nexport class IsFile implements ValidatorConstraintInterface {\r\n validate(value: any, validationArguments: ValidationArguments) {\r\n const [multi] = (validationArguments.constraints || []);\r\n return checkValue(multi, value);\r\n }\r\n}\r\n\r\n@ValidatorConstraint()\r\nexport class IsObjectId implements ValidatorConstraintInterface {\r\n validate(value: any, validationArguments: ValidationArguments) {\r\n const [_, multi] = (validationArguments.constraints || []);\r\n return checkValue(multi, value);\r\n }\r\n}\r\n","import {getMetadataArgsStorage} from \"routing-controllers\";\r\nimport {routingControllersToSpec} from \"routing-controllers-openapi\";\r\nimport {OpenAPIObject, SchemaObject} from \"openapi3-ts\";\r\nimport {defaultMetadataStorage} from \"class-transformer/storage\";\r\nimport {ValidationTypes} from \"class-validator\"\r\nimport {validationMetadatasToSchemas} from \"class-validator-jsonschema\"\r\nimport {SchemaConverter} from \"./common-types\";\r\nimport {isFunction} from \"./utils\";\r\nimport {IsFile, IsObjectId} from \"./validators\";\r\n\r\nlet apiDocs: string = null;\r\n\r\nexport function getApiDocs(customValidation: SchemaConverter | SchemaObject): string {\r\n if (apiDocs) return apiDocs;\r\n const storage = getMetadataArgsStorage();\r\n const spec: OpenAPIObject = routingControllersToSpec(storage);\r\n spec.basePath = \"/api/\";\r\n spec.definitions = validationMetadatasToSchemas({\r\n classTransformerMetadataStorage: defaultMetadataStorage,\r\n additionalConverters: {\r\n [ValidationTypes.CUSTOM_VALIDATION]: (meta, options) => {\r\n const res = isFunction(customValidation) ? customValidation(meta, options) : customValidation;\r\n if (!!res) return res;\r\n const constraints = meta.constraints || [];\r\n if (meta.constraintCls === IsFile) {\r\n return {\r\n multi: constraints[0] || false,\r\n type: \"file\"\r\n }\r\n }\r\n if (meta.constraintCls === IsObjectId) {\r\n return {\r\n endpoint: constraints[0] || false,\r\n multi: constraints[1] || false,\r\n type: \"list\"\r\n }\r\n }\r\n return null;\r\n }\r\n }\r\n });\r\n spec.components.schemas = spec.definitions;\r\n apiDocs = JSON.stringify(spec);\r\n return apiDocs;\r\n}\r\n","import {Server} from \"http\";\r\nimport {Request, Express} from \"express\";\r\nimport {Socket, Server as SocketServer} from \"socket.io\";\r\nimport {RoutingControllersOptions} from \"routing-controllers\";\r\nimport {SocketControllersOptions} from \"socket-controllers\";\r\nimport {\r\n ClassProvider,\r\n DependencyContainer,\r\n InjectionToken,\r\n TokenProvider,\r\n ValueProvider,\r\n RegistrationOptions\r\n} from \"tsyringe\";\r\nimport {SchemaObject} from \"openapi3-ts\";\r\nimport {Readable} from \"stream\";\r\nimport {Moment} from \"moment\";\r\nimport {AnyExpression, Expression} from \"mongoose\";\r\n\r\n// --- DI functions ---\r\n\r\nexport const Type = Function;\r\n\r\nexport interface Type<T = object> extends Function {\r\n new (...args: any[]): T;\r\n}\r\n\r\nexport interface FactoryProvider<T> {\r\n useFactory: (dc: IDependencyContainer) => T;\r\n}\r\n\r\nexport interface ITree {\r\n readonly path: string;\r\n resolveService(): any;\r\n resolveLeaves(): Map<string, ITree>;\r\n resolveServices(): Map<string, any>;\r\n resolveAncestor(path: string): ITree;\r\n resolvePath(path: string, throwError?: boolean): ITree;\r\n}\r\n\r\nexport interface IDependencyContainer extends DependencyContainer {\r\n readonly parent: IDependencyContainer;\r\n readonly tree: ITree;\r\n readonly registeredTokens: ReadonlyArray<InjectionToken>;\r\n createChildContainer(): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: ValueProvider<T>): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: FactoryProvider<T>): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: TokenProvider<T>, options?: RegistrationOptions): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: ClassProvider<T>, options?: RegistrationOptions): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: Type<T>, options?: RegistrationOptions): IDependencyContainer;\r\n registerSingleton<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer;\r\n registerSingleton<T>(token: Type<T>): IDependencyContainer;\r\n registerType<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer;\r\n registerInstance<T>(token: InjectionToken<T>, instance: T): IDependencyContainer;\r\n get<T>(token: InjectionToken<T>): T;\r\n}\r\n\r\nexport interface ClassBasedProvider<T> extends ClassProvider<T> {\r\n provide: InjectionToken;\r\n}\r\n\r\nexport interface ValueBasedProvider<T> extends ValueProvider<T> {\r\n provide: InjectionToken;\r\n}\r\n\r\nexport interface FactoryBasedProvider<T> extends FactoryProvider<T> {\r\n provide: InjectionToken;\r\n}\r\n\r\nexport interface TokenBasedProvider<T> extends TokenProvider<T> {\r\n provide: InjectionToken;\r\n}\r\n\r\nexport type SyringeProvider<T> = Type<T> | ClassProvider<T> | ValueProvider<T> | FactoryProvider<T> | TokenProvider<T>;\r\n\r\nexport type Provider<T> = Type<T> | ClassBasedProvider<T> | ValueBasedProvider<T> | FactoryBasedProvider<T> | TokenBasedProvider<T>;\r\n\r\n// --- Useful generic types ---\r\n\r\nexport type Constructor<T = object> = new (...args: any[]) => T\r\n\r\nexport type InferGeneric<T> = T extends Type<infer B> ? B : never;\r\n\r\nexport type PickMatching<T, V> = { [K in keyof T as T[K] extends V ? K : never]: T[K] }\r\n\r\nexport type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;\r\n\r\n// --- Injection tokens ---\r\n\r\nexport const FIXTURE: InjectionToken<IFixture> = Symbol.for(\"fixture-token\");\r\n\r\nexport const JOB: InjectionToken<IJob> = Symbol.for(\"job-token\");\r\n\r\nexport const EXPRESS: InjectionToken<Express> = Symbol.for(\"express-token\");\r\n\r\nexport const HTTP_SERVER: InjectionToken<Server> = Symbol.for(\"http-server-token\");\r\n\r\nexport const SOCKET_SERVER: InjectionToken<SocketServer> = Symbol.for(\"socket-server-token\");\r\n\r\nexport const PARAMETER: InjectionToken<Parameter> = Symbol.for(\"parameter-token\");\r\n\r\nexport const DI_CONTAINER: InjectionToken<IDependencyContainer> = Symbol.for(\"di-container-token\");\r\n\r\n// --- Mongo interfaces and types\r\n\r\nexport interface IMatchField {\r\n field: string;\r\n filter: any;\r\n when: boolean;\r\n}\r\n\r\nexport interface IProjectOptions {\r\n [field: string]: AnyExpression | Expression | IProjectOptions;\r\n}\r\n\r\nexport interface IUnwindOptions {\r\n path: string;\r\n includeArrayIndex?: string;\r\n preserveNullAndEmptyArrays?: boolean;\r\n}\r\n\r\n// --- Interfaces and utility classes ---\r\n\r\nexport interface IFixture {\r\n load(): Promise<any>;\r\n}\r\n\r\nexport type SchemaConverter = (\r\n meta: any,\r\n options: any\r\n) => SchemaObject;\r\n\r\nexport type ParamResolver = (value: string) => any;\r\n\r\nexport class Parameter {\r\n\r\n constructor(readonly name: string, public defaultValue: any, public resolver: ParamResolver = null) {\r\n\r\n }\r\n}\r\n\r\nexport type SocketParam = string | number | boolean | SocketParams;\r\n\r\nexport type SocketParams = {\r\n [name: string]: SocketParam | Array<SocketParam>;\r\n};\r\n\r\nexport type JobParams = SocketParams;\r\n\r\nexport interface ISocketMessage {\r\n message: string;\r\n params: SocketParams;\r\n}\r\n\r\nexport interface IMessageBridge {\r\n sendMessage(message: string, params?: SocketParams): void;\r\n}\r\n\r\nexport interface IJob {\r\n process(messaging?: IMessageBridge): Promise<any>;\r\n}\r\n\r\nexport interface IJobTask {\r\n start: () => this;\r\n stop: () => this;\r\n destroy: () => void;\r\n getStatus: () => string;\r\n}\r\n\r\nexport interface JobScheduleRange {\r\n min: number;\r\n max: number;\r\n}\r\n\r\nexport type JobScheduleTime = string | number | JobScheduleRange | Array<string | number>;\r\n\r\nexport interface IProgress {\r\n id: string;\r\n current: number;\r\n max: number;\r\n message: string;\r\n error: string;\r\n canceled: boolean;\r\n percent: number;\r\n remaining: number;\r\n setMessageBridge(messageBridge: IMessageBridge): this;\r\n createSubProgress(progressValue: number, max?: number, message?: string): Promise<IProgress>;\r\n setMax(max: number): Promise<any>;\r\n setMessage(message: string): Promise<any>;\r\n setError(error: string): Promise<any>;\r\n advance(value?: number): Promise<any>;\r\n cancel(): Promise<any>;\r\n save(): Promise<any>;\r\n load(): Promise<this>;\r\n toJSON(): any;\r\n}\r\n\r\nexport interface IAssetCropInfo {\r\n x: number;\r\n y: number;\r\n w: number;\r\n h: number;\r\n}\r\n\r\nexport interface IAssetMeta {\r\n filename?: string;\r\n extension?: string;\r\n classified?: boolean;\r\n downloadCount?: number;\r\n firstDownload?: Date;\r\n lastDownload?: Date;\r\n crop?: IAssetCropInfo;\r\n cropBefore?: IAssetCropInfo;\r\n cropAfter?: IAssetCropInfo;\r\n canvasScaleX?: number;\r\n canvasScaleY?: number;\r\n [prop: string]: any;\r\n}\r\n\r\nexport interface IAssetImageParams {\r\n rotation?: number;\r\n canvasScaleX?: number;\r\n canvasScaleY?: number;\r\n scaleX?: number;\r\n scaleY?: number;\r\n lazy?: boolean;\r\n crop?: string | boolean;\r\n cropBefore?: string | boolean | IAssetCropInfo;\r\n cropAfter?: string | boolean | IAssetCropInfo;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IAsset {\r\n readonly id: string;\r\n readonly filename: string;\r\n readonly contentType: string;\r\n readonly metadata: IAssetMeta;\r\n readonly stream: Readable;\r\n unlink(): Promise<string>;\r\n getBuffer(): Promise<Buffer>;\r\n download(metadata?: IAssetMeta): Promise<Readable>;\r\n downloadImage(params?: IAssetImageParams, metadata?: IAssetMeta): Promise<Readable>;\r\n getImage(params?: IAssetImageParams): Promise<Readable>;\r\n save(): Promise<any>;\r\n load(): Promise<this>;\r\n toJSON(): any;\r\n}\r\n\r\nexport interface ILazyAsset {\r\n id: string;\r\n jobName: string;\r\n jobParams: any;\r\n jobQue: string;\r\n progressId?: string;\r\n assetId?: string;\r\n unlink(): Promise<string>;\r\n startWorking(): void;\r\n loadAsset(): Promise<IAsset>;\r\n writeAsset(asset: IAsset): Promise<IAsset>;\r\n save(): Promise<any>;\r\n load(): Promise<this>;\r\n toJSON(): any;\r\n}\r\n\r\nexport interface IUser {\r\n _id?: string;\r\n id?: string;\r\n email?: string;\r\n password?: string;\r\n roles: string[];\r\n}\r\n\r\nexport interface IClientSocket extends Socket {\r\n interestedProgresses: Set<string>;\r\n}\r\n\r\nexport interface IRequestBase<T> extends Request {\r\n id?: string;\r\n started?: Moment;\r\n ended?: Moment;\r\n container?: DependencyContainer;\r\n language?: string;\r\n user?: T;\r\n}\r\n\r\nexport interface IRequest extends IRequestBase<IUser> {\r\n\r\n}\r\n\r\nexport interface IGalleryImage {\r\n folder: string;\r\n thumb: string;\r\n big: string;\r\n serve(id: string): Promise<Buffer>\r\n}\r\n\r\nexport interface IGallerySize {\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport interface IGalleryImageHandler {\r\n getOriginal(): Promise<Buffer>;\r\n writeResult(isThumb: boolean, buffer: Buffer): Promise<void>;\r\n hasResult(isThumb: boolean): Promise<boolean>;\r\n serveResult(isThumb: boolean): Promise<Buffer>;\r\n}\r\n\r\nexport interface ITranslations {\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IPaginationMeta {\r\n total: number;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IPaginationBase<T> {\r\n count: number\r\n items: T[];\r\n meta?: IPaginationMeta;\r\n}\r\n\r\nexport interface IPagination extends IPaginationBase<any> {\r\n\r\n}\r\n\r\nexport interface IPaginationParams {\r\n page: number;\r\n limit: number;\r\n sort?: string;\r\n populate?: string[];\r\n [key: string]: any;\r\n}\r\n\r\nexport type FontFormat = \"opentype\" | \"truetype\" | \"woff\" | \"woff2\" | \"datafork\";\r\n\r\nexport interface IFileType {\r\n ext: string;\r\n mime: string;\r\n}\r\n\r\nexport interface IBackendConfig {\r\n rootFolder?: string;\r\n routePrefix?: string;\r\n params?: Parameter[];\r\n fixtures?: Type<IFixture>[];\r\n jobs?: Type<IJob>[];\r\n restOptions?: RoutingControllersOptions;\r\n socketOptions?: SocketControllersOptions;\r\n customValidation?: SchemaConverter | SchemaObject;\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport fontKit_, {Font} from \"fontkit\";\r\nimport {fromBuffer} from \"file-type\";\r\nimport sharp_ from \"sharp\";\r\nimport {FontFormat, IAssetMeta, IFileType} from \"../common-types\";\r\n\r\nconst sharp = sharp_;\r\nconst fontKit = fontKit_;\r\n\r\nconst fontTypes = [\r\n \"application/font-woff\", \"application/font-woff2\", \"application/x-font-opentype\", \"application/x-font-truetype\", \"application/x-font-datafork\",\r\n \"font/woff\", \"font/woff2\", \"font/otf\", \"font/ttf\", \"font/datafork\"\r\n];\r\n\r\nconst imageTypes = [\"image/jpeg\", \"image/jpg\", \"image/png\", \"image/svg+xml\"];\r\n\r\nconst fontProps = [\r\n \"postscriptName\", \"fullName\", \"familyName\", \"subfamilyName\",\r\n \"copyright\", \"version\", \"unitsPerEm\", \"ascent\", \"descent\", \"lineGap\",\r\n \"underlinePosition\", \"underlineThickness\", \"italicAngle\", \"capHeight\",\r\n \"xHeight\", \"numGlyphs\", \"characterSet\", \"availableFeatures\"\r\n];\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class AssetProcessor {\r\n\r\n private static checkTextFileType(type: IFileType): boolean {\r\n return type.mime.indexOf(\"text\") >= 0 || type.mime.indexOf(\"xml\") >= 0;\r\n }\r\n\r\n private static fixTextFileType(type: IFileType, buffer: Buffer): IFileType {\r\n const text = buffer.toString(\"utf8\");\r\n if (text.indexOf(\"<svg\") >= 0) {\r\n return {ext: \"svg\", mime: \"image/svg+xml\"};\r\n }\r\n return type;\r\n }\r\n\r\n static async fileTypeFromBuffer(buffer: Buffer): Promise<IFileType> {\r\n const type = (await fromBuffer(buffer) ?? {ext: \"txt\", mime: \"text/plain\"}) as IFileType;\r\n if (AssetProcessor.checkTextFileType(type)) {\r\n return AssetProcessor.fixTextFileType(type, buffer);\r\n }\r\n return type;\r\n }\r\n\r\n static extractFontFormat(font: Font): FontFormat {\r\n const name: string = font.constructor.name;\r\n const tag: string = font[\"directory\"].tag;\r\n switch (name) {\r\n case \"TTFFont\":\r\n return tag === \"OTTO\" ? \"opentype\" : \"truetype\";\r\n case \"WOFF2Font\":\r\n return \"woff2\";\r\n case \"WOFFFont\":\r\n return \"woff\";\r\n case \"DFont\":\r\n return \"datafork\";\r\n }\r\n return null;\r\n }\r\n\r\n static isImage(contentType: string): boolean {\r\n return imageTypes.indexOf(contentType) >= 0;\r\n }\r\n\r\n static async copyImageMeta(buffer: Buffer, metadata: IAssetMeta, fileType: IFileType): Promise<Buffer> {\r\n if (fileType.mime === \"image/svg+xml\") {\r\n const match = /<svg([^<>]+)>/gi.exec(buffer.toString(\"utf8\"));\r\n if (match && match.length > 1) {\r\n const attrs = match[1].match(/([a-z]+)=\"([^\"]+)\"/gi);\r\n attrs.forEach(attr => {\r\n if (attr.length < 5) return;\r\n const [name, value] = attr.split(\"=\");\r\n const val = value.replace(/\"/gi, \"\") as any;\r\n metadata[name] = isNaN(val) ? val : Number(val);\r\n });\r\n if (metadata.viewBox && (isNaN(metadata.width) || isNaN(metadata.height))) {\r\n const parts = (metadata.viewBox as string).split(\" \");\r\n metadata.width = Number(parts[0]) + Number(parts[2]);\r\n metadata.height = Number(parts[1]) + Number(parts[3]);\r\n }\r\n if (!isNaN(metadata.width) && !isNaN(metadata.height)) {\r\n metadata.svgSize = {x: metadata.width, y: metadata.height};\r\n }\r\n }\r\n return buffer;\r\n }\r\n const output = await sharp(buffer).rotate().toBuffer({resolveWithObject: true});\r\n Object.assign(metadata, output.info);\r\n return output.data;\r\n }\r\n\r\n static isFont(contentType: string): boolean {\r\n return fontTypes.indexOf(contentType) >= 0;\r\n }\r\n\r\n static copyFontMeta(buffer: Buffer, metadata: IAssetMeta): void {\r\n const font: Font = fontKit.create(buffer);\r\n metadata.format = AssetProcessor.extractFontFormat(font);\r\n fontProps.forEach(prop => {\r\n metadata[prop] = font[prop];\r\n });\r\n }\r\n\r\n async process(buffer: Buffer, metadata: IAssetMeta, fileType: IFileType): Promise<Buffer> {\r\n if (AssetProcessor.isImage(fileType.mime)) {\r\n buffer = await AssetProcessor.copyImageMeta(buffer, metadata, fileType);\r\n }\r\n if (AssetProcessor.isFont(fileType.mime)) {\r\n AssetProcessor.copyFontMeta(buffer, metadata);\r\n }\r\n return buffer;\r\n }\r\n}\r\n","import {injectable, injectAll, scoped, Lifecycle} from \"tsyringe\";\r\nimport {PARAMETER, Parameter} from \"../common-types\";\r\nimport {convertValue, getType, isFunction} from \"../utils\";\r\nimport dotenv from \"dotenv\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class Configuration {\r\n\r\n protected paramMap: {[name: string]: Parameter};\r\n\r\n constructor(@injectAll(PARAMETER) params: Parameter[]) {\r\n dotenv.config();\r\n this.paramMap = {};\r\n (params || []).forEach(param => this.add(param));\r\n }\r\n\r\n protected add(param: Parameter): void {\r\n const existingParam = this.paramMap[param.name] || param;\r\n existingParam.defaultValue = param.defaultValue;\r\n existingParam.resolver = param.resolver || existingParam.resolver;\r\n this.paramMap[param.name] = existingParam;\r\n }\r\n\r\n hasParam(name: string): boolean {\r\n return !!this.paramMap[name];\r\n }\r\n\r\n resolve(name: string): any {\r\n const param = this.paramMap[name];\r\n if (!param) throw new Error(`Parameter with name: '${name}' does not exists in configuration`);\r\n const envName = param.name.replace(/\\.?([A-Z|0-9]+)/g, function (x,y){\r\n return \"_\" + y.toLowerCase()\r\n }).replace(/\\./gi, \"_\").replace(/^_/, \"\").toUpperCase();\r\n const envValue = process.env[envName];\r\n if (typeof envValue !== \"undefined\") {\r\n const value = isFunction(param.resolver)\r\n ? param.resolver(envValue)\r\n : convertValue(envValue, getType(param.defaultValue));\r\n console.log(`Processing param value`, name, envName, envValue, value);\r\n return value;\r\n }\r\n return param.defaultValue;\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport {Db, GridFSBucket} from \"mongodb\";\r\nimport {connect, Connection} from \"mongoose\";\r\nimport {Configuration} from \"./configuration\";\r\nimport {getType} from \"../utils\";\r\n\r\n@injectable()\r\n@singleton()\r\nexport class MongoConnector {\r\n\r\n get connection(): Connection {\r\n return this.conn;\r\n }\r\n\r\n get database(): Db {\r\n return this.db;\r\n }\r\n\r\n get bucket(): GridFSBucket {\r\n return this.fsBucket;\r\n }\r\n\r\n protected conn: Connection;\r\n protected db: Db;\r\n protected fsBucket: GridFSBucket;\r\n\r\n constructor(readonly configuration: Configuration) {\r\n this.conn = null;\r\n this.db = null;\r\n this.fsBucket = null;\r\n }\r\n\r\n async connect(): Promise<Db> {\r\n if (this.db) return this.db;\r\n this.conn = (await connect(this.configuration.resolve(\"mongoUri\") as string, {\r\n dbName: this.configuration.resolve(\"mongoDb\"),\r\n user: this.configuration.resolve(\"mongoUser\"),\r\n pass: this.configuration.resolve(\"mongoPassword\")\r\n })).connection;\r\n this.db = this.conn.db as any;\r\n console.log(\"DB INSTANCE\", getType(this.db));\r\n this.fsBucket = new GridFSBucket(this.db, {bucketName: \"assets\"});\r\n }\r\n}\r\n","import {Collection} from \"mongodb\";\r\nimport {ObjectId} from \"bson\";\r\n\r\nexport class BaseEntity<T> {\r\n\r\n get id(): string {\r\n return this.mId.toHexString();\r\n }\r\n\r\n protected deleted: boolean;\r\n\r\n constructor(readonly mId: ObjectId,\r\n protected data: Partial<T>,\r\n protected collection: Collection<any>) {\r\n }\r\n\r\n save(): Promise<any> {\r\n return this.collection.updateOne({_id: this.mId}, {$set: this.toJSON()});\r\n }\r\n\r\n async load(): Promise<this> {\r\n const res = await this.collection.findOne({_id: this.mId});\r\n this.deleted = !res;\r\n this.data = res || {};\r\n return this;\r\n }\r\n\r\n toJSON(): any {\r\n const ret = Object.assign({}, this.data) as any;\r\n delete ret._id;\r\n ret.id = this.id;\r\n return ret;\r\n }\r\n}\r\n","import {Readable} from \"stream\";\r\nimport {Collection, GridFSBucket} from \"mongodb\";\r\nimport {ObjectId} from \"bson\";\r\n\r\nimport {IAsset, IAssetImageParams, IAssetMeta} from \"../../common-types\";\r\nimport {deleteFromBucket, streamToBuffer, toImage} from \"../../utils\";\r\nimport {BaseEntity} from \"./base-entity\";\r\n\r\nexport class Asset extends BaseEntity<IAsset> implements IAsset {\r\n\r\n get filename(): string {\r\n return this.data.filename;\r\n }\r\n\r\n get contentType(): string {\r\n return this.data.contentType;\r\n }\r\n\r\n get metadata(): IAssetMeta {\r\n return this.data.metadata;\r\n }\r\n\r\n get stream(): Readable {\r\n return this.bucket.openDownloadStream(this.mId);\r\n }\r\n\r\n constructor(id: ObjectId,\r\n data: Partial<IAsset>,\r\n collection: Collection,\r\n protected bucket: GridFSBucket) {\r\n super(id, data, collection);\r\n }\r\n\r\n async unlink(): Promise<string> {\r\n return deleteFromBucket(this.bucket, this.mId);\r\n }\r\n\r\n getBuffer(): Promise<Buffer> {\r\n return streamToBuffer(this.stream);\r\n }\r\n\r\n async download(metadata?: IAssetMeta): Promise<Readable> {\r\n metadata = Object.assign(this.metadata, metadata || {});\r\n metadata.downloadCount = isNaN(metadata.downloadCount) || !metadata.firstDownload\r\n ? 1\r\n : metadata.downloadCount + 1;\r\n metadata.firstDownload = metadata.firstDownload || new Date();\r\n metadata.lastDownload = new Date();\r\n await this.collection.updateOne({_id: this.mId}, {$set: {metadata}});\r\n return this.stream;\r\n }\r\n\r\n async getImage(params: IAssetImageParams = null): Promise<Readable> {\r\n return toImage(this.stream, params, this.metadata);\r\n }\r\n\r\n async downloadImage(params?: IAssetImageParams, metadata?: IAssetMeta): Promise<Readable> {\r\n return toImage(await this.download(metadata), params, this.metadata);\r\n }\r\n}\r\n","import {Readable} from \"stream\";\r\nimport {ObjectId} from \"bson\";\r\nimport {IAsset, IAssetImageParams, IAssetMeta} from \"../../common-types\";\r\nimport {bufferToStream, toImage} from \"../../utils\";\r\n\r\nexport class TempAsset implements IAsset {\r\n\r\n readonly id: string;\r\n\r\n get stream(): Readable {\r\n return bufferToStream(this.buffer);\r\n }\r\n\r\n constructor(protected buffer: Buffer, readonly filename: string, readonly contentType: string, readonly metadata: IAssetMeta) {\r\n this.id = new ObjectId().toHexString();\r\n }\r\n\r\n async unlink(): Promise<string> {\r\n throw new Error(`Temp asset '${this.id}' can not be removed!`);\r\n }\r\n\r\n async getBuffer(): Promise<Buffer> {\r\n return this.buffer;\r\n }\r\n\r\n async download(metadata?: IAssetMeta): Promise<Readable> {\r\n return this.stream;\r\n }\r\n\r\n downloadImage(params?: IAssetImageParams, metadata?: IAssetMeta): Promise<Readable> {\r\n Object.assign(this.metadata, metadata || {});\r\n return toImage(this.stream, params, this.metadata);\r\n }\r\n\r\n getImage(params?: IAssetImageParams): Promise<Readable> {\r\n return this.downloadImage(params);\r\n }\r\n\r\n async save(): Promise<any> {\r\n return this;\r\n }\r\n\r\n async load(): Promise<this> {\r\n return this;\r\n }\r\n\r\n toJSON(): any {\r\n return {\r\n id: this.id,\r\n filename: this.filename,\r\n contentType: this.contentType,\r\n metadata: this.metadata\r\n };\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {Readable} from \"stream\";\r\nimport {ObjectId} from \"bson\";\r\nimport {Collection, GridFSBucket} from \"mongodb\";\r\nimport {FilterQuery} from \"mongoose\";\r\nimport axios from \"axios\";\r\n\r\nimport {bufferToStream, copyStream, streamToBuffer} from \"../utils\";\r\nimport {IAsset, IAssetMeta, IFileType} from \"../common-types\";\r\nimport {MongoConnector} from \"./mongo-connector\";\r\nimport {AssetProcessor} from \"./asset-processor\";\r\nimport {Asset} from \"./entities/asset\";\r\nimport {TempAsset} from \"./entities/temp-asset\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class Assets {\r\n\r\n readonly bucket: GridFSBucket;\r\n readonly collection: Collection<Partial<IAsset>>;\r\n\r\n constructor(readonly connector: MongoConnector, readonly assetProcessor: AssetProcessor) {\r\n this.bucket = connector.bucket;\r\n this.collection = connector.database?.collection(\"assets.files\");\r\n }\r\n\r\n async write(stream: Readable, contentType: string = null, metadata: IAssetMeta = null): Promise<IAsset> {\r\n const uploadStream = copyStream(stream);\r\n const buffer = await streamToBuffer(stream);\r\n let fileType = {ext: \"\", mime: contentType} as IFileType;\r\n try {\r\n fileType = await AssetProcessor.fileTypeFromBuffer(buffer);\r\n } catch (e) {\r\n if (!fileType.mime) {\r\n throw `Can't determine mime type`;\r\n }\r\n console.log(`Can't determine mime type`, e);\r\n }\r\n metadata = metadata || {};\r\n return this.upload(uploadStream, fileType, metadata);\r\n }\r\n\r\n async writeBuffer(buffer: Buffer, metadata: IAssetMeta = null, contentType: string = null): Promise<IAsset> {\r\n let fileType = {ext: \"\", mime: contentType} as IFileType;\r\n try {\r\n fileType = await AssetProcessor.fileTypeFromBuffer(buffer);\r\n } catch (e) {\r\n if (!fileType.mime) {\r\n throw `Can't determine mime type`;\r\n }\r\n console.log(`Can't determine mime type`, e);\r\n }\r\n metadata = metadata || {};\r\n buffer = await this.assetProcessor.process(buffer, metadata, fileType);\r\n return this.upload(bufferToStream(buffer), fileType, metadata);\r\n }\r\n\r\n async writeUrl(url: string, metadata: IAssetMeta = null): Promise<IAsset> {\r\n const buffer = (await axios({ url, responseType: \"arraybuffer\" })).data as Buffer;\r\n return this.writeBuffer(buffer, metadata);\r\n }\r\n\r\n async download(url: string, contentType: string = null): Promise<IAsset> {\r\n let buffer = (await axios({ url, responseType: \"arraybuffer\" })).data as Buffer;\r\n let fileType = {ext: \"\", mime: contentType} as IFileType;\r\n try {\r\n fileType = await AssetProcessor.fileTypeFromBuffer(buffer);\r\n } catch (e) {\r\n if (!fileType.mime) {\r\n throw `Can't determine mime type`;\r\n }\r\n console.log(`Can't determine mime type`, e);\r\n }\r\n const metadata: IAssetMeta = {\r\n filename: url,\r\n extension: (fileType.ext || \"\").trim()\r\n };\r\n buffer = await this.assetProcessor.process(buffer, metadata, fileType);\r\n return new TempAsset(buffer, url, fileType.mime, metadata);\r\n }\r\n\r\n async read(id: string): Promise<IAsset> {\r\n return !id ? null : this.find({_id: new ObjectId(id)});\r\n }\r\n\r\n async find(where: FilterQuery<IAsset>): Promise<IAsset> {\r\n const data = await this.collection.findOne(where);\r\n return !data ? null : new Asset(data._id, data, this.collection, this.bucket);\r\n }\r\n\r\n async findMany(where: FilterQuery<IAsset>): Promise<ReadonlyArray<IAsset>> {\r\n const cursor = this.collection.find(where);\r\n const items = await cursor.toArray() || [];\r\n const result: IAsset[] = [];\r\n for (let item of items) {\r\n if (!item) continue;\r\n result.push(new Asset(item._id, item, this.collection, this.bucket));\r\n }\r\n return result;\r\n }\r\n\r\n async deleteMany(where: FilterQuery<IAsset>): Promise<ReadonlyArray<string>> {\r\n const assets = await this.findMany(where);\r\n return Promise.all(assets.map(a => a.unlink()));\r\n }\r\n\r\n async unlink(id: string): Promise<any> {\r\n const asset = await this.read(id);\r\n if (!asset) return null;\r\n return asset.unlink();\r\n }\r\n\r\n protected async upload(stream: Readable, fileType: IFileType, metadata: IAssetMeta): Promise<IAsset> {\r\n const contentType = fileType.mime.trim();\r\n metadata = Object.assign({\r\n downloadCount: 0,\r\n firstDownload: null,\r\n lastDownload: null\r\n }, metadata || {});\r\n metadata.filename = metadata.filename || new ObjectId().toHexString();\r\n metadata.extension = (fileType.ext || \"\").trim();\r\n return new Promise<IAsset>(((resolve, reject) => {\r\n const uploaderStream = this.bucket.openUploadStream(metadata.filename);\r\n stream.pipe(uploaderStream)\r\n .on(\"error\", error => {\r\n reject(error.message || error);\r\n })\r\n .on(\"finish\", () => {\r\n const asset = new Asset(uploaderStream.id as ObjectId, {\r\n filename: metadata.filename,\r\n contentType,\r\n metadata\r\n }, this.collection, this.bucket);\r\n asset.save().then(() => {\r\n resolve(asset);\r\n }, error => {\r\n reject(error.message || error);\r\n });\r\n });\r\n }));\r\n }\r\n}\r\n","import {Collection} from \"mongodb\";\r\nimport {ObjectId} from \"bson\";\r\n\r\nimport {IAsset, ILazyAsset} from \"../../common-types\";\r\nimport {deleteFromBucket} from \"../../utils\";\r\nimport {Assets} from \"../assets\";\r\nimport {Progresses} from \"../progresses\";\r\nimport {BaseEntity} from \"./base-entity\";\r\n\r\nexport class LazyAsset extends BaseEntity<ILazyAsset> implements ILazyAsset {\r\n\r\n get jobName(): string {\r\n return this.data.jobName;\r\n }\r\n\r\n get jobParams(): any {\r\n return this.data.jobParams;\r\n }\r\n\r\n get jobQue(): string {\r\n return this.data.jobQue;\r\n }\r\n\r\n get progressId(): string {\r\n return this.data.progressId;\r\n }\r\n\r\n get assetId(): string {\r\n return this.data.assetId;\r\n }\r\n\r\n constructor(id: ObjectId,\r\n data: Partial<ILazyAsset>,\r\n collection: Collection,\r\n protected assets: Assets,\r\n protected progresses: Progresses) {\r\n super(id, data, collection);\r\n }\r\n\r\n async unlink(): Promise<string> {\r\n await this.load();\r\n if (!this.progressId) {\r\n await this.collection.deleteOne({_id: this.mId});\r\n }\r\n return deleteFromBucket(this.assets.bucket, new ObjectId(this.assetId));\r\n }\r\n\r\n startWorking(): void {\r\n this.load().then(() => {\r\n if (this.deleted) return;\r\n this.progresses.get(this.progressId).then(p => {\r\n p?.cancel();\r\n });\r\n this.startWorkingOnAsset(false).then(() => {\r\n console.log(`Started working on lazy asset: ${this.id}`);\r\n }).catch(reason => {\r\n console.log(`Can't start working on lazy asset: ${this.id}\\nReason: ${reason}`);\r\n });\r\n });\r\n }\r\n\r\n async loadAsset(): Promise<IAsset> {\r\n await this.load();\r\n if (this.deleted) return null;\r\n if (this.assetId) {\r\n return this.assets.read(this.assetId);\r\n }\r\n if (this.progressId) {\r\n await this.progresses.waitToFinish(this.progressId);\r\n return this.loadAsset();\r\n }\r\n await this.startWorkingOnAsset(true);\r\n return this.loadAsset();\r\n }\r\n\r\n async writeAsset(asset: IAsset): Promise<IAsset> {\r\n this.data.assetId = asset.id;\r\n await this.save();\r\n return asset;\r\n }\r\n\r\n protected async startWorkingOnAsset(fromLoad: boolean): Promise<any> {\r\n this.data.progressId = (await this.progresses.create()).id;\r\n this.data.assetId = null;\r\n await this.save();\r\n await this.progresses.jobMan.enqueueWithName(this.data.jobName, {...this.data.jobParams, lazyId: this.id, fromLoad});\r\n }\r\n}\r\n","import {DependencyContainer, inject, injectable, injectAll, Lifecycle, scoped} from \"tsyringe\";\r\nimport {schedule, validate} from \"node-cron\";\r\nimport {socket, Socket} from \"zeromq\";\r\nimport {Subject, Subscription} from \"rxjs\";\r\nimport {filter, map} from \"rxjs/operators\";\r\nimport {ObjectId} from \"bson\";\r\nimport {\r\n DI_CONTAINER,\r\n IJob,\r\n IJobTask,\r\n IMessageBridge,\r\n ISocketMessage,\r\n JOB,\r\n JobParams,\r\n JobScheduleRange,\r\n JobScheduleTime,\r\n SocketParams,\r\n Type\r\n} from \"../common-types\";\r\nimport {\r\n colorize,\r\n ConsoleColor,\r\n getConstructorName,\r\n getType,\r\n isArray,\r\n isObject,\r\n jsonHighlight,\r\n promiseTimeout\r\n} from \"../utils\";\r\nimport {Configuration} from \"./configuration\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class JobManager {\r\n\r\n protected jobTypes: Type<IJob>[];\r\n protected jobs: { [name: string]: (jobParams: JobParams, uniqueId: string) => Promise<any> };\r\n protected messages: Subject<ISocketMessage>;\r\n protected processing: boolean;\r\n\r\n protected apiPush: Socket;\r\n protected apiPull: Socket;\r\n protected workerPush: Socket;\r\n protected workerPull: Socket;\r\n\r\n readonly maxTimeout: number;\r\n\r\n constructor(readonly config: Configuration, @inject(DI_CONTAINER) readonly container: DependencyContainer, @injectAll(JOB) jobTypes: Type<IJob>[]) {\r\n this.jobTypes = jobTypes || [];\r\n this.jobs = this.jobTypes.reduce((res, jobType) => {\r\n const jobName = getConstructorName(jobType);\r\n res[jobName] = (jobParams: JobParams, uniqueId: string) => {\r\n const job = this.resolveJobInstance(jobType, jobParams, uniqueId);\r\n const messageBridge: IMessageBridge = {\r\n sendMessage: (message: string, params?: SocketParams) => {\r\n params.uniqueId = uniqueId;\r\n this.workerPush.send([message, JSON.stringify(params)]);\r\n }\r\n };\r\n messageBridge.sendMessage(`job-started`, {name: jobName});\r\n return job.process(messageBridge);\r\n }\r\n return res;\r\n }, {});\r\n this.messages = new Subject<ISocketMessage>();\r\n this.processing = false;\r\n this.maxTimeout = this.config.resolve(\"jobTimeout\");\r\n }\r\n\r\n on(message: string, cb: (params: SocketParams) => any): Subscription {\r\n return this.messages\r\n .pipe(filter(t => t.message === message))\r\n .pipe(map(t => t.params)).subscribe(cb);\r\n }\r\n\r\n async process(jobType: Type<IJob>, params: JobParams = {}): Promise<any> {\r\n let instance: IJob = null;\r\n try {\r\n instance = this.resolveJobInstance(jobType, params);\r\n } catch (e) {\r\n const jobName = getConstructorName(jobType);\r\n throw `Can't resolve params for job: ${jobName}, with params: ${JSON.stringify(params)}. Reason: ${e}`;\r\n }\r\n return instance.process();\r\n }\r\n\r\n async enqueueWithName(name: string, params: JobParams = {}): Promise<string> {\r\n return this.sendToWorkers(this.tryResolveFromName(name, params), params);\r\n }\r\n\r\n async enqueue(jobType: Type<IJob>, params: JobParams = {}): Promise<string> {\r\n return this.sendToWorkers(this.tryResolveAndInit(jobType, params), params);\r\n }\r\n\r\n schedule(minute: JobScheduleTime, hour: JobScheduleTime, dayOfMonth: JobScheduleTime, month: JobScheduleTime, dayOfWeek: JobScheduleTime, jobType: Type<IJob>, params: JobParams = {}): IJobTask {\r\n const expression = [minute, hour, dayOfMonth, month, dayOfWeek].map(t => {\r\n if (isObject(t)) {\r\n const range = t as JobScheduleRange;\r\n return `${range.min || 0}-${range.max || 0}`;\r\n }\r\n if (isArray(t)) {\r\n return t.join(\",\");\r\n }\r\n return `${t}`;\r\n }).join(\" \");\r\n const jobName = getConstructorName(jobType);\r\n if (!validate(expression)) {\r\n console.log(`Can't schedule the task: '${jobName}' because time expression is invalid.`);\r\n return null;\r\n }\r\n return schedule(expression, () => {\r\n this.enqueue(jobType, params).catch(e => {\r\n console.log(`Can't enqueue job: '${jobName}' because: ${e}`);\r\n });\r\n });\r\n }\r\n\r\n async startProcessing(): Promise<any> {\r\n if (this.processing) return null;\r\n this.processing = true;\r\n\r\n if (!this.config.resolve(\"isWorker\")) {\r\n console.log(colorize(`Processing can not be started because this is NOT a worker process!`, ConsoleColor.FgRed));\r\n return null;\r\n }\r\n\r\n const host = this.config.resolve(\"zmqRemoteHost\");\r\n const pushHost = `${host}:${this.config.resolve(\"zmqBackPort\")}`;\r\n this.workerPush = socket(\"push\");\r\n await this.workerPush.connect(pushHost);\r\n console.log(`Worker producer connected to: ${pushHost}`);\r\n\r\n const pullHost = `${host}:${this.config.resolve(\"zmqPort\")}`;\r\n this.workerPull = socket(\"pull\");\r\n await this.workerPull.connect(pullHost);\r\n console.log(`Worker consumer connected to: ${pullHost}`);\r\n\r\n this.workerPull.on(\"message\", async (name: Buffer, args: Buffer, uniqId: Buffer) => {\r\n try {\r\n const jobName = name.toString(\"utf8\");\r\n const jobParams = JSON.parse(args.toString(\"utf8\")) as JobParams;\r\n const uniqueId = uniqId?.toString(\"utf8\");\r\n\r\n console.time(uniqueId);\r\n console.timeLog(uniqueId, `Started working on background job: ${colorize(jobName, ConsoleColor.FgCyan)} with args: \\n${jsonHighlight(jobParams)}\\n\\n`);\r\n\r\n try {\r\n await Promise.race([this.jobs[jobName](jobParams, uniqueId), promiseTimeout(this.maxTimeout, true)]);\r\n console.timeLog(uniqueId, `Finished working on background job: ${colorize(jobName, ConsoleColor.FgCyan)}\\n\\n`);\r\n } catch (e) {\r\n console.timeLog(uniqueId, `Background job failed: ${colorize(jobName, ConsoleColor.FgRed)}\\n${e}\\n\\n`);\r\n }\r\n console.timeEnd(uniqueId);\r\n } catch (e) {\r\n console.log(`Failed to start job: ${e.message}`);\r\n }\r\n });\r\n }\r\n\r\n tryResolve(jobType: Type<IJob>, params: JobParams): string {\r\n const jobName = getConstructorName(jobType);\r\n if (!this.jobs[jobName]) {\r\n throw `Can't find job with name: ${jobName} so it can't be enqueued!`;\r\n }\r\n try {\r\n this.resolveJobInstance(jobType, params);\r\n } catch (e) {\r\n throw `Can't resolve params for job: ${jobName}, with params: ${JSON.stringify(params)}. Reason: ${e}`;\r\n }\r\n return jobName;\r\n }\r\n\r\n protected tryResolveFromName(jobName: string, params: JobParams): string {\r\n const jobType = this.jobTypes.find(type => {\r\n return getConstructorName(type) == jobName;\r\n });\r\n if (!jobType) {\r\n throw `Can't find job type with name: ${jobName} so it can't be enqueued!`;\r\n }\r\n return this.tryResolveAndInit(jobType, params);\r\n }\r\n\r\n protected tryResolveAndInit(jobType: Type<IJob>, params: JobParams): string {\r\n if (!this.apiPush) {\r\n const port = this.config.resolve(\"zmqPort\");\r\n this.apiPush = socket(\"push\");\r\n this.apiPush.bind(`tcp://0.0.0.0:${port}`);\r\n console.log(`API producer bound to port: ${port}`);\r\n }\r\n if (!this.apiPull) {\r\n const backPort = this.config.resolve(\"zmqBackPort\");\r\n this.apiPull = socket(\"pull\");\r\n this.apiPull.bind(`tcp://0.0.0.0:${backPort}`);\r\n this.apiPull.on(\"message\", (name: Buffer, args?: Buffer) => {\r\n const message = name.toString(\"utf8\");\r\n const params = JSON.parse(args?.toString(\"utf8\") || \"{}\") as JobParams;\r\n const paramTypes = Object.keys(params).reduce((res, key) => {\r\n res[key] = getType(params[key]);\r\n return res;\r\n }, {});\r\n console.log(`Received a message from worker: \"${colorize(message, ConsoleColor.FgCyan)}\" with args: ${jsonHighlight(paramTypes)}\\n\\n`);\r\n this.messages.next({message, params});\r\n });\r\n console.log(`API consumer bound to port: ${backPort}`);\r\n }\r\n return this.tryResolve(jobType, params);\r\n }\r\n\r\n protected resolveJobInstance(jobType: Type<IJob>, params: JobParams, uniqueId: string = \"\"): IJob {\r\n const container = this.container.createChildContainer();\r\n Object.keys(params).map((name) => {\r\n container.register(name, {useValue: params[name]});\r\n });\r\n container.register(\"uniqueId\", {useValue: uniqueId});\r\n container.register(jobType, jobType);\r\n return container.resolve(jobType) as IJob;\r\n }\r\n\r\n protected async sendToWorkers(jobName: string, params: JobParams): Promise<string> {\r\n const publisher = await this.apiPush;\r\n const uniqueId = new ObjectId().toHexString();\r\n await publisher.send([jobName, JSON.stringify(params), uniqueId]);\r\n return uniqueId;\r\n }\r\n}\r\n","import {ObjectId} from \"bson\";\r\nimport {Collection} from \"mongodb\";\r\nimport {IMessageBridge, IProgress} from \"../../common-types\";\r\nimport {BaseEntity} from \"./base-entity\";\r\n\r\nexport class Progress extends BaseEntity<IProgress> implements IProgress {\r\n\r\n protected messageBridge: IMessageBridge;\r\n\r\n get current(): number {\r\n return this.data.current;\r\n }\r\n\r\n get max(): number {\r\n return this.data.max;\r\n }\r\n\r\n get message(): string {\r\n return this.data.message;\r\n }\r\n\r\n get error(): string {\r\n return this.data.error;\r\n }\r\n\r\n get canceled(): boolean {\r\n return this.data.canceled;\r\n }\r\n\r\n get percent(): number {\r\n return this.max > 0 ? Math.round(this.current / this.max * 100) : 0;\r\n }\r\n\r\n get remaining(): number {\r\n return this.max > 0 ? this.max - this.current : 0;\r\n }\r\n\r\n constructor(id: ObjectId,\r\n data: Partial<IProgress>,\r\n collection: Collection) {\r\n super(id, data, collection);\r\n }\r\n\r\n setMessageBridge(messageBridge: IMessageBridge): this {\r\n this.messageBridge = messageBridge || this.messageBridge;\r\n return this;\r\n }\r\n\r\n async createSubProgress(progressValue: number, max?: number, message?: string): Promise<IProgress> {\r\n if (max <= 0 && progressValue > 0) {\r\n await this.advance(progressValue);\r\n }\r\n if (message !== null) {\r\n this.data.message = message;\r\n await this.save();\r\n }\r\n return new SubProgress(this, this.current, progressValue, Math.max(max, 1));\r\n }\r\n\r\n async setMax(max: number): Promise<any> {\r\n if (isNaN(max) || max <= 0) {\r\n throw \"Max progress value must be bigger than zero\";\r\n }\r\n this.data.max = max;\r\n await this.save();\r\n }\r\n\r\n async setMessage(message: string): Promise<any> {\r\n this.data.message = message;\r\n await this.save();\r\n }\r\n\r\n async setError(error: string): Promise<any> {\r\n this.data.error = error;\r\n await this.save();\r\n }\r\n\r\n async advance(value: number = 1): Promise<any> {\r\n if (isNaN(value) || value <= 0) {\r\n throw \"Advance value must be bigger than zero\";\r\n }\r\n await this.load();\r\n if (this.deleted || this.canceled) return null;\r\n this.data.current = Math.min(this.max, this.current + value);\r\n await this.save();\r\n }\r\n\r\n async cancel(): Promise<any> {\r\n this.data.canceled = true;\r\n await this.save();\r\n }\r\n\r\n save(): Promise<any> {\r\n if (this.messageBridge) {\r\n this.messageBridge.sendMessage(`progress-changed`, this.toJSON());\r\n }\r\n return super.save();\r\n }\r\n}\r\n\r\nexport class SubProgress implements IProgress {\r\n\r\n get id(): string {\r\n return this.parent.id;\r\n }\r\n\r\n get current(): number {\r\n return this.mCurrent;\r\n }\r\n\r\n get max(): number {\r\n return this.mMax;\r\n }\r\n\r\n get message(): string {\r\n return this.parent.message;\r\n }\r\n\r\n get error(): string {\r\n return this.parent.error;\r\n }\r\n\r\n get percent(): number {\r\n return this.parent.percent;\r\n }\r\n\r\n get remaining(): number {\r\n return this.max - this.mCurrent;\r\n }\r\n\r\n get canceled(): boolean {\r\n return !this.parent || this.parent.canceled;\r\n }\r\n\r\n protected mCurrent: number;\r\n\r\n constructor(protected parent: IProgress, protected progressFrom: number, protected progressValue: number, protected mMax: number = 100) {\r\n if (progressFrom < 0) {\r\n throw \"Progress from must be bigger than or zero\";\r\n }\r\n if (progressValue <= 0) {\r\n throw \"Progress value must be bigger than zero\";\r\n }\r\n this.mCurrent = 0;\r\n }\r\n\r\n setMessageBridge(messageBridge: IMessageBridge): this {\r\n if (!this.parent) return this;\r\n this.parent.setMessageBridge(messageBridge);\r\n return this;\r\n }\r\n\r\n async createSubProgress(progressValue: number, max?: number, message?: string): Promise<IProgress> {\r\n if (max <= 0 && progressValue > 0) {\r\n await this.advance(progressValue);\r\n }\r\n if (message !== null) {\r\n await this.setMessage(message);\r\n }\r\n return new SubProgress(this, this.current, progressValue, Math.max(max, 1));\r\n }\r\n\r\n async setMax(max: number): Promise<any> {\r\n if (isNaN(max) || max <= 0) {\r\n throw \"Max progress value must be bigger than zero\";\r\n }\r\n this.mMax = max;\r\n await this.save();\r\n }\r\n\r\n async setMessage(message: string): Promise<any> {\r\n if (!this.parent) return null;\r\n await this.parent.setMessage(message);\r\n }\r\n\r\n async setError(error: string): Promise<any> {\r\n if (!this.parent) return null;\r\n await this.parent.setError(error);\r\n }\r\n\r\n async advance(value: number = 1): Promise<any> {\r\n if (isNaN(value) || value <= 0) {\r\n throw \"Advance value must be bigger than zero\";\r\n }\r\n this.mCurrent = Math.min(this.max, this.mCurrent + value);\r\n await this.save();\r\n }\r\n\r\n async cancel(): Promise<any> {\r\n if (!this.parent) return null;\r\n await this.parent.cancel();\r\n }\r\n\r\n async save(): Promise<any> {\r\n const ratio = this.max > 0 ? this.mCurrent / this.max : 0;\r\n const newProgress = this.progressFrom + Math.round(this.progressValue * ratio);\r\n const current = this.parent.current;\r\n if (newProgress <= current) return null;\r\n await this.parent.advance(newProgress)\r\n }\r\n\r\n async load(): Promise<any> {\r\n return null;\r\n }\r\n\r\n toJSON(): any {\r\n return this.parent.toJSON();\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport {ObjectId} from \"bson\";\r\nimport {Collection} from \"mongodb\";\r\nimport {FilterQuery} from \"mongoose\";\r\nimport {IProgress} from \"../common-types\";\r\nimport {promiseTimeout} from \"../utils\";\r\nimport {MongoConnector} from \"./mongo-connector\";\r\nimport {JobManager} from \"./job-manager\";\r\nimport {Progress} from \"./entities/progress\";\r\n\r\n@injectable()\r\n@singleton()\r\nexport class Progresses {\r\n\r\n protected collection: Collection<Partial<IProgress>>;\r\n protected progresses: {[id: string]: IProgress};\r\n\r\n constructor(readonly connector: MongoConnector, readonly jobMan: JobManager) {\r\n this.collection = connector.database.collection(\"progresses\");\r\n this.progresses = {};\r\n this.jobMan.on(\"progress-changed\", progress => {\r\n const id = progress.id as string;\r\n this.progresses[id] = new Progress(new ObjectId(id), progress as any, this.collection);\r\n });\r\n }\r\n\r\n async waitToFinish(id: string): Promise<IProgress> {\r\n return Promise.race([\r\n this.waitForProgress(id, async () => {\r\n let progress = this.progresses[id];\r\n if (!progress || progress.percent < 100) {\r\n progress = await this.get(id);\r\n }\r\n if (!progress) {\r\n throw new Error(`Progress does not exists with id: ${id}`);\r\n }\r\n return progress;\r\n }, 500),\r\n this.waitForProgress(id, async () => {\r\n return this.progresses[id] || null;\r\n }, 25)\r\n ]);\r\n }\r\n\r\n async get(id: string): Promise<IProgress> {\r\n return !id ? null : this.find({_id: new ObjectId(id)});\r\n }\r\n\r\n async find(where: FilterQuery<IProgress>): Promise<IProgress> {\r\n const data = await this.collection.findOne(where);\r\n return !data ? null : new Progress(data._id, data, this.collection);\r\n }\r\n\r\n async create(max: number = 100): Promise<IProgress> {\r\n if (isNaN(max) || max <= 0) {\r\n throw new Error(`Max progress value must be bigger than zero`);\r\n }\r\n const data = {\r\n current: 0,\r\n max: max,\r\n message: \"\",\r\n error: \"\",\r\n canceled: false\r\n };\r\n const res = await this.collection.insertOne(data);\r\n return new Progress(res.insertedId, data, this.collection);\r\n }\r\n\r\n async remove(id: string): Promise<any> {\r\n await this.collection.deleteOne({_id: new ObjectId(id)});\r\n return id;\r\n }\r\n\r\n protected async waitForProgress(id: string, cb: () => Promise<IProgress>, delay: number): Promise<IProgress> {\r\n let isFinished = false;\r\n let progress: IProgress = null;\r\n let waitTime: number = 0;\r\n while (!isFinished) {\r\n progress = await cb();\r\n waitTime += delay;\r\n if (progress) {\r\n if (progress.error) {\r\n throw new Error(progress.error);\r\n }\r\n isFinished = progress.percent >= 100;\r\n }\r\n if (!isFinished) {\r\n if (waitTime >= this.jobMan.maxTimeout) {\r\n throw new Error(`Progress with id: ${id} probably never will be finished!`);\r\n }\r\n await promiseTimeout(delay);\r\n }\r\n }\r\n return progress;\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {ObjectId} from \"bson\";\r\nimport {Collection} from \"mongodb\";\r\nimport {FilterQuery} from \"mongoose\";\r\nimport {IJob, ILazyAsset, JobParams, Type} from \"../common-types\";\r\nimport {MongoConnector} from \"./mongo-connector\";\r\nimport {Assets} from \"./assets\";\r\nimport {LazyAsset} from \"./entities/lazy-asset\";\r\nimport {JobManager} from \"./job-manager\";\r\nimport {Progresses} from \"./progresses\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class LazyAssets {\r\n\r\n protected collection: Collection<Partial<ILazyAsset>>;\r\n\r\n constructor(readonly connector: MongoConnector,\r\n readonly assets: Assets,\r\n readonly progresses: Progresses,\r\n readonly jobMan: JobManager) {\r\n this.collection = connector.database.collection(\"lazyassets\");\r\n }\r\n\r\n async create(jobType: Type<IJob>, jobParams: JobParams = {}, jobQue: string = \"main\"): Promise<ILazyAsset> {\r\n const jobName = this.jobMan.tryResolve(jobType, {...jobParams, lazyId: \"\"});\r\n const data = {\r\n jobName,\r\n jobParams,\r\n jobQue\r\n };\r\n const existingAsset = await this.find(data);\r\n if (existingAsset) return existingAsset;\r\n const res = await this.collection.insertOne(data);\r\n return new LazyAsset(res.insertedId, data, this.collection, this.assets, this.progresses);\r\n }\r\n\r\n async read(id: string): Promise<ILazyAsset> {\r\n return !id ? null : this.find({_id: new ObjectId(id)});\r\n }\r\n\r\n async find(where: FilterQuery<ILazyAsset>): Promise<ILazyAsset> {\r\n const data = await this.collection.findOne(where);\r\n return !data\r\n ? null\r\n : new LazyAsset(data._id, data, this.collection, this.assets, this.progresses);\r\n }\r\n\r\n async unlink(id: string): Promise<any> {\r\n const asset = await this.read(id);\r\n if (!asset) return null;\r\n return asset.unlink();\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {IAsset} from \"../common-types\";\r\nimport {Assets} from \"./assets\";\r\nimport {LazyAssets} from \"./lazy-assets\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class AssetResolver {\r\n\r\n constructor(readonly assets: Assets, readonly lazyAssets: LazyAssets) {\r\n\r\n }\r\n\r\n async resolve(id: string, lazy: boolean = false): Promise<IAsset> {\r\n let asset: IAsset = null;\r\n if (lazy) {\r\n const lazyAsset = await this.lazyAssets.read(id);\r\n if (!lazyAsset) return null;\r\n return lazyAsset.loadAsset();\r\n }\r\n asset = await this.assets.read(id);\r\n if (!asset) {\r\n const lazyAsset = await this.lazyAssets.read(id);\r\n if (!lazyAsset) return null;\r\n return lazyAsset.loadAsset();\r\n }\r\n return asset;\r\n }\r\n}\r\n","import {createServer, Server} from \"http\";\r\nimport express_, {Express} from \"express\";\r\nimport {injectable, singleton} from \"tsyringe\";\r\nimport socket_io, {Server as SocketServer} from \"socket.io\";\r\n\r\nconst express = express_;\r\nconst socketIO = socket_io;\r\n\r\n@injectable()\r\n@singleton()\r\nexport class BackendProvider {\r\n\r\n readonly express: Express;\r\n readonly server: Server;\r\n\r\n get io(): SocketServer {\r\n this.ioServer = this.ioServer || socketIO(this.server, {path: \"/socket\"});\r\n return this.ioServer;\r\n }\r\n\r\n protected ioServer: SocketServer;\r\n\r\n constructor() {\r\n this.express = express();\r\n this.server = createServer(this.express);\r\n }\r\n}\r\n","import {injectable, scoped, Lifecycle} from \"tsyringe\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class CacheProcessor {\r\n async serialize(data: any): Promise<any> {\r\n return data;\r\n }\r\n\r\n async deserialize(data: any): Promise<any> {\r\n return data;\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {Collection} from \"mongodb\";\r\nimport {MongoConnector} from \"./mongo-connector\";\r\nimport {Configuration} from \"./configuration\";\r\nimport {CacheProcessor} from \"./cache-processor\";\r\n\r\nexport interface ICacheItem {\r\n _id: string;\r\n data: any;\r\n tags?: any;\r\n expirationTimestamp?: number;\r\n expiresAt?: number;\r\n}\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class Cache {\r\n\r\n protected collection: Collection<ICacheItem>;\r\n\r\n constructor(readonly connector: MongoConnector, protected config: Configuration, protected cacheProcessor: CacheProcessor) {\r\n\r\n }\r\n\r\n protected async prepare(): Promise<any> {\r\n if (this.collection) return;\r\n if (!this.connector.database) {\r\n throw new Error(`You can't use cache without mongo connection!`);\r\n }\r\n this.collection = this.connector.database.collection(this.config.resolve(\"cacheCollection\"));\r\n await this.collection.createIndex(\r\n {expiresAt: 1},\r\n {expireAfterSeconds: 0}\r\n );\r\n }\r\n\r\n async set(key: string, value: any, ttl?: number, expirationTimestamp: number = null, tags: any = {}): Promise<any> {\r\n await this.prepare();\r\n const item: ICacheItem = {\r\n _id: key,\r\n data: await this.cacheProcessor.serialize(value),\r\n tags: await this.cacheProcessor.serialize(tags),\r\n expirationTimestamp,\r\n };\r\n if (ttl) {\r\n const now = Math.round(new Date().getTime() / 1000);\r\n item.expiresAt = now + ttl;\r\n }\r\n await this.collection.updateOne({_id: key}, {$set: item}, {upsert: true});\r\n return value;\r\n }\r\n\r\n async get(key: string): Promise<any> {\r\n await this.prepare();\r\n let item = await this.collection.findOne({_id: key});\r\n const now = Math.round(new Date().getTime() / 1000);\r\n if (item && item.expiresAt && item.expiresAt < now) {\r\n item = null;\r\n }\r\n if (!item) {\r\n throw new Error(`Cache probably doesn't exists with key: ${key}`);\r\n }\r\n return await this.cacheProcessor.deserialize(item.data);\r\n }\r\n\r\n async getOrSet(key: string, valueCb: () => Promise<any>, ttl?: number, expirationTimestamp: number = null, tags: any = {}): Promise<any> {\r\n try {\r\n return await this.get(key);\r\n } catch (e) {\r\n return await this.set(key, await valueCb(), ttl, expirationTimestamp, tags);\r\n }\r\n }\r\n\r\n async delete(key: string): Promise<any> {\r\n await this.prepare();\r\n await this.collection.deleteOne({_id: key});\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {Express} from \"express\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class EndpointProvider {\r\n\r\n async configure(app: Express): Promise<any> {\r\n console.log(`Express app is mounted to: ${app.mountpath}`);\r\n }\r\n}\r\n","import {injectable, injectAll, Lifecycle, scoped} from \"tsyringe\";\r\nimport {FIXTURE, IFixture} from \"../common-types\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class Fixtures {\r\n\r\n constructor(@injectAll(FIXTURE) protected fixtures: IFixture[]) {\r\n\r\n }\r\n\r\n async load() {\r\n if (!this.fixtures) return;\r\n\r\n for (let fixture of this.fixtures) {\r\n await fixture.load();\r\n }\r\n }\r\n}\r\n","import {v4 as uuidv4} from \"uuid\";\r\nimport sharp_ from \"sharp\";\r\nimport {IGalleryImage, IGallerySize, IGalleryImageHandler} from \"../common-types\";\r\n\r\nconst sharp = sharp_;\r\nconst bigSize = 1500;\r\nconst thumbSize = 250;\r\n\r\nexport class GalleryImage implements IGalleryImage {\r\n\r\n readonly thumb: string;\r\n readonly big: string;\r\n readonly targetSize: IGallerySize;\r\n\r\n constructor(readonly folder: string, size: IGallerySize, readonly handler: IGalleryImageHandler) {\r\n this.thumb = uuidv4();\r\n this.big = uuidv4();\r\n this.targetSize = !size ? {width: thumbSize, height: thumbSize} : size;\r\n }\r\n\r\n async serve(id: string): Promise<Buffer> {\r\n const isThumb = id == this.thumb;\r\n\r\n if (await this.handler.hasResult(isThumb)) {\r\n return this.handler.serveResult(isThumb);\r\n }\r\n\r\n const original = sharp(await this.handler.getOriginal()).rotate();\r\n const meta = await original.metadata();\r\n const ratio = meta.width / meta.height;\r\n const sizeRatio = isThumb ? this.targetSize.width / this.targetSize.height : 1;\r\n const size = isThumb ? Math.max(this.targetSize.width, this.targetSize.height) : bigSize;\r\n const targetHeight = ratio > sizeRatio ? size : Math.round(size / ratio);\r\n const targetWidth = Math.round(targetHeight * ratio);\r\n\r\n const resized = original.resize(targetWidth, targetHeight);\r\n const buffer = await (isThumb ? resized.extract({\r\n left: Math.floor((targetWidth - this.targetSize.width) / 2),\r\n top: Math.floor((targetHeight - this.targetSize.height) / 2),\r\n width: this.targetSize.width,\r\n height: this.targetSize.height\r\n }).toBuffer() : resized.toBuffer());\r\n\r\n await this.handler.writeResult(isThumb, buffer);\r\n return this.handler.serveResult(isThumb);\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {IGalleryImage, IGalleryImageHandler, IGallerySize} from \"../common-types\";\r\nimport {GalleryImage} from \"./gallery-image\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class GalleryCache {\r\n\r\n private readonly imgCache: { [id: string]: IGalleryImage };\r\n\r\n constructor() {\r\n this.imgCache = {};\r\n }\r\n\r\n put(img: IGalleryImage): void {\r\n this.imgCache[img.thumb] = img;\r\n this.imgCache[img.big] = img;\r\n }\r\n\r\n serve(id: string): Promise<Buffer> {\r\n const img = this.imgCache[id];\r\n return !img ? null : img.serve(id);\r\n }\r\n\r\n create(folder: string, targetSize: IGallerySize, handler: IGalleryImageHandler): IGalleryImage {\r\n const image = new GalleryImage(folder, targetSize, handler);\r\n this.put(image);\r\n return image;\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport sharp_ from \"sharp\";\r\nimport {access, constants, lstat, readdir, readFile, writeFile} from \"fs\";\r\nimport {join, dirname} from \"path\";\r\nimport {IGalleryImage, IGallerySize} from \"../common-types\";\r\nimport {Configuration} from \"./configuration\";\r\nimport {GalleryCache} from \"./gallery-cache\";\r\nimport {mkdirRecursive} from \"../utils\";\r\n\r\nconst sharp = sharp_;\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class Gallery {\r\n\r\n private readonly dir: string;\r\n private readonly output: string;\r\n private readonly cache: { [folder: string]: Promise<IGalleryImage[]> };\r\n\r\n constructor(readonly config: Configuration, readonly galleryCache: GalleryCache) {\r\n this.cache = {};\r\n this.dir = this.config.resolve(\"galleryDir\");\r\n this.output = join(this.config.resolve(\"cacheDir\"), \"gallery\");\r\n }\r\n\r\n async getFolder(folder: string, size: IGallerySize = null): Promise<IGalleryImage[]> {\r\n this.cache[folder] = this.cache[folder] || new Promise<IGalleryImage[]>(resolve => {\r\n lstat(join(this.dir, folder), (err, stats) => {\r\n if (err || !stats.isDirectory()) {\r\n resolve([]);\r\n return;\r\n }\r\n this.readRecursive(folder, \"\", size).then(resolve, () => resolve([]));\r\n });\r\n });\r\n return this.cache[folder];\r\n }\r\n\r\n protected readRecursive(path: string, folder: string, size: IGallerySize): Promise<IGalleryImage[]> {\r\n return new Promise<IGalleryImage[]>(resolve => {\r\n readdir(join(this.dir, path), (err, files) => {\r\n if (err) {\r\n resolve([]);\r\n return;\r\n }\r\n const promises = files.map(file => {\r\n return new Promise<IGalleryImage[]>(async resolve => {\r\n const filePath = join(path, file);\r\n const absoluteFilePath = join(this.dir, filePath);\r\n lstat(absoluteFilePath, (err, stats) => {\r\n if (err) {\r\n resolve([]);\r\n return;\r\n }\r\n if (stats.isDirectory()) {\r\n this.readRecursive(filePath, join(folder, file), size).then(resolve);\r\n return;\r\n }\r\n const sharpImg = sharp(absoluteFilePath);\r\n sharpImg.rotate().metadata().then(() => {\r\n const getResultPath = (isThumb) => {\r\n return join(this.output, filePath.replace(/.([a-z|A-Z]+)$/gi, function (ext) {\r\n const suffix = isThumb ? 'thumb' : 'big';\r\n return `-${suffix}${ext}`;\r\n }));\r\n };\r\n resolve([this.galleryCache.create(folder, size, {\r\n getOriginal: () => {\r\n return new Promise<Buffer>((res, rej) => {\r\n readFile(absoluteFilePath, (err, data) => {\r\n if (err) {\r\n rej(err);\r\n return;\r\n }\r\n res(data);\r\n });\r\n });\r\n },\r\n writeResult: (isThumb: boolean, buffer: Buffer) => {\r\n return new Promise<void>(async (res, rej) => {\r\n const resultPath = getResultPath(isThumb);\r\n await mkdirRecursive(dirname(resultPath));\r\n writeFile(resultPath, buffer, err => {\r\n if (err) {\r\n rej(err);\r\n return;\r\n }\r\n res();\r\n });\r\n });\r\n },\r\n hasResult: (isThumb: boolean) => {\r\n return new Promise<boolean>(res => {\r\n access(getResultPath(isThumb), constants.R_OK, err => {\r\n res(!err);\r\n });\r\n });\r\n },\r\n serveResult: (isThumb: boolean) => {\r\n return new Promise<Buffer>((res, rej) => {\r\n readFile(getResultPath(isThumb), (err, data) => {\r\n if (err) {\r\n rej(err);\r\n return;\r\n }\r\n res(data);\r\n });\r\n });\r\n }\r\n })]);\r\n }, () => resolve([]));\r\n });\r\n });\r\n });\r\n Promise.all(promises).then(folders => {\r\n resolve([].concat.apply([], folders));\r\n });\r\n });\r\n });\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {Configuration} from \"./configuration\";\r\nimport {rand} from \"../utils\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class IdGenerator {\r\n\r\n protected prefix: string;\r\n protected separator: string;\r\n protected chars: string;\r\n protected parts: number[];\r\n\r\n constructor(readonly config: Configuration) {\r\n this.prefix = config.resolve(\"idPrefix\");\r\n this.separator = config.resolve(\"idSeparator\");\r\n this.chars = config.resolve(\"idChars\");\r\n this.parts = config.resolve(\"idParts\");\r\n }\r\n\r\n async generate(checkCb: (id: string) => Promise<boolean>): Promise<string> {\r\n let id = null;\r\n let tries = 0;\r\n let notGood = true;\r\n while (notGood && tries < 5) {\r\n id = this.generateId();\r\n notGood = await checkCb(id);\r\n tries++;\r\n }\r\n if (notGood) {\r\n throw `Couldn't generate an unique id..`;\r\n }\r\n return id;\r\n }\r\n\r\n private generateId(): string {\r\n return this.prefix + this.parts.map(num => {\r\n let s = \"\";\r\n for (let i = 0; i < num; i++) {\r\n const ix = rand(0, this.chars.length - 1);\r\n s += this.chars[ix];\r\n }\r\n return s;\r\n }).join(this.separator);\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport axios from \"axios\";\r\nimport {Configuration} from \"./configuration\";\r\nimport {ITranslations} from \"../common-types\";\r\n\r\n@injectable()\r\n@singleton()\r\nexport class TranslationProvider {\r\n\r\n protected cache: { [lang: string]: Promise<ITranslations> };\r\n\r\n constructor(readonly config: Configuration) {\r\n this.cache = {};\r\n }\r\n\r\n getDictionary(language: string): Promise<ITranslations> {\r\n this.cache[language] = this.cache[language] || axios.get(this.config.resolve(\"translationsTemplate\").replace(`[lang]`, language)).then(\r\n r => r.data,\r\n reason => ({\r\n message: reason\r\n })\r\n );\r\n return this.cache[language];\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport {getValue, isDefined, isString} from \"../utils\";\r\nimport {ITranslations} from \"../common-types\";\r\nimport {TranslationProvider} from \"./translation-provider\";\r\n\r\n@injectable()\r\n@singleton()\r\nexport class Translator {\r\n\r\n protected cache: { [lang: string]: ITranslations };\r\n\r\n constructor(private translationProvider: TranslationProvider) {\r\n this.cache = {};\r\n }\r\n\r\n async getDictionary(language: string): Promise<ITranslations> {\r\n const dictionary = await this.translationProvider.getDictionary(language);\r\n this.cache[language] = dictionary;\r\n return dictionary;\r\n }\r\n\r\n getTranslationSync(language: string, key: string, params?: any): string {\r\n if (!isString(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n const dictionary = this.cache[language];\r\n const translation = getValue(dictionary, key, key) || key;\r\n return this.interpolate(translation, params);\r\n }\r\n\r\n getTranslation(language: string, key: string, params?: any): Promise<string> {\r\n if (!isString(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n return this.getDictionary(language).then(dictionary => {\r\n const translation = getValue(dictionary, key, key) || key;\r\n return this.interpolate(translation, params);\r\n });\r\n }\r\n\r\n getTranslations(language: string, ...keys: string[]): Promise<ITranslations> {\r\n return new Promise<ITranslations>(resolve => {\r\n Promise.all(keys.map(key => this.getTranslation(language, key))).then(translations => {\r\n resolve(keys.reduce((result, key, i) => {\r\n result[key] = translations[i];\r\n return result;\r\n }, {}));\r\n });\r\n });\r\n }\r\n\r\n protected interpolate(expr: string | Function, params?: any): string {\r\n if (typeof expr === \"string\") {\r\n return this.interpolateString(expr, params);\r\n }\r\n if (typeof expr === \"function\") {\r\n return expr(params);\r\n }\r\n return expr as string;\r\n }\r\n\r\n protected interpolateString(expr: string, params?: any) {\r\n if (!expr || !params) return expr;\r\n return expr.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (substring: string, b: string) => {\r\n const r = getValue(params, b);\r\n return isDefined(r) ? r : substring;\r\n });\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport {lstatSync, readdir, readFileSync} from \"fs\";\r\nimport {join} from \"path\";\r\nimport * as Handlebars from \"handlebars\";\r\n\r\nimport {Translator} from \"./translator\";\r\nimport {Configuration} from \"./configuration\";\r\n\r\n@injectable()\r\n@singleton()\r\nexport class TemplateRenderer {\r\n\r\n templates: {[name: string]: Function};\r\n\r\n protected initPromise: Promise<any>;\r\n\r\n constructor(readonly translator: Translator, readonly config: Configuration) {\r\n this.templates = {};\r\n Handlebars.registerHelper(`object`, function({hash}) {\r\n return hash;\r\n });\r\n Handlebars.registerHelper(`now`, function() {\r\n return new Date().getTime();\r\n });\r\n Handlebars.registerHelper(`keys`, function(obj: any) {\r\n return !obj ? [] : Object.keys(obj);\r\n });\r\n Handlebars.registerHelper(`translate`, function (key: string, params: any) {\r\n return translator.getTranslationSync(this.language, key, params);\r\n });\r\n }\r\n\r\n protected init(): Promise<any> {\r\n this.initPromise = this.initPromise || this.parseTemplates(this.config.resolve(\"templatesDir\"), []);\r\n return this.initPromise;\r\n }\r\n\r\n async parseTemplates(dir: string, dirPath: string[]): Promise<void> {\r\n return new Promise<void>(resolve => {\r\n readdir(dir, async (err, files) => {\r\n for (let file of files) {\r\n const path = join(dir, file);\r\n if (lstatSync(path).isDirectory()) {\r\n await this.parseTemplates(join(dir, file), dirPath.concat([file]));\r\n continue;\r\n }\r\n const parts = file.split(\".\");\r\n parts.pop();\r\n const name = parts.join(\".\");\r\n const fullName = dirPath.concat([name]).join(\"-\");\r\n const content = readFileSync(path).toString(\"utf8\");\r\n this.templates[fullName] = Handlebars.compile(content);\r\n Handlebars.registerPartial(fullName, content);\r\n }\r\n resolve();\r\n });\r\n });\r\n }\r\n\r\n async render(template: string, language: string, context?: any): Promise<string> {\r\n await this.init();\r\n await this.translator.getDictionary(language);\r\n if (!this.templates[template]) {\r\n return Promise.reject(`Template not found with name: ${template}`);\r\n }\r\n context = Object.assign({language}, context || {});\r\n const res = this.templates[template](context);\r\n return res instanceof Error ? await Promise.reject(res) : res;\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport {createTransport} from \"nodemailer\";\r\nimport * as Mail from \"nodemailer/lib/mailer\";\r\n\r\nimport {TemplateRenderer} from \"./template-renderer\";\r\nimport {Translator} from \"./translator\";\r\nimport {Configuration} from \"./configuration\";\r\n\r\nexport interface MailOptions {\r\n to: string;\r\n from?: string;\r\n subject?: string;\r\n template: string;\r\n context: any;\r\n attachments?: Mail.Attachment[]\r\n}\r\n\r\n@injectable()\r\n@singleton()\r\nexport class MailSender {\r\n\r\n readonly transporter: Mail;\r\n\r\n get translator(): Translator {\r\n return this.renderer.translator;\r\n }\r\n\r\n constructor(readonly config: Configuration, readonly renderer: TemplateRenderer) {\r\n this.transporter = createTransport({\r\n host: this.config.resolve(\"smtpHost\"),\r\n port: this.config.resolve(\"smtpPort\"),\r\n auth: {\r\n user: this.config.resolve(\"smtpUser\"),\r\n pass: this.config.resolve(\"smtpPassword\"),\r\n }\r\n });\r\n }\r\n\r\n async sendMail(language: string, options: MailOptions): Promise<any> {\r\n const subject = await this.translator.getTranslation(language, options.subject || \"-\");\r\n const html = await this.renderer.render(options.template, language, options.context);\r\n return this.transporter.sendMail({\r\n from: options.from || this.config.resolve(\"mailSenderAddress\"),\r\n to: options.to,\r\n attachments: options.attachments,\r\n subject,\r\n html\r\n });\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {Cache, ICacheItem} from \"./cache\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class MemoryCache {\r\n\r\n protected readonly cacheMap: Map<string, ICacheItem>;\r\n\r\n constructor(protected readonly cache: Cache) {\r\n this.cacheMap = new Map<string, ICacheItem>();\r\n }\r\n\r\n async set(key: string, value: any, ttl?: number, expirationTimestamp: number = null, tags: any = {}): Promise<any> {\r\n const now = Math.round(new Date().getTime() / 1000);\r\n const expTimestamp = Math.min(isNaN(ttl) ? Number.MAX_SAFE_INTEGER : ttl, 3600);\r\n this.cacheMap.set(key, {\r\n _id: key,\r\n data: value,\r\n expirationTimestamp: expTimestamp,\r\n expiresAt: now + expTimestamp,\r\n });\r\n return this.cache.set(key, value, ttl, expirationTimestamp, tags);\r\n }\r\n\r\n async get(key: string): Promise<any> {\r\n let item = this.cacheMap.get(key);\r\n const now = Math.round(new Date().getTime() / 1000);\r\n let expTimestamp = 3600;\r\n if (item && item.expiresAt && item.expiresAt < now) {\r\n expTimestamp = item.expirationTimestamp;\r\n item = null;\r\n }\r\n if (!item) {\r\n const value = await this.cache.get(key);\r\n this.cacheMap.set(key, {\r\n _id: key,\r\n data: value,\r\n expirationTimestamp: expTimestamp,\r\n expiresAt: now + expTimestamp,\r\n });\r\n return value;\r\n }\r\n return item.data;\r\n }\r\n\r\n async getOrSet(key: string, valueCb: () => Promise<any>, ttl?: number, expirationTimestamp: number = null, tags: any = {}): Promise<any> {\r\n try {\r\n return await this.get(key);\r\n } catch (e) {\r\n return await this.set(key, await valueCb(), ttl, expirationTimestamp, tags);\r\n }\r\n }\r\n\r\n async delete(key: string): Promise<any> {\r\n this.cacheMap.delete(key);\r\n await this.cacheMap.delete(key);\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {IUser} from \"../common-types\";\r\n\r\nconst sampleUser: IUser = {\r\n id: \"5a3cdf7c6a9cf0ba32feccdf\",\r\n email: \"admin@site.com\",\r\n password: \"\",\r\n roles: [\"admin\"]\r\n};\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class UserManager {\r\n\r\n async getByCredentials(credentials: any): Promise<IUser> {\r\n return (sampleUser.email == credentials.email) ? sampleUser : await Promise.reject(\"message.login.error\");\r\n }\r\n\r\n async getById(id: string): Promise<IUser> {\r\n return (sampleUser.id == id) ? sampleUser : null;\r\n }\r\n\r\n async serialize(user: IUser): Promise<any> {\r\n const res = Object.assign({}, user);\r\n delete res.password;\r\n return res;\r\n }\r\n}\r\n","import {IAssetImageParams} from \"../common-types\";\r\nimport {IsBoolean, IsOptional, Max, Min} from \"class-validator\";\r\n\r\nexport class AssetImageParams implements IAssetImageParams {\r\n\r\n @Min(-360)\r\n @Max(360)\r\n @IsOptional()\r\n rotation?: number = 0;\r\n\r\n @Min(0.0001)\r\n @IsOptional()\r\n canvasScaleX?: number = 1;\r\n\r\n @Min(0.0001)\r\n @IsOptional()\r\n canvasScaleY?: number = 1;\r\n\r\n @Min(0.0001)\r\n @IsOptional()\r\n scaleX?: number = 1;\r\n\r\n @Min(0.0001)\r\n @IsOptional()\r\n scaleY?: number = 1;\r\n\r\n @IsBoolean()\r\n @IsOptional()\r\n lazy?: boolean = false;\r\n\r\n @IsBoolean()\r\n @IsOptional()\r\n crop?: boolean = false;\r\n\r\n @IsBoolean()\r\n @IsOptional()\r\n cropBefore?: boolean = false;\r\n\r\n @IsBoolean()\r\n @IsOptional()\r\n cropAfter?: boolean = false;\r\n}\r\n","import {Readable} from \"stream\";\r\nimport {Response} from \"express\";\r\nimport {injectable} from \"tsyringe\";\r\nimport {\r\n Authorized,\r\n Body,\r\n Controller,\r\n Get,\r\n HttpError,\r\n Param,\r\n Post,\r\n QueryParam,\r\n QueryParams,\r\n Res,\r\n UploadedFile\r\n} from \"routing-controllers\";\r\nimport {IAsset} from \"../common-types\";\r\nimport {Assets} from \"../services/assets\";\r\nimport {AssetResolver} from \"../services/asset-resolver\";\r\nimport {AssetImageParams} from \"../requests/asset-image-params\";\r\n\r\n@injectable()\r\n@Controller(\"/assets\")\r\nexport class AssetsController {\r\n\r\n constructor(readonly assets: Assets, readonly assetResolver: AssetResolver) {\r\n\r\n }\r\n\r\n @Authorized()\r\n @Post(\"\")\r\n async upload(@UploadedFile(\"file\") file: Express.Multer.File) {\r\n try {\r\n const contentType = file.mimetype === \"application/octet-stream\" ? null : file.mimetype;\r\n const asset = await this.assets.writeBuffer(file.buffer, {filename: file.filename}, contentType);\r\n return asset.toJSON();\r\n } catch (e) {\r\n const msg = e?.message || e || \"Unknown error\";\r\n throw new HttpError(400, `Asset can't be uploaded.\\n${msg}`);\r\n }\r\n }\r\n\r\n @Authorized()\r\n @Post(\"url\")\r\n async uploadUrl(@Body() body: any) {\r\n try {\r\n const asset = await this.assets.writeUrl(body.url, body);\r\n return asset.toJSON();\r\n } catch (e) {\r\n const msg = e?.message || e || \"Unknown error\";\r\n throw new HttpError(400, `Asset can't be uploaded.\\n${msg}`);\r\n }\r\n }\r\n\r\n @Get(\"/:id\")\r\n async getFile(@Param(\"id\") id: string, @QueryParam(\"lazy\") lazy: boolean, @Res() res: Response): Promise<Readable> {\r\n const asset = await this.getAsset(\"Asset\", id, lazy, res);\r\n return asset.download();\r\n }\r\n\r\n @Get(\"/image/:id/:rotation\")\r\n async getImageRotation(@Param(\"id\") id: string, @QueryParams() params: AssetImageParams, @Res() res: Response, @Param(\"rotation\") rotation: number = 0): Promise<Readable> {\r\n const asset = await this.getAsset(\"Image\", id, params.lazy, res);\r\n if (rotation !== 0) {\r\n params.rotation = params.rotation || rotation;\r\n }\r\n return asset.downloadImage(params);\r\n }\r\n\r\n @Get(\"/image/:id\")\r\n async getImage(@Param(\"id\") id: string, @QueryParams() params: AssetImageParams, @Res() res: Response): Promise<Readable> {\r\n return this.getImageRotation(id, params, res);\r\n }\r\n\r\n @Get(\"/by-name/:name\")\r\n async getFileByName(@Param(\"name\") name: string, @Res() res: Response): Promise<Readable> {\r\n const asset = await this.getAssetByName(\"Asset\", name, res);\r\n return asset.download();\r\n }\r\n\r\n @Get(\"/by-name/image/:name\")\r\n async getImageByName(@Param(\"name\") name: string, @QueryParams() params: AssetImageParams, @Res() res: Response): Promise<Readable> {\r\n const asset = await this.getAssetByName(\"Image\", name, res);\r\n return asset.downloadImage(params);\r\n }\r\n\r\n protected setAssetHeaders(type: string, asset: IAsset, res: Response): void {\r\n if (asset.metadata?.classified) {\r\n throw new HttpError(403, `${type} is classified, and can be only downloaded from a custom url.`);\r\n }\r\n const ext = asset.metadata?.extension;\r\n if (ext) {\r\n res.header(\"content-disposition\", `inline; filename=${asset.filename}.${ext}`);\r\n }\r\n if (asset.contentType) {\r\n res.header(\"content-type\", asset.contentType);\r\n }\r\n }\r\n\r\n protected async getAsset(type: string, id: string, lazy: boolean, res: Response): Promise<IAsset> {\r\n const asset = await this.assetResolver.resolve(id, lazy);\r\n if (!asset) {\r\n throw new HttpError(404, `${type} with id: '${id}' not found.`);\r\n }\r\n this.setAssetHeaders(type, asset, res);\r\n return asset;\r\n }\r\n\r\n protected async getAssetByName(type: string, filename: string, res: Response): Promise<IAsset> {\r\n const asset = await this.assets.find({filename});\r\n if (!asset) {\r\n throw new HttpError(404, `${type} with filename: '${filename}' not found.`);\r\n }\r\n this.setAssetHeaders(type, asset, res);\r\n return asset;\r\n }\r\n}\r\n","import {Response} from \"express\";\r\nimport {sign} from \"jsonwebtoken\";\r\nimport {injectable} from \"tsyringe\";\r\nimport {\r\n Authorized,\r\n Body,\r\n Controller,\r\n CurrentUser,\r\n Get,\r\n HttpError,\r\n Post,\r\n Res,\r\n UnauthorizedError\r\n} from \"routing-controllers\";\r\nimport {compare} from \"bcrypt\";\r\n\r\nimport {Configuration} from \"../services/configuration\";\r\nimport {UserManager} from \"../services/user-manager\";\r\nimport {IUser} from \"../common-types\";\r\n\r\n@injectable()\r\n@Controller()\r\nexport class AuthController {\r\n\r\n constructor(readonly config: Configuration, readonly userManager: UserManager) {}\r\n\r\n @Post(\"/login\")\r\n async login(@Body() credentials: any, @Res() res: Response) {\r\n let user: IUser = null;\r\n try {\r\n user = await this.userManager.getByCredentials(credentials);\r\n } catch (reason) {\r\n throw new HttpError(401, reason);\r\n }\r\n const valid = !user ? false : await compare(credentials.password, user.password);\r\n if (valid !== true)\r\n throw new UnauthorizedError(`message.login.error`);\r\n return {\r\n token: sign({ id: user._id || user.id }, this.config.resolve(\"jwtSecret\")),\r\n user: await this.userManager.serialize(user)\r\n };\r\n }\r\n\r\n @Authorized()\r\n @Get(\"/user\")\r\n getProfile(@CurrentUser() user: IUser) {\r\n return this.userManager.serialize(user);\r\n }\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {Controller, Get, Param} from \"routing-controllers\";\r\nimport {GalleryCache} from \"../services/gallery-cache\";\r\n\r\n@injectable()\r\n@Controller(\"/gallery\")\r\nexport class GalleryController {\r\n\r\n constructor(readonly galleryCache: GalleryCache) { }\r\n\r\n @Get(\"/:id\")\r\n getFile(@Param(\"id\") id: string) {\r\n return this.galleryCache.serve(id);\r\n }\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {Controller, Get, Param} from \"routing-controllers\";\r\nimport {Progresses} from \"../services/progresses\";\r\nimport {Configuration} from \"../services/configuration\";\r\n\r\n@injectable()\r\n@Controller(\"/progresses\")\r\nexport class ProgressesController {\r\n\r\n protected connectionType: string;\r\n\r\n constructor(readonly progresses: Progresses, readonly config: Configuration) {\r\n const mainEndpoint = this.config.resolve(\"mainEndpoint\");\r\n this.connectionType = !mainEndpoint ? \"polling\" : \"socket\";\r\n }\r\n\r\n @Get(\"/:id\")\r\n async getProgress(@Param(\"id\") id: string) {\r\n const progress = await this.progresses.get(id);\r\n if (!progress) return null;\r\n const json = progress.toJSON();\r\n json.connectionType = this.connectionType;\r\n return json;\r\n }\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {BadRequestError, ExpressErrorMiddlewareInterface, Middleware} from \"routing-controllers\";\r\nimport {Response} from \"express\";\r\n\r\nimport {IRequest} from \"../common-types\";\r\nimport {Translator} from \"../services/translator\";\r\nimport {Configuration} from \"../services/configuration\";\r\n\r\n@injectable()\r\n@Middleware({ type: \"after\" })\r\nexport class ErrorHandlerMiddleware implements ExpressErrorMiddlewareInterface {\r\n\r\n get isDev(): boolean {\r\n return this.configuration.resolve(\"nodeEnv\") === \"development\";\r\n }\r\n\r\n constructor(readonly configuration: Configuration, readonly translator: Translator) {\r\n\r\n }\r\n\r\n async error(error: any, req: IRequest, res: Response, next: (err?: any) => any) {\r\n const result = await this.getResult(error, req, res);\r\n if (this.isDev) {\r\n console.log(\"ERROR\", result, res.statusCode);\r\n }\r\n res.json(result);\r\n }\r\n\r\n protected async getResult(error, req: IRequest, res: Response) {\r\n\r\n const result: any = {};\r\n\r\n if (error instanceof BadRequestError) {\r\n res.status(400);\r\n if (error.constructor.name === \"ParamRequiredError\") {\r\n result.message = await this.translator.getTranslation(req.language, \"message.parameter-required.error\");\r\n result.param = error.message;\r\n } else {\r\n result.message = error.message || await this.translator.getTranslation(req.language, \"message.form-validation.error\");\r\n result.errors = error[\"errors\"];\r\n if (this.isDev) {\r\n result.stack = error.stack;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n res.status(error.httpCode || 500);\r\n\r\n if (error instanceof Error) {\r\n if (error.name) {\r\n result.name = error.name;\r\n }\r\n if (error.message) {\r\n result.message = error.message;\r\n }\r\n if (error.stack && this.isDev) {\r\n result.stack = error.stack;\r\n }\r\n } else if (typeof error === \"string\") {\r\n result.message = error;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","import {inject, injectable} from \"tsyringe\";\r\nimport {ExpressMiddlewareInterface, Middleware} from \"routing-controllers\";\r\nimport {DI_CONTAINER, IRequest} from \"../common-types\";\r\nimport {DependencyContainer} from \"tsyringe\";\r\n\r\n@injectable()\r\n@Middleware({ type: \"before\" })\r\nexport class ContainerMiddleware implements ExpressMiddlewareInterface {\r\n\r\n constructor(@inject(DI_CONTAINER) readonly container: DependencyContainer) {\r\n\r\n }\r\n\r\n use(request: IRequest, response: any, next: (err?: any) => any): void {\r\n request.container = this.container;\r\n next(null);\r\n }\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {ExpressMiddlewareInterface, Middleware} from \"routing-controllers\";\r\nimport {IRequest} from \"../common-types\";\r\nimport {Configuration} from \"../services/configuration\";\r\n\r\n@injectable()\r\n@Middleware({ type: \"before\" })\r\nexport class LanguageMiddleware implements ExpressMiddlewareInterface {\r\n\r\n constructor(readonly config: Configuration) {\r\n\r\n }\r\n\r\n use(request: IRequest, response: any, next: (err?: any) => any): void {\r\n request.language = request.query.language as string || this.config.resolve(\"defaultLanguage\");\r\n next(null);\r\n }\r\n\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {ExpressMiddlewareInterface, Middleware} from \"routing-controllers\";\r\nimport moment from \"moment\";\r\nimport {IRequest} from \"../common-types\";\r\n\r\n@injectable()\r\n@Middleware({ type: \"after\" })\r\nexport class RequestEndedMiddleware implements ExpressMiddlewareInterface {\r\n\r\n use(request: IRequest, response: any, next: (err?: any) => any): void {\r\n request.ended = moment();\r\n const diff = request.ended.diff(request.started);\r\n const duration = moment.duration(diff);\r\n console.log(`Request '${request.id}' ended at: ${request.ended.format(\"YYYY-MM-DD HH:mm:ss\")} [${request.method}] ${request.url}`);\r\n console.log(`Request '${request.id}' lasted: ${duration.asMilliseconds()}ms`)\r\n next(null);\r\n }\r\n\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {ExpressMiddlewareInterface, Middleware} from \"routing-controllers\";\r\nimport {ObjectId} from \"bson\";\r\nimport moment from \"moment\";\r\nimport {IRequest} from \"../common-types\";\r\n\r\n@injectable()\r\n@Middleware({ type: \"before\" })\r\nexport class RequestStartedMiddleware implements ExpressMiddlewareInterface {\r\n\r\n use(request: IRequest, response: any, next: (err?: any) => any): void {\r\n request.id = new ObjectId().toHexString();\r\n request.started = moment();\r\n console.log(`Request '${request.id}' started at: ${request.started.format(\"YYYY-MM-DD HH:mm:ss\")} [${request.method}] ${request.url}`);\r\n next(null);\r\n }\r\n\r\n}\r\n","import {inject, injectable} from \"tsyringe\";\r\nimport {ConnectedSocket, MessageBody, OnMessage, SocketController,} from \"socket-controllers\";\r\nimport {Server} from \"socket.io\";\r\nimport {IClientSocket, SOCKET_SERVER} from \"../common-types\";\r\nimport {broadcast} from \"../utils\";\r\nimport {Progresses} from \"../services/progresses\";\r\n\r\n@injectable()\r\n@SocketController()\r\nexport class ProgressController {\r\n\r\n constructor(readonly progresses: Progresses, @inject(SOCKET_SERVER) readonly socketServer: Server) {\r\n }\r\n\r\n @OnMessage(\"background-progress\")\r\n async advanceProgress(@ConnectedSocket() client: IClientSocket, @MessageBody() progressId: string) {\r\n const progress = await this.progresses.get(progressId);\r\n if (!progress) return;\r\n const json = progress.toJSON();\r\n broadcast(this.socketServer, c => {\r\n if (c.interestedProgresses instanceof Set && c.interestedProgresses.has(progressId)) {\r\n client.emit(\"background-progress-changed\", json);\r\n }\r\n });\r\n console.log(`progress changed: ${client.id}, data: ${JSON.stringify(json)}`);\r\n }\r\n\r\n @OnMessage(\"background-progress-interest\")\r\n async setProgressInterest(@ConnectedSocket() client: IClientSocket, @MessageBody() progressId: string) {\r\n const progress = await this.progresses.get(progressId);\r\n if (!progress) return;\r\n const json = progress.toJSON();\r\n client.interestedProgresses = client.interestedProgresses || new Set<string>();\r\n if (client.interestedProgresses.has(progressId)) return;\r\n client.interestedProgresses.add(progressId);\r\n client.emit(\"background-progress-changed\", json);\r\n console.log(`progress interest added: ${client.id}, data: ${JSON.stringify(json)}`);\r\n }\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {Middleware, MiddlewareInterface} from \"socket-controllers\";\r\n\r\n@injectable()\r\n@Middleware()\r\nexport class CompressionMiddleware implements MiddlewareInterface {\r\n\r\n use(socket: any, next: (err?: any) => any) {\r\n next();\r\n }\r\n}\r\n","import {existsSync} from \"fs\";\r\nimport {resolve} from \"path\";\r\nimport {static as serveStatic} from \"express\";\r\nimport {EXPRESS, IDependencyContainer} from \"./common-types\";\r\nimport {EndpointProvider} from \"./services/endpoint-provider\";\r\n\r\nexport async function setupStatic(rootFolder: string, container: IDependencyContainer): Promise<any> {\r\n\r\n const browserFolder = resolve(rootFolder || __dirname, `public_html`);\r\n const app = container.get(EXPRESS);\r\n const ep = container.get(EndpointProvider);\r\n\r\n console.log(browserFolder, existsSync(browserFolder));\r\n\r\n if (existsSync(browserFolder)) {\r\n console.log(`public_html exists. setting up static files serving...`);\r\n app.use(serveStatic(browserFolder, {\r\n maxAge: \"1y\"\r\n }));\r\n } else {\r\n console.log(`public_html does not exist on path: \"${browserFolder}\"`);\r\n }\r\n\r\n await ep.configure(app);\r\n}\r\n","import {RefType, Types} from \"mongoose\";\r\nimport {DocumentType, getModelForClass, ReturnModelType} from \"@typegoose/typegoose\";\r\nimport {Constructor} from \"../common-types\";\r\n\r\nexport abstract class BaseDoc<IDType extends RefType = Types.ObjectId> {\r\n\r\n _id?: IDType;\r\n\r\n /**\r\n * This getter/setter doesn't exist if \"schemaOptions.id\" being set to \"false\"\r\n */\r\n id?: string;\r\n\r\n /**\r\n * This getter doesn't exist if \"schemaOptions.timestamps\" being set to \"false\"\r\n */\r\n createdAt?: Date;\r\n\r\n /**\r\n * This getter doesn't exist if \"schemaOptions.timestamps\" being set to \"false\"\r\n */\r\n updatedAt?: Date;\r\n\r\n /**\r\n * Returns the Document as JSON\r\n */\r\n toJSON?(): any;\r\n\r\n /**\r\n * Returns the Document as an Object\r\n */\r\n toObject?(): any;\r\n\r\n /**\r\n * Casts this to DocumentType<this> to allow using document methods in get/set-s\r\n */\r\n cast(): DocumentType<this> {\r\n return this as any;\r\n }\r\n\r\n /**\r\n * Gets a pre-compiled model from typegoose cache by its class type\r\n * @param type\r\n */\r\n model<T extends Constructor<any>>(type: T): ReturnModelType<T> {\r\n return getModelForClass(type);\r\n }\r\n}\r\n\r\n// @ts-ignore\r\nexport type PrimitiveArray<T> = Types.Array<T>;\r\n\r\n// @ts-ignore\r\nexport const PrimitiveArray = Types.Array;\r\n\r\nexport type DocumentArray<T extends BaseDoc> = Types.DocumentArray<DocumentType<T>>;\r\n\r\nexport const DocumentArray = Types.DocumentArray;\r\n","import {IDependencyContainer, ITree} from \"../common-types\";\r\nimport {isString} from \"../utils\";\r\n\r\nexport class Tree implements ITree {\r\n\r\n protected map: Map<string, Tree>;\r\n\r\n protected get parentTree(): ITree {\r\n return this.container.parent.tree;\r\n }\r\n\r\n constructor(protected container: IDependencyContainer, protected exists: boolean, readonly path: string) {\r\n this.map = new Map<string, Tree>();\r\n }\r\n\r\n resolveService(): any {\r\n return !this.exists ? null : this.container.resolve(this.path);\r\n }\r\n\r\n resolveLeaves(): Map<string, ITree> {\r\n let map: Map<string, ITree>;\r\n try {\r\n const parentTree = this.parentTree.resolvePath(this.path);\r\n map = parentTree.resolveLeaves();\r\n } catch (e) {\r\n map = new Map<string, ITree>();\r\n }\r\n const visitor = (treeMap: Map<string, Tree>, path: string) => {\r\n treeMap.forEach((tree, key) => {\r\n const subKey = !path ? key : `${path}.${key}`;\r\n if (tree.map.size == 0) {\r\n map.set(subKey, tree);\r\n return;\r\n }\r\n visitor(tree.map, subKey);\r\n });\r\n };\r\n visitor(this.map, \"\");\r\n return map;\r\n }\r\n\r\n resolveServices(): Map<string, any> {\r\n const map = new Map<string, any>();\r\n this.resolveLeaves().forEach((leaf, key) => {\r\n map.set(key, leaf.resolveService());\r\n });\r\n return map;\r\n }\r\n\r\n resolveAncestor(path: string): ITree {\r\n if (!isString(path) || path.length == 0) {\r\n return this;\r\n }\r\n let parentTree: ITree;\r\n try {\r\n parentTree = this.parentTree.resolvePath(this.path);\r\n parentTree = parentTree.resolveAncestor(path);\r\n } catch (e) {\r\n parentTree = new Tree(this.container, false, \"\");\r\n }\r\n const pathParts = path.split(\".\");\r\n let tree: Tree = this;\r\n let previousTree: Tree = this;\r\n for (let part of pathParts) {\r\n tree = tree.map.get(part);\r\n if (!tree) {\r\n if (previousTree == this) {\r\n if (parentTree.path.length > 0) {\r\n return parentTree;\r\n }\r\n throw new Error(`Ancestor '${path}' not found in current tree: '${this.path}'`);\r\n }\r\n return previousTree;\r\n }\r\n previousTree = tree;\r\n }\r\n return parentTree.path.length > previousTree.path.length\r\n ? parentTree : previousTree;\r\n }\r\n\r\n resolvePath(path: string, throwError: boolean = true): ITree {\r\n const absolutePath = !this.path ? path : `${this.path}.${path}`;\r\n let tree: ITree = new Tree(this.container, false, absolutePath);\r\n try {\r\n tree = this.resolveAncestor(path);\r\n } catch (e) {\r\n if (throwError) {\r\n throw new Error(`Path '${path}' not found in current tree: '${this.path}'`);\r\n }\r\n return tree;\r\n }\r\n if (tree.path !== absolutePath) {\r\n if (throwError) {\r\n throw new Error(`Path '${path}' not found in current tree: '${this.path}'`);\r\n }\r\n return tree;\r\n }\r\n return tree;\r\n }\r\n\r\n addPath(path: string): this {\r\n if (!isString(path) || path.length == 0) {\r\n return this;\r\n }\r\n const pathParts = path.split(\".\");\r\n const maxIx = pathParts.length - 1;\r\n let tree: Tree = this;\r\n path = this.path;\r\n for (let ix = 0; ix <= maxIx; ix++) {\r\n const part = pathParts[ix];\r\n if (!tree.map.has(part)) {\r\n tree.map.set(part, new Tree(this.container, false, !path ? part : `${path}.${part}`))\r\n }\r\n tree = tree.map.get(part);\r\n tree.exists = tree.exists || ix == maxIx;\r\n path = tree.path;\r\n }\r\n return this;\r\n }\r\n}\r\n","import {\r\n ClassProvider,\r\n DependencyContainer,\r\n Frequency,\r\n InjectionToken,\r\n isFactoryProvider,\r\n RegistrationOptions,\r\n TokenProvider,\r\n ValueProvider\r\n} from \"tsyringe\";\r\nimport {FactoryProvider, IDependencyContainer, ITree, Type} from \"../common-types\";\r\nimport {Tree} from \"./tree\";\r\nimport {isString} from \"../utils\";\r\n\r\ninterface PreResolutionInterceptorCallback<T = any> {\r\n (token: InjectionToken<T>, resolutionType: \"Single\" | \"All\"): void;\r\n}\r\n\r\ninterface PostResolutionInterceptorCallback<T = any> {\r\n (token: InjectionToken<T>, result: T | T[], resolutionType: \"Single\" | \"All\"): void;\r\n}\r\n\r\nexport class DiContainer implements IDependencyContainer {\r\n\r\n get registeredTokens(): ReadonlyArray<InjectionToken> {\r\n return (this.parent?.registeredTokens || []).concat(this.tokens);\r\n }\r\n\r\n get tree(): ITree {\r\n return this.root;\r\n }\r\n\r\n protected tokens: Array<InjectionToken>;\r\n protected tokenSet: Set<InjectionToken>;\r\n protected root: Tree;\r\n\r\n constructor(protected container: DependencyContainer, readonly parent: IDependencyContainer = null) {\r\n container[\"wrapperContainer\"] = this;\r\n this.tokens = [];\r\n this.tokenSet = new Set<InjectionToken>();\r\n this.root = new Tree(this, false, \"\");\r\n }\r\n\r\n beforeResolution<T>(token: InjectionToken<T>, callback: PreResolutionInterceptorCallback<T>, options?: { frequency: Frequency }): void {\r\n this.container.beforeResolution(token, callback, options);\r\n }\r\n\r\n afterResolution<T>(token: InjectionToken<T>, callback: PostResolutionInterceptorCallback<T>, options?: { frequency: Frequency }): void {\r\n this.container.afterResolution(token, callback, options);\r\n }\r\n\r\n clearInstances(): void {\r\n this.container.clearInstances();\r\n }\r\n\r\n createChildContainer(): IDependencyContainer {\r\n return new DiContainer(this.container.createChildContainer(), this);\r\n }\r\n\r\n isRegistered<T>(token: InjectionToken<T>, recursive?: boolean): boolean {\r\n return this.container.isRegistered(token, recursive);\r\n }\r\n\r\n register<T>(token: InjectionToken<T>, provider: ValueProvider<T>): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: FactoryProvider<T>): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: TokenProvider<T>, options?: RegistrationOptions): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: ClassProvider<T>, options?: RegistrationOptions): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: Type<T>, options?: RegistrationOptions): IDependencyContainer;\r\n register(token, provider, options?: RegistrationOptions): IDependencyContainer {\r\n if (isFactoryProvider(provider)) {\r\n this.container.register(token, {\r\n useFactory: dc => {\r\n return provider.useFactory(dc[\"wrapperContainer\"]);\r\n }\r\n });\r\n return this.addToken(token);\r\n }\r\n this.container.register(token, provider);\r\n return this.addToken(token);\r\n }\r\n\r\n registerInstance<T>(token: InjectionToken<T>, instance: T): IDependencyContainer {\r\n this.container.registerInstance(token, instance);\r\n return this.addToken(token);\r\n }\r\n\r\n registerSingleton<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer;\r\n registerSingleton<T>(token: Type<T>): IDependencyContainer;\r\n registerSingleton(from, to?): IDependencyContainer {\r\n this.container.registerSingleton(from, to);\r\n return this.addToken(from);\r\n }\r\n\r\n registerType<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer {\r\n this.container.registerType(from, to);\r\n return this.addToken(from);\r\n }\r\n\r\n reset(): void {\r\n this.tokens = [];\r\n this.tokenSet = new Set<InjectionToken>();\r\n this.container.reset();\r\n }\r\n\r\n resolve<T>(token: InjectionToken<T>): T {\r\n return this.container.resolve(token);\r\n }\r\n\r\n resolveAll<T>(token: InjectionToken<T>): T[] {\r\n return this.container.resolveAll(token);\r\n }\r\n\r\n get<T>(token: InjectionToken<T>): T {\r\n return this.container.resolve(token);\r\n }\r\n\r\n protected addToken<T>(token: InjectionToken<T>): this {\r\n if (this.tokenSet.has(token)) return this;\r\n this.tokenSet.add(token);\r\n this.tokens.push(token);\r\n if (isString(token)) {\r\n this.root.addPath(token);\r\n }\r\n return this;\r\n }\r\n}\r\n","import {IAsset, IJob, IMessageBridge, IProgress} from \"../common-types\";\r\nimport {Assets} from \"../services/assets\";\r\nimport {LazyAssets} from \"../services/lazy-assets\";\r\nimport {AssetResolver} from \"../services/asset-resolver\";\r\nimport {Progresses} from \"../services/progresses\";\r\n\r\nexport abstract class LazyAssetGenerator implements IJob {\r\n\r\n get assets(): Assets {\r\n return this.assetResolver.assets;\r\n }\r\n\r\n get lazyAssets(): LazyAssets {\r\n return this.assetResolver.lazyAssets;\r\n }\r\n\r\n protected constructor(protected assetResolver: AssetResolver, protected progresses: Progresses, protected lazyId: string) {\r\n }\r\n\r\n abstract generate(progress: IProgress, messaging?: IMessageBridge): Promise<IAsset>;\r\n\r\n async process(messaging: IMessageBridge): Promise<any> {\r\n const lazyAsset = await this.lazyAssets.read(this.lazyId);\r\n let progress = await this.progresses.get(lazyAsset.progressId);\r\n if (!progress || progress.canceled) return null;\r\n progress.setMessageBridge(messaging);\r\n try {\r\n const asset = await this.generate(progress, messaging);\r\n progress = await progress.load();\r\n if (!progress || progress.canceled) return null;\r\n await lazyAsset.writeAsset(asset);\r\n } catch (e) {\r\n await progress.setError(e.message || e);\r\n throw e;\r\n }\r\n if (progress.remaining > 0) {\r\n await progress.advance(progress.remaining);\r\n }\r\n }\r\n}\r\n","import {Document, FilterQuery, model, Model, PipelineStage, Query, Schema, Types} from \"mongoose\";\r\nimport {getValue as getMongoValue, setValue as setMongoValue} from \"mongoose/lib/utils\";\r\nimport {DocumentType, ReturnModelType} from \"@typegoose/typegoose\";\r\nimport {Action, BadRequestError, createParamDecorator, HttpError} from \"routing-controllers\";\r\nimport {InjectionToken} from \"tsyringe\";\r\nimport {\r\n IMatchField,\r\n InferGeneric,\r\n IPaginationBase,\r\n IPaginationParams,\r\n IProjectOptions,\r\n IRequest,\r\n IUnwindOptions,\r\n Type\r\n} from \"../common-types\";\r\nimport {diContainers, isArray, isFunction, isObject, isString, valueToPromise} from \"../utils\";\r\n\r\nconst pluginsKey = \"typegoose:plugins\";\r\n\r\ninterface IPluginWithOptions {\r\n mongoosePlugin: Function;\r\n options: any;\r\n}\r\n\r\n/**\r\n * A mongoose/typegoose plugin to inject services from the main di container to a schema as virtuals\r\n * @param schema\r\n * @param services\r\n */\r\nexport function injectServices(schema: Schema<any>, services?: { [prop: string]: InjectionToken<any> }): void {\r\n const serviceMap: { [prop: string]: any } = {};\r\n if (!isObject(services)) {\r\n throw new Error(`services object should be defined to inject services to schema!`)\r\n }\r\n Object.keys(services).forEach(prop => {\r\n schema\r\n .virtual(prop)\r\n .get(() => {\r\n const diContainer = diContainers.appContainer;\r\n serviceMap[prop] = serviceMap[prop] || (!diContainer ? {} : diContainer.resolve(services[prop]));\r\n return serviceMap[prop];\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Decorates a property to inject a service with the help of the injectServices mongoose/typegoose plugin\r\n * @param token optional InjectionToken to use\r\n * @return PropertyDecorator\r\n */\r\nexport function service(token?: InjectionToken<any>): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n const propertyType = Reflect.getOwnMetadata(\"design:type\", target, propertyKey);\r\n const plugins = Array.from(Reflect.getMetadata(pluginsKey, target.constructor) ?? []) as IPluginWithOptions[];\r\n let plugin = plugins.find(t => t.mongoosePlugin === injectServices);\r\n if (!plugin) {\r\n plugin = { mongoosePlugin: injectServices, options: {} };\r\n plugins.push(plugin);\r\n }\r\n plugin.options = Object.assign(plugin.options || {}, {[propertyKey]: token ?? propertyType});\r\n Reflect.defineMetadata(pluginsKey, plugins, target.constructor);\r\n };\r\n}\r\n\r\n/**\r\n * Paginate using a typegoose model using a simple where query and pagination params\r\n * @param model Typegoose model\r\n * @param where Simple query to filter the results\r\n * @param params Pagination params\r\n */\r\nexport function paginate<T extends Type<any>, U = InferGeneric<T>>(model: ReturnModelType<T>, where: FilterQuery<DocumentType<U>>, params: IPaginationParams): Promise<IPaginationBase<DocumentType<U>>> {\r\n return model.countDocuments(where).then(count => {\r\n let query: Query<any, any> = model.find(where);\r\n if (isString(params.sort)) {\r\n query = query.sort(params.sort);\r\n }\r\n if (isArray(params.populate)) {\r\n params.populate.forEach(field => {\r\n query = query.populate(field);\r\n });\r\n }\r\n return (params.limit > 0 ? query.skip(params.page * params.limit).limit(params.limit) : query).then(items => {\r\n const meta = {total: count};\r\n return {count, items, meta};\r\n });\r\n });\r\n}\r\n\r\nexport function lookupStages(from: string, localField: string, as: string = null, foreignField: string = \"_id\", shouldUnwind: boolean = true): [PipelineStage.Lookup, PipelineStage.Unwind] {\r\n as = as || localField.replace(\"Id\", \"\");\r\n const stages: [PipelineStage.Lookup, PipelineStage.Unwind] = [\r\n {\r\n $lookup: {\r\n from,\r\n localField,\r\n foreignField,\r\n as\r\n }\r\n },\r\n {\r\n $unwind: {\r\n path: `$${as}`,\r\n preserveNullAndEmptyArrays: true\r\n }\r\n }\r\n ];\r\n if (!shouldUnwind) {\r\n stages.splice(1, 1);\r\n }\r\n return stages;\r\n}\r\n\r\nexport function letsLookupStage(from: string, pipeline: Exclude<PipelineStage, PipelineStage.Merge | PipelineStage.Out | PipelineStage.Search>[], as: string = null, letFields: any = null): PipelineStage.Lookup {\r\n as = as || from;\r\n letFields = letFields || {id: \"$_id\"};\r\n return {\r\n $lookup: {\r\n from,\r\n let: letFields,\r\n pipeline,\r\n as\r\n }\r\n };\r\n}\r\n\r\nexport function matchStage(match: FilterQuery<any>): PipelineStage.Match {\r\n return {$match: match};\r\n}\r\n\r\nexport function matchField(field: string, filter: any, when: boolean): IMatchField {\r\n return {field, filter, when};\r\n}\r\n\r\nexport function matchFieldStages(...fields: IMatchField[]): ReadonlyArray<PipelineStage.Match> {\r\n const match = {};\r\n fields.forEach(field => {\r\n if (field.when) {\r\n match[field.field] = field.filter;\r\n }\r\n });\r\n return Object.keys(match).length > 0 ? [matchStage(match)] : [];\r\n}\r\n\r\nexport function projectStage(fields: IProjectOptions): PipelineStage.Project {\r\n return {$project: fields};\r\n}\r\n\r\nexport function unwindStage(fieldOrOpts: string | IUnwindOptions): PipelineStage.Unwind {\r\n return {$unwind: fieldOrOpts};\r\n}\r\n\r\nexport function hydratePopulated<T extends Document>(modelType: Model<T>, json: any): T {\r\n let object = modelType.hydrate(json);\r\n\r\n for (const [path, obj] of Object.entries(modelType.schema.obj)) {\r\n let {ref, type} = obj as any;\r\n if (Array.isArray(type) && type.length > 0) {\r\n ref = type[0].ref;\r\n }\r\n if (!ref) continue;\r\n const value = getMongoValue(path, json);\r\n const hydrateVal = val => {\r\n if (val == null || val instanceof Types.ObjectId) return val;\r\n return hydratePopulated(model(ref) as any, val);\r\n };\r\n if (Array.isArray(value)) {\r\n setMongoValue(path, value.map(hydrateVal), object);\r\n continue;\r\n }\r\n setMongoValue(path, hydrateVal(value), object);\r\n }\r\n\r\n return object;\r\n\r\n}\r\n\r\nexport async function paginateAggregations<T extends Type<any>, U = InferGeneric<T>>(model: ReturnModelType<T>, aggregations: PipelineStage[], params: IPaginationParams, metaProjection: any = {}): Promise<IPaginationBase<DocumentType<U>>> {\r\n const sortField = !isString(params.sort) || !params.sort ? null : (params.sort.startsWith(\"-\") ? params.sort.substr(1) : params.sort);\r\n const sortAggregation: PipelineStage.Sort[] = !sortField ? [] : [{\r\n $sort: {[sortField]: sortField == params.sort ? 1 : -1}\r\n }];\r\n const result = await model.aggregate([\r\n ...aggregations,\r\n ...sortAggregation,\r\n {\r\n $group: {\r\n _id: \"results\",\r\n result: {$push: \"$$CURRENT\"}\r\n }\r\n },\r\n {\r\n $project: {\r\n _id: 0,\r\n items: params.limit > 0 ? {$slice: [\"$result\", params.page * params.limit, params.limit]} : \"$result\",\r\n count: {$size: \"$result\"},\r\n meta: {\r\n total: {$size: \"$result\"},\r\n ...metaProjection\r\n }\r\n }\r\n }\r\n ]);\r\n const pagination = result[0] as IPaginationBase<DocumentType<U>>;\r\n if (!pagination) {\r\n return {items: [], count: 0, meta: {total: 0}};\r\n }\r\n pagination.items = pagination.items.map(i => hydratePopulated(model, i) as any);\r\n return pagination;\r\n}\r\n\r\nexport function ResolveEntity<T extends Type<any>, U = InferGeneric<T>>(model: ReturnModelType<T>, extraCheck?: (query: Query<DocumentType<U>, any>, action: Action) => Promise<DocumentType<U>>): ParameterDecorator {\r\n const modelName = model.modelName;\r\n const paramName = modelName.toLowerCase();\r\n return createParamDecorator({\r\n required: false,\r\n value: async action => {\r\n const req = action.request as IRequest;\r\n const token = req.header(`x-${paramName}-token`);\r\n const id = req.params[`${paramName}Id`] as string;\r\n if (!id && !token) {\r\n throw new BadRequestError(`${modelName} id or token should be defined!`);\r\n }\r\n const query = !token\r\n ? model.findById(id)\r\n : model.findOne({token} as any);\r\n let doc: Document = null;\r\n if (isFunction(extraCheck)) {\r\n try {\r\n doc = await valueToPromise(extraCheck(query, action));\r\n } catch (e) {\r\n throw new BadRequestError(`${modelName} check error: ${e.message || e}`);\r\n }\r\n } else {\r\n doc = await query;\r\n }\r\n if (!doc) {\r\n throw new HttpError(404, !token\r\n ? `${modelName} could not be found with id: ${id}`\r\n : `${modelName} could not be found with token: ${token}`);\r\n }\r\n action.request[paramName] = doc;\r\n return doc;\r\n }\r\n });\r\n}\r\n","import {join} from \"path\";\r\nimport {json} from \"body-parser\";\r\nimport {verify} from \"jsonwebtoken\";\r\nimport {container, DependencyContainer} from \"tsyringe\";\r\nimport {Action, HttpError, useContainer as useRoutingContainer, useExpressServer} from \"routing-controllers\";\r\nimport {useContainer as useSocketContainer, useSocketServer} from \"socket-controllers\";\r\n\r\nimport {getApiDocs} from \"./rest-openapi\";\r\n\r\nimport {\r\n DI_CONTAINER,\r\n EXPRESS,\r\n FIXTURE,\r\n HTTP_SERVER,\r\n IBackendConfig,\r\n IDependencyContainer,\r\n IPaginationParams,\r\n IRequest,\r\n IUser,\r\n JOB,\r\n Parameter,\r\n PARAMETER,\r\n Provider,\r\n SOCKET_SERVER,\r\n Type\r\n} from \"./common-types\";\r\n\r\nimport {AssetProcessor} from \"./services/asset-processor\";\r\nimport {AssetResolver} from \"./services/asset-resolver\";\r\nimport {Assets} from \"./services/assets\";\r\nimport {BackendProvider} from \"./services/backend-provider\";\r\nimport {Cache} from \"./services/cache\";\r\nimport {CacheProcessor} from \"./services/cache-processor\";\r\nimport {Configuration} from \"./services/configuration\";\r\nimport {EndpointProvider} from \"./services/endpoint-provider\";\r\nimport {Fixtures} from \"./services/fixtures\";\r\nimport {Gallery} from \"./services/gallery\";\r\nimport {GalleryCache} from \"./services/gallery-cache\";\r\nimport {IdGenerator} from \"./services/id-generator\";\r\nimport {JobManager} from \"./services/job-manager\";\r\nimport {LazyAssets} from \"./services/lazy-assets\";\r\nimport {MailSender} from \"./services/mail-sender\";\r\nimport {MemoryCache} from \"./services/memory-cache\";\r\nimport {MongoConnector} from \"./services/mongo-connector\";\r\nimport {Progresses} from \"./services/progresses\";\r\nimport {TemplateRenderer} from \"./services/template-renderer\";\r\nimport {TranslationProvider} from \"./services/translation-provider\";\r\nimport {Translator} from \"./services/translator\";\r\nimport {UserManager} from \"./services/user-manager\";\r\n\r\nimport {AssetsController} from \"./rest-controllers/assets.controller\";\r\nimport {AuthController} from \"./rest-controllers/auth.controller\";\r\nimport {GalleryController} from \"./rest-controllers/gallery.controller\";\r\nimport {ProgressesController} from \"./rest-controllers/progresses.controller\";\r\n\r\nimport {ErrorHandlerMiddleware} from \"./rest-middlewares/error-handler.middleware\";\r\nimport {ContainerMiddleware} from \"./rest-middlewares/container.middleware\";\r\nimport {LanguageMiddleware} from \"./rest-middlewares/language.middleware\";\r\nimport {RequestEndedMiddleware} from \"./rest-middlewares/request-ended.middleware\";\r\nimport {RequestStartedMiddleware} from \"./rest-middlewares/request-started.middleware\";\r\n\r\nimport {ProgressController} from \"./socket-controllers/progress.controller\";\r\n\r\nimport {CompressionMiddleware} from \"./socket-middlewares/compression.middleware\";\r\nimport {diContainers, isFunction, isString, isType, valueToPromise} from \"./utils\";\r\nimport {setupStatic} from \"./static\";\r\n\r\nexport {\r\n FilterPredicate,\r\n isNullOrUndefined,\r\n isDefined,\r\n getType,\r\n isObject,\r\n isArray,\r\n isBoolean,\r\n isDate,\r\n isPrimitive,\r\n isString,\r\n isFunction,\r\n isConstructor,\r\n isType,\r\n isInterface,\r\n ucFirst,\r\n lcFirst,\r\n isObjectId,\r\n firstItem,\r\n lastItem,\r\n regroup,\r\n uniqueItems,\r\n getValue,\r\n groupBy,\r\n convertValue,\r\n toImage,\r\n bufferToStream,\r\n streamToBuffer,\r\n copyStream,\r\n mkdirRecursive,\r\n deleteFile,\r\n readFile,\r\n readAndDeleteFile,\r\n writeFile,\r\n valueToPromise,\r\n promiseTimeout,\r\n getConstructorName,\r\n getFunctionParams,\r\n getFileName,\r\n getExtension,\r\n idToString,\r\n createTransformer,\r\n broadcast,\r\n rand,\r\n random,\r\n multiSubscription,\r\n observableFromFunction,\r\n padLeft,\r\n padRight,\r\n deleteFromBucket,\r\n filter,\r\n copy,\r\n assign,\r\n md5,\r\n runCommand,\r\n ConsoleColor,\r\n IJsonColors,\r\n colorize,\r\n jsonHighlight,\r\n replaceSpecialChars\r\n} from \"./utils\";\r\n\r\nexport {IsFile, IsObjectId} from \"./validators\";\r\n\r\nexport {\r\n FIXTURE,\r\n JOB,\r\n EXPRESS,\r\n HTTP_SERVER,\r\n SOCKET_SERVER,\r\n PARAMETER,\r\n DI_CONTAINER,\r\n Type,\r\n FactoryProvider,\r\n IDependencyContainer,\r\n ClassBasedProvider,\r\n ValueBasedProvider,\r\n FactoryBasedProvider,\r\n TokenBasedProvider,\r\n SyringeProvider,\r\n Provider,\r\n Constructor,\r\n InferGeneric,\r\n PickMatching,\r\n OmitFirstArg,\r\n IMatchField,\r\n IProjectOptions,\r\n IUnwindOptions,\r\n IFixture,\r\n SchemaConverter,\r\n ParamResolver,\r\n Parameter,\r\n SocketParam,\r\n SocketParams,\r\n ISocketMessage,\r\n IMessageBridge,\r\n IJob,\r\n IJobTask,\r\n JobParams,\r\n JobScheduleRange,\r\n JobScheduleTime,\r\n IProgress,\r\n IAssetCropInfo,\r\n IAssetMeta,\r\n IAssetImageParams,\r\n IAsset,\r\n ILazyAsset,\r\n IUser,\r\n IClientSocket,\r\n IRequestBase,\r\n IRequest,\r\n IGalleryImage,\r\n IGallerySize,\r\n IGalleryImageHandler,\r\n ITranslations,\r\n IPaginationMeta,\r\n IPaginationBase,\r\n IPagination,\r\n IPaginationParams,\r\n FontFormat,\r\n IFileType,\r\n IBackendConfig\r\n} from \"./common-types\";\r\n\r\nexport {AssetProcessor} from \"./services/asset-processor\";\r\nexport {AssetResolver} from \"./services/asset-resolver\";\r\nexport {Assets} from \"./services/assets\";\r\nexport {BackendProvider} from \"./services/backend-provider\";\r\nexport {Cache} from \"./services/cache\";\r\nexport {CacheProcessor} from \"./services/cache-processor\";\r\nexport {Configuration} from \"./services/configuration\";\r\nexport {EndpointProvider} from \"./services/endpoint-provider\";\r\nexport {Fixtures} from \"./services/fixtures\";\r\nexport {Gallery} from \"./services/gallery\";\r\nexport {GalleryCache} from \"./services/gallery-cache\";\r\nexport {IdGenerator} from \"./services/id-generator\";\r\nexport {JobManager} from \"./services/job-manager\";\r\nexport {LazyAssets} from \"./services/lazy-assets\";\r\nexport {MailSender} from \"./services/mail-sender\";\r\nexport {MemoryCache} from \"./services/memory-cache\";\r\nexport {MongoConnector} from \"./services/mongo-connector\";\r\nexport {Progresses} from \"./services/progresses\";\r\nexport {TemplateRenderer} from \"./services/template-renderer\";\r\nexport {TranslationProvider} from \"./services/translation-provider\";\r\nexport {Translator} from \"./services/translator\";\r\nexport {UserManager} from \"./services/user-manager\";\r\n\r\nexport {AssetImageParams} from \"./requests/asset-image-params\";\r\n\r\nexport {AuthController} from \"./rest-controllers/auth.controller\";\r\nexport {GalleryController} from \"./rest-controllers/gallery.controller\";\r\n\r\nexport {ErrorHandlerMiddleware} from \"./rest-middlewares/error-handler.middleware\";\r\nexport {LanguageMiddleware} from \"./rest-middlewares/language.middleware\";\r\n\r\nexport {BaseDoc, DocumentArray, PrimitiveArray} from \"./utilities/base-doc\";\r\nimport {DiContainer} from \"./utilities/di-container\";\r\nexport {LazyAssetGenerator} from \"./utilities/lazy-asset-generator\";\r\nexport {\r\n ResolveEntity,\r\n paginateAggregations,\r\n hydratePopulated,\r\n unwindStage,\r\n projectStage,\r\n matchFieldStages,\r\n matchField,\r\n matchStage,\r\n letsLookupStage,\r\n lookupStages,\r\n paginate,\r\n injectServices,\r\n service\r\n} from \"./utilities/mongoose\";\r\n\r\nasync function resolveUser(container: DependencyContainer, req: IRequest): Promise<IUser> {\r\n if (req.user) return req.user;\r\n const auth = req.header(\"Authorization\") || \"\";\r\n let payload = null;\r\n try {\r\n const config = container.resolve(Configuration);\r\n payload = verify(auth.split(\" \")[1], config.resolve(\"jwtSecret\")) as any;\r\n } catch (e) {\r\n throw new HttpError(401, `Authentication failed. (${e.message})`);\r\n }\r\n if (!payload) {\r\n throw new HttpError(401, `Authentication failed. (Maybe invalid token)`);\r\n }\r\n req.user = await container.resolve(UserManager).getById(payload.id);\r\n return req.user;\r\n}\r\n\r\nexport function createServices(): IDependencyContainer {\r\n // List of parameters\r\n const params = [\r\n new Parameter(\"templatesDir\", join(__dirname, \"templates\")),\r\n new Parameter(\"galleryDir\", join(__dirname, \"gallery\")),\r\n new Parameter(\"cacheDir\", join(__dirname, \"cache\")),\r\n new Parameter(\"defaultLanguage\", \"en\"),\r\n new Parameter(\"smtpHost\", \"smtp.sendgrid.net\"),\r\n new Parameter(\"smtpPort\", 587),\r\n new Parameter(\"smtpUser\", \"apikey\"),\r\n new Parameter(\"smtpPassword\", \"\"),\r\n new Parameter(\"mailSenderAddress\", \"info@stemy.hu\"),\r\n new Parameter(\"translationsTemplate\", \"https://translation.service/[lang]\"),\r\n new Parameter(\"jwtSecret\", \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9\"),\r\n new Parameter(\"mongoUri\", \"\"),\r\n new Parameter(\"mongoDb\", \"node-backend\"),\r\n new Parameter(\"mongoUser\", null),\r\n new Parameter(\"mongoPassword\", null),\r\n new Parameter(\"nodeEnv\", \"production\"),\r\n new Parameter(\"appPort\", 80),\r\n new Parameter(\"zmqPort\", 3000),\r\n new Parameter(\"zmqBackPort\", 3100),\r\n new Parameter(\"zmqRemoteHost\", \"tcp://127.0.0.1\"),\r\n new Parameter(\"isWorker\", false),\r\n new Parameter(\"mainEndpoint\", \"\"),\r\n new Parameter(\"idChars\", \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\"),\r\n new Parameter(\"idSeparator\", \"-\"),\r\n new Parameter(\"idPrefix\", \"ID-\"),\r\n new Parameter(\"idParts\", [4, 4]),\r\n new Parameter(\"jsonLimit\", \"250mb\"),\r\n new Parameter(\"jobTimeout\", 5 * 60 * 1000),\r\n new Parameter(\"cacheCollection\", \"cache\"),\r\n ];\r\n\r\n // Convert parameters to providers\r\n const paramProviders = params.map(p => {\r\n return {\r\n provide: PARAMETER,\r\n useValue: p\r\n }\r\n });\r\n\r\n // List of services\r\n const services = [\r\n AssetProcessor,\r\n AssetResolver,\r\n Assets,\r\n BackendProvider,\r\n Cache,\r\n CacheProcessor,\r\n Configuration,\r\n EndpointProvider,\r\n Fixtures,\r\n Gallery,\r\n GalleryCache,\r\n IdGenerator,\r\n JobManager,\r\n LazyAssets,\r\n MailSender,\r\n MemoryCache,\r\n MongoConnector,\r\n Progresses,\r\n TemplateRenderer,\r\n TranslationProvider,\r\n Translator,\r\n UserManager\r\n ] as Type<any>[];\r\n\r\n // Create container\r\n const diContainer = new DiContainer(container.createChildContainer());\r\n paramProviders.forEach(provider => {\r\n diContainer.register(provider.provide, provider);\r\n });\r\n services.forEach(service => {\r\n if (!container.isRegistered(service))\r\n diContainer.register(service, service);\r\n });\r\n return diContainer;\r\n}\r\n\r\nexport async function setupBackend(config: IBackendConfig, providers?: Provider<any>[], parent?: IDependencyContainer): Promise<IDependencyContainer> {\r\n\r\n providers = Array.isArray(providers) ? providers : [];\r\n parent = parent || createServices();\r\n\r\n // Create fixtures\r\n const fixtureTypes = (config.fixtures || []);\r\n const fixtureProviders = fixtureTypes.map(fixture => {\r\n return {\r\n provide: FIXTURE,\r\n useClass: fixture\r\n };\r\n });\r\n\r\n // Create params\r\n const paramProviders = (config.params || []).map(p => {\r\n return {\r\n provide: PARAMETER,\r\n useValue: p\r\n }\r\n });\r\n\r\n // Create jobs\r\n const jobProviders = (config.jobs || []).map(jobType => {\r\n return {\r\n provide: JOB,\r\n useValue: jobType\r\n };\r\n });\r\n\r\n // Setup rest API\r\n const restOptions = config.restOptions || {};\r\n restOptions.defaultErrorHandler = false;\r\n restOptions.cors = Object.assign({\r\n credentials: true,\r\n exposedHeaders: [\"content-disposition\"],\r\n origin: (origin, callback) => {\r\n callback(null, true);\r\n }\r\n }, restOptions.cors || {});\r\n restOptions.routePrefix = config.routePrefix || \"/api\";\r\n restOptions.routePrefix = restOptions.routePrefix == \"/\" ? \"\" : restOptions.routePrefix;\r\n restOptions.middlewares = [ErrorHandlerMiddleware, ContainerMiddleware, LanguageMiddleware, RequestStartedMiddleware, RequestEndedMiddleware]\r\n .concat(restOptions.middlewares as any || []);\r\n restOptions.controllers = [AssetsController, AuthController, GalleryController, ProgressesController]\r\n .concat(restOptions.controllers as any || []);\r\n\r\n // Setup socket API\r\n const socketOptions = config.socketOptions || {};\r\n socketOptions.middlewares = [CompressionMiddleware].concat(socketOptions.middlewares as any || []);\r\n socketOptions.controllers = [ProgressController].concat(socketOptions.controllers as any || []);\r\n\r\n // Create providers\r\n\r\n const allProviders: Provider<any>[] = [];\r\n\r\n // Add multi tokens to sub container\r\n [PARAMETER].forEach(provide => {\r\n const values = parent.resolveAll(provide);\r\n values.forEach(useValue => {\r\n allProviders.push({provide, useValue});\r\n });\r\n });\r\n\r\n // Add other providers\r\n allProviders.push(\r\n ...fixtureTypes,\r\n ...fixtureProviders,\r\n ...paramProviders,\r\n ...jobProviders,\r\n ...restOptions.middlewares as Type<any>[],\r\n ...restOptions.controllers as Type<any>[],\r\n ...socketOptions.middlewares as Type<any>[],\r\n ...socketOptions.controllers as Type<any>[],\r\n ...providers,\r\n {\r\n provide: EXPRESS,\r\n useFactory: (container: DependencyContainer) => {\r\n return container.resolve(BackendProvider).express;\r\n }\r\n },\r\n {\r\n provide: HTTP_SERVER,\r\n useFactory: (container: DependencyContainer) => {\r\n return container.resolve(BackendProvider).server;\r\n }\r\n },\r\n {\r\n provide: SOCKET_SERVER,\r\n useFactory: (container: DependencyContainer) => {\r\n return container.resolve(BackendProvider).io;\r\n }\r\n }\r\n )\r\n\r\n // Create DI container\r\n\r\n const diContainer = parent.createChildContainer();\r\n\r\n allProviders.forEach(provider => {\r\n if (isType(provider)) {\r\n if (container.isRegistered(provider)) return;\r\n diContainer.register(provider, provider);\r\n return;\r\n }\r\n diContainer.register(provider.provide, provider as any);\r\n });\r\n\r\n diContainer.register(DI_CONTAINER, {\r\n useValue: diContainer\r\n });\r\n\r\n diContainers.appContainer = diContainers.appContainer || diContainer;\r\n\r\n // Authentication\r\n restOptions.authorizationChecker = async (action: Action, roles: any[]) => {\r\n const user = await resolveUser(diContainer, action.request);\r\n if (!user) {\r\n throw new HttpError(401, \"Authentication failed. (User can't be found.)\");\r\n }\r\n const userRoles = Array.isArray(user.roles) ? user.roles : [];\r\n if (Array.isArray(roles) && roles.length > 0) {\r\n let lastError = null;\r\n for (let role of roles) {\r\n if (isFunction(role)) {\r\n try {\r\n if (await valueToPromise(role(user, action))) {\r\n return true;\r\n }\r\n } catch (e) {\r\n lastError = e;\r\n }\r\n }\r\n if (userRoles.indexOf(role) >= 0) return true;\r\n }\r\n const error = !lastError || (!lastError.message && !isString(lastError))\r\n ? \"User doesn't have access to this resource\"\r\n : lastError.message || lastError;\r\n throw new HttpError(401, `Authentication failed. (${error})`);\r\n }\r\n return true;\r\n };\r\n restOptions.currentUserChecker = async (action: Action) => {\r\n return resolveUser(diContainer, action.request);\r\n };\r\n\r\n // Final setup\r\n const configuration = diContainer.resolve(Configuration);\r\n const bp = diContainer.resolve(BackendProvider);\r\n\r\n if (config.restOptions) {\r\n bp.express.use(json({\r\n limit: configuration.hasParam(\"jsonLimit\")\r\n ? configuration.resolve(\"jsonLimit\")\r\n : \"250mb\"\r\n }));\r\n useRoutingContainer(diContainer);\r\n useExpressServer(bp.express, restOptions);\r\n // Setup rest ai docs\r\n bp.express.get(\"/api-docs\", (req, res) => {\r\n res.status(200).end(getApiDocs(config.customValidation));\r\n });\r\n }\r\n if (config.socketOptions) {\r\n useSocketContainer(diContainer);\r\n useSocketServer(bp.io, socketOptions);\r\n }\r\n\r\n // Connect to mongo if necessary\r\n if (configuration.hasParam(\"mongoUri\") && configuration.resolve(\"mongoUri\")) {\r\n console.log(\"Connecting to MongoDB...\");\r\n const connector = diContainer.resolve(MongoConnector);\r\n await connector.connect();\r\n console.log(\"Successfully connected to MongoDB.\");\r\n }\r\n\r\n await setupStatic(config.rootFolder, diContainer);\r\n\r\n return diContainer;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["__decorate","__param","__metadata","__awaiter","sharp","sharp_","Readable","PassThrough","mkdir","unlink","fsReadFile","path","dirname","fsWriteFile","basename","ObjectId","Types","Subscription","Observable","Subject","from","canReportError","createHash","execChildProcess","ConsoleColor","IsFile","ValidatorConstraint","IsObjectId","storage","getMetadataArgsStorage","routingControllersToSpec","validationMetadatasToSchemas","defaultMetadataStorage","ValidationTypes","fontKit_","AssetProcessor","fromBuffer","injectable","scoped","Lifecycle","Configuration","dotenv","injectAll","MongoConnector","connect","GridFSBucket","singleton","Assets","axios","JobManager","filter","map","validate","schedule","socket","inject","Progresses","LazyAssets","AssetResolver","express_","socket_io","BackendProvider","createServer","CacheProcessor","Cache","EndpointProvider","Fixtures","uuidv4","GalleryCache","Gallery","join","lstat","readdir","readFile","writeFile","access","constants","IdGenerator","TranslationProvider","Translator","TemplateRenderer","Handlebars","lstatSync","readFileSync","MailSender","createTransport","MemoryCache","UserManager","Min","Max","IsOptional","IsBoolean","HttpError","Authorized","Post","UploadedFile","Body","Get","Param","QueryParam","Res","QueryParams","Controller","AuthController","compare","UnauthorizedError","sign","CurrentUser","GalleryController","ErrorHandlerMiddleware","BadRequestError","Middleware","LanguageMiddleware","moment","OnMessage","ConnectedSocket","MessageBody","SocketController","resolve","existsSync","serveStatic","getModelForClass","isFactoryProvider","getMongoValue","model","setMongoValue","createParamDecorator","verify","container","json","useRoutingContainer","useExpressServer","useSocketContainer","useSocketServer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAA;;;;;;;;;;;;;IAagF;IAChF;IAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC,EAAA;QAC7B,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAA,EAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,EAAA,EAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtG,IAAA,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEc,SAAA,SAAS,CAAC,CAAC,EAAE,CAAC,EAAA;IAC1B,IAAA,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;IACrC,QAAA,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;IAC9F,IAAA,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,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;IACzF,CAAC;IAEM,IAAI,QAAQ,GAAG,YAAA;QAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAA;IAC3C,QAAA,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACjD,YAAA,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,SAAA;IACD,QAAA,OAAO,CAAC,CAAC;IACb,KAAC,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAA;IAEe,SAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;YAC/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;gBACpE,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;IAC1E,gBAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,SAAA;IACL,IAAA,OAAO,CAAC,CAAC;IACb,CAAC;IAEK,SAAUA,YAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAA;IACpD,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;QAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;IAAE,QAAA,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;IAC1H,QAAA,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;IAAE,YAAA,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAAE,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;IAClJ,IAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IAEe,SAAAC,SAAO,CAAC,UAAU,EAAE,SAAS,EAAA;IACzC,IAAA,OAAO,UAAU,MAAM,EAAE,GAAG,EAAA,EAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;IAEe,SAAAC,YAAU,CAAC,WAAW,EAAE,aAAa,EAAA;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;IAEK,SAAUC,WAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAA;IACvD,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;IAC5G,IAAA,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAA;IACrD,QAAA,SAAS,SAAS,CAAC,KAAK,EAAA,EAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAAE,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAAE,SAAA,EAAE;IAC3F,QAAA,SAAS,QAAQ,CAAC,KAAK,EAAA,EAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAAE,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAAE,SAAA,EAAE;IAC9F,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;IAC9G,QAAA,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,KAAC,CAAC,CAAC;IACP,CAAC;IAEe,SAAA,WAAW,CAAC,OAAO,EAAE,IAAI,EAAA;IACrC,IAAA,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAA,EAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAAE,YAAA,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,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAA,EAAa,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,SAAS,IAAI,CAAC,CAAC,EAAA,EAAI,OAAO,UAAU,CAAC,EAAI,EAAA,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClE,SAAS,IAAI,CAAC,EAAE,EAAA;IACZ,QAAA,IAAI,CAAC;IAAE,YAAA,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IAC9D,QAAA,OAAO,CAAC;gBAAE,IAAI;IACV,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;IAAE,oBAAA,OAAO,CAAC,CAAC;IAC7J,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAAE,oBAAA,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,gBAAA,QAAQ,EAAE,CAAC,CAAC,CAAC;IACT,oBAAA,KAAK,CAAC,CAAC;IAAC,oBAAA,KAAK,CAAC;4BAAE,CAAC,GAAG,EAAE,CAAC;4BAAC,MAAM;IAC9B,oBAAA,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAAC,wBAAA,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxD,oBAAA,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAAC,wBAAA,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAAC,wBAAA,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;IACjD,oBAAA,KAAK,CAAC;IAAE,wBAAA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAAC,wBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;IACjD,oBAAA;IACI,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;gCAAE,CAAC,GAAG,CAAC,CAAC;gCAAC,SAAS;IAAE,yBAAA;IAC5G,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;IAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAAC,MAAM;IAAE,yBAAA;IACtF,wBAAA,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;IAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,GAAG,EAAE,CAAC;gCAAC,MAAM;IAAE,yBAAA;4BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;IAAE,4BAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,4BAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAAC,MAAM;IAAE,yBAAA;4BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;IAAE,4BAAA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACtB,wBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;IAC9B,iBAAA;oBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9B,aAAA;IAAC,YAAA,OAAO,CAAC,EAAE;IAAE,gBAAA,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC;IAAE,aAAA;IAAS,oBAAA;IAAE,gBAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAE,aAAA;IAC1D,QAAA,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAAE,YAAA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACpF;IACL,CAAC;IAEM,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAA;QAC9D,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE;IAC/E,QAAA,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAA,EAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjE,KAAA;QACD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC,KAAK,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAA;QACtB,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEa,SAAA,YAAY,CAAC,CAAC,EAAE,CAAC,EAAA;QAC7B,KAAK,IAAI,CAAC,IAAI,CAAC;IAAE,QAAA,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAAE,YAAA,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClH,CAAC;IAEK,SAAU,QAAQ,CAAC,CAAC,EAAA;QACtB,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;IAC9E,IAAA,IAAI,CAAC;IAAE,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,IAAA,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;IAC1C,YAAA,IAAI,EAAE,YAAA;IACF,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;wBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IACnC,gBAAA,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC3C;aACJ,CAAC;IACF,IAAA,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;IAEe,SAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA;IACvB,IAAA,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAA,IAAI,CAAC,CAAC;IAAE,QAAA,OAAO,CAAC,CAAC;IACjB,IAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;YACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;IAAE,YAAA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9E,KAAA;IACD,IAAA,OAAO,KAAK,EAAE;IAAE,QAAA,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAAE,KAAA;IAC/B,YAAA;YACJ,IAAI;IACA,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAAE,gBAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,SAAA;IACO,gBAAA;IAAE,YAAA,IAAI,CAAC;oBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;IAAE,SAAA;IACpC,KAAA;IACD,IAAA,OAAO,EAAE,CAAC;IACd,CAAC;IAED;aACgB,QAAQ,GAAA;IACpB,IAAA,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;IAC9C,QAAA,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAA,OAAO,EAAE,CAAC;IACd,CAAC;IAED;aACgB,cAAc,GAAA;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;IAAE,QAAA,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAC5C,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;gBAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,IAAA,OAAO,CAAC,CAAC;IACb,CAAC;aAEe,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAA;IACxC,IAAA,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;IAAE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjF,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;IACpB,gBAAA,IAAI,CAAC,EAAE;IAAE,oBAAA,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,aAAA;IACJ,SAAA;IACD,IAAA,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEK,SAAU,OAAO,CAAC,CAAC,EAAA;QACrB,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;aAEe,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,aAAa;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IACvF,IAAA,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAC9D,IAAA,OAAO,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,YAAc,EAAA,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACtH,SAAS,IAAI,CAAC,CAAC,EAAA,EAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAA,EAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAI,EAAA,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,EAAE;IAC1I,IAAA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAE,KAAA;IAAC,IAAA,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAAE,KAAA,EAAE;QAClF,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;IACxH,IAAA,SAAS,OAAO,CAAC,KAAK,EAAA,EAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;IAClD,IAAA,SAAS,MAAM,CAAC,KAAK,EAAA,EAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;IAClD,IAAA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAA,EAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;IAAE,QAAA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;IAEK,SAAU,gBAAgB,CAAC,CAAC,EAAA;QAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,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;IAC5I,IAAA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAI,EAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAI,EAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;IAEK,SAAU,aAAa,CAAC,CAAC,EAAA;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACnC,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;QACjN,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;IAChK,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;IAChI,CAAC;IAEe,SAAA,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAA;QAC5C,IAAI,MAAM,CAAC,cAAc,EAAE;IAAE,QAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAAE,KAAA;IAAM,SAAA;IAAE,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IAAE,KAAA;IAC/G,IAAA,OAAO,MAAM,CAAC;IAClB,CAAC;IAAA,CAAC;IAEF,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAA;IACnD,IAAA,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,IAAI,UAAS,CAAC,EAAE,CAAC,EAAA;IACd,IAAA,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;IAEI,SAAU,YAAY,CAAC,GAAG,EAAA;IAC5B,IAAA,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;IAAE,QAAA,OAAO,GAAG,CAAC;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,IAAI,IAAI;YAAE,KAAK,IAAI,CAAC,IAAI,GAAG;IAAE,YAAA,IAAI,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAAE,gBAAA,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACzI,IAAA,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,IAAA,OAAO,MAAM,CAAC;IAClB,CAAC;IAEK,SAAU,eAAe,CAAC,GAAG,EAAA;IAC/B,IAAA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;IAEK,SAAU,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA;IAC3D,IAAA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;IACnL,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;IAClG,CAAC;IAEK,SAAU,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA;QAClE,IAAI,IAAI,KAAK,GAAG;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACxE,IAAA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;IAClL,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;IAC9G,CAAC;IAEe,SAAA,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAA;IACjD,IAAA,IAAI,QAAQ,KAAK,IAAI,KAAK,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,CAAC;IAAE,QAAA,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;IACzJ,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClF;;;;;;;;;;;;;;;;;;;;;ICzOA,IAAMC,OAAK,GAAGC,0BAAM,CAAC;IAMd,IAAM,YAAY,GAAkB;IACvC,IAAA,YAAY,EAAE,IAAI;KACrB,CAAC;IAII,SAAU,iBAAiB,CAAC,KAAU,EAAA;QACxC,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,WAAW,CAAC;IACxD,CAAC;IAEK,SAAU,SAAS,CAAC,KAAU,EAAA;IAChC,IAAA,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEK,SAAU,OAAO,CAAC,GAAQ,EAAA;IAC5B,IAAA,IAAM,KAAK,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7E,CAAC;IAEK,SAAU,QAAQ,CAAC,KAAU,EAAA;IAC/B,IAAA,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC;IACtC,CAAC;IAEK,SAAU,OAAO,CAAC,KAAU,EAAA;IAC9B,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEK,SAAU,SAAS,CAAC,KAAU,EAAA;IAChC,IAAA,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;IACtC,CAAC;IAEK,SAAU,MAAM,CAAC,KAAU,EAAA;QAC7B,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,WAAW,KAAK,OAAO,KAAK,CAAC,OAAO,CAAC;IACzG,CAAC;IAEK,SAAU,WAAW,CAAC,KAAU,EAAA;IAClC,IAAA,IAAM,IAAI,GAAG,OAAO,KAAK,CAAC;IAC1B,IAAA,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;IACvE,CAAC;IAEK,SAAU,QAAQ,CAAC,KAAU,EAAA;IAC/B,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;IAEK,SAAU,UAAU,CAAC,KAAU,EAAA;IACjC,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;IACvC,CAAC;IAEK,SAAU,aAAa,CAAC,KAAU,EAAA;QACpC,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IACzI,CAAC;IAEK,SAAU,MAAM,CAAC,KAAU,EAAA;IAC7B,IAAA,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEe,SAAA,WAAW,CAAC,GAAQ,EAAE,eAA0C,EAAA;;IAC5E,IAAA,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;IAAE,QAAA,OAAO,KAAK,CAAC;QAChG,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;IAC1C,QAAA,KAAkB,IAAA,MAAA,GAAA,QAAA,CAAA,IAAI,CAAA,0BAAA,EAAE,CAAA,QAAA,CAAA,IAAA,EAAA,QAAA,GAAA,MAAA,CAAA,IAAA,EAAA,EAAA;IAAnB,YAAA,IAAM,GAAG,GAAA,QAAA,CAAA,KAAA,CAAA;gBACV,IAAI,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACtC,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IACtB,gBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,gBAAA,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI;IAAE,oBAAA,OAAO,KAAK,CAAC;IAC3E,aAAA;IAAM,iBAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;IAC/D,gBAAA,OAAO,KAAK,CAAC;IAChB,aAAA;IACJ,SAAA;;;;;;;;;IACD,IAAA,OAAO,IAAI,CAAC;IAChB,CAAC;IAEK,SAAU,OAAO,CAAC,KAAa,EAAA;IACjC,IAAA,IAAI,CAAC,KAAK;IAAE,QAAA,OAAO,EAAE,CAAC;IACtB,IAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAEK,SAAU,OAAO,CAAC,KAAa,EAAA;IACjC,IAAA,IAAI,CAAC,KAAK;IAAE,QAAA,OAAO,EAAE,CAAC;IACtB,IAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAEK,SAAU,UAAU,CAAC,EAAU,EAAA;QACjC,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAEK,SAAU,SAAS,CAAI,KAAU,EAAA;IACnC,IAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAEK,SAAU,QAAQ,CAAI,KAAU,EAAA;QAClC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAEe,SAAA,OAAO,CAAI,KAAU,EAAE,UAAmC,EAAA;QACtE,IAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;IAAE,QAAA,OAAO,MAAM,CAAC;IACxD,IAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7B,IAAA,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;IACd,QAAA,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA,EAAA,CAAC,CAAhC,EAAgC,CAAC,CAAC;IACjE,QAAA,IAAI,KAAK,EAAE;IACP,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,OAAO;IACV,SAAA;IACD,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxB,KAAC,CAAC,CAAC;IACH,IAAA,OAAO,MAAM,CAAC;IAClB,CAAC;IAEK,SAAU,WAAW,CAAI,KAAU,EAAA;QACrC,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,EAAE,EAAK,EAAA,OAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA,EAAA,CAAC,CAAC;IAC5D,CAAC;IAEK,SAAU,QAAQ,CAAC,GAAQ,EAAE,GAAW,EAAE,YAAkB,EAAE,YAA6B,EAAA;IAA7B,IAAA,IAAA,YAAA,KAAA,KAAA,CAAA,EAAA,EAAA,YAA6B,GAAA,KAAA,CAAA,EAAA;IAC7F,IAAA,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;QAChB,IAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,GAAG;IACC,QAAA,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IAC/F,YAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAClB,MAAM,GAAG,EAAE,CAAC;IACf,SAAA;IAAM,aAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACrB,YAAY,GAAG,OAAO,YAAY,IAAI,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAI,MAAM,GAAA,GAAG,CAAC,EAAE,GAAI,GAAA,MAAM,GAAG,GAAA,CAAC,GAAG,YAAY,CAAC;IACxH,YAAA,GAAG,GAAG,YAAY,GAAG,GAAG,IAAI,YAAY,GAAG,YAAY,CAAC;IAC3D,SAAA;IAAM,aAAA;gBACH,MAAM,IAAI,GAAG,CAAC;IACjB,SAAA;SACJ,QAAQ,IAAI,CAAC,MAAM,EAAE;IACtB,IAAA,OAAO,GAAG,CAAC;IACf,CAAC;IAEe,SAAA,OAAO,CAAI,KAAU,EAAE,EAAuB,EAAA;IAC1D,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,EAAA;IAC1B,QAAA,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACvB,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,QAAA,OAAO,GAAG,CAAC;SACd,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;IAEe,SAAA,YAAY,CAAC,KAAU,EAAE,IAAY,EAAA;IACjD,IAAA,QAAQ,IAAI;IACR,QAAA,KAAK,SAAS;IACV,YAAA,KAAK,GAAG,OAAO,KAAK,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC;gBAC/D,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACjF,QAAA,KAAK,QAAQ;IACT,YAAA,IAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAChC,QAAA,KAAK,OAAO;gBACR,IAAI;IACA,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,aAAA;IAAC,YAAA,OAAO,CAAC,EAAE;oBACR,OAAO,CAAA,KAAG,KAAO,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,aAAA;IACR,KAAA;IACD,IAAA,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAM,aAAa,GAAG;IAClB,IAAA,CAAC,EAAE,QAAQ;IACX,IAAA,CAAC,EAAE,QAAQ;IACX,IAAA,CAAC,EAAE,QAAQ;IACX,IAAA,CAAC,EAAE,QAAQ;KACd,CAAC;IAEF,SAAS,YAAY,CAAC,QAA2C,EAAA;QAC7D,IAAI,IAAI,GAAG,QAA0B,CAAC;IACtC,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACpB,IAAI;IACA,YAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAkB,CAAC,CAAC;IACzC,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;IACR,YAAA,OAAO,IAAI,CAAC;IACf,SAAA;IACJ,KAAA;IACD,IAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC;IAAE,QAAA,OAAO,IAAI,CAAC;QACnD,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACvB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3B,CAAC;IACN,CAAC;aAEqB,OAAO,CAAwB,GAAM,EAAE,MAA0B,EAAE,IAAiB,EAAA;;;;;;;IAGtG,oBAAA,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IACtB,oBAAA,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAGZ,oBAAA,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;wBAGrC,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACxE,wBAAA,OAAA,CAAA,CAAA,aAAO,GAAG,CAAC,CAAA;IACd,qBAAA;;IAGD,oBAAA,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrF,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACnF,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBACnF,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACjE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACjE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;IAE9D,oBAAA,IAAA,EAAA,GAAG,YAAYC,eAAQ,CAAA,EAAvB,OAAuB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAAG,oBAAA,OAAA,CAAA,CAAA,YAAM,cAAc,CAAC,GAAG,CAAC,CAAA,CAAA;;IAAzB,oBAAA,EAAA,GAAA,SAAyB,CAAA;;;IAAG,oBAAA,EAAA,GAAA,GAAU,CAAA;;;IAAzE,oBAAA,MAAM,GAAmE,EAAA,CAAA;;;;wBAGnE,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;wBACvF,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;IAEtF,oBAAA,GAAG,GAAGF,OAAK,CAAC,MAAM,CAAC,CAAC;IACF,oBAAA,OAAA,CAAA,CAAA,YAAM,GAAG,CAAC,QAAQ,EAAE,CAAA,CAAA;;IAAtC,oBAAA,EAAA,GAAkB,SAAoB,EAArC,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,MAAM,GAAA,EAAA,CAAA,MAAA,CAAA;;IAElB,oBAAA,IAAI,UAAU,EAAE;IACZ,wBAAA,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IACzB,wBAAA,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC3B,wBAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,qBAAA;IAAM,yBAAA,IAAI,IAAI,EAAE;IACb,wBAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACnB,wBAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACrB,wBAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,qBAAA;wBAEK,YAAY,GAAG,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,YAAY,KAAI,CAAC,CAAC;wBACvC,YAAY,GAAG,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,YAAY,KAAI,CAAC,CAAC;wBAC7C,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE;4BAC9E,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;4BAChD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;4BAClD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAC,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAC,CAAC,CAAC;IAC9E,qBAAA;;wBAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC5C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;4BAC1C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;4BAC5C,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAC,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,CAAC,CAAC;IAC3E,qBAAA;;IAED,oBAAA,IAAI,SAAS,EAAE;IACX,wBAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,qBAAA;IAEG,oBAAA,IAAA,EAAA,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAA,EAArB,OAAqB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IACZ,oBAAA,OAAA,CAAA,CAAA,YAAM,GAAG,CAAC,QAAQ,EAAE,CAAA,CAAA;;wBAA7B,MAAM,GAAG,SAAoB,CAAC;IAC9B,oBAAA,GAAG,GAAGA,OAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;;IAEvC,gBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,GAAG,CAAC,QAAQ,EAAE,CAAA,CAAA;;wBAA7B,MAAM,GAAG,SAAoB,CAAC;IAC9B,oBAAA,GAAG,GAAG,GAAG,YAAYE,eAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAChE,oBAAA,OAAA,CAAA,CAAA,aAAO,GAAG,CAAC,CAAA;;;IAEX,oBAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAC,CAAC,CAAC;IACzC,oBAAA,GAAG,GAAG,GAAG,YAAYA,eAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAChE,oBAAA,OAAA,CAAA,CAAA,aAAO,GAAG,CAAC,CAAA;;;;IAElB,KAAA,CAAA,CAAA;IAAA,CAAA;IAEK,SAAU,cAAc,CAAC,MAAc,EAAA;IACzC,IAAA,IAAM,UAAU,GAAG,IAAIC,kBAAW,EAAE,CAAC;IACrC,IAAA,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,IAAA,OAAO,UAAU,CAAA;IACrB,CAAC;IAEK,SAAU,cAAc,CAAC,MAAgB,EAAA;IAC3C,IAAA,OAAO,IAAI,OAAO,CAAS,UAAC,OAAO,EAAE,MAAM,EAAA;YACvC,IAAM,MAAM,GAAG,EAAE,CAAC;IAClB,QAAA,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAA,IAAI,EAAA;IAClB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,SAAC,CAAC,CAAC;IACH,QAAA,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3B,QAAA,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,YAAA,EAAM,OAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAA9B,EAA8B,CAAC,CAAC;IAC3D,KAAC,CAAC,CAAA;IACN,CAAC;IAED,IAAA,mBAAA,kBAAA,UAAA,MAAA,EAAA;QAAkC,SAAQ,CAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;QAEtC,SAAY,mBAAA,CAAA,cAAwB,EAAE,IAAsB,EAAA;YAA5D,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,IAAI,CAAC,IAUd,IAAA,CAAA;YATG,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,EAAE,CAAC,MAAM,EAAE,UAAA,KAAK,EAAA;IAC5B,YAAA,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,SAAC,CAAC,CAAC;YACH,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,EAAE,CAAC,KAAK,EAAE,YAAA;IACtB,YAAA,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,SAAC,CAAC,CAAC;YACH,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,EAAE,CAAC,OAAO,EAAE,UAAA,GAAG,EAAA;IAC3B,YAAA,KAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAC,CAAC,CAAC;;SACN;QAED,mBAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,IAAY,EAAA;SAEjB,CAAA;QACJ,OAAA,mBAAA,CAAA;IAAA,CAlBD,CAAkCD,eAAQ,CAkBzC,CAAA,CAAA;IAEe,SAAA,UAAU,CAAC,MAAgB,EAAE,IAAsB,EAAA;IAC/D,IAAA,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEe,SAAA,cAAc,CAAC,IAAY,EAAE,IAAmB,EAAA;IAAnB,IAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAmB,GAAA,IAAA,CAAA,EAAA;IAC5D,IAAA,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM,EAAA;IACrC,QAAAE,QAAK,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,IAAI,GAAK,EAAE,SAAS,EAAE,IAAI,EAAC,EAAE,UAAA,GAAG,EAAA;IACnD,YAAA,IAAI,GAAG,EAAE;oBACL,MAAM,CAAC,GAAG,CAAC,CAAC;oBACZ,OAAO;IACV,aAAA;IACD,YAAA,OAAO,EAAE,CAAC;IACd,SAAC,CAAC,CAAC;IACP,KAAC,CAAC,CAAC;IACP,CAAC;IAEK,SAAU,UAAU,CAAC,IAAY,EAAA;IACnC,IAAA,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM,EAAA;IACrC,QAAAC,SAAM,CAAC,IAAI,EAAE,UAAA,GAAG,EAAA;IACZ,YAAA,IAAI,GAAG,EAAE;oBACL,MAAM,CAAC,GAAG,CAAC,CAAC;oBACZ,OAAO;IACV,aAAA;IACD,YAAA,OAAO,EAAE,CAAC;IACd,SAAC,CAAC,CAAC;IACP,KAAC,CAAC,CAAC;IACP,CAAC;IAEK,SAAU,QAAQ,CAAC,IAAY,EAAA;IACjC,IAAA,OAAO,IAAI,OAAO,CAAS,UAAC,GAAG,EAAE,GAAG,EAAA;IAChC,QAAAC,WAAU,CAAC,IAAI,EAAE,UAAC,GAAG,EAAE,IAAI,EAAA;IACvB,YAAA,IAAI,GAAG,EAAE;oBACL,GAAG,CAAC,GAAG,CAAC,CAAC;oBACT,OAAO;IACV,aAAA;gBACD,GAAG,CAAC,IAAI,CAAC,CAAC;IACd,SAAC,CAAC,CAAC;IACP,KAAC,CAAC,CAAC;IACP,CAAC;IAEqB,SAAA,iBAAiB,CAAC,IAAY,EAAE,OAAsB,EAAA;IAAtB,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAsB,GAAA,IAAA,CAAA,EAAA;;;;;IAC3D,gBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAA;;IAA3B,oBAAA,IAAI,GAAG,EAAoB,CAAA,IAAA,EAAA,CAAA;IACjC,oBAAA,UAAU,CAAC,YAAA;4BACPD,SAAM,CAAC,IAAI,EAAE,YAAA;IACb,yBAAC,CAAC,CAAC;yBACN,EAAE,OAAO,CAAC,CAAC;IACZ,oBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;;IACf,KAAA,CAAA,CAAA;IAAA,CAAA;IAEqB,SAAA,SAAS,CAACE,MAAY,EAAE,IAAY,EAAA;;;;IACtD,gBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,cAAc,CAACC,YAAO,CAACD,MAAI,CAAC,CAAC,CAAA,CAAA;;IAAnC,oBAAA,EAAA,CAAA,IAAA,EAAmC,CAAC;IACpC,oBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,OAAO,CAAS,UAAC,GAAG,EAAE,GAAG,EAAA;IAChC,4BAAAE,YAAW,CAACF,MAAI,EAAE,IAAI,EAAE,UAAA,GAAG,EAAA;IACvB,gCAAA,IAAI,GAAG,EAAE;wCACL,GAAG,CAAC,GAAG,CAAC,CAAC;wCACT,OAAO;IACV,iCAAA;oCACD,GAAG,CAAC,IAAI,CAAC,CAAC;IACd,6BAAC,CAAC,CAAC;IACP,yBAAC,CAAC,CAAC,CAAA;;;IACN,KAAA,CAAA,CAAA;IAAA,CAAA;IAEK,SAAU,cAAc,CAAC,KAAU,EAAA;IACrC,IAAA,OAAO,KAAK,YAAY,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAEe,SAAA,cAAc,CAAC,OAAsB,EAAE,KAAsB,EAAA;IAA9C,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAsB,GAAA,IAAA,CAAA,EAAA;IAAE,IAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAsB,GAAA,KAAA,CAAA,EAAA;IACzE,IAAA,OAAO,IAAI,OAAO,CAAM,UAAC,OAAO,EAAE,MAAM,EAAA;IACpC,QAAA,UAAU,CAAC,YAAA;IACP,YAAA,IAAI,KAAK,EAAE;IACP,gBAAA,MAAM,CAAC,oBAAA,GAAqB,OAAO,GAAA,IAAI,CAAC,CAAC;oBACzC,OAAO;IACV,aAAA;IACD,YAAA,OAAO,CAAC,WAAA,GAAY,OAAO,GAAA,IAAI,CAAC,CAAC;aACpC,EAAE,OAAO,CAAC,CAAC;IAChB,KAAC,CAAC,CAAC;IACP,CAAC;IAEK,SAAU,kBAAkB,CAAC,IAAe,EAAA;IAC9C,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;IAC3C,CAAC;IAEK,SAAU,iBAAiB,CAAC,IAAc,EAAA;;;;;IAK5C,IAAA,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;IACtB,SAAA,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;IAChC,SAAA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IACxB,SAAA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IACxB,SAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAClB,SAAA,IAAI,EAAE,CAAC;;QAGZ,IAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;IAGnC,IAAA,IAAM,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,IAAA,IAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrD,IAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAA,MAAM,CAAC,OAAO,CAAC,UAAA,OAAO,EAAA;;IAGlB,QAAA,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAElD,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;IAClB,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,KAAC,CAAC,CAAC;IAEH,IAAA,OAAO,MAAM,CAAC;IAClB,CAAC;IAEe,SAAA,WAAW,CAACA,MAAY,EAAE,aAA8B,EAAA;IAA9B,IAAA,IAAA,aAAA,KAAA,KAAA,CAAA,EAAA,EAAA,aAA8B,GAAA,KAAA,CAAA,EAAA;QACpE,IAAM,IAAI,GAAGG,aAAQ,CAACH,MAAI,IAAI,EAAE,CAAC,CAAC;QAClC,OAAO,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzE,CAAC;IAEK,SAAU,YAAY,CAACA,MAAY,EAAA;QACrC,IAAM,IAAI,GAAGG,aAAQ,CAACH,MAAI,IAAI,EAAE,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IAEK,SAAU,UAAU,CAAC,KAAU,EAAA;IACjC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACtB,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,KAAA;QACD,OAAO,KAAK,YAAYI,gBAAQ,IAAI,KAAK,YAAYC,cAAK,CAAC,QAAQ;IAC/D,UAAE,KAAK,CAAC,WAAW,EAAE;IACrB,WAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC;IACpD,CAAC;IAEK,SAAU,iBAAiB,CAAC,SAA2D,EAAA;IACzF,IAAA,OAAO,UAAC,GAAa,EAAE,GAAQ,EAAE,OAAa,EAAA;IAC1C,QAAA,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,GAAG,EAAE;gBACT,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC;IAC9B,SAAA;YACD,OAAO,GAAG,CAAC,GAAG,CAAC;YACf,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;IAC7E,KAAC,CAAC;IACN,CAAC;IAEe,SAAA,SAAS,CAAC,YAAoB,EAAE,EAAmC,EAAA;IAC/E,IAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAEe,SAAA,IAAI,CAAC,GAAW,EAAE,GAAW,EAAA;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IAEe,SAAA,MAAM,CAAC,GAAW,EAAE,GAAW,EAAA;IAC3C,IAAA,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;aAEe,iBAAiB,GAAA;QAAC,IAAgC,aAAA,GAAA,EAAA,CAAA;aAAhC,IAAgC,EAAA,GAAA,CAAA,EAAhC,EAAgC,GAAA,SAAA,CAAA,MAAA,EAAhC,EAAgC,EAAA,EAAA;YAAhC,aAAgC,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;QAC9D,OAAO,IAAIC,iBAAY,CAAC,YAAA;IACpB,QAAA,aAAa,CAAC,OAAO,CAAC,UAAA,CAAC,EAAA;gBACnB,CAAC,CAAC,WAAW,EAAE,CAAC;IACpB,SAAC,CAAC,CAAC;IACP,KAAC,CAAC,CAAC;IACP,CAAC;IAEK,SAAU,sBAAsB,CAAC,YAAuB,EAAA;IAC1D,IAAA,IAAI,OAAY,CAAC;IACjB,IAAA,OAAO,IAAIC,eAAU,CAAM,UAAC,UAAU,EAAA;YAClC,IAAI,CAAC,OAAO,EAAE;IACV,YAAA,OAAO,GAAG,IAAIC,YAAO,EAAE,CAAC;gBACxB,IAAI;IACA,gBAAA,OAAO,GAAGC,SAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAClC,aAAA;IAAC,YAAA,OAAO,GAAG,EAAE;IACV,gBAAA,IAAIC,6BAAc,CAAC,OAAO,CAAC,EAAE;IACzB,oBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,iBAAA;IAAM,qBAAA;IACH,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,iBAAA;IACJ,aAAA;IACJ,SAAA;IACD,QAAA,OAAO,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACzC,KAAC,CAAC,CAAC;IACP,CAAC;aAEe,OAAO,CAAC,KAAU,EAAE,KAAiB,EAAE,OAAqB,EAAA;IAAxC,IAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAiB,GAAA,CAAA,CAAA,EAAA;IAAE,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAqB,GAAA,GAAA,CAAA,EAAA;QACxE,OAAO,CAAA,EAAG,GAAA,KAAO,EAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;aAEe,QAAQ,CAAC,KAAU,EAAE,KAAiB,EAAE,OAAqB,EAAA;IAAxC,IAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAiB,GAAA,CAAA,CAAA,EAAA;IAAE,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAqB,GAAA,GAAA,CAAA,EAAA;QACzE,OAAO,CAAA,EAAG,GAAA,KAAO,EAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAEe,SAAA,gBAAgB,CAAC,MAAoB,EAAE,MAAgB,EAAA;IACnE,IAAA,OAAO,IAAI,OAAO,EAAU,UAAC,OAAO,EAAE,MAAM,EAAA;IACxC,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAA,KAAK,EAAA;gBACvB,IAAI,GAAG,GAAG,KAAY,CAAC;IACvB,YAAA,IAAI,KAAK,EAAE;oBACP,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,IAAI,EAAE,CAAC;IACnC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;wBACnD,MAAM,CAAC,GAAG,CAAC,CAAC;wBACZ,OAAO;IACV,iBAAA;IACJ,aAAA;IACD,YAAA,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,SAAC,CAAC,CAAC;SACN,EAAE,CAAC;IACR,CAAC;IAED,IAAM,gBAAgB,GAAoB,YAAA,EAAM,OAAA,IAAI,CAAA,EAAA,CAAC;;IAErD,SAAS,aAAa,CAAC,MAAW,EAAE,MAAW,EAAE,SAA2B,EAAA;;IACxE,IAAA,SAAS,GAAG,SAAS,IAAI,gBAAgB,CAAC;IAC1C,IAAA,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC;IAAE,QAAA,OAAO,MAAM,CAAC;IAC/E,IAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;IACjB,QAAA,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACnD,QAAA,MAAM,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK,EAAA;gBACvB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;oBAAE,OAAO;IACpD,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK;IACrB,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;;IAE9D,gBAAA,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1D,SAAC,CAAC,CAAC;IACH,QAAA,OAAO,MAAM,CAAC;IACjB,KAAA;QACD,IAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,YAAY,GAAG,cAAM,OAAA,IAAI,CAAJ,EAAI,CAAC;IACtF,IAAA,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;IACnC,QAAA,IAAI,MAAM,CAAC,YAAY,KAAK,KAAK;IAAE,YAAA,OAAO,MAAM,CAAC;YACjD,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI;IACA,gBAAA,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;IACrC,aAAA;IAAC,YAAA,OAAO,CAAC,EAAE;oBACR,IAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;IAC/D,gBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,aAAA;IACJ,SAAA;IACJ,KAAA;IAAM,SAAA;YACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IAC5C,KAAA;;QAED,IAAI,MAAM,YAAY,GAAG,EAAE;YACvB,IAAI,MAAM,YAAY,GAAG,EAAE;;oBACvB,KAAyB,IAAA,KAAA,QAAA,CAAA,MAAM,CAAC,OAAO,EAAE,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;IAAlC,oBAAA,IAAA,KAAA,MAAY,CAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAA,EAAX,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;wBAChB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;4BAAE,SAAS;IACrD,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IACvG,iBAAA;;;;;;;;;IACJ,SAAA;IACD,QAAA,OAAO,MAAM,CAAC;IACjB,KAAA;;QAGD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,MAAM,EAAE,GAAG,EAAA;IAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;IAAE,YAAA,OAAO,MAAM,CAAC;IAChE,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/G,QAAA,OAAO,MAAM,CAAC;SACjB,EAAE,MAAM,CAAC,CAAC;;QAGX,IAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;IACjE,IAAA,IAAI,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;IACZ,QAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,KAAC,CAAC,CAAC;IACH,IAAA,OAAO,MAAM,CAAC;IAClB,CAAC;IAEe,SAAA,MAAM,CAAI,GAAM,EAAE,SAA0B,EAAA;QACxD,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAEK,SAAU,IAAI,CAAI,GAAM,EAAA;IAC1B,IAAA,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;aAEe,MAAM,CAAI,MAAS,EAAE,MAAW,EAAE,SAA2B,EAAA;QACzE,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAEK,SAAU,GAAG,CAAC,IAAS,EAAA;IACzB,IAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;IAChB,QAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAA;IACD,IAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IACjB,QAAA,MAAM,2CAA2C,CAAC;IACrD,KAAA;IACD,IAAA,OAAOC,iBAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAEe,SAAA,UAAU,CAAC,UAAkB,EAAE,YAAwB,EAAA;IAAxB,IAAA,IAAA,YAAA,KAAA,KAAA,CAAA,EAAA,EAAA,YAAwB,GAAA,CAAA,CAAA,EAAA;IACnE,IAAA,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM,EAAA;YAC/B,IAAM,EAAE,GAAGC,kBAAgB,CAAC,UAAU,EAAE,UAAC,KAAK,EAAE,MAAM,EAAA;IAClD,YAAA,IAAI,KAAK,IAAI,YAAY,KAAK,KAAK,CAAC,IAAI,EAAE;IACtC,gBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnB,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;IACV,aAAA;IACD,YAAA,IAAM,KAAK,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;IAC9B,gBAAA,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IACtB,aAAA;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,SAAC,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI,EAAA;gBAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjC,SAAC,CAAC,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI,EAAA;gBAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnC,SAAC,CAAC,CAAC;IACP,KAAC,CAAC,CAAC;IACP,CAAC;AAEWC,kCA4BX;IA5BD,CAAA,UAAY,YAAY,EAAA;IACpB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,WAAiB,CAAA;IACjB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,WAAkB,CAAA;IAClB,IAAA,YAAA,CAAA,KAAA,CAAA,GAAA,WAAe,CAAA;IACf,IAAA,YAAA,CAAA,YAAA,CAAA,GAAA,WAAsB,CAAA;IACtB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,WAAiB,CAAA;IACjB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,WAAmB,CAAA;IACnB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,WAAkB,CAAA;IAElB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,YAAoB,CAAA;IACpB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,YAAkB,CAAA;IAClB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,YAAoB,CAAA;IACpB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,YAAqB,CAAA;IACrB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,YAAmB,CAAA;IACnB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,YAAsB,CAAA;IACtB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,YAAmB,CAAA;IACnB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,YAAoB,CAAA;IACpB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,YAAsB,CAAA;IAEtB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,YAAoB,CAAA;IACpB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,YAAkB,CAAA;IAClB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,YAAoB,CAAA;IACpB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,YAAqB,CAAA;IACrB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,YAAmB,CAAA;IACnB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,YAAsB,CAAA;IACtB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,YAAmB,CAAA;IACnB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,YAAoB,CAAA;IACpB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,YAAsB,CAAA;IAC1B,CAAC,EA5BWA,oBAAY,KAAZA,oBAAY,GA4BvB,EAAA,CAAA,CAAA,CAAA;IAWD,IAAM,aAAa,GAAgB;QAC/B,QAAQ,EAAEA,oBAAY,CAAC,OAAO;QAC9B,WAAW,EAAEA,oBAAY,CAAC,MAAM;QAChC,WAAW,EAAEA,oBAAY,CAAC,QAAQ;QAClC,SAAS,EAAEA,oBAAY,CAAC,OAAO;QAC/B,UAAU,EAAEA,oBAAY,CAAC,KAAK;QAC9B,SAAS,EAAEA,oBAAY,CAAC,SAAS;KACpC,CAAA;IAEe,SAAA,QAAQ,CAAC,KAAU,EAAE,KAAmB,EAAA;QACpD,OAAO,EAAA,GAAG,KAAK,GAAG,KAAK,GAAGA,oBAAY,CAAC,KAAO,CAAC;IACnD,CAAC;IAEe,SAAA,aAAa,CAAC,KAAsB,EAAE,YAA0B,EAAA;IAC5E,IAAA,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,YAAY,CAAC,CAAA;QAC7D,IAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAChI,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,sGAAsG,EAAE,UAAC,KAAK,EAAA;IAC9H,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAA;IAC9B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAClB,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAClB,gBAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAA;IAC1B,aAAA;IAAM,iBAAA;IACH,gBAAA,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;IAC3B,gBAAA,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACzD,aAAA;IACJ,SAAA;IAAM,aAAA;IACH,YAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;sBACpB,MAAM,CAAC,SAAS;IAClB,kBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;0BACf,MAAM,CAAC,UAAU;IACnB,sBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;8BACd,MAAM,CAAC,SAAS;8BAChB,KAAK,CAAA;IACtB,SAAA;YACD,OAAO,EAAA,GAAG,KAAK,GAAG,KAAK,GAAGA,oBAAY,CAAC,KAAO,CAAA;IAClD,KAAC,CAAC,CAAA;IACN,CAAC;IAEe,SAAA,mBAAmB,CAAC,GAAW,EAAE,EAAgB,EAAA;IAAhB,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,EAAA,EAAA,EAAgB,GAAA,GAAA,CAAA,EAAA;QAC7D,OAAO,CAAA,EAAG,GAAA,GAAK,EAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;IAChE;;;;;;;;;;;;IC9rBA,SAAS,UAAU,CAAC,KAAc,EAAE,KAAU,EAAA;IAC1C,IAAA,IAAI,KAAK,EAAE;IACP,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,UAAA,CAAC,EAAA;gBACxC,IAAI;IACA,gBAAA,IAAM,EAAE,GAAG,IAAIT,aAAQ,CAAC,CAAC,CAAC,CAAC;oBAC3B,OAAO,EAAE,YAAYA,aAAQ,CAAC;IACjC,aAAA;IAAC,YAAA,OAAO,CAAC,EAAE;IACR,gBAAA,OAAO,KAAK,CAAC;IAChB,aAAA;IACL,SAAC,CAAC,CAAC;IACN,KAAA;QACD,IAAI,IAAI,KAAK,KAAK;IAAE,QAAA,OAAO,IAAI,CAAC;QAChC,IAAI;IACA,QAAA,IAAM,EAAE,GAAG,IAAIA,aAAQ,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO,EAAE,YAAYA,aAAQ,CAAC;IACjC,KAAA;IAAC,IAAA,OAAO,CAAC,EAAE;IACR,QAAA,OAAO,KAAK,CAAC;IAChB,KAAA;IACL,CAAC;AAGYU,kBAAM,kBAAA,YAAA;;SAKlB;IAJG,IAAA,MAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,KAAU,EAAE,mBAAwC,EAAA;IACnD,QAAA,IAAA,EAAA,GAAA,MAAA,EAAW,mBAAmB,CAAC,WAAW,IAAI,EAAE,GAAC,CAAA,CAAA,EAAhD,KAAK,QAA2C,CAAC;IACxD,QAAA,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACnC,CAAA;eACJ,MAAA,CAAA;SAAA;AALYA,kBAAM,GAAAzB,YAAA,CAAA;IADlB,IAAA0B,kCAAmB,EAAE;KACT,EAAAD,cAAM,CAKlB,CAAA;AAGYE,sBAAU,kBAAA,YAAA;;SAKtB;IAJG,IAAA,UAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,KAAU,EAAE,mBAAwC,EAAA;IACnD,QAAA,IAAA,KAAA,MAAa,EAAC,mBAAmB,CAAC,WAAW,IAAI,EAAE,GAAC,CAAA,CAAA,EAAnD,CAAC,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,KAAK,QAA2C,CAAC;IAC3D,QAAA,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACnC,CAAA;eACJ,UAAA,CAAA;SAAA;AALYA,sBAAU,GAAA3B,YAAA,CAAA;IADtB,IAAA0B,kCAAmB,EAAE;KACT,EAAAC,kBAAU,CAKtB;;IC3BD,IAAI,OAAO,GAAW,IAAI,CAAC;IAErB,SAAU,UAAU,CAAC,gBAAgD,EAAA;;IACvE,IAAA,IAAI,OAAO;IAAE,QAAA,OAAO,OAAO,CAAC;IAC5B,IAAA,IAAMC,SAAO,GAAGC,yCAAsB,EAAE,CAAC;IACzC,IAAA,IAAM,IAAI,GAAkBC,kDAAwB,CAACF,SAAO,CAAC,CAAC;IAC9D,IAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IACxB,IAAA,IAAI,CAAC,WAAW,GAAGG,qDAA4B,CAAC;IAC5C,QAAA,+BAA+B,EAAEC,8BAAsB;YACvD,oBAAoB,GAAA,EAAA,GAAA,EAAA;IAChB,YAAA,EAAA,CAACC,8BAAe,CAAC,iBAAiB,IAAG,UAAC,IAAI,EAAE,OAAO,EAAA;IAC/C,gBAAA,IAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAAC;oBAC9F,IAAI,CAAC,CAAC,GAAG;IAAE,oBAAA,OAAO,GAAG,CAAC;IACtB,gBAAA,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IAC3C,gBAAA,IAAI,IAAI,CAAC,aAAa,KAAKR,cAAM,EAAE;wBAC/B,OAAO;IACH,wBAAA,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK;IAC9B,wBAAA,IAAI,EAAE,MAAM;yBACf,CAAA;IACJ,iBAAA;IACD,gBAAA,IAAI,IAAI,CAAC,aAAa,KAAKE,kBAAU,EAAE;wBACnC,OAAO;IACH,wBAAA,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK;IACjC,wBAAA,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK;IAC9B,wBAAA,IAAI,EAAE,MAAM;yBACf,CAAA;IACJ,iBAAA;IACD,gBAAA,OAAO,IAAI,CAAC;iBACf;IACJ,YAAA,EAAA,CAAA;IACJ,KAAA,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;IAC3C,IAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAA,OAAO,OAAO,CAAC;IACnB;;IC1BA;AAEO,QAAM,IAAI,GAAG,SAAS;IAkE7B;AAEa,QAAA,OAAO,GAA6B,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE;AAEhE,QAAA,GAAG,GAAyB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE;AAEpD,QAAA,OAAO,GAA4B,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE;AAE/D,QAAA,WAAW,GAA2B,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE;AAEtE,QAAA,aAAa,GAAiC,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE;AAEhF,QAAA,SAAS,GAA8B,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAErE,QAAA,YAAY,GAAyC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE;AAiCnG,QAAA,SAAA,kBAAA,YAAA;IAEI,IAAA,SAAA,SAAA,CAAqB,IAAY,EAAS,YAAiB,EAAS,QAA8B,EAAA;IAA9B,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAA8B,GAAA,IAAA,CAAA,EAAA;IAA7E,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;IAAS,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;IAAS,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAsB;SAEjG;QACJ,OAAA,SAAA,CAAA;IAAA,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICpID,IAAMvB,OAAK,GAAGC,0BAAM,CAAC;IACrB,IAAM,OAAO,GAAG6B,4BAAQ,CAAC;IAEzB,IAAM,SAAS,GAAG;IACd,IAAA,uBAAuB,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,6BAA6B;IAC9I,IAAA,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe;KACrE,CAAC;IAEF,IAAM,UAAU,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IAE7E,IAAM,SAAS,GAAG;IACd,IAAA,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe;QAC3D,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IACpE,IAAA,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW;IACrE,IAAA,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB;KAC9D,CAAC;AAIWC,0BAAc;;SA0F1B;QAxFkB,cAAiB,CAAA,iBAAA,GAAxB,UAAyB,IAAe,EAAA;YAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1E,CAAA;IAEc,IAAA,cAAA,CAAA,eAAe,GAAtB,UAAuB,IAAe,EAAE,MAAc,EAAA;YAC1D,IAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC3B,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAC,CAAC;IAC9C,SAAA;IACD,QAAA,OAAO,IAAI,CAAC;SACf,CAAA;QAEY,cAAkB,CAAA,kBAAA,GAA/B,UAAgC,MAAc,EAAA;;;;;;IAC5B,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAMC,mBAAU,CAAC,MAAM,CAAC,CAAA,CAAA;;IAAhC,wBAAA,IAAI,IAAI,CAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAC,CAAc,CAAA;IACxF,wBAAA,IAAI,gBAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;gCACxC,OAAO,CAAA,CAAA,aAAA,gBAAc,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IACvD,yBAAA;IACD,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;;;SACf,CAAA;QAEM,cAAiB,CAAA,iBAAA,GAAxB,UAAyB,IAAU,EAAA;IAC/B,QAAA,IAAM,IAAI,GAAW,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC3C,IAAM,GAAG,GAAY,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC;IAC3C,QAAA,QAAQ,IAAI;IACR,YAAA,KAAK,SAAS;oBACV,OAAO,GAAG,KAAK,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IACpD,YAAA,KAAK,WAAW;IACZ,gBAAA,OAAO,OAAO,CAAC;IACnB,YAAA,KAAK,UAAU;IACX,gBAAA,OAAO,MAAM,CAAC;IAClB,YAAA,KAAK,OAAO;IACR,gBAAA,OAAO,UAAU,CAAC;IACzB,SAAA;IACD,QAAA,OAAO,IAAI,CAAC;SACf,CAAA;QAEM,cAAO,CAAA,OAAA,GAAd,UAAe,WAAmB,EAAA;YAC9B,OAAO,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC/C,CAAA;IAEY,IAAA,cAAA,CAAA,aAAa,GAA1B,UAA2B,MAAc,EAAE,QAAoB,EAAE,QAAmB,EAAA;;;;;;IAChF,wBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE;IAC7B,4BAAA,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,4BAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oCACrB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrD,gCAAA,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;IACd,oCAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;4CAAE,OAAO;IACtB,oCAAA,IAAA,EAAA,GAAA,MAAA,CAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAA,CAAA,CAAA,EAA9B,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,KAAK,QAAmB,CAAC;wCACtC,IAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAQ,CAAC;IAC5C,oCAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACpD,iCAAC,CAAC,CAAC;IACH,gCAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;wCACjE,KAAK,GAAI,QAAQ,CAAC,OAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtD,oCAAA,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,oCAAA,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,iCAAA;IACD,gCAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IACnD,oCAAA,QAAQ,CAAC,OAAO,GAAG,EAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAC,CAAC;IAC9D,iCAAA;IACJ,6BAAA;IACD,4BAAA,OAAA,CAAA,CAAA,aAAO,MAAM,CAAC,CAAA;IACjB,yBAAA;IACc,wBAAA,OAAA,CAAA,CAAA,YAAMhC,OAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAC,iBAAiB,EAAE,IAAI,EAAC,CAAC,CAAA,CAAA;;IAAzE,wBAAA,MAAM,GAAG,EAAgE,CAAA,IAAA,EAAA,CAAA;4BAC/E,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;4BACrC,OAAO,CAAA,CAAA,aAAA,MAAM,CAAC,IAAI,CAAC,CAAA;;;IACtB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEM,cAAM,CAAA,MAAA,GAAb,UAAc,WAAmB,EAAA;YAC7B,OAAO,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC9C,CAAA;IAEM,IAAA,cAAA,CAAA,YAAY,GAAnB,UAAoB,MAAc,EAAE,QAAoB,EAAA;YACpD,IAAM,IAAI,GAAS,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1C,QAAQ,CAAC,MAAM,GAAG,gBAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzD,QAAA,SAAS,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;gBAClB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,SAAC,CAAC,CAAC;SACN,CAAA;IAEK,IAAA,cAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,MAAc,EAAE,QAAoB,EAAE,QAAmB,EAAA;;;;;iCAC/D,gBAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAArC,OAAqC,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;4BAC5B,OAAM,CAAA,CAAA,YAAA,gBAAc,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA,CAAA;;4BAAvE,MAAM,GAAG,SAA8D,CAAC;;;4BAE5E,IAAI,gBAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IACtC,4BAAA,gBAAc,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,yBAAA;IACD,wBAAA,OAAA,CAAA,CAAA,aAAO,MAAM,CAAC,CAAA;;;IACjB,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,cAAA,CAAA;SAAA;AA1FY+B,0BAAc,GAAA,gBAAA,GAAAnC,YAAA,CAAA;IAF1B,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;KACrB,EAAAJ,sBAAc,CA0F1B;;;;;;;;;;;;;;;;;;;AC5GYK,yBAAa,kBAAA,YAAA;IAItB,IAAA,SAAA,aAAA,CAAkC,MAAmB,EAAA;YAArD,IAIC,KAAA,GAAA,IAAA,CAAA;YAHGC,0BAAM,CAAC,MAAM,EAAE,CAAC;IAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,UAAA,KAAK,EAAA,EAAI,OAAA,KAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAf,EAAe,CAAC,CAAC;SACpD;QAES,aAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,KAAgB,EAAA;IAC1B,QAAA,IAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IACzD,QAAA,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YAChD,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC;YAClE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;SAC7C,CAAA;QAED,aAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,IAAY,EAAA;YACjB,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAChC,CAAA;QAED,aAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,IAAY,EAAA;YAChB,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,QAAA,IAAI,CAAC,KAAK;IAAE,YAAA,MAAM,IAAI,KAAK,CAAC,2BAAyB,IAAI,GAAA,oCAAoC,CAAC,CAAC;IAC/F,QAAA,IAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAAC,CAAC,EAAA;IAChE,YAAA,OAAO,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;IAChC,SAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACxD,IAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;IACjC,YAAA,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;IACpC,kBAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,kBAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1D,YAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtE,YAAA,OAAO,KAAK,CAAC;IAChB,SAAA;YACD,OAAO,KAAK,CAAC,YAAY,CAAC;SAC7B,CAAA;eACJ,aAAA,CAAA;SAAA;AArCYD,yBAAa,GAAAxC,YAAA,CAAA;IAFzB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;IAKjB,IAAAtC,SAAA,CAAA,CAAA,EAAAyC,kBAAS,CAAC,SAAS,CAAC,CAAA;;KAJxB,EAAAF,qBAAa,CAqCzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCYG,0BAAc,kBAAA,YAAA;IAkBvB,IAAA,SAAA,cAAA,CAAqB,aAA4B,EAAA;IAA5B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;IAC7C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACf,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;IApBD,IAAA,MAAA,CAAA,cAAA,CAAI,cAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAAd,QAAA,GAAA,EAAA,YAAA;gBACI,OAAO,IAAI,CAAC,IAAI,CAAC;aACpB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAZ,QAAA,GAAA,EAAA,YAAA;gBACI,OAAO,IAAI,CAAC,EAAE,CAAC;aAClB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,cAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAV,QAAA,GAAA,EAAA,YAAA;gBACI,OAAO,IAAI,CAAC,QAAQ,CAAC;aACxB;;;IAAA,KAAA,CAAA,CAAA;IAYK,IAAA,cAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;;;;;;4BACF,IAAI,IAAI,CAAC,EAAE;gCAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5B,wBAAA,EAAA,GAAA,IAAI,CAAA;4BAAS,OAAM,CAAA,CAAA,YAAAC,gBAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAW,EAAE;oCACzE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;oCAC7C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC;oCAC7C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC;IACpD,6BAAA,CAAC,CAAA,CAAA;;IAJF,wBAAA,EAAA,CAAK,IAAI,GAAG,CAAC,SAIX,EAAE,UAAU,CAAC;4BACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAS,CAAC;IAC9B,wBAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAIC,oBAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;;;;IACrE,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,cAAA,CAAA;SAAA;AAnCYF,0BAAc,GAAA3C,YAAA,CAAA;IAF1B,IAAAqC,mBAAU,EAAE;IACZ,IAAAS,kBAAS,EAAE;2CAmB4BN,qBAAa,CAAA,CAAA;KAlBxC,EAAAG,sBAAc,CAmC1B;;;;;;;;;;;;;;;;;;;;;ICxCD,IAAA,UAAA,kBAAA,YAAA;IAQI,IAAA,SAAA,UAAA,CAAqB,GAAa,EACZ,IAAgB,EAChB,UAA2B,EAAA;IAF5B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAU;IACZ,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;IAChB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAiB;SAChD;IATD,IAAA,MAAA,CAAA,cAAA,CAAI,UAAE,CAAA,SAAA,EAAA,IAAA,EAAA;IAAN,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;aACjC;;;IAAA,KAAA,CAAA,CAAA;IASD,IAAA,UAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;YACI,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;SAC5E,CAAA;IAEK,IAAA,UAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;;;;;IACU,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC,CAAC,CAAA,CAAA;;IAApD,wBAAA,GAAG,GAAG,EAA8C,CAAA,IAAA,EAAA,CAAA;IAC1D,wBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC;IACpB,wBAAA,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;IACtB,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;;IACf,SAAA,CAAA,CAAA;SAAA,CAAA;IAED,IAAA,UAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;IACI,QAAA,IAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAQ,CAAC;YAChD,OAAO,GAAG,CAAC,GAAG,CAAC;IACf,QAAA,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACjB,QAAA,OAAO,GAAG,CAAC;SACd,CAAA;QACJ,OAAA,UAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;ICzBD,IAAA,KAAA,kBAAA,UAAA,MAAA,EAAA;QAA2B,SAAkB,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;IAkBzC,IAAA,SAAA,KAAA,CAAY,EAAY,EACZ,IAAqB,EACrB,UAAsB,EACZ,MAAoB,EAAA;IAH1C,QAAA,IAAA,KAAA,GAII,kBAAM,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAC9B,IAAA,CAAA;IAFqB,QAAA,KAAM,CAAA,MAAA,GAAN,MAAM,CAAc;;SAEzC;IArBD,IAAA,MAAA,CAAA,cAAA,CAAI,KAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAZ,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,KAAW,CAAA,SAAA,EAAA,aAAA,EAAA;IAAf,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;aAChC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,KAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAZ,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,KAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAV,QAAA,GAAA,EAAA,YAAA;gBACI,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnD;;;IAAA,KAAA,CAAA,CAAA;IASK,IAAA,KAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;;;oBACF,OAAO,CAAA,CAAA,aAAA,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;;IAClD,SAAA,CAAA,CAAA;SAAA,CAAA;IAED,IAAA,KAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;IACI,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtC,CAAA;QAEK,KAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,QAAqB,EAAA;;;;;IAChC,wBAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACxD,wBAAA,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa;IAC7E,8BAAE,CAAC;IACH,8BAAE,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC;4BACjC,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,IAAI,IAAI,IAAI,EAAE,CAAC;IAC9D,wBAAA,QAAQ,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;4BACnC,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAE,EAAC,QAAQ,EAAA,QAAA,EAAC,EAAC,CAAC,CAAA,CAAA;;IAApE,wBAAA,EAAA,CAAA,IAAA,EAAoE,CAAC;4BACrE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,MAAM,CAAC,CAAA;;;IACtB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,KAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,MAAgC,EAAA;IAAhC,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAgC,GAAA,IAAA,CAAA,EAAA;;;IAC3C,gBAAA,OAAA,CAAA,CAAA,aAAO,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;;IACtD,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,KAAA,CAAA,SAAA,CAAA,aAAa,GAAb,UAAc,MAA0B,EAAE,QAAqB,EAAA;;;;;;IAC1D,wBAAA,EAAA,GAAA,OAAO,CAAA;IAAC,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA,CAAA;gCAA5C,OAAO,CAAA,CAAA,aAAA,EAAA,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,CAAQ,SAA6B,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAA,CAAC,CAAC,CAAA;;;IACxE,SAAA,CAAA,CAAA;SAAA,CAAA;QACJ,OAAA,KAAA,CAAA;IAAA,CAnDD,CAA2B,UAAkB,CAmD5C,CAAA;;;;;;;;;;;;;;;;;;;;;ICtDD,IAAA,SAAA,kBAAA,YAAA;IAQI,IAAA,SAAA,SAAA,CAAsB,MAAc,EAAW,QAAgB,EAAW,WAAmB,EAAW,QAAoB,EAAA;IAAtG,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;IAAW,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;IAAW,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;IAAW,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;YACxH,IAAI,CAAC,EAAE,GAAG,IAAI5B,aAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;SAC1C;IAND,IAAA,MAAA,CAAA,cAAA,CAAI,SAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAV,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtC;;;IAAA,KAAA,CAAA,CAAA;IAMK,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;;;oBACF,MAAM,IAAI,KAAK,CAAC,cAAA,GAAe,IAAI,CAAC,EAAE,GAAuB,uBAAA,CAAC,CAAC;;IAClE,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,SAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;;;oBACF,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,MAAM,CAAC,CAAA;;IACtB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,SAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,QAAqB,EAAA;;;oBAChC,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,MAAM,CAAC,CAAA;;IACtB,SAAA,CAAA,CAAA;SAAA,CAAA;IAED,IAAA,SAAA,CAAA,SAAA,CAAA,aAAa,GAAb,UAAc,MAA0B,EAAE,QAAqB,EAAA;YAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC7C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SACtD,CAAA;QAED,SAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,MAA0B,EAAA;IAC/B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SACrC,CAAA;IAEK,IAAA,SAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;;;IACF,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;IACf,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,SAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;;;IACF,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;IACf,SAAA,CAAA,CAAA;SAAA,CAAA;IAED,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;YACI,OAAO;gBACH,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,CAAC;SACL,CAAA;QACJ,OAAA,SAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCYgC,kBAAM,kBAAA,YAAA;QAKf,SAAqB,MAAA,CAAA,SAAyB,EAAW,cAA8B,EAAA;;IAAlE,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgB;IAAW,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;IACnF,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,cAAc,CAAC,CAAC;SACpE;IAEK,IAAA,MAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAM,MAAgB,EAAE,WAA0B,EAAE,QAA2B,EAAA;IAAvD,QAAA,IAAA,WAAA,KAAA,KAAA,CAAA,EAAA,EAAA,WAA0B,GAAA,IAAA,CAAA,EAAA;IAAE,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAA2B,GAAA,IAAA,CAAA,EAAA;;;;;;IAC3E,wBAAA,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,wBAAA,OAAA,CAAA,CAAA,YAAM,cAAc,CAAC,MAAM,CAAC,CAAA,CAAA;;IAArC,wBAAA,MAAM,GAAG,EAA4B,CAAA,IAAA,EAAA,CAAA;4BACvC,QAAQ,GAAG,EAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAc,CAAC;;;;IAE1C,wBAAA,OAAA,CAAA,CAAA,YAAMZ,sBAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA,CAAA;;4BAA1D,QAAQ,GAAG,SAA+C,CAAC;;;;IAE3D,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IAChB,4BAAA,MAAM,2BAA2B,CAAC;IACrC,yBAAA;IACD,wBAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,GAAC,CAAC,CAAC;;;IAEhD,wBAAA,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;4BAC1B,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;;;IACxD,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,MAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,MAAc,EAAE,QAA2B,EAAE,WAA0B,EAAA;IAAvD,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAA2B,GAAA,IAAA,CAAA,EAAA;IAAE,QAAA,IAAA,WAAA,KAAA,KAAA,CAAA,EAAA,EAAA,WAA0B,GAAA,IAAA,CAAA,EAAA;;;;;;4BACjF,QAAQ,GAAG,EAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAc,CAAC;;;;IAE1C,wBAAA,OAAA,CAAA,CAAA,YAAMA,sBAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA,CAAA;;4BAA1D,QAAQ,GAAG,SAA+C,CAAC;;;;IAE3D,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IAChB,4BAAA,MAAM,2BAA2B,CAAC;IACrC,yBAAA;IACD,wBAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,GAAC,CAAC,CAAC;;;IAEhD,wBAAA,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IACjB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA,CAAA;;4BAAtE,MAAM,GAAG,SAA6D,CAAC;IACvE,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;;;IAClE,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,MAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAW,EAAE,QAA2B,EAAA;IAA3B,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAA2B,GAAA,IAAA,CAAA,EAAA;;;;;gCACnC,OAAM,CAAA,CAAA,YAAAa,yBAAK,CAAC,EAAE,GAAG,EAAA,GAAA,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAA,CAAA;;IAA3D,wBAAA,MAAM,GAAG,CAAC,EAAiD,CAAA,IAAA,EAAA,EAAE,IAAc,CAAA;4BACjF,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;;;IAC7C,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,MAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,GAAW,EAAE,WAA0B,EAAA;IAA1B,QAAA,IAAA,WAAA,KAAA,KAAA,CAAA,EAAA,EAAA,WAA0B,GAAA,IAAA,CAAA,EAAA;;;;;gCACpC,OAAM,CAAA,CAAA,YAAAA,yBAAK,CAAC,EAAE,GAAG,EAAA,GAAA,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAA,CAAA;;IAA3D,wBAAA,MAAM,GAAG,CAAC,EAAiD,CAAA,IAAA,EAAA,EAAE,IAAc,CAAA;4BAC3E,QAAQ,GAAG,EAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAc,CAAC;;;;IAE1C,wBAAA,OAAA,CAAA,CAAA,YAAMb,sBAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA,CAAA;;4BAA1D,QAAQ,GAAG,SAA+C,CAAC;;;;IAE3D,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IAChB,4BAAA,MAAM,2BAA2B,CAAC;IACrC,yBAAA;IACD,wBAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,GAAC,CAAC,CAAC;;;IAE1C,wBAAA,QAAQ,GAAe;IACzB,4BAAA,QAAQ,EAAE,GAAG;gCACb,SAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE;6BACzC,CAAC;IACO,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA,CAAA;;4BAAtE,MAAM,GAAG,SAA6D,CAAC;IACvE,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;;;IAC9D,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,MAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,EAAU,EAAA;;;oBACjB,OAAO,CAAA,CAAA,aAAA,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,IAAIpB,aAAQ,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAA;;IAC1D,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,MAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,KAA0B,EAAA;;;;;gCACpB,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA;;IAA3C,wBAAA,IAAI,GAAG,EAAoC,CAAA,IAAA,EAAA,CAAA;4BACjD,OAAO,CAAA,CAAA,aAAA,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;;;IACjF,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,MAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,KAA0B,EAAA;;;;;;;4BAC/B,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,wBAAA,OAAA,CAAA,CAAA,YAAM,MAAM,CAAC,OAAO,EAAE,CAAA,CAAA;;IAA9B,wBAAA,KAAK,GAAG,CAAA,EAAsB,CAAA,IAAA,EAAA,KAAI,EAAE,CAAA;4BACpC,MAAM,GAAa,EAAE,CAAC;;IAC5B,4BAAA,KAAiB,OAAA,GAAA,QAAA,CAAA,KAAK,CAAA,EAAE,SAAA,GAAA,OAAA,CAAA,IAAA,EAAA,EAAA,CAAA,SAAA,CAAA,IAAA,EAAA,SAAA,GAAA,OAAA,CAAA,IAAA,EAAA,EAAA;oCAAf,IAAI,GAAA,SAAA,CAAA,KAAA,CAAA;IACT,gCAAA,IAAI,CAAC,IAAI;wCAAE,SAAS;oCACpB,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,6BAAA;;;;;;;;;IACD,wBAAA,OAAA,CAAA,CAAA,aAAO,MAAM,CAAC,CAAA;;;IACjB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,MAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAA0B,EAAA;;;;;IACxB,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,CAAA;;IAAnC,wBAAA,MAAM,GAAG,EAA0B,CAAA,IAAA,EAAA,CAAA;4BACzC,OAAO,CAAA,CAAA,aAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,EAAE,GAAA,CAAC,CAAC,CAAC,CAAA;;;IACnD,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,MAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,EAAU,EAAA;;;;;IACL,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAA;;IAA3B,wBAAA,KAAK,GAAG,EAAmB,CAAA,IAAA,EAAA,CAAA;IACjC,wBAAA,IAAI,CAAC,KAAK;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IACxB,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;;;IACzB,SAAA,CAAA,CAAA;SAAA,CAAA;IAEe,IAAA,MAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,MAAgB,EAAE,QAAmB,EAAE,QAAoB,EAAA;;;oBA4BjF,KAAA,GAAA,IAAA,CAAA;;IA3BS,gBAAA,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACzC,gBAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACrB,oBAAA,aAAa,EAAE,CAAC;IAChB,oBAAA,aAAa,EAAE,IAAI;IACnB,oBAAA,YAAY,EAAE,IAAI;IACrB,iBAAA,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACnB,gBAAA,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,IAAIA,aAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;IACtE,gBAAA,QAAQ,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;IACjD,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,OAAO,EAAU,UAAC,OAAO,EAAE,MAAM,EAAA;IACxC,wBAAA,IAAM,cAAc,GAAG,KAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvE,wBAAA,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;IACtB,6BAAA,EAAE,CAAC,OAAO,EAAE,UAAA,KAAK,EAAA;IACd,4BAAA,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IACnC,yBAAC,CAAC;iCACD,EAAE,CAAC,QAAQ,EAAE,YAAA;gCACV,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,EAAc,EAAE;oCACnD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;IAC3B,gCAAA,WAAW,EAAA,WAAA;IACX,gCAAA,QAAQ,EAAA,QAAA;iCACX,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,MAAM,CAAC,CAAC;IACjC,4BAAA,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAA;oCACd,OAAO,CAAC,KAAK,CAAC,CAAC;iCAClB,EAAE,UAAA,KAAK,EAAA;IACJ,gCAAA,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IACnC,6BAAC,CAAC,CAAC;IACP,yBAAC,CAAC,CAAC;yBACV,EAAE,CAAC,CAAA;;IACP,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,MAAA,CAAA;SAAA;AA7HYgC,kBAAM,GAAA/C,YAAA,CAAA;IAFlB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;QAMErC,YAAA,CAAA,mBAAA,EAAA,CAAAyC,sBAAc,EAA2BR,sBAAc,CAAA,CAAA;KAL9E,EAAAY,cAAM,CA6HlB;;;;;;;;;;;;;;;;;;;;;ICpID,IAAA,SAAA,kBAAA,UAAA,MAAA,EAAA;QAA+B,SAAsB,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA;QAsBjD,SAAY,SAAA,CAAA,EAAY,EACZ,IAAyB,EACzB,UAAsB,EACZ,MAAc,EACd,UAAsB,EAAA;IAJ5C,QAAA,IAAA,KAAA,GAKI,kBAAM,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAC9B,IAAA,CAAA;IAHqB,QAAA,KAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;IACd,QAAA,KAAU,CAAA,UAAA,GAAV,UAAU,CAAY;;SAE3C;IA1BD,IAAA,MAAA,CAAA,cAAA,CAAI,SAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAX,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC5B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,SAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAAb,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;aAC9B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,SAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAV,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aAC3B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,SAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAAd,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;aAC/B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,SAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAX,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC5B;;;IAAA,KAAA,CAAA,CAAA;IAUK,IAAA,SAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;;;;IACF,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;IACd,wBAAA,IAAA,CAAA,CAAC,IAAI,CAAC,UAAU,EAAhB,OAAgB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAChB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC,CAAC,CAAA,CAAA;;IAAhD,wBAAA,EAAA,CAAA,IAAA,EAAgD,CAAC;;IAErD,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAIhC,aAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;;;IAC3E,SAAA,CAAA,CAAA;SAAA,CAAA;IAED,IAAA,SAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;YAAA,IAYC,KAAA,GAAA,IAAA,CAAA;IAXG,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAA;gBACb,IAAI,KAAI,CAAC,OAAO;oBAAE,OAAO;IACzB,YAAA,KAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC,EAAA;IACvC,gBAAA,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,MAAM,EAAE,CAAC;IAChB,aAAC,CAAC,CAAC;IACH,YAAA,KAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAA;oBACjC,OAAO,CAAC,GAAG,CAAC,iCAAA,GAAkC,KAAI,CAAC,EAAI,CAAC,CAAC;IAC7D,aAAC,CAAC,CAAC,KAAK,CAAC,UAAA,MAAM,EAAA;oBACX,OAAO,CAAC,GAAG,CAAC,qCAAsC,GAAA,KAAI,CAAC,EAAE,GAAA,YAAA,GAAa,MAAQ,CAAC,CAAC;IACpF,aAAC,CAAC,CAAC;IACP,SAAC,CAAC,CAAC;SACN,CAAA;IAEK,IAAA,SAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;;;;IACF,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;4BAClB,IAAI,IAAI,CAAC,OAAO;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;4BAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;gCACd,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,yBAAA;iCACG,IAAI,CAAC,UAAU,EAAf,OAAe,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;4BACf,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,CAAA;;IAAnD,wBAAA,EAAA,CAAA,IAAA,EAAmD,CAAC;IACpD,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IAE5B,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA,CAAA;;IAApC,wBAAA,EAAA,CAAA,IAAA,EAAoC,CAAC;IACrC,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;;;IAC3B,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,SAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAa,EAAA;;;;;4BAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IAC7B,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;IAClB,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,CAAA;;;IAChB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEe,SAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,QAAiB,EAAA;;;;;;4BACjD,EAAA,GAAA,IAAI,CAAC,IAAI,CAAA;IAAe,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA,CAAA;;IAAtD,wBAAA,EAAA,CAAU,UAAU,GAAG,CAAC,SAA8B,EAAE,EAAE,CAAC;IAC3D,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACzB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;IAClB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA,EAAA,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,UAAA,EAAA,CAAA,CAAE,CAAA,CAAA;;IAApH,wBAAA,EAAA,CAAA,IAAA,EAAoH,CAAC;;;;IACxH,SAAA,CAAA,CAAA;SAAA,CAAA;QACJ,OAAA,SAAA,CAAA;IAAA,CA9ED,CAA+B,UAAsB,CA8EpD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtDYkC,sBAAU,kBAAA,YAAA;IAcnB,IAAA,SAAA,UAAA,CAAqB,MAAqB,EAAiC,SAA8B,EAAkB,QAAsB,EAAA;YAAjJ,IAoBC,KAAA,GAAA,IAAA,CAAA;IApBoB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;IAAiC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAqB;IACrG,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,OAAO,EAAA;IAC1C,YAAA,IAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,YAAA,GAAG,CAAC,OAAO,CAAC,GAAG,UAAC,SAAoB,EAAE,QAAgB,EAAA;IAClD,gBAAA,IAAM,GAAG,GAAG,KAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClE,gBAAA,IAAM,aAAa,GAAmB;IAClC,oBAAA,WAAW,EAAE,UAAC,OAAe,EAAE,MAAqB,EAAA;IAChD,wBAAA,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,wBAAA,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;yBAC3D;qBACJ,CAAC;oBACF,aAAa,CAAC,WAAW,CAAC,aAAa,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC;IAC1D,gBAAA,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACtC,aAAC,CAAA;IACD,YAAA,OAAO,GAAG,CAAC;aACd,EAAE,EAAE,CAAC,CAAC;IACP,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI9B,YAAO,EAAkB,CAAC;IAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SACvD;IAED,IAAA,UAAA,CAAA,SAAA,CAAA,EAAE,GAAF,UAAG,OAAe,EAAE,EAAiC,EAAA;YACjD,OAAO,IAAI,CAAC,QAAQ;IACf,aAAA,IAAI,CAAC+B,gBAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,OAAO,KAAK,OAAO,CAArB,EAAqB,CAAC,CAAC;IACxC,aAAA,IAAI,CAACC,aAAG,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,MAAM,CAAR,EAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SAC/C,CAAA;IAEK,IAAA,UAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,OAAmB,EAAE,MAAsB,EAAA;IAAtB,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAsB,GAAA,EAAA,CAAA,EAAA;;;;oBACjD,QAAQ,GAAS,IAAI,CAAC;oBAC1B,IAAI;wBACA,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvD,iBAAA;IAAC,gBAAA,OAAO,CAAC,EAAE;IACF,oBAAA,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;wBAC5C,MAAM,gCAAA,GAAiC,OAAO,GAAA,iBAAA,GAAkB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAa,YAAA,GAAA,CAAG,CAAC;IAC1G,iBAAA;IACD,gBAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;;IAC7B,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,UAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,IAAY,EAAE,MAAsB,EAAA;IAAtB,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAsB,GAAA,EAAA,CAAA,EAAA;;;IACtD,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;;IAC5E,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,UAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,OAAmB,EAAE,MAAsB,EAAA;IAAtB,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAsB,GAAA,EAAA,CAAA,EAAA;;;IACrD,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;;IAC9E,SAAA,CAAA,CAAA;SAAA,CAAA;IAED,IAAA,UAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,MAAuB,EAAE,IAAqB,EAAE,UAA2B,EAAE,KAAsB,EAAE,SAA0B,EAAE,OAAmB,EAAE,MAAsB,EAAA;YAArL,IAqBC,KAAA,GAAA,IAAA,CAAA;IArB8J,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAsB,GAAA,EAAA,CAAA,EAAA;IACjL,QAAA,IAAM,UAAU,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;IACjE,YAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;oBACb,IAAM,KAAK,GAAG,CAAqB,CAAC;IACpC,gBAAA,OAAO,CAAG,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,GAAA,IAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAE,CAAC;IAChD,aAAA;IACD,YAAA,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;IACZ,gBAAA,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,aAAA;gBACD,OAAO,EAAA,GAAG,CAAG,CAAC;IAClB,SAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,QAAA,IAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAA,IAAI,CAACC,iBAAQ,CAAC,UAAU,CAAC,EAAE;IACvB,YAAA,OAAO,CAAC,GAAG,CAAC,+BAA6B,OAAO,GAAA,uCAAuC,CAAC,CAAC;IACzF,YAAA,OAAO,IAAI,CAAC;IACf,SAAA;YACD,OAAOC,iBAAQ,CAAC,UAAU,EAAE,YAAA;gBACxB,KAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,UAAA,CAAC,EAAA;oBACjC,OAAO,CAAC,GAAG,CAAC,sBAAA,GAAuB,OAAO,GAAc,aAAA,GAAA,CAAG,CAAC,CAAC;IACjE,aAAC,CAAC,CAAC;IACP,SAAC,CAAC,CAAC;SACN,CAAA;IAEK,IAAA,UAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;;;oBAwCL,KAAA,GAAA,IAAA,CAAA;;;;4BAvCG,IAAI,IAAI,CAAC,UAAU;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IACjC,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;4BAEvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;IAClC,4BAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,qEAAqE,EAAE7B,oBAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACjH,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IACf,yBAAA;4BAEK,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;4BAC5C,QAAQ,GAAM,IAAI,GAAA,GAAA,GAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAG,CAAC;IACjE,wBAAA,IAAI,CAAC,UAAU,GAAG8B,aAAM,CAAC,MAAM,CAAC,CAAC;4BACjC,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA,CAAA;;IAAvC,wBAAA,EAAA,CAAA,IAAA,EAAuC,CAAC;IACxC,wBAAA,OAAO,CAAC,GAAG,CAAC,gCAAiC,GAAA,QAAU,CAAC,CAAC;4BAEnD,QAAQ,GAAM,IAAI,GAAA,GAAA,GAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAG,CAAC;IAC7D,wBAAA,IAAI,CAAC,UAAU,GAAGA,aAAM,CAAC,MAAM,CAAC,CAAC;4BACjC,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA,CAAA;;IAAvC,wBAAA,EAAA,CAAA,IAAA,EAAuC,CAAC;IACxC,wBAAA,OAAO,CAAC,GAAG,CAAC,gCAAiC,GAAA,QAAU,CAAC,CAAC;4BAEzD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,UAAO,IAAY,EAAE,IAAY,EAAE,MAAc,EAAI,EAAA,OAAAnD,WAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;;IAErE,wCAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,wCAAA,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc,CAAC;4CAC3D,QAAQ,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE1C,wCAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4CACvB,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,qCAAsC,GAAA,QAAQ,CAAC,OAAO,EAAEqB,oBAAY,CAAC,MAAM,CAAC,GAAiB,gBAAA,GAAA,aAAa,CAAC,SAAS,CAAC,GAAM,MAAA,CAAC,CAAC;;;;4CAGnJ,OAAM,CAAA,CAAA,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA,CAAA;;IAApG,wCAAA,EAAA,CAAA,IAAA,EAAoG,CAAC;IACrG,wCAAA,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,yCAAuC,QAAQ,CAAC,OAAO,EAAEA,oBAAY,CAAC,MAAM,CAAC,GAAA,MAAM,CAAC,CAAC;;;;IAE/G,wCAAA,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,yBAAA,GAA0B,QAAQ,CAAC,OAAO,EAAEA,oBAAY,CAAC,KAAK,CAAC,UAAK,GAAC,GAAA,MAAM,CAAC,CAAC;;;IAE3G,wCAAA,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;;;;4CAE1B,OAAO,CAAC,GAAG,CAAC,uBAAA,GAAwB,GAAC,CAAC,OAAS,CAAC,CAAC;;;;;6BAExD,CAAA,CAAA,EAAA,CAAC,CAAC;;;;IACN,SAAA,CAAA,CAAA;SAAA,CAAA;IAED,IAAA,UAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UAAW,OAAmB,EAAE,MAAiB,EAAA;IAC7C,QAAA,IAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACrB,MAAM,4BAAA,GAA6B,OAAO,GAAA,2BAA2B,CAAC;IACzE,SAAA;YACD,IAAI;IACA,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5C,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;gBACR,MAAM,gCAAA,GAAiC,OAAO,GAAA,iBAAA,GAAkB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAa,YAAA,GAAA,CAAG,CAAC;IAC1G,SAAA;IACD,QAAA,OAAO,OAAO,CAAC;SAClB,CAAA;IAES,IAAA,UAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,UAAmB,OAAe,EAAE,MAAiB,EAAA;YAC3D,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,IAAI,EAAA;IACnC,YAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;IAC/C,SAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE;gBACV,MAAM,iCAAA,GAAkC,OAAO,GAAA,2BAA2B,CAAC;IAC9E,SAAA;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SAClD,CAAA;IAES,IAAA,UAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,OAAmB,EAAE,MAAiB,EAAA;YAAxD,IAwBT,KAAA,GAAA,IAAA,CAAA;IAvBG,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACf,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5C,YAAA,IAAI,CAAC,OAAO,GAAG8B,aAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAiB,GAAA,IAAM,CAAC,CAAC;IAC3C,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA+B,GAAA,IAAM,CAAC,CAAC;IACtD,SAAA;IACD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACf,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACpD,YAAA,IAAI,CAAC,OAAO,GAAGA,aAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAiB,GAAA,QAAU,CAAC,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,IAAY,EAAE,IAAa,EAAA;oBACnD,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,gBAAA,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,MAAM,CAAC,KAAI,IAAI,CAAc,CAAC;IACvE,gBAAA,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,EAAA;wBACnD,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,oBAAA,OAAO,GAAG,CAAC;qBACd,EAAE,EAAE,CAAC,CAAC;IACP,gBAAA,OAAO,CAAC,GAAG,CAAC,uCAAoC,QAAQ,CAAC,OAAO,EAAE9B,oBAAY,CAAC,MAAM,CAAC,sBAAgB,aAAa,CAAC,UAAU,CAAC,GAAA,MAAM,CAAC,CAAC;IACvI,gBAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAA,OAAA,EAAE,MAAM,EAAA,MAAA,EAAC,CAAC,CAAC;IAC1C,aAAC,CAAC,CAAC;IACH,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA+B,GAAA,QAAU,CAAC,CAAC;IAC1D,SAAA;YACD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SAC3C,CAAA;IAES,IAAA,UAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,UAAmB,OAAmB,EAAE,MAAiB,EAAE,QAAqB,EAAA;IAArB,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAqB,GAAA,EAAA,CAAA,EAAA;YACtF,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAC,IAAI,EAAA;IACzB,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;IACvD,SAAC,CAAC,CAAC;YACH,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;IACrD,QAAA,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,CAAS,CAAC;SAC7C,CAAA;IAEe,IAAA,UAAA,CAAA,SAAA,CAAA,aAAa,GAAb,UAAc,OAAe,EAAE,MAAiB,EAAA;;;;;gCAC1C,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,OAAO,CAAA,CAAA;;IAA9B,wBAAA,SAAS,GAAG,EAAkB,CAAA,IAAA,EAAA,CAAA;IAC9B,wBAAA,QAAQ,GAAG,IAAIT,aAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,wBAAA,OAAA,CAAA,CAAA,YAAM,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA,CAAA;;IAAjE,wBAAA,EAAA,CAAA,IAAA,EAAiE,CAAC;IAClE,wBAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,CAAA;;;IACnB,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,UAAA,CAAA;SAAA;AA/LYkC,sBAAU,GAAAjD,YAAA,CAAA;IAFtB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;IAee,IAAAtC,SAAA,CAAA,CAAA,EAAAsD,eAAM,CAAC,YAAY,CAAC,CAAA,EAA2CtD,SAAA,CAAA,CAAA,EAAAyC,kBAAS,CAAC,GAAG,CAAC,CAAA;2CAA7FF,qBAAa,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;KAdjC,EAAAS,kBAAU,CA+LtB;;;;;;;;;;;;;;;;;;;;;IC3ND,IAAA,QAAA,kBAAA,UAAA,MAAA,EAAA;QAA8B,SAAqB,CAAA,QAAA,EAAA,MAAA,CAAA,CAAA;IAgC/C,IAAA,SAAA,QAAA,CAAY,EAAY,EACZ,IAAwB,EACxB,UAAsB,EAAA;IAC9B,QAAA,OAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAA,IAAA,CAAA;SAC9B;IAhCD,IAAA,MAAA,CAAA,cAAA,CAAI,QAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAX,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC5B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,QAAG,CAAA,SAAA,EAAA,KAAA,EAAA;IAAP,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aACxB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,QAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAX,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC5B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,QAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAAT,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;aAC1B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,QAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAZ,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,QAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAX,QAAA,GAAA,EAAA,YAAA;gBACI,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;aACvE;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,QAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAAb,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;aACrD;;;IAAA,KAAA,CAAA,CAAA;QAQD,QAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,aAA6B,EAAA;YAC1C,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;IACzD,QAAA,OAAO,IAAI,CAAC;SACf,CAAA;IAEK,IAAA,QAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,aAAqB,EAAE,GAAY,EAAE,OAAgB,EAAA;;;;;kCACrE,GAAG,IAAI,CAAC,IAAI,aAAa,GAAG,CAAC,CAAA,EAA7B,OAA6B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAC7B,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,CAAA;;IAAjC,wBAAA,EAAA,CAAA,IAAA,EAAiC,CAAC;;;IAElC,wBAAA,IAAA,EAAA,OAAO,KAAK,IAAI,CAAA,EAAhB,OAAgB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAChB,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC5B,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;;gCAEtB,OAAO,CAAA,CAAA,aAAA,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;;;IAC/E,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,QAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,GAAW,EAAA;;;;;4BACpB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;IACxB,4BAAA,MAAM,6CAA6C,CAAC;IACvD,yBAAA;IACD,wBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACpB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;;;;IACrB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,QAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,OAAe,EAAA;;;;;IAC5B,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC5B,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;;;;IACrB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,QAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,KAAa,EAAA;;;;;IACxB,wBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACxB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;;;;IACrB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,QAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,KAAiB,EAAA;IAAjB,QAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAiB,GAAA,CAAA,CAAA,EAAA;;;;;4BAC3B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;IAC5B,4BAAA,MAAM,wCAAwC,CAAC;IAClD,yBAAA;IACD,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;IAClB,wBAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IAC/C,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IAC7D,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;;;;IACrB,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,QAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;;;;;IACF,wBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;;;;IACrB,SAAA,CAAA,CAAA;SAAA,CAAA;IAED,IAAA,QAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;YACI,IAAI,IAAI,CAAC,aAAa,EAAE;IACpB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,SAAA;YACD,OAAO,MAAA,CAAA,SAAA,CAAM,IAAI,CAAA,IAAA,CAAA,IAAA,CAAE,CAAC;SACvB,CAAA;QACJ,OAAA,QAAA,CAAA;IAAA,CA7FD,CAA8B,UAAqB,CA6FlD,CAAA,CAAA;IAED,IAAA,WAAA,kBAAA,YAAA;IAoCI,IAAA,SAAA,WAAA,CAAsB,MAAiB,EAAY,YAAoB,EAAY,aAAqB,EAAY,IAAkB,EAAA;IAAlB,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAkB,GAAA,GAAA,CAAA,EAAA;IAAhH,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;IAAY,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAQ;IAAY,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;IAAY,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;YAClI,IAAI,YAAY,GAAG,CAAC,EAAE;IAClB,YAAA,MAAM,2CAA2C,CAAC;IACrD,SAAA;YACD,IAAI,aAAa,IAAI,CAAC,EAAE;IACpB,YAAA,MAAM,yCAAyC,CAAC;IACnD,SAAA;IACD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SACrB;IA1CD,IAAA,MAAA,CAAA,cAAA,CAAI,WAAE,CAAA,SAAA,EAAA,IAAA,EAAA;IAAN,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;aACzB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,WAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAX,QAAA,GAAA,EAAA,YAAA;gBACI,OAAO,IAAI,CAAC,QAAQ,CAAC;aACxB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,WAAG,CAAA,SAAA,EAAA,KAAA,EAAA;IAAP,QAAA,GAAA,EAAA,YAAA;gBACI,OAAO,IAAI,CAAC,IAAI,CAAC;aACpB;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,WAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAX,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;aAC9B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,WAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAAT,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aAC5B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,WAAO,CAAA,SAAA,EAAA,SAAA,EAAA;IAAX,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;aAC9B;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,WAAS,CAAA,SAAA,EAAA,WAAA,EAAA;IAAb,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;aACnC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,WAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;IAAZ,QAAA,GAAA,EAAA,YAAA;gBACI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC/C;;;IAAA,KAAA,CAAA,CAAA;QAcD,WAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,aAA6B,EAAA;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,IAAI,CAAC;IAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC5C,QAAA,OAAO,IAAI,CAAC;SACf,CAAA;IAEK,IAAA,WAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,aAAqB,EAAE,GAAY,EAAE,OAAgB,EAAA;;;;;kCACrE,GAAG,IAAI,CAAC,IAAI,aAAa,GAAG,CAAC,CAAA,EAA7B,OAA6B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAC7B,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,CAAA;;IAAjC,wBAAA,EAAA,CAAA,IAAA,EAAiC,CAAC;;;IAElC,wBAAA,IAAA,EAAA,OAAO,KAAK,IAAI,CAAA,EAAhB,OAAgB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAChB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,CAAA;;IAA9B,wBAAA,EAAA,CAAA,IAAA,EAA8B,CAAC;;gCAEnC,OAAO,CAAA,CAAA,aAAA,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;;;IAC/E,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,WAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,GAAW,EAAA;;;;;4BACpB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;IACxB,4BAAA,MAAM,6CAA6C,CAAC;IACvD,yBAAA;IACD,wBAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAChB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;;;;IACrB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,WAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,OAAe,EAAA;;;;;4BAC5B,IAAI,CAAC,IAAI,CAAC,MAAM;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;4BAC9B,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,CAAA;;IAArC,wBAAA,EAAA,CAAA,IAAA,EAAqC,CAAC;;;;IACzC,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,WAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,KAAa,EAAA;;;;;4BACxB,IAAI,CAAC,IAAI,CAAC,MAAM;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;4BAC9B,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,CAAA;;IAAjC,wBAAA,EAAA,CAAA,IAAA,EAAiC,CAAC;;;;IACrC,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,WAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,KAAiB,EAAA;IAAjB,QAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAiB,GAAA,CAAA,CAAA,EAAA;;;;;4BAC3B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;IAC5B,4BAAA,MAAM,wCAAwC,CAAC;IAClD,yBAAA;IACD,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;IAC1D,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;;;;IACrB,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,WAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;;;;;4BACF,IAAI,CAAC,IAAI,CAAC,MAAM;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IAC9B,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA,CAAA;;IAA1B,wBAAA,EAAA,CAAA,IAAA,EAA0B,CAAC;;;;IAC9B,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,WAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;;;;;;4BACI,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACpD,wBAAA,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;IACzE,wBAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;4BACpC,IAAI,WAAW,IAAI,OAAO;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;4BACxC,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA,CAAA;;IAAtC,wBAAA,EAAA,CAAA,IAAA,EAAsC,CAAA;;;;IACzC,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,WAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;;;IACF,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;IACf,SAAA,CAAA,CAAA;SAAA,CAAA;IAED,IAAA,WAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;IACI,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SAC/B,CAAA;QACJ,OAAA,WAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpMYO,sBAAU,kBAAA,YAAA;QAKnB,SAAqB,UAAA,CAAA,SAAyB,EAAW,MAAkB,EAAA;YAA3E,IAOC,KAAA,GAAA,IAAA,CAAA;IAPoB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgB;IAAW,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;YACvE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC9D,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,kBAAkB,EAAE,UAAA,QAAQ,EAAA;IACvC,YAAA,IAAM,EAAE,GAAG,QAAQ,CAAC,EAAY,CAAC;gBACjC,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAIzC,aAAQ,CAAC,EAAE,CAAC,EAAE,QAAe,EAAE,KAAI,CAAC,UAAU,CAAC,CAAC;IAC3F,SAAC,CAAC,CAAC;SACN;QAEK,UAAY,CAAA,SAAA,CAAA,YAAA,GAAZ,UAAa,EAAU,EAAA;;oBAgB5B,KAAA,GAAA,IAAA,CAAA;;oBAfG,OAAO,CAAA,CAAA,aAAA,OAAO,CAAC,IAAI,CAAC;IAChB,wBAAA,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,cAAW,OAAAZ,WAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;IAC5B,wCAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;kDAC/B,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAA,EAAnC,OAAmC,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IACxB,wCAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA,CAAA;;4CAA7B,QAAQ,GAAG,SAAkB,CAAC;;;4CAElC,IAAI,CAAC,QAAQ,EAAE;IACX,4CAAA,MAAM,IAAI,KAAK,CAAC,oCAAqC,GAAA,EAAI,CAAC,CAAC;IAC9D,yCAAA;IACD,wCAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,CAAA;;;IACnB,yBAAA,CAAA,CATmC,EASnC,EAAE,GAAG,CAAC;IACP,wBAAA,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,cAAW,OAAAA,WAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;oCAChC,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAA;;IACtC,yBAAA,CAAA,CAFmC,EAEnC,EAAE,EAAE,CAAC;IACT,qBAAA,CAAC,CAAC,CAAA;;IACN,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,UAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,EAAU,EAAA;;;oBAChB,OAAO,CAAA,CAAA,aAAA,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,IAAIY,aAAQ,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAA;;IAC1D,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,UAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,KAA6B,EAAA;;;;;gCACvB,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA;;IAA3C,wBAAA,IAAI,GAAG,EAAoC,CAAA,IAAA,EAAA,CAAA;4BACjD,OAAO,CAAA,CAAA,aAAA,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;;;IACvE,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,UAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,GAAiB,EAAA;IAAjB,QAAA,IAAA,GAAA,KAAA,KAAA,CAAA,EAAA,EAAA,GAAiB,GAAA,GAAA,CAAA,EAAA;;;;;;4BAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;IACxB,4BAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAClE,yBAAA;IACK,wBAAA,IAAI,GAAG;IACT,4BAAA,OAAO,EAAE,CAAC;IACV,4BAAA,GAAG,EAAE,GAAG;IACR,4BAAA,OAAO,EAAE,EAAE;IACX,4BAAA,KAAK,EAAE,EAAE;IACT,4BAAA,QAAQ,EAAE,KAAK;6BAClB,CAAC;4BACU,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAA;;IAA3C,wBAAA,GAAG,GAAG,EAAqC,CAAA,IAAA,EAAA,CAAA;IACjD,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;;;IAC9D,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,UAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,EAAU,EAAA;;;;IACnB,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,IAAIA,aAAQ,CAAC,EAAE,CAAC,EAAC,CAAC,CAAA,CAAA;;IAAxD,wBAAA,EAAA,CAAA,IAAA,EAAwD,CAAC;IACzD,wBAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;;;IACb,SAAA,CAAA,CAAA;SAAA,CAAA;IAEe,IAAA,UAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,EAAU,EAAE,EAA4B,EAAE,KAAa,EAAA;;;;;;4BAC/E,UAAU,GAAG,KAAK,CAAC;4BACnB,QAAQ,GAAc,IAAI,CAAC;4BAC3B,QAAQ,GAAW,CAAC,CAAC;;;IAClB,wBAAA,IAAA,CAAA,CAAC,UAAU,EAAA,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;4BACH,OAAM,CAAA,CAAA,YAAA,EAAE,EAAE,CAAA,CAAA;;4BAArB,QAAQ,GAAG,SAAU,CAAC;4BACtB,QAAQ,IAAI,KAAK,CAAC;IAClB,wBAAA,IAAI,QAAQ,EAAE;gCACV,IAAI,QAAQ,CAAC,KAAK,EAAE;IAChB,gCAAA,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,6BAAA;IACD,4BAAA,UAAU,GAAG,QAAQ,CAAC,OAAO,IAAI,GAAG,CAAC;IACxC,yBAAA;iCACG,CAAC,UAAU,EAAX,OAAW,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IACX,wBAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;IACpC,4BAAA,MAAM,IAAI,KAAK,CAAC,uBAAqB,EAAE,GAAA,mCAAmC,CAAC,CAAC;IAC/E,yBAAA;IACD,wBAAA,OAAA,CAAA,CAAA,YAAM,cAAc,CAAC,KAAK,CAAC,CAAA,CAAA;;IAA3B,wBAAA,EAAA,CAAA,IAAA,EAA2B,CAAC;;;IAGpC,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,CAAA;;;IACnB,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,UAAA,CAAA;SAAA;AAnFYyC,sBAAU,GAAAxD,YAAA,CAAA;IAFtB,IAAAqC,mBAAU,EAAE;IACZ,IAAAS,kBAAS,EAAE;QAMwB5C,YAAA,CAAA,mBAAA,EAAA,CAAAyC,sBAAc,EAAmBM,kBAAU,CAAA,CAAA;KALlE,EAAAO,kBAAU,CAmFtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFYC,sBAAU,kBAAA,YAAA;IAInB,IAAA,SAAA,UAAA,CAAqB,SAAyB,EACzB,MAAc,EACd,UAAsB,EACtB,MAAkB,EAAA;IAHlB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgB;IACzB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;IACd,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;IACtB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;YACnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;SACjE;IAEK,IAAA,UAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,OAAmB,EAAE,SAAyB,EAAE,MAAuB,EAAA;IAAlD,QAAA,IAAA,SAAA,KAAA,KAAA,CAAA,EAAA,EAAA,SAAyB,GAAA,EAAA,CAAA,EAAA;IAAE,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAuB,GAAA,MAAA,CAAA,EAAA;;;;;;IAC1E,wBAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,SAAS,CAAE,EAAA,EAAA,MAAM,EAAE,EAAE,IAAE,CAAC;IACtE,wBAAA,IAAI,GAAG;IACT,4BAAA,OAAO,EAAA,OAAA;IACP,4BAAA,SAAS,EAAA,SAAA;IACT,4BAAA,MAAM,EAAA,MAAA;6BACT,CAAC;IACoB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA;;IAArC,wBAAA,aAAa,GAAG,EAAqB,CAAA,IAAA,EAAA,CAAA;IAC3C,wBAAA,IAAI,aAAa;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,aAAa,CAAC,CAAA;4BAC5B,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAA;;IAA3C,wBAAA,GAAG,GAAG,EAAqC,CAAA,IAAA,EAAA,CAAA;4BACjD,OAAO,CAAA,CAAA,aAAA,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;;;IAC7F,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,UAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,EAAU,EAAA;;;oBACjB,OAAO,CAAA,CAAA,aAAA,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,IAAI1C,aAAQ,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAA;;IAC1D,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,UAAI,CAAA,SAAA,CAAA,IAAA,GAAJ,UAAK,KAA8B,EAAA;;;;;gCACxB,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA;;IAA3C,wBAAA,IAAI,GAAG,EAAoC,CAAA,IAAA,EAAA,CAAA;IACjD,wBAAA,OAAA,CAAA,CAAA,aAAO,CAAC,IAAI;IACR,kCAAE,IAAI;sCACJ,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;;;IACtF,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,UAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,EAAU,EAAA;;;;;IACL,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAA;;IAA3B,wBAAA,KAAK,GAAG,EAAmB,CAAA,IAAA,EAAA,CAAA;IACjC,wBAAA,IAAI,CAAC,KAAK;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IACxB,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;;;IACzB,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,UAAA,CAAA;SAAA;AAxCY0C,sBAAU,GAAAzD,YAAA,CAAA;IAFtB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;2CAKEI,sBAAc;YACjBI,cAAM;YACFS,kBAAU;IACd,QAAAP,kBAAU,CAAA,CAAA;KAP9B,EAAAQ,kBAAU,CAwCtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9CYC,yBAAa,kBAAA,YAAA;QAEtB,SAAqB,aAAA,CAAA,MAAc,EAAW,UAAsB,EAAA;IAA/C,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;IAAW,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;SAEnE;IAEK,IAAA,aAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,EAAU,EAAE,IAAqB,EAAA;IAArB,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAqB,GAAA,KAAA,CAAA,EAAA;;;;;;4BACvC,KAAK,GAAW,IAAI,CAAC;IACrB,wBAAA,IAAA,CAAA,IAAI,EAAJ,OAAI,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;4BACc,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAA;;IAA1C,wBAAA,SAAS,GAAG,EAA8B,CAAA,IAAA,EAAA,CAAA;IAChD,wBAAA,IAAI,CAAC,SAAS;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IAC5B,wBAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,SAAS,EAAE,CAAC,CAAA;gCAEzB,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAA;;4BAAlC,KAAK,GAAG,SAA0B,CAAC;iCAC/B,CAAC,KAAK,EAAN,OAAM,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;4BACY,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAA;;IAA1C,wBAAA,SAAS,GAAG,EAA8B,CAAA,IAAA,EAAA,CAAA;IAChD,wBAAA,IAAI,CAAC,SAAS;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IAC5B,wBAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,SAAS,EAAE,CAAC,CAAA;IAEjC,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,CAAA;;;IAChB,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,aAAA,CAAA;SAAA;AArBYA,yBAAa,GAAA1D,YAAA,CAAA;IAFzB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;QAGDrC,YAAA,CAAA,mBAAA,EAAA,CAAA6C,cAAM,EAAuBU,kBAAU,CAAA,CAAA;KAF3D,EAAAC,qBAAa,CAqBzB;;;;;;;;;;;;;;;;ICvBD,IAAM,OAAO,GAAGC,4BAAQ,CAAC;IACzB,IAAM,QAAQ,GAAGC,6BAAS,CAAC;AAIdC,2BAAe,kBAAA,YAAA;IAYxB,IAAA,SAAA,eAAA,GAAA;IACI,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,GAAGC,iBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5C;IAVD,IAAA,MAAA,CAAA,cAAA,CAAI,eAAE,CAAA,SAAA,EAAA,IAAA,EAAA;IAAN,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC;gBAC1E,OAAO,IAAI,CAAC,QAAQ,CAAC;aACxB;;;IAAA,KAAA,CAAA,CAAA;eAQJ,eAAA,CAAA;SAAA;AAhBYD,2BAAe,GAAA7D,YAAA,CAAA;IAF3B,IAAAqC,mBAAU,EAAE;IACZ,IAAAS,kBAAS,EAAE;;KACC,EAAAe,uBAAe,CAgB3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBYE,0BAAc,kBAAA,YAAA;;SAQ1B;QAPS,cAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,IAAS,EAAA;;;IACrB,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;IACf,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,cAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,IAAS,EAAA;;;IACvB,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;IACf,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,cAAA,CAAA;SAAA;AARYA,0BAAc,GAAA/D,YAAA,CAAA;IAF1B,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;KACrB,EAAAwB,sBAAc,CAQ1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACIYC,iBAAK,kBAAA,YAAA;IAId,IAAA,SAAA,KAAA,CAAqB,SAAyB,EAAY,MAAqB,EAAY,cAA8B,EAAA;IAApG,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgB;IAAY,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;IAAY,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;SAExH;IAEe,IAAA,KAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;;;;;4BACZ,IAAI,IAAI,CAAC,UAAU;gCAAE,OAAO,CAAA,CAAA,YAAA,CAAA;IAC5B,wBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC1B,4BAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACpE,yBAAA;4BACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC7F,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAC7B,EAAC,SAAS,EAAE,CAAC,EAAC,EACd,EAAC,kBAAkB,EAAE,CAAC,EAAC,CAC1B,CAAA,CAAA;;IAHD,wBAAA,EAAA,CAAA,IAAA,EAGC,CAAC;;;;IACL,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,KAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,GAAW,EAAE,KAAU,EAAE,GAAY,EAAE,mBAAkC,EAAE,IAAc,EAAA;IAAlD,QAAA,IAAA,mBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,mBAAkC,GAAA,IAAA,CAAA,EAAA;IAAE,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;;;;;IAC/F,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,OAAO,EAAE,CAAA,CAAA;;IAApB,wBAAA,EAAA,CAAA,IAAA,EAAoB,CAAC;;IAEjB,4BAAA,GAAG,EAAE,GAAG;;4BACF,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAA;;IAAhD,wBAAA,EAAA,CAAA,IAAI,GAAE,EAA0C,CAAA,IAAA,EAAA,CAAA;4BAC1C,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAA;;4BAH7C,IAAI,IAGN,EAAI,CAAA,IAAA,GAAE,EAAyC,CAAA,IAAA,EAAA;IAC/C,4BAAA,EAAA,CAAA,mBAAmB,GAAA,mBAAA;IACtB,4BAAA,EAAA,CAAA,CAAA;IACD,wBAAA,IAAI,GAAG,EAAE;IACC,4BAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,4BAAA,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9B,yBAAA;4BACD,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,GAAG,EAAC,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAA,CAAA;;IAAzE,wBAAA,EAAA,CAAA,IAAA,EAAyE,CAAC;IAC1E,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,CAAA;;;IAChB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,KAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,GAAW,EAAA;;;;;IACjB,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,OAAO,EAAE,CAAA,CAAA;;IAApB,wBAAA,EAAA,CAAA,IAAA,EAAoB,CAAC;IACV,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC,CAAA,CAAA;;IAAhD,wBAAA,IAAI,GAAG,EAAyC,CAAA,IAAA,EAAA,CAAA;IAC9C,wBAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;4BACpD,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE;gCAChD,IAAI,GAAG,IAAI,CAAC;IACf,yBAAA;4BACD,IAAI,CAAC,IAAI,EAAE;IACP,4BAAA,MAAM,IAAI,KAAK,CAAC,0CAA2C,GAAA,GAAK,CAAC,CAAC;IACrE,yBAAA;4BACM,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA;IAAvD,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAAgD,CAAC,CAAA;;;IAC3D,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,KAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,GAAW,EAAE,OAA2B,EAAE,GAAY,EAAE,mBAAkC,EAAE,IAAc,EAAA;IAAlD,QAAA,IAAA,mBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,mBAAkC,GAAA,IAAA,CAAA,EAAA;IAAE,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;;;;;;;IAE1G,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAA;IAA1B,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAAmB,CAAC,CAAA;;;4BAEd,EAAA,GAAA,IAAI,CAAC,GAAG,CAAA;kCAAC,GAAG,CAAA,CAAA;4BAAE,OAAM,CAAA,CAAA,YAAA,OAAO,EAAE,CAAA,CAAA;gCAAnC,OAAM,CAAA,CAAA,YAAA,EAAA,CAAA,KAAA,CAAA,IAAI,EAAA,EAAA,CAAA,MAAA,CAAA,CAAU,EAAe,CAAA,IAAA,EAAA,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAA,CAAA,CAAC,CAAA,CAAA;IAA3E,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAAoE,CAAC,CAAA;;;;IAEnF,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,KAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,GAAW,EAAA;;;;IACpB,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,OAAO,EAAE,CAAA,CAAA;;IAApB,wBAAA,EAAA,CAAA,IAAA,EAAoB,CAAC;IACrB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC,CAAA,CAAA;;IAA3C,wBAAA,EAAA,CAAA,IAAA,EAA2C,CAAC;;;;IAC/C,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,KAAA,CAAA;SAAA;AA7DYA,iBAAK,GAAAhE,YAAA,CAAA;IAFjB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;2CAKEI,sBAAc,EAAoBH,qBAAa,EAA4BuB,sBAAc,CAAA,CAAA;KAJhH,EAAAC,aAAK,CA6DjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxEYC,4BAAgB,kBAAA,YAAA;;SAK5B;QAHS,gBAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,GAAY,EAAA;;;oBACxB,OAAO,CAAC,GAAG,CAAC,6BAAA,GAA8B,GAAG,CAAC,SAAW,CAAC,CAAC;;;IAC9D,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,gBAAA,CAAA;SAAA;AALYA,4BAAgB,GAAAjE,YAAA,CAAA;IAF5B,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;KACrB,EAAA0B,wBAAgB,CAK5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLYC,oBAAQ,kBAAA,YAAA;IAEjB,IAAA,SAAA,QAAA,CAA0C,QAAoB,EAAA;IAApB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;SAE7D;IAEK,IAAA,QAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;;;;;;;4BACF,IAAI,CAAC,IAAI,CAAC,QAAQ;gCAAE,OAAO,CAAA,CAAA,YAAA,CAAA;;;;IAEP,wBAAA,EAAA,GAAA,QAAA,CAAA,IAAI,CAAC,QAAQ,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,CAAA;;;;4BAAxB,OAAO,GAAA,EAAA,CAAA,KAAA,CAAA;IACZ,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAC,IAAI,EAAE,CAAA,CAAA;;IAApB,wBAAA,EAAA,CAAA,IAAA,EAAoB,CAAC;;;;;;;;;;;;;;;;;;;IAE5B,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,QAAA,CAAA;SAAA;AAbYA,oBAAQ,GAAAlE,YAAA,CAAA;IAFpB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;IAGjB,IAAAtC,SAAA,CAAA,CAAA,EAAAyC,kBAAS,CAAC,OAAO,CAAC,CAAA;;KAFtB,EAAAwB,gBAAQ,CAapB;;;;;;;;;;;;;;;;;;;;;ICdD,IAAM9D,OAAK,GAAGC,0BAAM,CAAC;IACrB,IAAM,OAAO,GAAG,IAAI,CAAC;IACrB,IAAM,SAAS,GAAG,GAAG,CAAC;IAEtB,IAAA,YAAA,kBAAA,YAAA;IAMI,IAAA,SAAA,YAAA,CAAqB,MAAc,EAAE,IAAkB,EAAW,OAA6B,EAAA;IAA1E,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;IAA+B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsB;IAC3F,QAAA,IAAI,CAAC,KAAK,GAAG8D,OAAM,EAAE,CAAC;IACtB,QAAA,IAAI,CAAC,GAAG,GAAGA,OAAM,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC;SAC1E;QAEK,YAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,EAAU,EAAA;;;;;;IACZ,wBAAA,OAAO,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC;4BAE7B,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,CAAA;;IAAzC,wBAAA,IAAI,SAAqC,EAAE;gCACvC,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5C,yBAAA;IAEgB,wBAAA,EAAA,GAAA/D,OAAK,CAAA;IAAC,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA,CAAA;;IAAjD,wBAAA,QAAQ,GAAG,EAAM,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,IAAA,EAAgC,CAAC,CAAA,CAAC,MAAM,EAAE,CAAA;IACpD,wBAAA,OAAA,CAAA,CAAA,YAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA,CAAA;;IAAhC,wBAAA,IAAI,GAAG,EAAyB,CAAA,IAAA,EAAA,CAAA;4BAChC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;4BACjC,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;4BACzE,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IACnF,wBAAA,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;4BACnE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;4BAE/C,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;4BAC5C,OAAM,CAAA,CAAA,aAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC5C,gCAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3D,gCAAA,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC;IAC5D,gCAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;IAC5B,gCAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;iCACjC,CAAC,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAC,CAAA;;IAL7B,wBAAA,MAAM,GAAG,EAKoB,CAAA,IAAA,EAAA,CAAA;4BAEnC,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA,CAAA;;IAA/C,wBAAA,EAAA,CAAA,IAAA,EAA+C,CAAC;4BAChD,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;;;IAC5C,SAAA,CAAA,CAAA;SAAA,CAAA;QACJ,OAAA,YAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;;;;;;;;;;;;;;;ACxCYgE,wBAAY,kBAAA,YAAA;IAIrB,IAAA,SAAA,YAAA,GAAA;IACI,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACtB;QAED,YAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,GAAkB,EAAA;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;SAChC,CAAA;QAED,YAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,EAAU,EAAA;YACZ,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9B,QAAA,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACtC,CAAA;IAED,IAAA,YAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,MAAc,EAAE,UAAwB,EAAE,OAA6B,EAAA;YAC1E,IAAM,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5D,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,QAAA,OAAO,KAAK,CAAC;SAChB,CAAA;eACJ,YAAA,CAAA;SAAA;AAvBYA,wBAAY,GAAApE,YAAA,CAAA;IAFxB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;;KACrB,EAAA6B,oBAAY,CAuBxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICpBD,IAAM,KAAK,GAAG/D,0BAAM,CAAC;AAIRgE,mBAAO,kBAAA,YAAA;QAMhB,SAAqB,OAAA,CAAA,MAAqB,EAAW,YAA0B,EAAA;IAA1D,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;IAAW,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;IAC3E,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7C,QAAA,IAAI,CAAC,MAAM,GAAGC,SAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;SAClE;IAEK,IAAA,OAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,MAAc,EAAE,IAAyB,EAAA;IAAzB,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAyB,GAAA,IAAA,CAAA,EAAA;;oBAWxD,KAAA,GAAA,IAAA,CAAA;;IAVG,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAkB,UAAA,OAAO,EAAA;IAC3E,oBAAAC,QAAK,CAACD,SAAI,CAAC,KAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,UAAC,GAAG,EAAE,KAAK,EAAA;IACrC,wBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;gCAC7B,OAAO,CAAC,EAAE,CAAC,CAAC;gCACZ,OAAO;IACV,yBAAA;4BACD,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,YAAM,EAAA,OAAA,OAAO,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;IAC1E,qBAAC,CAAC,CAAC;IACP,iBAAC,CAAC,CAAC;IACH,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;;IAC7B,SAAA,CAAA,CAAA;SAAA,CAAA;IAES,IAAA,OAAA,CAAA,SAAA,CAAA,aAAa,GAAb,UAAc3D,MAAY,EAAE,MAAc,EAAE,IAAkB,EAAA;YAA9D,IAiFT,KAAA,GAAA,IAAA,CAAA;IAhFG,QAAA,OAAO,IAAI,OAAO,CAAkB,UAAA,OAAO,EAAA;IACvC,YAAA6D,UAAO,CAACF,SAAI,CAAC,KAAI,CAAC,GAAG,EAAE3D,MAAI,CAAC,EAAE,UAAC,GAAG,EAAE,KAAK,EAAA;IACrC,gBAAA,IAAI,GAAG,EAAE;wBACL,OAAO,CAAC,EAAE,CAAC,CAAC;wBACZ,OAAO;IACV,iBAAA;IACD,gBAAA,IAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAA;IAC3B,oBAAA,OAAO,IAAI,OAAO,CAAkB,UAAM,OAAO,IAAG,OAAAR,WAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;4BAAA,IAkEnD,KAAA,GAAA,IAAA,CAAA;;IAjES,4BAAA,QAAQ,GAAGmE,SAAI,CAAC3D,MAAI,EAAE,IAAI,CAAC,CAAC;gCAC5B,gBAAgB,GAAG2D,SAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClD,4BAAAC,QAAK,CAAC,gBAAgB,EAAE,UAAC,GAAG,EAAE,KAAK,EAAA;IAC/B,gCAAA,IAAI,GAAG,EAAE;wCACL,OAAO,CAAC,EAAE,CAAC,CAAC;wCACZ,OAAO;IACV,iCAAA;IACD,gCAAA,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE;IACrB,oCAAA,KAAI,CAAC,aAAa,CAAC,QAAQ,EAAED,SAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wCACrE,OAAO;IACV,iCAAA;IACD,gCAAA,IAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;oCACzC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,YAAA;wCAC9B,IAAM,aAAa,GAAG,UAAC,OAAO,EAAA;IAC1B,wCAAA,OAAOA,SAAI,CAAC,KAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,GAAG,EAAA;gDACvE,IAAM,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;IACzC,4CAAA,OAAO,GAAI,GAAA,MAAM,GAAG,GAAK,CAAC;6CAC7B,CAAC,CAAC,CAAC;IACR,qCAAC,CAAC;wCACF,OAAO,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;IAC5C,4CAAA,WAAW,EAAE,YAAA;IACT,gDAAA,OAAO,IAAI,OAAO,CAAS,UAAC,GAAG,EAAE,GAAG,EAAA;IAChC,oDAAAG,WAAQ,CAAC,gBAAgB,EAAE,UAAC,GAAG,EAAE,IAAI,EAAA;IACjC,wDAAA,IAAI,GAAG,EAAE;gEACL,GAAG,CAAC,GAAG,CAAC,CAAC;gEACT,OAAO;IACV,yDAAA;4DACD,GAAG,CAAC,IAAI,CAAC,CAAC;IACd,qDAAC,CAAC,CAAC;IACP,iDAAC,CAAC,CAAC;iDACN;IACD,4CAAA,WAAW,EAAE,UAAC,OAAgB,EAAE,MAAc,EAAA;IAC1C,gDAAA,OAAO,IAAI,OAAO,CAAO,UAAO,GAAG,EAAE,GAAG,EAAI,EAAA,OAAAtE,WAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;IAClC,gEAAA,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,gEAAA,OAAA,CAAA,CAAA,YAAM,cAAc,CAACS,YAAO,CAAC,UAAU,CAAC,CAAC,CAAA,CAAA;;IAAzC,gEAAA,EAAA,CAAA,IAAA,EAAyC,CAAC;IAC1C,gEAAA8D,YAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAA,GAAG,EAAA;IAC7B,oEAAA,IAAI,GAAG,EAAE;4EACL,GAAG,CAAC,GAAG,CAAC,CAAC;4EACT,OAAO;IACV,qEAAA;IACD,oEAAA,GAAG,EAAE,CAAC;IACV,iEAAC,CAAC,CAAC;;;;qDACN,CAAA,CAAA,EAAA,CAAC,CAAC;iDACN;gDACD,SAAS,EAAE,UAAC,OAAgB,EAAA;IACxB,gDAAA,OAAO,IAAI,OAAO,CAAU,UAAA,GAAG,EAAA;wDAC3BC,SAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAEC,YAAS,CAAC,IAAI,EAAE,UAAA,GAAG,EAAA;IAC9C,wDAAA,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACd,qDAAC,CAAC,CAAC;IACP,iDAAC,CAAC,CAAC;iDACN;gDACD,WAAW,EAAE,UAAC,OAAgB,EAAA;IAC1B,gDAAA,OAAO,IAAI,OAAO,CAAS,UAAC,GAAG,EAAE,GAAG,EAAA;wDAChCH,WAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,UAAC,GAAG,EAAE,IAAI,EAAA;IACvC,wDAAA,IAAI,GAAG,EAAE;gEACL,GAAG,CAAC,GAAG,CAAC,CAAC;gEACT,OAAO;IACV,yDAAA;4DACD,GAAG,CAAC,IAAI,CAAC,CAAC;IACd,qDAAC,CAAC,CAAC;IACP,iDAAC,CAAC,CAAC;iDACN;6CACJ,CAAC,CAAC,CAAC,CAAC;qCACR,EAAE,YAAM,EAAA,OAAA,OAAO,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;IAC1B,6BAAC,CAAC,CAAC;;;yBACN,CAAA,CAAA,EAAA,CAAC,CAAC;IACP,iBAAC,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAA,OAAO,EAAA;IAC9B,oBAAA,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C,iBAAC,CAAC,CAAC;IACP,aAAC,CAAC,CAAC;IACP,SAAC,CAAC,CAAC;SACN,CAAA;eACJ,OAAA,CAAA;SAAA;AA3GYJ,mBAAO,GAAArE,YAAA,CAAA;IAFnB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;QAODrC,YAAA,CAAA,mBAAA,EAAA,CAAAsC,qBAAa,EAAyB4B,oBAAY,CAAA,CAAA;KANtE,EAAAC,eAAO,CA2GnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClHYQ,uBAAW,kBAAA,YAAA;IAOpB,IAAA,SAAA,WAAA,CAAqB,MAAqB,EAAA;IAArB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;YACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAC1C;QAEK,WAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,OAAyC,EAAA;;;;;;4BAChD,EAAE,GAAG,IAAI,CAAC;4BACV,KAAK,GAAG,CAAC,CAAC;4BACV,OAAO,GAAG,IAAI,CAAC;;;IACZ,wBAAA,IAAA,EAAA,OAAO,IAAI,KAAK,GAAG,CAAC,CAAA,EAAA,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IACvB,wBAAA,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACb,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAC,EAAE,CAAC,CAAA,CAAA;;4BAA3B,OAAO,GAAG,SAAiB,CAAC;IAC5B,wBAAA,KAAK,EAAE,CAAC;;;IAEZ,wBAAA,IAAI,OAAO,EAAE;IACT,4BAAA,MAAM,kCAAkC,CAAC;IAC5C,yBAAA;IACD,wBAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;;;IACb,SAAA,CAAA,CAAA;SAAA,CAAA;IAEO,IAAA,WAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;YAAA,IASP,KAAA,GAAA,IAAA,CAAA;YARG,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,GAAG,EAAA;gBACnC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;IAC1B,gBAAA,IAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,gBAAA,CAAC,IAAI,KAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvB,aAAA;IACD,YAAA,OAAO,CAAC,CAAC;aACZ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3B,CAAA;eACJ,WAAA,CAAA;SAAA;AAvCYA,uBAAW,GAAA7E,YAAA,CAAA;IAFvB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;2CAQDC,qBAAa,CAAA,CAAA;KAPjC,EAAAqC,mBAAW,CAuCvB;;;;;;;;;;;;;;;;ACtCYC,+BAAmB,kBAAA,YAAA;IAI5B,IAAA,SAAA,mBAAA,CAAqB,MAAqB,EAAA;IAArB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;IACtC,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACnB;QAED,mBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,QAAgB,EAAA;YAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI9B,yBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAClI,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,CAAN,EAAM,EACX,UAAA,MAAM,EAAI,EAAA,QAAC;IACP,YAAA,OAAO,EAAE,MAAM;aAClB,EAAC,EAAA,CACL,CAAC;IACF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC/B,CAAA;eACJ,mBAAA,CAAA;SAAA;AAjBY8B,+BAAmB,GAAA9E,YAAA,CAAA;IAF/B,IAAAqC,mBAAU,EAAE;IACZ,IAAAS,kBAAS,EAAE;2CAKqBN,qBAAa,CAAA,CAAA;KAJjC,EAAAsC,2BAAmB,CAiB/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBYC,sBAAU,kBAAA,YAAA;IAInB,IAAA,SAAA,UAAA,CAAoB,mBAAwC,EAAA;IAAxC,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;IACxD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACnB;QAEK,UAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,QAAgB,EAAA;;;;;gCACb,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA,CAAA;;IAAnE,wBAAA,UAAU,GAAG,EAAsD,CAAA,IAAA,EAAA,CAAA;IACzE,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;IAClC,wBAAA,OAAA,CAAA,CAAA,aAAO,UAAU,CAAC,CAAA;;;IACrB,SAAA,CAAA,CAAA;SAAA,CAAA;IAED,IAAA,UAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,UAAmB,QAAgB,EAAE,GAAW,EAAE,MAAY,EAAA;YAC1D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;IAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA0B,CAAC,CAAC;IAC/C,SAAA;YACD,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAA,IAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;YAC1D,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;SAChD,CAAA;IAED,IAAA,UAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,QAAgB,EAAE,GAAW,EAAE,MAAY,EAAA;YAA1D,IAQC,KAAA,GAAA,IAAA,CAAA;YAPG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;IAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA0B,CAAC,CAAC;IAC/C,SAAA;YACD,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAA,UAAU,EAAA;IAC/C,YAAA,IAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;gBAC1D,OAAO,KAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACjD,SAAC,CAAC,CAAC;SACN,CAAA;QAED,UAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,QAAgB,EAAA;YAAhC,IASC,KAAA,GAAA,IAAA,CAAA;YATiC,IAAiB,IAAA,GAAA,EAAA,CAAA;iBAAjB,IAAiB,EAAA,GAAA,CAAA,EAAjB,EAAiB,GAAA,SAAA,CAAA,MAAA,EAAjB,EAAiB,EAAA,EAAA;gBAAjB,IAAiB,CAAA,EAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;IAC/C,QAAA,OAAO,IAAI,OAAO,CAAgB,UAAA,OAAO,EAAA;gBACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,GAAG,EAAI,EAAA,OAAA,KAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAlC,EAAkC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,YAAY,EAAA;oBAC9E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAA;wBAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,oBAAA,OAAO,MAAM,CAAC;IAClB,iBAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACZ,aAAC,CAAC,CAAC;IACP,SAAC,CAAC,CAAC;SACN,CAAA;IAES,IAAA,UAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,IAAuB,EAAE,MAAY,EAAA;IACvD,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,SAAA;IACD,QAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;IAC5B,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,SAAA;IACD,QAAA,OAAO,IAAc,CAAC;SACzB,CAAA;IAES,IAAA,UAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,IAAY,EAAE,MAAY,EAAA;IAClD,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;IAAE,YAAA,OAAO,IAAI,CAAC;YAClC,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,UAAC,SAAiB,EAAE,CAAS,EAAA;gBACtE,IAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9B,YAAA,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACxC,SAAC,CAAC,CAAC;SACN,CAAA;eACJ,UAAA,CAAA;SAAA;AA7DYA,sBAAU,GAAA/E,YAAA,CAAA;IAFtB,IAAAqC,mBAAU,EAAE;IACZ,IAAAS,kBAAS,EAAE;2CAKiCgC,2BAAmB,CAAA,CAAA;KAJnD,EAAAC,kBAAU,CA6DtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1DYC,4BAAgB,kBAAA,YAAA;QAMzB,SAAqB,gBAAA,CAAA,UAAsB,EAAW,MAAqB,EAAA;IAAtD,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;IAAW,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;IACvE,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACpB,QAAAC,qBAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAS,EAAM,EAAA;IAAL,YAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;IAC9C,YAAA,OAAO,IAAI,CAAC;IAChB,SAAC,CAAC,CAAC;IACH,QAAAA,qBAAU,CAAC,cAAc,CAAC,KAAK,EAAE,YAAA;IAC7B,YAAA,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,SAAC,CAAC,CAAC;IACH,QAAAA,qBAAU,CAAC,cAAc,CAAC,MAAM,EAAE,UAAS,GAAQ,EAAA;IAC/C,YAAA,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,SAAC,CAAC,CAAC;YACHA,qBAAU,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,GAAW,EAAE,MAAW,EAAA;IACrE,YAAA,OAAO,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACrE,SAAC,CAAC,CAAC;SACN;IAES,IAAA,gBAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;YACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;YACpG,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B,CAAA;IAEK,IAAA,gBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,GAAW,EAAE,OAAiB,EAAA;;oBAoBlD,KAAA,GAAA,IAAA,CAAA;;IAnBG,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,OAAO,CAAO,UAAA,OAAO,EAAA;IAC5B,wBAAAT,UAAO,CAAC,GAAG,EAAE,UAAO,GAAG,EAAE,KAAK,EAAI,EAAA,OAAArE,WAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;;;4CACb,OAAA,GAAA,QAAA,CAAA,KAAK,CAAA,EAAA,SAAA,GAAA,OAAA,CAAA,IAAA,EAAA,CAAA;;;;4CAAb,IAAI,GAAA,SAAA,CAAA,KAAA,CAAA;IACH,wCAAAQ,MAAI,GAAG2D,SAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,wCAAA,IAAA,CAAAY,YAAS,CAACvE,MAAI,CAAC,CAAC,WAAW,EAAE,EAA7B,OAA6B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;4CAC7B,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,cAAc,CAAC2D,SAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAA;;IAAlE,wCAAA,EAAA,CAAA,IAAA,EAAkE,CAAC;4CACnE,OAAS,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;IAEP,wCAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4CAC9B,KAAK,CAAC,GAAG,EAAE,CAAC;IACN,wCAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,wCAAA,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4CAC5C,OAAO,GAAGa,eAAY,CAACxE,MAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpD,wCAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAGsE,qBAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,wCAAAA,qBAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;;;;;;;;;;;;;;;;;IAElD,wCAAA,OAAO,EAAE,CAAC;;;;6BACb,CAAA,CAAA,EAAA,CAAC,CAAC;IACP,qBAAC,CAAC,CAAC,CAAA;;IACN,SAAA,CAAA,CAAA;SAAA,CAAA;IAEK,IAAA,gBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,QAAgB,EAAE,QAAgB,EAAE,OAAa,EAAA;;;;;IAC1D,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;IAAjB,wBAAA,EAAA,CAAA,IAAA,EAAiB,CAAC;4BAClB,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA,CAAA;;IAA7C,wBAAA,EAAA,CAAA,IAAA,EAA6C,CAAC;IAC9C,wBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;IAC3B,4BAAA,OAAA,CAAA,CAAA,aAAO,OAAO,CAAC,MAAM,CAAC,gCAAiC,GAAA,QAAU,CAAC,CAAC,CAAA;IACtE,yBAAA;IACD,wBAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAA,QAAA,EAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;4BAC7C,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;IACvC,wBAAA,IAAA,EAAA,GAAG,YAAY,KAAK,CAAA,EAApB,OAAoB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAAG,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,CAAA;;IAAzB,wBAAA,EAAA,GAAA,SAAyB,CAAA;;;IAAG,wBAAA,EAAA,GAAA,GAAG,CAAA;;gCAA7D,OAA8D,CAAA,CAAA,aAAA,EAAA,CAAA,CAAA;;;IACjE,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,gBAAA,CAAA;SAAA;AA3DYD,4BAAgB,GAAAhF,YAAA,CAAA;IAF5B,IAAAqC,mBAAU,EAAE;IACZ,IAAAS,kBAAS,EAAE;QAOyB5C,YAAA,CAAA,mBAAA,EAAA,CAAA6E,kBAAU,EAAmBvC,qBAAa,CAAA,CAAA;KANlE,EAAAwC,wBAAgB,CA2D5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDYI,sBAAU,kBAAA,YAAA;QAQnB,SAAqB,UAAA,CAAA,MAAqB,EAAW,QAA0B,EAAA;IAA1D,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;IAAW,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;IAC3E,QAAA,IAAI,CAAC,WAAW,GAAGC,0BAAe,CAAC;gBAC/B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBACrC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IACrC,YAAA,IAAI,EAAE;oBACF,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;oBACrC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IAC5C,aAAA;IACJ,SAAA,CAAC,CAAC;SACN;IAbD,IAAA,MAAA,CAAA,cAAA,CAAI,UAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAAd,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;aACnC;;;IAAA,KAAA,CAAA,CAAA;IAaK,IAAA,UAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,QAAgB,EAAE,OAAoB,EAAA;;;;;IACjC,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,CAAA,CAAA;;IAAhF,wBAAA,OAAO,GAAG,EAAsE,CAAA,IAAA,EAAA,CAAA;IACzE,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA,CAAA;;IAA9E,wBAAA,IAAI,GAAG,EAAuE,CAAA,IAAA,EAAA,CAAA;IACpF,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC7B,gCAAA,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;oCAC9D,EAAE,EAAE,OAAO,CAAC,EAAE;oCACd,WAAW,EAAE,OAAO,CAAC,WAAW;IAChC,gCAAA,OAAO,EAAA,OAAA;IACP,gCAAA,IAAI,EAAA,IAAA;IACP,6BAAA,CAAC,CAAC,CAAA;;;IACN,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,UAAA,CAAA;SAAA;AA9BYD,sBAAU,GAAApF,YAAA,CAAA;IAFtB,IAAAqC,mBAAU,EAAE;IACZ,IAAAS,kBAAS,EAAE;QASqB5C,YAAA,CAAA,mBAAA,EAAA,CAAAsC,qBAAa,EAAqBwC,wBAAgB,CAAA,CAAA;KARtE,EAAAI,kBAAU,CA8BtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5CYE,uBAAW,kBAAA,YAAA;IAIpB,IAAA,SAAA,WAAA,CAA+B,KAAY,EAAA;IAAZ,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;IACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;SACjD;QAEK,WAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,GAAW,EAAE,KAAU,EAAE,GAAY,EAAE,mBAAkC,EAAE,IAAc,EAAA;IAAlD,QAAA,IAAA,mBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,mBAAkC,GAAA,IAAA,CAAA,EAAA;IAAE,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;;;;IACzF,gBAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;oBAC9C,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,gBAAgB,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;IAChF,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;IACnB,oBAAA,GAAG,EAAE,GAAG;IACR,oBAAA,IAAI,EAAE,KAAK;IACX,oBAAA,mBAAmB,EAAE,YAAY;wBACjC,SAAS,EAAE,GAAG,GAAG,YAAY;IAChC,iBAAA,CAAC,CAAC;IACH,gBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAA;;IACrE,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,WAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAI,GAAW,EAAA;;;;;;4BACb,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,wBAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;4BAChD,YAAY,GAAG,IAAI,CAAC;4BACxB,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE;IAChD,4BAAA,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;gCACxC,IAAI,GAAG,IAAI,CAAC;IACf,yBAAA;iCACG,CAAC,IAAI,EAAL,OAAK,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;4BACS,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAA;;IAAjC,wBAAA,KAAK,GAAG,EAAyB,CAAA,IAAA,EAAA,CAAA;IACvC,wBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;IACnB,4BAAA,GAAG,EAAE,GAAG;IACR,4BAAA,IAAI,EAAE,KAAK;IACX,4BAAA,mBAAmB,EAAE,YAAY;gCACjC,SAAS,EAAE,GAAG,GAAG,YAAY;IAChC,yBAAA,CAAC,CAAC;IACH,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,CAAA;gCAEjB,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,IAAI,CAAC,CAAA;;;IACpB,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,WAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,GAAW,EAAE,OAA2B,EAAE,GAAY,EAAE,mBAAkC,EAAE,IAAc,EAAA;IAAlD,QAAA,IAAA,mBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,mBAAkC,GAAA,IAAA,CAAA,EAAA;IAAE,QAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAc,GAAA,EAAA,CAAA,EAAA;;;;;;;IAE1G,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAA;IAA1B,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAAmB,CAAC,CAAA;;;4BAEd,EAAA,GAAA,IAAI,CAAC,GAAG,CAAA;kCAAC,GAAG,CAAA,CAAA;4BAAE,OAAM,CAAA,CAAA,YAAA,OAAO,EAAE,CAAA,CAAA;gCAAnC,OAAM,CAAA,CAAA,YAAA,EAAA,CAAA,KAAA,CAAA,IAAI,EAAA,EAAA,CAAA,MAAA,CAAA,CAAU,EAAe,CAAA,IAAA,EAAA,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAA,CAAA,CAAC,CAAA,CAAA;IAA3E,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAAoE,CAAC,CAAA;;;;IAEnF,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,WAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,GAAW,EAAA;;;;;IACpB,wBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;4BAC1B,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,CAAA;;IAA/B,wBAAA,EAAA,CAAA,IAAA,EAA+B,CAAC;;;;IACnC,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,WAAA,CAAA;SAAA;AArDYA,uBAAW,GAAAtF,YAAA,CAAA;IAFvB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;2CAKQyB,aAAK,CAAA,CAAA;KAJlC,EAAAsB,mBAAW,CAqDvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICvDD,IAAM,UAAU,GAAU;IACtB,IAAA,EAAE,EAAE,0BAA0B;IAC9B,IAAA,KAAK,EAAE,gBAAgB;IACvB,IAAA,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,CAAC,OAAO,CAAC;KACnB,CAAC;AAIWC,uBAAW,kBAAA,YAAA;;SAevB;QAbS,WAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,WAAgB,EAAA;;;;;;kCAC3B,UAAU,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,EAAvC,OAAuC,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAAG,wBAAA,EAAA,GAAA,UAAU,CAAA;;IAAG,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA,CAAA;;IAA3C,wBAAA,EAAA,GAAA,SAA2C,CAAA;;gCAAzG,OAA0G,CAAA,CAAA,aAAA,EAAA,CAAA,CAAA;;;IAC7G,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,WAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,EAAU,EAAA;;;IACpB,gBAAA,OAAA,CAAA,CAAA,aAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,CAAA;;IACpD,SAAA,CAAA,CAAA;SAAA,CAAA;QAEK,WAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,IAAW,EAAA;;;;oBACjB,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACpC,OAAO,GAAG,CAAC,QAAQ,CAAC;IACpB,gBAAA,OAAA,CAAA,CAAA,aAAO,GAAG,CAAC,CAAA;;IACd,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,WAAA,CAAA;SAAA;AAfYA,uBAAW,GAAAvF,YAAA,CAAA;IAFvB,IAAAqC,mBAAU,EAAE;IACZ,IAAAC,eAAM,CAACC,kBAAS,CAAC,eAAe,CAAC;KACrB,EAAAgD,mBAAW,CAevB;;;;;;;;;;;;;;;;ACxBD,QAAA,gBAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,gBAAA,GAAA;IAKI,QAAA,IAAQ,CAAA,QAAA,GAAY,CAAC,CAAC;IAItB,QAAA,IAAY,CAAA,YAAA,GAAY,CAAC,CAAC;IAI1B,QAAA,IAAY,CAAA,YAAA,GAAY,CAAC,CAAC;IAI1B,QAAA,IAAM,CAAA,MAAA,GAAY,CAAC,CAAC;IAIpB,QAAA,IAAM,CAAA,MAAA,GAAY,CAAC,CAAC;IAIpB,QAAA,IAAI,CAAA,IAAA,GAAa,KAAK,CAAC;IAIvB,QAAA,IAAI,CAAA,IAAA,GAAa,KAAK,CAAC;IAIvB,QAAA,IAAU,CAAA,UAAA,GAAa,KAAK,CAAC;IAI7B,QAAA,IAAS,CAAA,SAAA,GAAa,KAAK,CAAC;SAC/B;QAAA,OAAA,gBAAA,CAAA;IAAA,CAAA,EAAA,EAAA;AAjCGvF,gBAAA,CAAA;QAHCwF,kBAAG,CAAC,CAAC,GAAG,CAAC;QACTC,kBAAG,CAAC,GAAG,CAAC;IACR,IAAAC,yBAAU,EAAE;;KACS,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAItB1F,gBAAA,CAAA;QAFCwF,kBAAG,CAAC,MAAM,CAAC;IACX,IAAAE,yBAAU,EAAE;;KACa,EAAA,gBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI1B1F,gBAAA,CAAA;QAFCwF,kBAAG,CAAC,MAAM,CAAC;IACX,IAAAE,yBAAU,EAAE;;KACa,EAAA,gBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI1B1F,gBAAA,CAAA;QAFCwF,kBAAG,CAAC,MAAM,CAAC;IACX,IAAAE,yBAAU,EAAE;;KACO,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIpB1F,gBAAA,CAAA;QAFCwF,kBAAG,CAAC,MAAM,CAAC;IACX,IAAAE,yBAAU,EAAE;;KACO,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIpB1F,gBAAA,CAAA;IAFC,IAAA2F,wBAAS,EAAE;IACX,IAAAD,yBAAU,EAAE;;KACU,EAAA,gBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIvB1F,gBAAA,CAAA;IAFC,IAAA2F,wBAAS,EAAE;IACX,IAAAD,yBAAU,EAAE;;KACU,EAAA,gBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAIvB1F,gBAAA,CAAA;IAFC,IAAA2F,wBAAS,EAAE;IACX,IAAAD,yBAAU,EAAE;;KACgB,EAAA,gBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI7B1F,gBAAA,CAAA;IAFC,IAAA2F,wBAAS,EAAE;IACX,IAAAD,yBAAU,EAAE;;KACe,EAAA,gBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICjBnB,IAAA,gBAAgB,kBAAA,YAAA;QAEzB,SAAqB,gBAAA,CAAA,MAAc,EAAW,aAA4B,EAAA;IAArD,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;IAAW,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;SAEzE;QAIK,gBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAA6B,IAAyB,EAAA;;;;;;;IAE9C,wBAAA,WAAW,GAAG,IAAI,CAAC,QAAQ,KAAK,0BAA0B,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;4BAC1E,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,EAAE,WAAW,CAAC,CAAA,CAAA;;IAA1F,wBAAA,KAAK,GAAG,EAAkF,CAAA,IAAA,EAAA,CAAA;IAChG,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;;;4BAEhB,GAAG,GAAG,CAAA,GAAC,aAAD,GAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,GAAC,CAAE,OAAO,KAAI,GAAC,IAAI,eAAe,CAAC;4BAC/C,MAAM,IAAIE,4BAAS,CAAC,GAAG,EAAE,4BAA6B,GAAA,GAAK,CAAC,CAAC;;;;IAEpE,SAAA,CAAA,CAAA;SAAA,CAAA;QAIK,gBAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAkB,IAAS,EAAA;;;;;;;IAEX,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA,CAAA;;IAAlD,wBAAA,KAAK,GAAG,EAA0C,CAAA,IAAA,EAAA,CAAA;IACxD,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;;;4BAEhB,GAAG,GAAG,CAAA,GAAC,aAAD,GAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,GAAC,CAAE,OAAO,KAAI,GAAC,IAAI,eAAe,CAAC;4BAC/C,MAAM,IAAIA,4BAAS,CAAC,GAAG,EAAE,4BAA6B,GAAA,GAAK,CAAC,CAAC;;;;IAEpE,SAAA,CAAA,CAAA;SAAA,CAAA;IAGK,IAAA,gBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAqB,EAAU,EAAsB,IAAa,EAAS,GAAa,EAAA;;;;;IAC5E,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA,CAAA;;IAAnD,wBAAA,KAAK,GAAG,EAA2C,CAAA,IAAA,EAAA,CAAA;IACzD,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;;;IAC3B,SAAA,CAAA,CAAA;SAAA,CAAA;QAGK,gBAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAA8B,EAAU,EAAiB,MAAwB,EAAS,GAAa,EAAqB,QAAoB,EAAA;IAApB,QAAA,IAAA,QAAA,KAAA,KAAA,CAAA,EAAA,EAAA,QAAoB,GAAA,CAAA,CAAA,EAAA;;;;;IACpI,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA,CAAA;;IAA1D,wBAAA,KAAK,GAAG,EAAkD,CAAA,IAAA,EAAA,CAAA;4BAChE,IAAI,QAAQ,KAAK,CAAC,EAAE;gCAChB,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC;IACjD,yBAAA;IACD,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;;;IACtC,SAAA,CAAA,CAAA;SAAA,CAAA;IAGK,IAAA,gBAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAsB,EAAU,EAAiB,MAAwB,EAAS,GAAa,EAAA;;;oBACjG,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;;IACjD,SAAA,CAAA,CAAA;SAAA,CAAA;IAGK,IAAA,gBAAA,CAAA,SAAA,CAAA,aAAa,GAAb,UAA6B,IAAY,EAAS,GAAa,EAAA;;;;;gCACnD,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA,CAAA;;IAArD,wBAAA,KAAK,GAAG,EAA6C,CAAA,IAAA,EAAA,CAAA;IAC3D,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;;;IAC3B,SAAA,CAAA,CAAA;SAAA,CAAA;IAGK,IAAA,gBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAA8B,IAAY,EAAiB,MAAwB,EAAS,GAAa,EAAA;;;;;gCAC7F,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA,CAAA;;IAArD,wBAAA,KAAK,GAAG,EAA6C,CAAA,IAAA,EAAA,CAAA;IAC3D,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;;;IACtC,SAAA,CAAA,CAAA;SAAA,CAAA;IAES,IAAA,gBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,IAAY,EAAE,KAAa,EAAE,GAAa,EAAA;;YAChE,IAAI,MAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,EAAE;gBAC5B,MAAM,IAAIA,4BAAS,CAAC,GAAG,EAAK,IAAI,GAAA,+DAA+D,CAAC,CAAC;IACpG,SAAA;YACD,IAAM,GAAG,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC;IACtC,QAAA,IAAI,GAAG,EAAE;IACL,YAAA,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,mBAAA,GAAoB,KAAK,CAAC,QAAQ,GAAA,GAAA,GAAI,GAAK,CAAC,CAAC;IAClF,SAAA;YACD,IAAI,KAAK,CAAC,WAAW,EAAE;gBACnB,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACjD,SAAA;SACJ,CAAA;QAEe,gBAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,IAAY,EAAE,EAAU,EAAE,IAAa,EAAE,GAAa,EAAA;;;;;gCAC7D,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA,CAAA;;IAAlD,wBAAA,KAAK,GAAG,EAA0C,CAAA,IAAA,EAAA,CAAA;4BACxD,IAAI,CAAC,KAAK,EAAE;gCACR,MAAM,IAAIA,4BAAS,CAAC,GAAG,EAAK,IAAI,GAAc,aAAA,GAAA,EAAE,GAAc,cAAA,CAAC,CAAC;IACnE,yBAAA;4BACD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,CAAA;;;IAChB,SAAA,CAAA,CAAA;SAAA,CAAA;IAEe,IAAA,gBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,UAAe,IAAY,EAAE,QAAgB,EAAE,GAAa,EAAA;;;;;gCAC1D,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAA,QAAA,EAAC,CAAC,CAAA,CAAA;;IAA1C,wBAAA,KAAK,GAAG,EAAkC,CAAA,IAAA,EAAA,CAAA;4BAChD,IAAI,CAAC,KAAK,EAAE;gCACR,MAAM,IAAIA,4BAAS,CAAC,GAAG,EAAK,IAAI,GAAoB,mBAAA,GAAA,QAAQ,GAAc,cAAA,CAAC,CAAC;IAC/E,yBAAA;4BACD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,CAAA;;;IAChB,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,gBAAA,CAAA;QAAA,CAAA;AArFG5F,gBAAA,CAAA;IAFC,IAAA6F,6BAAU,EAAE;QACZC,uBAAI,CAAC,EAAE,CAAC;IACK,IAAA7F,SAAA,CAAA,CAAA,EAAA8F,+BAAY,CAAC,MAAM,CAAC,CAAA;;;;KASjC,EAAA,gBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAID/F,gBAAA,CAAA;IAFC,IAAA6F,6BAAU,EAAE;QACZC,uBAAI,CAAC,KAAK,CAAC;IACK,IAAA7F,SAAA,CAAA,CAAA,EAAA+F,uBAAI,EAAE,CAAA;;;;KAQtB,EAAA,gBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGDhG,gBAAA,CAAA;QADCiG,sBAAG,CAAC,MAAM,CAAC;QACGhG,SAAA,CAAA,CAAA,EAAAiG,wBAAK,CAAC,IAAI,CAAC,CAAA,EAAcjG,SAAA,CAAA,CAAA,EAAAkG,6BAAU,CAAC,MAAM,CAAC,CAAA,EAAiBlG,SAAA,CAAA,CAAA,EAAAmG,sBAAG,EAAE,CAAA;;;;KAG/E,EAAA,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAGDpG,gBAAA,CAAA;QADCiG,sBAAG,CAAC,sBAAsB,CAAC;IACJ,IAAAhG,SAAA,CAAA,CAAA,EAAAiG,wBAAK,CAAC,IAAI,CAAC,CAAA,EAAcjG,SAAA,CAAA,CAAA,EAAAoG,8BAAW,EAAE,CAAA,EAA4BpG,SAAA,CAAA,CAAA,EAAAmG,sBAAG,EAAE,CAAA,EAAiBnG,aAAAiG,wBAAK,CAAC,UAAU,CAAC,CAAA;;mDAA1D,gBAAgB,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;;KAMtF,EAAA,gBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAGDlG,gBAAA,CAAA;QADCiG,sBAAG,CAAC,YAAY,CAAC;QACFhG,SAAA,CAAA,CAAA,EAAAiG,wBAAK,CAAC,IAAI,CAAC,CAAA,EAAcjG,SAAA,CAAA,CAAA,EAAAoG,8BAAW,EAAE,CAAA,EAA4BpG,SAAA,CAAA,CAAA,EAAAmG,sBAAG,EAAE,CAAA;;mDAAxB,gBAAgB,EAAA,MAAA,CAAA,CAAA;;KAE9E,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAGDpG,gBAAA,CAAA;QADCiG,sBAAG,CAAC,gBAAgB,CAAC;IACD,IAAAhG,SAAA,CAAA,CAAA,EAAAiG,wBAAK,CAAC,MAAM,CAAC,CAAA,EAAgBjG,SAAA,CAAA,CAAA,EAAAmG,sBAAG,EAAE,CAAA;;;;KAGtD,EAAA,gBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAGDpG,gBAAA,CAAA;QADCiG,sBAAG,CAAC,sBAAsB,CAAC;QACNhG,SAAA,CAAA,CAAA,EAAAiG,wBAAK,CAAC,MAAM,CAAC,CAAA,EAAgBjG,SAAA,CAAA,CAAA,EAAAoG,8BAAW,EAAE,CAAA,EAA4BpG,SAAA,CAAA,CAAA,EAAAmG,sBAAG,EAAE,CAAA;;mDAAxB,gBAAgB,EAAA,MAAA,CAAA,CAAA;;KAGxF,EAAA,gBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;IA7DQ,gBAAgB,GAAApG,YAAA,CAAA;IAF5B,IAAAqC,mBAAU,EAAE;QACZiE,6BAAU,CAAC,SAAS,CAAC;QAGWpG,YAAA,CAAA,mBAAA,EAAA,CAAA6C,cAAM,EAA0BW,qBAAa,CAAA,CAAA;KAFjE,EAAA,gBAAgB,CA6F5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9FY6C,0BAAc,kBAAA,YAAA;QAEvB,SAAqB,cAAA,CAAA,MAAqB,EAAW,WAAwB,EAAA;IAAxD,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;IAAW,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;SAAI;IAG3E,IAAA,cAAA,CAAA,SAAA,CAAA,KAAK,GAAL,UAAc,WAAgB,EAAS,GAAa,EAAA;;;;;;4BAClD,IAAI,GAAU,IAAI,CAAC;;;;4BAEZ,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA,CAAA;;4BAA3D,IAAI,GAAG,SAAoD,CAAC;;;;IAE5D,wBAAA,MAAM,IAAIX,4BAAS,CAAC,GAAG,EAAE,QAAM,CAAC,CAAC;;iCAEvB,CAAC,IAAI,EAAL,OAAK,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAAG,wBAAA,EAAA,GAAA,KAAK,CAAA;;gCAAG,OAAM,CAAA,CAAA,YAAAY,cAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAA;;IAAlD,wBAAA,EAAA,GAAA,SAAkD,CAAA;;;IAA1E,wBAAA,KAAK,GAAqE,EAAA,CAAA;4BAChF,IAAI,KAAK,KAAK,IAAI;IACd,4BAAA,MAAM,IAAIC,oCAAiB,CAAC,qBAAqB,CAAC,CAAC;;gCAEnD,KAAK,EAAEC,iBAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;;4BACpE,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAA;gCAFhD,OAEI,CAAA,CAAA,cAAA,EAAA,CAAA,IAAI,GAAE,EAAsC,CAAA,IAAA,EAAA;IAC9C,4BAAA,EAAA,EAAA,CAAA;;;IACL,SAAA,CAAA,CAAA;SAAA,CAAA;QAID,cAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAA0B,IAAW,EAAA;YACjC,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC3C,CAAA;eACJ,cAAA,CAAA;SAAA;AArBG1G,gBAAA,CAAA;QADC8F,uBAAI,CAAC,QAAQ,CAAC;IACF,IAAA7F,SAAA,CAAA,CAAA,EAAA+F,uBAAI,EAAE,CAAA,EAAoB/F,SAAA,CAAA,CAAA,EAAAmG,sBAAG,EAAE,CAAA;;;;KAc3C,EAAAG,sBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AAIDvG,gBAAA,CAAA;IAFC,IAAA6F,6BAAU,EAAE;QACZI,sBAAG,CAAC,OAAO,CAAC;IACD,IAAAhG,SAAA,CAAA,CAAA,EAAA0G,8BAAW,EAAE,CAAA;;;;KAExB,EAAAJ,sBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAzBQA,0BAAc,GAAAvG,YAAA,CAAA;IAF1B,IAAAqC,mBAAU,EAAE;IACZ,IAAAiE,6BAAU,EAAE;QAGoBpG,YAAA,CAAA,mBAAA,EAAA,CAAAsC,qBAAa,EAAwB+C,mBAAW,CAAA,CAAA;KAFpE,EAAAgB,sBAAc,CA0B1B;;;;;;;;;;;;;;;;;;;AC1CYK,6BAAiB,kBAAA,YAAA;IAE1B,IAAA,SAAA,iBAAA,CAAqB,YAA0B,EAAA;IAA1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;SAAK;QAGpD,iBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAqB,EAAU,EAAA;YAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACtC,CAAA;eACJ,iBAAA,CAAA;SAAA;AAHG5G,gBAAA,CAAA;QADCiG,sBAAG,CAAC,MAAM,CAAC;IACH,IAAAhG,SAAA,CAAA,CAAA,EAAAiG,wBAAK,CAAC,IAAI,CAAC,CAAA;;;;KAEnB,EAAAU,yBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAPQA,6BAAiB,GAAA5G,YAAA,CAAA;IAF7B,IAAAqC,mBAAU,EAAE;QACZiE,6BAAU,CAAC,UAAU,CAAC;2CAGgBlC,oBAAY,CAAA,CAAA;KAFtC,EAAAwC,yBAAiB,CAQ7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICPY,IAAA,oBAAoB,kBAAA,YAAA;QAI7B,SAAqB,oBAAA,CAAA,UAAsB,EAAW,MAAqB,EAAA;IAAtD,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;IAAW,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;YACvE,IAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzD,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;SAC9D;QAGK,oBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAyB,EAAU,EAAA;;;;;gCACpB,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA,CAAA;;IAAxC,wBAAA,QAAQ,GAAG,EAA6B,CAAA,IAAA,EAAA,CAAA;IAC9C,wBAAA,IAAI,CAAC,QAAQ;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IACrB,wBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/B,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC1C,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;;IACf,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,oBAAA,CAAA;QAAA,CAAA;AAPG5G,gBAAA,CAAA;QADCiG,sBAAG,CAAC,MAAM,CAAC;IACO,IAAAhG,SAAA,CAAA,CAAA,EAAAiG,wBAAK,CAAC,IAAI,CAAC,CAAA;;;;KAM7B,EAAA,oBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;IAhBQ,oBAAoB,GAAAlG,YAAA,CAAA;IAFhC,IAAAqC,mBAAU,EAAE;QACZiE,6BAAU,CAAC,aAAa,CAAC;QAKWpG,YAAA,CAAA,mBAAA,EAAA,CAAAsD,kBAAU,EAAmBhB,qBAAa,CAAA,CAAA;KAJlE,EAAA,oBAAoB,CAiBhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdYqE,kCAAsB,kBAAA,YAAA;QAM/B,SAAqB,sBAAA,CAAA,aAA4B,EAAW,UAAsB,EAAA;IAA7D,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;IAAW,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;SAEjF;IAND,IAAA,MAAA,CAAA,cAAA,CAAI,sBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;IAAT,QAAA,GAAA,EAAA,YAAA;gBACI,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,aAAa,CAAC;aAClE;;;IAAA,KAAA,CAAA,CAAA;QAMK,sBAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAM,KAAU,EAAE,GAAa,EAAE,GAAa,EAAE,IAAwB,EAAA;;;;;gCAC3D,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA,CAAA;;IAA9C,wBAAA,MAAM,GAAG,EAAqC,CAAA,IAAA,EAAA,CAAA;4BACpD,IAAI,IAAI,CAAC,KAAK,EAAE;gCACZ,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,yBAAA;IACD,wBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;;IACpB,SAAA,CAAA,CAAA;SAAA,CAAA;IAEe,IAAA,sBAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,KAAK,EAAE,GAAa,EAAE,GAAa,EAAA;;;;;;4BAEnD,MAAM,GAAQ,EAAE,CAAC;IAEnB,wBAAA,IAAA,EAAA,KAAK,YAAYC,kCAAe,CAAA,EAAhC,OAAgC,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAChC,wBAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;kCACZ,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,oBAAoB,CAAA,EAA/C,OAA+C,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAC/C,wBAAA,EAAA,GAAA,MAAM,CAAA;IAAW,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,kCAAkC,CAAC,CAAA,CAAA;;4BAAvG,EAAO,CAAA,OAAO,GAAG,EAAA,CAAA,IAAA,EAAsF,CAAC;IACxG,wBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;;;IAE7B,wBAAA,EAAA,GAAA,MAAM,CAAA;4BAAW,EAAA,GAAA,KAAK,CAAC,OAAO,CAAA;oCAAb,OAAa,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IAAI,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAA,CAAA;;4BAAvF,EAAA,IAAI,EAAmF,CAAA,IAAA,EAAA,CAAA,CAAA;;;4BAArH,EAAO,CAAA,OAAO,KAAuG,CAAC;IACtH,wBAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;4BAChC,IAAI,IAAI,CAAC,KAAK,EAAE;IACZ,4BAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC9B,yBAAA;;IAEL,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,MAAM,CAAC,CAAA;;4BAGlB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;4BAElC,IAAI,KAAK,YAAY,KAAK,EAAE;gCACxB,IAAI,KAAK,CAAC,IAAI,EAAE;IACZ,gCAAA,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,6BAAA;gCACD,IAAI,KAAK,CAAC,OAAO,EAAE;IACf,gCAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAClC,6BAAA;IACD,4BAAA,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;IAC3B,gCAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC9B,6BAAA;IACJ,yBAAA;IAAM,6BAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAClC,4BAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;IAC1B,yBAAA;IAED,wBAAA,OAAA,CAAA,CAAA,aAAO,MAAM,CAAC,CAAA;;;IACjB,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,sBAAA,CAAA;SAAA;AAvDYD,kCAAsB,GAAA7G,YAAA,CAAA;IAFlC,IAAAqC,mBAAU,EAAE;IACZ,IAAA0E,6BAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAOU7G,YAAA,CAAA,mBAAA,EAAA,CAAAsC,qBAAa,EAAuBuC,kBAAU,CAAA,CAAA;KANzE,EAAA8B,8BAAsB,CAuDlC;;;;;;;;;;;;;;;;;;;IC1DY,IAAA,mBAAmB,kBAAA,YAAA;IAE5B,IAAA,SAAA,mBAAA,CAA2C,SAA8B,EAAA;IAA9B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAqB;SAExE;IAED,IAAA,mBAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,OAAiB,EAAE,QAAa,EAAE,IAAwB,EAAA;IAC1D,QAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,CAAC;SACd,CAAA;eACJ,mBAAA,CAAA;QAAA,CAAA;IAVY,mBAAmB,GAAA7G,YAAA,CAAA;IAF/B,IAAAqC,mBAAU,EAAE;IACZ,IAAA0E,6BAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAGd,IAAA9G,SAAA,CAAA,CAAA,EAAAsD,eAAM,CAAC,YAAY,CAAC,CAAA;;KAFxB,EAAA,mBAAmB,CAU/B;;;;;;;;;;;;;;;;ACVYyD,8BAAkB,kBAAA,YAAA;IAE3B,IAAA,SAAA,kBAAA,CAAqB,MAAqB,EAAA;IAArB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;SAEzC;IAED,IAAA,kBAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,OAAiB,EAAE,QAAa,EAAE,IAAwB,EAAA;IAC1D,QAAA,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC9F,IAAI,CAAC,IAAI,CAAC,CAAC;SACd,CAAA;eAEJ,kBAAA,CAAA;SAAA;AAXYA,8BAAkB,GAAAhH,YAAA,CAAA;IAF9B,IAAAqC,mBAAU,EAAE;IACZ,IAAA0E,6BAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;2CAGEvE,qBAAa,CAAA,CAAA;KAFjC,EAAAwE,0BAAkB,CAW9B;;;;;;;;;;;;ICXY,IAAA,sBAAsB,kBAAA,YAAA;;SAWlC;IATG,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,OAAiB,EAAE,QAAa,EAAE,IAAwB,EAAA;IAC1D,QAAA,OAAO,CAAC,KAAK,GAAGC,0BAAM,EAAE,CAAC;IACzB,QAAA,IAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjD,IAAM,QAAQ,GAAGA,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,WAAY,GAAA,OAAO,CAAC,EAAE,GAAA,cAAA,GAAe,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAA,IAAA,GAAK,OAAO,CAAC,MAAM,GAAA,IAAA,GAAK,OAAO,CAAC,GAAK,CAAC,CAAC;IACnI,QAAA,OAAO,CAAC,GAAG,CAAC,WAAA,GAAY,OAAO,CAAC,EAAE,GAAa,YAAA,GAAA,QAAQ,CAAC,cAAc,EAAE,GAAA,IAAI,CAAC,CAAA;YAC7E,IAAI,CAAC,IAAI,CAAC,CAAC;SACd,CAAA;eAEJ,sBAAA,CAAA;QAAA,CAAA;IAXY,sBAAsB,GAAAjH,YAAA,CAAA;IAFlC,IAAAqC,mBAAU,EAAE;IACZ,IAAA0E,6BAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KACjB,EAAA,sBAAsB,CAWlC;;;;;;;;;;;;ICVY,IAAA,wBAAwB,kBAAA,YAAA;;SASpC;IAPG,IAAA,wBAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,OAAiB,EAAE,QAAa,EAAE,IAAwB,EAAA;YAC1D,OAAO,CAAC,EAAE,GAAG,IAAIhG,aAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,QAAA,OAAO,CAAC,OAAO,GAAGkG,0BAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,WAAY,GAAA,OAAO,CAAC,EAAE,GAAA,gBAAA,GAAiB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAA,IAAA,GAAK,OAAO,CAAC,MAAM,GAAA,IAAA,GAAK,OAAO,CAAC,GAAK,CAAC,CAAC;YACvI,IAAI,CAAC,IAAI,CAAC,CAAC;SACd,CAAA;eAEJ,wBAAA,CAAA;QAAA,CAAA;IATY,wBAAwB,GAAAjH,YAAA,CAAA;IAFpC,IAAAqC,mBAAU,EAAE;IACZ,IAAA0E,6BAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KAClB,EAAA,wBAAwB,CASpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICRY,IAAA,kBAAkB,kBAAA,YAAA;QAE3B,SAAqB,kBAAA,CAAA,UAAsB,EAAkC,YAAoB,EAAA;IAA5E,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;IAAkC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAQ;SAChG;IAGK,IAAA,kBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAmC,MAAqB,EAAiB,UAAkB,EAAA;;;;;gCAC5E,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA,CAAA;;IAAhD,wBAAA,QAAQ,GAAG,EAAqC,CAAA,IAAA,EAAA,CAAA;IACtD,wBAAA,IAAI,CAAC,QAAQ;gCAAE,OAAO,CAAA,CAAA,YAAA,CAAA;IAChB,wBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/B,wBAAA,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,UAAA,CAAC,EAAA;IAC1B,4BAAA,IAAI,CAAC,CAAC,oBAAoB,YAAY,GAAG,IAAI,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;IACjF,gCAAA,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;IACpD,6BAAA;IACL,yBAAC,CAAC,CAAC;IACH,wBAAA,OAAO,CAAC,GAAG,CAAC,oBAAA,GAAqB,MAAM,CAAC,EAAE,GAAW,UAAA,GAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAG,CAAC,CAAC;;;;IAChF,SAAA,CAAA,CAAA;SAAA,CAAA;IAGK,IAAA,kBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAuC,MAAqB,EAAiB,UAAkB,EAAA;;;;;gCAChF,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA,CAAA;;IAAhD,wBAAA,QAAQ,GAAG,EAAqC,CAAA,IAAA,EAAA,CAAA;IACtD,wBAAA,IAAI,CAAC,QAAQ;gCAAE,OAAO,CAAA,CAAA,YAAA,CAAA;IAChB,wBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;4BAC/B,MAAM,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,IAAI,GAAG,EAAU,CAAC;IAC/E,wBAAA,IAAI,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC;gCAAE,OAAO,CAAA,CAAA,YAAA,CAAA;IACxD,wBAAA,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,wBAAA,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;IACjD,wBAAA,OAAO,CAAC,GAAG,CAAC,2BAAA,GAA4B,MAAM,CAAC,EAAE,GAAW,UAAA,GAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAG,CAAC,CAAC;;;;IACvF,SAAA,CAAA,CAAA;SAAA,CAAA;eACJ,kBAAA,CAAA;QAAA,CAAA;AAvBG/G,gBAAA,CAAA;QADCkH,2BAAS,CAAC,qBAAqB,CAAC;IACV,IAAA,OAAA,CAAA,CAAA,EAAAC,iCAAe,EAAE,CAAA,EAAyB,OAAA,CAAA,CAAA,EAAAC,6BAAW,EAAE,CAAA;;;;KAU7E,EAAA,kBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAGDpH,gBAAA,CAAA;QADCkH,2BAAS,CAAC,8BAA8B,CAAC;IACf,IAAA,OAAA,CAAA,CAAA,EAAAC,iCAAe,EAAE,CAAA,EAAyB,OAAA,CAAA,CAAA,EAAAC,6BAAW,EAAE,CAAA;;;;KASjF,EAAA,kBAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;IA5BQ,kBAAkB,GAAApH,YAAA,CAAA;IAF9B,IAAAqC,mBAAU,EAAE;IACZ,IAAAgF,kCAAgB,EAAE;IAG+B,IAAA,OAAA,CAAA,CAAA,EAAA9D,eAAM,CAAC,aAAa,CAAC,CAAA;yCAAlCC,kBAAU,EAAA,MAAA,CAAA,CAAA;KAFlC,EAAA,kBAAkB,CA6B9B;;;;;;;;;;;;ICjCY,IAAA,qBAAqB,kBAAA,YAAA;;SAKjC;IAHG,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAG,GAAH,UAAI,MAAW,EAAE,IAAwB,EAAA;IACrC,QAAA,IAAI,EAAE,CAAC;SACV,CAAA;eACJ,qBAAA,CAAA;QAAA,CAAA;IALY,qBAAqB,GAAA,UAAA,CAAA;IAFjC,IAAAnB,mBAAU,EAAE;IACZ,IAAA0E,4BAAU,EAAE;KACA,EAAA,qBAAqB,CAKjC;;;;;;;;;;;;;;;;;;;;;ICJqB,SAAA,WAAW,CAAC,UAAkB,EAAE,SAA+B,EAAA;;;;;;wBAE3E,aAAa,GAAGO,YAAO,CAAC,UAAU,IAAI,SAAS,EAAE,aAAa,CAAC,CAAC;IAChE,oBAAA,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,oBAAA,EAAE,GAAG,SAAS,CAAC,GAAG,CAACrD,wBAAgB,CAAC,CAAC;wBAE3C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAEsD,aAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IAEtD,oBAAA,IAAIA,aAAU,CAAC,aAAa,CAAC,EAAE;IAC3B,wBAAA,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,wBAAA,GAAG,CAAC,GAAG,CAACC,kBAAW,CAAC,aAAa,EAAE;IAC/B,4BAAA,MAAM,EAAE,IAAI;IACf,yBAAA,CAAC,CAAC,CAAC;IACP,qBAAA;IAAM,yBAAA;IACH,wBAAA,OAAO,CAAC,GAAG,CAAC,2CAAwC,aAAa,GAAA,IAAG,CAAC,CAAC;IACzE,qBAAA;IAED,oBAAA,OAAA,CAAA,CAAA,YAAM,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,CAAA;;IAAvB,oBAAA,EAAA,CAAA,IAAA,EAAuB,CAAC;;;;IAC3B,KAAA,CAAA,CAAA;IAAA;;ACpBD,QAAA,OAAA,kBAAA,YAAA;IAAA,IAAA,SAAA,OAAA,GAAA;SA2CC;IAdG;;IAEG;IACH,IAAA,OAAA,CAAA,SAAA,CAAA,IAAI,GAAJ,YAAA;IACI,QAAA,OAAO,IAAW,CAAC;SACtB,CAAA;IAED;;;IAGG;QACH,OAAK,CAAA,SAAA,CAAA,KAAA,GAAL,UAAkC,IAAO,EAAA;IACrC,QAAA,OAAOC,0BAAgB,CAAC,IAAI,CAAC,CAAC;SACjC,CAAA;QACJ,OAAA,OAAA,CAAA;IAAA,CAAA,EAAA,EAAA;IAKD;AACa,QAAA,cAAc,GAAGzG,cAAK,CAAC,MAAM;AAI7B,QAAA,aAAa,GAAGA,cAAK,CAAC;;ICtDnC,IAAA,IAAA,kBAAA,YAAA;IAQI,IAAA,SAAA,IAAA,CAAsB,SAA+B,EAAY,MAAe,EAAW,IAAY,EAAA;IAAjF,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsB;IAAY,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAS;IAAW,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;IACnG,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAgB,CAAC;SACtC;IAND,IAAA,MAAA,CAAA,cAAA,CAAc,IAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAAxB,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;aACrC;;;IAAA,KAAA,CAAA,CAAA;IAMD,IAAA,IAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;YACI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClE,CAAA;IAED,IAAA,IAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;IACI,QAAA,IAAI,GAAuB,CAAC;YAC5B,IAAI;IACA,YAAA,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,YAAA,GAAG,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;IACpC,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;IACR,YAAA,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAC;IAClC,SAAA;IACD,QAAA,IAAM,OAAO,GAAG,UAAC,OAA0B,EAAE,IAAY,EAAA;IACrD,YAAA,OAAO,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,GAAG,EAAA;IACtB,gBAAA,IAAM,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,GAAM,IAAI,GAAA,GAAA,GAAI,GAAK,CAAC;IAC9C,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE;IACpB,oBAAA,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBACtB,OAAO;IACV,iBAAA;IACD,gBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9B,aAAC,CAAC,CAAC;IACP,SAAC,CAAC;IACF,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtB,QAAA,OAAO,GAAG,CAAC;SACd,CAAA;IAED,IAAA,IAAA,CAAA,SAAA,CAAA,eAAe,GAAf,YAAA;IACI,QAAA,IAAM,GAAG,GAAG,IAAI,GAAG,EAAe,CAAC;YACnC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,GAAG,EAAA;gBACnC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACxC,SAAC,CAAC,CAAC;IACH,QAAA,OAAO,GAAG,CAAC;SACd,CAAA;QAED,IAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAY,EAAA;;YACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;IACrC,YAAA,OAAO,IAAI,CAAC;IACf,SAAA;IACD,QAAA,IAAI,UAAiB,CAAC;YACtB,IAAI;gBACA,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,YAAA,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACjD,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;IACR,YAAA,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACpD,SAAA;YACD,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,IAAI,GAAS,IAAI,CAAC;YACtB,IAAI,YAAY,GAAS,IAAI,CAAC;;IAC9B,YAAA,KAAiB,IAAA,WAAA,GAAA,QAAA,CAAA,SAAS,CAAA,oCAAA,EAAE,CAAA,aAAA,CAAA,IAAA,EAAA,aAAA,GAAA,WAAA,CAAA,IAAA,EAAA,EAAA;IAAvB,gBAAA,IAAI,IAAI,GAAA,aAAA,CAAA,KAAA,CAAA;oBACT,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC1B,IAAI,CAAC,IAAI,EAAE;wBACP,IAAI,YAAY,IAAI,IAAI,EAAE;IACtB,wBAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IAC5B,4BAAA,OAAO,UAAU,CAAC;IACrB,yBAAA;4BACD,MAAM,IAAI,KAAK,CAAC,YAAa,GAAA,IAAI,GAAiC,gCAAA,GAAA,IAAI,CAAC,IAAI,GAAG,GAAA,CAAC,CAAC;IACnF,qBAAA;IACD,oBAAA,OAAO,YAAY,CAAC;IACvB,iBAAA;oBACD,YAAY,GAAG,IAAI,CAAC;IACvB,aAAA;;;;;;;;;YACD,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM;IACpD,cAAE,UAAU,GAAG,YAAY,CAAC;SACnC,CAAA;IAED,IAAA,IAAA,CAAA,SAAA,CAAA,WAAW,GAAX,UAAY,IAAY,EAAE,UAA0B,EAAA;IAA1B,QAAA,IAAA,UAAA,KAAA,KAAA,CAAA,EAAA,EAAA,UAA0B,GAAA,IAAA,CAAA,EAAA;IAChD,QAAA,IAAM,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAM,IAAI,CAAC,IAAI,GAAA,GAAA,GAAI,IAAM,CAAC;IAChE,QAAA,IAAI,IAAI,GAAU,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YAChE,IAAI;IACA,YAAA,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,SAAA;IAAC,QAAA,OAAO,CAAC,EAAE;IACR,YAAA,IAAI,UAAU,EAAE;oBACZ,MAAM,IAAI,KAAK,CAAC,QAAS,GAAA,IAAI,GAAiC,gCAAA,GAAA,IAAI,CAAC,IAAI,GAAG,GAAA,CAAC,CAAC;IAC/E,aAAA;IACD,YAAA,OAAO,IAAI,CAAC;IACf,SAAA;IACD,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;IAC5B,YAAA,IAAI,UAAU,EAAE;oBACZ,MAAM,IAAI,KAAK,CAAC,QAAS,GAAA,IAAI,GAAiC,gCAAA,GAAA,IAAI,CAAC,IAAI,GAAG,GAAA,CAAC,CAAC;IAC/E,aAAA;IACD,YAAA,OAAO,IAAI,CAAC;IACf,SAAA;IACD,QAAA,OAAO,IAAI,CAAC;SACf,CAAA;QAED,IAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,IAAY,EAAA;YAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;IACrC,YAAA,OAAO,IAAI,CAAC;IACf,SAAA;YACD,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,QAAA,IAAM,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,IAAI,IAAI,GAAS,IAAI,CAAC;IACtB,QAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACjB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,EAAE,EAAE;IAChC,YAAA,IAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IACrB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,GAAG,IAAI,GAAM,IAAI,GAAA,GAAA,GAAI,IAAM,CAAC,CAAC,CAAA;IACxF,aAAA;gBACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,KAAK,CAAC;IACzC,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACpB,SAAA;IACD,QAAA,OAAO,IAAI,CAAC;SACf,CAAA;QACJ,OAAA,IAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;ICjGD,IAAA,WAAA,kBAAA,YAAA;QAcI,SAAsB,WAAA,CAAA,SAA8B,EAAW,MAAmC,EAAA;IAAnC,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAmC,GAAA,IAAA,CAAA,EAAA;IAA5E,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAqB;IAAW,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAA6B;IAC9F,QAAA,SAAS,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;IACrC,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;SACzC;IAjBD,IAAA,MAAA,CAAA,cAAA,CAAI,WAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;IAApB,QAAA,GAAA,EAAA,YAAA;;IACI,YAAA,OAAO,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,0CAAE,gBAAgB,KAAI,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACpE;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,WAAI,CAAA,SAAA,EAAA,MAAA,EAAA;IAAR,QAAA,GAAA,EAAA,YAAA;gBACI,OAAO,IAAI,CAAC,IAAI,CAAC;aACpB;;;IAAA,KAAA,CAAA,CAAA;IAaD,IAAA,WAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAoB,KAAwB,EAAE,QAA6C,EAAE,OAAkC,EAAA;YAC3H,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC7D,CAAA;IAED,IAAA,WAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAmB,KAAwB,EAAE,QAA8C,EAAE,OAAkC,EAAA;YAC3H,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC5D,CAAA;IAED,IAAA,WAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;IACI,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;SACnC,CAAA;IAED,IAAA,WAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;IACI,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;SACvE,CAAA;IAED,IAAA,WAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAgB,KAAwB,EAAE,SAAmB,EAAA;YACzD,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SACxD,CAAA;IAOD,IAAA,WAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,KAAK,EAAE,QAAQ,EAAE,OAA6B,EAAA;IACnD,QAAA,IAAI0G,0BAAiB,CAAC,QAAQ,CAAC,EAAE;IAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE;oBAC3B,UAAU,EAAE,UAAA,EAAE,EAAA;wBACV,OAAO,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;qBACtD;IACJ,aAAA,CAAC,CAAC;IACH,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,SAAA;YACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC/B,CAAA;IAED,IAAA,WAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAoB,KAAwB,EAAE,QAAW,EAAA;YACrD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC/B,CAAA;IAID,IAAA,WAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,IAAI,EAAE,EAAG,EAAA;YACvB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC3C,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC9B,CAAA;IAED,IAAA,WAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,UAAgB,IAAuB,EAAE,EAAqB,EAAA;YAC1D,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACtC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC9B,CAAA;IAED,IAAA,WAAA,CAAA,SAAA,CAAA,KAAK,GAAL,YAAA;IACI,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SAC1B,CAAA;QAED,WAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAW,KAAwB,EAAA;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACxC,CAAA;QAED,WAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAc,KAAwB,EAAA;YAClC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC3C,CAAA;QAED,WAAG,CAAA,SAAA,CAAA,GAAA,GAAH,UAAO,KAAwB,EAAA;YAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACxC,CAAA;QAES,WAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAY,KAAwB,EAAA;IAC1C,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAAE,YAAA,OAAO,IAAI,CAAC;IAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;IACjB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,SAAA;IACD,QAAA,OAAO,IAAI,CAAC;SACf,CAAA;QACJ,OAAA,WAAA,CAAA;IAAA,CAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;ACvHD,QAAA,kBAAA,kBAAA,YAAA;IAUI,IAAA,SAAA,kBAAA,CAAgC,aAA4B,EAAY,UAAsB,EAAY,MAAc,EAAA;IAAxF,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;IAAY,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;IAAY,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;SACvH;IATD,IAAA,MAAA,CAAA,cAAA,CAAI,kBAAM,CAAA,SAAA,EAAA,QAAA,EAAA;IAAV,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;aACpC;;;IAAA,KAAA,CAAA,CAAA;IAED,IAAA,MAAA,CAAA,cAAA,CAAI,kBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;IAAd,QAAA,GAAA,EAAA,YAAA;IACI,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;aACxC;;;IAAA,KAAA,CAAA,CAAA;QAOK,kBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,SAAyB,EAAA;;;;;gCACjB,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,CAAA;;IAAnD,wBAAA,SAAS,GAAG,EAAuC,CAAA,IAAA,EAAA,CAAA;4BAC1C,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA,CAAA;;IAA1D,wBAAA,QAAQ,GAAG,EAA+C,CAAA,IAAA,EAAA,CAAA;IAC9D,wBAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IAChD,wBAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;;;;4BAEnB,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA,CAAA;;IAAhD,wBAAA,KAAK,GAAG,EAAwC,CAAA,IAAA,EAAA,CAAA;IAC3C,wBAAA,OAAA,CAAA,CAAA,YAAM,QAAQ,CAAC,IAAI,EAAE,CAAA,CAAA;;4BAAhC,QAAQ,GAAG,SAAqB,CAAC;IACjC,wBAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;IAAE,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IAChD,wBAAA,OAAA,CAAA,CAAA,YAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA,CAAA;;IAAjC,wBAAA,EAAA,CAAA,IAAA,EAAiC,CAAC;;;;4BAElC,OAAM,CAAA,CAAA,YAAA,QAAQ,CAAC,QAAQ,CAAC,GAAC,CAAC,OAAO,IAAI,GAAC,CAAC,CAAA,CAAA;;IAAvC,wBAAA,EAAA,CAAA,IAAA,EAAuC,CAAC;IACxC,wBAAA,MAAM,GAAC,CAAC;;IAER,wBAAA,IAAA,EAAA,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAA,EAAtB,OAAsB,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;4BACtB,OAAM,CAAA,CAAA,YAAA,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA,CAAA;;IAA1C,wBAAA,EAAA,CAAA,IAAA,EAA0C,CAAC;;;;;IAElD,SAAA,CAAA,CAAA;SAAA,CAAA;QACJ,OAAA,kBAAA,CAAA;IAAA,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;ICtBD,IAAM,UAAU,GAAG,mBAAmB,CAAC;IAOvC;;;;IAIG;IACa,SAAA,cAAc,CAAC,MAAmB,EAAE,QAAkD,EAAA;QAClG,IAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,IAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;IACrB,QAAA,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;IACrF,KAAA;QACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI,EAAA;YAC9B,MAAM;iBACD,OAAO,CAAC,IAAI,CAAC;IACb,aAAA,GAAG,CAAC,YAAA;IACD,YAAA,IAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC;IAC9C,YAAA,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjG,YAAA,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAC,CAAC,CAAC;IACX,KAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;IAIG;IACG,SAAU,OAAO,CAAC,KAA2B,EAAA;QAC/C,OAAO,UAAC,MAAW,EAAE,WAAmB,EAAA;;;IACpC,QAAA,IAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAChF,QAAA,IAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAyB,CAAC;IAC9G,QAAA,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,cAAc,KAAK,cAAc,CAAnC,EAAmC,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,EAAE;gBACT,MAAM,GAAG,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzD,YAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,SAAA;IACD,QAAA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,GAAA,EAAA,GAAA,EAAA,EAAG,GAAC,WAAW,CAAA,GAAG,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAK,GAAI,YAAY,MAAE,CAAC;YAC7F,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACpE,KAAC,CAAC;IACN,CAAC;IAED;;;;;IAKG;aACa,QAAQ,CAA2C,KAAyB,EAAE,KAAmC,EAAE,MAAyB,EAAA;QACxJ,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,KAAK,EAAA;YACzC,IAAI,KAAK,GAAoB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,QAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACvB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,SAAA;IACD,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;IAC1B,YAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,KAAK,EAAA;IACzB,gBAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,aAAC,CAAC,CAAC;IACN,SAAA;IACD,QAAA,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,UAAA,KAAK,EAAA;IACrG,YAAA,IAAM,IAAI,GAAG,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;gBAC5B,OAAO,EAAC,KAAK,EAAA,KAAA,EAAE,KAAK,OAAA,EAAE,IAAI,EAAA,IAAA,EAAC,CAAC;IAChC,SAAC,CAAC,CAAC;IACP,KAAC,CAAC,CAAC;IACP,CAAC;IAEK,SAAU,YAAY,CAAC,IAAY,EAAE,UAAkB,EAAE,EAAiB,EAAE,YAA4B,EAAE,YAA4B,EAAA;IAA7E,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,EAAA,EAAA,EAAiB,GAAA,IAAA,CAAA,EAAA;IAAE,IAAA,IAAA,YAAA,KAAA,KAAA,CAAA,EAAA,EAAA,YAA4B,GAAA,KAAA,CAAA,EAAA;IAAE,IAAA,IAAA,YAAA,KAAA,KAAA,CAAA,EAAA,EAAA,YAA4B,GAAA,IAAA,CAAA,EAAA;QACxI,EAAE,GAAG,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxC,IAAA,IAAM,MAAM,GAAiD;IACzD,QAAA;IACI,YAAA,OAAO,EAAE;IACL,gBAAA,IAAI,EAAA,IAAA;IACJ,gBAAA,UAAU,EAAA,UAAA;IACV,gBAAA,YAAY,EAAA,YAAA;IACZ,gBAAA,EAAE,EAAA,EAAA;IACL,aAAA;IACJ,SAAA;IACD,QAAA;IACI,YAAA,OAAO,EAAE;oBACL,IAAI,EAAE,MAAI,EAAI;IACd,gBAAA,0BAA0B,EAAE,IAAI;IACnC,aAAA;IACJ,SAAA;SACJ,CAAC;QACF,IAAI,CAAC,YAAY,EAAE;IACf,QAAA,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,KAAA;IACD,IAAA,OAAO,MAAM,CAAC;IAClB,CAAC;IAEK,SAAU,eAAe,CAAC,IAAY,EAAE,QAAkG,EAAE,EAAiB,EAAE,SAAqB,EAAA;IAAxC,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,EAAA,EAAA,EAAiB,GAAA,IAAA,CAAA,EAAA;IAAE,IAAA,IAAA,SAAA,KAAA,KAAA,CAAA,EAAA,EAAA,SAAqB,GAAA,IAAA,CAAA,EAAA;IACtL,IAAA,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC;QAChB,SAAS,GAAG,SAAS,IAAI,EAAC,EAAE,EAAE,MAAM,EAAC,CAAC;QACtC,OAAO;IACH,QAAA,OAAO,EAAE;IACL,YAAA,IAAI,EAAA,IAAA;IACJ,YAAA,GAAG,EAAE,SAAS;IACd,YAAA,QAAQ,EAAA,QAAA;IACR,YAAA,EAAE,EAAA,EAAA;IACL,SAAA;SACJ,CAAC;IACN,CAAC;IAEK,SAAU,UAAU,CAAC,KAAuB,EAAA;IAC9C,IAAA,OAAO,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC;IAC3B,CAAC;aAEe,UAAU,CAAC,KAAa,EAAE,MAAW,EAAE,IAAa,EAAA;QAChE,OAAO,EAAC,KAAK,EAAA,KAAA,EAAE,MAAM,QAAA,EAAE,IAAI,EAAA,IAAA,EAAC,CAAC;IACjC,CAAC;aAEe,gBAAgB,GAAA;QAAC,IAAwB,MAAA,GAAA,EAAA,CAAA;aAAxB,IAAwB,EAAA,GAAA,CAAA,EAAxB,EAAwB,GAAA,SAAA,CAAA,MAAA,EAAxB,EAAwB,EAAA,EAAA;YAAxB,MAAwB,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;QACrD,IAAM,KAAK,GAAG,EAAE,CAAC;IACjB,IAAA,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK,EAAA;YAChB,IAAI,KAAK,CAAC,IAAI,EAAE;gBACZ,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACrC,SAAA;IACL,KAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;IACpE,CAAC;IAEK,SAAU,YAAY,CAAC,MAAuB,EAAA;IAChD,IAAA,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC;IAC9B,CAAC;IAEK,SAAU,WAAW,CAAC,WAAoC,EAAA;IAC5D,IAAA,OAAO,EAAC,OAAO,EAAE,WAAW,EAAC,CAAC;IAClC,CAAC;IAEe,SAAA,gBAAgB,CAAqB,SAAmB,EAAE,IAAS,EAAA;;QAC/E,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAA,IAAA,OAAA,GAAA,UAAA,IAAI,EAAE,GAAG,EAAA;YACZ,IAAA,GAAG,GAAU,GAAU,CAAA,GAApB,EAAE,IAAI,GAAI,GAAU,CAAA,IAAd,CAAe;IAC7B,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IACxC,YAAA,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrB,SAAA;IACD,QAAA,IAAI,CAAC,GAAG;IAAW,YAAA,OAAA,UAAA,CAAA;YACnB,IAAM,KAAK,GAAGC,cAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxC,IAAM,UAAU,GAAG,UAAA,GAAG,EAAA;gBAClB,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,YAAY3G,cAAK,CAAC,QAAQ;IAAE,gBAAA,OAAO,GAAG,CAAC;gBAC7D,OAAO,gBAAgB,CAAC4G,cAAK,CAAC,GAAG,CAAQ,EAAE,GAAG,CAAC,CAAC;IACpD,SAAC,CAAC;IACF,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACtB,YAAAC,cAAa,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;;IAEtD,SAAA;YACDA,cAAa,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;;;IAfnD,QAAA,KAA0B,IAAA,EAAA,GAAA,QAAA,CAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;IAAnD,YAAA,IAAA,KAAA,MAAW,CAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAA,EAAV,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;IAAT,YAAA,OAAA,CAAA,IAAI,EAAE,GAAG,CAAA,CAAA;IAgBpB,SAAA;;;;;;;;;IAED,IAAA,OAAO,MAAM,CAAC;IAElB,CAAC;IAEK,SAAgB,oBAAoB,CAA2C,KAAyB,EAAE,YAA6B,EAAE,MAAyB,EAAE,cAAwB,EAAA;IAAxB,IAAA,IAAA,cAAA,KAAA,KAAA,CAAA,EAAA,EAAA,cAAwB,GAAA,EAAA,CAAA,EAAA;;;;;;;wBACxL,SAAS,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;wBAChI,eAAe,GAAyB,CAAC,SAAS,GAAG,EAAE,GAAG,CAAC;IAC7D,4BAAA,KAAK,YAAG,EAAC,CAAA,SAAS,IAAG,SAAS,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAC,EAAA,CAAA;IAC1D,yBAAA,CAAC,CAAC;IACY,oBAAA,OAAA,CAAA,CAAA,YAAM,KAAK,CAAC,SAAS,CAC7B,aAAA,CAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,YAAY,WACZ,eAAe,CAAA,CAAA,EAAA;IAClB,4BAAA;IACI,gCAAA,MAAM,EAAE;IACJ,oCAAA,GAAG,EAAE,SAAS;IACd,oCAAA,MAAM,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC;IAC/B,iCAAA;IACJ,6BAAA;IACD,4BAAA;IACI,gCAAA,QAAQ,EAAE;IACN,oCAAA,GAAG,EAAE,CAAC;IACN,oCAAA,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,EAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAC,GAAG,SAAS;IACrG,oCAAA,KAAK,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC;IACzB,oCAAA,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EACA,KAAK,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,EACtB,EAAA,cAAc,CACpB;IACJ,iCAAA;IACJ,6BAAA;+BACH,CAAA,CAAA;;IApBI,oBAAA,MAAM,GAAG,EAoBb,CAAA,IAAA,EAAA,CAAA;IACI,oBAAA,UAAU,GAAG,MAAM,CAAC,CAAC,CAAqC,CAAC;wBACjE,IAAI,CAAC,UAAU,EAAE;IACb,wBAAA,OAAA,CAAA,CAAA,aAAO,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,EAAC,CAAC,CAAA;IAClD,qBAAA;wBACD,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAQ,CAAA,EAAA,CAAC,CAAC;IAChF,oBAAA,OAAA,CAAA,CAAA,aAAO,UAAU,CAAC,CAAA;;;IACrB,KAAA,CAAA,CAAA;IAAA,CAAA;IAEe,SAAA,aAAa,CAA2C,KAAyB,EAAE,UAA6F,EAAA;QAAhM,IAkCC,KAAA,GAAA,IAAA,CAAA;IAjCG,IAAA,IAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAA,IAAM,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAA,OAAOC,uCAAoB,CAAC;IACxB,QAAA,QAAQ,EAAE,KAAK;IACf,QAAA,KAAK,EAAE,UAAM,MAAM,EAAA,EAAG,OAAA3H,WAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;IACZ,wBAAA,GAAG,GAAG,MAAM,CAAC,OAAmB,CAAC;4BACjC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAK,GAAA,SAAS,GAAQ,QAAA,CAAC,CAAC;4BAC3C,EAAE,GAAG,GAAG,CAAC,MAAM,CAAI,SAAS,GAAA,IAAI,CAAW,CAAC;IAClD,wBAAA,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;IACf,4BAAA,MAAM,IAAI2G,kCAAe,CAAI,SAAS,GAAA,iCAAiC,CAAC,CAAC;IAC5E,yBAAA;4BACK,KAAK,GAAG,CAAC,KAAK;IAChB,8BAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;kCAClB,KAAK,CAAC,OAAO,CAAC,EAAC,KAAK,EAAA,KAAA,EAAQ,CAAC,CAAC;4BAChC,GAAG,GAAa,IAAI,CAAC;IACrB,wBAAA,IAAA,CAAA,UAAU,CAAC,UAAU,CAAC,EAAtB,OAAsB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;;4BAEZ,OAAM,CAAA,CAAA,YAAA,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA,CAAA;;4BAArD,GAAG,GAAG,SAA+C,CAAC;;;;IAEtD,wBAAA,MAAM,IAAIA,kCAAe,CAAI,SAAS,GAAiB,gBAAA,IAAA,GAAC,CAAC,OAAO,IAAI,GAAC,CAAE,CAAC,CAAC;;IAGvE,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,KAAK,CAAA,CAAA;;4BAAjB,GAAG,GAAG,SAAW,CAAC;;;4BAEtB,IAAI,CAAC,GAAG,EAAE;IACN,4BAAA,MAAM,IAAIlB,4BAAS,CAAC,GAAG,EAAE,CAAC,KAAK;sCACtB,SAAS,GAAA,+BAAA,GAAgC,EAAI;IAClD,kCAAK,SAAS,GAAmC,kCAAA,GAAA,KAAO,CAAC,CAAC;IACjE,yBAAA;IACD,wBAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;IAChC,wBAAA,OAAA,CAAA,CAAA,aAAO,GAAG,CAAC,CAAA;;;IACd,SAAA,CAAA,GAAA;IACJ,KAAA,CAAC,CAAC;IACP;;;;;;;;;;;;;;;;;;;;;ICHA,SAAe,WAAW,CAAC,SAA8B,EAAE,GAAa,EAAA;;;;;;wBACpE,IAAI,GAAG,CAAC,IAAI;4BAAE,OAAO,CAAA,CAAA,aAAA,GAAG,CAAC,IAAI,CAAC,CAAA;wBACxB,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;wBAC3C,OAAO,GAAG,IAAI,CAAC;wBACnB,IAAI;IACM,wBAAA,MAAM,GAAG,SAAS,CAAC,OAAO,CAACpD,qBAAa,CAAC,CAAC;4BAChD,OAAO,GAAGuF,mBAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAQ,CAAC;IAC5E,qBAAA;IAAC,oBAAA,OAAO,CAAC,EAAE;4BACR,MAAM,IAAInC,4BAAS,CAAC,GAAG,EAAE,0BAA2B,GAAA,CAAC,CAAC,OAAO,GAAG,GAAA,CAAC,CAAC;IACrE,qBAAA;wBACD,IAAI,CAAC,OAAO,EAAE;IACV,wBAAA,MAAM,IAAIA,4BAAS,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAC;IAC5E,qBAAA;IACD,oBAAA,EAAA,GAAA,GAAG,CAAA;IAAQ,oBAAA,OAAA,CAAA,CAAA,YAAM,SAAS,CAAC,OAAO,CAACL,mBAAW,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAA;;wBAAnE,EAAI,CAAA,IAAI,GAAG,EAAA,CAAA,IAAA,EAAwD,CAAC;wBACpE,OAAO,CAAA,CAAA,aAAA,GAAG,CAAC,IAAI,CAAC,CAAA;;;IACnB,KAAA,CAAA,CAAA;IAAA,CAAA;aAEe,cAAc,GAAA;;IAE1B,IAAA,IAAM,MAAM,GAAG;YACX,IAAI,SAAS,CAAC,cAAc,EAAEjB,SAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAC3D,IAAI,SAAS,CAAC,YAAY,EAAEA,SAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACvD,IAAI,SAAS,CAAC,UAAU,EAAEA,SAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnD,QAAA,IAAI,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC;IACtC,QAAA,IAAI,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC;IAC9C,QAAA,IAAI,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC;IAC9B,QAAA,IAAI,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC;IACnC,QAAA,IAAI,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;IACjC,QAAA,IAAI,SAAS,CAAC,mBAAmB,EAAE,eAAe,CAAC;IACnD,QAAA,IAAI,SAAS,CAAC,sBAAsB,EAAE,oCAAoC,CAAC;IAC3E,QAAA,IAAI,SAAS,CAAC,WAAW,EAAE,sCAAsC,CAAC;IAClE,QAAA,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;IAC7B,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC;IACxC,QAAA,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;IAChC,QAAA,IAAI,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC;IACpC,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC;IACtC,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC;IAC5B,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,QAAA,IAAI,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC;IAClC,QAAA,IAAI,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAC;IACjD,QAAA,IAAI,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC;IAChC,QAAA,IAAI,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;IACjC,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE,sCAAsC,CAAC;IAChE,QAAA,IAAI,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC;IACjC,QAAA,IAAI,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC;YAChC,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,QAAA,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;YACnC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1C,QAAA,IAAI,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;SAC5C,CAAC;;IAGF,IAAA,IAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;YAC/B,OAAO;IACH,YAAA,OAAO,EAAE,SAAS;IAClB,YAAA,QAAQ,EAAE,CAAC;aACd,CAAA;IACL,KAAC,CAAC,CAAC;;IAGH,IAAA,IAAM,QAAQ,GAAG;YACbnC,sBAAc;YACduB,qBAAa;YACbX,cAAM;YACNc,uBAAe;YACfG,aAAK;YACLD,sBAAc;YACdvB,qBAAa;YACbyB,wBAAgB;YAChBC,gBAAQ;YACRG,eAAO;YACPD,oBAAY;YACZS,mBAAW;YACX5B,kBAAU;YACVQ,kBAAU;YACV2B,kBAAU;YACVE,mBAAW;YACX3C,sBAAc;YACda,kBAAU;YACVwB,wBAAgB;YAChBF,2BAAmB;YACnBC,kBAAU;YACVQ,mBAAW;SACC,CAAC;;QAGjB,IAAM,WAAW,GAAG,IAAI,WAAW,CAACyC,kBAAS,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACtE,IAAA,cAAc,CAAC,OAAO,CAAC,UAAA,QAAQ,EAAA;YAC3B,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,KAAC,CAAC,CAAC;IACH,IAAA,QAAQ,CAAC,OAAO,CAAC,UAAA,OAAO,EAAA;IACpB,QAAA,IAAI,CAACA,kBAAS,CAAC,YAAY,CAAC,OAAO,CAAC;IAChC,YAAA,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,KAAC,CAAC,CAAC;IACH,IAAA,OAAO,WAAW,CAAC;IACvB,CAAC;aAEqB,YAAY,CAAC,MAAsB,EAAE,SAA2B,EAAE,MAA6B,EAAA;;;gBAmLpH,KAAA,GAAA,IAAA,CAAA;;;;IAjLG,oBAAA,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC;IACtD,oBAAA,MAAM,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;wBAG9B,YAAY,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACvC,oBAAA,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,UAAA,OAAO,EAAA;4BAC7C,OAAO;IACH,4BAAA,OAAO,EAAE,OAAO;IAChB,4BAAA,QAAQ,EAAE,OAAO;6BACpB,CAAC;IACN,qBAAC,CAAC,CAAC;IAGG,oBAAA,cAAc,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,UAAA,CAAC,EAAA;4BAC9C,OAAO;IACH,4BAAA,OAAO,EAAE,SAAS;IAClB,4BAAA,QAAQ,EAAE,CAAC;6BACd,CAAA;IACL,qBAAC,CAAC,CAAC;IAGG,oBAAA,YAAY,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,UAAA,OAAO,EAAA;4BAChD,OAAO;IACH,4BAAA,OAAO,EAAE,GAAG;IACZ,4BAAA,QAAQ,EAAE,OAAO;6BACpB,CAAC;IACN,qBAAC,CAAC,CAAC;IAGG,oBAAA,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;IAC7C,oBAAA,WAAW,CAAC,mBAAmB,GAAG,KAAK,CAAC;IACxC,oBAAA,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,wBAAA,WAAW,EAAE,IAAI;4BACjB,cAAc,EAAE,CAAC,qBAAqB,CAAC;IACvC,wBAAA,MAAM,EAAE,UAAC,MAAM,EAAE,QAAQ,EAAA;IACrB,4BAAA,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;6BACxB;IACJ,qBAAA,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;wBAC3B,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC;IACvD,oBAAA,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,GAAG,GAAG,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC;IACxF,oBAAA,WAAW,CAAC,WAAW,GAAG,CAACnB,8BAAsB,EAAE,mBAAmB,EAAEG,0BAAkB,EAAE,wBAAwB,EAAE,sBAAsB,CAAC;IACxI,yBAAA,MAAM,CAAC,WAAW,CAAC,WAAkB,IAAI,EAAE,CAAC,CAAC;wBAClD,WAAW,CAAC,WAAW,GAAG,CAAC,gBAAgB,EAAET,sBAAc,EAAEK,yBAAiB,EAAE,oBAAoB,CAAC;IAChG,yBAAA,MAAM,CAAC,WAAW,CAAC,WAAkB,IAAI,EAAE,CAAC,CAAC;IAG5C,oBAAA,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;IACjD,oBAAA,aAAa,CAAC,WAAW,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,WAAkB,IAAI,EAAE,CAAC,CAAC;IACnG,oBAAA,aAAa,CAAC,WAAW,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,WAAkB,IAAI,EAAE,CAAC,CAAC;wBAI1F,YAAY,GAAoB,EAAE,CAAC;;IAGzC,oBAAA,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAA,OAAO,EAAA;4BACvB,IAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC1C,wBAAA,MAAM,CAAC,OAAO,CAAC,UAAA,QAAQ,EAAA;gCACnB,YAAY,CAAC,IAAI,CAAC,EAAC,OAAO,EAAA,OAAA,EAAE,QAAQ,EAAA,QAAA,EAAC,CAAC,CAAC;IAC3C,yBAAC,CAAC,CAAC;IACP,qBAAC,CAAC,CAAC;;IAGH,oBAAA,YAAY,CAAC,IAAI,CAAjB,KAAA,CAAA,YAAY,EACL,aAAA,CAAA,aAAA,CAAA,aAAA,CAAA,aAAA,CAAA,aAAA,CAAA,aAAA,CAAA,aAAA,CAAA,aAAA,CAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,YAAY,CACZ,CAAA,EAAA,MAAA,CAAA,gBAAgB,CAChB,CAAA,EAAA,MAAA,CAAA,cAAc,CACd,CAAA,EAAA,MAAA,CAAA,YAAY,WACZ,WAAW,CAAC,WAA0B,CAAA,CAAA,EAAA,MAAA,CACtC,WAAW,CAAC,WAA0B,CAAA,CAAA,EAAA,MAAA,CACtC,aAAa,CAAC,WAA0B,CAAA,CAAA,EAAA,MAAA,CACxC,aAAa,CAAC,WAA0B,CAAA,CAAA,EAAA,MAAA,CACxC,SAAS,CACZ,CAAA,EAAA,CAAA;IACI,4BAAA,OAAO,EAAE,OAAO;gCAChB,UAAU,EAAE,UAAC,SAA8B,EAAA;oCACvC,OAAO,SAAS,CAAC,OAAO,CAAC/C,uBAAe,CAAC,CAAC,OAAO,CAAC;iCACrD;6BACJ,EACD;IACI,4BAAA,OAAO,EAAE,WAAW;gCACpB,UAAU,EAAE,UAAC,SAA8B,EAAA;oCACvC,OAAO,SAAS,CAAC,OAAO,CAACA,uBAAe,CAAC,CAAC,MAAM,CAAC;iCACpD;6BACJ,EACD;IACI,4BAAA,OAAO,EAAE,aAAa;gCACtB,UAAU,EAAE,UAAC,SAA8B,EAAA;oCACvC,OAAO,SAAS,CAAC,OAAO,CAACA,uBAAe,CAAC,CAAC,EAAE,CAAC;iCAChD;6BACJ,CACJ,CAAA,CAAA,CAAA;IAIK,oBAAA,WAAW,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;IAElD,oBAAA,YAAY,CAAC,OAAO,CAAC,UAAA,QAAQ,EAAA;IACzB,wBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;IAClB,4BAAA,IAAImE,kBAAS,CAAC,YAAY,CAAC,QAAQ,CAAC;oCAAE,OAAO;IAC7C,4BAAA,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gCACzC,OAAO;IACV,yBAAA;4BACD,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAe,CAAC,CAAC;IAC5D,qBAAC,CAAC,CAAC;IAEH,oBAAA,WAAW,CAAC,QAAQ,CAAC,YAAY,EAAE;IAC/B,wBAAA,QAAQ,EAAE,WAAW;IACxB,qBAAA,CAAC,CAAC;wBAEH,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,IAAI,WAAW,CAAC;;IAGrE,oBAAA,WAAW,CAAC,oBAAoB,GAAG,UAAO,MAAc,EAAE,KAAY,EAAI,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;4CACzD,OAAM,CAAA,CAAA,YAAA,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA,CAAA;;IAArD,oCAAA,IAAI,GAAG,EAA8C,CAAA,IAAA,EAAA,CAAA;wCAC3D,IAAI,CAAC,IAAI,EAAE;IACP,wCAAA,MAAM,IAAIpC,4BAAS,CAAC,GAAG,EAAE,+CAA+C,CAAC,CAAC;IAC7E,qCAAA;IACK,oCAAA,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAC1D,oCAAA,IAAA,EAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA,EAAxC,OAAwC,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;wCACpC,SAAS,GAAG,IAAI,CAAC;;;;wCACJ,OAAA,GAAA,QAAA,CAAA,KAAK,CAAA,EAAA,SAAA,GAAA,OAAA,CAAA,IAAA,EAAA,CAAA;;;;wCAAb,IAAI,GAAA,SAAA,CAAA,KAAA,CAAA;IACL,oCAAA,IAAA,CAAA,UAAU,CAAC,IAAI,CAAC,EAAhB,OAAgB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;;wCAER,OAAM,CAAA,CAAA,YAAA,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA,CAAA;;IAA5C,oCAAA,IAAI,SAAwC,EAAE;IAC1C,wCAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;IACf,qCAAA;;;;wCAED,SAAS,GAAG,GAAC,CAAC;;;IAGtB,oCAAA,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAAE,wCAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;;;;;;;;;;;;;;;;IAE5C,oCAAA,KAAK,GAAG,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpE,0CAAE,2CAA2C;IAC7C,0CAAE,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC;wCACrC,MAAM,IAAIA,4BAAS,CAAC,GAAG,EAAE,0BAA2B,GAAA,KAAK,GAAG,GAAA,CAAC,CAAC;IAElE,gCAAA,KAAA,EAAA,EAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;;yBACf,CAAA,CAAA,EAAA,CAAC;IACF,oBAAA,WAAW,CAAC,kBAAkB,GAAG,UAAO,MAAc,IAAI,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;gCACtD,OAAO,CAAA,CAAA,aAAA,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;;yBACnD,CAAA,CAAA,EAAA,CAAC;IAGI,oBAAA,aAAa,GAAG,WAAW,CAAC,OAAO,CAACpD,qBAAa,CAAC,CAAC;IACnD,oBAAA,EAAE,GAAG,WAAW,CAAC,OAAO,CAACqB,uBAAe,CAAC,CAAC;wBAEhD,IAAI,MAAM,CAAC,WAAW,EAAE;IACpB,wBAAA,EAAE,CAAC,OAAO,CAAC,GAAG,CAACoE,eAAI,CAAC;IAChB,4BAAA,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC;IACtC,kCAAE,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC;IACpC,kCAAE,OAAO;IAChB,yBAAA,CAAC,CAAC,CAAC;4BACJC,+BAAmB,CAAC,WAAW,CAAC,CAAC;IACjC,wBAAAC,mCAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;4BAE1C,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,UAAC,GAAG,EAAE,GAAG,EAAA;IACjC,4BAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7D,yBAAC,CAAC,CAAC;IACN,qBAAA;wBACD,IAAI,MAAM,CAAC,aAAa,EAAE;4BACtBC,8BAAkB,CAAC,WAAW,CAAC,CAAC;IAChC,wBAAAC,iCAAe,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IACzC,qBAAA;IAGG,oBAAA,IAAA,EAAA,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA,EAAvE,OAAuE,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;IACvE,oBAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAClC,oBAAA,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC1F,sBAAc,CAAC,CAAC;IACtD,oBAAA,OAAA,CAAA,CAAA,YAAM,SAAS,CAAC,OAAO,EAAE,CAAA,CAAA;;IAAzB,oBAAA,EAAA,CAAA,IAAA,EAAyB,CAAC;IAC1B,oBAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;;4BAGtD,OAAM,CAAA,CAAA,YAAA,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA,CAAA;;IAAjD,oBAAA,EAAA,CAAA,IAAA,EAAiD,CAAC;IAElD,oBAAA,OAAA,CAAA,CAAA,aAAO,WAAW,CAAC,CAAA;;;IACtB,KAAA,CAAA,CAAA;IAAA;;ICrgBD;;IAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"stemy-backend.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/utils.ts","../../src/validators.ts","../../src/rest-openapi.ts","../../src/common-types.ts","../../src/services/asset-processor.ts","../../src/services/configuration.ts","../../src/services/mongo-connector.ts","../../src/services/entities/base-entity.ts","../../src/services/entities/asset.ts","../../src/services/entities/temp-asset.ts","../../src/services/assets.ts","../../src/services/entities/lazy-asset.ts","../../src/services/job-manager.ts","../../src/services/entities/progress.ts","../../src/services/progresses.ts","../../src/services/lazy-assets.ts","../../src/services/asset-resolver.ts","../../src/services/backend-provider.ts","../../src/services/cache-processor.ts","../../src/services/cache.ts","../../src/services/endpoint-provider.ts","../../src/services/fixtures.ts","../../src/services/gallery-image.ts","../../src/services/gallery-cache.ts","../../src/services/gallery.ts","../../src/services/id-generator.ts","../../src/services/translation-provider.ts","../../src/services/translator.ts","../../src/services/template-renderer.ts","../../src/services/mail-sender.ts","../../src/services/memory-cache.ts","../../src/services/user-manager.ts","../../src/requests/asset-image-params.ts","../../src/rest-controllers/assets.controller.ts","../../src/rest-controllers/auth.controller.ts","../../src/rest-controllers/gallery.controller.ts","../../src/rest-controllers/progresses.controller.ts","../../src/rest-middlewares/error-handler.middleware.ts","../../src/rest-middlewares/container.middleware.ts","../../src/rest-middlewares/language.middleware.ts","../../src/rest-middlewares/request-ended.middleware.ts","../../src/rest-middlewares/request-started.middleware.ts","../../src/socket-controllers/progress.controller.ts","../../src/socket-middlewares/compression.middleware.ts","../../src/static.ts","../../src/utilities/base-doc.ts","../../src/utilities/tree.ts","../../src/utilities/di-container.ts","../../src/utilities/lazy-asset-generator.ts","../../src/utilities/mongoose.ts","../../src/public_api.ts","../../src/stemy-backend.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import {exec as execChildProcess} from \"child_process\";\r\nimport {createHash} from \"crypto\";\r\nimport {DependencyContainer} from \"tsyringe\";\r\nimport {from, Observable, Subject, Subscription} from \"rxjs\";\r\nimport {canReportError} from \"rxjs/internal/util/canReportError\";\r\nimport {Server} from \"socket.io\";\r\nimport {mkdir, readFile as fsReadFile, unlink, writeFile as fsWriteFile} from \"fs\";\r\nimport {basename, dirname} from \"path\";\r\nimport {GridFSBucket, ObjectId} from \"mongodb\";\r\nimport {Document, Types} from \"mongoose\";\r\nimport {PassThrough, Readable, ReadableOptions} from \"stream\";\r\nimport sharp_, {Region} from \"sharp\";\r\nimport {IAssetCropInfo, IAssetImageParams, IAssetMeta, IClientSocket, Type} from \"./common-types\";\r\n\r\nconst sharp = sharp_;\r\n\r\nexport interface IDIContainers {\r\n appContainer: DependencyContainer\r\n}\r\n\r\nexport const diContainers: IDIContainers = {\r\n appContainer: null\r\n};\r\n\r\nexport type FilterPredicate = (value: any, key?: any, target?: any, source?: any) => boolean;\r\n\r\nexport function isNullOrUndefined(value: any): boolean {\r\n return value == null || typeof value == \"undefined\";\r\n}\r\n\r\nexport function isDefined(value: any): boolean {\r\n return !isNullOrUndefined(value);\r\n}\r\n\r\nexport function getType(obj: any): string {\r\n const regex = new RegExp(\"\\\\s([a-zA-Z]+)\");\r\n return Object.prototype.toString.call(obj).match(regex)[1].toLowerCase();\r\n}\r\n\r\nexport function isObject(value: any): boolean {\r\n return getType(value) == \"object\";\r\n}\r\n\r\nexport function isArray(value: any): value is Array<any> {\r\n return Array.isArray(value);\r\n}\r\n\r\nexport function isBoolean(value: any): value is boolean {\r\n return typeof value === \"boolean\";\r\n}\r\n\r\nexport function isDate(value: any): value is Date {\r\n return !!value && value[Symbol.toPrimitive] && !isNaN(value) && \"undefined\" !== typeof value.getDate;\r\n}\r\n\r\nexport function isPrimitive(value: any): boolean {\r\n const type = typeof value;\r\n return value == null || (type !== \"object\" && type !== \"function\");\r\n}\r\n\r\nexport function isString(value: any): value is string {\r\n return typeof value === \"string\";\r\n}\r\n\r\nexport function isFunction(value: any): value is Function {\r\n return typeof value === \"function\";\r\n}\r\n\r\nexport function isConstructor(value: any): boolean {\r\n return (value && typeof value === \"function\" && value.prototype && value.prototype.constructor) === value && value.name !== \"Object\";\r\n}\r\n\r\nexport function isType(value: any): value is Type<any> {\r\n return isConstructor(value);\r\n}\r\n\r\nexport function isInterface(obj: any, interFaceObject: { [key: string]: string }): boolean {\r\n if (!obj || typeof obj !== \"object\" || isArray(obj) || !isObject(interFaceObject)) return false;\r\n const keys = Object.keys(interFaceObject);\r\n for (const key of keys) {\r\n let type = interFaceObject[key] || \"\";\r\n if (type.startsWith(\"*\")) {\r\n type = type.substr(1);\r\n if (obj.hasOwnProperty(key) && getType(obj[key]) !== type) return false;\r\n } else if (!obj.hasOwnProperty(key) || getType(obj[key]) !== type) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport function ucFirst(value: string): string {\r\n if (!value) return \"\";\r\n return value[0].toUpperCase() + value.substr(1);\r\n}\r\n\r\nexport function lcFirst(value: string): string {\r\n if (!value) return \"\";\r\n return value[0].toLowerCase() + value.substr(1);\r\n}\r\n\r\nexport function isObjectId(id: string): boolean {\r\n return typeof id === \"string\" && id.length == 24 && !isNaN(Number(\"0x\" + id));\r\n}\r\n\r\nexport function firstItem<T>(value: T[]): T {\r\n return value[0];\r\n}\r\n\r\nexport function lastItem<T>(value: T[]): T {\r\n return value[value.length - 1];\r\n}\r\n\r\nexport function regroup<T>(value: T[], comparator: (a: T, b: T) => boolean): Array<T[]> {\r\n const result: Array<T[]> = [];\r\n if (!isArray(value) || value.length == 0) return result;\r\n value = Array.from(value);\r\n result.push([value.shift()]);\r\n value.forEach(item => {\r\n const group = result.find(g => g.some(a => comparator(a, item)));\r\n if (group) {\r\n group.push(item);\r\n return;\r\n }\r\n result.push([item]);\r\n });\r\n return result;\r\n}\r\n\r\nexport function uniqueItems<T>(value: T[]): T[] {\r\n return value.filter((v, ix) => value.indexOf(v) === ix);\r\n}\r\n\r\nexport function getValue(obj: any, key: string, defaultValue?: any, treeFallback: boolean = false): any {\r\n key = key || \"\";\r\n const keys = key.split(\".\");\r\n let curKey = \"\";\r\n do {\r\n curKey += keys.shift();\r\n if (isDefined(obj) && isDefined(obj[curKey]) && (typeof obj[curKey] === \"object\" || !keys.length)) {\r\n obj = obj[curKey];\r\n curKey = \"\";\r\n } else if (!keys.length) {\r\n defaultValue = typeof defaultValue == \"undefined\" ? key.replace(new RegExp(`${curKey}$`), `{${curKey}}`) : defaultValue;\r\n obj = treeFallback ? obj || defaultValue : defaultValue;\r\n } else {\r\n curKey += \".\";\r\n }\r\n } while (keys.length);\r\n return obj;\r\n}\r\n\r\nexport function groupBy<T>(items: T[], cb: (item: T) => string) {\r\n return items.reduce((res, item) => {\r\n const group = cb(item);\r\n res[group] = res[group] || [];\r\n res[group].push(item);\r\n return res;\r\n }, {});\r\n}\r\n\r\nexport function convertValue(value: any, type: string): any {\r\n switch (type) {\r\n case \"boolean\":\r\n value = typeof value == \"string\" ? value.toLowerCase() : value;\r\n return (value == \"no\" || value == \"false\" || value == \"0\") ? false : !!value;\r\n case \"number\":\r\n const val = parseFloat(value);\r\n return isNaN(val) ? 0 : val;\r\n case \"array\":\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return `${value}`.split(\", \");\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nconst cropInterface = {\r\n x: \"number\",\r\n y: \"number\",\r\n w: \"number\",\r\n h: \"number\"\r\n};\r\n\r\nfunction toCropRegion(cropInfo: string | boolean | IAssetCropInfo): Region {\r\n let crop = cropInfo as IAssetCropInfo;\r\n if (isString(cropInfo)) {\r\n try {\r\n crop = JSON.parse(cropInfo as string);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n if (!isInterface(crop, cropInterface)) return null;\r\n return {\r\n width: Math.round(crop.w),\r\n height: Math.round(crop.h),\r\n top: Math.round(crop.y),\r\n left: Math.round(crop.x)\r\n };\r\n}\r\n\r\nexport async function toImage<T = Buffer | Readable>(src: T, params?: IAssetImageParams, meta?: IAssetMeta): Promise<T> {\r\n\r\n // Default params and meta\r\n params = params || {};\r\n meta = meta || {};\r\n\r\n // Get default crop info\r\n const crop = toCropRegion(meta.crop);\r\n\r\n // Return the src if there are no params and no default crop exists\r\n if (meta.extension === \"svg\" || (Object.keys(params).length == 0 && !crop)) {\r\n return src;\r\n }\r\n\r\n // Parse params\r\n params.rotation = isNaN(params.rotation) ? 0 : Math.round(params.rotation / 90) * 90;\r\n params.canvasScaleX = isNaN(params.canvasScaleX) ? 1 : Number(params.canvasScaleX);\r\n params.canvasScaleY = isNaN(params.canvasScaleY) ? 1 : Number(params.canvasScaleY);\r\n params.scaleX = isNaN(params.scaleX) ? 1 : Number(params.scaleX);\r\n params.scaleY = isNaN(params.scaleY) ? 1 : Number(params.scaleY);\r\n params.crop = isBoolean(params.crop) ? params.crop : params.crop == \"true\";\r\n\r\n let buffer = src instanceof Readable ? await streamToBuffer(src) : src as any;\r\n try {\r\n // Get crop info\r\n const cropBefore = toCropRegion(params.cropBefore || (params.crop ? meta.cropBefore : null));\r\n const cropAfter = toCropRegion(params.cropAfter || (params.crop ? meta.cropAfter : null));\r\n // Get metadata\r\n let img = sharp(buffer);\r\n let {width, height} = await img.metadata();\r\n // Crop before resize\r\n if (cropBefore) {\r\n width = cropBefore.width;\r\n height = cropBefore.height;\r\n img = img.extract(cropBefore);\r\n } else if (crop) {\r\n width = crop.width;\r\n height = crop.height;\r\n img = img.extract(crop);\r\n }\r\n // Resize canvas\r\n const canvasScaleX = meta?.canvasScaleX || 1;\r\n const canvasScaleY = meta?.canvasScaleY || 1;\r\n if (params.canvasScaleX !== canvasScaleX || params.canvasScaleY !== canvasScaleY) {\r\n width = Math.round(width * params.canvasScaleX);\r\n height = Math.round(height * params.canvasScaleY);\r\n img = img.resize({width, height, background: \"#00000000\", fit: \"contain\"});\r\n }\r\n // Resize image\r\n if (params.scaleX !== 1 || params.scaleY !== 1) {\r\n width = Math.round(width * params.scaleX);\r\n height = Math.round(height * params.scaleY);\r\n img = img.resize({width, height, background: \"#00000000\", fit: \"fill\"});\r\n }\r\n // Crop after resize\r\n if (cropAfter) {\r\n img = img.extract(cropAfter);\r\n }\r\n // Rotate\r\n if (params.rotation !== 0) {\r\n buffer = await img.toBuffer();\r\n img = sharp(buffer).rotate(params.rotation);\r\n }\r\n buffer = await img.toBuffer();\r\n src = src instanceof Readable ? bufferToStream(buffer) : buffer;\r\n return src;\r\n } catch (e) {\r\n console.log(\"Image conversion error\", e);\r\n src = src instanceof Readable ? bufferToStream(buffer) : buffer;\r\n return src;\r\n }\r\n}\r\n\r\nexport function bufferToStream(buffer: Buffer): Readable {\r\n const readStream = new PassThrough();\r\n readStream.end(buffer);\r\n return readStream\r\n}\r\n\r\nexport function streamToBuffer(stream: Readable): Promise<Buffer> {\r\n return new Promise<Buffer>((resolve, reject) => {\r\n const concat = [];\r\n stream.on(\"data\", data => {\r\n concat.push(data);\r\n });\r\n stream.on(\"error\", reject);\r\n stream.on(\"end\", () => resolve(Buffer.concat(concat)));\r\n })\r\n}\r\n\r\nclass ReadableStreamClone extends Readable {\r\n\r\n constructor(readableStream: Readable, opts?: ReadableOptions) {\r\n super(opts);\r\n readableStream?.on(\"data\", chunk => {\r\n this.push(chunk);\r\n });\r\n readableStream?.on(\"end\", () => {\r\n this.push(null);\r\n });\r\n readableStream?.on(\"error\", err => {\r\n this.emit(\"error\", err);\r\n });\r\n }\r\n\r\n _read(size: number) {\r\n\r\n }\r\n}\r\n\r\nexport function copyStream(stream: Readable, opts?: ReadableOptions): Readable {\r\n return new ReadableStreamClone(stream, opts);\r\n}\r\n\r\nexport function mkdirRecursive(path: string, mode: number = null): Promise<void> {\r\n return new Promise<void>((resolve, reject) => {\r\n mkdir(path, {mode: mode || 0o777, recursive: true}, err => {\r\n if (err) {\r\n reject(err);\r\n return;\r\n }\r\n resolve();\r\n });\r\n });\r\n}\r\n\r\nexport function deleteFile(path: string): Promise<void> {\r\n return new Promise<void>((resolve, reject) => {\r\n unlink(path, err => {\r\n if (err) {\r\n reject(err);\r\n return;\r\n }\r\n resolve();\r\n });\r\n });\r\n}\r\n\r\nexport function readFile(path: string): Promise<Buffer> {\r\n return new Promise<Buffer>((res, rej) => {\r\n fsReadFile(path, (err, data) => {\r\n if (err) {\r\n rej(err);\r\n return;\r\n }\r\n res(data);\r\n });\r\n });\r\n}\r\n\r\nexport async function readAndDeleteFile(path: string, timeout: number = 5000): Promise<Buffer> {\r\n const data = await readFile(path);\r\n setTimeout(() => {\r\n unlink(path, () => {\r\n });\r\n }, timeout);\r\n return data;\r\n}\r\n\r\nexport async function writeFile(path: string, data: Buffer): Promise<Buffer> {\r\n await mkdirRecursive(dirname(path));\r\n return new Promise<Buffer>((res, rej) => {\r\n fsWriteFile(path, data, err => {\r\n if (err) {\r\n rej(err);\r\n return;\r\n }\r\n res(data);\r\n });\r\n });\r\n}\r\n\r\nexport function valueToPromise(value: any): Promise<any> {\r\n return value instanceof Promise ? value : Promise.resolve(value);\r\n}\r\n\r\nexport function promiseTimeout(timeout: number = 1000, error: boolean = false): Promise<string> {\r\n return new Promise<any>((resolve, reject) => {\r\n setTimeout(() => {\r\n if (error) {\r\n reject(`Timeout exceeded: ${timeout}ms`);\r\n return;\r\n }\r\n resolve(`Timeout: ${timeout}ms`);\r\n }, timeout);\r\n });\r\n}\r\n\r\nexport function getConstructorName(type: Type<any>): string {\r\n return type.prototype.constructor.name;\r\n}\r\n\r\nexport function getFunctionParams(func: Function): string[] {\r\n // Remove comments of the form /* ... */\r\n // Removing comments of the form //\r\n // Remove body of the function { ... }\r\n // removing \"=>\" if func is arrow function\r\n const str = func.toString()\r\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\")\r\n .replace(/\\/\\/(.)*/g, \"\")\r\n .replace(/{[\\s\\S]*}/, \"\")\r\n .replace(/=>/g, \"\")\r\n .trim();\r\n\r\n // Start parameter names after first \"(\"\r\n const start = str.indexOf(\"(\") + 1;\r\n\r\n // End parameter names is just before last \")\"\r\n const end = str.length - 1;\r\n const result = str.substring(start, end).split(\", \");\r\n const params = [];\r\n\r\n result.forEach(element => {\r\n\r\n // Removing any default value\r\n element = element.replace(/=[\\s\\S]*/g, \"\").trim();\r\n\r\n if (element.length > 0)\r\n params.push(element);\r\n });\r\n\r\n return params;\r\n}\r\n\r\nexport function getFileName(path: string, withExtension: boolean = false): string {\r\n const name = basename(path || \"\");\r\n return withExtension ? name : name.split(\".\").slice(0, -1).join(\".\");\r\n}\r\n\r\nexport function getExtension(path: string): string {\r\n const name = basename(path || \"\");\r\n return name.split(\".\").pop();\r\n}\r\n\r\nexport function idToString(value: any): any {\r\n if (Array.isArray(value)) {\r\n return value.map(idToString);\r\n }\r\n return value instanceof ObjectId || value instanceof Types.ObjectId\r\n ? value.toHexString()\r\n : (isString(value) ? value : value || null);\r\n}\r\n\r\nexport function createTransformer(transform?: (doc: Document, ret: any, options?: any) => any) {\r\n return (doc: Document, ret: any, options?: any) => {\r\n ret.id = idToString(ret.id) || ret.id;\r\n if (doc._id) {\r\n ret._id = idToString(doc._id);\r\n ret.id = ret.id || ret._id;\r\n }\r\n delete ret.__v;\r\n return isFunction(transform) ? transform(doc, ret, options) || ret : ret;\r\n };\r\n}\r\n\r\nexport function broadcast(socketServer: Server, cb: (client: IClientSocket) => void): void {\r\n Array.from(Object.values(socketServer.sockets.sockets)).forEach(cb);\r\n}\r\n\r\nexport function rand(min: number, max: number): number {\r\n return Math.round(random(min, max));\r\n}\r\n\r\nexport function random(min: number, max: number): number {\r\n return min + Math.random() * (max - min);\r\n}\r\n\r\nexport function multiSubscription(...subscriptions: Subscription[]): Subscription {\r\n return new Subscription(() => {\r\n subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n });\r\n}\r\n\r\nexport function observableFromFunction(callbackFunc: () => any): Observable<any> {\r\n let subject: any;\r\n return new Observable<any>((subscriber) => {\r\n if (!subject) {\r\n subject = new Subject();\r\n try {\r\n subject = from(callbackFunc());\r\n } catch (err) {\r\n if (canReportError(subject)) {\r\n subject.error(err);\r\n } else {\r\n console.warn(err);\r\n }\r\n }\r\n }\r\n return subject.subscribe(subscriber);\r\n });\r\n}\r\n\r\nexport function padLeft(value: any, count: number = 3, padWith: string = \"0\"): string {\r\n return `${value}`.padStart(count, padWith);\r\n}\r\n\r\nexport function padRight(value: any, count: number = 3, padWith: string = \"0\"): string {\r\n return `${value}`.padEnd(count, padWith);\r\n}\r\n\r\nexport function deleteFromBucket(bucket: GridFSBucket, fileId: ObjectId): Promise<string> {\r\n return new Promise<string>(((resolve, reject) => {\r\n bucket.delete(fileId, error => {\r\n let err = error as any;\r\n if (error) {\r\n err = error.message || error || \"\";\r\n if (!isString(err) || !err.startsWith(\"FileNotFound\")) {\r\n reject(err);\r\n return;\r\n }\r\n }\r\n resolve(fileId.toHexString());\r\n });\r\n }));\r\n}\r\n\r\nconst defaultPredicate: FilterPredicate = () => true;\r\n\r\nfunction copyRecursive(target: any, source: any, predicate?: FilterPredicate): any {\r\n predicate = predicate || defaultPredicate;\r\n if (isPrimitive(source) || isDate(source) || isFunction(source)) return source;\r\n if (isArray(source)) {\r\n target = isArray(target) ? Array.from(target) : [];\r\n source.forEach((item, index) => {\r\n if (!predicate(item, index, target, source)) return;\r\n if (target.length > index)\r\n target[index] = copyRecursive(target[index], item, predicate);\r\n else\r\n target.push(copyRecursive(null, item, predicate));\r\n });\r\n return target;\r\n }\r\n const shouldCopy = isFunction(source.__shouldCopy) ? source.__shouldCopy : () => true;\r\n if (isConstructor(source.constructor)) {\r\n if (source.__shouldCopy === false) return source;\r\n if (!target) {\r\n try {\r\n target = new source.constructor();\r\n } catch (e) {\r\n const proto = source.constructor.prototype || source.prototype;\r\n target = Object.create(proto);\r\n }\r\n }\r\n } else {\r\n target = Object.assign({}, target || {});\r\n }\r\n // Copy map entries\r\n if (target instanceof Map) {\r\n if (source instanceof Map) {\r\n for (let [key, value] of source.entries()) {\r\n if (!predicate(value, key, target, source)) continue;\r\n target.set(key, !shouldCopy(key, value) ? value : copyRecursive(target.get(key), value, predicate));\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n // Copy object members\r\n let keys = Object.keys(source);\r\n target = keys.reduce((result, key) => {\r\n if (!predicate(source[key], key, result, source)) return result;\r\n result[key] = !shouldCopy(key, source[key]) ? source[key] : copyRecursive(result[key], source[key], predicate);\r\n return result;\r\n }, target);\r\n\r\n // Copy object properties\r\n const descriptors = Object.getOwnPropertyDescriptors(source);\r\n keys = Object.keys(descriptors).filter(k => keys.indexOf(k) < 0);\r\n keys.forEach(key => {\r\n Object.defineProperty(target, key, descriptors[key]);\r\n });\r\n return target;\r\n}\r\n\r\nexport function filter<T>(obj: T, predicate: FilterPredicate): Partial<T> {\r\n return copyRecursive(null, obj, predicate);\r\n}\r\n\r\nexport function copy<T>(obj: T): T {\r\n return copyRecursive(null, obj);\r\n}\r\n\r\nexport function assign<T>(target: T, source: any, predicate?: FilterPredicate): T {\r\n return copyRecursive(target, source, predicate);\r\n}\r\n\r\nexport function md5(data: any): string {\r\n if (isObject(data)) {\r\n data = JSON.stringify(data);\r\n }\r\n if (!isString(data)) {\r\n throw `Can't md5 other that raw object or string`;\r\n }\r\n return createHash(\"md5\").update(data).digest(\"hex\");\r\n}\r\n\r\nexport function runCommand(scriptPath: string, expectedCode: number = 0): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const cp = execChildProcess(scriptPath, (error, stdout) => {\r\n if (error && expectedCode !== error.code) {\r\n console.log(error);\r\n reject(error);\r\n return;\r\n }\r\n const lines = (stdout || \"\").split(\"\\n\");\r\n let line = null;\r\n while (!line && lines.length > 0) {\r\n line = lines.pop();\r\n }\r\n resolve(line);\r\n });\r\n cp.stdout.on(\"data\", function (data) {\r\n console.log(data.toString());\r\n });\r\n cp.stderr.on(\"data\", function (data) {\r\n console.error(data.toString());\r\n });\r\n });\r\n}\r\n\r\nexport enum ConsoleColor {\r\n Reset = \"\\x1b[0m\",\r\n Bright = \"\\x1b[1m\",\r\n Dim = \"\\x1b[2m\",\r\n Underscore = \"\\x1b[4m\",\r\n Blink = \"\\x1b[5m\",\r\n Reverse = \"\\x1b[7m\",\r\n Hidden = \"\\x1b[8m\",\r\n\r\n FgBlack = \"\\x1b[30m\",\r\n FgRed = \"\\x1b[31m\",\r\n FgGreen = \"\\x1b[32m\",\r\n FgYellow = \"\\x1b[33m\",\r\n FgBlue = \"\\x1b[34m\",\r\n FgMagenta = \"\\x1b[35m\",\r\n FgCyan = \"\\x1b[36m\",\r\n FgWhite = \"\\x1b[37m\",\r\n FgDefault = \"\\x1b[38m\",\r\n\r\n BgBlack = \"\\x1b[40m\",\r\n BgRed = \"\\x1b[41m\",\r\n BgGreen = \"\\x1b[42m\",\r\n BgYellow = \"\\x1b[43m\",\r\n BgBlue = \"\\x1b[44m\",\r\n BgMagenta = \"\\x1b[45m\",\r\n BgCyan = \"\\x1b[46m\",\r\n BgWhite = \"\\x1b[47m\",\r\n BgDefault = \"\\x1b[48m\"\r\n}\r\n\r\nexport interface IJsonColors {\r\n keyColor?: ConsoleColor;\r\n numberColor?: ConsoleColor;\r\n stringColor?: ConsoleColor;\r\n trueColor?: ConsoleColor;\r\n falseColor?: ConsoleColor;\r\n nullColor?: ConsoleColor;\r\n}\r\n\r\nconst defaultColors: IJsonColors = {\r\n keyColor: ConsoleColor.FgWhite,\r\n numberColor: ConsoleColor.FgBlue,\r\n stringColor: ConsoleColor.FgYellow,\r\n trueColor: ConsoleColor.FgGreen,\r\n falseColor: ConsoleColor.FgRed,\r\n nullColor: ConsoleColor.BgMagenta\r\n}\r\n\r\nexport function colorize(input: any, color: ConsoleColor): string {\r\n return `${color}${input}${ConsoleColor.Reset}`;\r\n}\r\n\r\nexport function jsonHighlight(input: string | object, colorOptions?: IJsonColors): string {\r\n const colors = Object.assign({}, defaultColors, colorOptions)\r\n const json = (isString(input) ? input : JSON.stringify(input, null, 2)).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\r\n return json.replace(/(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+]?\\d+)?)/g, (match) => {\r\n let color = colors.numberColor\r\n if (/^\"/.test(match)) {\r\n if (/:$/.test(match)) {\r\n color = colors.keyColor\r\n } else {\r\n color = colors.stringColor;\r\n match = '\"' + match.substr(1, match.length - 2) + '\"';\r\n }\r\n } else {\r\n color = /true/.test(match)\r\n ? colors.trueColor\r\n : /false/.test(match)\r\n ? colors.falseColor\r\n : /null/.test(match)\r\n ? colors.nullColor\r\n : color\r\n }\r\n return `${color}${match}${ConsoleColor.Reset}`\r\n })\r\n}\r\n\r\nexport function replaceSpecialChars(str: string, to: string = \"-\"): string {\r\n return `${str}`.replace(/[&\\/\\\\#, +()$~%.@'\":*?<>{}]/g, to);\r\n}\r\n","import {ValidationArguments, ValidatorConstraint, ValidatorConstraintInterface} from \"class-validator\";\r\nimport {ObjectId} from \"bson\";\r\n\r\nfunction checkValue(multi: boolean, value: any): boolean {\r\n if (multi) {\r\n return Array.isArray(value) && value.every(v => {\r\n try {\r\n const id = new ObjectId(v);\r\n return id instanceof ObjectId;\r\n } catch (e) {\r\n return false;\r\n }\r\n });\r\n }\r\n if (null === value) return true;\r\n try {\r\n const id = new ObjectId(value);\r\n return id instanceof ObjectId;\r\n } catch (e) {\r\n return false;\r\n }\r\n}\r\n\r\n@ValidatorConstraint()\r\nexport class IsFile implements ValidatorConstraintInterface {\r\n validate(value: any, validationArguments: ValidationArguments) {\r\n const [multi] = (validationArguments.constraints || []);\r\n return checkValue(multi, value);\r\n }\r\n}\r\n\r\n@ValidatorConstraint()\r\nexport class IsObjectId implements ValidatorConstraintInterface {\r\n validate(value: any, validationArguments: ValidationArguments) {\r\n const [_, multi] = (validationArguments.constraints || []);\r\n return checkValue(multi, value);\r\n }\r\n}\r\n","import {getMetadataArgsStorage} from \"routing-controllers\";\r\nimport {routingControllersToSpec} from \"routing-controllers-openapi\";\r\nimport {OpenAPIObject, SchemaObject} from \"openapi3-ts\";\r\nimport {defaultMetadataStorage} from \"class-transformer/storage\";\r\nimport {ValidationTypes} from \"class-validator\"\r\nimport {validationMetadatasToSchemas} from \"class-validator-jsonschema\"\r\nimport {SchemaConverter} from \"./common-types\";\r\nimport {isFunction} from \"./utils\";\r\nimport {IsFile, IsObjectId} from \"./validators\";\r\n\r\nlet apiDocs: string = null;\r\n\r\nexport function getApiDocs(customValidation: SchemaConverter | SchemaObject): string {\r\n if (apiDocs) return apiDocs;\r\n const storage = getMetadataArgsStorage();\r\n const spec: OpenAPIObject = routingControllersToSpec(storage);\r\n spec.basePath = \"/api/\";\r\n spec.definitions = validationMetadatasToSchemas({\r\n classTransformerMetadataStorage: defaultMetadataStorage,\r\n additionalConverters: {\r\n [ValidationTypes.CUSTOM_VALIDATION]: (meta, options) => {\r\n const res = isFunction(customValidation) ? customValidation(meta, options) : customValidation;\r\n if (!!res) return res;\r\n const constraints = meta.constraints || [];\r\n if (meta.constraintCls === IsFile) {\r\n return {\r\n multi: constraints[0] || false,\r\n type: \"file\"\r\n }\r\n }\r\n if (meta.constraintCls === IsObjectId) {\r\n return {\r\n endpoint: constraints[0] || false,\r\n multi: constraints[1] || false,\r\n type: \"list\"\r\n }\r\n }\r\n return null;\r\n }\r\n }\r\n });\r\n spec.components.schemas = spec.definitions;\r\n apiDocs = JSON.stringify(spec);\r\n return apiDocs;\r\n}\r\n","import {Server} from \"http\";\r\nimport {Request, Express} from \"express\";\r\nimport {Socket, Server as SocketServer} from \"socket.io\";\r\nimport {RoutingControllersOptions} from \"routing-controllers\";\r\nimport {SocketControllersOptions} from \"socket-controllers\";\r\nimport {\r\n ClassProvider,\r\n DependencyContainer,\r\n InjectionToken,\r\n TokenProvider,\r\n ValueProvider,\r\n RegistrationOptions\r\n} from \"tsyringe\";\r\nimport {SchemaObject} from \"openapi3-ts\";\r\nimport {Readable} from \"stream\";\r\nimport {Moment} from \"moment\";\r\nimport {AnyExpression, Expression} from \"mongoose\";\r\n\r\n// --- DI functions ---\r\n\r\nexport const Type = Function;\r\n\r\nexport interface Type<T = object> extends Function {\r\n new (...args: any[]): T;\r\n}\r\n\r\nexport interface FactoryProvider<T> {\r\n useFactory: (dc: IDependencyContainer) => T;\r\n}\r\n\r\nexport interface ITree {\r\n readonly path: string;\r\n resolveService(): any;\r\n resolveLeaves(): Map<string, ITree>;\r\n resolveServices(): Map<string, any>;\r\n resolveAncestor(path: string): ITree;\r\n resolvePath(path: string, throwError?: boolean): ITree;\r\n}\r\n\r\nexport interface IDependencyContainer extends DependencyContainer {\r\n readonly parent: IDependencyContainer;\r\n readonly tree: ITree;\r\n readonly registeredTokens: ReadonlyArray<InjectionToken>;\r\n createChildContainer(): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: ValueProvider<T>): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: FactoryProvider<T>): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: TokenProvider<T>, options?: RegistrationOptions): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: ClassProvider<T>, options?: RegistrationOptions): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: Type<T>, options?: RegistrationOptions): IDependencyContainer;\r\n registerSingleton<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer;\r\n registerSingleton<T>(token: Type<T>): IDependencyContainer;\r\n registerType<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer;\r\n registerInstance<T>(token: InjectionToken<T>, instance: T): IDependencyContainer;\r\n get<T>(token: InjectionToken<T>): T;\r\n}\r\n\r\nexport interface ClassBasedProvider<T> extends ClassProvider<T> {\r\n provide: InjectionToken;\r\n}\r\n\r\nexport interface ValueBasedProvider<T> extends ValueProvider<T> {\r\n provide: InjectionToken;\r\n}\r\n\r\nexport interface FactoryBasedProvider<T> extends FactoryProvider<T> {\r\n provide: InjectionToken;\r\n}\r\n\r\nexport interface TokenBasedProvider<T> extends TokenProvider<T> {\r\n provide: InjectionToken;\r\n}\r\n\r\nexport type SyringeProvider<T> = Type<T> | ClassProvider<T> | ValueProvider<T> | FactoryProvider<T> | TokenProvider<T>;\r\n\r\nexport type Provider<T> = Type<T> | ClassBasedProvider<T> | ValueBasedProvider<T> | FactoryBasedProvider<T> | TokenBasedProvider<T>;\r\n\r\n// --- Useful generic types ---\r\n\r\nexport type Constructor<T = object> = new (...args: any[]) => T\r\n\r\nexport type InferGeneric<T> = T extends Type<infer B> ? B : never;\r\n\r\nexport type PickMatching<T, V> = { [K in keyof T as T[K] extends V ? K : never]: T[K] }\r\n\r\nexport type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;\r\n\r\n// --- Injection tokens ---\r\n\r\nexport const FIXTURE: InjectionToken<IFixture> = Symbol.for(\"fixture-token\");\r\n\r\nexport const JOB: InjectionToken<IJob> = Symbol.for(\"job-token\");\r\n\r\nexport const EXPRESS: InjectionToken<Express> = Symbol.for(\"express-token\");\r\n\r\nexport const HTTP_SERVER: InjectionToken<Server> = Symbol.for(\"http-server-token\");\r\n\r\nexport const SOCKET_SERVER: InjectionToken<SocketServer> = Symbol.for(\"socket-server-token\");\r\n\r\nexport const PARAMETER: InjectionToken<Parameter> = Symbol.for(\"parameter-token\");\r\n\r\nexport const DI_CONTAINER: InjectionToken<IDependencyContainer> = Symbol.for(\"di-container-token\");\r\n\r\n// --- Mongo interfaces and types\r\n\r\nexport interface IMatchField {\r\n field: string;\r\n filter: any;\r\n when: boolean;\r\n}\r\n\r\nexport interface IProjectOptions {\r\n [field: string]: AnyExpression | Expression | IProjectOptions;\r\n}\r\n\r\nexport interface IUnwindOptions {\r\n path: string;\r\n includeArrayIndex?: string;\r\n preserveNullAndEmptyArrays?: boolean;\r\n}\r\n\r\n// --- Interfaces and utility classes ---\r\n\r\nexport interface IFixture {\r\n load(): Promise<any>;\r\n}\r\n\r\nexport type SchemaConverter = (\r\n meta: any,\r\n options: any\r\n) => SchemaObject;\r\n\r\nexport type ParamResolver = (value: string) => any;\r\n\r\nexport class Parameter {\r\n\r\n constructor(readonly name: string, public defaultValue: any, public resolver: ParamResolver = null) {\r\n\r\n }\r\n}\r\n\r\nexport type SocketParam = string | number | boolean | SocketParams;\r\n\r\nexport type SocketParams = {\r\n [name: string]: SocketParam | Array<SocketParam>;\r\n};\r\n\r\nexport type JobParams = SocketParams;\r\n\r\nexport interface ISocketMessage {\r\n message: string;\r\n params: SocketParams;\r\n}\r\n\r\nexport interface IMessageBridge {\r\n sendMessage(message: string, params?: SocketParams): void;\r\n}\r\n\r\nexport interface IJob {\r\n process(messaging?: IMessageBridge): Promise<any>;\r\n}\r\n\r\nexport interface IJobTask {\r\n start: () => this;\r\n stop: () => this;\r\n destroy: () => void;\r\n getStatus: () => string;\r\n}\r\n\r\nexport interface JobScheduleRange {\r\n min: number;\r\n max: number;\r\n}\r\n\r\nexport type JobScheduleTime = string | number | JobScheduleRange | Array<string | number>;\r\n\r\nexport interface IProgress {\r\n id: string;\r\n current: number;\r\n max: number;\r\n message: string;\r\n error: string;\r\n canceled: boolean;\r\n percent: number;\r\n remaining: number;\r\n setMessageBridge(messageBridge: IMessageBridge): this;\r\n createSubProgress(progressValue: number, max?: number, message?: string): Promise<IProgress>;\r\n setMax(max: number): Promise<any>;\r\n setMessage(message: string): Promise<any>;\r\n setError(error: string): Promise<any>;\r\n advance(value?: number): Promise<any>;\r\n cancel(): Promise<any>;\r\n save(): Promise<any>;\r\n load(): Promise<this>;\r\n toJSON(): any;\r\n}\r\n\r\nexport interface IAssetCropInfo {\r\n x: number;\r\n y: number;\r\n w: number;\r\n h: number;\r\n}\r\n\r\nexport interface IAssetMeta {\r\n filename?: string;\r\n extension?: string;\r\n classified?: boolean;\r\n downloadCount?: number;\r\n firstDownload?: Date;\r\n lastDownload?: Date;\r\n crop?: IAssetCropInfo;\r\n cropBefore?: IAssetCropInfo;\r\n cropAfter?: IAssetCropInfo;\r\n canvasScaleX?: number;\r\n canvasScaleY?: number;\r\n [prop: string]: any;\r\n}\r\n\r\nexport interface IAssetImageParams {\r\n rotation?: number;\r\n canvasScaleX?: number;\r\n canvasScaleY?: number;\r\n scaleX?: number;\r\n scaleY?: number;\r\n lazy?: boolean;\r\n crop?: string | boolean;\r\n cropBefore?: string | boolean | IAssetCropInfo;\r\n cropAfter?: string | boolean | IAssetCropInfo;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IAsset {\r\n readonly id: string;\r\n readonly filename: string;\r\n readonly contentType: string;\r\n readonly metadata: IAssetMeta;\r\n readonly stream: Readable;\r\n unlink(): Promise<string>;\r\n getBuffer(): Promise<Buffer>;\r\n download(metadata?: IAssetMeta): Promise<Readable>;\r\n downloadImage(params?: IAssetImageParams, metadata?: IAssetMeta): Promise<Readable>;\r\n getImage(params?: IAssetImageParams): Promise<Readable>;\r\n save(): Promise<any>;\r\n load(): Promise<this>;\r\n toJSON(): any;\r\n}\r\n\r\nexport interface ILazyAsset {\r\n id: string;\r\n jobName: string;\r\n jobParams: any;\r\n jobQue: string;\r\n progressId?: string;\r\n assetId?: string;\r\n unlink(): Promise<string>;\r\n startWorking(): void;\r\n loadAsset(): Promise<IAsset>;\r\n writeAsset(asset: IAsset): Promise<IAsset>;\r\n save(): Promise<any>;\r\n load(): Promise<this>;\r\n toJSON(): any;\r\n}\r\n\r\nexport interface IUser {\r\n _id?: string;\r\n id?: string;\r\n email?: string;\r\n password?: string;\r\n roles: string[];\r\n}\r\n\r\nexport interface IClientSocket extends Socket {\r\n interestedProgresses: Set<string>;\r\n}\r\n\r\nexport interface IRequestBase<T> extends Request {\r\n id?: string;\r\n started?: Moment;\r\n ended?: Moment;\r\n container?: DependencyContainer;\r\n language?: string;\r\n user?: T;\r\n}\r\n\r\nexport interface IRequest extends IRequestBase<IUser> {\r\n\r\n}\r\n\r\nexport interface IGalleryImage {\r\n folder: string;\r\n thumb: string;\r\n big: string;\r\n serve(id: string): Promise<Buffer>\r\n}\r\n\r\nexport interface IGallerySize {\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport interface IGalleryImageHandler {\r\n getOriginal(): Promise<Buffer>;\r\n writeResult(isThumb: boolean, buffer: Buffer): Promise<void>;\r\n hasResult(isThumb: boolean): Promise<boolean>;\r\n serveResult(isThumb: boolean): Promise<Buffer>;\r\n}\r\n\r\nexport interface ITranslations {\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IPaginationMeta {\r\n total: number;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IPaginationBase<T> {\r\n count: number\r\n items: T[];\r\n meta?: IPaginationMeta;\r\n}\r\n\r\nexport interface IPagination extends IPaginationBase<any> {\r\n\r\n}\r\n\r\nexport interface IPaginationParams {\r\n page: number;\r\n limit: number;\r\n sort?: string;\r\n populate?: string[];\r\n [key: string]: any;\r\n}\r\n\r\nexport type FontFormat = \"opentype\" | \"truetype\" | \"woff\" | \"woff2\" | \"datafork\";\r\n\r\nexport interface IFileType {\r\n ext: string;\r\n mime: string;\r\n}\r\n\r\nexport interface IBackendConfig {\r\n rootFolder?: string;\r\n routePrefix?: string;\r\n params?: Parameter[];\r\n fixtures?: Type<IFixture>[];\r\n jobs?: Type<IJob>[];\r\n restOptions?: RoutingControllersOptions;\r\n socketOptions?: SocketControllersOptions;\r\n customValidation?: SchemaConverter | SchemaObject;\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport fontKit_, {Font} from \"fontkit\";\r\nimport {fromBuffer} from \"file-type\";\r\nimport sharp_ from \"sharp\";\r\nimport {FontFormat, IAssetMeta, IFileType} from \"../common-types\";\r\n\r\nconst sharp = sharp_;\r\nconst fontKit = fontKit_;\r\n\r\nconst fontTypes = [\r\n \"application/font-woff\", \"application/font-woff2\", \"application/x-font-opentype\", \"application/x-font-truetype\", \"application/x-font-datafork\",\r\n \"font/woff\", \"font/woff2\", \"font/otf\", \"font/ttf\", \"font/datafork\"\r\n];\r\n\r\nconst imageTypes = [\"image/jpeg\", \"image/jpg\", \"image/png\", \"image/svg+xml\"];\r\n\r\nconst fontProps = [\r\n \"postscriptName\", \"fullName\", \"familyName\", \"subfamilyName\",\r\n \"copyright\", \"version\", \"unitsPerEm\", \"ascent\", \"descent\", \"lineGap\",\r\n \"underlinePosition\", \"underlineThickness\", \"italicAngle\", \"capHeight\",\r\n \"xHeight\", \"numGlyphs\", \"characterSet\", \"availableFeatures\"\r\n];\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class AssetProcessor {\r\n\r\n private static checkTextFileType(type: IFileType): boolean {\r\n return type.mime.indexOf(\"text\") >= 0 || type.mime.indexOf(\"xml\") >= 0;\r\n }\r\n\r\n private static fixTextFileType(type: IFileType, buffer: Buffer): IFileType {\r\n const text = buffer.toString(\"utf8\");\r\n if (text.indexOf(\"<svg\") >= 0) {\r\n return {ext: \"svg\", mime: \"image/svg+xml\"};\r\n }\r\n return type;\r\n }\r\n\r\n static async fileTypeFromBuffer(buffer: Buffer): Promise<IFileType> {\r\n const type = (await fromBuffer(buffer) ?? {ext: \"txt\", mime: \"text/plain\"}) as IFileType;\r\n if (AssetProcessor.checkTextFileType(type)) {\r\n return AssetProcessor.fixTextFileType(type, buffer);\r\n }\r\n return type;\r\n }\r\n\r\n static extractFontFormat(font: Font): FontFormat {\r\n const name: string = font.constructor.name;\r\n const tag: string = font[\"directory\"].tag;\r\n switch (name) {\r\n case \"TTFFont\":\r\n return tag === \"OTTO\" ? \"opentype\" : \"truetype\";\r\n case \"WOFF2Font\":\r\n return \"woff2\";\r\n case \"WOFFFont\":\r\n return \"woff\";\r\n case \"DFont\":\r\n return \"datafork\";\r\n }\r\n return null;\r\n }\r\n\r\n static isImage(contentType: string): boolean {\r\n return imageTypes.indexOf(contentType) >= 0;\r\n }\r\n\r\n static async copyImageMeta(buffer: Buffer, metadata: IAssetMeta, fileType: IFileType): Promise<Buffer> {\r\n if (fileType.mime === \"image/svg+xml\") {\r\n const match = /<svg([^<>]+)>/gi.exec(buffer.toString(\"utf8\"));\r\n if (match && match.length > 1) {\r\n const attrs = match[1].match(/([a-z]+)=\"([^\"]+)\"/gi);\r\n attrs.forEach(attr => {\r\n if (attr.length < 5) return;\r\n const [name, value] = attr.split(\"=\");\r\n const val = value.replace(/\"/gi, \"\") as any;\r\n metadata[name] = isNaN(val) ? val : Number(val);\r\n });\r\n if (metadata.viewBox && (isNaN(metadata.width) || isNaN(metadata.height))) {\r\n const parts = (metadata.viewBox as string).split(\" \");\r\n metadata.width = Number(parts[0]) + Number(parts[2]);\r\n metadata.height = Number(parts[1]) + Number(parts[3]);\r\n }\r\n if (!isNaN(metadata.width) && !isNaN(metadata.height)) {\r\n metadata.svgSize = {x: metadata.width, y: metadata.height};\r\n }\r\n }\r\n return buffer;\r\n }\r\n const output = await sharp(buffer).rotate().toBuffer({resolveWithObject: true});\r\n Object.assign(metadata, output.info);\r\n return output.data;\r\n }\r\n\r\n static isFont(contentType: string): boolean {\r\n return fontTypes.indexOf(contentType) >= 0;\r\n }\r\n\r\n static copyFontMeta(buffer: Buffer, metadata: IAssetMeta): void {\r\n const font: Font = fontKit.create(buffer);\r\n metadata.format = AssetProcessor.extractFontFormat(font);\r\n fontProps.forEach(prop => {\r\n metadata[prop] = font[prop];\r\n });\r\n }\r\n\r\n async process(buffer: Buffer, metadata: IAssetMeta, fileType: IFileType): Promise<Buffer> {\r\n if (AssetProcessor.isImage(fileType.mime)) {\r\n buffer = await AssetProcessor.copyImageMeta(buffer, metadata, fileType);\r\n }\r\n if (AssetProcessor.isFont(fileType.mime)) {\r\n AssetProcessor.copyFontMeta(buffer, metadata);\r\n }\r\n return buffer;\r\n }\r\n}\r\n","import {injectable, injectAll, scoped, Lifecycle} from \"tsyringe\";\r\nimport {PARAMETER, Parameter} from \"../common-types\";\r\nimport {convertValue, getType, isFunction} from \"../utils\";\r\nimport dotenv from \"dotenv\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class Configuration {\r\n\r\n protected paramMap: {[name: string]: Parameter};\r\n\r\n constructor(@injectAll(PARAMETER) params: Parameter[]) {\r\n dotenv.config();\r\n this.paramMap = {};\r\n (params || []).forEach(param => this.add(param));\r\n }\r\n\r\n protected add(param: Parameter): void {\r\n const existingParam = this.paramMap[param.name] || param;\r\n existingParam.defaultValue = param.defaultValue;\r\n existingParam.resolver = param.resolver || existingParam.resolver;\r\n this.paramMap[param.name] = existingParam;\r\n }\r\n\r\n hasParam(name: string): boolean {\r\n return !!this.paramMap[name];\r\n }\r\n\r\n resolve(name: string): any {\r\n const param = this.paramMap[name];\r\n if (!param) throw new Error(`Parameter with name: '${name}' does not exists in configuration`);\r\n const envName = param.name.replace(/\\.?([A-Z|0-9]+)/g, function (x,y){\r\n return \"_\" + y.toLowerCase()\r\n }).replace(/\\./gi, \"_\").replace(/^_/, \"\").toUpperCase();\r\n const envValue = process.env[envName];\r\n if (typeof envValue !== \"undefined\") {\r\n const value = isFunction(param.resolver)\r\n ? param.resolver(envValue)\r\n : convertValue(envValue, getType(param.defaultValue));\r\n console.log(`Processing param value`, name, envName, envValue, value);\r\n return value;\r\n }\r\n return param.defaultValue;\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport {Db, GridFSBucket} from \"mongodb\";\r\nimport {connect, Connection} from \"mongoose\";\r\nimport {Configuration} from \"./configuration\";\r\nimport {getType} from \"../utils\";\r\n\r\n@injectable()\r\n@singleton()\r\nexport class MongoConnector {\r\n\r\n get connection(): Connection {\r\n return this.conn;\r\n }\r\n\r\n get database(): Db {\r\n return this.db;\r\n }\r\n\r\n get bucket(): GridFSBucket {\r\n return this.fsBucket;\r\n }\r\n\r\n protected conn: Connection;\r\n protected db: Db;\r\n protected fsBucket: GridFSBucket;\r\n\r\n constructor(readonly configuration: Configuration) {\r\n this.conn = null;\r\n this.db = null;\r\n this.fsBucket = null;\r\n }\r\n\r\n async connect(): Promise<Db> {\r\n if (this.db) return this.db;\r\n this.conn = (await connect(this.configuration.resolve(\"mongoUri\") as string, {\r\n dbName: this.configuration.resolve(\"mongoDb\"),\r\n user: this.configuration.resolve(\"mongoUser\"),\r\n pass: this.configuration.resolve(\"mongoPassword\")\r\n })).connection;\r\n this.db = this.conn.db as any;\r\n console.log(\"DB INSTANCE\", getType(this.db));\r\n this.fsBucket = new GridFSBucket(this.db, {bucketName: \"assets\"});\r\n }\r\n}\r\n","import {Collection} from \"mongodb\";\r\nimport {ObjectId} from \"bson\";\r\n\r\nexport class BaseEntity<T> {\r\n\r\n get id(): string {\r\n return this.mId.toHexString();\r\n }\r\n\r\n protected deleted: boolean;\r\n\r\n constructor(readonly mId: ObjectId,\r\n protected data: Partial<T>,\r\n protected collection: Collection<any>) {\r\n }\r\n\r\n save(): Promise<any> {\r\n return this.collection.updateOne({_id: this.mId}, {$set: this.toJSON()});\r\n }\r\n\r\n async load(): Promise<this> {\r\n const res = await this.collection.findOne({_id: this.mId});\r\n this.deleted = !res;\r\n this.data = res || {};\r\n return this;\r\n }\r\n\r\n toJSON(): any {\r\n const ret = Object.assign({}, this.data) as any;\r\n delete ret._id;\r\n ret.id = this.id;\r\n return ret;\r\n }\r\n}\r\n","import {Readable} from \"stream\";\r\nimport {Collection, GridFSBucket} from \"mongodb\";\r\nimport {ObjectId} from \"bson\";\r\n\r\nimport {IAsset, IAssetImageParams, IAssetMeta} from \"../../common-types\";\r\nimport {deleteFromBucket, streamToBuffer, toImage} from \"../../utils\";\r\nimport {BaseEntity} from \"./base-entity\";\r\n\r\nexport class Asset extends BaseEntity<IAsset> implements IAsset {\r\n\r\n get filename(): string {\r\n return this.data.filename;\r\n }\r\n\r\n get contentType(): string {\r\n return this.data.contentType;\r\n }\r\n\r\n get metadata(): IAssetMeta {\r\n return this.data.metadata;\r\n }\r\n\r\n get stream(): Readable {\r\n return this.bucket.openDownloadStream(this.mId);\r\n }\r\n\r\n constructor(id: ObjectId,\r\n data: Partial<IAsset>,\r\n collection: Collection,\r\n protected bucket: GridFSBucket) {\r\n super(id, data, collection);\r\n }\r\n\r\n async unlink(): Promise<string> {\r\n return deleteFromBucket(this.bucket, this.mId);\r\n }\r\n\r\n getBuffer(): Promise<Buffer> {\r\n return streamToBuffer(this.stream);\r\n }\r\n\r\n async download(metadata?: IAssetMeta): Promise<Readable> {\r\n metadata = Object.assign(this.metadata, metadata || {});\r\n metadata.downloadCount = isNaN(metadata.downloadCount) || !metadata.firstDownload\r\n ? 1\r\n : metadata.downloadCount + 1;\r\n metadata.firstDownload = metadata.firstDownload || new Date();\r\n metadata.lastDownload = new Date();\r\n await this.collection.updateOne({_id: this.mId}, {$set: {metadata}});\r\n return this.stream;\r\n }\r\n\r\n async getImage(params: IAssetImageParams = null): Promise<Readable> {\r\n return toImage(this.stream, params, this.metadata);\r\n }\r\n\r\n async downloadImage(params?: IAssetImageParams, metadata?: IAssetMeta): Promise<Readable> {\r\n return toImage(await this.download(metadata), params, this.metadata);\r\n }\r\n}\r\n","import {Readable} from \"stream\";\r\nimport {ObjectId} from \"bson\";\r\nimport {IAsset, IAssetImageParams, IAssetMeta} from \"../../common-types\";\r\nimport {bufferToStream, toImage} from \"../../utils\";\r\n\r\nexport class TempAsset implements IAsset {\r\n\r\n readonly id: string;\r\n\r\n get stream(): Readable {\r\n return bufferToStream(this.buffer);\r\n }\r\n\r\n constructor(protected buffer: Buffer, readonly filename: string, readonly contentType: string, readonly metadata: IAssetMeta) {\r\n this.id = new ObjectId().toHexString();\r\n }\r\n\r\n async unlink(): Promise<string> {\r\n throw new Error(`Temp asset '${this.id}' can not be removed!`);\r\n }\r\n\r\n async getBuffer(): Promise<Buffer> {\r\n return this.buffer;\r\n }\r\n\r\n async download(metadata?: IAssetMeta): Promise<Readable> {\r\n return this.stream;\r\n }\r\n\r\n downloadImage(params?: IAssetImageParams, metadata?: IAssetMeta): Promise<Readable> {\r\n Object.assign(this.metadata, metadata || {});\r\n return toImage(this.stream, params, this.metadata);\r\n }\r\n\r\n getImage(params?: IAssetImageParams): Promise<Readable> {\r\n return this.downloadImage(params);\r\n }\r\n\r\n async save(): Promise<any> {\r\n return this;\r\n }\r\n\r\n async load(): Promise<this> {\r\n return this;\r\n }\r\n\r\n toJSON(): any {\r\n return {\r\n id: this.id,\r\n filename: this.filename,\r\n contentType: this.contentType,\r\n metadata: this.metadata\r\n };\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {Readable} from \"stream\";\r\nimport {ObjectId} from \"bson\";\r\nimport {Collection, GridFSBucket} from \"mongodb\";\r\nimport {FilterQuery} from \"mongoose\";\r\nimport axios from \"axios\";\r\n\r\nimport {bufferToStream, copyStream, streamToBuffer} from \"../utils\";\r\nimport {IAsset, IAssetMeta, IFileType} from \"../common-types\";\r\nimport {MongoConnector} from \"./mongo-connector\";\r\nimport {AssetProcessor} from \"./asset-processor\";\r\nimport {Asset} from \"./entities/asset\";\r\nimport {TempAsset} from \"./entities/temp-asset\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class Assets {\r\n\r\n readonly bucket: GridFSBucket;\r\n readonly collection: Collection<Partial<IAsset>>;\r\n\r\n constructor(readonly connector: MongoConnector, readonly assetProcessor: AssetProcessor) {\r\n this.bucket = connector.bucket;\r\n this.collection = connector.database?.collection(\"assets.files\");\r\n }\r\n\r\n async write(stream: Readable, contentType: string = null, metadata: IAssetMeta = null): Promise<IAsset> {\r\n const uploadStream = copyStream(stream);\r\n const buffer = await streamToBuffer(stream);\r\n let fileType = {ext: \"\", mime: contentType} as IFileType;\r\n try {\r\n fileType = await AssetProcessor.fileTypeFromBuffer(buffer);\r\n } catch (e) {\r\n if (!fileType.mime) {\r\n throw `Can't determine mime type`;\r\n }\r\n console.log(`Can't determine mime type`, e);\r\n }\r\n metadata = metadata || {};\r\n return this.upload(uploadStream, fileType, metadata);\r\n }\r\n\r\n async writeBuffer(buffer: Buffer, metadata: IAssetMeta = null, contentType: string = null): Promise<IAsset> {\r\n let fileType = {ext: \"\", mime: contentType} as IFileType;\r\n try {\r\n fileType = await AssetProcessor.fileTypeFromBuffer(buffer);\r\n } catch (e) {\r\n if (!fileType.mime) {\r\n throw `Can't determine mime type`;\r\n }\r\n console.log(`Can't determine mime type`, e);\r\n }\r\n metadata = metadata || {};\r\n buffer = await this.assetProcessor.process(buffer, metadata, fileType);\r\n return this.upload(bufferToStream(buffer), fileType, metadata);\r\n }\r\n\r\n async writeUrl(url: string, metadata: IAssetMeta = null): Promise<IAsset> {\r\n const buffer = (await axios({ url, responseType: \"arraybuffer\" })).data as Buffer;\r\n return this.writeBuffer(buffer, metadata);\r\n }\r\n\r\n async download(url: string, contentType: string = null): Promise<IAsset> {\r\n let buffer = (await axios({ url, responseType: \"arraybuffer\" })).data as Buffer;\r\n let fileType = {ext: \"\", mime: contentType} as IFileType;\r\n try {\r\n fileType = await AssetProcessor.fileTypeFromBuffer(buffer);\r\n } catch (e) {\r\n if (!fileType.mime) {\r\n throw `Can't determine mime type`;\r\n }\r\n console.log(`Can't determine mime type`, e);\r\n }\r\n const metadata: IAssetMeta = {\r\n filename: url,\r\n extension: (fileType.ext || \"\").trim()\r\n };\r\n buffer = await this.assetProcessor.process(buffer, metadata, fileType);\r\n return new TempAsset(buffer, url, fileType.mime, metadata);\r\n }\r\n\r\n async read(id: string): Promise<IAsset> {\r\n return !id ? null : this.find({_id: new ObjectId(id)});\r\n }\r\n\r\n async find(where: FilterQuery<IAsset>): Promise<IAsset> {\r\n const data = await this.collection.findOne(where);\r\n return !data ? null : new Asset(data._id, data, this.collection, this.bucket);\r\n }\r\n\r\n async findMany(where: FilterQuery<IAsset>): Promise<ReadonlyArray<IAsset>> {\r\n const cursor = this.collection.find(where);\r\n const items = await cursor.toArray() || [];\r\n const result: IAsset[] = [];\r\n for (let item of items) {\r\n if (!item) continue;\r\n result.push(new Asset(item._id, item, this.collection, this.bucket));\r\n }\r\n return result;\r\n }\r\n\r\n async deleteMany(where: FilterQuery<IAsset>): Promise<ReadonlyArray<string>> {\r\n const assets = await this.findMany(where);\r\n return Promise.all(assets.map(a => a.unlink()));\r\n }\r\n\r\n async unlink(id: string): Promise<any> {\r\n const asset = await this.read(id);\r\n if (!asset) return null;\r\n return asset.unlink();\r\n }\r\n\r\n protected async upload(stream: Readable, fileType: IFileType, metadata: IAssetMeta): Promise<IAsset> {\r\n const contentType = fileType.mime.trim();\r\n metadata = Object.assign({\r\n downloadCount: 0,\r\n firstDownload: null,\r\n lastDownload: null\r\n }, metadata || {});\r\n metadata.filename = metadata.filename || new ObjectId().toHexString();\r\n metadata.extension = (fileType.ext || \"\").trim();\r\n return new Promise<IAsset>(((resolve, reject) => {\r\n const uploaderStream = this.bucket.openUploadStream(metadata.filename);\r\n stream.pipe(uploaderStream)\r\n .on(\"error\", error => {\r\n reject(error.message || error);\r\n })\r\n .on(\"finish\", () => {\r\n const asset = new Asset(uploaderStream.id as ObjectId, {\r\n filename: metadata.filename,\r\n contentType,\r\n metadata\r\n }, this.collection, this.bucket);\r\n asset.save().then(() => {\r\n resolve(asset);\r\n }, error => {\r\n reject(error.message || error);\r\n });\r\n });\r\n }));\r\n }\r\n}\r\n","import {Collection} from \"mongodb\";\r\nimport {ObjectId} from \"bson\";\r\n\r\nimport {IAsset, ILazyAsset} from \"../../common-types\";\r\nimport {deleteFromBucket} from \"../../utils\";\r\nimport {Assets} from \"../assets\";\r\nimport {Progresses} from \"../progresses\";\r\nimport {BaseEntity} from \"./base-entity\";\r\n\r\nexport class LazyAsset extends BaseEntity<ILazyAsset> implements ILazyAsset {\r\n\r\n get jobName(): string {\r\n return this.data.jobName;\r\n }\r\n\r\n get jobParams(): any {\r\n return this.data.jobParams;\r\n }\r\n\r\n get jobQue(): string {\r\n return this.data.jobQue;\r\n }\r\n\r\n get progressId(): string {\r\n return this.data.progressId;\r\n }\r\n\r\n get assetId(): string {\r\n return this.data.assetId;\r\n }\r\n\r\n constructor(id: ObjectId,\r\n data: Partial<ILazyAsset>,\r\n collection: Collection,\r\n protected assets: Assets,\r\n protected progresses: Progresses) {\r\n super(id, data, collection);\r\n }\r\n\r\n async unlink(): Promise<string> {\r\n await this.load();\r\n if (!this.progressId) {\r\n await this.collection.deleteOne({_id: this.mId});\r\n }\r\n return deleteFromBucket(this.assets.bucket, new ObjectId(this.assetId));\r\n }\r\n\r\n startWorking(): void {\r\n this.load().then(() => {\r\n if (this.deleted) return;\r\n this.progresses.get(this.progressId).then(p => {\r\n p?.cancel();\r\n });\r\n this.startWorkingOnAsset(false).then(() => {\r\n console.log(`Started working on lazy asset: ${this.id}`);\r\n }).catch(reason => {\r\n console.log(`Can't start working on lazy asset: ${this.id}\\nReason: ${reason}`);\r\n });\r\n });\r\n }\r\n\r\n async loadAsset(): Promise<IAsset> {\r\n await this.load();\r\n if (this.deleted) return null;\r\n if (this.assetId) {\r\n return this.assets.read(this.assetId);\r\n }\r\n if (this.progressId) {\r\n await this.progresses.waitToFinish(this.progressId);\r\n return this.loadAsset();\r\n }\r\n await this.startWorkingOnAsset(true);\r\n return this.loadAsset();\r\n }\r\n\r\n async writeAsset(asset: IAsset): Promise<IAsset> {\r\n this.data.assetId = asset.id;\r\n await this.save();\r\n return asset;\r\n }\r\n\r\n protected async startWorkingOnAsset(fromLoad: boolean): Promise<any> {\r\n this.data.progressId = (await this.progresses.create()).id;\r\n this.data.assetId = null;\r\n await this.save();\r\n await this.progresses.jobMan.enqueueWithName(this.data.jobName, {...this.data.jobParams, lazyId: this.id, fromLoad});\r\n }\r\n}\r\n","import {DependencyContainer, inject, injectable, injectAll, Lifecycle, scoped} from \"tsyringe\";\r\nimport {schedule, validate} from \"node-cron\";\r\nimport {socket, Socket} from \"zeromq\";\r\nimport {Subject, Subscription} from \"rxjs\";\r\nimport {filter, map} from \"rxjs/operators\";\r\nimport {ObjectId} from \"bson\";\r\nimport {\r\n DI_CONTAINER,\r\n IJob,\r\n IJobTask,\r\n IMessageBridge,\r\n ISocketMessage,\r\n JOB,\r\n JobParams,\r\n JobScheduleRange,\r\n JobScheduleTime,\r\n SocketParams,\r\n Type\r\n} from \"../common-types\";\r\nimport {\r\n colorize,\r\n ConsoleColor,\r\n getConstructorName,\r\n getType,\r\n isArray,\r\n isObject,\r\n jsonHighlight,\r\n promiseTimeout\r\n} from \"../utils\";\r\nimport {Configuration} from \"./configuration\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class JobManager {\r\n\r\n protected jobTypes: Type<IJob>[];\r\n protected jobs: { [name: string]: (jobParams: JobParams, uniqueId: string) => Promise<any> };\r\n protected messages: Subject<ISocketMessage>;\r\n protected processing: boolean;\r\n\r\n protected apiPush: Socket;\r\n protected apiPull: Socket;\r\n protected workerPush: Socket;\r\n protected workerPull: Socket;\r\n\r\n readonly maxTimeout: number;\r\n\r\n constructor(readonly config: Configuration, @inject(DI_CONTAINER) readonly container: DependencyContainer, @injectAll(JOB) jobTypes: Type<IJob>[]) {\r\n this.jobTypes = jobTypes || [];\r\n this.jobs = this.jobTypes.reduce((res, jobType) => {\r\n const jobName = getConstructorName(jobType);\r\n res[jobName] = (jobParams: JobParams, uniqueId: string) => {\r\n const job = this.resolveJobInstance(jobType, jobParams, uniqueId);\r\n const messageBridge: IMessageBridge = {\r\n sendMessage: (message: string, params?: SocketParams) => {\r\n params.uniqueId = uniqueId;\r\n this.workerPush.send([message, JSON.stringify(params)]);\r\n }\r\n };\r\n messageBridge.sendMessage(`job-started`, {name: jobName});\r\n return job.process(messageBridge);\r\n }\r\n return res;\r\n }, {});\r\n this.messages = new Subject<ISocketMessage>();\r\n this.processing = false;\r\n this.maxTimeout = this.config.resolve(\"jobTimeout\");\r\n }\r\n\r\n on(message: string, cb: (params: SocketParams) => any): Subscription {\r\n return this.messages\r\n .pipe(filter(t => t.message === message))\r\n .pipe(map(t => t.params)).subscribe(cb);\r\n }\r\n\r\n async process(jobType: Type<IJob>, params: JobParams = {}): Promise<any> {\r\n let instance: IJob = null;\r\n try {\r\n instance = this.resolveJobInstance(jobType, params);\r\n } catch (e) {\r\n const jobName = getConstructorName(jobType);\r\n throw `Can't resolve params for job: ${jobName}, with params: ${JSON.stringify(params)}. Reason: ${e}`;\r\n }\r\n return instance.process();\r\n }\r\n\r\n async enqueueWithName(name: string, params: JobParams = {}): Promise<string> {\r\n return this.sendToWorkers(this.tryResolveFromName(name, params), params);\r\n }\r\n\r\n async enqueue(jobType: Type<IJob>, params: JobParams = {}): Promise<string> {\r\n return this.sendToWorkers(this.tryResolveAndInit(jobType, params), params);\r\n }\r\n\r\n schedule(minute: JobScheduleTime, hour: JobScheduleTime, dayOfMonth: JobScheduleTime, month: JobScheduleTime, dayOfWeek: JobScheduleTime, jobType: Type<IJob>, params: JobParams = {}): IJobTask {\r\n const expression = [minute, hour, dayOfMonth, month, dayOfWeek].map(t => {\r\n if (isObject(t)) {\r\n const range = t as JobScheduleRange;\r\n return `${range.min || 0}-${range.max || 0}`;\r\n }\r\n if (isArray(t)) {\r\n return t.join(\",\");\r\n }\r\n return `${t}`;\r\n }).join(\" \");\r\n const jobName = getConstructorName(jobType);\r\n if (!validate(expression)) {\r\n console.log(`Can't schedule the task: '${jobName}' because time expression is invalid.`);\r\n return null;\r\n }\r\n return schedule(expression, () => {\r\n this.enqueue(jobType, params).catch(e => {\r\n console.log(`Can't enqueue job: '${jobName}' because: ${e}`);\r\n });\r\n });\r\n }\r\n\r\n async startProcessing(): Promise<any> {\r\n if (this.processing) return null;\r\n this.processing = true;\r\n\r\n if (!this.config.resolve(\"isWorker\")) {\r\n console.log(colorize(`Processing can not be started because this is NOT a worker process!`, ConsoleColor.FgRed));\r\n return null;\r\n }\r\n\r\n const host = this.config.resolve(\"zmqRemoteHost\");\r\n const pushHost = `${host}:${this.config.resolve(\"zmqBackPort\")}`;\r\n this.workerPush = socket(\"push\");\r\n await this.workerPush.connect(pushHost);\r\n console.log(`Worker producer connected to: ${pushHost}`);\r\n\r\n const pullHost = `${host}:${this.config.resolve(\"zmqPort\")}`;\r\n this.workerPull = socket(\"pull\");\r\n await this.workerPull.connect(pullHost);\r\n console.log(`Worker consumer connected to: ${pullHost}`);\r\n\r\n this.workerPull.on(\"message\", async (name: Buffer, args: Buffer, uniqId: Buffer) => {\r\n try {\r\n const jobName = name.toString(\"utf8\");\r\n const jobParams = JSON.parse(args.toString(\"utf8\")) as JobParams;\r\n const uniqueId = uniqId?.toString(\"utf8\");\r\n\r\n console.time(uniqueId);\r\n console.timeLog(uniqueId, `Started working on background job: ${colorize(jobName, ConsoleColor.FgCyan)} with args: \\n${jsonHighlight(jobParams)}\\n\\n`);\r\n\r\n try {\r\n await Promise.race([this.jobs[jobName](jobParams, uniqueId), promiseTimeout(this.maxTimeout, true)]);\r\n console.timeLog(uniqueId, `Finished working on background job: ${colorize(jobName, ConsoleColor.FgCyan)}\\n\\n`);\r\n } catch (e) {\r\n console.timeLog(uniqueId, `Background job failed: ${colorize(jobName, ConsoleColor.FgRed)}\\n${e}\\n\\n`);\r\n }\r\n console.timeEnd(uniqueId);\r\n } catch (e) {\r\n console.log(`Failed to start job: ${e.message}`);\r\n }\r\n });\r\n }\r\n\r\n tryResolve(jobType: Type<IJob>, params: JobParams): string {\r\n const jobName = getConstructorName(jobType);\r\n if (!this.jobs[jobName]) {\r\n throw `Can't find job with name: ${jobName} so it can't be enqueued!`;\r\n }\r\n try {\r\n this.resolveJobInstance(jobType, params);\r\n } catch (e) {\r\n throw `Can't resolve params for job: ${jobName}, with params: ${JSON.stringify(params)}. Reason: ${e}`;\r\n }\r\n return jobName;\r\n }\r\n\r\n protected tryResolveFromName(jobName: string, params: JobParams): string {\r\n const jobType = this.jobTypes.find(type => {\r\n return getConstructorName(type) == jobName;\r\n });\r\n if (!jobType) {\r\n throw `Can't find job type with name: ${jobName} so it can't be enqueued!`;\r\n }\r\n return this.tryResolveAndInit(jobType, params);\r\n }\r\n\r\n protected tryResolveAndInit(jobType: Type<IJob>, params: JobParams): string {\r\n if (!this.apiPush) {\r\n const port = this.config.resolve(\"zmqPort\");\r\n this.apiPush = socket(\"push\");\r\n this.apiPush.bind(`tcp://0.0.0.0:${port}`);\r\n console.log(`API producer bound to port: ${port}`);\r\n }\r\n if (!this.apiPull) {\r\n const backPort = this.config.resolve(\"zmqBackPort\");\r\n this.apiPull = socket(\"pull\");\r\n this.apiPull.bind(`tcp://0.0.0.0:${backPort}`);\r\n this.apiPull.on(\"message\", (name: Buffer, args?: Buffer) => {\r\n const message = name.toString(\"utf8\");\r\n const params = JSON.parse(args?.toString(\"utf8\") || \"{}\") as JobParams;\r\n const paramTypes = Object.keys(params).reduce((res, key) => {\r\n res[key] = getType(params[key]);\r\n return res;\r\n }, {});\r\n console.log(`Received a message from worker: \"${colorize(message, ConsoleColor.FgCyan)}\" with args: ${jsonHighlight(paramTypes)}\\n\\n`);\r\n this.messages.next({message, params});\r\n });\r\n console.log(`API consumer bound to port: ${backPort}`);\r\n }\r\n return this.tryResolve(jobType, params);\r\n }\r\n\r\n protected resolveJobInstance(jobType: Type<IJob>, params: JobParams, uniqueId: string = \"\"): IJob {\r\n const container = this.container.createChildContainer();\r\n Object.keys(params).map((name) => {\r\n container.register(name, {useValue: params[name]});\r\n });\r\n container.register(\"uniqueId\", {useValue: uniqueId});\r\n container.register(jobType, jobType);\r\n return container.resolve(jobType) as IJob;\r\n }\r\n\r\n protected async sendToWorkers(jobName: string, params: JobParams): Promise<string> {\r\n const publisher = await this.apiPush;\r\n const uniqueId = new ObjectId().toHexString();\r\n await publisher.send([jobName, JSON.stringify(params), uniqueId]);\r\n return uniqueId;\r\n }\r\n}\r\n","import {ObjectId} from \"bson\";\r\nimport {Collection} from \"mongodb\";\r\nimport {IMessageBridge, IProgress} from \"../../common-types\";\r\nimport {BaseEntity} from \"./base-entity\";\r\n\r\nexport class Progress extends BaseEntity<IProgress> implements IProgress {\r\n\r\n protected messageBridge: IMessageBridge;\r\n\r\n get current(): number {\r\n return this.data.current;\r\n }\r\n\r\n get max(): number {\r\n return this.data.max;\r\n }\r\n\r\n get message(): string {\r\n return this.data.message;\r\n }\r\n\r\n get error(): string {\r\n return this.data.error;\r\n }\r\n\r\n get canceled(): boolean {\r\n return this.data.canceled;\r\n }\r\n\r\n get percent(): number {\r\n return this.max > 0 ? Math.round(this.current / this.max * 100) : 0;\r\n }\r\n\r\n get remaining(): number {\r\n return this.max > 0 ? this.max - this.current : 0;\r\n }\r\n\r\n constructor(id: ObjectId,\r\n data: Partial<IProgress>,\r\n collection: Collection) {\r\n super(id, data, collection);\r\n }\r\n\r\n setMessageBridge(messageBridge: IMessageBridge): this {\r\n this.messageBridge = messageBridge || this.messageBridge;\r\n return this;\r\n }\r\n\r\n async createSubProgress(progressValue: number, max?: number, message?: string): Promise<IProgress> {\r\n if (max <= 0 && progressValue > 0) {\r\n await this.advance(progressValue);\r\n }\r\n if (message !== null) {\r\n this.data.message = message;\r\n await this.save();\r\n }\r\n return new SubProgress(this, this.current, progressValue, Math.max(max, 1));\r\n }\r\n\r\n async setMax(max: number): Promise<any> {\r\n if (isNaN(max) || max <= 0) {\r\n throw \"Max progress value must be bigger than zero\";\r\n }\r\n this.data.max = max;\r\n await this.save();\r\n }\r\n\r\n async setMessage(message: string): Promise<any> {\r\n this.data.message = message;\r\n await this.save();\r\n }\r\n\r\n async setError(error: string): Promise<any> {\r\n this.data.error = error;\r\n await this.save();\r\n }\r\n\r\n async advance(value: number = 1): Promise<any> {\r\n if (isNaN(value) || value <= 0) {\r\n throw \"Advance value must be bigger than zero\";\r\n }\r\n await this.load();\r\n if (this.deleted || this.canceled) return null;\r\n this.data.current = Math.min(this.max, this.current + value);\r\n await this.save();\r\n }\r\n\r\n async cancel(): Promise<any> {\r\n this.data.canceled = true;\r\n await this.save();\r\n }\r\n\r\n save(): Promise<any> {\r\n if (this.messageBridge) {\r\n this.messageBridge.sendMessage(`progress-changed`, this.toJSON());\r\n }\r\n return super.save();\r\n }\r\n}\r\n\r\nexport class SubProgress implements IProgress {\r\n\r\n get id(): string {\r\n return this.parent.id;\r\n }\r\n\r\n get current(): number {\r\n return this.mCurrent;\r\n }\r\n\r\n get max(): number {\r\n return this.mMax;\r\n }\r\n\r\n get message(): string {\r\n return this.parent.message;\r\n }\r\n\r\n get error(): string {\r\n return this.parent.error;\r\n }\r\n\r\n get percent(): number {\r\n return this.parent.percent;\r\n }\r\n\r\n get remaining(): number {\r\n return this.max - this.mCurrent;\r\n }\r\n\r\n get canceled(): boolean {\r\n return !this.parent || this.parent.canceled;\r\n }\r\n\r\n protected mCurrent: number;\r\n\r\n constructor(protected parent: IProgress, protected progressFrom: number, protected progressValue: number, protected mMax: number = 100) {\r\n if (progressFrom < 0) {\r\n throw \"Progress from must be bigger than or zero\";\r\n }\r\n if (progressValue <= 0) {\r\n throw \"Progress value must be bigger than zero\";\r\n }\r\n this.mCurrent = 0;\r\n }\r\n\r\n setMessageBridge(messageBridge: IMessageBridge): this {\r\n if (!this.parent) return this;\r\n this.parent.setMessageBridge(messageBridge);\r\n return this;\r\n }\r\n\r\n async createSubProgress(progressValue: number, max?: number, message?: string): Promise<IProgress> {\r\n if (max <= 0 && progressValue > 0) {\r\n await this.advance(progressValue);\r\n }\r\n if (message !== null) {\r\n await this.setMessage(message);\r\n }\r\n return new SubProgress(this, this.current, progressValue, Math.max(max, 1));\r\n }\r\n\r\n async setMax(max: number): Promise<any> {\r\n if (isNaN(max) || max <= 0) {\r\n throw \"Max progress value must be bigger than zero\";\r\n }\r\n this.mMax = max;\r\n await this.save();\r\n }\r\n\r\n async setMessage(message: string): Promise<any> {\r\n if (!this.parent) return null;\r\n await this.parent.setMessage(message);\r\n }\r\n\r\n async setError(error: string): Promise<any> {\r\n if (!this.parent) return null;\r\n await this.parent.setError(error);\r\n }\r\n\r\n async advance(value: number = 1): Promise<any> {\r\n if (isNaN(value) || value <= 0) {\r\n throw \"Advance value must be bigger than zero\";\r\n }\r\n this.mCurrent = Math.min(this.max, this.mCurrent + value);\r\n await this.save();\r\n }\r\n\r\n async cancel(): Promise<any> {\r\n if (!this.parent) return null;\r\n await this.parent.cancel();\r\n }\r\n\r\n async save(): Promise<any> {\r\n const ratio = this.max > 0 ? this.mCurrent / this.max : 0;\r\n const newProgress = this.progressFrom + Math.round(this.progressValue * ratio);\r\n const current = this.parent.current;\r\n if (newProgress <= current) return null;\r\n await this.parent.advance(newProgress)\r\n }\r\n\r\n async load(): Promise<any> {\r\n return null;\r\n }\r\n\r\n toJSON(): any {\r\n return this.parent.toJSON();\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport {ObjectId} from \"bson\";\r\nimport {Collection} from \"mongodb\";\r\nimport {FilterQuery} from \"mongoose\";\r\nimport {IProgress} from \"../common-types\";\r\nimport {promiseTimeout} from \"../utils\";\r\nimport {MongoConnector} from \"./mongo-connector\";\r\nimport {JobManager} from \"./job-manager\";\r\nimport {Progress} from \"./entities/progress\";\r\n\r\n@injectable()\r\n@singleton()\r\nexport class Progresses {\r\n\r\n protected collection: Collection<Partial<IProgress>>;\r\n protected progresses: {[id: string]: IProgress};\r\n\r\n constructor(readonly connector: MongoConnector, readonly jobMan: JobManager) {\r\n this.collection = connector.database.collection(\"progresses\");\r\n this.progresses = {};\r\n this.jobMan.on(\"progress-changed\", progress => {\r\n const id = progress.id as string;\r\n this.progresses[id] = new Progress(new ObjectId(id), progress as any, this.collection);\r\n });\r\n }\r\n\r\n async waitToFinish(id: string): Promise<IProgress> {\r\n return Promise.race([\r\n this.waitForProgress(id, async () => {\r\n let progress = this.progresses[id];\r\n if (!progress || progress.percent < 100) {\r\n progress = await this.get(id);\r\n }\r\n if (!progress) {\r\n throw new Error(`Progress does not exists with id: ${id}`);\r\n }\r\n return progress;\r\n }, 500),\r\n this.waitForProgress(id, async () => {\r\n return this.progresses[id] || null;\r\n }, 25)\r\n ]);\r\n }\r\n\r\n async get(id: string): Promise<IProgress> {\r\n return !id ? null : this.find({_id: new ObjectId(id)});\r\n }\r\n\r\n async find(where: FilterQuery<IProgress>): Promise<IProgress> {\r\n const data = await this.collection.findOne(where);\r\n return !data ? null : new Progress(data._id, data, this.collection);\r\n }\r\n\r\n async create(max: number = 100): Promise<IProgress> {\r\n if (isNaN(max) || max <= 0) {\r\n throw new Error(`Max progress value must be bigger than zero`);\r\n }\r\n const data = {\r\n current: 0,\r\n max: max,\r\n message: \"\",\r\n error: \"\",\r\n canceled: false\r\n };\r\n const res = await this.collection.insertOne(data);\r\n return new Progress(res.insertedId, data, this.collection);\r\n }\r\n\r\n async remove(id: string): Promise<any> {\r\n await this.collection.deleteOne({_id: new ObjectId(id)});\r\n return id;\r\n }\r\n\r\n protected async waitForProgress(id: string, cb: () => Promise<IProgress>, delay: number): Promise<IProgress> {\r\n let isFinished = false;\r\n let progress: IProgress = null;\r\n let waitTime: number = 0;\r\n while (!isFinished) {\r\n progress = await cb();\r\n waitTime += delay;\r\n if (progress) {\r\n if (progress.error) {\r\n throw new Error(progress.error);\r\n }\r\n isFinished = progress.percent >= 100;\r\n }\r\n if (!isFinished) {\r\n if (waitTime >= this.jobMan.maxTimeout) {\r\n throw new Error(`Progress with id: ${id} probably never will be finished!`);\r\n }\r\n await promiseTimeout(delay);\r\n }\r\n }\r\n return progress;\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {ObjectId} from \"bson\";\r\nimport {Collection} from \"mongodb\";\r\nimport {FilterQuery} from \"mongoose\";\r\nimport {IJob, ILazyAsset, JobParams, Type} from \"../common-types\";\r\nimport {MongoConnector} from \"./mongo-connector\";\r\nimport {Assets} from \"./assets\";\r\nimport {LazyAsset} from \"./entities/lazy-asset\";\r\nimport {JobManager} from \"./job-manager\";\r\nimport {Progresses} from \"./progresses\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class LazyAssets {\r\n\r\n protected collection: Collection<Partial<ILazyAsset>>;\r\n\r\n constructor(readonly connector: MongoConnector,\r\n readonly assets: Assets,\r\n readonly progresses: Progresses,\r\n readonly jobMan: JobManager) {\r\n this.collection = connector.database.collection(\"lazyassets\");\r\n }\r\n\r\n async create(jobType: Type<IJob>, jobParams: JobParams = {}, jobQue: string = \"main\"): Promise<ILazyAsset> {\r\n const jobName = this.jobMan.tryResolve(jobType, {...jobParams, lazyId: \"\"});\r\n const data = {\r\n jobName,\r\n jobParams,\r\n jobQue\r\n };\r\n const existingAsset = await this.find(data);\r\n if (existingAsset) return existingAsset;\r\n const res = await this.collection.insertOne(data);\r\n return new LazyAsset(res.insertedId, data, this.collection, this.assets, this.progresses);\r\n }\r\n\r\n async read(id: string): Promise<ILazyAsset> {\r\n return !id ? null : this.find({_id: new ObjectId(id)});\r\n }\r\n\r\n async find(where: FilterQuery<ILazyAsset>): Promise<ILazyAsset> {\r\n const data = await this.collection.findOne(where);\r\n return !data\r\n ? null\r\n : new LazyAsset(data._id, data, this.collection, this.assets, this.progresses);\r\n }\r\n\r\n async unlink(id: string): Promise<any> {\r\n const asset = await this.read(id);\r\n if (!asset) return null;\r\n return asset.unlink();\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {IAsset} from \"../common-types\";\r\nimport {Assets} from \"./assets\";\r\nimport {LazyAssets} from \"./lazy-assets\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class AssetResolver {\r\n\r\n constructor(readonly assets: Assets, readonly lazyAssets: LazyAssets) {\r\n\r\n }\r\n\r\n async resolve(id: string, lazy: boolean = false): Promise<IAsset> {\r\n let asset: IAsset = null;\r\n if (lazy) {\r\n const lazyAsset = await this.lazyAssets.read(id);\r\n if (!lazyAsset) return null;\r\n return lazyAsset.loadAsset();\r\n }\r\n asset = await this.assets.read(id);\r\n if (!asset) {\r\n const lazyAsset = await this.lazyAssets.read(id);\r\n if (!lazyAsset) return null;\r\n return lazyAsset.loadAsset();\r\n }\r\n return asset;\r\n }\r\n}\r\n","import {createServer, Server} from \"http\";\r\nimport express_, {Express} from \"express\";\r\nimport {injectable, singleton} from \"tsyringe\";\r\nimport socket_io, {Server as SocketServer} from \"socket.io\";\r\n\r\nconst express = express_;\r\nconst socketIO = socket_io;\r\n\r\n@injectable()\r\n@singleton()\r\nexport class BackendProvider {\r\n\r\n readonly express: Express;\r\n readonly server: Server;\r\n\r\n get io(): SocketServer {\r\n this.ioServer = this.ioServer || socketIO(this.server, {path: \"/socket\"});\r\n return this.ioServer;\r\n }\r\n\r\n protected ioServer: SocketServer;\r\n\r\n constructor() {\r\n this.express = express();\r\n this.express.set(\"trust proxy\", true);\r\n this.server = createServer(this.express);\r\n }\r\n}\r\n","import {injectable, scoped, Lifecycle} from \"tsyringe\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class CacheProcessor {\r\n async serialize(data: any): Promise<any> {\r\n return data;\r\n }\r\n\r\n async deserialize(data: any): Promise<any> {\r\n return data;\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {Collection} from \"mongodb\";\r\nimport {MongoConnector} from \"./mongo-connector\";\r\nimport {Configuration} from \"./configuration\";\r\nimport {CacheProcessor} from \"./cache-processor\";\r\n\r\nexport interface ICacheItem {\r\n _id: string;\r\n data: any;\r\n tags?: any;\r\n expirationTimestamp?: number;\r\n expiresAt?: number;\r\n}\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class Cache {\r\n\r\n protected collection: Collection<ICacheItem>;\r\n\r\n constructor(readonly connector: MongoConnector, protected config: Configuration, protected cacheProcessor: CacheProcessor) {\r\n\r\n }\r\n\r\n protected async prepare(): Promise<any> {\r\n if (this.collection) return;\r\n if (!this.connector.database) {\r\n throw new Error(`You can't use cache without mongo connection!`);\r\n }\r\n this.collection = this.connector.database.collection(this.config.resolve(\"cacheCollection\"));\r\n await this.collection.createIndex(\r\n {expiresAt: 1},\r\n {expireAfterSeconds: 0}\r\n );\r\n }\r\n\r\n async set(key: string, value: any, ttl?: number, expirationTimestamp: number = null, tags: any = {}): Promise<any> {\r\n await this.prepare();\r\n const item: ICacheItem = {\r\n _id: key,\r\n data: await this.cacheProcessor.serialize(value),\r\n tags: await this.cacheProcessor.serialize(tags),\r\n expirationTimestamp,\r\n };\r\n if (ttl) {\r\n const now = Math.round(new Date().getTime() / 1000);\r\n item.expiresAt = now + ttl;\r\n }\r\n await this.collection.updateOne({_id: key}, {$set: item}, {upsert: true});\r\n return value;\r\n }\r\n\r\n async get(key: string): Promise<any> {\r\n await this.prepare();\r\n let item = await this.collection.findOne({_id: key});\r\n const now = Math.round(new Date().getTime() / 1000);\r\n if (item && item.expiresAt && item.expiresAt < now) {\r\n item = null;\r\n }\r\n if (!item) {\r\n throw new Error(`Cache probably doesn't exists with key: ${key}`);\r\n }\r\n return await this.cacheProcessor.deserialize(item.data);\r\n }\r\n\r\n async getOrSet(key: string, valueCb: () => Promise<any>, ttl?: number, expirationTimestamp: number = null, tags: any = {}): Promise<any> {\r\n try {\r\n return await this.get(key);\r\n } catch (e) {\r\n return await this.set(key, await valueCb(), ttl, expirationTimestamp, tags);\r\n }\r\n }\r\n\r\n async delete(key: string): Promise<any> {\r\n await this.prepare();\r\n await this.collection.deleteOne({_id: key});\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {Express} from \"express\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class EndpointProvider {\r\n\r\n async configure(app: Express): Promise<any> {\r\n console.log(`Express app is mounted to: ${app.mountpath}`);\r\n }\r\n}\r\n","import {injectable, injectAll, Lifecycle, scoped} from \"tsyringe\";\r\nimport {FIXTURE, IFixture} from \"../common-types\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class Fixtures {\r\n\r\n constructor(@injectAll(FIXTURE) protected fixtures: IFixture[]) {\r\n\r\n }\r\n\r\n async load() {\r\n if (!this.fixtures) return;\r\n\r\n for (let fixture of this.fixtures) {\r\n await fixture.load();\r\n }\r\n }\r\n}\r\n","import {v4 as uuidv4} from \"uuid\";\r\nimport sharp_ from \"sharp\";\r\nimport {IGalleryImage, IGallerySize, IGalleryImageHandler} from \"../common-types\";\r\n\r\nconst sharp = sharp_;\r\nconst bigSize = 1500;\r\nconst thumbSize = 250;\r\n\r\nexport class GalleryImage implements IGalleryImage {\r\n\r\n readonly thumb: string;\r\n readonly big: string;\r\n readonly targetSize: IGallerySize;\r\n\r\n constructor(readonly folder: string, size: IGallerySize, readonly handler: IGalleryImageHandler) {\r\n this.thumb = uuidv4();\r\n this.big = uuidv4();\r\n this.targetSize = !size ? {width: thumbSize, height: thumbSize} : size;\r\n }\r\n\r\n async serve(id: string): Promise<Buffer> {\r\n const isThumb = id == this.thumb;\r\n\r\n if (await this.handler.hasResult(isThumb)) {\r\n return this.handler.serveResult(isThumb);\r\n }\r\n\r\n const original = sharp(await this.handler.getOriginal()).rotate();\r\n const meta = await original.metadata();\r\n const ratio = meta.width / meta.height;\r\n const sizeRatio = isThumb ? this.targetSize.width / this.targetSize.height : 1;\r\n const size = isThumb ? Math.max(this.targetSize.width, this.targetSize.height) : bigSize;\r\n const targetHeight = ratio > sizeRatio ? size : Math.round(size / ratio);\r\n const targetWidth = Math.round(targetHeight * ratio);\r\n\r\n const resized = original.resize(targetWidth, targetHeight);\r\n const buffer = await (isThumb ? resized.extract({\r\n left: Math.floor((targetWidth - this.targetSize.width) / 2),\r\n top: Math.floor((targetHeight - this.targetSize.height) / 2),\r\n width: this.targetSize.width,\r\n height: this.targetSize.height\r\n }).toBuffer() : resized.toBuffer());\r\n\r\n await this.handler.writeResult(isThumb, buffer);\r\n return this.handler.serveResult(isThumb);\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {IGalleryImage, IGalleryImageHandler, IGallerySize} from \"../common-types\";\r\nimport {GalleryImage} from \"./gallery-image\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class GalleryCache {\r\n\r\n private readonly imgCache: { [id: string]: IGalleryImage };\r\n\r\n constructor() {\r\n this.imgCache = {};\r\n }\r\n\r\n put(img: IGalleryImage): void {\r\n this.imgCache[img.thumb] = img;\r\n this.imgCache[img.big] = img;\r\n }\r\n\r\n serve(id: string): Promise<Buffer> {\r\n const img = this.imgCache[id];\r\n return !img ? null : img.serve(id);\r\n }\r\n\r\n create(folder: string, targetSize: IGallerySize, handler: IGalleryImageHandler): IGalleryImage {\r\n const image = new GalleryImage(folder, targetSize, handler);\r\n this.put(image);\r\n return image;\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport sharp_ from \"sharp\";\r\nimport {access, constants, lstat, readdir, readFile, writeFile} from \"fs\";\r\nimport {join, dirname} from \"path\";\r\nimport {IGalleryImage, IGallerySize} from \"../common-types\";\r\nimport {Configuration} from \"./configuration\";\r\nimport {GalleryCache} from \"./gallery-cache\";\r\nimport {mkdirRecursive} from \"../utils\";\r\n\r\nconst sharp = sharp_;\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class Gallery {\r\n\r\n private readonly dir: string;\r\n private readonly output: string;\r\n private readonly cache: { [folder: string]: Promise<IGalleryImage[]> };\r\n\r\n constructor(readonly config: Configuration, readonly galleryCache: GalleryCache) {\r\n this.cache = {};\r\n this.dir = this.config.resolve(\"galleryDir\");\r\n this.output = join(this.config.resolve(\"cacheDir\"), \"gallery\");\r\n }\r\n\r\n async getFolder(folder: string, size: IGallerySize = null): Promise<IGalleryImage[]> {\r\n this.cache[folder] = this.cache[folder] || new Promise<IGalleryImage[]>(resolve => {\r\n lstat(join(this.dir, folder), (err, stats) => {\r\n if (err || !stats.isDirectory()) {\r\n resolve([]);\r\n return;\r\n }\r\n this.readRecursive(folder, \"\", size).then(resolve, () => resolve([]));\r\n });\r\n });\r\n return this.cache[folder];\r\n }\r\n\r\n protected readRecursive(path: string, folder: string, size: IGallerySize): Promise<IGalleryImage[]> {\r\n return new Promise<IGalleryImage[]>(resolve => {\r\n readdir(join(this.dir, path), (err, files) => {\r\n if (err) {\r\n resolve([]);\r\n return;\r\n }\r\n const promises = files.map(file => {\r\n return new Promise<IGalleryImage[]>(async resolve => {\r\n const filePath = join(path, file);\r\n const absoluteFilePath = join(this.dir, filePath);\r\n lstat(absoluteFilePath, (err, stats) => {\r\n if (err) {\r\n resolve([]);\r\n return;\r\n }\r\n if (stats.isDirectory()) {\r\n this.readRecursive(filePath, join(folder, file), size).then(resolve);\r\n return;\r\n }\r\n const sharpImg = sharp(absoluteFilePath);\r\n sharpImg.rotate().metadata().then(() => {\r\n const getResultPath = (isThumb) => {\r\n return join(this.output, filePath.replace(/.([a-z|A-Z]+)$/gi, function (ext) {\r\n const suffix = isThumb ? 'thumb' : 'big';\r\n return `-${suffix}${ext}`;\r\n }));\r\n };\r\n resolve([this.galleryCache.create(folder, size, {\r\n getOriginal: () => {\r\n return new Promise<Buffer>((res, rej) => {\r\n readFile(absoluteFilePath, (err, data) => {\r\n if (err) {\r\n rej(err);\r\n return;\r\n }\r\n res(data);\r\n });\r\n });\r\n },\r\n writeResult: (isThumb: boolean, buffer: Buffer) => {\r\n return new Promise<void>(async (res, rej) => {\r\n const resultPath = getResultPath(isThumb);\r\n await mkdirRecursive(dirname(resultPath));\r\n writeFile(resultPath, buffer, err => {\r\n if (err) {\r\n rej(err);\r\n return;\r\n }\r\n res();\r\n });\r\n });\r\n },\r\n hasResult: (isThumb: boolean) => {\r\n return new Promise<boolean>(res => {\r\n access(getResultPath(isThumb), constants.R_OK, err => {\r\n res(!err);\r\n });\r\n });\r\n },\r\n serveResult: (isThumb: boolean) => {\r\n return new Promise<Buffer>((res, rej) => {\r\n readFile(getResultPath(isThumb), (err, data) => {\r\n if (err) {\r\n rej(err);\r\n return;\r\n }\r\n res(data);\r\n });\r\n });\r\n }\r\n })]);\r\n }, () => resolve([]));\r\n });\r\n });\r\n });\r\n Promise.all(promises).then(folders => {\r\n resolve([].concat.apply([], folders));\r\n });\r\n });\r\n });\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {Configuration} from \"./configuration\";\r\nimport {rand} from \"../utils\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class IdGenerator {\r\n\r\n protected prefix: string;\r\n protected separator: string;\r\n protected chars: string;\r\n protected parts: number[];\r\n\r\n constructor(readonly config: Configuration) {\r\n this.prefix = config.resolve(\"idPrefix\");\r\n this.separator = config.resolve(\"idSeparator\");\r\n this.chars = config.resolve(\"idChars\");\r\n this.parts = config.resolve(\"idParts\");\r\n }\r\n\r\n async generate(checkCb: (id: string) => Promise<boolean>): Promise<string> {\r\n let id = null;\r\n let tries = 0;\r\n let notGood = true;\r\n while (notGood && tries < 5) {\r\n id = this.generateId();\r\n notGood = await checkCb(id);\r\n tries++;\r\n }\r\n if (notGood) {\r\n throw `Couldn't generate an unique id..`;\r\n }\r\n return id;\r\n }\r\n\r\n private generateId(): string {\r\n return this.prefix + this.parts.map(num => {\r\n let s = \"\";\r\n for (let i = 0; i < num; i++) {\r\n const ix = rand(0, this.chars.length - 1);\r\n s += this.chars[ix];\r\n }\r\n return s;\r\n }).join(this.separator);\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport axios from \"axios\";\r\nimport {Configuration} from \"./configuration\";\r\nimport {ITranslations} from \"../common-types\";\r\n\r\n@injectable()\r\n@singleton()\r\nexport class TranslationProvider {\r\n\r\n protected cache: { [lang: string]: Promise<ITranslations> };\r\n\r\n constructor(readonly config: Configuration) {\r\n this.cache = {};\r\n }\r\n\r\n getDictionary(language: string): Promise<ITranslations> {\r\n this.cache[language] = this.cache[language] || axios.get(this.config.resolve(\"translationsTemplate\").replace(`[lang]`, language)).then(\r\n r => r.data,\r\n reason => ({\r\n message: reason\r\n })\r\n );\r\n return this.cache[language];\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport {getValue, isDefined, isString} from \"../utils\";\r\nimport {ITranslations} from \"../common-types\";\r\nimport {TranslationProvider} from \"./translation-provider\";\r\n\r\n@injectable()\r\n@singleton()\r\nexport class Translator {\r\n\r\n protected cache: { [lang: string]: ITranslations };\r\n\r\n constructor(private translationProvider: TranslationProvider) {\r\n this.cache = {};\r\n }\r\n\r\n async getDictionary(language: string): Promise<ITranslations> {\r\n const dictionary = await this.translationProvider.getDictionary(language);\r\n this.cache[language] = dictionary;\r\n return dictionary;\r\n }\r\n\r\n getTranslationSync(language: string, key: string, params?: any): string {\r\n if (!isString(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n const dictionary = this.cache[language];\r\n const translation = getValue(dictionary, key, key) || key;\r\n return this.interpolate(translation, params);\r\n }\r\n\r\n getTranslation(language: string, key: string, params?: any): Promise<string> {\r\n if (!isString(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n return this.getDictionary(language).then(dictionary => {\r\n const translation = getValue(dictionary, key, key) || key;\r\n return this.interpolate(translation, params);\r\n });\r\n }\r\n\r\n getTranslations(language: string, ...keys: string[]): Promise<ITranslations> {\r\n return new Promise<ITranslations>(resolve => {\r\n Promise.all(keys.map(key => this.getTranslation(language, key))).then(translations => {\r\n resolve(keys.reduce((result, key, i) => {\r\n result[key] = translations[i];\r\n return result;\r\n }, {}));\r\n });\r\n });\r\n }\r\n\r\n protected interpolate(expr: string | Function, params?: any): string {\r\n if (typeof expr === \"string\") {\r\n return this.interpolateString(expr, params);\r\n }\r\n if (typeof expr === \"function\") {\r\n return expr(params);\r\n }\r\n return expr as string;\r\n }\r\n\r\n protected interpolateString(expr: string, params?: any) {\r\n if (!expr || !params) return expr;\r\n return expr.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (substring: string, b: string) => {\r\n const r = getValue(params, b);\r\n return isDefined(r) ? r : substring;\r\n });\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport {lstatSync, readdir, readFileSync} from \"fs\";\r\nimport {join} from \"path\";\r\nimport * as Handlebars from \"handlebars\";\r\n\r\nimport {Translator} from \"./translator\";\r\nimport {Configuration} from \"./configuration\";\r\n\r\n@injectable()\r\n@singleton()\r\nexport class TemplateRenderer {\r\n\r\n templates: {[name: string]: Function};\r\n\r\n protected initPromise: Promise<any>;\r\n\r\n constructor(readonly translator: Translator, readonly config: Configuration) {\r\n this.templates = {};\r\n Handlebars.registerHelper(`object`, function({hash}) {\r\n return hash;\r\n });\r\n Handlebars.registerHelper(`now`, function() {\r\n return new Date().getTime();\r\n });\r\n Handlebars.registerHelper(`keys`, function(obj: any) {\r\n return !obj ? [] : Object.keys(obj);\r\n });\r\n Handlebars.registerHelper(`translate`, function (key: string, params: any) {\r\n return translator.getTranslationSync(this.language, key, params);\r\n });\r\n }\r\n\r\n protected init(): Promise<any> {\r\n this.initPromise = this.initPromise || this.parseTemplates(this.config.resolve(\"templatesDir\"), []);\r\n return this.initPromise;\r\n }\r\n\r\n async parseTemplates(dir: string, dirPath: string[]): Promise<void> {\r\n return new Promise<void>(resolve => {\r\n readdir(dir, async (err, files) => {\r\n for (let file of files) {\r\n const path = join(dir, file);\r\n if (lstatSync(path).isDirectory()) {\r\n await this.parseTemplates(join(dir, file), dirPath.concat([file]));\r\n continue;\r\n }\r\n const parts = file.split(\".\");\r\n parts.pop();\r\n const name = parts.join(\".\");\r\n const fullName = dirPath.concat([name]).join(\"-\");\r\n const content = readFileSync(path).toString(\"utf8\");\r\n this.templates[fullName] = Handlebars.compile(content);\r\n Handlebars.registerPartial(fullName, content);\r\n }\r\n resolve();\r\n });\r\n });\r\n }\r\n\r\n async render(template: string, language: string, context?: any): Promise<string> {\r\n await this.init();\r\n await this.translator.getDictionary(language);\r\n if (!this.templates[template]) {\r\n return Promise.reject(`Template not found with name: ${template}`);\r\n }\r\n context = Object.assign({language}, context || {});\r\n const res = this.templates[template](context);\r\n return res instanceof Error ? await Promise.reject(res) : res;\r\n }\r\n}\r\n","import {injectable, singleton} from \"tsyringe\";\r\nimport {createTransport} from \"nodemailer\";\r\nimport * as Mail from \"nodemailer/lib/mailer\";\r\n\r\nimport {TemplateRenderer} from \"./template-renderer\";\r\nimport {Translator} from \"./translator\";\r\nimport {Configuration} from \"./configuration\";\r\n\r\nexport interface MailOptions {\r\n to: string;\r\n from?: string;\r\n subject?: string;\r\n template: string;\r\n context: any;\r\n attachments?: Mail.Attachment[]\r\n}\r\n\r\n@injectable()\r\n@singleton()\r\nexport class MailSender {\r\n\r\n readonly transporter: Mail;\r\n\r\n get translator(): Translator {\r\n return this.renderer.translator;\r\n }\r\n\r\n constructor(readonly config: Configuration, readonly renderer: TemplateRenderer) {\r\n this.transporter = createTransport({\r\n host: this.config.resolve(\"smtpHost\"),\r\n port: this.config.resolve(\"smtpPort\"),\r\n auth: {\r\n user: this.config.resolve(\"smtpUser\"),\r\n pass: this.config.resolve(\"smtpPassword\"),\r\n }\r\n });\r\n }\r\n\r\n async sendMail(language: string, options: MailOptions): Promise<any> {\r\n const subject = await this.translator.getTranslation(language, options.subject || \"-\");\r\n const html = await this.renderer.render(options.template, language, options.context);\r\n return this.transporter.sendMail({\r\n from: options.from || this.config.resolve(\"mailSenderAddress\"),\r\n to: options.to,\r\n attachments: options.attachments,\r\n subject,\r\n html\r\n });\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {Cache, ICacheItem} from \"./cache\";\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class MemoryCache {\r\n\r\n protected readonly cacheMap: Map<string, ICacheItem>;\r\n\r\n constructor(protected readonly cache: Cache) {\r\n this.cacheMap = new Map<string, ICacheItem>();\r\n }\r\n\r\n async set(key: string, value: any, ttl?: number, expirationTimestamp: number = null, tags: any = {}): Promise<any> {\r\n const now = Math.round(new Date().getTime() / 1000);\r\n const expTimestamp = Math.min(isNaN(ttl) ? Number.MAX_SAFE_INTEGER : ttl, 3600);\r\n this.cacheMap.set(key, {\r\n _id: key,\r\n data: value,\r\n expirationTimestamp: expTimestamp,\r\n expiresAt: now + expTimestamp,\r\n });\r\n return this.cache.set(key, value, ttl, expirationTimestamp, tags);\r\n }\r\n\r\n async get(key: string): Promise<any> {\r\n let item = this.cacheMap.get(key);\r\n const now = Math.round(new Date().getTime() / 1000);\r\n let expTimestamp = 3600;\r\n if (item && item.expiresAt && item.expiresAt < now) {\r\n expTimestamp = item.expirationTimestamp;\r\n item = null;\r\n }\r\n if (!item) {\r\n const value = await this.cache.get(key);\r\n this.cacheMap.set(key, {\r\n _id: key,\r\n data: value,\r\n expirationTimestamp: expTimestamp,\r\n expiresAt: now + expTimestamp,\r\n });\r\n return value;\r\n }\r\n return item.data;\r\n }\r\n\r\n async getOrSet(key: string, valueCb: () => Promise<any>, ttl?: number, expirationTimestamp: number = null, tags: any = {}): Promise<any> {\r\n try {\r\n return await this.get(key);\r\n } catch (e) {\r\n return await this.set(key, await valueCb(), ttl, expirationTimestamp, tags);\r\n }\r\n }\r\n\r\n async delete(key: string): Promise<any> {\r\n this.cacheMap.delete(key);\r\n await this.cacheMap.delete(key);\r\n }\r\n}\r\n","import {injectable, Lifecycle, scoped} from \"tsyringe\";\r\nimport {IUser} from \"../common-types\";\r\n\r\nconst sampleUser: IUser = {\r\n id: \"5a3cdf7c6a9cf0ba32feccdf\",\r\n email: \"admin@site.com\",\r\n password: \"\",\r\n roles: [\"admin\"]\r\n};\r\n\r\n@injectable()\r\n@scoped(Lifecycle.ContainerScoped)\r\nexport class UserManager {\r\n\r\n async getByCredentials(credentials: any): Promise<IUser> {\r\n return (sampleUser.email == credentials.email) ? sampleUser : await Promise.reject(\"message.login.error\");\r\n }\r\n\r\n async getById(id: string): Promise<IUser> {\r\n return (sampleUser.id == id) ? sampleUser : null;\r\n }\r\n\r\n async serialize(user: IUser): Promise<any> {\r\n const res = Object.assign({}, user);\r\n delete res.password;\r\n return res;\r\n }\r\n}\r\n","import {IAssetImageParams} from \"../common-types\";\r\nimport {IsBoolean, IsOptional, Max, Min} from \"class-validator\";\r\n\r\nexport class AssetImageParams implements IAssetImageParams {\r\n\r\n @Min(-360)\r\n @Max(360)\r\n @IsOptional()\r\n rotation?: number = 0;\r\n\r\n @Min(0.0001)\r\n @IsOptional()\r\n canvasScaleX?: number = 1;\r\n\r\n @Min(0.0001)\r\n @IsOptional()\r\n canvasScaleY?: number = 1;\r\n\r\n @Min(0.0001)\r\n @IsOptional()\r\n scaleX?: number = 1;\r\n\r\n @Min(0.0001)\r\n @IsOptional()\r\n scaleY?: number = 1;\r\n\r\n @IsBoolean()\r\n @IsOptional()\r\n lazy?: boolean = false;\r\n\r\n @IsBoolean()\r\n @IsOptional()\r\n crop?: boolean = false;\r\n\r\n @IsBoolean()\r\n @IsOptional()\r\n cropBefore?: boolean = false;\r\n\r\n @IsBoolean()\r\n @IsOptional()\r\n cropAfter?: boolean = false;\r\n}\r\n","import {Readable} from \"stream\";\r\nimport {Response} from \"express\";\r\nimport {injectable} from \"tsyringe\";\r\nimport {\r\n Authorized,\r\n Body,\r\n Controller,\r\n Get,\r\n HttpError,\r\n Param,\r\n Post,\r\n QueryParam,\r\n QueryParams,\r\n Res,\r\n UploadedFile\r\n} from \"routing-controllers\";\r\nimport {IAsset} from \"../common-types\";\r\nimport {Assets} from \"../services/assets\";\r\nimport {AssetResolver} from \"../services/asset-resolver\";\r\nimport {AssetImageParams} from \"../requests/asset-image-params\";\r\n\r\n@injectable()\r\n@Controller(\"/assets\")\r\nexport class AssetsController {\r\n\r\n constructor(readonly assets: Assets, readonly assetResolver: AssetResolver) {\r\n\r\n }\r\n\r\n @Authorized()\r\n @Post(\"\")\r\n async upload(@UploadedFile(\"file\") file: Express.Multer.File) {\r\n try {\r\n const contentType = file.mimetype === \"application/octet-stream\" ? null : file.mimetype;\r\n const asset = await this.assets.writeBuffer(file.buffer, {filename: file.filename}, contentType);\r\n return asset.toJSON();\r\n } catch (e) {\r\n const msg = e?.message || e || \"Unknown error\";\r\n throw new HttpError(400, `Asset can't be uploaded.\\n${msg}`);\r\n }\r\n }\r\n\r\n @Authorized()\r\n @Post(\"url\")\r\n async uploadUrl(@Body() body: any) {\r\n try {\r\n const asset = await this.assets.writeUrl(body.url, body);\r\n return asset.toJSON();\r\n } catch (e) {\r\n const msg = e?.message || e || \"Unknown error\";\r\n throw new HttpError(400, `Asset can't be uploaded.\\n${msg}`);\r\n }\r\n }\r\n\r\n @Get(\"/:id\")\r\n async getFile(@Param(\"id\") id: string, @QueryParam(\"lazy\") lazy: boolean, @Res() res: Response): Promise<Readable> {\r\n const asset = await this.getAsset(\"Asset\", id, lazy, res);\r\n return asset.download();\r\n }\r\n\r\n @Get(\"/image/:id/:rotation\")\r\n async getImageRotation(@Param(\"id\") id: string, @QueryParams() params: AssetImageParams, @Res() res: Response, @Param(\"rotation\") rotation: number = 0): Promise<Readable> {\r\n const asset = await this.getAsset(\"Image\", id, params.lazy, res);\r\n if (rotation !== 0) {\r\n params.rotation = params.rotation || rotation;\r\n }\r\n return asset.downloadImage(params);\r\n }\r\n\r\n @Get(\"/image/:id\")\r\n async getImage(@Param(\"id\") id: string, @QueryParams() params: AssetImageParams, @Res() res: Response): Promise<Readable> {\r\n return this.getImageRotation(id, params, res);\r\n }\r\n\r\n @Get(\"/by-name/:name\")\r\n async getFileByName(@Param(\"name\") name: string, @Res() res: Response): Promise<Readable> {\r\n const asset = await this.getAssetByName(\"Asset\", name, res);\r\n return asset.download();\r\n }\r\n\r\n @Get(\"/by-name/image/:name\")\r\n async getImageByName(@Param(\"name\") name: string, @QueryParams() params: AssetImageParams, @Res() res: Response): Promise<Readable> {\r\n const asset = await this.getAssetByName(\"Image\", name, res);\r\n return asset.downloadImage(params);\r\n }\r\n\r\n protected setAssetHeaders(type: string, asset: IAsset, res: Response): void {\r\n if (asset.metadata?.classified) {\r\n throw new HttpError(403, `${type} is classified, and can be only downloaded from a custom url.`);\r\n }\r\n const ext = asset.metadata?.extension;\r\n if (ext) {\r\n res.header(\"content-disposition\", `inline; filename=${asset.filename}.${ext}`);\r\n }\r\n if (asset.contentType) {\r\n res.header(\"content-type\", asset.contentType);\r\n }\r\n }\r\n\r\n protected async getAsset(type: string, id: string, lazy: boolean, res: Response): Promise<IAsset> {\r\n const asset = await this.assetResolver.resolve(id, lazy);\r\n if (!asset) {\r\n throw new HttpError(404, `${type} with id: '${id}' not found.`);\r\n }\r\n this.setAssetHeaders(type, asset, res);\r\n return asset;\r\n }\r\n\r\n protected async getAssetByName(type: string, filename: string, res: Response): Promise<IAsset> {\r\n const asset = await this.assets.find({filename});\r\n if (!asset) {\r\n throw new HttpError(404, `${type} with filename: '${filename}' not found.`);\r\n }\r\n this.setAssetHeaders(type, asset, res);\r\n return asset;\r\n }\r\n}\r\n","import {Response} from \"express\";\r\nimport {sign} from \"jsonwebtoken\";\r\nimport {injectable} from \"tsyringe\";\r\nimport {\r\n Authorized,\r\n Body,\r\n Controller,\r\n CurrentUser,\r\n Get,\r\n HttpError,\r\n Post,\r\n Res,\r\n UnauthorizedError\r\n} from \"routing-controllers\";\r\nimport {compare} from \"bcrypt\";\r\n\r\nimport {Configuration} from \"../services/configuration\";\r\nimport {UserManager} from \"../services/user-manager\";\r\nimport {IUser} from \"../common-types\";\r\n\r\n@injectable()\r\n@Controller()\r\nexport class AuthController {\r\n\r\n constructor(readonly config: Configuration, readonly userManager: UserManager) {}\r\n\r\n @Post(\"/login\")\r\n async login(@Body() credentials: any, @Res() res: Response) {\r\n let user: IUser = null;\r\n try {\r\n user = await this.userManager.getByCredentials(credentials);\r\n } catch (reason) {\r\n throw new HttpError(401, reason);\r\n }\r\n const valid = !user ? false : await compare(credentials.password, user.password);\r\n if (valid !== true)\r\n throw new UnauthorizedError(`message.login.error`);\r\n return {\r\n token: sign({ id: user._id || user.id }, this.config.resolve(\"jwtSecret\")),\r\n user: await this.userManager.serialize(user)\r\n };\r\n }\r\n\r\n @Authorized()\r\n @Get(\"/user\")\r\n getProfile(@CurrentUser() user: IUser) {\r\n return this.userManager.serialize(user);\r\n }\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {Controller, Get, Param} from \"routing-controllers\";\r\nimport {GalleryCache} from \"../services/gallery-cache\";\r\n\r\n@injectable()\r\n@Controller(\"/gallery\")\r\nexport class GalleryController {\r\n\r\n constructor(readonly galleryCache: GalleryCache) { }\r\n\r\n @Get(\"/:id\")\r\n getFile(@Param(\"id\") id: string) {\r\n return this.galleryCache.serve(id);\r\n }\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {Controller, Get, Param} from \"routing-controllers\";\r\nimport {Progresses} from \"../services/progresses\";\r\nimport {Configuration} from \"../services/configuration\";\r\n\r\n@injectable()\r\n@Controller(\"/progresses\")\r\nexport class ProgressesController {\r\n\r\n protected connectionType: string;\r\n\r\n constructor(readonly progresses: Progresses, readonly config: Configuration) {\r\n const mainEndpoint = this.config.resolve(\"mainEndpoint\");\r\n this.connectionType = !mainEndpoint ? \"polling\" : \"socket\";\r\n }\r\n\r\n @Get(\"/:id\")\r\n async getProgress(@Param(\"id\") id: string) {\r\n const progress = await this.progresses.get(id);\r\n if (!progress) return null;\r\n const json = progress.toJSON();\r\n json.connectionType = this.connectionType;\r\n return json;\r\n }\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {BadRequestError, ExpressErrorMiddlewareInterface, Middleware} from \"routing-controllers\";\r\nimport {Response} from \"express\";\r\n\r\nimport {IRequest} from \"../common-types\";\r\nimport {Translator} from \"../services/translator\";\r\nimport {Configuration} from \"../services/configuration\";\r\n\r\n@injectable()\r\n@Middleware({ type: \"after\" })\r\nexport class ErrorHandlerMiddleware implements ExpressErrorMiddlewareInterface {\r\n\r\n get isDev(): boolean {\r\n return this.configuration.resolve(\"nodeEnv\") === \"development\";\r\n }\r\n\r\n constructor(readonly configuration: Configuration, readonly translator: Translator) {\r\n\r\n }\r\n\r\n async error(error: any, req: IRequest, res: Response, next: (err?: any) => any) {\r\n const result = await this.getResult(error, req, res);\r\n if (this.isDev) {\r\n console.log(\"ERROR\", result, res.statusCode);\r\n }\r\n res.json(result);\r\n }\r\n\r\n protected async getResult(error, req: IRequest, res: Response) {\r\n\r\n const result: any = {};\r\n\r\n if (error instanceof BadRequestError) {\r\n res.status(400);\r\n if (error.constructor.name === \"ParamRequiredError\") {\r\n result.message = await this.translator.getTranslation(req.language, \"message.parameter-required.error\");\r\n result.param = error.message;\r\n } else {\r\n result.message = error.message || await this.translator.getTranslation(req.language, \"message.form-validation.error\");\r\n result.errors = error[\"errors\"];\r\n if (this.isDev) {\r\n result.stack = error.stack;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n res.status(error.httpCode || 500);\r\n\r\n if (error instanceof Error) {\r\n if (error.name) {\r\n result.name = error.name;\r\n }\r\n if (error.message) {\r\n result.message = error.message;\r\n }\r\n if (error.stack && this.isDev) {\r\n result.stack = error.stack;\r\n }\r\n } else if (typeof error === \"string\") {\r\n result.message = error;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","import {inject, injectable} from \"tsyringe\";\r\nimport {ExpressMiddlewareInterface, Middleware} from \"routing-controllers\";\r\nimport {DI_CONTAINER, IRequest} from \"../common-types\";\r\nimport {DependencyContainer} from \"tsyringe\";\r\n\r\n@injectable()\r\n@Middleware({ type: \"before\" })\r\nexport class ContainerMiddleware implements ExpressMiddlewareInterface {\r\n\r\n constructor(@inject(DI_CONTAINER) readonly container: DependencyContainer) {\r\n\r\n }\r\n\r\n use(request: IRequest, response: any, next: (err?: any) => any): void {\r\n request.container = this.container;\r\n next(null);\r\n }\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {ExpressMiddlewareInterface, Middleware} from \"routing-controllers\";\r\nimport {IRequest} from \"../common-types\";\r\nimport {Configuration} from \"../services/configuration\";\r\n\r\n@injectable()\r\n@Middleware({ type: \"before\" })\r\nexport class LanguageMiddleware implements ExpressMiddlewareInterface {\r\n\r\n constructor(readonly config: Configuration) {\r\n\r\n }\r\n\r\n use(request: IRequest, response: any, next: (err?: any) => any): void {\r\n request.language = request.query.language as string || this.config.resolve(\"defaultLanguage\");\r\n next(null);\r\n }\r\n\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {ExpressMiddlewareInterface, Middleware} from \"routing-controllers\";\r\nimport moment from \"moment\";\r\nimport {IRequest} from \"../common-types\";\r\n\r\n@injectable()\r\n@Middleware({ type: \"after\" })\r\nexport class RequestEndedMiddleware implements ExpressMiddlewareInterface {\r\n\r\n use(request: IRequest, response: any, next: (err?: any) => any): void {\r\n request.ended = moment();\r\n const diff = request.ended.diff(request.started);\r\n const duration = moment.duration(diff);\r\n console.log(`Request '${request.id}' ended at: ${request.ended.format(\"YYYY-MM-DD HH:mm:ss\")} [${request.method}] ${request.url}`);\r\n console.log(`Request '${request.id}' lasted: ${duration.asMilliseconds()}ms`)\r\n next(null);\r\n }\r\n\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {ExpressMiddlewareInterface, Middleware} from \"routing-controllers\";\r\nimport {ObjectId} from \"bson\";\r\nimport moment from \"moment\";\r\nimport {IRequest} from \"../common-types\";\r\n\r\n@injectable()\r\n@Middleware({ type: \"before\" })\r\nexport class RequestStartedMiddleware implements ExpressMiddlewareInterface {\r\n\r\n use(request: IRequest, response: any, next: (err?: any) => any): void {\r\n request.id = new ObjectId().toHexString();\r\n request.started = moment();\r\n console.log(`Request '${request.id}' started at: ${request.started.format(\"YYYY-MM-DD HH:mm:ss\")} [${request.method}] ${request.url}`);\r\n next(null);\r\n }\r\n\r\n}\r\n","import {inject, injectable} from \"tsyringe\";\r\nimport {ConnectedSocket, MessageBody, OnMessage, SocketController,} from \"socket-controllers\";\r\nimport {Server} from \"socket.io\";\r\nimport {IClientSocket, SOCKET_SERVER} from \"../common-types\";\r\nimport {broadcast} from \"../utils\";\r\nimport {Progresses} from \"../services/progresses\";\r\n\r\n@injectable()\r\n@SocketController()\r\nexport class ProgressController {\r\n\r\n constructor(readonly progresses: Progresses, @inject(SOCKET_SERVER) readonly socketServer: Server) {\r\n }\r\n\r\n @OnMessage(\"background-progress\")\r\n async advanceProgress(@ConnectedSocket() client: IClientSocket, @MessageBody() progressId: string) {\r\n const progress = await this.progresses.get(progressId);\r\n if (!progress) return;\r\n const json = progress.toJSON();\r\n broadcast(this.socketServer, c => {\r\n if (c.interestedProgresses instanceof Set && c.interestedProgresses.has(progressId)) {\r\n client.emit(\"background-progress-changed\", json);\r\n }\r\n });\r\n console.log(`progress changed: ${client.id}, data: ${JSON.stringify(json)}`);\r\n }\r\n\r\n @OnMessage(\"background-progress-interest\")\r\n async setProgressInterest(@ConnectedSocket() client: IClientSocket, @MessageBody() progressId: string) {\r\n const progress = await this.progresses.get(progressId);\r\n if (!progress) return;\r\n const json = progress.toJSON();\r\n client.interestedProgresses = client.interestedProgresses || new Set<string>();\r\n if (client.interestedProgresses.has(progressId)) return;\r\n client.interestedProgresses.add(progressId);\r\n client.emit(\"background-progress-changed\", json);\r\n console.log(`progress interest added: ${client.id}, data: ${JSON.stringify(json)}`);\r\n }\r\n}\r\n","import {injectable} from \"tsyringe\";\r\nimport {Middleware, MiddlewareInterface} from \"socket-controllers\";\r\n\r\n@injectable()\r\n@Middleware()\r\nexport class CompressionMiddleware implements MiddlewareInterface {\r\n\r\n use(socket: any, next: (err?: any) => any) {\r\n next();\r\n }\r\n}\r\n","import {existsSync} from \"fs\";\r\nimport {resolve} from \"path\";\r\nimport {static as serveStatic} from \"express\";\r\nimport {EXPRESS, IDependencyContainer} from \"./common-types\";\r\nimport {EndpointProvider} from \"./services/endpoint-provider\";\r\n\r\nexport async function setupStatic(rootFolder: string, container: IDependencyContainer): Promise<any> {\r\n\r\n const browserFolder = resolve(rootFolder || __dirname, `public_html`);\r\n const app = container.get(EXPRESS);\r\n const ep = container.get(EndpointProvider);\r\n\r\n console.log(browserFolder, existsSync(browserFolder));\r\n\r\n if (existsSync(browserFolder)) {\r\n console.log(`public_html exists. setting up static files serving...`);\r\n app.use(serveStatic(browserFolder, {\r\n maxAge: \"1y\"\r\n }));\r\n } else {\r\n console.log(`public_html does not exist on path: \"${browserFolder}\"`);\r\n }\r\n\r\n await ep.configure(app);\r\n}\r\n","import {RefType, Types} from \"mongoose\";\r\nimport {DocumentType, getModelForClass, ReturnModelType} from \"@typegoose/typegoose\";\r\nimport {Constructor} from \"../common-types\";\r\n\r\nexport abstract class BaseDoc<IDType extends RefType = Types.ObjectId> {\r\n\r\n _id?: IDType;\r\n\r\n /**\r\n * This getter/setter doesn't exist if \"schemaOptions.id\" being set to \"false\"\r\n */\r\n id?: string;\r\n\r\n /**\r\n * This getter doesn't exist if \"schemaOptions.timestamps\" being set to \"false\"\r\n */\r\n createdAt?: Date;\r\n\r\n /**\r\n * This getter doesn't exist if \"schemaOptions.timestamps\" being set to \"false\"\r\n */\r\n updatedAt?: Date;\r\n\r\n /**\r\n * Returns the Document as JSON\r\n */\r\n toJSON?(): any;\r\n\r\n /**\r\n * Returns the Document as an Object\r\n */\r\n toObject?(): any;\r\n\r\n /**\r\n * Casts this to DocumentType<this> to allow using document methods in get/set-s\r\n */\r\n cast(): DocumentType<this> {\r\n return this as any;\r\n }\r\n\r\n /**\r\n * Gets a pre-compiled model from typegoose cache by its class type\r\n * @param type\r\n */\r\n model<T extends Constructor<any>>(type: T): ReturnModelType<T> {\r\n return getModelForClass(type);\r\n }\r\n}\r\n\r\n// @ts-ignore\r\nexport type PrimitiveArray<T> = Types.Array<T>;\r\n\r\n// @ts-ignore\r\nexport const PrimitiveArray = Types.Array;\r\n\r\nexport type DocumentArray<T extends BaseDoc> = Types.DocumentArray<DocumentType<T>>;\r\n\r\nexport const DocumentArray = Types.DocumentArray;\r\n","import {IDependencyContainer, ITree} from \"../common-types\";\r\nimport {isString} from \"../utils\";\r\n\r\nexport class Tree implements ITree {\r\n\r\n protected map: Map<string, Tree>;\r\n\r\n protected get parentTree(): ITree {\r\n return this.container.parent.tree;\r\n }\r\n\r\n constructor(protected container: IDependencyContainer, protected exists: boolean, readonly path: string) {\r\n this.map = new Map<string, Tree>();\r\n }\r\n\r\n resolveService(): any {\r\n return !this.exists ? null : this.container.resolve(this.path);\r\n }\r\n\r\n resolveLeaves(): Map<string, ITree> {\r\n let map: Map<string, ITree>;\r\n try {\r\n const parentTree = this.parentTree.resolvePath(this.path);\r\n map = parentTree.resolveLeaves();\r\n } catch (e) {\r\n map = new Map<string, ITree>();\r\n }\r\n const visitor = (treeMap: Map<string, Tree>, path: string) => {\r\n treeMap.forEach((tree, key) => {\r\n const subKey = !path ? key : `${path}.${key}`;\r\n if (tree.map.size == 0) {\r\n map.set(subKey, tree);\r\n return;\r\n }\r\n visitor(tree.map, subKey);\r\n });\r\n };\r\n visitor(this.map, \"\");\r\n return map;\r\n }\r\n\r\n resolveServices(): Map<string, any> {\r\n const map = new Map<string, any>();\r\n this.resolveLeaves().forEach((leaf, key) => {\r\n map.set(key, leaf.resolveService());\r\n });\r\n return map;\r\n }\r\n\r\n resolveAncestor(path: string): ITree {\r\n if (!isString(path) || path.length == 0) {\r\n return this;\r\n }\r\n let parentTree: ITree;\r\n try {\r\n parentTree = this.parentTree.resolvePath(this.path);\r\n parentTree = parentTree.resolveAncestor(path);\r\n } catch (e) {\r\n parentTree = new Tree(this.container, false, \"\");\r\n }\r\n const pathParts = path.split(\".\");\r\n let tree: Tree = this;\r\n let previousTree: Tree = this;\r\n for (let part of pathParts) {\r\n tree = tree.map.get(part);\r\n if (!tree) {\r\n if (previousTree == this) {\r\n if (parentTree.path.length > 0) {\r\n return parentTree;\r\n }\r\n throw new Error(`Ancestor '${path}' not found in current tree: '${this.path}'`);\r\n }\r\n return previousTree;\r\n }\r\n previousTree = tree;\r\n }\r\n return parentTree.path.length > previousTree.path.length\r\n ? parentTree : previousTree;\r\n }\r\n\r\n resolvePath(path: string, throwError: boolean = true): ITree {\r\n const absolutePath = !this.path ? path : `${this.path}.${path}`;\r\n let tree: ITree = new Tree(this.container, false, absolutePath);\r\n try {\r\n tree = this.resolveAncestor(path);\r\n } catch (e) {\r\n if (throwError) {\r\n throw new Error(`Path '${path}' not found in current tree: '${this.path}'`);\r\n }\r\n return tree;\r\n }\r\n if (tree.path !== absolutePath) {\r\n if (throwError) {\r\n throw new Error(`Path '${path}' not found in current tree: '${this.path}'`);\r\n }\r\n return tree;\r\n }\r\n return tree;\r\n }\r\n\r\n addPath(path: string): this {\r\n if (!isString(path) || path.length == 0) {\r\n return this;\r\n }\r\n const pathParts = path.split(\".\");\r\n const maxIx = pathParts.length - 1;\r\n let tree: Tree = this;\r\n path = this.path;\r\n for (let ix = 0; ix <= maxIx; ix++) {\r\n const part = pathParts[ix];\r\n if (!tree.map.has(part)) {\r\n tree.map.set(part, new Tree(this.container, false, !path ? part : `${path}.${part}`))\r\n }\r\n tree = tree.map.get(part);\r\n tree.exists = tree.exists || ix == maxIx;\r\n path = tree.path;\r\n }\r\n return this;\r\n }\r\n}\r\n","import {\r\n ClassProvider,\r\n DependencyContainer,\r\n Frequency,\r\n InjectionToken,\r\n isFactoryProvider,\r\n RegistrationOptions,\r\n TokenProvider,\r\n ValueProvider\r\n} from \"tsyringe\";\r\nimport {FactoryProvider, IDependencyContainer, ITree, Type} from \"../common-types\";\r\nimport {Tree} from \"./tree\";\r\nimport {isString} from \"../utils\";\r\n\r\ninterface PreResolutionInterceptorCallback<T = any> {\r\n (token: InjectionToken<T>, resolutionType: \"Single\" | \"All\"): void;\r\n}\r\n\r\ninterface PostResolutionInterceptorCallback<T = any> {\r\n (token: InjectionToken<T>, result: T | T[], resolutionType: \"Single\" | \"All\"): void;\r\n}\r\n\r\nexport class DiContainer implements IDependencyContainer {\r\n\r\n get registeredTokens(): ReadonlyArray<InjectionToken> {\r\n return (this.parent?.registeredTokens || []).concat(this.tokens);\r\n }\r\n\r\n get tree(): ITree {\r\n return this.root;\r\n }\r\n\r\n protected tokens: Array<InjectionToken>;\r\n protected tokenSet: Set<InjectionToken>;\r\n protected root: Tree;\r\n\r\n constructor(protected container: DependencyContainer, readonly parent: IDependencyContainer = null) {\r\n container[\"wrapperContainer\"] = this;\r\n this.tokens = [];\r\n this.tokenSet = new Set<InjectionToken>();\r\n this.root = new Tree(this, false, \"\");\r\n }\r\n\r\n beforeResolution<T>(token: InjectionToken<T>, callback: PreResolutionInterceptorCallback<T>, options?: { frequency: Frequency }): void {\r\n this.container.beforeResolution(token, callback, options);\r\n }\r\n\r\n afterResolution<T>(token: InjectionToken<T>, callback: PostResolutionInterceptorCallback<T>, options?: { frequency: Frequency }): void {\r\n this.container.afterResolution(token, callback, options);\r\n }\r\n\r\n clearInstances(): void {\r\n this.container.clearInstances();\r\n }\r\n\r\n createChildContainer(): IDependencyContainer {\r\n return new DiContainer(this.container.createChildContainer(), this);\r\n }\r\n\r\n isRegistered<T>(token: InjectionToken<T>, recursive?: boolean): boolean {\r\n return this.container.isRegistered(token, recursive);\r\n }\r\n\r\n register<T>(token: InjectionToken<T>, provider: ValueProvider<T>): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: FactoryProvider<T>): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: TokenProvider<T>, options?: RegistrationOptions): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: ClassProvider<T>, options?: RegistrationOptions): IDependencyContainer;\r\n register<T>(token: InjectionToken<T>, provider: Type<T>, options?: RegistrationOptions): IDependencyContainer;\r\n register(token, provider, options?: RegistrationOptions): IDependencyContainer {\r\n if (isFactoryProvider(provider)) {\r\n this.container.register(token, {\r\n useFactory: dc => {\r\n return provider.useFactory(dc[\"wrapperContainer\"]);\r\n }\r\n });\r\n return this.addToken(token);\r\n }\r\n this.container.register(token, provider);\r\n return this.addToken(token);\r\n }\r\n\r\n registerInstance<T>(token: InjectionToken<T>, instance: T): IDependencyContainer {\r\n this.container.registerInstance(token, instance);\r\n return this.addToken(token);\r\n }\r\n\r\n registerSingleton<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer;\r\n registerSingleton<T>(token: Type<T>): IDependencyContainer;\r\n registerSingleton(from, to?): IDependencyContainer {\r\n this.container.registerSingleton(from, to);\r\n return this.addToken(from);\r\n }\r\n\r\n registerType<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer {\r\n this.container.registerType(from, to);\r\n return this.addToken(from);\r\n }\r\n\r\n reset(): void {\r\n this.tokens = [];\r\n this.tokenSet = new Set<InjectionToken>();\r\n this.container.reset();\r\n }\r\n\r\n resolve<T>(token: InjectionToken<T>): T {\r\n return this.container.resolve(token);\r\n }\r\n\r\n resolveAll<T>(token: InjectionToken<T>): T[] {\r\n return this.container.resolveAll(token);\r\n }\r\n\r\n get<T>(token: InjectionToken<T>): T {\r\n return this.container.resolve(token);\r\n }\r\n\r\n protected addToken<T>(token: InjectionToken<T>): this {\r\n if (this.tokenSet.has(token)) return this;\r\n this.tokenSet.add(token);\r\n this.tokens.push(token);\r\n if (isString(token)) {\r\n this.root.addPath(token);\r\n }\r\n return this;\r\n }\r\n}\r\n","import {IAsset, IJob, IMessageBridge, IProgress} from \"../common-types\";\r\nimport {Assets} from \"../services/assets\";\r\nimport {LazyAssets} from \"../services/lazy-assets\";\r\nimport {AssetResolver} from \"../services/asset-resolver\";\r\nimport {Progresses} from \"../services/progresses\";\r\n\r\nexport abstract class LazyAssetGenerator implements IJob {\r\n\r\n get assets(): Assets {\r\n return this.assetResolver.assets;\r\n }\r\n\r\n get lazyAssets(): LazyAssets {\r\n return this.assetResolver.lazyAssets;\r\n }\r\n\r\n protected constructor(protected assetResolver: AssetResolver, protected progresses: Progresses, protected lazyId: string) {\r\n }\r\n\r\n abstract generate(progress: IProgress, messaging?: IMessageBridge): Promise<IAsset>;\r\n\r\n async process(messaging: IMessageBridge): Promise<any> {\r\n const lazyAsset = await this.lazyAssets.read(this.lazyId);\r\n let progress = await this.progresses.get(lazyAsset.progressId);\r\n if (!progress || progress.canceled) return null;\r\n progress.setMessageBridge(messaging);\r\n try {\r\n const asset = await this.generate(progress, messaging);\r\n progress = await progress.load();\r\n if (!progress || progress.canceled) return null;\r\n await lazyAsset.writeAsset(asset);\r\n } catch (e) {\r\n await progress.setError(e.message || e);\r\n throw e;\r\n }\r\n if (progress.remaining > 0) {\r\n await progress.advance(progress.remaining);\r\n }\r\n }\r\n}\r\n","import {Document, FilterQuery, model, Model, PipelineStage, Query, Schema, Types} from \"mongoose\";\r\nimport {getValue as getMongoValue, setValue as setMongoValue} from \"mongoose/lib/utils\";\r\nimport {DocumentType, ReturnModelType} from \"@typegoose/typegoose\";\r\nimport {Action, BadRequestError, createParamDecorator, HttpError} from \"routing-controllers\";\r\nimport {InjectionToken} from \"tsyringe\";\r\nimport {\r\n IMatchField,\r\n InferGeneric,\r\n IPaginationBase,\r\n IPaginationParams,\r\n IProjectOptions,\r\n IRequest,\r\n IUnwindOptions,\r\n Type\r\n} from \"../common-types\";\r\nimport {diContainers, isArray, isFunction, isObject, isString, valueToPromise} from \"../utils\";\r\n\r\nconst pluginsKey = \"typegoose:plugins\";\r\n\r\ninterface IPluginWithOptions {\r\n mongoosePlugin: Function;\r\n options: any;\r\n}\r\n\r\n/**\r\n * A mongoose/typegoose plugin to inject services from the main di container to a schema as virtuals\r\n * @param schema\r\n * @param services\r\n */\r\nexport function injectServices(schema: Schema<any>, services?: { [prop: string]: InjectionToken<any> }): void {\r\n const serviceMap: { [prop: string]: any } = {};\r\n if (!isObject(services)) {\r\n throw new Error(`services object should be defined to inject services to schema!`)\r\n }\r\n Object.keys(services).forEach(prop => {\r\n schema\r\n .virtual(prop)\r\n .get(() => {\r\n const diContainer = diContainers.appContainer;\r\n serviceMap[prop] = serviceMap[prop] || (!diContainer ? {} : diContainer.resolve(services[prop]));\r\n return serviceMap[prop];\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Decorates a property to inject a service with the help of the injectServices mongoose/typegoose plugin\r\n * @param token optional InjectionToken to use\r\n * @return PropertyDecorator\r\n */\r\nexport function service(token?: InjectionToken<any>): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n const propertyType = Reflect.getOwnMetadata(\"design:type\", target, propertyKey);\r\n const plugins = Array.from(Reflect.getMetadata(pluginsKey, target.constructor) ?? []) as IPluginWithOptions[];\r\n let plugin = plugins.find(t => t.mongoosePlugin === injectServices);\r\n if (!plugin) {\r\n plugin = { mongoosePlugin: injectServices, options: {} };\r\n plugins.push(plugin);\r\n }\r\n plugin.options = Object.assign(plugin.options || {}, {[propertyKey]: token ?? propertyType});\r\n Reflect.defineMetadata(pluginsKey, plugins, target.constructor);\r\n };\r\n}\r\n\r\n/**\r\n * Paginate using a typegoose model using a simple where query and pagination params\r\n * @param model Typegoose model\r\n * @param where Simple query to filter the results\r\n * @param params Pagination params\r\n */\r\nexport function paginate<T extends Type<any>, U = InferGeneric<T>>(model: ReturnModelType<T>, where: FilterQuery<DocumentType<U>>, params: IPaginationParams): Promise<IPaginationBase<DocumentType<U>>> {\r\n return model.countDocuments(where).then(count => {\r\n let query: Query<any, any> = model.find(where);\r\n if (isString(params.sort)) {\r\n query = query.sort(params.sort);\r\n }\r\n if (isArray(params.populate)) {\r\n params.populate.forEach(field => {\r\n query = query.populate(field);\r\n });\r\n }\r\n return (params.limit > 0 ? query.skip(params.page * params.limit).limit(params.limit) : query).then(items => {\r\n const meta = {total: count};\r\n return {count, items, meta};\r\n });\r\n });\r\n}\r\n\r\nexport function lookupStages(from: string, localField: string, as: string = null, foreignField: string = \"_id\", shouldUnwind: boolean = true): [PipelineStage.Lookup, PipelineStage.Unwind] {\r\n as = as || localField.replace(\"Id\", \"\");\r\n const stages: [PipelineStage.Lookup, PipelineStage.Unwind] = [\r\n {\r\n $lookup: {\r\n from,\r\n localField,\r\n foreignField,\r\n as\r\n }\r\n },\r\n {\r\n $unwind: {\r\n path: `$${as}`,\r\n preserveNullAndEmptyArrays: true\r\n }\r\n }\r\n ];\r\n if (!shouldUnwind) {\r\n stages.splice(1, 1);\r\n }\r\n return stages;\r\n}\r\n\r\nexport function letsLookupStage(from: string, pipeline: Exclude<PipelineStage, PipelineStage.Merge | PipelineStage.Out | PipelineStage.Search>[], as: string = null, letFields: any = null): PipelineStage.Lookup {\r\n as = as || from;\r\n letFields = letFields || {id: \"$_id\"};\r\n return {\r\n $lookup: {\r\n from,\r\n let: letFields,\r\n pipeline,\r\n as\r\n }\r\n };\r\n}\r\n\r\nexport function matchStage(match: FilterQuery<any>): PipelineStage.Match {\r\n return {$match: match};\r\n}\r\n\r\nexport function matchField(field: string, filter: any, when: boolean): IMatchField {\r\n return {field, filter, when};\r\n}\r\n\r\nexport function matchFieldStages(...fields: IMatchField[]): ReadonlyArray<PipelineStage.Match> {\r\n const match = {};\r\n fields.forEach(field => {\r\n if (field.when) {\r\n match[field.field] = field.filter;\r\n }\r\n });\r\n return Object.keys(match).length > 0 ? [matchStage(match)] : [];\r\n}\r\n\r\nexport function projectStage(fields: IProjectOptions): PipelineStage.Project {\r\n return {$project: fields};\r\n}\r\n\r\nexport function unwindStage(fieldOrOpts: string | IUnwindOptions): PipelineStage.Unwind {\r\n return {$unwind: fieldOrOpts};\r\n}\r\n\r\nexport function hydratePopulated<T extends Document>(modelType: Model<T>, json: any): T {\r\n let object = modelType.hydrate(json);\r\n\r\n for (const [path, obj] of Object.entries(modelType.schema.obj)) {\r\n let {ref, type} = obj as any;\r\n if (Array.isArray(type) && type.length > 0) {\r\n ref = type[0].ref;\r\n }\r\n if (!ref) continue;\r\n const value = getMongoValue(path, json);\r\n const hydrateVal = val => {\r\n if (val == null || val instanceof Types.ObjectId) return val;\r\n return hydratePopulated(model(ref) as any, val);\r\n };\r\n if (Array.isArray(value)) {\r\n setMongoValue(path, value.map(hydrateVal), object);\r\n continue;\r\n }\r\n setMongoValue(path, hydrateVal(value), object);\r\n }\r\n\r\n return object;\r\n\r\n}\r\n\r\nexport async function paginateAggregations<T extends Type<any>, U = InferGeneric<T>>(model: ReturnModelType<T>, aggregations: PipelineStage[], params: IPaginationParams, metaProjection: any = {}): Promise<IPaginationBase<DocumentType<U>>> {\r\n const sortField = !isString(params.sort) || !params.sort ? null : (params.sort.startsWith(\"-\") ? params.sort.substr(1) : params.sort);\r\n const sortAggregation: PipelineStage.Sort[] = !sortField ? [] : [{\r\n $sort: {[sortField]: sortField == params.sort ? 1 : -1}\r\n }];\r\n const result = await model.aggregate([\r\n ...aggregations,\r\n ...sortAggregation,\r\n {\r\n $group: {\r\n _id: \"results\",\r\n result: {$push: \"$$CURRENT\"}\r\n }\r\n },\r\n {\r\n $project: {\r\n _id: 0,\r\n items: params.limit > 0 ? {$slice: [\"$result\", params.page * params.limit, params.limit]} : \"$result\",\r\n count: {$size: \"$result\"},\r\n meta: {\r\n total: {$size: \"$result\"},\r\n ...metaProjection\r\n }\r\n }\r\n }\r\n ]);\r\n const pagination = result[0] as IPaginationBase<DocumentType<U>>;\r\n if (!pagination) {\r\n return {items: [], count: 0, meta: {total: 0}};\r\n }\r\n pagination.items = pagination.items.map(i => hydratePopulated(model, i) as any);\r\n return pagination;\r\n}\r\n\r\nexport function ResolveEntity<T extends Type<any>, U = InferGeneric<T>>(model: ReturnModelType<T>, extraCheck?: (query: Query<DocumentType<U>, any>, action: Action) => Promise<DocumentType<U>>): ParameterDecorator {\r\n const modelName = model.modelName;\r\n const paramName = modelName.toLowerCase();\r\n return createParamDecorator({\r\n required: false,\r\n value: async action => {\r\n const req = action.request as IRequest;\r\n const token = req.header(`x-${paramName}-token`);\r\n const id = req.params[`${paramName}Id`] as string;\r\n if (!id && !token) {\r\n throw new BadRequestError(`${modelName} id or token should be defined!`);\r\n }\r\n const query = !token\r\n ? model.findById(id)\r\n : model.findOne({token} as any);\r\n let doc: Document = null;\r\n if (isFunction(extraCheck)) {\r\n try {\r\n doc = await valueToPromise(extraCheck(query, action));\r\n } catch (e) {\r\n throw new BadRequestError(`${modelName} check error: ${e.message || e}`);\r\n }\r\n } else {\r\n doc = await query;\r\n }\r\n if (!doc) {\r\n throw new HttpError(404, !token\r\n ? `${modelName} could not be found with id: ${id}`\r\n : `${modelName} could not be found with token: ${token}`);\r\n }\r\n action.request[paramName] = doc;\r\n return doc;\r\n }\r\n });\r\n}\r\n","import {join} from \"path\";\r\nimport {json} from \"body-parser\";\r\nimport {verify} from \"jsonwebtoken\";\r\nimport {container, DependencyContainer} from \"tsyringe\";\r\nimport {Action, HttpError, useContainer as useRoutingContainer, useExpressServer} from \"routing-controllers\";\r\nimport {useContainer as useSocketContainer, useSocketServer} from \"socket-controllers\";\r\n\r\nimport {getApiDocs} from \"./rest-openapi\";\r\n\r\nimport {\r\n DI_CONTAINER,\r\n EXPRESS,\r\n FIXTURE,\r\n HTTP_SERVER,\r\n IBackendConfig,\r\n IDependencyContainer,\r\n IPaginationParams,\r\n IRequest,\r\n IUser,\r\n JOB,\r\n Parameter,\r\n PARAMETER,\r\n Provider,\r\n SOCKET_SERVER,\r\n Type\r\n} from \"./common-types\";\r\n\r\nimport {AssetProcessor} from \"./services/asset-processor\";\r\nimport {AssetResolver} from \"./services/asset-resolver\";\r\nimport {Assets} from \"./services/assets\";\r\nimport {BackendProvider} from \"./services/backend-provider\";\r\nimport {Cache} from \"./services/cache\";\r\nimport {CacheProcessor} from \"./services/cache-processor\";\r\nimport {Configuration} from \"./services/configuration\";\r\nimport {EndpointProvider} from \"./services/endpoint-provider\";\r\nimport {Fixtures} from \"./services/fixtures\";\r\nimport {Gallery} from \"./services/gallery\";\r\nimport {GalleryCache} from \"./services/gallery-cache\";\r\nimport {IdGenerator} from \"./services/id-generator\";\r\nimport {JobManager} from \"./services/job-manager\";\r\nimport {LazyAssets} from \"./services/lazy-assets\";\r\nimport {MailSender} from \"./services/mail-sender\";\r\nimport {MemoryCache} from \"./services/memory-cache\";\r\nimport {MongoConnector} from \"./services/mongo-connector\";\r\nimport {Progresses} from \"./services/progresses\";\r\nimport {TemplateRenderer} from \"./services/template-renderer\";\r\nimport {TranslationProvider} from \"./services/translation-provider\";\r\nimport {Translator} from \"./services/translator\";\r\nimport {UserManager} from \"./services/user-manager\";\r\n\r\nimport {AssetsController} from \"./rest-controllers/assets.controller\";\r\nimport {AuthController} from \"./rest-controllers/auth.controller\";\r\nimport {GalleryController} from \"./rest-controllers/gallery.controller\";\r\nimport {ProgressesController} from \"./rest-controllers/progresses.controller\";\r\n\r\nimport {ErrorHandlerMiddleware} from \"./rest-middlewares/error-handler.middleware\";\r\nimport {ContainerMiddleware} from \"./rest-middlewares/container.middleware\";\r\nimport {LanguageMiddleware} from \"./rest-middlewares/language.middleware\";\r\nimport {RequestEndedMiddleware} from \"./rest-middlewares/request-ended.middleware\";\r\nimport {RequestStartedMiddleware} from \"./rest-middlewares/request-started.middleware\";\r\n\r\nimport {ProgressController} from \"./socket-controllers/progress.controller\";\r\n\r\nimport {CompressionMiddleware} from \"./socket-middlewares/compression.middleware\";\r\nimport {diContainers, isFunction, isString, isType, valueToPromise} from \"./utils\";\r\nimport {setupStatic} from \"./static\";\r\n\r\nexport {\r\n FilterPredicate,\r\n isNullOrUndefined,\r\n isDefined,\r\n getType,\r\n isObject,\r\n isArray,\r\n isBoolean,\r\n isDate,\r\n isPrimitive,\r\n isString,\r\n isFunction,\r\n isConstructor,\r\n isType,\r\n isInterface,\r\n ucFirst,\r\n lcFirst,\r\n isObjectId,\r\n firstItem,\r\n lastItem,\r\n regroup,\r\n uniqueItems,\r\n getValue,\r\n groupBy,\r\n convertValue,\r\n toImage,\r\n bufferToStream,\r\n streamToBuffer,\r\n copyStream,\r\n mkdirRecursive,\r\n deleteFile,\r\n readFile,\r\n readAndDeleteFile,\r\n writeFile,\r\n valueToPromise,\r\n promiseTimeout,\r\n getConstructorName,\r\n getFunctionParams,\r\n getFileName,\r\n getExtension,\r\n idToString,\r\n createTransformer,\r\n broadcast,\r\n rand,\r\n random,\r\n multiSubscription,\r\n observableFromFunction,\r\n padLeft,\r\n padRight,\r\n deleteFromBucket,\r\n filter,\r\n copy,\r\n assign,\r\n md5,\r\n runCommand,\r\n ConsoleColor,\r\n IJsonColors,\r\n colorize,\r\n jsonHighlight,\r\n replaceSpecialChars\r\n} from \"./utils\";\r\n\r\nexport {IsFile, IsObjectId} from \"./validators\";\r\n\r\nexport {\r\n FIXTURE,\r\n JOB,\r\n EXPRESS,\r\n HTTP_SERVER,\r\n SOCKET_SERVER,\r\n PARAMETER,\r\n DI_CONTAINER,\r\n Type,\r\n FactoryProvider,\r\n IDependencyContainer,\r\n ClassBasedProvider,\r\n ValueBasedProvider,\r\n FactoryBasedProvider,\r\n TokenBasedProvider,\r\n SyringeProvider,\r\n Provider,\r\n Constructor,\r\n InferGeneric,\r\n PickMatching,\r\n OmitFirstArg,\r\n IMatchField,\r\n IProjectOptions,\r\n IUnwindOptions,\r\n IFixture,\r\n SchemaConverter,\r\n ParamResolver,\r\n Parameter,\r\n SocketParam,\r\n SocketParams,\r\n ISocketMessage,\r\n IMessageBridge,\r\n IJob,\r\n IJobTask,\r\n JobParams,\r\n JobScheduleRange,\r\n JobScheduleTime,\r\n IProgress,\r\n IAssetCropInfo,\r\n IAssetMeta,\r\n IAssetImageParams,\r\n IAsset,\r\n ILazyAsset,\r\n IUser,\r\n IClientSocket,\r\n IRequestBase,\r\n IRequest,\r\n IGalleryImage,\r\n IGallerySize,\r\n IGalleryImageHandler,\r\n ITranslations,\r\n IPaginationMeta,\r\n IPaginationBase,\r\n IPagination,\r\n IPaginationParams,\r\n FontFormat,\r\n IFileType,\r\n IBackendConfig\r\n} from \"./common-types\";\r\n\r\nexport {AssetProcessor} from \"./services/asset-processor\";\r\nexport {AssetResolver} from \"./services/asset-resolver\";\r\nexport {Assets} from \"./services/assets\";\r\nexport {BackendProvider} from \"./services/backend-provider\";\r\nexport {Cache} from \"./services/cache\";\r\nexport {CacheProcessor} from \"./services/cache-processor\";\r\nexport {Configuration} from \"./services/configuration\";\r\nexport {EndpointProvider} from \"./services/endpoint-provider\";\r\nexport {Fixtures} from \"./services/fixtures\";\r\nexport {Gallery} from \"./services/gallery\";\r\nexport {GalleryCache} from \"./services/gallery-cache\";\r\nexport {IdGenerator} from \"./services/id-generator\";\r\nexport {JobManager} from \"./services/job-manager\";\r\nexport {LazyAssets} from \"./services/lazy-assets\";\r\nexport {MailSender} from \"./services/mail-sender\";\r\nexport {MemoryCache} from \"./services/memory-cache\";\r\nexport {MongoConnector} from \"./services/mongo-connector\";\r\nexport {Progresses} from \"./services/progresses\";\r\nexport {TemplateRenderer} from \"./services/template-renderer\";\r\nexport {TranslationProvider} from \"./services/translation-provider\";\r\nexport {Translator} from \"./services/translator\";\r\nexport {UserManager} from \"./services/user-manager\";\r\n\r\nexport {AssetImageParams} from \"./requests/asset-image-params\";\r\n\r\nexport {AuthController} from \"./rest-controllers/auth.controller\";\r\nexport {GalleryController} from \"./rest-controllers/gallery.controller\";\r\n\r\nexport {ErrorHandlerMiddleware} from \"./rest-middlewares/error-handler.middleware\";\r\nexport {LanguageMiddleware} from \"./rest-middlewares/language.middleware\";\r\n\r\nexport {BaseDoc, DocumentArray, PrimitiveArray} from \"./utilities/base-doc\";\r\nimport {DiContainer} from \"./utilities/di-container\";\r\nexport {LazyAssetGenerator} from \"./utilities/lazy-asset-generator\";\r\nexport {\r\n ResolveEntity,\r\n paginateAggregations,\r\n hydratePopulated,\r\n unwindStage,\r\n projectStage,\r\n matchFieldStages,\r\n matchField,\r\n matchStage,\r\n letsLookupStage,\r\n lookupStages,\r\n paginate,\r\n injectServices,\r\n service\r\n} from \"./utilities/mongoose\";\r\n\r\nasync function resolveUser(container: DependencyContainer, req: IRequest): Promise<IUser> {\r\n if (req.user) return req.user;\r\n const auth = req.header(\"Authorization\") || \"\";\r\n let payload = null;\r\n try {\r\n const config = container.resolve(Configuration);\r\n payload = verify(auth.split(\" \")[1], config.resolve(\"jwtSecret\")) as any;\r\n } catch (e) {\r\n throw new HttpError(401, `Authentication failed. (${e.message})`);\r\n }\r\n if (!payload) {\r\n throw new HttpError(401, `Authentication failed. (Maybe invalid token)`);\r\n }\r\n req.user = await container.resolve(UserManager).getById(payload.id);\r\n return req.user;\r\n}\r\n\r\nexport function createServices(): IDependencyContainer {\r\n // List of parameters\r\n const params = [\r\n new Parameter(\"templatesDir\", join(__dirname, \"templates\")),\r\n new Parameter(\"galleryDir\", join(__dirname, \"gallery\")),\r\n new Parameter(\"cacheDir\", join(__dirname, \"cache\")),\r\n new Parameter(\"defaultLanguage\", \"en\"),\r\n new Parameter(\"smtpHost\", \"smtp.sendgrid.net\"),\r\n new Parameter(\"smtpPort\", 587),\r\n new Parameter(\"smtpUser\", \"apikey\"),\r\n new Parameter(\"smtpPassword\", \"\"),\r\n new Parameter(\"mailSenderAddress\", \"info@stemy.hu\"),\r\n new Parameter(\"translationsTemplate\", \"https://translation.service/[lang]\"),\r\n new Parameter(\"jwtSecret\", \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9\"),\r\n new Parameter(\"mongoUri\", \"\"),\r\n new Parameter(\"mongoDb\", \"node-backend\"),\r\n new Parameter(\"mongoUser\", null),\r\n new Parameter(\"mongoPassword\", null),\r\n new Parameter(\"nodeEnv\", \"production\"),\r\n new Parameter(\"appPort\", 80),\r\n new Parameter(\"zmqPort\", 3000),\r\n new Parameter(\"zmqBackPort\", 3100),\r\n new Parameter(\"zmqRemoteHost\", \"tcp://127.0.0.1\"),\r\n new Parameter(\"isWorker\", false),\r\n new Parameter(\"mainEndpoint\", \"\"),\r\n new Parameter(\"idChars\", \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\"),\r\n new Parameter(\"idSeparator\", \"-\"),\r\n new Parameter(\"idPrefix\", \"ID-\"),\r\n new Parameter(\"idParts\", [4, 4]),\r\n new Parameter(\"jsonLimit\", \"250mb\"),\r\n new Parameter(\"jobTimeout\", 5 * 60 * 1000),\r\n new Parameter(\"cacheCollection\", \"cache\"),\r\n ];\r\n\r\n // Convert parameters to providers\r\n const paramProviders = params.map(p => {\r\n return {\r\n provide: PARAMETER,\r\n useValue: p\r\n }\r\n });\r\n\r\n // List of services\r\n const services = [\r\n AssetProcessor,\r\n AssetResolver,\r\n Assets,\r\n BackendProvider,\r\n Cache,\r\n CacheProcessor,\r\n Configuration,\r\n EndpointProvider,\r\n Fixtures,\r\n Gallery,\r\n GalleryCache,\r\n IdGenerator,\r\n JobManager,\r\n LazyAssets,\r\n MailSender,\r\n MemoryCache,\r\n MongoConnector,\r\n Progresses,\r\n TemplateRenderer,\r\n TranslationProvider,\r\n Translator,\r\n UserManager\r\n ] as Type<any>[];\r\n\r\n // Create container\r\n const diContainer = new DiContainer(container.createChildContainer());\r\n paramProviders.forEach(provider => {\r\n diContainer.register(provider.provide, provider);\r\n });\r\n services.forEach(service => {\r\n if (!container.isRegistered(service))\r\n diContainer.register(service, service);\r\n });\r\n return diContainer;\r\n}\r\n\r\nexport async function setupBackend(config: IBackendConfig, providers?: Provider<any>[], parent?: IDependencyContainer): Promise<IDependencyContainer> {\r\n\r\n providers = Array.isArray(providers) ? providers : [];\r\n parent = parent || createServices();\r\n\r\n // Create fixtures\r\n const fixtureTypes = (config.fixtures || []);\r\n const fixtureProviders = fixtureTypes.map(fixture => {\r\n return {\r\n provide: FIXTURE,\r\n useClass: fixture\r\n };\r\n });\r\n\r\n // Create params\r\n const paramProviders = (config.params || []).map(p => {\r\n return {\r\n provide: PARAMETER,\r\n useValue: p\r\n }\r\n });\r\n\r\n // Create jobs\r\n const jobProviders = (config.jobs || []).map(jobType => {\r\n return {\r\n provide: JOB,\r\n useValue: jobType\r\n };\r\n });\r\n\r\n // Setup rest API\r\n const restOptions = config.restOptions || {};\r\n restOptions.defaultErrorHandler = false;\r\n restOptions.cors = Object.assign({\r\n credentials: true,\r\n exposedHeaders: [\"content-disposition\"],\r\n origin: (origin, callback) => {\r\n callback(null, true);\r\n }\r\n }, restOptions.cors || {});\r\n restOptions.routePrefix = config.routePrefix || \"/api\";\r\n restOptions.routePrefix = restOptions.routePrefix == \"/\" ? \"\" : restOptions.routePrefix;\r\n restOptions.middlewares = [ErrorHandlerMiddleware, ContainerMiddleware, LanguageMiddleware, RequestStartedMiddleware, RequestEndedMiddleware]\r\n .concat(restOptions.middlewares as any || []);\r\n restOptions.controllers = [AssetsController, AuthController, GalleryController, ProgressesController]\r\n .concat(restOptions.controllers as any || []);\r\n\r\n // Setup socket API\r\n const socketOptions = config.socketOptions || {};\r\n socketOptions.middlewares = [CompressionMiddleware].concat(socketOptions.middlewares as any || []);\r\n socketOptions.controllers = [ProgressController].concat(socketOptions.controllers as any || []);\r\n\r\n // Create providers\r\n\r\n const allProviders: Provider<any>[] = [];\r\n\r\n // Add multi tokens to sub container\r\n [PARAMETER].forEach(provide => {\r\n const values = parent.resolveAll(provide);\r\n values.forEach(useValue => {\r\n allProviders.push({provide, useValue});\r\n });\r\n });\r\n\r\n // Add other providers\r\n allProviders.push(\r\n ...fixtureTypes,\r\n ...fixtureProviders,\r\n ...paramProviders,\r\n ...jobProviders,\r\n ...restOptions.middlewares as Type<any>[],\r\n ...restOptions.controllers as Type<any>[],\r\n ...socketOptions.middlewares as Type<any>[],\r\n ...socketOptions.controllers as Type<any>[],\r\n ...providers,\r\n {\r\n provide: EXPRESS,\r\n useFactory: (container: DependencyContainer) => {\r\n return container.resolve(BackendProvider).express;\r\n }\r\n },\r\n {\r\n provide: HTTP_SERVER,\r\n useFactory: (container: DependencyContainer) => {\r\n return container.resolve(BackendProvider).server;\r\n }\r\n },\r\n {\r\n provide: SOCKET_SERVER,\r\n useFactory: (container: DependencyContainer) => {\r\n return container.resolve(BackendProvider).io;\r\n }\r\n }\r\n )\r\n\r\n // Create DI container\r\n\r\n const diContainer = parent.createChildContainer();\r\n\r\n allProviders.forEach(provider => {\r\n if (isType(provider)) {\r\n if (container.isRegistered(provider)) return;\r\n diContainer.register(provider, provider);\r\n return;\r\n }\r\n diContainer.register(provider.provide, provider as any);\r\n });\r\n\r\n diContainer.register(DI_CONTAINER, {\r\n useValue: diContainer\r\n });\r\n\r\n diContainers.appContainer = diContainers.appContainer || diContainer;\r\n\r\n // Authentication\r\n restOptions.authorizationChecker = async (action: Action, roles: any[]) => {\r\n const user = await resolveUser(diContainer, action.request);\r\n if (!user) {\r\n throw new HttpError(401, \"Authentication failed. (User can't be found.)\");\r\n }\r\n const userRoles = Array.isArray(user.roles) ? user.roles : [];\r\n if (Array.isArray(roles) && roles.length > 0) {\r\n let lastError = null;\r\n for (let role of roles) {\r\n if (isFunction(role)) {\r\n try {\r\n if (await valueToPromise(role(user, action))) {\r\n return true;\r\n }\r\n } catch (e) {\r\n lastError = e;\r\n }\r\n }\r\n if (userRoles.indexOf(role) >= 0) return true;\r\n }\r\n const error = !lastError || (!lastError.message && !isString(lastError))\r\n ? \"User doesn't have access to this resource\"\r\n : lastError.message || lastError;\r\n throw new HttpError(401, `Authentication failed. (${error})`);\r\n }\r\n return true;\r\n };\r\n restOptions.currentUserChecker = async (action: Action) => {\r\n return resolveUser(diContainer, action.request);\r\n };\r\n\r\n // Final setup\r\n const configuration = diContainer.resolve(Configuration);\r\n const bp = diContainer.resolve(BackendProvider);\r\n\r\n if (config.restOptions) {\r\n bp.express.use(json({\r\n limit: configuration.hasParam(\"jsonLimit\")\r\n ? configuration.resolve(\"jsonLimit\")\r\n : \"250mb\"\r\n }));\r\n useRoutingContainer(diContainer);\r\n useExpressServer(bp.express, restOptions);\r\n // Setup rest ai docs\r\n bp.express.get(\"/api-docs\", (req, res) => {\r\n res.status(200).end(getApiDocs(config.customValidation));\r\n });\r\n }\r\n if (config.socketOptions) {\r\n useSocketContainer(diContainer);\r\n useSocketServer(bp.io, socketOptions);\r\n }\r\n\r\n // Connect to mongo if necessary\r\n if (configuration.hasParam(\"mongoUri\") && configuration.resolve(\"mongoUri\")) {\r\n console.log(\"Connecting to MongoDB...\");\r\n const connector = diContainer.resolve(MongoConnector);\r\n await connector.connect();\r\n console.log(\"Successfully connected to MongoDB.\");\r\n }\r\n\r\n await setupStatic(config.rootFolder, diContainer);\r\n\r\n return diContainer;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["__decorate","__param","__metadata","__awaiter","sharp","sharp_","Readable","PassThrough","mkdir","unlink","fsReadFile","path","dirname","fsWriteFile","basename","ObjectId","Types","Subscription","Observable","Subject","from","canReportError","createHash","execChildProcess","ConsoleColor","IsFile","ValidatorConstraint","IsObjectId","storage","getMetadataArgsStorage","routingControllersToSpec","validationMetadatasToSchemas","defaultMetadataStorage","ValidationTypes","fontKit_","AssetProcessor","fromBuffer","injectable","scoped","Lifecycle","Configuration","dotenv","injectAll","MongoConnector","connect","GridFSBucket","singleton","Assets","axios","JobManager","filter","map","validate","schedule","socket","inject","Progresses","LazyAssets","AssetResolver","express_","socket_io","BackendProvider","createServer","CacheProcessor","Cache","EndpointProvider","Fixtures","uuidv4","GalleryCache","Gallery","join","lstat","readdir","readFile","writeFile","access","constants","IdGenerator","TranslationProvider","Translator","TemplateRenderer","Handlebars","lstatSync","readFileSync","MailSender","createTransport","MemoryCache","UserManager","Min","Max","IsOptional","IsBoolean","HttpError","Authorized","Post","UploadedFile","Body","Get","Param","QueryParam","Res","QueryParams","Controller","AuthController","compare","UnauthorizedError","sign","CurrentUser","GalleryController","ErrorHandlerMiddleware","BadRequestError","Middleware","LanguageMiddleware","moment","OnMessage","ConnectedSocket","MessageBody","SocketController","resolve","existsSync","serveStatic","getModelForClass","isFactoryProvider","getMongoValue","model","setMongoValue","createParamDecorator","verify","container","json","useRoutingContainer","useExpressServer","useSocketContainer","useSocketServer"],"mappings":"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"}
|