@realsee/live 0.5.2-dev.5 → 0.5.2-dev.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/realsee-live.cjs.development.js +23 -3
- package/dist/realsee-live.cjs.development.js.map +1 -1
- package/dist/realsee-live.cjs.production.js +1 -1
- package/dist/realsee-live.cjs.production.js.map +1 -1
- package/dist/realsee-live.esm.js +23 -3
- package/dist/realsee-live.esm.js.map +1 -1
- package/dist/realsee-live.umd.development.js +23 -3
- package/dist/realsee-live.umd.development.js.map +1 -1
- package/dist/realsee-live.umd.production.js +1 -1
- package/dist/realsee-live.umd.production.js.map +1 -1
- package/dist/rtc/BrowserRTC.d.ts +4 -0
- package/dist/typings/live/LiveOptions.d.ts +8 -0
- package/docs/assets/search.js +1 -1
- package/docs/classes/BrowserRTC.html +7 -7
- package/docs/interfaces/LiveOptions.html +10 -8
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realsee-live.esm.js","sources":["../src/utils/subscribe.ts","../src/rtc/CoreRTC.ts","../../../node_modules/.pnpm/tslib@2.4.1/node_modules/tslib/tslib.es6.js","../src/typings/rtc/type.ts","../src/utils/logger.ts","../src/utils/uuid.ts","../src/rtc/BrowserRTC.ts","../src/rtc/BrowserRTC4Chime.ts","../src/typings/rtc/joinedInfo.ts","../src/rtc/VRWebViewRTC.ts","../src/typings/live/LiveMsg.ts","../src/typings/live/LiveState.ts","../src/typings/live/UserInfo.ts","../src/typings/live/WebSocket.ts","../../jsbridge-x/src/utils/registerGlobalValue.ts","../../jsbridge-x/src/controllers/BaseController.ts","../../jsbridge-x/src/controllers/WebViewController.ts","../../jsbridge-x/src/controllers/WKWebViewController.ts","../../jsbridge-x/src/utils/uuid.ts","../../jsbridge-x/src/miniprogram/typings/WeappBridgeMessage.ts","../../jsbridge-x/src/utils/defaultWsEndpoint.ts","../../jsbridge-x/src/utils/generateWssUrl.ts","../../jsbridge-x/src/utils/isValidKey.ts","../../jsbridge-x/src/utils/parseQuery.ts","../../jsbridge-x/src/utils/Subscribe.ts","../../jsbridge-x/src/miniprogram/hybridBridge/RobustWebSocket.ts","../../jsbridge-x/src/miniprogram/hybridBridge/index.ts","../../jsbridge-x/src/controllers/WxMiniprogramController.ts","../../jsbridge-x/src/typings/WebViewTypeEnum.ts","../../jsbridge-x/src/core/JSBridgeCore.ts","../../jsbridge-x/src/utils/clientDetector.ts","../../jsbridge-x/src/app/index.ts","../../jsbridge-x/src/typings/OpenWebViewEnum.ts","../../jsbridge-x/src/browser/index.ts","../../jsbridge-x/src/miniprogram/index.ts","../../jsbridge-x/src/index.ts","../../../node_modules/.pnpm/amazon-chime-sdk-js@2.31.0/node_modules/amazon-chime-sdk-js/src/logger/LogLevel.ts","../src/utils/appendUri.ts","../src/utils/clientDetector.ts","../src/utils/equal.ts","../src/utils/RobustWebSocket.ts","../src/live/controller.ts","../src/live/live.ts","../src/live/createLive.ts","../src/live/createLiveReact.tsx"],"sourcesContent":["const EVENT_SYMBOL: unique symbol = Symbol('$$REALSEE_LIVE_EVENT$$');\n\nexport type EventMap = {\n [name: string]: (...args: any[]) => void | boolean;\n};\n\nfunction __generateEventIfNotExisted<T extends EventMap>(\n instance: any,\n): {\n [Key in keyof T]: [\n callback: (...args: Parameters<T[Key]>) => ReturnType<T[Key]>,\n once: boolean,\n ][];\n} {\n if (!instance[EVENT_SYMBOL]) {\n instance[EVENT_SYMBOL] = {};\n }\n return instance[EVENT_SYMBOL];\n}\n\nfunction __removeEventIfNotExisted(instance: any) {\n if (!instance[EVENT_SYMBOL]) {\n delete instance[EVENT_SYMBOL];\n }\n}\n\n/**\n * 监听者模式\n * @template T 预设的监听回调类型\n * @example\n * ```\n * new Subscribe<{\n * \"foo\": [arg1: number, arg2: string],\n * \"bar\": [arg: boolean],\n * }>()\n * ```\n */\nexport class Subscribe<T extends EventMap> {\n /**\n * 判断是否注册了事件\n * @param name 事件类型\n */\n hasListener(name: keyof T): boolean {\n const events = __generateEventIfNotExisted<T>(this);\n return events && events[name] && events[name].length > 0;\n }\n\n /**\n * 注册事件\n * @param name 事件类型\n * @param callback 事件回调函数\n * @param once 是否只执行一次\n * @returns 解除事件\n * @template K 预设的监听事件名称\n * @template C 回调函数函数上下文\n */\n on<K extends keyof T>(\n name: K,\n callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n once?: boolean,\n ): () => void {\n const events = __generateEventIfNotExisted<T>(this);\n if (!events[name]) events[name] = [];\n events[name].push([callback as any, once || false]);\n return () => this.off(name, callback);\n }\n\n /**\n * 注册事件(是否只执行一次)\n * @param name 事件类型\n * @param callback 事件回调函数\n * @returns 解除事件\n * @template K 预设的监听事件名称\n * @template C 回调函数函数上下文\n */\n once<K extends keyof T>(\n name: K,\n callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n ): () => void {\n return this.on(name, callback, true);\n }\n\n /**\n * 解除事件\n *\n * 如果 name 不传的话解除对应所有事件\n * 如果 name, callback 不传的话解除所有name的所有事件\n * @param name 事件类型\n * @param callback 事件回调函数\n * @template K 预设的监听事件名称\n */\n off<K extends keyof T>(\n name?: K,\n callback?: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n ): void {\n if (name === undefined) {\n __removeEventIfNotExisted(this);\n return;\n }\n const events = __generateEventIfNotExisted<T>(this);\n if (!events[name]) events[name] = [];\n if (callback === undefined) {\n events[name].length = 0;\n return;\n }\n let index = 0;\n for (; index < events[name].length; index++) {\n if (events[name][index][0] === callback) break;\n }\n if (index < events[name].length) {\n events[name].splice(index, 1);\n }\n }\n\n /**\n * 触发事件\n * @param name 事件类型\n * @param data 触发事件的数据\n * @returns canceled 是否被触发取消\n * @template K 预设的监听事件名称\n */\n emit<K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean {\n let canceled = false;\n const events = __generateEventIfNotExisted<T>(this);\n const event = events[name] || [];\n for (let one of event.slice()) {\n const [callback, once = false] = one;\n const result = callback(...data);\n if (once) this.off(name, callback);\n if (result === false) canceled = true;\n }\n return canceled;\n }\n}\n\nexport namespace SubscribeMixinType {\n export interface hasListener<T extends EventMap> {\n (name: keyof T): boolean;\n }\n export interface on<T extends EventMap> {\n <K extends keyof T>(\n name: K,\n callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n once?: boolean,\n ): () => void;\n }\n export interface once<T extends EventMap> {\n <K extends keyof T>(\n name: K,\n callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n ): () => void;\n }\n export interface off<T extends EventMap> {\n <K extends keyof T>(\n names?: K | K[],\n callback?: (...args: any[]) => any,\n ): void;\n }\n export interface emit<T extends EventMap> {\n <K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean;\n }\n}\n","import { RTCEventType } from '../typings/rtc/eventType';\nimport { RTCProtocol } from '../typings/rtc/protocol';\nimport { RTCType } from '../typings/rtc/type';\nimport { Subscribe } from '../utils/subscribe';\n\n/**\n * rtc 基础抽象类\n */\nexport abstract class CoreRTC\n extends Subscribe<RTCEventType>\n implements RTCProtocol\n{\n abstract joined: boolean;\n\n abstract micro: boolean;\n\n abstract voiceId: string;\n\n abstract type: RTCType;\n\n abstract join(options: {\n voiceId: string;\n userId: string;\n roomId: string | number | undefined;\n type: RTCType;\n }): Promise<boolean>;\n\n abstract quit(): Promise<boolean>;\n\n abstract detectMicro(): Promise<boolean>;\n\n abstract toggleMicro(flag?: boolean): Promise<boolean>;\n\n abstract shock(): void;\n}\n","/******************************************************************************\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 (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, 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","/**\n * rtc 类型\n */\nexport enum RTCType {\n RealseeBrowserRTC = 'RealseeBrowserRTC',\n RealseeVRWebViewRTC = 'RealseeVRWebViewRTC',\n RealseeBrowserChimeRTC = 'RealseeBrowserChimeRTC',\n}\n\nexport enum BuiltInRTCType {\n RealseeXTRTC = 'trtc',\n RealseeXChimeRTC = 'chime',\n}\n","/**\n * 输出格式化日志\n */\n\n// 获取当前时间\nconst getTime = (): string => {\n const date = new Date();\n const year = date.getFullYear();\n const month = (date.getMonth() + 1).toString().padStart(2, '0'); //月份是从0开始的\n const day = date.getDate().toString().padStart(2, '0');\n const hour = date.getHours().toString().padStart(2, '0');\n const min = date.getMinutes().toString().padStart(2, '0');\n const sec = date.getSeconds().toString().padStart(2, '0');\n const ms = date.getMilliseconds();\n\n return `[${year}-${month}-${day} ${hour}:${min}:${sec}.${ms}]`;\n};\n\nexport enum LOG_LEVEL {\n info = 'INFO',\n log = 'LOG',\n error = 'ERROR',\n warn = 'WARN',\n}\n\n// 输出日志\nconst echo = (logLevel: Partial<LOG_LEVEL>, args: any[] = []) => {\n args.unshift(`Realsee Live ${getTime()} <${logLevel}> `);\n switch (logLevel) {\n case LOG_LEVEL.info:\n return console.info(...args);\n case LOG_LEVEL.error:\n return console.error(...args);\n case LOG_LEVEL.warn:\n return console.warn(...args);\n default:\n return console.log(...args);\n }\n};\n\nconst log = (...args: any[]) => echo(LOG_LEVEL.log, args);\n\nconst info = (...args: any[]) => echo(LOG_LEVEL.info, args);\n\nconst error = (...args: any[]) => echo(LOG_LEVEL.error, args);\n\nconst warn = (...args: any[]) => echo(LOG_LEVEL.warn, args);\n\nconst logger = {\n log,\n info,\n error,\n warn,\n};\n\nexport default logger;\n","// uuid\nfunction S4() {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n}\n\n/**\n * 基于伪随机数生成 **uuid**。\n */\nexport function uuid() {\n // then to call it, plus stitch in '4' in the third group\n return (\n S4() +\n S4() +\n '-' +\n S4() +\n '-4' +\n S4().substr(0, 3) +\n '-' +\n S4() +\n '-' +\n S4() +\n S4() +\n S4()\n ).toLowerCase();\n}\n","import TRTC, { Client, LocalStream } from 'trtc-js-sdk';\nimport { GetVoiceSign } from '../typings/live/GetVoiceSign';\nimport { RTCType } from '../typings/rtc/type';\nimport logger from '../utils/logger';\n\nimport { uuid } from '../utils/uuid';\nimport { CoreRTC } from './CoreRTC';\n\ninterface ITrtcInstance {\n client: Client | null;\n stream: LocalStream | null;\n}\n\nexport class BrowserRTC extends CoreRTC {\n type = RTCType.RealseeBrowserRTC;\n joined = false;\n micro = false;\n voiceId = '';\n\n private _getVoiceSign: GetVoiceSign = () => {\n throw new Error('方法 getVoiceSign 未实现');\n };\n\n public checkRequirement = () => TRTC.checkSystemRequirements();\n\n private $dom: HTMLDivElement = document.createElement('div');\n\n private _trtc: ITrtcInstance = {\n client: null,\n stream: null,\n };\n\n constructor(options: { getVoiceSign: GetVoiceSign }) {\n super();\n this._getVoiceSign = options.getVoiceSign;\n this._initParentDom();\n }\n\n private _initParentDom() {\n this.$dom.id = `rs-rtc-${uuid()}`;\n this.$dom.style.display = 'none';\n document.body.appendChild(this.$dom);\n }\n\n join = async (options: {\n voiceId: string;\n userId: string;\n roomId: string;\n type: RTCType;\n }): Promise<boolean> => {\n this.emit('joinWillStart');\n const createClientOptions = await this._getVoiceSign({\n voiceId: options.voiceId,\n roomId: options.roomId,\n userId: options.userId,\n });\n // 1. 创建client\n this._trtc.client = TRTC.createClient({\n mode: 'rtc',\n ...createClientOptions,\n });\n\n this._trtc.client?.enableAudioVolumeEvaluation();\n\n // 2. 订阅事件\n this._registerRtcEvent();\n\n // 3. 加入语音房间\n let result = await new Promise<boolean>((resolve) => {\n this._trtc.client\n ?.join({ roomId: Number(options.voiceId) })\n .then(() => resolve(true))\n .catch(() => resolve(false));\n });\n\n this.joined = result;\n\n if (!result) return false; // 进房失败\n\n // 4. 创建本地流\n this._trtc.stream = TRTC.createStream({\n userId: createClientOptions.userId,\n audio: true,\n video: false,\n });\n\n // 5. 初始化本地流\n result = await new Promise<boolean>((resolve) => {\n this._trtc.stream\n ?.initialize()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n });\n\n // 6. 发布本地流\n result = await new Promise<boolean>((resolve) => {\n this._trtc.client\n ?.publish(this._trtc.stream!)\n .then(() => resolve(true))\n .catch(() => resolve(false));\n });\n\n this.joined = result;\n\n if (this.joined) this.emit('joined');\n\n return result;\n };\n\n quit(): Promise<boolean> {\n return new Promise(async (resolve) => {\n this.joined = false;\n if (this._trtc.stream) {\n await this._trtc.client?.unpublish(this._trtc.stream);\n this._trtc.stream.stop();\n this._trtc.stream.close();\n this._trtc.stream = null;\n }\n this._trtc.client\n ?.leave()\n .then(() => (this._trtc.client = null))\n .then(() => resolve(true))\n .catch(() => resolve(false));\n resolve(true)\n });\n }\n\n detectMicro(): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n const rule = { audio: true, video: false };\n try {\n navigator.mediaDevices\n .getUserMedia(rule)\n .then(() => resolve(true))\n .catch((e) => {\n logger.error(e.message)\n resolve(false)\n });\n } catch (e) {\n console.error(e);\n resolve(false);\n }\n });\n }\n\n toggleMicro(flag?: boolean): Promise<boolean> {\n return Promise.resolve(\n (flag\n ? this._trtc?.stream?.unmuteAudio()\n : this._trtc?.stream?.muteAudio()) || false,\n );\n }\n\n shock(): void {\n throw new Error('Method not implemented.');\n }\n\n private _registerRtcEvent() {\n this._trtc.client?.on('stream-added', this._handleStreamAdded);\n this._trtc.client?.on('stream-subscribed', this._handleStreamSubscribed);\n this._trtc.client?.on('audio-volume', (event) =>\n this.emit(\n 'userVolumes',\n event.result.map(({ userId, audioVolume }) => ({\n userId,\n audioVolume,\n })),\n ),\n );\n this._trtc.client?.on('error', (event: any) => this.emit('error', event));\n }\n\n private _handleStreamAdded = (event: any) => {\n const remoteStream = event.stream;\n console.log('远端流增加: ' + remoteStream.getId());\n //订阅远端流\n this._trtc.client?.subscribe(remoteStream);\n };\n\n private _handleStreamSubscribed = (event: any) => {\n const remoteStream = event.stream;\n console.log('远端流订阅成功:' + remoteStream.getId());\n const playId = remoteStream.getId();\n const domId = `rs-rtc-remote_stream-${playId}`;\n const dom = document.createElement('div');\n dom.id = domId;\n this.$dom.appendChild(dom);\n // 播放远端流\n remoteStream.play(domId);\n };\n}\n","import {\n AudioVideoObserver,\n ConsoleLogger,\n DefaultDeviceController,\n DefaultMeetingSession,\n DefaultModality,\n DeviceChangeObserver,\n LogLevel,\n MeetingSessionConfiguration,\n MeetingSessionStatusCode,\n} from 'amazon-chime-sdk-js';\nimport { MeetingSessionConfigurationOptions } from '../typings/chime/MeetingSessionConfigurationOptions';\nimport { GetVoiceSign } from '../typings/live/GetVoiceSign';\nimport { RTCType } from '../typings/rtc/type';\n\nimport { uuid } from '../utils/uuid';\nimport { CoreRTC } from './CoreRTC';\n\n/**\n * amazon-chime-sdk-js 适配的rtc实现\n */\nexport class BrowserRTC4Chime extends CoreRTC {\n type = RTCType.RealseeBrowserChimeRTC;\n joined = false;\n micro = false;\n voiceId = '';\n userId = '';\n logger: ConsoleLogger;\n deviceController: DefaultDeviceController;\n meetingSession: DefaultMeetingSession | undefined;\n\n audioInput: MediaDeviceInfo | undefined;\n audioOutput: MediaDeviceInfo | undefined;\n\n deviceChangeObserver: DeviceChangeObserver = {};\n audioVideoObserver: AudioVideoObserver = {};\n\n private _getVoiceSign: GetVoiceSign = () => {\n throw new Error('方法 getVoiceSign 未实现');\n };\n\n private $dom: HTMLDivElement = document.createElement('div');\n private $audio: HTMLAudioElement = document.createElement('audio');\n\n constructor(options: { getVoiceSign: GetVoiceSign; logLevel?: LogLevel }) {\n super();\n // 挂载签名钩子\n this._getVoiceSign = options.getVoiceSign;\n this._initDom();\n this.logger = new ConsoleLogger(\n 'WebRTCLogger',\n options.logLevel || LogLevel.OFF,\n );\n this.deviceController = new DefaultDeviceController(this.logger);\n this.initObservers();\n }\n\n /**\n * 对audio标签初始化\n */\n _initDom = () => {\n this.$audio.id = `rs-rtc-${uuid()}`;\n this.$dom.id = `rs-rtc-${uuid()}`;\n this.$dom.appendChild(this.$audio);\n document.body.appendChild(this.$dom);\n };\n\n /**\n * 初始化事件监听器\n */\n initObservers = () => {\n // 输入输出设备变化的监听器\n this.deviceChangeObserver = {\n audioInputsChanged: (freshAudioInputDeviceList: any[]) => {\n // An array of MediaDeviceInfo objects\n freshAudioInputDeviceList?.forEach((mediaDeviceInfo) => {\n this.logger.info(\n `Device ID: ${mediaDeviceInfo.deviceId} Microphone: ${mediaDeviceInfo.label}`,\n );\n });\n },\n\n audioOutputsChanged: (freshAudioOutputDeviceList: any) => {\n this.logger.info(\n `Audio outputs updated: ${freshAudioOutputDeviceList}`,\n );\n },\n\n videoInputsChanged: (freshVideoInputDeviceList: any) => {\n this.logger.info(`Video inputs updated: ${freshVideoInputDeviceList}`);\n },\n\n audioInputMuteStateChanged: (device: any, muted: any) => {\n this.logger.info(\n `Device ${device.toString()} ${\n muted ? 'is muted in hardware' : 'is not muted'\n }`,\n );\n },\n };\n\n // 流变化监听器\n this.audioVideoObserver = {\n audioVideoDidStart: () => {\n this.logger.info('Started');\n },\n audioVideoDidStop: (sessionStatus: any) => {\n // See the \"Stopping a session\" section for details.\n this.logger.info(\n `Stopped with a session status code: ${sessionStatus.statusCode()}`,\n );\n },\n audioVideoDidStartConnecting: (reconnecting: any) => {\n if (reconnecting) {\n // e.g. the WiFi connection is dropped.\n this.logger.info('Attempting to reconnect');\n }\n },\n };\n };\n\n /**\n * 加入语音会议\n * @param options\n * @returns\n */\n async join(options: {\n voiceId: string;\n userId: string;\n roomId: string | number | undefined;\n type: RTCType;\n }): Promise<boolean> {\n return new Promise(async (success, fail) => {\n this.emit('joinWillStart');\n try {\n // 取签名\n const { sdkAppId, userId, roomId, userSig } = await this._getVoiceSign({\n ...options,\n roomId: options.roomId || 0,\n });\n this.userId = userId;\n const {\n attendence,\n vendor_wrapper,\n }: MeetingSessionConfigurationOptions = JSON.parse(\n decodeURIComponent(userSig),\n );\n\n // 初始化配置\n const configuration = new MeetingSessionConfiguration(\n {\n Meeting: vendor_wrapper,\n },\n {\n Attendee: {\n ExternalUserId: attendence.external_user_id,\n AttendeeId: attendence.attendee_id,\n JoinToken: attendence.join_token,\n },\n },\n );\n\n // 初始化会议会话\n this.meetingSession = new DefaultMeetingSession(\n configuration,\n this.logger,\n this.deviceController,\n );\n\n // 注册事件\n this._registerRtcEvent();\n\n // 绑定监听器\n this.meetingSession.audioVideo.addDeviceChangeObserver(\n this.deviceChangeObserver,\n );\n this.meetingSession.audioVideo.addObserver(this.audioVideoObserver);\n\n // 绑定播放器\n this.meetingSession.audioVideo.bindAudioElement(this.$audio);\n\n const observer: AudioVideoObserver = {\n audioVideoDidStart: () => {\n this.meetingSession?.audioVideo.realtimeMuteLocalAudio();\n this.joined = true;\n this.emit('joined');\n success(true);\n },\n audioVideoDidStop: () => {\n this.joined = false;\n success(false);\n },\n };\n\n this.meetingSession.audioVideo.addObserver(observer);\n\n // 选择语音输入设备\n const audioInputDevices =\n await this.deviceController.listAudioInputDevices(true);\n const defaultAudioInput = audioInputDevices.find(\n (device: any) => device.deviceId === 'default',\n );\n const otherAudioInput = audioInputDevices.find(\n (device: any) => device.deviceId !== '',\n );\n this.audioInput = defaultAudioInput || otherAudioInput;\n\n await this.meetingSession.audioVideo.chooseVideoInputDevice(null);\n await this.meetingSession.audioVideo.chooseAudioInputDevice(\n this.audioInput?.deviceId || 'default',\n );\n\n this.meetingSession.audioVideo.start();\n } catch (e: unknown) {\n this.emit('error', e as Error);\n this.logger.error((e as Error).message);\n success(false);\n }\n });\n }\n\n /**\n * 注册rtc事件\n */\n _registerRtcEvent = () => {\n const presentAttendeeId =\n this.meetingSession?.configuration?.credentials?.attendeeId || '';\n if (presentAttendeeId) {\n // 处理音量变化\n const roster = new Map<\n string,\n {\n userId: string;\n volume: number | null;\n muted: boolean | null;\n signalStrength: number | null;\n }\n >();\n\n const getUserVolumes = () => {\n const result: any = [];\n roster.forEach((v, k) => {\n result.push({\n userId: v.userId,\n volume:\n v.muted || v.signalStrength === 0 || !Boolean(v.volume)\n ? 0\n : v.volume,\n });\n });\n return result;\n };\n\n this.meetingSession?.audioVideo.realtimeSubscribeToAttendeeIdPresence(\n (presentAttendeeId: any, present: any, externalUserId: any) => {\n if (!present) {\n roster.delete(presentAttendeeId);\n this.emit('userVolumes', getUserVolumes());\n return;\n }\n\n this.meetingSession?.audioVideo.realtimeSubscribeToVolumeIndicator(\n presentAttendeeId,\n (attendeeId: any, volume: any, muted: any, signalStrength: any) => {\n const baseAttendeeId = new DefaultModality(attendeeId).base();\n if (baseAttendeeId !== attendeeId) {\n // Optional: Do not include the content attendee (attendee-id#content) in the roster.\n // See the \"Screen and content share\" section for details.\n return;\n }\n\n roster.set(attendeeId, {\n userId: externalUserId || attendeeId,\n volume,\n muted,\n signalStrength,\n });\n this.emit('userVolumes', getUserVolumes());\n },\n );\n },\n );\n\n // 弱网\n this.meetingSession?.audioVideo.realtimeSubscribeToVolumeIndicator(\n presentAttendeeId,\n (attendeeId: any, volume: any, muted: any, signalStrength: any) => {\n const baseAttendeeId = new DefaultModality(attendeeId).base();\n if (baseAttendeeId === attendeeId) {\n if (signalStrength !== null && signalStrength !== 1) {\n this.emit('weakNetwork');\n }\n }\n },\n );\n\n // 报错\n\n this.meetingSession?.audioVideo.realtimeSubscribeToFatalError(\n (error: any) => this.emit('error', error),\n );\n }\n };\n\n quit(): Promise<boolean> {\n if (!this.joined) return Promise.resolve(true);\n return new Promise((success, fail) => {\n this.joined = false;\n const observer: AudioVideoObserver = {\n audioVideoDidStop: (sessionStatus: any) => {\n const sessionStatusCode = sessionStatus.statusCode();\n if (sessionStatusCode === MeetingSessionStatusCode.Left) {\n /*\n - You called meetingSession.audioVideo.stop().\n - When closing a browser window or page, Chime SDK attempts to leave the session.\n */\n this.logger.info('You left the session');\n success(true);\n } else {\n this.logger.info(\n `Stopped with a session status code: ${sessionStatusCode}`,\n );\n success(true);\n }\n },\n };\n this.meetingSession?.audioVideo.addObserver(observer);\n this.meetingSession?.audioVideo.stop();\n });\n }\n\n async detectMicro(): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n const rule = { audio: true, video: false };\n try {\n navigator.mediaDevices\n .getUserMedia(rule)\n .then(() => resolve(true))\n .catch(() => resolve(false));\n } catch (e: unknown) {\n this.logger.error((e as Error).message);\n resolve(false);\n }\n });\n }\n\n async toggleMicro(flag?: boolean): Promise<boolean> {\n if (flag) {\n this.meetingSession?.audioVideo.realtimeUnmuteLocalAudio();\n } else {\n this.meetingSession?.audioVideo.realtimeMuteLocalAudio();\n }\n const muted = this.meetingSession?.audioVideo.realtimeIsLocalAudioMuted();\n if (muted !== undefined) {\n return flag !== muted;\n } else {\n return false;\n }\n }\n\n shock(): void {\n throw new Error('Method not implemented.');\n }\n}\n","/**\n * rtc加入返回值code枚举\n */\nexport enum RTCJoinedInfoCodeEnum {\n /**\n * 成功\n */\n Success = 0,\n /**\n * 失败\n */\n Failure = 1,\n /**\n * 重复加入\n */\n ReJoin = 2,\n /**\n * 无麦克风权限\n */\n NoMicroPermission = 3,\n}\n\n/**\n * 进入rtc房间的回调信息\n */\nexport interface RTCJoinedInfo {\n code: RTCJoinedInfoCodeEnum;\n message: string;\n userId?: string;\n roomId?: number;\n errInfo?: {\n errCode: number;\n errMsg: string;\n };\n}\n","import { UserVolume } from '../typings/live/UserVolume';\nimport {\n RTCJoinedInfo,\n RTCJoinedInfoCodeEnum,\n} from '../typings/rtc/joinedInfo';\nimport { RTCType } from '../typings/rtc/type';\nimport { VRWebViewRTCOptions } from '../typings/rtc/VRWebViewRTCOptions';\nimport { CoreRTC } from './CoreRTC';\n\nexport class VRWebViewRTC extends CoreRTC {\n type: RTCType = RTCType.RealseeVRWebViewRTC;\n joined = false;\n micro = false;\n voiceId: string = '';\n\n private options: VRWebViewRTCOptions;\n\n get jsBridge() {\n return this.options.jsBridge;\n }\n\n constructor({ jsBridge, getVoiceSign }: VRWebViewRTCOptions) {\n super();\n this.options = { jsBridge, getVoiceSign };\n\n // TO-DO: 在微信小程序下有个音量上报的BUG会导致消息体过大从而jsbridge异常断开\n if (this.jsBridge.webViewType !== 'WxMiniProgramWebView') {\n this.jsBridge.callAndListen(\n 'live/userVolumes',\n (userVolumes: UserVolume[]) => {\n this.emit('userVolumes', userVolumes);\n },\n );\n }\n\n this.jsBridge.callAndListen('live/weakNetwork', (weakNetwork: boolean) => {\n if (weakNetwork) this.emit('weakNetwork');\n });\n }\n\n async join(options: {\n voiceId: string;\n userId: string;\n roomId: string;\n type: RTCType;\n }) {\n try {\n this.emit('joinWillStart');\n const { sdkAppId, userId, userSig } = await this.options.getVoiceSign(\n options,\n );\n\n if (!(Boolean(sdkAppId) && Boolean(userId) && Boolean(userSig))) {\n this.emit('error', new Error('加入房间失败:rtc 签名请求异常'));\n this.joined = false;\n return this.joined;\n }\n\n this.type = options.type;\n const [res, error] = await this.jsBridge.callAndBackfeed<RTCJoinedInfo>(\n `live/join?sdkAppID=${sdkAppId}&userID=${userId}&roomID=${Number(\n options.voiceId,\n )}&userSig=${userSig}`,\n );\n\n if (!res) {\n this.emit(\n 'error',\n error ? error : new Error('加入房间失败:未知异常。'),\n );\n this.joined = false;\n } else {\n if (res.code === RTCJoinedInfoCodeEnum.Success) {\n this.emit('joined');\n this.joined = true;\n } else {\n this.emit('error', res);\n this.joined = false;\n }\n }\n return this.joined;\n } catch (e) {\n this.emit('error', new Error('加入房间失败:' + (e as Error).message));\n this.joined = false;\n return this.joined;\n }\n }\n\n async quit() {\n const [res, error] = await this.jsBridge.callAndBackfeed<boolean>(\n 'live/quit',\n );\n if (res === null) {\n this.emit('error', error ? error : new Error('退出房间失败:未知异常。'));\n }\n this.joined = false;\n return !!res;\n }\n\n async detectMicro() {\n const [res, error] = await this.jsBridge.detectMicro();\n if (res === null) {\n this.emit('error', error ? error : new Error('麦克风监测异常!'));\n return false;\n }\n return res;\n }\n\n async toggleMicro(flag?: boolean) {\n const [res, error] = await this.jsBridge.callAndBackfeed<boolean>(\n `live/toggleMicro?flag=${!!flag ? 1 : 0}`,\n );\n if (res === null) {\n this.emit('error', error ? error : new Error('麦克风监测异常!'));\n return false;\n }\n this.micro = res;\n return res;\n }\n\n shock() {\n this.jsBridge.shock(1);\n }\n}\n","/**\n * WebSocket 通信指令\n * - 下行:服务端推送数据\n * - 上行:客户端上报数据\n */\nexport enum Command {\n /* 当前用户信息:下行 */\n SelfUserInfo = \"SELF_USER_INFO\",\n /* 房间信息:下行 */\n RoomInfo = \"ROOM_INFO\",\n /* RTC信息:下行 */\n RTCInfo = \"RTC_INFO\",\n /* 用户列表:下行 */\n UserList = \"USER_LIST\",\n /* 内置消息:下行、上行 */\n BuiltinMsg = \"BUILTIN_MSG\",\n /* 自定义广播事件消息:下行、上行 */\n CustomEvent = \"CUSTOM_EVENT\",\n /* 帧数据同步:下行、上行 */\n KeyframeSync = \"KEYFRAME_SYNC\",\n /* 被踢出房间:下行 */\n UserKickOut = \"USER_KICK_OUT\",\n}\n\n/**\n * 向服务端请求数据时的数据格式。\n */\nexport type ReqLiveMsg = {\n /**\n * 请求指令。\n */\n command: Command;\n /**\n * 前端请求时生成的uuid()。\n */\n front_request_id: string;\n /**\n * 数据内容\n */\n data: {\n /**\n * 如果此数据仅发送给某些用户,请提供这些用户的ucid。\n */\n to_user_ids?: string[];\n [key: string]: any;\n };\n};\n\n/**\n * 内置事件类型。\n */\nexport enum BuiltinEventType {\n /**\n * 变更用户状态。\n */\n UserChange = \"user_change\",\n /**\n * 变更房间状态。\n */\n RoomChange = \"room_change\",\n}\n\n/**\n * 内置事件行为类型。\n */\nexport enum BuiltinActionType {\n /**\n * 修改麦克风状态。\n */\n UserMicroStatus = \"change_micro_status\",\n /**\n * 同步当前用户状态:客户端麦克风状态已经修改成功,通知服务端\n */\n UserMicroStatusSync = \"sync_micro_status\",\n /**\n * 调整某些用户的权限。\n */\n UserPermission = \"change_permission\",\n /**\n * 用户状态发生改变。\n */\n UserStatus = \"change_status\",\n /**\n * 更新用户信息。\n */\n UserInfo = \"change_info\",\n /**\n * 关闭房间。\n */\n RoomClose = \"close\",\n}\n\n/**\n * 内置事件数据结构体。\n */\nexport type BuiltinMsg = {\n event_type: BuiltinEventType;\n action: BuiltinActionType;\n to_user_ids: string[];\n data: {\n extension?: Record<string, any>;\n [key: string]: any;\n };\n};\n\n/**\n * 麦克风状态。\n */\nexport enum MicroStatus {\n OPEN = \"OPEN\",\n CLOSE = \"CLOSE\",\n}\n/**\n * 响应的信息结构体。\n */\nexport type LiveMsg = {\n code: string;\n message: string;\n command: Command;\n roomCode: string;\n appId: string;\n requestId: string;\n frontRequestId: string;\n triggerUserId: string;\n data: Record<string, any> | Record<string, any>[];\n};\n\n/**\n * 解析下后端数据格式。\n * @param jsonTxt - JSON序列化后的文本。\n * @returns false 标识解析失败;解析成功返回 {@link LiveMsg} 实例。\n */\nexport function parseLiveMsg(jsonTxt: string): LiveMsg | boolean {\n try {\n const msg = JSON.parse(jsonTxt);\n const resMsg: Record<string, any> = {\n code: msg.code,\n message: msg.message,\n command: msg.command,\n roomCode: msg.room_code,\n appID: msg.app_id,\n requestId: msg.request_id,\n frontRequestId: msg.front_request_id,\n triggerUserID: msg.trigger_user_id,\n data: msg.data || {},\n };\n\n const undefinedKeys = Object.keys(resMsg).filter(\n (key) => resMsg[key] === undefined\n );\n if (undefinedKeys.length > 0) {\n console.warn(`推送数据格式异常:${undefinedKeys.join(\" \")} 值不存在!`);\n }\n return resMsg as LiveMsg;\n } catch (error) {\n // notcare? 过滤掉所有不符合规范的数据\n return false;\n }\n}\n","export enum LiveState\n/**\n * 尚未初始化\n */ {\n NOTINITIALIZED = -1,\n\n /**\n * 正在链接中\n */\n CONNECTING = 0,\n\n /**\n * 已经链接并且可以通讯\n */\n OPEN = 1,\n\n /**\n * 连接已关闭或者链接失败\n */\n CLOSED = 3,\n}\n","/**\n * 用户当前状态枚举。\n */\nexport enum UserStatus {\n /**\n * 正常\n */\n Normal = 0,\n /**\n * 被移除\n */\n Removed = 1,\n /**\n * 被替换\n */\n Replaced = 2,\n}\n\nexport enum MemUserStatus {\n WAIT_ENTER = 'WAIT_ENTER',\n ONLINE = 'ONLINE',\n LEAVE = 'LEAVE',\n KICK_OUT = 'KICK_OUT',\n BE_REPLACE = 'BE_REPLACE',\n EXCEPTION = 'EXCEPTION',\n}\n\n/**\n * 用户信息扩展字段:比如提供用户画像相关的数据。\n */\nexport type UserInfoExt = {\n /**\n * 用户昵称。\n */\n nickname?: string;\n /**\n * 用户头像。\n */\n avatar?: string;\n /**\n * 其他用户相关的字段,比如用户职称、住址、联系方式等信息。\n */\n [key: string]: any;\n};\n\n/**\n * 带看会话房间用户的信息格式。\n */\nexport type UserInfo = {\n /**\n * 用户唯一标识ID。\n */\n id: string;\n /**\n * 用户当前的状态。\n */\n status?: UserStatus;\n /**\n * 内存中的用户状态。\n */\n mem_user_status?: MemUserStatus;\n /**\n * 用户当前是否开启麦克风。\n */\n micro_status: boolean;\n /**\n * 用户角色定义。(前端不关注此字段)。\n */\n user_role?: number | string;\n /**\n * 用户当前是否在线。\n */\n current_ws_online?: boolean;\n /**\n * 用户曾经是否在线过,即进入房间后又由于某种原因离开后重新进入。\n */\n once_ws_online?: boolean;\n /**\n * RTC 环境是否就绪,即当前语音是否联通。\n */\n rtc: boolean;\n /**\n * 当前用户的权限配置。(UI层面理解)。\n */\n permission?: Partial<Permission>;\n /**\n * 用户信息扩展字段。\n */\n extension?: UserInfoExt;\n};\n\ninterface Permission {\n // 切换更多VR的权限\n more_vr_scene: boolean;\n // 邀请别人的权限\n invite_other: boolean;\n // 控制自己麦克风\n control_own_micro: boolean;\n // 控制别人的麦克风\n control_other_micro: boolean;\n // 查看自己麦克风状态\n view_own_micro_status: boolean;\n // 查看别人麦克风状态\n view_other_micro_status: boolean;\n // 关闭带看房间\n close_live_room: boolean;\n // 申请要电话\n apply_other_phone: boolean;\n // 动态进入\n dynamic_enter: boolean;\n // 同步帧数据\n sync_frame: boolean;\n // 改变角色\n transfer_role: boolean;\n // 改变别人的状态\n change_other_status: boolean;\n // 控制别人全量同步帧数据的权限\n control_other_sync: boolean;\n // 其它权限点\n extension: Record<string, boolean>;\n}\n","/**\n * WebSocket 连接状态枚举\n */\nexport enum WebSocketState {\n /**\n * 尚未初始化\n */\n NOTINITIALIZED = -1,\n\n /**\n * 正在链接中\n */\n CONNECTING = 0,\n\n /**\n * 已经链接并且可以通讯\n */\n OPEN = 1,\n\n /**\n * 连接正在关闭\n */\n CLOSING = 2,\n\n /**\n * 连接已关闭或者没有链接成功\n */\n CLOSED = 3,\n}\n\nexport type WebSocketError = {\n type: WebSocketErrorType,\n closeError?: WebSocketCloseError,\n target?: Event | CloseEvent\n error?: any\n}\n\nexport enum WebSocketErrorType {\n Error = 'Error',\n Close = 'Close',\n MicroAuth = 'MicroAuth',\n DuplicateConnect = 'DuplicateConnect',\n IllegalURL = 'IllegalURL',\n Unknown = 'Unknown',\n IllegalArgs = 'IllegalArgs'\n}\n\n/**\n * WebSocket 异常关闭枚举:https://developer.mozilla.org/zh-CN/docs/Web/API/CloseEvent。\n */\nexport enum WebSocketCloseError {\n /**\n * 终端离开, 可能因为服务端错误, 也可能因为浏览器正从打开连接的页面跳转离开。\n */\n Err_1001 = 'CLOSE_GOING_AWAY',\n\n /**\n * 由于协议错误而中断连接。\n */\n Err_1002 = 'CLOSE_PROTOCOL_ERROR',\n\n /**\n * 由于接收到不允许的数据类型而断开连接 (如仅接收文本数据的终端接收到了二进制数据)。\n */\n Err_1003 = 'CLOSE_UNSUPPORTED',\n\n /**\n * 安全因素或WebSocket连接次数达到上限。\n */\n Err_1006 = 'CLOSE_ABNORMAL',\n\n /**\n * 由于收到了格式不符的数据而断开连接 (如文本消息中包含了非 UTF-8 数据)。\n */\n Err_1007 = 'Unsupported Data',\n /**\n * 由于收到不符合约定的数据而断开连接。\n */\n Err_1008 = 'Policy Violation',\n /**\n * 由于收到过大的数据帧而断开连接。\n */\n Err_1009 = 'CLOSE_TOO_LARGE',\n /**\n * 未知错误。\n */\n Err_unknown = 'unknown'\n\n}\n\n\nexport function parseWSClsErr(code: number) {\n switch (code) {\n case 1001: {\n return WebSocketCloseError.Err_1001\n }\n case 1002: {\n return WebSocketCloseError.Err_1002\n }\n case 1003: {\n return WebSocketCloseError.Err_1003\n }\n case 1006: {\n return WebSocketCloseError.Err_1006\n }\n case 1007: {\n return WebSocketCloseError.Err_1007\n }\n case 1008: {\n return WebSocketCloseError.Err_1008\n }\n case 1009: {\n return WebSocketCloseError.Err_1009\n }\n default:\n break\n }\n\n return WebSocketCloseError.Err_unknown\n}\n","\nexport const cache: Record<string, {\n uuid: string;\n queue: {\n once: boolean\n callback: any\n }[]\n}> = {}\n\n/**\n * 创建一个唯一的函数名(在当前页面会话中保障其唯一性即可)。\n * @param extra 可以额外自定义部分字符串。\n * @returns \n */\nexport function registerGlobalValue(scheme: string, callback: any, once = true) {\n\n if (!cache[scheme]) {\n const uuid = '$jsBridgeFn_' + Date.now().toString(16).toUpperCase() + '_' + Math.ceil(Math.random() * 10000).toString(16).toUpperCase()\n cache[scheme] = {\n uuid,\n queue: [{ once, callback }],\n }\n } else {\n cache[scheme].queue.push({ once, callback })\n }\n\n Object.assign(window, {\n [cache[scheme].uuid]: (data: any) => {\n\n cache[scheme].queue = cache[scheme].queue.reduce((accu: {\n once: boolean\n callback: any\n }[], curr) => {\n const { once, callback } = curr\n if (!once) {\n accu.push(curr)\n }\n callback(data)\n return accu\n }, [])\n }\n\n })\n return cache[scheme].uuid\n\n}\n\n","import { ControllerProtocol } from '../typings/ControllerProtocol'\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol'\n\nexport class BaseController implements ControllerProtocol {\n\n checkReady(timeout?: number): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n\n callAndBackfeed<T>(scheme: string): Promise<JSBridgeReturnType<false | T>> {\n return Promise.resolve([false, null])\n }\n\n callAndListen<T>(scheme: string, callback: (data: T) => void): Promise<JSBridgeReturnType<false | (() => void)>> {\n return Promise.resolve([false, null])\n }\n\n}\n","import { registerGlobalValue, cache } from '../utils/registerGlobalValue'\nimport { DeviceInfo } from '../typings/DeviceInfo'\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol'\nimport { BaseController } from './BaseController'\n\nconst HYBRID_BRIDGE_NAME = 'HybridBridgeLJ'\n\ninterface HybridBridgeLJ {\n getStaticData: (functionName: string) => void\n callAndBackfeed: (msg: string) => void\n callAndListen: (msg: string) => void\n}\n\ntype CustomWindow = Window & {\n HybridBridgeLJ?: HybridBridgeLJ\n}\n\nconst $window = window as unknown as CustomWindow\n\n/**\n * Android WebView 控件。\n */\nexport class WebViewController extends BaseController {\n hybridBridge?: HybridBridgeLJ\n deviceInfo?: DeviceInfo\n\n constructor() {\n super()\n Promise.resolve().then(async () => {\n try {\n await this.checkBridgeReady()\n } catch (error) {\n console.warn(error)\n }\n })\n }\n\n /**\n * 检查 HybridBridgeLJ 是否ready\n * @param timeout 超时时间\n * @returns \n */\n private checkBridgeReady(timeout = 6000) {\n if (this.hybridBridge) return true\n\n const start = performance.now()\n\n return new Promise<boolean>((resolve, reject) => {\n const check = () => {\n if (this.hybridBridge) return resolve(true)\n\n if ($window.HybridBridgeLJ) {\n const hybridBridge = $window[HYBRID_BRIDGE_NAME]\n\n hybridBridge?.getStaticData(\n registerGlobalValue('HYBRID_BRIDGE_NAME', (data: any) => {\n this.deviceInfo = JSON.parse(data) as DeviceInfo\n this.hybridBridge = hybridBridge\n\n return resolve(true)\n }),\n )\n }\n if (performance.now() - start > (timeout || 6000)) {\n // console.warn('HybridBridge 初始化超时~')\n return reject(new Error('HybridBridge 初始化超时~'))\n }\n\n // 逐帧监测\n requestAnimationFrame(check)\n }\n\n // 开启监测\n check()\n })\n }\n\n async checkReady(timeout = 6000) {\n const res: JSBridgeReturnType<boolean> = [null, null]\n\n if (this.hybridBridge) {\n res[0] = true\n return res\n }\n\n try {\n res[0] = await this.checkBridgeReady(timeout)\n } catch (error) {\n res[0] = false\n res[1] = error as Error\n }\n\n return res\n }\n\n get ready() {\n return !!this.hybridBridge\n }\n\n get scheme() {\n return this.deviceInfo?.scheme || ''\n }\n\n createSchemeLink(schemeUrl: string) {\n if (schemeUrl.startsWith(this.scheme)) {\n return schemeUrl\n }\n return this.scheme + '://' + schemeUrl\n }\n\n async callAndBackfeed<T>(scheme: string) {\n const res = [false, null] as JSBridgeReturnType<T | false>\n const [ready, readyError] = await this.checkReady()\n\n if (!ready) {\n res[0] = false\n res[1] = readyError\n\n return res\n }\n\n return await new Promise<JSBridgeReturnType<T | false>>(async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme)\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(this.createSchemeLink(scheme), (data: string) => {\n const d: any = (() => {\n try {\n return JSON.parse(data)\n } catch (e){\n return data\n }\n })() \n\n res[0] = (() => {\n if (d === 1) return true\n if (d === 0) return false\n return d\n })() as T\n\n resolve(res)\n }),\n })\n\n this.hybridBridge!.callAndBackfeed(msg)\n })\n }\n\n async callAndListen<T>(scheme: string, callback: (data: T) => void) {\n const res = [false, null] as JSBridgeReturnType<false | (() => void)>\n const [ready, readyError] = await this.checkReady()\n\n if (!ready) {\n res[0] = false\n res[1] = readyError\n\n return res\n }\n\n return await new Promise<JSBridgeReturnType<false | (() => void)>>(async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme)\n const _callback = (data: string) => {\n const d = (() => {\n try {\n return JSON.parse(data)\n } catch (e) {\n return data\n }\n })() \n\n const callbackParam = (() => {\n if (d === 1) return true\n if (d === 0) return false\n return d\n })() as T\n\n callback(callbackParam)\n res[0] = () => {\n // 清理掉当前的回调引用\n const callbacks = cache[actionUrl]\n if (!callbacks) return\n\n const idx = callbacks.queue.findIndex((func) => func.callback === _callback)\n if (idx !== -1) {\n callbacks.queue.splice(idx, 1)\n }\n }\n resolve(res)\n }\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(actionUrl, _callback, false),\n })\n\n this.hybridBridge!.callAndListen(msg)\n })\n }\n}\n","import { registerGlobalValue, cache } from '../utils/registerGlobalValue';\nimport { DeviceInfo } from '../typings/DeviceInfo';\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol';\n\nexport enum CallTypeEnum {\n callAndBackfeed = 'callAndBack',\n callAndListen = 'callAndListen',\n}\n\ntype CustomWindow = Window & {\n webkit: {\n messageHandlers: {\n realsee?: Worker;\n };\n };\n\n [key: string]: any;\n};\n\nconst $window = window as unknown as CustomWindow;\n\n/**\n *\n * 将原本 JSBridgeApp 中的逻辑均聚合至此 Controller 实现,\n * 目的是规避太多的引用对象被暴露(防止因引用对象被'篡改'造成未知异常)。\n *\n */\nexport class WKWebViewController {\n worker?: Worker;\n deviceInfo?: DeviceInfo;\n\n constructor() {\n this.checkBridgeReady();\n }\n\n private checkBridgeReady(timeout = 6000) {\n if (this.worker) return true;\n\n const start = performance.now();\n\n return new Promise<boolean>((resolve, reject) => {\n const check = () => {\n if (this.worker) return resolve(true);\n\n if (\n $window.webkit &&\n $window.webkit.messageHandlers &&\n $window.webkit.messageHandlers.realsee\n ) {\n const worker = $window.webkit.messageHandlers.realsee;\n\n worker.postMessage(\n JSON.stringify({\n type: 'getStaticData',\n param: JSON.stringify({\n functionName: registerGlobalValue(\n 'HYBRID_BRIDGE_NAME',\n (data: any) => {\n this.deviceInfo = JSON.parse(data) as DeviceInfo;\n this.worker = worker;\n return resolve(true);\n },\n ),\n }),\n }),\n );\n\n return;\n }\n if (performance.now() - start > (timeout || 6000)) {\n // console.warn('HybridBridge 初始化超时~')\n return reject(new Error('HybridBridge 初始化超时~'));\n }\n\n // 逐帧监测\n requestAnimationFrame(check);\n };\n\n // 开启监测\n check();\n });\n }\n\n async checkReady(timeout = 6000) {\n const res: JSBridgeReturnType<boolean> = [null, null];\n\n if (this.worker) {\n res[0] = true;\n return res;\n }\n\n try {\n res[0] = await this.checkBridgeReady(timeout);\n } catch (error) {\n res[0] = false;\n res[1] = error as Error;\n }\n\n return res;\n }\n\n get ready() {\n return !!this.worker;\n }\n\n get scheme() {\n return this.deviceInfo?.scheme || '';\n }\n\n createSchemeLink(schemeUrl: string) {\n if (schemeUrl.startsWith(this.scheme)) {\n return schemeUrl;\n }\n return this.scheme + '://' + schemeUrl;\n }\n\n async callAndBackfeed<T>(scheme: string) {\n const res = [false, null] as JSBridgeReturnType<T | false>;\n const [ready, readyError] = await this.checkReady();\n\n if (!ready) {\n res[0] = false;\n res[1] = readyError;\n\n return res;\n }\n\n return await new Promise<JSBridgeReturnType<T | false>>(async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme);\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(\n this.createSchemeLink(scheme),\n (data: string) => {\n const d = (() => {\n try {\n return JSON.parse(data);\n } catch (e) {\n return data;\n }\n })();\n\n res[0] = (() => {\n if (d === 1) return true;\n if (d === 0) return false;\n return d;\n })() as T;\n\n resolve(res);\n },\n ),\n });\n\n this.worker!.postMessage(\n JSON.stringify({\n type: 'callAndBackfeed',\n param: msg,\n }),\n );\n });\n }\n\n async callAndListen<T>(scheme: string, callback: (data: T) => void) {\n const res = [false, null] as JSBridgeReturnType<false | (() => void)>;\n const [ready, readyError] = await this.checkReady();\n\n if (!ready) {\n res[0] = false;\n res[1] = readyError;\n\n return res;\n }\n\n return await new Promise<JSBridgeReturnType<false | (() => void)>>(\n async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme);\n const _callback = (data: string) => {\n const d = (() => {\n try {\n return JSON.parse(data);\n } catch (e) {\n return data;\n }\n })();\n\n const callbackParam = (() => {\n if (d === 1) return true;\n if (d === 0) return false;\n return d;\n })() as T;\n\n callback(callbackParam);\n res[0] = () => {\n // 清理掉当前的回调引用\n const callbacks = cache[actionUrl];\n if (!callbacks) return;\n\n const idx = callbacks.queue.findIndex(\n (func) => func.callback === _callback,\n );\n if (idx !== -1) {\n callbacks.queue.splice(idx, 1);\n }\n };\n resolve(res);\n };\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(actionUrl, _callback, false),\n });\n\n this.worker!.postMessage(\n JSON.stringify({\n type: 'callAndListen',\n param: msg,\n }),\n );\n },\n );\n }\n}\n","// uuid\nfunction S4() {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)\n}\n\n/**\n * 随机生成一个uuid值\n */\nexport default function uuid() {\n // then to call it, plus stitch in '4' in the third group\n return (S4() + S4() + '-' + S4() + '-4' + S4().substr(0, 3) +\n '-' + S4() + '-' + S4() + S4() + S4()).toLowerCase()\n}\n","/**\n * 事件消息\n */\nexport enum WeappBridgeMessage {\n isReady = 'Are You OK?',\n ready = 'I`m OK!',\n ping = 'ping',\n pong = 'pong',\n alive = 'I`m alive!',\n}\n","const endpoint = 'wss://ws.realsee.com'\n\nexport default endpoint\n","/**\n * 拼接ws链接\n * @param tpl\n * @param params\n * @returns\n */\nconst generateWssUrl = (tpl: string, params: Record<string, string>) => {\n const url = Object.keys(params).reduce((res, curr: string) => res.replace(`{{${curr}}}`, `${params[curr]}`), tpl)\n return encodeURI(url)\n}\n\nexport default generateWssUrl\n","const isValidKey = (key: string | number | symbol, object: object): key is keyof typeof object => key in object\nexport default isValidKey\n","/**\n * 解析参数\n * @param query\n * @returns\n */\nconst parseQuery = (query = '') =>\n query\n .replace('?', '')\n .split('&')\n .map((qs: string) => {\n const [k, v] = qs.split('=')\n return { [k]: decodeURIComponent(v) }\n })\n .reduce((result, curr) => ({ ...result, ...curr }), {})\n\nexport default parseQuery\n","const EVENT_SYMBOL = '$$REALSEE_JSBRIDGE_EVENT$$'\n\nexport type EventMap = {\n [name: string]: (...args: any[]) => void | boolean\n}\n\nfunction __generateEventIfNotExisted<T extends EventMap>(\n instance: any,\n): {\n [Key in keyof T]: [callback: (...args: Parameters<T[Key]>) => ReturnType<T[Key]>, once: boolean][]\n } {\n if (!instance[EVENT_SYMBOL]) {\n instance[EVENT_SYMBOL] = {}\n }\n return instance[EVENT_SYMBOL]\n}\n\nfunction __removeEventIfNotExisted(instance: any) {\n if (!instance[EVENT_SYMBOL]) {\n delete instance[EVENT_SYMBOL]\n }\n}\n\n/**\n * 监听者模式\n * @template T 预设的监听回调类型\n * @example\n * ```\n * new Subscribe<{\n * \"foo\": [arg1: number, arg2: string],\n * \"bar\": [arg: boolean],\n * }>()\n * ```\n */\nclass Subscribe<T extends EventMap> {\n /**\n * 判断是否注册了事件\n * @param name 事件类型\n */\n hasListener(name: keyof T): boolean {\n const events = __generateEventIfNotExisted<T>(this)\n return events && events[name] && events[name].length > 0\n }\n\n /**\n * 注册事件\n * @param name 事件类型\n * @param callback 事件回调函数\n * @param once 是否只执行一次\n * @returns 解除事件\n * @template K 预设的监听事件名称\n * @template C 回调函数函数上下文\n */\n on<K extends keyof T>(\n name: K,\n callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n once?: boolean,\n ): () => void {\n const events = __generateEventIfNotExisted<T>(this)\n if (!events[name]) events[name] = []\n events[name].push([callback as any, once || false])\n return () => this.off(name, callback)\n }\n\n /**\n * 注册事件(是否只执行一次)\n * @param name 事件类型\n * @param callback 事件回调函数\n * @returns 解除事件\n * @template K 预设的监听事件名称\n * @template C 回调函数函数上下文\n */\n once<K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>): () => void {\n return this.on(name, callback, true)\n }\n\n /**\n * 解除事件\n *\n * 如果 name 不传的话解除对应所有事件\n * 如果 name, callback 不传的话解除所有name的所有事件\n * @param name 事件类型\n * @param callback 事件回调函数\n * @template K 预设的监听事件名称\n */\n off<K extends keyof T>(name?: K, callback?: (...args: Parameters<T[K]>) => ReturnType<T[K]>): void {\n if (name === undefined) {\n __removeEventIfNotExisted(this)\n return\n }\n const events = __generateEventIfNotExisted<T>(this)\n if (!events[name]) events[name] = []\n if (callback === undefined) {\n events[name].length = 0\n return\n }\n let index = 0\n for (; index < events[name].length; index++) {\n if (events[name][index][0] === callback) break\n }\n if (index < events[name].length) {\n events[name].splice(index, 1)\n }\n }\n\n /**\n * 触发事件\n * @param name 事件类型\n * @param data 触发事件的数据\n * @returns canceled 是否被触发取消\n * @template K 预设的监听事件名称\n */\n emit<K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean {\n let canceled = false\n const events = __generateEventIfNotExisted<T>(this)\n const event = events[name] || []\n for (const one of event.slice()) {\n const [callback, once = false] = one\n const result = callback(...data)\n if (once) this.off(name, callback)\n if (result === false) canceled = true\n }\n return canceled\n }\n}\n\nexport namespace SubscribeMixinType {\n export interface hasListener<T extends EventMap> {\n (name: keyof T): boolean\n }\n export interface on<T extends EventMap> {\n <K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>, once?: boolean): () => void\n }\n export interface once<T extends EventMap> {\n <K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>): () => void\n }\n export interface off<T extends EventMap> {\n <K extends keyof T>(names?: K | K[], callback?: (...args: any[]) => any): void\n }\n export interface emit<T extends EventMap> {\n <K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean\n }\n}\n\nexport { Subscribe }\n","import { Subscribe } from '../../utils/Subscribe';\n\n/**\n * 鲁棒ws的配置参数\n */\nexport type RobustWebSocketConstructorOptions = {\n url: string | ((ws: RobustWebSocket) => string);\n protocols?: string[];\n robustOptions?: RobustOptions;\n};\n\n/**\n * ws 鲁棒性的配置\n */\nexport type RobustOptions = {\n // 等待超时时间\n timeout?: number;\n // 是否进行重连的判断\n shouldReconnect?: (\n event: CloseEvent,\n ws: RobustWebSocket,\n ) => undefined | number;\n // 是否1000的正常关闭code 也需要重连\n should1000Reconnect?: boolean;\n // 是否监听 navigator 上的online/offline 事件\n ignoreConnectivityEvents?: boolean;\n // 是否自动连接\n automaticOpen?: boolean;\n};\n\nexport type RobustWebSocketEventDetail = {\n reconnects: number;\n attempts: number;\n};\n\nexport type RobustWebSocketEvent<T> = Event & {\n detail: T;\n};\n\n// RobustWebSocket事件映射\nexport type RobustWebSocketEventMap = {\n connecting: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n timeout: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n open: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n close: (event: CloseEvent) => void;\n error: (event: Event) => void;\n message: (\n event: MessageEvent<string | ArrayBuffer | Blob | ArrayBufferView>,\n ) => void;\n};\n\n/**\n * 具有鲁棒性的WebSocket封装\n * 1、自动重连\n * 2、可根据网络情况进行重连\n */\nexport class RobustWebSocket extends Subscribe<RobustWebSocketEventMap> {\n private _realWebSocket: WebSocket | undefined;\n private _url?: string | ((ws: RobustWebSocket) => string);\n private _protocols: string[] | undefined;\n private _options: RobustOptions = {\n timeout: 10000,\n shouldReconnect: (event, ws) => {\n if (event.code === 1008 || event.code === 1011) return;\n return [0, 3000, 10000][ws.attempts];\n },\n should1000Reconnect: false,\n ignoreConnectivityEvents: false,\n automaticOpen: false,\n };\n private _connectTimeout: any | undefined;\n private _attempts = 0;\n private _reconnects = -1;\n private _reconnectWhenOnlineAgain = false;\n private _explicitlyClosed = false;\n private _pendingReconnect: number | undefined;\n private _connectivityEventsAttached = false;\n\n public get attempts(): number {\n return this._attempts;\n }\n\n constructor(options?: RobustWebSocketConstructorOptions) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n super();\n if (options) {\n this.setOptions(options);\n }\n }\n\n public setOptions(options: RobustWebSocketConstructorOptions): void {\n if (!options) return;\n this._url = options.url;\n this._protocols = options.protocols;\n const opts = Object.assign(this._options, options.robustOptions || {});\n if (typeof opts?.timeout !== 'number') {\n throw new Error(\n 'timeout must be the number of milliseconds to timeout a connection attempt',\n );\n }\n\n if (typeof opts?.shouldReconnect !== 'function') {\n throw new Error(\n 'shouldReconnect must be a function that returns the number of milliseconds to wait for a reconnect attempt, or null or undefined to not reconnect.',\n );\n }\n this._options = opts;\n if (this._options.automaticOpen) {\n this._createWebSocket();\n }\n }\n\n /**\n * 清理连接中的请求\n */\n private _clearPendingReconnectIfNeeded = () => {\n if (this._pendingReconnect) {\n clearTimeout(this._pendingReconnect);\n this._pendingReconnect = undefined;\n }\n };\n\n /**\n * 当网页连接上网络进行重连\n * @param event\n */\n private _online = (event: Event) => {\n if (this._reconnectWhenOnlineAgain) {\n this._clearPendingReconnectIfNeeded();\n this._reconnect(event as CloseEvent);\n }\n };\n\n /**\n * 当网页断开网络进行关闭\n */\n private _offline = () => {\n this._reconnectWhenOnlineAgain = true;\n this._realWebSocket?.close(1000);\n };\n\n /**\n * 解除网络监听事件\n */\n private _detachConnectivityEvents = () => {\n if (this._connectivityEventsAttached) {\n globalThis?.removeEventListener('online', this._online);\n globalThis?.removeEventListener('offline', this._offline);\n this._connectivityEventsAttached = false;\n }\n };\n\n /**\n * 注册网络监听事件\n */\n private _attachConnectivityEvents = () => {\n if (!this._connectivityEventsAttached) {\n globalThis?.addEventListener('online', this._online);\n globalThis?.addEventListener('offline', this._offline);\n this._connectivityEventsAttached = true;\n }\n };\n\n /**\n * 发送消息\n * @param data\n * @returns\n */\n send = (\n data: string | ArrayBuffer | Blob | ArrayBufferView,\n ): void | undefined => {\n if (this._realWebSocket?.readyState === this._realWebSocket?.OPEN) {\n this._realWebSocket?.send(data);\n }\n };\n\n /**\n * 关闭连接\n * @param code 代码\n * @param reason 原因\n * @returns\n */\n close = (code?: number | string, reason?: string): void | undefined => {\n if (typeof code !== 'number') {\n reason = code;\n code = 1000;\n }\n\n this._clearPendingReconnectIfNeeded();\n this._reconnectWhenOnlineAgain = false;\n this._explicitlyClosed = true;\n this._detachConnectivityEvents();\n\n return this._realWebSocket?.close(code, reason);\n };\n\n /**\n * 进行ws连接\n */\n open = (url?: string): void => {\n if (url) {\n this._url = url;\n }\n if (\n this._realWebSocket?.readyState !== WebSocket.OPEN &&\n this._realWebSocket?.readyState !== WebSocket.CONNECTING\n ) {\n this._clearPendingReconnectIfNeeded();\n this._reconnectWhenOnlineAgain = false;\n this._explicitlyClosed = false;\n\n this._createWebSocket();\n }\n };\n\n /**\n * 创建ws连接\n */\n private _createWebSocket = () => {\n const newUrl =\n typeof this._url === 'string' ? this._url : this._url?.(this);\n if (!newUrl) return;\n this._pendingReconnect = undefined;\n this._removeWebSocketEvent()\n this._realWebSocket = new WebSocket(newUrl, this._protocols || undefined);\n\n this._attempts = this._attempts + 1;\n this.emit(\n 'connecting',\n new CustomEvent('connecting', {\n detail: { attempts: this._attempts, reconnects: this._reconnects },\n }),\n );\n\n const timeoutCallback = () => {\n this._connectTimeout = undefined;\n this._detachConnectivityEvents();\n this.emit(\n 'timeout',\n new CustomEvent('connecting', {\n detail: {\n attempts: this._attempts,\n reconnects: this._reconnects,\n },\n }),\n );\n };\n\n this._connectTimeout = setTimeout(timeoutCallback, this._options?.timeout);\n\n this._dispatchWebSocketEvent();\n\n if (!this._options?.ignoreConnectivityEvents) {\n this._attachConnectivityEvents();\n }\n };\n\n /**\n * 断开ws事件\n */\n private _removeWebSocketEvent = () => {\n this._realWebSocket?.removeEventListener(\n 'open',\n this._webSocketOpenHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'close',\n this._webSocketCloseHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'error',\n this._webSocketErrorHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'message',\n this._webSocketMessageHandler,\n );\n };\n\n /**\n * 分发ws事件\n */\n private _dispatchWebSocketEvent = () => {\n this._realWebSocket?.addEventListener('open', this._webSocketOpenHandler);\n this._realWebSocket?.addEventListener('close', this._webSocketCloseHandler);\n this._realWebSocket?.addEventListener('error', this._webSocketErrorHandler);\n this._realWebSocket?.addEventListener(\n 'message',\n this._webSocketMessageHandler,\n );\n };\n\n /**\n * ws连接事件\n * @returns\n */\n private _webSocketOpenHandler = (event: Event) => {\n if (this._connectTimeout) {\n clearTimeout(this._connectTimeout);\n this._connectTimeout = undefined;\n }\n const reconnects = ++this._reconnects;\n const attempts = this._attempts;\n this._attempts = 0;\n this._reconnectWhenOnlineAgain = false;\n return this.emit(\n 'open',\n Object.assign(event, { detail: { reconnects, attempts } }),\n );\n };\n\n /**\n * ws 关闭事件\n * @param event\n * @returns\n */\n private _webSocketCloseHandler = (event: CloseEvent) => {\n this._reconnect(event);\n return this.emit('close', event);\n };\n\n /**\n * ws 异常\n * @param event\n * @returns\n */\n private _webSocketErrorHandler = (event: Event) => {\n return this.emit(\n 'error',\n new CustomEvent('error', { detail: { error: event } }),\n );\n };\n\n /**\n * ws消息\n * @param event\n * @returns\n */\n private _webSocketMessageHandler = (event: MessageEvent) => {\n return this.emit('message', event);\n };\n\n /**\n * 进行重连\n * @param event\n * @returns\n */\n private _reconnect(event: CloseEvent) {\n if (\n (!this._options?.should1000Reconnect && event.code === 1000) ||\n this._explicitlyClosed\n ) {\n this._attempts = 0;\n return;\n }\n if (globalThis?.navigator?.onLine === false) {\n this._reconnectWhenOnlineAgain = true;\n return;\n }\n\n const delay = this._options?.shouldReconnect?.(event, this);\n if (typeof delay === 'number') {\n this._pendingReconnect = setTimeout(this._createWebSocket, delay);\n }\n }\n}\n","import uuid from '../../utils/uuid';\nimport { JSBridgeReturnType } from '../../typings/JSBridgeProtocol';\nimport { WeappBridgeMessage } from '../typings/WeappBridgeMessage';\nimport { WeappBridgeRequest } from '../typings/WeappBridgeRequest';\nimport { WeappBridgeResponse } from '../typings/WeappBridgeResponse';\nimport defaultWsEndpoint from '../../utils/defaultWsEndpoint';\nimport generateWssUrl from '../../utils/generateWssUrl';\nimport isValidKey from '../../utils/isValidKey';\nimport parseQuery from '../../utils/parseQuery';\nimport { RobustWebSocket } from './RobustWebSocket';\n\nexport interface HybridBridgeLJ {\n getStaticData: (functionName: string) => void;\n callAndBackfeed: (msg: string) => void;\n callAndListen: (msg: string) => void;\n invoke?<P, R>(method: string, args: P): Promise<R>;\n execute?<P, R>(method: string, args: P): Promise<R>;\n isReady: boolean;\n}\n\ninterface RsSchemeRequest {\n id: string;\n actionUrl: string;\n type: 'callAndListen' | 'callAndBackfeed';\n command: 'rsSchemeRequest';\n}\ninterface RsSchemeResponse<T = any> {\n id: string;\n scheme: string;\n result: T;\n errmsg: string;\n command: 'rsSchemeResponse';\n}\n\nexport default class HybridBridge implements HybridBridgeLJ {\n /**\n * @deprecated 兼容旧逻辑\n */\n private _rsWeappBridgeMethodAdapter: Record<string, Function> = {};\n\n private _ws: RobustWebSocket = new RobustWebSocket();\n\n private _readyState: 'uninitialized' | 'connecting' | 'open' | 'close' =\n 'close';\n\n get isReady(): boolean {\n return this._readyState === 'open';\n }\n\n constructor() {\n if ((globalThis?.window as any)?.__Realsee_WxMini_HybridBridge__ instanceof HybridBridge) {\n return (globalThis?.window as any)?.__Realsee_WxMini_HybridBridge__\n }\n if (globalThis?.window) {\n (globalThis.window as any).__Realsee_WxMini_HybridBridge__ = this;\n this.initBuiltInHandlers();\n }\n }\n /**\n * 进行jsbridge的初始化,即打通ws通道\n * @param timeout 超时计时\n * @returns\n */\n initialize = async (timeout = 6000): Promise<JSBridgeReturnType<boolean>> => {\n const res: JSBridgeReturnType<boolean> = [false, null];\n\n const {\n wssid,\n wstsp,\n wssig,\n wsmnt = defaultWsEndpoint,\n } = parseQuery(globalThis.location.search);\n if (!(wssid && wstsp && wssig && wsmnt)) {\n res[1] = new Error('HybridBridge 参数缺失,初始化失败~');\n return res;\n }\n\n const url = generateWssUrl(\n '{{origin}}/{{endpoint}}/{{uuid}}/{{member}}/{{ak}}/{{ts}}/{{sign}}',\n {\n origin: wsmnt,\n endpoint: 'proxy',\n uuid: wssid,\n member: 'webview',\n ak: 'vr_live_miniapp',\n ts: wstsp,\n sign: wssig,\n },\n );\n\n try {\n const result = await this._open(url);\n if (result) {\n this.initBuiltInHandlers();\n res[0] = await this.waitReady(timeout);\n } else {\n res[1] = new Error('HybridBridge ws未连接,初始化失败~');\n }\n } catch (e) {\n res[1] = e as Error;\n }\n\n return res;\n };\n\n /**\n * 内建的处理函数\n */\n private initBuiltInHandlers = () => {\n this._registerLifecycleHandler();\n this._registerHeartbeatHandler();\n this._registerMessageHandler();\n this._registerBridgeRequestHandler();\n this._registerReadyHandler();\n };\n\n /**\n * 进行连接\n * @param url ws链接\n * @returns\n */\n private _open = (url: string) =>\n new Promise((resolve) => {\n const handleOpen = () => {\n this._receivedMessage(\n WeappBridgeMessage.ready,\n () => resolve(true),\n true,\n );\n this._ws.once('timeout', () => resolve(false));\n this.send(WeappBridgeMessage.isReady)\n };\n this._ws.once('open', handleOpen);\n this._ws.open(url);\n });\n\n /**\n * 注册生命周期回调\n */\n private _registerLifecycleHandler = () => {\n this._ws.on('connecting', () => {\n console.log('RsWeappBridge connecting');\n this._readyState = 'connecting';\n });\n\n this._ws.on('open', () => {\n console.log('RsWeappBridge open');\n this._readyState = 'open';\n });\n\n this._ws.on('close', () => {\n this._readyState = 'close';\n });\n\n this._ws.on('error', () => {\n console.log('RsWeappBridge error');\n this._readyState = 'close';\n });\n\n this._ws.on('timeout', () => {\n console.log('RsWeappBridge timeout');\n this._readyState = 'close';\n });\n };\n\n /**\n * 注册心跳的回调\n * @deprecated 兼容老的容器SDK\n */\n private _registerHeartbeatHandler = () => {\n // 收到ping时回复pong\n this._receivedMessage(WeappBridgeMessage.ping, () =>\n setTimeout(() => this._ws.send(WeappBridgeMessage.pong), 500),\n );\n // 收到pong时回复ping\n this._receivedMessage(WeappBridgeMessage.pong, () =>\n setTimeout(() => this._ws.send(WeappBridgeMessage.ping), 1000),\n );\n };\n\n /**\n * 当收到某消息时\n * @param targetMessage 目标消息\n * @param handler 回调\n * @param once 是否一次性处理\n */\n private _receivedMessage = (\n targetMessage: WeappBridgeMessage,\n handler: () => void,\n once?: boolean,\n ): void => {\n const msgHandler = (evnet: MessageEvent) => {\n if (evnet.data === targetMessage) {\n handler();\n if (once) {\n this._ws.off('message', msgHandler);\n }\n }\n };\n this._ws.on('message', msgHandler);\n };\n\n /**\n * 注册准备就绪的回调\n */\n private _registerReadyHandler = () => {\n // 收到就绪询问时回复已就绪\n this._receivedMessage(WeappBridgeMessage.isReady, () =>\n this._ws.send(WeappBridgeMessage.ready),\n );\n };\n\n /**\n * 发送消息\n */\n send = (data: string | ArrayBufferLike | Blob | ArrayBufferView): void => {\n this._ws.send(data);\n };\n\n /**\n * 等待响应\n * @param timeout 超时计时\n * @returns\n */\n waitReady = (timeout = 6000): Promise<boolean> => {\n return new Promise((resolve, reject) => {\n this._receivedMessage(WeappBridgeMessage.ready, () => resolve(true));\n this.send(WeappBridgeMessage.isReady);\n setTimeout(() => reject('HybridBridge 初始化超时~'), timeout);\n });\n };\n\n private _parseMessage = <R = any>(event: MessageEvent) => {\n try {\n return JSON.parse(event.data) as R;\n } catch (e) {\n return event.data as R;\n }\n };\n\n /**\n * 注册消息投递回调\n * @deprecated 兼容老方法\n */\n private _registerMessageHandler = () => {\n this._ws.on('message', (event: MessageEvent) => {\n const message = this._parseMessage(event);\n if (typeof message === 'object') {\n const { id, command, data } = message;\n if (\n command === 'message' &&\n typeof this._rsWeappBridgeMethodAdapter.bindMessage === 'function'\n ) {\n this._rsWeappBridgeMethodAdapter.bindMessage({ id, data });\n }\n }\n });\n };\n\n /**\n * 注册bridge方法回调\n * @deprecated 兼容老方法\n */\n private _registerBridgeRequestHandler() {\n this._ws.on('message', async (event: MessageEvent) => {\n const request = this._parseMessage<WeappBridgeRequest>(event);\n if (typeof request === 'object') {\n const { id, method, args, command } = request;\n if (command === 'request') {\n if (method) {\n let result: any = null;\n let error: any = null;\n let _method: Function | null = null;\n if (\n typeof this._rsWeappBridgeMethodAdapter[method] === 'function'\n ) {\n // 优先读 _rsWeappBridgeMethodAdapter 上注册的方法\n _method = this._rsWeappBridgeMethodAdapter[method];\n } else if (globalThis && isValidKey(method, globalThis)) {\n // 再读 globalThis 下的方法\n _method = globalThis[method];\n }\n if (typeof _method === 'function') {\n try {\n result = await _method(args);\n } catch (e) {\n error = (e as Error).message || e;\n }\n } else {\n error = 'Method not implemented.';\n }\n this.send(\n JSON.stringify({\n id,\n method,\n result,\n error,\n command: 'response',\n } as WeappBridgeResponse),\n );\n }\n }\n }\n });\n }\n\n getStaticData = (callbackFunctionName: string): void => {\n this.callAndBackfeed(\n JSON.stringify({\n actionUrl: 'common/staticData',\n functionName: callbackFunctionName,\n }),\n );\n };\n\n /**\n * 处理 callAndBackfeed\n * @param actionUrl\n * @param backfeed\n */\n private _callAndBackfeed(actionUrl: string, backfeed: Function) {\n const reqId = uuid();\n const data = JSON.stringify({\n id: reqId,\n actionUrl,\n command: 'rsSchemeRequest',\n type: 'callAndBackfeed',\n } as RsSchemeRequest);\n let timer: number | null = null;\n const callback = (event: MessageEvent) => {\n const message = this._parseMessage<RsSchemeResponse>(event);\n if (typeof message === 'object') {\n const { id, result, errmsg, command } = message;\n if (command === 'rsSchemeResponse' && id === reqId) {\n this._ws.off('message', callback);\n if (timer) clearTimeout(timer);\n if (errmsg) {\n console.warn(errmsg);\n backfeed(0);\n } else {\n backfeed(result);\n }\n }\n }\n };\n this._ws.on('message', callback);\n this.send(data);\n // 30s超时处理\n timer = globalThis.setTimeout(() => {\n console.warn('callAndBackfeed timeout');\n backfeed(0);\n }, 30000);\n }\n\n /**\n * 处理一次性执行的方法\n * @param msg JSON.stringify({ actionUrl: string, functionName: string })\n */\n callAndBackfeed = (msg: string) => {\n const { actionUrl = '', functionName = '' } = JSON.parse(msg);\n if (!actionUrl) throw new Error('callAndBackfeed actionUrl is empty!');\n if (!functionName)\n throw new Error('callAndBackfeed functionName is empty!');\n const callback = (result: any) => {\n if (typeof (globalThis as any)[functionName] === 'function') {\n (globalThis as any)[functionName](result);\n }\n };\n this._callAndBackfeed(actionUrl, callback);\n };\n\n /**\n * 处理 _callAndListen\n * @param actionUrl\n * @param fn\n */\n private _callAndListen(actionUrl: string, fn: Function) {\n const reqId = uuid();\n const data = JSON.stringify({\n id: reqId,\n actionUrl,\n command: 'rsSchemeRequest',\n type: 'callAndListen',\n } as RsSchemeRequest);\n const callback = (event: MessageEvent) => {\n const message = this._parseMessage<RsSchemeResponse>(event);\n if (typeof message === 'object') {\n const { id, result, errmsg, command } = message;\n if (command === 'rsSchemeResponse' && id === reqId) {\n if (errmsg) {\n console.warn(errmsg);\n fn(false);\n } else {\n fn(result);\n }\n }\n }\n };\n this._ws.on('message', callback);\n this.send(data);\n }\n\n /**\n * 处理监听\n * @param msg JSON.stringify({ actionUrl: string, functionName: string })\n */\n callAndListen = (msg: string) => {\n const { actionUrl, functionName } = JSON.parse(msg);\n\n if (!actionUrl) throw new Error('callAndListen actionUrl is empty!');\n if (!functionName) throw new Error('callAndListen functionName is empty!');\n\n const callback = (result: any) => {\n if (typeof (globalThis as any)[functionName] === 'function') {\n (globalThis as any)[functionName](result);\n }\n };\n try {\n this._callAndListen(actionUrl, callback);\n } catch (e) {\n console.warn(e);\n callback(false);\n }\n };\n\n /**\n * 执行bridge上的方法\n * @param method 方法名\n * @param args 传递的参数\n * @returns\n */\n async invoke<P, R>(method: string, args: P): Promise<R> {\n return new Promise((success, fail) => {\n const reqId = uuid();\n const data = JSON.stringify({\n id: reqId,\n method,\n args,\n command: 'request',\n });\n let timer: number | null = null;\n const callback = (event: MessageEvent) => {\n const message = this._parseMessage<WeappBridgeResponse>(event);\n if (typeof message === 'object') {\n const { id, result, error, command } = message;\n if (\n command === 'response' &&\n id === reqId &&\n message.method === method\n ) {\n this._ws.off('message', callback);\n if (timer) clearTimeout(timer);\n if (error) {\n fail(error);\n } else {\n success(result as R);\n }\n }\n }\n };\n this._ws.on('message', callback);\n this.send(data);\n // 30s超时处理\n timer = setTimeout(() => fail('method invoke timeout'), 30000);\n });\n }\n\n /**\n * 执行\n * @param method\n * @param args\n * @returns\n */\n public execute = async <P = any, R = any>(\n method: string,\n args?: P,\n ): Promise<R> => await this._invokeBridgeMethod<R>(method, args);\n /**\n *\n * @param method\n * @param args\n * @returns\n * @deprecated 兼容老方法\n */\n private _invokeBridgeMethod = <R = any>(\n method: string,\n args?: any,\n ): Promise<R> =>\n new Promise<R>((success, fail) => {\n const id = uuid();\n const wsBridgeResponsehandler = (event: MessageEvent) => {\n const result = this._parseMessage<WeappBridgeResponse>(event);\n if (typeof result === 'object') {\n if (result.method === method && result.id === id) {\n this._ws.off('message', wsBridgeResponsehandler);\n result.error ? fail(result.error) : success(result.data);\n }\n }\n };\n this._ws.on('message', wsBridgeResponsehandler);\n this.send(JSON.stringify({ method, args, id }));\n });\n}\n","import HybridBridge, { HybridBridgeLJ } from '../miniprogram/hybridBridge';\nimport { registerGlobalValue, cache } from '../utils/registerGlobalValue';\nimport { DeviceInfo } from '../typings/DeviceInfo';\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol';\nimport { BaseController } from './BaseController';\n\n/**\n * Android WebView 控件。\n */\nexport class WxMiniprogramController extends BaseController {\n private _hybridBridge: HybridBridge = new HybridBridge();\n deviceInfo?: DeviceInfo;\n initializing = false;\n\n get hybridBridge() {\n return this._hybridBridge\n }\n \n private checkBridgeReady(timeout = 60000) {\n if (this.ready) return true;\n\n return new Promise<boolean>(async (resolve, reject) => {\n if (this.ready) return resolve(true);\n\n if (this.initializing) {\n // 正在初始化中的时候\n const check = () => {\n if (this.ready) return resolve(true);\n requestAnimationFrame(check);\n };\n check();\n } else {\n this.initializing = true;\n const [res, error] = await this._hybridBridge.initialize(timeout);\n\n if (!res || error) {\n throw error || new Error('HybridBridge 初始化失败~');\n }\n this._hybridBridge.getStaticData(\n registerGlobalValue(\n 'HYBRID_BRIDGE_NAME',\n (data: DeviceInfo | string) => {\n this.deviceInfo = (() => {\n try {\n return JSON.parse(data as string) as DeviceInfo;\n } catch (e) {\n return data as DeviceInfo;\n }\n })();\n },\n ),\n );\n this.initializing = false;\n return resolve(true);\n }\n });\n }\n\n async checkReady(timeout = 60000) {\n const res: JSBridgeReturnType<boolean> = [null, null];\n\n if (this.ready) {\n res[0] = true;\n return res;\n }\n\n try {\n res[0] = await this.checkBridgeReady(timeout);\n } catch (error) {\n res[0] = false;\n res[1] = error as Error;\n }\n\n return res;\n }\n\n get ready() {\n return !!this._hybridBridge.isReady;\n }\n\n get scheme() {\n return this.deviceInfo?.scheme || '';\n }\n\n createSchemeLink(schemeUrl: string) {\n if (schemeUrl.startsWith(this.scheme)) {\n return schemeUrl;\n }\n return this.scheme + '://' + schemeUrl;\n }\n\n async callAndBackfeed<T>(scheme: string) {\n const res = [false, null] as JSBridgeReturnType<T | false>;\n const [ready, readyError] = await this.checkReady();\n\n if (!ready) {\n res[0] = false;\n res[1] = readyError;\n\n return res;\n }\n\n return await new Promise<JSBridgeReturnType<T | false>>(async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme);\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(\n this.createSchemeLink(scheme),\n (data: string) => {\n let d: any = data;\n try {\n d = JSON.parse(data);\n } catch (e) {\n /** no-care */\n }\n res[0] = (() => {\n if (d === 1) return true;\n if (d === 0) return false;\n return d;\n })() as T;\n\n resolve(res);\n },\n ),\n });\n\n this._hybridBridge.callAndBackfeed(msg);\n });\n }\n\n async callAndListen<T>(scheme: string, callback: (data: T) => void) {\n const res = [false, null] as JSBridgeReturnType<false | (() => void)>;\n const [ready, readyError] = await this.checkReady();\n\n if (!ready) {\n res[0] = false;\n res[1] = readyError;\n\n return res;\n }\n\n return await new Promise<JSBridgeReturnType<false | (() => void)>>(\n async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme);\n const _callback = (data: string) => {\n let d: any = data;\n try {\n d = JSON.parse(data);\n } catch (e) {\n /** no-care */\n }\n\n const callbackParam = (() => {\n if (d === 1) return true;\n if (d === 0) return false;\n return d;\n })() as T;\n\n callback(callbackParam);\n res[0] = () => {\n // 清理掉当前的回调引用\n const callbacks = cache[actionUrl];\n if (!callbacks) return;\n\n const idx = callbacks.queue.findIndex(\n (func) => func.callback === _callback,\n );\n if (idx !== -1) {\n callbacks.queue.splice(idx, 1);\n }\n };\n resolve(res);\n };\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(actionUrl, _callback, false),\n });\n\n this._hybridBridge.callAndListen(msg);\n },\n );\n }\n\n async invoke<P, R>(method: string, data?: P) {\n const res = [false, null] as JSBridgeReturnType<false | (() => void)>;\n const [ready, readyError] = await this.checkReady();\n\n if (!ready) {\n res[0] = false;\n res[1] = readyError;\n\n throw readyError;\n } else {\n return (await this._hybridBridge.invoke?.(method, data)) as R;\n }\n }\n}\n","/**\n * WebView 类型枚举。\n */\nexport enum WebViewTypeEnum {\n /**\n * WebKit Android\n */\n WebView = 'WebKit',\n /**\n * WKWebview iOS\n */\n WKWebview = 'WKWebview',\n /**\n * UIWebview iOS\n *\n * @deprecated 性能因素被抛弃\n */\n UIWebview = 'UIWebview',\n /**\n * Browser\n *\n * @description 浏览器\n *\n */\n Browser = 'Browser',\n /**\n * WeChatMPWebView\n */\n WeChatMPWebView = 'WxMiniProgramWebView',\n /**\n * Unsupported\n * @description 未支持的容器\n */\n Unsupported = 'Unsupported',\n}\n","import { Subscribe } from '../utils/Subscribe'\nimport { DeviceInfo } from '../typings/DeviceInfo'\nimport { JSBridgeProtocol, JSBridgeReturnType } from '../typings/JSBridgeProtocol'\nimport { OpenWebViewEnum } from '../typings/OpenWebViewEnum'\nimport { ShareConfig } from '../typings/ShareConfig'\nimport { UserInfo } from '../typings/UserInfo'\nimport { WebViewEventMap } from '../typings/WebViewEventMap'\nimport { WebViewState, OrientationEnum } from '../typings/WebViewState'\nimport { WebViewTypeEnum } from '../typings/WebViewTypeEnum'\n\n/**\n * jsBridge 基础类\n */\nexport abstract class JSBridgeCore extends Subscribe<WebViewEventMap> implements JSBridgeProtocol {\n webViewType: WebViewTypeEnum = WebViewTypeEnum.Unsupported\n\n abstract ready(): Promise<JSBridgeReturnType<boolean>>\n abstract callAndBackfeed<T>(schemeUrl: string): Promise<JSBridgeReturnType<false | T>>\n abstract callAndListen<T>(\n schemeUrl: string,\n callback: (data: T) => void,\n ): Promise<JSBridgeReturnType<false | (() => void)>>\n abstract loadProgress(progress: number): Promise<JSBridgeReturnType<boolean>>\n abstract closeLoading(): Promise<JSBridgeReturnType<boolean>>\n abstract getDeviceInfo(): Promise<JSBridgeReturnType<false | DeviceInfo>>\n abstract getWebViewState(): Promise<JSBridgeReturnType<false | WebViewState>>\n abstract setLeftTopBackButton(enable: boolean): Promise<JSBridgeReturnType<boolean>>\n abstract login(): Promise<JSBridgeReturnType<false | UserInfo>>\n abstract logout(): Promise<JSBridgeReturnType<boolean>>\n abstract getUserInfo(): Promise<JSBridgeReturnType<false | UserInfo>>\n abstract openWebView(url: string, way: OpenWebViewEnum): Promise<JSBridgeReturnType<boolean>>\n abstract closeWebView(): Promise<JSBridgeReturnType<boolean>>\n abstract getBangsHeight(): Promise<JSBridgeReturnType<number | false>>\n abstract setOrientation(orientation: OrientationEnum): Promise<JSBridgeReturnType<boolean>>\n abstract keepScreenLight(enable: boolean): Promise<JSBridgeReturnType<boolean>>\n abstract shock(duration?: number): Promise<JSBridgeReturnType<boolean>>\n abstract minimize(): Promise<JSBridgeReturnType<boolean>>\n abstract saveImage2Album(base64: string): Promise<JSBridgeReturnType<boolean>>\n abstract detectMicro(): Promise<JSBridgeReturnType<boolean>>\n abstract actionShare(shareConfig: Partial<ShareConfig>): Promise<JSBridgeReturnType<boolean>>\n abstract preload(urls: string[]): Promise<JSBridgeReturnType<boolean>>\n abstract createCacheProxyUrl(urls: string | string[]): string[]\n}\n","const userAgent = globalThis.navigator.userAgent\n\nexport const isAndroid = /android/gi.test(userAgent)\n\nexport const isIOS = /iPhone|iPad\\s+OS/gi.test(userAgent)\n\nexport const isWxMiniProgram = /MicroMessenger/gi.test(userAgent) && /miniProgram/gi.test(userAgent)\n\nexport const isRealseeVRWebview = /realsee/gi.test(userAgent)\n","import { WebViewController, WKWebViewController, BaseController } from '../controllers'\nimport { JSBridgeCore } from '../core/JSBridgeCore'\nimport { isRealseeVRWebview, isAndroid, isIOS } from '../utils/clientDetector'\nimport { DeviceInfo } from '../typings/DeviceInfo'\nimport { JSBridgeOptions } from '../typings/JSBridgeOptions'\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol'\nimport { OpenWebViewEnum } from '../typings/OpenWebViewEnum'\nimport { ShareConfig } from '../typings/ShareConfig'\nimport { UserInfo } from '../typings/UserInfo'\nimport { WebViewState, WebViewErrorInfo, OrientationEnum } from '../typings/WebViewState'\nimport { WebViewTypeEnum } from '../typings/WebViewTypeEnum'\n\nconst defaultOptions: Partial<JSBridgeOptions> = {\n timeout: 6000,\n}\n\n/**\n * App 客户端(iOS [WKWebView](https://developer.apple.com/documentation/webkit/wkwebview) 或 Android [WebView](https://developer.android.google.cn/guide/webapps/webview))JSBridge。\n */\nexport class JSBridgeApp extends JSBridgeCore {\n options: JSBridgeOptions\n\n webViewType: WebViewTypeEnum\n\n private _controller: BaseController\n\n constructor(options: Partial<JSBridgeOptions> = {}) {\n super()\n\n this.options = Object.assign(defaultOptions, options)\n\n if (!isRealseeVRWebview) {\n console.warn('未知容器:此版本 `jsBridge` 不支持当前 WebView 容器 ... ')\n }\n\n this.webViewType = (() => {\n if (isAndroid) return WebViewTypeEnum.WebView\n if (isIOS) return WebViewTypeEnum.WKWebview\n return WebViewTypeEnum.Browser\n })()\n\n this._controller = (() => {\n if (isAndroid) return new WebViewController()\n if (isIOS) return new WKWebViewController()\n return new BaseController()\n })()\n\n this.callAndListen<WebViewState>('common/webViewState', (webviewState: WebViewState) => {\n this.emit('webViewStateChange', webviewState)\n })\n this.callAndListen<WebViewErrorInfo>('common/webViewError', (errorInfo: WebViewErrorInfo) => {\n this.emit('error', errorInfo)\n })\n }\n\n async ready() {\n return await this._controller.checkReady(this.options.timeout)\n }\n\n async callAndBackfeed<T>(schemeUrl: string) {\n return await this._controller.callAndBackfeed<T>(schemeUrl)\n }\n\n async callAndListen<T>(schemeUrl: string, callback: (data: T) => void) {\n return await this._controller?.callAndListen<T>(schemeUrl, callback)\n }\n\n async setLeftTopBackButton(enable?: boolean) {\n if (this.webViewType === WebViewTypeEnum.WebView) {\n return [true, null] as JSBridgeReturnType<boolean>\n }\n\n return await this.callAndBackfeed<boolean>(`common/setLeftTopBackButton?enable=${enable ? 1 : 0}`)\n }\n\n async getBangsHeight() {\n return await this.callAndBackfeed<number>('common/getBangsHeight')\n }\n\n async shock(duration = 4) {\n return await this.callAndBackfeed<boolean>(`common/shock?duration=${duration}`)\n }\n\n async minimize() {\n return await this.callAndBackfeed<boolean>(`common/minimize`)\n }\n\n async loadProgress(progress: number) {\n progress = progress < 0 ? 0 : progress > 100 ? 100 : progress\n return await this.callAndBackfeed<boolean>(`common/loadProgress?progress=${progress}`)\n }\n\n async closeLoading() {\n return await this.callAndBackfeed<boolean>(`common/closeLoading`)\n }\n\n async setOrientation(orientation: OrientationEnum) {\n return await this.callAndBackfeed<boolean>(`common/setOrientation?orientation=${orientation}`)\n }\n\n async keepScreenLight(enable: boolean) {\n return await this.callAndBackfeed<boolean>(`common/keepScreenLight?enable=${enable ? 1 : 0}`)\n }\n\n async closeWebView() {\n return await this.callAndBackfeed<boolean>(`common/closeWebView`)\n }\n\n async openWebView(url: string, way: OpenWebViewEnum) {\n return await this.callAndBackfeed<boolean>(`common/openWebView?way=${way}&url=${encodeURIComponent(url)}`)\n }\n\n async saveImage2Album(base64: string) {\n return await this.callAndBackfeed<boolean>(`common/saveImage2Album?base64=${base64}`)\n }\n\n async actionShare(shareConfig: Partial<ShareConfig>) {\n return await this.callAndBackfeed<boolean>(`common/actionShare?json=${JSON.stringify(shareConfig)}`)\n }\n\n async getDeviceInfo() {\n return await this.callAndBackfeed<DeviceInfo>(`common/getDeviceInfo`)\n }\n\n async getUserInfo() {\n return await this.callAndBackfeed<UserInfo>(`common/getUserInfo`)\n }\n\n async getWebViewState() {\n return await this.callAndBackfeed<WebViewState>(`common/getWebViewState`)\n }\n async login() {\n const res = await this.callAndBackfeed<UserInfo>(`common/login`)\n\n if (res[0]) {\n return await this.getUserInfo()\n }\n\n return res\n }\n\n async logout() {\n return await this.callAndBackfeed<boolean>(`common/logout`)\n }\n\n async detectMicro() {\n return await this.callAndBackfeed<boolean>(`common/detectMicro`)\n }\n\n async preload(urls: string[]) {\n urls = urls.map((url) => {\n if (url.startsWith('//')) {\n return 'https:' + url\n }\n\n return url\n })\n return await this.callAndBackfeed<boolean>(`common/preload?urls=${JSON.stringify(urls)}`)\n }\n\n createCacheProxyUrl(urls: string | string[]) {\n urls = Array.isArray(urls) ? urls : [urls]\n const userAgent = window.navigator.userAgent\n\n // 不支持缓存代理\n if (!/supportCache/i.test(userAgent)) {\n return urls\n }\n\n const proxyCache = (url: string) => {\n if (this.webViewType === WebViewTypeEnum.WKWebview) {\n return url.replace(/https*:/, '').replace(/\\/\\//, 'realseeproxycache://')\n } else if (this.webViewType === WebViewTypeEnum.WebView) {\n return url + (url.indexOf('?') !== -1 ? '&' : '?') + 'realseeproxycache=1'\n }\n return url\n }\n\n return urls.map(proxyCache)\n }\n}\n","export enum OpenWebViewEnum {\n /**\n * 在开启的 `VRWebView` 栈中追加一个 `WebView`。\n */\n Append = 'Append',\n /**\n * 强制 先关闭当前的 `VRWebiView` 然后开启新的 `VRWebView`。\n */\n Replace = 'Replace',\n /**\n * 删除所有的 `VRWebView`,仅保留本次新开启的 `VRWebView`。\n */\n Single = 'Single'\n}","import { JSBridgeCore } from '../core/JSBridgeCore'\nimport { DeviceInfo } from '../typings/DeviceInfo'\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol'\nimport { OpenWebViewEnum } from '../typings/OpenWebViewEnum'\nimport { ShareConfig } from '../typings/ShareConfig'\nimport { UserInfo } from '../typings/UserInfo'\nimport { WebViewState, OrientationEnum } from '../typings/WebViewState'\nimport { WebViewTypeEnum } from '../typings/WebViewTypeEnum'\n\n/**\n * 浏览器端的jsbridge\n */\nexport class JSBridgeBrowser extends JSBridgeCore {\n webViewType: WebViewTypeEnum = WebViewTypeEnum.Browser\n\n ready(): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([true, null])\n }\n callAndBackfeed<T>(schemeUrl: string): Promise<JSBridgeReturnType<false | T>> {\n return Promise.resolve([false, null])\n }\n callAndListen<T>(schemeUrl: string, callback: (data: T) => void): Promise<JSBridgeReturnType<false | (() => void)>> {\n return Promise.resolve([() => void 0, null])\n }\n loadProgress(progress: number): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([true, null])\n }\n closeLoading(): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([true, null])\n }\n getDeviceInfo(): Promise<JSBridgeReturnType<false | DeviceInfo>> {\n return Promise.resolve([false, null])\n }\n getWebViewState(): Promise<JSBridgeReturnType<false | WebViewState>> {\n return Promise.resolve([false, null])\n }\n setLeftTopBackButton(enable: boolean): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n login(): Promise<JSBridgeReturnType<false | UserInfo>> {\n return Promise.resolve([false, null])\n }\n logout(): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n getUserInfo(): Promise<JSBridgeReturnType<false | UserInfo>> {\n return Promise.resolve([false, null])\n }\n openWebView(url: string, way: OpenWebViewEnum): Promise<JSBridgeReturnType<boolean>> {\n switch (way) {\n case OpenWebViewEnum.Replace:\n case OpenWebViewEnum.Single: {\n setTimeout(() => globalThis.location.replace(url), 200)\n break\n }\n case OpenWebViewEnum.Append:\n default: {\n setTimeout(() => (globalThis.location.href = url), 200)\n break\n }\n }\n return Promise.resolve([true, null])\n }\n closeWebView(): Promise<JSBridgeReturnType<boolean>> {\n globalThis.close()\n return Promise.resolve([true, null])\n }\n getBangsHeight(): Promise<JSBridgeReturnType<number | false>> {\n return Promise.resolve([0, null])\n }\n setOrientation(orientation: OrientationEnum): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n keepScreenLight(enable: boolean): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n shock(duration?: number): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n minimize(): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n saveImage2Album(base64: string): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n detectMicro(): Promise<JSBridgeReturnType<boolean>> {\n return new Promise<JSBridgeReturnType<boolean>>((resolve) => {\n const rule = { audio: true, video: false }\n try {\n globalThis.navigator.mediaDevices\n .getUserMedia(rule)\n .then(() => resolve([true, null]))\n .catch((e) => resolve([false, e]))\n } catch (e) {\n console.error(e)\n resolve([false, e as Error])\n }\n })\n }\n actionShare(shareConfig: Partial<ShareConfig>): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n preload(urls: string[]): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n createCacheProxyUrl(urls: string | string[]): string[] {\n return []\n }\n}\n","import { WxMiniprogramController } from '../controllers';\nimport { JSBridgeCore } from '../core/JSBridgeCore';\nimport { isWxMiniProgram } from '../utils/clientDetector';\nimport { DeviceInfo } from '../typings/DeviceInfo';\nimport { JSBridgeOptions } from '../typings/JSBridgeOptions';\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol';\nimport { OpenWebViewEnum } from '../typings/OpenWebViewEnum';\nimport { ShareConfig } from '../typings/ShareConfig';\nimport { UserInfo } from '../typings/UserInfo';\nimport {\n WebViewState,\n WebViewErrorInfo,\n OrientationEnum,\n} from '../typings/WebViewState';\nimport { WebViewTypeEnum } from '../typings/WebViewTypeEnum';\n\nconst defaultOptions: Partial<JSBridgeOptions> = {\n timeout: 60000,\n};\n\n/**\n * 小程序 [web-view](https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html) JSBridge。\n */\nexport class JSBridgeMiniprogram extends JSBridgeCore {\n options: JSBridgeOptions & { wsOrigin?: string };\n _controller: WxMiniprogramController = new WxMiniprogramController();\n webViewType: WebViewTypeEnum;\n\n constructor(options: Partial<JSBridgeOptions> = {}) {\n super();\n\n this.options = Object.assign(defaultOptions, options);\n\n if (!isWxMiniProgram) {\n console.warn('未知容器:此版本 `jsBridge` 不支持当前 WebView 容器 ... ');\n }\n\n this.webViewType = WebViewTypeEnum.WeChatMPWebView;\n\n this.callAndListen<WebViewState>(\n 'common/webViewState',\n (webviewState: WebViewState) => {\n this.emit('webViewStateChange', webviewState);\n },\n );\n this.callAndListen<WebViewErrorInfo>(\n 'common/webViewError',\n (errorInfo: WebViewErrorInfo) => {\n this.emit('error', errorInfo);\n },\n );\n }\n\n async ready() {\n return await this._controller.checkReady(this.options.timeout);\n }\n\n async callAndBackfeed<T>(schemeUrl: string) {\n return await this._controller.callAndBackfeed<T>(schemeUrl);\n }\n\n async callAndListen<T>(schemeUrl: string, callback: (data: T) => void) {\n return await this._controller.callAndListen(schemeUrl, callback);\n }\n\n async setLeftTopBackButton(enable?: boolean) {\n if (this.webViewType === WebViewTypeEnum.WebView) {\n return [true, null] as JSBridgeReturnType<boolean>;\n }\n\n return await this.callAndBackfeed<boolean>(\n `common/setLeftTopBackButton?enable=${enable ? 1 : 0}`,\n );\n }\n\n async getBangsHeight() {\n return await this.callAndBackfeed<number>('common/getBangsHeight');\n }\n\n async shock(duration = 4) {\n return await this.callAndBackfeed<boolean>(\n `common/shock?duration=${duration}`,\n );\n }\n\n async minimize() {\n return await this.callAndBackfeed<boolean>(`common/minimize`);\n }\n\n async loadProgress(progress: number) {\n progress = progress < 0 ? 0 : progress > 100 ? 100 : progress;\n return await this.callAndBackfeed<boolean>(\n `common/loadProgress?progress=${progress}`,\n );\n }\n\n async closeLoading() {\n return await this.callAndBackfeed<boolean>(`common/closeLoading`);\n }\n\n async setOrientation(orientation: OrientationEnum) {\n return await this.callAndBackfeed<boolean>(\n `common/setOrientation?orientation=${orientation}`,\n );\n }\n\n async keepScreenLight(enable: boolean) {\n return await this.callAndBackfeed<boolean>(\n `common/keepScreenLight?enable=${enable ? 1 : 0}`,\n );\n }\n\n async closeWebView() {\n return await this.callAndBackfeed<boolean>(`common/closeWebView`);\n }\n\n async openWebView(url: string, way: OpenWebViewEnum) {\n return await this.callAndBackfeed<boolean>(\n `common/openWebView?way=${way}&url=${encodeURIComponent(url)}`,\n );\n }\n\n async saveImage2Album(base64: string) {\n return await this.callAndBackfeed<boolean>(\n `common/saveImage2Album?base64=${base64}`,\n );\n }\n\n async actionShare(shareConfig: Partial<ShareConfig>) {\n const config = {\n path: shareConfig.miniprogram?.[0].path,\n title: shareConfig.miniprogram?.[0].title,\n imageUrl: shareConfig.miniprogram?.[0].hdImageData,\n };\n return await this.callAndBackfeed<boolean>(\n `common/actionShare?json=${JSON.stringify(config)}`,\n );\n }\n\n async getDeviceInfo() {\n return await this.callAndBackfeed<DeviceInfo>(`common/getDeviceInfo`);\n }\n\n async getUserInfo() {\n return await this.callAndBackfeed<UserInfo>(`common/getUserInfo`);\n }\n\n async getWebViewState() {\n return await this.callAndBackfeed<WebViewState>(`common/getWebViewState`);\n }\n async login() {\n const res = await this.callAndBackfeed<UserInfo>(`common/login`);\n\n if (res[0]) {\n return await this.getUserInfo();\n }\n\n return res;\n }\n\n async logout() {\n return await this.callAndBackfeed<boolean>(`common/logout`);\n }\n\n async detectMicro() {\n return await this.callAndBackfeed<boolean>(`common/detectMicro`);\n }\n\n async preload(urls: string[]) {\n urls = urls.map((url) => {\n if (url.startsWith('//')) {\n return 'https:' + url;\n }\n\n return url;\n });\n return await this.callAndBackfeed<boolean>(\n `common/preload?urls=${JSON.stringify(urls)}`,\n );\n }\n\n createCacheProxyUrl(urls: string | string[]) {\n urls = Array.isArray(urls) ? urls : [urls];\n const userAgent = window.navigator.userAgent;\n\n // 不支持缓存代理\n if (!/supportCache/i.test(userAgent)) {\n return urls;\n }\n\n const proxyCache = (url: string) => {\n if (this.webViewType === WebViewTypeEnum.WKWebview) {\n return url\n .replace(/https*:/, '')\n .replace(/\\/\\//, 'realseeproxycache://');\n } else if (this.webViewType === WebViewTypeEnum.WebView) {\n return (\n url + (url.indexOf('?') !== -1 ? '&' : '?') + 'realseeproxycache=1'\n );\n }\n return url;\n };\n\n return urls.map(proxyCache);\n }\n\n async invokeNativeApi<P, R>(method: string, data?: P) {\n return await this._controller.invoke<P, R>(method, data);\n }\n\n async execute(method: string, args?: any) {\n return await this._controller?.hybridBridge?.execute?.(method, args);\n }\n}\n","import { JSBridgeApp } from './app'\nimport { JSBridgeBrowser } from './browser'\nimport { JSBridgeCore } from './core/JSBridgeCore'\nimport { JSBridgeMiniprogram } from './miniprogram'\nimport { isAndroid, isIOS, isRealseeVRWebview, isWxMiniProgram } from './utils/clientDetector'\nimport { JSBridgeOptions } from './typings/JSBridgeOptions'\nexport type { JSBridgeProtocol } from './typings/JSBridgeProtocol'\n\n/**\n * 平台相关的jsBridge类,根据平台自动加载不同的jsBridge实例\n */\n// @ts-ignore\nexport default class JSBridge extends JSBridgeCore {\n constructor(options: Partial<JSBridgeOptions> = {}) {\n super()\n if (isRealseeVRWebview && (isAndroid || isIOS)) return new JSBridgeApp(options)\n if (isWxMiniProgram) return new JSBridgeMiniprogram(options)\n return new JSBridgeBrowser()\n }\n}\n\nexport { JSBridgeApp, JSBridgeBrowser, JSBridgeMiniprogram, JSBridgeCore }\n",null,"export function appendUri(uri: string, query: Record<string, string | number> = {}) {\n const hasQuery = uri.indexOf('?') !== -1\n const newQuery = Object.keys(query).reduce(\n (accu, curr, idx) =>\n `${accu}${(idx === 0 && !hasQuery) ? '?' : '&'}${curr}=${query[curr]}`,\n '')\n\n return uri + newQuery\n}\n","const userAgent = globalThis.navigator.userAgent\n\nexport const isAndroid = /android/gi.test(userAgent)\n\nexport const isIOS = /iPhone|iPad\\s+OS/gi.test(userAgent)\n\nexport const isWxMiniProgram = /MicroMessenger/gi.test(userAgent) && /miniProgram/gi.test(userAgent)\n\nexport const isRealseeVRWebview = /realsee/gi.test(userAgent)\n","/**\n * 判断是否是真实的对象类型\n * @param value\n * @returns\n */\nfunction isTrulyObject(value: any): boolean {\n return Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * 判断基础类型是否相等\n * @param value\n * @param other\n * @returns\n */\nfunction baseIsEqual(value: any, other: any): boolean {\n if (value === other) return true;\n if (typeof value !== typeof other) return false;\n if (Number.isNaN(value) && Number.isNaN(other)) return true;\n return false;\n}\n\n/**\n * 对象浅比较\n * @param value\n * @param other\n * @returns\n */\nfunction objEqualShallow(value: any, other: any): boolean {\n const valueProps = Object.getOwnPropertyNames(value);\n const otherProps = Object.getOwnPropertyNames(other);\n if (valueProps.length !== otherProps.length) return false;\n\n for (let i = 0, len = valueProps.length; i < len; i++) {\n const propName = valueProps[i];\n if (!baseIsEqual(value[propName], other[propName])) return false;\n }\n\n return true;\n}\n\n/**\n * 数组浅比较\n * @param value\n * @param other\n * @returns\n */\nfunction arrayEqualShallow(value: any, other: any): boolean {\n if (value.length !== other.length) return false;\n for (let i = 0, len = value.length; i < len; i++) {\n if (!baseIsEqual(value[i], other[i])) return false;\n }\n return true;\n}\n\n/**\n * 变量浅比较\n * @param value\n * @param other\n * @returns\n */\nfunction isShallowEqual(value: any, other: any): boolean {\n if (baseIsEqual(value, other)) return true;\n if (isTrulyObject(value) && isTrulyObject(other))\n return objEqualShallow(value, other);\n if (Array.isArray(value) && Array.isArray(other))\n return arrayEqualShallow(value, other);\n return false;\n}\n\n/**\n * 对象深比较\n * @param value\n * @param other\n * @returns\n */\nfunction isDeepEqual(value: any, other: any): boolean {\n if (baseIsEqual(value, other)) return true;\n if (isTrulyObject(value) && isTrulyObject(other))\n return objEqualDeep(value, other);\n if (Array.isArray(value) && Array.isArray(other))\n return arrayEqualDeep(value, other);\n return false;\n}\n\n/**\n * 数组深比较\n * @param value\n * @param other\n * @returns\n */\nfunction arrayEqualDeep(value: any, other: any): boolean {\n if (value.length !== other.length) return false;\n for (let i = 0, len = value.length; i < len; i++) {\n if (!isDeepEqual(value[i], other[i])) return false;\n }\n return true;\n}\n\n/**\n * 对象深比较\n * @param value\n * @param other\n * @returns\n */\nfunction objEqualDeep(value: any, other: any): boolean {\n const valueProps = Object.getOwnPropertyNames(value);\n const otherProps = Object.getOwnPropertyNames(other);\n if (valueProps.length !== otherProps.length) return false;\n\n for (let i = 0, len = valueProps.length; i < len; i++) {\n const propName = valueProps[i];\n if (!isDeepEqual(value[propName], other[propName])) return false;\n }\n\n return true;\n}\n\n/**\n * 对象比较。\n * @param value 第一个比较的值。\n * @param other 第二个比较的值。\n * @param options 可选参数,可选项:`deep` 是否深比较。\n * @returns {boolean} 是否相等。\n */\nexport function equal(value: any, other: any, opt = { deep: false }): boolean {\n if (!opt.deep) return isShallowEqual(value, other);\n return isDeepEqual(value, other);\n}\n","import { WebSocketState } from '../typings';\nimport { Subscribe } from './subscribe';\n\n/**\n * 鲁棒ws的配置参数\n */\nexport type RobustWebSocketConstructorOptions = {\n url: string | ((ws: RobustWebSocket) => string);\n protocols?: string[];\n robustOptions?: RobustOptions;\n};\n\n/**\n * ws 鲁棒性的配置\n */\nexport type RobustOptions = {\n // 等待超时时间\n timeout?: number;\n // 是否进行重连的判断\n shouldReconnect?: (\n event: CloseEvent,\n ws: RobustWebSocket,\n ) => undefined | number;\n // 是否1000的正常关闭code 也需要重连\n should1000Reconnect?: boolean;\n // 是否监听 navigator 上的online/offline 事件\n ignoreConnectivityEvents?: boolean;\n // 是否自动连接\n automaticOpen?: boolean;\n};\n\nexport type RobustWebSocketEventDetail = {\n reconnects: number;\n attempts: number;\n};\n\nexport type RobustWebSocketEvent<T> = Event & {\n detail: T;\n};\n\n// RobustWebSocket事件映射\nexport type RobustWebSocketEventMap = {\n connecting: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n timeout: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n open: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n closing: () => void;\n close: (event: CloseEvent) => void;\n error: (event: Event) => void;\n message: (\n event: MessageEvent<string | ArrayBuffer | Blob | ArrayBufferView>,\n ) => void;\n};\n\n/**\n * 具有鲁棒性的WebSocket封装\n * 1、自动重连\n * 2、可根据网络情况进行重连\n */\nexport class RobustWebSocket extends Subscribe<RobustWebSocketEventMap> {\n private _realWebSocket: WebSocket | undefined;\n private _url?: string | ((ws: RobustWebSocket) => string);\n private _protocols: string[] | undefined;\n private _readyState: WebSocketState = WebSocketState.NOTINITIALIZED;\n private _options: RobustOptions = {\n timeout: 10000,\n shouldReconnect: (event, ws) => {\n if (event.code === 1008 || event.code === 1011) return;\n return [0, 3000, 10000][ws.attempts];\n },\n should1000Reconnect: false,\n ignoreConnectivityEvents: false,\n automaticOpen: false,\n };\n private _connectTimeout: any | undefined;\n private _attempts = 0;\n private _reconnects = -1;\n private _reconnectWhenOnlineAgain = false;\n private _explicitlyClosed = false;\n private _pendingReconnect: number | undefined;\n private _connectivityEventsAttached = false;\n private _heathCheckTimer: number | undefined;\n\n public get attempts(): number {\n return this._attempts;\n }\n\n constructor(options?: RobustWebSocketConstructorOptions) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n super();\n if (options) {\n this.setOptions(options);\n }\n this._startHealthCheck();\n }\n\n public setOptions(options: RobustWebSocketConstructorOptions): void {\n if (!options) return;\n this._url = options.url;\n this._protocols = options.protocols;\n const opts = Object.assign(this._options, options.robustOptions || {});\n if (typeof opts?.timeout !== 'number') {\n throw new Error(\n 'timeout must be the number of milliseconds to timeout a connection attempt',\n );\n }\n\n if (typeof opts?.shouldReconnect !== 'function') {\n throw new Error(\n 'shouldReconnect must be a function that returns the number of milliseconds to wait for a reconnect attempt, or null or undefined to not reconnect.',\n );\n }\n this._options = opts;\n if (this._options.automaticOpen) {\n this._createWebSocket();\n }\n }\n\n /**\n * 做一个健康检查\n */\n private _healthCheck = async () => {\n if (\n this._realWebSocket &&\n this._realWebSocket.readyState !== this._readyState\n ) {\n this._readyState = this._realWebSocket.readyState as WebSocketState;\n // 太惨了,断网的时候,ws不会直接closed,而是处于closing的状态\n if (this._readyState === WebSocketState.CLOSING) {\n this.emit('closing');\n }\n }\n await new Promise((resolve) => setTimeout(resolve, 2000));\n this._heathCheckTimer = requestAnimationFrame(this._healthCheck);\n };\n\n /**\n * 清理健康检查\n */\n private _clearHeathCheckIfNeed = () => {\n if (this._heathCheckTimer) {\n cancelAnimationFrame(this._heathCheckTimer);\n this._heathCheckTimer = undefined;\n }\n };\n\n /**\n * 开启健康检查\n */\n private _startHealthCheck = () => {\n this._clearHeathCheckIfNeed();\n this._heathCheckTimer = requestAnimationFrame(this._healthCheck);\n };\n\n /**\n * 停止健康检查\n */\n private _stopHealthCheck = () => {\n this._clearHeathCheckIfNeed();\n };\n\n /**\n * 清理连接中的请求\n */\n private _clearPendingReconnectIfNeeded = () => {\n if (this._pendingReconnect) {\n clearTimeout(this._pendingReconnect);\n this._pendingReconnect = undefined;\n }\n };\n\n /**\n * 当网页连接上网络进行重连\n * @param event\n */\n private _online = (event: Event) => {\n if (this._reconnectWhenOnlineAgain) {\n this._clearPendingReconnectIfNeeded();\n this._reconnect(event as CloseEvent);\n }\n };\n\n /**\n * 当网页断开网络进行关闭\n */\n private _offline = () => {\n this._reconnectWhenOnlineAgain = true;\n this._realWebSocket?.close(1000, 'offline');\n };\n\n /**\n * 解除网络监听事件\n */\n private _detachConnectivityEvents = () => {\n if (this._connectivityEventsAttached) {\n globalThis?.removeEventListener('online', this._online);\n globalThis?.removeEventListener('offline', this._offline);\n this._connectivityEventsAttached = false;\n }\n };\n\n /**\n * 注册网络监听事件\n */\n private _attachConnectivityEvents = () => {\n if (!this._connectivityEventsAttached) {\n globalThis?.addEventListener('online', this._online);\n globalThis?.addEventListener('offline', this._offline);\n this._connectivityEventsAttached = true;\n }\n };\n\n /**\n * 发送消息\n * @param data\n * @returns\n */\n send = (\n data: string | ArrayBuffer | Blob | ArrayBufferView,\n ): void | undefined => {\n if (this._realWebSocket?.readyState === this._realWebSocket?.OPEN) {\n this._realWebSocket?.send(data);\n }\n };\n\n /**\n * 关闭连接\n * @param code 代码\n * @param reason 原因\n * @returns\n */\n close = (code?: number | string, reason?: string): void | undefined => {\n if (typeof code !== 'number') {\n reason = code;\n code = 1000;\n }\n this._clearPendingReconnectIfNeeded();\n this._reconnectWhenOnlineAgain = false;\n this._explicitlyClosed = true;\n this._detachConnectivityEvents();\n\n return this._realWebSocket?.close(code, reason);\n };\n\n /**\n * 进行ws连接\n */\n open = (url?: string): void => {\n if (url) {\n this._url = url;\n }\n if (\n this._realWebSocket?.readyState !== WebSocket.OPEN &&\n this._realWebSocket?.readyState !== WebSocket.CONNECTING\n ) {\n this._clearPendingReconnectIfNeeded();\n this._reconnectWhenOnlineAgain = false;\n this._explicitlyClosed = false;\n\n this._createWebSocket();\n }\n };\n\n /**\n * 创建ws连接\n */\n private _createWebSocket = () => {\n const newUrl =\n typeof this._url === 'string' ? this._url : this._url?.(this);\n if (!newUrl) return;\n this._pendingReconnect = undefined;\n this._removeWebSocketEvent();\n this._realWebSocket = new WebSocket(newUrl, this._protocols || undefined);\n\n this._attempts = this._attempts + 1;\n this.emit(\n 'connecting',\n new CustomEvent('connecting', {\n detail: { attempts: this._attempts, reconnects: this._reconnects },\n }),\n );\n\n const timeoutCallback = () => {\n this._connectTimeout = undefined;\n this._detachConnectivityEvents();\n this.emit(\n 'timeout',\n new CustomEvent('connecting', {\n detail: {\n attempts: this._attempts,\n reconnects: this._reconnects,\n },\n }),\n );\n };\n\n this._connectTimeout = setTimeout(timeoutCallback, this._options?.timeout);\n\n this._dispatchWebSocketEvent();\n\n if (!this._options?.ignoreConnectivityEvents) {\n this._attachConnectivityEvents();\n }\n };\n\n /**\n * 断开ws事件\n */\n private _removeWebSocketEvent = () => {\n this._realWebSocket?.removeEventListener(\n 'open',\n this._webSocketOpenHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'close',\n this._webSocketCloseHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'error',\n this._webSocketErrorHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'message',\n this._webSocketMessageHandler,\n );\n };\n\n /**\n * 分发ws事件\n */\n private _dispatchWebSocketEvent = () => {\n this._realWebSocket?.addEventListener('open', this._webSocketOpenHandler);\n this._realWebSocket?.addEventListener('close', this._webSocketCloseHandler);\n this._realWebSocket?.addEventListener('error', this._webSocketErrorHandler);\n this._realWebSocket?.addEventListener(\n 'message',\n this._webSocketMessageHandler,\n );\n };\n\n /**\n * ws连接事件\n * @returns\n */\n private _webSocketOpenHandler = (event: Event) => {\n if (this._connectTimeout) {\n clearTimeout(this._connectTimeout);\n this._connectTimeout = undefined;\n }\n const reconnects = ++this._reconnects;\n const attempts = this._attempts;\n this._attempts = 0;\n this._reconnectWhenOnlineAgain = false;\n this._startHealthCheck();\n return this.emit(\n 'open',\n Object.assign(event, { detail: { reconnects, attempts } }),\n );\n };\n\n /**\n * ws 关闭事件\n * @param event\n * @returns\n */\n private _webSocketCloseHandler = (event: CloseEvent) => {\n this._reconnect(event);\n this._stopHealthCheck();\n return this.emit('close', event);\n };\n\n /**\n * ws 异常\n * @param event\n * @returns\n */\n private _webSocketErrorHandler = (event: Event) => {\n return this.emit(\n 'error',\n new CustomEvent('error', { detail: { error: event } }),\n );\n };\n\n /**\n * ws消息\n * @param event\n * @returns\n */\n private _webSocketMessageHandler = (event: MessageEvent) => {\n return this.emit('message', event);\n };\n\n /**\n * 进行重连\n * @param event\n * @returns\n */\n private _reconnect(event: CloseEvent) {\n if (\n (!this._options?.should1000Reconnect && event.code === 1000) ||\n this._explicitlyClosed\n ) {\n this._attempts = 0;\n return;\n }\n if (globalThis?.navigator?.onLine === false) {\n this._reconnectWhenOnlineAgain = true;\n return;\n }\n\n const delay = this._options?.shouldReconnect?.(event, this);\n if (typeof delay === 'number') {\n this._pendingReconnect = setTimeout(this._createWebSocket, delay);\n }\n }\n}\n","import { LiveMsg, parseWSClsErr } from '../typings';\nimport { LiveState } from '../typings/live/LiveState';\nimport logger from '../utils/logger';\nimport {\n RobustWebSocket,\n RobustWebSocketEventDetail,\n RobustWebSocketEvent,\n} from '../utils/RobustWebSocket';\nimport { Subscribe } from '../utils/subscribe';\n\nexport type LiveControllerEventMap = {\n stateChange: (state: LiveState, prevState: LiveState) => void;\n message: (message: LiveMsg) => void;\n reconnected: (detail: RobustWebSocketEventDetail) => void;\n};\n\nexport class LiveController extends Subscribe<LiveControllerEventMap> {\n /**\n * ws代理器\n */\n private _ws: RobustWebSocket = new RobustWebSocket({\n url: '',\n robustOptions: { timeout: 180000 },\n });\n\n /**\n * 带看连接状态\n */\n private _state = LiveState.NOTINITIALIZED;\n\n set state(state: LiveState) {\n const prevState = JSON.parse(JSON.stringify(this._state));\n this._state = state;\n this.emit('stateChange', this.state, prevState);\n }\n\n get state() {\n return this._state;\n }\n\n constructor() {\n super();\n this._addWebSocketEventListeners();\n }\n\n /**\n * 添加事件监听\n */\n private _addWebSocketEventListeners = () => {\n this._ws.on('close', this._handleCloseEvent);\n this._ws.on('closing', this._handleClosingEvent);\n this._ws.on('connecting', this._handleConnectingEvent);\n this._ws.on('error', this._handleErrorEvent);\n this._ws.on('message', this._handleMessageEvent);\n this._ws.on('open', this._handleOpenEvent);\n this._ws.on('timeout', this._handleTimeoutEvent);\n };\n\n /**\n * 移除事件监听\n */\n private _removeWebSocketEventListeners = () => {\n this._ws.off('close', this._handleCloseEvent);\n this._ws.off('closing', this._handleClosingEvent);\n this._ws.off('connecting', this._handleConnectingEvent);\n this._ws.off('error', this._handleErrorEvent);\n this._ws.off('message', this._handleMessageEvent);\n this._ws.off('open', this._handleOpenEvent);\n this._ws.off('timeout', this._handleTimeoutEvent);\n };\n\n /**\n * 处理房间关闭事件\n * @param event\n */\n private _handleCloseEvent = (event: CloseEvent) => {\n logger.info(\n `live room closed bacause of ${event.code}-${\n event.reason || parseWSClsErr(event.code)\n }`,\n );\n this.state = LiveState.CLOSED;\n };\n\n /**\n * 处理房间正在关闭事件(这个时候可能是断网了)\n */\n private _handleClosingEvent = () => {\n logger.info(`live room is closing, onLine:`, globalThis?.navigator?.onLine);\n this.state = LiveState.CLOSED;\n };\n\n /**\n * 连接中\n * @param event\n */\n private _handleConnectingEvent = () => {\n logger.info(`live room is connecting`);\n this.state = LiveState.CONNECTING;\n };\n\n /**\n * 连接发送异常\n * @param event\n */\n private _handleErrorEvent = (event: Event) => {\n logger.error(`live room error`, event);\n this.state = LiveState.CLOSED;\n };\n\n /**\n * 接收到消息\n * @param event\n */\n private _handleMessageEvent = (event: MessageEvent) => {\n // logger.info('live room received message ', event.data);\n let message = (() => {\n try {\n return JSON.parse(event.data);\n } catch (e) {\n return event.data;\n }\n })() as LiveMsg;\n this.emit('message', message);\n };\n\n /**\n * 连接建立成功\n * @param event\n */\n private _handleOpenEvent = (\n event: RobustWebSocketEvent<RobustWebSocketEventDetail>,\n ) => {\n logger.info('live room open', event.detail);\n this.state = LiveState.OPEN;\n if (event.detail.reconnects > 0) {\n this.emit('reconnected', event.detail);\n }\n };\n\n /**\n * 处理超时\n * @param event\n */\n private _handleTimeoutEvent = (\n event: RobustWebSocketEvent<RobustWebSocketEventDetail>,\n ) => {\n logger.error('live room connect timeout!', event.detail);\n this.state = LiveState.CLOSED;\n };\n\n /**\n * 释放资源,释放之后需要重新实例化\n * @returns\n */\n dispose = async () => {\n this._removeWebSocketEventListeners();\n return await this.close('live room close by controller disposed!');\n };\n\n /**\n * 开启房间链接\n * @param url 房间链接\n * @returns\n */\n open = (url: string) => this._ws.open(url);\n\n /**\n * 关闭房间\n * @param code\n * @param reason\n */\n close = (code?: string | number | undefined, reason?: string | undefined) =>\n new Promise<boolean>((resolve) => {\n this._ws.once('close', () => resolve(true));\n this._ws.close(code, reason);\n });\n\n /**\n * 发送数据\n * @param data\n */\n sendMessage(data: any = '') {\n if (data === undefined || data === null || data === '') {\n throw new Error('live message is empty!');\n }\n if (this.state === LiveState.OPEN) {\n return this._ws.send(JSON.stringify(data));\n } else {\n throw new Error('live has not yet been initialized!');\n }\n }\n}\n","import JSBridge, { JSBridgeProtocol } from '@realsee/jsbridge-x';\nimport LogLevel from 'amazon-chime-sdk-js/build/logger/LogLevel';\nimport {\n BrowserRTC,\n BrowserRTC4Chime,\n RTCProtocol,\n VRWebViewRTC,\n} from '../rtc';\nimport {\n BuiltInRTCType,\n Command,\n EventType,\n GetVoiceSign,\n KeyframeTypes,\n LiveOptions,\n RoomInfo,\n RTCType,\n UserInfo,\n ReqLiveMsg,\n BuiltinEventType,\n BuiltinActionType,\n MicroStatus,\n LiveMsg,\n BuiltinMsg,\n LiveConnectOptions,\n} from '../typings';\nimport { LiveState } from '../typings/live/LiveState';\nimport { appendUri } from '../utils/appendUri';\nimport {\n isRealseeVRWebview,\n isAndroid,\n isIOS,\n isWxMiniProgram,\n} from '../utils/clientDetector';\nimport { equal } from '../utils/equal';\nimport logger from '../utils/logger';\nimport { Subscribe } from '../utils/subscribe';\nimport { uuid } from '../utils/uuid';\nimport { LiveController } from './controller';\n\nconst unimplementedGetVoiceSign: GetVoiceSign = (params) =>\n Promise.reject('unimplemented method GetVoiceSign');\n\nexport type LiveBuiltInData<KeyframesSnapshot> = {\n selfInfo?: UserInfo;\n userList?: UserInfo[];\n roomInfo?: RoomInfo;\n rtcInfo?: { voiceId: string; type: RTCType };\n keyframes: Partial<KeyframesSnapshot>;\n};\n\nconst createLiveMsg = (\n command: Command,\n data: Record<string, any> = {},\n toUserIds: string | string[] = [],\n): ReqLiveMsg => ({\n command,\n front_request_id: uuid(),\n data: {\n ...data,\n to_user_ids: Array.isArray(toUserIds) ? toUserIds : [toUserIds],\n },\n});\n\nexport const _clearLiveInstanceIfNeed = () => {\n if ((window as any)?.__Realsee_Live__) {\n (window as any)?.__Realsee_Live__?.dispose?.();\n (window as any).__Realsee_Live__ = null;\n }\n};\n\nexport class Live<\n KeyframesSnapshot extends Record<string, any>,\n> extends Subscribe<EventType<KeyframesSnapshot>> {\n /**\n * 带看的配置\n */\n private _options: LiveOptions = {};\n\n get options(): LiveOptions {\n return Object.freeze(this._options || {});\n }\n\n /**\n * 带看状态\n */\n get state() {\n return this._controller.state;\n }\n\n /**\n * 兼容老逻辑\n * @deprecated 请直接读取 state 属性字段,未来将移除该属性\n */\n get readyState() {\n return this._controller.state;\n }\n\n /**\n * 获取当前WebSocket连接的URL。(注意:这个是WebSocket连接的完整连接,附带一些query参数)。\n * @deprecated 带看不需要关注底层ws的相关信息,未来将移除\n */\n get url(): string | undefined {\n return this.options.url;\n }\n\n /**\n * 获取当前live使用的RTC实例\n */\n get $RTC(): RTCProtocol {\n return this._options.rtc!;\n }\n\n /**\n * 获取当前live使用的jsBridge实例\n */\n get jsBridge(): JSBridgeProtocol {\n return this._options.jsBridge!;\n }\n\n /**\n * 帧数据监听\n */\n keyframes: Subscribe<KeyframeTypes<KeyframesSnapshot>> = new Subscribe();\n\n /**\n * 内置的一些数据\n */\n private _buildInData: LiveBuiltInData<KeyframesSnapshot> = {\n keyframes: {},\n };\n\n /**\n * 当前帧数据快照\n */\n get snapshot(): Partial<KeyframesSnapshot> {\n return this._buildInData.keyframes;\n }\n\n /**\n * 根据键值取帧数据\n * @param key 帧数据的键值\n * @returns\n */\n getFramesByKey = <Key extends keyof KeyframesSnapshot>(\n key: Key,\n ): Partial<KeyframesSnapshot>[Key] | undefined => this.snapshot[key];\n\n /**\n * 发送帧数据(需要能够被序列化)\n * @param key 帧数据键值\n * @param frame 帧数据本体\n * @returns\n */\n sendKeyframe = <Key extends keyof KeyframesSnapshot>(\n key: Key,\n frame: KeyframesSnapshot[Key],\n ): boolean | Error => {\n if (this.state !== LiveState.OPEN) return false;\n this._buildInData.keyframes = {\n ...this._buildInData.keyframes,\n [key]: frame,\n };\n const liveMsg = createLiveMsg(Command.KeyframeSync, this.snapshot);\n try {\n this._controller.sendMessage(liveMsg);\n return true;\n } catch (e) {\n logger.error(e);\n return false;\n }\n };\n\n /**\n * 当前用户信息\n */\n get selfInfo() {\n return this._buildInData.selfInfo;\n }\n\n /**\n * 当前用户列表\n */\n get userList() {\n return this._buildInData.userList || [];\n }\n\n /**\n * 当前带看房间信息\n */\n get roomInfo() {\n return this._buildInData.roomInfo;\n }\n\n /**\n * 带看控制器\n */\n private _controller: LiveController = new LiveController();\n\n constructor(opts: LiveOptions) {\n super();\n this._addLiveControllerEventListeners();\n this._options = Object.assign(\n { initialMicroStatus: MicroStatus.OPEN },\n opts,\n );\n // 第一步检查jsbridge\n this._options.jsBridge = (() => {\n if (opts.jsBridge) return opts.jsBridge;\n if (opts.useBuiltInJsBridge) return new JSBridge();\n return undefined;\n })();\n\n // 第二步检查getVoiceSign\n this._options.getVoiceSign = opts.getVoiceSign ?? unimplementedGetVoiceSign;\n\n // 第二步检查rtc\n this._options.rtc = (() => {\n // 优先取rtc实例\n if (opts.rtc) return opts.rtc;\n // 取指定的内部rtc类型\n if (opts.rtcType) {\n if (!opts.getVoiceSign) {\n logger.error(\n 'GetVoiceSign method must be passed when using built-in RTC instances',\n );\n }\n switch (opts.rtcType) {\n case RTCType.RealseeVRWebViewRTC: {\n // 内置的 VRWebViewRTC\n if (this._options.jsBridge) {\n return new VRWebViewRTC({\n jsBridge: this._options.jsBridge,\n getVoiceSign: this._options.getVoiceSign,\n });\n } else {\n logger.error(\n 'JsBridge instance must be passed when using built-in VRWebViewRTC instances',\n );\n return undefined;\n }\n }\n case RTCType.RealseeBrowserChimeRTC: {\n // 内置的 RealseeBrowserChimeRTC\n return new BrowserRTC4Chime({\n getVoiceSign: this._options.getVoiceSign,\n logLevel: opts.__debug__ ? LogLevel.DEBUG : LogLevel.ERROR,\n });\n }\n case RTCType.RealseeBrowserRTC: {\n // 内置的 RealseeBrowserRTC\n return new BrowserRTC({\n getVoiceSign: this._options.getVoiceSign,\n });\n }\n default: {\n logger.error('unknown built-in RTC type');\n return undefined;\n }\n }\n }\n // 都不满足时取内置\n if (opts.useBuiltInRTC) {\n if (!opts.getVoiceSign) {\n logger.error(\n 'GetVoiceSign method must be passed when using built-in RTC instances',\n );\n }\n if (this._options.jsBridge) {\n if ((isRealseeVRWebview && (isAndroid || isIOS)) || isWxMiniProgram) {\n return new VRWebViewRTC({\n jsBridge: this._options.jsBridge,\n getVoiceSign: this._options.getVoiceSign,\n });\n } else {\n // 其它终端使用\n return opts.builtInRTCType === BuiltInRTCType.RealseeXChimeRTC\n ? new BrowserRTC4Chime({\n getVoiceSign: this._options.getVoiceSign,\n })\n : new BrowserRTC({ getVoiceSign: this._options.getVoiceSign });\n }\n } else {\n logger.error(\n 'jsBridge instance must be passed when using built-in RTC instances',\n );\n return undefined;\n }\n }\n return undefined;\n })();\n\n if (!this._options.rtc) {\n logger.warn('unused rtc');\n }\n\n // 第三步进行自动连接\n if (this._options.url && this._options.getTicket) {\n this.connect();\n }\n\n if (this._options.__debug__) {\n Object.assign(window, { $liveController: this._controller, $live: this });\n }\n }\n\n /**\n * 添加带看控制的事件监听\n */\n private _addLiveControllerEventListeners = () => {\n this._controller.on('stateChange', this._handleStateChange);\n this._controller.on('message', this._handleMessage);\n };\n\n /**\n * 移除带看控制的事件监听\n */\n private _removeLiveControllerEventListeners = () => {\n this._controller.off('stateChange', this._handleStateChange);\n this._controller.off('message', this._handleMessage);\n };\n\n /**\n * 带看状态变化\n * @param state\n * @returns\n */\n private _handleStateChange = (state: LiveState, prevState: LiveState) =>\n this.emit('stateChange', state, prevState);\n\n /**\n * 消息接收\n * @param liveMsg\n */\n private _handleMessage = async (liveMsg: LiveMsg) => {\n if (typeof liveMsg === 'object') {\n const { command, data = {}, frontRequestId, code, message } = liveMsg;\n if (code === 'SUCCESS') {\n switch (command) {\n /**\n * 自己的状态变化\n */\n case Command.SelfUserInfo: {\n const selfInfo = data as UserInfo;\n if (!equal(this.selfInfo, selfInfo, { deep: true })) {\n this._buildInData.selfInfo = selfInfo;\n this.emit(\n 'selfInfoUpdate',\n this._buildInData.selfInfo,\n frontRequestId,\n );\n }\n break;\n }\n\n /**\n * 房间信息变化\n */\n case Command.RoomInfo: {\n const roomInfo = data as RoomInfo;\n this._buildInData.roomInfo = Object.assign({}, roomInfo);\n this.emit(\n 'readyKeyframeSync',\n (roomInfo.last_frame || {}) as Partial<KeyframesSnapshot>,\n );\n break;\n }\n\n /**\n * 语音信息变化\n */\n case Command.RTCInfo: {\n const { voice_id: voiceId, type } = data as {\n voice_id: string;\n type: RTCType;\n };\n this._buildInData.rtcInfo = { voiceId, type };\n if (!this.$RTC?.joined) {\n const result = await this.$RTC?.join({\n voiceId,\n userId: this.selfInfo?.id || '',\n roomId: this.roomInfo?.info.room_code,\n type,\n });\n if (result) {\n const status =\n this._options.initialMicroStatus ?? MicroStatus.OPEN;\n await this.toggleMicro(status === MicroStatus.OPEN);\n } else {\n logger.error('加入语音房间失败');\n }\n } else {\n logger.warn('已加入语音房间,无需重复加入!');\n }\n break;\n }\n\n /**\n * 房间用户列表变化\n */\n case Command.UserList: {\n const userList = data as UserInfo[];\n this._buildInData.userList = userList;\n this.emit('userListUpdate', this.userList, frontRequestId);\n break;\n }\n\n /**\n * 自定义事件广播\n */\n case Command.CustomEvent: {\n const evtMsg = data as Record<string, any>;\n this.emit('broadcast', evtMsg, frontRequestId);\n break;\n }\n\n /**\n * 帧数据同步\n */\n case Command.KeyframeSync: {\n const remoteKeyframes = data as Partial<KeyframesSnapshot>;\n // 此处做一层 diff,仅跟本地数据不一致的情况下才广播数据。\n const keyframes: Partial<KeyframesSnapshot> = Object.keys(\n remoteKeyframes,\n ).reduce(\n (\n accu: Partial<KeyframesSnapshot>,\n curr: keyof KeyframesSnapshot,\n ) => {\n if (\n equal(\n remoteKeyframes[curr],\n this._buildInData.keyframes[curr],\n {\n deep: true,\n },\n )\n ) {\n return accu;\n }\n const params = [\n remoteKeyframes[curr],\n this._buildInData.keyframes[curr],\n frontRequestId,\n ];\n const evtName =\n curr as unknown as keyof KeyframeTypes<KeyframesSnapshot>;\n this.keyframes.emit(\n evtName,\n ...(params as Parameters<\n KeyframeTypes<KeyframesSnapshot>[keyof KeyframeTypes<KeyframesSnapshot>]\n >),\n );\n this._buildInData.keyframes[curr] = remoteKeyframes[curr];\n accu[curr] = remoteKeyframes[curr];\n return accu;\n },\n {} as Partial<KeyframesSnapshot>,\n );\n\n this.emit('keyframes', keyframes, frontRequestId);\n break;\n }\n\n /**\n * 内置消息\n */\n case Command.BuiltinMsg: {\n const builtinMsg = data as BuiltinMsg;\n this.emit('builtinEvent', builtinMsg);\n\n if (builtinMsg.event_type === BuiltinEventType.UserChange) {\n this.emit('userChange', builtinMsg);\n }\n\n if (builtinMsg.event_type === BuiltinEventType.RoomChange) {\n this.emit('roomChange', builtinMsg);\n }\n /**\n * 下发指令自己操作麦克风\n */\n if (\n builtinMsg.event_type === BuiltinEventType.UserChange &&\n builtinMsg.action === BuiltinActionType.UserMicroStatus\n ) {\n await this.toggleMicro(\n builtinMsg.data.status === MicroStatus.OPEN,\n );\n }\n\n /**\n * 如果下发指令退出房间,则 关闭麦克风 及 销毁 WebSocket\n */\n if (\n builtinMsg.event_type === BuiltinEventType.RoomChange &&\n builtinMsg.action === BuiltinActionType.RoomClose\n ) {\n await this.exit();\n }\n break;\n }\n /**\n * 被踢出房间\n */\n case Command.UserKickOut: {\n this.emit('kickOut');\n break;\n }\n /**\n * 其它未知广播\n */\n default: {\n console.warn('unknown command: ', command);\n }\n }\n } else {\n this.emit('error', liveMsg);\n }\n }\n };\n\n /**\n * 清理带看缓存的数据\n */\n private _clearLiveData = () => {\n this._buildInData = { keyframes: {} };\n };\n\n /**\n * 连接带看\n * @param options\n * @returns\n */\n connect = async (options: LiveConnectOptions = {}) => {\n // 检查 url 和 票据获取接口实现\n this._options.url = options.url ?? this._options.url ?? '';\n this._options.getTicket = options.getTicket ?? this._options.getTicket;\n this._options.initialMicroStatus =\n options.rtcMicStatus ?? this._options.initialMicroStatus;\n\n if (\n !/^ws(s):\\/\\//.test(this._options.url!) ||\n typeof this._options.getTicket !== 'function'\n ) {\n if (!/^ws(s):\\/\\//.test(this._options.url!)) {\n return new Error('Illegal realsee live room link');\n }\n if (typeof this._options.getTicket !== 'function') {\n return new Error('getTicket muse be function');\n }\n return false;\n }\n\n const { force = false } = options;\n\n // 检测一下麦克风权限,hack\n if (this._options.rtc) {\n const res = await this._options.rtc.detectMicro();\n if (!res) {\n return new Error('Failed to obtain microphone authorization');\n }\n }\n\n // 检查是否已有实例在使用\n const currentState = this.state;\n if (\n currentState === LiveState.CONNECTING ||\n currentState === LiveState.OPEN\n ) {\n if (force) {\n try {\n await this._controller.close('force close by connect');\n } catch (e) {\n console.warn(e);\n }\n } else {\n return new Error('已有Live实例正在连接中,请勿重复连接!');\n }\n }\n\n // 建立连接\n this._clearLiveData();\n const url = appendUri(this._options.url!, {\n ticket: await this._options.getTicket(),\n force: Number(!!force),\n });\n this._controller.open(url);\n return true;\n };\n\n /**\n * 退出带看\n * @returns\n */\n exit = async () => {\n this._clearLiveData();\n if (this.state !== LiveState.OPEN) return true\n try {\n /** 退出强制关闭语音 */\n this.$RTC?.quit();\n await this.updateStatus(\n BuiltinEventType.RoomChange,\n BuiltinActionType.RoomClose,\n {},\n );\n } catch (e) {\n logger.warn(e);\n }\n return await this._controller.close('user exit');\n };\n\n /**\n * 销毁带看\n * @returns\n */\n dispose = async () => {\n this._removeLiveControllerEventListeners();\n this._clearLiveData();\n return await this._controller.dispose();\n };\n\n /**\n * 修改状态\n * @param evtType\n * @param atnType\n * @param status\n * @param toUserIds\n * @returns\n */\n async updateStatus(\n evtType: BuiltinEventType,\n atnType: BuiltinActionType,\n status: Record<string, any>,\n toUserIds?: string | string[],\n ) {\n if (this.state !== LiveState.OPEN) return false;\n const data = Object.assign(\n { event_type: evtType, action: atnType },\n { data: status },\n );\n const liveMsg = createLiveMsg(Command.BuiltinMsg, data, toUserIds);\n try {\n this._controller.sendMessage(liveMsg);\n return true;\n } catch (e) {\n logger.error(e);\n return false;\n }\n }\n\n /**\n * 设置自己的用户信息\n * @param userInfo\n * @returns\n */\n setSelfInfo = async (userInfo: Partial<UserInfo>) =>\n await this.updateStatus(\n BuiltinEventType.UserChange,\n BuiltinActionType.UserInfo,\n userInfo,\n );\n\n /**\n * 自定义广播\n * @param request 广播请求的数据\n * @param toUserIds\n * @param timeout\n * @returns\n */\n broadcast<Request extends Record<string, any>, Response>(\n request: Request,\n toUserIds: string | string[],\n timeout: number,\n ): Promise<Response> | Error | false {\n if (this.state !== LiveState.OPEN) return false;\n return new Promise((resolve, reject) => {\n const customEvent = createLiveMsg(\n Command.CustomEvent,\n request,\n toUserIds,\n );\n const front_request_id = customEvent.front_request_id;\n\n const timeoutId = timeout\n ? setTimeout(() => {\n reject(new Error('RESPONSE TIMEOUT'));\n this.off('broadcast', broadcastRes);\n }, timeout)\n : undefined;\n\n const broadcastRes = (\n data: Record<string, any>,\n frontRequestId: string,\n ) => {\n if (frontRequestId !== front_request_id) return;\n if (timeoutId) clearTimeout(timeoutId);\n this.off('broadcast', broadcastRes);\n resolve(data as Response);\n };\n\n this.on('broadcast', broadcastRes);\n\n try {\n this._controller.sendMessage(customEvent);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n // 仅用于用户自己的麦克风控制\n toggleMicro = async (microStatus: boolean) => {\n if (!this.selfInfo?.permission?.control_own_micro) return false;\n\n const result = await this.$RTC?.toggleMicro(microStatus);\n if (result) {\n await this.updateStatus(\n BuiltinEventType.UserChange,\n BuiltinActionType.UserMicroStatus,\n {\n status: microStatus ? MicroStatus.OPEN : MicroStatus.CLOSE,\n },\n [],\n );\n }\n\n return result;\n };\n\n /**\n * 控制别人的麦\n * @param microStatus\n * @param toUserIds\n * @returns\n */\n forbidMicro = async (\n microStatus: MicroStatus,\n toUserIds: string | string[],\n ) => {\n if (\n typeof this._options.canForbidUserMicro === 'function' &&\n !this._options.canForbidUserMicro(toUserIds)\n ) {\n return false;\n }\n\n if (!this.selfInfo?.permission?.control_other_micro) {\n return false;\n }\n\n return await this.updateStatus(\n BuiltinEventType.UserChange,\n BuiltinActionType.UserMicroStatus,\n {\n status: microStatus,\n },\n toUserIds,\n );\n };\n\n /**\n * 控制别人的同步全量帧数据权限\n * @param sync\n * @param toUserIds\n * @returns\n */\n forbidSync = async (sync: boolean, toUserIds: string | string[]) => {\n if (\n typeof this._options.canForbidUserSync === 'function' &&\n !this._options.canForbidUserSync(toUserIds)\n ) {\n return false;\n }\n\n if (!this.selfInfo?.permission?.control_other_sync) {\n return false;\n }\n\n return await this.updateStatus(\n BuiltinEventType.UserChange,\n BuiltinActionType.UserPermission,\n { sync_frame: sync },\n toUserIds,\n );\n };\n\n /**\n * 把用户踢出带看\n * @param toUserIds\n * @returns\n */\n kick = async (toUserIds: string | string[]) => {\n if (\n typeof this._options.canForbidUserKick === 'function' &&\n !this._options.canForbidUserKick(toUserIds)\n ) {\n return false;\n }\n\n if (!this.selfInfo?.permission?.change_other_status) {\n return false;\n }\n\n return await this.updateStatus(\n BuiltinEventType.UserChange,\n BuiltinActionType.UserStatus,\n {\n status: 'KICK_OUT',\n },\n toUserIds,\n );\n };\n}\n","// import { Live } from '../typings/live/Live';\nimport { LiveOptions } from '../typings/live/LiveOptions';\nimport { Live, _clearLiveInstanceIfNeed } from './live';\n\n/**\n * 创建`Live`实例\n * @param opts\n * @returns\n */\nexport const createLive = <KeyframesSnapshot extends Record<string, any>>(\n opts: LiveOptions,\n): Live<KeyframesSnapshot> => {\n _clearLiveInstanceIfNeed();\n return new Live<KeyframesSnapshot>(opts);\n};\n","import React, { useCallback } from 'react';\nimport { createContext } from 'react';\nimport {\n BuiltinActionType,\n BuiltinEventType,\n KeyframeTypes,\n LiveConnectOptions,\n LiveEventType,\n LiveOptions,\n MicroStatus,\n RTCEventType,\n RTCType,\n UserInfo,\n} from '../typings';\nimport { LiveState } from '../typings/live/LiveState';\nimport { createLive } from './createLive';\nimport { Live } from './live';\n\nexport type LiveProviderPropTypes<\n KeyframesSnapshot extends Record<string, any>,\n> = {\n children?: React.ReactNode;\n live?: Live<KeyframesSnapshot>;\n};\n\n/**\n * 创建 {@link LiveReact} 实例,并提供 `React` 技术栈相关工具链。\n */\nexport function createLiveReact<KeyframesSnapshot extends Record<string, any>>(\n options: LiveOptions,\n) {\n const LiveContext = createContext<Live<KeyframesSnapshot> | null>(null);\n const live = createLive<KeyframesSnapshot>(options);\n const jsBridge = live.jsBridge;\n\n const LiveProvider = (props: LiveProviderPropTypes<KeyframesSnapshot>) => (\n <LiveContext.Provider value={live}>{props.children}</LiveContext.Provider>\n );\n\n /**\n * 使用live实例\n * @returns\n */\n const useLiveInstance = () => {\n const context = React.useContext(LiveContext);\n if (!context) throw new Error('LiveProvider never found.');\n return context;\n };\n\n /**\n * 不建议这样使用\n * @deprecated\n * @returns\n */\n const unsafe__useLiveInstance = () => live;\n\n /**\n * 使用rtc实例\n */\n const useRTCInstance = () => live.$RTC;\n\n /**\n * 不建议这样使用\n * @deprecated\n * @returns\n */\n const unsafe__useRTCInstance = () => useRTCInstance();\n\n /**\n * 带看连接操作\n */\n const useConnect = () => async (options: LiveConnectOptions) =>\n await live.connect(options);\n\n /**\n *\n * @param name\n * @param callback\n * @param deps\n * @returns\n */\n function useKeyframeUpdateCallback<\n KeyOfKeyframe extends keyof KeyframeTypes<KeyframesSnapshot>,\n >(\n key: KeyOfKeyframe,\n callback: (\n ...args: Parameters<KeyframeTypes<KeyframesSnapshot>[KeyOfKeyframe]>\n ) => ReturnType<KeyframeTypes<KeyframesSnapshot>[KeyOfKeyframe]>,\n deps: React.DependencyList = [],\n ) {\n const live = useLiveInstance();\n const dependencyList: React.DependencyList = [live, name, ...deps];\n const dispose = () => live.keyframes.off(key, callback);\n React.useEffect(() => {\n live.keyframes.on(key, callback);\n return dispose;\n }, dependencyList);\n\n return dispose;\n }\n\n /**\n * 带看的一些操作\n * @returns\n */\n function useLiveAction() {\n const live = useLiveInstance();\n\n const connect = async (options: LiveConnectOptions) =>\n await live.connect(options);\n\n const toggleMicro = (microStatus: boolean) => live.toggleMicro(microStatus);\n\n const broadcast = async (\n data: Record<string, any>,\n toUserIds: string | string[],\n timeout = 0,\n ) => await live.broadcast(data, toUserIds, timeout);\n\n const exit = async () => await live.exit();\n\n const kick = async (toUserIds: string | string[]) =>\n await live.kick(toUserIds);\n\n const forbidMicro = async (\n micro: MicroStatus,\n toUserIds: string | string[] = [],\n ) => await live.forbidMicro(micro, toUserIds);\n\n const forbidSync = (sync: boolean, toUserIds: string | string[] = []) =>\n live.forbidSync(sync, toUserIds);\n\n const getFramesByKey = (key: keyof KeyframesSnapshot) =>\n live.getFramesByKey(key);\n\n const sendKeyframe = (\n key: keyof KeyframesSnapshot,\n frame: KeyframesSnapshot[keyof KeyframesSnapshot],\n ) => live.sendKeyframe(key, frame);\n\n const setSelfInfo = (userInfo: Partial<UserInfo>) =>\n live.setSelfInfo(userInfo);\n\n const updateStatus = (\n evtType: BuiltinEventType,\n atnType: BuiltinActionType,\n status: Record<string, any>,\n toUserIds?: string | string[],\n ) => live.updateStatus(evtType, atnType, status, toUserIds);\n\n return {\n connect,\n broadcast,\n exit,\n kick,\n toggleMicro,\n forbidMicro,\n forbidSync,\n sendKeyframe,\n getFramesByKey,\n setSelfInfo,\n updateStatus,\n };\n }\n\n function useKeyframe<K extends keyof KeyframesSnapshot>(key: K) {\n const live = useLiveInstance();\n const [state, updateState] = React.useState<\n KeyframesSnapshot[K] | undefined\n >(live.getFramesByKey(key));\n\n React.useEffect(() => {\n const onUpdate = (nextKeyframes: KeyframesSnapshot[K]) =>\n updateState(nextKeyframes);\n\n const evtName = key as unknown as keyof KeyframeTypes<KeyframesSnapshot>;\n const callback = onUpdate as unknown as (\n ...args: Parameters<\n KeyframeTypes<KeyframesSnapshot>[keyof KeyframeTypes<KeyframesSnapshot>]\n >\n ) => ReturnType<\n KeyframeTypes<KeyframesSnapshot>[keyof KeyframeTypes<KeyframesSnapshot>]\n >;\n live.keyframes.on(evtName, callback);\n return () => live.keyframes.off(evtName, callback);\n }, [live]);\n\n const setState = React.useCallback(\n (frame: KeyframesSnapshot[K]) => live.sendKeyframe(key, frame),\n [live],\n );\n type CallbackType = [\n frame: KeyframesSnapshot[K] | undefined,\n setFrame: (frame: KeyframesSnapshot[K]) => boolean | Error,\n ];\n return [state, setState] as CallbackType;\n }\n\n function useLiveEventCallback<\n K extends keyof LiveEventType<KeyframesSnapshot>,\n >(\n name: K,\n callback: (\n ...args: Parameters<LiveEventType<KeyframesSnapshot>[K]>\n ) => ReturnType<LiveEventType<KeyframesSnapshot>[K]>,\n deps: React.DependencyList = [],\n ) {\n const live = useLiveInstance();\n const dispose = () => live.off(name, callback);\n const dependencyList: React.DependencyList = [live, name, ...deps];\n\n React.useEffect(() => {\n live.on(name, callback);\n return dispose;\n }, dependencyList);\n\n return dispose;\n }\n\n /**\n * 带看状态\n * @returns\n */\n function useLiveState() {\n const live = useLiveInstance();\n const [state, updateState] = React.useState<LiveState>(live.state);\n React.useEffect(() => {\n const stateChange = (state: LiveState) => updateState(state);\n live.on('stateChange', stateChange);\n return () => live.off('stateChange', stateChange);\n }, [live]);\n\n return state;\n }\n\n function useRTCAction() {\n const live = useLiveInstance();\n\n const join = (options: {\n voiceId: string;\n userId: string;\n roomId: string;\n type: RTCType;\n }) => live.$RTC.join(options);\n\n const quit = () => live.$RTC.quit();\n const shock = () => live.$RTC.shock?.();\n const toggleMicro = (flag?: boolean | undefined) =>\n live.$RTC.toggleMicro(flag);\n\n const detectMicro = () => live.$RTC.detectMicro();\n\n return {\n join,\n quit,\n shock,\n toggleMicro,\n detectMicro,\n };\n }\n\n function useRTCEventCallback<K extends keyof RTCEventType>(\n name: K,\n callback: (\n ...args: Parameters<RTCEventType[K]>\n ) => ReturnType<RTCEventType[K]>,\n deps: React.DependencyList = [],\n ) {\n const live = useLiveInstance();\n const dispose = () => live.$RTC.off(name, callback);\n const dependencyList: React.DependencyList = [live, name, ...deps];\n React.useEffect(() => {\n live.$RTC.on(name, callback);\n return dispose;\n }, dependencyList);\n\n return dispose;\n }\n\n function useSelfInfo() {\n const live = useLiveInstance();\n const [state, updateState] = React.useState<Partial<UserInfo>>(\n live.selfInfo || {},\n );\n\n const selfInfoUpdate = (userInfo: Partial<UserInfo>) =>\n updateState(userInfo);\n\n React.useEffect(() => {\n live.on('selfInfoUpdate', selfInfoUpdate);\n return () => live.off('selfInfoUpdate', selfInfoUpdate);\n }, [live]);\n\n const setState = React.useCallback(\n async (userInfo: Partial<UserInfo>) => {\n return await live.setSelfInfo(userInfo);\n },\n [live],\n );\n\n type CallbackType = [\n Partial<UserInfo>,\n (userInfo: Partial<UserInfo>) => Promise<boolean | Error>,\n ];\n return [state, setState] as CallbackType;\n }\n\n function useKeyframesSnapshot() {\n const live = useLiveInstance();\n const [state, setState] = React.useState<Partial<KeyframesSnapshot>>(\n live.snapshot,\n );\n\n React.useEffect(() => {\n const onKeyframes = (keyframes: Partial<KeyframesSnapshot>) =>\n setState(keyframes);\n live.on('keyframes', onKeyframes);\n return () => live.off('keyframes', onKeyframes);\n });\n\n return state;\n }\n function useUserList() {\n const live = useLiveInstance();\n const [state, updateState] = React.useState<UserInfo[]>(live.userList);\n\n const userListUpdate = (userList: UserInfo[]) => updateState(userList);\n\n React.useEffect(() => {\n live.on('userListUpdate', userListUpdate);\n return () => live.off('userListUpdate', userListUpdate);\n }, [live]);\n\n return state;\n }\n\n return {\n live,\n jsBridge,\n LiveProvider,\n unsafe__useLiveInstance,\n unsafe__useRTCInstance,\n useConnect,\n useKeyframe,\n useKeyframeUpdateCallback,\n useLiveAction,\n useLiveEventCallback,\n useLiveState,\n useRTCAction,\n useRTCEventCallback,\n useSelfInfo,\n useKeyframesSnapshot,\n useUserList,\n };\n}\n"],"names":["EVENT_SYMBOL","__generateEventIfNotExisted","__removeEventIfNotExisted","Subscribe","__awaiter","S4","uuid","logger","LogLevel","$window","RobustWebSocket","parseQuery","generateWssUrl","isValidKey","userAgent","isAndroid","isIOS","isWxMiniProgram","isRealseeVRWebview","defaultOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"realsee-live.esm.js","sources":["../src/utils/subscribe.ts","../src/rtc/CoreRTC.ts","../../../node_modules/.pnpm/tslib@2.4.1/node_modules/tslib/tslib.es6.js","../src/typings/rtc/type.ts","../src/utils/logger.ts","../src/utils/uuid.ts","../src/rtc/BrowserRTC.ts","../src/rtc/BrowserRTC4Chime.ts","../src/typings/rtc/joinedInfo.ts","../src/rtc/VRWebViewRTC.ts","../src/typings/live/LiveMsg.ts","../src/typings/live/LiveState.ts","../src/typings/live/UserInfo.ts","../src/typings/live/WebSocket.ts","../../jsbridge-x/src/utils/registerGlobalValue.ts","../../jsbridge-x/src/controllers/BaseController.ts","../../jsbridge-x/src/controllers/WebViewController.ts","../../jsbridge-x/src/controllers/WKWebViewController.ts","../../jsbridge-x/src/utils/uuid.ts","../../jsbridge-x/src/miniprogram/typings/WeappBridgeMessage.ts","../../jsbridge-x/src/utils/defaultWsEndpoint.ts","../../jsbridge-x/src/utils/generateWssUrl.ts","../../jsbridge-x/src/utils/isValidKey.ts","../../jsbridge-x/src/utils/parseQuery.ts","../../jsbridge-x/src/utils/Subscribe.ts","../../jsbridge-x/src/miniprogram/hybridBridge/RobustWebSocket.ts","../../jsbridge-x/src/miniprogram/hybridBridge/index.ts","../../jsbridge-x/src/controllers/WxMiniprogramController.ts","../../jsbridge-x/src/typings/WebViewTypeEnum.ts","../../jsbridge-x/src/core/JSBridgeCore.ts","../../jsbridge-x/src/utils/clientDetector.ts","../../jsbridge-x/src/app/index.ts","../../jsbridge-x/src/typings/OpenWebViewEnum.ts","../../jsbridge-x/src/browser/index.ts","../../jsbridge-x/src/miniprogram/index.ts","../../jsbridge-x/src/index.ts","../../../node_modules/.pnpm/amazon-chime-sdk-js@2.31.0/node_modules/amazon-chime-sdk-js/src/logger/LogLevel.ts","../src/utils/appendUri.ts","../src/utils/clientDetector.ts","../src/utils/equal.ts","../src/utils/RobustWebSocket.ts","../src/live/controller.ts","../src/live/live.ts","../src/live/createLive.ts","../src/live/createLiveReact.tsx"],"sourcesContent":["const EVENT_SYMBOL: unique symbol = Symbol('$$REALSEE_LIVE_EVENT$$');\n\nexport type EventMap = {\n [name: string]: (...args: any[]) => void | boolean;\n};\n\nfunction __generateEventIfNotExisted<T extends EventMap>(\n instance: any,\n): {\n [Key in keyof T]: [\n callback: (...args: Parameters<T[Key]>) => ReturnType<T[Key]>,\n once: boolean,\n ][];\n} {\n if (!instance[EVENT_SYMBOL]) {\n instance[EVENT_SYMBOL] = {};\n }\n return instance[EVENT_SYMBOL];\n}\n\nfunction __removeEventIfNotExisted(instance: any) {\n if (!instance[EVENT_SYMBOL]) {\n delete instance[EVENT_SYMBOL];\n }\n}\n\n/**\n * 监听者模式\n * @template T 预设的监听回调类型\n * @example\n * ```\n * new Subscribe<{\n * \"foo\": [arg1: number, arg2: string],\n * \"bar\": [arg: boolean],\n * }>()\n * ```\n */\nexport class Subscribe<T extends EventMap> {\n /**\n * 判断是否注册了事件\n * @param name 事件类型\n */\n hasListener(name: keyof T): boolean {\n const events = __generateEventIfNotExisted<T>(this);\n return events && events[name] && events[name].length > 0;\n }\n\n /**\n * 注册事件\n * @param name 事件类型\n * @param callback 事件回调函数\n * @param once 是否只执行一次\n * @returns 解除事件\n * @template K 预设的监听事件名称\n * @template C 回调函数函数上下文\n */\n on<K extends keyof T>(\n name: K,\n callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n once?: boolean,\n ): () => void {\n const events = __generateEventIfNotExisted<T>(this);\n if (!events[name]) events[name] = [];\n events[name].push([callback as any, once || false]);\n return () => this.off(name, callback);\n }\n\n /**\n * 注册事件(是否只执行一次)\n * @param name 事件类型\n * @param callback 事件回调函数\n * @returns 解除事件\n * @template K 预设的监听事件名称\n * @template C 回调函数函数上下文\n */\n once<K extends keyof T>(\n name: K,\n callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n ): () => void {\n return this.on(name, callback, true);\n }\n\n /**\n * 解除事件\n *\n * 如果 name 不传的话解除对应所有事件\n * 如果 name, callback 不传的话解除所有name的所有事件\n * @param name 事件类型\n * @param callback 事件回调函数\n * @template K 预设的监听事件名称\n */\n off<K extends keyof T>(\n name?: K,\n callback?: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n ): void {\n if (name === undefined) {\n __removeEventIfNotExisted(this);\n return;\n }\n const events = __generateEventIfNotExisted<T>(this);\n if (!events[name]) events[name] = [];\n if (callback === undefined) {\n events[name].length = 0;\n return;\n }\n let index = 0;\n for (; index < events[name].length; index++) {\n if (events[name][index][0] === callback) break;\n }\n if (index < events[name].length) {\n events[name].splice(index, 1);\n }\n }\n\n /**\n * 触发事件\n * @param name 事件类型\n * @param data 触发事件的数据\n * @returns canceled 是否被触发取消\n * @template K 预设的监听事件名称\n */\n emit<K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean {\n let canceled = false;\n const events = __generateEventIfNotExisted<T>(this);\n const event = events[name] || [];\n for (let one of event.slice()) {\n const [callback, once = false] = one;\n const result = callback(...data);\n if (once) this.off(name, callback);\n if (result === false) canceled = true;\n }\n return canceled;\n }\n}\n\nexport namespace SubscribeMixinType {\n export interface hasListener<T extends EventMap> {\n (name: keyof T): boolean;\n }\n export interface on<T extends EventMap> {\n <K extends keyof T>(\n name: K,\n callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n once?: boolean,\n ): () => void;\n }\n export interface once<T extends EventMap> {\n <K extends keyof T>(\n name: K,\n callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n ): () => void;\n }\n export interface off<T extends EventMap> {\n <K extends keyof T>(\n names?: K | K[],\n callback?: (...args: any[]) => any,\n ): void;\n }\n export interface emit<T extends EventMap> {\n <K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean;\n }\n}\n","import { RTCEventType } from '../typings/rtc/eventType';\nimport { RTCProtocol } from '../typings/rtc/protocol';\nimport { RTCType } from '../typings/rtc/type';\nimport { Subscribe } from '../utils/subscribe';\n\n/**\n * rtc 基础抽象类\n */\nexport abstract class CoreRTC\n extends Subscribe<RTCEventType>\n implements RTCProtocol\n{\n abstract joined: boolean;\n\n abstract micro: boolean;\n\n abstract voiceId: string;\n\n abstract type: RTCType;\n\n abstract join(options: {\n voiceId: string;\n userId: string;\n roomId: string | number | undefined;\n type: RTCType;\n }): Promise<boolean>;\n\n abstract quit(): Promise<boolean>;\n\n abstract detectMicro(): Promise<boolean>;\n\n abstract toggleMicro(flag?: boolean): Promise<boolean>;\n\n abstract shock(): void;\n}\n","/******************************************************************************\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 (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, 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","/**\n * rtc 类型\n */\nexport enum RTCType {\n RealseeBrowserRTC = 'RealseeBrowserRTC',\n RealseeVRWebViewRTC = 'RealseeVRWebViewRTC',\n RealseeBrowserChimeRTC = 'RealseeBrowserChimeRTC',\n}\n\nexport enum BuiltInRTCType {\n RealseeXTRTC = 'trtc',\n RealseeXChimeRTC = 'chime',\n}\n","/**\n * 输出格式化日志\n */\n\n// 获取当前时间\nconst getTime = (): string => {\n const date = new Date();\n const year = date.getFullYear();\n const month = (date.getMonth() + 1).toString().padStart(2, '0'); //月份是从0开始的\n const day = date.getDate().toString().padStart(2, '0');\n const hour = date.getHours().toString().padStart(2, '0');\n const min = date.getMinutes().toString().padStart(2, '0');\n const sec = date.getSeconds().toString().padStart(2, '0');\n const ms = date.getMilliseconds();\n\n return `[${year}-${month}-${day} ${hour}:${min}:${sec}.${ms}]`;\n};\n\nexport enum LOG_LEVEL {\n info = 'INFO',\n log = 'LOG',\n error = 'ERROR',\n warn = 'WARN',\n}\n\n// 输出日志\nconst echo = (logLevel: Partial<LOG_LEVEL>, args: any[] = []) => {\n args.unshift(`Realsee Live ${getTime()} <${logLevel}> `);\n switch (logLevel) {\n case LOG_LEVEL.info:\n return console.info(...args);\n case LOG_LEVEL.error:\n return console.error(...args);\n case LOG_LEVEL.warn:\n return console.warn(...args);\n default:\n return console.log(...args);\n }\n};\n\nconst log = (...args: any[]) => echo(LOG_LEVEL.log, args);\n\nconst info = (...args: any[]) => echo(LOG_LEVEL.info, args);\n\nconst error = (...args: any[]) => echo(LOG_LEVEL.error, args);\n\nconst warn = (...args: any[]) => echo(LOG_LEVEL.warn, args);\n\nconst logger = {\n log,\n info,\n error,\n warn,\n};\n\nexport default logger;\n","// uuid\nfunction S4() {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n}\n\n/**\n * 基于伪随机数生成 **uuid**。\n */\nexport function uuid() {\n // then to call it, plus stitch in '4' in the third group\n return (\n S4() +\n S4() +\n '-' +\n S4() +\n '-4' +\n S4().substr(0, 3) +\n '-' +\n S4() +\n '-' +\n S4() +\n S4() +\n S4()\n ).toLowerCase();\n}\n","import TRTC, { Client, LocalStream } from 'trtc-js-sdk';\nimport { GetVoiceSign } from '../typings/live/GetVoiceSign';\nimport { RTCType } from '../typings/rtc/type';\nimport logger from '../utils/logger';\n\nimport { uuid } from '../utils/uuid';\nimport { CoreRTC } from './CoreRTC';\n\ninterface ITrtcInstance {\n client: Client | null;\n stream: LocalStream | null;\n}\n\nexport class BrowserRTC extends CoreRTC {\n type = RTCType.RealseeBrowserRTC;\n joined = false;\n micro = false;\n voiceId = '';\n\n private _getVoiceSign: GetVoiceSign = () => {\n throw new Error('方法 getVoiceSign 未实现');\n };\n\n private _autoPlayConfirm: (opts: {\n onConfirm: () => void;\n }) => void | undefined;\n\n public checkRequirement = () => TRTC.checkSystemRequirements();\n\n private $dom: HTMLDivElement = document.createElement('div');\n\n private _trtc: ITrtcInstance = {\n client: null,\n stream: null,\n };\n\n constructor(options: {\n getVoiceSign: GetVoiceSign;\n autoPlayConfirm?: (opts: { onConfirm: () => void }) => void;\n }) {\n super();\n this._getVoiceSign = options.getVoiceSign;\n // @ts-ignore\n this._autoPlayConfirm = options.autoPlayConfirm;\n this._initParentDom();\n }\n\n private _initParentDom() {\n this.$dom.id = `rs-rtc-${uuid()}`;\n this.$dom.style.display = 'none';\n document.body.appendChild(this.$dom);\n }\n\n join = async (options: {\n voiceId: string;\n userId: string;\n roomId: string;\n type: RTCType;\n }): Promise<boolean> => {\n this.emit('joinWillStart');\n const createClientOptions = await this._getVoiceSign({\n voiceId: options.voiceId,\n roomId: options.roomId,\n userId: options.userId,\n });\n // 1. 创建client\n this._trtc.client = TRTC.createClient({\n mode: 'rtc',\n ...createClientOptions,\n enableAutoPlayDialog:\n typeof this._autoPlayConfirm === 'function' ? false : true,\n });\n\n this._trtc.client?.enableAudioVolumeEvaluation();\n\n // 2. 订阅事件\n this._registerRtcEvent();\n\n // 3. 加入语音房间\n let result = await new Promise<boolean>((resolve) => {\n this._trtc.client\n ?.join({ roomId: Number(options.voiceId) })\n .then(() => resolve(true))\n .catch(() => resolve(false));\n });\n\n this.joined = result;\n\n if (!result) return false; // 进房失败\n\n // 4. 创建本地流\n this._trtc.stream = TRTC.createStream({\n userId: createClientOptions.userId,\n audio: true,\n video: false,\n });\n\n // 5. 初始化本地流\n result = await new Promise<boolean>((resolve) => {\n this._trtc.stream\n ?.initialize()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n });\n\n // 6. 发布本地流\n result = await new Promise<boolean>((resolve) => {\n this._trtc.client\n ?.publish(this._trtc.stream!)\n .then(() => resolve(true))\n .catch(() => resolve(false));\n });\n\n this.joined = result;\n\n if (this.joined) this.emit('joined');\n\n return result;\n };\n\n quit(): Promise<boolean> {\n return new Promise(async (resolve) => {\n this.joined = false;\n if (this._trtc.stream) {\n await this._trtc.client?.unpublish(this._trtc.stream);\n this._trtc.stream.stop();\n this._trtc.stream.close();\n this._trtc.stream = null;\n }\n this._trtc.client\n ?.leave()\n .then(() => (this._trtc.client = null))\n .then(() => resolve(true))\n .catch(() => resolve(false));\n resolve(true);\n });\n }\n\n detectMicro(): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n const rule = { audio: true, video: false };\n try {\n navigator.mediaDevices\n .getUserMedia(rule)\n .then(() => resolve(true))\n .catch((e) => {\n logger.error(e.message);\n resolve(false);\n });\n } catch (e) {\n console.error(e);\n resolve(false);\n }\n });\n }\n\n toggleMicro(flag?: boolean): Promise<boolean> {\n return Promise.resolve(\n (flag\n ? this._trtc?.stream?.unmuteAudio()\n : this._trtc?.stream?.muteAudio()) || false,\n );\n }\n\n shock(): void {\n throw new Error('Method not implemented.');\n }\n\n private _registerRtcEvent() {\n this._trtc.client?.on('stream-added', this._handleStreamAdded);\n this._trtc.client?.on('stream-subscribed', this._handleStreamSubscribed);\n this._trtc.client?.on('audio-volume', (event) =>\n this.emit(\n 'userVolumes',\n event.result.map(({ userId, audioVolume }) => ({\n userId,\n audioVolume,\n })),\n ),\n );\n this._trtc.client?.on('error', (event: any) => this.emit('error', event));\n }\n\n private _handleStreamAdded = (event: any) => {\n const remoteStream = event.stream;\n console.log('远端流增加: ' + remoteStream.getId());\n //订阅远端流\n this._trtc.client?.subscribe(remoteStream);\n };\n\n private _handleStreamSubscribed = (event: any) => {\n const remoteStream = event.stream;\n console.log('远端流订阅成功:' + remoteStream.getId());\n const playId = remoteStream.getId();\n const domId = `rs-rtc-remote_stream-${playId}`;\n const dom = document.createElement('div');\n dom.id = domId;\n this.$dom.appendChild(dom);\n // 播放远端流\n if (typeof this._autoPlayConfirm === 'function') {\n remoteStream.play(domId).catch((error: any) => {});\n remoteStream.on('error', (error: any) => {\n const errorCode = error.getCode();\n if (errorCode === 0x4043) {\n // PLAY_NOT_ALLOWED,引导用户手势操作并调用 stream.resume 恢复音视频播放\n const onConfirm = () => remoteStream.resume();\n this._autoPlayConfirm({ onConfirm });\n }\n });\n } else {\n remoteStream.play(domId);\n }\n };\n}\n","import {\n AudioVideoObserver,\n ConsoleLogger,\n DefaultDeviceController,\n DefaultMeetingSession,\n DefaultModality,\n DeviceChangeObserver,\n LogLevel,\n MeetingSessionConfiguration,\n MeetingSessionStatusCode,\n} from 'amazon-chime-sdk-js';\nimport { MeetingSessionConfigurationOptions } from '../typings/chime/MeetingSessionConfigurationOptions';\nimport { GetVoiceSign } from '../typings/live/GetVoiceSign';\nimport { RTCType } from '../typings/rtc/type';\n\nimport { uuid } from '../utils/uuid';\nimport { CoreRTC } from './CoreRTC';\n\n/**\n * amazon-chime-sdk-js 适配的rtc实现\n */\nexport class BrowserRTC4Chime extends CoreRTC {\n type = RTCType.RealseeBrowserChimeRTC;\n joined = false;\n micro = false;\n voiceId = '';\n userId = '';\n logger: ConsoleLogger;\n deviceController: DefaultDeviceController;\n meetingSession: DefaultMeetingSession | undefined;\n\n audioInput: MediaDeviceInfo | undefined;\n audioOutput: MediaDeviceInfo | undefined;\n\n deviceChangeObserver: DeviceChangeObserver = {};\n audioVideoObserver: AudioVideoObserver = {};\n\n private _getVoiceSign: GetVoiceSign = () => {\n throw new Error('方法 getVoiceSign 未实现');\n };\n\n private $dom: HTMLDivElement = document.createElement('div');\n private $audio: HTMLAudioElement = document.createElement('audio');\n\n constructor(options: { getVoiceSign: GetVoiceSign; logLevel?: LogLevel }) {\n super();\n // 挂载签名钩子\n this._getVoiceSign = options.getVoiceSign;\n this._initDom();\n this.logger = new ConsoleLogger(\n 'WebRTCLogger',\n options.logLevel || LogLevel.OFF,\n );\n this.deviceController = new DefaultDeviceController(this.logger);\n this.initObservers();\n }\n\n /**\n * 对audio标签初始化\n */\n _initDom = () => {\n this.$audio.id = `rs-rtc-${uuid()}`;\n this.$dom.id = `rs-rtc-${uuid()}`;\n this.$dom.appendChild(this.$audio);\n document.body.appendChild(this.$dom);\n };\n\n /**\n * 初始化事件监听器\n */\n initObservers = () => {\n // 输入输出设备变化的监听器\n this.deviceChangeObserver = {\n audioInputsChanged: (freshAudioInputDeviceList: any[]) => {\n // An array of MediaDeviceInfo objects\n freshAudioInputDeviceList?.forEach((mediaDeviceInfo) => {\n this.logger.info(\n `Device ID: ${mediaDeviceInfo.deviceId} Microphone: ${mediaDeviceInfo.label}`,\n );\n });\n },\n\n audioOutputsChanged: (freshAudioOutputDeviceList: any) => {\n this.logger.info(\n `Audio outputs updated: ${freshAudioOutputDeviceList}`,\n );\n },\n\n videoInputsChanged: (freshVideoInputDeviceList: any) => {\n this.logger.info(`Video inputs updated: ${freshVideoInputDeviceList}`);\n },\n\n audioInputMuteStateChanged: (device: any, muted: any) => {\n this.logger.info(\n `Device ${device.toString()} ${\n muted ? 'is muted in hardware' : 'is not muted'\n }`,\n );\n },\n };\n\n // 流变化监听器\n this.audioVideoObserver = {\n audioVideoDidStart: () => {\n this.logger.info('Started');\n },\n audioVideoDidStop: (sessionStatus: any) => {\n // See the \"Stopping a session\" section for details.\n this.logger.info(\n `Stopped with a session status code: ${sessionStatus.statusCode()}`,\n );\n },\n audioVideoDidStartConnecting: (reconnecting: any) => {\n if (reconnecting) {\n // e.g. the WiFi connection is dropped.\n this.logger.info('Attempting to reconnect');\n }\n },\n };\n };\n\n /**\n * 加入语音会议\n * @param options\n * @returns\n */\n async join(options: {\n voiceId: string;\n userId: string;\n roomId: string | number | undefined;\n type: RTCType;\n }): Promise<boolean> {\n return new Promise(async (success, fail) => {\n this.emit('joinWillStart');\n try {\n // 取签名\n const { sdkAppId, userId, roomId, userSig } = await this._getVoiceSign({\n ...options,\n roomId: options.roomId || 0,\n });\n this.userId = userId;\n const {\n attendence,\n vendor_wrapper,\n }: MeetingSessionConfigurationOptions = JSON.parse(\n decodeURIComponent(userSig),\n );\n\n // 初始化配置\n const configuration = new MeetingSessionConfiguration(\n {\n Meeting: vendor_wrapper,\n },\n {\n Attendee: {\n ExternalUserId: attendence.external_user_id,\n AttendeeId: attendence.attendee_id,\n JoinToken: attendence.join_token,\n },\n },\n );\n\n // 初始化会议会话\n this.meetingSession = new DefaultMeetingSession(\n configuration,\n this.logger,\n this.deviceController,\n );\n\n // 注册事件\n this._registerRtcEvent();\n\n // 绑定监听器\n this.meetingSession.audioVideo.addDeviceChangeObserver(\n this.deviceChangeObserver,\n );\n this.meetingSession.audioVideo.addObserver(this.audioVideoObserver);\n\n // 绑定播放器\n this.meetingSession.audioVideo.bindAudioElement(this.$audio);\n\n const observer: AudioVideoObserver = {\n audioVideoDidStart: () => {\n this.meetingSession?.audioVideo.realtimeMuteLocalAudio();\n this.joined = true;\n this.emit('joined');\n success(true);\n },\n audioVideoDidStop: () => {\n this.joined = false;\n success(false);\n },\n };\n\n this.meetingSession.audioVideo.addObserver(observer);\n\n // 选择语音输入设备\n const audioInputDevices =\n await this.deviceController.listAudioInputDevices(true);\n const defaultAudioInput = audioInputDevices.find(\n (device: any) => device.deviceId === 'default',\n );\n const otherAudioInput = audioInputDevices.find(\n (device: any) => device.deviceId !== '',\n );\n this.audioInput = defaultAudioInput || otherAudioInput;\n\n await this.meetingSession.audioVideo.chooseVideoInputDevice(null);\n await this.meetingSession.audioVideo.chooseAudioInputDevice(\n this.audioInput?.deviceId || 'default',\n );\n\n this.meetingSession.audioVideo.start();\n } catch (e: unknown) {\n this.emit('error', e as Error);\n this.logger.error((e as Error).message);\n success(false);\n }\n });\n }\n\n /**\n * 注册rtc事件\n */\n _registerRtcEvent = () => {\n const presentAttendeeId =\n this.meetingSession?.configuration?.credentials?.attendeeId || '';\n if (presentAttendeeId) {\n // 处理音量变化\n const roster = new Map<\n string,\n {\n userId: string;\n volume: number | null;\n muted: boolean | null;\n signalStrength: number | null;\n }\n >();\n\n const getUserVolumes = () => {\n const result: any = [];\n roster.forEach((v, k) => {\n result.push({\n userId: v.userId,\n volume:\n v.muted || v.signalStrength === 0 || !Boolean(v.volume)\n ? 0\n : v.volume,\n });\n });\n return result;\n };\n\n this.meetingSession?.audioVideo.realtimeSubscribeToAttendeeIdPresence(\n (presentAttendeeId: any, present: any, externalUserId: any) => {\n if (!present) {\n roster.delete(presentAttendeeId);\n this.emit('userVolumes', getUserVolumes());\n return;\n }\n\n this.meetingSession?.audioVideo.realtimeSubscribeToVolumeIndicator(\n presentAttendeeId,\n (attendeeId: any, volume: any, muted: any, signalStrength: any) => {\n const baseAttendeeId = new DefaultModality(attendeeId).base();\n if (baseAttendeeId !== attendeeId) {\n // Optional: Do not include the content attendee (attendee-id#content) in the roster.\n // See the \"Screen and content share\" section for details.\n return;\n }\n\n roster.set(attendeeId, {\n userId: externalUserId || attendeeId,\n volume,\n muted,\n signalStrength,\n });\n this.emit('userVolumes', getUserVolumes());\n },\n );\n },\n );\n\n // 弱网\n this.meetingSession?.audioVideo.realtimeSubscribeToVolumeIndicator(\n presentAttendeeId,\n (attendeeId: any, volume: any, muted: any, signalStrength: any) => {\n const baseAttendeeId = new DefaultModality(attendeeId).base();\n if (baseAttendeeId === attendeeId) {\n if (signalStrength !== null && signalStrength !== 1) {\n this.emit('weakNetwork');\n }\n }\n },\n );\n\n // 报错\n\n this.meetingSession?.audioVideo.realtimeSubscribeToFatalError(\n (error: any) => this.emit('error', error),\n );\n }\n };\n\n quit(): Promise<boolean> {\n if (!this.joined) return Promise.resolve(true);\n return new Promise((success, fail) => {\n this.joined = false;\n const observer: AudioVideoObserver = {\n audioVideoDidStop: (sessionStatus: any) => {\n const sessionStatusCode = sessionStatus.statusCode();\n if (sessionStatusCode === MeetingSessionStatusCode.Left) {\n /*\n - You called meetingSession.audioVideo.stop().\n - When closing a browser window or page, Chime SDK attempts to leave the session.\n */\n this.logger.info('You left the session');\n success(true);\n } else {\n this.logger.info(\n `Stopped with a session status code: ${sessionStatusCode}`,\n );\n success(true);\n }\n },\n };\n this.meetingSession?.audioVideo.addObserver(observer);\n this.meetingSession?.audioVideo.stop();\n });\n }\n\n async detectMicro(): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n const rule = { audio: true, video: false };\n try {\n navigator.mediaDevices\n .getUserMedia(rule)\n .then(() => resolve(true))\n .catch(() => resolve(false));\n } catch (e: unknown) {\n this.logger.error((e as Error).message);\n resolve(false);\n }\n });\n }\n\n async toggleMicro(flag?: boolean): Promise<boolean> {\n if (flag) {\n this.meetingSession?.audioVideo.realtimeUnmuteLocalAudio();\n } else {\n this.meetingSession?.audioVideo.realtimeMuteLocalAudio();\n }\n const muted = this.meetingSession?.audioVideo.realtimeIsLocalAudioMuted();\n if (muted !== undefined) {\n return flag !== muted;\n } else {\n return false;\n }\n }\n\n shock(): void {\n throw new Error('Method not implemented.');\n }\n}\n","/**\n * rtc加入返回值code枚举\n */\nexport enum RTCJoinedInfoCodeEnum {\n /**\n * 成功\n */\n Success = 0,\n /**\n * 失败\n */\n Failure = 1,\n /**\n * 重复加入\n */\n ReJoin = 2,\n /**\n * 无麦克风权限\n */\n NoMicroPermission = 3,\n}\n\n/**\n * 进入rtc房间的回调信息\n */\nexport interface RTCJoinedInfo {\n code: RTCJoinedInfoCodeEnum;\n message: string;\n userId?: string;\n roomId?: number;\n errInfo?: {\n errCode: number;\n errMsg: string;\n };\n}\n","import { UserVolume } from '../typings/live/UserVolume';\nimport {\n RTCJoinedInfo,\n RTCJoinedInfoCodeEnum,\n} from '../typings/rtc/joinedInfo';\nimport { RTCType } from '../typings/rtc/type';\nimport { VRWebViewRTCOptions } from '../typings/rtc/VRWebViewRTCOptions';\nimport { CoreRTC } from './CoreRTC';\n\nexport class VRWebViewRTC extends CoreRTC {\n type: RTCType = RTCType.RealseeVRWebViewRTC;\n joined = false;\n micro = false;\n voiceId: string = '';\n\n private options: VRWebViewRTCOptions;\n\n get jsBridge() {\n return this.options.jsBridge;\n }\n\n constructor({ jsBridge, getVoiceSign }: VRWebViewRTCOptions) {\n super();\n this.options = { jsBridge, getVoiceSign };\n\n // TO-DO: 在微信小程序下有个音量上报的BUG会导致消息体过大从而jsbridge异常断开\n if (this.jsBridge.webViewType !== 'WxMiniProgramWebView') {\n this.jsBridge.callAndListen(\n 'live/userVolumes',\n (userVolumes: UserVolume[]) => {\n this.emit('userVolumes', userVolumes);\n },\n );\n }\n\n this.jsBridge.callAndListen('live/weakNetwork', (weakNetwork: boolean) => {\n if (weakNetwork) this.emit('weakNetwork');\n });\n }\n\n async join(options: {\n voiceId: string;\n userId: string;\n roomId: string;\n type: RTCType;\n }) {\n try {\n this.emit('joinWillStart');\n const { sdkAppId, userId, userSig } = await this.options.getVoiceSign(\n options,\n );\n\n if (!(Boolean(sdkAppId) && Boolean(userId) && Boolean(userSig))) {\n this.emit('error', new Error('加入房间失败:rtc 签名请求异常'));\n this.joined = false;\n return this.joined;\n }\n\n this.type = options.type;\n const [res, error] = await this.jsBridge.callAndBackfeed<RTCJoinedInfo>(\n `live/join?sdkAppID=${sdkAppId}&userID=${userId}&roomID=${Number(\n options.voiceId,\n )}&userSig=${userSig}`,\n );\n\n if (!res) {\n this.emit(\n 'error',\n error ? error : new Error('加入房间失败:未知异常。'),\n );\n this.joined = false;\n } else {\n if (res.code === RTCJoinedInfoCodeEnum.Success) {\n this.emit('joined');\n this.joined = true;\n } else {\n this.emit('error', res);\n this.joined = false;\n }\n }\n return this.joined;\n } catch (e) {\n this.emit('error', new Error('加入房间失败:' + (e as Error).message));\n this.joined = false;\n return this.joined;\n }\n }\n\n async quit() {\n const [res, error] = await this.jsBridge.callAndBackfeed<boolean>(\n 'live/quit',\n );\n if (res === null) {\n this.emit('error', error ? error : new Error('退出房间失败:未知异常。'));\n }\n this.joined = false;\n return !!res;\n }\n\n async detectMicro() {\n const [res, error] = await this.jsBridge.detectMicro();\n if (res === null) {\n this.emit('error', error ? error : new Error('麦克风监测异常!'));\n return false;\n }\n return res;\n }\n\n async toggleMicro(flag?: boolean) {\n const [res, error] = await this.jsBridge.callAndBackfeed<boolean>(\n `live/toggleMicro?flag=${!!flag ? 1 : 0}`,\n );\n if (res === null) {\n this.emit('error', error ? error : new Error('麦克风监测异常!'));\n return false;\n }\n this.micro = res;\n return res;\n }\n\n shock() {\n this.jsBridge.shock(1);\n }\n}\n","/**\n * WebSocket 通信指令\n * - 下行:服务端推送数据\n * - 上行:客户端上报数据\n */\nexport enum Command {\n /* 当前用户信息:下行 */\n SelfUserInfo = \"SELF_USER_INFO\",\n /* 房间信息:下行 */\n RoomInfo = \"ROOM_INFO\",\n /* RTC信息:下行 */\n RTCInfo = \"RTC_INFO\",\n /* 用户列表:下行 */\n UserList = \"USER_LIST\",\n /* 内置消息:下行、上行 */\n BuiltinMsg = \"BUILTIN_MSG\",\n /* 自定义广播事件消息:下行、上行 */\n CustomEvent = \"CUSTOM_EVENT\",\n /* 帧数据同步:下行、上行 */\n KeyframeSync = \"KEYFRAME_SYNC\",\n /* 被踢出房间:下行 */\n UserKickOut = \"USER_KICK_OUT\",\n}\n\n/**\n * 向服务端请求数据时的数据格式。\n */\nexport type ReqLiveMsg = {\n /**\n * 请求指令。\n */\n command: Command;\n /**\n * 前端请求时生成的uuid()。\n */\n front_request_id: string;\n /**\n * 数据内容\n */\n data: {\n /**\n * 如果此数据仅发送给某些用户,请提供这些用户的ucid。\n */\n to_user_ids?: string[];\n [key: string]: any;\n };\n};\n\n/**\n * 内置事件类型。\n */\nexport enum BuiltinEventType {\n /**\n * 变更用户状态。\n */\n UserChange = \"user_change\",\n /**\n * 变更房间状态。\n */\n RoomChange = \"room_change\",\n}\n\n/**\n * 内置事件行为类型。\n */\nexport enum BuiltinActionType {\n /**\n * 修改麦克风状态。\n */\n UserMicroStatus = \"change_micro_status\",\n /**\n * 同步当前用户状态:客户端麦克风状态已经修改成功,通知服务端\n */\n UserMicroStatusSync = \"sync_micro_status\",\n /**\n * 调整某些用户的权限。\n */\n UserPermission = \"change_permission\",\n /**\n * 用户状态发生改变。\n */\n UserStatus = \"change_status\",\n /**\n * 更新用户信息。\n */\n UserInfo = \"change_info\",\n /**\n * 关闭房间。\n */\n RoomClose = \"close\",\n}\n\n/**\n * 内置事件数据结构体。\n */\nexport type BuiltinMsg = {\n event_type: BuiltinEventType;\n action: BuiltinActionType;\n to_user_ids: string[];\n data: {\n extension?: Record<string, any>;\n [key: string]: any;\n };\n};\n\n/**\n * 麦克风状态。\n */\nexport enum MicroStatus {\n OPEN = \"OPEN\",\n CLOSE = \"CLOSE\",\n}\n/**\n * 响应的信息结构体。\n */\nexport type LiveMsg = {\n code: string;\n message: string;\n command: Command;\n roomCode: string;\n appId: string;\n requestId: string;\n frontRequestId: string;\n triggerUserId: string;\n data: Record<string, any> | Record<string, any>[];\n};\n\n/**\n * 解析下后端数据格式。\n * @param jsonTxt - JSON序列化后的文本。\n * @returns false 标识解析失败;解析成功返回 {@link LiveMsg} 实例。\n */\nexport function parseLiveMsg(jsonTxt: string): LiveMsg | boolean {\n try {\n const msg = JSON.parse(jsonTxt);\n const resMsg: Record<string, any> = {\n code: msg.code,\n message: msg.message,\n command: msg.command,\n roomCode: msg.room_code,\n appID: msg.app_id,\n requestId: msg.request_id,\n frontRequestId: msg.front_request_id,\n triggerUserID: msg.trigger_user_id,\n data: msg.data || {},\n };\n\n const undefinedKeys = Object.keys(resMsg).filter(\n (key) => resMsg[key] === undefined\n );\n if (undefinedKeys.length > 0) {\n console.warn(`推送数据格式异常:${undefinedKeys.join(\" \")} 值不存在!`);\n }\n return resMsg as LiveMsg;\n } catch (error) {\n // notcare? 过滤掉所有不符合规范的数据\n return false;\n }\n}\n","export enum LiveState\n/**\n * 尚未初始化\n */ {\n NOTINITIALIZED = -1,\n\n /**\n * 正在链接中\n */\n CONNECTING = 0,\n\n /**\n * 已经链接并且可以通讯\n */\n OPEN = 1,\n\n /**\n * 连接已关闭或者链接失败\n */\n CLOSED = 3,\n}\n","/**\n * 用户当前状态枚举。\n */\nexport enum UserStatus {\n /**\n * 正常\n */\n Normal = 0,\n /**\n * 被移除\n */\n Removed = 1,\n /**\n * 被替换\n */\n Replaced = 2,\n}\n\nexport enum MemUserStatus {\n WAIT_ENTER = 'WAIT_ENTER',\n ONLINE = 'ONLINE',\n LEAVE = 'LEAVE',\n KICK_OUT = 'KICK_OUT',\n BE_REPLACE = 'BE_REPLACE',\n EXCEPTION = 'EXCEPTION',\n}\n\n/**\n * 用户信息扩展字段:比如提供用户画像相关的数据。\n */\nexport type UserInfoExt = {\n /**\n * 用户昵称。\n */\n nickname?: string;\n /**\n * 用户头像。\n */\n avatar?: string;\n /**\n * 其他用户相关的字段,比如用户职称、住址、联系方式等信息。\n */\n [key: string]: any;\n};\n\n/**\n * 带看会话房间用户的信息格式。\n */\nexport type UserInfo = {\n /**\n * 用户唯一标识ID。\n */\n id: string;\n /**\n * 用户当前的状态。\n */\n status?: UserStatus;\n /**\n * 内存中的用户状态。\n */\n mem_user_status?: MemUserStatus;\n /**\n * 用户当前是否开启麦克风。\n */\n micro_status: boolean;\n /**\n * 用户角色定义。(前端不关注此字段)。\n */\n user_role?: number | string;\n /**\n * 用户当前是否在线。\n */\n current_ws_online?: boolean;\n /**\n * 用户曾经是否在线过,即进入房间后又由于某种原因离开后重新进入。\n */\n once_ws_online?: boolean;\n /**\n * RTC 环境是否就绪,即当前语音是否联通。\n */\n rtc: boolean;\n /**\n * 当前用户的权限配置。(UI层面理解)。\n */\n permission?: Partial<Permission>;\n /**\n * 用户信息扩展字段。\n */\n extension?: UserInfoExt;\n};\n\ninterface Permission {\n // 切换更多VR的权限\n more_vr_scene: boolean;\n // 邀请别人的权限\n invite_other: boolean;\n // 控制自己麦克风\n control_own_micro: boolean;\n // 控制别人的麦克风\n control_other_micro: boolean;\n // 查看自己麦克风状态\n view_own_micro_status: boolean;\n // 查看别人麦克风状态\n view_other_micro_status: boolean;\n // 关闭带看房间\n close_live_room: boolean;\n // 申请要电话\n apply_other_phone: boolean;\n // 动态进入\n dynamic_enter: boolean;\n // 同步帧数据\n sync_frame: boolean;\n // 改变角色\n transfer_role: boolean;\n // 改变别人的状态\n change_other_status: boolean;\n // 控制别人全量同步帧数据的权限\n control_other_sync: boolean;\n // 其它权限点\n extension: Record<string, boolean>;\n}\n","/**\n * WebSocket 连接状态枚举\n */\nexport enum WebSocketState {\n /**\n * 尚未初始化\n */\n NOTINITIALIZED = -1,\n\n /**\n * 正在链接中\n */\n CONNECTING = 0,\n\n /**\n * 已经链接并且可以通讯\n */\n OPEN = 1,\n\n /**\n * 连接正在关闭\n */\n CLOSING = 2,\n\n /**\n * 连接已关闭或者没有链接成功\n */\n CLOSED = 3,\n}\n\nexport type WebSocketError = {\n type: WebSocketErrorType,\n closeError?: WebSocketCloseError,\n target?: Event | CloseEvent\n error?: any\n}\n\nexport enum WebSocketErrorType {\n Error = 'Error',\n Close = 'Close',\n MicroAuth = 'MicroAuth',\n DuplicateConnect = 'DuplicateConnect',\n IllegalURL = 'IllegalURL',\n Unknown = 'Unknown',\n IllegalArgs = 'IllegalArgs'\n}\n\n/**\n * WebSocket 异常关闭枚举:https://developer.mozilla.org/zh-CN/docs/Web/API/CloseEvent。\n */\nexport enum WebSocketCloseError {\n /**\n * 终端离开, 可能因为服务端错误, 也可能因为浏览器正从打开连接的页面跳转离开。\n */\n Err_1001 = 'CLOSE_GOING_AWAY',\n\n /**\n * 由于协议错误而中断连接。\n */\n Err_1002 = 'CLOSE_PROTOCOL_ERROR',\n\n /**\n * 由于接收到不允许的数据类型而断开连接 (如仅接收文本数据的终端接收到了二进制数据)。\n */\n Err_1003 = 'CLOSE_UNSUPPORTED',\n\n /**\n * 安全因素或WebSocket连接次数达到上限。\n */\n Err_1006 = 'CLOSE_ABNORMAL',\n\n /**\n * 由于收到了格式不符的数据而断开连接 (如文本消息中包含了非 UTF-8 数据)。\n */\n Err_1007 = 'Unsupported Data',\n /**\n * 由于收到不符合约定的数据而断开连接。\n */\n Err_1008 = 'Policy Violation',\n /**\n * 由于收到过大的数据帧而断开连接。\n */\n Err_1009 = 'CLOSE_TOO_LARGE',\n /**\n * 未知错误。\n */\n Err_unknown = 'unknown'\n\n}\n\n\nexport function parseWSClsErr(code: number) {\n switch (code) {\n case 1001: {\n return WebSocketCloseError.Err_1001\n }\n case 1002: {\n return WebSocketCloseError.Err_1002\n }\n case 1003: {\n return WebSocketCloseError.Err_1003\n }\n case 1006: {\n return WebSocketCloseError.Err_1006\n }\n case 1007: {\n return WebSocketCloseError.Err_1007\n }\n case 1008: {\n return WebSocketCloseError.Err_1008\n }\n case 1009: {\n return WebSocketCloseError.Err_1009\n }\n default:\n break\n }\n\n return WebSocketCloseError.Err_unknown\n}\n","\nexport const cache: Record<string, {\n uuid: string;\n queue: {\n once: boolean\n callback: any\n }[]\n}> = {}\n\n/**\n * 创建一个唯一的函数名(在当前页面会话中保障其唯一性即可)。\n * @param extra 可以额外自定义部分字符串。\n * @returns \n */\nexport function registerGlobalValue(scheme: string, callback: any, once = true) {\n\n if (!cache[scheme]) {\n const uuid = '$jsBridgeFn_' + Date.now().toString(16).toUpperCase() + '_' + Math.ceil(Math.random() * 10000).toString(16).toUpperCase()\n cache[scheme] = {\n uuid,\n queue: [{ once, callback }],\n }\n } else {\n cache[scheme].queue.push({ once, callback })\n }\n\n Object.assign(window, {\n [cache[scheme].uuid]: (data: any) => {\n\n cache[scheme].queue = cache[scheme].queue.reduce((accu: {\n once: boolean\n callback: any\n }[], curr) => {\n const { once, callback } = curr\n if (!once) {\n accu.push(curr)\n }\n callback(data)\n return accu\n }, [])\n }\n\n })\n return cache[scheme].uuid\n\n}\n\n","import { ControllerProtocol } from '../typings/ControllerProtocol'\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol'\n\nexport class BaseController implements ControllerProtocol {\n\n checkReady(timeout?: number): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n\n callAndBackfeed<T>(scheme: string): Promise<JSBridgeReturnType<false | T>> {\n return Promise.resolve([false, null])\n }\n\n callAndListen<T>(scheme: string, callback: (data: T) => void): Promise<JSBridgeReturnType<false | (() => void)>> {\n return Promise.resolve([false, null])\n }\n\n}\n","import { registerGlobalValue, cache } from '../utils/registerGlobalValue'\nimport { DeviceInfo } from '../typings/DeviceInfo'\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol'\nimport { BaseController } from './BaseController'\n\nconst HYBRID_BRIDGE_NAME = 'HybridBridgeLJ'\n\ninterface HybridBridgeLJ {\n getStaticData: (functionName: string) => void\n callAndBackfeed: (msg: string) => void\n callAndListen: (msg: string) => void\n}\n\ntype CustomWindow = Window & {\n HybridBridgeLJ?: HybridBridgeLJ\n}\n\nconst $window = window as unknown as CustomWindow\n\n/**\n * Android WebView 控件。\n */\nexport class WebViewController extends BaseController {\n hybridBridge?: HybridBridgeLJ\n deviceInfo?: DeviceInfo\n\n constructor() {\n super()\n Promise.resolve().then(async () => {\n try {\n await this.checkBridgeReady()\n } catch (error) {\n console.warn(error)\n }\n })\n }\n\n /**\n * 检查 HybridBridgeLJ 是否ready\n * @param timeout 超时时间\n * @returns \n */\n private checkBridgeReady(timeout = 6000) {\n if (this.hybridBridge) return true\n\n const start = performance.now()\n\n return new Promise<boolean>((resolve, reject) => {\n const check = () => {\n if (this.hybridBridge) return resolve(true)\n\n if ($window.HybridBridgeLJ) {\n const hybridBridge = $window[HYBRID_BRIDGE_NAME]\n\n hybridBridge?.getStaticData(\n registerGlobalValue('HYBRID_BRIDGE_NAME', (data: any) => {\n this.deviceInfo = JSON.parse(data) as DeviceInfo\n this.hybridBridge = hybridBridge\n\n return resolve(true)\n }),\n )\n }\n if (performance.now() - start > (timeout || 6000)) {\n // console.warn('HybridBridge 初始化超时~')\n return reject(new Error('HybridBridge 初始化超时~'))\n }\n\n // 逐帧监测\n requestAnimationFrame(check)\n }\n\n // 开启监测\n check()\n })\n }\n\n async checkReady(timeout = 6000) {\n const res: JSBridgeReturnType<boolean> = [null, null]\n\n if (this.hybridBridge) {\n res[0] = true\n return res\n }\n\n try {\n res[0] = await this.checkBridgeReady(timeout)\n } catch (error) {\n res[0] = false\n res[1] = error as Error\n }\n\n return res\n }\n\n get ready() {\n return !!this.hybridBridge\n }\n\n get scheme() {\n return this.deviceInfo?.scheme || ''\n }\n\n createSchemeLink(schemeUrl: string) {\n if (schemeUrl.startsWith(this.scheme)) {\n return schemeUrl\n }\n return this.scheme + '://' + schemeUrl\n }\n\n async callAndBackfeed<T>(scheme: string) {\n const res = [false, null] as JSBridgeReturnType<T | false>\n const [ready, readyError] = await this.checkReady()\n\n if (!ready) {\n res[0] = false\n res[1] = readyError\n\n return res\n }\n\n return await new Promise<JSBridgeReturnType<T | false>>(async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme)\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(this.createSchemeLink(scheme), (data: string) => {\n const d: any = (() => {\n try {\n return JSON.parse(data)\n } catch (e){\n return data\n }\n })() \n\n res[0] = (() => {\n if (d === 1) return true\n if (d === 0) return false\n return d\n })() as T\n\n resolve(res)\n }),\n })\n\n this.hybridBridge!.callAndBackfeed(msg)\n })\n }\n\n async callAndListen<T>(scheme: string, callback: (data: T) => void) {\n const res = [false, null] as JSBridgeReturnType<false | (() => void)>\n const [ready, readyError] = await this.checkReady()\n\n if (!ready) {\n res[0] = false\n res[1] = readyError\n\n return res\n }\n\n return await new Promise<JSBridgeReturnType<false | (() => void)>>(async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme)\n const _callback = (data: string) => {\n const d = (() => {\n try {\n return JSON.parse(data)\n } catch (e) {\n return data\n }\n })() \n\n const callbackParam = (() => {\n if (d === 1) return true\n if (d === 0) return false\n return d\n })() as T\n\n callback(callbackParam)\n res[0] = () => {\n // 清理掉当前的回调引用\n const callbacks = cache[actionUrl]\n if (!callbacks) return\n\n const idx = callbacks.queue.findIndex((func) => func.callback === _callback)\n if (idx !== -1) {\n callbacks.queue.splice(idx, 1)\n }\n }\n resolve(res)\n }\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(actionUrl, _callback, false),\n })\n\n this.hybridBridge!.callAndListen(msg)\n })\n }\n}\n","import { registerGlobalValue, cache } from '../utils/registerGlobalValue';\nimport { DeviceInfo } from '../typings/DeviceInfo';\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol';\n\nexport enum CallTypeEnum {\n callAndBackfeed = 'callAndBack',\n callAndListen = 'callAndListen',\n}\n\ntype CustomWindow = Window & {\n webkit: {\n messageHandlers: {\n realsee?: Worker;\n };\n };\n\n [key: string]: any;\n};\n\nconst $window = window as unknown as CustomWindow;\n\n/**\n *\n * 将原本 JSBridgeApp 中的逻辑均聚合至此 Controller 实现,\n * 目的是规避太多的引用对象被暴露(防止因引用对象被'篡改'造成未知异常)。\n *\n */\nexport class WKWebViewController {\n worker?: Worker;\n deviceInfo?: DeviceInfo;\n\n constructor() {\n this.checkBridgeReady();\n }\n\n private checkBridgeReady(timeout = 6000) {\n if (this.worker) return true;\n\n const start = performance.now();\n\n return new Promise<boolean>((resolve, reject) => {\n const check = () => {\n if (this.worker) return resolve(true);\n\n if (\n $window.webkit &&\n $window.webkit.messageHandlers &&\n $window.webkit.messageHandlers.realsee\n ) {\n const worker = $window.webkit.messageHandlers.realsee;\n\n worker.postMessage(\n JSON.stringify({\n type: 'getStaticData',\n param: JSON.stringify({\n functionName: registerGlobalValue(\n 'HYBRID_BRIDGE_NAME',\n (data: any) => {\n this.deviceInfo = JSON.parse(data) as DeviceInfo;\n this.worker = worker;\n return resolve(true);\n },\n ),\n }),\n }),\n );\n\n return;\n }\n if (performance.now() - start > (timeout || 6000)) {\n // console.warn('HybridBridge 初始化超时~')\n return reject(new Error('HybridBridge 初始化超时~'));\n }\n\n // 逐帧监测\n requestAnimationFrame(check);\n };\n\n // 开启监测\n check();\n });\n }\n\n async checkReady(timeout = 6000) {\n const res: JSBridgeReturnType<boolean> = [null, null];\n\n if (this.worker) {\n res[0] = true;\n return res;\n }\n\n try {\n res[0] = await this.checkBridgeReady(timeout);\n } catch (error) {\n res[0] = false;\n res[1] = error as Error;\n }\n\n return res;\n }\n\n get ready() {\n return !!this.worker;\n }\n\n get scheme() {\n return this.deviceInfo?.scheme || '';\n }\n\n createSchemeLink(schemeUrl: string) {\n if (schemeUrl.startsWith(this.scheme)) {\n return schemeUrl;\n }\n return this.scheme + '://' + schemeUrl;\n }\n\n async callAndBackfeed<T>(scheme: string) {\n const res = [false, null] as JSBridgeReturnType<T | false>;\n const [ready, readyError] = await this.checkReady();\n\n if (!ready) {\n res[0] = false;\n res[1] = readyError;\n\n return res;\n }\n\n return await new Promise<JSBridgeReturnType<T | false>>(async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme);\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(\n this.createSchemeLink(scheme),\n (data: string) => {\n const d = (() => {\n try {\n return JSON.parse(data);\n } catch (e) {\n return data;\n }\n })();\n\n res[0] = (() => {\n if (d === 1) return true;\n if (d === 0) return false;\n return d;\n })() as T;\n\n resolve(res);\n },\n ),\n });\n\n this.worker!.postMessage(\n JSON.stringify({\n type: 'callAndBackfeed',\n param: msg,\n }),\n );\n });\n }\n\n async callAndListen<T>(scheme: string, callback: (data: T) => void) {\n const res = [false, null] as JSBridgeReturnType<false | (() => void)>;\n const [ready, readyError] = await this.checkReady();\n\n if (!ready) {\n res[0] = false;\n res[1] = readyError;\n\n return res;\n }\n\n return await new Promise<JSBridgeReturnType<false | (() => void)>>(\n async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme);\n const _callback = (data: string) => {\n const d = (() => {\n try {\n return JSON.parse(data);\n } catch (e) {\n return data;\n }\n })();\n\n const callbackParam = (() => {\n if (d === 1) return true;\n if (d === 0) return false;\n return d;\n })() as T;\n\n callback(callbackParam);\n res[0] = () => {\n // 清理掉当前的回调引用\n const callbacks = cache[actionUrl];\n if (!callbacks) return;\n\n const idx = callbacks.queue.findIndex(\n (func) => func.callback === _callback,\n );\n if (idx !== -1) {\n callbacks.queue.splice(idx, 1);\n }\n };\n resolve(res);\n };\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(actionUrl, _callback, false),\n });\n\n this.worker!.postMessage(\n JSON.stringify({\n type: 'callAndListen',\n param: msg,\n }),\n );\n },\n );\n }\n}\n","// uuid\nfunction S4() {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)\n}\n\n/**\n * 随机生成一个uuid值\n */\nexport default function uuid() {\n // then to call it, plus stitch in '4' in the third group\n return (S4() + S4() + '-' + S4() + '-4' + S4().substr(0, 3) +\n '-' + S4() + '-' + S4() + S4() + S4()).toLowerCase()\n}\n","/**\n * 事件消息\n */\nexport enum WeappBridgeMessage {\n isReady = 'Are You OK?',\n ready = 'I`m OK!',\n ping = 'ping',\n pong = 'pong',\n alive = 'I`m alive!',\n}\n","const endpoint = 'wss://ws.realsee.com'\n\nexport default endpoint\n","/**\n * 拼接ws链接\n * @param tpl\n * @param params\n * @returns\n */\nconst generateWssUrl = (tpl: string, params: Record<string, string>) => {\n const url = Object.keys(params).reduce((res, curr: string) => res.replace(`{{${curr}}}`, `${params[curr]}`), tpl)\n return encodeURI(url)\n}\n\nexport default generateWssUrl\n","const isValidKey = (key: string | number | symbol, object: object): key is keyof typeof object => key in object\nexport default isValidKey\n","/**\n * 解析参数\n * @param query\n * @returns\n */\nconst parseQuery = (query = '') =>\n query\n .replace('?', '')\n .split('&')\n .map((qs: string) => {\n const [k, v] = qs.split('=')\n return { [k]: decodeURIComponent(v) }\n })\n .reduce((result, curr) => ({ ...result, ...curr }), {})\n\nexport default parseQuery\n","const EVENT_SYMBOL = '$$REALSEE_JSBRIDGE_EVENT$$'\n\nexport type EventMap = {\n [name: string]: (...args: any[]) => void | boolean\n}\n\nfunction __generateEventIfNotExisted<T extends EventMap>(\n instance: any,\n): {\n [Key in keyof T]: [callback: (...args: Parameters<T[Key]>) => ReturnType<T[Key]>, once: boolean][]\n } {\n if (!instance[EVENT_SYMBOL]) {\n instance[EVENT_SYMBOL] = {}\n }\n return instance[EVENT_SYMBOL]\n}\n\nfunction __removeEventIfNotExisted(instance: any) {\n if (!instance[EVENT_SYMBOL]) {\n delete instance[EVENT_SYMBOL]\n }\n}\n\n/**\n * 监听者模式\n * @template T 预设的监听回调类型\n * @example\n * ```\n * new Subscribe<{\n * \"foo\": [arg1: number, arg2: string],\n * \"bar\": [arg: boolean],\n * }>()\n * ```\n */\nclass Subscribe<T extends EventMap> {\n /**\n * 判断是否注册了事件\n * @param name 事件类型\n */\n hasListener(name: keyof T): boolean {\n const events = __generateEventIfNotExisted<T>(this)\n return events && events[name] && events[name].length > 0\n }\n\n /**\n * 注册事件\n * @param name 事件类型\n * @param callback 事件回调函数\n * @param once 是否只执行一次\n * @returns 解除事件\n * @template K 预设的监听事件名称\n * @template C 回调函数函数上下文\n */\n on<K extends keyof T>(\n name: K,\n callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>,\n once?: boolean,\n ): () => void {\n const events = __generateEventIfNotExisted<T>(this)\n if (!events[name]) events[name] = []\n events[name].push([callback as any, once || false])\n return () => this.off(name, callback)\n }\n\n /**\n * 注册事件(是否只执行一次)\n * @param name 事件类型\n * @param callback 事件回调函数\n * @returns 解除事件\n * @template K 预设的监听事件名称\n * @template C 回调函数函数上下文\n */\n once<K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>): () => void {\n return this.on(name, callback, true)\n }\n\n /**\n * 解除事件\n *\n * 如果 name 不传的话解除对应所有事件\n * 如果 name, callback 不传的话解除所有name的所有事件\n * @param name 事件类型\n * @param callback 事件回调函数\n * @template K 预设的监听事件名称\n */\n off<K extends keyof T>(name?: K, callback?: (...args: Parameters<T[K]>) => ReturnType<T[K]>): void {\n if (name === undefined) {\n __removeEventIfNotExisted(this)\n return\n }\n const events = __generateEventIfNotExisted<T>(this)\n if (!events[name]) events[name] = []\n if (callback === undefined) {\n events[name].length = 0\n return\n }\n let index = 0\n for (; index < events[name].length; index++) {\n if (events[name][index][0] === callback) break\n }\n if (index < events[name].length) {\n events[name].splice(index, 1)\n }\n }\n\n /**\n * 触发事件\n * @param name 事件类型\n * @param data 触发事件的数据\n * @returns canceled 是否被触发取消\n * @template K 预设的监听事件名称\n */\n emit<K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean {\n let canceled = false\n const events = __generateEventIfNotExisted<T>(this)\n const event = events[name] || []\n for (const one of event.slice()) {\n const [callback, once = false] = one\n const result = callback(...data)\n if (once) this.off(name, callback)\n if (result === false) canceled = true\n }\n return canceled\n }\n}\n\nexport namespace SubscribeMixinType {\n export interface hasListener<T extends EventMap> {\n (name: keyof T): boolean\n }\n export interface on<T extends EventMap> {\n <K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>, once?: boolean): () => void\n }\n export interface once<T extends EventMap> {\n <K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>): () => void\n }\n export interface off<T extends EventMap> {\n <K extends keyof T>(names?: K | K[], callback?: (...args: any[]) => any): void\n }\n export interface emit<T extends EventMap> {\n <K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean\n }\n}\n\nexport { Subscribe }\n","import { Subscribe } from '../../utils/Subscribe';\n\n/**\n * 鲁棒ws的配置参数\n */\nexport type RobustWebSocketConstructorOptions = {\n url: string | ((ws: RobustWebSocket) => string);\n protocols?: string[];\n robustOptions?: RobustOptions;\n};\n\n/**\n * ws 鲁棒性的配置\n */\nexport type RobustOptions = {\n // 等待超时时间\n timeout?: number;\n // 是否进行重连的判断\n shouldReconnect?: (\n event: CloseEvent,\n ws: RobustWebSocket,\n ) => undefined | number;\n // 是否1000的正常关闭code 也需要重连\n should1000Reconnect?: boolean;\n // 是否监听 navigator 上的online/offline 事件\n ignoreConnectivityEvents?: boolean;\n // 是否自动连接\n automaticOpen?: boolean;\n};\n\nexport type RobustWebSocketEventDetail = {\n reconnects: number;\n attempts: number;\n};\n\nexport type RobustWebSocketEvent<T> = Event & {\n detail: T;\n};\n\n// RobustWebSocket事件映射\nexport type RobustWebSocketEventMap = {\n connecting: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n timeout: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n open: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n close: (event: CloseEvent) => void;\n error: (event: Event) => void;\n message: (\n event: MessageEvent<string | ArrayBuffer | Blob | ArrayBufferView>,\n ) => void;\n};\n\n/**\n * 具有鲁棒性的WebSocket封装\n * 1、自动重连\n * 2、可根据网络情况进行重连\n */\nexport class RobustWebSocket extends Subscribe<RobustWebSocketEventMap> {\n private _realWebSocket: WebSocket | undefined;\n private _url?: string | ((ws: RobustWebSocket) => string);\n private _protocols: string[] | undefined;\n private _options: RobustOptions = {\n timeout: 10000,\n shouldReconnect: (event, ws) => {\n if (event.code === 1008 || event.code === 1011) return;\n return [0, 3000, 10000][ws.attempts];\n },\n should1000Reconnect: false,\n ignoreConnectivityEvents: false,\n automaticOpen: false,\n };\n private _connectTimeout: any | undefined;\n private _attempts = 0;\n private _reconnects = -1;\n private _reconnectWhenOnlineAgain = false;\n private _explicitlyClosed = false;\n private _pendingReconnect: number | undefined;\n private _connectivityEventsAttached = false;\n\n public get attempts(): number {\n return this._attempts;\n }\n\n constructor(options?: RobustWebSocketConstructorOptions) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n super();\n if (options) {\n this.setOptions(options);\n }\n }\n\n public setOptions(options: RobustWebSocketConstructorOptions): void {\n if (!options) return;\n this._url = options.url;\n this._protocols = options.protocols;\n const opts = Object.assign(this._options, options.robustOptions || {});\n if (typeof opts?.timeout !== 'number') {\n throw new Error(\n 'timeout must be the number of milliseconds to timeout a connection attempt',\n );\n }\n\n if (typeof opts?.shouldReconnect !== 'function') {\n throw new Error(\n 'shouldReconnect must be a function that returns the number of milliseconds to wait for a reconnect attempt, or null or undefined to not reconnect.',\n );\n }\n this._options = opts;\n if (this._options.automaticOpen) {\n this._createWebSocket();\n }\n }\n\n /**\n * 清理连接中的请求\n */\n private _clearPendingReconnectIfNeeded = () => {\n if (this._pendingReconnect) {\n clearTimeout(this._pendingReconnect);\n this._pendingReconnect = undefined;\n }\n };\n\n /**\n * 当网页连接上网络进行重连\n * @param event\n */\n private _online = (event: Event) => {\n if (this._reconnectWhenOnlineAgain) {\n this._clearPendingReconnectIfNeeded();\n this._reconnect(event as CloseEvent);\n }\n };\n\n /**\n * 当网页断开网络进行关闭\n */\n private _offline = () => {\n this._reconnectWhenOnlineAgain = true;\n this._realWebSocket?.close(1000);\n };\n\n /**\n * 解除网络监听事件\n */\n private _detachConnectivityEvents = () => {\n if (this._connectivityEventsAttached) {\n globalThis?.removeEventListener('online', this._online);\n globalThis?.removeEventListener('offline', this._offline);\n this._connectivityEventsAttached = false;\n }\n };\n\n /**\n * 注册网络监听事件\n */\n private _attachConnectivityEvents = () => {\n if (!this._connectivityEventsAttached) {\n globalThis?.addEventListener('online', this._online);\n globalThis?.addEventListener('offline', this._offline);\n this._connectivityEventsAttached = true;\n }\n };\n\n /**\n * 发送消息\n * @param data\n * @returns\n */\n send = (\n data: string | ArrayBuffer | Blob | ArrayBufferView,\n ): void | undefined => {\n if (this._realWebSocket?.readyState === this._realWebSocket?.OPEN) {\n this._realWebSocket?.send(data);\n }\n };\n\n /**\n * 关闭连接\n * @param code 代码\n * @param reason 原因\n * @returns\n */\n close = (code?: number | string, reason?: string): void | undefined => {\n if (typeof code !== 'number') {\n reason = code;\n code = 1000;\n }\n\n this._clearPendingReconnectIfNeeded();\n this._reconnectWhenOnlineAgain = false;\n this._explicitlyClosed = true;\n this._detachConnectivityEvents();\n\n return this._realWebSocket?.close(code, reason);\n };\n\n /**\n * 进行ws连接\n */\n open = (url?: string): void => {\n if (url) {\n this._url = url;\n }\n if (\n this._realWebSocket?.readyState !== WebSocket.OPEN &&\n this._realWebSocket?.readyState !== WebSocket.CONNECTING\n ) {\n this._clearPendingReconnectIfNeeded();\n this._reconnectWhenOnlineAgain = false;\n this._explicitlyClosed = false;\n\n this._createWebSocket();\n }\n };\n\n /**\n * 创建ws连接\n */\n private _createWebSocket = () => {\n const newUrl =\n typeof this._url === 'string' ? this._url : this._url?.(this);\n if (!newUrl) return;\n this._pendingReconnect = undefined;\n this._removeWebSocketEvent()\n this._realWebSocket = new WebSocket(newUrl, this._protocols || undefined);\n\n this._attempts = this._attempts + 1;\n this.emit(\n 'connecting',\n new CustomEvent('connecting', {\n detail: { attempts: this._attempts, reconnects: this._reconnects },\n }),\n );\n\n const timeoutCallback = () => {\n this._connectTimeout = undefined;\n this._detachConnectivityEvents();\n this.emit(\n 'timeout',\n new CustomEvent('connecting', {\n detail: {\n attempts: this._attempts,\n reconnects: this._reconnects,\n },\n }),\n );\n };\n\n this._connectTimeout = setTimeout(timeoutCallback, this._options?.timeout);\n\n this._dispatchWebSocketEvent();\n\n if (!this._options?.ignoreConnectivityEvents) {\n this._attachConnectivityEvents();\n }\n };\n\n /**\n * 断开ws事件\n */\n private _removeWebSocketEvent = () => {\n this._realWebSocket?.removeEventListener(\n 'open',\n this._webSocketOpenHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'close',\n this._webSocketCloseHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'error',\n this._webSocketErrorHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'message',\n this._webSocketMessageHandler,\n );\n };\n\n /**\n * 分发ws事件\n */\n private _dispatchWebSocketEvent = () => {\n this._realWebSocket?.addEventListener('open', this._webSocketOpenHandler);\n this._realWebSocket?.addEventListener('close', this._webSocketCloseHandler);\n this._realWebSocket?.addEventListener('error', this._webSocketErrorHandler);\n this._realWebSocket?.addEventListener(\n 'message',\n this._webSocketMessageHandler,\n );\n };\n\n /**\n * ws连接事件\n * @returns\n */\n private _webSocketOpenHandler = (event: Event) => {\n if (this._connectTimeout) {\n clearTimeout(this._connectTimeout);\n this._connectTimeout = undefined;\n }\n const reconnects = ++this._reconnects;\n const attempts = this._attempts;\n this._attempts = 0;\n this._reconnectWhenOnlineAgain = false;\n return this.emit(\n 'open',\n Object.assign(event, { detail: { reconnects, attempts } }),\n );\n };\n\n /**\n * ws 关闭事件\n * @param event\n * @returns\n */\n private _webSocketCloseHandler = (event: CloseEvent) => {\n this._reconnect(event);\n return this.emit('close', event);\n };\n\n /**\n * ws 异常\n * @param event\n * @returns\n */\n private _webSocketErrorHandler = (event: Event) => {\n return this.emit(\n 'error',\n new CustomEvent('error', { detail: { error: event } }),\n );\n };\n\n /**\n * ws消息\n * @param event\n * @returns\n */\n private _webSocketMessageHandler = (event: MessageEvent) => {\n return this.emit('message', event);\n };\n\n /**\n * 进行重连\n * @param event\n * @returns\n */\n private _reconnect(event: CloseEvent) {\n if (\n (!this._options?.should1000Reconnect && event.code === 1000) ||\n this._explicitlyClosed\n ) {\n this._attempts = 0;\n return;\n }\n if (globalThis?.navigator?.onLine === false) {\n this._reconnectWhenOnlineAgain = true;\n return;\n }\n\n const delay = this._options?.shouldReconnect?.(event, this);\n if (typeof delay === 'number') {\n this._pendingReconnect = setTimeout(this._createWebSocket, delay);\n }\n }\n}\n","import uuid from '../../utils/uuid';\nimport { JSBridgeReturnType } from '../../typings/JSBridgeProtocol';\nimport { WeappBridgeMessage } from '../typings/WeappBridgeMessage';\nimport { WeappBridgeRequest } from '../typings/WeappBridgeRequest';\nimport { WeappBridgeResponse } from '../typings/WeappBridgeResponse';\nimport defaultWsEndpoint from '../../utils/defaultWsEndpoint';\nimport generateWssUrl from '../../utils/generateWssUrl';\nimport isValidKey from '../../utils/isValidKey';\nimport parseQuery from '../../utils/parseQuery';\nimport { RobustWebSocket } from './RobustWebSocket';\n\nexport interface HybridBridgeLJ {\n getStaticData: (functionName: string) => void;\n callAndBackfeed: (msg: string) => void;\n callAndListen: (msg: string) => void;\n invoke?<P, R>(method: string, args: P): Promise<R>;\n execute?<P, R>(method: string, args: P): Promise<R>;\n isReady: boolean;\n}\n\ninterface RsSchemeRequest {\n id: string;\n actionUrl: string;\n type: 'callAndListen' | 'callAndBackfeed';\n command: 'rsSchemeRequest';\n}\ninterface RsSchemeResponse<T = any> {\n id: string;\n scheme: string;\n result: T;\n errmsg: string;\n command: 'rsSchemeResponse';\n}\n\nexport default class HybridBridge implements HybridBridgeLJ {\n /**\n * @deprecated 兼容旧逻辑\n */\n private _rsWeappBridgeMethodAdapter: Record<string, Function> = {};\n\n private _ws: RobustWebSocket = new RobustWebSocket();\n\n private _readyState: 'uninitialized' | 'connecting' | 'open' | 'close' =\n 'close';\n\n get isReady(): boolean {\n return this._readyState === 'open';\n }\n\n constructor() {\n if ((globalThis?.window as any)?.__Realsee_WxMini_HybridBridge__ instanceof HybridBridge) {\n return (globalThis?.window as any)?.__Realsee_WxMini_HybridBridge__\n }\n if (globalThis?.window) {\n (globalThis.window as any).__Realsee_WxMini_HybridBridge__ = this;\n this.initBuiltInHandlers();\n }\n }\n /**\n * 进行jsbridge的初始化,即打通ws通道\n * @param timeout 超时计时\n * @returns\n */\n initialize = async (timeout = 6000): Promise<JSBridgeReturnType<boolean>> => {\n const res: JSBridgeReturnType<boolean> = [false, null];\n\n const {\n wssid,\n wstsp,\n wssig,\n wsmnt = defaultWsEndpoint,\n } = parseQuery(globalThis.location.search);\n if (!(wssid && wstsp && wssig && wsmnt)) {\n res[1] = new Error('HybridBridge 参数缺失,初始化失败~');\n return res;\n }\n\n const url = generateWssUrl(\n '{{origin}}/{{endpoint}}/{{uuid}}/{{member}}/{{ak}}/{{ts}}/{{sign}}',\n {\n origin: wsmnt,\n endpoint: 'proxy',\n uuid: wssid,\n member: 'webview',\n ak: 'vr_live_miniapp',\n ts: wstsp,\n sign: wssig,\n },\n );\n\n try {\n const result = await this._open(url);\n if (result) {\n this.initBuiltInHandlers();\n res[0] = await this.waitReady(timeout);\n } else {\n res[1] = new Error('HybridBridge ws未连接,初始化失败~');\n }\n } catch (e) {\n res[1] = e as Error;\n }\n\n return res;\n };\n\n /**\n * 内建的处理函数\n */\n private initBuiltInHandlers = () => {\n this._registerLifecycleHandler();\n this._registerHeartbeatHandler();\n this._registerMessageHandler();\n this._registerBridgeRequestHandler();\n this._registerReadyHandler();\n };\n\n /**\n * 进行连接\n * @param url ws链接\n * @returns\n */\n private _open = (url: string) =>\n new Promise((resolve) => {\n const handleOpen = () => {\n this._receivedMessage(\n WeappBridgeMessage.ready,\n () => resolve(true),\n true,\n );\n this._ws.once('timeout', () => resolve(false));\n this.send(WeappBridgeMessage.isReady)\n };\n this._ws.once('open', handleOpen);\n this._ws.open(url);\n });\n\n /**\n * 注册生命周期回调\n */\n private _registerLifecycleHandler = () => {\n this._ws.on('connecting', () => {\n console.log('RsWeappBridge connecting');\n this._readyState = 'connecting';\n });\n\n this._ws.on('open', () => {\n console.log('RsWeappBridge open');\n this._readyState = 'open';\n });\n\n this._ws.on('close', () => {\n this._readyState = 'close';\n });\n\n this._ws.on('error', () => {\n console.log('RsWeappBridge error');\n this._readyState = 'close';\n });\n\n this._ws.on('timeout', () => {\n console.log('RsWeappBridge timeout');\n this._readyState = 'close';\n });\n };\n\n /**\n * 注册心跳的回调\n * @deprecated 兼容老的容器SDK\n */\n private _registerHeartbeatHandler = () => {\n // 收到ping时回复pong\n this._receivedMessage(WeappBridgeMessage.ping, () =>\n setTimeout(() => this._ws.send(WeappBridgeMessage.pong), 500),\n );\n // 收到pong时回复ping\n this._receivedMessage(WeappBridgeMessage.pong, () =>\n setTimeout(() => this._ws.send(WeappBridgeMessage.ping), 1000),\n );\n };\n\n /**\n * 当收到某消息时\n * @param targetMessage 目标消息\n * @param handler 回调\n * @param once 是否一次性处理\n */\n private _receivedMessage = (\n targetMessage: WeappBridgeMessage,\n handler: () => void,\n once?: boolean,\n ): void => {\n const msgHandler = (evnet: MessageEvent) => {\n if (evnet.data === targetMessage) {\n handler();\n if (once) {\n this._ws.off('message', msgHandler);\n }\n }\n };\n this._ws.on('message', msgHandler);\n };\n\n /**\n * 注册准备就绪的回调\n */\n private _registerReadyHandler = () => {\n // 收到就绪询问时回复已就绪\n this._receivedMessage(WeappBridgeMessage.isReady, () =>\n this._ws.send(WeappBridgeMessage.ready),\n );\n };\n\n /**\n * 发送消息\n */\n send = (data: string | ArrayBufferLike | Blob | ArrayBufferView): void => {\n this._ws.send(data);\n };\n\n /**\n * 等待响应\n * @param timeout 超时计时\n * @returns\n */\n waitReady = (timeout = 6000): Promise<boolean> => {\n return new Promise((resolve, reject) => {\n this._receivedMessage(WeappBridgeMessage.ready, () => resolve(true));\n this.send(WeappBridgeMessage.isReady);\n setTimeout(() => reject('HybridBridge 初始化超时~'), timeout);\n });\n };\n\n private _parseMessage = <R = any>(event: MessageEvent) => {\n try {\n return JSON.parse(event.data) as R;\n } catch (e) {\n return event.data as R;\n }\n };\n\n /**\n * 注册消息投递回调\n * @deprecated 兼容老方法\n */\n private _registerMessageHandler = () => {\n this._ws.on('message', (event: MessageEvent) => {\n const message = this._parseMessage(event);\n if (typeof message === 'object') {\n const { id, command, data } = message;\n if (\n command === 'message' &&\n typeof this._rsWeappBridgeMethodAdapter.bindMessage === 'function'\n ) {\n this._rsWeappBridgeMethodAdapter.bindMessage({ id, data });\n }\n }\n });\n };\n\n /**\n * 注册bridge方法回调\n * @deprecated 兼容老方法\n */\n private _registerBridgeRequestHandler() {\n this._ws.on('message', async (event: MessageEvent) => {\n const request = this._parseMessage<WeappBridgeRequest>(event);\n if (typeof request === 'object') {\n const { id, method, args, command } = request;\n if (command === 'request') {\n if (method) {\n let result: any = null;\n let error: any = null;\n let _method: Function | null = null;\n if (\n typeof this._rsWeappBridgeMethodAdapter[method] === 'function'\n ) {\n // 优先读 _rsWeappBridgeMethodAdapter 上注册的方法\n _method = this._rsWeappBridgeMethodAdapter[method];\n } else if (globalThis && isValidKey(method, globalThis)) {\n // 再读 globalThis 下的方法\n _method = globalThis[method];\n }\n if (typeof _method === 'function') {\n try {\n result = await _method(args);\n } catch (e) {\n error = (e as Error).message || e;\n }\n } else {\n error = 'Method not implemented.';\n }\n this.send(\n JSON.stringify({\n id,\n method,\n result,\n error,\n command: 'response',\n } as WeappBridgeResponse),\n );\n }\n }\n }\n });\n }\n\n getStaticData = (callbackFunctionName: string): void => {\n this.callAndBackfeed(\n JSON.stringify({\n actionUrl: 'common/staticData',\n functionName: callbackFunctionName,\n }),\n );\n };\n\n /**\n * 处理 callAndBackfeed\n * @param actionUrl\n * @param backfeed\n */\n private _callAndBackfeed(actionUrl: string, backfeed: Function) {\n const reqId = uuid();\n const data = JSON.stringify({\n id: reqId,\n actionUrl,\n command: 'rsSchemeRequest',\n type: 'callAndBackfeed',\n } as RsSchemeRequest);\n let timer: number | null = null;\n const callback = (event: MessageEvent) => {\n const message = this._parseMessage<RsSchemeResponse>(event);\n if (typeof message === 'object') {\n const { id, result, errmsg, command } = message;\n if (command === 'rsSchemeResponse' && id === reqId) {\n this._ws.off('message', callback);\n if (timer) clearTimeout(timer);\n if (errmsg) {\n console.warn(errmsg);\n backfeed(0);\n } else {\n backfeed(result);\n }\n }\n }\n };\n this._ws.on('message', callback);\n this.send(data);\n // 30s超时处理\n timer = globalThis.setTimeout(() => {\n console.warn('callAndBackfeed timeout');\n backfeed(0);\n }, 30000);\n }\n\n /**\n * 处理一次性执行的方法\n * @param msg JSON.stringify({ actionUrl: string, functionName: string })\n */\n callAndBackfeed = (msg: string) => {\n const { actionUrl = '', functionName = '' } = JSON.parse(msg);\n if (!actionUrl) throw new Error('callAndBackfeed actionUrl is empty!');\n if (!functionName)\n throw new Error('callAndBackfeed functionName is empty!');\n const callback = (result: any) => {\n if (typeof (globalThis as any)[functionName] === 'function') {\n (globalThis as any)[functionName](result);\n }\n };\n this._callAndBackfeed(actionUrl, callback);\n };\n\n /**\n * 处理 _callAndListen\n * @param actionUrl\n * @param fn\n */\n private _callAndListen(actionUrl: string, fn: Function) {\n const reqId = uuid();\n const data = JSON.stringify({\n id: reqId,\n actionUrl,\n command: 'rsSchemeRequest',\n type: 'callAndListen',\n } as RsSchemeRequest);\n const callback = (event: MessageEvent) => {\n const message = this._parseMessage<RsSchemeResponse>(event);\n if (typeof message === 'object') {\n const { id, result, errmsg, command } = message;\n if (command === 'rsSchemeResponse' && id === reqId) {\n if (errmsg) {\n console.warn(errmsg);\n fn(false);\n } else {\n fn(result);\n }\n }\n }\n };\n this._ws.on('message', callback);\n this.send(data);\n }\n\n /**\n * 处理监听\n * @param msg JSON.stringify({ actionUrl: string, functionName: string })\n */\n callAndListen = (msg: string) => {\n const { actionUrl, functionName } = JSON.parse(msg);\n\n if (!actionUrl) throw new Error('callAndListen actionUrl is empty!');\n if (!functionName) throw new Error('callAndListen functionName is empty!');\n\n const callback = (result: any) => {\n if (typeof (globalThis as any)[functionName] === 'function') {\n (globalThis as any)[functionName](result);\n }\n };\n try {\n this._callAndListen(actionUrl, callback);\n } catch (e) {\n console.warn(e);\n callback(false);\n }\n };\n\n /**\n * 执行bridge上的方法\n * @param method 方法名\n * @param args 传递的参数\n * @returns\n */\n async invoke<P, R>(method: string, args: P): Promise<R> {\n return new Promise((success, fail) => {\n const reqId = uuid();\n const data = JSON.stringify({\n id: reqId,\n method,\n args,\n command: 'request',\n });\n let timer: number | null = null;\n const callback = (event: MessageEvent) => {\n const message = this._parseMessage<WeappBridgeResponse>(event);\n if (typeof message === 'object') {\n const { id, result, error, command } = message;\n if (\n command === 'response' &&\n id === reqId &&\n message.method === method\n ) {\n this._ws.off('message', callback);\n if (timer) clearTimeout(timer);\n if (error) {\n fail(error);\n } else {\n success(result as R);\n }\n }\n }\n };\n this._ws.on('message', callback);\n this.send(data);\n // 30s超时处理\n timer = setTimeout(() => fail('method invoke timeout'), 30000);\n });\n }\n\n /**\n * 执行\n * @param method\n * @param args\n * @returns\n */\n public execute = async <P = any, R = any>(\n method: string,\n args?: P,\n ): Promise<R> => await this._invokeBridgeMethod<R>(method, args);\n /**\n *\n * @param method\n * @param args\n * @returns\n * @deprecated 兼容老方法\n */\n private _invokeBridgeMethod = <R = any>(\n method: string,\n args?: any,\n ): Promise<R> =>\n new Promise<R>((success, fail) => {\n const id = uuid();\n const wsBridgeResponsehandler = (event: MessageEvent) => {\n const result = this._parseMessage<WeappBridgeResponse>(event);\n if (typeof result === 'object') {\n if (result.method === method && result.id === id) {\n this._ws.off('message', wsBridgeResponsehandler);\n result.error ? fail(result.error) : success(result.data);\n }\n }\n };\n this._ws.on('message', wsBridgeResponsehandler);\n this.send(JSON.stringify({ method, args, id }));\n });\n}\n","import HybridBridge, { HybridBridgeLJ } from '../miniprogram/hybridBridge';\nimport { registerGlobalValue, cache } from '../utils/registerGlobalValue';\nimport { DeviceInfo } from '../typings/DeviceInfo';\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol';\nimport { BaseController } from './BaseController';\n\n/**\n * Android WebView 控件。\n */\nexport class WxMiniprogramController extends BaseController {\n private _hybridBridge: HybridBridge = new HybridBridge();\n deviceInfo?: DeviceInfo;\n initializing = false;\n\n get hybridBridge() {\n return this._hybridBridge\n }\n \n private checkBridgeReady(timeout = 60000) {\n if (this.ready) return true;\n\n return new Promise<boolean>(async (resolve, reject) => {\n if (this.ready) return resolve(true);\n\n if (this.initializing) {\n // 正在初始化中的时候\n const check = () => {\n if (this.ready) return resolve(true);\n requestAnimationFrame(check);\n };\n check();\n } else {\n this.initializing = true;\n const [res, error] = await this._hybridBridge.initialize(timeout);\n\n if (!res || error) {\n throw error || new Error('HybridBridge 初始化失败~');\n }\n this._hybridBridge.getStaticData(\n registerGlobalValue(\n 'HYBRID_BRIDGE_NAME',\n (data: DeviceInfo | string) => {\n this.deviceInfo = (() => {\n try {\n return JSON.parse(data as string) as DeviceInfo;\n } catch (e) {\n return data as DeviceInfo;\n }\n })();\n },\n ),\n );\n this.initializing = false;\n return resolve(true);\n }\n });\n }\n\n async checkReady(timeout = 60000) {\n const res: JSBridgeReturnType<boolean> = [null, null];\n\n if (this.ready) {\n res[0] = true;\n return res;\n }\n\n try {\n res[0] = await this.checkBridgeReady(timeout);\n } catch (error) {\n res[0] = false;\n res[1] = error as Error;\n }\n\n return res;\n }\n\n get ready() {\n return !!this._hybridBridge.isReady;\n }\n\n get scheme() {\n return this.deviceInfo?.scheme || '';\n }\n\n createSchemeLink(schemeUrl: string) {\n if (schemeUrl.startsWith(this.scheme)) {\n return schemeUrl;\n }\n return this.scheme + '://' + schemeUrl;\n }\n\n async callAndBackfeed<T>(scheme: string) {\n const res = [false, null] as JSBridgeReturnType<T | false>;\n const [ready, readyError] = await this.checkReady();\n\n if (!ready) {\n res[0] = false;\n res[1] = readyError;\n\n return res;\n }\n\n return await new Promise<JSBridgeReturnType<T | false>>(async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme);\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(\n this.createSchemeLink(scheme),\n (data: string) => {\n let d: any = data;\n try {\n d = JSON.parse(data);\n } catch (e) {\n /** no-care */\n }\n res[0] = (() => {\n if (d === 1) return true;\n if (d === 0) return false;\n return d;\n })() as T;\n\n resolve(res);\n },\n ),\n });\n\n this._hybridBridge.callAndBackfeed(msg);\n });\n }\n\n async callAndListen<T>(scheme: string, callback: (data: T) => void) {\n const res = [false, null] as JSBridgeReturnType<false | (() => void)>;\n const [ready, readyError] = await this.checkReady();\n\n if (!ready) {\n res[0] = false;\n res[1] = readyError;\n\n return res;\n }\n\n return await new Promise<JSBridgeReturnType<false | (() => void)>>(\n async (resolve) => {\n const actionUrl = this.createSchemeLink(scheme);\n const _callback = (data: string) => {\n let d: any = data;\n try {\n d = JSON.parse(data);\n } catch (e) {\n /** no-care */\n }\n\n const callbackParam = (() => {\n if (d === 1) return true;\n if (d === 0) return false;\n return d;\n })() as T;\n\n callback(callbackParam);\n res[0] = () => {\n // 清理掉当前的回调引用\n const callbacks = cache[actionUrl];\n if (!callbacks) return;\n\n const idx = callbacks.queue.findIndex(\n (func) => func.callback === _callback,\n );\n if (idx !== -1) {\n callbacks.queue.splice(idx, 1);\n }\n };\n resolve(res);\n };\n\n const msg = JSON.stringify({\n actionUrl,\n functionName: registerGlobalValue(actionUrl, _callback, false),\n });\n\n this._hybridBridge.callAndListen(msg);\n },\n );\n }\n\n async invoke<P, R>(method: string, data?: P) {\n const res = [false, null] as JSBridgeReturnType<false | (() => void)>;\n const [ready, readyError] = await this.checkReady();\n\n if (!ready) {\n res[0] = false;\n res[1] = readyError;\n\n throw readyError;\n } else {\n return (await this._hybridBridge.invoke?.(method, data)) as R;\n }\n }\n}\n","/**\n * WebView 类型枚举。\n */\nexport enum WebViewTypeEnum {\n /**\n * WebKit Android\n */\n WebView = 'WebKit',\n /**\n * WKWebview iOS\n */\n WKWebview = 'WKWebview',\n /**\n * UIWebview iOS\n *\n * @deprecated 性能因素被抛弃\n */\n UIWebview = 'UIWebview',\n /**\n * Browser\n *\n * @description 浏览器\n *\n */\n Browser = 'Browser',\n /**\n * WeChatMPWebView\n */\n WeChatMPWebView = 'WxMiniProgramWebView',\n /**\n * Unsupported\n * @description 未支持的容器\n */\n Unsupported = 'Unsupported',\n}\n","import { Subscribe } from '../utils/Subscribe'\nimport { DeviceInfo } from '../typings/DeviceInfo'\nimport { JSBridgeProtocol, JSBridgeReturnType } from '../typings/JSBridgeProtocol'\nimport { OpenWebViewEnum } from '../typings/OpenWebViewEnum'\nimport { ShareConfig } from '../typings/ShareConfig'\nimport { UserInfo } from '../typings/UserInfo'\nimport { WebViewEventMap } from '../typings/WebViewEventMap'\nimport { WebViewState, OrientationEnum } from '../typings/WebViewState'\nimport { WebViewTypeEnum } from '../typings/WebViewTypeEnum'\n\n/**\n * jsBridge 基础类\n */\nexport abstract class JSBridgeCore extends Subscribe<WebViewEventMap> implements JSBridgeProtocol {\n webViewType: WebViewTypeEnum = WebViewTypeEnum.Unsupported\n\n abstract ready(): Promise<JSBridgeReturnType<boolean>>\n abstract callAndBackfeed<T>(schemeUrl: string): Promise<JSBridgeReturnType<false | T>>\n abstract callAndListen<T>(\n schemeUrl: string,\n callback: (data: T) => void,\n ): Promise<JSBridgeReturnType<false | (() => void)>>\n abstract loadProgress(progress: number): Promise<JSBridgeReturnType<boolean>>\n abstract closeLoading(): Promise<JSBridgeReturnType<boolean>>\n abstract getDeviceInfo(): Promise<JSBridgeReturnType<false | DeviceInfo>>\n abstract getWebViewState(): Promise<JSBridgeReturnType<false | WebViewState>>\n abstract setLeftTopBackButton(enable: boolean): Promise<JSBridgeReturnType<boolean>>\n abstract login(): Promise<JSBridgeReturnType<false | UserInfo>>\n abstract logout(): Promise<JSBridgeReturnType<boolean>>\n abstract getUserInfo(): Promise<JSBridgeReturnType<false | UserInfo>>\n abstract openWebView(url: string, way: OpenWebViewEnum): Promise<JSBridgeReturnType<boolean>>\n abstract closeWebView(): Promise<JSBridgeReturnType<boolean>>\n abstract getBangsHeight(): Promise<JSBridgeReturnType<number | false>>\n abstract setOrientation(orientation: OrientationEnum): Promise<JSBridgeReturnType<boolean>>\n abstract keepScreenLight(enable: boolean): Promise<JSBridgeReturnType<boolean>>\n abstract shock(duration?: number): Promise<JSBridgeReturnType<boolean>>\n abstract minimize(): Promise<JSBridgeReturnType<boolean>>\n abstract saveImage2Album(base64: string): Promise<JSBridgeReturnType<boolean>>\n abstract detectMicro(): Promise<JSBridgeReturnType<boolean>>\n abstract actionShare(shareConfig: Partial<ShareConfig>): Promise<JSBridgeReturnType<boolean>>\n abstract preload(urls: string[]): Promise<JSBridgeReturnType<boolean>>\n abstract createCacheProxyUrl(urls: string | string[]): string[]\n}\n","const userAgent = globalThis.navigator.userAgent\n\nexport const isAndroid = /android/gi.test(userAgent)\n\nexport const isIOS = /iPhone|iPad\\s+OS/gi.test(userAgent)\n\nexport const isWxMiniProgram = /MicroMessenger/gi.test(userAgent) && /miniProgram/gi.test(userAgent)\n\nexport const isRealseeVRWebview = /realsee/gi.test(userAgent)\n","import { WebViewController, WKWebViewController, BaseController } from '../controllers'\nimport { JSBridgeCore } from '../core/JSBridgeCore'\nimport { isRealseeVRWebview, isAndroid, isIOS } from '../utils/clientDetector'\nimport { DeviceInfo } from '../typings/DeviceInfo'\nimport { JSBridgeOptions } from '../typings/JSBridgeOptions'\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol'\nimport { OpenWebViewEnum } from '../typings/OpenWebViewEnum'\nimport { ShareConfig } from '../typings/ShareConfig'\nimport { UserInfo } from '../typings/UserInfo'\nimport { WebViewState, WebViewErrorInfo, OrientationEnum } from '../typings/WebViewState'\nimport { WebViewTypeEnum } from '../typings/WebViewTypeEnum'\n\nconst defaultOptions: Partial<JSBridgeOptions> = {\n timeout: 6000,\n}\n\n/**\n * App 客户端(iOS [WKWebView](https://developer.apple.com/documentation/webkit/wkwebview) 或 Android [WebView](https://developer.android.google.cn/guide/webapps/webview))JSBridge。\n */\nexport class JSBridgeApp extends JSBridgeCore {\n options: JSBridgeOptions\n\n webViewType: WebViewTypeEnum\n\n private _controller: BaseController\n\n constructor(options: Partial<JSBridgeOptions> = {}) {\n super()\n\n this.options = Object.assign(defaultOptions, options)\n\n if (!isRealseeVRWebview) {\n console.warn('未知容器:此版本 `jsBridge` 不支持当前 WebView 容器 ... ')\n }\n\n this.webViewType = (() => {\n if (isAndroid) return WebViewTypeEnum.WebView\n if (isIOS) return WebViewTypeEnum.WKWebview\n return WebViewTypeEnum.Browser\n })()\n\n this._controller = (() => {\n if (isAndroid) return new WebViewController()\n if (isIOS) return new WKWebViewController()\n return new BaseController()\n })()\n\n this.callAndListen<WebViewState>('common/webViewState', (webviewState: WebViewState) => {\n this.emit('webViewStateChange', webviewState)\n })\n this.callAndListen<WebViewErrorInfo>('common/webViewError', (errorInfo: WebViewErrorInfo) => {\n this.emit('error', errorInfo)\n })\n }\n\n async ready() {\n return await this._controller.checkReady(this.options.timeout)\n }\n\n async callAndBackfeed<T>(schemeUrl: string) {\n return await this._controller.callAndBackfeed<T>(schemeUrl)\n }\n\n async callAndListen<T>(schemeUrl: string, callback: (data: T) => void) {\n return await this._controller?.callAndListen<T>(schemeUrl, callback)\n }\n\n async setLeftTopBackButton(enable?: boolean) {\n if (this.webViewType === WebViewTypeEnum.WebView) {\n return [true, null] as JSBridgeReturnType<boolean>\n }\n\n return await this.callAndBackfeed<boolean>(`common/setLeftTopBackButton?enable=${enable ? 1 : 0}`)\n }\n\n async getBangsHeight() {\n return await this.callAndBackfeed<number>('common/getBangsHeight')\n }\n\n async shock(duration = 4) {\n return await this.callAndBackfeed<boolean>(`common/shock?duration=${duration}`)\n }\n\n async minimize() {\n return await this.callAndBackfeed<boolean>(`common/minimize`)\n }\n\n async loadProgress(progress: number) {\n progress = progress < 0 ? 0 : progress > 100 ? 100 : progress\n return await this.callAndBackfeed<boolean>(`common/loadProgress?progress=${progress}`)\n }\n\n async closeLoading() {\n return await this.callAndBackfeed<boolean>(`common/closeLoading`)\n }\n\n async setOrientation(orientation: OrientationEnum) {\n return await this.callAndBackfeed<boolean>(`common/setOrientation?orientation=${orientation}`)\n }\n\n async keepScreenLight(enable: boolean) {\n return await this.callAndBackfeed<boolean>(`common/keepScreenLight?enable=${enable ? 1 : 0}`)\n }\n\n async closeWebView() {\n return await this.callAndBackfeed<boolean>(`common/closeWebView`)\n }\n\n async openWebView(url: string, way: OpenWebViewEnum) {\n return await this.callAndBackfeed<boolean>(`common/openWebView?way=${way}&url=${encodeURIComponent(url)}`)\n }\n\n async saveImage2Album(base64: string) {\n return await this.callAndBackfeed<boolean>(`common/saveImage2Album?base64=${base64}`)\n }\n\n async actionShare(shareConfig: Partial<ShareConfig>) {\n return await this.callAndBackfeed<boolean>(`common/actionShare?json=${JSON.stringify(shareConfig)}`)\n }\n\n async getDeviceInfo() {\n return await this.callAndBackfeed<DeviceInfo>(`common/getDeviceInfo`)\n }\n\n async getUserInfo() {\n return await this.callAndBackfeed<UserInfo>(`common/getUserInfo`)\n }\n\n async getWebViewState() {\n return await this.callAndBackfeed<WebViewState>(`common/getWebViewState`)\n }\n async login() {\n const res = await this.callAndBackfeed<UserInfo>(`common/login`)\n\n if (res[0]) {\n return await this.getUserInfo()\n }\n\n return res\n }\n\n async logout() {\n return await this.callAndBackfeed<boolean>(`common/logout`)\n }\n\n async detectMicro() {\n return await this.callAndBackfeed<boolean>(`common/detectMicro`)\n }\n\n async preload(urls: string[]) {\n urls = urls.map((url) => {\n if (url.startsWith('//')) {\n return 'https:' + url\n }\n\n return url\n })\n return await this.callAndBackfeed<boolean>(`common/preload?urls=${JSON.stringify(urls)}`)\n }\n\n createCacheProxyUrl(urls: string | string[]) {\n urls = Array.isArray(urls) ? urls : [urls]\n const userAgent = window.navigator.userAgent\n\n // 不支持缓存代理\n if (!/supportCache/i.test(userAgent)) {\n return urls\n }\n\n const proxyCache = (url: string) => {\n if (this.webViewType === WebViewTypeEnum.WKWebview) {\n return url.replace(/https*:/, '').replace(/\\/\\//, 'realseeproxycache://')\n } else if (this.webViewType === WebViewTypeEnum.WebView) {\n return url + (url.indexOf('?') !== -1 ? '&' : '?') + 'realseeproxycache=1'\n }\n return url\n }\n\n return urls.map(proxyCache)\n }\n}\n","export enum OpenWebViewEnum {\n /**\n * 在开启的 `VRWebView` 栈中追加一个 `WebView`。\n */\n Append = 'Append',\n /**\n * 强制 先关闭当前的 `VRWebiView` 然后开启新的 `VRWebView`。\n */\n Replace = 'Replace',\n /**\n * 删除所有的 `VRWebView`,仅保留本次新开启的 `VRWebView`。\n */\n Single = 'Single'\n}","import { JSBridgeCore } from '../core/JSBridgeCore'\nimport { DeviceInfo } from '../typings/DeviceInfo'\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol'\nimport { OpenWebViewEnum } from '../typings/OpenWebViewEnum'\nimport { ShareConfig } from '../typings/ShareConfig'\nimport { UserInfo } from '../typings/UserInfo'\nimport { WebViewState, OrientationEnum } from '../typings/WebViewState'\nimport { WebViewTypeEnum } from '../typings/WebViewTypeEnum'\n\n/**\n * 浏览器端的jsbridge\n */\nexport class JSBridgeBrowser extends JSBridgeCore {\n webViewType: WebViewTypeEnum = WebViewTypeEnum.Browser\n\n ready(): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([true, null])\n }\n callAndBackfeed<T>(schemeUrl: string): Promise<JSBridgeReturnType<false | T>> {\n return Promise.resolve([false, null])\n }\n callAndListen<T>(schemeUrl: string, callback: (data: T) => void): Promise<JSBridgeReturnType<false | (() => void)>> {\n return Promise.resolve([() => void 0, null])\n }\n loadProgress(progress: number): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([true, null])\n }\n closeLoading(): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([true, null])\n }\n getDeviceInfo(): Promise<JSBridgeReturnType<false | DeviceInfo>> {\n return Promise.resolve([false, null])\n }\n getWebViewState(): Promise<JSBridgeReturnType<false | WebViewState>> {\n return Promise.resolve([false, null])\n }\n setLeftTopBackButton(enable: boolean): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n login(): Promise<JSBridgeReturnType<false | UserInfo>> {\n return Promise.resolve([false, null])\n }\n logout(): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n getUserInfo(): Promise<JSBridgeReturnType<false | UserInfo>> {\n return Promise.resolve([false, null])\n }\n openWebView(url: string, way: OpenWebViewEnum): Promise<JSBridgeReturnType<boolean>> {\n switch (way) {\n case OpenWebViewEnum.Replace:\n case OpenWebViewEnum.Single: {\n setTimeout(() => globalThis.location.replace(url), 200)\n break\n }\n case OpenWebViewEnum.Append:\n default: {\n setTimeout(() => (globalThis.location.href = url), 200)\n break\n }\n }\n return Promise.resolve([true, null])\n }\n closeWebView(): Promise<JSBridgeReturnType<boolean>> {\n globalThis.close()\n return Promise.resolve([true, null])\n }\n getBangsHeight(): Promise<JSBridgeReturnType<number | false>> {\n return Promise.resolve([0, null])\n }\n setOrientation(orientation: OrientationEnum): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n keepScreenLight(enable: boolean): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n shock(duration?: number): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n minimize(): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n saveImage2Album(base64: string): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n detectMicro(): Promise<JSBridgeReturnType<boolean>> {\n return new Promise<JSBridgeReturnType<boolean>>((resolve) => {\n const rule = { audio: true, video: false }\n try {\n globalThis.navigator.mediaDevices\n .getUserMedia(rule)\n .then(() => resolve([true, null]))\n .catch((e) => resolve([false, e]))\n } catch (e) {\n console.error(e)\n resolve([false, e as Error])\n }\n })\n }\n actionShare(shareConfig: Partial<ShareConfig>): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n preload(urls: string[]): Promise<JSBridgeReturnType<boolean>> {\n return Promise.resolve([false, null])\n }\n createCacheProxyUrl(urls: string | string[]): string[] {\n return []\n }\n}\n","import { WxMiniprogramController } from '../controllers';\nimport { JSBridgeCore } from '../core/JSBridgeCore';\nimport { isWxMiniProgram } from '../utils/clientDetector';\nimport { DeviceInfo } from '../typings/DeviceInfo';\nimport { JSBridgeOptions } from '../typings/JSBridgeOptions';\nimport { JSBridgeReturnType } from '../typings/JSBridgeProtocol';\nimport { OpenWebViewEnum } from '../typings/OpenWebViewEnum';\nimport { ShareConfig } from '../typings/ShareConfig';\nimport { UserInfo } from '../typings/UserInfo';\nimport {\n WebViewState,\n WebViewErrorInfo,\n OrientationEnum,\n} from '../typings/WebViewState';\nimport { WebViewTypeEnum } from '../typings/WebViewTypeEnum';\n\nconst defaultOptions: Partial<JSBridgeOptions> = {\n timeout: 60000,\n};\n\n/**\n * 小程序 [web-view](https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html) JSBridge。\n */\nexport class JSBridgeMiniprogram extends JSBridgeCore {\n options: JSBridgeOptions & { wsOrigin?: string };\n _controller: WxMiniprogramController = new WxMiniprogramController();\n webViewType: WebViewTypeEnum;\n\n constructor(options: Partial<JSBridgeOptions> = {}) {\n super();\n\n this.options = Object.assign(defaultOptions, options);\n\n if (!isWxMiniProgram) {\n console.warn('未知容器:此版本 `jsBridge` 不支持当前 WebView 容器 ... ');\n }\n\n this.webViewType = WebViewTypeEnum.WeChatMPWebView;\n\n this.callAndListen<WebViewState>(\n 'common/webViewState',\n (webviewState: WebViewState) => {\n this.emit('webViewStateChange', webviewState);\n },\n );\n this.callAndListen<WebViewErrorInfo>(\n 'common/webViewError',\n (errorInfo: WebViewErrorInfo) => {\n this.emit('error', errorInfo);\n },\n );\n }\n\n async ready() {\n return await this._controller.checkReady(this.options.timeout);\n }\n\n async callAndBackfeed<T>(schemeUrl: string) {\n return await this._controller.callAndBackfeed<T>(schemeUrl);\n }\n\n async callAndListen<T>(schemeUrl: string, callback: (data: T) => void) {\n return await this._controller.callAndListen(schemeUrl, callback);\n }\n\n async setLeftTopBackButton(enable?: boolean) {\n if (this.webViewType === WebViewTypeEnum.WebView) {\n return [true, null] as JSBridgeReturnType<boolean>;\n }\n\n return await this.callAndBackfeed<boolean>(\n `common/setLeftTopBackButton?enable=${enable ? 1 : 0}`,\n );\n }\n\n async getBangsHeight() {\n return await this.callAndBackfeed<number>('common/getBangsHeight');\n }\n\n async shock(duration = 4) {\n return await this.callAndBackfeed<boolean>(\n `common/shock?duration=${duration}`,\n );\n }\n\n async minimize() {\n return await this.callAndBackfeed<boolean>(`common/minimize`);\n }\n\n async loadProgress(progress: number) {\n progress = progress < 0 ? 0 : progress > 100 ? 100 : progress;\n return await this.callAndBackfeed<boolean>(\n `common/loadProgress?progress=${progress}`,\n );\n }\n\n async closeLoading() {\n return await this.callAndBackfeed<boolean>(`common/closeLoading`);\n }\n\n async setOrientation(orientation: OrientationEnum) {\n return await this.callAndBackfeed<boolean>(\n `common/setOrientation?orientation=${orientation}`,\n );\n }\n\n async keepScreenLight(enable: boolean) {\n return await this.callAndBackfeed<boolean>(\n `common/keepScreenLight?enable=${enable ? 1 : 0}`,\n );\n }\n\n async closeWebView() {\n return await this.callAndBackfeed<boolean>(`common/closeWebView`);\n }\n\n async openWebView(url: string, way: OpenWebViewEnum) {\n return await this.callAndBackfeed<boolean>(\n `common/openWebView?way=${way}&url=${encodeURIComponent(url)}`,\n );\n }\n\n async saveImage2Album(base64: string) {\n return await this.callAndBackfeed<boolean>(\n `common/saveImage2Album?base64=${base64}`,\n );\n }\n\n async actionShare(shareConfig: Partial<ShareConfig>) {\n const config = {\n path: shareConfig.miniprogram?.[0].path,\n title: shareConfig.miniprogram?.[0].title,\n imageUrl: shareConfig.miniprogram?.[0].hdImageData,\n };\n return await this.callAndBackfeed<boolean>(\n `common/actionShare?json=${JSON.stringify(config)}`,\n );\n }\n\n async getDeviceInfo() {\n return await this.callAndBackfeed<DeviceInfo>(`common/getDeviceInfo`);\n }\n\n async getUserInfo() {\n return await this.callAndBackfeed<UserInfo>(`common/getUserInfo`);\n }\n\n async getWebViewState() {\n return await this.callAndBackfeed<WebViewState>(`common/getWebViewState`);\n }\n async login() {\n const res = await this.callAndBackfeed<UserInfo>(`common/login`);\n\n if (res[0]) {\n return await this.getUserInfo();\n }\n\n return res;\n }\n\n async logout() {\n return await this.callAndBackfeed<boolean>(`common/logout`);\n }\n\n async detectMicro() {\n return await this.callAndBackfeed<boolean>(`common/detectMicro`);\n }\n\n async preload(urls: string[]) {\n urls = urls.map((url) => {\n if (url.startsWith('//')) {\n return 'https:' + url;\n }\n\n return url;\n });\n return await this.callAndBackfeed<boolean>(\n `common/preload?urls=${JSON.stringify(urls)}`,\n );\n }\n\n createCacheProxyUrl(urls: string | string[]) {\n urls = Array.isArray(urls) ? urls : [urls];\n const userAgent = window.navigator.userAgent;\n\n // 不支持缓存代理\n if (!/supportCache/i.test(userAgent)) {\n return urls;\n }\n\n const proxyCache = (url: string) => {\n if (this.webViewType === WebViewTypeEnum.WKWebview) {\n return url\n .replace(/https*:/, '')\n .replace(/\\/\\//, 'realseeproxycache://');\n } else if (this.webViewType === WebViewTypeEnum.WebView) {\n return (\n url + (url.indexOf('?') !== -1 ? '&' : '?') + 'realseeproxycache=1'\n );\n }\n return url;\n };\n\n return urls.map(proxyCache);\n }\n\n async invokeNativeApi<P, R>(method: string, data?: P) {\n return await this._controller.invoke<P, R>(method, data);\n }\n\n async execute(method: string, args?: any) {\n return await this._controller?.hybridBridge?.execute?.(method, args);\n }\n}\n","import { JSBridgeApp } from './app'\nimport { JSBridgeBrowser } from './browser'\nimport { JSBridgeCore } from './core/JSBridgeCore'\nimport { JSBridgeMiniprogram } from './miniprogram'\nimport { isAndroid, isIOS, isRealseeVRWebview, isWxMiniProgram } from './utils/clientDetector'\nimport { JSBridgeOptions } from './typings/JSBridgeOptions'\nexport type { JSBridgeProtocol } from './typings/JSBridgeProtocol'\n\n/**\n * 平台相关的jsBridge类,根据平台自动加载不同的jsBridge实例\n */\n// @ts-ignore\nexport default class JSBridge extends JSBridgeCore {\n constructor(options: Partial<JSBridgeOptions> = {}) {\n super()\n if (isRealseeVRWebview && (isAndroid || isIOS)) return new JSBridgeApp(options)\n if (isWxMiniProgram) return new JSBridgeMiniprogram(options)\n return new JSBridgeBrowser()\n }\n}\n\nexport { JSBridgeApp, JSBridgeBrowser, JSBridgeMiniprogram, JSBridgeCore }\n",null,"export function appendUri(uri: string, query: Record<string, string | number> = {}) {\n const hasQuery = uri.indexOf('?') !== -1\n const newQuery = Object.keys(query).reduce(\n (accu, curr, idx) =>\n `${accu}${(idx === 0 && !hasQuery) ? '?' : '&'}${curr}=${query[curr]}`,\n '')\n\n return uri + newQuery\n}\n","const userAgent = globalThis.navigator.userAgent\n\nexport const isAndroid = /android/gi.test(userAgent)\n\nexport const isIOS = /iPhone|iPad\\s+OS/gi.test(userAgent)\n\nexport const isWxMiniProgram = /MicroMessenger/gi.test(userAgent) && /miniProgram/gi.test(userAgent)\n\nexport const isRealseeVRWebview = /realsee/gi.test(userAgent)\n","/**\n * 判断是否是真实的对象类型\n * @param value\n * @returns\n */\nfunction isTrulyObject(value: any): boolean {\n return Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * 判断基础类型是否相等\n * @param value\n * @param other\n * @returns\n */\nfunction baseIsEqual(value: any, other: any): boolean {\n if (value === other) return true;\n if (typeof value !== typeof other) return false;\n if (Number.isNaN(value) && Number.isNaN(other)) return true;\n return false;\n}\n\n/**\n * 对象浅比较\n * @param value\n * @param other\n * @returns\n */\nfunction objEqualShallow(value: any, other: any): boolean {\n const valueProps = Object.getOwnPropertyNames(value);\n const otherProps = Object.getOwnPropertyNames(other);\n if (valueProps.length !== otherProps.length) return false;\n\n for (let i = 0, len = valueProps.length; i < len; i++) {\n const propName = valueProps[i];\n if (!baseIsEqual(value[propName], other[propName])) return false;\n }\n\n return true;\n}\n\n/**\n * 数组浅比较\n * @param value\n * @param other\n * @returns\n */\nfunction arrayEqualShallow(value: any, other: any): boolean {\n if (value.length !== other.length) return false;\n for (let i = 0, len = value.length; i < len; i++) {\n if (!baseIsEqual(value[i], other[i])) return false;\n }\n return true;\n}\n\n/**\n * 变量浅比较\n * @param value\n * @param other\n * @returns\n */\nfunction isShallowEqual(value: any, other: any): boolean {\n if (baseIsEqual(value, other)) return true;\n if (isTrulyObject(value) && isTrulyObject(other))\n return objEqualShallow(value, other);\n if (Array.isArray(value) && Array.isArray(other))\n return arrayEqualShallow(value, other);\n return false;\n}\n\n/**\n * 对象深比较\n * @param value\n * @param other\n * @returns\n */\nfunction isDeepEqual(value: any, other: any): boolean {\n if (baseIsEqual(value, other)) return true;\n if (isTrulyObject(value) && isTrulyObject(other))\n return objEqualDeep(value, other);\n if (Array.isArray(value) && Array.isArray(other))\n return arrayEqualDeep(value, other);\n return false;\n}\n\n/**\n * 数组深比较\n * @param value\n * @param other\n * @returns\n */\nfunction arrayEqualDeep(value: any, other: any): boolean {\n if (value.length !== other.length) return false;\n for (let i = 0, len = value.length; i < len; i++) {\n if (!isDeepEqual(value[i], other[i])) return false;\n }\n return true;\n}\n\n/**\n * 对象深比较\n * @param value\n * @param other\n * @returns\n */\nfunction objEqualDeep(value: any, other: any): boolean {\n const valueProps = Object.getOwnPropertyNames(value);\n const otherProps = Object.getOwnPropertyNames(other);\n if (valueProps.length !== otherProps.length) return false;\n\n for (let i = 0, len = valueProps.length; i < len; i++) {\n const propName = valueProps[i];\n if (!isDeepEqual(value[propName], other[propName])) return false;\n }\n\n return true;\n}\n\n/**\n * 对象比较。\n * @param value 第一个比较的值。\n * @param other 第二个比较的值。\n * @param options 可选参数,可选项:`deep` 是否深比较。\n * @returns {boolean} 是否相等。\n */\nexport function equal(value: any, other: any, opt = { deep: false }): boolean {\n if (!opt.deep) return isShallowEqual(value, other);\n return isDeepEqual(value, other);\n}\n","import { WebSocketState } from '../typings';\nimport { Subscribe } from './subscribe';\n\n/**\n * 鲁棒ws的配置参数\n */\nexport type RobustWebSocketConstructorOptions = {\n url: string | ((ws: RobustWebSocket) => string);\n protocols?: string[];\n robustOptions?: RobustOptions;\n};\n\n/**\n * ws 鲁棒性的配置\n */\nexport type RobustOptions = {\n // 等待超时时间\n timeout?: number;\n // 是否进行重连的判断\n shouldReconnect?: (\n event: CloseEvent,\n ws: RobustWebSocket,\n ) => undefined | number;\n // 是否1000的正常关闭code 也需要重连\n should1000Reconnect?: boolean;\n // 是否监听 navigator 上的online/offline 事件\n ignoreConnectivityEvents?: boolean;\n // 是否自动连接\n automaticOpen?: boolean;\n};\n\nexport type RobustWebSocketEventDetail = {\n reconnects: number;\n attempts: number;\n};\n\nexport type RobustWebSocketEvent<T> = Event & {\n detail: T;\n};\n\n// RobustWebSocket事件映射\nexport type RobustWebSocketEventMap = {\n connecting: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n timeout: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n open: (event: RobustWebSocketEvent<RobustWebSocketEventDetail>) => void;\n closing: () => void;\n close: (event: CloseEvent) => void;\n error: (event: Event) => void;\n message: (\n event: MessageEvent<string | ArrayBuffer | Blob | ArrayBufferView>,\n ) => void;\n};\n\n/**\n * 具有鲁棒性的WebSocket封装\n * 1、自动重连\n * 2、可根据网络情况进行重连\n */\nexport class RobustWebSocket extends Subscribe<RobustWebSocketEventMap> {\n private _realWebSocket: WebSocket | undefined;\n private _url?: string | ((ws: RobustWebSocket) => string);\n private _protocols: string[] | undefined;\n private _readyState: WebSocketState = WebSocketState.NOTINITIALIZED;\n private _options: RobustOptions = {\n timeout: 10000,\n shouldReconnect: (event, ws) => {\n if (event.code === 1008 || event.code === 1011) return;\n return [0, 3000, 10000][ws.attempts];\n },\n should1000Reconnect: false,\n ignoreConnectivityEvents: false,\n automaticOpen: false,\n };\n private _connectTimeout: any | undefined;\n private _attempts = 0;\n private _reconnects = -1;\n private _reconnectWhenOnlineAgain = false;\n private _explicitlyClosed = false;\n private _pendingReconnect: number | undefined;\n private _connectivityEventsAttached = false;\n private _heathCheckTimer: number | undefined;\n\n public get attempts(): number {\n return this._attempts;\n }\n\n constructor(options?: RobustWebSocketConstructorOptions) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n super();\n if (options) {\n this.setOptions(options);\n }\n this._startHealthCheck();\n }\n\n public setOptions(options: RobustWebSocketConstructorOptions): void {\n if (!options) return;\n this._url = options.url;\n this._protocols = options.protocols;\n const opts = Object.assign(this._options, options.robustOptions || {});\n if (typeof opts?.timeout !== 'number') {\n throw new Error(\n 'timeout must be the number of milliseconds to timeout a connection attempt',\n );\n }\n\n if (typeof opts?.shouldReconnect !== 'function') {\n throw new Error(\n 'shouldReconnect must be a function that returns the number of milliseconds to wait for a reconnect attempt, or null or undefined to not reconnect.',\n );\n }\n this._options = opts;\n if (this._options.automaticOpen) {\n this._createWebSocket();\n }\n }\n\n /**\n * 做一个健康检查\n */\n private _healthCheck = async () => {\n if (\n this._realWebSocket &&\n this._realWebSocket.readyState !== this._readyState\n ) {\n this._readyState = this._realWebSocket.readyState as WebSocketState;\n // 太惨了,断网的时候,ws不会直接closed,而是处于closing的状态\n if (this._readyState === WebSocketState.CLOSING) {\n this.emit('closing');\n }\n }\n await new Promise((resolve) => setTimeout(resolve, 2000));\n this._heathCheckTimer = requestAnimationFrame(this._healthCheck);\n };\n\n /**\n * 清理健康检查\n */\n private _clearHeathCheckIfNeed = () => {\n if (this._heathCheckTimer) {\n cancelAnimationFrame(this._heathCheckTimer);\n this._heathCheckTimer = undefined;\n }\n };\n\n /**\n * 开启健康检查\n */\n private _startHealthCheck = () => {\n this._clearHeathCheckIfNeed();\n this._heathCheckTimer = requestAnimationFrame(this._healthCheck);\n };\n\n /**\n * 停止健康检查\n */\n private _stopHealthCheck = () => {\n this._clearHeathCheckIfNeed();\n };\n\n /**\n * 清理连接中的请求\n */\n private _clearPendingReconnectIfNeeded = () => {\n if (this._pendingReconnect) {\n clearTimeout(this._pendingReconnect);\n this._pendingReconnect = undefined;\n }\n };\n\n /**\n * 当网页连接上网络进行重连\n * @param event\n */\n private _online = (event: Event) => {\n if (this._reconnectWhenOnlineAgain) {\n this._clearPendingReconnectIfNeeded();\n this._reconnect(event as CloseEvent);\n }\n };\n\n /**\n * 当网页断开网络进行关闭\n */\n private _offline = () => {\n this._reconnectWhenOnlineAgain = true;\n this._realWebSocket?.close(1000, 'offline');\n };\n\n /**\n * 解除网络监听事件\n */\n private _detachConnectivityEvents = () => {\n if (this._connectivityEventsAttached) {\n globalThis?.removeEventListener('online', this._online);\n globalThis?.removeEventListener('offline', this._offline);\n this._connectivityEventsAttached = false;\n }\n };\n\n /**\n * 注册网络监听事件\n */\n private _attachConnectivityEvents = () => {\n if (!this._connectivityEventsAttached) {\n globalThis?.addEventListener('online', this._online);\n globalThis?.addEventListener('offline', this._offline);\n this._connectivityEventsAttached = true;\n }\n };\n\n /**\n * 发送消息\n * @param data\n * @returns\n */\n send = (\n data: string | ArrayBuffer | Blob | ArrayBufferView,\n ): void | undefined => {\n if (this._realWebSocket?.readyState === this._realWebSocket?.OPEN) {\n this._realWebSocket?.send(data);\n }\n };\n\n /**\n * 关闭连接\n * @param code 代码\n * @param reason 原因\n * @returns\n */\n close = (code?: number | string, reason?: string): void | undefined => {\n if (typeof code !== 'number') {\n reason = code;\n code = 1000;\n }\n this._clearPendingReconnectIfNeeded();\n this._reconnectWhenOnlineAgain = false;\n this._explicitlyClosed = true;\n this._detachConnectivityEvents();\n\n return this._realWebSocket?.close(code, reason);\n };\n\n /**\n * 进行ws连接\n */\n open = (url?: string): void => {\n if (url) {\n this._url = url;\n }\n if (\n this._realWebSocket?.readyState !== WebSocket.OPEN &&\n this._realWebSocket?.readyState !== WebSocket.CONNECTING\n ) {\n this._clearPendingReconnectIfNeeded();\n this._reconnectWhenOnlineAgain = false;\n this._explicitlyClosed = false;\n\n this._createWebSocket();\n }\n };\n\n /**\n * 创建ws连接\n */\n private _createWebSocket = () => {\n const newUrl =\n typeof this._url === 'string' ? this._url : this._url?.(this);\n if (!newUrl) return;\n this._pendingReconnect = undefined;\n this._removeWebSocketEvent();\n this._realWebSocket = new WebSocket(newUrl, this._protocols || undefined);\n\n this._attempts = this._attempts + 1;\n this.emit(\n 'connecting',\n new CustomEvent('connecting', {\n detail: { attempts: this._attempts, reconnects: this._reconnects },\n }),\n );\n\n const timeoutCallback = () => {\n this._connectTimeout = undefined;\n this._detachConnectivityEvents();\n this.emit(\n 'timeout',\n new CustomEvent('connecting', {\n detail: {\n attempts: this._attempts,\n reconnects: this._reconnects,\n },\n }),\n );\n };\n\n this._connectTimeout = setTimeout(timeoutCallback, this._options?.timeout);\n\n this._dispatchWebSocketEvent();\n\n if (!this._options?.ignoreConnectivityEvents) {\n this._attachConnectivityEvents();\n }\n };\n\n /**\n * 断开ws事件\n */\n private _removeWebSocketEvent = () => {\n this._realWebSocket?.removeEventListener(\n 'open',\n this._webSocketOpenHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'close',\n this._webSocketCloseHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'error',\n this._webSocketErrorHandler,\n );\n this._realWebSocket?.removeEventListener(\n 'message',\n this._webSocketMessageHandler,\n );\n };\n\n /**\n * 分发ws事件\n */\n private _dispatchWebSocketEvent = () => {\n this._realWebSocket?.addEventListener('open', this._webSocketOpenHandler);\n this._realWebSocket?.addEventListener('close', this._webSocketCloseHandler);\n this._realWebSocket?.addEventListener('error', this._webSocketErrorHandler);\n this._realWebSocket?.addEventListener(\n 'message',\n this._webSocketMessageHandler,\n );\n };\n\n /**\n * ws连接事件\n * @returns\n */\n private _webSocketOpenHandler = (event: Event) => {\n if (this._connectTimeout) {\n clearTimeout(this._connectTimeout);\n this._connectTimeout = undefined;\n }\n const reconnects = ++this._reconnects;\n const attempts = this._attempts;\n this._attempts = 0;\n this._reconnectWhenOnlineAgain = false;\n this._startHealthCheck();\n return this.emit(\n 'open',\n Object.assign(event, { detail: { reconnects, attempts } }),\n );\n };\n\n /**\n * ws 关闭事件\n * @param event\n * @returns\n */\n private _webSocketCloseHandler = (event: CloseEvent) => {\n this._reconnect(event);\n this._stopHealthCheck();\n return this.emit('close', event);\n };\n\n /**\n * ws 异常\n * @param event\n * @returns\n */\n private _webSocketErrorHandler = (event: Event) => {\n return this.emit(\n 'error',\n new CustomEvent('error', { detail: { error: event } }),\n );\n };\n\n /**\n * ws消息\n * @param event\n * @returns\n */\n private _webSocketMessageHandler = (event: MessageEvent) => {\n return this.emit('message', event);\n };\n\n /**\n * 进行重连\n * @param event\n * @returns\n */\n private _reconnect(event: CloseEvent) {\n if (\n (!this._options?.should1000Reconnect && event.code === 1000) ||\n this._explicitlyClosed\n ) {\n this._attempts = 0;\n return;\n }\n if (globalThis?.navigator?.onLine === false) {\n this._reconnectWhenOnlineAgain = true;\n return;\n }\n\n const delay = this._options?.shouldReconnect?.(event, this);\n if (typeof delay === 'number') {\n this._pendingReconnect = setTimeout(this._createWebSocket, delay);\n }\n }\n}\n","import { LiveMsg, parseWSClsErr } from '../typings';\nimport { LiveState } from '../typings/live/LiveState';\nimport logger from '../utils/logger';\nimport {\n RobustWebSocket,\n RobustWebSocketEventDetail,\n RobustWebSocketEvent,\n} from '../utils/RobustWebSocket';\nimport { Subscribe } from '../utils/subscribe';\n\nexport type LiveControllerEventMap = {\n stateChange: (state: LiveState, prevState: LiveState) => void;\n message: (message: LiveMsg) => void;\n reconnected: (detail: RobustWebSocketEventDetail) => void;\n};\n\nexport class LiveController extends Subscribe<LiveControllerEventMap> {\n /**\n * ws代理器\n */\n private _ws: RobustWebSocket = new RobustWebSocket({\n url: '',\n robustOptions: { timeout: 180000 },\n });\n\n /**\n * 带看连接状态\n */\n private _state = LiveState.NOTINITIALIZED;\n\n set state(state: LiveState) {\n const prevState = JSON.parse(JSON.stringify(this._state));\n this._state = state;\n this.emit('stateChange', this.state, prevState);\n }\n\n get state() {\n return this._state;\n }\n\n constructor() {\n super();\n this._addWebSocketEventListeners();\n }\n\n /**\n * 添加事件监听\n */\n private _addWebSocketEventListeners = () => {\n this._ws.on('close', this._handleCloseEvent);\n this._ws.on('closing', this._handleClosingEvent);\n this._ws.on('connecting', this._handleConnectingEvent);\n this._ws.on('error', this._handleErrorEvent);\n this._ws.on('message', this._handleMessageEvent);\n this._ws.on('open', this._handleOpenEvent);\n this._ws.on('timeout', this._handleTimeoutEvent);\n };\n\n /**\n * 移除事件监听\n */\n private _removeWebSocketEventListeners = () => {\n this._ws.off('close', this._handleCloseEvent);\n this._ws.off('closing', this._handleClosingEvent);\n this._ws.off('connecting', this._handleConnectingEvent);\n this._ws.off('error', this._handleErrorEvent);\n this._ws.off('message', this._handleMessageEvent);\n this._ws.off('open', this._handleOpenEvent);\n this._ws.off('timeout', this._handleTimeoutEvent);\n };\n\n /**\n * 处理房间关闭事件\n * @param event\n */\n private _handleCloseEvent = (event: CloseEvent) => {\n logger.info(\n `live room closed bacause of ${event.code}-${\n event.reason || parseWSClsErr(event.code)\n }`,\n );\n this.state = LiveState.CLOSED;\n };\n\n /**\n * 处理房间正在关闭事件(这个时候可能是断网了)\n */\n private _handleClosingEvent = () => {\n logger.info(`live room is closing, onLine:`, globalThis?.navigator?.onLine);\n this.state = LiveState.CLOSED;\n };\n\n /**\n * 连接中\n * @param event\n */\n private _handleConnectingEvent = () => {\n logger.info(`live room is connecting`);\n this.state = LiveState.CONNECTING;\n };\n\n /**\n * 连接发送异常\n * @param event\n */\n private _handleErrorEvent = (event: Event) => {\n logger.error(`live room error`, event);\n this.state = LiveState.CLOSED;\n };\n\n /**\n * 接收到消息\n * @param event\n */\n private _handleMessageEvent = (event: MessageEvent) => {\n // logger.info('live room received message ', event.data);\n let message = (() => {\n try {\n return JSON.parse(event.data);\n } catch (e) {\n return event.data;\n }\n })() as LiveMsg;\n this.emit('message', message);\n };\n\n /**\n * 连接建立成功\n * @param event\n */\n private _handleOpenEvent = (\n event: RobustWebSocketEvent<RobustWebSocketEventDetail>,\n ) => {\n logger.info('live room open', event.detail);\n this.state = LiveState.OPEN;\n if (event.detail.reconnects > 0) {\n this.emit('reconnected', event.detail);\n }\n };\n\n /**\n * 处理超时\n * @param event\n */\n private _handleTimeoutEvent = (\n event: RobustWebSocketEvent<RobustWebSocketEventDetail>,\n ) => {\n logger.error('live room connect timeout!', event.detail);\n this.state = LiveState.CLOSED;\n };\n\n /**\n * 释放资源,释放之后需要重新实例化\n * @returns\n */\n dispose = async () => {\n this._removeWebSocketEventListeners();\n return await this.close('live room close by controller disposed!');\n };\n\n /**\n * 开启房间链接\n * @param url 房间链接\n * @returns\n */\n open = (url: string) => this._ws.open(url);\n\n /**\n * 关闭房间\n * @param code\n * @param reason\n */\n close = (code?: string | number | undefined, reason?: string | undefined) =>\n new Promise<boolean>((resolve) => {\n this._ws.once('close', () => resolve(true));\n this._ws.close(code, reason);\n });\n\n /**\n * 发送数据\n * @param data\n */\n sendMessage(data: any = '') {\n if (data === undefined || data === null || data === '') {\n throw new Error('live message is empty!');\n }\n if (this.state === LiveState.OPEN) {\n return this._ws.send(JSON.stringify(data));\n } else {\n throw new Error('live has not yet been initialized!');\n }\n }\n}\n","import JSBridge, { JSBridgeProtocol } from '@realsee/jsbridge-x';\nimport LogLevel from 'amazon-chime-sdk-js/build/logger/LogLevel';\nimport {\n BrowserRTC,\n BrowserRTC4Chime,\n RTCProtocol,\n VRWebViewRTC,\n} from '../rtc';\nimport {\n BuiltInRTCType,\n Command,\n EventType,\n GetVoiceSign,\n KeyframeTypes,\n LiveOptions,\n RoomInfo,\n RTCType,\n UserInfo,\n ReqLiveMsg,\n BuiltinEventType,\n BuiltinActionType,\n MicroStatus,\n LiveMsg,\n BuiltinMsg,\n LiveConnectOptions,\n} from '../typings';\nimport { LiveState } from '../typings/live/LiveState';\nimport { appendUri } from '../utils/appendUri';\nimport {\n isRealseeVRWebview,\n isAndroid,\n isIOS,\n isWxMiniProgram,\n} from '../utils/clientDetector';\nimport { equal } from '../utils/equal';\nimport logger from '../utils/logger';\nimport { Subscribe } from '../utils/subscribe';\nimport { uuid } from '../utils/uuid';\nimport { LiveController } from './controller';\n\nconst unimplementedGetVoiceSign: GetVoiceSign = (params) =>\n Promise.reject('unimplemented method GetVoiceSign');\n\nexport type LiveBuiltInData<KeyframesSnapshot> = {\n selfInfo?: UserInfo;\n userList?: UserInfo[];\n roomInfo?: RoomInfo;\n rtcInfo?: { voiceId: string; type: RTCType };\n keyframes: Partial<KeyframesSnapshot>;\n};\n\nconst createLiveMsg = (\n command: Command,\n data: Record<string, any> = {},\n toUserIds: string | string[] = [],\n): ReqLiveMsg => ({\n command,\n front_request_id: uuid(),\n data: {\n ...data,\n to_user_ids: Array.isArray(toUserIds) ? toUserIds : [toUserIds],\n },\n});\n\nexport const _clearLiveInstanceIfNeed = () => {\n if ((window as any)?.__Realsee_Live__) {\n (window as any)?.__Realsee_Live__?.dispose?.();\n (window as any).__Realsee_Live__ = null;\n }\n};\n\nexport class Live<\n KeyframesSnapshot extends Record<string, any>,\n> extends Subscribe<EventType<KeyframesSnapshot>> {\n /**\n * 带看的配置\n */\n private _options: LiveOptions = {};\n\n get options(): LiveOptions {\n return Object.freeze(this._options || {});\n }\n\n /**\n * 带看状态\n */\n get state() {\n return this._controller.state;\n }\n\n /**\n * 兼容老逻辑\n * @deprecated 请直接读取 state 属性字段,未来将移除该属性\n */\n get readyState() {\n return this._controller.state;\n }\n\n /**\n * 获取当前WebSocket连接的URL。(注意:这个是WebSocket连接的完整连接,附带一些query参数)。\n * @deprecated 带看不需要关注底层ws的相关信息,未来将移除\n */\n get url(): string | undefined {\n return this.options.url;\n }\n\n /**\n * 获取当前live使用的RTC实例\n */\n get $RTC(): RTCProtocol {\n return this._options.rtc!;\n }\n\n /**\n * 获取当前live使用的jsBridge实例\n */\n get jsBridge(): JSBridgeProtocol {\n return this._options.jsBridge!;\n }\n\n /**\n * 帧数据监听\n */\n keyframes: Subscribe<KeyframeTypes<KeyframesSnapshot>> = new Subscribe();\n\n /**\n * 内置的一些数据\n */\n private _buildInData: LiveBuiltInData<KeyframesSnapshot> = {\n keyframes: {},\n };\n\n /**\n * 当前帧数据快照\n */\n get snapshot(): Partial<KeyframesSnapshot> {\n return this._buildInData.keyframes;\n }\n\n /**\n * 根据键值取帧数据\n * @param key 帧数据的键值\n * @returns\n */\n getFramesByKey = <Key extends keyof KeyframesSnapshot>(\n key: Key,\n ): Partial<KeyframesSnapshot>[Key] | undefined => this.snapshot[key];\n\n /**\n * 发送帧数据(需要能够被序列化)\n * @param key 帧数据键值\n * @param frame 帧数据本体\n * @returns\n */\n sendKeyframe = <Key extends keyof KeyframesSnapshot>(\n key: Key,\n frame: KeyframesSnapshot[Key],\n ): boolean | Error => {\n if (this.state !== LiveState.OPEN) return false;\n this._buildInData.keyframes = {\n ...this._buildInData.keyframes,\n [key]: frame,\n };\n const liveMsg = createLiveMsg(Command.KeyframeSync, this.snapshot);\n try {\n this._controller.sendMessage(liveMsg);\n return true;\n } catch (e) {\n logger.error(e);\n return false;\n }\n };\n\n /**\n * 当前用户信息\n */\n get selfInfo() {\n return this._buildInData.selfInfo;\n }\n\n /**\n * 当前用户列表\n */\n get userList() {\n return this._buildInData.userList || [];\n }\n\n /**\n * 当前带看房间信息\n */\n get roomInfo() {\n return this._buildInData.roomInfo;\n }\n\n /**\n * 带看控制器\n */\n private _controller: LiveController = new LiveController();\n\n constructor(opts: LiveOptions) {\n super();\n this._addLiveControllerEventListeners();\n this._options = Object.assign(\n { initialMicroStatus: MicroStatus.OPEN },\n opts,\n );\n // 第一步检查jsbridge\n this._options.jsBridge = (() => {\n if (opts.jsBridge) return opts.jsBridge;\n if (opts.useBuiltInJsBridge) return new JSBridge();\n return undefined;\n })();\n\n // 第二步检查getVoiceSign\n this._options.getVoiceSign = opts.getVoiceSign ?? unimplementedGetVoiceSign;\n\n // 第二步检查rtc\n this._options.rtc = (() => {\n // 优先取rtc实例\n if (opts.rtc) return opts.rtc;\n // 取指定的内部rtc类型\n if (opts.rtcType) {\n if (!opts.getVoiceSign) {\n logger.error(\n 'GetVoiceSign method must be passed when using built-in RTC instances',\n );\n }\n switch (opts.rtcType) {\n case RTCType.RealseeVRWebViewRTC: {\n // 内置的 VRWebViewRTC\n if (this._options.jsBridge) {\n return new VRWebViewRTC({\n jsBridge: this._options.jsBridge,\n getVoiceSign: this._options.getVoiceSign,\n });\n } else {\n logger.error(\n 'JsBridge instance must be passed when using built-in VRWebViewRTC instances',\n );\n return undefined;\n }\n }\n case RTCType.RealseeBrowserChimeRTC: {\n // 内置的 RealseeBrowserChimeRTC\n return new BrowserRTC4Chime({\n getVoiceSign: this._options.getVoiceSign,\n logLevel: opts.__debug__ ? LogLevel.DEBUG : LogLevel.ERROR,\n });\n }\n case RTCType.RealseeBrowserRTC: {\n // 内置的 RealseeBrowserRTC\n logger.error(\n 'autoPlayConfirm method must be passed when using built-in RTC instances',\n );\n return new BrowserRTC({\n getVoiceSign: this._options.getVoiceSign,\n autoPlayConfirm: this._options.autoPlayConfirm,\n });\n }\n default: {\n logger.error('unknown built-in RTC type');\n return undefined;\n }\n }\n }\n // 都不满足时取内置\n if (opts.useBuiltInRTC) {\n if (!opts.getVoiceSign) {\n logger.error(\n 'GetVoiceSign method must be passed when using built-in RTC instances',\n );\n }\n if (this._options.jsBridge) {\n if ((isRealseeVRWebview && (isAndroid || isIOS)) || isWxMiniProgram) {\n return new VRWebViewRTC({\n jsBridge: this._options.jsBridge,\n getVoiceSign: this._options.getVoiceSign,\n });\n } else {\n // 其它终端使用\n return opts.builtInRTCType === BuiltInRTCType.RealseeXChimeRTC\n ? new BrowserRTC4Chime({\n getVoiceSign: this._options.getVoiceSign,\n })\n : new BrowserRTC({\n getVoiceSign: this._options.getVoiceSign,\n autoPlayConfirm: this._options.autoPlayConfirm,\n });\n }\n } else {\n logger.error(\n 'jsBridge instance must be passed when using built-in RTC instances',\n );\n return undefined;\n }\n }\n return undefined;\n })();\n\n if (!this._options.rtc) {\n logger.warn('unused rtc');\n }\n\n // 第三步进行自动连接\n if (this._options.url && this._options.getTicket) {\n this.connect();\n }\n\n if (this._options.__debug__) {\n Object.assign(window, { $liveController: this._controller, $live: this });\n }\n }\n\n /**\n * 添加带看控制的事件监听\n */\n private _addLiveControllerEventListeners = () => {\n this._controller.on('stateChange', this._handleStateChange);\n this._controller.on('message', this._handleMessage);\n };\n\n /**\n * 移除带看控制的事件监听\n */\n private _removeLiveControllerEventListeners = () => {\n this._controller.off('stateChange', this._handleStateChange);\n this._controller.off('message', this._handleMessage);\n };\n\n /**\n * 带看状态变化\n * @param state\n * @returns\n */\n private _handleStateChange = (state: LiveState, prevState: LiveState) =>\n this.emit('stateChange', state, prevState);\n\n /**\n * 消息接收\n * @param liveMsg\n */\n private _handleMessage = async (liveMsg: LiveMsg) => {\n if (typeof liveMsg === 'object') {\n const { command, data = {}, frontRequestId, code, message } = liveMsg;\n if (code === 'SUCCESS') {\n switch (command) {\n /**\n * 自己的状态变化\n */\n case Command.SelfUserInfo: {\n const selfInfo = data as UserInfo;\n if (!equal(this.selfInfo, selfInfo, { deep: true })) {\n this._buildInData.selfInfo = selfInfo;\n this.emit(\n 'selfInfoUpdate',\n this._buildInData.selfInfo,\n frontRequestId,\n );\n }\n break;\n }\n\n /**\n * 房间信息变化\n */\n case Command.RoomInfo: {\n const roomInfo = data as RoomInfo;\n this._buildInData.roomInfo = Object.assign({}, roomInfo);\n this.emit(\n 'readyKeyframeSync',\n (roomInfo.last_frame || {}) as Partial<KeyframesSnapshot>,\n );\n break;\n }\n\n /**\n * 语音信息变化\n */\n case Command.RTCInfo: {\n const { voice_id: voiceId, type } = data as {\n voice_id: string;\n type: RTCType;\n };\n this._buildInData.rtcInfo = { voiceId, type };\n if (!this.$RTC?.joined) {\n const result = await this.$RTC?.join({\n voiceId,\n userId: this.selfInfo?.id || '',\n roomId: this.roomInfo?.info.room_code,\n type,\n });\n if (result) {\n const status =\n this._options.initialMicroStatus ?? MicroStatus.OPEN;\n await this.toggleMicro(status === MicroStatus.OPEN);\n } else {\n logger.error('加入语音房间失败');\n }\n } else {\n logger.warn('已加入语音房间,无需重复加入!');\n }\n break;\n }\n\n /**\n * 房间用户列表变化\n */\n case Command.UserList: {\n const userList = data as UserInfo[];\n this._buildInData.userList = userList;\n this.emit('userListUpdate', this.userList, frontRequestId);\n break;\n }\n\n /**\n * 自定义事件广播\n */\n case Command.CustomEvent: {\n const evtMsg = data as Record<string, any>;\n this.emit('broadcast', evtMsg, frontRequestId);\n break;\n }\n\n /**\n * 帧数据同步\n */\n case Command.KeyframeSync: {\n const remoteKeyframes = data as Partial<KeyframesSnapshot>;\n // 此处做一层 diff,仅跟本地数据不一致的情况下才广播数据。\n const keyframes: Partial<KeyframesSnapshot> = Object.keys(\n remoteKeyframes,\n ).reduce(\n (\n accu: Partial<KeyframesSnapshot>,\n curr: keyof KeyframesSnapshot,\n ) => {\n if (\n equal(\n remoteKeyframes[curr],\n this._buildInData.keyframes[curr],\n {\n deep: true,\n },\n )\n ) {\n return accu;\n }\n const params = [\n remoteKeyframes[curr],\n this._buildInData.keyframes[curr],\n frontRequestId,\n ];\n const evtName =\n curr as unknown as keyof KeyframeTypes<KeyframesSnapshot>;\n this.keyframes.emit(\n evtName,\n ...(params as Parameters<\n KeyframeTypes<KeyframesSnapshot>[keyof KeyframeTypes<KeyframesSnapshot>]\n >),\n );\n this._buildInData.keyframes[curr] = remoteKeyframes[curr];\n accu[curr] = remoteKeyframes[curr];\n return accu;\n },\n {} as Partial<KeyframesSnapshot>,\n );\n\n this.emit('keyframes', keyframes, frontRequestId);\n break;\n }\n\n /**\n * 内置消息\n */\n case Command.BuiltinMsg: {\n const builtinMsg = data as BuiltinMsg;\n this.emit('builtinEvent', builtinMsg);\n\n if (builtinMsg.event_type === BuiltinEventType.UserChange) {\n this.emit('userChange', builtinMsg);\n }\n\n if (builtinMsg.event_type === BuiltinEventType.RoomChange) {\n this.emit('roomChange', builtinMsg);\n }\n /**\n * 下发指令自己操作麦克风\n */\n if (\n builtinMsg.event_type === BuiltinEventType.UserChange &&\n builtinMsg.action === BuiltinActionType.UserMicroStatus\n ) {\n await this.toggleMicro(\n builtinMsg.data.status === MicroStatus.OPEN,\n );\n }\n\n /**\n * 如果下发指令退出房间,则 关闭麦克风 及 销毁 WebSocket\n */\n if (\n builtinMsg.event_type === BuiltinEventType.RoomChange &&\n builtinMsg.action === BuiltinActionType.RoomClose\n ) {\n await this.exit();\n }\n break;\n }\n /**\n * 被踢出房间\n */\n case Command.UserKickOut: {\n this.emit('kickOut');\n break;\n }\n /**\n * 其它未知广播\n */\n default: {\n console.warn('unknown command: ', command);\n }\n }\n } else {\n this.emit('error', liveMsg);\n }\n }\n };\n\n /**\n * 清理带看缓存的数据\n */\n private _clearLiveData = () => {\n this._buildInData = { keyframes: {} };\n };\n\n /**\n * 连接带看\n * @param options\n * @returns\n */\n connect = async (options: LiveConnectOptions = {}) => {\n // 检查 url 和 票据获取接口实现\n this._options.url = options.url ?? this._options.url ?? '';\n this._options.getTicket = options.getTicket ?? this._options.getTicket;\n this._options.initialMicroStatus =\n options.rtcMicStatus ?? this._options.initialMicroStatus;\n\n if (\n !/^ws(s):\\/\\//.test(this._options.url!) ||\n typeof this._options.getTicket !== 'function'\n ) {\n if (!/^ws(s):\\/\\//.test(this._options.url!)) {\n return new Error('Illegal realsee live room link');\n }\n if (typeof this._options.getTicket !== 'function') {\n return new Error('getTicket muse be function');\n }\n return false;\n }\n\n const { force = false } = options;\n\n // 检测一下麦克风权限,hack\n if (this._options.rtc) {\n const res = await this._options.rtc.detectMicro();\n if (!res) {\n return new Error('Failed to obtain microphone authorization');\n }\n }\n\n // 检查是否已有实例在使用\n const currentState = this.state;\n if (\n currentState === LiveState.CONNECTING ||\n currentState === LiveState.OPEN\n ) {\n if (force) {\n try {\n await this._controller.close('force close by connect');\n } catch (e) {\n console.warn(e);\n }\n } else {\n return new Error('已有Live实例正在连接中,请勿重复连接!');\n }\n }\n\n // 建立连接\n this._clearLiveData();\n const url = appendUri(this._options.url!, {\n ticket: await this._options.getTicket(),\n force: Number(!!force),\n });\n this._controller.open(url);\n return true;\n };\n\n /**\n * 退出带看\n * @returns\n */\n exit = async () => {\n this._clearLiveData();\n if (this.state !== LiveState.OPEN) return true;\n try {\n /** 退出强制关闭语音 */\n this.$RTC?.quit();\n await this.updateStatus(\n BuiltinEventType.RoomChange,\n BuiltinActionType.RoomClose,\n {},\n );\n } catch (e) {\n logger.warn(e);\n }\n return await this._controller.close('user exit');\n };\n\n /**\n * 销毁带看\n * @returns\n */\n dispose = async () => {\n this._removeLiveControllerEventListeners();\n this._clearLiveData();\n return await this._controller.dispose();\n };\n\n /**\n * 修改状态\n * @param evtType\n * @param atnType\n * @param status\n * @param toUserIds\n * @returns\n */\n async updateStatus(\n evtType: BuiltinEventType,\n atnType: BuiltinActionType,\n status: Record<string, any>,\n toUserIds?: string | string[],\n ) {\n if (this.state !== LiveState.OPEN) return false;\n const data = Object.assign(\n { event_type: evtType, action: atnType },\n { data: status },\n );\n const liveMsg = createLiveMsg(Command.BuiltinMsg, data, toUserIds);\n try {\n this._controller.sendMessage(liveMsg);\n return true;\n } catch (e) {\n logger.error(e);\n return false;\n }\n }\n\n /**\n * 设置自己的用户信息\n * @param userInfo\n * @returns\n */\n setSelfInfo = async (userInfo: Partial<UserInfo>) =>\n await this.updateStatus(\n BuiltinEventType.UserChange,\n BuiltinActionType.UserInfo,\n userInfo,\n );\n\n /**\n * 自定义广播\n * @param request 广播请求的数据\n * @param toUserIds\n * @param timeout\n * @returns\n */\n broadcast<Request extends Record<string, any>, Response>(\n request: Request,\n toUserIds: string | string[],\n timeout: number,\n ): Promise<Response> | Error | false {\n if (this.state !== LiveState.OPEN) return false;\n return new Promise((resolve, reject) => {\n const customEvent = createLiveMsg(\n Command.CustomEvent,\n request,\n toUserIds,\n );\n const front_request_id = customEvent.front_request_id;\n\n const timeoutId = timeout\n ? setTimeout(() => {\n reject(new Error('RESPONSE TIMEOUT'));\n this.off('broadcast', broadcastRes);\n }, timeout)\n : undefined;\n\n const broadcastRes = (\n data: Record<string, any>,\n frontRequestId: string,\n ) => {\n if (frontRequestId !== front_request_id) return;\n if (timeoutId) clearTimeout(timeoutId);\n this.off('broadcast', broadcastRes);\n resolve(data as Response);\n };\n\n this.on('broadcast', broadcastRes);\n\n try {\n this._controller.sendMessage(customEvent);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n // 仅用于用户自己的麦克风控制\n toggleMicro = async (microStatus: boolean) => {\n if (!this.selfInfo?.permission?.control_own_micro) return false;\n\n const result = await this.$RTC?.toggleMicro(microStatus);\n if (result) {\n await this.updateStatus(\n BuiltinEventType.UserChange,\n BuiltinActionType.UserMicroStatus,\n {\n status: microStatus ? MicroStatus.OPEN : MicroStatus.CLOSE,\n },\n [],\n );\n }\n\n return result;\n };\n\n /**\n * 控制别人的麦\n * @param microStatus\n * @param toUserIds\n * @returns\n */\n forbidMicro = async (\n microStatus: MicroStatus,\n toUserIds: string | string[],\n ) => {\n if (\n typeof this._options.canForbidUserMicro === 'function' &&\n !this._options.canForbidUserMicro(toUserIds)\n ) {\n return false;\n }\n\n if (!this.selfInfo?.permission?.control_other_micro) {\n return false;\n }\n\n return await this.updateStatus(\n BuiltinEventType.UserChange,\n BuiltinActionType.UserMicroStatus,\n {\n status: microStatus,\n },\n toUserIds,\n );\n };\n\n /**\n * 控制别人的同步全量帧数据权限\n * @param sync\n * @param toUserIds\n * @returns\n */\n forbidSync = async (sync: boolean, toUserIds: string | string[]) => {\n if (\n typeof this._options.canForbidUserSync === 'function' &&\n !this._options.canForbidUserSync(toUserIds)\n ) {\n return false;\n }\n\n if (!this.selfInfo?.permission?.control_other_sync) {\n return false;\n }\n\n return await this.updateStatus(\n BuiltinEventType.UserChange,\n BuiltinActionType.UserPermission,\n { sync_frame: sync },\n toUserIds,\n );\n };\n\n /**\n * 把用户踢出带看\n * @param toUserIds\n * @returns\n */\n kick = async (toUserIds: string | string[]) => {\n if (\n typeof this._options.canForbidUserKick === 'function' &&\n !this._options.canForbidUserKick(toUserIds)\n ) {\n return false;\n }\n\n if (!this.selfInfo?.permission?.change_other_status) {\n return false;\n }\n\n return await this.updateStatus(\n BuiltinEventType.UserChange,\n BuiltinActionType.UserStatus,\n {\n status: 'KICK_OUT',\n },\n toUserIds,\n );\n };\n}\n","// import { Live } from '../typings/live/Live';\nimport { LiveOptions } from '../typings/live/LiveOptions';\nimport { Live, _clearLiveInstanceIfNeed } from './live';\n\n/**\n * 创建`Live`实例\n * @param opts\n * @returns\n */\nexport const createLive = <KeyframesSnapshot extends Record<string, any>>(\n opts: LiveOptions,\n): Live<KeyframesSnapshot> => {\n _clearLiveInstanceIfNeed();\n return new Live<KeyframesSnapshot>(opts);\n};\n","import React, { useCallback } from 'react';\nimport { createContext } from 'react';\nimport {\n BuiltinActionType,\n BuiltinEventType,\n KeyframeTypes,\n LiveConnectOptions,\n LiveEventType,\n LiveOptions,\n MicroStatus,\n RTCEventType,\n RTCType,\n UserInfo,\n} from '../typings';\nimport { LiveState } from '../typings/live/LiveState';\nimport { createLive } from './createLive';\nimport { Live } from './live';\n\nexport type LiveProviderPropTypes<\n KeyframesSnapshot extends Record<string, any>,\n> = {\n children?: React.ReactNode;\n live?: Live<KeyframesSnapshot>;\n};\n\n/**\n * 创建 {@link LiveReact} 实例,并提供 `React` 技术栈相关工具链。\n */\nexport function createLiveReact<KeyframesSnapshot extends Record<string, any>>(\n options: LiveOptions,\n) {\n const LiveContext = createContext<Live<KeyframesSnapshot> | null>(null);\n const live = createLive<KeyframesSnapshot>(options);\n const jsBridge = live.jsBridge;\n\n const LiveProvider = (props: LiveProviderPropTypes<KeyframesSnapshot>) => (\n <LiveContext.Provider value={live}>{props.children}</LiveContext.Provider>\n );\n\n /**\n * 使用live实例\n * @returns\n */\n const useLiveInstance = () => {\n const context = React.useContext(LiveContext);\n if (!context) throw new Error('LiveProvider never found.');\n return context;\n };\n\n /**\n * 不建议这样使用\n * @deprecated\n * @returns\n */\n const unsafe__useLiveInstance = () => live;\n\n /**\n * 使用rtc实例\n */\n const useRTCInstance = () => live.$RTC;\n\n /**\n * 不建议这样使用\n * @deprecated\n * @returns\n */\n const unsafe__useRTCInstance = () => useRTCInstance();\n\n /**\n * 带看连接操作\n */\n const useConnect = () => async (options: LiveConnectOptions) =>\n await live.connect(options);\n\n /**\n *\n * @param name\n * @param callback\n * @param deps\n * @returns\n */\n function useKeyframeUpdateCallback<\n KeyOfKeyframe extends keyof KeyframeTypes<KeyframesSnapshot>,\n >(\n key: KeyOfKeyframe,\n callback: (\n ...args: Parameters<KeyframeTypes<KeyframesSnapshot>[KeyOfKeyframe]>\n ) => ReturnType<KeyframeTypes<KeyframesSnapshot>[KeyOfKeyframe]>,\n deps: React.DependencyList = [],\n ) {\n const live = useLiveInstance();\n const dependencyList: React.DependencyList = [live, name, ...deps];\n const dispose = () => live.keyframes.off(key, callback);\n React.useEffect(() => {\n live.keyframes.on(key, callback);\n return dispose;\n }, dependencyList);\n\n return dispose;\n }\n\n /**\n * 带看的一些操作\n * @returns\n */\n function useLiveAction() {\n const live = useLiveInstance();\n\n const connect = async (options: LiveConnectOptions) =>\n await live.connect(options);\n\n const toggleMicro = (microStatus: boolean) => live.toggleMicro(microStatus);\n\n const broadcast = async (\n data: Record<string, any>,\n toUserIds: string | string[],\n timeout = 0,\n ) => await live.broadcast(data, toUserIds, timeout);\n\n const exit = async () => await live.exit();\n\n const kick = async (toUserIds: string | string[]) =>\n await live.kick(toUserIds);\n\n const forbidMicro = async (\n micro: MicroStatus,\n toUserIds: string | string[] = [],\n ) => await live.forbidMicro(micro, toUserIds);\n\n const forbidSync = (sync: boolean, toUserIds: string | string[] = []) =>\n live.forbidSync(sync, toUserIds);\n\n const getFramesByKey = (key: keyof KeyframesSnapshot) =>\n live.getFramesByKey(key);\n\n const sendKeyframe = (\n key: keyof KeyframesSnapshot,\n frame: KeyframesSnapshot[keyof KeyframesSnapshot],\n ) => live.sendKeyframe(key, frame);\n\n const setSelfInfo = (userInfo: Partial<UserInfo>) =>\n live.setSelfInfo(userInfo);\n\n const updateStatus = (\n evtType: BuiltinEventType,\n atnType: BuiltinActionType,\n status: Record<string, any>,\n toUserIds?: string | string[],\n ) => live.updateStatus(evtType, atnType, status, toUserIds);\n\n return {\n connect,\n broadcast,\n exit,\n kick,\n toggleMicro,\n forbidMicro,\n forbidSync,\n sendKeyframe,\n getFramesByKey,\n setSelfInfo,\n updateStatus,\n };\n }\n\n function useKeyframe<K extends keyof KeyframesSnapshot>(key: K) {\n const live = useLiveInstance();\n const [state, updateState] = React.useState<\n KeyframesSnapshot[K] | undefined\n >(live.getFramesByKey(key));\n\n React.useEffect(() => {\n const onUpdate = (nextKeyframes: KeyframesSnapshot[K]) =>\n updateState(nextKeyframes);\n\n const evtName = key as unknown as keyof KeyframeTypes<KeyframesSnapshot>;\n const callback = onUpdate as unknown as (\n ...args: Parameters<\n KeyframeTypes<KeyframesSnapshot>[keyof KeyframeTypes<KeyframesSnapshot>]\n >\n ) => ReturnType<\n KeyframeTypes<KeyframesSnapshot>[keyof KeyframeTypes<KeyframesSnapshot>]\n >;\n live.keyframes.on(evtName, callback);\n return () => live.keyframes.off(evtName, callback);\n }, [live]);\n\n const setState = React.useCallback(\n (frame: KeyframesSnapshot[K]) => live.sendKeyframe(key, frame),\n [live],\n );\n type CallbackType = [\n frame: KeyframesSnapshot[K] | undefined,\n setFrame: (frame: KeyframesSnapshot[K]) => boolean | Error,\n ];\n return [state, setState] as CallbackType;\n }\n\n function useLiveEventCallback<\n K extends keyof LiveEventType<KeyframesSnapshot>,\n >(\n name: K,\n callback: (\n ...args: Parameters<LiveEventType<KeyframesSnapshot>[K]>\n ) => ReturnType<LiveEventType<KeyframesSnapshot>[K]>,\n deps: React.DependencyList = [],\n ) {\n const live = useLiveInstance();\n const dispose = () => live.off(name, callback);\n const dependencyList: React.DependencyList = [live, name, ...deps];\n\n React.useEffect(() => {\n live.on(name, callback);\n return dispose;\n }, dependencyList);\n\n return dispose;\n }\n\n /**\n * 带看状态\n * @returns\n */\n function useLiveState() {\n const live = useLiveInstance();\n const [state, updateState] = React.useState<LiveState>(live.state);\n React.useEffect(() => {\n const stateChange = (state: LiveState) => updateState(state);\n live.on('stateChange', stateChange);\n return () => live.off('stateChange', stateChange);\n }, [live]);\n\n return state;\n }\n\n function useRTCAction() {\n const live = useLiveInstance();\n\n const join = (options: {\n voiceId: string;\n userId: string;\n roomId: string;\n type: RTCType;\n }) => live.$RTC.join(options);\n\n const quit = () => live.$RTC.quit();\n const shock = () => live.$RTC.shock?.();\n const toggleMicro = (flag?: boolean | undefined) =>\n live.$RTC.toggleMicro(flag);\n\n const detectMicro = () => live.$RTC.detectMicro();\n\n return {\n join,\n quit,\n shock,\n toggleMicro,\n detectMicro,\n };\n }\n\n function useRTCEventCallback<K extends keyof RTCEventType>(\n name: K,\n callback: (\n ...args: Parameters<RTCEventType[K]>\n ) => ReturnType<RTCEventType[K]>,\n deps: React.DependencyList = [],\n ) {\n const live = useLiveInstance();\n const dispose = () => live.$RTC.off(name, callback);\n const dependencyList: React.DependencyList = [live, name, ...deps];\n React.useEffect(() => {\n live.$RTC.on(name, callback);\n return dispose;\n }, dependencyList);\n\n return dispose;\n }\n\n function useSelfInfo() {\n const live = useLiveInstance();\n const [state, updateState] = React.useState<Partial<UserInfo>>(\n live.selfInfo || {},\n );\n\n const selfInfoUpdate = (userInfo: Partial<UserInfo>) =>\n updateState(userInfo);\n\n React.useEffect(() => {\n live.on('selfInfoUpdate', selfInfoUpdate);\n return () => live.off('selfInfoUpdate', selfInfoUpdate);\n }, [live]);\n\n const setState = React.useCallback(\n async (userInfo: Partial<UserInfo>) => {\n return await live.setSelfInfo(userInfo);\n },\n [live],\n );\n\n type CallbackType = [\n Partial<UserInfo>,\n (userInfo: Partial<UserInfo>) => Promise<boolean | Error>,\n ];\n return [state, setState] as CallbackType;\n }\n\n function useKeyframesSnapshot() {\n const live = useLiveInstance();\n const [state, setState] = React.useState<Partial<KeyframesSnapshot>>(\n live.snapshot,\n );\n\n React.useEffect(() => {\n const onKeyframes = (keyframes: Partial<KeyframesSnapshot>) =>\n setState(keyframes);\n live.on('keyframes', onKeyframes);\n return () => live.off('keyframes', onKeyframes);\n });\n\n return state;\n }\n function useUserList() {\n const live = useLiveInstance();\n const [state, updateState] = React.useState<UserInfo[]>(live.userList);\n\n const userListUpdate = (userList: UserInfo[]) => updateState(userList);\n\n React.useEffect(() => {\n live.on('userListUpdate', userListUpdate);\n return () => live.off('userListUpdate', userListUpdate);\n }, [live]);\n\n return state;\n }\n\n return {\n live,\n jsBridge,\n LiveProvider,\n unsafe__useLiveInstance,\n unsafe__useRTCInstance,\n useConnect,\n useKeyframe,\n useKeyframeUpdateCallback,\n useLiveAction,\n useLiveEventCallback,\n useLiveState,\n useRTCAction,\n useRTCEventCallback,\n useSelfInfo,\n useKeyframesSnapshot,\n useUserList,\n };\n}\n"],"names":["EVENT_SYMBOL","__generateEventIfNotExisted","__removeEventIfNotExisted","Subscribe","__awaiter","S4","uuid","logger","LogLevel","$window","RobustWebSocket","parseQuery","generateWssUrl","isValidKey","userAgent","isAndroid","isIOS","isWxMiniProgram","isRealseeVRWebview","defaultOptions"],"mappings":";;;;AAAA,MAAMA,cAAY,GAAkB,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAMrE,SAASC,6BAA2B,CAClC,QAAa,EAAA;AAOb,IAAA,IAAI,CAAC,QAAQ,CAACD,cAAY,CAAC,EAAE;AAC3B,QAAA,QAAQ,CAACA,cAAY,CAAC,GAAG,EAAE,CAAC;AAC7B,KAAA;AACD,IAAA,OAAO,QAAQ,CAACA,cAAY,CAAC,CAAC;AAChC,CAAC;AAED,SAASE,2BAAyB,CAAC,QAAa,EAAA;AAC9C,IAAA,IAAI,CAAC,QAAQ,CAACF,cAAY,CAAC,EAAE;AAC3B,QAAA,OAAO,QAAQ,CAACA,cAAY,CAAC,CAAC;AAC/B,KAAA;AACH,CAAC;AAED;;;;;;;;;;AAUG;MACUG,WAAS,CAAA;AACpB;;;AAGG;AACH,IAAA,WAAW,CAAC,IAAa,EAAA;AACvB,QAAA,MAAM,MAAM,GAAGF,6BAA2B,CAAI,IAAI,CAAC,CAAC;AACpD,QAAA,OAAO,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KAC1D;AAED;;;;;;;;AAQG;AACH,IAAA,EAAE,CACA,IAAO,EACP,QAAyD,EACzD,IAAc,EAAA;AAEd,QAAA,MAAM,MAAM,GAAGA,6BAA2B,CAAI,IAAI,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACrC,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAe,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;QACpD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACvC;AAED;;;;;;;AAOG;IACH,IAAI,CACF,IAAO,EACP,QAAyD,EAAA;QAEzD,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;KACtC;AAED;;;;;;;;AAQG;IACH,GAAG,CACD,IAAQ,EACR,QAA0D,EAAA;QAE1D,IAAI,IAAI,KAAK,SAAS,EAAE;YACtBC,2BAAyB,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO;AACR,SAAA;AACD,QAAA,MAAM,MAAM,GAAGD,6BAA2B,CAAI,IAAI,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,OAAO;AACR,SAAA;QACD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAAE,MAAM;AAChD,SAAA;QACD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;YAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,SAAA;KACF;AAED;;;;;;AAMG;AACH,IAAA,IAAI,CAAoB,IAAO,EAAE,GAAG,IAAsB,EAAA;QACxD,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,QAAA,MAAM,MAAM,GAAGA,6BAA2B,CAAI,IAAI,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACjC,QAAA,KAAK,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;YAC7B,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;AACrC,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AACjC,YAAA,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACnC,IAAI,MAAM,KAAK,KAAK;gBAAE,QAAQ,GAAG,IAAI,CAAC;AACvC,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;AACF;;AChID;;AAEG;AACG,MAAgB,OACpB,SAAQE,WAAuB,CAAA;AAyBhC;;AClCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAuDA;AACO,SAASC,WAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP;;AC7EA;;AAEG;IACS,QAIX;AAJD,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvC,IAAA,OAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3C,IAAA,OAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD,CAAA;AACnD,CAAC,EAJW,OAAO,KAAP,OAAO,GAIlB,EAAA,CAAA,CAAA,CAAA;IAEW,eAGX;AAHD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,MAAqB,CAAA;AACrB,IAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,OAA0B,CAAA;AAC5B,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;ACZD;;AAEG;AAEH;AACA,MAAM,OAAO,GAAG,MAAa;AAC3B,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACxB,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAChE,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACvD,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzD,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,IAAA,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAElC,IAAA,OAAO,CAAI,CAAA,EAAA,IAAI,CAAI,CAAA,EAAA,KAAK,IAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,GAAG,CAAI,CAAA,EAAA,GAAG,CAAI,CAAA,EAAA,EAAE,GAAG,CAAC;AACjE,CAAC,CAAC;AAEF,IAAY,SAKX,CAAA;AALD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EALW,SAAS,KAAT,SAAS,GAKpB,EAAA,CAAA,CAAA,CAAA;AAED;AACA,MAAM,IAAI,GAAG,CAAC,QAA4B,EAAE,IAAc,GAAA,EAAE,KAAI;IAC9D,IAAI,CAAC,OAAO,CAAC,CAAgB,aAAA,EAAA,OAAO,EAAE,CAAK,EAAA,EAAA,QAAQ,CAAI,EAAA,CAAA,CAAC,CAAC;AACzD,IAAA,QAAQ,QAAQ;QACd,KAAK,SAAS,CAAC,IAAI;AACjB,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/B,KAAK,SAAS,CAAC,KAAK;AAClB,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAChC,KAAK,SAAS,CAAC,IAAI;AACjB,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,QAAA;AACE,YAAA,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,KAAA;AACH,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,GAAG,IAAW,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAE1D,MAAM,IAAI,GAAG,CAAC,GAAG,IAAW,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAE5D,MAAM,KAAK,GAAG,CAAC,GAAG,IAAW,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAE9D,MAAM,IAAI,GAAG,CAAC,GAAG,IAAW,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAE5D,MAAM,MAAM,GAAG;IACb,GAAG;IACH,IAAI;IACJ,KAAK;IACL,IAAI;CACL,CAAC;AAEF,eAAe,MAAM;;ACvDrB;AACA,SAASC,IAAE,GAAA;IACT,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;AAEG;SACaC,MAAI,GAAA;;IAElB,OAAO,CACLD,IAAE,EAAE;AACJ,QAAAA,IAAE,EAAE;QACJ,GAAG;AACH,QAAAA,IAAE,EAAE;QACJ,IAAI;AACJ,QAAAA,IAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,GAAG;AACH,QAAAA,IAAE,EAAE;QACJ,GAAG;AACH,QAAAA,IAAE,EAAE;AACJ,QAAAA,IAAE,EAAE;AACJ,QAAAA,IAAE,EAAE,EACJ,WAAW,EAAE,CAAC;AAClB;;ACXM,MAAO,UAAW,SAAQ,OAAO,CAAA;AAuBrC,IAAA,WAAA,CAAY,OAGX,EAAA;AACC,QAAA,KAAK,EAAE,CAAC;AA1BV,QAAA,IAAA,CAAA,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACjC,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QACd,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;QAEL,IAAa,CAAA,aAAA,GAAiB,MAAK;AACzC,YAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACzC,SAAC,CAAC;QAMK,IAAgB,CAAA,gBAAA,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAEvD,QAAA,IAAA,CAAA,IAAI,GAAmB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAErD,QAAA,IAAA,CAAA,KAAK,GAAkB;AAC7B,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,IAAI;SACb,CAAC;AAmBF,QAAA,IAAA,CAAA,IAAI,GAAG,CAAO,OAKb,KAAsBD,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3B,YAAA,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;gBACnD,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;AACvB,aAAA,CAAC,CAAC;;AAEH,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACnC,IAAI,EAAE,KAAK,EAAA,EACR,mBAAmB,CACtB,EAAA,EAAA,oBAAoB,EAClB,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU,GAAG,KAAK,GAAG,IAAI,IAC5D,CAAC;YAEH,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,2BAA2B,EAAE,CAAC;;YAGjD,IAAI,CAAC,iBAAiB,EAAE,CAAC;;YAGzB,IAAI,MAAM,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,KAAI;;AAClD,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CACb,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA,CACzC,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CACxB,CAAA,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAErB,YAAA,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;;YAG1B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;gBACpC,MAAM,EAAE,mBAAmB,CAAC,MAAM;AAClC,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA,CAAC,CAAC;;YAGH,MAAM,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,KAAI;;AAC9C,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CACb,UAAU,EAAA,CACX,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA,CACxB,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;;YAGH,MAAM,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,KAAI;;AAC9C,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,MACb,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAO,CAAA,CAC3B,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,EACxB,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAErB,IAAI,IAAI,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAErC,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAA,CAAC;AAiEM,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,KAAU,KAAI;;AAC1C,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;;YAE9C,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,SAAS,CAAC,YAAY,CAAC,CAAC;AAC7C,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,uBAAuB,GAAG,CAAC,KAAU,KAAI;AAC/C,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/C,YAAA,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;AACpC,YAAA,MAAM,KAAK,GAAG,CAAwB,qBAAA,EAAA,MAAM,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1C,YAAA,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;;AAE3B,YAAA,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,UAAU,EAAE;AAC/C,gBAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAU,KAAM,GAAC,CAAC,CAAC;gBACnD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,KAAI;AACtC,oBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClC,IAAI,SAAS,KAAK,MAAM,EAAE;;wBAExB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;AAC9C,wBAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AACtC,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAA;AACH,SAAC,CAAC;AA3KA,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;;AAE1C,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEO,cAAc,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAU,OAAA,EAAAE,MAAI,EAAE,CAAA,CAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACtC;IAqED,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,OAAO,CAAC,CAAO,OAAO,KAAIF,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;AACnC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACrB,gBAAA,OAAM,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC;AACtD,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC1B,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AAC1B,aAAA;AACD,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CACb,KAAK,EACN,CAAA,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CACrC,CAAA,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA,CACxB,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;SACf,CAAA,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,KAAI;YACtC,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC3C,IAAI;AACF,gBAAA,SAAS,CAAC,YAAY;qBACnB,YAAY,CAAC,IAAI,CAAC;qBAClB,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,qBAAA,KAAK,CAAC,CAAC,CAAC,KAAI;AACX,oBAAAG,QAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACxB,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,iBAAC,CAAC,CAAC;AACN,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,CAAC;AAChB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,WAAW,CAAC,IAAc,EAAA;;AACxB,QAAA,OAAO,OAAO,CAAC,OAAO,CACpB,CAAC,IAAI;cACD,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE;AACnC,cAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,EAAE,KAAK,KAAK,CAC9C,CAAC;KACH;IAED,KAAK,GAAA;AACH,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;IAEO,iBAAiB,GAAA;;AACvB,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC/D,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACzE,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,EAAE,CAAC,cAAc,EAAE,CAAC,KAAK,KAC1C,IAAI,CAAC,IAAI,CACP,aAAa,EACb,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;YAC7C,MAAM;YACN,WAAW;SACZ,CAAC,CAAC,CACJ,CACF,CAAC;QACF,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;KAC3E;AAgCF;;ACnMD;;AAEG;AACG,MAAO,gBAAiB,SAAQ,OAAO,CAAA;AAuB3C,IAAA,WAAA,CAAY,OAA4D,EAAA;AACtE,QAAA,KAAK,EAAE,CAAC;AAvBV,QAAA,IAAA,CAAA,IAAI,GAAG,OAAO,CAAC,sBAAsB,CAAC;QACtC,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QACd,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;QACb,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QAQZ,IAAoB,CAAA,oBAAA,GAAyB,EAAE,CAAC;QAChD,IAAkB,CAAA,kBAAA,GAAuB,EAAE,CAAC;QAEpC,IAAa,CAAA,aAAA,GAAiB,MAAK;AACzC,YAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACzC,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,IAAI,GAAmB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,MAAM,GAAqB,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAenE;;AAEG;QACH,IAAQ,CAAA,QAAA,GAAG,MAAK;YACd,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAU,OAAA,EAAAD,MAAI,EAAE,CAAA,CAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAU,OAAA,EAAAA,MAAI,EAAE,CAAA,CAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,SAAC,CAAC;AAEF;;AAEG;QACH,IAAa,CAAA,aAAA,GAAG,MAAK;;YAEnB,IAAI,CAAC,oBAAoB,GAAG;AAC1B,gBAAA,kBAAkB,EAAE,CAAC,yBAAgC,KAAI;;oBAEvD,yBAAyB,KAAA,IAAA,IAAzB,yBAAyB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAzB,yBAAyB,CAAE,OAAO,CAAC,CAAC,eAAe,KAAI;AACrD,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,CAAc,WAAA,EAAA,eAAe,CAAC,QAAQ,gBAAgB,eAAe,CAAC,KAAK,CAAA,CAAE,CAC9E,CAAC;AACJ,qBAAC,CAAC,CAAC;iBACJ;AAED,gBAAA,mBAAmB,EAAE,CAAC,0BAA+B,KAAI;oBACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,CAA0B,uBAAA,EAAA,0BAA0B,CAAE,CAAA,CACvD,CAAC;iBACH;AAED,gBAAA,kBAAkB,EAAE,CAAC,yBAA8B,KAAI;oBACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAyB,sBAAA,EAAA,yBAAyB,CAAE,CAAA,CAAC,CAAC;iBACxE;AAED,gBAAA,0BAA0B,EAAE,CAAC,MAAW,EAAE,KAAU,KAAI;oBACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,CAAU,OAAA,EAAA,MAAM,CAAC,QAAQ,EAAE,CAAA,EAAA,EACzB,KAAK,GAAG,sBAAsB,GAAG,cACnC,CAAE,CAAA,CACH,CAAC;iBACH;aACF,CAAC;;YAGF,IAAI,CAAC,kBAAkB,GAAG;gBACxB,kBAAkB,EAAE,MAAK;AACvB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAC7B;AACD,gBAAA,iBAAiB,EAAE,CAAC,aAAkB,KAAI;;AAExC,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,CAAA,oCAAA,EAAuC,aAAa,CAAC,UAAU,EAAE,CAAE,CAAA,CACpE,CAAC;iBACH;AACD,gBAAA,4BAA4B,EAAE,CAAC,YAAiB,KAAI;AAClD,oBAAA,IAAI,YAAY,EAAE;;AAEhB,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC7C,qBAAA;iBACF;aACF,CAAC;AACJ,SAAC,CAAC;AAsGF;;AAEG;QACH,IAAiB,CAAA,iBAAA,GAAG,MAAK;;AACvB,YAAA,MAAM,iBAAiB,GACrB,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,0CAAE,UAAU,KAAI,EAAE,CAAC;AACpE,YAAA,IAAI,iBAAiB,EAAE;;AAErB,gBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAQnB,CAAC;gBAEJ,MAAM,cAAc,GAAG,MAAK;oBAC1B,MAAM,MAAM,GAAQ,EAAE,CAAC;oBACvB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;wBACtB,MAAM,CAAC,IAAI,CAAC;4BACV,MAAM,EAAE,CAAC,CAAC,MAAM;AAChB,4BAAA,MAAM,EACJ,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,kCAAE,CAAC;kCACD,CAAC,CAAC,MAAM;AACf,yBAAA,CAAC,CAAC;AACL,qBAAC,CAAC,CAAC;AACH,oBAAA,OAAO,MAAM,CAAC;AAChB,iBAAC,CAAC;AAEF,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,qCAAqC,CACnE,CAAC,iBAAsB,EAAE,OAAY,EAAE,cAAmB,KAAI;;oBAC5D,IAAI,CAAC,OAAO,EAAE;AACZ,wBAAA,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;wBACjC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;wBAC3C,OAAO;AACR,qBAAA;AAED,oBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,0CAAE,UAAU,CAAC,kCAAkC,CAChE,iBAAiB,EACjB,CAAC,UAAe,EAAE,MAAW,EAAE,KAAU,EAAE,cAAmB,KAAI;wBAChE,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC9D,IAAI,cAAc,KAAK,UAAU,EAAE;;;4BAGjC,OAAO;AACR,yBAAA;AAED,wBAAA,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;4BACrB,MAAM,EAAE,cAAc,IAAI,UAAU;4BACpC,MAAM;4BACN,KAAK;4BACL,cAAc;AACf,yBAAA,CAAC,CAAC;wBACH,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;AAC7C,qBAAC,CACF,CAAC;AACJ,iBAAC,CACF,CAAC;;AAGF,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,0CAAE,UAAU,CAAC,kCAAkC,CAChE,iBAAiB,EACjB,CAAC,UAAe,EAAE,MAAW,EAAE,KAAU,EAAE,cAAmB,KAAI;oBAChE,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9D,IAAI,cAAc,KAAK,UAAU,EAAE;AACjC,wBAAA,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,CAAC,EAAE;AACnD,4BAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1B,yBAAA;AACF,qBAAA;AACH,iBAAC,CACF,CAAC;;gBAIF,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,6BAA6B,CAC3D,CAAC,KAAU,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAC1C,CAAC;AACH,aAAA;AACH,SAAC,CAAC;;AA/PA,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAC7B,cAAc,EACd,OAAO,CAAC,QAAQ,IAAIE,UAAQ,CAAC,GAAG,CACjC,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAkED;;;;AAIG;AACG,IAAA,IAAI,CAAC,OAKV,EAAA;;YACC,OAAO,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,IAAI,KAAIJ,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;AACzC,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC3B,IAAI;;oBAEF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACjE,OAAO,CAAA,EAAA,EACV,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAA,CAAA,CAC3B,CAAC;AACH,oBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,oBAAA,MAAM,EACJ,UAAU,EACV,cAAc,GACf,GAAuC,IAAI,CAAC,KAAK,CAChD,kBAAkB,CAAC,OAAO,CAAC,CAC5B,CAAC;;AAGF,oBAAA,MAAM,aAAa,GAAG,IAAI,2BAA2B,CACnD;AACE,wBAAA,OAAO,EAAE,cAAc;qBACxB,EACD;AACE,wBAAA,QAAQ,EAAE;4BACR,cAAc,EAAE,UAAU,CAAC,gBAAgB;4BAC3C,UAAU,EAAE,UAAU,CAAC,WAAW;4BAClC,SAAS,EAAE,UAAU,CAAC,UAAU;AACjC,yBAAA;AACF,qBAAA,CACF,CAAC;;AAGF,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAqB,CAC7C,aAAa,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,gBAAgB,CACtB,CAAC;;oBAGF,IAAI,CAAC,iBAAiB,EAAE,CAAC;;oBAGzB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,uBAAuB,CACpD,IAAI,CAAC,oBAAoB,CAC1B,CAAC;oBACF,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;;oBAGpE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE7D,oBAAA,MAAM,QAAQ,GAAuB;wBACnC,kBAAkB,EAAE,MAAK;;4BACvB,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,sBAAsB,EAAE,CAAC;AACzD,4BAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,4BAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,CAAC,CAAC;yBACf;wBACD,iBAAiB,EAAE,MAAK;AACtB,4BAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;4BACpB,OAAO,CAAC,KAAK,CAAC,CAAC;yBAChB;qBACF,CAAC;oBAEF,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;;oBAGrD,MAAM,iBAAiB,GACrB,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAC1D,oBAAA,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,CAC9C,CAAC,MAAW,KAAK,MAAM,CAAC,QAAQ,KAAK,SAAS,CAC/C,CAAC;AACF,oBAAA,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAC5C,CAAC,MAAW,KAAK,MAAM,CAAC,QAAQ,KAAK,EAAE,CACxC,CAAC;AACF,oBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,IAAI,eAAe,CAAC;oBAEvD,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAClE,oBAAA,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,sBAAsB,CACzD,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,KAAI,SAAS,CACvC,CAAC;AAEF,oBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACxC,iBAAA;AAAC,gBAAA,OAAO,CAAU,EAAE;AACnB,oBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAU,CAAC,CAAC;oBAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;oBACxC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChB,iBAAA;aACF,CAAA,CAAC,CAAC;SACJ,CAAA,CAAA;AAAA,KAAA;IAqFD,IAAI,GAAA;QACF,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,KAAI;;AACnC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,MAAM,QAAQ,GAAuB;AACnC,gBAAA,iBAAiB,EAAE,CAAC,aAAkB,KAAI;AACxC,oBAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC;AACrD,oBAAA,IAAI,iBAAiB,KAAK,wBAAwB,CAAC,IAAI,EAAE;AACvD;;;AAGE;AACF,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;wBACzC,OAAO,CAAC,IAAI,CAAC,CAAC;AACf,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,CAAuC,oCAAA,EAAA,iBAAiB,CAAE,CAAA,CAC3D,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC;AACf,qBAAA;iBACF;aACF,CAAC;YACF,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtD,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,IAAI,EAAE,CAAC;AACzC,SAAC,CAAC,CAAC;KACJ;IAEK,WAAW,GAAA;;AACf,YAAA,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,KAAI;gBACtC,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAC3C,IAAI;AACF,oBAAA,SAAS,CAAC,YAAY;yBACnB,YAAY,CAAC,IAAI,CAAC;yBAClB,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;yBACzB,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,iBAAA;AAAC,gBAAA,OAAO,CAAU,EAAE;oBACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;oBACxC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChB,iBAAA;AACH,aAAC,CAAC,CAAC;SACJ,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,WAAW,CAAC,IAAc,EAAA;;;AAC9B,YAAA,IAAI,IAAI,EAAE;gBACR,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,wBAAwB,EAAE,CAAC;AAC5D,aAAA;AAAM,iBAAA;gBACL,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,sBAAsB,EAAE,CAAC;AAC1D,aAAA;YACD,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC,yBAAyB,EAAE,CAAC;YAC1E,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,OAAO,IAAI,KAAK,KAAK,CAAC;AACvB,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;;AACF,KAAA;IAED,KAAK,GAAA;AACH,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AACF;;AC3WD;;AAEG;IACS,sBAiBX;AAjBD,CAAA,UAAY,qBAAqB,EAAA;AAC/B;;AAEG;AACH,IAAA,qBAAA,CAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,qBAAA,CAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,qBAAA,CAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,qBAAA,CAAA,qBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAqB,CAAA;AACvB,CAAC,EAjBW,qBAAqB,KAArB,qBAAqB,GAiBhC,EAAA,CAAA,CAAA;;ACXK,MAAO,YAAa,SAAQ,OAAO,CAAA;AAQvC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9B;AAED,IAAA,WAAA,CAAY,EAAE,QAAQ,EAAE,YAAY,EAAuB,EAAA;AACzD,QAAA,KAAK,EAAE,CAAC;AAZV,QAAA,IAAA,CAAA,IAAI,GAAY,OAAO,CAAC,mBAAmB,CAAC;QAC5C,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QACd,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;QAUnB,IAAI,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;;AAG1C,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,sBAAsB,EAAE;YACxD,IAAI,CAAC,QAAQ,CAAC,aAAa,CACzB,kBAAkB,EAClB,CAAC,WAAyB,KAAI;AAC5B,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AACxC,aAAC,CACF,CAAC;AACH,SAAA;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC,WAAoB,KAAI;AACvE,YAAA,IAAI,WAAW;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACJ;AAEK,IAAA,IAAI,CAAC,OAKV,EAAA;;YACC,IAAI;AACF,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3B,gBAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CACnE,OAAO,CACR,CAAC;AAEF,gBAAA,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;oBAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACnD,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,OAAO,IAAI,CAAC,MAAM,CAAC;AACpB,iBAAA;AAED,gBAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACzB,gBAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CACtD,CAAA,mBAAA,EAAsB,QAAQ,CAAA,QAAA,EAAW,MAAM,CAAA,QAAA,EAAW,MAAM,CAC9D,OAAO,CAAC,OAAO,CAChB,CAAY,SAAA,EAAA,OAAO,CAAE,CAAA,CACvB,CAAC;gBAEF,IAAI,CAAC,GAAG,EAAE;AACR,oBAAA,IAAI,CAAC,IAAI,CACP,OAAO,EACP,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAC1C,CAAC;AACF,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACrB,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAqB,CAAC,OAAO,EAAE;AAC9C,wBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpB,wBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACpB,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACxB,wBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACrB,qBAAA;AACF,iBAAA;gBACD,OAAO,IAAI,CAAC,MAAM,CAAC;AACpB,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACV,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,SAAS,GAAI,CAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,OAAO,IAAI,CAAC,MAAM,CAAC;AACpB,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;IAEK,IAAI,GAAA;;AACR,YAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CACtD,WAAW,CACZ,CAAC;YACF,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAC/D,aAAA;AACD,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,CAAC,GAAG,CAAC;SACd,CAAA,CAAA;AAAA,KAAA;IAEK,WAAW,GAAA;;AACf,YAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACvD,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1D,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;SACZ,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,WAAW,CAAC,IAAc,EAAA;;YAC9B,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CACtD,CAAyB,sBAAA,EAAA,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAE,CAAA,CAC1C,CAAC;YACF,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1D,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACjB,YAAA,OAAO,GAAG,CAAC;SACZ,CAAA,CAAA;AAAA,KAAA;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB;AACF;;AC3HD;;;;AAIG;IACS,QAiBX;AAjBD,CAAA,UAAY,OAAO,EAAA;;AAEjB,IAAA,OAAA,CAAA,cAAA,CAAA,GAAA,gBAA+B,CAAA;;AAE/B,IAAA,OAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;;AAEtB,IAAA,OAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;;AAEpB,IAAA,OAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;;AAEtB,IAAA,OAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;;AAE1B,IAAA,OAAA,CAAA,aAAA,CAAA,GAAA,cAA4B,CAAA;;AAE5B,IAAA,OAAA,CAAA,cAAA,CAAA,GAAA,eAA8B,CAAA;;AAE9B,IAAA,OAAA,CAAA,aAAA,CAAA,GAAA,eAA6B,CAAA;AAC/B,CAAC,EAjBW,OAAO,KAAP,OAAO,GAiBlB,EAAA,CAAA,CAAA,CAAA;AA0BD;;AAEG;IACS,iBASX;AATD,CAAA,UAAY,gBAAgB,EAAA;AAC1B;;AAEG;AACH,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B;;AAEG;AACH,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC5B,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,GAS3B,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;IACS,kBAyBX;AAzBD,CAAA,UAAY,iBAAiB,EAAA;AAC3B;;AAEG;AACH,IAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,qBAAuC,CAAA;AACvC;;AAEG;AACH,IAAA,iBAAA,CAAA,qBAAA,CAAA,GAAA,mBAAyC,CAAA;AACzC;;AAEG;AACH,IAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,mBAAoC,CAAA;AACpC;;AAEG;AACH,IAAA,iBAAA,CAAA,YAAA,CAAA,GAAA,eAA4B,CAAA;AAC5B;;AAEG;AACH,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,aAAwB,CAAA;AACxB;;AAEG;AACH,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,OAAmB,CAAA;AACrB,CAAC,EAzBW,iBAAiB,KAAjB,iBAAiB,GAyB5B,EAAA,CAAA,CAAA,CAAA;AAeD;;AAEG;IACS,YAGX;AAHD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAHW,WAAW,KAAX,WAAW,GAGtB,EAAA,CAAA,CAAA,CAAA;AAgBD;;;;AAIG;AACG,SAAU,YAAY,CAAC,OAAe,EAAA;IAC1C,IAAI;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChC,QAAA,MAAM,MAAM,GAAwB;YAClC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,KAAK,EAAE,GAAG,CAAC,MAAM;YACjB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,cAAc,EAAE,GAAG,CAAC,gBAAgB;YACpC,aAAa,EAAE,GAAG,CAAC,eAAe;AAClC,YAAA,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;SACrB,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAC9C,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CACnC,CAAC;AACF,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAQ,MAAA,CAAA,CAAC,CAAC;AAC3D,SAAA;AACD,QAAA,OAAO,MAAiB,CAAC;AAC1B,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;;AAEd,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACH;;IC9JY,UAoBX;AApBD,CAAA,UAAY,SAAS,EAAA;AAInB,IAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,gBAAmB,CAAA;AAEnB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAEd;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AAER;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACZ,CAAC,EApBW,SAAS,KAAT,SAAS,GAoBpB,EAAA,CAAA,CAAA;;ACpBD;;AAEG;IACS,WAaX;AAbD,CAAA,UAAY,UAAU,EAAA;AACpB;;AAEG;AACH,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACd,CAAC,EAbW,UAAU,KAAV,UAAU,GAarB,EAAA,CAAA,CAAA,CAAA;IAEW,cAOX;AAPD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACzB,CAAC,EAPW,aAAa,KAAb,aAAa,GAOxB,EAAA,CAAA,CAAA;;ACzBD;;AAEG;IACS,eAyBX;AAzBD,CAAA,UAAY,cAAc,EAAA;AACxB;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,gBAAmB,CAAA;AAEnB;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAEd;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AAER;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AAEX;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACZ,CAAC,EAzBW,cAAc,KAAd,cAAc,GAyBzB,EAAA,CAAA,CAAA,CAAA;IASW,mBAQX;AARD,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,kBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,kBAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,kBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC7B,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,GAQ7B,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;IACS,oBAsCX;AAtCD,CAAA,UAAY,mBAAmB,EAAA;AAC7B;;AAEG;AACH,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,kBAA6B,CAAA;AAE7B;;AAEG;AACH,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,sBAAiC,CAAA;AAEjC;;AAEG;AACH,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,mBAA8B,CAAA;AAE9B;;AAEG;AACH,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,gBAA2B,CAAA;AAE3B;;AAEG;AACH,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,kBAA6B,CAAA;AAC7B;;AAEG;AACH,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,kBAA6B,CAAA;AAC7B;;AAEG;AACH,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,iBAA4B,CAAA;AAC5B;;AAEG;AACH,IAAA,mBAAA,CAAA,aAAA,CAAA,GAAA,SAAuB,CAAA;AAEzB,CAAC,EAtCW,mBAAmB,KAAnB,mBAAmB,GAsC9B,EAAA,CAAA,CAAA,CAAA;AAGK,SAAU,aAAa,CAAC,IAAY,EAAA;AACxC,IAAA,QAAQ,IAAI;QACV,KAAK,IAAI,EAAE;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;AACpC,SAAA;QACD,KAAK,IAAI,EAAE;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;AACpC,SAAA;QACD,KAAK,IAAI,EAAE;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;AACpC,SAAA;QACD,KAAK,IAAI,EAAE;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;AACpC,SAAA;QACD,KAAK,IAAI,EAAE;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;AACpC,SAAA;QACD,KAAK,IAAI,EAAE;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;AACpC,SAAA;QACD,KAAK,IAAI,EAAE;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;AACpC,SAAA;AAGF,KAAA;IAED,OAAO,mBAAmB,CAAC,WAAW,CAAA;AACxC;;AXvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAuDA;AACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,CAAA;;AY5EO,MAAM,KAAK,GAMb,EAAE,CAAA;AAOD,SAAU,mBAAmB,CAAC,MAAc,EAAE,QAAa,EAAE,IAAI,GAAG,IAAI,EAAA;AAE5E,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAClB,QAAA,MAAM,IAAI,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QACvI,KAAK,CAAC,MAAM,CAAC,GAAG;YACd,IAAI;AACJ,YAAA,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC5B,CAAA;AACF,KAAA;AAAM,SAAA;AACL,QAAA,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC7C,KAAA;AAED,IAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACpB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,IAAS,KAAI;AAElC,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAG/C,EAAE,IAAI,KAAI;AACX,gBAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;gBAC/B,IAAI,CAAC,IAAI,EAAE;AACT,oBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAChB,iBAAA;gBACD,QAAQ,CAAC,IAAI,CAAC,CAAA;AACd,gBAAA,OAAO,IAAI,CAAA;aACZ,EAAE,EAAE,CAAC,CAAA;AACP,SAAA;AAEF,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAA;AAE3B,CAAA;;AC1Ca,MAAA,cAAc,CAAA;AAEzB,IAAA,UAAU,CAAC,OAAgB,EAAA;QACzB,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AAED,IAAA,eAAe,CAAI,MAAc,EAAA;QAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AAED,IAAA,aAAa,CAAI,MAAc,EAAE,QAA2B,EAAA;QAC1D,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AAEF,CAAA;;ACZD,MAAM,kBAAkB,GAAG,gBAAgB,CAAA;AAY3C,MAAMK,SAAO,GAAG,MAAiC,CAAA;AAK3C,MAAO,iBAAkB,SAAQ,cAAc,CAAA;AAInD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAA;AACP,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAW,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;YAChC,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;AAC9B,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACpB,aAAA;AACF,SAAA,CAAA,CAAC,CAAA;AACH,KAAA;AAOO,IAAA,gBAAgB,CAAC,OAAO,GAAG,IAAI,EAAA;QACrC,IAAI,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,IAAI,CAAA;AAElC,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;AAE/B,QAAA,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,KAAI;YAC9C,MAAM,KAAK,GAAG,MAAK;gBACjB,IAAI,IAAI,CAAC,YAAY;AAAE,oBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;gBAE3C,IAAIA,SAAO,CAAC,cAAc,EAAE;AAC1B,oBAAA,MAAM,YAAY,GAAGA,SAAO,CAAC,kBAAkB,CAAC,CAAA;AAEhD,oBAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,aAAa,CACzB,mBAAmB,CAAC,oBAAoB,EAAE,CAAC,IAAS,KAAI;wBACtD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAA;AAChD,wBAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;AAEhC,wBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;AACrB,qBAAA,CAAC,CACH,CAAA;AACF,iBAAA;AACD,gBAAA,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,EAAE;oBAEjD,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAChD,iBAAA;gBAGD,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAC9B,aAAC,CAAA;AAGD,YAAA,KAAK,EAAE,CAAA;AACT,SAAC,CAAC,CAAA;AACH,KAAA;AAEK,IAAA,UAAU,CAAC,OAAO,GAAG,IAAI,EAAA;;AAC7B,YAAA,MAAM,GAAG,GAAgC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAErD,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AACb,gBAAA,OAAO,GAAG,CAAA;AACX,aAAA;YAED,IAAI;gBACF,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;AAC9C,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACd,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AACd,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAc,CAAA;AACxB,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;AACX,SAAA,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAA;AAC3B,KAAA;AAED,IAAA,IAAI,MAAM,GAAA;;QACR,OAAO,CAAA,MAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,EAAE,CAAA;AACrC,KAAA;AAED,IAAA,gBAAgB,CAAC,SAAiB,EAAA;QAChC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,OAAO,SAAS,CAAA;AACjB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;AACvC,KAAA;AAEK,IAAA,eAAe,CAAI,MAAc,EAAA;;AACrC,YAAA,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAkC,CAAA;YAC1D,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YAEnD,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AACd,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAA;AAEnB,gBAAA,OAAO,GAAG,CAAA;AACX,aAAA;AAED,YAAA,OAAO,MAAM,IAAI,OAAO,CAAgC,CAAO,OAAO,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;gBACxE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;AAE/C,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;oBACzB,SAAS;AACT,oBAAA,YAAY,EAAE,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAY,KAAI;AAChF,wBAAA,MAAM,CAAC,GAAQ,CAAC,MAAK;4BACnB,IAAI;AACF,gCAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACxB,6BAAA;AAAC,4BAAA,OAAO,CAAC,EAAC;AACT,gCAAA,OAAO,IAAI,CAAA;AACZ,6BAAA;AACF,yBAAA,GAAG,CAAA;AAEJ,wBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAK;4BACb,IAAI,CAAC,KAAK,CAAC;AAAE,gCAAA,OAAO,IAAI,CAAA;4BACxB,IAAI,CAAC,KAAK,CAAC;AAAE,gCAAA,OAAO,KAAK,CAAA;AACzB,4BAAA,OAAO,CAAC,CAAA;AACT,yBAAA,GAAQ,CAAA;wBAET,OAAO,CAAC,GAAG,CAAC,CAAA;AACd,qBAAC,CAAC;AACH,iBAAA,CAAC,CAAA;AAEF,gBAAA,IAAI,CAAC,YAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;AACxC,aAAA,CAAA,CAAC,CAAA;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,aAAa,CAAI,MAAc,EAAE,QAA2B,EAAA;;AAChE,YAAA,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAA6C,CAAA;YACrE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YAEnD,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AACd,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAA;AAEnB,gBAAA,OAAO,GAAG,CAAA;AACX,aAAA;AAED,YAAA,OAAO,MAAM,IAAI,OAAO,CAA2C,CAAO,OAAO,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;gBACnF,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;AAC/C,gBAAA,MAAM,SAAS,GAAG,CAAC,IAAY,KAAI;AACjC,oBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;wBACd,IAAI;AACF,4BAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACxB,yBAAA;AAAC,wBAAA,OAAO,CAAC,EAAE;AACV,4BAAA,OAAO,IAAI,CAAA;AACZ,yBAAA;AACF,qBAAA,GAAG,CAAA;AAEJ,oBAAA,MAAM,aAAa,GAAG,CAAC,MAAK;wBAC1B,IAAI,CAAC,KAAK,CAAC;AAAE,4BAAA,OAAO,IAAI,CAAA;wBACxB,IAAI,CAAC,KAAK,CAAC;AAAE,4BAAA,OAAO,KAAK,CAAA;AACzB,wBAAA,OAAO,CAAC,CAAA;AACT,qBAAA,GAAQ,CAAA;oBAET,QAAQ,CAAC,aAAa,CAAC,CAAA;AACvB,oBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,MAAK;AAEZ,wBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;AAClC,wBAAA,IAAI,CAAC,SAAS;4BAAE,OAAM;AAEtB,wBAAA,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAA;AAC5E,wBAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;4BACd,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AAC/B,yBAAA;AACH,qBAAC,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,CAAA;AACd,iBAAC,CAAA;AAED,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;oBACzB,SAAS;oBACT,YAAY,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;AAC/D,iBAAA,CAAC,CAAA;AAEF,gBAAA,IAAI,CAAC,YAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AACtC,aAAA,CAAA,CAAC,CAAA;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AACF,CAAA;;ACnMD,IAAY,YAGX,CAAA;AAHD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,iBAAA,CAAA,GAAA,aAA+B,CAAA;AAC/B,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AACjC,CAAC,EAHW,YAAY,KAAZ,YAAY,GAGvB,EAAA,CAAA,CAAA,CAAA;AAYD,MAAM,OAAO,GAAG,MAAiC,CAAC;AAQrC,MAAA,mBAAmB,CAAA;AAI9B,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,KAAA;AAEO,IAAA,gBAAgB,CAAC,OAAO,GAAG,IAAI,EAAA;QACrC,IAAI,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC;AAE7B,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AAEhC,QAAA,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,KAAI;YAC9C,MAAM,KAAK,GAAG,MAAK;gBACjB,IAAI,IAAI,CAAC,MAAM;AAAE,oBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEtC,IACE,OAAO,CAAC,MAAM;oBACd,OAAO,CAAC,MAAM,CAAC,eAAe;AAC9B,oBAAA,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EACtC;oBACA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;AAEtD,oBAAA,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,SAAS,CAAC;AACb,wBAAA,IAAI,EAAE,eAAe;AACrB,wBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;AACpB,4BAAA,YAAY,EAAE,mBAAmB,CAC/B,oBAAoB,EACpB,CAAC,IAAS,KAAI;gCACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;AACjD,gCAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,gCAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,6BAAC,CACF;yBACF,CAAC;AACH,qBAAA,CAAC,CACH,CAAC;oBAEF,OAAO;AACR,iBAAA;AACD,gBAAA,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,EAAE;oBAEjD,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;AACjD,iBAAA;gBAGD,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAC,CAAC;AAGF,YAAA,KAAK,EAAE,CAAC;AACV,SAAC,CAAC,CAAC;AACJ,KAAA;AAEK,IAAA,UAAU,CAAC,OAAO,GAAG,IAAI,EAAA;;AAC7B,YAAA,MAAM,GAAG,GAAgC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEtD,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACd,gBAAA,OAAO,GAAG,CAAC;AACZ,aAAA;YAED,IAAI;gBACF,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC/C,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACd,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACf,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAc,CAAC;AACzB,aAAA;AAED,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACtB,KAAA;AAED,IAAA,IAAI,MAAM,GAAA;;QACR,OAAO,CAAA,MAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,EAAE,CAAC;AACtC,KAAA;AAED,IAAA,gBAAgB,CAAC,SAAiB,EAAA;QAChC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AACxC,KAAA;AAEK,IAAA,eAAe,CAAI,MAAc,EAAA;;AACrC,YAAA,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAkC,CAAC;YAC3D,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAEpD,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACf,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAEpB,gBAAA,OAAO,GAAG,CAAC;AACZ,aAAA;AAED,YAAA,OAAO,MAAM,IAAI,OAAO,CAAgC,CAAO,OAAO,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;gBACxE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEhD,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;oBACzB,SAAS;AACT,oBAAA,YAAY,EAAE,mBAAmB,CAC/B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAC7B,CAAC,IAAY,KAAI;AACf,wBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;4BACd,IAAI;AACF,gCAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzB,6BAAA;AAAC,4BAAA,OAAO,CAAC,EAAE;AACV,gCAAA,OAAO,IAAI,CAAC;AACb,6BAAA;AACF,yBAAA,GAAG,CAAC;AAEL,wBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAK;4BACb,IAAI,CAAC,KAAK,CAAC;AAAE,gCAAA,OAAO,IAAI,CAAC;4BACzB,IAAI,CAAC,KAAK,CAAC;AAAE,gCAAA,OAAO,KAAK,CAAC;AAC1B,4BAAA,OAAO,CAAC,CAAC;AACV,yBAAA,GAAQ,CAAC;wBAEV,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,qBAAC,CACF;AACF,iBAAA,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAO,CAAC,WAAW,CACtB,IAAI,CAAC,SAAS,CAAC;AACb,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,KAAK,EAAE,GAAG;AACX,iBAAA,CAAC,CACH,CAAC;AACH,aAAA,CAAA,CAAC,CAAC;AACJ,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,aAAa,CAAI,MAAc,EAAE,QAA2B,EAAA;;AAChE,YAAA,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAA6C,CAAC;YACtE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAEpD,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACf,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAEpB,gBAAA,OAAO,GAAG,CAAC;AACZ,aAAA;AAED,YAAA,OAAO,MAAM,IAAI,OAAO,CACtB,CAAO,OAAO,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;gBAChB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAChD,gBAAA,MAAM,SAAS,GAAG,CAAC,IAAY,KAAI;AACjC,oBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;wBACd,IAAI;AACF,4BAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzB,yBAAA;AAAC,wBAAA,OAAO,CAAC,EAAE;AACV,4BAAA,OAAO,IAAI,CAAC;AACb,yBAAA;AACF,qBAAA,GAAG,CAAC;AAEL,oBAAA,MAAM,aAAa,GAAG,CAAC,MAAK;wBAC1B,IAAI,CAAC,KAAK,CAAC;AAAE,4BAAA,OAAO,IAAI,CAAC;wBACzB,IAAI,CAAC,KAAK,CAAC;AAAE,4BAAA,OAAO,KAAK,CAAC;AAC1B,wBAAA,OAAO,CAAC,CAAC;AACV,qBAAA,GAAQ,CAAC;oBAEV,QAAQ,CAAC,aAAa,CAAC,CAAC;AACxB,oBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,MAAK;AAEZ,wBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AACnC,wBAAA,IAAI,CAAC,SAAS;4BAAE,OAAO;AAEvB,wBAAA,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CACnC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,SAAS,CACtC,CAAC;AACF,wBAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;4BACd,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChC,yBAAA;AACH,qBAAC,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,iBAAC,CAAC;AAEF,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;oBACzB,SAAS;oBACT,YAAY,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;AAC/D,iBAAA,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAO,CAAC,WAAW,CACtB,IAAI,CAAC,SAAS,CAAC;AACb,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,KAAK,EAAE,GAAG;AACX,iBAAA,CAAC,CACH,CAAC;AACH,aAAA,CAAA,CACF,CAAC;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AACF,CAAA;;AC7ND,SAAS,EAAE,GAAA;IACT,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AACxE,CAAC;AAKa,SAAU,IAAI,GAAA;IAE1B,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACzD,QAAA,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,CAAA;AACxD,CAAA;;ACTA,IAAY,kBAMX,CAAA;AAND,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,SAAA,CAAA,GAAA,aAAuB,CAAA;AACvB,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,SAAiB,CAAA;AACjB,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,YAAoB,CAAA;AACtB,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,GAM7B,EAAA,CAAA,CAAA,CAAA;;ACTD,MAAM,QAAQ,GAAG,sBAAsB,CAAA;AAEvC,IAAA,iBAAA,GAAe,QAAQ,CAAA;;ACIvB,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,MAA8B,KAAI;AACrE,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAY,KAAK,GAAG,CAAC,OAAO,CAAC,CAAA,EAAA,EAAK,IAAI,CAAA,EAAA,CAAI,EAAE,CAAG,EAAA,MAAM,CAAC,IAAI,CAAC,CAAE,CAAA,CAAC,EAAE,GAAG,CAAC,CAAA;AACjH,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;AACvB,CAAC,CAAA;AAED,IAAA,gBAAA,GAAe,cAAc,CAAA;;ACX7B,MAAM,UAAU,GAAG,CAAC,GAA6B,EAAE,MAAc,KAAiC,GAAG,IAAI,MAAM,CAAA;AAC/G,IAAA,YAAA,GAAe,UAAU,CAAA;;ACIzB,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,EAAE,KAC5B,KAAK;AACF,KAAA,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;KAChB,KAAK,CAAC,GAAG,CAAC;AACV,KAAA,GAAG,CAAC,CAAC,EAAU,KAAI;AAClB,IAAA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,OAAO,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAA;AACvC,CAAC,CAAC;AACD,KAAA,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,MAAW,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CAAA,EAAK,IAAI,CAAA,CAAG,EAAE,EAAE,CAAC,CAAA;AAE3D,IAAA,YAAA,GAAe,UAAU,CAAA;;ACfzB,MAAM,YAAY,GAAG,4BAA4B,CAAA;AAMjD,SAAS,2BAA2B,CAClC,QAAa,EAAA;AAIb,IAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC3B,QAAA,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA;AAC5B,KAAA;AACD,IAAA,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAA;AAC/B,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAa,EAAA;AAC9C,IAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC3B,QAAA,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAA;AAC9B,KAAA;AACH,CAAC;AAaD,MAAM,SAAS,CAAA;AAKb,IAAA,WAAW,CAAC,IAAa,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,2BAA2B,CAAI,IAAI,CAAC,CAAA;AACnD,QAAA,OAAO,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AACzD,KAAA;AAWD,IAAA,EAAE,CACA,IAAO,EACP,QAAyD,EACzD,IAAc,EAAA;AAEd,QAAA,MAAM,MAAM,GAAG,2BAA2B,CAAI,IAAI,CAAC,CAAA;AACnD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;AACpC,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAe,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,CAAA;QACnD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AACtC,KAAA;AAUD,IAAA,IAAI,CAAoB,IAAO,EAAE,QAAyD,EAAA;QACxF,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;AACrC,KAAA;AAWD,IAAA,GAAG,CAAoB,IAAQ,EAAE,QAA0D,EAAA;QACzF,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,yBAAyB,CAAC,IAAI,CAAC,CAAA;YAC/B,OAAM;AACP,SAAA;AACD,QAAA,MAAM,MAAM,GAAG,2BAA2B,CAAI,IAAI,CAAC,CAAA;AACnD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QACpC,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;YACvB,OAAM;AACP,SAAA;QACD,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,OAAO,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAAE,MAAK;AAC/C,SAAA;QACD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;YAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AAC9B,SAAA;AACF,KAAA;AASD,IAAA,IAAI,CAAoB,IAAO,EAAE,GAAG,IAAsB,EAAA;QACxD,IAAI,QAAQ,GAAG,KAAK,CAAA;AACpB,QAAA,MAAM,MAAM,GAAG,2BAA2B,CAAI,IAAI,CAAC,CAAA;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;AAChC,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;YAC/B,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAA;AACpC,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;AAChC,YAAA,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAClC,IAAI,MAAM,KAAK,KAAK;gBAAE,QAAQ,GAAG,IAAI,CAAA;AACtC,SAAA;AACD,QAAA,OAAO,QAAQ,CAAA;AAChB,KAAA;AACF,CAAA;;ACpEK,MAAOC,iBAAgB,SAAQ,SAAkC,CAAA;AAsBrE,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;AACvB,KAAA;AAED,IAAA,WAAA,CAAY,OAA2C,EAAA;AAErD,QAAA,KAAK,EAAE,CAAC;AAxBF,QAAA,IAAA,CAAA,QAAQ,GAAkB;AAChC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,KAAI;gBAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;oBAAE,OAAO;AACvD,gBAAA,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACtC,aAAA;AACD,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,wBAAwB,EAAE,KAAK;AAC/B,YAAA,aAAa,EAAE,KAAK;SACrB,CAAC;AAEM,QAAA,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;AACd,QAAA,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC,CAAC;AACjB,QAAA,IAAyB,CAAA,yBAAA,GAAG,KAAK,CAAC;AAClC,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAE1B,QAAA,IAA2B,CAAA,2BAAA,GAAG,KAAK,CAAC;QAuCpC,IAA8B,CAAA,8BAAA,GAAG,MAAK;YAC5C,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACpC,aAAA;AACH,SAAC,CAAC;AAMM,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,KAAY,KAAI;YACjC,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAmB,CAAC,CAAC;AACtC,aAAA;AACH,SAAC,CAAC;QAKM,IAAQ,CAAA,QAAA,GAAG,MAAK;;AACtB,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,SAAC,CAAC;QAKM,IAAyB,CAAA,yBAAA,GAAG,MAAK;YACvC,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACpC,gBAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACxD,gBAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;AAC1C,aAAA;AACH,SAAC,CAAC;QAKM,IAAyB,CAAA,yBAAA,GAAG,MAAK;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;AACrC,gBAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,gBAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AACzC,aAAA;AACH,SAAC,CAAC;AAOF,QAAA,IAAA,CAAA,IAAI,GAAG,CACL,IAAmD,KAC/B;;AACpB,YAAA,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,OAAK,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAA,EAAE;gBACjE,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,aAAA;AACH,SAAC,CAAC;AAQF,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,IAAsB,EAAE,MAAe,KAAsB;;AACpE,YAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC5B,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,GAAG,IAAI,CAAC;AACb,aAAA;YAED,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAEjC,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,SAAC,CAAC;AAKF,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,GAAY,KAAU;;AAC5B,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACjB,aAAA;AACD,YAAA,IACE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,SAAS,CAAC,IAAI;gBAClD,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,SAAS,CAAC,UAAU,EACxD;gBACA,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,gBAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;AACvC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;gBAE/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,aAAA;AACH,SAAC,CAAC;QAKM,IAAgB,CAAA,gBAAA,GAAG,MAAK;;AAC9B,YAAA,MAAM,MAAM,GACV,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAG,IAAI,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;AACpB,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,qBAAqB,EAAE,CAAA;AAC5B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;YAE1E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CACP,YAAY,EACZ,IAAI,WAAW,CAAC,YAAY,EAAE;AAC5B,gBAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;AACnE,aAAA,CAAC,CACH,CAAC;YAEF,MAAM,eAAe,GAAG,MAAK;AAC3B,gBAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;gBACjC,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CACP,SAAS,EACT,IAAI,WAAW,CAAC,YAAY,EAAE;AAC5B,oBAAA,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI,CAAC,SAAS;wBACxB,UAAU,EAAE,IAAI,CAAC,WAAW;AAC7B,qBAAA;AACF,iBAAA,CAAC,CACH,CAAC;AACJ,aAAC,CAAC;AAEF,YAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,CAAC;YAE3E,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAE/B,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,wBAAwB,CAAA,EAAE;gBAC5C,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAClC,aAAA;AACH,SAAC,CAAC;QAKM,IAAqB,CAAA,qBAAA,GAAG,MAAK;;AACnC,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CACtC,MAAM,EACN,IAAI,CAAC,qBAAqB,CAC3B,CAAC;AACF,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CACtC,OAAO,EACP,IAAI,CAAC,sBAAsB,CAC5B,CAAC;AACF,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CACtC,OAAO,EACP,IAAI,CAAC,sBAAsB,CAC5B,CAAC;AACF,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CACtC,SAAS,EACT,IAAI,CAAC,wBAAwB,CAC9B,CAAC;AACJ,SAAC,CAAC;QAKM,IAAuB,CAAA,uBAAA,GAAG,MAAK;;AACrC,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC1E,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC5E,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC5E,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,gBAAgB,CACnC,SAAS,EACT,IAAI,CAAC,wBAAwB,CAC9B,CAAC;AACJ,SAAC,CAAC;AAMM,QAAA,IAAA,CAAA,qBAAqB,GAAG,CAAC,KAAY,KAAI;YAC/C,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,gBAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAClC,aAAA;AACD,YAAA,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC;AACtC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;YACvC,OAAO,IAAI,CAAC,IAAI,CACd,MAAM,EACN,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,CAC3D,CAAC;AACJ,SAAC,CAAC;AAOM,QAAA,IAAA,CAAA,sBAAsB,GAAG,CAAC,KAAiB,KAAI;AACrD,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACnC,SAAC,CAAC;AAOM,QAAA,IAAA,CAAA,sBAAsB,GAAG,CAAC,KAAY,KAAI;YAChD,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,EACP,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACvD,CAAC;AACJ,SAAC,CAAC;AAOM,QAAA,IAAA,CAAA,wBAAwB,GAAG,CAAC,KAAmB,KAAI;YACzD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACrC,SAAC,CAAC;AA/PA,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC1B,SAAA;AACF,KAAA;AAEM,IAAA,UAAU,CAAC,OAA0C,EAAA;AAC1D,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;AACpC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;AACvE,QAAA,IAAI,QAAO,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,CAAA,KAAK,QAAQ,EAAE;AACrC,YAAA,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;AACH,SAAA;AAED,QAAA,IAAI,QAAO,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,eAAe,CAAA,KAAK,UAAU,EAAE;AAC/C,YAAA,MAAM,IAAI,KAAK,CACb,oJAAoJ,CACrJ,CAAC;AACH,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;AACF,KAAA;AA6OO,IAAA,UAAU,CAAC,KAAiB,EAAA;;AAClC,QAAA,IACE,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YAC3D,IAAI,CAAC,iBAAiB,EACtB;AACA,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAK,KAAK,EAAE;AAC3C,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,OAAO;AACR,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACnE,SAAA;AACF,KAAA;AACF,CAAA;;AC3Ua,MAAO,YAAY,CAAA;AAW/B,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC;AACpC,KAAA;AAED,IAAA,WAAA,GAAA;;AAXQ,QAAA,IAA2B,CAAA,2BAAA,GAA6B,EAAE,CAAC;AAE3D,QAAA,IAAA,CAAA,GAAG,GAAoB,IAAIA,iBAAe,EAAE,CAAC;AAE7C,QAAA,IAAW,CAAA,WAAA,GACjB,OAAO,CAAC;AAoBV,QAAA,IAAA,CAAA,UAAU,GAAG,CAAO,OAAO,GAAG,IAAI,KAA0C,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAC1E,YAAA,MAAM,GAAG,GAAgC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEvD,MAAM,EACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GAAG,iBAAiB,GAC1B,GAAGC,YAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,EAAE,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE;gBACvC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC/C,gBAAA,OAAO,GAAG,CAAC;AACZ,aAAA;AAED,YAAA,MAAM,GAAG,GAAGC,gBAAc,CACxB,oEAAoE,EACpE;AACE,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,EAAE,EAAE,iBAAiB;AACrB,gBAAA,EAAE,EAAE,KAAK;AACT,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA,CACF,CAAC;YAEF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,gBAAA,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACxC,iBAAA;AAAM,qBAAA;oBACL,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACjD,iBAAA;AACF,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACV,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAU,CAAC;AACrB,aAAA;AAED,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAA,CAAC;QAKM,IAAmB,CAAA,mBAAA,GAAG,MAAK;YACjC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC/B,SAAC,CAAC;AAOM,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,GAAW,KAC1B,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YACtB,MAAM,UAAU,GAAG,MAAK;AACtB,gBAAA,IAAI,CAAC,gBAAgB,CACnB,kBAAkB,CAAC,KAAK,EACxB,MAAM,OAAO,CAAC,IAAI,CAAC,EACnB,IAAI,CACL,CAAC;AACF,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,gBAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;AACvC,aAAC,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,SAAC,CAAC,CAAC;QAKG,IAAyB,CAAA,yBAAA,GAAG,MAAK;AACvC,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,MAAK;AAC7B,gBAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;AAClC,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,MAAK;AACvB,gBAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC5B,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;AACxB,gBAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;AAC7B,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;AACxB,gBAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;AAC7B,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;AAC1B,gBAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;AAC7B,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;QAMM,IAAyB,CAAA,yBAAA,GAAG,MAAK;AAEvC,YAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAC7C,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAC9D,CAAC;AAEF,YAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAC7C,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAC/D,CAAC;AACJ,SAAC,CAAC;QAQM,IAAgB,CAAA,gBAAA,GAAG,CACzB,aAAiC,EACjC,OAAmB,EACnB,IAAc,KACN;AACR,YAAA,MAAM,UAAU,GAAG,CAAC,KAAmB,KAAI;AACzC,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;AAChC,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,IAAI,IAAI,EAAE;wBACR,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACrC,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACrC,SAAC,CAAC;QAKM,IAAqB,CAAA,qBAAA,GAAG,MAAK;AAEnC,YAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CACxC,CAAC;AACJ,SAAC,CAAC;AAKF,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,IAAuD,KAAU;AACvE,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,SAAC,CAAC;AAOF,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,KAAsB;AAC/C,YAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,gBAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBACtC,UAAU,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3D,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,aAAa,GAAG,CAAU,KAAmB,KAAI;YACvD,IAAI;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;AACpC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACV,OAAO,KAAK,CAAC,IAAS,CAAC;AACxB,aAAA;AACH,SAAC,CAAC;QAMM,IAAuB,CAAA,uBAAA,GAAG,MAAK;YACrC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAmB,KAAI;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1C,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBAC/B,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;oBACtC,IACE,OAAO,KAAK,SAAS;AACrB,wBAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,WAAW,KAAK,UAAU,EAClE;wBACA,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;AAiDF,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,oBAA4B,KAAU;AACrD,YAAA,IAAI,CAAC,eAAe,CAClB,IAAI,CAAC,SAAS,CAAC;AACb,gBAAA,SAAS,EAAE,mBAAmB;AAC9B,gBAAA,YAAY,EAAE,oBAAoB;AACnC,aAAA,CAAC,CACH,CAAC;AACJ,SAAC,CAAC;AA6CF,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,GAAW,KAAI;AAChC,YAAA,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,SAAS;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,YAAY;AACf,gBAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,YAAA,MAAM,QAAQ,GAAG,CAAC,MAAW,KAAI;AAC/B,gBAAA,IAAI,OAAQ,UAAkB,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE;AAC1D,oBAAA,UAAkB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3C,iBAAA;AACH,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC7C,SAAC,CAAC;AAqCF,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,GAAW,KAAI;AAC9B,YAAA,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEpD,YAAA,IAAI,CAAC,SAAS;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,YAAY;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAE3E,YAAA,MAAM,QAAQ,GAAG,CAAC,MAAW,KAAI;AAC/B,gBAAA,IAAI,OAAQ,UAAkB,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE;AAC1D,oBAAA,UAAkB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3C,iBAAA;AACH,aAAC,CAAC;YACF,IAAI;AACF,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC1C,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjB,aAAA;AACH,SAAC,CAAC;QAkDK,IAAO,CAAA,OAAA,GAAG,CACf,MAAc,EACd,IAAQ,oDACO,OAAA,MAAM,IAAI,CAAC,mBAAmB,CAAI,MAAM,EAAE,IAAI,CAAC,CAAA,GAAA,CAAC;AAQzD,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAC5B,MAAc,EACd,IAAU,KAEV,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,IAAI,KAAI;AAC/B,YAAA,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;AAClB,YAAA,MAAM,uBAAuB,GAAG,CAAC,KAAmB,KAAI;gBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAsB,KAAK,CAAC,CAAC;AAC9D,gBAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;oBAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE;wBAChD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;AACjD,wBAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1D,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;AAncH,QAAA,IAAI,CAAA,CAAA,EAAA,GAAC,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,MAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,+BAA+B,aAAY,YAAY,EAAE;AACxF,YAAA,OAAO,CAAA,EAAA,GAAC,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,MAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,+BAA+B,CAAA;AACpE,SAAA;AACD,QAAA,IAAI,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,MAAM,EAAE;AACrB,YAAA,UAAU,CAAC,MAAc,CAAC,+BAA+B,GAAG,IAAI,CAAC;YAClE,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,SAAA;AACF,KAAA;AA8MO,IAAA,6BAA6B,GAAA;QACnC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAO,KAAmB,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAqB,KAAK,CAAC,CAAC;AAC9D,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC/B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;gBAC9C,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,oBAAA,IAAI,MAAM,EAAE;wBACV,IAAI,MAAM,GAAQ,IAAI,CAAC;wBACvB,IAAI,KAAK,GAAQ,IAAI,CAAC;wBACtB,IAAI,OAAO,GAAoB,IAAI,CAAC;wBACpC,IACE,OAAO,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAK,UAAU,EAC9D;AAEA,4BAAA,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACpD,yBAAA;6BAAM,IAAI,UAAU,IAAIC,YAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;AAEvD,4BAAA,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9B,yBAAA;AACD,wBAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;4BACjC,IAAI;AACF,gCAAA,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,6BAAA;AAAC,4BAAA,OAAO,CAAC,EAAE;AACV,gCAAA,KAAK,GAAI,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC;AACnC,6BAAA;AACF,yBAAA;AAAM,6BAAA;4BACL,KAAK,GAAG,yBAAyB,CAAC;AACnC,yBAAA;AACD,wBAAA,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,SAAS,CAAC;4BACb,EAAE;4BACF,MAAM;4BACN,MAAM;4BACN,KAAK;AACL,4BAAA,OAAO,EAAE,UAAU;AACG,yBAAA,CAAC,CAC1B,CAAC;AACH,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAA,CAAC,CAAC;AACJ,KAAA;AAgBO,IAAA,gBAAgB,CAAC,SAAiB,EAAE,QAAkB,EAAA;AAC5D,QAAA,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1B,YAAA,EAAE,EAAE,KAAK;YACT,SAAS;AACT,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,IAAI,EAAE,iBAAiB;AACL,SAAA,CAAC,CAAC;QACtB,IAAI,KAAK,GAAkB,IAAI,CAAC;AAChC,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAmB,KAAI;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAmB,KAAK,CAAC,CAAC;AAC5D,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC/B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;AAChD,gBAAA,IAAI,OAAO,KAAK,kBAAkB,IAAI,EAAE,KAAK,KAAK,EAAE;oBAClD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,oBAAA,IAAI,KAAK;wBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;AAC/B,oBAAA,IAAI,MAAM,EAAE;AACV,wBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACrB,QAAQ,CAAC,CAAC,CAAC,CAAC;AACb,qBAAA;AAAM,yBAAA;wBACL,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClB,qBAAA;AACF,iBAAA;AACF,aAAA;AACH,SAAC,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhB,QAAA,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,MAAK;AACjC,YAAA,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACxC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACb,EAAE,KAAK,CAAC,CAAC;AACX,KAAA;AAwBO,IAAA,cAAc,CAAC,SAAiB,EAAE,EAAY,EAAA;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1B,YAAA,EAAE,EAAE,KAAK;YACT,SAAS;AACT,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,IAAI,EAAE,eAAe;AACH,SAAA,CAAC,CAAC;AACtB,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAmB,KAAI;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAmB,KAAK,CAAC,CAAC;AAC5D,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC/B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;AAChD,gBAAA,IAAI,OAAO,KAAK,kBAAkB,IAAI,EAAE,KAAK,KAAK,EAAE;AAClD,oBAAA,IAAI,MAAM,EAAE;AACV,wBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACrB,EAAE,CAAC,KAAK,CAAC,CAAC;AACX,qBAAA;AAAM,yBAAA;wBACL,EAAE,CAAC,MAAM,CAAC,CAAC;AACZ,qBAAA;AACF,iBAAA;AACF,aAAA;AACH,SAAC,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,KAAA;AA+BK,IAAA,MAAM,CAAO,MAAc,EAAE,IAAO,EAAA;;AACxC,YAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,KAAI;AACnC,gBAAA,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;AACrB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1B,oBAAA,EAAE,EAAE,KAAK;oBACT,MAAM;oBACN,IAAI;AACJ,oBAAA,OAAO,EAAE,SAAS;AACnB,iBAAA,CAAC,CAAC;gBACH,IAAI,KAAK,GAAkB,IAAI,CAAC;AAChC,gBAAA,MAAM,QAAQ,GAAG,CAAC,KAAmB,KAAI;oBACvC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAsB,KAAK,CAAC,CAAC;AAC/D,oBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;wBAC/B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;wBAC/C,IACE,OAAO,KAAK,UAAU;AACtB,4BAAA,EAAE,KAAK,KAAK;AACZ,4BAAA,OAAO,CAAC,MAAM,KAAK,MAAM,EACzB;4BACA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,4BAAA,IAAI,KAAK;gCAAE,YAAY,CAAC,KAAK,CAAC,CAAC;AAC/B,4BAAA,IAAI,KAAK,EAAE;gCACT,IAAI,CAAC,KAAK,CAAC,CAAC;AACb,6BAAA;AAAM,iCAAA;gCACL,OAAO,CAAC,MAAW,CAAC,CAAC;AACtB,6BAAA;AACF,yBAAA;AACF,qBAAA;AACH,iBAAC,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACjC,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhB,gBAAA,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,EAAE,KAAK,CAAC,CAAC;AACjE,aAAC,CAAC,CAAC;AACJ,SAAA,CAAA,CAAA;AAAA,KAAA;AAqCF,CAAA;;AC7eK,MAAO,uBAAwB,SAAQ,cAAc,CAAA;AAA3D,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,aAAa,GAAiB,IAAI,YAAY,EAAE,CAAC;AAEzD,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AA0LtB,KAAA;AAxLC,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;AAC1B,KAAA;AAEO,IAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK,EAAA;QACtC,IAAI,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC;AAE5B,QAAA,OAAO,IAAI,OAAO,CAAU,CAAO,OAAO,EAAE,MAAM,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;YACpD,IAAI,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,IAAI,CAAC,YAAY,EAAE;gBAErB,MAAM,KAAK,GAAG,MAAK;oBACjB,IAAI,IAAI,CAAC,KAAK;AAAE,wBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;oBACrC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC/B,iBAAC,CAAC;AACF,gBAAA,KAAK,EAAE,CAAC;AACT,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,gBAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAElE,gBAAA,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE;AACjB,oBAAA,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACjD,iBAAA;AACD,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAC9B,mBAAmB,CACjB,oBAAoB,EACpB,CAAC,IAAyB,KAAI;AAC5B,oBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,MAAK;wBACtB,IAAI;AACF,4BAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAc,CAAe,CAAC;AACjD,yBAAA;AAAC,wBAAA,OAAO,CAAC,EAAE;AACV,4BAAA,OAAO,IAAkB,CAAC;AAC3B,yBAAA;AACF,qBAAA,GAAG,CAAC;AACN,iBAAA,CACF,CACF,CAAC;AACF,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACtB,aAAA;AACF,SAAA,CAAA,CAAC,CAAC;AACJ,KAAA;AAEK,IAAA,UAAU,CAAC,OAAO,GAAG,KAAK,EAAA;;AAC9B,YAAA,MAAM,GAAG,GAAgC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEtD,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACd,gBAAA,OAAO,GAAG,CAAC;AACZ,aAAA;YAED,IAAI;gBACF,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC/C,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACd,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACf,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAc,CAAC;AACzB,aAAA;AAED,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACrC,KAAA;AAED,IAAA,IAAI,MAAM,GAAA;;QACR,OAAO,CAAA,MAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,EAAE,CAAC;AACtC,KAAA;AAED,IAAA,gBAAgB,CAAC,SAAiB,EAAA;QAChC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AACxC,KAAA;AAEK,IAAA,eAAe,CAAI,MAAc,EAAA;;AACrC,YAAA,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAkC,CAAC;YAC3D,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAEpD,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACf,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAEpB,gBAAA,OAAO,GAAG,CAAC;AACZ,aAAA;AAED,YAAA,OAAO,MAAM,IAAI,OAAO,CAAgC,CAAO,OAAO,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;gBACxE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEhD,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;oBACzB,SAAS;AACT,oBAAA,YAAY,EAAE,mBAAmB,CAC/B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAC7B,CAAC,IAAY,KAAI;wBACf,IAAI,CAAC,GAAQ,IAAI,CAAC;wBAClB,IAAI;AACF,4BAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtB,yBAAA;AAAC,wBAAA,OAAO,CAAC,EAAE;AAEX,yBAAA;AACD,wBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAK;4BACb,IAAI,CAAC,KAAK,CAAC;AAAE,gCAAA,OAAO,IAAI,CAAC;4BACzB,IAAI,CAAC,KAAK,CAAC;AAAE,gCAAA,OAAO,KAAK,CAAC;AAC1B,4BAAA,OAAO,CAAC,CAAC;AACV,yBAAA,GAAQ,CAAC;wBAEV,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,qBAAC,CACF;AACF,iBAAA,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AACzC,aAAA,CAAA,CAAC,CAAC;AACJ,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,aAAa,CAAI,MAAc,EAAE,QAA2B,EAAA;;AAChE,YAAA,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAA6C,CAAC;YACtE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAEpD,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACf,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAEpB,gBAAA,OAAO,GAAG,CAAC;AACZ,aAAA;AAED,YAAA,OAAO,MAAM,IAAI,OAAO,CACtB,CAAO,OAAO,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;gBAChB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAChD,gBAAA,MAAM,SAAS,GAAG,CAAC,IAAY,KAAI;oBACjC,IAAI,CAAC,GAAQ,IAAI,CAAC;oBAClB,IAAI;AACF,wBAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtB,qBAAA;AAAC,oBAAA,OAAO,CAAC,EAAE;AAEX,qBAAA;AAED,oBAAA,MAAM,aAAa,GAAG,CAAC,MAAK;wBAC1B,IAAI,CAAC,KAAK,CAAC;AAAE,4BAAA,OAAO,IAAI,CAAC;wBACzB,IAAI,CAAC,KAAK,CAAC;AAAE,4BAAA,OAAO,KAAK,CAAC;AAC1B,wBAAA,OAAO,CAAC,CAAC;AACV,qBAAA,GAAQ,CAAC;oBAEV,QAAQ,CAAC,aAAa,CAAC,CAAC;AACxB,oBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,MAAK;AAEZ,wBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AACnC,wBAAA,IAAI,CAAC,SAAS;4BAAE,OAAO;AAEvB,wBAAA,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CACnC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,SAAS,CACtC,CAAC;AACF,wBAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;4BACd,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChC,yBAAA;AACH,qBAAC,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,iBAAC,CAAC;AAEF,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;oBACzB,SAAS;oBACT,YAAY,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;AAC/D,iBAAA,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACvC,aAAA,CAAA,CACF,CAAC;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,MAAM,CAAO,MAAc,EAAE,IAAQ,EAAA;;;YAEzC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAEpD,IAAI,CAAC,KAAK,EAAE;AAIV,gBAAA,MAAM,UAAU,CAAC;AAClB,aAAA;AAAM,iBAAA;AACL,gBAAA,QAAQ,OAAM,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,EAAC,MAAM,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,MAAM,EAAE,IAAI,CAAC,CAAA,EAAO;AAC/D,aAAA;;AACF,KAAA;AACF,CAAA;;ACnMD,IAAY,eA+BX,CAAA;AA/BD,CAAA,UAAY,eAAe,EAAA;AAIzB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,QAAkB,CAAA;AAIlB,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AAMvB,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AAOvB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AAInB,IAAA,eAAA,CAAA,iBAAA,CAAA,GAAA,sBAAwC,CAAA;AAKxC,IAAA,eAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC7B,CAAC,EA/BW,eAAe,KAAf,eAAe,GA+B1B,EAAA,CAAA,CAAA,CAAA;;ACrBK,MAAgB,YAAa,SAAQ,SAA0B,CAAA;AAArE,IAAA,WAAA,GAAA;;AACE,QAAA,IAAA,CAAA,WAAW,GAAoB,eAAe,CAAC,WAAW,CAAA;AA4B3D,KAAA;AAAA,CAAA;;AC1CD,MAAMC,WAAS,GAAG,UAAU,CAAC,SAAS,CAAC,SAAS,CAAA;AAEzC,MAAMC,WAAS,GAAG,WAAW,CAAC,IAAI,CAACD,WAAS,CAAC,CAAA;AAE7C,MAAME,OAAK,GAAG,oBAAoB,CAAC,IAAI,CAACF,WAAS,CAAC,CAAA;AAElD,MAAMG,iBAAe,GAAG,kBAAkB,CAAC,IAAI,CAACH,WAAS,CAAC,IAAI,eAAe,CAAC,IAAI,CAACA,WAAS,CAAC,CAAA;AAE7F,MAAMI,oBAAkB,GAAG,WAAW,CAAC,IAAI,CAACJ,WAAS,CAAC,CAAA;;ACI7D,MAAMK,gBAAc,GAA6B;AAC/C,IAAA,OAAO,EAAE,IAAI;CACd,CAAA;AAKK,MAAO,WAAY,SAAQ,YAAY,CAAA;AAO3C,IAAA,WAAA,CAAY,OAAoC,GAAA,EAAE,EAAA;AAChD,QAAA,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAACA,gBAAc,EAAE,OAAO,CAAC,CAAA;QAErD,IAAI,CAACD,oBAAkB,EAAE;AACvB,YAAA,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;AAC1D,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,MAAK;AACvB,YAAA,IAAIH,WAAS;gBAAE,OAAO,eAAe,CAAC,OAAO,CAAA;AAC7C,YAAA,IAAIC,OAAK;gBAAE,OAAO,eAAe,CAAC,SAAS,CAAA;YAC3C,OAAO,eAAe,CAAC,OAAO,CAAA;AAC/B,SAAA,GAAG,CAAA;AAEJ,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,MAAK;AACvB,YAAA,IAAID,WAAS;gBAAE,OAAO,IAAI,iBAAiB,EAAE,CAAA;AAC7C,YAAA,IAAIC,OAAK;gBAAE,OAAO,IAAI,mBAAmB,EAAE,CAAA;YAC3C,OAAO,IAAI,cAAc,EAAE,CAAA;AAC5B,SAAA,GAAG,CAAA;AAEJ,QAAA,IAAI,CAAC,aAAa,CAAe,qBAAqB,EAAE,CAAC,YAA0B,KAAI;AACrF,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAA;AAC/C,SAAC,CAAC,CAAA;AACF,QAAA,IAAI,CAAC,aAAa,CAAmB,qBAAqB,EAAE,CAAC,SAA2B,KAAI;AAC1F,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAC/B,SAAC,CAAC,CAAA;AACH,KAAA;AAEK,IAAA,KAAK,GAAA;;AACT,YAAA,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAC/D,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,eAAe,CAAI,SAAiB,EAAA;;YACxC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAI,SAAS,CAAC,CAAA;AAC5D,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,aAAa,CAAI,SAAiB,EAAE,QAA2B,EAAA;;;AACnE,YAAA,OAAO,OAAM,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAI,SAAS,EAAE,QAAQ,CAAC,CAAA,CAAA;;AACrE,KAAA;AAEK,IAAA,oBAAoB,CAAC,MAAgB,EAAA;;AACzC,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,OAAO,EAAE;AAChD,gBAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAgC,CAAA;AACnD,aAAA;AAED,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,mCAAA,EAAsC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAA;AACnG,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,cAAc,GAAA;;AAClB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAS,uBAAuB,CAAC,CAAA;AACnE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAA;;AACtB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAyB,sBAAA,EAAA,QAAQ,CAAE,CAAA,CAAC,CAAA;AAChF,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,QAAQ,GAAA;;AACZ,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,eAAA,CAAiB,CAAC,CAAA;AAC9D,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,YAAY,CAAC,QAAgB,EAAA;;AACjC,YAAA,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAA;AAC7D,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAgC,6BAAA,EAAA,QAAQ,CAAE,CAAA,CAAC,CAAA;AACvF,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,YAAY,GAAA;;AAChB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,mBAAA,CAAqB,CAAC,CAAA;AAClE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,cAAc,CAAC,WAA4B,EAAA;;AAC/C,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAqC,kCAAA,EAAA,WAAW,CAAE,CAAA,CAAC,CAAA;AAC/F,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,eAAe,CAAC,MAAe,EAAA;;AACnC,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,8BAAA,EAAiC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAA;AAC9F,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,YAAY,GAAA;;AAChB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,mBAAA,CAAqB,CAAC,CAAA;AAClE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,WAAW,CAAC,GAAW,EAAE,GAAoB,EAAA;;AACjD,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAA0B,uBAAA,EAAA,GAAG,CAAQ,KAAA,EAAA,kBAAkB,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAA;AAC3G,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,eAAe,CAAC,MAAc,EAAA;;AAClC,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAiC,8BAAA,EAAA,MAAM,CAAE,CAAA,CAAC,CAAA;AACtF,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,WAAW,CAAC,WAAiC,EAAA;;AACjD,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAA2B,wBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA,CAAE,CAAC,CAAA;AACrG,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,aAAa,GAAA;;AACjB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAa,CAAA,oBAAA,CAAsB,CAAC,CAAA;AACtE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,WAAW,GAAA;;AACf,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAW,CAAA,kBAAA,CAAoB,CAAC,CAAA;AAClE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,eAAe,GAAA;;AACnB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAe,CAAA,sBAAA,CAAwB,CAAC,CAAA;AAC1E,SAAA,CAAA,CAAA;AAAA,KAAA;AACK,IAAA,KAAK,GAAA;;YACT,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAW,CAAc,YAAA,CAAA,CAAC,CAAA;AAEhE,YAAA,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACV,gBAAA,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;AAChC,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;AACX,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,MAAM,GAAA;;AACV,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,aAAA,CAAe,CAAC,CAAA;AAC5D,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,WAAW,GAAA;;AACf,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,kBAAA,CAAoB,CAAC,CAAA;AACjE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,OAAO,CAAC,IAAc,EAAA;;AAC1B,YAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AACtB,gBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBACxB,OAAO,QAAQ,GAAG,GAAG,CAAA;AACtB,iBAAA;AAED,gBAAA,OAAO,GAAG,CAAA;AACZ,aAAC,CAAC,CAAA;AACF,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAuB,oBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,CAAA;AAC1F,SAAA,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,mBAAmB,CAAC,IAAuB,EAAA;AACzC,QAAA,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;AAC1C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAA;AAG5C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,CAAC,GAAW,KAAI;AACjC,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,SAAS,EAAE;AAClD,gBAAA,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;AAC1E,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,OAAO,EAAE;AACvD,gBAAA,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,qBAAqB,CAAA;AAC3E,aAAA;AACD,YAAA,OAAO,GAAG,CAAA;AACZ,SAAC,CAAA;AAED,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAC5B,KAAA;AACF,CAAA;;ACpLD,IAAY,eAaX,CAAA;AAbD,CAAA,UAAY,eAAe,EAAA;AAIzB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AAIjB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AAInB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EAbW,eAAe,KAAf,eAAe,GAa1B,EAAA,CAAA,CAAA,CAAA;;ACDK,MAAO,eAAgB,SAAQ,YAAY,CAAA;AAAjD,IAAA,WAAA,GAAA;;AACE,QAAA,IAAA,CAAA,WAAW,GAAoB,eAAe,CAAC,OAAO,CAAA;AA+FvD,KAAA;AA7FC,IAAA,KAAK,GAAA;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AACrC,KAAA;AACD,IAAA,eAAe,CAAI,SAAiB,EAAA;QAClC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,aAAa,CAAI,SAAiB,EAAE,QAA2B,EAAA;AAC7D,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;AAC7C,KAAA;AACD,IAAA,YAAY,CAAC,QAAgB,EAAA;QAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AACrC,KAAA;AACD,IAAA,YAAY,GAAA;QACV,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AACrC,KAAA;AACD,IAAA,aAAa,GAAA;QACX,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,eAAe,GAAA;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,oBAAoB,CAAC,MAAe,EAAA;QAClC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,KAAK,GAAA;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,MAAM,GAAA;QACJ,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,WAAW,GAAA;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,WAAW,CAAC,GAAW,EAAE,GAAoB,EAAA;AAC3C,QAAA,QAAQ,GAAG;YACT,KAAK,eAAe,CAAC,OAAO,CAAC;AAC7B,YAAA,KAAK,eAAe,CAAC,MAAM,EAAE;AAC3B,gBAAA,UAAU,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;gBACvD,MAAK;AACN,aAAA;YACD,KAAK,eAAe,CAAC,MAAM,CAAC;AAC5B,YAAA,SAAS;AACP,gBAAA,UAAU,CAAC,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;gBACvD,MAAK;AACN,aAAA;AACF,SAAA;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AACrC,KAAA;AACD,IAAA,YAAY,GAAA;QACV,UAAU,CAAC,KAAK,EAAE,CAAA;QAClB,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AACrC,KAAA;AACD,IAAA,cAAc,GAAA;QACZ,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;AAClC,KAAA;AACD,IAAA,cAAc,CAAC,WAA4B,EAAA;QACzC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,eAAe,CAAC,MAAe,EAAA;QAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,KAAK,CAAC,QAAiB,EAAA;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,QAAQ,GAAA;QACN,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,eAAe,CAAC,MAAc,EAAA;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,OAAO,CAA8B,CAAC,OAAO,KAAI;YAC1D,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;YAC1C,IAAI;gBACF,UAAU,CAAC,SAAS,CAAC,YAAY;qBAC9B,YAAY,CAAC,IAAI,CAAC;AAClB,qBAAA,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACjC,qBAAA,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AACrC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAChB,gBAAA,OAAO,CAAC,CAAC,KAAK,EAAE,CAAU,CAAC,CAAC,CAAA;AAC7B,aAAA;AACH,SAAC,CAAC,CAAA;AACH,KAAA;AACD,IAAA,WAAW,CAAC,WAAiC,EAAA;QAC3C,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,OAAO,CAAC,IAAc,EAAA;QACpB,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,mBAAmB,CAAC,IAAuB,EAAA;AACzC,QAAA,OAAO,EAAE,CAAA;AACV,KAAA;AACF,CAAA;;AC5FD,MAAM,cAAc,GAA6B;AAC/C,IAAA,OAAO,EAAE,KAAK;CACf,CAAC;AAKI,MAAO,mBAAoB,SAAQ,YAAY,CAAA;AAKnD,IAAA,WAAA,CAAY,OAAoC,GAAA,EAAE,EAAA;AAChD,QAAA,KAAK,EAAE,CAAC;AAJV,QAAA,IAAA,CAAA,WAAW,GAA4B,IAAI,uBAAuB,EAAE,CAAC;QAMnE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,CAACC,iBAAe,EAAE;AACpB,YAAA,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;AAC3D,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,eAAe,CAAC;AAEnD,QAAA,IAAI,CAAC,aAAa,CAChB,qBAAqB,EACrB,CAAC,YAA0B,KAAI;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;AAChD,SAAC,CACF,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAChB,qBAAqB,EACrB,CAAC,SAA2B,KAAI;AAC9B,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAChC,SAAC,CACF,CAAC;AACH,KAAA;AAEK,IAAA,KAAK,GAAA;;AACT,YAAA,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAChE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,eAAe,CAAI,SAAiB,EAAA;;YACxC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAI,SAAS,CAAC,CAAC;AAC7D,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,aAAa,CAAI,SAAiB,EAAE,QAA2B,EAAA;;YACnE,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,oBAAoB,CAAC,MAAgB,EAAA;;AACzC,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,OAAO,EAAE;AAChD,gBAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAgC,CAAC;AACpD,aAAA;AAED,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAC/B,CAAA,mCAAA,EAAsC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE,CACvD,CAAC;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,cAAc,GAAA;;AAClB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAS,uBAAuB,CAAC,CAAC;AACpE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAA;;AACtB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAC/B,CAAyB,sBAAA,EAAA,QAAQ,CAAE,CAAA,CACpC,CAAC;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,QAAQ,GAAA;;AACZ,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,eAAA,CAAiB,CAAC,CAAC;AAC/D,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,YAAY,CAAC,QAAgB,EAAA;;AACjC,YAAA,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC;AAC9D,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAC/B,CAAgC,6BAAA,EAAA,QAAQ,CAAE,CAAA,CAC3C,CAAC;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,YAAY,GAAA;;AAChB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,mBAAA,CAAqB,CAAC,CAAC;AACnE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,cAAc,CAAC,WAA4B,EAAA;;AAC/C,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAC/B,CAAqC,kCAAA,EAAA,WAAW,CAAE,CAAA,CACnD,CAAC;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,eAAe,CAAC,MAAe,EAAA;;AACnC,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAC/B,CAAA,8BAAA,EAAiC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE,CAClD,CAAC;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,YAAY,GAAA;;AAChB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,mBAAA,CAAqB,CAAC,CAAC;AACnE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,WAAW,CAAC,GAAW,EAAE,GAAoB,EAAA;;AACjD,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAC/B,CAA0B,uBAAA,EAAA,GAAG,CAAQ,KAAA,EAAA,kBAAkB,CAAC,GAAG,CAAC,CAAA,CAAE,CAC/D,CAAC;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,eAAe,CAAC,MAAc,EAAA;;AAClC,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAC/B,CAAiC,8BAAA,EAAA,MAAM,CAAE,CAAA,CAC1C,CAAC;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,WAAW,CAAC,WAAiC,EAAA;;;AACjD,YAAA,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,MAAA,WAAW,CAAC,WAAW,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,EAAE,IAAI;gBACvC,KAAK,EAAE,MAAA,WAAW,CAAC,WAAW,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,EAAE,KAAK;gBACzC,QAAQ,EAAE,MAAA,WAAW,CAAC,WAAW,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,EAAE,WAAW;aACnD,CAAC;AACF,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAC/B,CAA2B,wBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CACpD,CAAC;;AACH,KAAA;AAEK,IAAA,aAAa,GAAA;;AACjB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAa,CAAA,oBAAA,CAAsB,CAAC,CAAC;AACvE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,WAAW,GAAA;;AACf,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAW,CAAA,kBAAA,CAAoB,CAAC,CAAC;AACnE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,eAAe,GAAA;;AACnB,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAe,CAAA,sBAAA,CAAwB,CAAC,CAAC;AAC3E,SAAA,CAAA,CAAA;AAAA,KAAA;AACK,IAAA,KAAK,GAAA;;YACT,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAW,CAAc,YAAA,CAAA,CAAC,CAAC;AAEjE,YAAA,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACV,gBAAA,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACjC,aAAA;AAED,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,MAAM,GAAA;;AACV,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,aAAA,CAAe,CAAC,CAAC;AAC7D,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,WAAW,GAAA;;AACf,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAU,CAAA,kBAAA,CAAoB,CAAC,CAAC;AAClE,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,OAAO,CAAC,IAAc,EAAA;;AAC1B,YAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AACtB,gBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBACxB,OAAO,QAAQ,GAAG,GAAG,CAAC;AACvB,iBAAA;AAED,gBAAA,OAAO,GAAG,CAAC;AACb,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAC/B,CAAuB,oBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAC9C,CAAC;AACH,SAAA,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,mBAAmB,CAAC,IAAuB,EAAA;AACzC,QAAA,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;AAG7C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,CAAC,GAAW,KAAI;AACjC,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,SAAS,EAAE;AAClD,gBAAA,OAAO,GAAG;AACP,qBAAA,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AACtB,qBAAA,OAAO,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;AAC5C,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,CAAC,OAAO,EAAE;AACvD,gBAAA,QACE,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,qBAAqB,EACnE;AACH,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC7B,KAAA;AAEK,IAAA,eAAe,CAAO,MAAc,EAAE,IAAQ,EAAA;;YAClD,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAO,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1D,SAAA,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,OAAO,CAAC,MAAc,EAAE,IAAU,EAAA;;;AACtC,YAAA,OAAO,OAAM,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,MAAM,EAAE,IAAI,CAAC,CAAA,CAAC;;AACtE,KAAA;AACF,CAAA;;ACzMoB,MAAA,QAAS,SAAQ,YAAY,CAAA;AAChD,IAAA,WAAA,CAAY,OAAoC,GAAA,EAAE,EAAA;AAChD,QAAA,KAAK,EAAE,CAAA;AACP,QAAA,IAAIC,oBAAkB,KAAKH,WAAS,IAAIC,OAAK,CAAC;AAAE,YAAA,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;AAC/E,QAAA,IAAIC,iBAAe;AAAE,YAAA,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAC5D,OAAO,IAAI,eAAe,EAAE,CAAA;AAC7B,KAAA;AACF;;;;;;;;;;;;ACnBD;AACA;;;AAEA,IAAY,QAMX,CAAA;AAND,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,QAAA,CAAA,QAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACL,CAAC,EANW,QAAQ,GAAR,OAAQ,CAAA,QAAA,KAAR,OAMX,CAAA,QAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAED,OAAA,CAAA,OAAA,GAAe,QAAQ,CAAC;;;;;;SCXR,SAAS,CAAC,GAAW,EAAE,QAAyC,EAAE,EAAA;IAChF,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CACxC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,KACd,CAAA,EAAG,IAAI,CAAA,EAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG,GAAG,CAAG,EAAA,IAAI,CAAI,CAAA,EAAA,KAAK,CAAC,IAAI,CAAC,CAAE,CAAA,EACxE,EAAE,CAAC,CAAA;IAEL,OAAO,GAAG,GAAG,QAAQ,CAAA;AACvB;;ACRA,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,SAAS,CAAA;AAEzC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAE7C,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAElD,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAE7F,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;;ACR7D;;;;AAIG;AACH,SAAS,aAAa,CAAC,KAAU,EAAA;AAC/B,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC;AACrE,CAAC;AAED;;;;;AAKG;AACH,SAAS,WAAW,CAAC,KAAU,EAAE,KAAU,EAAA;IACzC,IAAI,KAAK,KAAK,KAAK;AAAE,QAAA,OAAO,IAAI,CAAC;AACjC,IAAA,IAAI,OAAO,KAAK,KAAK,OAAO,KAAK;AAAE,QAAA,OAAO,KAAK,CAAC;AAChD,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;AAC5D,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;AAKG;AACH,SAAS,eAAe,CAAC,KAAU,EAAE,KAAU,EAAA;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACrD,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK,CAAC;AAE1D,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACrD,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AAClE,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;AAKG;AACH,SAAS,iBAAiB,CAAC,KAAU,EAAE,KAAU,EAAA;AAC/C,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK,CAAC;AAChD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AACpD,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;AAKG;AACH,SAAS,cAAc,CAAC,KAAU,EAAE,KAAU,EAAA;AAC5C,IAAA,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;IAC3C,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC;AAC9C,QAAA,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACvC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9C,QAAA,OAAO,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzC,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;AAKG;AACH,SAAS,WAAW,CAAC,KAAU,EAAE,KAAU,EAAA;AACzC,IAAA,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;IAC3C,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC;AAC9C,QAAA,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9C,QAAA,OAAO,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACtC,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;AAKG;AACH,SAAS,cAAc,CAAC,KAAU,EAAE,KAAU,EAAA;AAC5C,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK,CAAC;AAChD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AACpD,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;AAKG;AACH,SAAS,YAAY,CAAC,KAAU,EAAE,KAAU,EAAA;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACrD,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK,CAAC;AAE1D,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACrD,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AAClE,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;AAMG;AACa,SAAA,KAAK,CAAC,KAAU,EAAE,KAAU,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAA;IACjE,IAAI,CAAC,GAAG,CAAC,IAAI;AAAE,QAAA,OAAO,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnD,IAAA,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnC;;AC3EA;;;;AAIG;AACG,MAAO,eAAgB,SAAQd,WAAkC,CAAA;AAwBrE,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,WAAA,CAAY,OAA2C,EAAA;;AAErD,QAAA,KAAK,EAAE,CAAC;AA1BF,QAAA,IAAA,CAAA,WAAW,GAAmB,cAAc,CAAC,cAAc,CAAC;AAC5D,QAAA,IAAA,CAAA,QAAQ,GAAkB;AAChC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,KAAI;gBAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;oBAAE,OAAO;AACvD,gBAAA,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;aACtC;AACD,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,wBAAwB,EAAE,KAAK;AAC/B,YAAA,aAAa,EAAE,KAAK;SACrB,CAAC;QAEM,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;QACd,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC,CAAC;QACjB,IAAyB,CAAA,yBAAA,GAAG,KAAK,CAAC;QAClC,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAE1B,IAA2B,CAAA,2BAAA,GAAG,KAAK,CAAC;AAsC5C;;AAEG;QACK,IAAY,CAAA,YAAA,GAAG,MAAWC,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;YAChC,IACE,IAAI,CAAC,cAAc;gBACnB,IAAI,CAAC,cAAc,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,EACnD;gBACA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,UAA4B,CAAC;;AAEpE,gBAAA,IAAI,IAAI,CAAC,WAAW,KAAK,cAAc,CAAC,OAAO,EAAE;AAC/C,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACtB,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnE,SAAC,CAAA,CAAC;AAEF;;AAEG;QACK,IAAsB,CAAA,sBAAA,GAAG,MAAK;YACpC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACnC,aAAA;AACH,SAAC,CAAC;AAEF;;AAEG;QACK,IAAiB,CAAA,iBAAA,GAAG,MAAK;YAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnE,SAAC,CAAC;AAEF;;AAEG;QACK,IAAgB,CAAA,gBAAA,GAAG,MAAK;YAC9B,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAChC,SAAC,CAAC;AAEF;;AAEG;QACK,IAA8B,CAAA,8BAAA,GAAG,MAAK;YAC5C,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACpC,aAAA;AACH,SAAC,CAAC;AAEF;;;AAGG;AACK,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,KAAY,KAAI;YACjC,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAmB,CAAC,CAAC;AACtC,aAAA;AACH,SAAC,CAAC;AAEF;;AAEG;QACK,IAAQ,CAAA,QAAA,GAAG,MAAK;;AACtB,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC9C,SAAC,CAAC;AAEF;;AAEG;QACK,IAAyB,CAAA,yBAAA,GAAG,MAAK;YACvC,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACpC,gBAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACxD,gBAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;AAC1C,aAAA;AACH,SAAC,CAAC;AAEF;;AAEG;QACK,IAAyB,CAAA,yBAAA,GAAG,MAAK;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;AACrC,gBAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,gBAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AACzC,aAAA;AACH,SAAC,CAAC;AAEF;;;;AAIG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,CACL,IAAmD,KAC/B;;AACpB,YAAA,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,OAAK,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAA,EAAE;gBACjE,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,aAAA;AACH,SAAC,CAAC;AAEF;;;;;AAKG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,IAAsB,EAAE,MAAe,KAAsB;;AACpE,YAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC5B,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,GAAG,IAAI,CAAC;AACb,aAAA;YACD,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAEjC,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,SAAC,CAAC;AAEF;;AAEG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,GAAY,KAAU;;AAC5B,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACjB,aAAA;YACD,IACE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,0CAAE,UAAU,MAAK,SAAS,CAAC,IAAI;gBAClD,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAK,SAAS,CAAC,UAAU,EACxD;gBACA,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,gBAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;AACvC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;gBAE/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,aAAA;AACH,SAAC,CAAC;AAEF;;AAEG;QACK,IAAgB,CAAA,gBAAA,GAAG,MAAK;;YAC9B,MAAM,MAAM,GACV,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAG,IAAI,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;AACpB,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;YAE1E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CACP,YAAY,EACZ,IAAI,WAAW,CAAC,YAAY,EAAE;AAC5B,gBAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;AACnE,aAAA,CAAC,CACH,CAAC;YAEF,MAAM,eAAe,GAAG,MAAK;AAC3B,gBAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;gBACjC,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CACP,SAAS,EACT,IAAI,WAAW,CAAC,YAAY,EAAE;AAC5B,oBAAA,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI,CAAC,SAAS;wBACxB,UAAU,EAAE,IAAI,CAAC,WAAW;AAC7B,qBAAA;AACF,iBAAA,CAAC,CACH,CAAC;AACJ,aAAC,CAAC;AAEF,YAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,CAAC;YAE3E,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAE/B,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,wBAAwB,CAAA,EAAE;gBAC5C,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAClC,aAAA;AACH,SAAC,CAAC;AAEF;;AAEG;QACK,IAAqB,CAAA,qBAAA,GAAG,MAAK;;AACnC,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CACtC,MAAM,EACN,IAAI,CAAC,qBAAqB,CAC3B,CAAC;AACF,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CACtC,OAAO,EACP,IAAI,CAAC,sBAAsB,CAC5B,CAAC;AACF,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CACtC,OAAO,EACP,IAAI,CAAC,sBAAsB,CAC5B,CAAC;AACF,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CACtC,SAAS,EACT,IAAI,CAAC,wBAAwB,CAC9B,CAAC;AACJ,SAAC,CAAC;AAEF;;AAEG;QACK,IAAuB,CAAA,uBAAA,GAAG,MAAK;;AACrC,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC1E,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC5E,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC5E,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,gBAAgB,CACnC,SAAS,EACT,IAAI,CAAC,wBAAwB,CAC9B,CAAC;AACJ,SAAC,CAAC;AAEF;;;AAGG;AACK,QAAA,IAAA,CAAA,qBAAqB,GAAG,CAAC,KAAY,KAAI;YAC/C,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,gBAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAClC,aAAA;AACD,YAAA,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC;AACtC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;YACvC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,IAAI,CACd,MAAM,EACN,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,CAC3D,CAAC;AACJ,SAAC,CAAC;AAEF;;;;AAIG;AACK,QAAA,IAAA,CAAA,sBAAsB,GAAG,CAAC,KAAiB,KAAI;AACrD,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACnC,SAAC,CAAC;AAEF;;;;AAIG;AACK,QAAA,IAAA,CAAA,sBAAsB,GAAG,CAAC,KAAY,KAAI;YAChD,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,EACP,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACvD,CAAC;AACJ,SAAC,CAAC;AAEF;;;;AAIG;AACK,QAAA,IAAA,CAAA,wBAAwB,GAAG,CAAC,KAAmB,KAAI;YACzD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACrC,SAAC,CAAC;AA5SA,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC1B,SAAA;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAEM,IAAA,UAAU,CAAC,OAA0C,EAAA;AAC1D,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;AACpC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;AACvE,QAAA,IAAI,QAAO,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,CAAA,KAAK,QAAQ,EAAE;AACrC,YAAA,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;AACH,SAAA;AAED,QAAA,IAAI,QAAO,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,eAAe,CAAA,KAAK,UAAU,EAAE;AAC/C,YAAA,MAAM,IAAI,KAAK,CACb,oJAAoJ,CACrJ,CAAC;AACH,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;KACF;AAoRD;;;;AAIG;AACK,IAAA,UAAU,CAAC,KAAiB,EAAA;;AAClC,QAAA,IACE,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YAC3D,IAAI,CAAC,iBAAiB,EACtB;AACA,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAK,KAAK,EAAE;AAC3C,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,OAAO;AACR,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACnE,SAAA;KACF;AACF;;AC9YK,MAAO,cAAe,SAAQD,WAAiC,CAAA;IAcnE,IAAI,KAAK,CAAC,KAAgB,EAAA;AACxB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;KACjD;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;AAxBV;;AAEG;QACK,IAAG,CAAA,GAAA,GAAoB,IAAI,eAAe,CAAC;AACjD,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AACnC,SAAA,CAAC,CAAC;AAEH;;AAEG;AACK,QAAA,IAAA,CAAA,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC;AAiB1C;;AAEG;QACK,IAA2B,CAAA,2BAAA,GAAG,MAAK;YACzC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACnD,SAAC,CAAC;AAEF;;AAEG;QACK,IAA8B,CAAA,8BAAA,GAAG,MAAK;YAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACpD,SAAC,CAAC;AAEF;;;AAGG;AACK,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,KAAiB,KAAI;YAChDI,QAAM,CAAC,IAAI,CACT,CAAA,4BAAA,EAA+B,KAAK,CAAC,IAAI,IACvC,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAA,CAAE,CACH,CAAC;AACF,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC,SAAC,CAAC;AAEF;;AAEG;QACK,IAAmB,CAAA,mBAAA,GAAG,MAAK;;AACjC,YAAAA,QAAM,CAAC,IAAI,CAAC,CAA+B,6BAAA,CAAA,EAAE,MAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,CAAC;AAC5E,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC,SAAC,CAAC;AAEF;;;AAGG;QACK,IAAsB,CAAA,sBAAA,GAAG,MAAK;AACpC,YAAAA,QAAM,CAAC,IAAI,CAAC,CAAA,uBAAA,CAAyB,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;AACpC,SAAC,CAAC;AAEF;;;AAGG;AACK,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,KAAY,KAAI;AAC3C,YAAAA,QAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC,SAAC,CAAC;AAEF;;;AAGG;AACK,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,KAAmB,KAAI;;AAEpD,YAAA,IAAI,OAAO,GAAG,CAAC,MAAK;gBAClB,IAAI;oBACF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/B,iBAAA;AAAC,gBAAA,OAAO,CAAC,EAAE;oBACV,OAAO,KAAK,CAAC,IAAI,CAAC;AACnB,iBAAA;aACF,GAAc,CAAC;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAChC,SAAC,CAAC;AAEF;;;AAGG;AACK,QAAA,IAAA,CAAA,gBAAgB,GAAG,CACzB,KAAuD,KACrD;YACFA,QAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE;gBAC/B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACxC,aAAA;AACH,SAAC,CAAC;AAEF;;;AAGG;AACK,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAC5B,KAAuD,KACrD;YACFA,QAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC,SAAC,CAAC;AAEF;;;AAGG;QACH,IAAO,CAAA,OAAA,GAAG,MAAWH,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;YACnB,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACtC,YAAA,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AACrE,SAAC,CAAA,CAAC;AAEF;;;;AAIG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,GAAW,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE3C;;;;AAIG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,IAAkC,EAAE,MAA2B,KACtE,IAAI,OAAO,CAAU,CAAC,OAAO,KAAI;AAC/B,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;QAtIH,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;AAuID;;;AAGG;IACH,WAAW,CAAC,OAAY,EAAE,EAAA;QACxB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;AACtD,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC3C,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACvD,SAAA;KACF;AACF;;ACxJD,MAAM,yBAAyB,GAAiB,CAAC,MAAM,KACrD,OAAO,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;AAUtD,MAAM,aAAa,GAAG,CACpB,OAAgB,EAChB,IAAA,GAA4B,EAAE,EAC9B,SAA+B,GAAA,EAAE,MACjB;IAChB,OAAO;IACP,gBAAgB,EAAEE,MAAI,EAAE;IACxB,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACC,IAAI,CACP,EAAA,EAAA,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,CAAC,SAAS,CAAC,EAChE,CAAA;AACF,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAAG,MAAK;;AAC3C,IAAA,IAAK,MAAc,KAAd,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAU,gBAAgB,EAAE;QACrC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAC,MAAc,KAAA,IAAA,IAAd,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAU,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAI,CAAC;AAC9C,QAAA,MAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACzC,KAAA;AACH,CAAC,CAAC;AAEI,MAAO,IAEX,SAAQH,WAAuC,CAAA;AAM/C,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC/B;AAED;;;AAGG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC/B;AAED;;;AAGG;AACH,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;KACzB;AAED;;AAEG;AACH,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAI,CAAC;KAC3B;AAED;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAS,CAAC;KAChC;AAcD;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;KACpC;AAoCD;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;KACnC;AAED;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC;KACzC;AAED;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;KACnC;AAOD,IAAA,WAAA,CAAY,IAAiB,EAAA;;AAC3B,QAAA,KAAK,EAAE,CAAC;AA9HV;;AAEG;QACK,IAAQ,CAAA,QAAA,GAAgB,EAAE,CAAC;AA2CnC;;AAEG;AACH,QAAA,IAAA,CAAA,SAAS,GAAgD,IAAIA,WAAS,EAAE,CAAC;AAEzE;;AAEG;AACK,QAAA,IAAA,CAAA,YAAY,GAAuC;AACzD,YAAA,SAAS,EAAE,EAAE;SACd,CAAC;AASF;;;;AAIG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,CACf,GAAQ,KACwC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAErE;;;;;AAKG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,CACb,GAAQ,EACR,KAA6B,KACV;AACnB,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI;AAAE,gBAAA,OAAO,KAAK,CAAC;AAChD,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACtB,IAAI,CAAC,YAAY,CAAC,SAAS,KAC9B,CAAC,GAAG,GAAG,KAAK,GACb,CAAC;AACF,YAAA,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnE,IAAI;AACF,gBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACtC,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACV,gBAAAI,QAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChB,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACH,SAAC,CAAC;AAuBF;;AAEG;AACK,QAAA,IAAA,CAAA,WAAW,GAAmB,IAAI,cAAc,EAAE,CAAC;AAoH3D;;AAEG;QACK,IAAgC,CAAA,gCAAA,GAAG,MAAK;YAC9C,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACtD,SAAC,CAAC;AAEF;;AAEG;QACK,IAAmC,CAAA,mCAAA,GAAG,MAAK;YACjD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACvD,SAAC,CAAC;AAEF;;;;AAIG;AACK,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,KAAgB,EAAE,SAAoB,KAClE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAE7C;;;AAGG;AACK,QAAA,IAAA,CAAA,cAAc,GAAG,CAAO,OAAgB,KAAIH,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;AAClD,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,gBAAA,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;gBACtE,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,oBAAA,QAAQ,OAAO;AACb;;AAEG;AACH,wBAAA,KAAK,OAAO,CAAC,YAAY,EAAE;4BACzB,MAAM,QAAQ,GAAG,IAAgB,CAAC;AAClC,4BAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;AACnD,gCAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACtC,gCAAA,IAAI,CAAC,IAAI,CACP,gBAAgB,EAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAC1B,cAAc,CACf,CAAC;AACH,6BAAA;4BACD,MAAM;AACP,yBAAA;AAED;;AAEG;AACH,wBAAA,KAAK,OAAO,CAAC,QAAQ,EAAE;4BACrB,MAAM,QAAQ,GAAG,IAAgB,CAAC;AAClC,4BAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzD,4BAAA,IAAI,CAAC,IAAI,CACP,mBAAmB,GAClB,QAAQ,CAAC,UAAU,IAAI,EAAE,EAC3B,CAAC;4BACF,MAAM;AACP,yBAAA;AAED;;AAEG;AACH,wBAAA,KAAK,OAAO,CAAC,OAAO,EAAE;4BACpB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAGnC,CAAC;4BACF,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4BAC9C,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA,EAAE;gCACtB,MAAM,MAAM,GAAG,OAAM,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC;oCACnC,OAAO;oCACP,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,KAAI,EAAE;oCAC/B,MAAM,EAAE,MAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,SAAS;oCACrC,IAAI;AACL,iCAAA,CAAC,CAAA,CAAC;AACH,gCAAA,IAAI,MAAM,EAAE;AACV,oCAAA,MAAM,MAAM,GACV,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,WAAW,CAAC,IAAI,CAAC;oCACvD,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC;AACrD,iCAAA;AAAM,qCAAA;AACL,oCAAAG,QAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC1B,iCAAA;AACF,6BAAA;AAAM,iCAAA;AACL,gCAAAA,QAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAChC,6BAAA;4BACD,MAAM;AACP,yBAAA;AAED;;AAEG;AACH,wBAAA,KAAK,OAAO,CAAC,QAAQ,EAAE;4BACrB,MAAM,QAAQ,GAAG,IAAkB,CAAC;AACpC,4BAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;4BACtC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;4BAC3D,MAAM;AACP,yBAAA;AAED;;AAEG;AACH,wBAAA,KAAK,OAAO,CAAC,WAAW,EAAE;4BACxB,MAAM,MAAM,GAAG,IAA2B,CAAC;4BAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;4BAC/C,MAAM;AACP,yBAAA;AAED;;AAEG;AACH,wBAAA,KAAK,OAAO,CAAC,YAAY,EAAE;4BACzB,MAAM,eAAe,GAAG,IAAkC,CAAC;;AAE3D,4BAAA,MAAM,SAAS,GAA+B,MAAM,CAAC,IAAI,CACvD,eAAe,CAChB,CAAC,MAAM,CACN,CACE,IAAgC,EAChC,IAA6B,KAC3B;AACF,gCAAA,IACE,KAAK,CACH,eAAe,CAAC,IAAI,CAAC,EACrB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EACjC;AACE,oCAAA,IAAI,EAAE,IAAI;AACX,iCAAA,CACF,EACD;AACA,oCAAA,OAAO,IAAI,CAAC;AACb,iCAAA;AACD,gCAAA,MAAM,MAAM,GAAG;oCACb,eAAe,CAAC,IAAI,CAAC;AACrB,oCAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;oCACjC,cAAc;iCACf,CAAC;gCACF,MAAM,OAAO,GACX,IAAyD,CAAC;gCAC5D,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,OAAO,EACP,GAAI,MAEF,CACH,CAAC;AACF,gCAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gCAC1D,IAAI,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,gCAAA,OAAO,IAAI,CAAC;6BACb,EACD,EAAgC,CACjC,CAAC;4BAEF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;4BAClD,MAAM;AACP,yBAAA;AAED;;AAEG;AACH,wBAAA,KAAK,OAAO,CAAC,UAAU,EAAE;4BACvB,MAAM,UAAU,GAAG,IAAkB,CAAC;AACtC,4BAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAEtC,4BAAA,IAAI,UAAU,CAAC,UAAU,KAAK,gBAAgB,CAAC,UAAU,EAAE;AACzD,gCAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACrC,6BAAA;AAED,4BAAA,IAAI,UAAU,CAAC,UAAU,KAAK,gBAAgB,CAAC,UAAU,EAAE;AACzD,gCAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACrC,6BAAA;AACD;;AAEG;AACH,4BAAA,IACE,UAAU,CAAC,UAAU,KAAK,gBAAgB,CAAC,UAAU;AACrD,gCAAA,UAAU,CAAC,MAAM,KAAK,iBAAiB,CAAC,eAAe,EACvD;AACA,gCAAA,MAAM,IAAI,CAAC,WAAW,CACpB,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,CAC5C,CAAC;AACH,6BAAA;AAED;;AAEG;AACH,4BAAA,IACE,UAAU,CAAC,UAAU,KAAK,gBAAgB,CAAC,UAAU;AACrD,gCAAA,UAAU,CAAC,MAAM,KAAK,iBAAiB,CAAC,SAAS,EACjD;AACA,gCAAA,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AACnB,6BAAA;4BACD,MAAM;AACP,yBAAA;AACD;;AAEG;AACH,wBAAA,KAAK,OAAO,CAAC,WAAW,EAAE;AACxB,4BAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BACrB,MAAM;AACP,yBAAA;AACD;;AAEG;AACH,wBAAA,SAAS;AACP,4BAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;AAC5C,yBAAA;AACF,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7B,iBAAA;AACF,aAAA;AACH,SAAC,CAAA,CAAC;AAEF;;AAEG;QACK,IAAc,CAAA,cAAA,GAAG,MAAK;YAC5B,IAAI,CAAC,YAAY,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AACxC,SAAC,CAAC;AAEF;;;;AAIG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,CAAO,OAA8B,GAAA,EAAE,KAAIH,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;;AAEnD,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAA,EAAA,GAAA,MAAA,OAAO,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AAC3D,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,SAAS,mCAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvE,IAAI,CAAC,QAAQ,CAAC,kBAAkB;gBAC9B,CAAA,EAAA,GAAA,OAAO,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAE3D,IACE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAI,CAAC;AACvC,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU,EAC7C;gBACA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAI,CAAC,EAAE;AAC3C,oBAAA,OAAO,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACpD,iBAAA;gBACD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE;AACjD,oBAAA,OAAO,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAChD,iBAAA;AACD,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AAED,YAAA,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;;AAGlC,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBAClD,IAAI,CAAC,GAAG,EAAE;AACR,oBAAA,OAAO,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC/D,iBAAA;AACF,aAAA;;AAGD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,IACE,YAAY,KAAK,SAAS,CAAC,UAAU;AACrC,gBAAA,YAAY,KAAK,SAAS,CAAC,IAAI,EAC/B;AACA,gBAAA,IAAI,KAAK,EAAE;oBACT,IAAI;wBACF,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACxD,qBAAA;AAAC,oBAAA,OAAO,CAAC,EAAE;AACV,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC3C,iBAAA;AACF,aAAA;;YAGD,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAI,EAAE;AACxC,gBAAA,MAAM,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AACvC,gBAAA,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAA,CAAC;AAEF;;;AAGG;QACH,IAAI,CAAA,IAAA,GAAG,MAAWA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;YAChB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI;AAAE,gBAAA,OAAO,IAAI,CAAC;YAC/C,IAAI;;AAEF,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,EAAE,CAAC;AAClB,gBAAA,MAAM,IAAI,CAAC,YAAY,CACrB,gBAAgB,CAAC,UAAU,EAC3B,iBAAiB,CAAC,SAAS,EAC3B,EAAE,CACH,CAAC;AACH,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACV,gBAAAG,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB,aAAA;YACD,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACnD,SAAC,CAAA,CAAC;AAEF;;;AAGG;QACH,IAAO,CAAA,OAAA,GAAG,MAAWH,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;YACnB,IAAI,CAAC,mCAAmC,EAAE,CAAC;YAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,YAAA,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC1C,SAAC,CAAA,CAAC;AA+BF;;;;AAIG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,CAAO,QAA2B,KAAIA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAClD,YAAA,OAAA,MAAM,IAAI,CAAC,YAAY,CACrB,gBAAgB,CAAC,UAAU,EAC3B,iBAAiB,CAAC,QAAQ,EAC1B,QAAQ,CACT,CAAA;UAAA,CAAC;;AAmDJ,QAAA,IAAA,CAAA,WAAW,GAAG,CAAO,WAAoB,KAAIA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;YAC3C,IAAI,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,CAAA;AAAE,gBAAA,OAAO,KAAK,CAAC;AAEhE,YAAA,MAAM,MAAM,GAAG,OAAM,MAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CAAC,WAAW,CAAC,CAAA,CAAC;AACzD,YAAA,IAAI,MAAM,EAAE;gBACV,MAAM,IAAI,CAAC,YAAY,CACrB,gBAAgB,CAAC,UAAU,EAC3B,iBAAiB,CAAC,eAAe,EACjC;AACE,oBAAA,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK;iBAC3D,EACD,EAAE,CACH,CAAC;AACH,aAAA;AAED,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAA,CAAC;AAEF;;;;;AAKG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,CACZ,WAAwB,EACxB,SAA4B,KAC1BA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;AACF,YAAA,IACE,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,KAAK,UAAU;gBACtD,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAC5C;AACA,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AAED,YAAA,IAAI,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CAAA,EAAE;AACnD,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AAED,YAAA,OAAO,MAAM,IAAI,CAAC,YAAY,CAC5B,gBAAgB,CAAC,UAAU,EAC3B,iBAAiB,CAAC,eAAe,EACjC;AACE,gBAAA,MAAM,EAAE,WAAW;aACpB,EACD,SAAS,CACV,CAAC;AACJ,SAAC,CAAA,CAAC;AAEF;;;;;AAKG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,CAAO,IAAa,EAAE,SAA4B,KAAIA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;AACjE,YAAA,IACE,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,KAAK,UAAU;gBACrD,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAC3C;AACA,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AAED,YAAA,IAAI,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,CAAA,EAAE;AAClD,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;YAED,OAAO,MAAM,IAAI,CAAC,YAAY,CAC5B,gBAAgB,CAAC,UAAU,EAC3B,iBAAiB,CAAC,cAAc,EAChC,EAAE,UAAU,EAAE,IAAI,EAAE,EACpB,SAAS,CACV,CAAC;AACJ,SAAC,CAAA,CAAC;AAEF;;;;AAIG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,CAAO,SAA4B,KAAIA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;AAC5C,YAAA,IACE,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,KAAK,UAAU;gBACrD,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAC3C;AACA,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AAED,YAAA,IAAI,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,mBAAmB,CAAA,EAAE;AACnD,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AAED,YAAA,OAAO,MAAM,IAAI,CAAC,YAAY,CAC5B,gBAAgB,CAAC,UAAU,EAC3B,iBAAiB,CAAC,UAAU,EAC5B;AACE,gBAAA,MAAM,EAAE,UAAU;aACnB,EACD,SAAS,CACV,CAAC;AACJ,SAAC,CAAA,CAAC;QAzmBA,IAAI,CAAC,gCAAgC,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC3B,EAAE,kBAAkB,EAAE,WAAW,CAAC,IAAI,EAAE,EACxC,IAAI,CACL,CAAC;;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,MAAK;YAC7B,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;YACxC,IAAI,IAAI,CAAC,kBAAkB;gBAAE,OAAO,IAAI,QAAQ,EAAE,CAAC;AACnD,YAAA,OAAO,SAAS,CAAC;SAClB,GAAG,CAAC;;QAGL,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,yBAAyB,CAAC;;AAG5E,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,MAAK;;YAExB,IAAI,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,GAAG,CAAC;;YAE9B,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,oBAAAG,QAAM,CAAC,KAAK,CACV,sEAAsE,CACvE,CAAC;AACH,iBAAA;gBACD,QAAQ,IAAI,CAAC,OAAO;AAClB,oBAAA,KAAK,OAAO,CAAC,mBAAmB,EAAE;;AAEhC,wBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;4BAC1B,OAAO,IAAI,YAAY,CAAC;AACtB,gCAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAChC,gCAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;AACzC,6BAAA,CAAC,CAAC;AACJ,yBAAA;AAAM,6BAAA;AACL,4BAAAA,QAAM,CAAC,KAAK,CACV,6EAA6E,CAC9E,CAAC;AACF,4BAAA,OAAO,SAAS,CAAC;AAClB,yBAAA;AACF,qBAAA;AACD,oBAAA,KAAK,OAAO,CAAC,sBAAsB,EAAE;;wBAEnC,OAAO,IAAI,gBAAgB,CAAC;AAC1B,4BAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;AACxC,4BAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;AAC3D,yBAAA,CAAC,CAAC;AACJ,qBAAA;AACD,oBAAA,KAAK,OAAO,CAAC,iBAAiB,EAAE;;AAE9B,wBAAAA,QAAM,CAAC,KAAK,CACV,yEAAyE,CAC1E,CAAC;wBACF,OAAO,IAAI,UAAU,CAAC;AACpB,4BAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;AACxC,4BAAA,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;AAC/C,yBAAA,CAAC,CAAC;AACJ,qBAAA;AACD,oBAAA,SAAS;AACP,wBAAAA,QAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC1C,wBAAA,OAAO,SAAS,CAAC;AAClB,qBAAA;AACF,iBAAA;AACF,aAAA;;YAED,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,oBAAAA,QAAM,CAAC,KAAK,CACV,sEAAsE,CACvE,CAAC;AACH,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;oBAC1B,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,eAAe,EAAE;wBACnE,OAAO,IAAI,YAAY,CAAC;AACtB,4BAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAChC,4BAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;AACzC,yBAAA,CAAC,CAAC;AACJ,qBAAA;AAAM,yBAAA;;AAEL,wBAAA,OAAO,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,gBAAgB;8BAC1D,IAAI,gBAAgB,CAAC;AACnB,gCAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;6BACzC,CAAC;8BACF,IAAI,UAAU,CAAC;AACb,gCAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;AACxC,gCAAA,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;AAC/C,6BAAA,CAAC,CAAC;AACR,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAAA,QAAM,CAAC,KAAK,CACV,oEAAoE,CACrE,CAAC;AACF,oBAAA,OAAO,SAAS,CAAC;AAClB,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,SAAS,CAAC;SAClB,GAAG,CAAC;AAEL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;AACtB,YAAAA,QAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3B,SAAA;;QAGD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAChD,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC3B,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3E,SAAA;KACF;AA6TD;;;;;;;AAOG;AACG,IAAA,YAAY,CAChB,OAAyB,EACzB,OAA0B,EAC1B,MAA2B,EAC3B,SAA6B,EAAA;;AAE7B,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI;AAAE,gBAAA,OAAO,KAAK,CAAC;YAChD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CACxB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EACxC,EAAE,IAAI,EAAE,MAAM,EAAE,CACjB,CAAC;AACF,YAAA,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACnE,IAAI;AACF,gBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACtC,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACV,gBAAAA,QAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChB,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAcD;;;;;;AAMG;AACH,IAAA,SAAS,CACP,OAAgB,EAChB,SAA4B,EAC5B,OAAe,EAAA;AAEf,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK,CAAC;QAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,WAAW,GAAG,aAAa,CAC/B,OAAO,CAAC,WAAW,EACnB,OAAO,EACP,SAAS,CACV,CAAC;AACF,YAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;YAEtD,MAAM,SAAS,GAAG,OAAO;AACvB,kBAAE,UAAU,CAAC,MAAK;AACd,oBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtC,oBAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;iBACrC,EAAE,OAAO,CAAC;kBACX,SAAS,CAAC;AAEd,YAAA,MAAM,YAAY,GAAG,CACnB,IAAyB,EACzB,cAAsB,KACpB;gBACF,IAAI,cAAc,KAAK,gBAAgB;oBAAE,OAAO;AAChD,gBAAA,IAAI,SAAS;oBAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBACpC,OAAO,CAAC,IAAgB,CAAC,CAAC;AAC5B,aAAC,CAAC;AAEF,YAAA,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAEnC,IAAI;AACF,gBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC3C,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;AACX,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAwGF;;AC/yBD;;;;AAIG;AACU,MAAA,UAAU,GAAG,CACxB,IAAiB,KACU;AAC3B,IAAA,wBAAwB,EAAE,CAAC;AAC3B,IAAA,OAAO,IAAI,IAAI,CAAoB,IAAI,CAAC,CAAC;AAC3C;;ACWA;;AAEG;AACG,SAAU,eAAe,CAC7B,OAAoB,EAAA;AAEpB,IAAA,MAAM,WAAW,GAAG,aAAa,CAAiC,IAAI,CAAC,CAAC;AACxE,IAAA,MAAM,IAAI,GAAG,UAAU,CAAoB,OAAO,CAAC,CAAC;AACpD,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE/B,MAAM,YAAY,GAAG,CAAC,KAA+C,MACnE,KAAA,CAAA,aAAA,CAAC,WAAW,CAAC,QAAQ,EAAC,EAAA,KAAK,EAAE,IAAI,EAAA,EAAG,KAAK,CAAC,QAAQ,CAAwB,CAC3E,CAAC;AAEF;;;AAGG;IACH,MAAM,eAAe,GAAG,MAAK;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC3D,QAAA,OAAO,OAAO,CAAC;AACjB,KAAC,CAAC;AAEF;;;;AAIG;AACH,IAAA,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC;AAE3C;;AAEG;IACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;AAEvC;;;;AAIG;AACH,IAAA,MAAM,sBAAsB,GAAG,MAAM,cAAc,EAAE,CAAC;AAEtD;;AAEG;IACH,MAAM,UAAU,GAAG,MAAM,CAAO,OAA2B,KAAIH,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA,EAC7D,OAAA,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA,GAAA,CAAC;AAE9B;;;;;;AAMG;AACH,IAAA,SAAS,yBAAyB,CAGhC,GAAkB,EAClB,QAEgE,EAChE,OAA6B,EAAE,EAAA;AAE/B,QAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AACnE,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxD,QAAA,KAAK,CAAC,SAAS,CAAC,MAAK;YACnB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACjC,YAAA,OAAO,OAAO,CAAC;SAChB,EAAE,cAAc,CAAC,CAAC;AAEnB,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;;AAGG;AACH,IAAA,SAAS,aAAa,GAAA;AACpB,QAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAE/B,QAAA,MAAM,OAAO,GAAG,CAAO,OAA2B,KAChDA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA,EAAA,OAAA,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA,GAAA,CAAC;AAE9B,QAAA,MAAM,WAAW,GAAG,CAAC,WAAoB,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAE5E,MAAM,SAAS,GAAG,CAChB,IAAyB,EACzB,SAA4B,EAC5B,OAAO,GAAG,CAAC,KACTA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA,EAAC,OAAA,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA,EAAA,CAAA,CAAC;AAEpD,QAAA,MAAM,IAAI,GAAG,MAAYA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA,EAAA,OAAA,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA,GAAA,CAAC;AAE3C,QAAA,MAAM,IAAI,GAAG,CAAO,SAA4B,KAC9CA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA,EAAA,OAAA,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA,GAAA,CAAC;QAE7B,MAAM,WAAW,GAAG,CAClB,KAAkB,EAClB,SAA+B,GAAA,EAAE,KAC9BA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA,EAAA,OAAA,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA,EAAA,CAAA,CAAC;AAE9C,QAAA,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,SAAA,GAA+B,EAAE,KAClE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAEnC,QAAA,MAAM,cAAc,GAAG,CAAC,GAA4B,KAClD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAE3B,QAAA,MAAM,YAAY,GAAG,CACnB,GAA4B,EAC5B,KAAiD,KAC9C,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAEnC,QAAA,MAAM,WAAW,GAAG,CAAC,QAA2B,KAC9C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE7B,MAAM,YAAY,GAAG,CACnB,OAAyB,EACzB,OAA0B,EAC1B,MAA2B,EAC3B,SAA6B,KAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAE5D,OAAO;YACL,OAAO;YACP,SAAS;YACT,IAAI;YACJ,IAAI;YACJ,WAAW;YACX,WAAW;YACX,UAAU;YACV,YAAY;YACZ,cAAc;YACd,WAAW;YACX,YAAY;SACb,CAAC;KACH;IAED,SAAS,WAAW,CAAoC,GAAM,EAAA;AAC5D,QAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,QAAA,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAEzC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5B,QAAA,KAAK,CAAC,SAAS,CAAC,MAAK;YACnB,MAAM,QAAQ,GAAG,CAAC,aAAmC,KACnD,WAAW,CAAC,aAAa,CAAC,CAAC;YAE7B,MAAM,OAAO,GAAG,GAAwD,CAAC;YACzE,MAAM,QAAQ,GAAG,QAMhB,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACrC,YAAA,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACrD,SAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAEX,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,CAAC,KAA2B,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EAC9D,CAAC,IAAI,CAAC,CACP,CAAC;AAKF,QAAA,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAiB,CAAC;KAC1C;AAED,IAAA,SAAS,oBAAoB,CAG3B,IAAO,EACP,QAEoD,EACpD,OAA6B,EAAE,EAAA;AAE/B,QAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAEnE,QAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACxB,YAAA,OAAO,OAAO,CAAC;SAChB,EAAE,cAAc,CAAC,CAAC;AAEnB,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;;AAGG;AACH,IAAA,SAAS,YAAY,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,QAAA,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAY,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,QAAA,KAAK,CAAC,SAAS,CAAC,MAAK;YACnB,MAAM,WAAW,GAAG,CAAC,KAAgB,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YACpC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AACpD,SAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAEX,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,SAAS,YAAY,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAE/B,QAAA,MAAM,IAAI,GAAG,CAAC,OAKb,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACpC,QAAA,MAAM,KAAK,GAAG,MAAK,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,EAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAC;AACxC,QAAA,MAAM,WAAW,GAAG,CAAC,IAA0B,KAC7C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAElD,OAAO;YACL,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,WAAW;YACX,WAAW;SACZ,CAAC;KACH;AAED,IAAA,SAAS,mBAAmB,CAC1B,IAAO,EACP,QAEgC,EAChC,OAA6B,EAAE,EAAA;AAE/B,QAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,cAAc,GAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AACnE,QAAA,KAAK,CAAC,SAAS,CAAC,MAAK;YACnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,YAAA,OAAO,OAAO,CAAC;SAChB,EAAE,cAAc,CAAC,CAAC;AAEnB,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,SAAS,WAAW,GAAA;AAClB,QAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,QAAA,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CACzC,IAAI,CAAC,QAAQ,IAAI,EAAE,CACpB,CAAC;QAEF,MAAM,cAAc,GAAG,CAAC,QAA2B,KACjD,WAAW,CAAC,QAAQ,CAAC,CAAC;AAExB,QAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAC1C,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAC1D,SAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAEX,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,CAAO,QAA2B,KAAIA,WAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACpC,YAAA,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC1C,SAAC,CAAA,EACD,CAAC,IAAI,CAAC,CACP,CAAC;AAMF,QAAA,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAiB,CAAC;KAC1C;AAED,IAAA,SAAS,oBAAoB,GAAA;AAC3B,QAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,QAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CACtC,IAAI,CAAC,QAAQ,CACd,CAAC;AAEF,QAAA,KAAK,CAAC,SAAS,CAAC,MAAK;YACnB,MAAM,WAAW,GAAG,CAAC,SAAqC,KACxD,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtB,YAAA,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAClC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,KAAK,CAAC;KACd;AACD,IAAA,SAAS,WAAW,GAAA;AAClB,QAAA,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;AAC/B,QAAA,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAa,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvE,MAAM,cAAc,GAAG,CAAC,QAAoB,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEvE,QAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAC1C,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAC1D,SAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAEX,QAAA,OAAO,KAAK,CAAC;KACd;IAED,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,YAAY;QACZ,uBAAuB;QACvB,sBAAsB;QACtB,UAAU;QACV,WAAW;QACX,yBAAyB;QACzB,aAAa;QACb,oBAAoB;QACpB,YAAY;QACZ,YAAY;QACZ,mBAAmB;QACnB,WAAW;QACX,oBAAoB;QACpB,WAAW;KACZ,CAAC;AACJ;;;;"}
|