@dual-os/telegram 0.0.0-stage → 8.0.5

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.
Files changed (53) hide show
  1. package/LICENSE +4 -0
  2. package/README.md +65 -2
  3. package/Runner.js +5539 -0
  4. package/Runner.js.map +59 -0
  5. package/bundle-inventory.json +1 -0
  6. package/dist/Telegram.d.ts +5291 -0
  7. package/dist/Telegram.d.ts.map +1 -0
  8. package/dist/TelegramClient.d.ts +203 -0
  9. package/dist/TelegramClient.d.ts.map +1 -0
  10. package/dist/TelegramClient.js +28 -0
  11. package/dist/TelegramClient.js.map +9 -0
  12. package/dist/TelegramDefinition.d.ts +1556 -0
  13. package/dist/TelegramDefinition.d.ts.map +1 -0
  14. package/dist/channel/telegram-bot-client.d.ts +45 -0
  15. package/dist/channel/telegram-bot-client.d.ts.map +1 -0
  16. package/dist/channel/telegram-bot-definition.d.ts +155 -0
  17. package/dist/channel/telegram-bot-definition.d.ts.map +1 -0
  18. package/dist/channel/telegram-bot-webhook.d.ts +62 -0
  19. package/dist/channel/telegram-bot-webhook.d.ts.map +1 -0
  20. package/dist/channel/telegram-bot.d.ts +111 -0
  21. package/dist/channel/telegram-bot.d.ts.map +1 -0
  22. package/dist/definition.d.ts +1114 -0
  23. package/dist/definition.d.ts.map +1 -0
  24. package/dist/definition.js +20 -0
  25. package/dist/definition.js.map +9 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.js +17 -0
  28. package/dist/index.js.map +9 -0
  29. package/dist/internal/TelegramSchemas.d.ts +375 -0
  30. package/dist/internal/TelegramSchemas.d.ts.map +1 -0
  31. package/dist/plugin.d.ts +3282 -0
  32. package/dist/plugin.d.ts.map +1 -0
  33. package/dist/plugin.js +26 -0
  34. package/dist/plugin.js.map +9 -0
  35. package/dual-plugin.json +1 -0
  36. package/index-68np0qzt.js +224 -0
  37. package/index-68np0qzt.js.map +11 -0
  38. package/index-hpjyc5yq.js +847 -0
  39. package/index-hpjyc5yq.js.map +14 -0
  40. package/index-pm1rw9n0.js +1301 -0
  41. package/index-pm1rw9n0.js.map +18 -0
  42. package/index-ppnnem2q.js +5473 -0
  43. package/index-ppnnem2q.js.map +56 -0
  44. package/index-sdgqen8s.js +13975 -0
  45. package/index-sdgqen8s.js.map +111 -0
  46. package/index-xc47zv2c.js +251 -0
  47. package/index-xc47zv2c.js.map +10 -0
  48. package/licenses/@dual-os_sdk@0.9.0/LICENSE +4 -0
  49. package/licenses/@effect_platform-node-shared@4.1.2/LICENSE +21 -0
  50. package/licenses/@effect_platform-node@4.1.2/LICENSE +21 -0
  51. package/licenses/effect@4.1.2/LICENSE +21 -0
  52. package/package.json +1 -6
  53. package/plugin.json +8 -0
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../bundle-input/dist/Telegram.js", "../bundle-input/dist/channel/telegram-bot-client.js", "../bundle-input/dist/channel/telegram-bot-webhook.js", "../bundle-input/dist/channel/telegram-bot.js", "../bundle-input/dist/plugin.js"],
4
+ "sourcesContent": [
5
+ "import { TelegramClient, layer } from \"./TelegramClient.js\";\nimport { TelegramUpdateV2, telegramAccessToken, telegramPluginBase } from \"./TelegramDefinition.js\";\nimport { createHmac, randomUUID, timingSafeEqual } from \"node:crypto\";\nimport { Array, Effect, Schema } from \"effect\";\nimport { FetchHttpClient } from \"effect/http\";\nimport { Action, Plugin } from \"@dual-os/sdk\";\n//#region src/Telegram.ts\n/**\n* Telegram provider definition: schemas, the access-token auth method, grouped\n* actions, the update webhook trigger, the wired provider + handler layer, and\n* the installable plugin.\n*\n* Ported to full parity with n8n's Telegram node (versions 1/1.1/1.2). The node's\n* resources become groups (`chat`, `callback`, `file`, `message`) and every node\n* operation becomes one action. The n8n `telegramTrigger` node — a webhook backed\n* by Telegram's `setWebhook`/`deleteWebhook` with a secret-token handshake — is\n* ported as a webhook trigger.\n*\n* Out of scope vs. the n8n node, by design:\n* - `sendAndWait`: an n8n platform human-in-the-loop primitive (it sends a\n* `sendMessage` then parks the execution waiting for a webhook reply). It is not\n* a distinct Bot API method, so it is not a provider action.\n* - Binary-file upload: n8n streams local binary fields as multipart form data.\n* In Dual, binary transfer is the platform's job; the send* actions accept the\n* Telegram-native `file_id`/HTTP-URL string form every Bot API method supports.\n* - File `download`: `file.get` returns the `file_path`; fetching bytes from\n* `<baseUrl>/file/bot<token>/<file_path>` is left to the platform.\n*/\nconst fromTelegramApiFailure = (error) => {\n\tconst fields = {\n\t\tcause: error,\n\t\tdetails: {\n\t\t\toperation: error.operation,\n\t\t\treason: \"TelegramApiError\"\n\t\t},\n\t\tmessage: error.message,\n\t\tstatus: error.status\n\t};\n\treturn error.status === 429 || error.status >= 500 ? new Action.RetryableActionHandlerError(fields) : new Action.ActionHandlerError(fields);\n};\nconst orTelegramFailure = Effect.fn(\"Telegram.orTelegramFailure\")(function* (effect) {\n\treturn yield* Effect.mapError(effect, (error) => error._tag === \"TelegramApiError\" ? fromTelegramApiFailure(error) : Action.fromHttpClientFailure(error));\n});\n/** Bot API base URL for the connected credential. */\nconst baseUrlOf = (context) => context.auth.match({ \"access-token\": (b) => b.value.baseUrl ?? \"https://api.telegram.org\" });\n/** Bot access token for the connected credential. */\nconst tokenOf = (context) => context.auth.match({ \"access-token\": (b) => b.value.accessToken });\n/** Credential-derived connection fields threaded into every client call. */\nconst connOf = (context) => ({\n\tbaseUrl: baseUrlOf(context),\n\ttoken: tokenOf(context)\n});\n/**\n* Derive a stable secret token when the config does not supply one. Telegram\n* only permits `A-Z a-z 0-9 _ -`, so we HMAC the webhook URL under the bot token\n* and hex-encode it — deterministic per (bot, url) like n8n's\n* `${workflowId}_${nodeId}` scheme, but without leaking workflow internals.\n*/\nconst deriveSecretToken = (token, webhookUrl) => createHmac(\"sha256\", token).update(webhookUrl).digest(\"hex\");\nconst secretTokenOf = (config, webhookUrl, token) => config.secretToken ?? deriveSecretToken(token, webhookUrl);\n/** Constant-time compare of the inbound secret-token header against expectation. */\nconst isSecretTokenValid = (request, expected) => {\n\tif (expected === \"\") return false;\n\tconst provided = request.headers?.[\"x-telegram-bot-api-secret-token\"] ?? \"\";\n\tconst expectedBuf = Buffer.from(expected);\n\tconst providedBuf = Buffer.from(provided);\n\treturn expectedBuf.length === providedBuf.length && timingSafeEqual(expectedBuf, providedBuf);\n};\n/** An empty list uses Telegram's default, which excludes membership and reactions. */\nconst allowedUpdatesOf = (updates) => updates ?? [];\n/** The chat id carried by an update, across message-shaped update kinds. */\nconst updateChatId = (update) => {\n\tconst candidates = [\n\t\tupdate[\"message\"],\n\t\tupdate[\"edited_message\"],\n\t\tupdate[\"channel_post\"],\n\t\tupdate[\"edited_channel_post\"]\n\t];\n\tfor (const candidate of candidates) if (typeof candidate === \"object\" && candidate !== null) {\n\t\tconst chat = candidate.chat;\n\t\tif (typeof chat === \"object\" && chat !== null) {\n\t\t\tconst id = chat.id;\n\t\t\tif (id !== void 0 && id !== null) return String(id);\n\t\t}\n\t}\n\tconst cb = update[\"callback_query\"];\n\tif (typeof cb === \"object\" && cb !== null) {\n\t\tconst message = cb.message;\n\t\tif (typeof message === \"object\" && message !== null) {\n\t\t\tconst chat = message.chat;\n\t\t\tif (typeof chat === \"object\" && chat !== null) {\n\t\t\t\tconst id = chat.id;\n\t\t\t\tif (id !== void 0 && id !== null) return String(id);\n\t\t\t}\n\t\t}\n\t}\n};\n/** The author user id carried by an update, across update kinds. */\nconst updateUserId = (update) => {\n\tconst sources = [\n\t\tupdate[\"message\"],\n\t\tupdate[\"edited_message\"],\n\t\tupdate[\"channel_post\"],\n\t\tupdate[\"edited_channel_post\"],\n\t\tupdate[\"callback_query\"],\n\t\tupdate[\"inline_query\"],\n\t\tupdate[\"pre_checkout_query\"],\n\t\tupdate[\"shipping_query\"]\n\t];\n\tfor (const source of sources) if (typeof source === \"object\" && source !== null) {\n\t\tconst from = source.from;\n\t\tif (typeof from === \"object\" && from !== null) {\n\t\t\tconst id = from.id;\n\t\t\tif (id !== void 0 && id !== null) return String(id);\n\t\t}\n\t}\n};\n/** Register the Telegram webhook, binding it to a secret token. */\n/** Remove the Telegram webhook registration. */\nconst activateUpdateV2 = Effect.fnUntraced(function* (config, webhookUrl, context) {\n\tconst client = yield* TelegramClient;\n\tconst connection = connOf(context);\n\tconst registrationUrl = new URL(webhookUrl);\n\tregistrationUrl.searchParams.set(\"__dual_telegram_registration\", randomUUID());\n\tyield* orTelegramFailure(client.setWebhook({\n\t\t...connection,\n\t\tallowedUpdates: allowedUpdatesOf(config.updates),\n\t\tsecretToken: secretTokenOf(config, webhookUrl, connection.token),\n\t\turl: registrationUrl.href\n\t}));\n\treturn { state: {\n\t\tlastUpdateId: null,\n\t\tregistrationUrl: registrationUrl.href\n\t} };\n});\n/**\n* Reject forged requests: Telegram echoes the registered secret token in the\n* secret-token header on every delivery. Constant-time compare, mirroring the\n* n8n trigger's Operations.2 secret check.\n*/\nconst verifyUpdate = (input, webhookUrl, context, status) => isSecretTokenValid(input.request, secretTokenOf(input.config, webhookUrl, tokenOf(context))) ? Effect.void : Effect.fail(new Action.ActionHandlerError({\n\tmessage: \"invalid Telegram secret token\",\n\tstatus\n}));\nconst deactivateUpdateV2 = Effect.fnUntraced(function* (state, context) {\n\tif (state?.registrationUrl === void 0) return;\n\tconst client = yield* TelegramClient;\n\tconst connection = connOf(context);\n\tif ((yield* Schema.decodeUnknownEffect(Schema.Struct({ url: Schema.String }))(yield* orTelegramFailure(client.getWebhookInfo(connection)))).url !== state.registrationUrl) return;\n\tyield* orTelegramFailure(client.deleteWebhook(connection));\n});\nconst parseUpdateV2 = Effect.fnUntraced(function* (input, webhookUrl, context) {\n\tyield* verifyUpdate(input, webhookUrl, context, 401);\n\tconst body = yield* Schema.decodeUnknownEffect(TelegramUpdateV2)(input.request.body);\n\tconst state = {\n\t\t...input.state,\n\t\tlastUpdateId: body.update_id\n\t};\n\tif (Array.isReadonlyArrayNonEmpty(input.config.updates ?? []) && !Array.some(input.config.updates ?? [], (kind) => body[kind] !== void 0)) return {\n\t\tevents: [],\n\t\tstate\n\t};\n\tconst chatId = body.chat_member?.chat.id ?? body.my_chat_member?.chat.id ?? body.message_reaction?.chat.id ?? body.message_reaction_count?.chat.id;\n\tconst userId = body.chat_member?.from.id ?? body.my_chat_member?.from.id ?? body.message_reaction?.user?.id;\n\tif (Array.isReadonlyArrayNonEmpty(input.config.chatIds ?? [])) {\n\t\tconst id = chatId === void 0 ? updateChatId(body) : String(chatId);\n\t\tif (id === void 0 || !Array.contains(input.config.chatIds ?? [], id)) return {\n\t\t\tevents: [],\n\t\t\tstate\n\t\t};\n\t}\n\tif (Array.isReadonlyArrayNonEmpty(input.config.userIds ?? [])) {\n\t\tconst id = userId === void 0 ? updateUserId(body) : String(userId);\n\t\tif (id === void 0 || !Array.contains(input.config.userIds ?? [], id)) return {\n\t\t\tevents: [],\n\t\t\tstate\n\t\t};\n\t}\n\treturn {\n\t\tevents: [{\n\t\t\tkey: `update:${body.update_id}`,\n\t\t\tpayload: body\n\t\t}],\n\t\tstate\n\t};\n});\n/** @since 0.0.0 @category layers */\nconst TelegramLive = Plugin.toLayer(telegramPluginBase, (pluginHandlers) => pluginHandlers.group(\"callback\", (handlers) => handlers.action(\"answer-inline-query\", Effect.fn(\"@dual-os/telegram/callback.answer-inline-query\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.answerInlineQuery({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"answer-query\", Effect.fn(\"@dual-os/telegram/callback.answer-query\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.answerCallbackQuery({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n}))).group(\"chat\", (handlers) => handlers.action(\"administrators\", Effect.fn(\"@dual-os/telegram/chat.administrators\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.getChatAdministrators({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"get\", Effect.fn(\"@dual-os/telegram/chat.get\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.getChat({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"leave\", Effect.fn(\"@dual-os/telegram/chat.leave\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.leaveChat({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"member\", Effect.fn(\"@dual-os/telegram/chat.member\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.getChatMember({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"set-description\", Effect.fn(\"@dual-os/telegram/chat.set-description\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.setChatDescription({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"set-title\", Effect.fn(\"@dual-os/telegram/chat.set-title\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.setChatTitle({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n}))).group(\"file\", (handlers) => handlers.action(\"get\", Effect.fn(\"@dual-os/telegram/file.get\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.getFile({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n}))).group(\"message\", (handlers) => handlers.action(\"delete-message\", Effect.fn(\"@dual-os/telegram/message.delete-message\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.deleteMessage({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"edit-message-text\", Effect.fn(\"@dual-os/telegram/message.edit-message-text\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.editMessageText({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"pin-chat-message\", Effect.fn(\"@dual-os/telegram/message.pin-chat-message\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.pinChatMessage({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"send-animation\", Effect.fn(\"@dual-os/telegram/message.send-animation\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.sendAnimation({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"send-audio\", Effect.fn(\"@dual-os/telegram/message.send-audio\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.sendAudio({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"send-chat-action\", Effect.fn(\"@dual-os/telegram/message.send-chat-action\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.sendChatAction({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"send-document\", Effect.fn(\"@dual-os/telegram/message.send-document\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.sendDocument({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"send-location\", Effect.fn(\"@dual-os/telegram/message.send-location\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.sendLocation({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"send-media-group\", Effect.fn(\"@dual-os/telegram/message.send-media-group\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.sendMediaGroup({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"send-message\", Effect.fn(\"@dual-os/telegram/message.send-message\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.sendMessage({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"send-photo\", Effect.fn(\"@dual-os/telegram/message.send-photo\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.sendPhoto({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"send-sticker\", Effect.fn(\"@dual-os/telegram/message.send-sticker\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.sendSticker({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"send-video\", Effect.fn(\"@dual-os/telegram/message.send-video\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.sendVideo({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n})).action(\"unpin-chat-message\", Effect.fn(\"@dual-os/telegram/message.unpin-chat-message\")(function* (input, context) {\n\tconst client = yield* TelegramClient;\n\treturn yield* orTelegramFailure(client.unpinChatMessage({\n\t\t...connOf(context),\n\t\t...input\n\t}));\n}))).trigger(\"update\", {\n\tactivate: (input, context) => activateUpdateV2(input.config, input.webhookUrl, context),\n\tdeactivate: (input, context) => deactivateUpdateV2(input.state, context),\n\tparse: (input, context) => parseUpdateV2(input, input.webhookUrl, context),\n\tverify: (input, context) => verifyUpdate(input, input.webhookUrl, context, 401)\n}));\nconst telegramPlugin = telegramPluginBase.pipe(Plugin.provide(TelegramLive), Plugin.provide(layer), Plugin.provide(FetchHttpClient.layer));\n//#endregion\nexport { TelegramLive, layer, telegramAccessToken, telegramPlugin, telegramPluginBase };\n\n//# sourceMappingURL=Telegram.js.map",
6
+ "import { Context, Effect, Layer, Schema, flow, pipe } from \"effect\";\nimport { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from \"effect/http\";\nimport { AgentChannel } from \"@dual-os/sdk\";\n//#region src/channel/telegram-bot-client.ts\nconst numericId = Schema.Int.check(Schema.isBetween({\n\tminimum: 1,\n\tmaximum: 9007199254740991\n}));\nconst bot = Schema.Struct({\n\tid: numericId,\n\tis_bot: Schema.Literal(true),\n\tusername: Schema.NonEmptyString\n});\nconst webhook = Schema.Struct({ url: Schema.String });\nconst sentMessage = Schema.Struct({\n\tchat: Schema.Struct({ id: Schema.Int }),\n\tmessage_id: numericId,\n\tmessage_thread_id: Schema.optionalKey(numericId)\n});\nconst failure = Schema.Struct({\n\tdescription: Schema.String,\n\terror_code: Schema.Int,\n\tok: Schema.Literal(false),\n\tparameters: Schema.optionalKey(Schema.Struct({ retry_after: Schema.optionalKey(Schema.Natural) }))\n});\nvar TelegramBotFailure = class extends Schema.TaggedError()(\"TelegramBotFailure\", {\n\tcode: AgentChannel.FailureCode,\n\tretryAfterSeconds: Schema.optionalKey(Schema.Natural)\n}) {};\nfunction uncertainCode(createsMessage) {\n\tif (createsMessage) return \"unknown_completion\";\n\treturn \"unavailable\";\n}\nfunction errorCode(status, createsMessage) {\n\tif (status === 429) return \"rate_limited\";\n\tif (status === 401 || status === 403) return \"unauthorized\";\n\tif (status >= 500) return uncertainCode(createsMessage);\n\treturn \"rejected\";\n}\nfunction retryDelay(parameters) {\n\tif (parameters?.retry_after === void 0) return {};\n\treturn { retryAfterSeconds: parameters.retry_after };\n}\nconst make = Effect.gen(function* () {\n\tconst transport = yield* HttpClient.HttpClient;\n\tconst client = pipe(transport, HttpClient.mapRequest(flow(HttpClientRequest.prependUrl(\"https://api.telegram.org\"), HttpClientRequest.acceptJson)));\n\tconst call = Effect.fn(\"TelegramBotClient.call\")(function* (auth, method, body, result, createsMessage = false) {\n\t\tconst request = yield* pipe(HttpClientRequest.post(`/bot${auth.botToken}/${method}`), HttpClientRequest.bodyJson(body), Effect.mapError(() => TelegramBotFailure.make({ code: \"rejected\" })));\n\t\tconst response = yield* pipe(client.execute(request), Effect.provideService(FetchHttpClient.RequestInit, { redirect: \"manual\" }), Effect.timeout(\"30 seconds\"), Effect.mapError(() => TelegramBotFailure.make({ code: uncertainCode(createsMessage) })));\n\t\tconst envelope = Schema.Union([Schema.Struct({\n\t\t\tok: Schema.Literal(true),\n\t\t\tresult\n\t\t}), failure]);\n\t\tconst decoded = yield* pipe(HttpClientResponse.schemaBodyJson(envelope)(response), Effect.timeout(\"30 seconds\"), Effect.mapError((error) => {\n\t\t\tif (response.status >= 200 && response.status < 300) {\n\t\t\t\tif (createsMessage) return TelegramBotFailure.make({ code: \"unknown_completion\" });\n\t\t\t\tif (error._tag === \"TimeoutError\" || error._tag === \"HttpClientError\") return TelegramBotFailure.make({ code: \"unavailable\" });\n\t\t\t}\n\t\t\treturn TelegramBotFailure.make({ code: errorCode(response.status, createsMessage) });\n\t\t}));\n\t\tif (decoded.ok && response.status >= 200 && response.status < 300) return decoded.result;\n\t\tif (!decoded.ok) {\n\t\t\tif (response.status >= 500) return yield* TelegramBotFailure.make({ code: uncertainCode(createsMessage) });\n\t\t\treturn yield* TelegramBotFailure.make({\n\t\t\t\tcode: errorCode(decoded.error_code, createsMessage),\n\t\t\t\t...retryDelay(decoded.parameters)\n\t\t\t});\n\t\t}\n\t\treturn yield* TelegramBotFailure.make({ code: uncertainCode(createsMessage) });\n\t});\n\treturn {\n\t\tdeleteMessage: (auth, body) => call(auth, \"deleteMessage\", body, Schema.Literal(true)),\n\t\tdeleteWebhook: (auth) => call(auth, \"deleteWebhook\", { drop_pending_updates: false }, Schema.Literal(true)),\n\t\teditMessageText: (auth, body) => call(auth, \"editMessageText\", body, sentMessage),\n\t\tgetMe: (auth) => call(auth, \"getMe\", {}, bot),\n\t\tgetWebhookInfo: (auth) => call(auth, \"getWebhookInfo\", {}, webhook),\n\t\tsendChatAction: (auth, body) => call(auth, \"sendChatAction\", body, Schema.Literal(true)),\n\t\tsendMessage: (auth, body) => call(auth, \"sendMessage\", body, sentMessage, true),\n\t\tsetMessageReaction: (auth, body) => call(auth, \"setMessageReaction\", body, Schema.Literal(true)),\n\t\tsetWebhook: (auth, url) => call(auth, \"setWebhook\", {\n\t\t\tallowed_updates: [\"message\"],\n\t\t\tdrop_pending_updates: false,\n\t\t\tsecret_token: auth.webhookSecret,\n\t\t\turl\n\t\t}, Schema.Literal(true))\n\t};\n});\nvar TelegramBotClient = class extends Context.Service()(\"@dual-os/telegram-bot/telegram-bot-client/TelegramBotClient\") {\n\tstatic layer = Layer.effect(this, make);\n};\n//#endregion\nexport { TelegramBotClient, TelegramBotFailure };\n\n//# sourceMappingURL=telegram-bot-client.js.map",
7
+ "import { timingSafeEqual } from \"node:crypto\";\nimport { Array, DateTime, Effect, Record, Schema, String, pipe } from \"effect\";\nimport { AgentChannel } from \"@dual-os/sdk\";\n//#region src/channel/telegram-bot-webhook.ts\nconst positiveId = Schema.Int.check(Schema.isBetween({\n\tminimum: 1,\n\tmaximum: 9007199254740991\n}));\nconst user = Schema.Struct({\n\tid: positiveId,\n\tis_bot: Schema.Boolean\n});\nconst chat = Schema.Struct({\n\tid: Schema.Int.check(Schema.isBetween({\n\t\tminimum: -9007199254740991,\n\t\tmaximum: 9007199254740991\n\t})),\n\ttype: Schema.String\n});\nconst entity = Schema.Struct({\n\tlength: Schema.Natural,\n\toffset: Schema.Natural,\n\ttype: Schema.String,\n\tuser: Schema.optionalKey(user)\n});\nconst message = Schema.Struct({\n\tbusiness_connection_id: Schema.optionalKey(Schema.String),\n\tchat,\n\tdate: Schema.Natural.check(Schema.isLessThanOrEqualTo(253402300799)),\n\tentities: Schema.optionalKey(Schema.Array(entity)),\n\tfrom: Schema.optionalKey(user),\n\tforward_origin: Schema.optionalKey(Schema.Struct({ type: Schema.String })),\n\tis_automatic_forward: Schema.optionalKey(Schema.Boolean),\n\tmessage_id: positiveId,\n\tmessage_thread_id: Schema.optionalKey(positiveId),\n\treply_to_message: Schema.optionalKey(Schema.Struct({\n\t\tchat,\n\t\tfrom: Schema.optionalKey(user),\n\t\tmessage_id: positiveId,\n\t\tmessage_thread_id: Schema.optionalKey(positiveId)\n\t})),\n\tsender_chat: Schema.optionalKey(chat),\n\ttext: Schema.optionalKey(Schema.String)\n});\nconst addressedCommand = Schema.String.check(Schema.isPattern(/^\\/[a-z0-9_]+@[a-z0-9_]+$/u));\nconst update = Schema.Struct({\n\tedited_message: Schema.optionalKey(message),\n\tmessage: Schema.optionalKey(message),\n\tupdate_id: Schema.Natural\n});\nfunction verify(request, secret) {\n\tconst headers = Array.filter(Record.toEntries(request.headers), (entry) => String.toLowerCase(entry[0]) === \"x-telegram-bot-api-secret-token\");\n\tconst received = headers[0]?.[1];\n\tif (request.method !== \"POST\" || headers.length !== 1 || received === void 0) return Effect.fail(AgentChannel.HandlerError.make({ code: \"unauthorized\" }));\n\tconst actual = new TextEncoder().encode(received);\n\tconst expected = new TextEncoder().encode(secret);\n\tif (actual.byteLength !== expected.byteLength || !timingSafeEqual(actual, expected)) return Effect.fail(AgentChannel.HandlerError.make({ code: \"unauthorized\" }));\n\treturn Effect.succeed({ verified: true });\n}\nfunction messageKey(destination, id) {\n\treturn `${destination.conversationKey}/${destination.threadKey ?? \"main\"}/${id}`;\n}\nfunction chatKind(type) {\n\tif (type === \"private\") return \"direct\";\n\treturn \"group\";\n}\nfunction threadKey(id) {\n\tif (id === void 0) return {};\n\treturn { threadKey: `${id}` };\n}\nfunction replyKey(destination, reply) {\n\tif (reply === void 0) return {};\n\treturn { replyToMessageKey: messageKey(destination, reply.message_id) };\n}\nfunction inScope(conversation, settings) {\n\tif (conversation.kind === \"direct\") return settings.directMessages;\n\treturn Array.isReadonlyArrayEmpty(settings.chatIds) || Array.contains(settings.chatIds, conversation.conversationKey) || conversation.threadKey !== void 0 && Array.contains(settings.chatIds, `${conversation.conversationKey}/${conversation.threadKey}`);\n}\nconst receive = Effect.fn(\"TelegramBot.receive\")(function* (body, state, settings) {\n\tconst input = yield* pipe(Schema.decodeEffect(Schema.fromJsonString(update))(body), Effect.mapError(() => AgentChannel.HandlerError.make({ code: \"rejected\" })));\n\tconst source = input.message;\n\tif (source === void 0 || input.edited_message !== void 0 || source.from === void 0 || source.from.is_bot || `${source.from.id}` === state.botId || source.sender_chat !== void 0 || source.business_connection_id !== void 0 || source.forward_origin !== void 0 || source.is_automatic_forward === true || source.text === void 0 || String.isEmpty(source.text) || source.chat.type !== \"private\" && source.chat.type !== \"group\" && source.chat.type !== \"supergroup\") return [];\n\tconst conversation = {\n\t\tconversationKey: `${source.chat.id}`,\n\t\tkind: chatKind(source.chat.type),\n\t\t...threadKey(source.message_thread_id)\n\t};\n\tif (!inScope(conversation, settings)) return [];\n\tconst text = source.text;\n\tconst entities = source.entities ?? [];\n\tconst addressed = Array.filter(entities, (item) => item.length > 0 && item.offset + item.length <= text.length && !Array.some(entities, (span) => (span.type === \"blockquote\" || span.type === \"expandable_blockquote\" || span.type === \"code\" || span.type === \"pre\") && item.offset < span.offset + span.length && item.offset + item.length > span.offset));\n\tconst username = String.toLowerCase(state.botUsername);\n\tconst explicit = Array.some(addressed, (item) => {\n\t\tconst value = String.toLowerCase(String.slice(item.offset, item.offset + item.length)(text));\n\t\treturn item.type === \"mention\" && value === `@${username}` || item.type === \"text_mention\" && `${item.user?.id}` === state.botId || item.type === \"bot_command\" && item.offset === 0 && Schema.is(addressedCommand)(value) && String.endsWith(`@${username}`)(value);\n\t});\n\tconst reply = source.reply_to_message;\n\tconst replyToBot = reply !== void 0 && `${reply.from?.id}` === state.botId && reply.from?.is_bot === true && reply.chat.id === source.chat.id && reply.message_thread_id === source.message_thread_id;\n\tconst respond = conversation.kind === \"direct\" || explicit || replyToBot || settings.respondTo === \"all_messages\";\n\tconst stop = Array.some(addressed, (item) => {\n\t\tif (item.type !== \"bot_command\" || item.offset !== 0) return false;\n\t\tconst command = String.toLowerCase(String.slice(0, item.length)(text));\n\t\treturn command === \"/stop\" || command === `/stop@${username}`;\n\t});\n\tconst identity = {\n\t\tconversation,\n\t\teventKey: `${input.update_id}`,\n\t\tsenderKey: `${source.from.id}`,\n\t\ttimestamp: DateTime.formatIso(DateTime.makeUnsafe(source.date * 1e3))\n\t};\n\tif (stop && respond) return [{\n\t\t...identity,\n\t\tkind: \"stop\"\n\t}];\n\treturn [{\n\t\t...identity,\n\t\tcontent: {\n\t\t\ttext,\n\t\t\t...replyKey(conversation, reply)\n\t\t},\n\t\tkind: \"message\",\n\t\tmessageKey: messageKey(conversation, source.message_id),\n\t\trespond\n\t}];\n});\n//#endregion\nexport { inScope, messageKey, receive, verify };\n\n//# sourceMappingURL=telegram-bot-webhook.js.map",
8
+ "import { chatKey, telegramBotPluginBase, userKey } from \"./telegram-bot-definition.js\";\nimport { TelegramBotClient } from \"./telegram-bot-client.js\";\nimport { inScope, messageKey, receive, verify } from \"./telegram-bot-webhook.js\";\nimport { Array, Effect, Layer, Schema, String, pipe } from \"effect\";\nimport { FetchHttpClient } from \"effect/http\";\nimport { AgentChannel, Plugin } from \"@dual-os/sdk\";\n//#region src/channel/telegram-bot.ts\nconst numericKey = Schema.NumberFromString.check(Schema.isInt(), Schema.isBetween({\n\tminimum: 1,\n\tmaximum: 9007199254740991\n}));\nfunction validDestination(destination) {\n\tif (!Schema.is(chatKey)(destination.conversationKey)) return false;\n\tif (destination.threadKey !== void 0 && !Schema.is(userKey)(destination.threadKey)) return false;\n\tif (destination.kind === \"direct\") return !String.startsWith(\"-\")(destination.conversationKey);\n\treturn String.startsWith(\"-\")(destination.conversationKey);\n}\nfunction checkAccess(identity, context) {\n\tif (!validDestination(identity.conversation) || !inScope(identity.conversation, context.deploymentSettings) || !Schema.is(userKey)(identity.senderKey) || identity.conversation.kind === \"direct\" && identity.conversation.conversationKey !== identity.senderKey || identity.senderKey === String.split(\":\")(context.auth.value.botToken)[0] || context.deploymentSettings.access === \"restricted\" && !Array.contains(context.deploymentSettings.allowedSenderKeys, identity.senderKey)) return Effect.succeed({ decision: \"deny\" });\n\treturn Effect.succeed({ decision: \"allow\" });\n}\nfunction installed(command, context) {\n\tif (command.installationKey !== command.state.botId || command.state.botId !== String.split(\":\")(context.auth.value.botToken)[0]) return Effect.fail(AgentChannel.HandlerError.make({ code: \"unauthorized\" }));\n\treturn Effect.void;\n}\nconst activate = Effect.fn(\"TelegramBot.activate\")(function* (command, context) {\n\tconst client = yield* TelegramBotClient;\n\tconst bot = yield* client.getMe(context.auth.value);\n\tconst botId = `${bot.id}`;\n\tif (botId !== String.split(\":\")(context.auth.value.botToken)[0] || command.state !== void 0 && (command.state.botId !== botId || command.state.ingressUrl !== command.ingressUrl)) return yield* AgentChannel.HandlerError.make({ code: \"unauthorized\" });\n\tconst url = new URL(command.ingressUrl);\n\tif (url.protocol !== \"https:\") return yield* AgentChannel.HandlerError.make({ code: \"rejected\" });\n\turl.searchParams.set(\"__dual_telegram_registration\", command.operationKey);\n\tconst state = {\n\t\tbotId,\n\t\tbotUsername: bot.username,\n\t\tingressUrl: command.ingressUrl,\n\t\tregistrationUrl: url.href\n\t};\n\tif (command.state !== void 0 && command.state.registrationUrl !== state.registrationUrl) return yield* AgentChannel.HandlerError.make({ code: \"unauthorized\" });\n\tif (command.state === void 0) {\n\t\tyield* client.getWebhookInfo(context.auth.value);\n\t\treturn {\n\t\t\tcheckpoint: true,\n\t\t\tinstallationKey: botId,\n\t\t\tkind: \"activate\",\n\t\t\toperationKey: command.operationKey,\n\t\t\tstate\n\t\t};\n\t}\n\tyield* client.setWebhook(context.auth.value, state.registrationUrl);\n\tif ((yield* client.getWebhookInfo(context.auth.value)).url !== state.registrationUrl) return yield* AgentChannel.HandlerError.make({ code: \"unavailable\" });\n\treturn {\n\t\tinstallationKey: botId,\n\t\tkind: \"activate\",\n\t\toperationKey: command.operationKey,\n\t\tstate\n\t};\n});\nfunction referenceId(destination, reference) {\n\tconst prefix = `${destination.conversationKey}/${destination.threadKey ?? \"main\"}/`;\n\tif (reference === void 0 || !String.startsWith(prefix)(reference)) return Effect.fail(AgentChannel.HandlerError.make({ code: \"rejected\" }));\n\tconst id = String.slice(prefix.length)(reference);\n\tif (!Schema.is(userKey)(id)) return Effect.fail(AgentChannel.HandlerError.make({ code: \"rejected\" }));\n\treturn pipe(Schema.decodeEffect(numericKey)(id), Effect.mapError(() => AgentChannel.HandlerError.make({ code: \"rejected\" })));\n}\nconst topicParameters = Effect.fn(\"TelegramBot.topicParameters\")(function* (destination) {\n\tif (destination.threadKey === void 0) return {};\n\treturn { message_thread_id: yield* pipe(Schema.decodeEffect(numericKey)(destination.threadKey), Effect.mapError(() => AgentChannel.HandlerError.make({ code: \"rejected\" }))) };\n});\nfunction sameTopic(destination, id) {\n\tif (id === void 0) return destination.threadKey === void 0;\n\treturn `${id}` === destination.threadKey;\n}\nfunction outcomeText(operation) {\n\tif (operation.kind === \"present_outcome\" && operation.options !== void 0) return Array.join([operation.text, ...Array.map(operation.options, (option, index) => `${index + 1}. ${option}`)], \"\\n\");\n\treturn operation.text;\n}\nconst reactions = {\n\tconfused: \"🤔\",\n\teyes: \"👀\",\n\theart: \"❤\",\n\thooray: \"🎉\",\n\tlaugh: \"😁\",\n\trocket: \"🚀\",\n\tthumbs_down: \"👎\",\n\tthumbs_up: \"👍\"\n};\nfunction desiredReaction(operation) {\n\tif (!operation.active) return [];\n\treturn [{\n\t\ttype: \"emoji\",\n\t\temoji: reactions[operation.reaction]\n\t}];\n}\nfunction reactionReference(operation, activationMessageKey) {\n\tif (operation.target.kind === \"activation\") return activationMessageKey;\n\treturn operation.target.reference;\n}\nconst performOutput = Effect.fn(\"TelegramBot.performOutput\")(function* (command, context) {\n\tconst destination = command.destination;\n\tif (!validDestination(destination)) return yield* AgentChannel.HandlerError.make({ code: \"rejected\" });\n\tconst client = yield* TelegramBotClient;\n\tconst auth = context.auth.value;\n\tconst target = { chat_id: destination.conversationKey };\n\tconst operation = command.operation;\n\tif (operation.kind === \"set_activity\") {\n\t\tif (operation.activity.kind === \"working\") {\n\t\t\tconst topic = yield* topicParameters(destination);\n\t\t\tyield* client.sendChatAction(auth, {\n\t\t\t\t...target,\n\t\t\t\t...topic,\n\t\t\t\taction: \"typing\"\n\t\t\t});\n\t\t}\n\t\treturn command.deliveryKey;\n\t}\n\tif (operation.kind === \"set_reaction\") {\n\t\tconst id = yield* referenceId(destination, reactionReference(operation, command.activationMessageKey));\n\t\tyield* client.setMessageReaction(auth, {\n\t\t\t...target,\n\t\t\tmessage_id: id,\n\t\t\treaction: desiredReaction(operation)\n\t\t});\n\t\treturn messageKey(destination, id);\n\t}\n\tif (operation.kind === \"delete_message\") {\n\t\tconst id = yield* referenceId(destination, operation.reference);\n\t\tyield* client.deleteMessage(auth, {\n\t\t\t...target,\n\t\t\tmessage_id: id\n\t\t});\n\t\treturn operation.reference;\n\t}\n\tif (operation.kind === \"update_message\") {\n\t\tif (Array.fromIterable(operation.text).length > 4096) return yield* AgentChannel.HandlerError.make({ code: \"rejected\" });\n\t\tconst id = yield* referenceId(destination, operation.reference);\n\t\tconst edited = yield* client.editMessageText(auth, {\n\t\t\t...target,\n\t\t\tmessage_id: id,\n\t\t\ttext: operation.text\n\t\t});\n\t\tif (`${edited.chat.id}` !== destination.conversationKey || edited.message_id !== id || !sameTopic(destination, edited.message_thread_id)) return yield* AgentChannel.HandlerError.make({ code: \"rejected\" });\n\t\treturn operation.reference;\n\t}\n\tif (operation.kind === \"present_outcome\" || operation.kind === \"create_message\") {\n\t\tconst text = outcomeText(operation);\n\t\tif (Array.fromIterable(text).length > 4096) return yield* AgentChannel.HandlerError.make({ code: \"rejected\" });\n\t\tif (String.isEmpty(text)) return command.deliveryKey;\n\t\tconst topic = yield* topicParameters(destination);\n\t\tconst sent = yield* client.sendMessage(auth, {\n\t\t\t...target,\n\t\t\t...topic,\n\t\t\ttext\n\t\t});\n\t\tif (`${sent.chat.id}` !== destination.conversationKey || !sameTopic(destination, sent.message_thread_id)) return yield* AgentChannel.HandlerError.make({ code: \"unknown_completion\" });\n\t\treturn messageKey(destination, sent.message_id);\n\t}\n\treturn yield* AgentChannel.HandlerError.make({ code: \"rejected\" });\n});\nconst execute = Effect.fn(\"TelegramBot.execute\")(function* (command, context) {\n\tif (command.kind === \"activate\") return yield* activate(command, context);\n\tyield* installed(command, context);\n\tif (command.kind === \"deactivate\") {\n\t\tconst client = yield* TelegramBotClient;\n\t\tif ((yield* client.getWebhookInfo(context.auth.value)).url === command.state.registrationUrl) yield* client.deleteWebhook(context.auth.value);\n\t\treturn {\n\t\t\tkind: \"deactivate\",\n\t\t\toperationKey: command.operationKey\n\t\t};\n\t}\n\tif (command.kind === \"deliver\") return {\n\t\tdeliveryKey: command.deliveryKey,\n\t\tkind: \"deliver\",\n\t\toperationKey: command.operationKey,\n\t\tproviderDeliveryKey: yield* performOutput(command, context),\n\t\tstatus: \"succeeded\"\n\t};\n\tif (command.kind !== \"receive\") return yield* AgentChannel.HandlerError.make({ code: \"rejected\" });\n\treturn {\n\t\tevents: yield* receive(command.request.body, command.state, context.deploymentSettings),\n\t\tkind: \"receive\",\n\t\toperationKey: command.operationKey,\n\t\tresponse: {\n\t\t\tbody: \"\",\n\t\t\tstatus: 200\n\t\t},\n\t\tverified: true\n\t};\n}, Effect.mapError((error) => AgentChannel.HandlerError.make({ code: error.code })));\nconst telegramBotHandlers = Plugin.toLayer(telegramBotPluginBase, (handlers) => handlers.channel(\"messages\", {\n\tcheckAccess,\n\texecute,\n\tverify: (request, context) => verify(request, context.auth.value.webhookSecret)\n}));\nconst telegramChannelLayer = telegramBotHandlers.pipe(Layer.provide(TelegramBotClient.layer), Layer.provide(FetchHttpClient.layer));\n//#endregion\nexport { TelegramBotClient, telegramBotHandlers, telegramChannelLayer };\n\n//# sourceMappingURL=telegram-bot.js.map",
9
+ "import { __exportAll } from \"./_virtual/_rolldown/runtime.js\";\nimport { layer } from \"./TelegramClient.js\";\nimport { telegramAccessToken } from \"./TelegramDefinition.js\";\nimport { TelegramLive, telegramPlugin as telegramPlugin$1 } from \"./Telegram.js\";\nimport { messagesChannel, telegramBotToken } from \"./channel/telegram-bot-definition.js\";\nimport { telegramPluginBase } from \"./definition.js\";\nimport { telegramChannelLayer } from \"./channel/telegram-bot.js\";\nimport { Plugin } from \"@dual-os/sdk\";\n//#region src/plugin.ts\nvar plugin_exports = /* @__PURE__ */ __exportAll({\n\tTelegramLive: () => TelegramLive,\n\tlayer: () => layer,\n\ttelegramAccessToken: () => telegramAccessToken,\n\ttelegramPlugin: () => telegramPlugin,\n\ttelegramPluginBase: () => telegramPluginBase\n});\nconst telegramPlugin = telegramPlugin$1.pipe(Plugin.withAuthMethod(telegramBotToken), Plugin.withAgentChannel(messagesChannel), Plugin.provide(telegramChannelLayer));\n//#endregion\nexport { TelegramLive, layer, plugin_exports, telegramAccessToken, telegramPlugin, telegramPluginBase };\n\n//# sourceMappingURL=plugin.js.map"
10
+ ],
11
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AA0BA,IAAM,yBAAyB,CAAC,UAAU;AAAA,EACzC,MAAM,SAAS;AAAA,IACd,OAAO;AAAA,IACP,SAAS;AAAA,MACR,WAAW,MAAM;AAAA,MACjB,QAAQ;AAAA,IACT;AAAA,IACA,SAAS,MAAM;AAAA,IACf,QAAQ,MAAM;AAAA,EACf;AAAA,EACA,OAAO,MAAM,WAAW,OAAO,MAAM,UAAU,MAAM,IAAI,eAAO,4BAA4B,MAAM,IAAI,IAAI,eAAO,mBAAmB,MAAM;AAAA;AAE3I,IAAM,oBAAoB,GAAU,4BAA4B,EAAE,UAAU,CAAC,QAAQ;AAAA,EACpF,OAAO,OAAO,SAAgB,QAAQ,CAAC,UAAU,MAAM,SAAS,qBAAqB,uBAAuB,KAAK,IAAI,eAAO,sBAAsB,KAAK,CAAC;AAAA,CACxJ;AAED,IAAM,YAAY,CAAC,YAAY,QAAQ,KAAK,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,WAAW,2BAA2B,CAAC;AAE1H,IAAM,UAAU,CAAC,YAAY,QAAQ,KAAK,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,YAAY,CAAC;AAE9F,IAAM,SAAS,CAAC,aAAa;AAAA,EAC5B,SAAS,UAAU,OAAO;AAAA,EAC1B,OAAO,QAAQ,OAAO;AACvB;AAOA,IAAM,oBAAoB,CAAC,OAAO,eAAe,WAAW,UAAU,KAAK,EAAE,OAAO,UAAU,EAAE,OAAO,KAAK;AAC5G,IAAM,gBAAgB,CAAC,QAAQ,YAAY,UAAU,OAAO,eAAe,kBAAkB,OAAO,UAAU;AAE9G,IAAM,qBAAqB,CAAC,SAAS,aAAa;AAAA,EACjD,IAAI,aAAa;AAAA,IAAI,OAAO;AAAA,EAC5B,MAAM,WAAW,QAAQ,UAAU,sCAAsC;AAAA,EACzE,MAAM,cAAc,OAAO,KAAK,QAAQ;AAAA,EACxC,MAAM,cAAc,OAAO,KAAK,QAAQ;AAAA,EACxC,OAAO,YAAY,WAAW,YAAY,UAAU,gBAAgB,aAAa,WAAW;AAAA;AAG7F,IAAM,mBAAmB,CAAC,YAAY,WAAW,CAAC;AAElD,IAAM,eAAe,CAAC,WAAW;AAAA,EAChC,MAAM,aAAa;AAAA,IAClB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,WAAW,aAAa;AAAA,IAAY,IAAI,OAAO,cAAc,YAAY,cAAc,MAAM;AAAA,MAC5F,MAAM,OAAO,UAAU;AAAA,MACvB,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAAA,QAC9C,MAAM,KAAK,KAAK;AAAA,QAChB,IAAI,OAAY,aAAK,OAAO;AAAA,UAAM,OAAO,OAAO,EAAE;AAAA,MACnD;AAAA,IACD;AAAA,EACA,MAAM,KAAK,OAAO;AAAA,EAClB,IAAI,OAAO,OAAO,YAAY,OAAO,MAAM;AAAA,IAC1C,MAAM,UAAU,GAAG;AAAA,IACnB,IAAI,OAAO,YAAY,YAAY,YAAY,MAAM;AAAA,MACpD,MAAM,OAAO,QAAQ;AAAA,MACrB,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAAA,QAC9C,MAAM,KAAK,KAAK;AAAA,QAChB,IAAI,OAAY,aAAK,OAAO;AAAA,UAAM,OAAO,OAAO,EAAE;AAAA,MACnD;AAAA,IACD;AAAA,EACD;AAAA;AAGD,IAAM,eAAe,CAAC,WAAW;AAAA,EAChC,MAAM,UAAU;AAAA,IACf,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,WAAW,UAAU;AAAA,IAAS,IAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AAAA,MAChF,MAAM,OAAO,OAAO;AAAA,MACpB,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAAA,QAC9C,MAAM,KAAK,KAAK;AAAA,QAChB,IAAI,OAAY,aAAK,OAAO;AAAA,UAAM,OAAO,OAAO,EAAE;AAAA,MACnD;AAAA,IACD;AAAA;AAID,IAAM,mBAAmB,WAAkB,UAAU,CAAC,QAAQ,YAAY,SAAS;AAAA,EAClF,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,aAAa,OAAO,OAAO;AAAA,EACjC,MAAM,kBAAkB,IAAI,IAAI,UAAU;AAAA,EAC1C,gBAAgB,aAAa,IAAI,gCAAgC,WAAW,CAAC;AAAA,EAC7E,OAAO,kBAAkB,OAAO,WAAW;AAAA,OACvC;AAAA,IACH,gBAAgB,iBAAiB,OAAO,OAAO;AAAA,IAC/C,aAAa,cAAc,QAAQ,YAAY,WAAW,KAAK;AAAA,IAC/D,KAAK,gBAAgB;AAAA,EACtB,CAAC,CAAC;AAAA,EACF,OAAO,EAAE,OAAO;AAAA,IACf,cAAc;AAAA,IACd,iBAAiB,gBAAgB;AAAA,EAClC,EAAE;AAAA,CACF;AAMD,IAAM,eAAe,CAAC,OAAO,YAAY,SAAS,WAAW,mBAAmB,MAAM,SAAS,cAAc,MAAM,QAAQ,YAAY,QAAQ,OAAO,CAAC,CAAC,IAAI,SAAc,MAAY,IAAI,eAAO,mBAAmB;AAAA,EACnN,SAAS;AAAA,EACT;AACD,CAAC,CAAC;AACF,IAAM,qBAAqB,WAAkB,UAAU,CAAC,OAAO,SAAS;AAAA,EACvE,IAAI,OAAO,oBAAyB;AAAA,IAAG;AAAA,EACvC,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,aAAa,OAAO,OAAO;AAAA,EACjC,KAAK,OAAO,oBAA2B,OAAc,EAAE,KAAK,QAAc,CAAC,CAAC,EAAE,OAAO,kBAAkB,OAAO,eAAe,UAAU,CAAC,CAAC,GAAG,QAAQ,MAAM;AAAA,IAAiB;AAAA,EAC3K,OAAO,kBAAkB,OAAO,cAAc,UAAU,CAAC;AAAA,CACzD;AACD,IAAM,gBAAgB,WAAkB,UAAU,CAAC,OAAO,YAAY,SAAS;AAAA,EAC9E,OAAO,aAAa,OAAO,YAAY,SAAS,GAAG;AAAA,EACnD,MAAM,OAAO,OAAO,oBAA2B,iBAAgB,EAAE,MAAM,QAAQ,IAAI;AAAA,EACnF,MAAM,QAAQ;AAAA,OACV,MAAM;AAAA,IACT,cAAc,KAAK;AAAA,EACpB;AAAA,EACA,IAAI,wBAA8B,MAAM,OAAO,WAAW,CAAC,CAAC,KAAK,CAAC,MAAW,MAAM,OAAO,WAAW,CAAC,GAAG,CAAC,SAAS,KAAK,UAAe,SAAC;AAAA,IAAG,OAAO;AAAA,MACjJ,QAAQ,CAAC;AAAA,MACT;AAAA,IACD;AAAA,EACA,MAAM,SAAS,KAAK,aAAa,KAAK,MAAM,KAAK,gBAAgB,KAAK,MAAM,KAAK,kBAAkB,KAAK,MAAM,KAAK,wBAAwB,KAAK;AAAA,EAChJ,MAAM,SAAS,KAAK,aAAa,KAAK,MAAM,KAAK,gBAAgB,KAAK,MAAM,KAAK,kBAAkB,MAAM;AAAA,EACzG,IAAI,wBAA8B,MAAM,OAAO,WAAW,CAAC,CAAC,GAAG;AAAA,IAC9D,MAAM,KAAK,WAAgB,YAAI,aAAa,IAAI,IAAI,OAAO,MAAM;AAAA,IACjE,IAAI,OAAY,aAAK,CAAC,UAAe,MAAM,OAAO,WAAW,CAAC,GAAG,EAAE;AAAA,MAAG,OAAO;AAAA,QAC5E,QAAQ,CAAC;AAAA,QACT;AAAA,MACD;AAAA,EACD;AAAA,EACA,IAAI,wBAA8B,MAAM,OAAO,WAAW,CAAC,CAAC,GAAG;AAAA,IAC9D,MAAM,KAAK,WAAgB,YAAI,aAAa,IAAI,IAAI,OAAO,MAAM;AAAA,IACjE,IAAI,OAAY,aAAK,CAAC,UAAe,MAAM,OAAO,WAAW,CAAC,GAAG,EAAE;AAAA,MAAG,OAAO;AAAA,QAC5E,QAAQ,CAAC;AAAA,QACT;AAAA,MACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA,IACN,QAAQ,CAAC;AAAA,MACR,KAAK,UAAU,KAAK;AAAA,MACpB,SAAS;AAAA,IACV,CAAC;AAAA,IACD;AAAA,EACD;AAAA,CACA;AAED,IAAM,gBAAe,eAAO,QAAQ,qBAAoB,CAAC,mBAAmB,eAAe,MAAM,YAAY,CAAC,aAAa,SAAS,OAAO,uBAAuB,GAAU,gDAAgD,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACxP,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,kBAAkB;AAAA,OACrD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,gBAAgB,GAAU,yCAAyC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EAC1G,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,oBAAoB;AAAA,OACvD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,CAAC,EAAE,MAAM,QAAQ,CAAC,aAAa,SAAS,OAAO,kBAAkB,GAAU,uCAAuC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EAChJ,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,sBAAsB;AAAA,OACzD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,OAAO,GAAU,4BAA4B,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACpF,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,QAAQ;AAAA,OAC3C,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,SAAS,GAAU,8BAA8B,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACxF,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,UAAU;AAAA,OAC7C,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,UAAU,GAAU,+BAA+B,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EAC1F,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,cAAc;AAAA,OACjD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,mBAAmB,GAAU,wCAAwC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EAC5G,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,mBAAmB;AAAA,OACtD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,aAAa,GAAU,kCAAkC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EAChG,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,aAAa;AAAA,OAChD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,CAAC,EAAE,MAAM,QAAQ,CAAC,aAAa,SAAS,OAAO,OAAO,GAAU,4BAA4B,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EAC1H,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,QAAQ;AAAA,OAC3C,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,CAAC,EAAE,MAAM,WAAW,CAAC,aAAa,SAAS,OAAO,kBAAkB,GAAU,0CAA0C,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACtJ,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,cAAc;AAAA,OACjD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,qBAAqB,GAAU,6CAA6C,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACnH,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,gBAAgB;AAAA,OACnD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,oBAAoB,GAAU,4CAA4C,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACjH,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,eAAe;AAAA,OAClD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,kBAAkB,GAAU,0CAA0C,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EAC7G,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,cAAc;AAAA,OACjD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,cAAc,GAAU,sCAAsC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACrG,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,UAAU;AAAA,OAC7C,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,oBAAoB,GAAU,4CAA4C,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACjH,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,eAAe;AAAA,OAClD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,iBAAiB,GAAU,yCAAyC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EAC3G,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,aAAa;AAAA,OAChD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,iBAAiB,GAAU,yCAAyC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EAC3G,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,aAAa;AAAA,OAChD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,oBAAoB,GAAU,4CAA4C,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACjH,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,eAAe;AAAA,OAClD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,gBAAgB,GAAU,wCAAwC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACzG,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,YAAY;AAAA,OAC/C,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,cAAc,GAAU,sCAAsC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACrG,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,UAAU;AAAA,OAC7C,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,gBAAgB,GAAU,wCAAwC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACzG,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,YAAY;AAAA,OAC/C,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,cAAc,GAAU,sCAAsC,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACrG,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,UAAU;AAAA,OAC7C,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,EAAE,OAAO,sBAAsB,GAAU,8CAA8C,EAAE,UAAU,CAAC,OAAO,SAAS;AAAA,EACrH,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,OAAO,kBAAkB,OAAO,iBAAiB;AAAA,OACpD,OAAO,OAAO;AAAA,OACd;AAAA,EACJ,CAAC,CAAC;AAAA,CACF,CAAC,CAAC,EAAE,QAAQ,UAAU;AAAA,EACtB,UAAU,CAAC,OAAO,YAAY,iBAAiB,MAAM,QAAQ,MAAM,YAAY,OAAO;AAAA,EACtF,YAAY,CAAC,OAAO,YAAY,mBAAmB,MAAM,OAAO,OAAO;AAAA,EACvE,OAAO,CAAC,OAAO,YAAY,cAAc,OAAO,MAAM,YAAY,OAAO;AAAA,EACzE,QAAQ,CAAC,OAAO,YAAY,aAAa,OAAO,MAAM,YAAY,SAAS,GAAG;AAC/E,CAAC,CAAC;AACF,IAAM,iBAAiB,oBAAmB,KAAK,eAAO,QAAQ,aAAY,GAAG,eAAO,QAAQ,MAAK,GAAG,eAAO,QAAQ,MAAqB,CAAC;;;ACvUzI,IAAM,YAAY,IAAW,MAAM,WAAiB;AAAA,EACnD,SAAS;AAAA,EACT,SAAS;AACV,CAAC,CAAC;AACF,IAAM,MAAM,OAAc;AAAA,EACzB,IAAI;AAAA,EACJ,QAAQ,QAAe,IAAI;AAAA,EAC3B,UAAU;AACX,CAAC;AACD,IAAM,UAAU,OAAc,EAAE,KAAK,QAAc,CAAC;AACpD,IAAM,cAAc,OAAc;AAAA,EACjC,MAAM,OAAc,EAAE,IAAI,IAAW,CAAC;AAAA,EACtC,YAAY;AAAA,EACZ,mBAAmB,YAAmB,SAAS;AAChD,CAAC;AACD,IAAM,UAAU,OAAc;AAAA,EAC7B,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,IAAI,QAAe,KAAK;AAAA,EACxB,YAAY,YAAmB,OAAc,EAAE,aAAa,YAAmB,OAAc,EAAE,CAAC,CAAC;AAClG,CAAC;AACD,IAAI,qBAAqB,cAAc,aAAmB,EAAE,sBAAsB;AAAA,EACjF,MAAM,qBAAa;AAAA,EACnB,mBAAmB,YAAmB,OAAc;AACrD,CAAC,EAAE;AAAC;AACJ,SAAS,aAAa,CAAC,gBAAgB;AAAA,EACtC,IAAI;AAAA,IAAgB,OAAO;AAAA,EAC3B,OAAO;AAAA;AAER,SAAS,SAAS,CAAC,QAAQ,gBAAgB;AAAA,EAC1C,IAAI,WAAW;AAAA,IAAK,OAAO;AAAA,EAC3B,IAAI,WAAW,OAAO,WAAW;AAAA,IAAK,OAAO;AAAA,EAC7C,IAAI,UAAU;AAAA,IAAK,OAAO,cAAc,cAAc;AAAA,EACtD,OAAO;AAAA;AAER,SAAS,UAAU,CAAC,YAAY;AAAA,EAC/B,IAAI,YAAY,gBAAqB;AAAA,IAAG,OAAO,CAAC;AAAA,EAChD,OAAO,EAAE,mBAAmB,WAAW,YAAY;AAAA;AAEpD,IAAM,OAAO,KAAW,UAAU,GAAG;AAAA,EACpC,MAAM,YAAY,OAAO;AAAA,EACzB,MAAM,SAAS,KAAK,WAAW,WAAsB,KAAK,WAA6B,0BAA0B,GAAG,UAA4B,CAAC,CAAC;AAAA,EAClJ,MAAM,OAAO,GAAU,wBAAwB,EAAE,UAAU,CAAC,MAAM,QAAQ,MAAM,QAAQ,iBAAiB,OAAO;AAAA,IAC/G,MAAM,UAAU,OAAO,KAAK,KAAuB,OAAO,KAAK,YAAY,QAAQ,GAAG,SAA2B,IAAI,GAAG,SAAgB,MAAM,mBAAmB,KAAK,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC;AAAA,IAC5L,MAAM,WAAW,OAAO,KAAK,OAAO,QAAQ,OAAO,GAAG,eAAsB,aAA6B,EAAE,UAAU,SAAS,CAAC,GAAG,QAAe,YAAY,GAAG,SAAgB,MAAM,mBAAmB,KAAK,EAAE,MAAM,cAAc,cAAc,EAAE,CAAC,CAAC,CAAC;AAAA,IACvP,MAAM,WAAW,MAAa,CAAC,OAAc;AAAA,MAC5C,IAAI,QAAe,IAAI;AAAA,MACvB;AAAA,IACD,CAAC,GAAG,OAAO,CAAC;AAAA,IACZ,MAAM,UAAU,OAAO,KAAK,eAAkC,QAAQ,EAAE,QAAQ,GAAG,QAAe,YAAY,GAAG,SAAgB,CAAC,UAAU;AAAA,MAC3I,IAAI,SAAS,UAAU,OAAO,SAAS,SAAS,KAAK;AAAA,QACpD,IAAI;AAAA,UAAgB,OAAO,mBAAmB,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAAA,QACjF,IAAI,MAAM,SAAS,kBAAkB,MAAM,SAAS;AAAA,UAAmB,OAAO,mBAAmB,KAAK,EAAE,MAAM,cAAc,CAAC;AAAA,MAC9H;AAAA,MACA,OAAO,mBAAmB,KAAK,EAAE,MAAM,UAAU,SAAS,QAAQ,cAAc,EAAE,CAAC;AAAA,KACnF,CAAC;AAAA,IACF,IAAI,QAAQ,MAAM,SAAS,UAAU,OAAO,SAAS,SAAS;AAAA,MAAK,OAAO,QAAQ;AAAA,IAClF,IAAI,CAAC,QAAQ,IAAI;AAAA,MAChB,IAAI,SAAS,UAAU;AAAA,QAAK,OAAO,OAAO,mBAAmB,KAAK,EAAE,MAAM,cAAc,cAAc,EAAE,CAAC;AAAA,MACzG,OAAO,OAAO,mBAAmB,KAAK;AAAA,QACrC,MAAM,UAAU,QAAQ,YAAY,cAAc;AAAA,WAC/C,WAAW,QAAQ,UAAU;AAAA,MACjC,CAAC;AAAA,IACF;AAAA,IACA,OAAO,OAAO,mBAAmB,KAAK,EAAE,MAAM,cAAc,cAAc,EAAE,CAAC;AAAA,GAC7E;AAAA,EACD,OAAO;AAAA,IACN,eAAe,CAAC,MAAM,SAAS,KAAK,MAAM,iBAAiB,MAAM,QAAe,IAAI,CAAC;AAAA,IACrF,eAAe,CAAC,SAAS,KAAK,MAAM,iBAAiB,EAAE,sBAAsB,MAAM,GAAG,QAAe,IAAI,CAAC;AAAA,IAC1G,iBAAiB,CAAC,MAAM,SAAS,KAAK,MAAM,mBAAmB,MAAM,WAAW;AAAA,IAChF,OAAO,CAAC,SAAS,KAAK,MAAM,SAAS,CAAC,GAAG,GAAG;AAAA,IAC5C,gBAAgB,CAAC,SAAS,KAAK,MAAM,kBAAkB,CAAC,GAAG,OAAO;AAAA,IAClE,gBAAgB,CAAC,MAAM,SAAS,KAAK,MAAM,kBAAkB,MAAM,QAAe,IAAI,CAAC;AAAA,IACvF,aAAa,CAAC,MAAM,SAAS,KAAK,MAAM,eAAe,MAAM,aAAa,IAAI;AAAA,IAC9E,oBAAoB,CAAC,MAAM,SAAS,KAAK,MAAM,sBAAsB,MAAM,QAAe,IAAI,CAAC;AAAA,IAC/F,YAAY,CAAC,MAAM,QAAQ,KAAK,MAAM,cAAc;AAAA,MACnD,iBAAiB,CAAC,SAAS;AAAA,MAC3B,sBAAsB;AAAA,MACtB,cAAc,KAAK;AAAA,MACnB;AAAA,IACD,GAAG,QAAe,IAAI,CAAC;AAAA,EACxB;AAAA,CACA;AACD,IAAI,oBAAoB,cAAc,SAAgB,EAAE,6DAA6D,EAAE;AAAA,SAC/G,QAAQ,OAAa,MAAM,IAAI;AACvC;;;ACzFA,4BAAS;AAIT,IAAM,aAAa,IAAW,MAAM,WAAiB;AAAA,EACpD,SAAS;AAAA,EACT,SAAS;AACV,CAAC,CAAC;AACF,IAAM,OAAO,OAAc;AAAA,EAC1B,IAAI;AAAA,EACJ,QAAQ;AACT,CAAC;AACD,IAAM,OAAO,OAAc;AAAA,EAC1B,IAAI,IAAW,MAAM,WAAiB;AAAA,IACrC,SAAS;AAAA,IACT,SAAS;AAAA,EACV,CAAC,CAAC;AAAA,EACF,MAAM;AACP,CAAC;AACD,IAAM,SAAS,OAAc;AAAA,EAC5B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM,YAAmB,IAAI;AAC9B,CAAC;AACD,IAAM,UAAU,OAAc;AAAA,EAC7B,wBAAwB,YAAmB,OAAa;AAAA,EACxD;AAAA,EACA,MAAM,QAAe,MAAM,oBAA2B,YAAY,CAAC;AAAA,EACnE,UAAU,YAAmB,YAAa,MAAM,CAAC;AAAA,EACjD,MAAM,YAAmB,IAAI;AAAA,EAC7B,gBAAgB,YAAmB,OAAc,EAAE,MAAM,QAAc,CAAC,CAAC;AAAA,EACzE,sBAAsB,YAAmB,QAAc;AAAA,EACvD,YAAY;AAAA,EACZ,mBAAmB,YAAmB,UAAU;AAAA,EAChD,kBAAkB,YAAmB,OAAc;AAAA,IAClD;AAAA,IACA,MAAM,YAAmB,IAAI;AAAA,IAC7B,YAAY;AAAA,IACZ,mBAAmB,YAAmB,UAAU;AAAA,EACjD,CAAC,CAAC;AAAA,EACF,aAAa,YAAmB,IAAI;AAAA,EACpC,MAAM,YAAmB,OAAa;AACvC,CAAC;AACD,IAAM,mBAAmB,QAAc,MAAM,UAAiB,4BAA4B,CAAC;AAC3F,IAAM,SAAS,OAAc;AAAA,EAC5B,gBAAgB,YAAmB,OAAO;AAAA,EAC1C,SAAS,YAAmB,OAAO;AAAA,EACnC,WAAW;AACZ,CAAC;AACD,SAAS,MAAM,CAAC,SAAS,QAAQ;AAAA,EAChC,MAAM,UAAU,QAAa,UAAiB,QAAQ,OAAO,GAAG,CAAC,UAAU,YAAmB,MAAM,EAAE,MAAM,iCAAiC;AAAA,EAC7I,MAAM,WAAW,QAAQ,KAAK;AAAA,EAC9B,IAAI,QAAQ,WAAW,UAAU,QAAQ,WAAW,KAAK,aAAkB;AAAA,IAAG,OAAO,MAAY,qBAAa,aAAa,KAAK,EAAE,MAAM,eAAe,CAAC,CAAC;AAAA,EACzJ,MAAM,SAAS,IAAI,YAAY,EAAE,OAAO,QAAQ;AAAA,EAChD,MAAM,WAAW,IAAI,YAAY,EAAE,OAAO,MAAM;AAAA,EAChD,IAAI,OAAO,eAAe,SAAS,cAAc,CAAC,iBAAgB,QAAQ,QAAQ;AAAA,IAAG,OAAO,MAAY,qBAAa,aAAa,KAAK,EAAE,MAAM,eAAe,CAAC,CAAC;AAAA,EAChK,OAAO,SAAe,EAAE,UAAU,KAAK,CAAC;AAAA;AAEzC,SAAS,UAAU,CAAC,aAAa,IAAI;AAAA,EACpC,OAAO,GAAG,YAAY,mBAAmB,YAAY,aAAa,UAAU;AAAA;AAE7E,SAAS,QAAQ,CAAC,MAAM;AAAA,EACvB,IAAI,SAAS;AAAA,IAAW,OAAO;AAAA,EAC/B,OAAO;AAAA;AAER,SAAS,SAAS,CAAC,IAAI;AAAA,EACtB,IAAI,OAAY;AAAA,IAAG,OAAO,CAAC;AAAA,EAC3B,OAAO,EAAE,WAAW,GAAG,KAAK;AAAA;AAE7B,SAAS,QAAQ,CAAC,aAAa,OAAO;AAAA,EACrC,IAAI,UAAe;AAAA,IAAG,OAAO,CAAC;AAAA,EAC9B,OAAO,EAAE,mBAAmB,WAAW,aAAa,MAAM,UAAU,EAAE;AAAA;AAEvE,SAAS,OAAO,CAAC,cAAc,UAAU;AAAA,EACxC,IAAI,aAAa,SAAS;AAAA,IAAU,OAAO,SAAS;AAAA,EACpD,OAAO,qBAA2B,SAAS,OAAO,KAAK,UAAe,SAAS,SAAS,aAAa,eAAe,KAAK,aAAa,cAAmB,aAAK,UAAe,SAAS,SAAS,GAAG,aAAa,mBAAmB,aAAa,WAAW;AAAA;AAE3P,IAAM,UAAU,GAAU,qBAAqB,EAAE,UAAU,CAAC,MAAM,OAAO,UAAU;AAAA,EAClF,MAAM,QAAQ,OAAO,KAAK,aAAoB,eAAsB,MAAM,CAAC,EAAE,IAAI,GAAG,SAAgB,MAAM,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC;AAAA,EAC/J,MAAM,SAAS,MAAM;AAAA,EACrB,IAAI,WAAgB,aAAK,MAAM,mBAAwB,aAAK,OAAO,SAAc,aAAK,OAAO,KAAK,UAAU,GAAG,OAAO,KAAK,SAAS,MAAM,SAAS,OAAO,gBAAqB,aAAK,OAAO,2BAAgC,aAAK,OAAO,mBAAwB,aAAK,OAAO,yBAAyB,QAAQ,OAAO,SAAc,aAAK,QAAe,OAAO,IAAI,KAAK,OAAO,KAAK,SAAS,aAAa,OAAO,KAAK,SAAS,WAAW,OAAO,KAAK,SAAS;AAAA,IAAc,OAAO,CAAC;AAAA,EACld,MAAM,eAAe;AAAA,IACpB,iBAAiB,GAAG,OAAO,KAAK;AAAA,IAChC,MAAM,SAAS,OAAO,KAAK,IAAI;AAAA,OAC5B,UAAU,OAAO,iBAAiB;AAAA,EACtC;AAAA,EACA,IAAI,CAAC,QAAQ,cAAc,QAAQ;AAAA,IAAG,OAAO,CAAC;AAAA,EAC9C,MAAM,OAAO,OAAO;AAAA,EACpB,MAAM,WAAW,OAAO,YAAY,CAAC;AAAA,EACrC,MAAM,YAAY,QAAa,UAAU,CAAC,SAAS,KAAK,SAAS,KAAK,KAAK,SAAS,KAAK,UAAU,KAAK,UAAU,CAAC,MAAW,UAAU,CAAC,UAAU,KAAK,SAAS,gBAAgB,KAAK,SAAS,2BAA2B,KAAK,SAAS,UAAU,KAAK,SAAS,UAAU,KAAK,SAAS,KAAK,SAAS,KAAK,UAAU,KAAK,SAAS,KAAK,SAAS,KAAK,MAAM,CAAC;AAAA,EAC7V,MAAM,WAAW,YAAmB,MAAM,WAAW;AAAA,EACrD,MAAM,WAAW,MAAW,WAAW,CAAC,SAAS;AAAA,IAChD,MAAM,QAAQ,YAAmB,MAAa,KAAK,QAAQ,KAAK,SAAS,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,IAC3F,OAAO,KAAK,SAAS,aAAa,UAAU,IAAI,cAAc,KAAK,SAAS,kBAAkB,GAAG,KAAK,MAAM,SAAS,MAAM,SAAS,KAAK,SAAS,iBAAiB,KAAK,WAAW,KAAK,GAAU,gBAAgB,EAAE,KAAK,KAAK,SAAgB,IAAI,UAAU,EAAE,KAAK;AAAA,GACnQ;AAAA,EACD,MAAM,QAAQ,OAAO;AAAA,EACrB,MAAM,aAAa,UAAe,aAAK,GAAG,MAAM,MAAM,SAAS,MAAM,SAAS,MAAM,MAAM,WAAW,QAAQ,MAAM,KAAK,OAAO,OAAO,KAAK,MAAM,MAAM,sBAAsB,OAAO;AAAA,EACpL,MAAM,UAAU,aAAa,SAAS,YAAY,YAAY,cAAc,SAAS,cAAc;AAAA,EACnG,MAAM,OAAO,MAAW,WAAW,CAAC,SAAS;AAAA,IAC5C,IAAI,KAAK,SAAS,iBAAiB,KAAK,WAAW;AAAA,MAAG,OAAO;AAAA,IAC7D,MAAM,UAAU,YAAmB,MAAa,GAAG,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,IACrE,OAAO,YAAY,WAAW,YAAY,SAAS;AAAA,GACnD;AAAA,EACD,MAAM,WAAW;AAAA,IAChB;AAAA,IACA,UAAU,GAAG,MAAM;AAAA,IACnB,WAAW,GAAG,OAAO,KAAK;AAAA,IAC1B,WAAW,UAAmB,YAAoB,OAAO,OAAO,IAAG,CAAC;AAAA,EACrE;AAAA,EACA,IAAI,QAAQ;AAAA,IAAS,OAAO,CAAC;AAAA,SACzB;AAAA,MACH,MAAM;AAAA,IACP,CAAC;AAAA,EACD,OAAO,CAAC;AAAA,OACJ;AAAA,IACH,SAAS;AAAA,MACR;AAAA,SACG,SAAS,cAAc,KAAK;AAAA,IAChC;AAAA,IACA,MAAM;AAAA,IACN,YAAY,WAAW,cAAc,OAAO,UAAU;AAAA,IACtD;AAAA,EACD,CAAC;AAAA,CACD;;;ACrHD,IAAM,aAAa,iBAAwB,MAAM,MAAa,GAAG,WAAiB;AAAA,EACjF,SAAS;AAAA,EACT,SAAS;AACV,CAAC,CAAC;AACF,SAAS,gBAAgB,CAAC,aAAa;AAAA,EACtC,IAAI,CAAC,GAAU,OAAO,EAAE,YAAY,eAAe;AAAA,IAAG,OAAO;AAAA,EAC7D,IAAI,YAAY,cAAmB,aAAK,CAAC,GAAU,OAAO,EAAE,YAAY,SAAS;AAAA,IAAG,OAAO;AAAA,EAC3F,IAAI,YAAY,SAAS;AAAA,IAAU,OAAO,CAAC,WAAkB,GAAG,EAAE,YAAY,eAAe;AAAA,EAC7F,OAAO,WAAkB,GAAG,EAAE,YAAY,eAAe;AAAA;AAE1D,SAAS,WAAW,CAAC,UAAU,SAAS;AAAA,EACvC,IAAI,CAAC,iBAAiB,SAAS,YAAY,KAAK,CAAC,QAAQ,SAAS,cAAc,QAAQ,kBAAkB,KAAK,CAAC,GAAU,OAAO,EAAE,SAAS,SAAS,KAAK,SAAS,aAAa,SAAS,YAAY,SAAS,aAAa,oBAAoB,SAAS,aAAa,SAAS,cAAc,MAAa,GAAG,EAAE,QAAQ,KAAK,MAAM,QAAQ,EAAE,MAAM,QAAQ,mBAAmB,WAAW,gBAAgB,CAAC,UAAe,QAAQ,mBAAmB,mBAAmB,SAAS,SAAS;AAAA,IAAG,OAAO,SAAe,EAAE,UAAU,OAAO,CAAC;AAAA,EACpgB,OAAO,SAAe,EAAE,UAAU,QAAQ,CAAC;AAAA;AAE5C,SAAS,SAAS,CAAC,SAAS,SAAS;AAAA,EACpC,IAAI,QAAQ,oBAAoB,QAAQ,MAAM,SAAS,QAAQ,MAAM,UAAU,MAAa,GAAG,EAAE,QAAQ,KAAK,MAAM,QAAQ,EAAE;AAAA,IAAI,OAAO,MAAY,qBAAa,aAAa,KAAK,EAAE,MAAM,eAAe,CAAC,CAAC;AAAA,EAC7M,OAAO;AAAA;AAER,IAAM,WAAW,GAAU,sBAAsB,EAAE,UAAU,CAAC,SAAS,SAAS;AAAA,EAC/E,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,MAAM,OAAO,OAAO,MAAM,QAAQ,KAAK,KAAK;AAAA,EAClD,MAAM,QAAQ,GAAG,IAAI;AAAA,EACrB,IAAI,UAAU,MAAa,GAAG,EAAE,QAAQ,KAAK,MAAM,QAAQ,EAAE,MAAM,QAAQ,UAAe,cAAM,QAAQ,MAAM,UAAU,SAAS,QAAQ,MAAM,eAAe,QAAQ;AAAA,IAAa,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,eAAe,CAAC;AAAA,EACxP,MAAM,MAAM,IAAI,IAAI,QAAQ,UAAU;AAAA,EACtC,IAAI,IAAI,aAAa;AAAA,IAAU,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC;AAAA,EAChG,IAAI,aAAa,IAAI,gCAAgC,QAAQ,YAAY;AAAA,EACzE,MAAM,QAAQ;AAAA,IACb;AAAA,IACA,aAAa,IAAI;AAAA,IACjB,YAAY,QAAQ;AAAA,IACpB,iBAAiB,IAAI;AAAA,EACtB;AAAA,EACA,IAAI,QAAQ,UAAe,aAAK,QAAQ,MAAM,oBAAoB,MAAM;AAAA,IAAiB,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,eAAe,CAAC;AAAA,EAC9J,IAAI,QAAQ,UAAe,WAAG;AAAA,IAC7B,OAAO,OAAO,eAAe,QAAQ,KAAK,KAAK;AAAA,IAC/C,OAAO;AAAA,MACN,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,cAAc,QAAQ;AAAA,MACtB;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO,OAAO,WAAW,QAAQ,KAAK,OAAO,MAAM,eAAe;AAAA,EAClE,KAAK,OAAO,OAAO,eAAe,QAAQ,KAAK,KAAK,GAAG,QAAQ,MAAM;AAAA,IAAiB,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,cAAc,CAAC;AAAA,EAC1J,OAAO;AAAA,IACN,iBAAiB;AAAA,IACjB,MAAM;AAAA,IACN,cAAc,QAAQ;AAAA,IACtB;AAAA,EACD;AAAA,CACA;AACD,SAAS,WAAW,CAAC,aAAa,WAAW;AAAA,EAC5C,MAAM,SAAS,GAAG,YAAY,mBAAmB,YAAY,aAAa;AAAA,EAC1E,IAAI,cAAmB,aAAK,CAAC,WAAkB,MAAM,EAAE,SAAS;AAAA,IAAG,OAAO,MAAY,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC,CAAC;AAAA,EAC1I,MAAM,KAAK,MAAa,OAAO,MAAM,EAAE,SAAS;AAAA,EAChD,IAAI,CAAC,GAAU,OAAO,EAAE,EAAE;AAAA,IAAG,OAAO,MAAY,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC,CAAC;AAAA,EACpG,OAAO,KAAK,aAAoB,UAAU,EAAE,EAAE,GAAG,SAAgB,MAAM,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC;AAAA;AAE7H,IAAM,kBAAkB,GAAU,6BAA6B,EAAE,UAAU,CAAC,aAAa;AAAA,EACxF,IAAI,YAAY,cAAmB;AAAA,IAAG,OAAO,CAAC;AAAA,EAC9C,OAAO,EAAE,mBAAmB,OAAO,KAAK,aAAoB,UAAU,EAAE,YAAY,SAAS,GAAG,SAAgB,MAAM,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC,EAAE;AAAA,CAC7K;AACD,SAAS,SAAS,CAAC,aAAa,IAAI;AAAA,EACnC,IAAI,OAAY;AAAA,IAAG,OAAO,YAAY,cAAmB;AAAA,EACzD,OAAO,GAAG,SAAS,YAAY;AAAA;AAEhC,SAAS,WAAW,CAAC,WAAW;AAAA,EAC/B,IAAI,UAAU,SAAS,qBAAqB,UAAU,YAAiB;AAAA,IAAG,OAAO,KAAW,CAAC,UAAU,MAAM,GAAG,KAAU,UAAU,SAAS,CAAC,QAAQ,UAAU,GAAG,QAAQ,MAAM,QAAQ,CAAC,GAAG;AAAA,CAAI;AAAA,EACjM,OAAO,UAAU;AAAA;AAElB,IAAM,YAAY;AAAA,EACjB,UAAU;AAAA,EACV,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,WAAW;AACZ;AACA,SAAS,eAAe,CAAC,WAAW;AAAA,EACnC,IAAI,CAAC,UAAU;AAAA,IAAQ,OAAO,CAAC;AAAA,EAC/B,OAAO,CAAC;AAAA,IACP,MAAM;AAAA,IACN,OAAO,UAAU,UAAU;AAAA,EAC5B,CAAC;AAAA;AAEF,SAAS,iBAAiB,CAAC,WAAW,sBAAsB;AAAA,EAC3D,IAAI,UAAU,OAAO,SAAS;AAAA,IAAc,OAAO;AAAA,EACnD,OAAO,UAAU,OAAO;AAAA;AAEzB,IAAM,gBAAgB,GAAU,2BAA2B,EAAE,UAAU,CAAC,SAAS,SAAS;AAAA,EACzF,MAAM,cAAc,QAAQ;AAAA,EAC5B,IAAI,CAAC,iBAAiB,WAAW;AAAA,IAAG,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC;AAAA,EACrG,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,OAAO,QAAQ,KAAK;AAAA,EAC1B,MAAM,SAAS,EAAE,SAAS,YAAY,gBAAgB;AAAA,EACtD,MAAM,YAAY,QAAQ;AAAA,EAC1B,IAAI,UAAU,SAAS,gBAAgB;AAAA,IACtC,IAAI,UAAU,SAAS,SAAS,WAAW;AAAA,MAC1C,MAAM,QAAQ,OAAO,gBAAgB,WAAW;AAAA,MAChD,OAAO,OAAO,eAAe,MAAM;AAAA,WAC/B;AAAA,WACA;AAAA,QACH,QAAQ;AAAA,MACT,CAAC;AAAA,IACF;AAAA,IACA,OAAO,QAAQ;AAAA,EAChB;AAAA,EACA,IAAI,UAAU,SAAS,gBAAgB;AAAA,IACtC,MAAM,KAAK,OAAO,YAAY,aAAa,kBAAkB,WAAW,QAAQ,oBAAoB,CAAC;AAAA,IACrG,OAAO,OAAO,mBAAmB,MAAM;AAAA,SACnC;AAAA,MACH,YAAY;AAAA,MACZ,UAAU,gBAAgB,SAAS;AAAA,IACpC,CAAC;AAAA,IACD,OAAO,WAAW,aAAa,EAAE;AAAA,EAClC;AAAA,EACA,IAAI,UAAU,SAAS,kBAAkB;AAAA,IACxC,MAAM,KAAK,OAAO,YAAY,aAAa,UAAU,SAAS;AAAA,IAC9D,OAAO,OAAO,cAAc,MAAM;AAAA,SAC9B;AAAA,MACH,YAAY;AAAA,IACb,CAAC;AAAA,IACD,OAAO,UAAU;AAAA,EAClB;AAAA,EACA,IAAI,UAAU,SAAS,kBAAkB;AAAA,IACxC,IAAI,aAAmB,UAAU,IAAI,EAAE,SAAS;AAAA,MAAM,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC;AAAA,IACvH,MAAM,KAAK,OAAO,YAAY,aAAa,UAAU,SAAS;AAAA,IAC9D,MAAM,SAAS,OAAO,OAAO,gBAAgB,MAAM;AAAA,SAC/C;AAAA,MACH,YAAY;AAAA,MACZ,MAAM,UAAU;AAAA,IACjB,CAAC;AAAA,IACD,IAAI,GAAG,OAAO,KAAK,SAAS,YAAY,mBAAmB,OAAO,eAAe,MAAM,CAAC,UAAU,aAAa,OAAO,iBAAiB;AAAA,MAAG,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC;AAAA,IAC3M,OAAO,UAAU;AAAA,EAClB;AAAA,EACA,IAAI,UAAU,SAAS,qBAAqB,UAAU,SAAS,kBAAkB;AAAA,IAChF,MAAM,OAAO,YAAY,SAAS;AAAA,IAClC,IAAI,aAAmB,IAAI,EAAE,SAAS;AAAA,MAAM,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC;AAAA,IAC7G,IAAI,QAAe,IAAI;AAAA,MAAG,OAAO,QAAQ;AAAA,IACzC,MAAM,QAAQ,OAAO,gBAAgB,WAAW;AAAA,IAChD,MAAM,OAAO,OAAO,OAAO,YAAY,MAAM;AAAA,SACzC;AAAA,SACA;AAAA,MACH;AAAA,IACD,CAAC;AAAA,IACD,IAAI,GAAG,KAAK,KAAK,SAAS,YAAY,mBAAmB,CAAC,UAAU,aAAa,KAAK,iBAAiB;AAAA,MAAG,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAAA,IACrL,OAAO,WAAW,aAAa,KAAK,UAAU;AAAA,EAC/C;AAAA,EACA,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC;AAAA,CACjE;AACD,IAAM,UAAU,GAAU,qBAAqB,EAAE,UAAU,CAAC,SAAS,SAAS;AAAA,EAC7E,IAAI,QAAQ,SAAS;AAAA,IAAY,OAAO,OAAO,SAAS,SAAS,OAAO;AAAA,EACxE,OAAO,UAAU,SAAS,OAAO;AAAA,EACjC,IAAI,QAAQ,SAAS,cAAc;AAAA,IAClC,MAAM,SAAS,OAAO;AAAA,IACtB,KAAK,OAAO,OAAO,eAAe,QAAQ,KAAK,KAAK,GAAG,QAAQ,QAAQ,MAAM;AAAA,MAAiB,OAAO,OAAO,cAAc,QAAQ,KAAK,KAAK;AAAA,IAC5I,OAAO;AAAA,MACN,MAAM;AAAA,MACN,cAAc,QAAQ;AAAA,IACvB;AAAA,EACD;AAAA,EACA,IAAI,QAAQ,SAAS;AAAA,IAAW,OAAO;AAAA,MACtC,aAAa,QAAQ;AAAA,MACrB,MAAM;AAAA,MACN,cAAc,QAAQ;AAAA,MACtB,qBAAqB,OAAO,cAAc,SAAS,OAAO;AAAA,MAC1D,QAAQ;AAAA,IACT;AAAA,EACA,IAAI,QAAQ,SAAS;AAAA,IAAW,OAAO,OAAO,qBAAa,aAAa,KAAK,EAAE,MAAM,WAAW,CAAC;AAAA,EACjG,OAAO;AAAA,IACN,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,MAAM,QAAQ,OAAO,QAAQ,kBAAkB;AAAA,IACtF,MAAM;AAAA,IACN,cAAc,QAAQ;AAAA,IACtB,UAAU;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,IACA,UAAU;AAAA,EACX;AAAA,GACE,SAAgB,CAAC,UAAU,qBAAa,aAAa,KAAK,EAAE,MAAM,MAAM,KAAK,CAAC,CAAC,CAAC;AACnF,IAAM,sBAAsB,eAAO,QAAQ,uBAAuB,CAAC,aAAa,SAAS,QAAQ,YAAY;AAAA,EAC5G;AAAA,EACA;AAAA,EACA,QAAQ,CAAC,SAAS,YAAY,OAAO,SAAS,QAAQ,KAAK,MAAM,aAAa;AAC/E,CAAC,CAAC;AACF,IAAM,uBAAuB,oBAAoB,KAAK,QAAc,kBAAkB,KAAK,GAAG,QAAc,MAAqB,CAAC;;;AC1LlI,IAAI,kCAAiC,YAAY;AAAA,EAChD,cAAc,MAAM;AAAA,EACpB,OAAO,MAAM;AAAA,EACb,qBAAqB,MAAM;AAAA,EAC3B,gBAAgB,MAAM;AAAA,EACtB,oBAAoB,MAAM;AAC3B,CAAC;AACD,IAAM,kBAAiB,eAAiB,KAAK,eAAO,eAAe,gBAAgB,GAAG,eAAO,iBAAiB,eAAe,GAAG,eAAO,QAAQ,oBAAoB,CAAC;",
12
+ "debugId": "CF09747DEAF2115164756E2164756E21",
13
+ "names": []
14
+ }