@trycourier/courier-react 8.0.16-beta → 8.0.17-beta

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../courier-js/dist/index.mjs","../../courier-ui-inbox/dist/index.mjs","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/cjs/react-jsx-runtime.production.js","../src/utils/utils.tsx","../src/components/courier-client-component.tsx","../src/components/courier-inbox.tsx","../src/components/courier-inbox-popup-menu.tsx","../src/hooks/use-courier.tsx"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nconst CLOSE_CODE_NORMAL_CLOSURE = 1e3;\nconst IPW_VERSION = \"v1\";\nconst _CourierSocket = class _CourierSocket {\n constructor(options) {\n /** The WebSocket instance, which may be null if the connection is not established. */\n __publicField(this, \"webSocket\", null);\n /** The number of connection retry attempts so far, reset after a successful connection. */\n __publicField(this, \"retryAttempt\", 0);\n /** The timeout ID for the current connectionretry attempt, reset when we attempt to connect. */\n __publicField(this, \"retryTimeoutId\", null);\n __publicField(this, \"url\");\n __publicField(this, \"options\");\n this.url = options.apiUrls.inbox.webSocket;\n this.options = options;\n }\n /**\n * Connects to the Courier WebSocket server.\n *\n * If the connection is already established, this is a no-op.\n *\n * @returns A promise that resolves when the connection is established or rejects if the connection could not be established.\n */\n async connect() {\n var _a;\n this.clearRetryTimeout();\n if (this.isConnecting || this.isOpen) {\n (_a = this.options.logger) == null ? void 0 : _a.info(\"Attempted to open a WebSocket connection, but one already exists.\");\n return Promise.reject(new Error(\"WebSocket connection already exists\"));\n }\n return new Promise((resolve, reject) => {\n this.webSocket = new WebSocket(this.getWebSocketUrl());\n this.webSocket.addEventListener(\"open\", (event) => {\n this.retryAttempt = 0;\n this.onOpen(event);\n resolve();\n });\n this.webSocket.addEventListener(\"message\", async (event) => {\n var _a2;\n try {\n const json = JSON.parse(event.data);\n if (\"event\" in json && json.event === \"reconnect\") {\n this.close(CLOSE_CODE_NORMAL_CLOSURE);\n await this.retryConnection(json.retryAfter * 1e3);\n return;\n }\n this.onMessageReceived(json);\n } catch (error) {\n (_a2 = this.options.logger) == null ? void 0 : _a2.error(\"Error parsing socket message\", error);\n }\n });\n this.webSocket.addEventListener(\"close\", (event) => {\n if (event.code !== CLOSE_CODE_NORMAL_CLOSURE) {\n const courierCloseEvent = _CourierSocket.parseCloseEvent(event);\n if (courierCloseEvent.retryAfterSeconds) {\n this.retryConnection(courierCloseEvent.retryAfterSeconds * 1e3);\n } else {\n this.retryConnection();\n }\n }\n this.onClose(event);\n });\n this.webSocket.addEventListener(\"error\", (event) => {\n this.retryConnection();\n this.onError(event);\n reject(event);\n });\n });\n }\n /**\n * Closes the WebSocket connection.\n *\n * See {@link https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close} for more details.\n *\n * @param code The WebSocket close code. Defaults to {@link CLOSE_CODE_NORMAL_CLOSURE}.\n * @param reason The WebSocket close reason.\n */\n close(code = CLOSE_CODE_NORMAL_CLOSURE, reason) {\n if (this.webSocket === null) {\n return;\n }\n this.webSocket.close(code, reason);\n this.webSocket = null;\n }\n /**\n * Sends a message to the Courier WebSocket server.\n *\n * @param message The message to send. The message will be serialized to a JSON string.\n */\n send(message) {\n var _a;\n if (this.webSocket === null || this.isConnecting) {\n (_a = this.options.logger) == null ? void 0 : _a.info(\"Attempted to send a message, but the WebSocket is not yet open.\");\n return;\n }\n const json = JSON.stringify(message);\n this.webSocket.send(json);\n }\n get userId() {\n return this.options.userId;\n }\n get logger() {\n return this.options.logger;\n }\n /**\n * Whether the WebSocket connection is currently being established.\n */\n get isConnecting() {\n return this.webSocket !== null && this.webSocket.readyState === WebSocket.CONNECTING;\n }\n /**\n * Whether the WebSocket connection is currently open.\n */\n get isOpen() {\n return this.webSocket !== null && this.webSocket.readyState === WebSocket.OPEN;\n }\n /**\n * Constructs the WebSocket URL for the Courier WebSocket server using context\n * from the {@link CourierClientOptions} passed to the constructor.\n *\n * @returns The WebSocket URL\n */\n getWebSocketUrl() {\n const accessToken = this.options.accessToken;\n const connectionId = this.options.connectionId;\n const userId = this.userId;\n return `${this.url}?auth=${accessToken}&cid=${connectionId}&iwpv=${IPW_VERSION}&userId=${userId}`;\n }\n /**\n * Parses the Retry-After time from the WebSocket close event reason,\n * and returns a new {@link CourierCloseEvent} with the retry after time in seconds\n * if present.\n *\n * The Courier WebSocket server may send the close event reason in the following format:\n *\n * ```json\n * {\n * \"Retry-After\": \"10\" // The retry after time in seconds\n * }\n * ```\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent/reason\n *\n * @param closeEvent The WebSocket close event.\n * @returns The WebSocket close event with the retry after time in seconds.\n */\n static parseCloseEvent(closeEvent) {\n if (closeEvent.reason === null || closeEvent.reason === \"\") {\n return closeEvent;\n }\n try {\n const jsonReason = JSON.parse(closeEvent.reason);\n if (!jsonReason[_CourierSocket.RETRY_AFTER_KEY]) {\n return closeEvent;\n }\n const retryAfterSeconds = parseInt(jsonReason[_CourierSocket.RETRY_AFTER_KEY]);\n if (Number.isNaN(retryAfterSeconds) || retryAfterSeconds < 0) {\n return closeEvent;\n }\n return {\n ...closeEvent,\n retryAfterSeconds\n };\n } catch (error) {\n return closeEvent;\n }\n }\n /**\n * Calculates the retry backoff time in milliseconds based on the current retry attempt.\n */\n getBackoffTimeInMillis() {\n const backoffIntervalInMillis = _CourierSocket.BACKOFF_INTERVALS_IN_MILLIS[this.retryAttempt];\n const lowerBound = backoffIntervalInMillis - backoffIntervalInMillis * _CourierSocket.BACKOFF_JITTER_FACTOR;\n const upperBound = backoffIntervalInMillis + backoffIntervalInMillis * _CourierSocket.BACKOFF_JITTER_FACTOR;\n return Math.floor(Math.random() * (upperBound - lowerBound) + lowerBound);\n }\n /**\n * Retries the connection to the Courier WebSocket server after\n * either {@param suggestedBackoffTimeInMillis} or a random backoff time\n * calculated using {@link getBackoffTimeInMillis}.\n *\n * @param suggestedBackoffTimeInMillis The suggested backoff time in milliseconds.\n * @returns A promise that resolves when the connection is established or rejects if the connection could not be established.\n */\n async retryConnection(suggestedBackoffTimeInMillis) {\n var _a, _b, _c;\n if (this.retryTimeoutId !== null) {\n (_a = this.logger) == null ? void 0 : _a.debug(\"Skipping retry attempt because a previous retry is already scheduled.\");\n return;\n }\n if (this.retryAttempt >= _CourierSocket.MAX_RETRY_ATTEMPTS) {\n (_b = this.logger) == null ? void 0 : _b.error(`Max retry attempts (${_CourierSocket.MAX_RETRY_ATTEMPTS}) reached.`);\n return;\n }\n const backoffTimeInMillis = suggestedBackoffTimeInMillis ?? this.getBackoffTimeInMillis();\n this.retryTimeoutId = window.setTimeout(async () => {\n try {\n await this.connect();\n } catch (error) {\n }\n }, backoffTimeInMillis);\n (_c = this.logger) == null ? void 0 : _c.debug(`Retrying connection in ${Math.floor(backoffTimeInMillis / 1e3)}s. Retry attempt ${this.retryAttempt + 1} of ${_CourierSocket.MAX_RETRY_ATTEMPTS}.`);\n this.retryAttempt++;\n }\n /**\n * Clears the retry timeout if it exists.\n */\n clearRetryTimeout() {\n if (this.retryTimeoutId !== null) {\n window.clearTimeout(this.retryTimeoutId);\n this.retryTimeoutId = null;\n }\n }\n};\n/**\n * The jitter factor for the backoff intervals.\n *\n * Backoff with jitter is calculated as a random value in the range:\n * [BACKOFF_INTERVAL - BACKOFF_JITTER_FACTOR * BACKOFF_INTERVAL,\n * BACKOFF_INTERVAL + BACKOFF_JITTER_FACTOR * BACKOFF_INTERVAL).\n */\n__publicField(_CourierSocket, \"BACKOFF_JITTER_FACTOR\", 0.5);\n/**\n * The maximum number of retry attempts.\n */\n__publicField(_CourierSocket, \"MAX_RETRY_ATTEMPTS\", 5);\n/**\n * Backoff intervals in milliseconds.\n *\n * Each represents an offset from the previous interval, rather than a\n * absolute offset from the initial request time.\n */\n__publicField(_CourierSocket, \"BACKOFF_INTERVALS_IN_MILLIS\", [\n 3e4,\n // 30 seconds\n 6e4,\n // 1 minute\n 12e4,\n // 2 minutes\n 24e4,\n // 4 minutes\n 48e4\n // 8 minutes\n]);\n/**\n * The key of the retry after time in the WebSocket close event reason.\n *\n * The Courier WebSocket server may send the close event reason in the following format:\n *\n * ```json\n * {\n * \"Retry-After\": \"10\" // The retry after time in seconds\n * }\n * ```\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent/reason\n */\n__publicField(_CourierSocket, \"RETRY_AFTER_KEY\", \"Retry-After\");\nlet CourierSocket = _CourierSocket;\nvar ClientAction = /* @__PURE__ */ ((ClientAction2) => {\n ClientAction2[\"Subscribe\"] = \"subscribe\";\n ClientAction2[\"Unsubscribe\"] = \"unsubscribe\";\n ClientAction2[\"Pong\"] = \"pong\";\n ClientAction2[\"Ping\"] = \"ping\";\n return ClientAction2;\n})(ClientAction || {});\nvar ServerAction = /* @__PURE__ */ ((ServerAction2) => {\n ServerAction2[\"Ack\"] = \"ack\";\n ServerAction2[\"Ping\"] = \"ping\";\n ServerAction2[\"Pong\"] = \"pong\";\n return ServerAction2;\n})(ServerAction || {});\nvar MessageEvent = /* @__PURE__ */ ((MessageEvent2) => {\n MessageEvent2[\"NewMessage\"] = \"message\";\n MessageEvent2[\"Archive\"] = \"archive\";\n MessageEvent2[\"ArchiveAll\"] = \"archive-all\";\n MessageEvent2[\"ArchiveRead\"] = \"archive-read\";\n MessageEvent2[\"Clicked\"] = \"clicked\";\n MessageEvent2[\"MarkAllRead\"] = \"mark-all-read\";\n MessageEvent2[\"Opened\"] = \"opened\";\n MessageEvent2[\"Read\"] = \"read\";\n MessageEvent2[\"Unarchive\"] = \"unarchive\";\n MessageEvent2[\"Unopened\"] = \"unopened\";\n MessageEvent2[\"Unread\"] = \"unread\";\n return MessageEvent2;\n})(MessageEvent || {});\nconst getCourierApiUrls = (urls) => ({\n courier: {\n rest: (urls == null ? void 0 : urls.courier.rest) || \"https://api.courier.com\",\n graphql: (urls == null ? void 0 : urls.courier.graphql) || \"https://api.courier.com/client/q\"\n },\n inbox: {\n graphql: (urls == null ? void 0 : urls.inbox.graphql) || \"https://inbox.courier.com/q\",\n webSocket: (urls == null ? void 0 : urls.inbox.webSocket) || \"wss://realtime.courier.io\"\n }\n});\nclass Logger {\n constructor(showLogs) {\n __publicField(this, \"PREFIX\", \"[COURIER]\");\n this.showLogs = showLogs;\n }\n warn(message, ...args) {\n if (this.showLogs) {\n console.warn(`${this.PREFIX} ${message}`, ...args);\n }\n }\n log(message, ...args) {\n if (this.showLogs) {\n console.log(`${this.PREFIX} ${message}`, ...args);\n }\n }\n error(message, ...args) {\n if (this.showLogs) {\n console.error(`${this.PREFIX} ${message}`, ...args);\n }\n }\n debug(message, ...args) {\n if (this.showLogs) {\n console.debug(`${this.PREFIX} ${message}`, ...args);\n }\n }\n info(message, ...args) {\n if (this.showLogs) {\n console.info(`${this.PREFIX} ${message}`, ...args);\n }\n }\n}\nconst _UUID = class _UUID {\n /**\n * nanoid\n * Copyright 2017 Andrey Sitnik <andrey@sitnik.ru>\n *\n * https://github.com/ai/nanoid/blob/main/LICENSE\n *\n * @param size - The size of the UUID to generate.\n * @returns A string representing the UUID.\n */\n static nanoid(size = 21) {\n let id = \"\";\n let bytes = crypto.getRandomValues(new Uint8Array(size |= 0));\n while (size--) {\n id += _UUID.ALPHABET[bytes[size] & 63];\n }\n return id;\n }\n};\n__publicField(_UUID, \"ALPHABET\", \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\");\nlet UUID = _UUID;\nclass CourierRequestError extends Error {\n constructor(code, message, type) {\n super(message);\n this.code = code;\n this.type = type;\n this.name = \"CourierRequestError\";\n }\n}\nfunction logRequest(logger, uid, type, data) {\n logger.log(`\nšŸ“” New Courier ${type} Request: ${uid}\nURL: ${data.url}\n${data.method ? `Method: ${data.method}` : \"\"}\n${data.query ? `Query: ${data.query}` : \"\"}\n${data.variables ? `Variables: ${JSON.stringify(data.variables, null, 2)}` : \"\"}\nHeaders: ${JSON.stringify(data.headers, null, 2)}\nBody: ${data.body ? JSON.stringify(data.body, null, 2) : \"Empty\"}\n `);\n}\nfunction logResponse(logger, uid, type, data) {\n logger.log(`\nšŸ“” New Courier ${type} Response: ${uid}\nStatus Code: ${data.status}\nResponse JSON: ${JSON.stringify(data.response, null, 2)}\n `);\n}\nasync function http(props) {\n const validCodes = props.validCodes ?? [200];\n const uid = props.options.showLogs ? UUID.nanoid() : void 0;\n const request = new Request(props.url, {\n method: props.method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...props.headers\n },\n body: props.body ? JSON.stringify(props.body) : void 0\n });\n if (uid) {\n logRequest(props.options.logger, uid, \"HTTP\", {\n url: request.url,\n method: request.method,\n headers: Object.fromEntries(request.headers.entries()),\n body: props.body\n });\n }\n const response = await fetch(request);\n if (response.status === 204) {\n return;\n }\n let data;\n try {\n data = await response.json();\n } catch (error) {\n if (response.status === 200) {\n return;\n }\n throw new CourierRequestError(\n response.status,\n \"Failed to parse response as JSON\",\n \"PARSE_ERROR\"\n );\n }\n if (uid) {\n logResponse(props.options.logger, uid, \"HTTP\", {\n status: response.status,\n response: data\n });\n }\n if (!validCodes.includes(response.status)) {\n throw new CourierRequestError(\n response.status,\n (data == null ? void 0 : data.message) || \"Unknown Error\",\n data == null ? void 0 : data.type\n );\n }\n return data;\n}\nasync function graphql(props) {\n const uid = props.options.showLogs ? UUID.nanoid() : void 0;\n if (uid) {\n logRequest(props.options.logger, uid, \"GraphQL\", {\n url: props.url,\n headers: props.headers,\n query: props.query,\n variables: props.variables\n });\n }\n const response = await fetch(props.url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...props.headers\n },\n body: JSON.stringify({\n query: props.query,\n variables: props.variables\n })\n });\n let data;\n try {\n data = await response.json();\n } catch (error) {\n throw new CourierRequestError(\n response.status,\n \"Failed to parse response as JSON\",\n \"PARSE_ERROR\"\n );\n }\n if (uid) {\n logResponse(props.options.logger, uid, \"GraphQL\", {\n status: response.status,\n response: data\n });\n }\n if (!response.ok) {\n throw new CourierRequestError(\n response.status,\n (data == null ? void 0 : data.message) || \"Unknown Error\",\n data == null ? void 0 : data.type\n );\n }\n return data;\n}\nclass Client {\n constructor(options) {\n this.options = options;\n }\n}\nclass BrandClient extends Client {\n /**\n * Get a brand by ID using GraphQL\n * @param brandId - The ID of the brand to retrieve\n * @returns Promise resolving to the requested brand\n */\n async getBrand(props) {\n const query = `\n query GetBrand {\n brand(brandId: \"${props.brandId}\") {\n settings {\n colors {\n primary\n secondary\n tertiary\n }\n inapp {\n borderRadius\n disableCourierFooter\n }\n }\n }\n }\n `;\n const json = await graphql({\n options: this.options,\n url: this.options.apiUrls.courier.graphql,\n headers: {\n \"x-courier-user-id\": this.options.userId,\n \"x-courier-client-key\": \"empty\",\n // Empty for now. Will be removed in future.\n \"Authorization\": `Bearer ${this.options.accessToken}`\n },\n query,\n variables: { brandId: props.brandId }\n });\n return json.data.brand;\n }\n}\nconst _CourierInboxSocket = class _CourierInboxSocket extends CourierSocket {\n constructor(options) {\n super(options);\n // 1 minute\n /**\n * The interval ID for the ping interval.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/setInterval\n */\n __publicField(this, \"pingIntervalId\", null);\n /**\n * The list of message event listeners, called when a message event is received\n * from the Courier WebSocket server.\n */\n __publicField(this, \"messageEventListeners\", []);\n }\n onOpen(_) {\n this.restartPingInterval();\n return Promise.resolve();\n }\n onMessageReceived(data) {\n if (\"action\" in data && data.action === ServerAction.Ping) {\n const envelope = data;\n this.sendPong(envelope);\n }\n if (\"event\" in data) {\n for (const listener of this.messageEventListeners) {\n listener(data);\n }\n }\n this.restartPingInterval();\n return Promise.resolve();\n }\n onClose(_) {\n return Promise.resolve();\n }\n onError(_) {\n return Promise.resolve();\n }\n /**\n * Sends a subscribe message to the server.\n *\n * Subscribes to all events for the user.\n */\n sendSubscribe() {\n const envelope = {\n tid: UUID.nanoid(),\n action: ClientAction.Subscribe,\n data: {\n channel: this.userId,\n event: \"*\"\n }\n };\n this.send(envelope);\n }\n /**\n * Sends an unsubscribe message to the server.\n *\n * Unsubscribes from all events for the user.\n */\n sendUnsubscribe() {\n const envelope = {\n tid: UUID.nanoid(),\n action: ClientAction.Unsubscribe,\n data: {\n channel: this.userId\n }\n };\n this.send(envelope);\n }\n /**\n * Adds a message event listener, called when a message event is received\n * from the Courier WebSocket server.\n *\n * @param listener The listener function\n */\n addMessageEventListener(listener) {\n this.messageEventListeners.push(listener);\n }\n /**\n * Send a ping message to the server.\n *\n * ping/pong is implemented at the application layer since the browser's\n * WebSocket implementation does not support control-level ping/pong.\n */\n sendPing() {\n const envelope = {\n tid: UUID.nanoid(),\n action: ClientAction.Ping\n };\n this.send(envelope);\n }\n /**\n * Send a pong response to the server.\n *\n * ping/pong is implemented at the application layer since the browser's\n * WebSocket implementation does not support control-level ping/pong.\n */\n sendPong(incomingMessage) {\n const response = {\n tid: incomingMessage.tid,\n action: ClientAction.Pong\n };\n this.send(response);\n }\n /**\n * Restart the ping interval, clearing the previous interval if it exists.\n */\n restartPingInterval() {\n if (this.pingIntervalId) {\n window.clearInterval(this.pingIntervalId);\n }\n this.pingIntervalId = window.setInterval(() => {\n this.sendPing();\n }, _CourierInboxSocket.PING_INTERVAL_MILLIS);\n }\n};\n/**\n * The interval in milliseconds at which to send a ping message to the server\n * if no other message has been received from the server.\n */\n__publicField(_CourierInboxSocket, \"PING_INTERVAL_MILLIS\", 6e4);\nlet CourierInboxSocket = _CourierInboxSocket;\nclass InboxClient extends Client {\n constructor(options) {\n super(options);\n __publicField(this, \"socket\");\n this.socket = new CourierInboxSocket(options);\n }\n /**\n * Get paginated messages\n * @param paginationLimit - Number of messages to return per page (default: 24)\n * @param startCursor - Cursor for pagination\n * @returns Promise resolving to paginated messages response\n */\n async getMessages(props) {\n const query = `\n query GetInboxMessages(\n $params: FilterParamsInput = { ${this.options.tenantId ? `accountId: \"${this.options.tenantId}\"` : \"\"} }\n $limit: Int = ${(props == null ? void 0 : props.paginationLimit) ?? 24}\n $after: String ${(props == null ? void 0 : props.startCursor) ? `= \"${props.startCursor}\"` : \"\"}\n ) {\n count(params: $params)\n messages(params: $params, limit: $limit, after: $after) {\n totalCount\n pageInfo {\n startCursor\n hasNextPage\n }\n nodes {\n messageId\n read\n archived\n created\n opened\n title\n preview\n data\n tags\n trackingIds {\n clickTrackingId\n }\n actions {\n content\n data\n href\n }\n }\n }\n }\n `;\n return await graphql({\n options: this.options,\n query,\n headers: {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n },\n url: this.options.apiUrls.inbox.graphql\n });\n }\n /**\n * Get paginated archived messages\n * @param paginationLimit - Number of messages to return per page (default: 24)\n * @param startCursor - Cursor for pagination\n * @returns Promise resolving to paginated archived messages response\n */\n async getArchivedMessages(props) {\n const query = `\n query GetInboxMessages(\n $params: FilterParamsInput = { ${this.options.tenantId ? `accountId: \"${this.options.tenantId}\"` : \"\"}, archived: true }\n $limit: Int = ${(props == null ? void 0 : props.paginationLimit) ?? 24}\n $after: String ${(props == null ? void 0 : props.startCursor) ? `= \"${props.startCursor}\"` : \"\"}\n ) {\n count(params: $params)\n messages(params: $params, limit: $limit, after: $after) {\n totalCount\n pageInfo {\n startCursor\n hasNextPage\n }\n nodes {\n messageId\n read\n archived\n created\n opened\n title\n preview\n data\n tags\n trackingIds {\n clickTrackingId\n }\n actions {\n content\n data\n href\n }\n }\n }\n }\n `;\n return graphql({\n options: this.options,\n query,\n headers: {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n },\n url: this.options.apiUrls.inbox.graphql\n });\n }\n /**\n * Get unread message count\n * @returns Promise resolving to number of unread messages\n */\n async getUnreadMessageCount() {\n var _a;\n const query = `\n query GetMessages {\n count(params: { status: \"unread\" ${this.options.tenantId ? `, accountId: \"${this.options.tenantId}\"` : \"\"} })\n }\n `;\n const response = await graphql({\n options: this.options,\n query,\n headers: {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n },\n url: this.options.apiUrls.inbox.graphql\n });\n return ((_a = response.data) == null ? void 0 : _a.count) ?? 0;\n }\n /**\n * Track a click event\n * @param messageId - ID of the message\n * @param trackingId - ID for tracking the click\n * @returns Promise resolving when click is tracked\n */\n async click(props) {\n const query = `\n mutation TrackEvent {\n clicked(messageId: \"${props.messageId}\", trackingId: \"${props.trackingId}\")\n }\n `;\n const headers = {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n };\n if (this.options.connectionId) {\n headers[\"x-courier-client-source-id\"] = this.options.connectionId;\n }\n await graphql({\n options: this.options,\n query,\n headers,\n url: this.options.apiUrls.inbox.graphql\n });\n }\n /**\n * Mark a message as read\n * @param messageId - ID of the message to mark as read\n * @returns Promise resolving when message is marked as read\n */\n async read(props) {\n const query = `\n mutation TrackEvent {\n read(messageId: \"${props.messageId}\")\n }\n `;\n const headers = {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n };\n if (this.options.connectionId) {\n headers[\"x-courier-client-source-id\"] = this.options.connectionId;\n }\n await graphql({\n options: this.options,\n query,\n headers,\n url: this.options.apiUrls.inbox.graphql\n });\n }\n /**\n * Mark a message as unread\n * @param messageId - ID of the message to mark as unread\n * @returns Promise resolving when message is marked as unread\n */\n async unread(props) {\n const query = `\n mutation TrackEvent {\n unread(messageId: \"${props.messageId}\")\n }\n `;\n const headers = {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n };\n if (this.options.connectionId) {\n headers[\"x-courier-client-source-id\"] = this.options.connectionId;\n }\n await graphql({\n options: this.options,\n query,\n headers,\n url: this.options.apiUrls.inbox.graphql\n });\n }\n /**\n * Mark all messages as read\n * @returns Promise resolving when all messages are marked as read\n */\n async readAll() {\n const query = `\n mutation TrackEvent {\n markAllRead\n }\n `;\n const headers = {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n };\n if (this.options.connectionId) {\n headers[\"x-courier-client-source-id\"] = this.options.connectionId;\n }\n await graphql({\n options: this.options,\n query,\n headers,\n url: this.options.apiUrls.inbox.graphql\n });\n }\n /**\n * Mark a message as opened\n * @param messageId - ID of the message to mark as opened\n * @returns Promise resolving when message is marked as opened\n */\n async open(props) {\n const query = `\n mutation TrackEvent {\n opened(messageId: \"${props.messageId}\")\n }\n `;\n const headers = {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n };\n if (this.options.connectionId) {\n headers[\"x-courier-client-source-id\"] = this.options.connectionId;\n }\n await graphql({\n options: this.options,\n query,\n headers,\n url: this.options.apiUrls.inbox.graphql\n });\n }\n /**\n * Archive a message\n * @param messageId - ID of the message to archive\n * @returns Promise resolving when message is archived\n */\n async archive(props) {\n const query = `\n mutation TrackEvent {\n archive(messageId: \"${props.messageId}\")\n }\n `;\n const headers = {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n };\n if (this.options.connectionId) {\n headers[\"x-courier-client-source-id\"] = this.options.connectionId;\n }\n await graphql({\n options: this.options,\n query,\n headers,\n url: this.options.apiUrls.inbox.graphql\n });\n }\n /**\n * Unarchive a message\n * @param messageId - ID of the message to unarchive\n * @returns Promise resolving when message is unarchived\n */\n async unarchive(props) {\n const query = `\n mutation TrackEvent {\n unarchive(messageId: \"${props.messageId}\")\n }\n `;\n const headers = {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n };\n if (this.options.connectionId) {\n headers[\"x-courier-client-source-id\"] = this.options.connectionId;\n }\n await graphql({\n options: this.options,\n query,\n headers,\n url: this.options.apiUrls.inbox.graphql\n });\n }\n /**\n * Archive all read messages.\n */\n async archiveRead() {\n const query = `\n mutation TrackEvent {\n archiveRead\n }\n `;\n const headers = {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n };\n if (this.options.connectionId) {\n headers[\"x-courier-client-source-id\"] = this.options.connectionId;\n }\n await graphql({\n options: this.options,\n query,\n headers,\n url: this.options.apiUrls.inbox.graphql\n });\n }\n /**\n * Archive all read messages.\n */\n async archiveAll() {\n const query = `\n mutation TrackEvent {\n archiveAll\n }\n `;\n const headers = {\n \"x-courier-user-id\": this.options.userId,\n \"Authorization\": `Bearer ${this.options.accessToken}`\n };\n if (this.options.connectionId) {\n headers[\"x-courier-client-source-id\"] = this.options.connectionId;\n }\n await graphql({\n options: this.options,\n query,\n headers,\n url: this.options.apiUrls.inbox.graphql\n });\n }\n}\nclass PreferenceTransformer {\n /**\n * Transforms a single API response item to the CourierUserPreferencesTopic type\n * @param item - The API response item\n * @returns A CourierUserPreferencesTopic object\n */\n transformItem(item) {\n return {\n topicId: item.topic_id,\n topicName: item.topic_name,\n sectionId: item.section_id,\n sectionName: item.section_name,\n status: item.status,\n defaultStatus: item.default_status,\n hasCustomRouting: item.has_custom_routing,\n customRouting: item.custom_routing || []\n };\n }\n /**\n * Transforms an array of API response items to CourierUserPreferencesTopic objects\n * @param items - The API response items\n * @returns A generator of CourierUserPreferencesTopic objects\n */\n *transform(items) {\n for (const item of items) {\n yield this.transformItem(item);\n }\n }\n}\nfunction decode(clientKey) {\n const binaryString = atob(clientKey);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode(...bytes);\n}\nfunction encode(key) {\n const bytes = new Uint8Array(key.length);\n for (let i = 0; i < key.length; i++) {\n bytes[i] = key.charCodeAt(i);\n }\n return btoa(String.fromCharCode(...bytes));\n}\nclass PreferenceClient extends Client {\n constructor() {\n super(...arguments);\n __publicField(this, \"transformer\", new PreferenceTransformer());\n }\n /**\n * Get all preferences for a user\n * @param paginationCursor - Optional cursor for pagination\n * @returns Promise resolving to user preferences\n * @see https://www.courier.com/docs/reference/user-preferences/list-all-user-preferences\n */\n async getUserPreferences(props) {\n let url = `${this.options.apiUrls.courier.rest}/users/${this.options.userId}/preferences`;\n if (props == null ? void 0 : props.paginationCursor) {\n url += `?cursor=${props.paginationCursor}`;\n }\n const json = await http({\n options: this.options,\n url,\n method: \"GET\",\n headers: {\n \"Authorization\": `Bearer ${this.options.accessToken}`\n }\n });\n const data = json;\n return {\n items: [...this.transformer.transform(data.items)],\n paging: data.paging\n };\n }\n /**\n * Get preferences for a specific topic\n * @param topicId - The ID of the topic to get preferences for\n * @returns Promise resolving to topic preferences\n * @see https://www.courier.com/docs/reference/user-preferences/get-subscription-topic-preferences\n */\n async getUserPreferenceTopic(props) {\n const json = await http({\n options: this.options,\n url: `${this.options.apiUrls.courier.rest}/users/${this.options.userId}/preferences/${props.topicId}`,\n method: \"GET\",\n headers: {\n \"Authorization\": `Bearer ${this.options.accessToken}`\n }\n });\n const res = json;\n return this.transformer.transformItem(res.topic);\n }\n /**\n * Update preferences for a specific topic\n * @param topicId - The ID of the topic to update preferences for\n * @param status - The new status for the topic\n * @param hasCustomRouting - Whether the topic has custom routing\n * @param customRouting - The custom routing channels for the topic\n * @returns Promise resolving when update is complete\n * @see https://www.courier.com/docs/reference/user-preferences/update-subscription-topic-preferences\n */\n async putUserPreferenceTopic(props) {\n const payload = {\n topic: {\n status: props.status,\n has_custom_routing: props.hasCustomRouting,\n custom_routing: props.customRouting\n }\n };\n await http({\n options: this.options,\n url: `${this.options.apiUrls.courier.rest}/users/${this.options.userId}/preferences/${props.topicId}`,\n method: \"PUT\",\n headers: {\n \"Authorization\": `Bearer ${this.options.accessToken}`\n },\n body: payload\n });\n }\n /**\n * Get the notification center URL\n * @param clientKey - The client key to use for the URL\n * @returns The notification center URL\n */\n getNotificationCenterUrl(props) {\n const rootTenantId = decode(props.clientKey);\n const url = encode(`${rootTenantId}#${this.options.userId}${this.options.tenantId ? `#${this.options.tenantId}` : \"\"}#${false}`);\n return `https://view.notificationcenter.app/p/${url}`;\n }\n}\nclass TokenClient extends Client {\n /**\n * Store a push notification token for a user\n * @param token - The push notification token\n * @param provider - The provider of the token\n * @param device - The device information\n * @see https://www.courier.com/docs/reference/token-management/put-token\n */\n async putUserToken(props) {\n const payload = {\n provider_key: props.provider,\n ...props.device && {\n device: {\n app_id: props.device.appId,\n ad_id: props.device.adId,\n device_id: props.device.deviceId,\n platform: props.device.platform,\n manufacturer: props.device.manufacturer,\n model: props.device.model\n }\n }\n };\n await http({\n options: this.options,\n url: `${this.options.apiUrls.courier.rest}/users/${this.options.userId}/tokens/${props.token}`,\n method: \"PUT\",\n headers: {\n \"Authorization\": `Bearer ${this.options.accessToken}`\n },\n body: payload,\n validCodes: [200, 204]\n });\n }\n /**\n * Delete a push notification token for a user\n * @param token - The push notification token\n * @returns Promise resolving when token is deleted\n */\n async deleteUserToken(props) {\n await http({\n options: this.options,\n url: `${this.options.apiUrls.courier.rest}/users/${this.options.userId}/tokens/${props.token}`,\n method: \"DELETE\",\n headers: {\n \"Authorization\": `Bearer ${this.options.accessToken}`\n },\n validCodes: [200, 204]\n });\n }\n}\nclass ListClient extends Client {\n /**\n * Subscribe a user to a list\n * @param listId - The ID of the list to subscribe to\n * @returns Promise resolving when subscription is complete\n * @see https://www.courier.com/docs/reference/lists/recipient-subscribe\n */\n async putSubscription(props) {\n return await http({\n url: `${this.options.apiUrls.courier.rest}/lists/${props.listId}/subscriptions/${this.options.userId}`,\n options: this.options,\n method: \"PUT\",\n headers: {\n Authorization: `Bearer ${this.options.accessToken}`\n }\n });\n }\n /**\n * Unsubscribe a user from a list\n * @param listId - The ID of the list to unsubscribe from\n * @returns Promise resolving when unsubscription is complete\n * @see https://www.courier.com/docs/reference/lists/delete-subscription\n */\n async deleteSubscription(props) {\n return await http({\n url: `${this.options.apiUrls.courier.rest}/lists/${props.listId}/subscriptions/${this.options.userId}`,\n options: this.options,\n method: \"DELETE\",\n headers: {\n Authorization: `Bearer ${this.options.accessToken}`\n }\n });\n }\n}\nclass TrackingClient extends Client {\n /**\n * Post an inbound courier event\n * @param event - The event type: Example: \"New Order Placed\"\n * @param messageId - The message ID\n * @param type - The type of event: Available options: \"track\"\n * @param properties - The properties of the event\n * @returns Promise resolving to the message ID\n * @see https://www.courier.com/docs/reference/inbound/courier-track-event\n */\n async postInboundCourier(props) {\n return await http({\n url: `${this.options.apiUrls.courier.rest}/inbound/courier`,\n options: this.options,\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.options.accessToken}`\n },\n body: {\n ...props,\n userId: this.options.userId\n },\n validCodes: [200, 202]\n });\n }\n /**\n * Post a tracking URL event\n * These urls are found in messages sent from Courier\n * @param url - The URL to post the event to\n * @param event - The event type: Available options: \"click\", \"open\", \"unsubscribe\"\n * @returns Promise resolving when the event is posted\n */\n async postTrackingUrl(props) {\n return await http({\n url: props.url,\n options: this.options,\n method: \"POST\",\n body: {\n event: props.event\n }\n });\n }\n}\nclass CourierClient extends Client {\n constructor(props) {\n var _a, _b;\n const showLogs = props.showLogs !== void 0 ? props.showLogs : process.env.NODE_ENV === \"development\";\n const baseOptions = {\n ...props,\n showLogs,\n apiUrls: props.apiUrls || getCourierApiUrls(),\n accessToken: props.jwt ?? props.publicApiKey\n };\n super({\n ...baseOptions,\n logger: new Logger(baseOptions.showLogs),\n apiUrls: getCourierApiUrls(baseOptions.apiUrls)\n });\n __publicField(this, \"tokens\");\n __publicField(this, \"brands\");\n __publicField(this, \"preferences\");\n __publicField(this, \"inbox\");\n __publicField(this, \"lists\");\n __publicField(this, \"tracking\");\n this.tokens = new TokenClient(this.options);\n this.brands = new BrandClient(this.options);\n this.preferences = new PreferenceClient(this.options);\n this.inbox = new InboxClient(this.options);\n this.lists = new ListClient(this.options);\n this.tracking = new TrackingClient(this.options);\n if (!this.options.jwt && !this.options.publicApiKey) {\n this.options.logger.warn(\"Courier Client initialized with no authentication method. Please provide a JWT or public API key.\");\n }\n if (this.options.publicApiKey) {\n (_a = this.options.logger) == null ? void 0 : _a.warn(\n \"Courier Warning: Public API Keys are for testing only. Please use JWTs for production.\\nYou can generate a JWT with this endpoint: https://www.courier.com/docs/reference/auth/issue-token\\nThis endpoint should be called from your backend server, not the SDK.\"\n );\n }\n if (this.options.jwt && this.options.publicApiKey) {\n (_b = this.options.logger) == null ? void 0 : _b.warn(\n \"Courier Warning: Both a JWT and a Public API Key were provided. The Public API Key will be ignored.\"\n );\n }\n }\n}\nclass AuthenticationListener {\n constructor(callback) {\n __publicField(this, \"callback\");\n this.callback = callback;\n }\n remove() {\n Courier.shared.removeAuthenticationListener(this);\n }\n}\nconst _Courier = class _Courier {\n constructor() {\n /**\n * The unique identifier for the Courier instance\n */\n __publicField(this, \"id\", UUID.nanoid());\n /**\n * The Courier client instance\n */\n __publicField(this, \"instanceClient\");\n /**\n * The pagination limit (min: 1, max: 100)\n */\n __publicField(this, \"_paginationLimit\", 24);\n /**\n * The authentication listeners\n */\n __publicField(this, \"authenticationListeners\", []);\n }\n get paginationLimit() {\n return this._paginationLimit;\n }\n set paginationLimit(value) {\n this._paginationLimit = Math.min(Math.max(value, 1), 100);\n }\n /**\n * Get the Courier client instance\n * @returns The Courier client instance or undefined if not signed in\n */\n get client() {\n return this.instanceClient;\n }\n /**\n * Get the shared Courier instance\n * @returns The shared Courier instance\n */\n static get shared() {\n if (!_Courier.instance) {\n _Courier.instance = new _Courier();\n }\n return _Courier.instance;\n }\n /**\n * Sign in to Courier\n * @param options - The options for the Courier client\n */\n signIn(props) {\n const connectionId = props.connectionId ?? UUID.nanoid();\n this.instanceClient = new CourierClient({ ...props, connectionId });\n this.notifyAuthenticationListeners({ userId: props.userId });\n }\n /**\n * Sign out of Courier\n */\n signOut() {\n this.instanceClient = void 0;\n this.notifyAuthenticationListeners({ userId: void 0 });\n }\n /**\n * Register a callback to be notified of authentication state changes\n * @param callback - Function to be called when authentication state changes\n * @returns AuthenticationListener instance that can be used to remove the listener\n */\n addAuthenticationListener(callback) {\n var _a;\n (_a = this.instanceClient) == null ? void 0 : _a.options.logger.info(\"Adding authentication listener\");\n const listener = new AuthenticationListener(callback);\n this.authenticationListeners.push(listener);\n return listener;\n }\n /**\n * Unregister an authentication state change listener\n * @param listener - The AuthenticationListener instance to remove\n */\n removeAuthenticationListener(listener) {\n var _a;\n (_a = this.instanceClient) == null ? void 0 : _a.options.logger.info(\"Removing authentication listener\");\n this.authenticationListeners = this.authenticationListeners.filter((l) => l !== listener);\n }\n /**\n * Notify all authentication listeners\n * @param props - The props to notify the listeners with\n */\n notifyAuthenticationListeners(props) {\n this.authenticationListeners.forEach((listener) => listener.callback(props));\n }\n};\n/**\n * The shared Courier instance\n */\n__publicField(_Courier, \"instance\");\nlet Courier = _Courier;\nexport {\n BrandClient,\n Courier,\n CourierClient,\n CourierSocket,\n InboxClient,\n ListClient,\n MessageEvent,\n PreferenceClient,\n TokenClient\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { Courier, MessageEvent } from \"@trycourier/courier-js\";\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nconst CourierColors = {\n black: {\n 500: \"#171717\",\n 50010: \"#1717171A\",\n 50020: \"#17171733\"\n },\n gray: {\n 200: \"#F5F5F5\",\n 400: \"#3A3A3A\",\n 500: \"#E5E5E5\",\n 600: \"#737373\"\n },\n white: {\n 500: \"#FFFFFF\",\n 50010: \"#FFFFFF1A\",\n 50020: \"#FFFFFF33\"\n },\n blue: {\n 400: \"#60A5FA\",\n 500: \"#2563EB\"\n }\n};\nconst theme = {\n light: {\n colors: {\n primary: CourierColors.black[500],\n secondary: CourierColors.white[500],\n border: CourierColors.gray[500],\n link: CourierColors.blue[500],\n icon: CourierColors.black[500]\n },\n button: {\n cornerRadius: \"4px\"\n }\n },\n dark: {\n colors: {\n primary: CourierColors.white[500],\n secondary: CourierColors.black[500],\n border: CourierColors.gray[400],\n link: CourierColors.blue[400],\n icon: CourierColors.white[500]\n },\n button: {\n cornerRadius: \"4px\"\n }\n }\n};\nconst getSystemThemeMode = () => {\n if (typeof window === \"undefined\") {\n return \"light\";\n }\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n};\nconst addSystemThemeModeListener = (callback) => {\n if (typeof window === \"undefined\") {\n return () => {\n };\n }\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (e) => {\n callback(e.matches ? \"dark\" : \"light\");\n };\n mediaQuery.addEventListener(\"change\", handler);\n return () => {\n mediaQuery.removeEventListener(\"change\", handler);\n };\n};\nconst BaseElement = typeof window === \"undefined\" ? class {\n constructor() {\n }\n} : class extends HTMLElement {\n constructor() {\n super();\n }\n};\nclass CourierSystemThemeElement extends BaseElement {\n constructor() {\n super();\n __publicField2(this, \"_currentSystemTheme\");\n __publicField2(this, \"_systemThemeCleanup\");\n this._currentSystemTheme = getSystemThemeMode();\n this._systemThemeCleanup = addSystemThemeModeListener((mode) => {\n this._currentSystemTheme = mode;\n this.onSystemThemeChange(mode);\n });\n }\n get currentSystemTheme() {\n return this._currentSystemTheme;\n }\n disconnectedCallback() {\n if (this._systemThemeCleanup) {\n this._systemThemeCleanup();\n }\n }\n onSystemThemeChange(_) {\n }\n}\nconst baseButtonStyles = {\n borderRadius: \"4px\",\n fontSize: \"14px\"\n};\nconst CourierButtonVariants = {\n primary: (mode) => ({\n ...baseButtonStyles,\n backgroundColor: theme[mode].colors.primary,\n textColor: theme[mode].colors.secondary,\n fontWeight: \"500\",\n shadow: \"none\"\n }),\n secondary: (mode) => ({\n ...baseButtonStyles,\n backgroundColor: theme[mode].colors.secondary,\n textColor: theme[mode].colors.primary,\n fontWeight: \"500\",\n border: `1px solid ${theme[mode].colors.border}`,\n shadow: mode === \"light\" ? \"0px 1px 2px 0px rgba(0, 0, 0, 0.06)\" : \"0px 1px 2px 0px rgba(255, 255, 255, 0.1)\"\n }),\n tertiary: (mode) => ({\n ...baseButtonStyles,\n backgroundColor: theme[mode].colors.border,\n textColor: theme[mode].colors.primary,\n fontWeight: \"500\",\n border: \"none\",\n shadow: \"none\"\n })\n};\nclass CourierButton extends CourierSystemThemeElement {\n constructor(props) {\n super();\n __publicField2(this, \"_button\");\n __publicField2(this, \"_style\");\n const shadow = this.attachShadow({ mode: \"open\" });\n this._button = document.createElement(\"button\");\n this._button.setAttribute(\"part\", \"button\");\n this._style = document.createElement(\"style\");\n this._style.textContent = this.getStyles(props);\n shadow.appendChild(this._style);\n shadow.appendChild(this._button);\n this.updateButton(props);\n this._button.addEventListener(\"click\", (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (props.onClick) {\n props.onClick();\n }\n });\n }\n getStyles(props) {\n const defaultTextColor = () => {\n const secondary = CourierButtonVariants.secondary(this.currentSystemTheme);\n return secondary.textColor;\n };\n const defaultBackgroundColor = () => {\n const secondary = CourierButtonVariants.secondary(this.currentSystemTheme);\n return secondary.backgroundColor;\n };\n const defaultBorder = () => {\n const secondary = CourierButtonVariants.secondary(this.currentSystemTheme);\n return secondary.border;\n };\n const defaultShadow = () => {\n const secondary = CourierButtonVariants.secondary(this.currentSystemTheme);\n return secondary.shadow;\n };\n const defaultBorderRadius = () => {\n const secondary = CourierButtonVariants.secondary(this.currentSystemTheme);\n return secondary.borderRadius;\n };\n const defaultFontSize = () => {\n const secondary = CourierButtonVariants.secondary(this.currentSystemTheme);\n return secondary.fontSize;\n };\n const defaultFontWeight = () => {\n const secondary = CourierButtonVariants.secondary(this.currentSystemTheme);\n return secondary.fontWeight;\n };\n return `\n :host {\n display: inline-block;\n }\n\n button {\n border: none;\n border-radius: ${props.borderRadius ?? defaultBorderRadius()};\n font-weight: ${props.fontWeight ?? defaultFontWeight()};\n font-family: ${props.fontFamily ?? \"inherit\"};\n font-size: ${props.fontSize ?? defaultFontSize()};\n padding: 6px 10px;\n cursor: pointer;\n width: 100%;\n height: 100%;\n background-color: ${props.backgroundColor ?? defaultBackgroundColor()};\n color: ${props.textColor ?? defaultTextColor()};\n border: ${props.border ?? defaultBorder()};\n box-shadow: ${props.shadow ?? defaultShadow()};\n touch-action: manipulation;\n }\n\n button:hover {\n ${props.hoverBackgroundColor ? `background-color: ${props.hoverBackgroundColor};` : \"filter: brightness(0.9);\"}\n }\n\n button:active {\n ${props.activeBackgroundColor ? `background-color: ${props.activeBackgroundColor};` : \"filter: brightness(0.8);\"}\n }\n\n button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `;\n }\n updateButton(props) {\n if (props.text) {\n this._button.textContent = props.text;\n }\n this._style.textContent = this.getStyles(props);\n }\n}\nconst CourierIconSVGs = {\n inbox: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.5 14.5V17C5.5 17.2812 5.71875 17.5 6 17.5H18C18.25 17.5 18.5 17.2812 18.5 17V14.5H15.9375L15.2812 15.8125C15.0938 16.25 14.6562 16.5 14.1875 16.5H9.78125C9.3125 16.5 8.875 16.25 8.6875 15.8125L8.03125 14.5H5.5ZM18.1875 13L16.6562 6.90625C16.5938 6.65625 16.4062 6.5 16.1875 6.5H7.8125C7.5625 6.5 7.375 6.65625 7.3125 6.90625L5.78125 13H8.1875C8.65625 13 9.09375 13.2812 9.3125 13.7188L9.9375 15H14.0312L14.6875 13.7188C14.875 13.2812 15.3125 13 15.7812 13H18.1875ZM4 14.25C4 14.0938 4 13.9375 4.03125 13.7812L5.84375 6.53125C6.09375 5.625 6.875 5 7.8125 5H16.1875C17.0938 5 17.9062 5.625 18.125 6.53125L19.9375 13.7812C19.9688 13.9375 20 14.0938 20 14.25V17C20 18.125 19.0938 19 18 19H6C4.875 19 4 18.125 4 17V14.25Z\" fill=\"currentColor\"/>\n</svg>`,\n archive: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.5 6.5V8H18.5V6.5H5.5ZM5 5H19C19.5312 5 20 5.46875 20 6V8.5C20 9.0625 19.5312 9.5 19 9.5H5C4.4375 9.5 4 9.0625 4 8.5V6C4 5.46875 4.4375 5 5 5ZM9 11.75C9 11.3438 9.3125 11 9.75 11H14.25C14.6562 11 15 11.3438 15 11.75C15 12.1875 14.6562 12.5 14.25 12.5H9.75C9.3125 12.5 9 12.1875 9 11.75ZM5 17V10.5H6.5V17C6.5 17.2812 6.71875 17.5 7 17.5H17C17.25 17.5 17.5 17.2812 17.5 17V10.5H19V17C19 18.125 18.0938 19 17 19H7C5.875 19 5 18.125 5 17Z\" fill=\"currentColor\"/>\n</svg>`,\n check: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18.793 7.33203C19.0742 7.64453 19.0742 8.11328 18.793 8.39453L10.543 16.6445C10.2305 16.957 9.76172 16.957 9.48047 16.6445L5.23047 12.3945C4.91797 12.1133 4.91797 11.6445 5.23047 11.3633C5.51172 11.0508 5.98047 11.0508 6.26172 11.3633L9.98047 15.082L17.7305 7.33203C18.0117 7.05078 18.4805 7.05078 18.7617 7.33203H18.793Z\" fill=\"currentColor\"/>\n</svg>`,\n filter: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5 7C5 6.59375 5.3125 6.25 5.75 6.25H18.25C18.6562 6.25 19 6.59375 19 7C19 7.4375 18.6562 7.75 18.25 7.75H5.75C5.3125 7.75 5 7.4375 5 7ZM7 12C7 11.5938 7.3125 11.25 7.75 11.25H16.25C16.6562 11.25 17 11.5938 17 12C17 12.4375 16.6562 12.75 16.25 12.75H7.75C7.3125 12.75 7 12.4375 7 12ZM14 17C14 17.4375 13.6562 17.75 13.25 17.75H10.75C10.3125 17.75 10 17.4375 10 17C10 16.5938 10.3125 16.25 10.75 16.25H13.25C13.6562 16.25 14 16.5938 14 17Z\" fill=\"currentColor\"/>\n</svg>`,\n overflow: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18.5117 11.9883C18.5117 12.5508 18.1992 13.0195 17.7617 13.3008C17.293 13.582 16.6992 13.582 16.2617 13.3008C15.793 13.0195 15.5117 12.5508 15.5117 11.9883C15.5117 11.457 15.793 10.9883 16.2617 10.707C16.6992 10.4258 17.293 10.4258 17.7617 10.707C18.1992 10.9883 18.5117 11.457 18.5117 11.9883ZM13.5117 11.9883C13.5117 12.5508 13.1992 13.0195 12.7617 13.3008C12.293 13.582 11.6992 13.582 11.2617 13.3008C10.793 13.0195 10.5117 12.5508 10.5117 11.9883C10.5117 11.457 10.793 10.9883 11.2617 10.707C11.6992 10.4258 12.293 10.4258 12.7617 10.707C13.1992 10.9883 13.5117 11.457 13.5117 11.9883ZM7.01172 13.4883C6.44922 13.4883 5.98047 13.207 5.69922 12.7383C5.41797 12.3008 5.41797 11.707 5.69922 11.2383C5.98047 10.8008 6.44922 10.4883 7.01172 10.4883C7.54297 10.4883 8.01172 10.8008 8.29297 11.2383C8.57422 11.707 8.57422 12.3008 8.29297 12.7383C8.01172 13.207 7.54297 13.4883 7.01172 13.4883Z\" fill=\"currentColor\"/>\n</svg>`,\n read: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7 6.5C6.71875 6.5 6.5 6.75 6.5 7V17C6.5 17.2812 6.71875 17.5 7 17.5H17C17.25 17.5 17.5 17.2812 17.5 17V7C17.5 6.75 17.25 6.5 17 6.5H7ZM5 7C5 5.90625 5.875 5 7 5H17C18.0938 5 19 5.90625 19 7V17C19 18.125 18.0938 19 17 19H7C5.875 19 5 18.125 5 17V7ZM15.5312 10.5312L11.5312 14.5312C11.2188 14.8438 10.75 14.8438 10.4688 14.5312L8.46875 12.5312C8.15625 12.25 8.15625 11.7812 8.46875 11.5C8.75 11.1875 9.21875 11.1875 9.53125 11.5L11 12.9688L14.4688 9.46875C14.75 9.1875 15.2188 9.1875 15.5 9.46875C15.8125 9.78125 15.8125 10.25 15.5 10.5312H15.5312Z\" fill=\"currentColor\"/>\n</svg>`,\n archiveRead: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7.5 6.5V15.25H16.5V6.5H7.5ZM6 15.25V6.5C6 5.6875 6.65625 5 7.5 5H16.5C17.3125 5 18 5.6875 18 6.5V15.25C18.4062 15.25 18.75 15.5938 18.75 16C18.75 16.4375 18.4062 16.75 18 16.75H6C5.5625 16.75 5.25 16.4375 5.25 16C5.25 15.5938 5.5625 15.25 6 15.25ZM5 13V14.5H4.5V17.5H19.5V14.5H19V13H19.5C20.3125 13 21 13.6875 21 14.5V17.5C21 18.3438 20.3125 19 19.5 19H4.5C3.65625 19 3 18.3438 3 17.5V14.5C3 13.6875 3.65625 13 4.5 13H5ZM15.0312 9.625L11.6875 12.9688C11.5312 13.0938 11.3438 13.1875 11.1562 13.1875C10.9375 13.1875 10.75 13.0938 10.625 12.9688L8.96875 11.2812C8.65625 11 8.65625 10.5312 8.96875 10.25C9.25 9.9375 9.71875 9.9375 10 10.25L11.1562 11.375L13.9688 8.5625C14.25 8.28125 14.7188 8.28125 15 8.5625C15.3125 8.875 15.3125 9.34375 15 9.625H15.0312Z\" fill=\"currentColor\"/>\n</svg>`,\n unread: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M17 6.5H7C6.71875 6.5 6.5 6.75 6.5 7V17C6.5 17.2812 6.71875 17.5 7 17.5H17C17.25 17.5 17.5 17.2812 17.5 17V7C17.5 6.75 17.25 6.5 17 6.5ZM7 5H17C18.0938 5 19 5.90625 19 7V17C19 18.125 18.0938 19 17 19H7C5.875 19 5 18.125 5 17V7C5 5.90625 5.875 5 7 5Z\" fill=\"currentColor\"/>\n</svg>`,\n unarchive: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.5 11C5.0625 11 4.75 10.6875 4.75 10.25V5.75C4.75 5.34375 5.0625 5 5.5 5C5.90625 5 6.25 5.34375 6.25 5.75V8.28125L6.875 7.53125C8.15625 6 10.0625 5 12.25 5C16.0938 5 19.25 8.15625 19.25 12C19.25 15.875 16.0938 19 12.25 19C10.6562 19 9.21875 18.5 8.03125 17.625C7.71875 17.375 7.625 16.9062 7.875 16.5625C8.125 16.2188 8.59375 16.1562 8.9375 16.4062C9.84375 17.0938 11 17.5 12.25 17.5C15.2812 17.5 17.75 15.0625 17.75 12C17.75 8.96875 15.2812 6.5 12.25 6.5C10.5312 6.5 9.03125 7.28125 8 8.5L7.15625 9.5H10C10.4062 9.5 10.75 9.84375 10.75 10.25C10.75 10.6875 10.4062 11 10 11H5.5Z\" fill=\"currentColor\"/>\n</svg>`\n};\nclass CourierIcon extends BaseElement {\n constructor(color, svg) {\n super();\n __publicField2(this, \"_color\");\n __publicField2(this, \"_svg\");\n __publicField2(this, \"_iconContainer\");\n __publicField2(this, \"_style\");\n this._color = color ?? CourierColors.black[500];\n this._svg = svg;\n const shadow = this.attachShadow({ mode: \"open\" });\n this._iconContainer = document.createElement(\"div\");\n shadow.appendChild(this._iconContainer);\n this._style = document.createElement(\"style\");\n this._style.textContent = this.getStyles(this._color);\n shadow.appendChild(this._style);\n this.refresh();\n }\n getStyles(color) {\n return `\n :host {\n display: inline-block;\n line-height: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n svg {\n width: 24px;\n height: 24px;\n color: ${color};\n }\n `;\n }\n refresh() {\n if (this._svg) {\n this._iconContainer.innerHTML = this._svg;\n }\n if (this._color) {\n this._style.textContent = this.getStyles(this._color);\n }\n }\n updateColor(color) {\n this._color = color;\n this.refresh();\n }\n updateSVG(svg) {\n this._svg = svg;\n this.refresh();\n }\n}\nclass CourierLink extends BaseElement {\n constructor() {\n super();\n __publicField2(this, \"link\");\n const shadow = this.attachShadow({ mode: \"open\" });\n this.link = document.createElement(\"a\");\n this.link.setAttribute(\"part\", \"link\");\n const style = document.createElement(\"style\");\n style.textContent = `\n :host {\n display: inline-block;\n }\n\n a {\n text-decoration: none;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 500;\n transition: all 0.2s ease;\n font-family: var(--courier-link-font-family, inherit);\n font-size: var(--courier-link-font-size, inherit);\n }\n\n /* Variants */\n a[data-variant=\"primary\"][data-mode=\"light\"] {\n color: var(--courier-link-color, ${theme.light.colors.link});\n }\n\n a[data-variant=\"primary\"][data-mode=\"light\"]:hover {\n opacity: 0.8;\n }\n\n a[data-variant=\"primary\"][data-mode=\"light\"]:active {\n opacity: 0.6;\n }\n\n a[data-variant=\"primary\"][data-mode=\"dark\"] {\n color: var(--courier-link-color, ${theme.dark.colors.link});\n }\n\n a[data-variant=\"primary\"][data-mode=\"dark\"]:hover {\n opacity: 0.8;\n }\n\n a[data-variant=\"primary\"][data-mode=\"dark\"]:active {\n opacity: 0.6;\n }\n\n a[data-underline=\"true\"] {\n text-decoration: underline;\n }\n\n a:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n pointer-events: none;\n }\n `;\n shadow.appendChild(style);\n shadow.appendChild(this.link);\n this.updateVariant();\n this.updateUnderline();\n this.updateMode();\n }\n connectedCallback() {\n const slot = document.createElement(\"slot\");\n this.link.appendChild(slot);\n this.updateHref();\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) return;\n switch (name) {\n case \"href\":\n this.updateHref();\n break;\n case \"variant\":\n case \"mode\":\n this.updateVariant();\n break;\n case \"disabled\":\n this.link.style.pointerEvents = this.hasAttribute(\"disabled\") ? \"none\" : \"auto\";\n this.link.style.opacity = this.hasAttribute(\"disabled\") ? \"0.6\" : \"1\";\n break;\n case \"color\":\n this.updateColor();\n break;\n case \"underline\":\n this.updateUnderline();\n break;\n case \"target\":\n this.updateTarget();\n break;\n case \"font-family\":\n this.updateFontFamily();\n break;\n case \"font-size\":\n this.updateFontSize();\n break;\n }\n }\n updateHref() {\n const href = this.getAttribute(\"href\");\n if (href) {\n this.link.href = href;\n }\n }\n updateVariant() {\n const variant = this.getAttribute(\"variant\") || \"primary\";\n const mode = this.getAttribute(\"mode\") || \"light\";\n this.link.setAttribute(\"data-variant\", variant);\n this.link.setAttribute(\"data-mode\", mode);\n }\n updateColor() {\n const color = this.getAttribute(\"color\");\n if (color) {\n this.link.style.setProperty(\"--courier-link-color\", color);\n } else {\n this.link.style.removeProperty(\"--courier-link-color\");\n }\n }\n updateUnderline() {\n const underline = this.getAttribute(\"underline\") === \"true\";\n this.link.setAttribute(\"data-underline\", underline.toString());\n }\n updateMode() {\n const mode = this.getAttribute(\"mode\") || \"light\";\n this.link.setAttribute(\"data-mode\", mode);\n }\n updateTarget() {\n const target = this.getAttribute(\"target\");\n if (target) {\n this.link.target = target;\n }\n }\n updateFontFamily() {\n const fontFamily = this.getAttribute(\"font-family\");\n if (fontFamily) {\n this.link.style.setProperty(\"--courier-link-font-family\", fontFamily);\n } else {\n this.link.style.removeProperty(\"--courier-link-font-family\");\n }\n }\n updateFontSize() {\n const fontSize = this.getAttribute(\"font-size\");\n if (fontSize) {\n this.link.style.setProperty(\"--courier-link-font-size\", fontSize);\n } else {\n this.link.style.removeProperty(\"--courier-link-font-size\");\n }\n }\n}\n__publicField2(CourierLink, \"observedAttributes\", [\n \"href\",\n \"variant\",\n \"disabled\",\n \"color\",\n \"underline\",\n \"mode\",\n \"target\",\n \"font-family\",\n \"font-size\"\n]);\nclass CourierElement extends CourierSystemThemeElement {\n constructor() {\n super();\n __publicField2(this, \"shadow\");\n this.shadow = this.attachShadow({ mode: \"open\" });\n }\n // Build the element with a factory function\n build(newElement) {\n if (newElement === null) {\n this.shadow.replaceChildren();\n return;\n }\n const element = newElement ?? this.defaultElement();\n this.shadow.replaceChildren(element);\n }\n // Default element to be used if no factory is provided\n defaultElement() {\n const element = document.createElement(\"div\");\n element.textContent = \"Default Element Factory\";\n element.style.cssText = `\n background-color: red;\n text-align: center;\n padding: 12px;\n `;\n return element;\n }\n}\nclass CourierInfoState extends CourierElement {\n constructor(props) {\n super();\n __publicField2(this, \"_props\");\n __publicField2(this, \"_title\");\n __publicField2(this, \"_button\");\n __publicField2(this, \"_style\");\n __publicField2(this, \"_buttonClickCallback\", null);\n this._props = props;\n }\n defaultElement() {\n var _a, _b;\n const container = document.createElement(\"div\");\n this._title = document.createElement(\"h2\");\n if ((_a = this._props.title) == null ? void 0 : _a.text) {\n this._title.textContent = this._props.title.text;\n }\n this._button = new CourierButton(this._props.button ?? CourierButtonVariants.secondary(this.currentSystemTheme));\n this._style = document.createElement(\"style\");\n this._style.textContent = this.getStyles(this._props);\n container.className = \"container\";\n container.appendChild(this._style);\n container.appendChild(this._title);\n container.appendChild(this._button);\n this.shadow.appendChild(container);\n (_b = this._button) == null ? void 0 : _b.addEventListener(\"click\", () => {\n if (this._buttonClickCallback) {\n this._buttonClickCallback();\n }\n });\n return container;\n }\n onSystemThemeChange(_) {\n this.updateStyles(this._props);\n }\n getStyles(props) {\n var _a, _b, _c, _d;\n return `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n }\n\n .container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 16px;\n text-align: center;\n padding: 24px;\n }\n\n .container h2 {\n margin: 0;\n color: ${((_a = props.title) == null ? void 0 : _a.textColor) ?? \"red\"};\n font-size: ${((_b = props.title) == null ? void 0 : _b.fontSize) ?? \"16px\"};\n font-weight: ${((_c = props.title) == null ? void 0 : _c.fontWeight) ?? \"500\"};\n font-family: ${((_d = props.title) == null ? void 0 : _d.fontFamily) ?? \"inherit\"};\n }\n `;\n }\n updateStyles(props) {\n this._props = props;\n if (this._style) {\n this._style.textContent = this.getStyles(props);\n }\n if (this._button) {\n this._button.updateButton(props.button);\n }\n }\n setButtonClickCallback(callback) {\n this._buttonClickCallback = callback;\n }\n}\nclass CourierIconButton extends BaseElement {\n constructor(svg, color, backgroundColor, hoverBackgroundColor, activeBackgroundColor, borderRadius, height, width) {\n super();\n __publicField2(this, \"_backgroundColor\");\n __publicField2(this, \"_hoverBackgroundColor\");\n __publicField2(this, \"_activeBackgroundColor\");\n __publicField2(this, \"_borderRadius\");\n __publicField2(this, \"_height\");\n __publicField2(this, \"_width\");\n __publicField2(this, \"_style\");\n __publicField2(this, \"_button\");\n __publicField2(this, \"_icon\");\n this._borderRadius = borderRadius;\n this._backgroundColor = backgroundColor;\n this._hoverBackgroundColor = hoverBackgroundColor;\n this._activeBackgroundColor = activeBackgroundColor;\n this._height = height;\n this._width = width;\n const shadow = this.attachShadow({ mode: \"open\" });\n this._button = document.createElement(\"button\");\n this._button.setAttribute(\"part\", \"button\");\n this._icon = new CourierIcon(color, svg);\n this._style = document.createElement(\"style\");\n this.refresh();\n shadow.appendChild(this._style);\n this._button.appendChild(this._icon);\n shadow.appendChild(this._button);\n }\n refresh() {\n this._style.textContent = this.getStyles();\n }\n getStyles() {\n return `\n :host {\n display: inline-block;\n border-radius: ${this._borderRadius ?? \"50%\"};\n }\n\n button {\n border: none;\n border-radius: ${this._borderRadius ?? \"50%\"};\n cursor: pointer;\n width: ${this._width ?? \"36px\"};\n height: ${this._height ?? \"36px\"};\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${this._backgroundColor ?? \"transparent\"};\n transition: background-color 0.2s ease;\n touch-action: manipulation;\n }\n\n button:hover {\n background-color: ${this._hoverBackgroundColor ?? \"red\"};\n }\n\n button:active {\n background-color: ${this._activeBackgroundColor ?? \"red\"};\n }\n\n button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n [part=\"icon\"] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n }\n `;\n }\n updateIconColor(color) {\n this._icon.updateColor(color);\n }\n updateIconSVG(svg) {\n this._icon.updateSVG(svg);\n }\n updateBackgroundColor(color) {\n this._backgroundColor = color;\n this.refresh();\n }\n updateHoverBackgroundColor(color) {\n this._hoverBackgroundColor = color;\n this.refresh();\n }\n updateActiveBackgroundColor(color) {\n this._activeBackgroundColor = color;\n this.refresh();\n }\n}\nfunction registerElement(name, element) {\n if (typeof window !== \"undefined\" && !customElements.get(name)) {\n customElements.define(name, element);\n }\n}\nconst components = [\n { name: \"courier-button\", class: CourierButton },\n { name: \"courier-icon\", class: CourierIcon },\n { name: \"courier-link\", class: CourierLink },\n { name: \"courier-info-state\", class: CourierInfoState },\n { name: \"courier-icon-button\", class: CourierIconButton },\n { name: \"courier-system-theme\", class: CourierSystemThemeElement }\n];\ncomponents.forEach(({ name, class: componentClass }) => registerElement(name, componentClass));\nfunction copyMessage(message) {\n const copy = {\n ...message\n };\n if (message.actions) {\n copy.actions = message.actions.map((action) => copyInboxAction(action));\n }\n if (message.data) {\n copy.data = JSON.parse(JSON.stringify(message.data));\n }\n if (message.tags) {\n copy.tags = [...message.tags];\n }\n if (message.trackingIds) {\n copy.trackingIds = { ...message.trackingIds };\n }\n return copy;\n}\nfunction copyInboxAction(action) {\n const copy = {\n ...action\n };\n if (action.data) {\n copy.data = JSON.parse(JSON.stringify(action.data));\n }\n return copy;\n}\nfunction copyInboxDataSet(dataSet) {\n return {\n ...dataSet,\n messages: dataSet.messages.map((message) => copyMessage(message))\n };\n}\nfunction getMessageTime(message) {\n if (!message.created) return \"Now\";\n const now = /* @__PURE__ */ new Date();\n const messageDate = new Date(message.created);\n const diffInSeconds = Math.floor((now.getTime() - messageDate.getTime()) / 1e3);\n if (diffInSeconds < 60) return `${diffInSeconds}s`;\n if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / 60)}m`;\n if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / 3600)}h`;\n if (diffInSeconds < 604800) return `${Math.floor(diffInSeconds / 86400)}d`;\n if (diffInSeconds < 31536e3) return `${Math.floor(diffInSeconds / 604800)}w`;\n return `${Math.floor(diffInSeconds / 31536e3)}y`;\n}\nclass CourierInboxListItemMenu extends BaseElement {\n constructor(theme2) {\n super();\n // State\n __publicField(this, \"_theme\");\n __publicField(this, \"_options\", []);\n // Components\n __publicField(this, \"_style\");\n this._theme = theme2;\n const shadow = this.attachShadow({ mode: \"open\" });\n this._style = document.createElement(\"style\");\n this._style.textContent = this.getStyles();\n shadow.appendChild(this._style);\n const menu = document.createElement(\"ul\");\n menu.className = \"menu\";\n shadow.appendChild(menu);\n }\n getStyles() {\n var _a, _b, _c;\n const menu = (_c = (_b = (_a = this._theme.inbox) == null ? void 0 : _a.list) == null ? void 0 : _b.item) == null ? void 0 : _c.menu;\n return `\n :host {\n display: block;\n position: absolute;\n background: ${(menu == null ? void 0 : menu.backgroundColor) ?? \"red\"};\n border: ${(menu == null ? void 0 : menu.border) ?? \"1px solid red\"};\n border-radius: ${(menu == null ? void 0 : menu.borderRadius) ?? \"0px\"};\n box-shadow: ${(menu == null ? void 0 : menu.shadow) ?? \"0 2px 8px red\"};\n user-select: none;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s;\n overflow: hidden;\n }\n\n :host(.visible) {\n opacity: 1;\n pointer-events: auto;\n }\n\n ul.menu {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: row;\n }\n\n li.menu-item {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-bottom: none;\n background: transparent;\n }\n `;\n }\n setOptions(options) {\n this._options = options;\n this.renderMenu();\n }\n renderMenu() {\n var _a, _b, _c, _d;\n const menu = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector(\"ul.menu\");\n if (!menu) return;\n menu.innerHTML = \"\";\n const menuTheme = (_d = (_c = (_b = this._theme.inbox) == null ? void 0 : _b.list) == null ? void 0 : _c.item) == null ? void 0 : _d.menu;\n const cancelEvent = (e) => {\n e.stopPropagation();\n e.preventDefault();\n };\n this._options.forEach((opt) => {\n var _a2, _b2, _c2;\n const icon = new CourierIconButton(opt.icon.svg, opt.icon.color, menuTheme == null ? void 0 : menuTheme.backgroundColor, (_a2 = menuTheme == null ? void 0 : menuTheme.item) == null ? void 0 : _a2.hoverBackgroundColor, (_b2 = menuTheme == null ? void 0 : menuTheme.item) == null ? void 0 : _b2.activeBackgroundColor, (_c2 = menuTheme == null ? void 0 : menuTheme.item) == null ? void 0 : _c2.borderRadius);\n const handleInteraction = (e) => {\n cancelEvent(e);\n opt.onClick();\n };\n icon.addEventListener(\"click\", handleInteraction);\n icon.addEventListener(\"touchstart\", cancelEvent);\n icon.addEventListener(\"touchend\", handleInteraction);\n icon.addEventListener(\"touchmove\", cancelEvent);\n icon.addEventListener(\"mousedown\", cancelEvent);\n icon.addEventListener(\"mouseup\", cancelEvent);\n menu.appendChild(icon);\n });\n }\n show() {\n this.classList.add(\"visible\");\n }\n hide() {\n this.classList.remove(\"visible\");\n }\n}\nregisterElement(\"courier-inbox-list-item-menu\", CourierInboxListItemMenu);\nconst _CourierInboxDatastore = class _CourierInboxDatastore {\n constructor() {\n __publicField(this, \"_inboxDataSet\");\n __publicField(this, \"_archiveDataSet\");\n __publicField(this, \"_dataStoreListeners\", []);\n __publicField(this, \"_unreadCount\");\n __publicField(this, \"isPaginatingInbox\", false);\n __publicField(this, \"isPaginatingArchive\", false);\n }\n static get shared() {\n if (!_CourierInboxDatastore.instance) {\n _CourierInboxDatastore.instance = new _CourierInboxDatastore();\n }\n return _CourierInboxDatastore.instance;\n }\n get unreadCount() {\n return this._unreadCount ?? 0;\n }\n get inboxDataSet() {\n return this._inboxDataSet ?? { feedType: \"inbox\", messages: [], canPaginate: false, paginationCursor: null };\n }\n get archiveDataSet() {\n return this._archiveDataSet ?? { feedType: \"archive\", messages: [], canPaginate: false, paginationCursor: null };\n }\n addDataStoreListener(listener) {\n this._dataStoreListeners.push(listener);\n }\n removeDataStoreListener(listener) {\n this._dataStoreListeners = this._dataStoreListeners.filter((l) => l !== listener);\n }\n async fetchDataSet(props) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;\n if (props.canUseCache) {\n switch (props.feedType) {\n case \"inbox\":\n if (this._inboxDataSet) {\n return this._inboxDataSet;\n }\n break;\n case \"archive\":\n if (this._archiveDataSet) {\n return this._archiveDataSet;\n }\n break;\n }\n }\n const response = props.feedType === \"inbox\" ? await ((_a = Courier.shared.client) == null ? void 0 : _a.inbox.getMessages()) : await ((_b = Courier.shared.client) == null ? void 0 : _b.inbox.getArchivedMessages());\n return {\n feedType: props.feedType,\n messages: ((_d = (_c = response == null ? void 0 : response.data) == null ? void 0 : _c.messages) == null ? void 0 : _d.nodes) ?? [],\n canPaginate: ((_g = (_f = (_e = response == null ? void 0 : response.data) == null ? void 0 : _e.messages) == null ? void 0 : _f.pageInfo) == null ? void 0 : _g.hasNextPage) ?? false,\n paginationCursor: ((_j = (_i = (_h = response == null ? void 0 : response.data) == null ? void 0 : _h.messages) == null ? void 0 : _i.pageInfo) == null ? void 0 : _j.startCursor) ?? null\n };\n }\n async fetchUnreadCount(props) {\n var _a;\n if (props.canUseCache && this._unreadCount !== void 0) {\n return this._unreadCount;\n }\n const unreadCount = await ((_a = Courier.shared.client) == null ? void 0 : _a.inbox.getUnreadMessageCount());\n return unreadCount ?? 0;\n }\n async load(props) {\n var _a, _b, _c;\n try {\n if (!((_a = Courier.shared.client) == null ? void 0 : _a.options.userId)) {\n throw new Error(\"User is not signed in\");\n }\n const properties = props ?? { feedType: \"inbox\", canUseCache: true };\n const [dataSet, unreadCount] = await Promise.all([\n this.fetchDataSet(properties),\n this.fetchUnreadCount(properties)\n ]);\n switch (properties.feedType) {\n case \"inbox\":\n this._inboxDataSet = dataSet;\n break;\n case \"archive\":\n this._archiveDataSet = dataSet;\n break;\n }\n this._unreadCount = unreadCount;\n this._dataStoreListeners.forEach((listener) => {\n var _a2, _b2, _c2, _d;\n (_b2 = (_a2 = listener.events).onDataSetChange) == null ? void 0 : _b2.call(_a2, dataSet, properties.feedType);\n (_d = (_c2 = listener.events).onUnreadCountChange) == null ? void 0 : _d.call(_c2, this._unreadCount ?? 0);\n });\n } catch (error) {\n (_c = (_b = Courier.shared.client) == null ? void 0 : _b.options.logger) == null ? void 0 : _c.error(\"Error loading inbox:\", error);\n this._dataStoreListeners.forEach((listener) => {\n var _a2, _b2;\n (_b2 = (_a2 = listener.events).onError) == null ? void 0 : _b2.call(_a2, error);\n });\n }\n }\n /** Listen for inbox and archive dataset updates. */\n async listenForUpdates() {\n var _a, _b;\n try {\n await this.ensureDataSetsLoaded();\n await this.connectSocket();\n } catch (error) {\n (_b = (_a = Courier.shared.client) == null ? void 0 : _a.options.logger) == null ? void 0 : _b.error(\"Error listening for updates:\", error);\n this._dataStoreListeners.forEach((listener) => {\n var _a2, _b2;\n (_b2 = (_a2 = listener.events).onError) == null ? void 0 : _b2.call(_a2, error);\n });\n }\n }\n /** Fetch either/both datasets if they aren't already loaded. */\n async ensureDataSetsLoaded() {\n let dataSetPromises = [];\n if (!this._inboxDataSet) {\n dataSetPromises.push(this.load({ feedType: \"inbox\", canUseCache: true }));\n }\n if (!this._archiveDataSet) {\n dataSetPromises.push(this.load({ feedType: \"archive\", canUseCache: true }));\n }\n await Promise.all(dataSetPromises);\n }\n async connectSocket() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n const socket = (_a = Courier.shared.client) == null ? void 0 : _a.inbox.socket;\n try {\n if (!socket) {\n (_c = (_b = Courier.shared.client) == null ? void 0 : _b.options.logger) == null ? void 0 : _c.info(\"CourierInbox socket not available\");\n return;\n }\n if (socket.isConnecting || socket.isOpen) {\n (_f = (_d = Courier.shared.client) == null ? void 0 : _d.options.logger) == null ? void 0 : _f.info(`Inbox socket already connecting or open for client ID: [${(_e = Courier.shared.client) == null ? void 0 : _e.options.connectionId}]`);\n return;\n }\n socket.addMessageEventListener((event) => {\n if (event.event === MessageEvent.NewMessage) {\n const message2 = event.data;\n this.addMessage(message2, 0, \"inbox\");\n return;\n }\n const message = this.getMessage({ messageId: event.messageId });\n switch (event.event) {\n case MessageEvent.MarkAllRead:\n this.readAllMessages({ canCallApi: false });\n break;\n case MessageEvent.Read:\n if (message) {\n this.readMessage({ message, canCallApi: false });\n }\n break;\n case MessageEvent.Unread:\n if (message) {\n this.unreadMessage({ message, canCallApi: false });\n }\n break;\n case MessageEvent.Opened:\n if (message) {\n this.openMessage({ message, canCallApi: false });\n }\n break;\n case MessageEvent.Archive:\n if (message) {\n this.archiveMessage({ message, canCallApi: false });\n }\n break;\n case MessageEvent.ArchiveRead:\n this.archiveReadMessages({ canCallApi: false });\n break;\n case MessageEvent.Clicked:\n if (message) {\n this.clickMessage({ message, canCallApi: false });\n }\n break;\n case MessageEvent.Unarchive:\n if (message) {\n this.unarchiveMessage({ message, canCallApi: false });\n }\n break;\n case MessageEvent.Unopened:\n break;\n }\n });\n await socket.connect();\n await socket.sendSubscribe();\n (_i = (_g = Courier.shared.client) == null ? void 0 : _g.options.logger) == null ? void 0 : _i.info(`Inbox socket connected for client ID: [${(_h = Courier.shared.client) == null ? void 0 : _h.options.connectionId}]`);\n } catch (error) {\n (_k = (_j = Courier.shared.client) == null ? void 0 : _j.options.logger) == null ? void 0 : _k.error(\"Failed to connect socket:\", error);\n }\n }\n /**\n * Get a message by messageId from the inbox or archive data set\n * @param props - The message ID\n * @returns The message or undefined if it is not found\n */\n getMessage(props) {\n var _a, _b;\n if (!props.messageId) {\n return void 0;\n }\n return ((_a = this._inboxDataSet) == null ? void 0 : _a.messages.find((m) => m.messageId === props.messageId)) ?? ((_b = this._archiveDataSet) == null ? void 0 : _b.messages.find((m) => m.messageId === props.messageId));\n }\n /**\n * Fetch the next page of messages\n * @param props - The feed type\n * @returns The next page of messages or null if there is no next page\n */\n async fetchNextPageOfMessages(props) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n switch (props.feedType) {\n case \"inbox\":\n if (this.isPaginatingInbox) {\n return null;\n }\n if (((_a = this._inboxDataSet) == null ? void 0 : _a.canPaginate) && this._inboxDataSet.paginationCursor) {\n try {\n this.isPaginatingInbox = true;\n const response = await ((_b = Courier.shared.client) == null ? void 0 : _b.inbox.getMessages({\n paginationLimit: Courier.shared.paginationLimit,\n startCursor: this._inboxDataSet.paginationCursor\n }));\n const dataSet = {\n feedType: \"inbox\",\n messages: ((_d = (_c = response == null ? void 0 : response.data) == null ? void 0 : _c.messages) == null ? void 0 : _d.nodes) ?? [],\n canPaginate: ((_g = (_f = (_e = response == null ? void 0 : response.data) == null ? void 0 : _e.messages) == null ? void 0 : _f.pageInfo) == null ? void 0 : _g.hasNextPage) ?? false,\n paginationCursor: ((_j = (_i = (_h = response == null ? void 0 : response.data) == null ? void 0 : _h.messages) == null ? void 0 : _i.pageInfo) == null ? void 0 : _j.startCursor) ?? null\n };\n this.addPage(dataSet);\n return dataSet;\n } catch (error) {\n (_l = (_k = Courier.shared.client) == null ? void 0 : _k.options.logger) == null ? void 0 : _l.error(\"Error fetching next page of inbox messages:\", error);\n return null;\n } finally {\n this.isPaginatingInbox = false;\n }\n }\n break;\n case \"archive\":\n if (this.isPaginatingArchive) {\n return null;\n }\n if (((_m = this._archiveDataSet) == null ? void 0 : _m.canPaginate) && this._archiveDataSet.paginationCursor) {\n try {\n this.isPaginatingArchive = true;\n const response = await ((_n = Courier.shared.client) == null ? void 0 : _n.inbox.getArchivedMessages({\n paginationLimit: Courier.shared.paginationLimit,\n startCursor: this._archiveDataSet.paginationCursor\n }));\n const dataSet = {\n feedType: \"archive\",\n messages: ((_p = (_o = response == null ? void 0 : response.data) == null ? void 0 : _o.messages) == null ? void 0 : _p.nodes) ?? [],\n canPaginate: ((_s = (_r = (_q = response == null ? void 0 : response.data) == null ? void 0 : _q.messages) == null ? void 0 : _r.pageInfo) == null ? void 0 : _s.hasNextPage) ?? false,\n paginationCursor: ((_v = (_u = (_t = response == null ? void 0 : response.data) == null ? void 0 : _t.messages) == null ? void 0 : _u.pageInfo) == null ? void 0 : _v.startCursor) ?? null\n };\n this.addPage(dataSet);\n return dataSet;\n } catch (error) {\n (_x = (_w = Courier.shared.client) == null ? void 0 : _w.options.logger) == null ? void 0 : _x.error(\"Error fetching next page of archived messages:\", error);\n return null;\n } finally {\n this.isPaginatingArchive = false;\n }\n }\n break;\n }\n return null;\n }\n /**\n * Check if the datastore is loaded and ready to perform mutations\n * @returns True if the datastore is loaded and ready to perform mutations, false otherwise\n */\n canMutate() {\n return !!(Courier.shared.client && this._inboxDataSet && this._archiveDataSet);\n }\n async readMessage({ message, canCallApi = true }) {\n var _a, _b, _c;\n if (!this.canMutate()) {\n return;\n }\n const datastoreSnapshot = this.getDatastoreSnapshot(this.unreadCount, this._inboxDataSet, this._archiveDataSet);\n const snapshot = this.getMessageSnapshot(message);\n if (snapshot.message.read) {\n return;\n }\n try {\n snapshot.message.read = (/* @__PURE__ */ new Date()).toISOString();\n this.applyMessageSnapshot(snapshot);\n this._unreadCount = datastoreSnapshot.unreadCount - 1;\n this._dataStoreListeners.forEach((listener) => {\n var _a2, _b2;\n (_b2 = (_a2 = listener.events).onUnreadCountChange) == null ? void 0 : _b2.call(_a2, this._unreadCount);\n });\n if (canCallApi) {\n await ((_a = Courier.shared.client) == null ? void 0 : _a.inbox.read({ messageId: message.messageId }));\n }\n } catch (error) {\n (_c = (_b = Courier.shared.client) == null ? void 0 : _b.options.logger) == null ? void 0 : _c.error(\"Error reading message:\", error);\n this.applyDatastoreSnapshot(datastoreSnapshot);\n }\n }\n async unreadMessage({ message, canCallApi = true }) {\n var _a, _b, _c;\n if (!this.canMutate()) {\n return;\n }\n const datastoreSnapshot = this.getDatastoreSnapshot(this.unreadCount, this._inboxDataSet, this._archiveDataSet);\n const snapshot = this.getMessageSnapshot(message);\n if (!snapshot.message.read) {\n return;\n }\n try {\n snapshot.message.read = void 0;\n this.applyMessageSnapshot(snapshot);\n this._unreadCount = datastoreSnapshot.unreadCount + 1;\n this._dataStoreListeners.forEach((listener) => {\n var _a2, _b2;\n (_b2 = (_a2 = listener.events).onUnreadCountChange) == null ? void 0 : _b2.call(_a2, this._unreadCount);\n });\n if (canCallApi) {\n await ((_a = Courier.shared.client) == null ? void 0 : _a.inbox.unread({ messageId: message.messageId }));\n }\n } catch (error) {\n (_c = (_b = Courier.shared.client) == null ? void 0 : _b.options.logger) == null ? void 0 : _c.error(\"Error unreading message:\", error);\n this.applyDatastoreSnapshot(datastoreSnapshot);\n }\n }\n async openMessage({ message, canCallApi = true }) {\n var _a, _b, _c;\n if (!this.canMutate()) {\n return;\n }\n const snapshot = this.getMessageSnapshot(message);\n if (snapshot.inboxIndex === void 0 && snapshot.archiveIndex === void 0) {\n return;\n }\n if (snapshot.message.opened) {\n return;\n }\n try {\n message.opened = (/* @__PURE__ */ new Date()).toISOString();\n this.applyMessageSnapshot(snapshot);\n if (canCallApi) {\n await ((_a = Courier.shared.client) == null ? void 0 : _a.inbox.open({ messageId: message.messageId }));\n }\n } catch (error) {\n this.applyMessageSnapshot(snapshot);\n (_c = (_b = Courier.shared.client) == null ? void 0 : _b.options.logger) == null ? void 0 : _c.error(\"Error opening message:\", error);\n }\n }\n async clickMessage({ message, canCallApi = true }) {\n var _a, _b, _c, _d, _e;\n if (!this.canMutate()) {\n return;\n }\n try {\n if (((_a = message.trackingIds) == null ? void 0 : _a.clickTrackingId) && canCallApi) {\n await ((_c = Courier.shared.client) == null ? void 0 : _c.inbox.click({\n messageId: message.messageId,\n trackingId: (_b = message.trackingIds) == null ? void 0 : _b.clickTrackingId\n }));\n }\n } catch (error) {\n (_e = (_d = Courier.shared.client) == null ? void 0 : _d.options.logger) == null ? void 0 : _e.error(\"Error clicking message:\", error);\n }\n }\n async archiveMessage({ message, canCallApi = true }) {\n var _a, _b, _c, _d;\n if (!this.canMutate()) {\n return;\n }\n const messageSnapshot = this.getMessageSnapshot(message);\n if (messageSnapshot.inboxIndex === void 0) {\n return;\n }\n const datastoreSnapshot = this.getDatastoreSnapshot(this.unreadCount, this._inboxDataSet, this._archiveDataSet);\n try {\n message.archived = (/* @__PURE__ */ new Date()).toISOString();\n this.removeMessage(message, messageSnapshot.inboxIndex, \"inbox\");\n if ((_a = this._archiveDataSet) == null ? void 0 : _a.messages) {\n const insertIndex = this.findInsertIndex(message, this._archiveDataSet);\n this.addMessage(message, insertIndex, \"archive\");\n }\n if (canCallApi) {\n await ((_b = Courier.shared.client) == null ? void 0 : _b.inbox.archive({ messageId: message.messageId }));\n }\n } catch (error) {\n (_d = (_c = Courier.shared.client) == null ? void 0 : _c.options.logger) == null ? void 0 : _d.error(\"Error archiving message:\", error);\n this.applyDatastoreSnapshot(datastoreSnapshot);\n }\n }\n async unarchiveMessage({ message, canCallApi = true }) {\n var _a, _b, _c, _d;\n if (!this.canMutate()) {\n return;\n }\n const datastoreSnapshot = this.getDatastoreSnapshot(this.unreadCount, this._inboxDataSet, this._archiveDataSet);\n const messageSnapshot = this.getMessageSnapshot(message);\n if (messageSnapshot.archiveIndex === void 0) {\n return;\n }\n try {\n messageSnapshot.message.archived = void 0;\n this.removeMessage(message, messageSnapshot.archiveIndex, \"archive\");\n if ((_a = this._inboxDataSet) == null ? void 0 : _a.messages) {\n const insertIndex = this.findInsertIndex(message, this._inboxDataSet);\n this.addMessage(message, insertIndex, \"inbox\");\n }\n if (canCallApi) {\n await ((_b = Courier.shared.client) == null ? void 0 : _b.inbox.unarchive({ messageId: message.messageId }));\n }\n } catch (error) {\n (_d = (_c = Courier.shared.client) == null ? void 0 : _c.options.logger) == null ? void 0 : _d.error(\"Error unarchiving message:\", error);\n this.applyDatastoreSnapshot(datastoreSnapshot);\n }\n }\n async archiveReadMessages({ canCallApi = true } = {}) {\n var _a, _b, _c, _d;\n if (!this.canMutate()) {\n return;\n }\n const datastoreSnapshot = this.getDatastoreSnapshot(this.unreadCount, this._inboxDataSet, this._archiveDataSet);\n try {\n const timestamp = (/* @__PURE__ */ new Date()).toISOString();\n const messagesToArchive = ((_a = this._inboxDataSet) == null ? void 0 : _a.messages.filter((message) => message.read)) ?? [];\n messagesToArchive.forEach((message) => {\n var _a2, _b2, _c2;\n message.archived = timestamp;\n const inboxIndex = (_a2 = this._inboxDataSet) == null ? void 0 : _a2.messages.findIndex((m) => m.messageId === message.messageId);\n if (inboxIndex !== void 0 && inboxIndex !== -1) {\n (_b2 = this._inboxDataSet) == null ? void 0 : _b2.messages.splice(inboxIndex, 1);\n }\n if ((_c2 = this._archiveDataSet) == null ? void 0 : _c2.messages) {\n const insertIndex = this.findInsertIndex(message, this._archiveDataSet);\n this._archiveDataSet.messages.splice(insertIndex, 0, message);\n }\n });\n this._dataStoreListeners.forEach((listener) => {\n var _a2, _b2, _c2, _d2;\n if (this._inboxDataSet) {\n (_b2 = (_a2 = listener.events).onDataSetChange) == null ? void 0 : _b2.call(_a2, this._inboxDataSet, \"inbox\");\n }\n if (this._archiveDataSet) {\n (_d2 = (_c2 = listener.events).onDataSetChange) == null ? void 0 : _d2.call(_c2, this._archiveDataSet, \"archive\");\n }\n });\n if (canCallApi) {\n await ((_b = Courier.shared.client) == null ? void 0 : _b.inbox.archiveRead());\n }\n } catch (error) {\n (_d = (_c = Courier.shared.client) == null ? void 0 : _c.options.logger) == null ? void 0 : _d.error(\"Error archiving read messages:\", error);\n this.applyDatastoreSnapshot(datastoreSnapshot);\n }\n }\n async archiveAllMessages({ canCallApi = true } = {}) {\n var _a, _b, _c, _d;\n if (!this.canMutate()) {\n return;\n }\n const datastoreSnapshot = this.getDatastoreSnapshot(this.unreadCount, this._inboxDataSet, this._archiveDataSet);\n try {\n const timestamp = (/* @__PURE__ */ new Date()).toISOString();\n (_a = this._inboxDataSet) == null ? void 0 : _a.messages.forEach((message) => {\n var _a2;\n message.archived = timestamp;\n if ((_a2 = this._archiveDataSet) == null ? void 0 : _a2.messages) {\n const insertIndex = this.findInsertIndex(message, this._archiveDataSet);\n this._archiveDataSet.messages.splice(insertIndex, 0, message);\n }\n });\n this._inboxDataSet = {\n messages: [],\n canPaginate: false,\n paginationCursor: null,\n feedType: \"inbox\"\n };\n this._unreadCount = 0;\n this._dataStoreListeners.forEach((listener) => {\n var _a2, _b2, _c2, _d2, _e, _f;\n if (this._inboxDataSet) {\n (_b2 = (_a2 = listener.events).onDataSetChange) == null ? void 0 : _b2.call(_a2, this._inboxDataSet, \"inbox\");\n }\n if (this._archiveDataSet) {\n (_d2 = (_c2 = listener.events).onDataSetChange) == null ? void 0 : _d2.call(_c2, this._archiveDataSet, \"archive\");\n }\n (_f = (_e = listener.events).onUnreadCountChange) == null ? void 0 : _f.call(_e, this._unreadCount);\n });\n if (canCallApi) {\n await ((_b = Courier.shared.client) == null ? void 0 : _b.inbox.archiveAll());\n }\n } catch (error) {\n (_d = (_c = Courier.shared.client) == null ? void 0 : _c.options.logger) == null ? void 0 : _d.error(\"Error archiving all messages:\", error);\n this.applyDatastoreSnapshot(datastoreSnapshot);\n }\n }\n async readAllMessages({ canCallApi = true } = {}) {\n var _a, _b, _c, _d, _e;\n if (!this.canMutate()) {\n return;\n }\n const datastoreSnapshot = this.getDatastoreSnapshot(this.unreadCount, this._inboxDataSet, this._archiveDataSet);\n try {\n const timestamp = (/* @__PURE__ */ new Date()).toISOString();\n (_a = this._inboxDataSet) == null ? void 0 : _a.messages.forEach((message) => {\n if (!message.read) {\n message.read = timestamp;\n }\n });\n (_b = this._archiveDataSet) == null ? void 0 : _b.messages.forEach((message) => {\n if (!message.read) {\n message.read = timestamp;\n }\n });\n this._unreadCount = 0;\n this._dataStoreListeners.forEach((listener) => {\n var _a2, _b2, _c2, _d2, _e2, _f;\n if (this._inboxDataSet) {\n (_b2 = (_a2 = listener.events).onDataSetChange) == null ? void 0 : _b2.call(_a2, this._inboxDataSet, \"inbox\");\n }\n if (this._archiveDataSet) {\n (_d2 = (_c2 = listener.events).onDataSetChange) == null ? void 0 : _d2.call(_c2, this._archiveDataSet, \"archive\");\n }\n (_f = (_e2 = listener.events).onUnreadCountChange) == null ? void 0 : _f.call(_e2, this._unreadCount);\n });\n if (canCallApi) {\n await ((_c = Courier.shared.client) == null ? void 0 : _c.inbox.readAll());\n }\n } catch (error) {\n (_e = (_d = Courier.shared.client) == null ? void 0 : _d.options.logger) == null ? void 0 : _e.error(\"Error reading all messages:\", error);\n this.applyDatastoreSnapshot(datastoreSnapshot);\n }\n }\n /**\n * Find the insert index for a new message in a data set\n * @param newMessage - The new message to insert\n * @param dataSet - The data set to insert the message into\n * @returns The index to insert the message at\n */\n findInsertIndex(newMessage, dataSet) {\n const messages = dataSet.messages;\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i];\n if (message.created && newMessage.created && message.created < newMessage.created) {\n return i;\n }\n }\n return messages.length;\n }\n addPage(dataSet) {\n switch (dataSet.feedType) {\n case \"inbox\":\n if (this._inboxDataSet) {\n this._inboxDataSet.canPaginate = dataSet.canPaginate;\n this._inboxDataSet.paginationCursor = dataSet.paginationCursor;\n this._inboxDataSet.messages = [...this._inboxDataSet.messages, ...dataSet.messages];\n }\n break;\n case \"archive\":\n if (this._archiveDataSet) {\n this._archiveDataSet.canPaginate = dataSet.canPaginate;\n this._archiveDataSet.paginationCursor = dataSet.paginationCursor;\n this._archiveDataSet.messages = [...this._archiveDataSet.messages, ...dataSet.messages];\n }\n break;\n }\n this._dataStoreListeners.forEach(\n (listener) => {\n var _a, _b;\n return (_b = (_a = listener.events).onPageAdded) == null ? void 0 : _b.call(_a, dataSet, dataSet.feedType);\n }\n );\n }\n addMessage(message, index, feedType) {\n var _a, _b;\n switch (feedType) {\n case \"inbox\":\n if (!message.read && this._unreadCount !== void 0) {\n this._unreadCount = this._unreadCount + 1;\n }\n (_a = this._inboxDataSet) == null ? void 0 : _a.messages.splice(index, 0, message);\n break;\n case \"archive\":\n (_b = this._archiveDataSet) == null ? void 0 : _b.messages.splice(index, 0, message);\n break;\n }\n this._dataStoreListeners.forEach((listener) => {\n var _a2, _b2, _c, _d;\n (_b2 = (_a2 = listener.events).onMessageAdd) == null ? void 0 : _b2.call(_a2, message, index, feedType);\n (_d = (_c = listener.events).onUnreadCountChange) == null ? void 0 : _d.call(_c, this._unreadCount ?? 0);\n });\n }\n removeMessage(message, index, feedType) {\n var _a, _b;\n switch (feedType) {\n case \"inbox\":\n if (!message.read && this._unreadCount !== void 0) {\n this._unreadCount = this._unreadCount - 1;\n }\n (_a = this._inboxDataSet) == null ? void 0 : _a.messages.splice(index, 1);\n break;\n case \"archive\":\n (_b = this._archiveDataSet) == null ? void 0 : _b.messages.splice(index, 1);\n break;\n }\n this._dataStoreListeners.forEach((listener) => {\n var _a2, _b2, _c, _d;\n (_b2 = (_a2 = listener.events).onMessageRemove) == null ? void 0 : _b2.call(_a2, message, index, feedType);\n (_d = (_c = listener.events).onUnreadCountChange) == null ? void 0 : _d.call(_c, this._unreadCount ?? 0);\n });\n }\n /**\n * Apply a message snapshot to the data store\n * @param snapshot - The message snapshot to apply\n */\n applyMessageSnapshot(snapshot) {\n if (snapshot.archiveIndex !== void 0) {\n this.updateMessage(snapshot.message, snapshot.archiveIndex, \"archive\");\n }\n if (snapshot.inboxIndex !== void 0) {\n this.updateMessage(snapshot.message, snapshot.inboxIndex, \"inbox\");\n }\n }\n applyDatastoreSnapshot(snapshot) {\n const { unreadCount, inbox, archive } = snapshot;\n this._inboxDataSet = inbox;\n this._archiveDataSet = archive;\n this._dataStoreListeners.forEach((listener) => {\n var _a, _b, _c, _d, _e, _f;\n (_b = (_a = listener.events).onDataSetChange) == null ? void 0 : _b.call(_a, inbox, \"inbox\");\n (_d = (_c = listener.events).onDataSetChange) == null ? void 0 : _d.call(_c, archive, \"archive\");\n (_f = (_e = listener.events).onUnreadCountChange) == null ? void 0 : _f.call(_e, unreadCount);\n });\n }\n /**\n * Update a message in the data store\n * @param message - The message to update\n * @param index - The index of the message\n * @param feedType - The feed type of the message\n */\n updateMessage(message, index, feedType) {\n switch (feedType) {\n case \"inbox\":\n if (this._unreadCount !== void 0 && !message.archived) {\n if (message.read) {\n this._unreadCount = Math.max(0, this._unreadCount - 1);\n }\n if (!message.read) {\n this._unreadCount = this._unreadCount + 1;\n }\n }\n if (this._inboxDataSet) {\n this._inboxDataSet.messages[index] = message;\n }\n break;\n case \"archive\":\n if (this._archiveDataSet) {\n this._archiveDataSet.messages[index] = message;\n }\n break;\n }\n this._dataStoreListeners.forEach((listener) => {\n var _a, _b, _c, _d;\n (_b = (_a = listener.events).onMessageUpdate) == null ? void 0 : _b.call(_a, message, index, feedType);\n (_d = (_c = listener.events).onUnreadCountChange) == null ? void 0 : _d.call(_c, this._unreadCount ?? 0);\n });\n }\n /**\n * Copy an inbox data set\n * @param dataSet - The inbox data set to copy\n * @returns A copy of the inbox data set\n */\n getDatastoreSnapshot(unreadCount, inboxDataSet, archiveDataSet) {\n return {\n unreadCount,\n inbox: copyInboxDataSet(inboxDataSet),\n archive: copyInboxDataSet(archiveDataSet)\n };\n }\n /**\n * Copy an inbox message with its archive and inbox indices\n * @param message - The inbox message to copy\n * @returns A copy of the inbox message with its archive and inbox indices\n */\n getMessageSnapshot(message) {\n const archiveIndex = this._archiveDataSet ? this._archiveDataSet.messages.findIndex((m) => m.messageId === message.messageId) : void 0;\n const inboxIndex = this._inboxDataSet ? this._inboxDataSet.messages.findIndex((m) => m.messageId === message.messageId) : void 0;\n return {\n message: copyMessage(message),\n archiveIndex,\n inboxIndex\n };\n }\n};\n__publicField(_CourierInboxDatastore, \"instance\");\nlet CourierInboxDatastore = _CourierInboxDatastore;\nclass CourierListItem extends BaseElement {\n constructor(theme2) {\n super();\n // State\n __publicField(this, \"_theme\");\n __publicField(this, \"_message\", null);\n __publicField(this, \"_feedType\", \"inbox\");\n __publicField(this, \"_isMobile\", false);\n // Elements\n __publicField(this, \"_titleElement\");\n __publicField(this, \"_subtitleElement\");\n __publicField(this, \"_timeElement\");\n __publicField(this, \"_style\");\n __publicField(this, \"_menu\");\n __publicField(this, \"_unreadIndicator\");\n __publicField(this, \"_actionsContainer\");\n // Touch gestures\n __publicField(this, \"_longPressTimeout\", null);\n __publicField(this, \"_isLongPress\", false);\n // Callbacks\n __publicField(this, \"onItemClick\", null);\n __publicField(this, \"onItemLongPress\", null);\n __publicField(this, \"onItemActionClick\", null);\n this._theme = theme2;\n this._isMobile = \"ontouchstart\" in window;\n const shadow = this.attachShadow({ mode: \"open\" });\n const contentContainer = document.createElement(\"div\");\n contentContainer.className = \"content-container\";\n this._titleElement = document.createElement(\"p\");\n this._titleElement.setAttribute(\"part\", \"title\");\n this._subtitleElement = document.createElement(\"p\");\n this._subtitleElement.setAttribute(\"part\", \"subtitle\");\n this._actionsContainer = document.createElement(\"div\");\n this._actionsContainer.className = \"actions-container\";\n contentContainer.appendChild(this._titleElement);\n contentContainer.appendChild(this._subtitleElement);\n contentContainer.appendChild(this._actionsContainer);\n this._timeElement = document.createElement(\"p\");\n this._timeElement.setAttribute(\"part\", \"time\");\n this._unreadIndicator = document.createElement(\"div\");\n this._unreadIndicator.className = \"unread-indicator\";\n this._style = document.createElement(\"style\");\n this._refreshStyles();\n this._menu = new CourierInboxListItemMenu(this._theme);\n this._menu.setOptions(this._getMenuOptions());\n shadow.append(this._style, this._unreadIndicator, contentContainer, this._timeElement, this._menu);\n const cancelPropagation = (e) => {\n e.stopPropagation();\n e.preventDefault();\n };\n this._menu.addEventListener(\"mousedown\", cancelPropagation);\n this._menu.addEventListener(\"pointerdown\", cancelPropagation);\n this._menu.addEventListener(\"click\", cancelPropagation);\n this.addEventListener(\"click\", (e) => {\n if (this._menu.contains(e.target) || e.composedPath().includes(this._menu)) {\n return;\n }\n if (this._message && this.onItemClick && !(e.target instanceof CourierIcon) && !this._isLongPress) {\n this.onItemClick(this._message);\n }\n });\n this._setupHoverBehavior();\n this._setupLongPressBehavior();\n }\n _setupHoverBehavior() {\n if (!this._isMobile) {\n this.addEventListener(\"mouseenter\", () => {\n this._isLongPress = false;\n this._showMenu();\n });\n this.addEventListener(\"mouseleave\", () => this._hideMenu());\n }\n }\n _setupLongPressBehavior() {\n var _a, _b, _c;\n const menu = (_c = (_b = (_a = this._theme.inbox) == null ? void 0 : _a.list) == null ? void 0 : _b.item) == null ? void 0 : _c.menu;\n if (!(menu == null ? void 0 : menu.enabled)) {\n return;\n }\n const longPress = menu.longPress;\n this.addEventListener(\n \"touchstart\",\n () => {\n this._longPressTimeout = window.setTimeout(() => {\n this._isLongPress = true;\n this._showMenu();\n if (this._message && this.onItemLongPress) {\n this.onItemLongPress(this._message);\n if (navigator.vibrate) {\n navigator.vibrate((longPress == null ? void 0 : longPress.vibrationDuration) ?? 50);\n }\n }\n setTimeout(() => {\n this._hideMenu();\n this._isLongPress = false;\n }, (longPress == null ? void 0 : longPress.displayDuration) ?? 2e3);\n }, 650);\n },\n { passive: true }\n );\n this.addEventListener(\"touchend\", () => {\n if (this._longPressTimeout) {\n window.clearTimeout(this._longPressTimeout);\n this._longPressTimeout = null;\n }\n });\n }\n setOnLongPress(cb) {\n this.onItemLongPress = cb;\n }\n // Helpers\n _getMenuOptions() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;\n const menuTheme = (_d = (_c = (_b = (_a = this._theme.inbox) == null ? void 0 : _a.list) == null ? void 0 : _b.item) == null ? void 0 : _c.menu) == null ? void 0 : _d.item;\n let options = [];\n const isArchiveFeed = this._feedType === \"archive\";\n if (!isArchiveFeed) {\n options.push({\n id: ((_e = this._message) == null ? void 0 : _e.read) ? \"unread\" : \"read\",\n icon: {\n svg: ((_f = this._message) == null ? void 0 : _f.read) ? (_g = menuTheme == null ? void 0 : menuTheme.unread) == null ? void 0 : _g.svg : (_h = menuTheme == null ? void 0 : menuTheme.read) == null ? void 0 : _h.svg,\n color: ((_i = this._message) == null ? void 0 : _i.read) ? (_j = menuTheme == null ? void 0 : menuTheme.unread) == null ? void 0 : _j.color : ((_k = menuTheme == null ? void 0 : menuTheme.read) == null ? void 0 : _k.color) ?? \"red\"\n },\n onClick: () => {\n if (this._message) {\n if (this._message.read) {\n CourierInboxDatastore.shared.unreadMessage({ message: this._message });\n } else {\n CourierInboxDatastore.shared.readMessage({ message: this._message });\n }\n }\n }\n });\n }\n options.push({\n id: isArchiveFeed ? \"unarchive\" : \"archive\",\n icon: {\n svg: isArchiveFeed ? (_l = menuTheme == null ? void 0 : menuTheme.unarchive) == null ? void 0 : _l.svg : (_m = menuTheme == null ? void 0 : menuTheme.archive) == null ? void 0 : _m.svg,\n color: isArchiveFeed ? (_n = menuTheme == null ? void 0 : menuTheme.unarchive) == null ? void 0 : _n.color : ((_o = menuTheme == null ? void 0 : menuTheme.archive) == null ? void 0 : _o.color) ?? \"red\"\n },\n onClick: () => {\n if (this._message) {\n if (isArchiveFeed) {\n CourierInboxDatastore.shared.unarchiveMessage({ message: this._message });\n } else {\n CourierInboxDatastore.shared.archiveMessage({ message: this._message });\n }\n }\n }\n });\n return options;\n }\n // Menu visibility helpers\n _showMenu() {\n var _a, _b, _c;\n const menu = (_c = (_b = (_a = this._theme.inbox) == null ? void 0 : _a.list) == null ? void 0 : _b.item) == null ? void 0 : _c.menu;\n if (menu && menu.enabled) {\n this._menu.setOptions(this._getMenuOptions());\n this._menu.style.display = \"block\";\n this._menu.show();\n this._timeElement.style.opacity = \"0\";\n }\n }\n _hideMenu() {\n var _a, _b, _c;\n const menu = (_c = (_b = (_a = this._theme.inbox) == null ? void 0 : _a.list) == null ? void 0 : _b.item) == null ? void 0 : _c.menu;\n if (menu && menu.enabled) {\n this._menu.hide();\n this._menu.style.display = \"none\";\n this._timeElement.style.opacity = \"1\";\n }\n }\n _getStyles() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n const listItem = (_b = (_a = this._theme.inbox) == null ? void 0 : _a.list) == null ? void 0 : _b.item;\n return `\n :host {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: space-between;\n border-bottom: ${(listItem == null ? void 0 : listItem.divider) ?? \"1px solid red\"};\n font-family: inherit;\n cursor: pointer;\n transition: background-color 0.2s ease;\n margin: 0;\n width: 100%;\n box-sizing: border-box;\n padding: 12px 20px;\n position: relative;\n background-color: ${(listItem == null ? void 0 : listItem.backgroundColor) ?? \"transparent\"};\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: manipulation;\n }\n\n /* ───────────────────────── Base hover / active ────────────────── */\n @media (hover: hover) {\n :host(:hover) {\n background-color: ${(listItem == null ? void 0 : listItem.hoverBackgroundColor) ?? \"red\"};\n }\n }\n :host(:active) {\n background-color: ${(listItem == null ? void 0 : listItem.activeBackgroundColor) ?? \"red\"};\n }\n\n /* ───────────────────────── Menu hover / active ────────────────── */\n @media (hover: hover) {\n :host(:hover):has(courier-inbox-list-item-menu:hover, courier-inbox-list-item-menu *:hover, courier-button:hover, courier-button *:hover) {\n background-color: ${(listItem == null ? void 0 : listItem.backgroundColor) ?? \"transparent\"};\n }\n }\n :host(:active):has(courier-inbox-list-item-menu:active, courier-inbox-list-item-menu *:active, courier-button:active, courier-button *:active) {\n background-color: ${(listItem == null ? void 0 : listItem.backgroundColor) ?? \"transparent\"};\n }\n\n :host(:last-child) {\n border-bottom: none;\n }\n\n .unread-indicator {\n position: absolute;\n top: 28px;\n left: 6px;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: ${(listItem == null ? void 0 : listItem.unreadIndicatorColor) ?? \"red\"};\n display: none;\n }\n\n :host(.unread) .unread-indicator {\n display: block;\n }\n\n .content-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n margin-right: 12px;\n }\n\n p {\n margin: 0;\n overflow-wrap: break-word;\n word-break: break-word;\n hyphens: auto;\n line-height: 1.4;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n text-align: left;\n }\n\n p[part='title'] {\n font-family: ${((_c = listItem == null ? void 0 : listItem.title) == null ? void 0 : _c.family) ?? \"inherit\"};\n font-size: ${((_d = listItem == null ? void 0 : listItem.title) == null ? void 0 : _d.size) ?? \"14px\"};\n color: ${((_e = listItem == null ? void 0 : listItem.title) == null ? void 0 : _e.color) ?? \"red\"};\n margin-bottom: 4px;\n }\n\n p[part='subtitle'] {\n font-family: ${((_f = listItem == null ? void 0 : listItem.subtitle) == null ? void 0 : _f.family) ?? \"inherit\"};\n font-size: ${((_g = listItem == null ? void 0 : listItem.subtitle) == null ? void 0 : _g.size) ?? \"14px\"};\n color: ${((_h = listItem == null ? void 0 : listItem.subtitle) == null ? void 0 : _h.color) ?? \"red\"};\n }\n\n p[part='time'] {\n font-family: ${((_i = listItem == null ? void 0 : listItem.time) == null ? void 0 : _i.family) ?? \"inherit\"};\n font-size: ${((_j = listItem == null ? void 0 : listItem.time) == null ? void 0 : _j.size) ?? \"14px\"};\n color: ${((_k = listItem == null ? void 0 : listItem.time) == null ? void 0 : _k.color) ?? \"red\"};\n text-align: right;\n white-space: nowrap;\n }\n\n courier-inbox-list-item-menu {\n z-index: 1;\n position: absolute;\n top: 8px;\n right: 8px;\n display: none; /* becomes block while visible */\n }\n\n .actions-container {\n display: flex;\n margin-top: 10px;\n flex-wrap: wrap;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n display: none;\n }\n\n `;\n }\n _refreshStyles() {\n this._style.textContent = this._getStyles();\n }\n // Lifecycle hooks\n connectedCallback() {\n var _a, _b;\n const messageAttr = this.getAttribute(\"message\");\n const feedTypeAttr = this.getAttribute(\"feed-type\");\n if (feedTypeAttr) {\n this._feedType = feedTypeAttr;\n }\n if (messageAttr) {\n try {\n this._message = JSON.parse(messageAttr);\n this._updateContent();\n } catch (err) {\n (_b = (_a = Courier.shared.client) == null ? void 0 : _a.options.logger) == null ? void 0 : _b.error(\"CourierListItem – failed to parse message:\", err);\n }\n }\n }\n // Public API\n setMessage(message, feedType) {\n this._message = message;\n this._feedType = feedType;\n this._updateContent();\n }\n setOnItemClick(cb) {\n this.onItemClick = cb;\n }\n setOnItemActionClick(cb) {\n this.onItemActionClick = cb;\n }\n setOnItemLongPress(cb) {\n this.onItemLongPress = cb;\n }\n // Content rendering\n _updateContent() {\n var _a, _b, _c, _d, _e, _f;\n if (!this._message) {\n this._titleElement.textContent = \"\";\n this._subtitleElement.textContent = \"\";\n return;\n }\n this.classList.toggle(\"unread\", !this._message.read && this._feedType !== \"archive\");\n this._titleElement.textContent = this._message.title || \"Untitled Message\";\n this._subtitleElement.textContent = this._message.preview || this._message.body || \"\";\n this._timeElement.textContent = getMessageTime(this._message);\n this._menu.setOptions(this._getMenuOptions());\n const hasActions = ((_a = this._message) == null ? void 0 : _a.actions) && this._message.actions.length > 0;\n this._actionsContainer.style.display = hasActions ? \"flex\" : \"none\";\n const actionsTheme = (_d = (_c = (_b = this._theme.inbox) == null ? void 0 : _b.list) == null ? void 0 : _c.item) == null ? void 0 : _d.actions;\n (_f = (_e = this._message) == null ? void 0 : _e.actions) == null ? void 0 : _f.forEach((action) => {\n var _a2, _b2, _c2, _d2;\n const actionButton = new CourierButton({\n text: action.content,\n variant: \"secondary\",\n backgroundColor: actionsTheme == null ? void 0 : actionsTheme.backgroundColor,\n hoverBackgroundColor: actionsTheme == null ? void 0 : actionsTheme.hoverBackgroundColor,\n activeBackgroundColor: actionsTheme == null ? void 0 : actionsTheme.activeBackgroundColor,\n border: actionsTheme == null ? void 0 : actionsTheme.border,\n borderRadius: actionsTheme == null ? void 0 : actionsTheme.borderRadius,\n shadow: actionsTheme == null ? void 0 : actionsTheme.shadow,\n fontFamily: (_a2 = actionsTheme == null ? void 0 : actionsTheme.font) == null ? void 0 : _a2.family,\n fontSize: (_b2 = actionsTheme == null ? void 0 : actionsTheme.font) == null ? void 0 : _b2.size,\n fontWeight: (_c2 = actionsTheme == null ? void 0 : actionsTheme.font) == null ? void 0 : _c2.weight,\n textColor: (_d2 = actionsTheme == null ? void 0 : actionsTheme.font) == null ? void 0 : _d2.color,\n onClick: () => {\n if (this._message && this.onItemActionClick) {\n this.onItemActionClick(this._message, action);\n }\n }\n });\n this._actionsContainer.appendChild(actionButton);\n });\n }\n}\nregisterElement(\"courier-inbox-list-item\", CourierListItem);\nclass CourierInboxSkeletonListItem extends BaseElement {\n constructor(theme2, opacity) {\n super();\n // Shadow root\n __publicField(this, \"_shadow\");\n this._shadow = this.attachShadow({ mode: \"open\" });\n const style = document.createElement(\"style\");\n style.textContent = this.getStyles(opacity);\n this._shadow.appendChild(style);\n const firstRow = new CourierSkeletonAnimatedRow(theme2, 35);\n const secondRow = new CourierSkeletonAnimatedRow(theme2, 100);\n const thirdRow = new CourierSkeletonAnimatedRow(theme2, 82);\n this._shadow.appendChild(firstRow);\n this._shadow.appendChild(secondRow);\n this._shadow.appendChild(thirdRow);\n }\n getStyles(opacity) {\n return `\n :host {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n width: 100%;\n box-sizing: border-box;\n opacity: ${opacity};\n }\n `;\n }\n}\nregisterElement(\"courier-inbox-skeleton-list-item\", CourierInboxSkeletonListItem);\nclass CourierSkeletonAnimatedRow extends BaseElement {\n constructor(theme2, widthPercent) {\n super();\n __publicField(this, \"_shadow\");\n this._shadow = this.attachShadow({ mode: \"open\" });\n const style = document.createElement(\"style\");\n style.textContent = this.getStyles(theme2, widthPercent);\n this._shadow.appendChild(style);\n const skeletonItem = document.createElement(\"div\");\n skeletonItem.className = \"skeleton-item\";\n this._shadow.appendChild(skeletonItem);\n }\n getStyles(theme2, widthPercent) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;\n const color = ((_c = (_b = (_a = theme2.inbox) == null ? void 0 : _a.loading) == null ? void 0 : _b.animation) == null ? void 0 : _c.barColor) ?? \"#000\";\n const hexColor = color.length === 4 ? `#${color[1]}${color[1]}${color[2]}${color[2]}${color[3]}${color[3]}` : color;\n const r = parseInt(hexColor.slice(1, 3), 16);\n const g = parseInt(hexColor.slice(3, 5), 16);\n const b = parseInt(hexColor.slice(5, 7), 16);\n const colorWithAlpha80 = `rgba(${r}, ${g}, ${b}, 0.8)`;\n const colorWithAlpha40 = `rgba(${r}, ${g}, ${b}, 0.4)`;\n return `\n :host {\n display: flex;\n height: 100%;\n width: ${widthPercent}%;\n align-items: flex-start;\n justify-content: flex-start;\n }\n\n .skeleton-item {\n height: ${((_f = (_e = (_d = theme2.inbox) == null ? void 0 : _d.loading) == null ? void 0 : _e.animation) == null ? void 0 : _f.barHeight) ?? \"14px\"};\n width: 100%;\n background: linear-gradient(\n 90deg,\n ${colorWithAlpha80} 25%,\n ${colorWithAlpha40} 50%,\n ${colorWithAlpha80} 75%\n );\n background-size: 200% 100%;\n animation: shimmer ${((_i = (_h = (_g = theme2.inbox) == null ? void 0 : _g.loading) == null ? void 0 : _h.animation) == null ? void 0 : _i.duration) ?? \"2s\"} ease-in-out infinite;\n border-radius: ${((_l = (_k = (_j = theme2.inbox) == null ? void 0 : _j.loading) == null ? void 0 : _k.animation) == null ? void 0 : _l.barBorderRadius) ?? \"14px\"};\n }\n\n @keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n }\n `;\n }\n}\nregisterElement(\"courier-skeleton-animated-row\", CourierSkeletonAnimatedRow);\nclass CourierInboxSkeletonList extends CourierElement {\n constructor(theme2) {\n super();\n __publicField(this, \"_theme\");\n this._theme = theme2;\n }\n defaultElement() {\n const list = document.createElement(\"div\");\n list.className = \"list\";\n const style = document.createElement(\"style\");\n style.textContent = this.getStyles();\n list.appendChild(style);\n for (let i = 0; i < 3; i++) {\n const skeletonItem = new CourierInboxSkeletonListItem(this._theme, 1 / (i + 1));\n list.appendChild(skeletonItem);\n }\n this.shadow.appendChild(list);\n return list;\n }\n getStyles() {\n var _a, _b;\n return `\n :host {\n display: flex;\n height: 100%;\n width: 100%;\n align-items: flex-start;\n justify-content: flex-start;\n overflow: hidden;\n }\n\n .list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n overflow: hidden;\n }\n\n .list > * {\n border-bottom: ${((_b = (_a = this._theme.inbox) == null ? void 0 : _a.loading) == null ? void 0 : _b.divider) ?? \"1px solid red\"};\n }\n\n .list > *:last-child {\n border-bottom: none;\n }\n `;\n }\n}\nregisterElement(\"courier-inbox-skeleton-list\", CourierInboxSkeletonList);\nclass CourierInboxPaginationListItem extends BaseElement {\n constructor(props) {\n super();\n // Components\n __publicField(this, \"skeletonLoadingList\");\n __publicField(this, \"observer\");\n __publicField(this, \"customItem\");\n // Handlers\n __publicField(this, \"onPaginationTrigger\");\n this.onPaginationTrigger = props.onPaginationTrigger;\n this.customItem = props.customItem;\n const shadow = this.attachShadow({ mode: \"open\" });\n const style = document.createElement(\"style\");\n style.textContent = this.getStyles();\n shadow.appendChild(style);\n if (this.customItem) {\n shadow.appendChild(this.customItem);\n } else {\n const container = document.createElement(\"div\");\n container.className = \"skeleton-container\";\n this.skeletonLoadingList = new CourierInboxSkeletonList(props.theme);\n this.skeletonLoadingList.build(void 0);\n container.appendChild(this.skeletonLoadingList);\n shadow.appendChild(container);\n }\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n this.onPaginationTrigger();\n }\n });\n });\n this.observer.observe(this);\n }\n getStyles() {\n return `\n :host {\n padding: 0;\n margin: 0;\n box-sizing: border-box;\n }\n\n .skeleton-container {\n height: 150%;\n }\n `;\n }\n disconnectedCallback() {\n this.observer.disconnect();\n }\n}\nregisterElement(\"courier-inbox-pagination-list-item\", CourierInboxPaginationListItem);\nclass CourierInboxList extends BaseElement {\n constructor(props) {\n super();\n // Theme\n __publicField(this, \"_themeSubscription\");\n // State\n __publicField(this, \"_messages\", []);\n __publicField(this, \"_feedType\", \"inbox\");\n __publicField(this, \"_isLoading\", true);\n __publicField(this, \"_error\", null);\n __publicField(this, \"_canPaginate\", false);\n // Callbacks\n __publicField(this, \"_onMessageClick\", null);\n __publicField(this, \"_onMessageActionClick\", null);\n __publicField(this, \"_onMessageLongPress\", null);\n __publicField(this, \"_onRefresh\");\n // Factories\n __publicField(this, \"_onPaginationTrigger\");\n __publicField(this, \"_listItemFactory\");\n __publicField(this, \"_paginationItemFactory\");\n __publicField(this, \"_loadingStateFactory\");\n __publicField(this, \"_emptyStateFactory\");\n __publicField(this, \"_errorStateFactory\");\n this._themeSubscription = props.themeManager.subscribe((_) => {\n this.refreshTheme();\n });\n this._onRefresh = props.onRefresh;\n this._onPaginationTrigger = props.onPaginationTrigger;\n this._onMessageClick = props.onMessageClick;\n this._onMessageActionClick = props.onMessageActionClick;\n this._onMessageLongPress = props.onMessageLongPress;\n const shadow = this.attachShadow({ mode: \"open\" });\n const style = document.createElement(\"style\");\n style.textContent = this.getStyles();\n shadow.appendChild(style);\n }\n // Getters\n get messages() {\n return this._messages;\n }\n getStyles() {\n var _a;\n const list = (_a = this._themeSubscription.manager.getTheme().inbox) == null ? void 0 : _a.list;\n return `\n :host {\n flex: 1;\n width: 100%;\n background-color: ${(list == null ? void 0 : list.backgroundColor) ?? CourierColors.white[500]};\n }\n\n ul {\n list-style: none;\n padding: 0;\n margin: 0;\n height: 100%;\n }\n `;\n }\n reset() {\n var _a, _b;\n while ((_a = this.shadowRoot) == null ? void 0 : _a.firstChild) {\n this.shadowRoot.removeChild(this.shadowRoot.firstChild);\n }\n const style = document.createElement(\"style\");\n style.textContent = this.getStyles();\n (_b = this.shadowRoot) == null ? void 0 : _b.appendChild(style);\n }\n setDataSet(dataSet) {\n this._messages = [...dataSet.messages];\n this._canPaginate = Boolean(dataSet.canPaginate);\n this._error = null;\n this._isLoading = false;\n this.render();\n }\n addPage(dataSet) {\n this._messages = [...this._messages, ...dataSet.messages];\n this._canPaginate = Boolean(dataSet.canPaginate);\n this._error = null;\n this._isLoading = false;\n this.render();\n }\n addMessage(message, index = 0) {\n this._messages.splice(index, 0, message);\n this.render();\n }\n removeMessage(index = 0) {\n this._messages.splice(index, 1);\n this.render();\n }\n updateMessage(message, index = 0) {\n this._messages[index] = message;\n this.render();\n }\n setFeedType(feedType) {\n this._feedType = feedType;\n this._error = null;\n this._isLoading = true;\n this.render();\n }\n setLoading(isLoading) {\n this._error = null;\n this._isLoading = isLoading;\n this.render();\n }\n setError(error) {\n this._error = error;\n this._isLoading = false;\n this._messages = [];\n this.render();\n }\n setErrorNoClient() {\n this.setError(new Error(\"No user signed in\"));\n }\n handleRetry() {\n this._onRefresh();\n }\n handleRefresh() {\n this._onRefresh();\n }\n render() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa, _ba, _ca, _da;\n this.reset();\n const theme2 = this._themeSubscription.manager.getTheme();\n if (this._error) {\n const error = (_a = theme2.inbox) == null ? void 0 : _a.error;\n const errorElement = new CourierInfoState({\n title: {\n text: ((_b = error == null ? void 0 : error.title) == null ? void 0 : _b.text) ?? this._error.message,\n textColor: (_d = (_c = error == null ? void 0 : error.title) == null ? void 0 : _c.font) == null ? void 0 : _d.color,\n fontFamily: (_f = (_e = error == null ? void 0 : error.title) == null ? void 0 : _e.font) == null ? void 0 : _f.family,\n fontSize: (_h = (_g = error == null ? void 0 : error.title) == null ? void 0 : _g.font) == null ? void 0 : _h.size,\n fontWeight: (_j = (_i = error == null ? void 0 : error.title) == null ? void 0 : _i.font) == null ? void 0 : _j.weight\n },\n button: {\n text: (_k = error == null ? void 0 : error.button) == null ? void 0 : _k.text,\n backgroundColor: (_l = error == null ? void 0 : error.button) == null ? void 0 : _l.backgroundColor,\n hoverBackgroundColor: (_m = error == null ? void 0 : error.button) == null ? void 0 : _m.hoverBackgroundColor,\n activeBackgroundColor: (_n = error == null ? void 0 : error.button) == null ? void 0 : _n.activeBackgroundColor,\n textColor: (_p = (_o = error == null ? void 0 : error.button) == null ? void 0 : _o.font) == null ? void 0 : _p.color,\n fontFamily: (_r = (_q = error == null ? void 0 : error.button) == null ? void 0 : _q.font) == null ? void 0 : _r.family,\n fontSize: (_t = (_s = error == null ? void 0 : error.button) == null ? void 0 : _s.font) == null ? void 0 : _t.size,\n fontWeight: (_v = (_u = error == null ? void 0 : error.button) == null ? void 0 : _u.font) == null ? void 0 : _v.weight,\n shadow: (_w = error == null ? void 0 : error.button) == null ? void 0 : _w.shadow,\n border: (_x = error == null ? void 0 : error.button) == null ? void 0 : _x.border,\n borderRadius: (_y = error == null ? void 0 : error.button) == null ? void 0 : _y.borderRadius\n }\n });\n errorElement.build((_z = this._errorStateFactory) == null ? void 0 : _z.call(this, { feedType: this._feedType, error: this._error }));\n errorElement.setButtonClickCallback(() => this.handleRetry());\n (_A = this.shadowRoot) == null ? void 0 : _A.appendChild(errorElement);\n return;\n }\n if (this._isLoading) {\n const loadingElement = new CourierInboxSkeletonList(theme2);\n loadingElement.build((_B = this._loadingStateFactory) == null ? void 0 : _B.call(this, { feedType: this._feedType }));\n (_C = this.shadowRoot) == null ? void 0 : _C.appendChild(loadingElement);\n return;\n }\n if (this._messages.length === 0) {\n const empty = (_D = theme2.inbox) == null ? void 0 : _D.empty;\n const emptyElement = new CourierInfoState({\n title: {\n text: ((_E = empty == null ? void 0 : empty.title) == null ? void 0 : _E.text) ?? `No ${this._feedType} messages yet`,\n textColor: (_G = (_F = empty == null ? void 0 : empty.title) == null ? void 0 : _F.font) == null ? void 0 : _G.color,\n fontFamily: (_I = (_H = empty == null ? void 0 : empty.title) == null ? void 0 : _H.font) == null ? void 0 : _I.family,\n fontSize: (_K = (_J = empty == null ? void 0 : empty.title) == null ? void 0 : _J.font) == null ? void 0 : _K.size,\n fontWeight: (_M = (_L = empty == null ? void 0 : empty.title) == null ? void 0 : _L.font) == null ? void 0 : _M.weight\n },\n button: {\n text: (_N = empty == null ? void 0 : empty.button) == null ? void 0 : _N.text,\n backgroundColor: (_O = empty == null ? void 0 : empty.button) == null ? void 0 : _O.backgroundColor,\n hoverBackgroundColor: (_P = empty == null ? void 0 : empty.button) == null ? void 0 : _P.hoverBackgroundColor,\n activeBackgroundColor: (_Q = empty == null ? void 0 : empty.button) == null ? void 0 : _Q.activeBackgroundColor,\n textColor: (_S = (_R = empty == null ? void 0 : empty.button) == null ? void 0 : _R.font) == null ? void 0 : _S.color,\n fontFamily: (_U = (_T = empty == null ? void 0 : empty.button) == null ? void 0 : _T.font) == null ? void 0 : _U.family,\n fontSize: (_W = (_V = empty == null ? void 0 : empty.button) == null ? void 0 : _V.font) == null ? void 0 : _W.size,\n fontWeight: (_Y = (_X = empty == null ? void 0 : empty.button) == null ? void 0 : _X.font) == null ? void 0 : _Y.weight,\n shadow: (_Z = empty == null ? void 0 : empty.button) == null ? void 0 : _Z.shadow,\n border: (__ = empty == null ? void 0 : empty.button) == null ? void 0 : __.border,\n borderRadius: (_$ = empty == null ? void 0 : empty.button) == null ? void 0 : _$.borderRadius\n }\n });\n emptyElement.build((_aa = this._emptyStateFactory) == null ? void 0 : _aa.call(this, { feedType: this._feedType }));\n emptyElement.setButtonClickCallback(() => this.handleRefresh());\n (_ba = this.shadowRoot) == null ? void 0 : _ba.appendChild(emptyElement);\n return;\n }\n const list = document.createElement(\"ul\");\n (_ca = this.shadowRoot) == null ? void 0 : _ca.appendChild(list);\n this._messages.forEach((message, index) => {\n if (this._listItemFactory) {\n list.appendChild(this._listItemFactory({ message, index }));\n return;\n }\n const listItem = new CourierListItem(theme2);\n listItem.setMessage(message, this._feedType);\n listItem.setOnItemClick((message2) => {\n var _a2;\n return (_a2 = this._onMessageClick) == null ? void 0 : _a2.call(this, message2, index);\n });\n listItem.setOnItemActionClick((message2, action) => {\n var _a2;\n return (_a2 = this._onMessageActionClick) == null ? void 0 : _a2.call(this, message2, action, index);\n });\n listItem.setOnItemLongPress((message2) => {\n var _a2;\n return (_a2 = this._onMessageLongPress) == null ? void 0 : _a2.call(this, message2, index);\n });\n list.appendChild(listItem);\n });\n if (this._canPaginate) {\n const paginationItem = new CourierInboxPaginationListItem({\n theme: theme2,\n customItem: (_da = this._paginationItemFactory) == null ? void 0 : _da.call(this, { feedType: this._feedType }),\n onPaginationTrigger: () => {\n var _a2;\n return (_a2 = this._onPaginationTrigger) == null ? void 0 : _a2.call(this, this._feedType);\n }\n });\n list.appendChild(paginationItem);\n }\n }\n // Factories\n setLoadingStateFactory(factory) {\n this._loadingStateFactory = factory;\n this.render();\n }\n setEmptyStateFactory(factory) {\n this._emptyStateFactory = factory;\n this.render();\n }\n setErrorStateFactory(factory) {\n this._errorStateFactory = factory;\n this.render();\n }\n setListItemFactory(factory) {\n this._listItemFactory = factory;\n this.render();\n }\n setPaginationItemFactory(factory) {\n this._paginationItemFactory = factory;\n this.render();\n }\n refreshTheme() {\n this.render();\n }\n // Disconnect the theme subscription\n disconnectedCallback() {\n this._themeSubscription.unsubscribe();\n }\n}\nregisterElement(\"courier-inbox-list\", CourierInboxList);\nclass CourierInboxOptionMenuItem extends BaseElement {\n constructor(props) {\n super();\n // State\n __publicField(this, \"_option\");\n __publicField(this, \"_isSelected\");\n // Components\n __publicField(this, \"_content\");\n __publicField(this, \"_itemIcon\");\n __publicField(this, \"_title\");\n __publicField(this, \"_selectionIcon\");\n __publicField(this, \"_style\");\n // Theme\n __publicField(this, \"_themeManager\");\n this._option = props.option;\n this._isSelected = props.isSelected;\n this._themeManager = props.themeManager;\n const shadow = this.attachShadow({ mode: \"open\" });\n this._style = document.createElement(\"style\");\n this._content = document.createElement(\"div\");\n this._content.className = \"menu-item\";\n this._itemIcon = new CourierIcon(this._option.icon.svg ?? CourierIconSVGs.inbox);\n this._itemIcon.setAttribute(\"size\", \"16\");\n this._title = document.createElement(\"p\");\n this._title.textContent = this._option.text;\n const spacer = document.createElement(\"div\");\n spacer.className = \"spacer\";\n this._selectionIcon = new CourierIcon(CourierIconSVGs.check);\n this._content.appendChild(this._itemIcon);\n this._content.appendChild(this._title);\n this._content.appendChild(spacer);\n if (props.selectable) {\n this._content.appendChild(this._selectionIcon);\n }\n shadow.appendChild(this._style);\n shadow.appendChild(this._content);\n this._selectionIcon.style.display = this._isSelected ? \"block\" : \"none\";\n this.refreshTheme();\n }\n getStyles() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H;\n const theme2 = this._themeManager.getTheme();\n return `\n :host {\n display: flex;\n flex-direction: row;\n padding: 6px 12px;\n cursor: pointer;\n }\n\n :host(:hover) {\n background-color: ${((_e = (_d = (_c = (_b = (_a = theme2.inbox) == null ? void 0 : _a.header) == null ? void 0 : _b.menus) == null ? void 0 : _c.popup) == null ? void 0 : _d.list) == null ? void 0 : _e.hoverBackgroundColor) ?? \"red\"};\n }\n\n :host(:active) {\n background-color: ${((_j = (_i = (_h = (_g = (_f = theme2.inbox) == null ? void 0 : _f.header) == null ? void 0 : _g.menus) == null ? void 0 : _h.popup) == null ? void 0 : _i.list) == null ? void 0 : _j.activeBackgroundColor) ?? \"red\"};\n }\n\n .menu-item {\n display: flex;\n align-items: center;\n width: 100%;\n gap: 12px;\n }\n\n .spacer {\n flex: 1;\n }\n\n p {\n margin: 0;\n font-family: ${((_p = (_o = (_n = (_m = (_l = (_k = theme2.inbox) == null ? void 0 : _k.header) == null ? void 0 : _l.menus) == null ? void 0 : _m.popup) == null ? void 0 : _n.list) == null ? void 0 : _o.font) == null ? void 0 : _p.family) ?? \"inherit\"};\n font-weight: ${((_v = (_u = (_t = (_s = (_r = (_q = theme2.inbox) == null ? void 0 : _q.header) == null ? void 0 : _r.menus) == null ? void 0 : _s.popup) == null ? void 0 : _t.list) == null ? void 0 : _u.font) == null ? void 0 : _v.weight) ?? \"inherit\"};\n font-size: ${((_B = (_A = (_z = (_y = (_x = (_w = theme2.inbox) == null ? void 0 : _w.header) == null ? void 0 : _x.menus) == null ? void 0 : _y.popup) == null ? void 0 : _z.list) == null ? void 0 : _A.font) == null ? void 0 : _B.size) ?? \"14px\"};\n color: ${((_H = (_G = (_F = (_E = (_D = (_C = theme2.inbox) == null ? void 0 : _C.header) == null ? void 0 : _D.menus) == null ? void 0 : _E.popup) == null ? void 0 : _F.list) == null ? void 0 : _G.font) == null ? void 0 : _H.color) ?? \"red\"};\n white-space: nowrap;\n }\n\n .check-icon {\n display: none;\n }\n `;\n }\n refreshTheme() {\n var _a, _b, _c, _d;\n this._style.textContent = this.getStyles();\n this._selectionIcon.updateColor(((_a = this._option.selectionIcon) == null ? void 0 : _a.color) ?? \"red\");\n this._selectionIcon.updateSVG(((_b = this._option.selectionIcon) == null ? void 0 : _b.svg) ?? CourierIconSVGs.check);\n this._title.textContent = this._option.text ?? \"Missing Text\";\n this._itemIcon.updateColor(((_c = this._option.icon) == null ? void 0 : _c.color) ?? \"red\");\n this._itemIcon.updateSVG(((_d = this._option.icon) == null ? void 0 : _d.svg) ?? CourierIconSVGs.inbox);\n }\n}\nregisterElement(\"courier-inbox-filter-menu-item\", CourierInboxOptionMenuItem);\nclass CourierInboxOptionMenu extends BaseElement {\n constructor(themeManager, type, selectable, options, onMenuOpen) {\n super();\n // Theme\n __publicField(this, \"_themeSubscription\");\n // State\n __publicField(this, \"_type\");\n __publicField(this, \"_selectedIndex\", 0);\n __publicField(this, \"_options\");\n __publicField(this, \"_selectable\");\n __publicField(this, \"_onMenuOpen\");\n // Components\n __publicField(this, \"_menuButton\");\n __publicField(this, \"_menu\");\n __publicField(this, \"_style\");\n this._type = type;\n this._selectable = selectable;\n this._options = options;\n this._selectedIndex = 0;\n this._onMenuOpen = onMenuOpen;\n const shadow = this.attachShadow({ mode: \"open\" });\n this._menuButton = new CourierIconButton(type === \"filters\" ? CourierIconSVGs.filter : CourierIconSVGs.overflow);\n this._menu = document.createElement(\"div\");\n this._menu.className = `menu ${type}`;\n this._style = document.createElement(\"style\");\n shadow.appendChild(this._style);\n shadow.appendChild(this._menuButton);\n shadow.appendChild(this._menu);\n this._menuButton.addEventListener(\"click\", this.toggleMenu.bind(this));\n document.addEventListener(\"click\", this.handleOutsideClick.bind(this));\n this._themeSubscription = themeManager.subscribe((_) => {\n this.refreshTheme();\n });\n this.refreshTheme();\n }\n getStyles() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;\n const theme2 = this._themeSubscription.manager.getTheme();\n return `\n :host {\n position: relative;\n display: inline-block;\n }\n\n .menu {\n display: none;\n position: absolute;\n top: 42px;\n right: -6px;\n border-radius: ${((_d = (_c = (_b = (_a = theme2.inbox) == null ? void 0 : _a.header) == null ? void 0 : _b.menus) == null ? void 0 : _c.popup) == null ? void 0 : _d.borderRadius) ?? \"6px\"};\n border: ${((_h = (_g = (_f = (_e = theme2.inbox) == null ? void 0 : _e.header) == null ? void 0 : _f.menus) == null ? void 0 : _g.popup) == null ? void 0 : _h.border) ?? \"1px solid red\"};\n background: ${((_l = (_k = (_j = (_i = theme2.inbox) == null ? void 0 : _i.header) == null ? void 0 : _j.menus) == null ? void 0 : _k.popup) == null ? void 0 : _l.backgroundColor) ?? \"red\"};\n box-shadow: ${((_p = (_o = (_n = (_m = theme2.inbox) == null ? void 0 : _m.header) == null ? void 0 : _n.menus) == null ? void 0 : _o.popup) == null ? void 0 : _p.shadow) ?? \"0 4px 12px 0 red\"};\n z-index: 1000;\n min-width: 200px;\n overflow: hidden;\n padding: 4px 0;\n }\n\n courier-inbox-filter-menu-item {\n border-bottom: ${((_u = (_t = (_s = (_r = (_q = theme2.inbox) == null ? void 0 : _q.header) == null ? void 0 : _r.menus) == null ? void 0 : _s.popup) == null ? void 0 : _t.list) == null ? void 0 : _u.divider) ?? \"none\"};\n }\n\n courier-inbox-filter-menu-item:last-child {\n border-bottom: none;\n }\n `;\n }\n refreshTheme() {\n var _a, _b, _c, _d, _e, _f;\n this._style.textContent = this.getStyles();\n const theme2 = this._themeSubscription.manager.getTheme();\n const menu = (_b = (_a = theme2.inbox) == null ? void 0 : _a.header) == null ? void 0 : _b.menus;\n const isFilter = this._type === \"filters\";\n const buttonConfig = isFilter ? (_c = menu == null ? void 0 : menu.filters) == null ? void 0 : _c.button : (_d = menu == null ? void 0 : menu.actions) == null ? void 0 : _d.button;\n const defaultIcon = isFilter ? CourierIconSVGs.filter : CourierIconSVGs.overflow;\n this._menuButton.updateIconSVG(((_e = buttonConfig == null ? void 0 : buttonConfig.icon) == null ? void 0 : _e.svg) ?? defaultIcon);\n this._menuButton.updateIconColor(((_f = buttonConfig == null ? void 0 : buttonConfig.icon) == null ? void 0 : _f.color) ?? \"red\");\n this._menuButton.updateBackgroundColor((buttonConfig == null ? void 0 : buttonConfig.backgroundColor) ?? \"transparent\");\n this._menuButton.updateHoverBackgroundColor((buttonConfig == null ? void 0 : buttonConfig.hoverBackgroundColor) ?? \"red\");\n this._menuButton.updateActiveBackgroundColor((buttonConfig == null ? void 0 : buttonConfig.activeBackgroundColor) ?? \"red\");\n this.refreshMenuItems();\n }\n setOptions(options) {\n this._options = options;\n this.refreshMenuItems();\n }\n refreshMenuItems() {\n this._menu.innerHTML = \"\";\n this._options.forEach((option, index) => {\n const menuItem = new CourierInboxOptionMenuItem({\n option,\n selectable: this._selectable,\n isSelected: this._selectedIndex === index,\n themeManager: this._themeSubscription.manager\n });\n menuItem.addEventListener(\"click\", () => {\n this._selectedIndex = index;\n option.onClick(option);\n this.refreshMenuItems();\n this.closeMenu();\n });\n this._menu.appendChild(menuItem);\n });\n }\n toggleMenu(event) {\n event.stopPropagation();\n const isOpening = this._menu.style.display !== \"block\";\n this._menu.style.display = isOpening ? \"block\" : \"none\";\n if (isOpening) {\n this._onMenuOpen();\n }\n }\n handleOutsideClick(event) {\n if (!this.contains(event.target)) {\n this.closeMenu();\n }\n }\n closeMenu() {\n this._menu.style.display = \"none\";\n }\n selectOption(option) {\n this._selectedIndex = this._options.findIndex((o) => o.id === option.id);\n this.refreshMenuItems();\n }\n disconnectedCallback() {\n this._themeSubscription.unsubscribe();\n }\n}\nregisterElement(\"courier-inbox-option-menu\", CourierInboxOptionMenu);\nclass CourierUnreadCountBadge extends BaseElement {\n constructor(props) {\n super();\n // Theme\n __publicField(this, \"_themeSubscription\");\n // State\n __publicField(this, \"_location\");\n __publicField(this, \"_count\", 0);\n // Elements\n __publicField(this, \"_badge\");\n __publicField(this, \"_style\");\n this._location = props.location;\n this._themeSubscription = props.themeBus.subscribe((_) => {\n this.refreshTheme(this._location);\n });\n const shadow = this.attachShadow({ mode: \"open\" });\n this._badge = document.createElement(\"span\");\n this._badge.className = \"unread-badge\";\n this._style = document.createElement(\"style\");\n this._style.textContent = this.getStyles(this._location);\n shadow.appendChild(this._style);\n shadow.appendChild(this._badge);\n }\n getStyles(location) {\n var _a, _b, _c, _d, _e, _f, _g;\n const theme2 = this._themeSubscription.manager.getTheme();\n const indicator = location === \"button\" ? (_b = (_a = theme2.popup) == null ? void 0 : _a.button) == null ? void 0 : _b.unreadIndicator : (_e = (_d = (_c = theme2.inbox) == null ? void 0 : _c.header) == null ? void 0 : _d.filters) == null ? void 0 : _e.unreadIndicator;\n const backgroundColor = indicator == null ? void 0 : indicator.backgroundColor;\n const borderRadius = indicator == null ? void 0 : indicator.borderRadius;\n const color = (_f = indicator == null ? void 0 : indicator.font) == null ? void 0 : _f.color;\n const fontSize = (_g = indicator == null ? void 0 : indicator.font) == null ? void 0 : _g.size;\n return `\n :host {\n display: inline-block;\n }\n\n .unread-badge {\n background-color: ${backgroundColor};\n color: ${color};\n border-radius: ${borderRadius};\n padding: 4px 8px;\n font-size: ${fontSize};\n text-align: center;\n display: none;\n pointer-events: none;\n }\n `;\n }\n setCount(count) {\n this._count = count;\n this.updateBadge();\n }\n refreshTheme(location) {\n this._location = location;\n this.updateBadge();\n }\n updateBadge() {\n this._style.textContent = this.getStyles(this._location);\n if (this._count > 0) {\n this._badge.textContent = this._count.toString();\n this._badge.style.display = \"block\";\n } else {\n this._badge.style.display = \"none\";\n }\n }\n disconnectedCallback() {\n this._themeSubscription.unsubscribe();\n }\n}\nregisterElement(\"courier-unread-count-badge\", CourierUnreadCountBadge);\nclass CourierInboxHeaderTitle extends BaseElement {\n constructor(themeManager, option) {\n super();\n // Theme\n __publicField(this, \"_themeSubscription\");\n // State\n __publicField(this, \"_option\");\n __publicField(this, \"_feedType\");\n // Components\n __publicField(this, \"_titleElement\");\n __publicField(this, \"_iconElement\");\n __publicField(this, \"_unreadBadge\");\n __publicField(this, \"_container\");\n __publicField(this, \"_style\");\n this._option = option;\n const shadow = this.attachShadow({ mode: \"open\" });\n this._style = document.createElement(\"style\");\n this._container = document.createElement(\"div\");\n this._container.className = \"title-section\";\n this._iconElement = new CourierIcon(void 0, this._option.icon.svg);\n this._titleElement = document.createElement(\"h2\");\n this._unreadBadge = new CourierUnreadCountBadge({\n themeBus: themeManager,\n location: \"header\"\n });\n this._container.appendChild(this._iconElement);\n this._container.appendChild(this._titleElement);\n this._container.appendChild(this._unreadBadge);\n shadow.appendChild(this._style);\n shadow.appendChild(this._container);\n this._themeSubscription = themeManager.subscribe((_) => {\n this.refreshTheme(this._feedType ?? \"inbox\");\n });\n this.refreshTheme(this._feedType ?? \"inbox\");\n }\n getStyles() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;\n const theme2 = this._themeSubscription.manager.getTheme();\n return `\n .title-section {\n display: flex;\n align-items: center;\n gap: 8px;\n position: relative;\n }\n\n courier-icon {\n display: flex;\n align-items: center;\n }\n\n h2 {\n margin: 0;\n font-family: ${((_d = (_c = (_b = (_a = theme2.inbox) == null ? void 0 : _a.header) == null ? void 0 : _b.filters) == null ? void 0 : _c.font) == null ? void 0 : _d.family) ?? \"inherit\"};\n font-size: ${((_h = (_g = (_f = (_e = theme2.inbox) == null ? void 0 : _e.header) == null ? void 0 : _f.filters) == null ? void 0 : _g.font) == null ? void 0 : _h.size) ?? \"18px\"};\n font-weight: ${((_l = (_k = (_j = (_i = theme2.inbox) == null ? void 0 : _i.header) == null ? void 0 : _j.filters) == null ? void 0 : _k.font) == null ? void 0 : _l.weight) ?? \"500\"};\n color: ${((_p = (_o = (_n = (_m = theme2.inbox) == null ? void 0 : _m.header) == null ? void 0 : _n.filters) == null ? void 0 : _o.font) == null ? void 0 : _p.color) ?? \"red\"};\n }\n\n courier-unread-count-badge {\n margin-left: 4px;\n }\n `;\n }\n refreshTheme(feedType) {\n this._feedType = feedType;\n this._style.textContent = this.getStyles();\n this._unreadBadge.refreshTheme(\"header\");\n this.updateFilter();\n }\n updateSelectedOption(option, feedType, unreadCount) {\n this._option = option;\n this._feedType = feedType;\n this._unreadBadge.setCount(unreadCount);\n this.updateFilter();\n }\n updateFilter() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B;\n const theme2 = this._themeSubscription.manager.getTheme();\n switch (this._feedType) {\n case \"inbox\":\n this._titleElement.textContent = ((_d = (_c = (_b = (_a = theme2.inbox) == null ? void 0 : _a.header) == null ? void 0 : _b.filters) == null ? void 0 : _c.inbox) == null ? void 0 : _d.text) ?? \"Inbox\";\n this._iconElement.updateSVG(((_i = (_h = (_g = (_f = (_e = theme2.inbox) == null ? void 0 : _e.header) == null ? void 0 : _f.filters) == null ? void 0 : _g.inbox) == null ? void 0 : _h.icon) == null ? void 0 : _i.svg) ?? CourierIconSVGs.inbox);\n this._iconElement.updateColor(((_n = (_m = (_l = (_k = (_j = theme2.inbox) == null ? void 0 : _j.header) == null ? void 0 : _k.filters) == null ? void 0 : _l.inbox) == null ? void 0 : _m.icon) == null ? void 0 : _n.color) ?? \"red\");\n break;\n case \"archive\":\n this._titleElement.textContent = ((_r = (_q = (_p = (_o = theme2.inbox) == null ? void 0 : _o.header) == null ? void 0 : _p.filters) == null ? void 0 : _q.archive) == null ? void 0 : _r.text) ?? \"Archive\";\n this._iconElement.updateSVG(((_w = (_v = (_u = (_t = (_s = theme2.inbox) == null ? void 0 : _s.header) == null ? void 0 : _t.filters) == null ? void 0 : _u.archive) == null ? void 0 : _v.icon) == null ? void 0 : _w.svg) ?? CourierIconSVGs.archive);\n this._iconElement.updateColor(((_B = (_A = (_z = (_y = (_x = theme2.inbox) == null ? void 0 : _x.header) == null ? void 0 : _y.filters) == null ? void 0 : _z.archive) == null ? void 0 : _A.icon) == null ? void 0 : _B.color) ?? \"red\");\n break;\n }\n }\n // Disconnect the theme subscription\n disconnectedCallback() {\n this._themeSubscription.unsubscribe();\n }\n}\nregisterElement(\"courier-inbox-header-title\", CourierInboxHeaderTitle);\nclass CourierInboxHeader extends CourierElement {\n constructor(props) {\n super();\n // Theme\n __publicField(this, \"_themeSubscription\");\n // State\n __publicField(this, \"_feedType\", \"inbox\");\n __publicField(this, \"_unreadCount\", 0);\n // Components\n __publicField(this, \"_titleSection\");\n __publicField(this, \"_filterMenu\");\n __publicField(this, \"_actionMenu\");\n __publicField(this, \"_style\");\n // Callbacks\n __publicField(this, \"_onFeedTypeChange\");\n this._themeSubscription = props.themeManager.subscribe((_) => {\n this.refreshTheme();\n });\n this._onFeedTypeChange = props.onFeedTypeChange;\n }\n // Menu options\n getFilterOptions() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K;\n const theme2 = this._themeSubscription.manager.getTheme();\n const filterMenu = (_c = (_b = (_a = theme2.inbox) == null ? void 0 : _a.header) == null ? void 0 : _b.menus) == null ? void 0 : _c.filters;\n return [\n {\n id: \"inbox\",\n text: ((_d = filterMenu == null ? void 0 : filterMenu.inbox) == null ? void 0 : _d.text) ?? \"Inbox\",\n icon: {\n color: ((_f = (_e = filterMenu == null ? void 0 : filterMenu.inbox) == null ? void 0 : _e.icon) == null ? void 0 : _f.color) ?? \"red\",\n svg: ((_h = (_g = filterMenu == null ? void 0 : filterMenu.inbox) == null ? void 0 : _g.icon) == null ? void 0 : _h.svg) ?? CourierIconSVGs.inbox\n },\n selectionIcon: {\n color: ((_n = (_m = (_l = (_k = (_j = (_i = theme2.inbox) == null ? void 0 : _i.header) == null ? void 0 : _j.menus) == null ? void 0 : _k.popup) == null ? void 0 : _l.list) == null ? void 0 : _m.selectionIcon) == null ? void 0 : _n.color) ?? \"red\",\n svg: ((_t = (_s = (_r = (_q = (_p = (_o = theme2.inbox) == null ? void 0 : _o.header) == null ? void 0 : _p.menus) == null ? void 0 : _q.popup) == null ? void 0 : _r.list) == null ? void 0 : _s.selectionIcon) == null ? void 0 : _t.svg) ?? CourierIconSVGs.check\n },\n onClick: (option) => {\n this.handleOptionMenuItemClick(\"inbox\", option);\n }\n },\n {\n id: \"archive\",\n text: ((_u = filterMenu == null ? void 0 : filterMenu.archive) == null ? void 0 : _u.text) ?? \"Archive\",\n icon: {\n color: ((_w = (_v = filterMenu == null ? void 0 : filterMenu.archive) == null ? void 0 : _v.icon) == null ? void 0 : _w.color) ?? \"red\",\n svg: ((_y = (_x = filterMenu == null ? void 0 : filterMenu.archive) == null ? void 0 : _x.icon) == null ? void 0 : _y.svg) ?? CourierIconSVGs.archive\n },\n selectionIcon: {\n color: ((_E = (_D = (_C = (_B = (_A = (_z = theme2.inbox) == null ? void 0 : _z.header) == null ? void 0 : _A.menus) == null ? void 0 : _B.popup) == null ? void 0 : _C.list) == null ? void 0 : _D.selectionIcon) == null ? void 0 : _E.color) ?? \"red\",\n svg: ((_K = (_J = (_I = (_H = (_G = (_F = theme2.inbox) == null ? void 0 : _F.header) == null ? void 0 : _G.menus) == null ? void 0 : _H.popup) == null ? void 0 : _I.list) == null ? void 0 : _J.selectionIcon) == null ? void 0 : _K.svg) ?? CourierIconSVGs.check\n },\n onClick: (option) => {\n this.handleOptionMenuItemClick(\"archive\", option);\n }\n }\n ];\n }\n getActionOptions() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;\n const theme2 = this._themeSubscription.manager.getTheme();\n const actionMenu = (_c = (_b = (_a = theme2.inbox) == null ? void 0 : _a.header) == null ? void 0 : _b.menus) == null ? void 0 : _c.actions;\n return [\n {\n id: \"markAllRead\",\n text: ((_d = actionMenu == null ? void 0 : actionMenu.markAllRead) == null ? void 0 : _d.text) ?? \"Mark All as Read\",\n icon: {\n color: ((_f = (_e = actionMenu == null ? void 0 : actionMenu.markAllRead) == null ? void 0 : _e.icon) == null ? void 0 : _f.color) ?? \"red\",\n svg: ((_h = (_g = actionMenu == null ? void 0 : actionMenu.markAllRead) == null ? void 0 : _g.icon) == null ? void 0 : _h.svg) ?? CourierIconSVGs.inbox\n },\n selectionIcon: null,\n onClick: (_) => {\n CourierInboxDatastore.shared.readAllMessages({ canCallApi: true });\n }\n },\n {\n id: \"archiveAll\",\n text: ((_i = actionMenu == null ? void 0 : actionMenu.archiveAll) == null ? void 0 : _i.text) ?? \"Archive All\",\n icon: {\n color: ((_k = (_j = actionMenu == null ? void 0 : actionMenu.archiveAll) == null ? void 0 : _j.icon) == null ? void 0 : _k.color) ?? \"red\",\n svg: ((_m = (_l = actionMenu == null ? void 0 : actionMenu.archiveAll) == null ? void 0 : _l.icon) == null ? void 0 : _m.svg) ?? CourierIconSVGs.archive\n },\n selectionIcon: null,\n onClick: (_) => {\n CourierInboxDatastore.shared.archiveAllMessages({ canCallApi: true });\n }\n },\n {\n id: \"archiveRead\",\n text: ((_n = actionMenu == null ? void 0 : actionMenu.archiveRead) == null ? void 0 : _n.text) ?? \"Archive Read\",\n icon: {\n color: ((_p = (_o = actionMenu == null ? void 0 : actionMenu.archiveRead) == null ? void 0 : _o.icon) == null ? void 0 : _p.color) ?? \"red\",\n svg: ((_r = (_q = actionMenu == null ? void 0 : actionMenu.archiveRead) == null ? void 0 : _q.icon) == null ? void 0 : _r.svg) ?? CourierIconSVGs.archive\n },\n selectionIcon: null,\n onClick: (_) => {\n CourierInboxDatastore.shared.archiveReadMessages({ canCallApi: true });\n }\n }\n ];\n }\n static get observedAttributes() {\n return [\"icon\", \"title\", \"feed-type\"];\n }\n refreshTheme() {\n var _a, _b, _c, _d, _e, _f, _g;\n const theme2 = this._themeSubscription.manager.getTheme();\n const header = (_a = this.shadow) == null ? void 0 : _a.querySelector(\".courier-inbox-header\");\n if (header) {\n header.style.backgroundColor = ((_c = (_b = theme2.inbox) == null ? void 0 : _b.header) == null ? void 0 : _c.backgroundColor) ?? CourierColors.white[500];\n header.style.boxShadow = ((_e = (_d = theme2.inbox) == null ? void 0 : _d.header) == null ? void 0 : _e.shadow) ?? `0px 1px 0px 0px ${CourierColors.gray[500]}`;\n }\n (_f = this._filterMenu) == null ? void 0 : _f.setOptions(this.getFilterOptions());\n (_g = this._actionMenu) == null ? void 0 : _g.setOptions(this.getActionOptions());\n }\n handleOptionMenuItemClick(feedType, option) {\n this._feedType = feedType;\n if (this._titleSection) {\n this._titleSection.updateSelectedOption(option, this._feedType, this._feedType === \"inbox\" ? this._unreadCount : 0);\n }\n this._onFeedTypeChange(feedType);\n }\n render(props) {\n this._feedType = props.feedType;\n this._unreadCount = props.unreadCount;\n this.refreshTitleSection();\n }\n refreshTitleSection() {\n var _a, _b;\n const option = this.getFilterOptions().find((opt) => [\"inbox\", \"archive\"].includes(opt.id) && opt.id === this._feedType);\n if (option) {\n (_a = this._titleSection) == null ? void 0 : _a.updateSelectedOption(option, this._feedType, this._feedType === \"inbox\" ? this._unreadCount : 0);\n (_b = this._filterMenu) == null ? void 0 : _b.selectOption(option);\n }\n }\n build(newElement) {\n var _a;\n super.build(newElement);\n this._style = document.createElement(\"style\");\n this._style.textContent = this.getStyles();\n (_a = this.shadow) == null ? void 0 : _a.appendChild(this._style);\n this.refreshTheme();\n }\n defaultElement() {\n const filterOptions = this.getFilterOptions();\n this._titleSection = new CourierInboxHeaderTitle(this._themeSubscription.manager, filterOptions[0]);\n this._filterMenu = new CourierInboxOptionMenu(this._themeSubscription.manager, \"filters\", true, filterOptions, () => {\n var _a;\n (_a = this._actionMenu) == null ? void 0 : _a.closeMenu();\n });\n this._actionMenu = new CourierInboxOptionMenu(this._themeSubscription.manager, \"actions\", false, this.getActionOptions(), () => {\n var _a;\n (_a = this._filterMenu) == null ? void 0 : _a.closeMenu();\n });\n this._filterMenu.selectOption(filterOptions[0]);\n const spacer = document.createElement(\"div\");\n spacer.className = \"spacer\";\n const actions = document.createElement(\"div\");\n actions.className = \"actions\";\n actions.appendChild(this._filterMenu);\n actions.appendChild(this._actionMenu);\n const container = document.createElement(\"div\");\n container.className = \"courier-inbox-header\";\n container.appendChild(this._titleSection);\n container.appendChild(spacer);\n container.appendChild(actions);\n return container;\n }\n getStyles() {\n return `\n :host {\n z-index: 100;\n }\n\n .courier-inbox-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 10px 10px 16px;\n background-color: ${CourierColors.white[500]};\n box-shadow: 0px 1px 0px 0px ${CourierColors.gray[500]};\n }\n\n .header-content {\n display: flex;\n align-items: center;\n flex: 1;\n }\n\n .spacer {\n flex: 1;\n }\n\n .actions {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n `;\n }\n // Disconnect the theme subscription\n disconnectedCallback() {\n this._themeSubscription.unsubscribe();\n }\n}\nregisterElement(\"courier-inbox-header\", CourierInboxHeader);\nclass CourierInboxDataStoreListener {\n constructor(events) {\n __publicField(this, \"events\");\n this.events = events;\n }\n remove() {\n CourierInboxDatastore.shared.removeDataStoreListener(this);\n }\n}\nconst defaultLightTheme = {\n popup: {\n button: {\n icon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.inbox\n },\n backgroundColor: \"transparent\",\n hoverBackgroundColor: CourierColors.black[50010],\n activeBackgroundColor: CourierColors.black[50020],\n unreadIndicator: {\n font: {\n color: CourierColors.white[500],\n size: \"14px\",\n family: void 0,\n weight: void 0\n },\n backgroundColor: CourierColors.blue[500],\n borderRadius: \"12px\"\n }\n },\n window: {\n backgroundColor: CourierColors.white[500],\n borderRadius: \"8px\",\n border: `1px solid ${CourierColors.gray[500]}`,\n shadow: `0px 8px 16px -4px ${CourierColors.gray[500]}`\n }\n },\n inbox: {\n header: {\n backgroundColor: CourierColors.white[500],\n shadow: `0px 1px 0px 0px ${CourierColors.gray[500]}`,\n filters: {\n font: {\n color: CourierColors.black[500],\n family: void 0,\n size: \"18px\"\n },\n inbox: {\n icon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.inbox\n },\n text: \"Inbox\"\n },\n archive: {\n icon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.archive\n },\n text: \"Archive\"\n },\n unreadIndicator: {\n font: {\n color: CourierColors.white[500],\n family: void 0,\n size: \"14px\"\n },\n backgroundColor: CourierColors.blue[500],\n borderRadius: \"12px\"\n }\n },\n menus: {\n popup: {\n backgroundColor: CourierColors.white[500],\n border: `1px solid ${CourierColors.gray[500]}`,\n borderRadius: \"4px\",\n shadow: `0px 4px 8px -2px ${CourierColors.gray[500]}`,\n list: {\n hoverBackgroundColor: CourierColors.gray[200],\n activeBackgroundColor: CourierColors.gray[500],\n divider: `none`,\n font: {\n color: CourierColors.black[500],\n family: void 0,\n size: \"14px\"\n },\n selectionIcon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.check\n }\n }\n },\n filters: {\n button: {\n icon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.filter\n },\n backgroundColor: \"transparent\",\n hoverBackgroundColor: CourierColors.black[50010],\n activeBackgroundColor: CourierColors.black[50020]\n },\n inbox: {\n icon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.inbox\n },\n text: \"Inbox\"\n },\n archive: {\n icon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.archive\n },\n text: \"Archive\"\n }\n },\n actions: {\n button: {\n icon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.overflow\n },\n backgroundColor: \"transparent\",\n hoverBackgroundColor: CourierColors.black[50010],\n activeBackgroundColor: CourierColors.black[50020]\n },\n markAllRead: {\n icon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.read\n },\n text: \"Read All\"\n },\n archiveAll: {\n icon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.archive\n },\n text: \"Archive All\"\n },\n archiveRead: {\n icon: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.archiveRead\n },\n text: \"Archive Read\"\n }\n }\n }\n },\n list: {\n backgroundColor: CourierColors.white[500],\n item: {\n backgroundColor: \"transparent\",\n unreadIndicatorColor: CourierColors.blue[500],\n hoverBackgroundColor: CourierColors.gray[200],\n activeBackgroundColor: CourierColors.gray[500],\n actions: {\n backgroundColor: \"transparent\",\n hoverBackgroundColor: CourierColors.gray[200],\n activeBackgroundColor: CourierColors.gray[500],\n border: `1px solid ${CourierColors.gray[500]}`,\n borderRadius: \"4px\",\n shadow: \"0px 1px 2px 0px rgba(0, 0, 0, 0.06)\",\n font: {\n color: CourierColors.black[500],\n family: void 0,\n size: \"14px\"\n }\n },\n title: {\n color: CourierColors.black[500],\n family: void 0,\n size: \"14px\"\n },\n subtitle: {\n color: CourierColors.gray[600],\n family: void 0,\n size: \"14px\"\n },\n time: {\n color: CourierColors.gray[600],\n family: void 0,\n size: \"14px\"\n },\n divider: `1px solid ${CourierColors.gray[200]}`,\n menu: {\n enabled: true,\n backgroundColor: CourierColors.white[500],\n border: `1px solid ${CourierColors.gray[500]}`,\n borderRadius: \"4px\",\n shadow: `0px 2px 4px -2px ${CourierColors.gray[500]}`,\n longPress: {\n displayDuration: 4e3,\n vibrationDuration: 50\n },\n item: {\n hoverBackgroundColor: CourierColors.gray[200],\n activeBackgroundColor: CourierColors.gray[500],\n borderRadius: \"0px\",\n read: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.read\n },\n unread: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.unread\n },\n archive: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.archive\n },\n unarchive: {\n color: CourierColors.black[500],\n svg: CourierIconSVGs.unarchive\n }\n }\n }\n }\n },\n loading: {\n animation: {\n barColor: CourierColors.gray[500],\n barHeight: \"14px\",\n barBorderRadius: \"14px\",\n duration: \"2s\"\n },\n divider: `1px solid ${CourierColors.gray[200]}`\n },\n empty: {\n title: {\n font: {\n size: \"16px\",\n weight: \"500\",\n color: CourierColors.black[500]\n }\n },\n button: {\n text: \"Refresh\"\n }\n },\n error: {\n title: {\n font: {\n size: \"16px\",\n weight: \"500\",\n color: CourierColors.black[500]\n }\n },\n button: {\n text: \"Retry\"\n }\n }\n }\n};\nconst defaultDarkTheme = {\n popup: {\n button: {\n icon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.inbox\n },\n backgroundColor: \"transparent\",\n hoverBackgroundColor: CourierColors.white[50010],\n activeBackgroundColor: CourierColors.white[50020],\n unreadIndicator: {\n font: {\n color: CourierColors.white[500],\n size: \"14px\",\n family: void 0,\n weight: void 0\n },\n backgroundColor: CourierColors.blue[500],\n borderRadius: \"12px\"\n }\n },\n window: {\n backgroundColor: CourierColors.black[500],\n borderRadius: \"8px\",\n border: `1px solid ${CourierColors.gray[400]}`,\n shadow: `0px 4px 8px -2px ${CourierColors.white[50020]}`\n }\n },\n inbox: {\n header: {\n backgroundColor: CourierColors.black[500],\n shadow: `0px 1px 0px 0px ${CourierColors.gray[400]}`,\n filters: {\n font: {\n color: CourierColors.white[500],\n family: void 0,\n size: \"18px\"\n },\n inbox: {\n icon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.inbox\n },\n text: \"Inbox\"\n },\n archive: {\n icon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.archive\n },\n text: \"Archive\"\n },\n unreadIndicator: {\n font: {\n color: CourierColors.white[500],\n family: void 0,\n size: \"14px\"\n },\n backgroundColor: CourierColors.blue[500],\n borderRadius: \"12px\"\n }\n },\n menus: {\n popup: {\n backgroundColor: CourierColors.black[500],\n border: `1px solid ${CourierColors.gray[400]}`,\n borderRadius: \"4px\",\n shadow: `0px 4px 8px -2px ${CourierColors.white[50020]}`,\n list: {\n hoverBackgroundColor: CourierColors.white[50010],\n activeBackgroundColor: CourierColors.white[50020],\n divider: `none`,\n font: {\n color: CourierColors.white[500],\n family: void 0,\n size: \"14px\"\n },\n selectionIcon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.check\n }\n }\n },\n filters: {\n button: {\n icon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.filter\n },\n backgroundColor: \"transparent\",\n hoverBackgroundColor: CourierColors.white[50010],\n activeBackgroundColor: CourierColors.white[50020]\n },\n inbox: {\n icon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.inbox\n },\n text: \"Inbox\"\n },\n archive: {\n icon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.archive\n },\n text: \"Archive\"\n }\n },\n actions: {\n button: {\n icon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.overflow\n },\n backgroundColor: \"transparent\",\n hoverBackgroundColor: CourierColors.white[50010],\n activeBackgroundColor: CourierColors.white[50020]\n },\n markAllRead: {\n icon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.read\n },\n text: \"Read All\"\n },\n archiveAll: {\n icon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.archive\n },\n text: \"Archive All\"\n },\n archiveRead: {\n icon: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.archiveRead\n },\n text: \"Archive Read\"\n }\n }\n }\n },\n list: {\n backgroundColor: CourierColors.black[500],\n item: {\n backgroundColor: \"transparent\",\n unreadIndicatorColor: CourierColors.blue[500],\n hoverBackgroundColor: CourierColors.white[50010],\n activeBackgroundColor: CourierColors.white[50020],\n actions: {\n backgroundColor: \"transparent\",\n hoverBackgroundColor: CourierColors.white[50010],\n activeBackgroundColor: CourierColors.white[50020],\n border: `1px solid ${CourierColors.gray[400]}`,\n borderRadius: \"4px\",\n shadow: `0px 1px 2px 0px ${CourierColors.white[50010]}`,\n font: {\n color: CourierColors.white[500],\n family: void 0,\n size: \"14px\"\n }\n },\n title: {\n color: CourierColors.white[500],\n family: void 0,\n size: \"14px\"\n },\n subtitle: {\n color: CourierColors.gray[500],\n family: void 0,\n size: \"14px\"\n },\n time: {\n color: CourierColors.gray[500],\n family: void 0,\n size: \"12px\"\n },\n divider: `1px solid ${CourierColors.gray[400]}`,\n menu: {\n enabled: true,\n backgroundColor: CourierColors.black[500],\n border: `1px solid ${CourierColors.gray[400]}`,\n borderRadius: \"4px\",\n shadow: `0px 2px 4px -2px ${CourierColors.white[50020]}`,\n longPress: {\n displayDuration: 4e3,\n vibrationDuration: 50\n },\n item: {\n hoverBackgroundColor: CourierColors.white[50010],\n activeBackgroundColor: CourierColors.white[50020],\n borderRadius: \"0px\",\n read: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.read\n },\n unread: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.unread\n },\n archive: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.archive\n },\n unarchive: {\n color: CourierColors.white[500],\n svg: CourierIconSVGs.unarchive\n }\n }\n }\n }\n },\n loading: {\n animation: {\n barColor: CourierColors.white[500],\n barHeight: \"14px\",\n barBorderRadius: \"14px\",\n duration: \"2s\"\n },\n divider: `1px solid ${CourierColors.gray[400]}`\n },\n empty: {\n title: {\n font: {\n size: \"16px\",\n weight: \"500\",\n color: CourierColors.white[500]\n }\n },\n button: {\n text: \"Refresh\"\n }\n },\n error: {\n title: {\n font: {\n size: \"16px\",\n weight: \"500\",\n color: CourierColors.white[500]\n }\n },\n button: {\n text: \"Retry\"\n }\n }\n }\n};\nconst mergeTheme = (mode, theme2) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa, _ba, _ca, _da, _ea, _fa, _ga, _ha, _ia, _ja, _ka, _la, _ma, _na, _oa, _pa, _qa, _ra, _sa, _ta, _ua, _va, _wa, _xa, _ya, _za, _Aa, _Ba, _Ca, _Da, _Ea, _Fa, _Ga, _Ha, _Ia, _Ja, _Ka, _La, _Ma, _Na, _Oa, _Pa, _Qa, _Ra, _Sa, _Ta, _Ua, _Va, _Wa, _Xa, _Ya, _Za, __a, _$a, _ab, _bb, _cb, _db, _eb, _fb, _gb, _hb, _ib, _jb, _kb, _lb, _mb, _nb, _ob, _pb, _qb, _rb, _sb, _tb, _ub, _vb, _wb, _xb, _yb, _zb, _Ab, _Bb, _Cb, _Db, _Eb, _Fb, _Gb, _Hb, _Ib, _Jb, _Kb, _Lb, _Mb, _Nb, _Ob, _Pb, _Qb, _Rb, _Sb, _Tb, _Ub, _Vb, _Wb, _Xb, _Yb, _Zb, __b, _$b, _ac, _bc, _cc, _dc, _ec, _fc, _gc, _hc, _ic, _jc, _kc, _lc, _mc, _nc, _oc, _pc, _qc, _rc, _sc, _tc, _uc, _vc, _wc, _xc, _yc, _zc, _Ac, _Bc, _Cc, _Dc, _Ec, _Fc, _Gc, _Hc, _Ic, _Jc, _Kc, _Lc, _Mc, _Nc, _Oc, _Pc, _Qc, _Rc, _Sc, _Tc, _Uc, _Vc, _Wc, _Xc, _Yc, _Zc, __c, _$c, _ad, _bd, _cd, _dd, _ed, _fd, _gd, _hd, _id, _jd, _kd, _ld, _md, _nd, _od, _pd, _qd, _rd, _sd, _td, _ud, _vd, _wd, _xd, _yd, _zd, _Ad, _Bd, _Cd, _Dd, _Ed, _Fd, _Gd, _Hd, _Id, _Jd, _Kd, _Ld, _Md, _Nd, _Od, _Pd;\n const defaultTheme = mode === \"light\" ? defaultLightTheme : defaultDarkTheme;\n return {\n popup: {\n button: {\n ...(_a = defaultTheme.popup) == null ? void 0 : _a.button,\n ...(_b = theme2.popup) == null ? void 0 : _b.button,\n icon: {\n ...(_d = (_c = defaultTheme.popup) == null ? void 0 : _c.button) == null ? void 0 : _d.icon,\n ...(_f = (_e = theme2.popup) == null ? void 0 : _e.button) == null ? void 0 : _f.icon\n },\n unreadIndicator: {\n ...(_h = (_g = defaultTheme.popup) == null ? void 0 : _g.button) == null ? void 0 : _h.unreadIndicator,\n ...(_j = (_i = theme2.popup) == null ? void 0 : _i.button) == null ? void 0 : _j.unreadIndicator\n }\n },\n window: {\n ...(_k = defaultTheme.popup) == null ? void 0 : _k.window,\n ...(_l = theme2.popup) == null ? void 0 : _l.window\n }\n },\n inbox: {\n header: {\n ...(_m = defaultTheme.inbox) == null ? void 0 : _m.header,\n ...(_n = theme2.inbox) == null ? void 0 : _n.header,\n filters: {\n ...(_p = (_o = defaultTheme.inbox) == null ? void 0 : _o.header) == null ? void 0 : _p.filters,\n ...(_r = (_q = theme2.inbox) == null ? void 0 : _q.header) == null ? void 0 : _r.filters,\n inbox: {\n ...(_u = (_t = (_s = defaultTheme.inbox) == null ? void 0 : _s.header) == null ? void 0 : _t.filters) == null ? void 0 : _u.inbox,\n ...(_x = (_w = (_v = theme2.inbox) == null ? void 0 : _v.header) == null ? void 0 : _w.filters) == null ? void 0 : _x.inbox,\n icon: {\n ...(_B = (_A = (_z = (_y = defaultTheme.inbox) == null ? void 0 : _y.header) == null ? void 0 : _z.filters) == null ? void 0 : _A.inbox) == null ? void 0 : _B.icon,\n ...(_F = (_E = (_D = (_C = theme2.inbox) == null ? void 0 : _C.header) == null ? void 0 : _D.filters) == null ? void 0 : _E.inbox) == null ? void 0 : _F.icon\n }\n },\n archive: {\n ...(_I = (_H = (_G = defaultTheme.inbox) == null ? void 0 : _G.header) == null ? void 0 : _H.filters) == null ? void 0 : _I.archive,\n ...(_L = (_K = (_J = theme2.inbox) == null ? void 0 : _J.header) == null ? void 0 : _K.filters) == null ? void 0 : _L.archive,\n icon: {\n ...(_P = (_O = (_N = (_M = defaultTheme.inbox) == null ? void 0 : _M.header) == null ? void 0 : _N.filters) == null ? void 0 : _O.archive) == null ? void 0 : _P.icon,\n ...(_T = (_S = (_R = (_Q = theme2.inbox) == null ? void 0 : _Q.header) == null ? void 0 : _R.filters) == null ? void 0 : _S.archive) == null ? void 0 : _T.icon\n }\n },\n unreadIndicator: {\n ...(_W = (_V = (_U = defaultTheme.inbox) == null ? void 0 : _U.header) == null ? void 0 : _V.filters) == null ? void 0 : _W.unreadIndicator,\n ...(_Z = (_Y = (_X = theme2.inbox) == null ? void 0 : _X.header) == null ? void 0 : _Y.filters) == null ? void 0 : _Z.unreadIndicator\n }\n },\n menus: {\n ...(_$ = (__ = defaultTheme.inbox) == null ? void 0 : __.header) == null ? void 0 : _$.menus,\n ...(_ba = (_aa = theme2.inbox) == null ? void 0 : _aa.header) == null ? void 0 : _ba.menus,\n popup: {\n ...(_ea = (_da = (_ca = defaultTheme.inbox) == null ? void 0 : _ca.header) == null ? void 0 : _da.menus) == null ? void 0 : _ea.popup,\n ...(_ha = (_ga = (_fa = theme2.inbox) == null ? void 0 : _fa.header) == null ? void 0 : _ga.menus) == null ? void 0 : _ha.popup,\n list: {\n ...(_la = (_ka = (_ja = (_ia = defaultTheme.inbox) == null ? void 0 : _ia.header) == null ? void 0 : _ja.menus) == null ? void 0 : _ka.popup) == null ? void 0 : _la.list,\n ...(_pa = (_oa = (_na = (_ma = theme2.inbox) == null ? void 0 : _ma.header) == null ? void 0 : _na.menus) == null ? void 0 : _oa.popup) == null ? void 0 : _pa.list,\n font: {\n ...(_ua = (_ta = (_sa = (_ra = (_qa = defaultTheme.inbox) == null ? void 0 : _qa.header) == null ? void 0 : _ra.menus) == null ? void 0 : _sa.popup) == null ? void 0 : _ta.list) == null ? void 0 : _ua.font,\n ...(_za = (_ya = (_xa = (_wa = (_va = theme2.inbox) == null ? void 0 : _va.header) == null ? void 0 : _wa.menus) == null ? void 0 : _xa.popup) == null ? void 0 : _ya.list) == null ? void 0 : _za.font\n },\n selectionIcon: {\n ...(_Ea = (_Da = (_Ca = (_Ba = (_Aa = defaultTheme.inbox) == null ? void 0 : _Aa.header) == null ? void 0 : _Ba.menus) == null ? void 0 : _Ca.popup) == null ? void 0 : _Da.list) == null ? void 0 : _Ea.selectionIcon,\n ...(_Ja = (_Ia = (_Ha = (_Ga = (_Fa = theme2.inbox) == null ? void 0 : _Fa.header) == null ? void 0 : _Ga.menus) == null ? void 0 : _Ha.popup) == null ? void 0 : _Ia.list) == null ? void 0 : _Ja.selectionIcon\n }\n }\n },\n filters: {\n ...(_Ma = (_La = (_Ka = defaultTheme.inbox) == null ? void 0 : _Ka.header) == null ? void 0 : _La.menus) == null ? void 0 : _Ma.filters,\n ...(_Pa = (_Oa = (_Na = theme2.inbox) == null ? void 0 : _Na.header) == null ? void 0 : _Oa.menus) == null ? void 0 : _Pa.filters,\n inbox: {\n ...(_Ta = (_Sa = (_Ra = (_Qa = defaultTheme.inbox) == null ? void 0 : _Qa.header) == null ? void 0 : _Ra.menus) == null ? void 0 : _Sa.filters) == null ? void 0 : _Ta.inbox,\n ...(_Xa = (_Wa = (_Va = (_Ua = theme2.inbox) == null ? void 0 : _Ua.header) == null ? void 0 : _Va.menus) == null ? void 0 : _Wa.filters) == null ? void 0 : _Xa.inbox,\n icon: {\n ...(_ab = (_$a = (__a = (_Za = (_Ya = defaultTheme.inbox) == null ? void 0 : _Ya.header) == null ? void 0 : _Za.menus) == null ? void 0 : __a.filters) == null ? void 0 : _$a.inbox) == null ? void 0 : _ab.icon,\n ...(_fb = (_eb = (_db = (_cb = (_bb = theme2.inbox) == null ? void 0 : _bb.header) == null ? void 0 : _cb.menus) == null ? void 0 : _db.filters) == null ? void 0 : _eb.inbox) == null ? void 0 : _fb.icon\n }\n },\n archive: {\n ...(_jb = (_ib = (_hb = (_gb = defaultTheme.inbox) == null ? void 0 : _gb.header) == null ? void 0 : _hb.menus) == null ? void 0 : _ib.filters) == null ? void 0 : _jb.archive,\n ...(_nb = (_mb = (_lb = (_kb = theme2.inbox) == null ? void 0 : _kb.header) == null ? void 0 : _lb.menus) == null ? void 0 : _mb.filters) == null ? void 0 : _nb.archive,\n icon: {\n ...(_sb = (_rb = (_qb = (_pb = (_ob = defaultTheme.inbox) == null ? void 0 : _ob.header) == null ? void 0 : _pb.menus) == null ? void 0 : _qb.filters) == null ? void 0 : _rb.archive) == null ? void 0 : _sb.icon,\n ...(_xb = (_wb = (_vb = (_ub = (_tb = theme2.inbox) == null ? void 0 : _tb.header) == null ? void 0 : _ub.menus) == null ? void 0 : _vb.filters) == null ? void 0 : _wb.archive) == null ? void 0 : _xb.icon\n }\n }\n },\n actions: {\n ...(_Ab = (_zb = (_yb = defaultTheme.inbox) == null ? void 0 : _yb.header) == null ? void 0 : _zb.menus) == null ? void 0 : _Ab.actions,\n ...(_Db = (_Cb = (_Bb = theme2.inbox) == null ? void 0 : _Bb.header) == null ? void 0 : _Cb.menus) == null ? void 0 : _Db.actions,\n markAllRead: {\n ...(_Hb = (_Gb = (_Fb = (_Eb = defaultTheme.inbox) == null ? void 0 : _Eb.header) == null ? void 0 : _Fb.menus) == null ? void 0 : _Gb.actions) == null ? void 0 : _Hb.markAllRead,\n ...(_Lb = (_Kb = (_Jb = (_Ib = theme2.inbox) == null ? void 0 : _Ib.header) == null ? void 0 : _Jb.menus) == null ? void 0 : _Kb.actions) == null ? void 0 : _Lb.markAllRead,\n icon: {\n ...(_Qb = (_Pb = (_Ob = (_Nb = (_Mb = defaultTheme.inbox) == null ? void 0 : _Mb.header) == null ? void 0 : _Nb.menus) == null ? void 0 : _Ob.actions) == null ? void 0 : _Pb.markAllRead) == null ? void 0 : _Qb.icon,\n ...(_Vb = (_Ub = (_Tb = (_Sb = (_Rb = theme2.inbox) == null ? void 0 : _Rb.header) == null ? void 0 : _Sb.menus) == null ? void 0 : _Tb.actions) == null ? void 0 : _Ub.markAllRead) == null ? void 0 : _Vb.icon\n }\n },\n archiveAll: {\n ...(_Zb = (_Yb = (_Xb = (_Wb = defaultTheme.inbox) == null ? void 0 : _Wb.header) == null ? void 0 : _Xb.menus) == null ? void 0 : _Yb.actions) == null ? void 0 : _Zb.archiveAll,\n ...(_bc = (_ac = (_$b = (__b = theme2.inbox) == null ? void 0 : __b.header) == null ? void 0 : _$b.menus) == null ? void 0 : _ac.actions) == null ? void 0 : _bc.archiveAll,\n icon: {\n ...(_gc = (_fc = (_ec = (_dc = (_cc = defaultTheme.inbox) == null ? void 0 : _cc.header) == null ? void 0 : _dc.menus) == null ? void 0 : _ec.actions) == null ? void 0 : _fc.archiveAll) == null ? void 0 : _gc.icon,\n ...(_lc = (_kc = (_jc = (_ic = (_hc = theme2.inbox) == null ? void 0 : _hc.header) == null ? void 0 : _ic.menus) == null ? void 0 : _jc.actions) == null ? void 0 : _kc.archiveAll) == null ? void 0 : _lc.icon\n }\n },\n archiveRead: {\n ...(_pc = (_oc = (_nc = (_mc = defaultTheme.inbox) == null ? void 0 : _mc.header) == null ? void 0 : _nc.menus) == null ? void 0 : _oc.actions) == null ? void 0 : _pc.archiveRead,\n ...(_tc = (_sc = (_rc = (_qc = theme2.inbox) == null ? void 0 : _qc.header) == null ? void 0 : _rc.menus) == null ? void 0 : _sc.actions) == null ? void 0 : _tc.archiveRead,\n icon: {\n ...(_yc = (_xc = (_wc = (_vc = (_uc = defaultTheme.inbox) == null ? void 0 : _uc.header) == null ? void 0 : _vc.menus) == null ? void 0 : _wc.actions) == null ? void 0 : _xc.archiveRead) == null ? void 0 : _yc.icon,\n ...(_Dc = (_Cc = (_Bc = (_Ac = (_zc = theme2.inbox) == null ? void 0 : _zc.header) == null ? void 0 : _Ac.menus) == null ? void 0 : _Bc.actions) == null ? void 0 : _Cc.archiveRead) == null ? void 0 : _Dc.icon\n }\n }\n }\n }\n },\n list: {\n ...(_Ec = defaultTheme.inbox) == null ? void 0 : _Ec.list,\n ...(_Fc = theme2.inbox) == null ? void 0 : _Fc.list,\n item: {\n ...(_Hc = (_Gc = defaultTheme.inbox) == null ? void 0 : _Gc.list) == null ? void 0 : _Hc.item,\n ...(_Jc = (_Ic = theme2.inbox) == null ? void 0 : _Ic.list) == null ? void 0 : _Jc.item,\n menu: {\n ...(_Mc = (_Lc = (_Kc = defaultTheme.inbox) == null ? void 0 : _Kc.list) == null ? void 0 : _Lc.item) == null ? void 0 : _Mc.menu,\n ...(_Pc = (_Oc = (_Nc = theme2.inbox) == null ? void 0 : _Nc.list) == null ? void 0 : _Oc.item) == null ? void 0 : _Pc.menu,\n item: {\n ...(_Tc = (_Sc = (_Rc = (_Qc = defaultTheme.inbox) == null ? void 0 : _Qc.list) == null ? void 0 : _Rc.item) == null ? void 0 : _Sc.menu) == null ? void 0 : _Tc.item,\n ...(_Xc = (_Wc = (_Vc = (_Uc = theme2.inbox) == null ? void 0 : _Uc.list) == null ? void 0 : _Vc.item) == null ? void 0 : _Wc.menu) == null ? void 0 : _Xc.item,\n read: {\n ...(_ad = (_$c = (__c = (_Zc = (_Yc = defaultTheme.inbox) == null ? void 0 : _Yc.list) == null ? void 0 : _Zc.item) == null ? void 0 : __c.menu) == null ? void 0 : _$c.item) == null ? void 0 : _ad.read,\n ...(_fd = (_ed = (_dd = (_cd = (_bd = theme2.inbox) == null ? void 0 : _bd.list) == null ? void 0 : _cd.item) == null ? void 0 : _dd.menu) == null ? void 0 : _ed.item) == null ? void 0 : _fd.read\n },\n unread: {\n ...(_kd = (_jd = (_id = (_hd = (_gd = defaultTheme.inbox) == null ? void 0 : _gd.list) == null ? void 0 : _hd.item) == null ? void 0 : _id.menu) == null ? void 0 : _jd.item) == null ? void 0 : _kd.unread,\n ...(_pd = (_od = (_nd = (_md = (_ld = theme2.inbox) == null ? void 0 : _ld.list) == null ? void 0 : _md.item) == null ? void 0 : _nd.menu) == null ? void 0 : _od.item) == null ? void 0 : _pd.unread\n },\n archive: {\n ...(_ud = (_td = (_sd = (_rd = (_qd = defaultTheme.inbox) == null ? void 0 : _qd.list) == null ? void 0 : _rd.item) == null ? void 0 : _sd.menu) == null ? void 0 : _td.item) == null ? void 0 : _ud.archive,\n ...(_zd = (_yd = (_xd = (_wd = (_vd = theme2.inbox) == null ? void 0 : _vd.list) == null ? void 0 : _wd.item) == null ? void 0 : _xd.menu) == null ? void 0 : _yd.item) == null ? void 0 : _zd.archive\n },\n unarchive: {\n ...(_Ed = (_Dd = (_Cd = (_Bd = (_Ad = defaultTheme.inbox) == null ? void 0 : _Ad.list) == null ? void 0 : _Bd.item) == null ? void 0 : _Cd.menu) == null ? void 0 : _Dd.item) == null ? void 0 : _Ed.unarchive,\n ...(_Jd = (_Id = (_Hd = (_Gd = (_Fd = theme2.inbox) == null ? void 0 : _Fd.list) == null ? void 0 : _Gd.item) == null ? void 0 : _Hd.menu) == null ? void 0 : _Id.item) == null ? void 0 : _Jd.unarchive\n }\n }\n }\n }\n },\n loading: {\n ...(_Kd = defaultTheme.inbox) == null ? void 0 : _Kd.loading,\n ...(_Ld = theme2.inbox) == null ? void 0 : _Ld.loading\n },\n empty: {\n ...(_Md = defaultTheme.inbox) == null ? void 0 : _Md.empty,\n ...(_Nd = theme2.inbox) == null ? void 0 : _Nd.empty\n },\n error: {\n ...(_Od = defaultTheme.inbox) == null ? void 0 : _Od.error,\n ...(_Pd = theme2.inbox) == null ? void 0 : _Pd.error\n }\n }\n };\n};\nclass CourierInboxThemeManager {\n constructor(initialTheme) {\n // Event IDs\n __publicField(this, \"THEME_CHANGE_EVENT\", \"courier_inbox_theme_change\");\n // State\n __publicField(this, \"_theme\");\n __publicField(this, \"_lightTheme\", defaultLightTheme);\n __publicField(this, \"_darkTheme\", defaultDarkTheme);\n __publicField(this, \"_target\");\n __publicField(this, \"_subscriptions\", []);\n // System theme\n __publicField(this, \"_userMode\");\n __publicField(this, \"_systemMode\");\n __publicField(this, \"_systemThemeCleanup\");\n this._theme = initialTheme;\n this._target = new EventTarget();\n this._userMode = \"system\";\n this._systemMode = getSystemThemeMode();\n this.setLightTheme(defaultLightTheme);\n this.setDarkTheme(defaultDarkTheme);\n this._systemThemeCleanup = addSystemThemeModeListener((mode) => {\n this._systemMode = mode;\n this.updateTheme();\n });\n }\n setLightTheme(theme2) {\n this._lightTheme = theme2;\n if (this._systemMode === \"light\") {\n this.updateTheme();\n }\n }\n setDarkTheme(theme2) {\n this._darkTheme = theme2;\n if (this._systemMode === \"dark\") {\n this.updateTheme();\n }\n }\n /**\n * Get the current system theme\n */\n get currentSystemTheme() {\n return this._systemMode;\n }\n /**\n * Get the current theme\n */\n getTheme() {\n return this._theme;\n }\n /**\n * Update the theme\n */\n updateTheme() {\n const mode = this._userMode === \"system\" ? this._systemMode : this._userMode;\n const theme2 = mode === \"light\" ? this._lightTheme : this._darkTheme;\n const mergedTheme = mergeTheme(mode, theme2);\n this.setTheme(mergedTheme);\n }\n /**\n * Set the theme and notify all listeners\n */\n setTheme(theme2) {\n if (theme2 === this._theme) return;\n this._theme = theme2;\n this._target.dispatchEvent(new CustomEvent(this.THEME_CHANGE_EVENT, {\n detail: { theme: theme2 }\n }));\n }\n /**\n * Set the mode and notify all listeners\n */\n setMode(mode) {\n this._userMode = mode;\n this.updateTheme();\n }\n /**\n * Subscribe to theme changes\n * @param {Function} callback - Function to run when the theme changes\n * @returns {CourierInboxThemeSubscription} - Object with remove method to stop listening\n */\n subscribe(callback) {\n const controller = new AbortController();\n this._target.addEventListener(this.THEME_CHANGE_EVENT, (e) => {\n callback(e.detail.theme);\n }, { signal: controller.signal });\n const subscription = {\n manager: this,\n unsubscribe: () => {\n controller.abort();\n const index = this._subscriptions.indexOf(subscription);\n if (index > -1) {\n this._subscriptions.splice(index, 1);\n }\n }\n };\n this._subscriptions.push(subscription);\n return subscription;\n }\n /**\n * Clean up event listeners\n */\n cleanup() {\n if (this._systemThemeCleanup) {\n this._systemThemeCleanup();\n }\n this._subscriptions.forEach((subscription) => subscription.unsubscribe());\n this._subscriptions = [];\n }\n}\nclass CourierInbox extends BaseElement {\n constructor(themeManager) {\n var _a;\n super();\n // State\n __publicField(this, \"_currentFeed\", \"inbox\");\n // Theming\n __publicField(this, \"_themeManager\");\n // Components\n __publicField(this, \"_shadow\");\n __publicField(this, \"_list\");\n __publicField(this, \"_datastoreListener\");\n __publicField(this, \"_authListener\");\n __publicField(this, \"_style\");\n // Header\n __publicField(this, \"_header\");\n __publicField(this, \"_headerFactory\");\n // List\n __publicField(this, \"_onMessageClick\");\n __publicField(this, \"_onMessageActionClick\");\n __publicField(this, \"_onMessageLongPress\");\n // Default props\n __publicField(this, \"_defaultProps\", {\n title: \"Inbox\",\n icon: CourierIconSVGs.inbox,\n feedType: this._currentFeed,\n height: \"768px\"\n });\n this._shadow = this.attachShadow({ mode: \"open\" });\n this._themeManager = themeManager ?? new CourierInboxThemeManager(defaultLightTheme);\n this._header = new CourierInboxHeader({\n themeManager: this._themeManager,\n onFeedTypeChange: (feedType) => {\n this.setFeedType(feedType);\n }\n });\n this._header.build(void 0);\n this._shadow.appendChild(this._header);\n this._list = new CourierInboxList({\n themeManager: this._themeManager,\n onRefresh: () => {\n this.refresh();\n },\n onPaginationTrigger: async (feedType) => {\n var _a2, _b;\n try {\n await CourierInboxDatastore.shared.fetchNextPageOfMessages({\n feedType\n });\n } catch (error) {\n (_b = (_a2 = Courier.shared.client) == null ? void 0 : _a2.options.logger) == null ? void 0 : _b.error(\"Failed to fetch next page of messages:\", error);\n }\n },\n onMessageClick: (message, index) => {\n var _a2;\n CourierInboxDatastore.shared.clickMessage({ message });\n this.dispatchEvent(new CustomEvent(\"message-click\", {\n detail: { message, index },\n bubbles: true,\n composed: true\n }));\n (_a2 = this._onMessageClick) == null ? void 0 : _a2.call(this, { message, index });\n },\n onMessageActionClick: (message, action, index) => {\n var _a2;\n this.dispatchEvent(new CustomEvent(\"message-action-click\", {\n detail: { message, action, index },\n bubbles: true,\n composed: true\n }));\n (_a2 = this._onMessageActionClick) == null ? void 0 : _a2.call(this, { message, action, index });\n },\n onMessageLongPress: (message, index) => {\n var _a2;\n this.dispatchEvent(new CustomEvent(\"message-long-press\", {\n detail: { message, index },\n bubbles: true,\n composed: true\n }));\n (_a2 = this._onMessageLongPress) == null ? void 0 : _a2.call(this, { message, index });\n }\n });\n this._style = document.createElement(\"style\");\n this.refreshTheme();\n this._shadow.appendChild(this._style);\n this._shadow.appendChild(this._list);\n this._datastoreListener = new CourierInboxDataStoreListener({\n onError: (error) => {\n this._list.setError(error);\n },\n onDataSetChange: (dataSet, feedType) => {\n if (this._currentFeed === feedType) {\n this._list.setDataSet(dataSet);\n this.updateHeader();\n }\n },\n onPageAdded: (dataSet, feedType) => {\n if (this._currentFeed === feedType) {\n this._list.addPage(dataSet);\n this.updateHeader();\n }\n },\n onMessageAdd: (message, index, feedType) => {\n if (this._currentFeed === feedType) {\n this._list.addMessage(message, index);\n this.updateHeader();\n }\n },\n onMessageRemove: (_, index, feedType) => {\n if (this._currentFeed === feedType) {\n this._list.removeMessage(index);\n this.updateHeader();\n }\n },\n onMessageUpdate: (message, index, feedType) => {\n if (this._currentFeed === feedType) {\n this._list.updateMessage(message, index);\n this.updateHeader();\n }\n },\n onUnreadCountChange: (_) => {\n this.updateHeader();\n }\n });\n CourierInboxDatastore.shared.addDataStoreListener(this._datastoreListener);\n this._themeManager.subscribe((_) => {\n this.refreshTheme();\n });\n this._authListener = Courier.shared.addAuthenticationListener((_) => {\n this.refresh();\n });\n if ((_a = Courier.shared.client) == null ? void 0 : _a.options.userId) {\n this.refresh();\n }\n }\n get theme() {\n return this._themeManager.getTheme();\n }\n setLightTheme(theme2) {\n this._themeManager.setLightTheme(theme2);\n }\n setDarkTheme(theme2) {\n this._themeManager.setDarkTheme(theme2);\n }\n static get observedAttributes() {\n return [\"height\", \"light-theme\", \"dark-theme\", \"mode\", \"message-click\", \"message-action-click\", \"message-long-press\"];\n }\n refreshTheme() {\n this._style.textContent = this.getStyles();\n }\n getStyles() {\n return `\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: ${this._defaultProps.height};\n }\n\n courier-inbox-header {\n flex-shrink: 0;\n }\n\n courier-inbox-list {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n }\n `;\n }\n setHeader(factory) {\n this._headerFactory = factory;\n this.updateHeader();\n }\n removeHeader() {\n this._headerFactory = null;\n this.updateHeader();\n }\n setLoadingState(factory) {\n this._list.setLoadingStateFactory(factory);\n }\n setEmptyState(factory) {\n this._list.setEmptyStateFactory(factory);\n }\n setErrorState(factory) {\n this._list.setErrorStateFactory(factory);\n }\n setListItem(factory) {\n this._list.setListItemFactory(factory);\n }\n setPaginationItem(factory) {\n this._list.setPaginationItemFactory(factory);\n }\n onMessageClick(handler) {\n this._onMessageClick = handler;\n }\n onMessageActionClick(handler) {\n this._onMessageActionClick = handler;\n }\n onMessageLongPress(handler) {\n this._onMessageLongPress = handler;\n }\n setFeedType(feedType) {\n this._currentFeed = feedType;\n this._list.setFeedType(feedType);\n this.updateHeader();\n this.load({\n feedType: this._currentFeed,\n canUseCache: true\n });\n }\n updateHeader() {\n const props = {\n feedType: this._currentFeed,\n unreadCount: CourierInboxDatastore.shared.unreadCount,\n messageCount: this._list.messages.length\n };\n switch (this._headerFactory) {\n case void 0:\n this._header.render(props);\n break;\n case null:\n this._header.build(null);\n break;\n default:\n const headerElement = this._headerFactory(props);\n this._header.build(headerElement);\n break;\n }\n }\n async load(props) {\n await CourierInboxDatastore.shared.load(props);\n await CourierInboxDatastore.shared.listenForUpdates();\n }\n refresh() {\n this.load({\n feedType: this._currentFeed,\n canUseCache: false\n });\n }\n connectedCallback() {\n this.refresh();\n }\n disconnectedCallback() {\n var _a, _b;\n this._themeManager.cleanup();\n (_a = this._datastoreListener) == null ? void 0 : _a.remove();\n (_b = this._authListener) == null ? void 0 : _b.remove();\n }\n attributeChangedCallback(name, oldValue, newValue) {\n var _a, _b, _c, _d, _e, _f;\n if (oldValue === newValue) return;\n switch (name) {\n case \"height\":\n const height = newValue || this._defaultProps.height;\n this.style.height = height;\n break;\n case \"message-click\":\n if (newValue) {\n try {\n this._onMessageClick = new Function(\"props\", newValue);\n } catch (error) {\n (_b = (_a = Courier.shared.client) == null ? void 0 : _a.options.logger) == null ? void 0 : _b.error(\"Failed to parse message-click handler:\", error);\n }\n } else {\n this._onMessageClick = void 0;\n }\n break;\n case \"message-action-click\":\n if (newValue) {\n try {\n this._onMessageActionClick = new Function(\"props\", newValue);\n } catch (error) {\n (_d = (_c = Courier.shared.client) == null ? void 0 : _c.options.logger) == null ? void 0 : _d.error(\"Failed to parse message-action-click handler:\", error);\n }\n } else {\n this._onMessageActionClick = void 0;\n }\n break;\n case \"message-long-press\":\n if (newValue) {\n try {\n this._onMessageLongPress = new Function(\"props\", newValue);\n } catch (error) {\n (_f = (_e = Courier.shared.client) == null ? void 0 : _e.options.logger) == null ? void 0 : _f.error(\"Failed to parse message-long-press handler:\", error);\n }\n } else {\n this._onMessageLongPress = void 0;\n }\n break;\n case \"light-theme\":\n if (newValue) {\n this.setLightTheme(JSON.parse(newValue));\n }\n break;\n case \"dark-theme\":\n if (newValue) {\n this.setDarkTheme(JSON.parse(newValue));\n }\n break;\n case \"mode\":\n this._themeManager.setMode(newValue);\n break;\n }\n }\n}\nregisterElement(\"courier-inbox\", CourierInbox);\nclass CourierInboxMenuButton extends CourierElement {\n constructor(themeBus) {\n super();\n // Theme\n __publicField(this, \"_themeSubscription\");\n // Components\n __publicField(this, \"_container\");\n __publicField(this, \"_triggerButton\");\n __publicField(this, \"_unreadCountBadge\");\n this._themeSubscription = themeBus.subscribe((_) => {\n this.updateTheme();\n });\n }\n defaultElement() {\n this._container = document.createElement(\"div\");\n this._container.className = \"menu-button-container\";\n this._triggerButton = new CourierIconButton(CourierIconSVGs.inbox);\n this._unreadCountBadge = new CourierUnreadCountBadge({\n themeBus: this._themeSubscription.manager,\n location: \"button\"\n });\n this._unreadCountBadge.id = \"unread-badge\";\n const style = document.createElement(\"style\");\n style.textContent = this.getStyles();\n this._container.appendChild(style);\n this._container.appendChild(this._triggerButton);\n this._container.appendChild(this._unreadCountBadge);\n this.shadow.appendChild(this._container);\n this.updateTheme();\n return this._container;\n }\n getStyles() {\n return `\n .menu-button-container {\n position: relative;\n display: inline-block;\n }\n \n #unread-badge {\n position: absolute;\n top: -8px;\n left: 50%;\n pointer-events: none;\n }\n `;\n }\n onUnreadCountChange(unreadCount) {\n var _a;\n (_a = this._unreadCountBadge) == null ? void 0 : _a.setCount(unreadCount);\n this.updateTheme();\n }\n updateTheme() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;\n const theme2 = this._themeSubscription.manager.getTheme();\n (_d = this._triggerButton) == null ? void 0 : _d.updateIconColor(((_c = (_b = (_a = theme2 == null ? void 0 : theme2.popup) == null ? void 0 : _a.button) == null ? void 0 : _b.icon) == null ? void 0 : _c.color) ?? CourierColors.black[500]);\n (_h = this._triggerButton) == null ? void 0 : _h.updateIconSVG(((_g = (_f = (_e = theme2 == null ? void 0 : theme2.popup) == null ? void 0 : _e.button) == null ? void 0 : _f.icon) == null ? void 0 : _g.svg) ?? CourierIconSVGs.inbox);\n (_k = this._triggerButton) == null ? void 0 : _k.updateBackgroundColor(((_j = (_i = theme2 == null ? void 0 : theme2.popup) == null ? void 0 : _i.button) == null ? void 0 : _j.backgroundColor) ?? \"transparent\");\n (_n = this._triggerButton) == null ? void 0 : _n.updateHoverBackgroundColor(((_m = (_l = theme2 == null ? void 0 : theme2.popup) == null ? void 0 : _l.button) == null ? void 0 : _m.hoverBackgroundColor) ?? CourierColors.black[50010]);\n (_q = this._triggerButton) == null ? void 0 : _q.updateActiveBackgroundColor(((_p = (_o = theme2 == null ? void 0 : theme2.popup) == null ? void 0 : _o.button) == null ? void 0 : _p.activeBackgroundColor) ?? CourierColors.black[50020]);\n (_r = this._unreadCountBadge) == null ? void 0 : _r.refreshTheme(\"button\");\n }\n disconnectedCallback() {\n this._themeSubscription.unsubscribe();\n }\n}\nregisterElement(\"courier-inbox-menu-button\", CourierInboxMenuButton);\nclass CourierInboxPopupMenu extends BaseElement {\n constructor() {\n super();\n // State\n __publicField(this, \"_width\", \"440px\");\n __publicField(this, \"_height\", \"440px\");\n __publicField(this, \"_popupAlignment\", \"top-right\");\n __publicField(this, \"_top\", \"40px\");\n __publicField(this, \"_right\", \"0\");\n __publicField(this, \"_bottom\", \"40px\");\n __publicField(this, \"_left\", \"0\");\n // Theming\n __publicField(this, \"_themeManager\", new CourierInboxThemeManager(defaultLightTheme));\n // Components\n __publicField(this, \"_triggerButton\");\n __publicField(this, \"_popup\");\n __publicField(this, \"_inbox\");\n __publicField(this, \"_style\");\n // Listeners\n __publicField(this, \"_datastoreListener\");\n // Factories\n __publicField(this, \"_popupMenuButtonFactory\");\n const shadow = this.attachShadow({ mode: \"open\" });\n this._triggerButton = new CourierInboxMenuButton(this._themeManager);\n this._triggerButton.build(void 0);\n this._popup = document.createElement(\"div\");\n this._popup.className = \"popup\";\n this._inbox = new CourierInbox(this._themeManager);\n this._inbox.setAttribute(\"height\", \"100%\");\n this._style = document.createElement(\"style\");\n this.refreshTheme();\n shadow.appendChild(this._style);\n shadow.appendChild(this._triggerButton);\n shadow.appendChild(this._popup);\n this._popup.appendChild(this._inbox);\n this._triggerButton.addEventListener(\"click\", this.togglePopup.bind(this));\n document.addEventListener(\"click\", this.handleOutsideClick.bind(this));\n this.updatePopupPosition();\n this._datastoreListener = new CourierInboxDataStoreListener(this);\n CourierInboxDatastore.shared.addDataStoreListener(this._datastoreListener);\n this._themeManager.subscribe((_) => {\n this.refreshTheme();\n });\n }\n get theme() {\n return this._themeManager.getTheme();\n }\n setLightTheme(theme2) {\n this._themeManager.setLightTheme(theme2);\n }\n setDarkTheme(theme2) {\n this._themeManager.setDarkTheme(theme2);\n }\n static get observedAttributes() {\n return [\"popup-alignment\", \"message-click\", \"message-action-click\", \"message-long-press\", \"popup-width\", \"popup-height\", \"top\", \"right\", \"bottom\", \"left\", \"light-theme\", \"dark-theme\", \"mode\"];\n }\n refreshTheme() {\n this._style.textContent = this.getStyles();\n }\n getStyles() {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n return `\n :host {\n display: inline-block;\n position: relative;\n }\n\n .menu-button-container {\n position: relative;\n display: inline-block;\n }\n\n .popup {\n display: none;\n position: absolute;\n background: ${((_b = (_a = this.theme.popup) == null ? void 0 : _a.window) == null ? void 0 : _b.backgroundColor) ?? \"red\"};\n border-radius: ${((_d = (_c = this.theme.popup) == null ? void 0 : _c.window) == null ? void 0 : _d.borderRadius) ?? \"8px\"};\n border: ${((_f = (_e = this.theme.popup) == null ? void 0 : _e.window) == null ? void 0 : _f.border) ?? `1px solid red`};\n box-shadow: ${((_h = (_g = this.theme.popup) == null ? void 0 : _g.window) == null ? void 0 : _h.shadow) ?? `0px 8px 16px -4px red`};\n z-index: 1000;\n width: ${this._width};\n height: ${this._height};\n overflow: hidden;\n transform: translateZ(0);\n will-change: transform;\n }\n \n #unread-badge {\n position: absolute;\n top: -8px;\n left: 50%;\n pointer-events: none;\n }\n\n courier-inbox {\n height: 100%;\n }\n `;\n }\n attributeChangedCallback(name, _, newValue) {\n switch (name) {\n case \"popup-alignment\":\n if (this.isValidPosition(newValue)) {\n this._popupAlignment = newValue;\n this.updatePopupPosition();\n }\n break;\n case \"popup-width\":\n this._width = newValue;\n this.setSize(newValue, this._height);\n break;\n case \"popup-height\":\n this._height = newValue;\n this.setSize(this._width, newValue);\n break;\n case \"top\":\n this._top = newValue;\n this.updatePopupPosition();\n break;\n case \"right\":\n this._right = newValue;\n this.updatePopupPosition();\n break;\n case \"bottom\":\n this._bottom = newValue;\n this.updatePopupPosition();\n break;\n case \"left\":\n this._left = newValue;\n this.updatePopupPosition();\n break;\n case \"light-theme\":\n if (newValue) {\n this.setLightTheme(JSON.parse(newValue));\n }\n break;\n case \"dark-theme\":\n if (newValue) {\n this.setDarkTheme(JSON.parse(newValue));\n }\n break;\n case \"mode\":\n this._themeManager.setMode(newValue);\n break;\n }\n }\n onUnreadCountChange(_) {\n this.render();\n }\n onMessageClick(handler) {\n this._inbox.onMessageClick(handler);\n }\n onMessageActionClick(handler) {\n this._inbox.onMessageActionClick(handler);\n }\n onMessageLongPress(handler) {\n this._inbox.onMessageLongPress(handler);\n }\n isValidPosition(value) {\n const validPositions = [\n \"top-right\",\n \"top-left\",\n \"top-center\",\n \"bottom-right\",\n \"bottom-left\",\n \"bottom-center\",\n \"center-right\",\n \"center-left\",\n \"center-center\"\n ];\n return validPositions.includes(value);\n }\n updatePopupPosition() {\n this._popup.style.top = \"\";\n this._popup.style.bottom = \"\";\n this._popup.style.left = \"\";\n this._popup.style.right = \"\";\n this._popup.style.margin = \"\";\n this._popup.style.transform = \"\";\n switch (this._popupAlignment) {\n case \"top-right\":\n this._popup.style.top = this._top;\n this._popup.style.right = this._right;\n break;\n case \"top-left\":\n this._popup.style.top = this._top;\n this._popup.style.left = this._left;\n break;\n case \"top-center\":\n this._popup.style.top = this._top;\n this._popup.style.left = \"50%\";\n this._popup.style.transform = \"translateX(-50%)\";\n break;\n case \"bottom-right\":\n this._popup.style.bottom = this._bottom;\n this._popup.style.right = this._right;\n break;\n case \"bottom-left\":\n this._popup.style.bottom = this._bottom;\n this._popup.style.left = this._left;\n break;\n case \"bottom-center\":\n this._popup.style.bottom = this._bottom;\n this._popup.style.left = \"50%\";\n this._popup.style.transform = \"translateX(-50%)\";\n break;\n case \"center-right\":\n this._popup.style.top = \"50%\";\n this._popup.style.right = this._right;\n this._popup.style.transform = \"translateY(-50%)\";\n break;\n case \"center-left\":\n this._popup.style.top = \"50%\";\n this._popup.style.left = this._left;\n this._popup.style.transform = \"translateY(-50%)\";\n break;\n case \"center-center\":\n this._popup.style.top = \"50%\";\n this._popup.style.left = \"50%\";\n this._popup.style.transform = \"translate(-50%, -50%)\";\n break;\n }\n }\n togglePopup(event) {\n event.stopPropagation();\n const isVisible = this._popup.style.display === \"block\";\n if (!isVisible) {\n this._popup.style.display = \"block\";\n } else {\n this._popup.style.display = \"none\";\n }\n }\n handleOutsideClick(event) {\n if (!this.contains(event.target)) {\n this._popup.style.display = \"none\";\n }\n }\n setContent(element) {\n this._inbox.innerHTML = \"\";\n this._inbox.appendChild(element);\n }\n setSize(width, height) {\n this._width = width;\n this._height = height;\n this._popup.style.width = width;\n this._popup.style.height = height;\n }\n setPosition(position) {\n var _a, _b;\n if (this.isValidPosition(position)) {\n this._popupAlignment = position;\n this.updatePopupPosition();\n } else {\n (_b = (_a = Courier.shared.client) == null ? void 0 : _a.options.logger) == null ? void 0 : _b.error(`Invalid position: ${position}`);\n }\n }\n setFeedType(feedType) {\n this._inbox.setFeedType(feedType);\n }\n // Factory methods\n setPopupHeader(factory) {\n this._inbox.setHeader(factory);\n }\n removePopupHeader() {\n this._inbox.removeHeader();\n }\n setPopupLoadingState(factory) {\n this._inbox.setLoadingState(factory);\n }\n setPopupEmptyState(factory) {\n this._inbox.setEmptyState(factory);\n }\n setPopupErrorState(factory) {\n this._inbox.setErrorState(factory);\n }\n setPopupListItem(factory) {\n this._inbox.setListItem(factory);\n }\n setPopupPaginationItem(factory) {\n this._inbox.setPaginationItem(factory);\n }\n setPopupMenuButton(factory) {\n this._popupMenuButtonFactory = factory;\n this.render();\n }\n render() {\n const unreadCount = CourierInboxDatastore.shared.unreadCount;\n switch (this._popupMenuButtonFactory) {\n case void 0:\n case null:\n this._triggerButton.build(void 0);\n this._triggerButton.onUnreadCountChange(unreadCount);\n break;\n default:\n const customButton = this._popupMenuButtonFactory({ unreadCount });\n this._triggerButton.build(customButton);\n break;\n }\n }\n disconnectedCallback() {\n var _a;\n (_a = this._datastoreListener) == null ? void 0 : _a.remove();\n this._themeManager.cleanup();\n }\n}\nregisterElement(\"courier-inbox-popup-menu\", CourierInboxPopupMenu);\nfunction markAsRead(message) {\n return CourierInboxDatastore.shared.readMessage({ message });\n}\nfunction markAsUnread(message) {\n return CourierInboxDatastore.shared.unreadMessage({ message });\n}\nfunction clickMessage(message) {\n return CourierInboxDatastore.shared.clickMessage({ message });\n}\nfunction archiveMessage(message) {\n return CourierInboxDatastore.shared.archiveMessage({ message });\n}\nfunction openMessage(message) {\n return CourierInboxDatastore.shared.openMessage({ message });\n}\nclass CourierInboxDatastoreEvents {\n onDataSetChange(_, __) {\n }\n onPageAdded(_, __) {\n }\n onUnreadCountChange(_) {\n }\n onMessageAdd(_, __, ___) {\n }\n onMessageRemove(_, __, ___) {\n }\n onMessageUpdate(_, __, ___) {\n }\n onError(_) {\n }\n}\nexport {\n CourierInbox,\n CourierInboxDataStoreListener,\n CourierInboxDatastore,\n CourierInboxDatastoreEvents,\n CourierInboxHeader,\n CourierInboxPopupMenu,\n CourierInboxThemeManager,\n CourierListItem,\n archiveMessage,\n clickMessage,\n defaultDarkTheme,\n defaultLightTheme,\n markAsRead,\n markAsUnread,\n mergeTheme,\n openMessage\n};\n//# sourceMappingURL=index.mjs.map\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","import { ReactNode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { flushSync } from \"react-dom\";\n\n/**\n * Converts a React node to an HTMLElement.\n * This function uses flushSync to ensure the DOM is updated synchronously.\n * @param node - The React node to convert.\n * @returns The converted HTMLElement.\n */\nexport function reactNodeToHTMLElement(node: ReactNode): HTMLElement {\n const container = document.createElement('div');\n\n // Use flushSync to ensure the DOM is updated synchronously\n flushSync(() => {\n render(node, container);\n });\n\n return container;\n}\n\n/**\n * Render a React node using createRoot.\n * @param node - The React node to render.\n * @param container - The container to render the node into.\n * @returns The rendered node.\n */\nfunction render(node: ReactNode, container: HTMLElement) {\n const root = createRoot(container);\n return root.render(node);\n}","import React, { useState, useEffect } from 'react';\n\ninterface CourierClientProps {\n children: React.ReactNode;\n}\n\nexport const CourierClientComponent: React.FC<CourierClientProps> = ({ children }) => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n // During SSR, render nothing or fallback\n if (typeof window === 'undefined') {\n return null;\n }\n\n if (!isMounted) {\n return null;\n }\n\n return <>{children}</>;\n};","import React, { useRef, useEffect } from \"react\";\nimport { CourierInboxListItemActionFactoryProps, CourierInboxListItemFactoryProps, CourierInboxTheme, CourierInbox as CourierInboxElement, CourierInboxHeaderFactoryProps, CourierInboxStateEmptyFactoryProps, CourierInboxStateLoadingFactoryProps, CourierInboxStateErrorFactoryProps, CourierInboxPaginationItemFactoryProps, CourierInboxFeedType } from \"@trycourier/courier-ui-inbox\";\nimport { reactNodeToHTMLElement } from \"../utils/utils\";\nimport { CourierComponentThemeMode } from \"@trycourier/courier-ui-core\";\nimport { CourierClientComponent } from \"./courier-client-component\";\n\nexport interface CourierInboxProps {\n height?: string;\n lightTheme?: CourierInboxTheme;\n darkTheme?: CourierInboxTheme;\n mode?: CourierComponentThemeMode;\n feedType?: CourierInboxFeedType;\n onMessageClick?: (props: CourierInboxListItemFactoryProps) => void;\n onMessageActionClick?: (props: CourierInboxListItemActionFactoryProps) => void;\n onMessageLongPress?: (props: CourierInboxListItemFactoryProps) => void;\n renderHeader?: (props: CourierInboxHeaderFactoryProps | undefined | null) => React.ReactNode;\n renderListItem?: (props: CourierInboxListItemFactoryProps | undefined | null) => React.ReactNode;\n renderEmptyState?: (props: CourierInboxStateEmptyFactoryProps | undefined | null) => React.ReactNode;\n renderLoadingState?: (props: CourierInboxStateLoadingFactoryProps | undefined | null) => React.ReactNode;\n renderErrorState?: (props: CourierInboxStateErrorFactoryProps | undefined | null) => React.ReactNode;\n renderPaginationItem?: (props: CourierInboxPaginationItemFactoryProps | undefined | null) => React.ReactNode;\n}\n\nexport const CourierInbox = (props: CourierInboxProps) => {\n const inboxRef = useRef<CourierInboxElement>(null);\n\n // Handle message click\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox) return;\n inbox.onMessageClick(props.onMessageClick);\n }, [props.onMessageClick, inboxRef]);\n\n // Handle message action click\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox) return;\n inbox.onMessageActionClick(props.onMessageActionClick);\n }, [props.onMessageActionClick, inboxRef]);\n\n // Handle message long press\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox) return;\n inbox.onMessageLongPress(props.onMessageLongPress);\n }, [props.onMessageLongPress, inboxRef]);\n\n // Render header\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderHeader) return;\n queueMicrotask(() => {\n inbox.setHeader((headerProps?: CourierInboxHeaderFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderHeader!(headerProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderHeader, inboxRef]);\n\n // Render list item\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderListItem) return;\n queueMicrotask(() => {\n inbox.setListItem((itemProps?: CourierInboxListItemFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderListItem!(itemProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderListItem, inboxRef]);\n\n // Render empty state\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderEmptyState) return;\n queueMicrotask(() => {\n inbox.setEmptyState((emptyStateProps?: CourierInboxStateEmptyFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderEmptyState!(emptyStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderEmptyState, inboxRef]);\n\n // Render loading state\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderLoadingState) return;\n queueMicrotask(() => {\n inbox.setLoadingState((loadingStateProps?: CourierInboxStateLoadingFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderLoadingState!(loadingStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderLoadingState, inboxRef]);\n\n // Render error state\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderErrorState) return;\n queueMicrotask(() => {\n inbox.setErrorState((errorStateProps?: CourierInboxStateErrorFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderErrorState!(errorStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderErrorState, inboxRef]);\n\n // Render pagination item\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderPaginationItem) return;\n queueMicrotask(() => {\n inbox.setPaginationItem((paginationProps?: CourierInboxPaginationItemFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPaginationItem!(paginationProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPaginationItem, inboxRef]);\n\n // Set feed type\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox) return;\n queueMicrotask(() => {\n inbox.setFeedType(props.feedType || 'inbox');\n });\n }, [props.feedType, inboxRef]);\n\n return (\n <CourierClientComponent>\n {/* @ts-ignore */}\n <courier-inbox\n ref={inboxRef}\n height={props.height}\n light-theme={props.lightTheme ? JSON.stringify(props.lightTheme) : undefined}\n dark-theme={props.darkTheme ? JSON.stringify(props.darkTheme) : undefined}\n mode={props.mode}\n />\n </CourierClientComponent>\n );\n};","import { useRef, useEffect } from \"react\";\nimport { CourierInboxFeedType, CourierInboxHeaderFactoryProps, CourierInboxListItemActionFactoryProps, CourierInboxListItemFactoryProps, CourierInboxMenuButtonFactoryProps, CourierInboxPopupMenu as CourierInboxPopupMenuElement, CourierInboxPaginationItemFactoryProps, CourierInboxPopupAlignment, CourierInboxStateEmptyFactoryProps, CourierInboxStateErrorFactoryProps, CourierInboxStateLoadingFactoryProps, CourierInboxTheme } from \"@trycourier/courier-ui-inbox\";\nimport { reactNodeToHTMLElement } from \"../utils/utils\";\nimport { CourierComponentThemeMode } from \"@trycourier/courier-ui-core\";\nimport { CourierClientComponent } from \"./courier-client-component\";\n\nexport interface CourierInboxPopupMenuProps {\n popupAlignment?: CourierInboxPopupAlignment;\n popupWidth?: string;\n popupHeight?: string;\n left?: string;\n top?: string;\n right?: string;\n bottom?: string;\n lightTheme?: CourierInboxTheme;\n darkTheme?: CourierInboxTheme;\n mode?: CourierComponentThemeMode;\n feedType?: CourierInboxFeedType;\n onMessageClick?: (props: CourierInboxListItemFactoryProps) => void;\n onMessageActionClick?: (props: CourierInboxListItemActionFactoryProps) => void;\n onMessageLongPress?: (props: CourierInboxListItemFactoryProps) => void;\n renderPopupHeader?: (props: CourierInboxHeaderFactoryProps | undefined | null) => React.ReactNode;\n renderPopupListItem?: (props: CourierInboxListItemFactoryProps | undefined | null) => React.ReactNode;\n renderPopupEmptyState?: (props: CourierInboxStateEmptyFactoryProps | undefined | null) => React.ReactNode;\n renderPopupLoadingState?: (props: CourierInboxStateLoadingFactoryProps | undefined | null) => React.ReactNode;\n renderPopupErrorState?: (props: CourierInboxStateErrorFactoryProps | undefined | null) => React.ReactNode;\n renderPopupPaginationItem?: (props: CourierInboxPaginationItemFactoryProps | undefined | null) => React.ReactNode;\n renderPopupMenuButton?: (props: CourierInboxMenuButtonFactoryProps | undefined | null) => React.ReactNode;\n}\n\nexport const CourierInboxPopupMenu = (props: CourierInboxPopupMenuProps) => {\n const menuRef = useRef<CourierInboxPopupMenuElement>(null);\n\n // Handle message click\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n menu.onMessageClick(props.onMessageClick);\n }, [props.onMessageClick, menuRef]);\n\n // Handle message action click\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n menu.onMessageActionClick(props.onMessageActionClick);\n }, [props.onMessageActionClick, menuRef]);\n\n // Handle message long press\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n menu.onMessageLongPress(props.onMessageLongPress);\n }, [props.onMessageLongPress, menuRef]);\n\n // Render header\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupHeader) return;\n queueMicrotask(() => {\n menu.setPopupHeader((headerProps?: CourierInboxHeaderFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupHeader!(headerProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupHeader, menuRef]);\n\n // Render list item\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupListItem) return;\n queueMicrotask(() => {\n menu.setPopupListItem((itemProps?: CourierInboxListItemFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupListItem!(itemProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupListItem, menuRef]);\n\n // Render empty state\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupEmptyState) return;\n queueMicrotask(() => {\n menu.setPopupEmptyState((emptyStateProps?: CourierInboxStateEmptyFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupEmptyState!(emptyStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupEmptyState, menuRef]);\n\n // Render loading state\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupLoadingState) return;\n queueMicrotask(() => {\n menu.setPopupLoadingState((loadingStateProps?: CourierInboxStateLoadingFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupLoadingState!(loadingStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupLoadingState, menuRef]);\n\n // Render error state\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupErrorState) return;\n queueMicrotask(() => {\n menu.setPopupErrorState((errorStateProps?: CourierInboxStateErrorFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupErrorState!(errorStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupErrorState, menuRef]);\n\n // Render pagination item\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupPaginationItem) return;\n queueMicrotask(() => {\n menu.setPopupPaginationItem((paginationProps?: CourierInboxPaginationItemFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupPaginationItem!(paginationProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupPaginationItem, menuRef]);\n\n // Render menu button\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupMenuButton) return;\n queueMicrotask(() => {\n menu.setPopupMenuButton((buttonProps?: CourierInboxMenuButtonFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupMenuButton!(buttonProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupMenuButton, menuRef]);\n\n // Set feed type\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n queueMicrotask(() => {\n menu.setFeedType(props.feedType || 'inbox');\n });\n }, [props.feedType, menuRef]);\n\n return (\n <CourierClientComponent>\n {/* @ts-ignore */}\n <courier-inbox-popup-menu\n ref={menuRef}\n popup-alignment={props.popupAlignment}\n popup-width={props.popupWidth}\n popup-height={props.popupHeight}\n left={props.left}\n top={props.top}\n right={props.right}\n bottom={props.bottom}\n light-theme={props.lightTheme ? JSON.stringify(props.lightTheme) : undefined}\n dark-theme={props.darkTheme ? JSON.stringify(props.darkTheme) : undefined}\n mode={props.mode}\n />\n </CourierClientComponent>\n );\n};\n","import React from 'react';\nimport { Courier, CourierProps, InboxMessage } from '@trycourier/courier-js';\nimport { CourierInboxDatastore, CourierInboxDataStoreListener, CourierInboxFeedType, InboxDataSet } from '@trycourier/courier-ui-inbox';\n\ntype AuthenticationHooks = {\n userId?: string,\n signIn: (props: CourierProps) => void,\n signOut: () => void\n}\n\ntype InboxHooks = {\n load: (props?: { feedType: CourierInboxFeedType, canUseCache: boolean }) => Promise<void>,\n fetchNextPageOfMessages: (props: { feedType: CourierInboxFeedType }) => Promise<InboxDataSet | null>,\n setPaginationLimit: (limit: number) => void,\n readMessage: (message: InboxMessage) => Promise<void>,\n unreadMessage: (message: InboxMessage) => Promise<void>,\n clickMessage: (message: InboxMessage) => Promise<void>,\n archiveMessage: (message: InboxMessage) => Promise<void>,\n openMessage: (message: InboxMessage) => Promise<void>,\n unarchiveMessage: (message: InboxMessage) => Promise<void>,\n readAllMessages: () => Promise<void>,\n inbox?: InboxDataSet,\n archive?: InboxDataSet,\n unreadCount?: number,\n error?: Error\n}\n\n// A hook for managing the shared state of Courier\n// If you want to use more functions, checkout the Courier JS SDK which\n// can be used directly by importing from '@trycourier/courier-js'\nexport const useCourier = () => {\n\n // Authentication Functions\n const signIn = (props: CourierProps) => Courier.shared.signIn(props);\n const signOut = () => Courier.shared.signOut();\n\n // Inbox Functions\n const loadInbox = (props?: { feedType: CourierInboxFeedType, canUseCache: boolean }) => CourierInboxDatastore.shared.load(props);\n const fetchNextPageOfMessages = (props: { feedType: CourierInboxFeedType }) => CourierInboxDatastore.shared.fetchNextPageOfMessages(props);\n const setPaginationLimit = (limit: number) => Courier.shared.paginationLimit = limit;\n const readMessage = (message: InboxMessage) => CourierInboxDatastore.shared.readMessage({ message });\n const unreadMessage = (message: InboxMessage) => CourierInboxDatastore.shared.unreadMessage({ message });\n const clickMessage = (message: InboxMessage) => CourierInboxDatastore.shared.clickMessage({ message });\n const archiveMessage = (message: InboxMessage) => CourierInboxDatastore.shared.archiveMessage({ message });\n const openMessage = (message: InboxMessage) => CourierInboxDatastore.shared.openMessage({ message });\n const unarchiveMessage = (message: InboxMessage) => CourierInboxDatastore.shared.unarchiveMessage({ message });\n const readAllMessages = () => CourierInboxDatastore.shared.readAllMessages();\n\n // State\n const [auth, setAuth] = React.useState<AuthenticationHooks>({\n userId: undefined,\n signIn,\n signOut\n });\n\n const [inbox, setInbox] = React.useState<InboxHooks>({\n load: loadInbox,\n fetchNextPageOfMessages,\n setPaginationLimit,\n readMessage,\n unreadMessage,\n clickMessage,\n archiveMessage,\n openMessage,\n unarchiveMessage,\n readAllMessages\n });\n\n React.useEffect(() => {\n\n // Add a listener to the Courier instance\n const listener = Courier.shared.addAuthenticationListener(() => refreshAuth());\n\n // Add inbox data store listener\n const inboxListener = new CourierInboxDataStoreListener({\n onError: (error: Error) => refreshInbox(error),\n onDataSetChange: () => refreshInbox(),\n onPageAdded: () => refreshInbox(),\n onMessageAdd: () => refreshInbox(),\n onMessageRemove: () => refreshInbox(),\n onMessageUpdate: () => refreshInbox(),\n onUnreadCountChange: () => refreshInbox()\n });\n CourierInboxDatastore.shared.addDataStoreListener(inboxListener);\n\n // Set initial values\n refreshAuth();\n refreshInbox();\n\n // Remove listeners when the component unmounts\n return () => {\n listener.remove();\n inboxListener.remove();\n };\n }, []);\n\n const refreshAuth = () => {\n const options = Courier.shared.client?.options;\n setAuth({\n userId: options?.userId,\n signIn,\n signOut\n });\n }\n\n const refreshInbox = (error?: Error) => {\n const datastore = CourierInboxDatastore.shared;\n setInbox({\n load: loadInbox,\n fetchNextPageOfMessages,\n setPaginationLimit,\n readMessage,\n unreadMessage,\n clickMessage,\n archiveMessage,\n openMessage,\n unarchiveMessage,\n readAllMessages,\n inbox: datastore.inboxDataSet,\n archive: datastore.archiveDataSet,\n unreadCount: datastore.unreadCount,\n error: error,\n });\n }\n\n return {\n shared: Courier.shared,\n auth: auth,\n inbox: inbox,\n };\n};\n"],"names":["__defProp","Object","defineProperty","__publicField","obj","key","value","enumerable","configurable","writable","__defNormalProp","CLOSE_CODE_NORMAL_CLOSURE","_CourierSocket","constructor","options","__publicField$1","this","url","apiUrls","inbox","webSocket","connect","_a","clearRetryTimeout","isConnecting","isOpen","logger","info","Promise","reject","Error","resolve","WebSocket","getWebSocketUrl","addEventListener","event","retryAttempt","onOpen","async","_a2","json","JSON","parse","data","close","retryConnection","retryAfter","onMessageReceived","error","code","courierCloseEvent","parseCloseEvent","retryAfterSeconds","onClose","onError","reason","send","message","stringify","userId","readyState","CONNECTING","OPEN","accessToken","connectionId","closeEvent","jsonReason","RETRY_AFTER_KEY","parseInt","Number","isNaN","getBackoffTimeInMillis","backoffIntervalInMillis","BACKOFF_INTERVALS_IN_MILLIS","lowerBound","BACKOFF_JITTER_FACTOR","upperBound","Math","floor","random","suggestedBackoffTimeInMillis","_b","_c","retryTimeoutId","debug","MAX_RETRY_ATTEMPTS","backoffTimeInMillis","window","setTimeout","clearTimeout","CourierSocket","ClientAction","ClientAction2","ServerAction","ServerAction2","MessageEvent","MessageEvent2","getCourierApiUrls","urls","courier","rest","graphql","Logger","showLogs","warn","args","console","PREFIX","log","_UUID","nanoid","size","id","bytes","crypto","getRandomValues","Uint8Array","ALPHABET","UUID","CourierRequestError","type","super","name","logRequest","uid","method","query","variables","headers","body","logResponse","status","response","http","props","validCodes","request","Request","fromEntries","entries","fetch","includes","ok","Client","BrandClient","getBrand","brandId","Authorization","brand","_CourierInboxSocket","_","restartPingInterval","action","Ping","envelope","sendPong","listener","messageEventListeners","sendSubscribe","tid","Subscribe","channel","sendUnsubscribe","Unsubscribe","addMessageEventListener","push","sendPing","incomingMessage","Pong","pingIntervalId","clearInterval","setInterval","PING_INTERVAL_MILLIS","CourierInboxSocket","InboxClient","socket","getMessages","tenantId","paginationLimit","startCursor","getArchivedMessages","getUnreadMessageCount","count","click","messageId","trackingId","read","unread","readAll","open","archive","unarchive","archiveRead","archiveAll","PreferenceTransformer","transformItem","item","topicId","topic_id","topicName","topic_name","sectionId","section_id","sectionName","section_name","defaultStatus","default_status","hasCustomRouting","has_custom_routing","customRouting","custom_routing","transform","items","PreferenceClient","arguments","getUserPreferences","paginationCursor","transformer","paging","getUserPreferenceTopic","res","topic","putUserPreferenceTopic","payload","getNotificationCenterUrl","length","i","charCodeAt","btoa","String","fromCharCode","encode","clientKey","binaryString","atob","decode","TokenClient","putUserToken","provider_key","provider","device","app_id","appId","ad_id","adId","device_id","deviceId","platform","manufacturer","model","token","deleteUserToken","ListClient","putSubscription","listId","deleteSubscription","TrackingClient","postInboundCourier","postTrackingUrl","CourierClient","baseOptions","jwt","publicApiKey","tokens","brands","preferences","lists","tracking","AuthenticationListener","callback","remove","Courier","shared","removeAuthenticationListener","_Courier","_paginationLimit","min","max","client","instanceClient","instance","_Courier2","signIn","notifyAuthenticationListeners","signOut","addAuthenticationListener","authenticationListeners","filter","l","forEach","__defProp2","__publicField2","__defNormalProp2","CourierColors","theme","light","colors","primary","secondary","border","link","icon","button","cornerRadius","dark","getSystemThemeMode","matchMedia","matches","addSystemThemeModeListener","mediaQuery","handler","e","removeEventListener","BaseElement","HTMLElement","CourierSystemThemeElement","_currentSystemTheme","_systemThemeCleanup","mode","onSystemThemeChange","currentSystemTheme","disconnectedCallback","baseButtonStyles","borderRadius","fontSize","CourierButtonVariants","backgroundColor","textColor","fontWeight","shadow","CourierButton","attachShadow","_button","document","createElement","setAttribute","_style","textContent","getStyles","appendChild","updateButton","preventDefault","stopPropagation","onClick","defaultBorderRadius","defaultFontWeight","fontFamily","defaultFontSize","defaultBackgroundColor","defaultTextColor","defaultBorder","defaultShadow","hoverBackgroundColor","activeBackgroundColor","text","CourierIconSVGs","check","overflow","CourierIcon","color","svg","_color","_svg","_iconContainer","refresh","innerHTML","updateColor","updateSVG","CourierLink","style","updateVariant","updateUnderline","updateMode","connectedCallback","slot","updateHref","attributeChangedCallback","oldValue","newValue","pointerEvents","hasAttribute","opacity","updateTarget","updateFontFamily","updateFontSize","href","getAttribute","variant","setProperty","removeProperty","underline","toString","target","CourierElement","build","newElement","replaceChildren","element","defaultElement","cssText","CourierInfoState","_props","container","_title","title","className","_buttonClickCallback","updateStyles","_d","setButtonClickCallback","CourierIconButton","height","width","_borderRadius","_backgroundColor","_hoverBackgroundColor","_activeBackgroundColor","_height","_width","_icon","updateIconColor","updateIconSVG","updateBackgroundColor","updateHoverBackgroundColor","updateActiveBackgroundColor","registerElement","customElements","get","define","copyMessage","copy","actions","map","copyInboxAction","tags","trackingIds","copyInboxDataSet","dataSet","messages","class","componentClass","CourierInboxListItemMenu","theme2","_theme","menu","list","setOptions","_options","renderMenu","shadowRoot","querySelector","menuTheme","cancelEvent","opt","_b2","_c2","handleInteraction","show","classList","add","hide","_CourierInboxDatastore","unreadCount","_unreadCount","inboxDataSet","_inboxDataSet","feedType","canPaginate","archiveDataSet","_archiveDataSet","addDataStoreListener","_dataStoreListeners","removeDataStoreListener","fetchDataSet","_e","_f","_g","_h","_i","_j","canUseCache","nodes","pageInfo","hasNextPage","fetchUnreadCount","load","properties","all","events","onDataSetChange","call","onUnreadCountChange","listenForUpdates","ensureDataSetsLoaded","connectSocket","dataSetPromises","_k","NewMessage","message2","addMessage","getMessage","MarkAllRead","readAllMessages","canCallApi","Read","readMessage","Unread","unreadMessage","Opened","openMessage","Archive","archiveMessage","ArchiveRead","archiveReadMessages","Clicked","clickMessage","Unarchive","unarchiveMessage","Unopened","find","m","fetchNextPageOfMessages","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","isPaginatingInbox","addPage","isPaginatingArchive","canMutate","datastoreSnapshot","getDatastoreSnapshot","snapshot","getMessageSnapshot","Date","toISOString","applyMessageSnapshot","applyDatastoreSnapshot","inboxIndex","archiveIndex","opened","clickTrackingId","messageSnapshot","archived","removeMessage","insertIndex","findInsertIndex","timestamp","findIndex","splice","_d2","archiveAllMessages","_e2","newMessage","created","onPageAdded","index","onMessageAdd","onMessageRemove","updateMessage","onMessageUpdate","CourierInboxDatastore","CourierListItem","_isMobile","contentContainer","_titleElement","_subtitleElement","_actionsContainer","_timeElement","_unreadIndicator","_refreshStyles","_menu","_getMenuOptions","append","cancelPropagation","contains","composedPath","_message","onItemClick","_isLongPress","_setupHoverBehavior","_setupLongPressBehavior","_showMenu","_hideMenu","enabled","longPress","_longPressTimeout","onItemLongPress","navigator","vibrate","vibrationDuration","displayDuration","passive","setOnLongPress","cb","isArchiveFeed","_feedType","display","_getStyles","listItem","divider","unreadIndicatorColor","family","subtitle","time","messageAttr","feedTypeAttr","_updateContent","err","setMessage","setOnItemClick","setOnItemActionClick","onItemActionClick","setOnItemLongPress","toggle","preview","now","messageDate","diffInSeconds","getTime","getMessageTime","hasActions","actionsTheme","actionButton","content","font","weight","CourierInboxSkeletonListItem","_shadow","firstRow","CourierSkeletonAnimatedRow","secondRow","thirdRow","widthPercent","skeletonItem","loading","animation","barColor","hexColor","r","slice","g","b","colorWithAlpha80","colorWithAlpha40","barHeight","duration","barBorderRadius","CourierInboxSkeletonList","CourierInboxPaginationListItem","onPaginationTrigger","customItem","skeletonLoadingList","observer","IntersectionObserver","entry","isIntersecting","observe","disconnect","CourierInboxList","_themeSubscription","themeManager","subscribe","refreshTheme","_onRefresh","onRefresh","_onPaginationTrigger","_onMessageClick","onMessageClick","_onMessageActionClick","onMessageActionClick","_onMessageLongPress","onMessageLongPress","_messages","manager","getTheme","reset","firstChild","removeChild","setDataSet","_canPaginate","Boolean","_error","_isLoading","render","setFeedType","setLoading","isLoading","setError","setErrorNoClient","handleRetry","handleRefresh","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","errorElement","_errorStateFactory","loadingElement","_loadingStateFactory","empty","emptyElement","_emptyStateFactory","_listItemFactory","paginationItem","_paginationItemFactory","setLoadingStateFactory","factory","setEmptyStateFactory","setErrorStateFactory","setListItemFactory","setPaginationItemFactory","unsubscribe","CourierInboxOptionMenuItem","_option","option","_isSelected","isSelected","_themeManager","_content","_itemIcon","spacer","_selectionIcon","selectable","header","menus","popup","selectionIcon","CourierInboxOptionMenu","onMenuOpen","_type","_selectable","_selectedIndex","_onMenuOpen","_menuButton","toggleMenu","bind","handleOutsideClick","isFilter","buttonConfig","filters","defaultIcon","refreshMenuItems","menuItem","closeMenu","isOpening","selectOption","o","CourierUnreadCountBadge","_location","location","themeBus","_badge","indicator","unreadIndicator","setCount","_count","updateBadge","CourierInboxHeaderTitle","_container","_iconElement","_unreadBadge","updateFilter","updateSelectedOption","CourierInboxHeader","_onFeedTypeChange","onFeedTypeChange","getFilterOptions","filterMenu","handleOptionMenuItemClick","getActionOptions","actionMenu","markAllRead","observedAttributes","boxShadow","_filterMenu","_actionMenu","_titleSection","refreshTitleSection","filterOptions","CourierInboxDataStoreListener","defaultLightTheme","defaultDarkTheme","CourierInboxThemeManager","initialTheme","_target","EventTarget","_userMode","_systemMode","setLightTheme","setDarkTheme","updateTheme","_lightTheme","_darkTheme","mergedTheme","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","_na","_oa","_pa","_qa","_ra","_sa","_ta","_ua","_va","_wa","_xa","_ya","_za","_Aa","_Ba","_Ca","_Da","_Ea","_Fa","_Ga","_Ha","_Ia","_Ja","_Ka","_La","_Ma","_Na","_Oa","_Pa","_Qa","_Ra","_Sa","_Ta","_Ua","_Va","_Wa","_Xa","_Ya","_Za","__a","_$a","_ab","_bb","_cb","_db","_eb","_fb","_gb","_hb","_ib","_jb","_kb","_lb","_mb","_nb","_ob","_pb","_qb","_rb","_sb","_tb","_ub","_vb","_wb","_xb","_yb","_zb","_Ab","_Bb","_Cb","_Db","_Eb","_Fb","_Gb","_Hb","_Ib","_Jb","_Kb","_Lb","_Mb","_Nb","_Ob","_Pb","_Qb","_Rb","_Sb","_Tb","_Ub","_Vb","_Wb","_Xb","_Yb","_Zb","__b","_$b","_ac","_bc","_cc","_dc","_ec","_fc","_gc","_hc","_ic","_jc","_kc","_lc","_mc","_nc","_oc","_pc","_qc","_rc","_sc","_tc","_uc","_vc","_wc","_xc","_yc","_zc","_Ac","_Bc","_Cc","_Dc","_Ec","_Fc","_Gc","_Hc","_Ic","_Jc","_Kc","_Lc","_Mc","_Nc","_Oc","_Pc","_Qc","_Rc","_Sc","_Tc","_Uc","_Vc","_Wc","_Xc","_Yc","_Zc","__c","_$c","_ad","_bd","_cd","_dd","_ed","_fd","_gd","_hd","_id","_jd","_kd","_ld","_md","_nd","_od","_pd","_qd","_rd","_sd","_td","_ud","_vd","_wd","_xd","_yd","_zd","_Ad","_Bd","_Cd","_Dd","_Ed","_Fd","_Gd","_Hd","_Id","_Jd","_Kd","_Ld","_Md","_Nd","_Od","_Pd","defaultTheme","mergeTheme","setTheme","dispatchEvent","CustomEvent","THEME_CHANGE_EVENT","detail","setMode","controller","AbortController","signal","subscription","abort","_subscriptions","indexOf","cleanup","_currentFeed","_header","_list","bubbles","composed","_datastoreListener","updateHeader","_authListener","_defaultProps","setHeader","_headerFactory","removeHeader","setLoadingState","setEmptyState","setErrorState","setListItem","setPaginationItem","messageCount","headerElement","Function","CourierInbox","CourierInboxMenuButton","_triggerButton","_unreadCountBadge","_popup","_inbox","togglePopup","updatePopupPosition","isValidPosition","_popupAlignment","setSize","_top","_right","_bottom","_left","top","bottom","left","right","margin","isVisible","setContent","setPosition","position","setPopupHeader","removePopupHeader","setPopupLoadingState","setPopupEmptyState","setPopupErrorState","setPopupListItem","setPopupPaginationItem","setPopupMenuButton","_popupMenuButtonFactory","customButton","jsxRuntimeModule","exports","REACT_ELEMENT_TYPE","Symbol","for","REACT_FRAGMENT_TYPE","jsxProd","config","maybeKey","propName","ref","$$typeof","reactJsxRuntime_production","Fragment","jsx","jsxs","require$$0","reactNodeToHTMLElement","node","flushSync","root","createRoot","CourierClientComponent","children","isMounted","setIsMounted","useState","useEffect","inboxRef","useRef","current","renderHeader","queueMicrotask","headerProps","renderListItem","itemProps","renderEmptyState","emptyStateProps","renderLoadingState","loadingStateProps","renderErrorState","errorStateProps","renderPaginationItem","paginationProps","jsxRuntimeExports","lightTheme","darkTheme","menuRef","renderPopupHeader","renderPopupListItem","renderPopupEmptyState","renderPopupLoadingState","renderPopupErrorState","renderPopupPaginationItem","renderPopupMenuButton","buttonProps","popupAlignment","popupWidth","popupHeight","loadInbox","setPaginationLimit","limit","auth","setAuth","React","setInbox","refreshAuth","inboxListener","refreshInbox","datastore"],"mappings":"uYAAA,IAAIA,EAAYC,OAAOC,eAEnBC,EAAgB,CAACC,EAAKC,EAAKC,IADT,EAACF,EAAKC,EAAKC,IAAUD,KAAOD,EAAMJ,EAAUI,EAAKC,EAAK,CAAEE,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMH,UAAWF,EAAIC,GAAOC,EACjHI,CAAgBN,EAAoB,iBAARC,EAAmBA,EAAM,GAAKA,EAAKC,GACxG,MAAMK,EAA4B,IAE5BC,EAAiB,MAAMA,EAC3B,WAAAC,CAAYC,GAEIC,EAAAC,KAAM,YAAa,MAEnBD,EAAAC,KAAM,eAAgB,GAEtBD,EAAAC,KAAM,iBAAkB,MACtCb,EAAca,KAAM,OACpBb,EAAca,KAAM,WACfA,KAAAC,IAAMH,EAAQI,QAAQC,MAAMC,UACjCJ,KAAKF,QAAUA,CAAA,CASjB,aAAMO,GACA,IAAAC,EAEA,OADJN,KAAKO,oBACDP,KAAKQ,cAAgBR,KAAKS,QACE,OAA7BH,EAAKN,KAAKF,QAAQY,SAA2BJ,EAAGK,KAAK,qEAC/CC,QAAQC,OAAO,IAAIC,MAAM,yCAE3B,IAAIF,SAAQ,CAACG,EAASF,KAC3Bb,KAAKI,UAAY,IAAIY,UAAUhB,KAAKiB,mBACpCjB,KAAKI,UAAUc,iBAAiB,QAASC,IACvCnB,KAAKoB,aAAe,EACpBpB,KAAKqB,OAAOF,GACJJ,GAAA,IAEVf,KAAKI,UAAUc,iBAAiB,WAAWI,MAAOH,IAC5C,IAAAI,EACA,IACF,MAAMC,EAAOC,KAAKC,MAAMP,EAAMQ,MAC9B,GAAI,UAAWH,GAAuB,cAAfA,EAAKL,MAG1B,OAFAnB,KAAK4B,MAAMjC,cACLK,KAAK6B,gBAAkC,IAAlBL,EAAKM,aAGlC9B,KAAK+B,kBAAkBP,SAChBQ,GACwB,OAA9BT,EAAMvB,KAAKF,QAAQY,SAA2Ba,EAAIS,MAAM,+BAAgCA,EAAK,KAGlGhC,KAAKI,UAAUc,iBAAiB,SAAUC,IACpC,GAAAA,EAAMc,OAAStC,EAA2B,CACtC,MAAAuC,EAAoBtC,EAAeuC,gBAAgBhB,GACrDe,EAAkBE,kBACfpC,KAAA6B,gBAAsD,IAAtCK,EAAkBE,mBAEvCpC,KAAK6B,iBACP,CAEF7B,KAAKqC,QAAQlB,EAAK,IAEpBnB,KAAKI,UAAUc,iBAAiB,SAAUC,IACxCnB,KAAK6B,kBACL7B,KAAKsC,QAAQnB,GACbN,EAAOM,EAAK,GACb,GACF,CAUH,KAAAS,CAAMK,EAAOtC,IAA2B4C,GACf,OAAnBvC,KAAKI,YAGJJ,KAAAI,UAAUwB,MAAMK,EAAMM,GAC3BvC,KAAKI,UAAY,KAAA,CAOnB,IAAAoC,CAAKC,GACC,IAAAnC,EACJ,GAAuB,OAAnBN,KAAKI,WAAsBJ,KAAKQ,aAElC,YAD8B,OAA7BF,EAAKN,KAAKF,QAAQY,SAA2BJ,EAAGK,KAAK,oEAGlD,MAAAa,EAAOC,KAAKiB,UAAUD,GACvBzC,KAAAI,UAAUoC,KAAKhB,EAAI,CAE1B,UAAImB,GACF,OAAO3C,KAAKF,QAAQ6C,MAAA,CAEtB,UAAIjC,GACF,OAAOV,KAAKF,QAAQY,MAAA,CAKtB,gBAAIF,GACF,OAA0B,OAAnBR,KAAKI,WAAsBJ,KAAKI,UAAUwC,aAAe5B,UAAU6B,UAAA,CAK5E,UAAIpC,GACF,OAA0B,OAAnBT,KAAKI,WAAsBJ,KAAKI,UAAUwC,aAAe5B,UAAU8B,IAAA,CAQ5E,eAAA7B,GACQ,MAAA8B,EAAc/C,KAAKF,QAAQiD,YAC3BC,EAAehD,KAAKF,QAAQkD,aAC5BL,EAAS3C,KAAK2C,OACb,MAAA,GAAG3C,KAAKC,YAAY8C,SAAmBC,oBAA2CL,GAAM,CAoBjG,sBAAOR,CAAgBc,GACrB,GAA0B,OAAtBA,EAAWV,QAAyC,KAAtBU,EAAWV,OACpC,OAAAU,EAEL,IACF,MAAMC,EAAazB,KAAKC,MAAMuB,EAAWV,QACzC,IAAKW,EAAWtD,EAAeuD,iBACtB,OAAAF,EAET,MAAMb,EAAoBgB,SAASF,EAAWtD,EAAeuD,kBAC7D,OAAIE,OAAOC,MAAMlB,IAAsBA,EAAoB,EAClDa,EAEF,IACFA,EACHb,2BAEKJ,GACA,OAAAiB,CAAA,CACT,CAKF,sBAAAM,GACE,MAAMC,EAA0B5D,EAAe6D,4BAA4BzD,KAAKoB,cAC1EsC,EAAaF,EAA0BA,EAA0B5D,EAAe+D,sBAChFC,EAAaJ,EAA0BA,EAA0B5D,EAAe+D,sBACtF,OAAOE,KAAKC,MAAMD,KAAKE,UAAYH,EAAaF,GAAcA,EAAU,CAU1E,qBAAM7B,CAAgBmC,GACpB,IAAI1D,EAAI2D,EAAIC,EACR,GAAwB,OAAxBlE,KAAKmE,eAEP,YADsB,OAArB7D,EAAKN,KAAKU,SAA2BJ,EAAG8D,MAAM,0EAG7C,GAAApE,KAAKoB,cAAgBxB,EAAeyE,mBAEtC,YADsB,OAArBJ,EAAKjE,KAAKU,SAA2BuD,EAAGjC,MAAM,uBAAuBpC,EAAeyE,iCAGjF,MAAAC,EAAsBN,GAAgChE,KAAKuD,yBAC5DvD,KAAAmE,eAAiBI,OAAOC,YAAWlD,UAClC,UACItB,KAAKK,gBACJ2B,GAAO,IAEfsC,GACmB,OAArBJ,EAAKlE,KAAKU,SAA2BwD,EAAGE,MAAM,0BAA0BP,KAAKC,MAAMQ,EAAsB,wBAAwBtE,KAAKoB,aAAe,QAAQxB,EAAeyE,uBACxKrE,KAAAoB,cAAA,CAKP,iBAAAb,GAC8B,OAAxBP,KAAKmE,iBACAI,OAAAE,aAAazE,KAAKmE,gBACzBnE,KAAKmE,eAAiB,KACxB,GAUUpE,EAAAH,EAAgB,wBAAyB,IAIzCG,EAAAH,EAAgB,qBAAsB,GAOpDT,EAAcS,EAAgB,8BAA+B,CAC3D,IAEA,IAEA,KAEA,KAEA,OAgBYG,EAAAH,EAAgB,kBAAmB,eACjD,IAAI8E,EAAgB9E,EAChB,IAAA+E,GAAiCC,IACnCA,EAAyB,UAAI,YAC7BA,EAA2B,YAAI,cAC/BA,EAAoB,KAAI,OACxBA,EAAoB,KAAI,OACjBA,IACND,GAAgB,CAAA,GACfE,GAAiCC,IACnCA,EAAmB,IAAI,MACvBA,EAAoB,KAAI,OACxBA,EAAoB,KAAI,OACjBA,IACND,GAAgB,CAAA,GACfE,GAAiCC,IACnCA,EAA0B,WAAI,UAC9BA,EAAuB,QAAI,UAC3BA,EAA0B,WAAI,cAC9BA,EAA2B,YAAI,eAC/BA,EAAuB,QAAI,UAC3BA,EAA2B,YAAI,gBAC/BA,EAAsB,OAAI,SAC1BA,EAAoB,KAAI,OACxBA,EAAyB,UAAI,YAC7BA,EAAwB,SAAI,WAC5BA,EAAsB,OAAI,SACnBA,IACND,GAAgB,CAAA,GACb,MAAAE,EAAqBC,IAAU,CACnCC,QAAS,CACPC,MAAe,MAARF,OAAe,EAASA,EAAKC,QAAQC,OAAS,0BACrDC,SAAkB,MAARH,OAAe,EAASA,EAAKC,QAAQE,UAAY,oCAE7DlF,MAAO,CACLkF,SAAkB,MAARH,OAAe,EAASA,EAAK/E,MAAMkF,UAAY,8BACzDjF,WAAoB,MAAR8E,OAAe,EAASA,EAAK/E,MAAMC,YAAc,+BAGjE,MAAMkF,EACJ,WAAAzF,CAAY0F,GACIxF,EAAAC,KAAM,SAAU,aAC9BA,KAAKuF,SAAWA,CAAA,CAElB,IAAAC,CAAK/C,KAAYgD,GACXzF,KAAKuF,UACCG,QAAAF,KAAK,GAAGxF,KAAK2F,UAAUlD,OAAcgD,EAC/C,CAEF,GAAAG,CAAInD,KAAYgD,GACVzF,KAAKuF,UACCG,QAAAE,IAAI,GAAG5F,KAAK2F,UAAUlD,OAAcgD,EAC9C,CAEF,KAAAzD,CAAMS,KAAYgD,GACZzF,KAAKuF,UACCG,QAAA1D,MAAM,GAAGhC,KAAK2F,UAAUlD,OAAcgD,EAChD,CAEF,KAAArB,CAAM3B,KAAYgD,GACZzF,KAAKuF,UACCG,QAAAtB,MAAM,GAAGpE,KAAK2F,UAAUlD,OAAcgD,EAChD,CAEF,IAAA9E,CAAK8B,KAAYgD,GACXzF,KAAKuF,UACCG,QAAA/E,KAAK,GAAGX,KAAK2F,UAAUlD,OAAcgD,EAC/C,EAGE,MAAAI,EAAQ,MAAMA,EAUlB,aAAOC,CAAOC,EAAO,IACnB,IAAIC,EAAK,GACLC,EAAQC,OAAOC,gBAAgB,IAAIC,WAAWL,GAAQ,IAC1D,KAAOA,KACLC,GAAMH,EAAMQ,SAAuB,GAAdJ,EAAMF,IAEtB,OAAAC,CAAA,GAGGjG,EAAA8F,EAAO,WAAY,oEACjC,IAAIS,EAAOT,EACX,MAAMU,UAA4BzF,MAChC,WAAAjB,CAAYoC,EAAMQ,EAAS+D,GACzBC,MAAMhE,GACNzC,KAAKiC,KAAOA,EACZjC,KAAKwG,KAAOA,EACZxG,KAAK0G,KAAO,qBAAA,EAGhB,SAASC,EAAWjG,EAAQkG,EAAKJ,EAAM7E,GACrCjB,EAAOkF,IAAI,oBACIY,cAAiBI,WAC3BjF,EAAK1B,QACV0B,EAAKkF,OAAS,WAAWlF,EAAKkF,SAAW,OACzClF,EAAKmF,MAAQ,UAAUnF,EAAKmF,QAAU,OACtCnF,EAAKoF,UAAY,cAActF,KAAKiB,UAAUf,EAAKoF,UAAW,KAAM,KAAO,gBAClEtF,KAAKiB,UAAUf,EAAKqF,QAAS,KAAM,aACtCrF,EAAKsF,KAAOxF,KAAKiB,UAAUf,EAAKsF,KAAM,KAAM,GAAK,cAEzD,CACA,SAASC,EAAYxG,EAAQkG,EAAKJ,EAAM7E,GACtCjB,EAAOkF,IAAI,oBACIY,eAAkBI,mBACpBjF,EAAKwF,0BACH1F,KAAKiB,UAAUf,EAAKyF,SAAU,KAAM,SAErD,CACA9F,eAAe+F,EAAKC,GAClB,MAAMC,EAAaD,EAAMC,YAAc,CAAC,KAClCX,EAAMU,EAAMxH,QAAQyF,SAAWe,EAAKR,cAAW,EAC/C0B,EAAU,IAAIC,QAAQH,EAAMrH,IAAK,CACrC4G,OAAQS,EAAMT,OACdG,QAAS,CACP,eAAgB,sBACbM,EAAMN,SAEXC,KAAMK,EAAML,KAAOxF,KAAKiB,UAAU4E,EAAML,WAAQ,IAE9CL,GACFD,EAAWW,EAAMxH,QAAQY,OAAQkG,EAAK,OAAQ,CAC5C3G,IAAKuH,EAAQvH,IACb4G,OAAQW,EAAQX,OAChBG,QAAS/H,OAAOyI,YAAYF,EAAQR,QAAQW,WAC5CV,KAAMK,EAAML,OAGV,MAAAG,QAAiBQ,MAAMJ,GACzB,GAAoB,MAApBJ,EAASD,OACX,OAEE,IAAAxF,EACA,IACKA,QAAMyF,EAAS5F,aACfQ,GACH,GAAoB,MAApBoF,EAASD,OACX,OAEF,MAAM,IAAIZ,EACRa,EAASD,OACT,mCACA,cACF,CAQF,GANIP,GACFM,EAAYI,EAAMxH,QAAQY,OAAQkG,EAAK,OAAQ,CAC7CO,OAAQC,EAASD,OACjBC,SAAUzF,KAGT4F,EAAWM,SAAST,EAASD,QAChC,MAAM,IAAIZ,EACRa,EAASD,QACA,MAARxF,OAAe,EAASA,EAAKc,UAAY,gBAClC,MAARd,OAAe,EAASA,EAAK6E,MAG1B,OAAA7E,CACT,CACAL,eAAe+D,EAAQiC,GACrB,MAAMV,EAAMU,EAAMxH,QAAQyF,SAAWe,EAAKR,cAAW,EACjDc,GACFD,EAAWW,EAAMxH,QAAQY,OAAQkG,EAAK,UAAW,CAC/C3G,IAAKqH,EAAMrH,IACX+G,QAASM,EAAMN,QACfF,MAAOQ,EAAMR,MACbC,UAAWO,EAAMP,YAGrB,MAAMK,QAAiBQ,MAAMN,EAAMrH,IAAK,CACtC4G,OAAQ,OACRG,QAAS,CACP,eAAgB,sBACbM,EAAMN,SAEXC,KAAMxF,KAAKiB,UAAU,CACnBoE,MAAOQ,EAAMR,MACbC,UAAWO,EAAMP,cAGjB,IAAApF,EACA,IACKA,QAAMyF,EAAS5F,aACfQ,GACP,MAAM,IAAIuE,EACRa,EAASD,OACT,mCACA,cACF,CAQE,GANAP,GACFM,EAAYI,EAAMxH,QAAQY,OAAQkG,EAAK,UAAW,CAChDO,OAAQC,EAASD,OACjBC,SAAUzF,KAGTyF,EAASU,GACZ,MAAM,IAAIvB,EACRa,EAASD,QACA,MAARxF,OAAe,EAASA,EAAKc,UAAY,gBAClC,MAARd,OAAe,EAASA,EAAK6E,MAG1B,OAAA7E,CACT,CACA,MAAMoG,EACJ,WAAAlI,CAAYC,GACVE,KAAKF,QAAUA,CAAA,EAGnB,MAAMkI,UAAoBD,EAMxB,cAAME,CAASX,GACb,MAAMR,EAAQ,qDAEQQ,EAAMY,4RA2B5B,aAZmB7C,EAAQ,CACzBvF,QAASE,KAAKF,QACdG,IAAKD,KAAKF,QAAQI,QAAQiF,QAAQE,QAClC2B,QAAS,CACP,oBAAqBhH,KAAKF,QAAQ6C,OAClC,uBAAwB,QAExBwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAE1C+D,QACAC,UAAW,CAAEmB,QAASZ,EAAMY,YAElBvG,KAAKyG,KAAA,EAGf,MAAAC,EAAsB,MAAMA,UAA4B3D,EAC5D,WAAA7E,CAAYC,GACV2G,MAAM3G,GAOQC,EAAAC,KAAM,iBAAkB,MAKxBD,EAAAC,KAAM,wBAAyB,GAAE,CAEjD,MAAAqB,CAAOiH,GAEL,OADAtI,KAAKuI,sBACE3H,QAAQG,SAAQ,CAEzB,iBAAAgB,CAAkBJ,GAChB,GAAI,WAAYA,GAAQA,EAAK6G,SAAW3D,EAAa4D,KAAM,CACzD,MAAMC,EAAW/G,EACjB3B,KAAK2I,SAASD,EAAQ,CAExB,GAAI,UAAW/G,EACF,IAAA,MAAAiH,KAAY5I,KAAK6I,sBAC1BD,EAASjH,GAIb,OADA3B,KAAKuI,sBACE3H,QAAQG,SAAQ,CAEzB,OAAAsB,CAAQiG,GACN,OAAO1H,QAAQG,SAAQ,CAEzB,OAAAuB,CAAQgG,GACN,OAAO1H,QAAQG,SAAQ,CAOzB,aAAA+H,GACE,MAAMJ,EAAW,CACfK,IAAKzC,EAAKR,SACV0C,OAAQ7D,EAAaqE,UACrBrH,KAAM,CACJsH,QAASjJ,KAAK2C,OACdxB,MAAO,MAGXnB,KAAKwC,KAAKkG,EAAQ,CAOpB,eAAAQ,GACE,MAAMR,EAAW,CACfK,IAAKzC,EAAKR,SACV0C,OAAQ7D,EAAawE,YACrBxH,KAAM,CACJsH,QAASjJ,KAAK2C,SAGlB3C,KAAKwC,KAAKkG,EAAQ,CAQpB,uBAAAU,CAAwBR,GACjB5I,KAAA6I,sBAAsBQ,KAAKT,EAAQ,CAQ1C,QAAAU,GACE,MAAMZ,EAAW,CACfK,IAAKzC,EAAKR,SACV0C,OAAQ7D,EAAa8D,MAEvBzI,KAAKwC,KAAKkG,EAAQ,CAQpB,QAAAC,CAASY,GACP,MAAMnC,EAAW,CACf2B,IAAKQ,EAAgBR,IACrBP,OAAQ7D,EAAa6E,MAEvBxJ,KAAKwC,KAAK4E,EAAQ,CAKpB,mBAAAmB,GACMvI,KAAKyJ,gBACAlF,OAAAmF,cAAc1J,KAAKyJ,gBAEvBzJ,KAAAyJ,eAAiBlF,OAAOoF,aAAY,KACvC3J,KAAKsJ,UAAS,GACbjB,EAAoBuB,qBAAoB,GAOjC7J,EAAAsI,EAAqB,uBAAwB,KAC3D,IAAIwB,EAAqBxB,EACzB,MAAMyB,UAAoB/B,EACxB,WAAAlI,CAAYC,GACV2G,MAAM3G,GACNX,EAAca,KAAM,UACfA,KAAA+J,OAAS,IAAIF,EAAmB/J,EAAO,CAQ9C,iBAAMkK,CAAY1C,GAChB,MAAMR,EAAQ,2EAEuB9G,KAAKF,QAAQmK,SAAW,eAAejK,KAAKF,QAAQmK,YAAc,gCACzE,MAAT3C,OAAgB,EAASA,EAAM4C,kBAAoB,+BACzC,MAAT5C,OAAgB,EAASA,EAAM6C,aAAe,MAAM7C,EAAM6C,eAAiB,0nBA+BjG,aAAa9E,EAAQ,CACnBvF,QAASE,KAAKF,QACdgH,QACAE,QAAS,CACP,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAE1C9C,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,CAQH,yBAAM+E,CAAoB9C,GACxB,MAAMR,EAAQ,2EAEuB9G,KAAKF,QAAQmK,SAAW,eAAejK,KAAKF,QAAQmK,YAAc,gDACzE,MAAT3C,OAAgB,EAASA,EAAM4C,kBAAoB,+BACzC,MAAT5C,OAAgB,EAASA,EAAM6C,aAAe,MAAM7C,EAAM6C,eAAiB,0nBA+BjG,OAAO9E,EAAQ,CACbvF,QAASE,KAAKF,QACdgH,QACAE,QAAS,CACP,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAE1C9C,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,CAMH,2BAAMgF,GACA,IAAA/J,EACJ,MAAMwG,EAAQ,yEAEyB9G,KAAKF,QAAQmK,SAAW,iBAAiBjK,KAAKF,QAAQmK,YAAc,uBAY3G,OAAgC,OAAvB3J,SATc+E,EAAQ,CAC7BvF,QAASE,KAAKF,QACdgH,QACAE,QAAS,CACP,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAE1C9C,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,WAEX1D,WAAgB,EAASrB,EAAGgK,QAAU,CAAA,CAQ/D,WAAMC,CAAMjD,GACV,MAAMR,EAAQ,8DAEYQ,EAAMkD,4BAA4BlD,EAAMmD,8BAG5DzD,EAAU,CACd,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAEtC/C,KAAKF,QAAQkD,eACPgE,EAAA,8BAAgChH,KAAKF,QAAQkD,oBAEjDqC,EAAQ,CACZvF,QAASE,KAAKF,QACdgH,QACAE,UACA/G,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,CAOH,UAAMqF,CAAKpD,GACT,MAAMR,EAAQ,2DAESQ,EAAMkD,6BAGvBxD,EAAU,CACd,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAEtC/C,KAAKF,QAAQkD,eACPgE,EAAA,8BAAgChH,KAAKF,QAAQkD,oBAEjDqC,EAAQ,CACZvF,QAASE,KAAKF,QACdgH,QACAE,UACA/G,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,CAOH,YAAMsF,CAAOrD,GACX,MAAMR,EAAQ,6DAEWQ,EAAMkD,6BAGzBxD,EAAU,CACd,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAEtC/C,KAAKF,QAAQkD,eACPgE,EAAA,8BAAgChH,KAAKF,QAAQkD,oBAEjDqC,EAAQ,CACZvF,QAASE,KAAKF,QACdgH,QACAE,UACA/G,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,CAMH,aAAMuF,GACJ,MAKM5D,EAAU,CACd,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAEtC/C,KAAKF,QAAQkD,eACPgE,EAAA,8BAAgChH,KAAKF,QAAQkD,oBAEjDqC,EAAQ,CACZvF,QAASE,KAAKF,QACdgH,MAdY,oEAeZE,UACA/G,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,CAOH,UAAMwF,CAAKvD,GACT,MAAMR,EAAQ,6DAEWQ,EAAMkD,6BAGzBxD,EAAU,CACd,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAEtC/C,KAAKF,QAAQkD,eACPgE,EAAA,8BAAgChH,KAAKF,QAAQkD,oBAEjDqC,EAAQ,CACZvF,QAASE,KAAKF,QACdgH,QACAE,UACA/G,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,CAOH,aAAMyF,CAAQxD,GACZ,MAAMR,EAAQ,8DAEYQ,EAAMkD,6BAG1BxD,EAAU,CACd,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAEtC/C,KAAKF,QAAQkD,eACPgE,EAAA,8BAAgChH,KAAKF,QAAQkD,oBAEjDqC,EAAQ,CACZvF,QAASE,KAAKF,QACdgH,QACAE,UACA/G,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,CAOH,eAAM0F,CAAUzD,GACd,MAAMR,EAAQ,gEAEcQ,EAAMkD,6BAG5BxD,EAAU,CACd,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAEtC/C,KAAKF,QAAQkD,eACPgE,EAAA,8BAAgChH,KAAKF,QAAQkD,oBAEjDqC,EAAQ,CACZvF,QAASE,KAAKF,QACdgH,QACAE,UACA/G,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,CAKH,iBAAM2F,GACJ,MAKMhE,EAAU,CACd,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAEtC/C,KAAKF,QAAQkD,eACPgE,EAAA,8BAAgChH,KAAKF,QAAQkD,oBAEjDqC,EAAQ,CACZvF,QAASE,KAAKF,QACdgH,MAdY,oEAeZE,UACA/G,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,CAKH,gBAAM4F,GACJ,MAKMjE,EAAU,CACd,oBAAqBhH,KAAKF,QAAQ6C,OAClCwF,cAAiB,UAAUnI,KAAKF,QAAQiD,eAEtC/C,KAAKF,QAAQkD,eACPgE,EAAA,8BAAgChH,KAAKF,QAAQkD,oBAEjDqC,EAAQ,CACZvF,QAASE,KAAKF,QACdgH,MAdY,mEAeZE,UACA/G,IAAKD,KAAKF,QAAQI,QAAQC,MAAMkF,SACjC,EAGL,MAAM6F,EAMJ,aAAAC,CAAcC,GACL,MAAA,CACLC,QAASD,EAAKE,SACdC,UAAWH,EAAKI,WAChBC,UAAWL,EAAKM,WAChBC,YAAaP,EAAKQ,aAClBzE,OAAQiE,EAAKjE,OACb0E,cAAeT,EAAKU,eACpBC,iBAAkBX,EAAKY,mBACvBC,cAAeb,EAAKc,gBAAkB,GACxC,CAOF,UAACC,CAAUC,GACT,IAAA,MAAWhB,KAAQgB,QACXpM,KAAKmL,cAAcC,EAC3B,EAkBJ,MAAMiB,UAAyBtE,EAC7B,WAAAlI,GACE4G,SAAS6F,WACTnN,EAAca,KAAM,cAAe,IAAIkL,EAAuB,CAQhE,wBAAMqB,CAAmBjF,GACnB,IAAArH,EAAM,GAAGD,KAAKF,QAAQI,QAAQiF,QAAQC,cAAcpF,KAAKF,QAAQ6C,sBACxD,MAAT2E,OAAgB,EAASA,EAAMkF,oBAC1BvM,GAAA,WAAWqH,EAAMkF,oBAEpB,MAQA7K,QARa0F,EAAK,CACtBvH,QAASE,KAAKF,QACdG,MACA4G,OAAQ,MACRG,QAAS,CACPmB,cAAiB,UAAUnI,KAAKF,QAAQiD,iBAIrC,MAAA,CACLqJ,MAAO,IAAIpM,KAAKyM,YAAYN,UAAUxK,EAAKyK,QAC3CM,OAAQ/K,EAAK+K,OACf,CAQF,4BAAMC,CAAuBrF,GACrB,MAQAsF,QARavF,EAAK,CACtBvH,QAASE,KAAKF,QACdG,IAAK,GAAGD,KAAKF,QAAQI,QAAQiF,QAAQC,cAAcpF,KAAKF,QAAQ6C,sBAAsB2E,EAAM+D,UAC5FxE,OAAQ,MACRG,QAAS,CACPmB,cAAiB,UAAUnI,KAAKF,QAAQiD,iBAI5C,OAAO/C,KAAKyM,YAAYtB,cAAcyB,EAAIC,MAAK,CAWjD,4BAAMC,CAAuBxF,GAC3B,MAAMyF,EAAU,CACdF,MAAO,CACL1F,OAAQG,EAAMH,OACd6E,mBAAoB1E,EAAMyE,iBAC1BG,eAAgB5E,EAAM2E,sBAGpB5E,EAAK,CACTvH,QAASE,KAAKF,QACdG,IAAK,GAAGD,KAAKF,QAAQI,QAAQiF,QAAQC,cAAcpF,KAAKF,QAAQ6C,sBAAsB2E,EAAM+D,UAC5FxE,OAAQ,MACRG,QAAS,CACPmB,cAAiB,UAAUnI,KAAKF,QAAQiD,eAE1CkE,KAAM8F,GACP,CAOH,wBAAAC,CAAyB1F,GAGvB,MAAO,yCA1FX,SAAgBjI,GACd,MAAM4G,EAAQ,IAAIG,WAAW/G,EAAI4N,QACjC,IAAA,IAASC,EAAI,EAAGA,EAAI7N,EAAI4N,OAAQC,IAC9BjH,EAAMiH,GAAK7N,EAAI8N,WAAWD,GAE5B,OAAOE,KAAKC,OAAOC,gBAAgBrH,GACrC,CAmFgBsH,CAAO,GAjGvB,SAAgBC,GACR,MAAAC,EAAeC,KAAKF,GACpBvH,EAAQ,IAAIG,WAAWqH,EAAaR,QAC1C,IAAA,IAASC,EAAI,EAAGA,EAAIO,EAAaR,OAAQC,IACvCjH,EAAMiH,GAAKO,EAAaN,WAAWD,GAE9B,OAAAG,OAAOC,gBAAgBrH,EAChC,CAyFyB0H,CAAOrG,EAAMkG,cACIxN,KAAKF,QAAQ6C,SAAS3C,KAAKF,QAAQmK,SAAW,IAAIjK,KAAKF,QAAQmK,WAAa,aAC/D,EAGvD,MAAM2D,UAAoB7F,EAQxB,kBAAM8F,CAAavG,GACjB,MAAMyF,EAAU,CACde,aAAcxG,EAAMyG,YACjBzG,EAAM0G,QAAU,CACjBA,OAAQ,CACNC,OAAQ3G,EAAM0G,OAAOE,MACrBC,MAAO7G,EAAM0G,OAAOI,KACpBC,UAAW/G,EAAM0G,OAAOM,SACxBC,SAAUjH,EAAM0G,OAAOO,SACvBC,aAAclH,EAAM0G,OAAOQ,aAC3BC,MAAOnH,EAAM0G,OAAOS,eAIpBpH,EAAK,CACTvH,QAASE,KAAKF,QACdG,IAAK,GAAGD,KAAKF,QAAQI,QAAQiF,QAAQC,cAAcpF,KAAKF,QAAQ6C,iBAAiB2E,EAAMoH,QACvF7H,OAAQ,MACRG,QAAS,CACPmB,cAAiB,UAAUnI,KAAKF,QAAQiD,eAE1CkE,KAAM8F,EACNxF,WAAY,CAAC,IAAK,MACnB,CAOH,qBAAMoH,CAAgBrH,SACdD,EAAK,CACTvH,QAASE,KAAKF,QACdG,IAAK,GAAGD,KAAKF,QAAQI,QAAQiF,QAAQC,cAAcpF,KAAKF,QAAQ6C,iBAAiB2E,EAAMoH,QACvF7H,OAAQ,SACRG,QAAS,CACPmB,cAAiB,UAAUnI,KAAKF,QAAQiD,eAE1CwE,WAAY,CAAC,IAAK,MACnB,EAGL,MAAMqH,UAAmB7G,EAOvB,qBAAM8G,CAAgBvH,GACpB,aAAaD,EAAK,CAChBpH,IAAK,GAAGD,KAAKF,QAAQI,QAAQiF,QAAQC,cAAckC,EAAMwH,wBAAwB9O,KAAKF,QAAQ6C,SAC9F7C,QAASE,KAAKF,QACd+G,OAAQ,MACRG,QAAS,CACPmB,cAAe,UAAUnI,KAAKF,QAAQiD,gBAEzC,CAQH,wBAAMgM,CAAmBzH,GACvB,aAAaD,EAAK,CAChBpH,IAAK,GAAGD,KAAKF,QAAQI,QAAQiF,QAAQC,cAAckC,EAAMwH,wBAAwB9O,KAAKF,QAAQ6C,SAC9F7C,QAASE,KAAKF,QACd+G,OAAQ,SACRG,QAAS,CACPmB,cAAe,UAAUnI,KAAKF,QAAQiD,gBAEzC,EAGL,MAAMiM,UAAuBjH,EAU3B,wBAAMkH,CAAmB3H,GACvB,aAAaD,EAAK,CAChBpH,IAAK,GAAGD,KAAKF,QAAQI,QAAQiF,QAAQC,uBACrCtF,QAASE,KAAKF,QACd+G,OAAQ,OACRG,QAAS,CACPmB,cAAe,UAAUnI,KAAKF,QAAQiD,eAExCkE,KAAM,IACDK,EACH3E,OAAQ3C,KAAKF,QAAQ6C,QAEvB4E,WAAY,CAAC,IAAK,MACnB,CASH,qBAAM2H,CAAgB5H,GACpB,aAAaD,EAAK,CAChBpH,IAAKqH,EAAMrH,IACXH,QAASE,KAAKF,QACd+G,OAAQ,OACRI,KAAM,CACJ9F,MAAOmG,EAAMnG,QAEhB,EAGL,MAAMgO,UAAsBpH,EAC1B,WAAAlI,CAAYyH,GACV,IAAIhH,EAAI2D,EACR,MAAMsB,OAA8B,IAAnB+B,EAAM/B,UAAsB+B,EAAM/B,SAC7C6J,EAAc,IACf9H,EACH/B,WACArF,QAASoH,EAAMpH,SAAW+E,IAC1BlC,YAAauE,EAAM+H,KAAO/H,EAAMgI,cAE5B7I,MAAA,IACD2I,EACH1O,OAAQ,IAAI4E,EAAO8J,EAAY7J,UAC/BrF,QAAS+E,EAAkBmK,EAAYlP,WAEzCf,EAAca,KAAM,UACpBb,EAAca,KAAM,UACpBb,EAAca,KAAM,eACpBb,EAAca,KAAM,SACpBb,EAAca,KAAM,SACpBb,EAAca,KAAM,YACpBA,KAAKuP,OAAS,IAAI3B,EAAY5N,KAAKF,SACnCE,KAAKwP,OAAS,IAAIxH,EAAYhI,KAAKF,SACnCE,KAAKyP,YAAc,IAAIpD,EAAiBrM,KAAKF,SAC7CE,KAAKG,MAAQ,IAAI2J,EAAY9J,KAAKF,SAClCE,KAAK0P,MAAQ,IAAId,EAAW5O,KAAKF,SACjCE,KAAK2P,SAAW,IAAIX,EAAehP,KAAKF,SACnCE,KAAKF,QAAQuP,KAAQrP,KAAKF,QAAQwP,cAChCtP,KAAAF,QAAQY,OAAO8E,KAAK,qGAEvBxF,KAAKF,QAAQwP,eACe,OAA7BhP,EAAKN,KAAKF,QAAQY,SAA2BJ,EAAGkF,KAC/C,sQAGAxF,KAAKF,QAAQuP,KAAOrP,KAAKF,QAAQwP,eACL,OAA7BrL,EAAKjE,KAAKF,QAAQY,SAA2BuD,EAAGuB,KAC/C,uGAEJ,EAGJ,MAAMoK,EACJ,WAAA/P,CAAYgQ,GACV1Q,EAAca,KAAM,YACpBA,KAAK6P,SAAWA,CAAA,CAElB,MAAAC,GACUC,EAAAC,OAAOC,6BAA6BjQ,KAAI,EAG9C,MAAAkQ,EAAW,MAAMA,EACrB,WAAArQ,GAIEV,EAAca,KAAM,KAAMsG,EAAKR,UAI/B3G,EAAca,KAAM,kBAIND,EAAAC,KAAM,mBAAoB,IAI1BD,EAAAC,KAAM,0BAA2B,GAAE,CAEnD,mBAAIkK,GACF,OAAOlK,KAAKmQ,gBAAA,CAEd,mBAAIjG,CAAgB5K,GACbU,KAAAmQ,iBAAmBtM,KAAKuM,IAAIvM,KAAKwM,IAAI/Q,EAAO,GAAI,IAAG,CAM1D,UAAIgR,GACF,OAAOtQ,KAAKuQ,cAAA,CAMd,iBAAWP,GAIT,OAHKE,EAASM,WACHC,EAAAD,SAAW,IAAIN,GAEnBA,EAASM,QAAA,CAMlB,MAAAE,CAAOpJ,GACL,MAAMtE,EAAesE,EAAMtE,cAAgBsD,EAAKR,SAChD9F,KAAKuQ,eAAiB,IAAIpB,EAAc,IAAK7H,EAAOtE,iBACpDhD,KAAK2Q,8BAA8B,CAAEhO,OAAQ2E,EAAM3E,QAAQ,CAK7D,OAAAiO,GACE5Q,KAAKuQ,oBAAiB,EACtBvQ,KAAK2Q,8BAA8B,CAAEhO,YAAQ,GAAQ,CAOvD,yBAAAkO,CAA0BhB,GACpB,IAAAvP,EAC0B,OAA7BA,EAAKN,KAAKuQ,iBAAmCjQ,EAAGR,QAAQY,OAAOC,KAAK,kCAC/D,MAAAiI,EAAW,IAAIgH,EAAuBC,GAErC,OADF7P,KAAA8Q,wBAAwBzH,KAAKT,GAC3BA,CAAA,CAMT,4BAAAqH,CAA6BrH,GACvB,IAAAtI,EAC0B,OAA7BA,EAAKN,KAAKuQ,iBAAmCjQ,EAAGR,QAAQY,OAAOC,KAAK,oCACrEX,KAAK8Q,wBAA0B9Q,KAAK8Q,wBAAwBC,QAAQC,GAAMA,IAAMpI,GAAQ,CAM1F,6BAAA+H,CAA8BrJ,GAC5BtH,KAAK8Q,wBAAwBG,SAASrI,GAAaA,EAASiH,SAASvI,IAAM,GAM/EnI,EAAc+Q,EAAU,YACxB,IAAIH,EAAUG,ECj3Cd,IAAIlR,EAAYC,OAAOC,eAEnBC,EAAgB,CAACC,EAAKC,EAAKC,IADT,EAACF,EAAKC,EAAKC,IAAUD,KAAOD,EAAMJ,EAAUI,EAAKC,EAAK,CAAEE,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMH,UAAWF,EAAIC,GAAOC,EACjHI,CAAgBN,EAAoB,iBAARC,EAAmBA,EAAM,GAAKA,EAAKC,GAEpG4R,EAAajS,OAAOC,eAEpBiS,EAAiB,CAAC/R,EAAKC,EAAKC,IADT,EAACF,EAAKC,EAAKC,IAAUD,KAAOD,EAAM8R,EAAW9R,EAAKC,EAAK,CAAEE,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMH,UAAWF,EAAIC,GAAOC,EAClH8R,CAAiBhS,EAAoB,iBAARC,EAAmBA,EAAM,GAAKA,EAAKC,GAC1G,MAAM+R,EACG,CACL,IAAK,UACL,MAAO,YACP,MAAO,aAJLA,EAME,CACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WAVHA,EAYG,CACL,IAAK,UACL,MAAO,YACP,MAAO,aAfLA,EAiBE,CACJ,IAAK,UACL,IAAK,WAGHC,EAAQ,CACZC,MAAO,CACLC,OAAQ,CACNC,QAASJ,EAAoB,KAC7BK,UAAWL,EAAoB,KAC/BM,OAAQN,EAAmB,KAC3BO,KAAMP,EAAmB,KACzBQ,KAAMR,EAAoB,MAE5BS,OAAQ,CACNC,aAAc,QAGlBC,KAAM,CACJR,OAAQ,CACNC,QAASJ,EAAoB,KAC7BK,UAAWL,EAAoB,KAC/BM,OAAQN,EAAmB,KAC3BO,KAAMP,EAAmB,KACzBQ,KAAMR,EAAoB,MAE5BS,OAAQ,CACNC,aAAc,SAIdE,EAAqB,IACH,oBAAX1N,OACF,QAEFA,OAAO2N,WAAW,gCAAgCC,QAAU,OAAS,QAExEC,EAA8BvC,IAC9B,GAAkB,oBAAXtL,OACT,MAAO,OAGH,MAAA8N,EAAa9N,OAAO2N,WAAW,gCAC/BI,EAAWC,IACN1C,EAAA0C,EAAEJ,QAAU,OAAS,QAAO,EAGvC,OADWE,EAAAnR,iBAAiB,SAAUoR,GAC/B,KACMD,EAAAG,oBAAoB,SAAUF,EAAO,CACjD,EAEGG,EAAgC,oBAAXlO,OAAyB,MAClD,WAAA1E,GACF,GACI,cAAc6S,YAChB,WAAA7S,GACS4G,OACX,GAEA,MAAMkM,UAAkCF,EACtC,WAAA5S,GACS4G,QACP0K,EAAenR,KAAM,uBACrBmR,EAAenR,KAAM,uBACrBA,KAAK4S,oBAAsBX,IACtBjS,KAAA6S,oBAAsBT,GAA4BU,IACrD9S,KAAK4S,oBAAsBE,EAC3B9S,KAAK+S,oBAAoBD,EAAI,GAEnC,CACE,sBAAIE,GACF,OAAOhT,KAAK4S,mBAChB,CACE,oBAAAK,GACMjT,KAAK6S,qBACP7S,KAAK6S,qBAEX,CACE,mBAAAE,CAAoBzK,GACtB,EAEA,MAAM4K,EAAmB,CACvBC,aAAc,MACdC,SAAU,QAENC,EAQQP,IAAU,IACjBI,EACHI,gBAAiBhC,EAAMwB,GAAMtB,OAAOE,UACpC6B,UAAWjC,EAAMwB,GAAMtB,OAAOC,QAC9B+B,WAAY,MACZ7B,OAAQ,aAAaL,EAAMwB,GAAMtB,OAAOG,SACxC8B,OAAiB,UAATX,EAAmB,sCAAwC,6CAWvE,MAAMY,UAAsBf,EAC1B,WAAA9S,CAAYyH,GACHb,QACP0K,EAAenR,KAAM,WACrBmR,EAAenR,KAAM,UACrB,MAAMyT,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACpC9S,KAAA4T,QAAUC,SAASC,cAAc,UACjC9T,KAAA4T,QAAQG,aAAa,OAAQ,UAC7B/T,KAAAgU,OAASH,SAASC,cAAc,SACrC9T,KAAKgU,OAAOC,YAAcjU,KAAKkU,UAAU5M,GAClCmM,EAAAU,YAAYnU,KAAKgU,QACjBP,EAAAU,YAAYnU,KAAK4T,SACxB5T,KAAKoU,aAAa9M,GAClBtH,KAAK4T,QAAQ1S,iBAAiB,SAAUqR,IACtCA,EAAE8B,iBACF9B,EAAE+B,kBACEhN,EAAMiN,SACRjN,EAAMiN,SACd,GAEA,CACE,SAAAL,CAAU5M,GA6BD,MAAA,6HAOcA,EAAM6L,cAnBC,KACRE,EAAgCrT,KAAKgT,oBACtCG,aAiBwBqB,6BACxBlN,EAAMkM,YAZC,KACNH,EAAgCrT,KAAKgT,oBACtCQ,WAUoBiB,6BACpBnN,EAAMoN,YAAc,kCACtBpN,EAAM8L,UAlBC,KACJC,EAAgCrT,KAAKgT,oBACtCI,SAgBgBuB,qIAKXrN,EAAMgM,iBAvCC,KACXD,EAAgCrT,KAAKgT,oBACtCM,gBAqC8BsB,uBACpCtN,EAAMiM,WA5CM,KACLF,EAAgCrT,KAAKgT,oBACtCO,UA0CasB,wBAClBvN,EAAMqK,QArCE,KACF0B,EAAgCrT,KAAKgT,oBACtCrB,OAmCWmD,4BACZxN,EAAMmM,QAlCF,KACFJ,EAAgCrT,KAAKgT,oBACtCS,OAgCesB,sFAK5BzN,EAAM0N,qBAAuB,qBAAqB1N,EAAM0N,wBAA0B,yEAIlF1N,EAAM2N,sBAAwB,qBAAqB3N,EAAM2N,yBAA2B,oIAQ9F,CACE,YAAAb,CAAa9M,GACPA,EAAM4N,OACHlV,KAAA4T,QAAQK,YAAc3M,EAAM4N,MAEnClV,KAAKgU,OAAOC,YAAcjU,KAAKkU,UAAU5M,EAC7C,EAEA,MAAM6N,EAAkB,CACtBhV,MAAO,21BAGP2K,QAAS,gkBAGTsK,MAAO,8cAGPrE,OAAQ,kkBAGRsE,SAAU,ugCAGV3K,KAAM,+qBAGNM,YAAa,+3BAGbL,OAAQ,qYAGRI,UAAW,itBAIb,MAAMuK,UAAoB7C,EACxB,WAAA5S,CAAY0V,EAAOC,GACV/O,QACP0K,EAAenR,KAAM,UACrBmR,EAAenR,KAAM,QACrBmR,EAAenR,KAAM,kBACrBmR,EAAenR,KAAM,UACrBA,KAAKyV,OAASF,GAASlE,EAAoB,KAC3CrR,KAAK0V,KAAOF,EACZ,MAAM/B,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACpC9S,KAAA2V,eAAiB9B,SAASC,cAAc,OACtCL,EAAAU,YAAYnU,KAAK2V,gBACnB3V,KAAAgU,OAASH,SAASC,cAAc,SACrC9T,KAAKgU,OAAOC,YAAcjU,KAAKkU,UAAUlU,KAAKyV,QACvChC,EAAAU,YAAYnU,KAAKgU,QACxBhU,KAAK4V,SACT,CACE,SAAA1B,CAAUqB,GACD,MAAA,yPAYMA,mBAGjB,CACE,OAAAK,GACM5V,KAAK0V,OACF1V,KAAA2V,eAAeE,UAAY7V,KAAK0V,MAEnC1V,KAAKyV,SACPzV,KAAKgU,OAAOC,YAAcjU,KAAKkU,UAAUlU,KAAKyV,QAEpD,CACE,WAAAK,CAAYP,GACVvV,KAAKyV,OAASF,EACdvV,KAAK4V,SACT,CACE,SAAAG,CAAUP,GACRxV,KAAK0V,KAAOF,EACZxV,KAAK4V,SACT,EAEA,MAAMI,UAAoBvD,EACxB,WAAA5S,GACS4G,QACP0K,EAAenR,KAAM,QACrB,MAAMyT,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACpC9S,KAAA4R,KAAOiC,SAASC,cAAc,KAC9B9T,KAAA4R,KAAKmC,aAAa,OAAQ,QACzB,MAAAkC,EAAQpC,SAASC,cAAc,SACrCmC,EAAMhC,YAAc,4dAiBmB3C,EAAMC,MAAMC,OAAOI,iTAYnBN,EAAMU,KAAKR,OAAOI,wZAqBzD6B,EAAOU,YAAY8B,GACZxC,EAAAU,YAAYnU,KAAK4R,MACxB5R,KAAKkW,gBACLlW,KAAKmW,kBACLnW,KAAKoW,YACT,CACE,iBAAAC,GACQ,MAAAC,EAAOzC,SAASC,cAAc,QAC/B9T,KAAA4R,KAAKuC,YAAYmC,GACtBtW,KAAKuW,YACT,CACE,wBAAAC,CAAyB9P,EAAM+P,EAAUC,GACvC,GAAID,IAAaC,EACjB,OAAQhQ,GACN,IAAK,OACH1G,KAAKuW,aACL,MACF,IAAK,UACL,IAAK,OACHvW,KAAKkW,gBACL,MACF,IAAK,WACHlW,KAAK4R,KAAKqE,MAAMU,cAAgB3W,KAAK4W,aAAa,YAAc,OAAS,OACzE5W,KAAK4R,KAAKqE,MAAMY,QAAU7W,KAAK4W,aAAa,YAAc,MAAQ,IAClE,MACF,IAAK,QACH5W,KAAK8V,cACL,MACF,IAAK,YACH9V,KAAKmW,kBACL,MACF,IAAK,SACHnW,KAAK8W,eACL,MACF,IAAK,cACH9W,KAAK+W,mBACL,MACF,IAAK,YACH/W,KAAKgX,iBAGb,CACE,UAAAT,GACQ,MAAAU,EAAOjX,KAAKkX,aAAa,QAC3BD,IACFjX,KAAK4R,KAAKqF,KAAOA,EAEvB,CACE,aAAAf,GACE,MAAMiB,EAAUnX,KAAKkX,aAAa,YAAc,UAC1CpE,EAAO9S,KAAKkX,aAAa,SAAW,QACrClX,KAAA4R,KAAKmC,aAAa,eAAgBoD,GAClCnX,KAAA4R,KAAKmC,aAAa,YAAajB,EACxC,CACE,WAAAgD,GACQ,MAAAP,EAAQvV,KAAKkX,aAAa,SAC5B3B,EACFvV,KAAK4R,KAAKqE,MAAMmB,YAAY,uBAAwB7B,GAE/CvV,KAAA4R,KAAKqE,MAAMoB,eAAe,uBAErC,CACE,eAAAlB,GACE,MAAMmB,EAA+C,SAAnCtX,KAAKkX,aAAa,aACpClX,KAAK4R,KAAKmC,aAAa,iBAAkBuD,EAAUC,WACvD,CACE,UAAAnB,GACE,MAAMtD,EAAO9S,KAAKkX,aAAa,SAAW,QACrClX,KAAA4R,KAAKmC,aAAa,YAAajB,EACxC,CACE,YAAAgE,GACQ,MAAAU,EAASxX,KAAKkX,aAAa,UAC7BM,IACFxX,KAAK4R,KAAK4F,OAASA,EAEzB,CACE,gBAAAT,GACQ,MAAArC,EAAa1U,KAAKkX,aAAa,eACjCxC,EACF1U,KAAK4R,KAAKqE,MAAMmB,YAAY,6BAA8B1C,GAErD1U,KAAA4R,KAAKqE,MAAMoB,eAAe,6BAErC,CACE,cAAAL,GACQ,MAAA5D,EAAWpT,KAAKkX,aAAa,aAC/B9D,EACFpT,KAAK4R,KAAKqE,MAAMmB,YAAY,2BAA4BhE,GAEnDpT,KAAA4R,KAAKqE,MAAMoB,eAAe,2BAErC,EAEAlG,EAAe6E,EAAa,qBAAsB,CAChD,OACA,UACA,WACA,QACA,YACA,OACA,SACA,cACA,cAEF,MAAMyB,WAAuB9E,EAC3B,WAAA9S,GACS4G,QACP0K,EAAenR,KAAM,UACrBA,KAAKyT,OAASzT,KAAK2T,aAAa,CAAEb,KAAM,QAC5C,CAEE,KAAA4E,CAAMC,GACJ,GAAmB,OAAfA,EAEF,YADA3X,KAAKyT,OAAOmE,kBAGR,MAAAC,EAAUF,GAAc3X,KAAK8X,iBAC9B9X,KAAAyT,OAAOmE,gBAAgBC,EAChC,CAEE,cAAAC,GACQ,MAAAD,EAAUhE,SAASC,cAAc,OAOhC,OANP+D,EAAQ5D,YAAc,0BACtB4D,EAAQ5B,MAAM8B,QAAU,wFAKjBF,CACX,EAEA,MAAMG,WAAyBP,GAC7B,WAAA5X,CAAYyH,GACHb,QACP0K,EAAenR,KAAM,UACrBmR,EAAenR,KAAM,UACrBmR,EAAenR,KAAM,WACrBmR,EAAenR,KAAM,UACNmR,EAAAnR,KAAM,uBAAwB,MAC7CA,KAAKiY,OAAS3Q,CAClB,CACE,cAAAwQ,GACE,IAAIxX,EAAI2D,EACF,MAAAiU,EAAYrE,SAASC,cAAc,OAkBlC,OAjBF9T,KAAAmY,OAAStE,SAASC,cAAc,OACL,OAA3BxT,EAAKN,KAAKiY,OAAOG,YAAiB,EAAS9X,EAAG4U,QACjDlV,KAAKmY,OAAOlE,YAAcjU,KAAKiY,OAAOG,MAAMlD,MAEzClV,KAAA4T,QAAU,IAAIF,EAAc1T,KAAKiY,OAAOnG,QAAUuB,EAAgCrT,KAAKgT,qBACvFhT,KAAAgU,OAASH,SAASC,cAAc,SACrC9T,KAAKgU,OAAOC,YAAcjU,KAAKkU,UAAUlU,KAAKiY,QAC9CC,EAAUG,UAAY,YACZH,EAAA/D,YAAYnU,KAAKgU,QACjBkE,EAAA/D,YAAYnU,KAAKmY,QACjBD,EAAA/D,YAAYnU,KAAK4T,SACtB5T,KAAAyT,OAAOU,YAAY+D,GACD,OAAtBjU,EAAKjE,KAAK4T,UAA4B3P,EAAG/C,iBAAiB,SAAS,KAC9DlB,KAAKsY,sBACPtY,KAAKsY,sBACb,IAEWJ,CACX,CACE,mBAAAnF,CAAoBzK,GACbtI,KAAAuY,aAAavY,KAAKiY,OAC3B,CACE,SAAA/D,CAAU5M,GACJ,IAAAhH,EAAI2D,EAAIC,EAAIsU,EACT,MAAA,gcAqB6B,OAArBlY,EAAKgH,EAAM8Q,YAAiB,EAAS9X,EAAGiT,YAAc,+BAC7B,OAArBtP,EAAKqD,EAAM8Q,YAAiB,EAASnU,EAAGmP,WAAa,kCAC9B,OAArBlP,EAAKoD,EAAM8Q,YAAiB,EAASlU,EAAGsP,aAAe,iCAClC,OAArBgF,EAAKlR,EAAM8Q,YAAiB,EAASI,EAAG9D,aAAe,2BAGhF,CACE,YAAA6D,CAAajR,GACXtH,KAAKiY,OAAS3Q,EACVtH,KAAKgU,SACPhU,KAAKgU,OAAOC,YAAcjU,KAAKkU,UAAU5M,IAEvCtH,KAAK4T,SACF5T,KAAA4T,QAAQQ,aAAa9M,EAAMwK,OAEtC,CACE,sBAAA2G,CAAuB5I,GACrB7P,KAAKsY,qBAAuBzI,CAChC,EAEA,MAAM6I,WAA0BjG,EAC9B,WAAA5S,CAAY2V,EAAKD,EAAOjC,EAAiB0B,EAAsBC,EAAuB9B,EAAcwF,EAAQC,GACnGnS,QACP0K,EAAenR,KAAM,oBACrBmR,EAAenR,KAAM,yBACrBmR,EAAenR,KAAM,0BACrBmR,EAAenR,KAAM,iBACrBmR,EAAenR,KAAM,WACrBmR,EAAenR,KAAM,UACrBmR,EAAenR,KAAM,UACrBmR,EAAenR,KAAM,WACrBmR,EAAenR,KAAM,SACrBA,KAAK6Y,cAAgB1F,EACrBnT,KAAK8Y,iBAAmBxF,EACxBtT,KAAK+Y,sBAAwB/D,EAC7BhV,KAAKgZ,uBAAyB/D,EAC9BjV,KAAKiZ,QAAUN,EACf3Y,KAAKkZ,OAASN,EACd,MAAMnF,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACpC9S,KAAA4T,QAAUC,SAASC,cAAc,UACjC9T,KAAA4T,QAAQG,aAAa,OAAQ,UAClC/T,KAAKmZ,MAAQ,IAAI7D,EAAYC,EAAOC,GAC/BxV,KAAAgU,OAASH,SAASC,cAAc,SACrC9T,KAAK4V,UACEnC,EAAAU,YAAYnU,KAAKgU,QACnBhU,KAAA4T,QAAQO,YAAYnU,KAAKmZ,OACvB1F,EAAAU,YAAYnU,KAAK4T,QAC5B,CACE,OAAAgC,GACO5V,KAAAgU,OAAOC,YAAcjU,KAAKkU,WACnC,CACE,SAAAA,GACS,MAAA,2EAGclU,KAAK6Y,eAAiB,oFAKtB7Y,KAAK6Y,eAAiB,oDAE9B7Y,KAAKkZ,QAAU,4BACdlZ,KAAKiZ,SAAW,wHAIZjZ,KAAK8Y,kBAAoB,oKAMnB9Y,KAAK+Y,uBAAyB,uEAI9B/Y,KAAKgZ,wBAA0B,uRAgB3D,CACE,eAAAI,CAAgB7D,GACTvV,KAAAmZ,MAAMrD,YAAYP,EAC3B,CACE,aAAA8D,CAAc7D,GACPxV,KAAAmZ,MAAMpD,UAAUP,EACzB,CACE,qBAAA8D,CAAsB/D,GACpBvV,KAAK8Y,iBAAmBvD,EACxBvV,KAAK4V,SACT,CACE,0BAAA2D,CAA2BhE,GACzBvV,KAAK+Y,sBAAwBxD,EAC7BvV,KAAK4V,SACT,CACE,2BAAA4D,CAA4BjE,GAC1BvV,KAAKgZ,uBAAyBzD,EAC9BvV,KAAK4V,SACT,EAES,SAAA6D,GAAgB/S,EAAMmR,GACP,oBAAXtT,QAA2BmV,eAAeC,IAAIjT,IACxCgT,eAAAE,OAAOlT,EAAMmR,EAEhC,CAUA,SAASgC,GAAYpX,GACnB,MAAMqX,EAAO,IACRrX,GAcE,OAZHA,EAAQsX,UACLD,EAAAC,QAAUtX,EAAQsX,QAAQC,KAAKxR,GAaxC,SAAyBA,GACvB,MAAMsR,EAAO,IACRtR,GAEDA,EAAO7G,OACTmY,EAAKnY,KAAOF,KAAKC,MAAMD,KAAKiB,UAAU8F,EAAO7G,QAExC,OAAAmY,CACT,CArBmDG,CAAgBzR,MAE7D/F,EAAQd,OACVmY,EAAKnY,KAAOF,KAAKC,MAAMD,KAAKiB,UAAUD,EAAQd,QAE5Cc,EAAQyX,OACVJ,EAAKI,KAAO,IAAIzX,EAAQyX,OAEtBzX,EAAQ0X,cACVL,EAAKK,YAAc,IAAK1X,EAAQ0X,cAE3BL,CACT,CAUA,SAASM,GAAiBC,GACjB,MAAA,IACFA,EACHC,SAAUD,EAAQC,SAASN,KAAKvX,GAAYoX,GAAYpX,KAE5D,CAzCmB,CACjB,CAAEiE,KAAM,iBAAkB6T,MAAO7G,GACjC,CAAEhN,KAAM,eAAgB6T,MAAOjF,GAC/B,CAAE5O,KAAM,eAAgB6T,MAAOvE,GAC/B,CAAEtP,KAAM,qBAAsB6T,MAAOvC,IACrC,CAAEtR,KAAM,sBAAuB6T,MAAO7B,IACtC,CAAEhS,KAAM,uBAAwB6T,MAAO5H,IAE9B1B,SAAQ,EAAGvK,OAAM6T,MAAOC,KAAqBf,GAAgB/S,EAAM8T,KA8C9E,MAAMC,WAAiChI,EACrC,WAAA5S,CAAY6a,GACHjU,QAEPtH,EAAca,KAAM,UACNb,EAAAa,KAAM,WAAY,IAEhCb,EAAca,KAAM,UACpBA,KAAK2a,OAASD,EACd,MAAMjH,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACpC9S,KAAAgU,OAASH,SAASC,cAAc,SAChC9T,KAAAgU,OAAOC,YAAcjU,KAAKkU,YACxBT,EAAAU,YAAYnU,KAAKgU,QAClB,MAAA4G,EAAO/G,SAASC,cAAc,MACpC8G,EAAKvC,UAAY,OACjB5E,EAAOU,YAAYyG,EACvB,CACE,SAAA1G,GACE,IAAI5T,EAAI2D,EAAIC,EACZ,MAAM0W,EAAuG,OAA/F1W,EAAmE,OAA7DD,EAAiC,OAA3B3D,EAAKN,KAAK2a,OAAOxa,YAAiB,EAASG,EAAGua,WAAgB,EAAS5W,EAAGmH,WAAgB,EAASlH,EAAG0W,KACzH,MAAA,+FAIoB,MAARA,OAAe,EAASA,EAAKtH,kBAAoB,4BAC7C,MAARsH,OAAe,EAASA,EAAKjJ,SAAW,6CACzB,MAARiJ,OAAe,EAASA,EAAKzH,eAAiB,gCACzC,MAARyH,OAAe,EAASA,EAAKnH,SAAW,inBA8B/D,CACE,UAAAqH,CAAWhb,GACTE,KAAK+a,SAAWjb,EAChBE,KAAKgb,YACT,CACE,UAAAA,GACM,IAAA1a,EAAI2D,EAAIC,EAAIsU,EACV,MAAAoC,EAAiC,OAAzBta,EAAKN,KAAKib,iBAAsB,EAAS3a,EAAG4a,cAAc,WACxE,IAAKN,EAAM,OACXA,EAAK/E,UAAY,GACjB,MAAMsF,EAA4G,OAA/F3C,EAAmE,OAA7DtU,EAAiC,OAA3BD,EAAKjE,KAAK2a,OAAOxa,YAAiB,EAAS8D,EAAG4W,WAAgB,EAAS3W,EAAGkH,WAAgB,EAASoN,EAAGoC,KAC/HQ,EAAe7I,IACnBA,EAAE+B,kBACF/B,EAAE8B,gBAAgB,EAEfrU,KAAA+a,SAAS9J,SAASoK,IACrB,IAAI9Z,EAAK+Z,EAAKC,EACd,MAAM1J,EAAO,IAAI6G,GAAkB2C,EAAIxJ,KAAK2D,IAAK6F,EAAIxJ,KAAK0D,MAAoB,MAAb4F,OAAoB,EAASA,EAAU7H,gBAAwE,OAAtD/R,EAAmB,MAAb4Z,OAAoB,EAASA,EAAU/P,WAAgB,EAAS7J,EAAIyT,qBAA6E,OAAtDsG,EAAmB,MAAbH,OAAoB,EAASA,EAAU/P,WAAgB,EAASkQ,EAAIrG,sBAA8E,OAAtDsG,EAAmB,MAAbJ,OAAoB,EAASA,EAAU/P,WAAgB,EAASmQ,EAAIpI,cACjYqI,EAAqBjJ,IACzB6I,EAAY7I,GACZ8I,EAAI9G,SAAS,EAEV1C,EAAA3Q,iBAAiB,QAASsa,GAC1B3J,EAAA3Q,iBAAiB,aAAcka,GAC/BvJ,EAAA3Q,iBAAiB,WAAYsa,GAC7B3J,EAAA3Q,iBAAiB,YAAaka,GAC9BvJ,EAAA3Q,iBAAiB,YAAaka,GAC9BvJ,EAAA3Q,iBAAiB,UAAWka,GACjCR,EAAKzG,YAAYtC,EAAI,GAE3B,CACE,IAAA4J,GACOzb,KAAA0b,UAAUC,IAAI,UACvB,CACE,IAAAC,GACO5b,KAAA0b,UAAU5L,OAAO,UAC1B,EAEA2J,GAAgB,+BAAgCgB,IAC1C,MAAAoB,GAAyB,MAAMA,EACnC,WAAAhc,GACEV,EAAca,KAAM,iBACpBb,EAAca,KAAM,mBACNb,EAAAa,KAAM,sBAAuB,IAC3Cb,EAAca,KAAM,gBACNb,EAAAa,KAAM,qBAAqB,GAC3Bb,EAAAa,KAAM,uBAAuB,EAC/C,CACE,iBAAWgQ,GAIT,OAHK6L,EAAuBrL,WAC1BqL,EAAuBrL,SAAW,IAAIqL,GAEjCA,EAAuBrL,QAClC,CACE,eAAIsL,GACF,OAAO9b,KAAK+b,cAAgB,CAChC,CACE,gBAAIC,GACK,OAAAhc,KAAKic,eAAiB,CAAEC,SAAU,QAAS5B,SAAU,GAAI6B,aAAa,EAAO3P,iBAAkB,KAC1G,CACE,kBAAI4P,GACK,OAAApc,KAAKqc,iBAAmB,CAAEH,SAAU,UAAW5B,SAAU,GAAI6B,aAAa,EAAO3P,iBAAkB,KAC9G,CACE,oBAAA8P,CAAqB1T,GACd5I,KAAAuc,oBAAoBlT,KAAKT,EAClC,CACE,uBAAA4T,CAAwB5T,GACtB5I,KAAKuc,oBAAsBvc,KAAKuc,oBAAoBxL,QAAQC,GAAMA,IAAMpI,GAC5E,CACE,kBAAM6T,CAAanV,GACb,IAAAhH,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACxC,GAAIzV,EAAM0V,YACR,OAAQ1V,EAAM4U,UACZ,IAAK,QACH,GAAIlc,KAAKic,cACP,OAAOjc,KAAKic,cAEd,MACF,IAAK,UACH,GAAIjc,KAAKqc,gBACP,OAAOrc,KAAKqc,gBAKd,MAAAjV,EAA8B,UAAnBE,EAAM4U,eAA8D,OAA/B5b,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGH,MAAM6J,qBAAwD,OAA/B/F,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAG9D,MAAMiK,uBACxL,MAAA,CACL8R,SAAU5U,EAAM4U,SAChB5B,UAAqG,OAAzF9B,EAAyD,OAAnDtU,EAAiB,MAAZkD,OAAmB,EAASA,EAASzF,WAAgB,EAASuC,EAAGoW,eAAoB,EAAS9B,EAAGyE,QAAU,GAClId,aAA8I,OAA/HS,EAA+F,OAAzFD,EAAyD,OAAnDD,EAAiB,MAAZtV,OAAmB,EAASA,EAASzF,WAAgB,EAAS+a,EAAGpC,eAAoB,EAASqC,EAAGO,eAAoB,EAASN,EAAGO,eAAgB,EACjL3Q,kBAAmJ,OAA/HuQ,EAA+F,OAAzFD,EAAyD,OAAnDD,EAAiB,MAAZzV,OAAmB,EAASA,EAASzF,WAAgB,EAASkb,EAAGvC,eAAoB,EAASwC,EAAGI,eAAoB,EAASH,EAAG5S,cAAgB,KAE5L,CACE,sBAAMiT,CAAiB9V,GACjB,IAAAhH,EACJ,GAAIgH,EAAM0V,kBAAqC,IAAtBhd,KAAK+b,aAC5B,OAAO/b,KAAK+b,aAGd,aAD2D,OAA/Bzb,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGH,MAAMkK,0BAC9D,CAC1B,CACE,UAAMgT,CAAK/V,GACT,IAAIhH,EAAI2D,EAAIC,EACR,IACE,KAAkC,OAA/B5D,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGR,QAAQ6C,QACzD,MAAA,IAAI7B,MAAM,yBAElB,MAAMwc,EAAahW,GAAS,CAAE4U,SAAU,QAASc,aAAa,IACvD3C,EAASyB,SAAqBlb,QAAQ2c,IAAI,CAC/Cvd,KAAKyc,aAAaa,GAClBtd,KAAKod,iBAAiBE,KAExB,OAAQA,EAAWpB,UACjB,IAAK,QACHlc,KAAKic,cAAgB5B,EACrB,MACF,IAAK,UACHra,KAAKqc,gBAAkBhC,EAG3Bra,KAAK+b,aAAeD,EACf9b,KAAAuc,oBAAoBtL,SAASrI,IAC5B,IAAArH,EAAK+Z,EAAKC,EAAK/C,EACgC,OAAlD8C,GAAO/Z,EAAMqH,EAAS4U,QAAQC,kBAAoCnC,EAAIoC,KAAKnc,EAAK8Y,EAASiD,EAAWpB,UAC/C,OAArD1D,GAAM+C,EAAM3S,EAAS4U,QAAQG,sBAAwCnF,EAAGkF,KAAKnC,EAAKvb,KAAK+b,cAAgB,EAAC,GAE5G,OAAQ/Z,GACqE,OAA3EkC,EAAqC,OAA/BD,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAGnE,QAAQY,SAA2BwD,EAAGlC,MAAM,uBAAwBA,GACxHhC,KAAAuc,oBAAoBtL,SAASrI,IAChC,IAAIrH,EAAK+Z,EACkC,OAA1CA,GAAO/Z,EAAMqH,EAAS4U,QAAQlb,UAA4BgZ,EAAIoC,KAAKnc,EAAKS,EAAK,GAEtF,CACA,CAEE,sBAAM4b,GACJ,IAAItd,EAAI2D,EACJ,UACIjE,KAAK6d,6BACL7d,KAAK8d,eACZ,OAAQ9b,GACqE,OAA3EiC,EAAqC,OAA/B3D,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGR,QAAQY,SAA2BuD,EAAGjC,MAAM,+BAAgCA,GAChIhC,KAAAuc,oBAAoBtL,SAASrI,IAChC,IAAIrH,EAAK+Z,EACkC,OAA1CA,GAAO/Z,EAAMqH,EAAS4U,QAAQlb,UAA4BgZ,EAAIoC,KAAKnc,EAAKS,EAAK,GAEtF,CACA,CAEE,0BAAM6b,GACJ,IAAIE,EAAkB,GACjB/d,KAAKic,eACQ8B,EAAA1U,KAAKrJ,KAAKqd,KAAK,CAAEnB,SAAU,QAASc,aAAa,KAE9Dhd,KAAKqc,iBACQ0B,EAAA1U,KAAKrJ,KAAKqd,KAAK,CAAEnB,SAAU,UAAWc,aAAa,WAE/Dpc,QAAQ2c,IAAIQ,EACtB,CACE,mBAAMD,GACA,IAAAxd,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EACtC,MAAAjU,EAAyC,OAA/BzJ,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGH,MAAM4J,OACpE,IACF,IAAKA,EAEH,YAD4E,OAA3E7F,EAAqC,OAA/BD,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAGnE,QAAQY,SAA2BwD,EAAGvD,KAAK,sCAGlG,GAAAoJ,EAAOvJ,cAAgBuJ,EAAOtJ,OAEhC,YAD4E,OAA3Ekc,EAAqC,OAA/BnE,EAAKzI,EAAQC,OAAOM,aAAkB,EAASkI,EAAG1Y,QAAQY,SAA2Bic,EAAGhc,KAAK,2DAA2F,OAA/B+b,EAAK3M,EAAQC,OAAOM,aAAkB,EAASoM,EAAG5c,QAAQkD,kBAGrN+G,EAAAX,yBAAyBjI,IAC1B,GAAAA,EAAMA,QAAU4D,EAAakZ,WAAY,CAC3C,MAAMC,EAAW/c,EAAMQ,KAEvB,YADK3B,KAAAme,WAAWD,EAAU,EAAG,QAEvC,CACQ,MAAMzb,EAAUzC,KAAKoe,WAAW,CAAE5T,UAAWrJ,EAAMqJ,YACnD,OAAQrJ,EAAMA,OACZ,KAAK4D,EAAasZ,YAChBre,KAAKse,gBAAgB,CAAEC,YAAY,IACnC,MACF,KAAKxZ,EAAayZ,KACZ/b,GACFzC,KAAKye,YAAY,CAAEhc,UAAS8b,YAAY,IAE1C,MACF,KAAKxZ,EAAa2Z,OACZjc,GACFzC,KAAK2e,cAAc,CAAElc,UAAS8b,YAAY,IAE5C,MACF,KAAKxZ,EAAa6Z,OACZnc,GACFzC,KAAK6e,YAAY,CAAEpc,UAAS8b,YAAY,IAE1C,MACF,KAAKxZ,EAAa+Z,QACZrc,GACFzC,KAAK+e,eAAe,CAAEtc,UAAS8b,YAAY,IAE7C,MACF,KAAKxZ,EAAaia,YAChBhf,KAAKif,oBAAoB,CAAEV,YAAY,IACvC,MACF,KAAKxZ,EAAama,QACZzc,GACFzC,KAAKmf,aAAa,CAAE1c,UAAS8b,YAAY,IAE3C,MACF,KAAKxZ,EAAaqa,UACZ3c,GACFzC,KAAKqf,iBAAiB,CAAE5c,UAAS8b,YAAY,IAGjD,KAAKxZ,EAAaua,UAE5B,UAEYvV,EAAO1J,gBACP0J,EAAOjB,gBAC+D,OAA3EgU,EAAqC,OAA/BF,EAAK7M,EAAQC,OAAOM,aAAkB,EAASsM,EAAG9c,QAAQY,SAA2Boc,EAAGnc,KAAK,0CAA0E,OAA/Bkc,EAAK9M,EAAQC,OAAOM,aAAkB,EAASuM,EAAG/c,QAAQkD,gBAC1M,OAAQhB,GACqE,OAA3Egc,EAAqC,OAA/BjB,EAAKhN,EAAQC,OAAOM,aAAkB,EAASyM,EAAGjd,QAAQY,SAA2Bsd,EAAGhc,MAAM,4BAA6BA,EACxI,CACA,CAME,UAAAoc,CAAW9W,GACT,IAAIhH,EAAI2D,EACJ,GAACqD,EAAMkD,UAGX,OAAqC,OAA5BlK,EAAKN,KAAKic,oBAAyB,EAAS3b,EAAGga,SAASiF,MAAMC,GAAMA,EAAEhV,YAAclD,EAAMkD,eAA+C,OAA9BvG,EAAKjE,KAAKqc,sBAA2B,EAASpY,EAAGqW,SAASiF,MAAMC,GAAMA,EAAEhV,YAAclD,EAAMkD,YACpN,CAME,6BAAMiV,CAAwBnY,GACxB,IAAAhH,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAChG,OAAQhZ,EAAM4U,UACZ,IAAK,QACH,GAAIlc,KAAKugB,kBACA,OAAA,KAEH,IAA4B,OAA5BjgB,EAAKN,KAAKic,oBAAyB,EAAS3b,EAAG6b,cAAgBnc,KAAKic,cAAczP,iBAClF,IACFxM,KAAKugB,mBAAoB,EACnB,MAAAnZ,QAAkD,OAA/BnD,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAG9D,MAAM6J,YAAY,CAC3FE,gBAAiB6F,EAAQC,OAAO9F,gBAChCC,YAAanK,KAAKic,cAAczP,oBAE5B6N,EAAU,CACd6B,SAAU,QACV5B,UAAqG,OAAzF9B,EAAyD,OAAnDtU,EAAiB,MAAZkD,OAAmB,EAASA,EAASzF,WAAgB,EAASuC,EAAGoW,eAAoB,EAAS9B,EAAGyE,QAAU,GAClId,aAA8I,OAA/HS,EAA+F,OAAzFD,EAAyD,OAAnDD,EAAiB,MAAZtV,OAAmB,EAASA,EAASzF,WAAgB,EAAS+a,EAAGpC,eAAoB,EAASqC,EAAGO,eAAoB,EAASN,EAAGO,eAAgB,EACjL3Q,kBAAmJ,OAA/HuQ,EAA+F,OAAzFD,EAAyD,OAAnDD,EAAiB,MAAZzV,OAAmB,EAASA,EAASzF,WAAgB,EAASkb,EAAGvC,eAAoB,EAASwC,EAAGI,eAAoB,EAASH,EAAG5S,cAAgB,MAGjL,OADPnK,KAAKwgB,QAAQnG,GACNA,CACR,OAAQrY,GAEA,OADqE,OAA3E0d,EAAqC,OAA/B1B,EAAKjO,EAAQC,OAAOM,aAAkB,EAAS0N,EAAGle,QAAQY,SAA2Bgf,EAAG1d,MAAM,8CAA+CA,GAC7I,IACnB,CAAoB,QACRhC,KAAKugB,mBAAoB,CACrC,CAEQ,MACF,IAAK,UACH,GAAIvgB,KAAKygB,oBACA,OAAA,KAEH,IAA8B,OAA9Bd,EAAK3f,KAAKqc,sBAA2B,EAASsD,EAAGxD,cAAgBnc,KAAKqc,gBAAgB7P,iBACtF,IACFxM,KAAKygB,qBAAsB,EACrB,MAAArZ,QAAkD,OAA/BwY,EAAK7P,EAAQC,OAAOM,aAAkB,EAASsP,EAAGzf,MAAMiK,oBAAoB,CACnGF,gBAAiB6F,EAAQC,OAAO9F,gBAChCC,YAAanK,KAAKqc,gBAAgB7P,oBAE9B6N,EAAU,CACd6B,SAAU,UACV5B,UAAqG,OAAzFwF,EAAyD,OAAnDD,EAAiB,MAAZzY,OAAmB,EAASA,EAASzF,WAAgB,EAASke,EAAGvF,eAAoB,EAASwF,EAAG7C,QAAU,GAClId,aAA8I,OAA/H8D,EAA+F,OAAzFD,EAAyD,OAAnDD,EAAiB,MAAZ3Y,OAAmB,EAASA,EAASzF,WAAgB,EAASoe,EAAGzF,eAAoB,EAAS0F,EAAG9C,eAAoB,EAAS+C,EAAG9C,eAAgB,EACjL3Q,kBAAmJ,OAA/H4T,EAA+F,OAAzFD,EAAyD,OAAnDD,EAAiB,MAAZ9Y,OAAmB,EAASA,EAASzF,WAAgB,EAASue,EAAG5F,eAAoB,EAAS6F,EAAGjD,eAAoB,EAASkD,EAAGjW,cAAgB,MAGjL,OADPnK,KAAKwgB,QAAQnG,GACNA,CACR,OAAQrY,GAEA,OADqE,OAA3Ese,EAAqC,OAA/BD,EAAKtQ,EAAQC,OAAOM,aAAkB,EAAS+P,EAAGvgB,QAAQY,SAA2B4f,EAAGte,MAAM,iDAAkDA,GAChJ,IACnB,CAAoB,QACRhC,KAAKygB,qBAAsB,CACvC,EAIW,OAAA,IACX,CAKE,SAAAC,GACE,SAAU3Q,EAAQC,OAAOM,QAAUtQ,KAAKic,eAAiBjc,KAAKqc,gBAClE,CACE,iBAAMoC,EAAYhc,QAAEA,EAAS8b,WAAAA,GAAa,IACxC,IAAIje,EAAI2D,EAAIC,EACR,IAAClE,KAAK0gB,YACR,OAEI,MAAAC,EAAoB3gB,KAAK4gB,qBAAqB5gB,KAAK8b,YAAa9b,KAAKic,cAAejc,KAAKqc,iBACzFwE,EAAW7gB,KAAK8gB,mBAAmBre,GACrC,IAAAoe,EAASpe,QAAQiI,KAGjB,IACFmW,EAASpe,QAAQiI,MAAA,IAA4BqW,MAAQC,cACrDhhB,KAAKihB,qBAAqBJ,GACrB7gB,KAAA+b,aAAe4E,EAAkB7E,YAAc,EAC/C9b,KAAAuc,oBAAoBtL,SAASrI,IAChC,IAAIrH,EAAK+Z,EAC8C,OAAtDA,GAAO/Z,EAAMqH,EAAS4U,QAAQG,sBAAwCrC,EAAIoC,KAAKnc,EAAKvB,KAAK+b,aAAY,IAEpGwC,SACqC,OAA/Bje,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGH,MAAMuK,KAAK,CAAEF,UAAW/H,EAAQ+H,YAE7F,OAAQxI,GACqE,OAA3EkC,EAAqC,OAA/BD,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAGnE,QAAQY,SAA2BwD,EAAGlC,MAAM,yBAA0BA,GAC/HhC,KAAKkhB,uBAAuBP,EAClC,CACA,CACE,mBAAMhC,EAAclc,QAAEA,EAAS8b,WAAAA,GAAa,IAC1C,IAAIje,EAAI2D,EAAIC,EACR,IAAClE,KAAK0gB,YACR,OAEI,MAAAC,EAAoB3gB,KAAK4gB,qBAAqB5gB,KAAK8b,YAAa9b,KAAKic,cAAejc,KAAKqc,iBACzFwE,EAAW7gB,KAAK8gB,mBAAmBre,GACrC,GAACoe,EAASpe,QAAQiI,KAGlB,IACFmW,EAASpe,QAAQiI,UAAO,EACxB1K,KAAKihB,qBAAqBJ,GACrB7gB,KAAA+b,aAAe4E,EAAkB7E,YAAc,EAC/C9b,KAAAuc,oBAAoBtL,SAASrI,IAChC,IAAIrH,EAAK+Z,EAC8C,OAAtDA,GAAO/Z,EAAMqH,EAAS4U,QAAQG,sBAAwCrC,EAAIoC,KAAKnc,EAAKvB,KAAK+b,aAAY,IAEpGwC,SACqC,OAA/Bje,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGH,MAAMwK,OAAO,CAAEH,UAAW/H,EAAQ+H,YAE/F,OAAQxI,GACqE,OAA3EkC,EAAqC,OAA/BD,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAGnE,QAAQY,SAA2BwD,EAAGlC,MAAM,2BAA4BA,GACjIhC,KAAKkhB,uBAAuBP,EAClC,CACA,CACE,iBAAM9B,EAAYpc,QAAEA,EAAS8b,WAAAA,GAAa,IACxC,IAAIje,EAAI2D,EAAIC,EACR,IAAClE,KAAK0gB,YACR,OAEI,MAAAG,EAAW7gB,KAAK8gB,mBAAmBre,GACzC,SAA4B,IAAxBoe,EAASM,iBAAmD,IAA1BN,EAASO,gBAG3CP,EAASpe,QAAQ4e,OAGjB,IACF5e,EAAQ4e,QAA0B,IAAIN,MAAQC,cAC9ChhB,KAAKihB,qBAAqBJ,GACtBtC,SACqC,OAA/Bje,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGH,MAAM0K,KAAK,CAAEL,UAAW/H,EAAQ+H,YAE7F,OAAQxI,GACPhC,KAAKihB,qBAAqBJ,GACkD,OAA3E3c,EAAqC,OAA/BD,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAGnE,QAAQY,SAA2BwD,EAAGlC,MAAM,yBAA0BA,EACrI,CACA,CACE,kBAAMmd,EAAa1c,QAAEA,EAAS8b,WAAAA,GAAa,IACrC,IAAAje,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAChB,GAAC1c,KAAK0gB,YAGN,KACiC,OAA7BpgB,EAAKmC,EAAQ0X,kBAAuB,EAAS7Z,EAAGghB,kBAAoB/C,SACjC,OAA/Bra,EAAK6L,EAAQC,OAAOM,aAAkB,EAASpM,EAAG/D,MAAMoK,MAAM,CACpEC,UAAW/H,EAAQ+H,UACnBC,WAA0C,OAA7BxG,EAAKxB,EAAQ0X,kBAAuB,EAASlW,EAAGqd,kBAGlE,OAAQtf,GACqE,OAA3E0a,EAAqC,OAA/BlE,EAAKzI,EAAQC,OAAOM,aAAkB,EAASkI,EAAG1Y,QAAQY,SAA2Bgc,EAAG1a,MAAM,0BAA2BA,EACtI,CACA,CACE,oBAAM+c,EAAetc,QAAEA,EAAS8b,WAAAA,GAAa,IACvC,IAAAje,EAAI2D,EAAIC,EAAIsU,EACZ,IAACxY,KAAK0gB,YACR,OAEI,MAAAa,EAAkBvhB,KAAK8gB,mBAAmBre,GAC5C,QAA+B,IAA/B8e,EAAgBJ,WAClB,OAEI,MAAAR,EAAoB3gB,KAAK4gB,qBAAqB5gB,KAAK8b,YAAa9b,KAAKic,cAAejc,KAAKqc,iBAC3F,IAGF,GAFA5Z,EAAQ+e,UAA4B,IAAIT,MAAQC,cAChDhhB,KAAKyhB,cAAchf,EAAS8e,EAAgBJ,WAAY,SACrB,OAA9B7gB,EAAKN,KAAKqc,sBAA2B,EAAS/b,EAAGga,SAAU,CAC9D,MAAMoH,EAAc1hB,KAAK2hB,gBAAgBlf,EAASzC,KAAKqc,iBAClDrc,KAAAme,WAAW1b,EAASif,EAAa,UAC9C,CACUnD,SACqC,OAA/Bta,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAG9D,MAAM2K,QAAQ,CAAEN,UAAW/H,EAAQ+H,YAEhG,OAAQxI,GACqE,OAA3EwW,EAAqC,OAA/BtU,EAAK6L,EAAQC,OAAOM,aAAkB,EAASpM,EAAGpE,QAAQY,SAA2B8X,EAAGxW,MAAM,2BAA4BA,GACjIhC,KAAKkhB,uBAAuBP,EAClC,CACA,CACE,sBAAMtB,EAAiB5c,QAAEA,EAAS8b,WAAAA,GAAa,IACzC,IAAAje,EAAI2D,EAAIC,EAAIsU,EACZ,IAACxY,KAAK0gB,YACR,OAEI,MAAAC,EAAoB3gB,KAAK4gB,qBAAqB5gB,KAAK8b,YAAa9b,KAAKic,cAAejc,KAAKqc,iBACzFkF,EAAkBvhB,KAAK8gB,mBAAmBre,GAC5C,QAAiC,IAAjC8e,EAAgBH,aAGhB,IAGF,GAFAG,EAAgB9e,QAAQ+e,cAAW,EACnCxhB,KAAKyhB,cAAchf,EAAS8e,EAAgBH,aAAc,WACzB,OAA5B9gB,EAAKN,KAAKic,oBAAyB,EAAS3b,EAAGga,SAAU,CAC5D,MAAMoH,EAAc1hB,KAAK2hB,gBAAgBlf,EAASzC,KAAKic,eAClDjc,KAAAme,WAAW1b,EAASif,EAAa,QAC9C,CACUnD,SACqC,OAA/Bta,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAG9D,MAAM4K,UAAU,CAAEP,UAAW/H,EAAQ+H,YAElG,OAAQxI,GACqE,OAA3EwW,EAAqC,OAA/BtU,EAAK6L,EAAQC,OAAOM,aAAkB,EAASpM,EAAGpE,QAAQY,SAA2B8X,EAAGxW,MAAM,6BAA8BA,GACnIhC,KAAKkhB,uBAAuBP,EAClC,CACA,CACE,yBAAM1B,EAAoBV,WAAEA,GAAa,GAAS,CAAA,GAC5C,IAAAje,EAAI2D,EAAIC,EAAIsU,EACZ,IAACxY,KAAK0gB,YACR,OAEI,MAAAC,EAAoB3gB,KAAK4gB,qBAAqB5gB,KAAK8b,YAAa9b,KAAKic,cAAejc,KAAKqc,iBAC3F,IACF,MAAMuF,GAA6B,IAAIb,MAAQC,gBACS,OAA5B1gB,EAAKN,KAAKic,oBAAyB,EAAS3b,EAAGga,SAASvJ,QAAQtO,GAAYA,EAAQiI,SAAU,IACxGuG,SAASxO,IACzB,IAAIlB,EAAK+Z,EAAKC,EACd9Y,EAAQ+e,SAAWI,EACnB,MAAMT,EAA2C,OAA7B5f,EAAMvB,KAAKic,oBAAyB,EAAS1a,EAAI+Y,SAASuH,WAAWrC,GAAMA,EAAEhV,YAAc/H,EAAQ+H,YAIvH,QAHmB,IAAf2W,IAA4C,IAAnBA,IACG,OAA7B7F,EAAMtb,KAAKic,gBAAkCX,EAAIhB,SAASwH,OAAOX,EAAY,IAE5C,OAA/B5F,EAAMvb,KAAKqc,sBAA2B,EAASd,EAAIjB,SAAU,CAChE,MAAMoH,EAAc1hB,KAAK2hB,gBAAgBlf,EAASzC,KAAKqc,iBACvDrc,KAAKqc,gBAAgB/B,SAASwH,OAAOJ,EAAa,EAAGjf,EAC/D,KAEWzC,KAAAuc,oBAAoBtL,SAASrI,IAC5B,IAAArH,EAAK+Z,EAAKC,EAAKwG,EACf/hB,KAAKic,gBAC4C,OAAlDX,GAAO/Z,EAAMqH,EAAS4U,QAAQC,kBAAoCnC,EAAIoC,KAAKnc,EAAKvB,KAAKic,cAAe,UAEnGjc,KAAKqc,kBAC4C,OAAlD0F,GAAOxG,EAAM3S,EAAS4U,QAAQC,kBAAoCsE,EAAIrE,KAAKnC,EAAKvb,KAAKqc,gBAAiB,WACjH,IAEUkC,SACqC,OAA/Bta,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAG9D,MAAM6K,cAEnE,OAAQhJ,GACqE,OAA3EwW,EAAqC,OAA/BtU,EAAK6L,EAAQC,OAAOM,aAAkB,EAASpM,EAAGpE,QAAQY,SAA2B8X,EAAGxW,MAAM,iCAAkCA,GACvIhC,KAAKkhB,uBAAuBP,EAClC,CACA,CACE,wBAAMqB,EAAmBzD,WAAEA,GAAa,GAAS,CAAA,GAC3C,IAAAje,EAAI2D,EAAIC,EAAIsU,EACZ,IAACxY,KAAK0gB,YACR,OAEI,MAAAC,EAAoB3gB,KAAK4gB,qBAAqB5gB,KAAK8b,YAAa9b,KAAKic,cAAejc,KAAKqc,iBAC3F,IACF,MAAMuF,GAA6B,IAAIb,MAAQC,cAClB,OAA5B1gB,EAAKN,KAAKic,gBAAkC3b,EAAGga,SAASrJ,SAASxO,IAC5D,IAAAlB,EAEJ,GADAkB,EAAQ+e,SAAWI,EACiB,OAA/BrgB,EAAMvB,KAAKqc,sBAA2B,EAAS9a,EAAI+Y,SAAU,CAChE,MAAMoH,EAAc1hB,KAAK2hB,gBAAgBlf,EAASzC,KAAKqc,iBACvDrc,KAAKqc,gBAAgB/B,SAASwH,OAAOJ,EAAa,EAAGjf,EAC/D,KAEMzC,KAAKic,cAAgB,CACnB3B,SAAU,GACV6B,aAAa,EACb3P,iBAAkB,KAClB0P,SAAU,SAEZlc,KAAK+b,aAAe,EACf/b,KAAAuc,oBAAoBtL,SAASrI,IAChC,IAAIrH,EAAK+Z,EAAKC,EAAKwG,EAAKrF,EAAIC,EACxB3c,KAAKic,gBAC4C,OAAlDX,GAAO/Z,EAAMqH,EAAS4U,QAAQC,kBAAoCnC,EAAIoC,KAAKnc,EAAKvB,KAAKic,cAAe,UAEnGjc,KAAKqc,kBAC4C,OAAlD0F,GAAOxG,EAAM3S,EAAS4U,QAAQC,kBAAoCsE,EAAIrE,KAAKnC,EAAKvb,KAAKqc,gBAAiB,YAEpD,OAApDM,GAAMD,EAAK9T,EAAS4U,QAAQG,sBAAwChB,EAAGe,KAAKhB,EAAI1c,KAAK+b,aAAY,IAEhGwC,SACqC,OAA/Bta,EAAK8L,EAAQC,OAAOM,aAAkB,EAASrM,EAAG9D,MAAM8K,aAEnE,OAAQjJ,GACqE,OAA3EwW,EAAqC,OAA/BtU,EAAK6L,EAAQC,OAAOM,aAAkB,EAASpM,EAAGpE,QAAQY,SAA2B8X,EAAGxW,MAAM,gCAAiCA,GACtIhC,KAAKkhB,uBAAuBP,EAClC,CACA,CACE,qBAAMrC,EAAgBC,WAAEA,GAAa,GAAS,CAAA,GACxC,IAAAje,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAChB,IAAC1c,KAAK0gB,YACR,OAEI,MAAAC,EAAoB3gB,KAAK4gB,qBAAqB5gB,KAAK8b,YAAa9b,KAAKic,cAAejc,KAAKqc,iBAC3F,IACF,MAAMuF,GAA6B,IAAIb,MAAQC,cAClB,OAA5B1gB,EAAKN,KAAKic,gBAAkC3b,EAAGga,SAASrJ,SAASxO,IAC3DA,EAAQiI,OACXjI,EAAQiI,KAAOkX,EACzB,IAEqC,OAA9B3d,EAAKjE,KAAKqc,kBAAoCpY,EAAGqW,SAASrJ,SAASxO,IAC7DA,EAAQiI,OACXjI,EAAQiI,KAAOkX,EACzB,IAEM5hB,KAAK+b,aAAe,EACf/b,KAAAuc,oBAAoBtL,SAASrI,IAChC,IAAIrH,EAAK+Z,EAAKC,EAAKwG,EAAKE,EAAKtF,EACzB3c,KAAKic,gBAC4C,OAAlDX,GAAO/Z,EAAMqH,EAAS4U,QAAQC,kBAAoCnC,EAAIoC,KAAKnc,EAAKvB,KAAKic,cAAe,UAEnGjc,KAAKqc,kBAC4C,OAAlD0F,GAAOxG,EAAM3S,EAAS4U,QAAQC,kBAAoCsE,EAAIrE,KAAKnC,EAAKvb,KAAKqc,gBAAiB,YAEnD,OAArDM,GAAMsF,EAAMrZ,EAAS4U,QAAQG,sBAAwChB,EAAGe,KAAKuE,EAAKjiB,KAAK+b,aAAY,IAElGwC,SACqC,OAA/Bra,EAAK6L,EAAQC,OAAOM,aAAkB,EAASpM,EAAG/D,MAAMyK,UAEnE,OAAQ5I,GACqE,OAA3E0a,EAAqC,OAA/BlE,EAAKzI,EAAQC,OAAOM,aAAkB,EAASkI,EAAG1Y,QAAQY,SAA2Bgc,EAAG1a,MAAM,8BAA+BA,GACpIhC,KAAKkhB,uBAAuBP,EAClC,CACA,CAOE,eAAAgB,CAAgBO,EAAY7H,GAC1B,MAAMC,EAAWD,EAAQC,SACzB,IAAA,IAASpN,EAAI,EAAGA,EAAIoN,EAASrN,OAAQC,IAAK,CAClC,MAAAzK,EAAU6X,EAASpN,GACzB,GAAIzK,EAAQ0f,SAAWD,EAAWC,SAAW1f,EAAQ0f,QAAUD,EAAWC,QACjE,OAAAjV,CAEf,CACI,OAAOoN,EAASrN,MACpB,CACE,OAAAuT,CAAQnG,GACN,OAAQA,EAAQ6B,UACd,IAAK,QACClc,KAAKic,gBACFjc,KAAAic,cAAcE,YAAc9B,EAAQ8B,YACpCnc,KAAAic,cAAczP,iBAAmB6N,EAAQ7N,iBACzCxM,KAAAic,cAAc3B,SAAW,IAAIta,KAAKic,cAAc3B,YAAaD,EAAQC,WAE5E,MACF,IAAK,UACCta,KAAKqc,kBACFrc,KAAAqc,gBAAgBF,YAAc9B,EAAQ8B,YACtCnc,KAAAqc,gBAAgB7P,iBAAmB6N,EAAQ7N,iBAC3CxM,KAAAqc,gBAAgB/B,SAAW,IAAIta,KAAKqc,gBAAgB/B,YAAaD,EAAQC,WAIpFta,KAAKuc,oBAAoBtL,SACtBrI,IACC,IAAItI,EAAI2D,EACR,OAAoD,OAA5CA,GAAM3D,EAAKsI,EAAS4U,QAAQ4E,kBAAuB,EAASne,EAAGyZ,KAAKpd,EAAI+Z,EAASA,EAAQ6B,SAAQ,GAGjH,CACE,UAAAiC,CAAW1b,EAAS4f,EAAOnG,GACzB,IAAI5b,EAAI2D,EACR,OAAQiY,GACN,IAAK,QACEzZ,EAAQiI,WAA8B,IAAtB1K,KAAK+b,eACnB/b,KAAA+b,aAAe/b,KAAK+b,aAAe,GAEb,OAA5Bzb,EAAKN,KAAKic,gBAAkC3b,EAAGga,SAASwH,OAAOO,EAAO,EAAG5f,GAC1E,MACF,IAAK,UAC4B,OAA9BwB,EAAKjE,KAAKqc,kBAAoCpY,EAAGqW,SAASwH,OAAOO,EAAO,EAAG5f,GAG3EzC,KAAAuc,oBAAoBtL,SAASrI,IAC5B,IAAArH,EAAK+Z,EAAKpX,EAAIsU,EAC8B,OAA/C8C,GAAO/Z,EAAMqH,EAAS4U,QAAQ8E,eAAiChH,EAAIoC,KAAKnc,EAAKkB,EAAS4f,EAAOnG,GACzC,OAApD1D,GAAMtU,EAAK0E,EAAS4U,QAAQG,sBAAwCnF,EAAGkF,KAAKxZ,EAAIlE,KAAK+b,cAAgB,EAAC,GAE7G,CACE,aAAA0F,CAAchf,EAAS4f,EAAOnG,GAC5B,IAAI5b,EAAI2D,EACR,OAAQiY,GACN,IAAK,QACEzZ,EAAQiI,WAA8B,IAAtB1K,KAAK+b,eACnB/b,KAAA+b,aAAe/b,KAAK+b,aAAe,GAEb,OAA5Bzb,EAAKN,KAAKic,gBAAkC3b,EAAGga,SAASwH,OAAOO,EAAO,GACvE,MACF,IAAK,UAC4B,OAA9Bpe,EAAKjE,KAAKqc,kBAAoCpY,EAAGqW,SAASwH,OAAOO,EAAO,GAGxEriB,KAAAuc,oBAAoBtL,SAASrI,IAC5B,IAAArH,EAAK+Z,EAAKpX,EAAIsU,EACiC,OAAlD8C,GAAO/Z,EAAMqH,EAAS4U,QAAQ+E,kBAAoCjH,EAAIoC,KAAKnc,EAAKkB,EAAS4f,EAAOnG,GAC5C,OAApD1D,GAAMtU,EAAK0E,EAAS4U,QAAQG,sBAAwCnF,EAAGkF,KAAKxZ,EAAIlE,KAAK+b,cAAgB,EAAC,GAE7G,CAKE,oBAAAkF,CAAqBJ,QACW,IAA1BA,EAASO,cACXphB,KAAKwiB,cAAc3B,EAASpe,QAASoe,EAASO,aAAc,gBAElC,IAAxBP,EAASM,YACXnhB,KAAKwiB,cAAc3B,EAASpe,QAASoe,EAASM,WAAY,QAEhE,CACE,sBAAAD,CAAuBL,GACrB,MAAM/E,YAAEA,EAAA3b,MAAaA,EAAO2K,QAAAA,GAAY+V,EACxC7gB,KAAKic,cAAgB9b,EACrBH,KAAKqc,gBAAkBvR,EAClB9K,KAAAuc,oBAAoBtL,SAASrI,IAChC,IAAItI,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EACyB,OAAhD1Y,GAAM3D,EAAKsI,EAAS4U,QAAQC,kBAAoCxZ,EAAGyZ,KAAKpd,EAAIH,EAAO,SACnC,OAAhDqY,GAAMtU,EAAK0E,EAAS4U,QAAQC,kBAAoCjF,EAAGkF,KAAKxZ,EAAI4G,EAAS,WACjC,OAApD6R,GAAMD,EAAK9T,EAAS4U,QAAQG,sBAAwChB,EAAGe,KAAKhB,EAAIZ,EAAW,GAElG,CAOE,aAAA0G,CAAc/f,EAAS4f,EAAOnG,GAC5B,OAAQA,GACN,IAAK,aACuB,IAAtBlc,KAAK+b,cAA4BtZ,EAAQ+e,WACvC/e,EAAQiI,OACV1K,KAAK+b,aAAelY,KAAKwM,IAAI,EAAGrQ,KAAK+b,aAAe,IAEjDtZ,EAAQiI,OACN1K,KAAA+b,aAAe/b,KAAK+b,aAAe,IAGxC/b,KAAKic,gBACFjc,KAAAic,cAAc3B,SAAS+H,GAAS5f,GAEvC,MACF,IAAK,UACCzC,KAAKqc,kBACFrc,KAAAqc,gBAAgB/B,SAAS+H,GAAS5f,GAIxCzC,KAAAuc,oBAAoBtL,SAASrI,IAC5B,IAAAtI,EAAI2D,EAAIC,EAAIsU,EACiC,OAAhDvU,GAAM3D,EAAKsI,EAAS4U,QAAQiF,kBAAoCxe,EAAGyZ,KAAKpd,EAAImC,EAAS4f,EAAOnG,GACxC,OAApD1D,GAAMtU,EAAK0E,EAAS4U,QAAQG,sBAAwCnF,EAAGkF,KAAKxZ,EAAIlE,KAAK+b,cAAgB,EAAC,GAE7G,CAME,oBAAA6E,CAAqB9E,EAAaE,EAAcI,GACvC,MAAA,CACLN,cACA3b,MAAOia,GAAiB4B,GACxBlR,QAASsP,GAAiBgC,GAEhC,CAME,kBAAA0E,CAAmBre,GACjB,MAAM2e,EAAephB,KAAKqc,gBAAkBrc,KAAKqc,gBAAgB/B,SAASuH,WAAWrC,GAAMA,EAAEhV,YAAc/H,EAAQ+H,iBAAa,EAC1H2W,EAAanhB,KAAKic,cAAgBjc,KAAKic,cAAc3B,SAASuH,WAAWrC,GAAMA,EAAEhV,YAAc/H,EAAQ+H,iBAAa,EACnH,MAAA,CACL/H,QAASoX,GAAYpX,GACrB2e,eACAD,aAEN,GAEAhiB,EAAc0c,GAAwB,YACtC,IAAI6G,GAAwB7G,GAC5B,MAAM8G,WAAwBlQ,EAC5B,WAAA5S,CAAY6a,GACHjU,QAEPtH,EAAca,KAAM,UACNb,EAAAa,KAAM,WAAY,MAClBb,EAAAa,KAAM,YAAa,SACnBb,EAAAa,KAAM,aAAa,GAEjCb,EAAca,KAAM,iBACpBb,EAAca,KAAM,oBACpBb,EAAca,KAAM,gBACpBb,EAAca,KAAM,UACpBb,EAAca,KAAM,SACpBb,EAAca,KAAM,oBACpBb,EAAca,KAAM,qBAENb,EAAAa,KAAM,oBAAqB,MAC3Bb,EAAAa,KAAM,gBAAgB,GAEtBb,EAAAa,KAAM,cAAe,MACrBb,EAAAa,KAAM,kBAAmB,MACzBb,EAAAa,KAAM,oBAAqB,MACzCA,KAAK2a,OAASD,EACd1a,KAAK4iB,UAAY,iBAAkBre,OACnC,MAAMkP,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACnC+P,EAAmBhP,SAASC,cAAc,OAChD+O,EAAiBxK,UAAY,oBACxBrY,KAAA8iB,cAAgBjP,SAASC,cAAc,KACvC9T,KAAA8iB,cAAc/O,aAAa,OAAQ,SACnC/T,KAAA+iB,iBAAmBlP,SAASC,cAAc,KAC1C9T,KAAA+iB,iBAAiBhP,aAAa,OAAQ,YACtC/T,KAAAgjB,kBAAoBnP,SAASC,cAAc,OAChD9T,KAAKgjB,kBAAkB3K,UAAY,oBAClBwK,EAAA1O,YAAYnU,KAAK8iB,eACjBD,EAAA1O,YAAYnU,KAAK+iB,kBACjBF,EAAA1O,YAAYnU,KAAKgjB,mBAC7BhjB,KAAAijB,aAAepP,SAASC,cAAc,KACtC9T,KAAAijB,aAAalP,aAAa,OAAQ,QAClC/T,KAAAkjB,iBAAmBrP,SAASC,cAAc,OAC/C9T,KAAKkjB,iBAAiB7K,UAAY,mBAC7BrY,KAAAgU,OAASH,SAASC,cAAc,SACrC9T,KAAKmjB,iBACLnjB,KAAKojB,MAAQ,IAAI3I,GAAyBza,KAAK2a,QAC/C3a,KAAKojB,MAAMtI,WAAW9a,KAAKqjB,mBACpB5P,EAAA6P,OAAOtjB,KAAKgU,OAAQhU,KAAKkjB,iBAAkBL,EAAkB7iB,KAAKijB,aAAcjjB,KAAKojB,OACtF,MAAAG,EAAqBhR,IACzBA,EAAE+B,kBACF/B,EAAE8B,gBAAgB,EAEfrU,KAAAojB,MAAMliB,iBAAiB,YAAaqiB,GACpCvjB,KAAAojB,MAAMliB,iBAAiB,cAAeqiB,GACtCvjB,KAAAojB,MAAMliB,iBAAiB,QAASqiB,GAChCvjB,KAAAkB,iBAAiB,SAAUqR,IAC1BvS,KAAKojB,MAAMI,SAASjR,EAAEiF,SAAWjF,EAAEkR,eAAe5b,SAAS7H,KAAKojB,SAGhEpjB,KAAK0jB,WAAY1jB,KAAK2jB,aAAiBpR,EAAEiF,kBAAkBlC,GAAiBtV,KAAK4jB,cAC9E5jB,KAAA2jB,YAAY3jB,KAAK0jB,SAC9B,IAEI1jB,KAAK6jB,sBACL7jB,KAAK8jB,yBACT,CACE,mBAAAD,GACO7jB,KAAK4iB,YACH5iB,KAAAkB,iBAAiB,cAAc,KAClClB,KAAK4jB,cAAe,EACpB5jB,KAAK+jB,WAAW,IAElB/jB,KAAKkB,iBAAiB,cAAc,IAAMlB,KAAKgkB,cAErD,CACE,uBAAAF,GACE,IAAIxjB,EAAI2D,EAAIC,EACZ,MAAM0W,EAAuG,OAA/F1W,EAAmE,OAA7DD,EAAiC,OAA3B3D,EAAKN,KAAK2a,OAAOxa,YAAiB,EAASG,EAAGua,WAAgB,EAAS5W,EAAGmH,WAAgB,EAASlH,EAAG0W,KAChI,KAAc,MAARA,OAAe,EAASA,EAAKqJ,SACjC,OAEF,MAAMC,EAAYtJ,EAAKsJ,UAClBlkB,KAAAkB,iBACH,cACA,KACOlB,KAAAmkB,kBAAoB5f,OAAOC,YAAW,KACzCxE,KAAK4jB,cAAe,EACpB5jB,KAAK+jB,YACD/jB,KAAK0jB,UAAY1jB,KAAKokB,kBACnBpkB,KAAAokB,gBAAgBpkB,KAAK0jB,UACtBW,UAAUC,SACZD,UAAUC,SAAsB,MAAbJ,OAAoB,EAASA,EAAUK,oBAAsB,KAGpF/f,YAAW,KACTxE,KAAKgkB,YACLhkB,KAAK4jB,cAAe,CAAA,IACL,MAAbM,OAAoB,EAASA,EAAUM,kBAAoB,IAAG,GACjE,IAAG,GAER,CAAEC,SAAS,IAERzkB,KAAAkB,iBAAiB,YAAY,KAC5BlB,KAAKmkB,oBACA5f,OAAAE,aAAazE,KAAKmkB,mBACzBnkB,KAAKmkB,kBAAoB,KACjC,GAEA,CACE,cAAAO,CAAeC,GACb3kB,KAAKokB,gBAAkBO,CAC3B,CAEE,eAAAtB,GACE,IAAI/iB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EACtD,MAAA1E,EAA8I,OAAjI3C,EAAqG,OAA/FtU,EAAmE,OAA7DD,EAAiC,OAA3B3D,EAAKN,KAAK2a,OAAOxa,YAAiB,EAASG,EAAGua,WAAgB,EAAS5W,EAAGmH,WAAgB,EAASlH,EAAG0W,WAAgB,EAASpC,EAAGpN,KACvK,IAAItL,EAAU,GACR,MAAA8kB,EAAmC,YAAnB5kB,KAAK6kB,UAmCpB,OAlCFD,GACH9kB,EAAQuJ,KAAK,CACXrD,IAA6B,OAAvB0W,EAAK1c,KAAK0jB,eAAoB,EAAShH,EAAGhS,MAAQ,SAAW,OACnEmH,KAAM,CACJ2D,KAA8B,OAAvBmH,EAAK3c,KAAK0jB,eAAoB,EAAS/G,EAAGjS,MAAgE,OAAvDkS,EAAkB,MAAbzB,OAAoB,EAASA,EAAUxQ,aAAkB,EAASiS,EAAGpH,IAA4D,OAArDqH,EAAkB,MAAb1B,OAAoB,EAASA,EAAUzQ,WAAgB,EAASmS,EAAGrH,IACnND,OAAgC,OAAvBuH,EAAK9c,KAAK0jB,eAAoB,EAAS5G,EAAGpS,MAAgE,OAAvDqS,EAAkB,MAAb5B,OAAoB,EAASA,EAAUxQ,aAAkB,EAASoS,EAAGxH,OAA+D,OAArDyI,EAAkB,MAAb7C,OAAoB,EAASA,EAAUzQ,WAAgB,EAASsT,EAAGzI,QAAU,OAEpOhB,QAAS,KACHvU,KAAK0jB,WACH1jB,KAAK0jB,SAAShZ,KAChBgY,GAAsB1S,OAAO2O,cAAc,CAAElc,QAASzC,KAAK0jB,WAE3DhB,GAAsB1S,OAAOyO,YAAY,CAAEhc,QAASzC,KAAK0jB,WAEvE,IAII5jB,EAAQuJ,KAAK,CACXrD,GAAI4e,EAAgB,YAAc,UAClC/S,KAAM,CACJ2D,IAAKoP,EAA2E,OAA1DlF,EAAkB,MAAbvE,OAAoB,EAASA,EAAUpQ,gBAAqB,EAAS2U,EAAGlK,IAA+D,OAAxDmK,EAAkB,MAAbxE,OAAoB,EAASA,EAAUrQ,cAAmB,EAAS6U,EAAGnK,IACrLD,MAAOqP,EAA2E,OAA1DhF,EAAkB,MAAbzE,OAAoB,EAASA,EAAUpQ,gBAAqB,EAAS6U,EAAGrK,OAAkE,OAAxDsK,EAAkB,MAAb1E,OAAoB,EAASA,EAAUrQ,cAAmB,EAAS+U,EAAGtK,QAAU,OAEtMhB,QAAS,KACHvU,KAAK0jB,WACHkB,EACFlC,GAAsB1S,OAAOqP,iBAAiB,CAAE5c,QAASzC,KAAK0jB,WAE9DhB,GAAsB1S,OAAO+O,eAAe,CAAEtc,QAASzC,KAAK0jB,WAExE,IAGW5jB,CACX,CAEE,SAAAikB,GACE,IAAIzjB,EAAI2D,EAAIC,EACZ,MAAM0W,EAAuG,OAA/F1W,EAAmE,OAA7DD,EAAiC,OAA3B3D,EAAKN,KAAK2a,OAAOxa,YAAiB,EAASG,EAAGua,WAAgB,EAAS5W,EAAGmH,WAAgB,EAASlH,EAAG0W,KAC5HA,GAAQA,EAAKqJ,UACfjkB,KAAKojB,MAAMtI,WAAW9a,KAAKqjB,mBACtBrjB,KAAAojB,MAAMnN,MAAM6O,QAAU,QAC3B9kB,KAAKojB,MAAM3H,OACNzb,KAAAijB,aAAahN,MAAMY,QAAU,IAExC,CACE,SAAAmN,GACE,IAAI1jB,EAAI2D,EAAIC,EACZ,MAAM0W,EAAuG,OAA/F1W,EAAmE,OAA7DD,EAAiC,OAA3B3D,EAAKN,KAAK2a,OAAOxa,YAAiB,EAASG,EAAGua,WAAgB,EAAS5W,EAAGmH,WAAgB,EAASlH,EAAG0W,KAC5HA,GAAQA,EAAKqJ,UACfjkB,KAAKojB,MAAMxH,OACN5b,KAAAojB,MAAMnN,MAAM6O,QAAU,OACtB9kB,KAAAijB,aAAahN,MAAMY,QAAU,IAExC,CACE,UAAAkO,GACM,IAAAzkB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAC5C,MAAMgH,EAAyE,OAA7D/gB,EAAiC,OAA3B3D,EAAKN,KAAK2a,OAAOxa,YAAiB,EAASG,EAAGua,WAAgB,EAAS5W,EAAGmH,KAC3F,MAAA,6KAM2B,MAAZ4Z,OAAmB,EAASA,EAASC,UAAY,+RASlC,MAAZD,OAAmB,EAASA,EAAS1R,kBAAoB,uWAW3C,MAAZ0R,OAAmB,EAASA,EAAShQ,uBAAyB,kFAIpD,MAAZgQ,OAAmB,EAASA,EAAS/P,wBAA0B,qTAMjD,MAAZ+P,OAAmB,EAASA,EAAS1R,kBAAoB,0NAI/C,MAAZ0R,OAAmB,EAASA,EAAS1R,kBAAoB,sSAc7C,MAAZ0R,OAAmB,EAASA,EAASE,uBAAyB,wnBA6Bd,OAApDhhB,EAAiB,MAAZ8gB,OAAmB,EAASA,EAAS5M,YAAiB,EAASlU,EAAGihB,SAAW,mCAChC,OAApD3M,EAAiB,MAAZwM,OAAmB,EAASA,EAAS5M,YAAiB,EAASI,EAAGzS,OAAS,4BAChC,OAApD2W,EAAiB,MAAZsI,OAAmB,EAASA,EAAS5M,YAAiB,EAASsE,EAAGnH,QAAU,qGAKpB,OAAvDoH,EAAiB,MAAZqI,OAAmB,EAASA,EAASI,eAAoB,EAASzI,EAAGwI,SAAW,mCAChC,OAAvDvI,EAAiB,MAAZoI,OAAmB,EAASA,EAASI,eAAoB,EAASxI,EAAG7W,OAAS,4BAChC,OAAvD8W,EAAiB,MAAZmI,OAAmB,EAASA,EAASI,eAAoB,EAASvI,EAAGtH,QAAU,oEAI3B,OAAnDuH,EAAiB,MAAZkI,OAAmB,EAASA,EAASK,WAAgB,EAASvI,EAAGqI,SAAW,mCAChC,OAAnDpI,EAAiB,MAAZiI,OAAmB,EAASA,EAASK,WAAgB,EAAStI,EAAGhX,OAAS,4BAChC,OAAnDiY,EAAiB,MAAZgH,OAAmB,EAASA,EAASK,WAAgB,EAASrH,EAAGzI,QAAU,mfAwBnG,CACE,cAAA4N,GACOnjB,KAAAgU,OAAOC,YAAcjU,KAAK+kB,YACnC,CAEE,iBAAA1O,GACE,IAAI/V,EAAI2D,EACF,MAAAqhB,EAActlB,KAAKkX,aAAa,WAChCqO,EAAevlB,KAAKkX,aAAa,aAIvC,GAHIqO,IACFvlB,KAAK6kB,UAAYU,GAEfD,EACE,IACGtlB,KAAA0jB,SAAWjiB,KAAKC,MAAM4jB,GAC3BtlB,KAAKwlB,gBACN,OAAQC,GACqE,OAA3ExhB,EAAqC,OAA/B3D,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGR,QAAQY,SAA2BuD,EAAGjC,MAAM,6CAA8CyjB,EAC3J,CAEA,CAEE,UAAAC,CAAWjjB,EAASyZ,GAClBlc,KAAK0jB,SAAWjhB,EAChBzC,KAAK6kB,UAAY3I,EACjBlc,KAAKwlB,gBACT,CACE,cAAAG,CAAehB,GACb3kB,KAAK2jB,YAAcgB,CACvB,CACE,oBAAAiB,CAAqBjB,GACnB3kB,KAAK6lB,kBAAoBlB,CAC7B,CACE,kBAAAmB,CAAmBnB,GACjB3kB,KAAKokB,gBAAkBO,CAC3B,CAEE,cAAAa,GACE,IAAIllB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EACpB,IAAC3c,KAAK0jB,SAGR,OAFA1jB,KAAK8iB,cAAc7O,YAAc,QACjCjU,KAAK+iB,iBAAiB9O,YAAc,IAGjCjU,KAAA0b,UAAUqK,OAAO,UAAW/lB,KAAK0jB,SAAShZ,MAA2B,YAAnB1K,KAAK6kB,WAC5D7kB,KAAK8iB,cAAc7O,YAAcjU,KAAK0jB,SAAStL,OAAS,mBACxDpY,KAAK+iB,iBAAiB9O,YAAcjU,KAAK0jB,SAASsC,SAAWhmB,KAAK0jB,SAASzc,MAAQ,GACnFjH,KAAKijB,aAAahP,YAvnCtB,SAAwBxR,GAClB,IAACA,EAAQ0f,QAAgB,MAAA,MACvB,MAAA8D,MAA0BlF,KAC1BmF,EAAc,IAAInF,KAAKte,EAAQ0f,SAC/BgE,EAAgBtiB,KAAKC,OAAOmiB,EAAIG,UAAYF,EAAYE,WAAa,KAC3E,OAAID,EAAgB,GAAW,GAAGA,KAC9BA,EAAgB,KAAa,GAAGtiB,KAAKC,MAAMqiB,EAAgB,OAC3DA,EAAgB,MAAc,GAAGtiB,KAAKC,MAAMqiB,EAAgB,SAC5DA,EAAgB,OAAe,GAAGtiB,KAAKC,MAAMqiB,EAAgB,UAC7DA,EAAgB,QAAgB,GAAGtiB,KAAKC,MAAMqiB,EAAgB,WAC3D,GAAGtiB,KAAKC,MAAMqiB,EAAgB,WACvC,CA4mCoCE,CAAermB,KAAK0jB,UACpD1jB,KAAKojB,MAAMtI,WAAW9a,KAAKqjB,mBACrB,MAAAiD,GAAsC,OAAvBhmB,EAAKN,KAAK0jB,eAAoB,EAASpjB,EAAGyZ,UAAY/Z,KAAK0jB,SAAS3J,QAAQ9M,OAAS,EAC1GjN,KAAKgjB,kBAAkB/M,MAAM6O,QAAUwB,EAAa,OAAS,OAC7D,MAAMC,EAA+G,OAA/F/N,EAAmE,OAA7DtU,EAAiC,OAA3BD,EAAKjE,KAAK2a,OAAOxa,YAAiB,EAAS8D,EAAG4W,WAAgB,EAAS3W,EAAGkH,WAAgB,EAASoN,EAAGuB,QAC3E,OAA5D4C,EAA6B,OAAvBD,EAAK1c,KAAK0jB,eAAoB,EAAShH,EAAG3C,UAA4B4C,EAAG1L,SAASzI,IACnF,IAAAjH,EAAK+Z,EAAKC,EAAKwG,EACb,MAAAyE,EAAe,IAAI9S,EAAc,CACrCwB,KAAM1M,EAAOie,QACbtP,QAAS,YACT7D,gBAAiC,MAAhBiT,OAAuB,EAASA,EAAajT,gBAC9D0B,qBAAsC,MAAhBuR,OAAuB,EAASA,EAAavR,qBACnEC,sBAAuC,MAAhBsR,OAAuB,EAASA,EAAatR,sBACpEtD,OAAwB,MAAhB4U,OAAuB,EAASA,EAAa5U,OACrDwB,aAA8B,MAAhBoT,OAAuB,EAASA,EAAapT,aAC3DM,OAAwB,MAAhB8S,OAAuB,EAASA,EAAa9S,OACrDiB,WAAyE,OAA5DnT,EAAsB,MAAhBglB,OAAuB,EAASA,EAAaG,WAAgB,EAASnlB,EAAI4jB,OAC7F/R,SAAuE,OAA5DkI,EAAsB,MAAhBiL,OAAuB,EAASA,EAAaG,WAAgB,EAASpL,EAAIvV,KAC3FyN,WAAyE,OAA5D+H,EAAsB,MAAhBgL,OAAuB,EAASA,EAAaG,WAAgB,EAASnL,EAAIoL,OAC7FpT,UAAwE,OAA5DwO,EAAsB,MAAhBwE,OAAuB,EAASA,EAAaG,WAAgB,EAAS3E,EAAIxM,MAC5FhB,QAAS,KACHvU,KAAK0jB,UAAY1jB,KAAK6lB,mBACnB7lB,KAAA6lB,kBAAkB7lB,KAAK0jB,SAAUlb,EAClD,IAGWxI,KAAAgjB,kBAAkB7O,YAAYqS,EAAY,GAErD,EAEA/M,GAAgB,0BAA2BkJ,IAC3C,MAAMiE,WAAqCnU,EACzC,WAAA5S,CAAY6a,EAAQ7D,GACXpQ,QAEPtH,EAAca,KAAM,WACpBA,KAAK6mB,QAAU7mB,KAAK2T,aAAa,CAAEb,KAAM,SACnC,MAAAmD,EAAQpC,SAASC,cAAc,SAC/BmC,EAAAhC,YAAcjU,KAAKkU,UAAU2C,GAC9B7W,KAAA6mB,QAAQ1S,YAAY8B,GACzB,MAAM6Q,EAAW,IAAIC,GAA2BrM,EAAQ,IAClDsM,EAAY,IAAID,GAA2BrM,EAAQ,KACnDuM,EAAW,IAAIF,GAA2BrM,EAAQ,IACnD1a,KAAA6mB,QAAQ1S,YAAY2S,GACpB9mB,KAAA6mB,QAAQ1S,YAAY6S,GACpBhnB,KAAA6mB,QAAQ1S,YAAY8S,EAC7B,CACE,SAAA/S,CAAU2C,GACD,MAAA,iMAQQA,mBAGnB,EAEA4C,GAAgB,mCAAoCmN,IACpD,MAAMG,WAAmCtU,EACvC,WAAA5S,CAAY6a,EAAQwM,GACXzgB,QACPtH,EAAca,KAAM,WACpBA,KAAK6mB,QAAU7mB,KAAK2T,aAAa,CAAEb,KAAM,SACnC,MAAAmD,EAAQpC,SAASC,cAAc,SACrCmC,EAAMhC,YAAcjU,KAAKkU,UAAUwG,EAAQwM,GACtClnB,KAAA6mB,QAAQ1S,YAAY8B,GACnB,MAAAkR,EAAetT,SAASC,cAAc,OAC5CqT,EAAa9O,UAAY,gBACpBrY,KAAA6mB,QAAQ1S,YAAYgT,EAC7B,CACE,SAAAjT,CAAUwG,EAAQwM,GACZ,IAAA5mB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAChD,MAAMnK,GAA4G,OAAlGrR,EAAiE,OAA3DD,EAA4B,OAAtB3D,EAAKoa,EAAOva,YAAiB,EAASG,EAAG8mB,cAAmB,EAASnjB,EAAGojB,gBAAqB,EAASnjB,EAAGojB,WAAa,OAC5IC,EAA4B,IAAjBhS,EAAMtI,OAAe,IAAIsI,EAAM,KAAKA,EAAM,KAAKA,EAAM,KAAKA,EAAM,KAAKA,EAAM,KAAKA,EAAM,KAAOA,EACxGiS,EAAIpkB,SAASmkB,EAASE,MAAM,EAAG,GAAI,IACnCC,EAAItkB,SAASmkB,EAASE,MAAM,EAAG,GAAI,IACnCE,EAAIvkB,SAASmkB,EAASE,MAAM,EAAG,GAAI,IACnCG,EAAmB,QAAQJ,MAAME,MAAMC,UACvCE,EAAmB,QAAQL,MAAME,MAAMC,UACtC,MAAA,kFAIMT,oIAMqG,OAAlGvK,EAAiE,OAA3DD,EAA4B,OAAtBlE,EAAKkC,EAAOva,YAAiB,EAASqY,EAAG4O,cAAmB,EAAS1K,EAAG2K,gBAAqB,EAAS1K,EAAGmL,YAAc,oGAI3IF,qBACAC,qBACAD,uFAGqH,OAAlG9K,EAAiE,OAA3DD,EAA4B,OAAtBD,EAAKlC,EAAOva,YAAiB,EAASyc,EAAGwK,cAAmB,EAASvK,EAAGwK,gBAAqB,EAASvK,EAAGiL,WAAa,uDACpC,OAAlGrI,EAAiE,OAA3D1B,EAA4B,OAAtBjB,EAAKrC,EAAOva,YAAiB,EAAS4c,EAAGqK,cAAmB,EAASpJ,EAAGqJ,gBAAqB,EAAS3H,EAAGsI,kBAAoB,oMAYpK,EAEAvO,GAAgB,gCAAiCsN,IACjD,MAAMkB,WAAiCxQ,GACrC,WAAA5X,CAAY6a,GACHjU,QACPtH,EAAca,KAAM,UACpBA,KAAK2a,OAASD,CAClB,CACE,cAAA5C,GACQ,MAAA+C,EAAOhH,SAASC,cAAc,OACpC+G,EAAKxC,UAAY,OACX,MAAApC,EAAQpC,SAASC,cAAc,SAC/BmC,EAAAhC,YAAcjU,KAAKkU,YACzB2G,EAAK1G,YAAY8B,GACjB,IAAA,IAAS/I,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMia,EAAe,IAAIP,GAA6B5mB,KAAK2a,OAAQ,GAAKzN,EAAI,IAC5E2N,EAAK1G,YAAYgT,EACvB,CAEW,OADFnnB,KAAAyT,OAAOU,YAAY0G,GACjBA,CACX,CACE,SAAA3G,GACE,IAAI5T,EAAI2D,EACD,MAAA,yYAmBgF,OAAhEA,EAAiC,OAA3B3D,EAAKN,KAAK2a,OAAOxa,YAAiB,EAASG,EAAG8mB,cAAmB,EAASnjB,EAAGghB,UAAY,wGAO1H,EAEAxL,GAAgB,8BAA+BwO,IAC/C,MAAMC,WAAuCzV,EAC3C,WAAA5S,CAAYyH,GACHb,QAEPtH,EAAca,KAAM,uBACpBb,EAAca,KAAM,YACpBb,EAAca,KAAM,cAEpBb,EAAca,KAAM,uBACpBA,KAAKmoB,oBAAsB7gB,EAAM6gB,oBACjCnoB,KAAKooB,WAAa9gB,EAAM8gB,WACxB,MAAM3U,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACnCmD,EAAQpC,SAASC,cAAc,SAGrC,GAFMmC,EAAAhC,YAAcjU,KAAKkU,YACzBT,EAAOU,YAAY8B,GACfjW,KAAKooB,WACA3U,EAAAU,YAAYnU,KAAKooB,gBACnB,CACC,MAAAlQ,EAAYrE,SAASC,cAAc,OACzCoE,EAAUG,UAAY,qBACtBrY,KAAKqoB,oBAAsB,IAAIJ,GAAyB3gB,EAAMgK,OACzDtR,KAAAqoB,oBAAoB3Q,WAAM,GACrBQ,EAAA/D,YAAYnU,KAAKqoB,qBAC3B5U,EAAOU,YAAY+D,EACzB,CACIlY,KAAKsoB,SAAW,IAAIC,sBAAsB5gB,IAChCA,EAAAsJ,SAASuX,IACXA,EAAMC,gBACRzoB,KAAKmoB,qBACf,GACO,IAEEnoB,KAAAsoB,SAASI,QAAQ1oB,KAC1B,CACE,SAAAkU,GACS,MAAA,yKAWX,CACE,oBAAAjB,GACEjT,KAAKsoB,SAASK,YAClB,EAEAlP,GAAgB,qCAAsCyO,IACtD,MAAMU,WAAyBnW,EAC7B,WAAA5S,CAAYyH,GACHb,QAEPtH,EAAca,KAAM,sBAENb,EAAAa,KAAM,YAAa,IACnBb,EAAAa,KAAM,YAAa,SACnBb,EAAAa,KAAM,cAAc,GACpBb,EAAAa,KAAM,SAAU,MAChBb,EAAAa,KAAM,gBAAgB,GAEtBb,EAAAa,KAAM,kBAAmB,MACzBb,EAAAa,KAAM,wBAAyB,MAC/Bb,EAAAa,KAAM,sBAAuB,MAC3Cb,EAAca,KAAM,cAEpBb,EAAca,KAAM,wBACpBb,EAAca,KAAM,oBACpBb,EAAca,KAAM,0BACpBb,EAAca,KAAM,wBACpBb,EAAca,KAAM,sBACpBb,EAAca,KAAM,sBACpBA,KAAK6oB,mBAAqBvhB,EAAMwhB,aAAaC,WAAWzgB,IACtDtI,KAAKgpB,cAAc,IAErBhpB,KAAKipB,WAAa3hB,EAAM4hB,UACxBlpB,KAAKmpB,qBAAuB7hB,EAAM6gB,oBAClCnoB,KAAKopB,gBAAkB9hB,EAAM+hB,eAC7BrpB,KAAKspB,sBAAwBhiB,EAAMiiB,qBACnCvpB,KAAKwpB,oBAAsBliB,EAAMmiB,mBACjC,MAAMhW,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACnCmD,EAAQpC,SAASC,cAAc,SAC/BmC,EAAAhC,YAAcjU,KAAKkU,YACzBT,EAAOU,YAAY8B,EACvB,CAEE,YAAIqE,GACF,OAAOta,KAAK0pB,SAChB,CACE,SAAAxV,GACM,IAAA5T,EACE,MAAAua,EAAkE,OAA1Dva,EAAKN,KAAK6oB,mBAAmBc,QAAQC,WAAWzpB,YAAiB,EAASG,EAAGua,KACpF,MAAA,uFAI0B,MAARA,OAAe,EAASA,EAAKvH,kBAAoBjC,EAAoB,wIAUlG,CACE,KAAAwY,GAEE,IADA,IAAIvpB,EAAI2D,EACyB,OAAzB3D,EAAKN,KAAKib,iBAAsB,EAAS3a,EAAGwpB,YAClD9pB,KAAKib,WAAW8O,YAAY/pB,KAAKib,WAAW6O,YAExC,MAAA7T,EAAQpC,SAASC,cAAc,SAC/BmC,EAAAhC,YAAcjU,KAAKkU,YACC,OAAzBjQ,EAAKjE,KAAKib,aAA+BhX,EAAGkQ,YAAY8B,EAC7D,CACE,UAAA+T,CAAW3P,GACTra,KAAK0pB,UAAY,IAAIrP,EAAQC,UACxBta,KAAAiqB,aAAeC,QAAQ7P,EAAQ8B,aACpCnc,KAAKmqB,OAAS,KACdnqB,KAAKoqB,YAAa,EAClBpqB,KAAKqqB,QACT,CACE,OAAA7J,CAAQnG,GACNra,KAAK0pB,UAAY,IAAI1pB,KAAK0pB,aAAcrP,EAAQC,UAC3Cta,KAAAiqB,aAAeC,QAAQ7P,EAAQ8B,aACpCnc,KAAKmqB,OAAS,KACdnqB,KAAKoqB,YAAa,EAClBpqB,KAAKqqB,QACT,CACE,UAAAlM,CAAW1b,EAAS4f,EAAQ,GAC1BriB,KAAK0pB,UAAU5H,OAAOO,EAAO,EAAG5f,GAChCzC,KAAKqqB,QACT,CACE,aAAA5I,CAAcY,EAAQ,GACfriB,KAAA0pB,UAAU5H,OAAOO,EAAO,GAC7BriB,KAAKqqB,QACT,CACE,aAAA7H,CAAc/f,EAAS4f,EAAQ,GACxBriB,KAAA0pB,UAAUrH,GAAS5f,EACxBzC,KAAKqqB,QACT,CACE,WAAAC,CAAYpO,GACVlc,KAAK6kB,UAAY3I,EACjBlc,KAAKmqB,OAAS,KACdnqB,KAAKoqB,YAAa,EAClBpqB,KAAKqqB,QACT,CACE,UAAAE,CAAWC,GACTxqB,KAAKmqB,OAAS,KACdnqB,KAAKoqB,WAAaI,EAClBxqB,KAAKqqB,QACT,CACE,QAAAI,CAASzoB,GACPhC,KAAKmqB,OAASnoB,EACdhC,KAAKoqB,YAAa,EAClBpqB,KAAK0pB,UAAY,GACjB1pB,KAAKqqB,QACT,CACE,gBAAAK,GACE1qB,KAAKyqB,SAAS,IAAI3pB,MAAM,qBAC5B,CACE,WAAA6pB,GACE3qB,KAAKipB,YACT,CACE,aAAA2B,GACE5qB,KAAKipB,YACT,CACE,MAAAoB,GACM,IAAA/pB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIuK,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAAKC,GAAKC,GAAKC,GAC3O9sB,KAAK6pB,QACL,MAAMnP,GAAS1a,KAAK6oB,mBAAmBc,QAAQC,WAC/C,GAAI5pB,KAAKmqB,OAAQ,CACf,MAAMnoB,EAA+B,OAAtB1B,EAAKoa,GAAOva,YAAiB,EAASG,EAAG0B,MAClD+qB,EAAe,IAAI/U,GAAiB,CACxCI,MAAO,CACLlD,MAAsD,OAA9CjR,EAAc,MAATjC,OAAgB,EAASA,EAAMoW,YAAiB,EAASnU,EAAGiR,OAASlV,KAAKmqB,OAAO1nB,QAC9F8Q,UAA4F,OAAhFiF,EAAoD,OAA9CtU,EAAc,MAATlC,OAAgB,EAASA,EAAMoW,YAAiB,EAASlU,EAAGwiB,WAAgB,EAASlO,EAAGjD,MAC/Gb,WAA6F,OAAhFiI,EAAoD,OAA9CD,EAAc,MAAT1a,OAAgB,EAASA,EAAMoW,YAAiB,EAASsE,EAAGgK,WAAgB,EAAS/J,EAAGwI,OAChH/R,SAA2F,OAAhFyJ,EAAoD,OAA9CD,EAAc,MAAT5a,OAAgB,EAASA,EAAMoW,YAAiB,EAASwE,EAAG8J,WAAgB,EAAS7J,EAAG9W,KAC9GyN,WAA6F,OAAhFuJ,EAAoD,OAA9CD,EAAc,MAAT9a,OAAgB,EAASA,EAAMoW,YAAiB,EAAS0E,EAAG4J,WAAgB,EAAS3J,EAAG4J,QAElH7U,OAAQ,CACNoD,KAAsD,OAA/C8I,EAAc,MAAThc,OAAgB,EAASA,EAAM8P,aAAkB,EAASkM,EAAG9I,KACzE5B,gBAAiE,OAA/CoM,EAAc,MAAT1d,OAAgB,EAASA,EAAM8P,aAAkB,EAAS4N,EAAGpM,gBACpF0B,qBAAsE,OAA/C2K,EAAc,MAAT3d,OAAgB,EAASA,EAAM8P,aAAkB,EAAS6N,EAAG3K,qBACzFC,sBAAuE,OAA/C2K,EAAc,MAAT5d,OAAgB,EAASA,EAAM8P,aAAkB,EAAS8N,EAAG3K,sBAC1F1B,UAA6F,OAAjFuM,EAAqD,OAA/CD,EAAc,MAAT7d,OAAgB,EAASA,EAAM8P,aAAkB,EAAS+N,EAAG6G,WAAgB,EAAS5G,EAAGvK,MAChHb,WAA8F,OAAjFsL,EAAqD,OAA/CD,EAAc,MAAT/d,OAAgB,EAASA,EAAM8P,aAAkB,EAASiO,EAAG2G,WAAgB,EAAS1G,EAAGmF,OACjH/R,SAA4F,OAAjF8M,EAAqD,OAA/CD,EAAc,MAATje,OAAgB,EAASA,EAAM8P,aAAkB,EAASmO,EAAGyG,WAAgB,EAASxG,EAAGna,KAC/GyN,WAA8F,OAAjF4M,EAAqD,OAA/CD,EAAc,MAATne,OAAgB,EAASA,EAAM8P,aAAkB,EAASqO,EAAGuG,WAAgB,EAAStG,EAAGuG,OACjHlT,OAAwD,OAA/C4M,EAAc,MAATre,OAAgB,EAASA,EAAM8P,aAAkB,EAASuO,EAAG5M,OAC3E9B,OAAwD,OAA/C2O,EAAc,MAATte,OAAgB,EAASA,EAAM8P,aAAkB,EAASwO,EAAG3O,OAC3EwB,aAA8D,OAA/C0X,EAAc,MAAT7oB,OAAgB,EAASA,EAAM8P,aAAkB,EAAS+Y,EAAG1X,gBAMrF,OAHA4Z,EAAarV,MAAwC,OAAjCoT,EAAK9qB,KAAKgtB,yBAA8B,EAASlC,EAAGpN,KAAK1d,KAAM,CAAEkc,SAAUlc,KAAK6kB,UAAW7iB,MAAOhC,KAAKmqB,UAC3H4C,EAAatU,wBAAuB,IAAMzY,KAAK2qB,qBACrB,OAAzBI,EAAK/qB,KAAKib,aAA+B8P,EAAG5W,YAAY4Y,GAE/D,CACI,GAAI/sB,KAAKoqB,WAAY,CACb,MAAA6C,EAAiB,IAAIhF,GAAyBvN,IAGpD,OAFAuS,EAAevV,MAA0C,OAAnCsT,EAAKhrB,KAAKktB,2BAAgC,EAASlC,EAAGtN,KAAK1d,KAAM,CAAEkc,SAAUlc,KAAK6kB,kBAC9E,OAAzBoG,EAAKjrB,KAAKib,aAA+BgQ,EAAG9W,YAAY8Y,GAE/D,CACQ,GAA0B,IAA1BjtB,KAAK0pB,UAAUzc,OAAc,CAC/B,MAAMkgB,EAA+B,OAAtBjC,EAAKxQ,GAAOva,YAAiB,EAAS+qB,EAAGiC,MAClDC,EAAe,IAAIpV,GAAiB,CACxCI,MAAO,CACLlD,MAAsD,OAA9CiW,EAAc,MAATgC,OAAgB,EAASA,EAAM/U,YAAiB,EAAS+S,EAAGjW,OAAS,MAAMlV,KAAK6kB,yBAC7FtR,UAA4F,OAAhF8X,EAAoD,OAA9CD,EAAc,MAAT+B,OAAgB,EAASA,EAAM/U,YAAiB,EAASgT,EAAG1E,WAAgB,EAAS2E,EAAG9V,MAC/Gb,WAA6F,OAAhF6W,EAAoD,OAA9CD,EAAc,MAAT6B,OAAgB,EAASA,EAAM/U,YAAiB,EAASkT,EAAG5E,WAAgB,EAAS6E,EAAGpG,OAChH/R,SAA2F,OAAhFqY,EAAoD,OAA9CD,EAAc,MAAT2B,OAAgB,EAASA,EAAM/U,YAAiB,EAASoT,EAAG9E,WAAgB,EAAS+E,EAAG1lB,KAC9GyN,WAA6F,OAAhFmY,EAAoD,OAA9CD,EAAc,MAATyB,OAAgB,EAASA,EAAM/U,YAAiB,EAASsT,EAAGhF,WAAgB,EAASiF,EAAGhF,QAElH7U,OAAQ,CACNoD,KAAsD,OAA/C0W,EAAc,MAATuB,OAAgB,EAASA,EAAMrb,aAAkB,EAAS8Z,EAAG1W,KACzE5B,gBAAiE,OAA/CuY,EAAc,MAATsB,OAAgB,EAASA,EAAMrb,aAAkB,EAAS+Z,EAAGvY,gBACpF0B,qBAAsE,OAA/C8W,EAAc,MAATqB,OAAgB,EAASA,EAAMrb,aAAkB,EAASga,EAAG9W,qBACzFC,sBAAuE,OAA/C8W,EAAc,MAAToB,OAAgB,EAASA,EAAMrb,aAAkB,EAASia,EAAG9W,sBAC1F1B,UAA6F,OAAjF0Y,EAAqD,OAA/CD,EAAc,MAATmB,OAAgB,EAASA,EAAMrb,aAAkB,EAASka,EAAGtF,WAAgB,EAASuF,EAAG1W,MAChHb,WAA8F,OAAjFyX,EAAqD,OAA/CD,EAAc,MAATiB,OAAgB,EAASA,EAAMrb,aAAkB,EAASoa,EAAGxF,WAAgB,EAASyF,EAAGhH,OACjH/R,SAA4F,OAAjFiZ,EAAqD,OAA/CD,EAAc,MAATe,OAAgB,EAASA,EAAMrb,aAAkB,EAASsa,EAAG1F,WAAgB,EAAS2F,EAAGtmB,KAC/GyN,WAA8F,OAAjF+Y,EAAqD,OAA/CD,EAAc,MAATa,OAAgB,EAASA,EAAMrb,aAAkB,EAASwa,EAAG5F,WAAgB,EAAS6F,EAAG5F,OACjHlT,OAAwD,OAA/C+Y,EAAc,MAATW,OAAgB,EAASA,EAAMrb,aAAkB,EAAS0a,EAAG/Y,OAC3E9B,OAAwD,OAA/C8a,EAAc,MAATU,OAAgB,EAASA,EAAMrb,aAAkB,EAAS2a,EAAG9a,OAC3EwB,aAA8D,OAA/CuZ,EAAc,MAATS,OAAgB,EAASA,EAAMrb,aAAkB,EAAS4a,EAAGvZ,gBAMrF,OAHAia,EAAa1V,MAAyC,OAAlCiV,GAAM3sB,KAAKqtB,yBAA8B,EAASV,GAAIjP,KAAK1d,KAAM,CAAEkc,SAAUlc,KAAK6kB,aACtGuI,EAAa3U,wBAAuB,IAAMzY,KAAK4qB,uBACpB,OAA1BgC,GAAM5sB,KAAKib,aAA+B2R,GAAIzY,YAAYiZ,GAEjE,CACU,MAAAvS,GAAOhH,SAASC,cAAc,MAuBpC,GAtB2B,OAA1B+Y,GAAM7sB,KAAKib,aAA+B4R,GAAI1Y,YAAY0G,IAC3D7a,KAAK0pB,UAAUzY,SAAQ,CAACxO,EAAS4f,KAC/B,GAAIriB,KAAKstB,iBAEP,YADAzS,GAAK1G,YAAYnU,KAAKstB,iBAAiB,CAAE7qB,UAAS4f,WAG9C,MAAA2C,EAAW,IAAIrC,GAAgBjI,IAC5BsK,EAAAU,WAAWjjB,EAASzC,KAAK6kB,WACzBG,EAAAW,gBAAgBzH,IACnB,IAAA3c,EACI,OAA+B,OAA/BA,EAAMvB,KAAKopB,sBAA2B,EAAS7nB,EAAImc,KAAK1d,KAAMke,EAAUmE,EAAK,IAE9E2C,EAAAY,sBAAqB,CAAC1H,EAAU1V,KACnC,IAAAjH,EACI,OAAqC,OAArCA,EAAMvB,KAAKspB,4BAAiC,EAAS/nB,EAAImc,KAAK1d,KAAMke,EAAU1V,EAAQ6Z,EAAK,IAE5F2C,EAAAc,oBAAoB5H,IACvB,IAAA3c,EACI,OAAmC,OAAnCA,EAAMvB,KAAKwpB,0BAA+B,EAASjoB,EAAImc,KAAK1d,KAAMke,EAAUmE,EAAK,IAE3FxH,GAAK1G,YAAY6Q,EAAQ,IAEvBhlB,KAAKiqB,aAAc,CACf,MAAAsD,EAAiB,IAAIrF,GAA+B,CACxD5W,MAAOoJ,GACP0N,WAAmD,OAAtC0E,GAAM9sB,KAAKwtB,6BAAkC,EAASV,GAAIpP,KAAK1d,KAAM,CAAEkc,SAAUlc,KAAK6kB,YACnGsD,oBAAqB,KACf,IAAA5mB,EACI,OAAoC,OAApCA,EAAMvB,KAAKmpB,2BAAgC,EAAS5nB,EAAImc,KAAK1d,KAAMA,KAAK6kB,UAAS,IAG7FhK,GAAK1G,YAAYoZ,EACvB,CACA,CAEE,sBAAAE,CAAuBC,GACrB1tB,KAAKktB,qBAAuBQ,EAC5B1tB,KAAKqqB,QACT,CACE,oBAAAsD,CAAqBD,GACnB1tB,KAAKqtB,mBAAqBK,EAC1B1tB,KAAKqqB,QACT,CACE,oBAAAuD,CAAqBF,GACnB1tB,KAAKgtB,mBAAqBU,EAC1B1tB,KAAKqqB,QACT,CACE,kBAAAwD,CAAmBH,GACjB1tB,KAAKstB,iBAAmBI,EACxB1tB,KAAKqqB,QACT,CACE,wBAAAyD,CAAyBJ,GACvB1tB,KAAKwtB,uBAAyBE,EAC9B1tB,KAAKqqB,QACT,CACE,YAAArB,GACEhpB,KAAKqqB,QACT,CAEE,oBAAApX,GACEjT,KAAK6oB,mBAAmBkF,aAC5B,EAEAtU,GAAgB,qBAAsBmP,IACtC,MAAMoF,WAAmCvb,EACvC,WAAA5S,CAAYyH,GACHb,QAEPtH,EAAca,KAAM,WACpBb,EAAca,KAAM,eAEpBb,EAAca,KAAM,YACpBb,EAAca,KAAM,aACpBb,EAAca,KAAM,UACpBb,EAAca,KAAM,kBACpBb,EAAca,KAAM,UAEpBb,EAAca,KAAM,iBACpBA,KAAKiuB,QAAU3mB,EAAM4mB,OACrBluB,KAAKmuB,YAAc7mB,EAAM8mB,WACzBpuB,KAAKquB,cAAgB/mB,EAAMwhB,aAC3B,MAAMrV,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACpC9S,KAAAgU,OAASH,SAASC,cAAc,SAChC9T,KAAAsuB,SAAWza,SAASC,cAAc,OACvC9T,KAAKsuB,SAASjW,UAAY,YACrBrY,KAAAuuB,UAAY,IAAIjZ,EAAYtV,KAAKiuB,QAAQpc,KAAK2D,KAAOL,EAAgBhV,OACrEH,KAAAuuB,UAAUxa,aAAa,OAAQ,MAC/B/T,KAAAmY,OAAStE,SAASC,cAAc,KAChC9T,KAAAmY,OAAOlE,YAAcjU,KAAKiuB,QAAQ/Y,KACjC,MAAAsZ,EAAS3a,SAASC,cAAc,OACtC0a,EAAOnW,UAAY,SACnBrY,KAAKyuB,eAAiB,IAAInZ,EAAYH,EAAgBC,OACjDpV,KAAAsuB,SAASna,YAAYnU,KAAKuuB,WAC1BvuB,KAAAsuB,SAASna,YAAYnU,KAAKmY,QAC1BnY,KAAAsuB,SAASna,YAAYqa,GACtBlnB,EAAMonB,YACH1uB,KAAAsuB,SAASna,YAAYnU,KAAKyuB,gBAE1Bhb,EAAAU,YAAYnU,KAAKgU,QACjBP,EAAAU,YAAYnU,KAAKsuB,UACxBtuB,KAAKyuB,eAAexY,MAAM6O,QAAU9kB,KAAKmuB,YAAc,QAAU,OACjEnuB,KAAKgpB,cACT,CACE,SAAA9U,GACE,IAAI5T,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIuK,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAClI,MAAA5Q,EAAS1a,KAAKquB,cAAczE,WAC3B,MAAA,6LASqL,OAAlKlN,EAAsI,OAAhIlE,EAAmG,OAA7FtU,EAAgE,OAA1DD,EAA4B,OAAtB3D,EAAKoa,EAAOva,YAAiB,EAASG,EAAGquB,aAAkB,EAAS1qB,EAAG2qB,YAAiB,EAAS1qB,EAAG2qB,YAAiB,EAASrW,EAAGqC,WAAgB,EAAS6B,EAAG1H,uBAAyB,yEAI5C,OAAlK+H,EAAsI,OAAhID,EAAmG,OAA7FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKjC,EAAOva,YAAiB,EAASwc,EAAGgS,aAAkB,EAAS/R,EAAGgS,YAAiB,EAAS/R,EAAGgS,YAAiB,EAAS/R,EAAGjC,WAAgB,EAASkC,EAAG9H,wBAA0B,wPAgBhB,OAApM6K,EAAwK,OAAlKD,EAAsI,OAAhID,EAAmG,OAA7FD,EAAgE,OAA1DD,EAA4B,OAAtB1B,EAAKtD,EAAOva,YAAiB,EAAS6d,EAAG2Q,aAAkB,EAASjP,EAAGkP,YAAiB,EAASjP,EAAGkP,YAAiB,EAASjP,EAAG/E,WAAgB,EAASgF,EAAG6G,WAAgB,EAAS5G,EAAGqF,SAAW,qCAC9B,OAApM/E,EAAwK,OAAlKD,EAAsI,OAAhID,EAAmG,OAA7FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKrF,EAAOva,YAAiB,EAAS4f,EAAG4O,aAAkB,EAAS3O,EAAG4O,YAAiB,EAAS3O,EAAG4O,YAAiB,EAAS3O,EAAGrF,WAAgB,EAASsF,EAAGuG,WAAgB,EAAStG,EAAGuG,SAAW,mCAChC,OAApMqE,EAAwK,OAAlKD,EAAsI,OAAhID,EAAmG,OAA7FD,EAAgE,OAA1DvK,EAA4B,OAAtBD,EAAK3F,EAAOva,YAAiB,EAASkgB,EAAGsO,aAAkB,EAASrO,EAAGsO,YAAiB,EAAS/D,EAAGgE,YAAiB,EAAS/D,EAAGjQ,WAAgB,EAASkQ,EAAGrE,WAAgB,EAASsE,EAAGjlB,OAAS,4BAChC,OAApMulB,EAAwK,OAAlKD,EAAsI,OAAhID,EAAmG,OAA7FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKvQ,EAAOva,YAAiB,EAAS8qB,EAAG0D,aAAkB,EAASzD,EAAG0D,YAAiB,EAASzD,EAAG0D,YAAiB,EAASzD,EAAGvQ,WAAgB,EAASwQ,EAAG3E,WAAgB,EAAS4E,EAAG/V,QAAU,6GAQpP,CACE,YAAAyT,GACM,IAAA1oB,EAAI2D,EAAIC,EAAIsU,EACXxY,KAAAgU,OAAOC,YAAcjU,KAAKkU,YAC1BlU,KAAAyuB,eAAe3Y,aAAkD,OAApCxV,EAAKN,KAAKiuB,QAAQa,oBAAyB,EAASxuB,EAAGiV,QAAU,OAC9FvV,KAAAyuB,eAAe1Y,WAAgD,OAApC9R,EAAKjE,KAAKiuB,QAAQa,oBAAyB,EAAS7qB,EAAGuR,MAAQL,EAAgBC,OAC/GpV,KAAKmY,OAAOlE,YAAcjU,KAAKiuB,QAAQ/Y,MAAQ,eAC1ClV,KAAAuuB,UAAUzY,aAAyC,OAA3B5R,EAAKlE,KAAKiuB,QAAQpc,WAAgB,EAAS3N,EAAGqR,QAAU,OAChFvV,KAAAuuB,UAAUxY,WAAuC,OAA3ByC,EAAKxY,KAAKiuB,QAAQpc,WAAgB,EAAS2G,EAAGhD,MAAQL,EAAgBhV,MACrG,EAEAsZ,GAAgB,iCAAkCuU,IAClD,MAAMe,WAA+Btc,EACnC,WAAA5S,CAAYipB,EAActiB,EAAMkoB,EAAY5uB,EAASkvB,GAC5CvoB,QAEPtH,EAAca,KAAM,sBAEpBb,EAAca,KAAM,SACNb,EAAAa,KAAM,iBAAkB,GACtCb,EAAca,KAAM,YACpBb,EAAca,KAAM,eACpBb,EAAca,KAAM,eAEpBb,EAAca,KAAM,eACpBb,EAAca,KAAM,SACpBb,EAAca,KAAM,UACpBA,KAAKivB,MAAQzoB,EACbxG,KAAKkvB,YAAcR,EACnB1uB,KAAK+a,SAAWjb,EAChBE,KAAKmvB,eAAiB,EACtBnvB,KAAKovB,YAAcJ,EACnB,MAAMvb,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACpC9S,KAAAqvB,YAAc,IAAI3W,GAA2B,YAATlS,EAAqB2O,EAAgBpE,OAASoE,EAAgBE,UAClGrV,KAAAojB,MAAQvP,SAASC,cAAc,OAC/B9T,KAAAojB,MAAM/K,UAAY,QAAQ7R,IAC1BxG,KAAAgU,OAASH,SAASC,cAAc,SAC9BL,EAAAU,YAAYnU,KAAKgU,QACjBP,EAAAU,YAAYnU,KAAKqvB,aACjB5b,EAAAU,YAAYnU,KAAKojB,OACxBpjB,KAAKqvB,YAAYnuB,iBAAiB,QAASlB,KAAKsvB,WAAWC,KAAKvvB,OAChE6T,SAAS3S,iBAAiB,QAASlB,KAAKwvB,mBAAmBD,KAAKvvB,OAChEA,KAAK6oB,mBAAqBC,EAAaC,WAAWzgB,IAChDtI,KAAKgpB,cAAc,IAErBhpB,KAAKgpB,cACT,CACE,SAAA9U,GACE,IAAI5T,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACpF,MAAMzF,EAAS1a,KAAK6oB,mBAAmBc,QAAQC,WACxC,MAAA,kOAWgJ,OAAhIpR,EAAmG,OAA7FtU,EAAgE,OAA1DD,EAA4B,OAAtB3D,EAAKoa,EAAOva,YAAiB,EAASG,EAAGquB,aAAkB,EAAS1qB,EAAG2qB,YAAiB,EAAS1qB,EAAG2qB,YAAiB,EAASrW,EAAGrF,eAAiB,4BAC3C,OAAhI0J,EAAmG,OAA7FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKhC,EAAOva,YAAiB,EAASuc,EAAGiS,aAAkB,EAAShS,EAAGiS,YAAiB,EAAShS,EAAGiS,YAAiB,EAAShS,EAAGlL,SAAW,0CAC1B,OAAhI+N,EAAmG,OAA7F1B,EAAgE,OAA1DjB,EAA4B,OAAtBD,EAAKpC,EAAOva,YAAiB,EAAS2c,EAAG6R,aAAkB,EAAS5R,EAAG6R,YAAiB,EAAS5Q,EAAG6Q,YAAiB,EAASnP,EAAGpM,kBAAoB,gCACvC,OAAhIwM,EAAmG,OAA7FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKjF,EAAOva,YAAiB,EAASwf,EAAGgP,aAAkB,EAAS/O,EAAGgP,YAAiB,EAAS/O,EAAGgP,YAAiB,EAAS/O,EAAGrM,SAAW,0MAQO,OAAlK0M,EAAsI,OAAhID,EAAmG,OAA7FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKrF,EAAOva,YAAiB,EAAS4f,EAAG4O,aAAkB,EAAS3O,EAAG4O,YAAiB,EAAS3O,EAAG4O,YAAiB,EAAS3O,EAAGrF,WAAgB,EAASsF,EAAG8E,UAAY,oHAO5N,CACE,YAAA+D,GACE,IAAI1oB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EACnB3c,KAAAgU,OAAOC,YAAcjU,KAAKkU,YAC/B,MACM0G,EAAkE,OAA1D3W,EAA4B,OAAtB3D,EADLN,KAAK6oB,mBAAmBc,QAAQC,WACfzpB,YAAiB,EAASG,EAAGquB,aAAkB,EAAS1qB,EAAG2qB,MACrFa,EAA0B,YAAfzvB,KAAKivB,MAChBS,EAAeD,EAA0D,OAA9CvrB,EAAa,MAAR0W,OAAe,EAASA,EAAK+U,cAAmB,EAASzrB,EAAG4N,OAAwD,OAA9C0G,EAAa,MAARoC,OAAe,EAASA,EAAKb,cAAmB,EAASvB,EAAG1G,OACvK8d,EAAcH,EAAWta,EAAgBpE,OAASoE,EAAgBE,SACxErV,KAAKqvB,YAAYhW,eAA2E,OAA3DqD,EAAqB,MAAhBgT,OAAuB,EAASA,EAAa7d,WAAgB,EAAS6K,EAAGlH,MAAQoa,GACvH5vB,KAAKqvB,YAAYjW,iBAA6E,OAA3DuD,EAAqB,MAAhB+S,OAAuB,EAASA,EAAa7d,WAAgB,EAAS8K,EAAGpH,QAAU,OAC3HvV,KAAKqvB,YAAY/V,uBAAuC,MAAhBoW,OAAuB,EAASA,EAAapc,kBAAoB,eACzGtT,KAAKqvB,YAAY9V,4BAA4C,MAAhBmW,OAAuB,EAASA,EAAa1a,uBAAyB,OACnHhV,KAAKqvB,YAAY7V,6BAA6C,MAAhBkW,OAAuB,EAASA,EAAaza,wBAA0B,OACrHjV,KAAK6vB,kBACT,CACE,UAAA/U,CAAWhb,GACTE,KAAK+a,SAAWjb,EAChBE,KAAK6vB,kBACT,CACE,gBAAAA,GACE7vB,KAAKojB,MAAMvN,UAAY,GACvB7V,KAAK+a,SAAS9J,SAAQ,CAACid,EAAQ7L,KACvB,MAAAyN,EAAW,IAAI9B,GAA2B,CAC9CE,SACAQ,WAAY1uB,KAAKkvB,YACjBd,WAAYpuB,KAAKmvB,iBAAmB9M,EACpCyG,aAAc9oB,KAAK6oB,mBAAmBc,UAE/BmG,EAAA5uB,iBAAiB,SAAS,KACjClB,KAAKmvB,eAAiB9M,EACtB6L,EAAO3Z,QAAQ2Z,GACfluB,KAAK6vB,mBACL7vB,KAAK+vB,WAAW,IAEb/vB,KAAAojB,MAAMjP,YAAY2b,EAAQ,GAErC,CACE,UAAAR,CAAWnuB,GACTA,EAAMmT,kBACN,MAAM0b,EAAyC,UAA7BhwB,KAAKojB,MAAMnN,MAAM6O,QACnC9kB,KAAKojB,MAAMnN,MAAM6O,QAAUkL,EAAY,QAAU,OAC7CA,GACFhwB,KAAKovB,aAEX,CACE,kBAAAI,CAAmBruB,GACZnB,KAAKwjB,SAASriB,EAAMqW,SACvBxX,KAAK+vB,WAEX,CACE,SAAAA,GACO/vB,KAAAojB,MAAMnN,MAAM6O,QAAU,MAC/B,CACE,YAAAmL,CAAa/B,GACNluB,KAAAmvB,eAAiBnvB,KAAK+a,SAAS8G,WAAWqO,GAAMA,EAAElqB,KAAOkoB,EAAOloB,KACrEhG,KAAK6vB,kBACT,CACE,oBAAA5c,GACEjT,KAAK6oB,mBAAmBkF,aAC5B,EAEAtU,GAAgB,4BAA6BsV,IAC7C,MAAMoB,WAAgC1d,EACpC,WAAA5S,CAAYyH,GACHb,QAEPtH,EAAca,KAAM,sBAEpBb,EAAca,KAAM,aACNb,EAAAa,KAAM,SAAU,GAE9Bb,EAAca,KAAM,UACpBb,EAAca,KAAM,UACpBA,KAAKowB,UAAY9oB,EAAM+oB,SACvBrwB,KAAK6oB,mBAAqBvhB,EAAMgpB,SAASvH,WAAWzgB,IAC7CtI,KAAAgpB,aAAahpB,KAAKowB,UAAS,IAElC,MAAM3c,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACpC9S,KAAAuwB,OAAS1c,SAASC,cAAc,QACrC9T,KAAKuwB,OAAOlY,UAAY,eACnBrY,KAAAgU,OAASH,SAASC,cAAc,SACrC9T,KAAKgU,OAAOC,YAAcjU,KAAKkU,UAAUlU,KAAKowB,WACvC3c,EAAAU,YAAYnU,KAAKgU,QACjBP,EAAAU,YAAYnU,KAAKuwB,OAC5B,CACE,SAAArc,CAAUmc,GACR,IAAI/vB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAC5B,MAAMlC,EAAS1a,KAAK6oB,mBAAmBc,QAAQC,WACzC4G,EAAyB,WAAbH,EAAmF,OAA1DpsB,EAA4B,OAAtB3D,EAAKoa,EAAOmU,YAAiB,EAASvuB,EAAGwR,aAAkB,EAAS7N,EAAGwsB,gBAAkH,OAA/F/T,EAAgE,OAA1DlE,EAA4B,OAAtBtU,EAAKwW,EAAOva,YAAiB,EAAS+D,EAAGyqB,aAAkB,EAASnW,EAAGmX,cAAmB,EAASjT,EAAG+T,gBACvPnd,EAA+B,MAAbkd,OAAoB,EAASA,EAAUld,gBACzDH,EAA4B,MAAbqd,OAAoB,EAASA,EAAUrd,aAGrD,MAAA,gHAMiBG,sBAR4C,OAArDqJ,EAAkB,MAAb6T,OAAoB,EAASA,EAAU9J,WAAgB,EAAS/J,EAAGpH,kCAUlEpC,qDATkD,OAArDyJ,EAAkB,MAAb4T,OAAoB,EAASA,EAAU9J,WAAgB,EAAS9J,EAAG7W,0GAiB9F,CACE,QAAA2qB,CAASpmB,GACPtK,KAAK2wB,OAASrmB,EACdtK,KAAK4wB,aACT,CACE,YAAA5H,CAAaqH,GACXrwB,KAAKowB,UAAYC,EACjBrwB,KAAK4wB,aACT,CACE,WAAAA,GACE5wB,KAAKgU,OAAOC,YAAcjU,KAAKkU,UAAUlU,KAAKowB,WAC1CpwB,KAAK2wB,OAAS,GAChB3wB,KAAKuwB,OAAOtc,YAAcjU,KAAK2wB,OAAOpZ,WACjCvX,KAAAuwB,OAAOta,MAAM6O,QAAU,SAEvB9kB,KAAAuwB,OAAOta,MAAM6O,QAAU,MAElC,CACE,oBAAA7R,GACEjT,KAAK6oB,mBAAmBkF,aAC5B,EAEAtU,GAAgB,6BAA8B0W,IAC9C,MAAMU,WAAgCpe,EACpC,WAAA5S,CAAYipB,EAAcoF,GACjBznB,QAEPtH,EAAca,KAAM,sBAEpBb,EAAca,KAAM,WACpBb,EAAca,KAAM,aAEpBb,EAAca,KAAM,iBACpBb,EAAca,KAAM,gBACpBb,EAAca,KAAM,gBACpBb,EAAca,KAAM,cACpBb,EAAca,KAAM,UACpBA,KAAKiuB,QAAUC,EACf,MAAMza,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACpC9S,KAAAgU,OAASH,SAASC,cAAc,SAChC9T,KAAA8wB,WAAajd,SAASC,cAAc,OACzC9T,KAAK8wB,WAAWzY,UAAY,gBAC5BrY,KAAK+wB,aAAe,IAAIzb,OAAY,EAAQtV,KAAKiuB,QAAQpc,KAAK2D,KACzDxV,KAAA8iB,cAAgBjP,SAASC,cAAc,MACvC9T,KAAAgxB,aAAe,IAAIb,GAAwB,CAC9CG,SAAUxH,EACVuH,SAAU,WAEPrwB,KAAA8wB,WAAW3c,YAAYnU,KAAK+wB,cAC5B/wB,KAAA8wB,WAAW3c,YAAYnU,KAAK8iB,eAC5B9iB,KAAA8wB,WAAW3c,YAAYnU,KAAKgxB,cAC1Bvd,EAAAU,YAAYnU,KAAKgU,QACjBP,EAAAU,YAAYnU,KAAK8wB,YACxB9wB,KAAK6oB,mBAAqBC,EAAaC,WAAWzgB,IAC3CtI,KAAAgpB,aAAahpB,KAAK6kB,WAAa,QAAO,IAExC7kB,KAAAgpB,aAAahpB,KAAK6kB,WAAa,QACxC,CACE,SAAA3Q,GACE,IAAI5T,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EAAIC,EAChE,MAAMpF,EAAS1a,KAAK6oB,mBAAmBc,QAAQC,WACxC,MAAA,2RAe+I,OAAjIpR,EAAqG,OAA/FtU,EAAgE,OAA1DD,EAA4B,OAAtB3D,EAAKoa,EAAOva,YAAiB,EAASG,EAAGquB,aAAkB,EAAS1qB,EAAG0rB,cAAmB,EAASzrB,EAAGwiB,WAAgB,EAASlO,EAAG2M,SAAW,mCAChC,OAAjItI,EAAqG,OAA/FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKhC,EAAOva,YAAiB,EAASuc,EAAGiS,aAAkB,EAAShS,EAAGgT,cAAmB,EAAS/S,EAAG8J,WAAgB,EAAS7J,EAAG9W,OAAS,kCAC1B,OAAjI2Z,EAAqG,OAA/F1B,EAAgE,OAA1DjB,EAA4B,OAAtBD,EAAKpC,EAAOva,YAAiB,EAAS2c,EAAG6R,aAAkB,EAAS5R,EAAG4S,cAAmB,EAAS3R,EAAG0I,WAAgB,EAAShH,EAAGiH,SAAW,2BACpC,OAAjI7G,EAAqG,OAA/FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKjF,EAAOva,YAAiB,EAASwf,EAAGgP,aAAkB,EAAS/O,EAAG+P,cAAmB,EAAS9P,EAAG6G,WAAgB,EAAS5G,EAAGvK,QAAU,iGAOjL,CACE,YAAAyT,CAAa9M,GACXlc,KAAK6kB,UAAY3I,EACZlc,KAAAgU,OAAOC,YAAcjU,KAAKkU,YAC1BlU,KAAAgxB,aAAahI,aAAa,UAC/BhpB,KAAKixB,cACT,CACE,oBAAAC,CAAqBhD,EAAQhS,EAAUJ,GACrC9b,KAAKiuB,QAAUC,EACfluB,KAAK6kB,UAAY3I,EACZlc,KAAAgxB,aAAaN,SAAS5U,GAC3B9b,KAAKixB,cACT,CACE,YAAAA,GACM,IAAA3wB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIuK,EAAIC,EAAIC,EAAIC,EAChH,MAAMtQ,EAAS1a,KAAK6oB,mBAAmBc,QAAQC,WAC/C,OAAQ5pB,KAAK6kB,WACX,IAAK,QACE7kB,KAAA8iB,cAAc7O,aAAkJ,OAAlIuE,EAAqG,OAA/FtU,EAAgE,OAA1DD,EAA4B,OAAtB3D,EAAKoa,EAAOva,YAAiB,EAASG,EAAGquB,aAAkB,EAAS1qB,EAAG0rB,cAAmB,EAASzrB,EAAG/D,YAAiB,EAASqY,EAAGtD,OAAS,QACjMlV,KAAK+wB,aAAahb,WAAgL,OAApK+G,EAAwI,OAAlID,EAAqG,OAA/FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKhC,EAAOva,YAAiB,EAASuc,EAAGiS,aAAkB,EAAShS,EAAGgT,cAAmB,EAAS/S,EAAGzc,YAAiB,EAAS0c,EAAGhL,WAAgB,EAASiL,EAAGtH,MAAQL,EAAgBhV,OAC7OH,KAAK+wB,aAAajb,aAAkL,OAApK8J,EAAwI,OAAlID,EAAqG,OAA/FD,EAAgE,OAA1D1B,EAA4B,OAAtBjB,EAAKrC,EAAOva,YAAiB,EAAS4c,EAAG4R,aAAkB,EAAS3Q,EAAG2R,cAAmB,EAASjQ,EAAGvf,YAAiB,EAASwf,EAAG9N,WAAgB,EAAS+N,EAAGrK,QAAU,OACjO,MACF,IAAK,UACEvV,KAAA8iB,cAAc7O,aAAoJ,OAApI+L,EAAqG,OAA/FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKnF,EAAOva,YAAiB,EAAS0f,EAAG8O,aAAkB,EAAS7O,EAAG6P,cAAmB,EAAS5P,EAAGjV,cAAmB,EAASkV,EAAG9K,OAAS,UACnMlV,KAAK+wB,aAAahb,WAAkL,OAAtKsK,EAA0I,OAApID,EAAqG,OAA/FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKvF,EAAOva,YAAiB,EAAS8f,EAAG0O,aAAkB,EAASzO,EAAGyP,cAAmB,EAASxP,EAAGrV,cAAmB,EAASsV,EAAGvO,WAAgB,EAASwO,EAAG7K,MAAQL,EAAgBrK,SAC/O9K,KAAK+wB,aAAajb,aAAoL,OAAtKkV,EAA0I,OAApID,EAAqG,OAA/FD,EAAgE,OAA1DD,EAA4B,OAAtBvK,EAAK5F,EAAOva,YAAiB,EAASmgB,EAAGqO,aAAkB,EAAS9D,EAAG8E,cAAmB,EAAS7E,EAAGhgB,cAAmB,EAASigB,EAAGlZ,WAAgB,EAASmZ,EAAGzV,QAAU,OAG3O,CAEE,oBAAAtC,GACEjT,KAAK6oB,mBAAmBkF,aAC5B,EAEAtU,GAAgB,6BAA8BoX,IAC9C,MAAMM,WAA2B1Z,GAC/B,WAAA5X,CAAYyH,GACHb,QAEPtH,EAAca,KAAM,sBAENb,EAAAa,KAAM,YAAa,SACnBb,EAAAa,KAAM,eAAgB,GAEpCb,EAAca,KAAM,iBACpBb,EAAca,KAAM,eACpBb,EAAca,KAAM,eACpBb,EAAca,KAAM,UAEpBb,EAAca,KAAM,qBACpBA,KAAK6oB,mBAAqBvhB,EAAMwhB,aAAaC,WAAWzgB,IACtDtI,KAAKgpB,cAAc,IAErBhpB,KAAKoxB,kBAAoB9pB,EAAM+pB,gBACnC,CAEE,gBAAAC,GACE,IAAIhxB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIuK,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACpJ,MAAM/Q,EAAS1a,KAAK6oB,mBAAmBc,QAAQC,WACzC2H,EAA2G,OAA7FrtB,EAAgE,OAA1DD,EAA4B,OAAtB3D,EAAKoa,EAAOva,YAAiB,EAASG,EAAGquB,aAAkB,EAAS1qB,EAAG2qB,YAAiB,EAAS1qB,EAAGyrB,QAC7H,MAAA,CACL,CACE3pB,GAAI,QACJkP,MAAgE,OAAxDsD,EAAmB,MAAd+Y,OAAqB,EAASA,EAAWpxB,YAAiB,EAASqY,EAAGtD,OAAS,QAC5FrD,KAAM,CACJ0D,OAAmG,OAA1FoH,EAA8D,OAAxDD,EAAmB,MAAd6U,OAAqB,EAASA,EAAWpxB,YAAiB,EAASuc,EAAG7K,WAAgB,EAAS8K,EAAGpH,QAAU,MAChIC,KAAiG,OAA1FqH,EAA8D,OAAxDD,EAAmB,MAAd2U,OAAqB,EAASA,EAAWpxB,YAAiB,EAASyc,EAAG/K,WAAgB,EAASgL,EAAGrH,MAAQL,EAAgBhV,OAE9I2uB,cAAe,CACbvZ,OAAsN,OAA7MqK,EAAwK,OAAlKD,EAAsI,OAAhID,EAAmG,OAA7F1B,EAAgE,OAA1DjB,EAA4B,OAAtBD,EAAKpC,EAAOva,YAAiB,EAAS2c,EAAG6R,aAAkB,EAAS5R,EAAG6R,YAAiB,EAAS5Q,EAAG6Q,YAAiB,EAASnP,EAAG7E,WAAgB,EAAS8E,EAAGmP,oBAAyB,EAASlP,EAAGrK,QAAU,MACnPC,KAAoN,OAA7M0K,EAAwK,OAAlKD,EAAsI,OAAhID,EAAmG,OAA7FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKnF,EAAOva,YAAiB,EAAS0f,EAAG8O,aAAkB,EAAS7O,EAAG8O,YAAiB,EAAS7O,EAAG8O,YAAiB,EAAS7O,EAAGnF,WAAgB,EAASoF,EAAG6O,oBAAyB,EAAS5O,EAAG1K,MAAQL,EAAgBC,OAEjQb,QAAU2Z,IACHluB,KAAAwxB,0BAA0B,QAAStD,EAAM,GAGlD,CACEloB,GAAI,UACJkP,MAAkE,OAA1DiL,EAAmB,MAAdoR,OAAqB,EAASA,EAAWzmB,cAAmB,EAASqV,EAAGjL,OAAS,UAC9FrD,KAAM,CACJ0D,OAAqG,OAA5F8K,EAAgE,OAA1DD,EAAmB,MAAdmR,OAAqB,EAASA,EAAWzmB,cAAmB,EAASsV,EAAGvO,WAAgB,EAASwO,EAAG9K,QAAU,MAClIC,KAAmG,OAA5FqV,EAAgE,OAA1DvK,EAAmB,MAAdiR,OAAqB,EAASA,EAAWzmB,cAAmB,EAASwV,EAAGzO,WAAgB,EAASgZ,EAAGrV,MAAQL,EAAgBrK,SAEhJgkB,cAAe,CACbvZ,OAAsN,OAA7M4V,EAAwK,OAAlKD,EAAsI,OAAhID,EAAmG,OAA7FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKpQ,EAAOva,YAAiB,EAAS2qB,EAAG6D,aAAkB,EAAS5D,EAAG6D,YAAiB,EAAS5D,EAAG6D,YAAiB,EAAS5D,EAAGpQ,WAAgB,EAASqQ,EAAG4D,oBAAyB,EAAS3D,EAAG5V,QAAU,MACnPC,KAAoN,OAA7MiW,EAAwK,OAAlKD,EAAsI,OAAhID,EAAmG,OAA7FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAK1Q,EAAOva,YAAiB,EAASirB,EAAGuD,aAAkB,EAAStD,EAAGuD,YAAiB,EAAStD,EAAGuD,YAAiB,EAAStD,EAAG1Q,WAAgB,EAAS2Q,EAAGsD,oBAAyB,EAASrD,EAAGjW,MAAQL,EAAgBC,OAEjQb,QAAU2Z,IACHluB,KAAAwxB,0BAA0B,UAAWtD,EAAM,GAI1D,CACE,gBAAAuD,GACE,IAAInxB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACxE,MACM0R,EAA2G,OAA7FxtB,EAAgE,OAA1DD,EAA4B,OAAtB3D,EADjBN,KAAK6oB,mBAAmBc,QAAQC,WACHzpB,YAAiB,EAASG,EAAGquB,aAAkB,EAAS1qB,EAAG2qB,YAAiB,EAAS1qB,EAAG6V,QAC7H,MAAA,CACL,CACE/T,GAAI,cACJkP,MAAsE,OAA9DsD,EAAmB,MAAdkZ,OAAqB,EAASA,EAAWC,kBAAuB,EAASnZ,EAAGtD,OAAS,mBAClGrD,KAAM,CACJ0D,OAAyG,OAAhGoH,EAAoE,OAA9DD,EAAmB,MAAdgV,OAAqB,EAASA,EAAWC,kBAAuB,EAASjV,EAAG7K,WAAgB,EAAS8K,EAAGpH,QAAU,MACtIC,KAAuG,OAAhGqH,EAAoE,OAA9DD,EAAmB,MAAd8U,OAAqB,EAASA,EAAWC,kBAAuB,EAAS/U,EAAG/K,WAAgB,EAASgL,EAAGrH,MAAQL,EAAgBhV,OAEpJ2uB,cAAe,KACfva,QAAUjM,IACRoa,GAAsB1S,OAAOsO,gBAAgB,CAAEC,YAAY,GAAM,GAGrE,CACEvY,GAAI,aACJkP,MAAqE,OAA7D4H,EAAmB,MAAd4U,OAAqB,EAASA,EAAWzmB,iBAAsB,EAAS6R,EAAG5H,OAAS,cACjGrD,KAAM,CACJ0D,OAAwG,OAA/FyI,EAAmE,OAA7DjB,EAAmB,MAAd2U,OAAqB,EAASA,EAAWzmB,iBAAsB,EAAS8R,EAAGlL,WAAgB,EAASmM,EAAGzI,QAAU,MACrIC,KAAsG,OAA/FmK,EAAmE,OAA7DD,EAAmB,MAAdgS,OAAqB,EAASA,EAAWzmB,iBAAsB,EAASyU,EAAG7N,WAAgB,EAAS8N,EAAGnK,MAAQL,EAAgBrK,SAEnJgkB,cAAe,KACfva,QAAUjM,IACRoa,GAAsB1S,OAAOgS,mBAAmB,CAAEzD,YAAY,GAAM,GAGxE,CACEvY,GAAI,cACJkP,MAAsE,OAA9D0K,EAAmB,MAAd8R,OAAqB,EAASA,EAAW1mB,kBAAuB,EAAS4U,EAAG1K,OAAS,eAClGrD,KAAM,CACJ0D,OAAyG,OAAhGuK,EAAoE,OAA9DD,EAAmB,MAAd6R,OAAqB,EAASA,EAAW1mB,kBAAuB,EAAS6U,EAAGhO,WAAgB,EAASiO,EAAGvK,QAAU,MACtIC,KAAuG,OAAhGwK,EAAoE,OAA9DD,EAAmB,MAAd2R,OAAqB,EAASA,EAAW1mB,kBAAuB,EAAS+U,EAAGlO,WAAgB,EAASmO,EAAGxK,MAAQL,EAAgBrK,SAEpJgkB,cAAe,KACfva,QAAUjM,IACRoa,GAAsB1S,OAAOiP,oBAAoB,CAAEV,YAAY,GAAM,GAI/E,CACE,6BAAWqT,GACF,MAAA,CAAC,OAAQ,QAAS,YAC7B,CACE,YAAA5I,GACE,IAAI1oB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAC5B,MAAMlC,EAAS1a,KAAK6oB,mBAAmBc,QAAQC,WACzC+E,EAA+B,OAArBruB,EAAKN,KAAKyT,aAAkB,EAASnT,EAAG4a,cAAc,yBAClEyT,IACFA,EAAO1Y,MAAM3C,iBAA8E,OAA1DpP,EAA4B,OAAtBD,EAAKyW,EAAOva,YAAiB,EAAS8D,EAAG0qB,aAAkB,EAASzqB,EAAGoP,kBAAoBjC,EAAoB,KACtJsd,EAAO1Y,MAAM4b,WAAwE,OAA1DnV,EAA4B,OAAtBlE,EAAKkC,EAAOva,YAAiB,EAASqY,EAAGmW,aAAkB,EAASjS,EAAGjJ,SAAW,mBAAmBpC,EAAmB,QAEhI,OAA1BsL,EAAK3c,KAAK8xB,cAAgCnV,EAAG7B,WAAW9a,KAAKsxB,oBACnC,OAA1B1U,EAAK5c,KAAK+xB,cAAgCnV,EAAG9B,WAAW9a,KAAKyxB,mBAClE,CACE,yBAAAD,CAA0BtV,EAAUgS,GAClCluB,KAAK6kB,UAAY3I,EACblc,KAAKgyB,eACFhyB,KAAAgyB,cAAcd,qBAAqBhD,EAAQluB,KAAK6kB,UAA8B,UAAnB7kB,KAAK6kB,UAAwB7kB,KAAK+b,aAAe,GAEnH/b,KAAKoxB,kBAAkBlV,EAC3B,CACE,MAAAmO,CAAO/iB,GACLtH,KAAK6kB,UAAYvd,EAAM4U,SACvBlc,KAAK+b,aAAezU,EAAMwU,YAC1B9b,KAAKiyB,qBACT,CACE,mBAAAA,GACE,IAAI3xB,EAAI2D,EACR,MAAMiqB,EAASluB,KAAKsxB,mBAAmB/R,MAAMlE,GAAQ,CAAC,QAAS,WAAWxT,SAASwT,EAAIrV,KAAOqV,EAAIrV,KAAOhG,KAAK6kB,YAC1GqJ,IAC2B,OAA5B5tB,EAAKN,KAAKgyB,gBAAkC1xB,EAAG4wB,qBAAqBhD,EAAQluB,KAAK6kB,UAA8B,UAAnB7kB,KAAK6kB,UAAwB7kB,KAAK+b,aAAe,GACnH,OAA1B9X,EAAKjE,KAAK8xB,cAAgC7tB,EAAGgsB,aAAa/B,GAEjE,CACE,KAAAxW,CAAMC,GACA,IAAArX,EACJmG,MAAMiR,MAAMC,GACP3X,KAAAgU,OAASH,SAASC,cAAc,SAChC9T,KAAAgU,OAAOC,YAAcjU,KAAKkU,YACT,OAArB5T,EAAKN,KAAKyT,SAA2BnT,EAAG6T,YAAYnU,KAAKgU,QAC1DhU,KAAKgpB,cACT,CACE,cAAAlR,GACQ,MAAAoa,EAAgBlyB,KAAKsxB,mBACtBtxB,KAAAgyB,cAAgB,IAAInB,GAAwB7wB,KAAK6oB,mBAAmBc,QAASuI,EAAc,IAC3FlyB,KAAA8xB,YAAc,IAAI/C,GAAuB/uB,KAAK6oB,mBAAmBc,QAAS,WAAW,EAAMuI,GAAe,KACzG,IAAA5xB,EACuB,OAA1BA,EAAKN,KAAK+xB,cAAgCzxB,EAAGyvB,WAAW,IAEtD/vB,KAAA+xB,YAAc,IAAIhD,GAAuB/uB,KAAK6oB,mBAAmBc,QAAS,WAAW,EAAO3pB,KAAKyxB,oBAAoB,KACpH,IAAAnxB,EACuB,OAA1BA,EAAKN,KAAK8xB,cAAgCxxB,EAAGyvB,WAAW,IAE3D/vB,KAAK8xB,YAAY7B,aAAaiC,EAAc,IACtC,MAAA1D,EAAS3a,SAASC,cAAc,OACtC0a,EAAOnW,UAAY,SACb,MAAA0B,EAAUlG,SAASC,cAAc,OACvCiG,EAAQ1B,UAAY,UACZ0B,EAAA5F,YAAYnU,KAAK8xB,aACjB/X,EAAA5F,YAAYnU,KAAK+xB,aACnB,MAAA7Z,EAAYrE,SAASC,cAAc,OAKlC,OAJPoE,EAAUG,UAAY,uBACZH,EAAA/D,YAAYnU,KAAKgyB,eAC3B9Z,EAAU/D,YAAYqa,GACtBtW,EAAU/D,YAAY4F,GACf7B,CACX,CACE,SAAAhE,GACS,MAAA,qPAUiB7C,EAAoB,8CACVA,EAAmB,sRAmBzD,CAEE,oBAAA4B,GACEjT,KAAK6oB,mBAAmBkF,aAC5B,EAEAtU,GAAgB,uBAAwB0X,IACxC,MAAMgB,GACJ,WAAAtyB,CAAY2d,GACVre,EAAca,KAAM,UACpBA,KAAKwd,OAASA,CAClB,CACE,MAAA1N,GACwB4S,GAAA1S,OAAOwM,wBAAwBxc,KACzD,EAEA,MAAMoyB,GAAoB,CACxBvD,MAAO,CACL/c,OAAQ,CACND,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBhV,OAEvBmT,gBAAiB,cACjB0B,qBAAsB3D,EAAoB,OAC1C4D,sBAAuB5D,EAAoB,OAC3Cof,gBAAiB,CACf/J,KAAM,CACJnR,MAAOlE,EAAoB,KAC3BtL,KAAM,OACNof,YAAQ,EACRwB,YAAQ,GAEVrT,gBAAiBjC,EAAmB,KACpC8B,aAAc,SAGlB5O,OAAQ,CACN+O,gBAAiBjC,EAAoB,KACrC8B,aAAc,MACdxB,OAAQ,aAAaN,EAAmB,OACxCoC,OAAQ,qBAAqBpC,EAAmB,SAGpDlR,MAAO,CACLwuB,OAAQ,CACNrb,gBAAiBjC,EAAoB,KACrCoC,OAAQ,mBAAmBpC,EAAmB,OAC9Cse,QAAS,CACPjJ,KAAM,CACJnR,MAAOlE,EAAoB,KAC3B8T,YAAQ,EACRpf,KAAM,QAER5F,MAAO,CACL0R,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBhV,OAEvB+U,KAAM,SAERpK,QAAS,CACP+G,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBrK,SAEvBoK,KAAM,WAERub,gBAAiB,CACf/J,KAAM,CACJnR,MAAOlE,EAAoB,KAC3B8T,YAAQ,EACRpf,KAAM,QAERuN,gBAAiBjC,EAAmB,KACpC8B,aAAc,SAGlByb,MAAO,CACLC,MAAO,CACLvb,gBAAiBjC,EAAoB,KACrCM,OAAQ,aAAaN,EAAmB,OACxC8B,aAAc,MACdM,OAAQ,oBAAoBpC,EAAmB,OAC/CwJ,KAAM,CACJ7F,qBAAsB3D,EAAmB,KACzC4D,sBAAuB5D,EAAmB,KAC1C4T,QAAS,OACTyB,KAAM,CACJnR,MAAOlE,EAAoB,KAC3B8T,YAAQ,EACRpf,KAAM,QAER+oB,cAAe,CACbvZ,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBC,SAI3Bua,QAAS,CACP7d,OAAQ,CACND,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBpE,QAEvBuC,gBAAiB,cACjB0B,qBAAsB3D,EAAoB,OAC1C4D,sBAAuB5D,EAAoB,QAE7ClR,MAAO,CACL0R,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBhV,OAEvB+U,KAAM,SAERpK,QAAS,CACP+G,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBrK,SAEvBoK,KAAM,YAGV6E,QAAS,CACPjI,OAAQ,CACND,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBE,UAEvB/B,gBAAiB,cACjB0B,qBAAsB3D,EAAoB,OAC1C4D,sBAAuB5D,EAAoB,QAE7CsgB,YAAa,CACX9f,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBzK,MAEvBwK,KAAM,YAERjK,WAAY,CACV4G,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBrK,SAEvBoK,KAAM,eAERlK,YAAa,CACX6G,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBnK,aAEvBkK,KAAM,mBAKd2F,KAAM,CACJvH,gBAAiBjC,EAAoB,KACrCjG,KAAM,CACJkI,gBAAiB,cACjB4R,qBAAsB7T,EAAmB,KACzC2D,qBAAsB3D,EAAmB,KACzC4D,sBAAuB5D,EAAmB,KAC1C0I,QAAS,CACPzG,gBAAiB,cACjB0B,qBAAsB3D,EAAmB,KACzC4D,sBAAuB5D,EAAmB,KAC1CM,OAAQ,aAAaN,EAAmB,OACxC8B,aAAc,MACdM,OAAQ,sCACRiT,KAAM,CACJnR,MAAOlE,EAAoB,KAC3B8T,YAAQ,EACRpf,KAAM,SAGVqS,MAAO,CACL7C,MAAOlE,EAAoB,KAC3B8T,YAAQ,EACRpf,KAAM,QAERqf,SAAU,CACR7P,MAAOlE,EAAmB,KAC1B8T,YAAQ,EACRpf,KAAM,QAERsf,KAAM,CACJ9P,MAAOlE,EAAmB,KAC1B8T,YAAQ,EACRpf,KAAM,QAERkf,QAAS,aAAa5T,EAAmB,OACzCuJ,KAAM,CACJqJ,SAAS,EACT3Q,gBAAiBjC,EAAoB,KACrCM,OAAQ,aAAaN,EAAmB,OACxC8B,aAAc,MACdM,OAAQ,oBAAoBpC,EAAmB,OAC/C6S,UAAW,CACTM,gBAAiB,IACjBD,kBAAmB,IAErBnZ,KAAM,CACJ4J,qBAAsB3D,EAAmB,KACzC4D,sBAAuB5D,EAAmB,KAC1C8B,aAAc,MACdzI,KAAM,CACJ6K,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBzK,MAEvBC,OAAQ,CACN4K,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBxK,QAEvBG,QAAS,CACPyK,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBrK,SAEvBC,UAAW,CACTwK,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBpK,eAM/Bqc,QAAS,CACPC,UAAW,CACTC,SAAUjW,EAAmB,KAC7ByW,UAAW,OACXE,gBAAiB,OACjBD,SAAU,MAEZ9C,QAAS,aAAa5T,EAAmB,QAE3C8b,MAAO,CACL/U,MAAO,CACLsO,KAAM,CACJ3gB,KAAM,OACN4gB,OAAQ,MACRpR,MAAOlE,EAAoB,OAG/BS,OAAQ,CACNoD,KAAM,YAGVlT,MAAO,CACLoW,MAAO,CACLsO,KAAM,CACJ3gB,KAAM,OACN4gB,OAAQ,MACRpR,MAAOlE,EAAoB,OAG/BS,OAAQ,CACNoD,KAAM,YAKRmd,GAAmB,CACvBxD,MAAO,CACL/c,OAAQ,CACND,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBhV,OAEvBmT,gBAAiB,cACjB0B,qBAAsB3D,EAAoB,OAC1C4D,sBAAuB5D,EAAoB,OAC3Cof,gBAAiB,CACf/J,KAAM,CACJnR,MAAOlE,EAAoB,KAC3BtL,KAAM,OACNof,YAAQ,EACRwB,YAAQ,GAEVrT,gBAAiBjC,EAAmB,KACpC8B,aAAc,SAGlB5O,OAAQ,CACN+O,gBAAiBjC,EAAoB,KACrC8B,aAAc,MACdxB,OAAQ,aAAaN,EAAmB,OACxCoC,OAAQ,oBAAoBpC,EAAoB,WAGpDlR,MAAO,CACLwuB,OAAQ,CACNrb,gBAAiBjC,EAAoB,KACrCoC,OAAQ,mBAAmBpC,EAAmB,OAC9Cse,QAAS,CACPjJ,KAAM,CACJnR,MAAOlE,EAAoB,KAC3B8T,YAAQ,EACRpf,KAAM,QAER5F,MAAO,CACL0R,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBhV,OAEvB+U,KAAM,SAERpK,QAAS,CACP+G,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBrK,SAEvBoK,KAAM,WAERub,gBAAiB,CACf/J,KAAM,CACJnR,MAAOlE,EAAoB,KAC3B8T,YAAQ,EACRpf,KAAM,QAERuN,gBAAiBjC,EAAmB,KACpC8B,aAAc,SAGlByb,MAAO,CACLC,MAAO,CACLvb,gBAAiBjC,EAAoB,KACrCM,OAAQ,aAAaN,EAAmB,OACxC8B,aAAc,MACdM,OAAQ,oBAAoBpC,EAAoB,SAChDwJ,KAAM,CACJ7F,qBAAsB3D,EAAoB,OAC1C4D,sBAAuB5D,EAAoB,OAC3C4T,QAAS,OACTyB,KAAM,CACJnR,MAAOlE,EAAoB,KAC3B8T,YAAQ,EACRpf,KAAM,QAER+oB,cAAe,CACbvZ,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBC,SAI3Bua,QAAS,CACP7d,OAAQ,CACND,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBpE,QAEvBuC,gBAAiB,cACjB0B,qBAAsB3D,EAAoB,OAC1C4D,sBAAuB5D,EAAoB,QAE7ClR,MAAO,CACL0R,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBhV,OAEvB+U,KAAM,SAERpK,QAAS,CACP+G,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBrK,SAEvBoK,KAAM,YAGV6E,QAAS,CACPjI,OAAQ,CACND,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBE,UAEvB/B,gBAAiB,cACjB0B,qBAAsB3D,EAAoB,OAC1C4D,sBAAuB5D,EAAoB,QAE7CsgB,YAAa,CACX9f,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBzK,MAEvBwK,KAAM,YAERjK,WAAY,CACV4G,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBrK,SAEvBoK,KAAM,eAERlK,YAAa,CACX6G,KAAM,CACJ0D,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBnK,aAEvBkK,KAAM,mBAKd2F,KAAM,CACJvH,gBAAiBjC,EAAoB,KACrCjG,KAAM,CACJkI,gBAAiB,cACjB4R,qBAAsB7T,EAAmB,KACzC2D,qBAAsB3D,EAAoB,OAC1C4D,sBAAuB5D,EAAoB,OAC3C0I,QAAS,CACPzG,gBAAiB,cACjB0B,qBAAsB3D,EAAoB,OAC1C4D,sBAAuB5D,EAAoB,OAC3CM,OAAQ,aAAaN,EAAmB,OACxC8B,aAAc,MACdM,OAAQ,mBAAmBpC,EAAoB,SAC/CqV,KAAM,CACJnR,MAAOlE,EAAoB,KAC3B8T,YAAQ,EACRpf,KAAM,SAGVqS,MAAO,CACL7C,MAAOlE,EAAoB,KAC3B8T,YAAQ,EACRpf,KAAM,QAERqf,SAAU,CACR7P,MAAOlE,EAAmB,KAC1B8T,YAAQ,EACRpf,KAAM,QAERsf,KAAM,CACJ9P,MAAOlE,EAAmB,KAC1B8T,YAAQ,EACRpf,KAAM,QAERkf,QAAS,aAAa5T,EAAmB,OACzCuJ,KAAM,CACJqJ,SAAS,EACT3Q,gBAAiBjC,EAAoB,KACrCM,OAAQ,aAAaN,EAAmB,OACxC8B,aAAc,MACdM,OAAQ,oBAAoBpC,EAAoB,SAChD6S,UAAW,CACTM,gBAAiB,IACjBD,kBAAmB,IAErBnZ,KAAM,CACJ4J,qBAAsB3D,EAAoB,OAC1C4D,sBAAuB5D,EAAoB,OAC3C8B,aAAc,MACdzI,KAAM,CACJ6K,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBzK,MAEvBC,OAAQ,CACN4K,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBxK,QAEvBG,QAAS,CACPyK,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBrK,SAEvBC,UAAW,CACTwK,MAAOlE,EAAoB,KAC3BmE,IAAKL,EAAgBpK,eAM/Bqc,QAAS,CACPC,UAAW,CACTC,SAAUjW,EAAoB,KAC9ByW,UAAW,OACXE,gBAAiB,OACjBD,SAAU,MAEZ9C,QAAS,aAAa5T,EAAmB,QAE3C8b,MAAO,CACL/U,MAAO,CACLsO,KAAM,CACJ3gB,KAAM,OACN4gB,OAAQ,MACRpR,MAAOlE,EAAoB,OAG/BS,OAAQ,CACNoD,KAAM,YAGVlT,MAAO,CACLoW,MAAO,CACLsO,KAAM,CACJ3gB,KAAM,OACN4gB,OAAQ,MACRpR,MAAOlE,EAAoB,OAG/BS,OAAQ,CACNoD,KAAM,YA2Kd,MAAMod,GACJ,WAAAzyB,CAAY0yB,GAEIpzB,EAAAa,KAAM,qBAAsB,8BAE1Cb,EAAca,KAAM,UACNb,EAAAa,KAAM,cAAeoyB,IACrBjzB,EAAAa,KAAM,aAAcqyB,IAClClzB,EAAca,KAAM,WACNb,EAAAa,KAAM,iBAAkB,IAEtCb,EAAca,KAAM,aACpBb,EAAca,KAAM,eACpBb,EAAca,KAAM,uBACpBA,KAAK2a,OAAS4X,EACTvyB,KAAAwyB,QAAU,IAAIC,YACnBzyB,KAAK0yB,UAAY,SACjB1yB,KAAK2yB,YAAc1gB,IACnBjS,KAAK4yB,cAAcR,IACnBpyB,KAAK6yB,aAAaR,IACbryB,KAAA6S,oBAAsBT,GAA4BU,IACrD9S,KAAK2yB,YAAc7f,EACnB9S,KAAK8yB,aAAa,GAExB,CACE,aAAAF,CAAclY,GACZ1a,KAAK+yB,YAAcrY,EACM,UAArB1a,KAAK2yB,aACP3yB,KAAK8yB,aAEX,CACE,YAAAD,CAAanY,GACX1a,KAAKgzB,WAAatY,EACO,SAArB1a,KAAK2yB,aACP3yB,KAAK8yB,aAEX,CAIE,sBAAI9f,GACF,OAAOhT,KAAK2yB,WAChB,CAIE,QAAA/I,GACE,OAAO5pB,KAAK2a,MAChB,CAIE,WAAAmY,GACE,MAAMhgB,EAA0B,WAAnB9S,KAAK0yB,UAAyB1yB,KAAK2yB,YAAc3yB,KAAK0yB,UAE7DO,EA7NS,EAACngB,EAAM4H,KACxB,IAAIpa,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIuK,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAAIC,GAAIC,GAAKC,GAAKC,GAAKC,GAAKoG,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAC7sC,MAAAC,GAAwB,UAAT5sB,EAAmBsf,GAAoBC,GACrD,MAAA,CACLxD,MAAO,CACL/c,OAAQ,IAC0B,OAA5BxR,EAAKo/B,GAAa7Q,YAAiB,EAASvuB,EAAGwR,UACzB,OAAtB7N,EAAKyW,EAAOmU,YAAiB,EAAS5qB,EAAG6N,OAC7CD,KAAM,IACgE,OAAhE2G,EAAkC,OAA5BtU,EAAKw7B,GAAa7Q,YAAiB,EAAS3qB,EAAG4N,aAAkB,EAAS0G,EAAG3G,QACzB,OAA1D8K,EAA4B,OAAtBD,EAAKhC,EAAOmU,YAAiB,EAASnS,EAAG5K,aAAkB,EAAS6K,EAAG9K,MAEnF4e,gBAAiB,IACqD,OAAhE5T,EAAkC,OAA5BD,EAAK8iB,GAAa7Q,YAAiB,EAASjS,EAAG9K,aAAkB,EAAS+K,EAAG4T,mBACzB,OAA1D1T,EAA4B,OAAtBD,EAAKpC,EAAOmU,YAAiB,EAAS/R,EAAGhL,aAAkB,EAASiL,EAAG0T,kBAGrFlsB,OAAQ,IAC0B,OAA5ByZ,EAAK0hB,GAAa7Q,YAAiB,EAAS7Q,EAAGzZ,UACzB,OAAtBmb,EAAKhF,EAAOmU,YAAiB,EAASnP,EAAGnb,SAGjDpE,MAAO,CACLwuB,OAAQ,IAC0B,OAA5BhP,EAAK+f,GAAav/B,YAAiB,EAASwf,EAAGgP,UACzB,OAAtB/O,EAAKlF,EAAOva,YAAiB,EAASyf,EAAG+O,OAC7CgB,QAAS,IAC6D,OAAhE7P,EAAkC,OAA5BD,EAAK6f,GAAav/B,YAAiB,EAAS0f,EAAG8O,aAAkB,EAAS7O,EAAG6P,WACzB,OAA1D3P,EAA4B,OAAtBD,EAAKrF,EAAOva,YAAiB,EAAS4f,EAAG4O,aAAkB,EAAS3O,EAAG2P,QACjFxvB,MAAO,IACoG,OAArGggB,EAAsE,OAAhED,EAAkC,OAA5BD,EAAKyf,GAAav/B,YAAiB,EAAS8f,EAAG0O,aAAkB,EAASzO,EAAGyP,cAAmB,EAASxP,EAAGhgB,SACzB,OAA/FmgB,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAK1F,EAAOva,YAAiB,EAASigB,EAAGuO,aAAkB,EAAStO,EAAGsP,cAAmB,EAASrP,EAAGngB,MACtH0R,KAAM,IACwI,OAAxImZ,EAA2G,OAArGD,EAAsE,OAAhED,EAAkC,OAA5BD,EAAK6U,GAAav/B,YAAiB,EAAS0qB,EAAG8D,aAAkB,EAAS7D,EAAG6E,cAAmB,EAAS5E,EAAG5qB,YAAiB,EAAS6qB,EAAGnZ,QACzB,OAAlIuZ,EAAqG,OAA/FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKvQ,EAAOva,YAAiB,EAAS8qB,EAAG0D,aAAkB,EAASzD,EAAGyE,cAAmB,EAASxE,EAAGhrB,YAAiB,EAASirB,EAAGvZ,OAG7J/G,QAAS,IACkG,OAArGygB,EAAsE,OAAhED,EAAkC,OAA5BD,EAAKqU,GAAav/B,YAAiB,EAASkrB,EAAGsD,aAAkB,EAASrD,EAAGqE,cAAmB,EAASpE,EAAGzgB,WACzB,OAA/F4gB,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAK9Q,EAAOva,YAAiB,EAASqrB,EAAGmD,aAAkB,EAASlD,EAAGkE,cAAmB,EAASjE,EAAG5gB,QACtH+G,KAAM,IAC0I,OAA1Iia,EAA2G,OAArGD,EAAsE,OAAhED,EAAkC,OAA5BD,EAAK+T,GAAav/B,YAAiB,EAASwrB,EAAGgD,aAAkB,EAAS/C,EAAG+D,cAAmB,EAAS9D,EAAG/gB,cAAmB,EAASghB,EAAGja,QACzB,OAApIqa,EAAqG,OAA/FD,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAKrR,EAAOva,YAAiB,EAAS4rB,EAAG4C,aAAkB,EAAS3C,EAAG2D,cAAmB,EAAS1D,EAAGnhB,cAAmB,EAASohB,EAAGra,OAG/J4e,gBAAiB,IAC0F,OAArGpE,EAAsE,OAAhED,EAAkC,OAA5BD,EAAKuT,GAAav/B,YAAiB,EAASgsB,EAAGwC,aAAkB,EAASvC,EAAGuD,cAAmB,EAAStD,EAAGoE,mBACzB,OAA/FjE,EAAgE,OAA1DD,EAA4B,OAAtBD,EAAK5R,EAAOva,YAAiB,EAASmsB,EAAGqC,aAAkB,EAASpC,EAAGoD,cAAmB,EAASnD,EAAGiE,kBAG1H7B,MAAO,IAC+D,OAAhElC,GAAkC,OAA5BD,GAAKiT,GAAav/B,YAAiB,EAASssB,GAAGkC,aAAkB,EAASjC,GAAGkC,SACtB,OAA7DhC,GAA8B,OAAvBD,GAAMjS,EAAOva,YAAiB,EAASwsB,GAAIgC,aAAkB,EAAS/B,GAAIgC,MACrFC,MAAO,IACuG,OAAxGqE,GAA0E,OAAnEpG,GAAoC,OAA7BD,GAAM6S,GAAav/B,YAAiB,EAAS0sB,GAAI8B,aAAkB,EAAS7B,GAAI8B,YAAiB,EAASsE,GAAIrE,SAC1B,OAAlGwE,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMzY,EAAOva,YAAiB,EAASgzB,GAAIxE,aAAkB,EAASyE,GAAIxE,YAAiB,EAASyE,GAAIxE,MAC1HhU,KAAM,IAC6I,OAA7I4Y,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAMoM,GAAav/B,YAAiB,EAASmzB,GAAI3E,aAAkB,EAAS4E,GAAI3E,YAAiB,EAAS4E,GAAI3E,YAAiB,EAAS4E,GAAI5Y,QAC1B,OAAvIgZ,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMhZ,EAAOva,YAAiB,EAASuzB,GAAI/E,aAAkB,EAASgF,GAAI/E,YAAiB,EAASgF,GAAI/E,YAAiB,EAASgF,GAAIhZ,KAC/J6L,KAAM,IACiL,OAAjLwN,GAAoJ,OAA7ID,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAM4L,GAAav/B,YAAiB,EAAS2zB,GAAInF,aAAkB,EAASoF,GAAInF,YAAiB,EAASoF,GAAInF,YAAiB,EAASoF,GAAIpZ,WAAgB,EAASqZ,GAAIxN,QAC1B,OAA3K6N,GAA8I,OAAvID,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMzZ,EAAOva,YAAiB,EAASg0B,GAAIxF,aAAkB,EAASyF,GAAIxF,YAAiB,EAASyF,GAAIxF,YAAiB,EAASyF,GAAIzZ,WAAgB,EAAS0Z,GAAI7N,MAErMoI,cAAe,IACwK,OAAjL8F,GAAoJ,OAA7ID,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAMkL,GAAav/B,YAAiB,EAASq0B,GAAI7F,aAAkB,EAAS8F,GAAI7F,YAAiB,EAAS8F,GAAI7F,YAAiB,EAAS8F,GAAI9Z,WAAgB,EAAS+Z,GAAI9F,iBAC1B,OAA3KmG,GAA8I,OAAvID,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMna,EAAOva,YAAiB,EAAS00B,GAAIlG,aAAkB,EAASmG,GAAIlG,YAAiB,EAASmG,GAAIlG,YAAiB,EAASmG,GAAIna,WAAgB,EAASoa,GAAInG,iBAIzMa,QAAS,IACqG,OAAxGyF,GAA0E,OAAnED,GAAoC,OAA7BD,GAAMwK,GAAav/B,YAAiB,EAAS+0B,GAAIvG,aAAkB,EAASwG,GAAIvG,YAAiB,EAASwG,GAAIzF,WAC1B,OAAlG4F,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAM3a,EAAOva,YAAiB,EAASk1B,GAAI1G,aAAkB,EAAS2G,GAAI1G,YAAiB,EAAS2G,GAAI5F,QAC1HxvB,MAAO,IAC8I,OAA/Iw1B,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAMkK,GAAav/B,YAAiB,EAASq1B,GAAI7G,aAAkB,EAAS8G,GAAI7G,YAAiB,EAAS8G,GAAI/F,cAAmB,EAASgG,GAAIx1B,SAC1B,OAAzI41B,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMlb,EAAOva,YAAiB,EAASy1B,GAAIjH,aAAkB,EAASkH,GAAIjH,YAAiB,EAASkH,GAAInG,cAAmB,EAASoG,GAAI51B,MACjK0R,KAAM,IACoL,OAApLukB,GAAsJ,OAA/ID,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAM0J,GAAav/B,YAAiB,EAAS61B,GAAIrH,aAAkB,EAASsH,GAAIrH,YAAiB,EAASsH,GAAIvG,cAAmB,EAASwG,GAAIh2B,YAAiB,EAASi2B,GAAIvkB,QAC1B,OAA9K4kB,GAAgJ,OAAzID,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAM3b,EAAOva,YAAiB,EAASk2B,GAAI1H,aAAkB,EAAS2H,GAAI1H,YAAiB,EAAS2H,GAAI5G,cAAmB,EAAS6G,GAAIr2B,YAAiB,EAASs2B,GAAI5kB,OAG1M/G,QAAS,IAC4I,OAA/I+rB,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAMgJ,GAAav/B,YAAiB,EAASu2B,GAAI/H,aAAkB,EAASgI,GAAI/H,YAAiB,EAASgI,GAAIjH,cAAmB,EAASkH,GAAI/rB,WAC1B,OAAzImsB,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMpc,EAAOva,YAAiB,EAAS22B,GAAInI,aAAkB,EAASoI,GAAInI,YAAiB,EAASoI,GAAIrH,cAAmB,EAASsH,GAAInsB,QACjK+G,KAAM,IACsL,OAAtLylB,GAAsJ,OAA/ID,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAMwI,GAAav/B,YAAiB,EAAS+2B,GAAIvI,aAAkB,EAASwI,GAAIvI,YAAiB,EAASwI,GAAIzH,cAAmB,EAAS0H,GAAIvsB,cAAmB,EAASwsB,GAAIzlB,QAC1B,OAAhL8lB,GAAgJ,OAAzID,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAM7c,EAAOva,YAAiB,EAASo3B,GAAI5I,aAAkB,EAAS6I,GAAI5I,YAAiB,EAAS6I,GAAI9H,cAAmB,EAAS+H,GAAI5sB,cAAmB,EAAS6sB,GAAI9lB,QAI9MkI,QAAS,IACqG,OAAxG+d,GAA0E,OAAnED,GAAoC,OAA7BD,GAAM8H,GAAav/B,YAAiB,EAASy3B,GAAIjJ,aAAkB,EAASkJ,GAAIjJ,YAAiB,EAASkJ,GAAI/d,WAC1B,OAAlGke,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMrd,EAAOva,YAAiB,EAAS43B,GAAIpJ,aAAkB,EAASqJ,GAAIpJ,YAAiB,EAASqJ,GAAIle,QAC1H4X,YAAa,IACwI,OAA/I0G,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAMwH,GAAav/B,YAAiB,EAAS+3B,GAAIvJ,aAAkB,EAASwJ,GAAIvJ,YAAiB,EAASwJ,GAAIre,cAAmB,EAASse,GAAI1G,eAC1B,OAAzI8G,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAM5d,EAAOva,YAAiB,EAASm4B,GAAI3J,aAAkB,EAAS4J,GAAI3J,YAAiB,EAAS4J,GAAIze,cAAmB,EAAS0e,GAAI9G,YACjK9f,KAAM,IAC0L,OAA1LinB,GAAsJ,OAA/ID,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAMgH,GAAav/B,YAAiB,EAASu4B,GAAI/J,aAAkB,EAASgK,GAAI/J,YAAiB,EAASgK,GAAI7e,cAAmB,EAAS8e,GAAIlH,kBAAuB,EAASmH,GAAIjnB,QAC1B,OAApLsnB,GAAgJ,OAAzID,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMre,EAAOva,YAAiB,EAAS44B,GAAIpK,aAAkB,EAASqK,GAAIpK,YAAiB,EAASqK,GAAIlf,cAAmB,EAASmf,GAAIvH,kBAAuB,EAASwH,GAAItnB,OAGhN5G,WAAY,IACyI,OAA/IsuB,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAMsG,GAAav/B,YAAiB,EAASi5B,GAAIzK,aAAkB,EAAS0K,GAAIzK,YAAiB,EAAS0K,GAAIvf,cAAmB,EAASwf,GAAItuB,cAC1B,OAAzI0uB,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAM9e,EAAOva,YAAiB,EAASq5B,GAAI7K,aAAkB,EAAS8K,GAAI7K,YAAiB,EAAS8K,GAAI3f,cAAmB,EAAS4f,GAAI1uB,WACjK4G,KAAM,IACyL,OAAzLmoB,GAAsJ,OAA/ID,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAM8F,GAAav/B,YAAiB,EAASy5B,GAAIjL,aAAkB,EAASkL,GAAIjL,YAAiB,EAASkL,GAAI/f,cAAmB,EAASggB,GAAI9uB,iBAAsB,EAAS+uB,GAAInoB,QAC1B,OAAnLwoB,GAAgJ,OAAzID,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMvf,EAAOva,YAAiB,EAAS85B,GAAItL,aAAkB,EAASuL,GAAItL,YAAiB,EAASuL,GAAIpgB,cAAmB,EAASqgB,GAAInvB,iBAAsB,EAASovB,GAAIxoB,OAG/M7G,YAAa,IACwI,OAA/IyvB,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAMoF,GAAav/B,YAAiB,EAASm6B,GAAI3L,aAAkB,EAAS4L,GAAI3L,YAAiB,EAAS4L,GAAIzgB,cAAmB,EAAS0gB,GAAIzvB,eAC1B,OAAzI6vB,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMhgB,EAAOva,YAAiB,EAASu6B,GAAI/L,aAAkB,EAASgM,GAAI/L,YAAiB,EAASgM,GAAI7gB,cAAmB,EAAS8gB,GAAI7vB,YACjK6G,KAAM,IAC0L,OAA1LqpB,GAAsJ,OAA/ID,GAA+G,OAAxGD,GAA0E,OAAnED,GAAoC,OAA7BD,GAAM4E,GAAav/B,YAAiB,EAAS26B,GAAInM,aAAkB,EAASoM,GAAInM,YAAiB,EAASoM,GAAIjhB,cAAmB,EAASkhB,GAAIjwB,kBAAuB,EAASkwB,GAAIrpB,QAC1B,OAApL0pB,GAAgJ,OAAzID,GAAyG,OAAlGD,GAAoE,OAA7DD,GAA8B,OAAvBD,GAAMzgB,EAAOva,YAAiB,EAASg7B,GAAIxM,aAAkB,EAASyM,GAAIxM,YAAiB,EAASyM,GAAIthB,cAAmB,EAASuhB,GAAItwB,kBAAuB,EAASuwB,GAAI1pB,UAMtNgJ,KAAM,IAC6B,OAA7B2gB,GAAMkE,GAAav/B,YAAiB,EAASq7B,GAAI3gB,QAC1B,OAAvB4gB,GAAM/gB,EAAOva,YAAiB,EAASs7B,GAAI5gB,KAC/CzP,KAAM,IACiE,OAAjEuwB,GAAoC,OAA7BD,GAAMgE,GAAav/B,YAAiB,EAASu7B,GAAI7gB,WAAgB,EAAS8gB,GAAIvwB,QAC1B,OAA3DywB,GAA8B,OAAvBD,GAAMlhB,EAAOva,YAAiB,EAASy7B,GAAI/gB,WAAgB,EAASghB,GAAIzwB,KACnFwP,KAAM,IACqG,OAArGohB,GAAwE,OAAjED,GAAoC,OAA7BD,GAAM4D,GAAav/B,YAAiB,EAAS27B,GAAIjhB,WAAgB,EAASkhB,GAAI3wB,WAAgB,EAAS4wB,GAAIphB,QAC1B,OAA/FuhB,GAAkE,OAA3DD,GAA8B,OAAvBD,GAAMvhB,EAAOva,YAAiB,EAAS87B,GAAIphB,WAAgB,EAASqhB,GAAI9wB,WAAgB,EAAS+wB,GAAIvhB,KACvHxP,KAAM,IACyI,OAAzImxB,GAA4G,OAArGD,GAAwE,OAAjED,GAAoC,OAA7BD,GAAMsD,GAAav/B,YAAiB,EAASi8B,GAAIvhB,WAAgB,EAASwhB,GAAIjxB,WAAgB,EAASkxB,GAAI1hB,WAAgB,EAAS2hB,GAAInxB,QAC1B,OAAnIuxB,GAAsG,OAA/FD,GAAkE,OAA3DD,GAA8B,OAAvBD,GAAM9hB,EAAOva,YAAiB,EAASq8B,GAAI3hB,WAAgB,EAAS4hB,GAAIrxB,WAAgB,EAASsxB,GAAI9hB,WAAgB,EAAS+hB,GAAIvxB,KAC3JV,KAAM,IAC6K,OAA7KsyB,GAAgJ,OAAzID,GAA4G,OAArGD,GAAwE,OAAjED,GAAoC,OAA7BD,GAAM8C,GAAav/B,YAAiB,EAASy8B,GAAI/hB,WAAgB,EAASgiB,GAAIzxB,WAAgB,EAAS0xB,GAAIliB,WAAgB,EAASmiB,GAAI3xB,WAAgB,EAAS4xB,GAAItyB,QAC1B,OAAvK2yB,GAA0I,OAAnID,GAAsG,OAA/FD,GAAkE,OAA3DD,GAA8B,OAAvBD,GAAMviB,EAAOva,YAAiB,EAAS88B,GAAIpiB,WAAgB,EAASqiB,GAAI9xB,WAAgB,EAAS+xB,GAAIviB,WAAgB,EAASwiB,GAAIhyB,WAAgB,EAASiyB,GAAI3yB,MAEjMC,OAAQ,IAC2K,OAA7K+yB,GAAgJ,OAAzID,GAA4G,OAArGD,GAAwE,OAAjED,GAAoC,OAA7BD,GAAMoC,GAAav/B,YAAiB,EAASm9B,GAAIziB,WAAgB,EAAS0iB,GAAInyB,WAAgB,EAASoyB,GAAI5iB,WAAgB,EAAS6iB,GAAIryB,WAAgB,EAASsyB,GAAI/yB,UAC1B,OAAvKozB,GAA0I,OAAnID,GAAsG,OAA/FD,GAAkE,OAA3DD,GAA8B,OAAvBD,GAAMjjB,EAAOva,YAAiB,EAASw9B,GAAI9iB,WAAgB,EAAS+iB,GAAIxyB,WAAgB,EAASyyB,GAAIjjB,WAAgB,EAASkjB,GAAI1yB,WAAgB,EAAS2yB,GAAIpzB,QAEjMG,QAAS,IAC0K,OAA7KszB,GAAgJ,OAAzID,GAA4G,OAArGD,GAAwE,OAAjED,GAAoC,OAA7BD,GAAM0B,GAAav/B,YAAiB,EAAS69B,GAAInjB,WAAgB,EAASojB,GAAI7yB,WAAgB,EAAS8yB,GAAItjB,WAAgB,EAASujB,GAAI/yB,WAAgB,EAASgzB,GAAItzB,WAC1B,OAAvK2zB,GAA0I,OAAnID,GAAsG,OAA/FD,GAAkE,OAA3DD,GAA8B,OAAvBD,GAAM3jB,EAAOva,YAAiB,EAASk+B,GAAIxjB,WAAgB,EAASyjB,GAAIlzB,WAAgB,EAASmzB,GAAI3jB,WAAgB,EAAS4jB,GAAIpzB,WAAgB,EAASqzB,GAAI3zB,SAEjMC,UAAW,IACwK,OAA7K+zB,GAAgJ,OAAzID,GAA4G,OAArGD,GAAwE,OAAjED,GAAoC,OAA7BD,GAAMgB,GAAav/B,YAAiB,EAASu+B,GAAI7jB,WAAgB,EAAS8jB,GAAIvzB,WAAgB,EAASwzB,GAAIhkB,WAAgB,EAASikB,GAAIzzB,WAAgB,EAAS0zB,GAAI/zB,aAC1B,OAAvKo0B,GAA0I,OAAnID,GAAsG,OAA/FD,GAAkE,OAA3DD,GAA8B,OAAvBD,GAAMrkB,EAAOva,YAAiB,EAAS4+B,GAAIlkB,WAAgB,EAASmkB,GAAI5zB,WAAgB,EAAS6zB,GAAIrkB,WAAgB,EAASskB,GAAI9zB,WAAgB,EAAS+zB,GAAIp0B,eAMzMqc,QAAS,IAC0B,OAA7BgY,GAAMM,GAAav/B,YAAiB,EAASi/B,GAAIhY,WAC1B,OAAvBiY,GAAM3kB,EAAOva,YAAiB,EAASk/B,GAAIjY,SAEjD+F,MAAO,IAC4B,OAA7BmS,GAAMI,GAAav/B,YAAiB,EAASm/B,GAAInS,SAC1B,OAAvBoS,GAAM7kB,EAAOva,YAAiB,EAASo/B,GAAIpS,OAEjDnrB,MAAO,IAC4B,OAA7Bw9B,GAAME,GAAav/B,YAAiB,EAASq/B,GAAIx9B,SAC1B,OAAvBy9B,GAAM/kB,EAAOva,YAAiB,EAASs/B,GAAIz9B,QAGpD,EAyDqB29B,CAAW7sB,EADP,UAATA,EAAmB9S,KAAK+yB,YAAc/yB,KAAKgzB,YAE1DhzB,KAAK4/B,SAAS3M,EAClB,CAIE,QAAA2M,CAASllB,GACHA,IAAW1a,KAAK2a,SACpB3a,KAAK2a,OAASD,EACd1a,KAAKwyB,QAAQqN,cAAc,IAAIC,YAAY9/B,KAAK+/B,mBAAoB,CAClEC,OAAQ,CAAE1uB,MAAOoJ,MAEvB,CAIE,OAAAulB,CAAQntB,GACN9S,KAAK0yB,UAAY5f,EACjB9S,KAAK8yB,aACT,CAME,SAAA/J,CAAUlZ,GACF,MAAAqwB,EAAa,IAAIC,gBACvBngC,KAAKwyB,QAAQtxB,iBAAiBlB,KAAK+/B,oBAAqBxtB,IAC7C1C,EAAA0C,EAAEytB,OAAO1uB,MAAK,GACtB,CAAE8uB,OAAQF,EAAWE,SACxB,MAAMC,EAAe,CACnB1W,QAAS3pB,KACT+tB,YAAa,KACXmS,EAAWI,QACX,MAAMje,EAAQriB,KAAKugC,eAAeC,QAAQH,GACtChe,GAAY,GACTriB,KAAAugC,eAAeze,OAAOO,EAAO,EAC5C,GAIW,OADFriB,KAAAugC,eAAel3B,KAAKg3B,GAClBA,CACX,CAIE,OAAAI,GACMzgC,KAAK6S,qBACP7S,KAAK6S,sBAEP7S,KAAKugC,eAAetvB,SAASovB,GAAiBA,EAAatS,gBAC3D/tB,KAAKugC,eAAiB,EAC1B,SAEA,cAA2B9tB,EACzB,WAAA5S,CAAYipB,GACN,IAAAxoB,EACGmG,QAEOtH,EAAAa,KAAM,eAAgB,SAEpCb,EAAca,KAAM,iBAEpBb,EAAca,KAAM,WACpBb,EAAca,KAAM,SACpBb,EAAca,KAAM,sBACpBb,EAAca,KAAM,iBACpBb,EAAca,KAAM,UAEpBb,EAAca,KAAM,WACpBb,EAAca,KAAM,kBAEpBb,EAAca,KAAM,mBACpBb,EAAca,KAAM,yBACpBb,EAAca,KAAM,uBAEpBb,EAAca,KAAM,gBAAiB,CACnCoY,MAAO,QACPvG,KAAMsD,EAAgBhV,MACtB+b,SAAUlc,KAAK0gC,aACf/nB,OAAQ,UAEV3Y,KAAK6mB,QAAU7mB,KAAK2T,aAAa,CAAEb,KAAM,SACzC9S,KAAKquB,cAAgBvF,GAAgB,IAAIwJ,GAAyBF,IAC7DpyB,KAAA2gC,QAAU,IAAIxP,GAAmB,CACpCrI,aAAc9oB,KAAKquB,cACnBgD,iBAAmBnV,IACjBlc,KAAKsqB,YAAYpO,EAAQ,IAGxBlc,KAAA2gC,QAAQjpB,WAAM,GACd1X,KAAA6mB,QAAQ1S,YAAYnU,KAAK2gC,SACzB3gC,KAAA4gC,MAAQ,IAAIhY,GAAiB,CAChCE,aAAc9oB,KAAKquB,cACnBnF,UAAW,KACTlpB,KAAK4V,SAAS,EAEhBuS,oBAAqB7mB,MAAO4a,IAC1B,IAAI3a,EAAK0C,EACL,UACIye,GAAsB1S,OAAOyP,wBAAwB,CACzDvD,YAEH,OAAQla,GACuE,OAA7EiC,EAAsC,OAAhC1C,EAAMwO,EAAQC,OAAOM,aAAkB,EAAS/O,EAAIzB,QAAQY,SAA2BuD,EAAGjC,MAAM,yCAA0CA,EAC3J,GAEMqnB,eAAgB,CAAC5mB,EAAS4f,KACpB,IAAA9gB,EACJmhB,GAAsB1S,OAAOmP,aAAa,CAAE1c,YACvCzC,KAAA6/B,cAAc,IAAIC,YAAY,gBAAiB,CAClDE,OAAQ,CAAEv9B,UAAS4f,SACnBwe,SAAS,EACTC,UAAU,KAEoB,OAA/Bv/B,EAAMvB,KAAKopB,kBAAoC7nB,EAAImc,KAAK1d,KAAM,CAAEyC,UAAS4f,SAAO,EAEnFkH,qBAAsB,CAAC9mB,EAAS+F,EAAQ6Z,KAClC,IAAA9gB,EACCvB,KAAA6/B,cAAc,IAAIC,YAAY,uBAAwB,CACzDE,OAAQ,CAAEv9B,UAAS+F,SAAQ6Z,SAC3Bwe,SAAS,EACTC,UAAU,KAE0B,OAArCv/B,EAAMvB,KAAKspB,wBAA0C/nB,EAAImc,KAAK1d,KAAM,CAAEyC,UAAS+F,SAAQ6Z,SAAO,EAEjGoH,mBAAoB,CAAChnB,EAAS4f,KACxB,IAAA9gB,EACCvB,KAAA6/B,cAAc,IAAIC,YAAY,qBAAsB,CACvDE,OAAQ,CAAEv9B,UAAS4f,SACnBwe,SAAS,EACTC,UAAU,KAEwB,OAAnCv/B,EAAMvB,KAAKwpB,sBAAwCjoB,EAAImc,KAAK1d,KAAM,CAAEyC,UAAS4f,SAAO,IAGpFriB,KAAAgU,OAASH,SAASC,cAAc,SACrC9T,KAAKgpB,eACAhpB,KAAA6mB,QAAQ1S,YAAYnU,KAAKgU,QACzBhU,KAAA6mB,QAAQ1S,YAAYnU,KAAK4gC,OACzB5gC,KAAA+gC,mBAAqB,IAAI5O,GAA8B,CAC1D7vB,QAAUN,IACHhC,KAAA4gC,MAAMnW,SAASzoB,EAAK,EAE3Byb,gBAAiB,CAACpD,EAAS6B,KACrBlc,KAAK0gC,eAAiBxkB,IACnBlc,KAAA4gC,MAAM5W,WAAW3P,GACtBra,KAAKghC,eACf,EAEM5e,YAAa,CAAC/H,EAAS6B,KACjBlc,KAAK0gC,eAAiBxkB,IACnBlc,KAAA4gC,MAAMpgB,QAAQnG,GACnBra,KAAKghC,eACf,EAEM1e,aAAc,CAAC7f,EAAS4f,EAAOnG,KACzBlc,KAAK0gC,eAAiBxkB,IACnBlc,KAAA4gC,MAAMziB,WAAW1b,EAAS4f,GAC/BriB,KAAKghC,eACf,EAEMze,gBAAiB,CAACja,EAAG+Z,EAAOnG,KACtBlc,KAAK0gC,eAAiBxkB,IACnBlc,KAAA4gC,MAAMnf,cAAcY,GACzBriB,KAAKghC,eACf,EAEMve,gBAAiB,CAAChgB,EAAS4f,EAAOnG,KAC5Blc,KAAK0gC,eAAiBxkB,IACnBlc,KAAA4gC,MAAMpe,cAAc/f,EAAS4f,GAClCriB,KAAKghC,eACf,EAEMrjB,oBAAsBrV,IACpBtI,KAAKghC,cAAc,IAGDte,GAAA1S,OAAOsM,qBAAqBtc,KAAK+gC,oBAClD/gC,KAAAquB,cAActF,WAAWzgB,IAC5BtI,KAAKgpB,cAAc,IAErBhpB,KAAKihC,cAAgBlxB,EAAQC,OAAOa,2BAA2BvI,IAC7DtI,KAAK4V,SAAS,KAEoB,OAA/BtV,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGR,QAAQ6C,SAC7D3C,KAAK4V,SAEX,CACE,SAAItE,GACK,OAAAtR,KAAKquB,cAAczE,UAC9B,CACE,aAAAgJ,CAAclY,GACP1a,KAAAquB,cAAcuE,cAAclY,EACrC,CACE,YAAAmY,CAAanY,GACN1a,KAAAquB,cAAcwE,aAAanY,EACpC,CACE,6BAAWkX,GACT,MAAO,CAAC,SAAU,cAAe,aAAc,OAAQ,gBAAiB,uBAAwB,qBACpG,CACE,YAAA5I,GACOhpB,KAAAgU,OAAOC,YAAcjU,KAAKkU,WACnC,CACE,SAAAA,GACS,MAAA,mHAKOlU,KAAKkhC,cAAcvoB,2MAarC,CACE,SAAAwoB,CAAUzT,GACR1tB,KAAKohC,eAAiB1T,EACtB1tB,KAAKghC,cACT,CACE,YAAAK,GACErhC,KAAKohC,eAAiB,KACtBphC,KAAKghC,cACT,CACE,eAAAM,CAAgB5T,GACT1tB,KAAA4gC,MAAMnT,uBAAuBC,EACtC,CACE,aAAA6T,CAAc7T,GACP1tB,KAAA4gC,MAAMjT,qBAAqBD,EACpC,CACE,aAAA8T,CAAc9T,GACP1tB,KAAA4gC,MAAMhT,qBAAqBF,EACpC,CACE,WAAA+T,CAAY/T,GACL1tB,KAAA4gC,MAAM/S,mBAAmBH,EAClC,CACE,iBAAAgU,CAAkBhU,GACX1tB,KAAA4gC,MAAM9S,yBAAyBJ,EACxC,CACE,cAAArE,CAAe/W,GACbtS,KAAKopB,gBAAkB9W,CAC3B,CACE,oBAAAiX,CAAqBjX,GACnBtS,KAAKspB,sBAAwBhX,CACjC,CACE,kBAAAmX,CAAmBnX,GACjBtS,KAAKwpB,oBAAsBlX,CAC/B,CACE,WAAAgY,CAAYpO,GACVlc,KAAK0gC,aAAexkB,EACflc,KAAA4gC,MAAMtW,YAAYpO,GACvBlc,KAAKghC,eACLhhC,KAAKqd,KAAK,CACRnB,SAAUlc,KAAK0gC,aACf1jB,aAAa,GAEnB,CACE,YAAAgkB,GACE,MAAM15B,EAAQ,CACZ4U,SAAUlc,KAAK0gC,aACf5kB,YAAa4G,GAAsB1S,OAAO8L,YAC1C6lB,aAAc3hC,KAAK4gC,MAAMtmB,SAASrN,QAEpC,OAAQjN,KAAKohC,gBACX,UAAK,EACEphC,KAAA2gC,QAAQtW,OAAO/iB,GACpB,MACF,KAAK,KACEtH,KAAA2gC,QAAQjpB,MAAM,MACnB,MACF,QACQ,MAAAkqB,EAAgB5hC,KAAKohC,eAAe95B,GACrCtH,KAAA2gC,QAAQjpB,MAAMkqB,GAG3B,CACE,UAAMvkB,CAAK/V,SACHob,GAAsB1S,OAAOqN,KAAK/V,SAClCob,GAAsB1S,OAAO4N,kBACvC,CACE,OAAAhI,GACE5V,KAAKqd,KAAK,CACRnB,SAAUlc,KAAK0gC,aACf1jB,aAAa,GAEnB,CACE,iBAAA3G,GACErW,KAAK4V,SACT,CACE,oBAAA3C,GACE,IAAI3S,EAAI2D,EACRjE,KAAKquB,cAAcoS,UACe,OAAjCngC,EAAKN,KAAK+gC,qBAAuCzgC,EAAGwP,SACxB,OAA5B7L,EAAKjE,KAAKihC,gBAAkCh9B,EAAG6L,QACpD,CACE,wBAAA0G,CAAyB9P,EAAM+P,EAAUC,GACvC,IAAIpW,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EACxB,GAAIlG,IAAaC,EACjB,OAAQhQ,GACN,IAAK,SACG,MAAAiS,EAASjC,GAAY1W,KAAKkhC,cAAcvoB,OAC9C3Y,KAAKiW,MAAM0C,OAASA,EACpB,MACF,IAAK,gBACH,GAAIjC,EACE,IACF1W,KAAKopB,gBAAkB,IAAIyY,SAAS,QAASnrB,EAC9C,OAAQ1U,GACqE,OAA3EiC,EAAqC,OAA/B3D,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGR,QAAQY,SAA2BuD,EAAGjC,MAAM,yCAA0CA,EAC3J,MAEUhC,KAAKopB,qBAAkB,EAEzB,MACF,IAAK,uBACH,GAAI1S,EACE,IACF1W,KAAKspB,sBAAwB,IAAIuY,SAAS,QAASnrB,EACpD,OAAQ1U,GACqE,OAA3EwW,EAAqC,OAA/BtU,EAAK6L,EAAQC,OAAOM,aAAkB,EAASpM,EAAGpE,QAAQY,SAA2B8X,EAAGxW,MAAM,gDAAiDA,EAClK,MAEUhC,KAAKspB,2BAAwB,EAE/B,MACF,IAAK,qBACH,GAAI5S,EACE,IACF1W,KAAKwpB,oBAAsB,IAAIqY,SAAS,QAASnrB,EAClD,OAAQ1U,GACqE,OAA3E2a,EAAqC,OAA/BD,EAAK3M,EAAQC,OAAOM,aAAkB,EAASoM,EAAG5c,QAAQY,SAA2Bic,EAAG3a,MAAM,8CAA+CA,EAChK,MAEUhC,KAAKwpB,yBAAsB,EAE7B,MACF,IAAK,cACC9S,GACF1W,KAAK4yB,cAAcnxB,KAAKC,MAAMgV,IAEhC,MACF,IAAK,aACCA,GACF1W,KAAK6yB,aAAapxB,KAAKC,MAAMgV,IAE/B,MACF,IAAK,OACE1W,KAAAquB,cAAc4R,QAAQvpB,GAGnC,GAEA+C,GAAgB,gBAAiBqoB,IACjC,MAAMC,WAA+BtqB,GACnC,WAAA5X,CAAYywB,GACH7pB,QAEPtH,EAAca,KAAM,sBAEpBb,EAAca,KAAM,cACpBb,EAAca,KAAM,kBACpBb,EAAca,KAAM,qBACpBA,KAAK6oB,mBAAqByH,EAASvH,WAAWzgB,IAC5CtI,KAAK8yB,aAAa,GAExB,CACE,cAAAhb,GACO9X,KAAA8wB,WAAajd,SAASC,cAAc,OACzC9T,KAAK8wB,WAAWzY,UAAY,wBAC5BrY,KAAKgiC,eAAiB,IAAItpB,GAAkBvD,EAAgBhV,OACvDH,KAAAiiC,kBAAoB,IAAI9R,GAAwB,CACnDG,SAAUtwB,KAAK6oB,mBAAmBc,QAClC0G,SAAU,WAEZrwB,KAAKiiC,kBAAkBj8B,GAAK,eACtB,MAAAiQ,EAAQpC,SAASC,cAAc,SAOrC,OANMmC,EAAAhC,YAAcjU,KAAKkU,YACpBlU,KAAA8wB,WAAW3c,YAAY8B,GACvBjW,KAAA8wB,WAAW3c,YAAYnU,KAAKgiC,gBAC5BhiC,KAAA8wB,WAAW3c,YAAYnU,KAAKiiC,mBAC5BjiC,KAAAyT,OAAOU,YAAYnU,KAAK8wB,YAC7B9wB,KAAK8yB,cACE9yB,KAAK8wB,UAChB,CACE,SAAA5c,GACS,MAAA,4PAaX,CACE,mBAAAyJ,CAAoB7B,GACd,IAAAxb,EAC6B,OAAhCA,EAAKN,KAAKiiC,oBAAsC3hC,EAAGowB,SAAS5U,GAC7D9b,KAAK8yB,aACT,CACE,WAAAA,GACE,IAAIxyB,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIiB,EAAI0B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACxE,MAAMtF,EAAS1a,KAAK6oB,mBAAmBc,QAAQC,WACjB,OAA7BpR,EAAKxY,KAAKgiC,iBAAmCxpB,EAAGY,iBAAwI,OAAtHlV,EAA0F,OAApFD,EAAsD,OAAhD3D,EAAe,MAAVoa,OAAiB,EAASA,EAAOmU,YAAiB,EAASvuB,EAAGwR,aAAkB,EAAS7N,EAAG4N,WAAgB,EAAS3N,EAAGqR,QAAUlE,EAAoB,MAC5M,OAA7BwL,EAAK7c,KAAKgiC,iBAAmCnlB,EAAGxD,eAAsI,OAAtHuD,EAA0F,OAApFD,EAAsD,OAAhDD,EAAe,MAAVhC,OAAiB,EAASA,EAAOmU,YAAiB,EAASnS,EAAG5K,aAAkB,EAAS6K,EAAG9K,WAAgB,EAAS+K,EAAGpH,MAAQL,EAAgBhV,OACpM,OAA7B6d,EAAKhe,KAAKgiC,iBAAmChkB,EAAG1E,uBAA4G,OAApFyD,EAAsD,OAAhDD,EAAe,MAAVpC,OAAiB,EAASA,EAAOmU,YAAiB,EAAS/R,EAAGhL,aAAkB,EAASiL,EAAGzJ,kBAAoB,eACtK,OAA7BsM,EAAK5f,KAAKgiC,iBAAmCpiB,EAAGrG,4BAAiH,OAApFoG,EAAsD,OAAhDD,EAAe,MAAVhF,OAAiB,EAASA,EAAOmU,YAAiB,EAASnP,EAAG5N,aAAkB,EAAS6N,EAAG3K,uBAAyB3D,EAAoB,QACpM,OAA7B0O,EAAK/f,KAAKgiC,iBAAmCjiB,EAAGvG,6BAAkH,OAApFsG,EAAsD,OAAhDD,EAAe,MAAVnF,OAAiB,EAASA,EAAOmU,YAAiB,EAAShP,EAAG/N,aAAkB,EAASgO,EAAG7K,wBAA0B5D,EAAoB,QACnM,OAAhC2O,EAAKhgB,KAAKiiC,oBAAsCjiB,EAAGgJ,aAAa,SACrE,CACE,oBAAA/V,GACEjT,KAAK6oB,mBAAmBkF,aAC5B,EAEAtU,GAAgB,4BAA6BsoB,IAkT7CtoB,GAAgB,2BAjThB,cAAoChH,EAClC,WAAA5S,GACS4G,QAEOtH,EAAAa,KAAM,SAAU,SAChBb,EAAAa,KAAM,UAAW,SACjBb,EAAAa,KAAM,kBAAmB,aACzBb,EAAAa,KAAM,OAAQ,QACdb,EAAAa,KAAM,SAAU,KAChBb,EAAAa,KAAM,UAAW,QACjBb,EAAAa,KAAM,QAAS,KAE7Bb,EAAca,KAAM,gBAAiB,IAAIsyB,GAAyBF,KAElEjzB,EAAca,KAAM,kBACpBb,EAAca,KAAM,UACpBb,EAAca,KAAM,UACpBb,EAAca,KAAM,UAEpBb,EAAca,KAAM,sBAEpBb,EAAca,KAAM,2BACpB,MAAMyT,EAASzT,KAAK2T,aAAa,CAAEb,KAAM,SACzC9S,KAAKgiC,eAAiB,IAAID,GAAuB/hC,KAAKquB,eACjDruB,KAAAgiC,eAAetqB,WAAM,GACrB1X,KAAAkiC,OAASruB,SAASC,cAAc,OACrC9T,KAAKkiC,OAAO7pB,UAAY,QACxBrY,KAAKmiC,OAAS,IAAIL,GAAa9hC,KAAKquB,eAC/BruB,KAAAmiC,OAAOpuB,aAAa,SAAU,QAC9B/T,KAAAgU,OAASH,SAASC,cAAc,SACrC9T,KAAKgpB,eACEvV,EAAAU,YAAYnU,KAAKgU,QACjBP,EAAAU,YAAYnU,KAAKgiC,gBACjBvuB,EAAAU,YAAYnU,KAAKkiC,QACnBliC,KAAAkiC,OAAO/tB,YAAYnU,KAAKmiC,QAC7BniC,KAAKgiC,eAAe9gC,iBAAiB,QAASlB,KAAKoiC,YAAY7S,KAAKvvB,OACpE6T,SAAS3S,iBAAiB,QAASlB,KAAKwvB,mBAAmBD,KAAKvvB,OAChEA,KAAKqiC,sBACAriC,KAAA+gC,mBAAqB,IAAI5O,GAA8BnyB,MACtC0iB,GAAA1S,OAAOsM,qBAAqBtc,KAAK+gC,oBAClD/gC,KAAAquB,cAActF,WAAWzgB,IAC5BtI,KAAKgpB,cAAc,GAEzB,CACE,SAAI1X,GACK,OAAAtR,KAAKquB,cAAczE,UAC9B,CACE,aAAAgJ,CAAclY,GACP1a,KAAAquB,cAAcuE,cAAclY,EACrC,CACE,YAAAmY,CAAanY,GACN1a,KAAAquB,cAAcwE,aAAanY,EACpC,CACE,6BAAWkX,GACT,MAAO,CAAC,kBAAmB,gBAAiB,uBAAwB,qBAAsB,cAAe,eAAgB,MAAO,QAAS,SAAU,OAAQ,cAAe,aAAc,OAC5L,CACE,YAAA5I,GACOhpB,KAAAgU,OAAOC,YAAcjU,KAAKkU,WACnC,CACE,SAAAA,GACE,IAAI5T,EAAI2D,EAAIC,EAAIsU,EAAIkE,EAAIC,EAAIC,EAAIC,EACzB,MAAA,8RAc2E,OAA9D5Y,EAAgC,OAA1B3D,EAAKN,KAAKsR,MAAMud,YAAiB,EAASvuB,EAAGiE,aAAkB,EAASN,EAAGqP,kBAAoB,mCACpC,OAA9DkF,EAAgC,OAA1BtU,EAAKlE,KAAKsR,MAAMud,YAAiB,EAAS3qB,EAAGK,aAAkB,EAASiU,EAAGrF,eAAiB,4BAC3C,OAA9DwJ,EAAgC,OAA1BD,EAAK1c,KAAKsR,MAAMud,YAAiB,EAASnS,EAAGnY,aAAkB,EAASoY,EAAGhL,SAAW,0CAC1B,OAA9DkL,EAAgC,OAA1BD,EAAK5c,KAAKsR,MAAMud,YAAiB,EAASjS,EAAGrY,aAAkB,EAASsY,EAAGpJ,SAAW,oEAEnGzT,KAAKkZ,4BACJlZ,KAAKiZ,+TAiBvB,CACE,wBAAAzC,CAAyB9P,EAAM4B,EAAGoO,GAChC,OAAQhQ,GACN,IAAK,kBACC1G,KAAKsiC,gBAAgB5rB,KACvB1W,KAAKuiC,gBAAkB7rB,EACvB1W,KAAKqiC,uBAEP,MACF,IAAK,cACHriC,KAAKkZ,OAASxC,EACT1W,KAAAwiC,QAAQ9rB,EAAU1W,KAAKiZ,SAC5B,MACF,IAAK,eACHjZ,KAAKiZ,QAAUvC,EACV1W,KAAAwiC,QAAQxiC,KAAKkZ,OAAQxC,GAC1B,MACF,IAAK,MACH1W,KAAKyiC,KAAO/rB,EACZ1W,KAAKqiC,sBACL,MACF,IAAK,QACHriC,KAAK0iC,OAAShsB,EACd1W,KAAKqiC,sBACL,MACF,IAAK,SACHriC,KAAK2iC,QAAUjsB,EACf1W,KAAKqiC,sBACL,MACF,IAAK,OACHriC,KAAK4iC,MAAQlsB,EACb1W,KAAKqiC,sBACL,MACF,IAAK,cACC3rB,GACF1W,KAAK4yB,cAAcnxB,KAAKC,MAAMgV,IAEhC,MACF,IAAK,aACCA,GACF1W,KAAK6yB,aAAapxB,KAAKC,MAAMgV,IAE/B,MACF,IAAK,OACE1W,KAAAquB,cAAc4R,QAAQvpB,GAGnC,CACE,mBAAAiH,CAAoBrV,GAClBtI,KAAKqqB,QACT,CACE,cAAAhB,CAAe/W,GACRtS,KAAAmiC,OAAO9Y,eAAe/W,EAC/B,CACE,oBAAAiX,CAAqBjX,GACdtS,KAAAmiC,OAAO5Y,qBAAqBjX,EACrC,CACE,kBAAAmX,CAAmBnX,GACZtS,KAAAmiC,OAAO1Y,mBAAmBnX,EACnC,CACE,eAAAgwB,CAAgBhjC,GAYP,MAXgB,CACrB,YACA,WACA,aACA,eACA,cACA,gBACA,eACA,cACA,iBAEoBuI,SAASvI,EACnC,CACE,mBAAA+iC,GAOE,OANKriC,KAAAkiC,OAAOjsB,MAAM4sB,IAAM,GACnB7iC,KAAAkiC,OAAOjsB,MAAM6sB,OAAS,GACtB9iC,KAAAkiC,OAAOjsB,MAAM8sB,KAAO,GACpB/iC,KAAAkiC,OAAOjsB,MAAM+sB,MAAQ,GACrBhjC,KAAAkiC,OAAOjsB,MAAMgtB,OAAS,GACtBjjC,KAAAkiC,OAAOjsB,MAAM9J,UAAY,GACtBnM,KAAKuiC,iBACX,IAAK,YACEviC,KAAAkiC,OAAOjsB,MAAM4sB,IAAM7iC,KAAKyiC,KACxBziC,KAAAkiC,OAAOjsB,MAAM+sB,MAAQhjC,KAAK0iC,OAC/B,MACF,IAAK,WACE1iC,KAAAkiC,OAAOjsB,MAAM4sB,IAAM7iC,KAAKyiC,KACxBziC,KAAAkiC,OAAOjsB,MAAM8sB,KAAO/iC,KAAK4iC,MAC9B,MACF,IAAK,aACE5iC,KAAAkiC,OAAOjsB,MAAM4sB,IAAM7iC,KAAKyiC,KACxBziC,KAAAkiC,OAAOjsB,MAAM8sB,KAAO,MACpB/iC,KAAAkiC,OAAOjsB,MAAM9J,UAAY,mBAC9B,MACF,IAAK,eACEnM,KAAAkiC,OAAOjsB,MAAM6sB,OAAS9iC,KAAK2iC,QAC3B3iC,KAAAkiC,OAAOjsB,MAAM+sB,MAAQhjC,KAAK0iC,OAC/B,MACF,IAAK,cACE1iC,KAAAkiC,OAAOjsB,MAAM6sB,OAAS9iC,KAAK2iC,QAC3B3iC,KAAAkiC,OAAOjsB,MAAM8sB,KAAO/iC,KAAK4iC,MAC9B,MACF,IAAK,gBACE5iC,KAAAkiC,OAAOjsB,MAAM6sB,OAAS9iC,KAAK2iC,QAC3B3iC,KAAAkiC,OAAOjsB,MAAM8sB,KAAO,MACpB/iC,KAAAkiC,OAAOjsB,MAAM9J,UAAY,mBAC9B,MACF,IAAK,eACEnM,KAAAkiC,OAAOjsB,MAAM4sB,IAAM,MACnB7iC,KAAAkiC,OAAOjsB,MAAM+sB,MAAQhjC,KAAK0iC,OAC1B1iC,KAAAkiC,OAAOjsB,MAAM9J,UAAY,mBAC9B,MACF,IAAK,cACEnM,KAAAkiC,OAAOjsB,MAAM4sB,IAAM,MACnB7iC,KAAAkiC,OAAOjsB,MAAM8sB,KAAO/iC,KAAK4iC,MACzB5iC,KAAAkiC,OAAOjsB,MAAM9J,UAAY,mBAC9B,MACF,IAAK,gBACEnM,KAAAkiC,OAAOjsB,MAAM4sB,IAAM,MACnB7iC,KAAAkiC,OAAOjsB,MAAM8sB,KAAO,MACpB/iC,KAAAkiC,OAAOjsB,MAAM9J,UAAY,wBAGtC,CACE,WAAAi2B,CAAYjhC,GACVA,EAAMmT,kBACN,MAAM4uB,EAA0C,UAA9BljC,KAAKkiC,OAAOjsB,MAAM6O,QAI7B9kB,KAAAkiC,OAAOjsB,MAAM6O,QAHfoe,EAGyB,OAFA,OAIlC,CACE,kBAAA1T,CAAmBruB,GACZnB,KAAKwjB,SAASriB,EAAMqW,UAClBxX,KAAAkiC,OAAOjsB,MAAM6O,QAAU,OAElC,CACE,UAAAqe,CAAWtrB,GACT7X,KAAKmiC,OAAOtsB,UAAY,GACnB7V,KAAAmiC,OAAOhuB,YAAY0D,EAC5B,CACE,OAAA2qB,CAAQ5pB,EAAOD,GACb3Y,KAAKkZ,OAASN,EACd5Y,KAAKiZ,QAAUN,EACV3Y,KAAAkiC,OAAOjsB,MAAM2C,MAAQA,EACrB5Y,KAAAkiC,OAAOjsB,MAAM0C,OAASA,CAC/B,CACE,WAAAyqB,CAAYC,GACV,IAAI/iC,EAAI2D,EACJjE,KAAKsiC,gBAAgBe,IACvBrjC,KAAKuiC,gBAAkBc,EACvBrjC,KAAKqiC,uBAEuE,OAA3Ep+B,EAAqC,OAA/B3D,EAAKyP,EAAQC,OAAOM,aAAkB,EAAShQ,EAAGR,QAAQY,SAA2BuD,EAAGjC,MAAM,qBAAqBqhC,IAEhI,CACE,WAAA/Y,CAAYpO,GACLlc,KAAAmiC,OAAO7X,YAAYpO,EAC5B,CAEE,cAAAonB,CAAe5V,GACR1tB,KAAAmiC,OAAOhB,UAAUzT,EAC1B,CACE,iBAAA6V,GACEvjC,KAAKmiC,OAAOd,cAChB,CACE,oBAAAmC,CAAqB9V,GACd1tB,KAAAmiC,OAAOb,gBAAgB5T,EAChC,CACE,kBAAA+V,CAAmB/V,GACZ1tB,KAAAmiC,OAAOZ,cAAc7T,EAC9B,CACE,kBAAAgW,CAAmBhW,GACZ1tB,KAAAmiC,OAAOX,cAAc9T,EAC9B,CACE,gBAAAiW,CAAiBjW,GACV1tB,KAAAmiC,OAAOV,YAAY/T,EAC5B,CACE,sBAAAkW,CAAuBlW,GAChB1tB,KAAAmiC,OAAOT,kBAAkBhU,EAClC,CACE,kBAAAmW,CAAmBnW,GACjB1tB,KAAK8jC,wBAA0BpW,EAC/B1tB,KAAKqqB,QACT,CACE,MAAAA,GACQ,MAAAvO,EAAc4G,GAAsB1S,OAAO8L,YACjD,OAAQ9b,KAAK8jC,yBACX,UAAK,EACL,KAAK,KACE9jC,KAAAgiC,eAAetqB,WAAM,GACrB1X,KAAAgiC,eAAerkB,oBAAoB7B,GACxC,MACF,QACE,MAAMioB,EAAe/jC,KAAK8jC,wBAAwB,CAAEhoB,gBAC/C9b,KAAAgiC,eAAetqB,MAAMqsB,GAGlC,CACE,oBAAA9wB,GACM,IAAA3S,EAC8B,OAAjCA,EAAKN,KAAK+gC,qBAAuCzgC,EAAGwP,SACrD9P,KAAKquB,cAAcoS,SACvB,sDC1xISuD,GAAAC,wCCQL,IAAAC,EAAqBC,OAAOC,IAAI,8BAClCC,EAAsBF,OAAOC,IAAI,kBAC1B,SAAAE,EAAQ99B,EAAM+9B,EAAQC,GAC7B,IAAInlC,EAAM,KAGV,QAFW,IAAAmlC,IAAanlC,EAAM,GAAKmlC,QACnC,IAAWD,EAAOllC,MAAQA,EAAM,GAAKklC,EAAOllC,KACxC,QAASklC,EAEX,IAAA,IAASE,KADTD,EAAW,CAAE,EACQD,EACnB,QAAUE,IAAaD,EAASC,GAAYF,EAAOE,SACrCD,EAAAD,EAEX,OADPA,EAASC,EAASE,IACX,CACLC,SAAUT,EACV19B,OACAnH,MACAqlC,SAAK,IAAWH,EAASA,EAAS,KAClCj9B,MAAOk9B,EAEX,QACAI,GAAAC,SAAmBR,EACnBO,GAAAE,IAAcR,EACdM,GAAAG,KAAeT,KD9BIU,gBEOZ,SAASC,GAAuBC,GAC/B,MAAAhtB,EAAYrE,SAASC,cAAc,OAOlC,OAJPqxB,EAAAA,WAAU,MAaH,SAAOD,EAAiBhtB,GACzB,MAAAktB,EAAOC,aAAWntB,GACjBktB,EAAK/a,OAAO6a,EACrB,CAfI7a,CAAO6a,EAAMhtB,EAAS,IAGjBA,CACT,CCbO,MAAMotB,GAAuD,EAAGC,eACrE,MAAOC,EAAWC,GAAgBC,EAAAA,UAAS,GAOvC,OALJC,EAAAA,WAAU,KACRF,GAAa,EAAI,GAChB,IAGmB,oBAAXlhC,OACF,KAGJihC,sBAIKD,aAHD,IAGU,iBCCQj+B,IACrB,MAAAs+B,EAAWC,SAA4B,MAwG7C,OArGAF,EAAAA,WAAU,KACR,MAAMxlC,EAAQylC,EAASE,QAClB3lC,GACCA,EAAAkpB,eAAe/hB,EAAM+hB,eAAc,GACxC,CAAC/hB,EAAM+hB,eAAgBuc,IAG1BD,EAAAA,WAAU,KACR,MAAMxlC,EAAQylC,EAASE,QAClB3lC,GACCA,EAAAopB,qBAAqBjiB,EAAMiiB,qBAAoB,GACpD,CAACjiB,EAAMiiB,qBAAsBqc,IAGhCD,EAAAA,WAAU,KACR,MAAMxlC,EAAQylC,EAASE,QAClB3lC,GACCA,EAAAspB,mBAAmBniB,EAAMmiB,mBAAkB,GAChD,CAACniB,EAAMmiB,mBAAoBmc,IAG9BD,EAAAA,WAAU,KACR,MAAMxlC,EAAQylC,EAASE,QAClB3lC,GAAUmH,EAAMy+B,cACrBC,gBAAe,KACP7lC,EAAAghC,WAAW8E,GAERhB,GADW39B,EAAMy+B,aAAcE,KAEvC,GACF,GACA,CAAC3+B,EAAMy+B,aAAcH,IAGxBD,EAAAA,WAAU,KACR,MAAMxlC,EAAQylC,EAASE,QAClB3lC,GAAUmH,EAAM4+B,gBACrBF,gBAAe,KACP7lC,EAAAshC,aAAa0E,GAEVlB,GADW39B,EAAM4+B,eAAgBC,KAEzC,GACF,GACA,CAAC7+B,EAAM4+B,eAAgBN,IAG1BD,EAAAA,WAAU,KACR,MAAMxlC,EAAQylC,EAASE,QAClB3lC,GAAUmH,EAAM8+B,kBACrBJ,gBAAe,KACP7lC,EAAAohC,eAAe8E,GAEZpB,GADW39B,EAAM8+B,iBAAkBC,KAE3C,GACF,GACA,CAAC/+B,EAAM8+B,iBAAkBR,IAG5BD,EAAAA,WAAU,KACR,MAAMxlC,EAAQylC,EAASE,QAClB3lC,GAAUmH,EAAMg/B,oBACrBN,gBAAe,KACP7lC,EAAAmhC,iBAAiBiF,GAEdtB,GADW39B,EAAMg/B,mBAAoBC,KAE7C,GACF,GACA,CAACj/B,EAAMg/B,mBAAoBV,IAG9BD,EAAAA,WAAU,KACR,MAAMxlC,EAAQylC,EAASE,QAClB3lC,GAAUmH,EAAMk/B,kBACrBR,gBAAe,KACP7lC,EAAAqhC,eAAeiF,GAEZxB,GADW39B,EAAMk/B,iBAAkBC,KAE3C,GACF,GACA,CAACn/B,EAAMk/B,iBAAkBZ,IAG5BD,EAAAA,WAAU,KACR,MAAMxlC,EAAQylC,EAASE,QAClB3lC,GAAUmH,EAAMo/B,sBACrBV,gBAAe,KACP7lC,EAAAuhC,mBAAmBiF,GAEhB1B,GADW39B,EAAMo/B,qBAAsBC,KAE/C,GACF,GACA,CAACr/B,EAAMo/B,qBAAsBd,IAGhCD,EAAAA,WAAU,KACR,MAAMxlC,EAAQylC,EAASE,QAClB3lC,GACL6lC,gBAAe,KACP7lC,EAAAmqB,YAAYhjB,EAAM4U,UAAY,QAAO,GAC5C,GACA,CAAC5U,EAAM4U,SAAU0pB,WAGjBN,GAEC,CAAAC,SAAAqB,GAAA9B,IAAC,gBAAA,CACCJ,IAAKkB,EACLjtB,OAAQrR,EAAMqR,OACd,cAAarR,EAAMu/B,WAAaplC,KAAKiB,UAAU4E,EAAMu/B,iBAAc,EACnE,aAAYv/B,EAAMw/B,UAAYrlC,KAAKiB,UAAU4E,EAAMw/B,gBAAa,EAChEh0B,KAAMxL,EAAMwL,QAEhB,0BC5GkCxL,IAC9B,MAAAy/B,EAAUlB,SAAqC,MAoHrD,OAjHAF,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GACAA,EAAAyO,eAAe/hB,EAAM+hB,eAAc,GACvC,CAAC/hB,EAAM+hB,eAAgB0d,IAG1BpB,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GACAA,EAAA2O,qBAAqBjiB,EAAMiiB,qBAAoB,GACnD,CAACjiB,EAAMiiB,qBAAsBwd,IAGhCpB,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GACAA,EAAA6O,mBAAmBniB,EAAMmiB,mBAAkB,GAC/C,CAACniB,EAAMmiB,mBAAoBsd,IAG9BpB,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GAAStT,EAAM0/B,mBACpBhB,gBAAe,KACRprB,EAAA0oB,gBAAgB2C,GAEZhB,GADW39B,EAAM0/B,kBAAmBf,KAE5C,GACF,GACA,CAAC3+B,EAAM0/B,kBAAmBD,IAG7BpB,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GAAStT,EAAM2/B,qBACpBjB,gBAAe,KACRprB,EAAA+oB,kBAAkBwC,GAEdlB,GADW39B,EAAM2/B,oBAAqBd,KAE9C,GACF,GACA,CAAC7+B,EAAM2/B,oBAAqBF,IAG/BpB,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GAAStT,EAAM4/B,uBACpBlB,gBAAe,KACRprB,EAAA6oB,oBAAoB4C,GAEhBpB,GADW39B,EAAM4/B,sBAAuBb,KAEhD,GACF,GACA,CAAC/+B,EAAM4/B,sBAAuBH,IAGjCpB,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GAAStT,EAAM6/B,yBACpBnB,gBAAe,KACRprB,EAAA4oB,sBAAsB+C,GAElBtB,GADW39B,EAAM6/B,wBAAyBZ,KAElD,GACF,GACA,CAACj/B,EAAM6/B,wBAAyBJ,IAGnCpB,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GAAStT,EAAM8/B,uBACpBpB,gBAAe,KACRprB,EAAA8oB,oBAAoB+C,GAEhBxB,GADW39B,EAAM8/B,sBAAuBX,KAEhD,GACF,GACA,CAACn/B,EAAM8/B,sBAAuBL,IAGjCpB,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GAAStT,EAAM+/B,2BACpBrB,gBAAe,KACRprB,EAAAgpB,wBAAwB+C,GAEpB1B,GADW39B,EAAM+/B,0BAA2BV,KAEpD,GACF,GACA,CAACr/B,EAAM+/B,0BAA2BN,IAGrCpB,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GAAStT,EAAMggC,uBACpBtB,gBAAe,KACRprB,EAAAipB,oBAAoB0D,GAEhBtC,GADW39B,EAAMggC,sBAAuBC,KAEhD,GACF,GACA,CAACjgC,EAAMggC,sBAAuBP,IAGjCpB,EAAAA,WAAU,KACR,MAAM/qB,EAAOmsB,EAAQjB,QAChBlrB,GACLorB,gBAAe,KACRprB,EAAA0P,YAAYhjB,EAAM4U,UAAY,QAAO,GAC3C,GACA,CAAC5U,EAAM4U,SAAU6qB,WAGjBzB,GAEC,CAAAC,SAAAqB,GAAA9B,IAAC,2BAAA,CACCJ,IAAKqC,EACL,kBAAiBz/B,EAAMkgC,eACvB,cAAalgC,EAAMmgC,WACnB,eAAcngC,EAAMogC,YACpB3E,KAAMz7B,EAAMy7B,KACZF,IAAKv7B,EAAMu7B,IACXG,MAAO17B,EAAM07B,MACbF,OAAQx7B,EAAMw7B,OACd,cAAax7B,EAAMu/B,WAAaplC,KAAKiB,UAAU4E,EAAMu/B,iBAAc,EACnE,aAAYv/B,EAAMw/B,UAAYrlC,KAAKiB,UAAU4E,EAAMw/B,gBAAa,EAChEh0B,KAAMxL,EAAMwL,QAEhB,eCrIsB,KAGxB,MAAMpC,EAAUpJ,GAAwByI,EAAQC,OAAOU,OAAOpJ,GACxDsJ,EAAU,IAAMb,EAAQC,OAAOY,UAG/B+2B,EAAargC,GAAqEob,GAAsB1S,OAAOqN,KAAK/V,GACpHmY,EAA2BnY,GAA8Cob,GAAsB1S,OAAOyP,wBAAwBnY,GAC9HsgC,EAAsBC,GAAkB93B,EAAQC,OAAO9F,gBAAkB29B,EACzEppB,EAAehc,GAA0BigB,GAAsB1S,OAAOyO,YAAY,CAAEhc,YACpFkc,EAAiBlc,GAA0BigB,GAAsB1S,OAAO2O,cAAc,CAAElc,YACxF0c,EAAgB1c,GAA0BigB,GAAsB1S,OAAOmP,aAAa,CAAE1c,YACtFsc,EAAkBtc,GAA0BigB,GAAsB1S,OAAO+O,eAAe,CAAEtc,YAC1Foc,EAAepc,GAA0BigB,GAAsB1S,OAAO6O,YAAY,CAAEpc,YACpF4c,EAAoB5c,GAA0BigB,GAAsB1S,OAAOqP,iBAAiB,CAAE5c,YAC9F6b,EAAkB,IAAMoE,GAAsB1S,OAAOsO,mBAGpDwpB,EAAMC,GAAWC,EAAMtC,SAA8B,CAC1D/iC,YAAQ,EACR+N,SACAE,aAGKzQ,EAAO8nC,GAAYD,EAAMtC,SAAqB,CACnDroB,KAAMsqB,EACNloB,0BACAmoB,qBACAnpB,cACAE,gBACAQ,eACAJ,iBACAF,cACAQ,mBACAf,oBAGF0pB,EAAMrC,WAAU,KAGd,MAAM/8B,EAAWmH,EAAQC,OAAOa,2BAA0B,IAAMq3B,MAG1DC,EAAgB,IAAIhW,GAA8B,CACtD7vB,QAAUN,GAAiBomC,EAAapmC,GACxCyb,gBAAiB,IAAM2qB,IACvBhmB,YAAa,IAAMgmB,IACnB9lB,aAAc,IAAM8lB,IACpB7lB,gBAAiB,IAAM6lB,IACvB3lB,gBAAiB,IAAM2lB,IACvBzqB,oBAAqB,IAAMyqB,MAS7B,OAPsB1lB,GAAA1S,OAAOsM,qBAAqB6rB,GAGtCD,IACCE,IAGN,KACLx/B,EAASkH,SACTq4B,EAAcr4B,QAAO,CACvB,GACC,IAEH,MAAMo4B,EAAc,WACZ,MAAApoC,EAAU,OAAAQ,EAAAyP,EAAQC,OAAOM,aAAQ,EAAAhQ,EAAAR,QAC/BioC,EAAA,CACNplC,OAAiB,MAAT7C,OAAS,EAAAA,EAAA6C,OACjB+N,SACAE,WACD,EAGGw3B,EAAgBpmC,IACpB,MAAMqmC,EAAY3lB,GAAsB1S,OAC/Bi4B,EAAA,CACP5qB,KAAMsqB,EACNloB,0BACAmoB,qBACAnpB,cACAE,gBACAQ,eACAJ,iBACAF,cACAQ,mBACAf,kBACAne,MAAOkoC,EAAUrsB,aACjBlR,QAASu9B,EAAUjsB,eACnBN,YAAausB,EAAUvsB,YACvB9Z,SACD,EAGI,MAAA,CACLgO,OAAQD,EAAQC,OAChB83B,OACA3nC,QACF","x_google_ignoreList":[2,3]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/cjs/react-jsx-runtime.production.js","../src/utils/utils.tsx","../src/components/courier-client-component.tsx","../src/components/courier-inbox.tsx","../src/components/courier-inbox-popup-menu.tsx","../src/hooks/use-courier.tsx"],"sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","import { ReactNode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { flushSync } from \"react-dom\";\n\n/**\n * Converts a React node to an HTMLElement.\n * This function uses flushSync to ensure the DOM is updated synchronously.\n * @param node - The React node to convert.\n * @returns The converted HTMLElement.\n */\nexport function reactNodeToHTMLElement(node: ReactNode): HTMLElement {\n const container = document.createElement('div');\n\n // Use flushSync to ensure the DOM is updated synchronously\n flushSync(() => {\n render(node, container);\n });\n\n return container;\n}\n\n/**\n * Render a React node using createRoot.\n * @param node - The React node to render.\n * @param container - The container to render the node into.\n * @returns The rendered node.\n */\nfunction render(node: ReactNode, container: HTMLElement) {\n const root = createRoot(container);\n return root.render(node);\n}","import React, { useState, useEffect } from 'react';\n\ninterface CourierClientProps {\n children: React.ReactNode;\n}\n\nexport const CourierClientComponent: React.FC<CourierClientProps> = ({ children }) => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n // During SSR, render nothing or fallback\n if (typeof window === 'undefined') {\n return null;\n }\n\n if (!isMounted) {\n return null;\n }\n\n return <>{children}</>;\n};","import React, { useRef, useEffect } from \"react\";\nimport { CourierInboxListItemActionFactoryProps, CourierInboxListItemFactoryProps, CourierInboxTheme, CourierInbox as CourierInboxElement, CourierInboxHeaderFactoryProps, CourierInboxStateEmptyFactoryProps, CourierInboxStateLoadingFactoryProps, CourierInboxStateErrorFactoryProps, CourierInboxPaginationItemFactoryProps, CourierInboxFeedType } from \"@trycourier/courier-ui-inbox\";\nimport { reactNodeToHTMLElement } from \"../utils/utils\";\nimport { CourierComponentThemeMode } from \"@trycourier/courier-ui-core\";\nimport { CourierClientComponent } from \"./courier-client-component\";\n\nexport interface CourierInboxProps {\n height?: string;\n lightTheme?: CourierInboxTheme;\n darkTheme?: CourierInboxTheme;\n mode?: CourierComponentThemeMode;\n feedType?: CourierInboxFeedType;\n onMessageClick?: (props: CourierInboxListItemFactoryProps) => void;\n onMessageActionClick?: (props: CourierInboxListItemActionFactoryProps) => void;\n onMessageLongPress?: (props: CourierInboxListItemFactoryProps) => void;\n renderHeader?: (props: CourierInboxHeaderFactoryProps | undefined | null) => React.ReactNode;\n renderListItem?: (props: CourierInboxListItemFactoryProps | undefined | null) => React.ReactNode;\n renderEmptyState?: (props: CourierInboxStateEmptyFactoryProps | undefined | null) => React.ReactNode;\n renderLoadingState?: (props: CourierInboxStateLoadingFactoryProps | undefined | null) => React.ReactNode;\n renderErrorState?: (props: CourierInboxStateErrorFactoryProps | undefined | null) => React.ReactNode;\n renderPaginationItem?: (props: CourierInboxPaginationItemFactoryProps | undefined | null) => React.ReactNode;\n}\n\nexport const CourierInbox = (props: CourierInboxProps) => {\n const inboxRef = useRef<CourierInboxElement>(null);\n\n // Handle message click\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox) return;\n inbox.onMessageClick(props.onMessageClick);\n }, [props.onMessageClick, inboxRef]);\n\n // Handle message action click\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox) return;\n inbox.onMessageActionClick(props.onMessageActionClick);\n }, [props.onMessageActionClick, inboxRef]);\n\n // Handle message long press\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox) return;\n inbox.onMessageLongPress(props.onMessageLongPress);\n }, [props.onMessageLongPress, inboxRef]);\n\n // Render header\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderHeader) return;\n queueMicrotask(() => {\n inbox.setHeader((headerProps?: CourierInboxHeaderFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderHeader!(headerProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderHeader, inboxRef]);\n\n // Render list item\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderListItem) return;\n queueMicrotask(() => {\n inbox.setListItem((itemProps?: CourierInboxListItemFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderListItem!(itemProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderListItem, inboxRef]);\n\n // Render empty state\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderEmptyState) return;\n queueMicrotask(() => {\n inbox.setEmptyState((emptyStateProps?: CourierInboxStateEmptyFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderEmptyState!(emptyStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderEmptyState, inboxRef]);\n\n // Render loading state\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderLoadingState) return;\n queueMicrotask(() => {\n inbox.setLoadingState((loadingStateProps?: CourierInboxStateLoadingFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderLoadingState!(loadingStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderLoadingState, inboxRef]);\n\n // Render error state\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderErrorState) return;\n queueMicrotask(() => {\n inbox.setErrorState((errorStateProps?: CourierInboxStateErrorFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderErrorState!(errorStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderErrorState, inboxRef]);\n\n // Render pagination item\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox || !props.renderPaginationItem) return;\n queueMicrotask(() => {\n inbox.setPaginationItem((paginationProps?: CourierInboxPaginationItemFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPaginationItem!(paginationProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPaginationItem, inboxRef]);\n\n // Set feed type\n useEffect(() => {\n const inbox = inboxRef.current;\n if (!inbox) return;\n queueMicrotask(() => {\n inbox.setFeedType(props.feedType || 'inbox');\n });\n }, [props.feedType, inboxRef]);\n\n return (\n <CourierClientComponent>\n {/* @ts-ignore */}\n <courier-inbox\n ref={inboxRef}\n height={props.height}\n light-theme={props.lightTheme ? JSON.stringify(props.lightTheme) : undefined}\n dark-theme={props.darkTheme ? JSON.stringify(props.darkTheme) : undefined}\n mode={props.mode}\n />\n </CourierClientComponent>\n );\n};","import { useRef, useEffect } from \"react\";\nimport { CourierInboxFeedType, CourierInboxHeaderFactoryProps, CourierInboxListItemActionFactoryProps, CourierInboxListItemFactoryProps, CourierInboxMenuButtonFactoryProps, CourierInboxPopupMenu as CourierInboxPopupMenuElement, CourierInboxPaginationItemFactoryProps, CourierInboxPopupAlignment, CourierInboxStateEmptyFactoryProps, CourierInboxStateErrorFactoryProps, CourierInboxStateLoadingFactoryProps, CourierInboxTheme } from \"@trycourier/courier-ui-inbox\";\nimport { reactNodeToHTMLElement } from \"../utils/utils\";\nimport { CourierComponentThemeMode } from \"@trycourier/courier-ui-core\";\nimport { CourierClientComponent } from \"./courier-client-component\";\n\nexport interface CourierInboxPopupMenuProps {\n popupAlignment?: CourierInboxPopupAlignment;\n popupWidth?: string;\n popupHeight?: string;\n left?: string;\n top?: string;\n right?: string;\n bottom?: string;\n lightTheme?: CourierInboxTheme;\n darkTheme?: CourierInboxTheme;\n mode?: CourierComponentThemeMode;\n feedType?: CourierInboxFeedType;\n onMessageClick?: (props: CourierInboxListItemFactoryProps) => void;\n onMessageActionClick?: (props: CourierInboxListItemActionFactoryProps) => void;\n onMessageLongPress?: (props: CourierInboxListItemFactoryProps) => void;\n renderPopupHeader?: (props: CourierInboxHeaderFactoryProps | undefined | null) => React.ReactNode;\n renderPopupListItem?: (props: CourierInboxListItemFactoryProps | undefined | null) => React.ReactNode;\n renderPopupEmptyState?: (props: CourierInboxStateEmptyFactoryProps | undefined | null) => React.ReactNode;\n renderPopupLoadingState?: (props: CourierInboxStateLoadingFactoryProps | undefined | null) => React.ReactNode;\n renderPopupErrorState?: (props: CourierInboxStateErrorFactoryProps | undefined | null) => React.ReactNode;\n renderPopupPaginationItem?: (props: CourierInboxPaginationItemFactoryProps | undefined | null) => React.ReactNode;\n renderPopupMenuButton?: (props: CourierInboxMenuButtonFactoryProps | undefined | null) => React.ReactNode;\n}\n\nexport const CourierInboxPopupMenu = (props: CourierInboxPopupMenuProps) => {\n const menuRef = useRef<CourierInboxPopupMenuElement>(null);\n\n // Handle message click\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n menu.onMessageClick(props.onMessageClick);\n }, [props.onMessageClick, menuRef]);\n\n // Handle message action click\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n menu.onMessageActionClick(props.onMessageActionClick);\n }, [props.onMessageActionClick, menuRef]);\n\n // Handle message long press\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n menu.onMessageLongPress(props.onMessageLongPress);\n }, [props.onMessageLongPress, menuRef]);\n\n // Render header\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupHeader) return;\n queueMicrotask(() => {\n menu.setPopupHeader((headerProps?: CourierInboxHeaderFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupHeader!(headerProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupHeader, menuRef]);\n\n // Render list item\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupListItem) return;\n queueMicrotask(() => {\n menu.setPopupListItem((itemProps?: CourierInboxListItemFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupListItem!(itemProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupListItem, menuRef]);\n\n // Render empty state\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupEmptyState) return;\n queueMicrotask(() => {\n menu.setPopupEmptyState((emptyStateProps?: CourierInboxStateEmptyFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupEmptyState!(emptyStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupEmptyState, menuRef]);\n\n // Render loading state\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupLoadingState) return;\n queueMicrotask(() => {\n menu.setPopupLoadingState((loadingStateProps?: CourierInboxStateLoadingFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupLoadingState!(loadingStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupLoadingState, menuRef]);\n\n // Render error state\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupErrorState) return;\n queueMicrotask(() => {\n menu.setPopupErrorState((errorStateProps?: CourierInboxStateErrorFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupErrorState!(errorStateProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupErrorState, menuRef]);\n\n // Render pagination item\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupPaginationItem) return;\n queueMicrotask(() => {\n menu.setPopupPaginationItem((paginationProps?: CourierInboxPaginationItemFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupPaginationItem!(paginationProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupPaginationItem, menuRef]);\n\n // Render menu button\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu || !props.renderPopupMenuButton) return;\n queueMicrotask(() => {\n menu.setPopupMenuButton((buttonProps?: CourierInboxMenuButtonFactoryProps | undefined | null): HTMLElement => {\n const reactNode = props.renderPopupMenuButton!(buttonProps);\n return reactNodeToHTMLElement(reactNode);\n });\n });\n }, [props.renderPopupMenuButton, menuRef]);\n\n // Set feed type\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n queueMicrotask(() => {\n menu.setFeedType(props.feedType || 'inbox');\n });\n }, [props.feedType, menuRef]);\n\n return (\n <CourierClientComponent>\n {/* @ts-ignore */}\n <courier-inbox-popup-menu\n ref={menuRef}\n popup-alignment={props.popupAlignment}\n popup-width={props.popupWidth}\n popup-height={props.popupHeight}\n left={props.left}\n top={props.top}\n right={props.right}\n bottom={props.bottom}\n light-theme={props.lightTheme ? JSON.stringify(props.lightTheme) : undefined}\n dark-theme={props.darkTheme ? JSON.stringify(props.darkTheme) : undefined}\n mode={props.mode}\n />\n </CourierClientComponent>\n );\n};\n","import React from 'react';\nimport { Courier, CourierProps, InboxMessage } from '@trycourier/courier-js';\nimport { CourierInboxDatastore, CourierInboxDataStoreListener, CourierInboxFeedType, InboxDataSet } from '@trycourier/courier-ui-inbox';\n\ntype AuthenticationHooks = {\n userId?: string,\n signIn: (props: CourierProps) => void,\n signOut: () => void\n}\n\ntype InboxHooks = {\n load: (props?: { feedType: CourierInboxFeedType, canUseCache: boolean }) => Promise<void>,\n fetchNextPageOfMessages: (props: { feedType: CourierInboxFeedType }) => Promise<InboxDataSet | null>,\n setPaginationLimit: (limit: number) => void,\n readMessage: (message: InboxMessage) => Promise<void>,\n unreadMessage: (message: InboxMessage) => Promise<void>,\n clickMessage: (message: InboxMessage) => Promise<void>,\n archiveMessage: (message: InboxMessage) => Promise<void>,\n openMessage: (message: InboxMessage) => Promise<void>,\n unarchiveMessage: (message: InboxMessage) => Promise<void>,\n readAllMessages: () => Promise<void>,\n inbox?: InboxDataSet,\n archive?: InboxDataSet,\n unreadCount?: number,\n error?: Error\n}\n\n// A hook for managing the shared state of Courier\n// If you want to use more functions, checkout the Courier JS SDK which\n// can be used directly by importing from '@trycourier/courier-js'\nexport const useCourier = () => {\n\n // Authentication Functions\n const signIn = (props: CourierProps) => Courier.shared.signIn(props);\n const signOut = () => Courier.shared.signOut();\n\n // Inbox Functions\n const loadInbox = (props?: { feedType: CourierInboxFeedType, canUseCache: boolean }) => CourierInboxDatastore.shared.load(props);\n const fetchNextPageOfMessages = (props: { feedType: CourierInboxFeedType }) => CourierInboxDatastore.shared.fetchNextPageOfMessages(props);\n const setPaginationLimit = (limit: number) => Courier.shared.paginationLimit = limit;\n const readMessage = (message: InboxMessage) => CourierInboxDatastore.shared.readMessage({ message });\n const unreadMessage = (message: InboxMessage) => CourierInboxDatastore.shared.unreadMessage({ message });\n const clickMessage = (message: InboxMessage) => CourierInboxDatastore.shared.clickMessage({ message });\n const archiveMessage = (message: InboxMessage) => CourierInboxDatastore.shared.archiveMessage({ message });\n const openMessage = (message: InboxMessage) => CourierInboxDatastore.shared.openMessage({ message });\n const unarchiveMessage = (message: InboxMessage) => CourierInboxDatastore.shared.unarchiveMessage({ message });\n const readAllMessages = () => CourierInboxDatastore.shared.readAllMessages();\n\n // State\n const [auth, setAuth] = React.useState<AuthenticationHooks>({\n userId: undefined,\n signIn,\n signOut\n });\n\n const [inbox, setInbox] = React.useState<InboxHooks>({\n load: loadInbox,\n fetchNextPageOfMessages,\n setPaginationLimit,\n readMessage,\n unreadMessage,\n clickMessage,\n archiveMessage,\n openMessage,\n unarchiveMessage,\n readAllMessages\n });\n\n React.useEffect(() => {\n\n // Add a listener to the Courier instance\n const listener = Courier.shared.addAuthenticationListener(() => refreshAuth());\n\n // Add inbox data store listener\n const inboxListener = new CourierInboxDataStoreListener({\n onError: (error: Error) => refreshInbox(error),\n onDataSetChange: () => refreshInbox(),\n onPageAdded: () => refreshInbox(),\n onMessageAdd: () => refreshInbox(),\n onMessageRemove: () => refreshInbox(),\n onMessageUpdate: () => refreshInbox(),\n onUnreadCountChange: () => refreshInbox()\n });\n CourierInboxDatastore.shared.addDataStoreListener(inboxListener);\n\n // Set initial values\n refreshAuth();\n refreshInbox();\n\n // Remove listeners when the component unmounts\n return () => {\n listener.remove();\n inboxListener.remove();\n };\n }, []);\n\n const refreshAuth = () => {\n const options = Courier.shared.client?.options;\n setAuth({\n userId: options?.userId,\n signIn,\n signOut\n });\n }\n\n const refreshInbox = (error?: Error) => {\n const datastore = CourierInboxDatastore.shared;\n setInbox({\n load: loadInbox,\n fetchNextPageOfMessages,\n setPaginationLimit,\n readMessage,\n unreadMessage,\n clickMessage,\n archiveMessage,\n openMessage,\n unarchiveMessage,\n readAllMessages,\n inbox: datastore.inboxDataSet,\n archive: datastore.archiveDataSet,\n unreadCount: datastore.unreadCount,\n error: error,\n });\n }\n\n return {\n shared: Courier.shared,\n auth: auth,\n inbox: inbox,\n };\n};\n"],"names":["jsxRuntimeModule","exports","REACT_ELEMENT_TYPE","Symbol","for","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","ref","$$typeof","props","reactJsxRuntime_production","Fragment","jsx","jsxs","require$$0","reactNodeToHTMLElement","node","container","document","createElement","flushSync","root","createRoot","render","CourierClientComponent","children","isMounted","setIsMounted","useState","useEffect","window","inboxRef","useRef","inbox","current","onMessageClick","onMessageActionClick","onMessageLongPress","renderHeader","queueMicrotask","setHeader","headerProps","renderListItem","setListItem","itemProps","renderEmptyState","setEmptyState","emptyStateProps","renderLoadingState","setLoadingState","loadingStateProps","renderErrorState","setErrorState","errorStateProps","renderPaginationItem","setPaginationItem","paginationProps","setFeedType","feedType","jsxRuntimeExports","height","lightTheme","JSON","stringify","darkTheme","mode","menuRef","menu","renderPopupHeader","setPopupHeader","renderPopupListItem","setPopupListItem","renderPopupEmptyState","setPopupEmptyState","renderPopupLoadingState","setPopupLoadingState","renderPopupErrorState","setPopupErrorState","renderPopupPaginationItem","setPopupPaginationItem","renderPopupMenuButton","setPopupMenuButton","buttonProps","popupAlignment","popupWidth","popupHeight","left","top","right","bottom","signIn","Courier","shared","signOut","loadInbox","CourierInboxDatastore","load","fetchNextPageOfMessages","setPaginationLimit","limit","paginationLimit","readMessage","message","unreadMessage","clickMessage","archiveMessage","openMessage","unarchiveMessage","readAllMessages","auth","setAuth","React","userId","setInbox","listener","addAuthenticationListener","refreshAuth","inboxListener","CourierInboxDataStoreListener","onError","error","refreshInbox","onDataSetChange","onPageAdded","onMessageAdd","onMessageRemove","onMessageUpdate","onUnreadCountChange","addDataStoreListener","remove","options","client","_a","datastore","inboxDataSet","archive","archiveDataSet","unreadCount"],"mappings":"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","x_google_ignoreList":[0,1]}