@aeolus-fleet/gateway 0.32.2 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -5
- package/dist/adapters/crypto/party-sign-in-seals.d.ts +3 -0
- package/dist/adapters/crypto/party-sign-in-seals.js +15 -0
- package/dist/adapters/crypto/party-sign-in-seals.js.map +1 -0
- package/dist/adapters/crypto/slack-install-seals.d.ts +3 -0
- package/dist/adapters/crypto/slack-install-seals.js +15 -0
- package/dist/adapters/crypto/slack-install-seals.js.map +1 -0
- package/dist/adapters/crypto/slack-link-seals.d.ts +3 -0
- package/dist/adapters/crypto/slack-link-seals.js +15 -0
- package/dist/adapters/crypto/slack-link-seals.js.map +1 -0
- package/dist/adapters/crypto/slack-signatures.d.ts +3 -0
- package/dist/adapters/crypto/slack-signatures.js +14 -0
- package/dist/adapters/crypto/slack-signatures.js.map +1 -0
- package/dist/adapters/fleet/rest-fleet-door.js +2 -2
- package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
- package/dist/adapters/fleet/ship-names.d.ts +7 -0
- package/dist/adapters/fleet/ship-names.js +25 -0
- package/dist/adapters/fleet/ship-names.js.map +1 -0
- package/dist/adapters/fleet/slack-ships.d.ts +15 -0
- package/dist/adapters/fleet/slack-ships.js +32 -0
- package/dist/adapters/fleet/slack-ships.js.map +1 -0
- package/dist/adapters/http/mcp-endpoint.js +1 -1
- package/dist/adapters/http/mcp-endpoint.js.map +1 -1
- package/dist/adapters/http/oauth-routes.d.ts +4 -1
- package/dist/adapters/http/oauth-routes.js +21 -9
- package/dist/adapters/http/oauth-routes.js.map +1 -1
- package/dist/adapters/http/openai-apps-challenge.d.ts +10 -0
- package/dist/adapters/http/openai-apps-challenge.js +9 -0
- package/dist/adapters/http/openai-apps-challenge.js.map +1 -0
- package/dist/adapters/http/party-sign-in-routes.d.ts +25 -0
- package/dist/adapters/http/party-sign-in-routes.js +45 -0
- package/dist/adapters/http/party-sign-in-routes.js.map +1 -0
- package/dist/adapters/http/person-tools.d.ts +24 -1
- package/dist/adapters/http/person-tools.js +43 -11
- package/dist/adapters/http/person-tools.js.map +1 -1
- package/dist/adapters/http/slack-routes.d.ts +15 -0
- package/dist/adapters/http/slack-routes.js +188 -0
- package/dist/adapters/http/slack-routes.js.map +1 -0
- package/dist/adapters/mcp/mcp-servers.js +22 -4
- package/dist/adapters/mcp/mcp-servers.js.map +1 -1
- package/dist/adapters/oauth/authorization-servers.d.ts +2 -0
- package/dist/adapters/oauth/authorization-servers.js +127 -0
- package/dist/adapters/oauth/authorization-servers.js.map +1 -0
- package/dist/adapters/oauth/party-sign-ins.d.ts +2 -0
- package/dist/adapters/oauth/party-sign-ins.js +152 -0
- package/dist/adapters/oauth/party-sign-ins.js.map +1 -0
- package/dist/adapters/prisma/fleet-forgetter.d.ts +1 -1
- package/dist/adapters/prisma/fleet-forgetter.js +2 -2
- package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
- package/dist/adapters/prisma/generated/browser.d.ts +35 -0
- package/dist/adapters/prisma/generated/client.d.ts +35 -0
- package/dist/adapters/prisma/generated/internal/class.d.ts +77 -0
- package/dist/adapters/prisma/generated/internal/class.js +4 -4
- package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +629 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js +97 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +103 -0
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +97 -1
- package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
- package/dist/adapters/prisma/generated/models/PartyGrant.d.ts +1276 -0
- package/dist/adapters/prisma/generated/models/PartyGrant.js +2 -0
- package/dist/adapters/prisma/generated/models/PartyGrant.js.map +1 -0
- package/dist/adapters/prisma/generated/models/PartySignInNotice.d.ts +1003 -0
- package/dist/adapters/prisma/generated/models/PartySignInNotice.js +2 -0
- package/dist/adapters/prisma/generated/models/PartySignInNotice.js.map +1 -0
- package/dist/adapters/prisma/generated/models/SlackApp.d.ts +1229 -0
- package/dist/adapters/prisma/generated/models/SlackApp.js +2 -0
- package/dist/adapters/prisma/generated/models/SlackApp.js.map +1 -0
- package/dist/adapters/prisma/generated/models/SlackEvent.d.ts +1232 -0
- package/dist/adapters/prisma/generated/models/SlackEvent.js +2 -0
- package/dist/adapters/prisma/generated/models/SlackEvent.js.map +1 -0
- package/dist/adapters/prisma/generated/models/SlackLink.d.ts +1126 -0
- package/dist/adapters/prisma/generated/models/SlackLink.js +2 -0
- package/dist/adapters/prisma/generated/models/SlackLink.js.map +1 -0
- package/dist/adapters/prisma/generated/models/SlackPost.d.ts +1174 -0
- package/dist/adapters/prisma/generated/models/SlackPost.js +2 -0
- package/dist/adapters/prisma/generated/models/SlackPost.js.map +1 -0
- package/dist/adapters/prisma/generated/models/SlackWorkspace.d.ts +1143 -0
- package/dist/adapters/prisma/generated/models/SlackWorkspace.js +2 -0
- package/dist/adapters/prisma/generated/models/SlackWorkspace.js.map +1 -0
- package/dist/adapters/prisma/generated/models.d.ts +7 -0
- package/dist/adapters/prisma/party-grants.d.ts +10 -0
- package/dist/adapters/prisma/party-grants.js +118 -0
- package/dist/adapters/prisma/party-grants.js.map +1 -0
- package/dist/adapters/prisma/party-store.js +21 -2
- package/dist/adapters/prisma/party-store.js.map +1 -1
- package/dist/adapters/prisma/sign-in-notices.d.ts +8 -0
- package/dist/adapters/prisma/sign-in-notices.js +22 -0
- package/dist/adapters/prisma/sign-in-notices.js.map +1 -0
- package/dist/adapters/prisma/slack-events.d.ts +8 -0
- package/dist/adapters/prisma/slack-events.js +55 -0
- package/dist/adapters/prisma/slack-events.js.map +1 -0
- package/dist/adapters/prisma/slack-links.d.ts +8 -0
- package/dist/adapters/prisma/slack-links.js +49 -0
- package/dist/adapters/prisma/slack-links.js.map +1 -0
- package/dist/adapters/prisma/slack-posts.d.ts +4 -0
- package/dist/adapters/prisma/slack-posts.js +38 -0
- package/dist/adapters/prisma/slack-posts.js.map +1 -0
- package/dist/adapters/prisma/slack-stores.d.ts +6 -0
- package/dist/adapters/prisma/slack-stores.js +115 -0
- package/dist/adapters/prisma/slack-stores.js.map +1 -0
- package/dist/adapters/slack/slack-call.d.ts +15 -0
- package/dist/adapters/slack/slack-call.js +41 -0
- package/dist/adapters/slack/slack-call.js.map +1 -0
- package/dist/adapters/slack/slack-messages.d.ts +4 -0
- package/dist/adapters/slack/slack-messages.js +53 -0
- package/dist/adapters/slack/slack-messages.js.map +1 -0
- package/dist/adapters/slack/slack-sign-in.d.ts +4 -0
- package/dist/adapters/slack/slack-sign-in.js +33 -0
- package/dist/adapters/slack/slack-sign-in.js.map +1 -0
- package/dist/adapters/slack/slack-tooling.d.ts +6 -0
- package/dist/adapters/slack/slack-tooling.js +68 -0
- package/dist/adapters/slack/slack-tooling.js.map +1 -0
- package/dist/adapters/trpc/router.d.ts +286 -10
- package/dist/adapters/trpc/router.js +263 -11
- package/dist/adapters/trpc/router.js.map +1 -1
- package/dist/app.d.ts +6 -0
- package/dist/app.js +225 -21
- package/dist/app.js.map +1 -1
- package/dist/bin/aeolus-gateway.js +2 -0
- package/dist/bin/aeolus-gateway.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/core/connection/connect.d.ts +12 -0
- package/dist/core/connection/connect.js +11 -4
- package/dist/core/connection/connect.js.map +1 -1
- package/dist/core/connection/declare-gateway-scopes.d.ts +15 -0
- package/dist/core/connection/declare-gateway-scopes.js +23 -0
- package/dist/core/connection/declare-gateway-scopes.js.map +1 -0
- package/dist/core/connection/ports.d.ts +5 -0
- package/dist/core/mcp-out/grant-calls.d.ts +69 -0
- package/dist/core/mcp-out/grant-calls.js +98 -0
- package/dist/core/mcp-out/grant-calls.js.map +1 -0
- package/dist/core/mcp-out/hand-call.d.ts +6 -1
- package/dist/core/mcp-out/hand-call.js +23 -2
- package/dist/core/mcp-out/hand-call.js.map +1 -1
- package/dist/core/mcp-out/ports.d.ts +6 -2
- package/dist/core/mcp-out/state-party.d.ts +5 -2
- package/dist/core/mcp-out/state-party.js +7 -2
- package/dist/core/mcp-out/state-party.js.map +1 -1
- package/dist/core/oauth/exchange-token.d.ts +1 -0
- package/dist/core/oauth/exchange-token.js +4 -3
- package/dist/core/oauth/exchange-token.js.map +1 -1
- package/dist/core/oauth/read-authorization.d.ts +3 -3
- package/dist/core/oauth/read-authorization.js +6 -5
- package/dist/core/oauth/read-authorization.js.map +1 -1
- package/dist/core/parties/add-sign-in-server.d.ts +25 -0
- package/dist/core/parties/add-sign-in-server.js +70 -0
- package/dist/core/parties/add-sign-in-server.js.map +1 -0
- package/dist/core/parties/approve-party.d.ts +2 -2
- package/dist/core/parties/check-approving.d.ts +3 -3
- package/dist/core/parties/check-approving.js +2 -2
- package/dist/core/parties/check-approving.js.map +1 -1
- package/dist/core/parties/party.d.ts +3 -2
- package/dist/core/parties/party.js +4 -1
- package/dist/core/parties/party.js.map +1 -1
- package/dist/core/parties/ports.d.ts +49 -0
- package/dist/core/parties/read-party-tools.d.ts +5 -2
- package/dist/core/parties/read-party-tools.js +7 -2
- package/dist/core/parties/read-party-tools.js.map +1 -1
- package/dist/core/parties/retire-party.d.ts +5 -1
- package/dist/core/parties/retire-party.js +6 -1
- package/dist/core/parties/retire-party.js.map +1 -1
- package/dist/core/parties/shown-party.d.ts +2 -2
- package/dist/core/parties/sign-in-servers.d.ts +4 -0
- package/dist/core/parties/sign-in-servers.js +13 -0
- package/dist/core/parties/sign-in-servers.js.map +1 -0
- package/dist/core/parties/switch-tools.d.ts +3 -1
- package/dist/core/parties/switch-tools.js +5 -1
- package/dist/core/parties/switch-tools.js.map +1 -1
- package/dist/core/party-grants/approved-sign-in-party.d.ts +17 -0
- package/dist/core/party-grants/approved-sign-in-party.js +21 -0
- package/dist/core/party-grants/approved-sign-in-party.js.map +1 -0
- package/dist/core/party-grants/call-grant.d.ts +46 -0
- package/dist/core/party-grants/call-grant.js +30 -0
- package/dist/core/party-grants/call-grant.js.map +1 -0
- package/dist/core/party-grants/complete-party-sign-in.d.ts +52 -0
- package/dist/core/party-grants/complete-party-sign-in.js +95 -0
- package/dist/core/party-grants/complete-party-sign-in.js.map +1 -0
- package/dist/core/party-grants/end-account-grants.d.ts +18 -0
- package/dist/core/party-grants/end-account-grants.js +16 -0
- package/dist/core/party-grants/end-account-grants.js.map +1 -0
- package/dist/core/party-grants/end-grant.d.ts +23 -0
- package/dist/core/party-grants/end-grant.js +33 -0
- package/dist/core/party-grants/end-grant.js.map +1 -0
- package/dist/core/party-grants/end-party-grants.d.ts +19 -0
- package/dist/core/party-grants/end-party-grants.js +31 -0
- package/dist/core/party-grants/end-party-grants.js.map +1 -0
- package/dist/core/party-grants/end-retired-persons-grants.d.ts +19 -0
- package/dist/core/party-grants/end-retired-persons-grants.js +30 -0
- package/dist/core/party-grants/end-retired-persons-grants.js.map +1 -0
- package/dist/core/party-grants/keep-grants-alive.d.ts +18 -0
- package/dist/core/party-grants/keep-grants-alive.js +19 -0
- package/dist/core/party-grants/keep-grants-alive.js.map +1 -0
- package/dist/core/party-grants/list-grants.d.ts +30 -0
- package/dist/core/party-grants/list-grants.js +34 -0
- package/dist/core/party-grants/list-grants.js.map +1 -0
- package/dist/core/party-grants/listing-connection.d.ts +29 -0
- package/dist/core/party-grants/listing-connection.js +17 -0
- package/dist/core/party-grants/listing-connection.js.map +1 -0
- package/dist/core/party-grants/party-grant.d.ts +50 -0
- package/dist/core/party-grants/party-grant.js +26 -0
- package/dist/core/party-grants/party-grant.js.map +1 -0
- package/dist/core/party-grants/ports.d.ts +180 -0
- package/dist/core/party-grants/ports.js +2 -0
- package/dist/core/party-grants/ports.js.map +1 -0
- package/dist/core/party-grants/read-own-grant.d.ts +33 -0
- package/dist/core/party-grants/read-own-grant.js +23 -0
- package/dist/core/party-grants/read-own-grant.js.map +1 -0
- package/dist/core/party-grants/refresh-grant.d.ts +41 -0
- package/dist/core/party-grants/refresh-grant.js +58 -0
- package/dist/core/party-grants/refresh-grant.js.map +1 -0
- package/dist/core/party-grants/remove-grant.d.ts +21 -0
- package/dist/core/party-grants/remove-grant.js +25 -0
- package/dist/core/party-grants/remove-grant.js.map +1 -0
- package/dist/core/party-grants/remove-own-grant.d.ts +17 -0
- package/dist/core/party-grants/remove-own-grant.js +21 -0
- package/dist/core/party-grants/remove-own-grant.js.map +1 -0
- package/dist/core/party-grants/sign-in-party.d.ts +23 -0
- package/dist/core/party-grants/sign-in-party.js +22 -0
- package/dist/core/party-grants/sign-in-party.js.map +1 -0
- package/dist/core/party-grants/start-party-sign-in.d.ts +31 -0
- package/dist/core/party-grants/start-party-sign-in.js +31 -0
- package/dist/core/party-grants/start-party-sign-in.js.map +1 -0
- package/dist/core/party-grants/tell-sign-in-needed.d.ts +29 -0
- package/dist/core/party-grants/tell-sign-in-needed.js +27 -0
- package/dist/core/party-grants/tell-sign-in-needed.js.map +1 -0
- package/dist/core/people/ports.d.ts +23 -2
- package/dist/core/people/wake-person.d.ts +9 -2
- package/dist/core/people/wake-person.js +33 -9
- package/dist/core/people/wake-person.js.map +1 -1
- package/dist/core/shared/errors.d.ts +1 -1
- package/dist/core/shared/errors.js.map +1 -1
- package/dist/core/sign-in/start-sign-in.d.ts +4 -1
- package/dist/core/sign-in/start-sign-in.js +8 -2
- package/dist/core/sign-in/start-sign-in.js.map +1 -1
- package/dist/core/slack/answer-in-slack.d.ts +41 -0
- package/dist/core/slack/answer-in-slack.js +59 -0
- package/dist/core/slack/answer-in-slack.js.map +1 -0
- package/dist/core/slack/complete-install.d.ts +27 -0
- package/dist/core/slack/complete-install.js +36 -0
- package/dist/core/slack/complete-install.js.map +1 -0
- package/dist/core/slack/complete-link.d.ts +41 -0
- package/dist/core/slack/complete-link.js +64 -0
- package/dist/core/slack/complete-link.js.map +1 -0
- package/dist/core/slack/connect-slack.d.ts +34 -0
- package/dist/core/slack/connect-slack.js +54 -0
- package/dist/core/slack/connect-slack.js.map +1 -0
- package/dist/core/slack/disconnect-slack.d.ts +21 -0
- package/dist/core/slack/disconnect-slack.js +31 -0
- package/dist/core/slack/disconnect-slack.js.map +1 -0
- package/dist/core/slack/expose-ship.d.ts +35 -0
- package/dist/core/slack/expose-ship.js +59 -0
- package/dist/core/slack/expose-ship.js.map +1 -0
- package/dist/core/slack/follow-exposed-ships.d.ts +20 -0
- package/dist/core/slack/follow-exposed-ships.js +43 -0
- package/dist/core/slack/follow-exposed-ships.js.map +1 -0
- package/dist/core/slack/gateway-bot.d.ts +20 -0
- package/dist/core/slack/gateway-bot.js +22 -0
- package/dist/core/slack/gateway-bot.js.map +1 -0
- package/dist/core/slack/kept-slack-event.d.ts +32 -0
- package/dist/core/slack/kept-slack-event.js +5 -0
- package/dist/core/slack/kept-slack-event.js.map +1 -0
- package/dist/core/slack/list-exposable.d.ts +25 -0
- package/dist/core/slack/list-exposable.js +32 -0
- package/dist/core/slack/list-exposable.js.map +1 -0
- package/dist/core/slack/ports.d.ts +287 -0
- package/dist/core/slack/ports.js +2 -0
- package/dist/core/slack/ports.js.map +1 -0
- package/dist/core/slack/read-slack-link.d.ts +23 -0
- package/dist/core/slack/read-slack-link.js +20 -0
- package/dist/core/slack/read-slack-link.js.map +1 -0
- package/dist/core/slack/read-slack.d.ts +42 -0
- package/dist/core/slack/read-slack.js +35 -0
- package/dist/core/slack/read-slack.js.map +1 -0
- package/dist/core/slack/remove-bot.d.ts +24 -0
- package/dist/core/slack/remove-bot.js +33 -0
- package/dist/core/slack/remove-bot.js.map +1 -0
- package/dist/core/slack/rotate-configuration-tokens.d.ts +13 -0
- package/dist/core/slack/rotate-configuration-tokens.js +14 -0
- package/dist/core/slack/rotate-configuration-tokens.js.map +1 -0
- package/dist/core/slack/send-slack-events.d.ts +32 -0
- package/dist/core/slack/send-slack-events.js +106 -0
- package/dist/core/slack/send-slack-events.js.map +1 -0
- package/dist/core/slack/ship-bot.d.ts +23 -0
- package/dist/core/slack/ship-bot.js +25 -0
- package/dist/core/slack/ship-bot.js.map +1 -0
- package/dist/core/slack/show-all-in-slack.d.ts +16 -0
- package/dist/core/slack/show-all-in-slack.js +18 -0
- package/dist/core/slack/show-all-in-slack.js.map +1 -0
- package/dist/core/slack/show-in-slack.d.ts +38 -0
- package/dist/core/slack/show-in-slack.js +154 -0
- package/dist/core/slack/show-in-slack.js.map +1 -0
- package/dist/core/slack/slack-app.d.ts +77 -0
- package/dist/core/slack/slack-app.js +53 -0
- package/dist/core/slack/slack-app.js.map +1 -0
- package/dist/core/slack/slack-event.d.ts +51 -0
- package/dist/core/slack/slack-event.js +18 -0
- package/dist/core/slack/slack-event.js.map +1 -0
- package/dist/core/slack/slack-link.d.ts +20 -0
- package/dist/core/slack/slack-link.js +2 -0
- package/dist/core/slack/slack-link.js.map +1 -0
- package/dist/core/slack/slack-markdown.d.ts +13 -0
- package/dist/core/slack/slack-markdown.js +27 -0
- package/dist/core/slack/slack-markdown.js.map +1 -0
- package/dist/core/slack/slack-post-of.d.ts +27 -0
- package/dist/core/slack/slack-post-of.js +71 -0
- package/dist/core/slack/slack-post-of.js.map +1 -0
- package/dist/core/slack/slack-post.d.ts +40 -0
- package/dist/core/slack/slack-post.js +13 -0
- package/dist/core/slack/slack-post.js.map +1 -0
- package/dist/core/slack/slack-request.d.ts +17 -0
- package/dist/core/slack/slack-request.js +10 -0
- package/dist/core/slack/slack-request.js.map +1 -0
- package/dist/core/slack/slack-workspace.d.ts +36 -0
- package/dist/core/slack/slack-workspace.js +7 -0
- package/dist/core/slack/slack-workspace.js.map +1 -0
- package/dist/core/slack/start-install.d.ts +43 -0
- package/dist/core/slack/start-install.js +57 -0
- package/dist/core/slack/start-install.js.map +1 -0
- package/dist/core/slack/start-link.d.ts +32 -0
- package/dist/core/slack/start-link.js +46 -0
- package/dist/core/slack/start-link.js.map +1 -0
- package/dist/core/slack/stop-slack-link.d.ts +16 -0
- package/dist/core/slack/stop-slack-link.js +9 -0
- package/dist/core/slack/stop-slack-link.js.map +1 -0
- package/dist/core/slack/take-access-token.d.ts +25 -0
- package/dist/core/slack/take-access-token.js +45 -0
- package/dist/core/slack/take-access-token.js.map +1 -0
- package/dist/core/slack/take-slack-event.d.ts +49 -0
- package/dist/core/slack/take-slack-event.js +81 -0
- package/dist/core/slack/take-slack-event.js.map +1 -0
- package/dist/core/slack/unlink-slack.d.ts +9 -0
- package/dist/core/slack/unlink-slack.js +9 -0
- package/dist/core/slack/unlink-slack.js.map +1 -0
- package/dist/core/vault/credential.d.ts +34 -0
- package/dist/grant-worker.d.ts +20 -0
- package/dist/grant-worker.js +24 -0
- package/dist/grant-worker.js.map +1 -0
- package/dist/slack-event-worker.d.ts +21 -0
- package/dist/slack-event-worker.js +38 -0
- package/dist/slack-event-worker.js.map +1 -0
- package/dist/slack-token-worker.d.ts +19 -0
- package/dist/slack-token-worker.js +24 -0
- package/dist/slack-token-worker.js.map +1 -0
- package/package.json +3 -2
- package/src/adapters/prisma/migrations/20261027090000_slack_workspaces/migration.sql +30 -0
- package/src/adapters/prisma/migrations/20261027150000_slack_bots/migration.sql +6 -0
- package/src/adapters/prisma/migrations/20261027200000_slack_links/migration.sql +15 -0
- package/src/adapters/prisma/migrations/20261028090000_slack_events/migration.sql +18 -0
- package/src/adapters/prisma/migrations/20261028150000_slack_posts/migration.sql +25 -0
- package/src/adapters/prisma/migrations/20261028230000_party_grants/migration.sql +18 -0
- package/src/adapters/prisma/migrations/20261029080000_party_sign_in_notices/migration.sql +10 -0
- package/src/adapters/prisma/migrations/20261029120000_party_grants_lost/migration.sql +3 -0
- package/src/adapters/prisma/migrations/20261029130000_party_grants_refreshed/migration.sql +6 -0
- package/src/adapters/prisma/migrations/20261030090000_party_grants_of_account/migration.sql +2 -0
- package/src/adapters/prisma/migrations/20261030100000_slack_events_unmatched_answers/migration.sql +2 -0
- package/src/adapters/prisma/schema.prisma +148 -0
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +8 -1
- package/web/.next/build-manifest.json +51 -3
- package/web/.next/diagnostics/route-bundle-stats.json +145 -72
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +67 -3
- package/web/.next/routes-manifest.json +42 -0
- package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/(console)/gateway-off/page.js +6 -6
- package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +6 -6
- package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +48 -8
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +8 -8
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +44 -4
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js +8 -8
- package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +48 -8
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +8 -8
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +46 -6
- package/web/.next/server/app/(console)/outside-parties/add/page.js +9 -8
- package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +7 -7
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +7 -7
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/outside-parties/page.js +6 -6
- package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/overview/changes/route.js +3 -2
- package/web/.next/server/app/(console)/overview/changes/route.js.nft.json +1 -1
- package/web/.next/server/app/(console)/overview/focus/route.js +3 -2
- package/web/.next/server/app/(console)/overview/focus/route.js.nft.json +1 -1
- package/web/.next/server/app/(console)/overview/page/server-reference-manifest.json +27 -7
- package/web/.next/server/app/(console)/overview/page.js +8 -8
- package/web/.next/server/app/(console)/overview/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page/server-reference-manifest.json +2 -2
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js +6 -6
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/overview/requests/[requestId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/(console)/parties/page.js +7 -7
- package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page.js +6 -6
- package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
- package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(console)/slack/disconnect/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/slack/disconnect/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/slack/disconnect/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/slack/disconnect/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +65 -0
- package/web/.next/server/app/(console)/slack/disconnect/page.js +22 -0
- package/web/.next/server/app/(console)/slack/disconnect/page.js.map +5 -0
- package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/slack/expose/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/slack/expose/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/slack/expose/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/slack/expose/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +65 -0
- package/web/.next/server/app/(console)/slack/expose/page.js +22 -0
- package/web/.next/server/app/(console)/slack/expose/page.js.map +5 -0
- package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/slack/link/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/slack/link/route/build-manifest.json +12 -0
- package/web/.next/server/app/(console)/slack/link/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/(console)/slack/link/route.js +8 -0
- package/web/.next/server/app/(console)/slack/link/route.js.map +5 -0
- package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -0
- package/web/.next/server/app/(console)/slack/link/route_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/slack/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/slack/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/slack/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/slack/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +65 -0
- package/web/.next/server/app/(console)/slack/page.js +22 -0
- package/web/.next/server/app/(console)/slack/page.js.map +5 -0
- package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/(console)/slack/remove/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/(console)/slack/remove/page/build-manifest.json +23 -0
- package/web/.next/server/app/(console)/slack/remove/page/next-font-manifest.json +11 -0
- package/web/.next/server/app/(console)/slack/remove/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +65 -0
- package/web/.next/server/app/(console)/slack/remove/page.js +22 -0
- package/web/.next/server/app/(console)/slack/remove/page.js.map +5 -0
- package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -0
- package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/_global-error/page.js +1 -1
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page.js +6 -6
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/apple-icon.png/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/apple-icon.png/route/build-manifest.json +12 -0
- package/web/.next/server/app/apple-icon.png/route.js +8 -0
- package/web/.next/server/app/apple-icon.png/route.js.map +5 -0
- package/web/.next/server/app/apple-icon.png/route.js.nft.json +1 -0
- package/web/.next/server/app/apple-icon.png.body +0 -0
- package/web/.next/server/app/apple-icon.png.meta +1 -0
- package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/failed/page.js +5 -5
- package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/pick/page.js +4 -4
- package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page.js +6 -6
- package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
- package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/icon.svg/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/icon.svg/route/build-manifest.json +12 -0
- package/web/.next/server/app/icon.svg/route.js +8 -0
- package/web/.next/server/app/icon.svg/route.js.map +5 -0
- package/web/.next/server/app/icon.svg/route.js.nft.json +1 -0
- package/web/.next/server/app/icon.svg.body +19 -0
- package/web/.next/server/app/icon.svg.meta +1 -0
- package/web/.next/server/app-paths-manifest.json +8 -1
- package/web/.next/server/chunks/[root-of-the-server]__1j0sdz18lzulo._.js +315 -0
- package/web/.next/server/chunks/[root-of-the-server]__1j0sdz18lzulo._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__1o2xxi_001xql._.js +315 -0
- package/web/.next/server/chunks/[root-of-the-server]__1o2xxi_001xql._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__1tfyrijwfgqlk._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__1tfyrijwfgqlk._.js.map +1 -0
- package/web/.next/server/chunks/_0_um96p6psnqx._.js +57 -0
- package/web/.next/server/chunks/_0_um96p6psnqx._.js.map +1 -0
- package/web/.next/server/chunks/_0xw0b7avhvg75._.js +3 -0
- package/web/.next/server/chunks/_0xw0b7avhvg75._.js.map +1 -0
- package/web/.next/server/chunks/_1w2t6c0hpdsrn._.js +3 -0
- package/web/.next/server/chunks/_1w2t6c0hpdsrn._.js.map +1 -0
- package/web/.next/server/chunks/_1xf83h9norhws._.js +57 -0
- package/web/.next/server/chunks/_1xf83h9norhws._.js.map +1 -0
- package/web/.next/server/chunks/_20ne4s-e_jzxp._.js +3 -0
- package/web/.next/server/chunks/_20ne4s-e_jzxp._.js.map +1 -0
- package/web/.next/server/chunks/node_modules_next_1zdbrneapig6o._.js +10 -0
- package/web/.next/server/chunks/node_modules_next_1zdbrneapig6o._.js.map +1 -0
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js +1 -1
- package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_overview_requests_[requestId]_page_actions_0uki9j3mtuz9e.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__03w-pkh4_8jv_._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__03w-pkh4_8jv_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__048-rfvdrnoze._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__048-rfvdrnoze._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__14w0fxvc_of17._.js → [root-of-the-server]__07ba2bfe20c_p._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07ba2bfe20c_p._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0-og0bl8lr2xq._.js → [root-of-the-server]__0a8db18tyk__5._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0-og0bl8lr2xq._.js.map → [root-of-the-server]__0a8db18tyk__5._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0f732g7ojc5-a._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0f732g7ojc5-a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0fz0817_b9ljl._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0fz0817_b9ljl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0i_m5r9lyffk8._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0i_m5r9lyffk8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0icm7kndx480o._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k6a9o0872_0x._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0k6a9o0872_0x._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0pj38h6qumggc._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0pj38h6qumggc._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__1gb-3dttuacyz._.js → [root-of-the-server]__0y0jwufd7xjsv._.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__1m9atpy0vkbmj._.js → [root-of-the-server]__19ecatcacd6t9._.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1aojrh3-9jh9r._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1aojrh3-9jh9r._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__1w5swo8gmjyx6._.js → [root-of-the-server]__1kynqd8xcwg2b._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1kynqd8xcwg2b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__160zc0ja_jjnu._.js → [root-of-the-server]__1q14l5_4hp9h3._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1q14l5_4hp9h3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qnls-4cj-7oh._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qnls-4cj-7oh._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1r1t1q3fzoqey._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1r1t1q3fzoqey._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1xmvo3lr1_qyo._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1xmvo3lr1_qyo._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1zlq3zji9v53h._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0-boiqan2j4tr._.js +3 -0
- package/web/.next/server/chunks/ssr/{_0w2ptjht34s6t._.js.map → _0-boiqan2j4tr._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
- package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +1 -1
- package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0bizyb21i2sl8._.js +3 -0
- package/web/.next/server/chunks/ssr/{_00dg5cvqofspn._.js.map → _0bizyb21i2sl8._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0eu-76mbv16oa._.js +3 -0
- package/web/.next/server/chunks/ssr/_0eu-76mbv16oa._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
- package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
- package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
- package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
- package/web/.next/server/chunks/ssr/_1cnvrfjlqx00k._.js +3 -0
- package/web/.next/server/chunks/ssr/_1cnvrfjlqx00k._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_0bhvvyz0q_0ja._.js → _1e2o809f0ekry._.js} +2 -2
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
- package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
- package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1yqu7dcxs2-so._.js +3 -0
- package/web/.next/server/chunks/ssr/_1yqu7dcxs2-so._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0ettht2so2tkh._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0ettht2so2tkh._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_0keape0zsobyj._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_0keape0zsobyj._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1lbvjrzg8s2ox._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1lbvjrzg8s2ox._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00i8qu9x65r6w.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00i8qu9x65r6w.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_045k03anc7fhh.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_045k03anc7fhh.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a3qpq0qt_bi4.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a3qpq0qt_bi4.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tpm7qi6un9x2.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tpm7qi6un9x2.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0uyk6p-2ofqw3.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0uyk6p-2ofqw3.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0w8e__21f7qvg.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0w8e__21f7qvg.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ynno0usi0bwx.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ynno0usi0bwx.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0za9__u5ytp2s.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0za9__u5ytp2s.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zyzdu1detzlm.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zyzdu1detzlm.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11t1sej48_ec4.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11t1sej48_ec4.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18uz1icr303zj.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18uz1icr303zj.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19_qkbe8796m6.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19_qkbe8796m6.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19uoij8es9z19.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19uoij8es9z19.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1auju5fur8z6x.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1auju5fur8z6x.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c7_m2ii9lash.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c7_m2ii9lash.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1chb4qpzj_l1t.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1chb4qpzj_l1t.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qa52eylhjmki.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qa52eylhjmki.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qw59-auzd_zx.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qw59-auzd_zx.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xzq9xckazj3u.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xzq9xckazj3u.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1yis85alzg6hk.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1yis85alzg6hk.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_00e7-_y92losl._.js +3 -0
- package/web/.next/server/chunks/ssr/web_00e7-_y92losl._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_09rcfto3dw4wd._.js +3 -0
- package/web/.next/server/chunks/ssr/web_09rcfto3dw4wd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0plvx3c_1cozb._.js +3 -0
- package/web/.next/server/chunks/ssr/web_0plvx3c_1cozb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_0qgev3ti257yj._.js +3 -0
- package/web/.next/server/chunks/ssr/{web_0_jk9eione6lx._.js.map → web_0qgev3ti257yj._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
- package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js +1 -1
- package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_overview_page_actions_18on1ziyg1nzy.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_app_(console)_slack_page_tsx_0ts7fo7pqicq6._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(console)_slack_page_tsx_0ts7fo7pqicq6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_app_(console)_slack_remove_page_tsx_15q4ril_on0ed._.js +3 -0
- package/web/.next/server/chunks/ssr/web_app_(console)_slack_remove_page_tsx_15q4ril_on0ed._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_077oo3gzcibvf._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_077oo3gzcibvf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_08yw0utky5j17._.js +3 -0
- package/web/.next/server/chunks/ssr/{web_features_19v3mlx8c_h1-._.js.map → web_features_08yw0utky5j17._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_0d48z2epb6oie._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0d48z2epb6oie._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0f6r-m-dq36vf._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0f6r-m-dq36vf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0mi9a9pdzkdji._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0mi9a9pdzkdji._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_0rd6357w-eo50._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_0rd6357w-eo50._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_19r68thirqv1n._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_19r68thirqv1n._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_1m5g9a6mwrsd-._.js +3 -0
- package/web/.next/server/chunks/ssr/{web_features_085cv0gogrxxf._.js.map → web_features_1m5g9a6mwrsd-._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_1utnezwv0xr-l._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_1utnezwv0xr-l._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{web_features_forms_1d1jyea2jni9o._.js → web_features_forms_1muc8tmsxjj_k._.js} +2 -2
- package/web/.next/server/chunks/ssr/{web_features_forms_1d1jyea2jni9o._.js.map → web_features_forms_1muc8tmsxjj_k._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_forms_ui_credential-fields_tsx_0l-w19zg-7x4b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_1-lre9nfakki7._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_1-lre9nfakki7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_144fx4a-r9_wn._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_144fx4a-r9_wn._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_hooks_overview-actions_ts_0-wrat07d1y5g._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_00l0wkgvv9y6j._.js.map +1 -0
- package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_overview_state_decision-panel_tsx_0kpd26ggtr6h_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
- package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +3 -0
- package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js.map +1 -0
- package/web/.next/server/chunks/web__next-internal_server_app_(console)_slack_link_route_actions_16zgisics858w.js +3 -0
- package/web/.next/server/chunks/web__next-internal_server_app_(console)_slack_link_route_actions_16zgisics858w.js.map +1 -0
- package/web/.next/server/chunks/web__next-internal_server_app_apple-icon_png_route_actions_1yyo-ix0n2rsy.js +3 -0
- package/web/.next/server/chunks/web__next-internal_server_app_apple-icon_png_route_actions_1yyo-ix0n2rsy.js.map +1 -0
- package/web/.next/server/chunks/web__next-internal_server_app_icon_svg_route_actions_0xhoz0ftyz5p3.js +3 -0
- package/web/.next/server/chunks/web__next-internal_server_app_icon_svg_route_actions_0xhoz0ftyz5p3.js.map +1 -0
- package/web/.next/server/middleware-build-manifest.js +51 -3
- package/web/.next/server/next-font-manifest.js +1 -1
- package/web/.next/server/next-font-manifest.json +16 -0
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/preview-props.json +3 -3
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +264 -30
- package/web/.next/static/chunks/015ume9uk4hla.js +1 -0
- package/web/.next/static/chunks/0ji7rkz0ll9gh.js +1 -0
- package/web/.next/static/chunks/0nhopjmnw_dqt.js +1 -0
- package/web/.next/static/chunks/0psup8zn8e6k5.js +1 -0
- package/web/.next/static/chunks/0vlawcs6_kjs1.js +1 -0
- package/web/.next/static/chunks/0zbcy0_3jemrv.js +1 -0
- package/web/.next/static/chunks/1s8b8jpg4jai9.js +1 -0
- package/web/.next/static/chunks/20t1nmdiq805b.js +1 -0
- package/web/.next/static/chunks/26vlpatu47xtw.css +3 -0
- package/web/.next/static/chunks/2gghdkr64z9f9.js +1 -0
- package/web/.next/static/chunks/2s_dov6h7kus5.js +1 -0
- package/web/.next/static/chunks/{1jvae6c-4jwji.js → 2x86i673xcv4t.js} +1 -1
- package/web/.next/static/chunks/{1tgs1j0j-1qlh.js → 31-hltzmw_9fi.js} +1 -1
- package/web/.next/static/chunks/35bmc8wm29tr6.js +1 -0
- package/web/.next/static/chunks/3hvo3apdq-ckk.js +1 -0
- package/web/.next/static/chunks/3rxg2mdhxd6yt.js +1 -0
- package/web/.next/static/chunks/42cpzi5s1o44m.js +1 -0
- package/web/.next/static/media/apple-icon.3jccaq3p5-lh-.png +0 -0
- package/web/.next/static/media/icon.0h5hy2etdmq_n.svg +19 -0
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/types/routes.d.ts +7 -2
- package/web/.next/types/validator.ts +78 -0
- package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js +0 -369
- package/web/.next/server/chunks/[root-of-the-server]__0ykc8bq_c06a1._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00erqdm9cmhh7._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__00q22dte1g2ww._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07udzu2zwg_74._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a68v9ynev4q6._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0a68v9ynev4q6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0l2_dk9d4o01n._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0n2us07jk-78w._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rr5u24i9tjyc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1-c9wugbbwsp3._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1-c9wugbbwsp3._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10y66e1xx8xiq._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__14w0fxvc_of17._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__160zc0ja_jjnu._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1dc6okf5os70a._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1dc6okf5os70a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1dtyycvqa6uht._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1n_sq_58wdluh._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1w5swo8gmjyx6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_00dg5cvqofspn._.js +0 -3
- package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js +0 -3
- package/web/.next/server/chunks/ssr/_0_kakdt7lb6z-._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0w2ptjht34s6t._.js +0 -3
- package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js +0 -3
- package/web/.next/server/chunks/ssr/_1uuy6gkkhq6bx._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js +0 -3
- package/web/.next/server/chunks/ssr/_1y1ovmdhl9_ml._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_07sxnbglqc5q9._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_0qlo87g8tugr4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06etuymo2azrg.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcy-jnk5o43.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bnypafopxsfl.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0e8cobt3o_8ur.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0gzed-epom5si.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0k0-b63ptvbl5.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pik0g65vv-wi.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0xccr6d8xcb1p.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13agc620bnznv.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_184-gj4lz41i-.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18gq8l27vkevg.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bt2ioufqh6fl.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1d613l6zsee_e.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o0-ipfysjmro.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s46s8vlfx01v.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1x-0vplt44lez.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20d8hq6wsqwh_.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js +0 -3
- package/web/.next/server/chunks/ssr/web_0-ufi2al5ubig._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_0_jk9eione6lx._.js +0 -3
- package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js +0 -3
- package/web/.next/server/chunks/ssr/web_1wcpaty_bz55q._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_085cv0gogrxxf._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0xbnkk4hfgr9v._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0xbnkk4hfgr9v._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_0xnlgtw8bfqaa._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_10xz3ojtvfi7h._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_19v3mlx8c_h1-._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_1_2m6l73qk7qw._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_forms_1u0akr22eh_x_._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_outside-party_0_9c27knfvw7u._.js.map +0 -1
- package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js +0 -3
- package/web/.next/server/chunks/ssr/web_features_overview_state_1wuk95dw2_whp._.js.map +0 -1
- package/web/.next/static/chunks/0ke_2_la1glwa.js +0 -1
- package/web/.next/static/chunks/0ul9rtulfiph6.js +0 -1
- package/web/.next/static/chunks/19wvmglfgof0u.js +0 -1
- package/web/.next/static/chunks/1yj875esaesyh.css +0 -3
- package/web/.next/static/chunks/2d283cu3en9cy.js +0 -1
- package/web/.next/static/chunks/2hj3-kl1ggnu_.js +0 -1
- package/web/.next/static/chunks/2i3ydqqupow_x.js +0 -1
- package/web/.next/static/chunks/2n4bf_2r9lysd.js +0 -1
- package/web/.next/static/chunks/2ngyis59r3qta.js +0 -1
- package/web/.next/static/chunks/2riya89_i0je8.js +0 -1
- package/web/.next/static/chunks/3_pwm8b3mf4mf.js +0 -1
- package/web/.next/static/chunks/3bl-e3zhidrrz.js +0 -1
- package/web/.next/static/chunks/3x_8doukmdfpu.js +0 -1
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1gb-3dttuacyz._.js.map → [root-of-the-server]__0y0jwufd7xjsv._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1m9atpy0vkbmj._.js.map → [root-of-the-server]__19ecatcacd6t9._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{_0bhvvyz0q_0ja._.js.map → _1e2o809f0ekry._.js.map} +0 -0
- /package/web/.next/static/{tQFXrUWi6vEZq4Cp-U5tk → yf1Q3fTAV4eQiroxoYbih}/_buildManifest.js +0 -0
- /package/web/.next/static/{tQFXrUWi6vEZq4Cp-U5tk → yf1Q3fTAV4eQiroxoYbih}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{tQFXrUWi6vEZq4Cp-U5tk → yf1Q3fTAV4eQiroxoYbih}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/%40opentelemetry/api/src/baggage/internal/baggage-impl.ts","../../../../node_modules/%40opentelemetry/api/src/baggage/utils.ts","../../../../node_modules/%40opentelemetry/api/src/internal/global-utils.ts","../../../../node_modules/%40opentelemetry/api/src/internal/semver.ts","../../../../node_modules/%40opentelemetry/api/src/diag/consoleLogger.ts","../../../../node_modules/%40opentelemetry/api/src/diag/ComponentLogger.ts","../../../../node_modules/%40opentelemetry/api/src/api/propagation.ts","../../../../node_modules/%40opentelemetry/api/src/api/trace.ts","../../../../node_modules/%40opentelemetry/api/src/trace/internal/tracestate-validators.ts","../../../../node_modules/%40opentelemetry/api/src/baggage/context-helpers.ts","../../../../node_modules/%40opentelemetry/api/src/trace/ProxyTracerProvider.ts","../../../../node_modules/%40opentelemetry/api/src/trace/context-utils.ts","../../../../node_modules/%40opentelemetry/api/src/trace/spancontext-utils.ts","../../../../node_modules/%40opentelemetry/api/src/trace/internal/tracestate-impl.ts","../../../../node_modules/%40opentelemetry/api/src/version.ts","../../../../node_modules/%40opentelemetry/api/src/context/NoopContextManager.ts","../../../../node_modules/%40opentelemetry/api/src/trace/NoopTracer.ts","../../../../node_modules/%40opentelemetry/api/src/api/diag.ts","../../../../node_modules/%40opentelemetry/api/src/api/metrics.ts","../../../../node_modules/%40opentelemetry/api/src/trace/ProxyTracer.ts","../../../../node_modules/%40opentelemetry/api/src/api/context.ts","../../../../node_modules/%40opentelemetry/api/src/diag-api.ts","../../../../node_modules/%40opentelemetry/api/src/metrics-api.ts","../../../../node_modules/%40opentelemetry/api/src/context-api.ts","../../../../node_modules/%40opentelemetry/api/src/propagation-api.ts","../../../../node_modules/%40opentelemetry/api/src/trace-api.ts","../../../../node_modules/%40opentelemetry/api/src/diag/internal/logLevelLogger.ts","../../../../node_modules/%40opentelemetry/api/src/baggage/internal/symbol.ts","../../../../node_modules/%40opentelemetry/api/src/trace/span_kind.ts","../../../../node_modules/%40opentelemetry/api/src/trace/trace_flags.ts","../../../../node_modules/%40opentelemetry/api/src/propagation/NoopTextMapPropagator.ts","../../../../node_modules/%40opentelemetry/api/src/propagation/TextMapPropagator.ts","../../../../node_modules/%40opentelemetry/api/src/index.ts","../../../../node_modules/%40opentelemetry/api/src/trace/invalid-span-constants.ts","../../../../node_modules/%40opentelemetry/api/src/trace/internal/utils.ts","../../../../node_modules/%40opentelemetry/api/src/trace/status.ts","../../../../node_modules/%40opentelemetry/api/src/metrics/NoopMeterProvider.ts","../../../../node_modules/%40opentelemetry/api/src/context/context.ts","../../../../node_modules/%40opentelemetry/api/src/trace/NonRecordingSpan.ts","../../../../node_modules/%40opentelemetry/api/src/metrics/Metric.ts","../../../../node_modules/%40opentelemetry/api/src/trace/SamplingResult.ts","../../../../node_modules/%40opentelemetry/api/src/trace/NoopTracerProvider.ts","../../../../node_modules/%40opentelemetry/api/src/metrics/NoopMeter.ts","../../../../node_modules/%40opentelemetry/api/src/diag/types.ts","../../../../node_modules/next/src/client/components/hooks-server-context.ts","../../../../node_modules/next/src/client/components/static-generation-bailout.ts","../../../../node_modules/next/dist/compiled/%40edge-runtime/cookies/index.js","../../../../node_modules/next/dist/esm/server/lib/trace/span-store.js","../../../../node_modules/next/dist/esm/shared/lib/utils/reflect-utils.js","../../../../node_modules/next/dist/esm/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/esm/server/app-render/dynamic-rendering.js","../../../../node_modules/next/dist/esm/client/components/hooks-server-context.js","../../../../node_modules/next/dist/esm/client/components/static-generation-bailout.js","../../../../node_modules/next/dist/esm/server/lib/clone-response.js","../../../../node_modules/next/dist/esm/server/lib/lru-cache.js","../../../../node_modules/next/dist/esm/lib/picocolors.js","../../../../node_modules/next/dist/esm/server/lib/trace/constants.js","../../../../node_modules/next/dist/esm/shared/lib/i18n/normalize-locale-path.js","../../../../node_modules/next/dist/esm/server/web/spec-extension/cookies.js","../../../../node_modules/next/dist/esm/server/lib/encode-header-safe.js","../../../../node_modules/next/dist/esm/shared/lib/segment.js","../../../../node_modules/next/dist/esm/shared/lib/request-insights.js","../../../../node_modules/next/dist/esm/lib/constants.js","../../../../node_modules/next/dist/esm/server/response-cache/types.js","../../../../node_modules/next/dist/esm/shared/lib/invariant-error.js","../../../../node_modules/next/dist/esm/shared/lib/i18n/detect-domain-locale.js","../../../../node_modules/next/dist/esm/shared/lib/promise-with-resolvers.js","../../../../node_modules/next/dist/esm/lib/framework/boundary-constants.js","../../../../node_modules/next/dist/esm/server/route-kind.js","../../../../node_modules/next/dist/esm/server/web/error.js","../../../../node_modules/next/dist/esm/server/app-render/instant-validation/boundary-constants.js","../../../../node_modules/next/dist/esm/shared/lib/server-reference-info.js","../../../../node_modules/next/dist/esm/client/components/redirect-status-code.js","../../../../node_modules/next/dist/esm/server/instrumentation/utils.js","../../../../node_modules/next/dist/esm/server/normalizers/wrap-normalizer-fn.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/cache-busting-search-param.js","../../../../node_modules/next/dist/esm/server/lib/trace/request-insights-identity.js","../../../../node_modules/next/dist/esm/server/request-meta.js","../../../../node_modules/next/dist/esm/server/lib/cache-control.js","../../../../node_modules/next/dist/esm/server/lib/trace/request-insights.js","../../../../node_modules/next/dist/esm/server/lib/trace/tracer.js","../../../../node_modules/next/dist/esm/build/output/log.js","../../../../node_modules/next/dist/esm/server/base-http/index.js","../../../../node_modules/next/dist/esm/server/app-render/staged-rendering.js","../../../../node_modules/next/dist/esm/server/normalizers/underscore-normalizer.js","../../../../node_modules/next/dist/esm/server/base-http/node.js","../../../../node_modules/next/dist/esm/server/render-result.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/get-next-pathname-info.js","../../../../node_modules/next/dist/esm/server/api-utils/get-cookie-parser.js","../../../../node_modules/next/dist/esm/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/esm/server/normalizers/normalizers.js","../../../../node_modules/next/dist/esm/server/dynamic-rendering-utils.js","../../../../node_modules/next/dist/esm/server/web/next-url.js","../../../../node_modules/next/dist/esm/server/response-cache/utils.js","../../../../node_modules/next/dist/esm/server/web/spec-extension/adapters/next-request.js","../../../../node_modules/next/dist/esm/server/web/spec-extension/request.js","../../../../node_modules/next/dist/esm/server/api-utils/index.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/format-next-pathname-info.js","../../../../node_modules/next/dist/esm/server/pipe-readable.js","../../../../node_modules/next/dist/esm/server/normalizers/built/app/app-pathname-normalizer.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/add-path-prefix.js","../../../../node_modules/next/dist/esm/lib/batcher.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/parse-path.js","../../../../node_modules/next/dist/esm/server/lib/dedupe-fetch.js","../../../../node_modules/next/dist/esm/server/lib/route-cache-key.js","../../../../node_modules/next/dist/esm/shared/lib/get-hostname.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/add-path-suffix.js","../../../../node_modules/next/dist/esm/lib/scheduler.js","../../../../node_modules/next/dist/esm/shared/lib/is-thenable.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/add-locale.js","../../../../node_modules/next/dist/esm/server/response-cache/index.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/remove-trailing-slash.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/path-has-prefix.js","../../../../node_modules/next/dist/esm/server/app-render/manifests-singleton.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/remove-path-prefix.js","../../../../node_modules/next/dist/esm/server/stream-utils/node-web-streams-helper.js","../../../../node_modules/next/dist/esm/server/send-response.js","../../../../node_modules/next/dist/esm/server/web/utils.js","../../../../node_modules/next/dist/esm/server/base-http/helpers.js","../../../../node_modules/next/dist/esm/shared/lib/page-path/normalize-page-path.js","../../../../node_modules/next/dist/esm/server/lib/patch-fetch.js","../../../../node_modules/next/dist/esm/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/src/lib/framework/boundary-constants.tsx","../../../../node_modules/next/src/lib/scheduler.ts","../../../../node_modules/next/src/server/app-render/blocking-route-messages.ts","../../../../node_modules/next/src/server/app-render/dynamic-rendering.ts","../../../../node_modules/next/src/server/app-render/instant-validation/boundary-constants.ts","../../../../node_modules/next/src/server/app-render/instant-validation/boundary-tracking.tsx","../../../../node_modules/next/src/server/app-render/segment-config/ensure-static.ts","../../../../node_modules/next/src/server/app-render/staged-rendering.ts","../../../../node_modules/next/src/server/dynamic-rendering-utils.ts","../../../../node_modules/next/src/server/lib/app-dir-module.ts","../../../../node_modules/next/src/server/request/utils.ts","../../../../node_modules/next/src/server/route-modules/app-page/module.compiled.js","../../../../node_modules/next/src/server/route-modules/app-page/vendored/rsc/react.ts","../../../../node_modules/next/src/server/use-cache/use-cache-messages.ts","../../../../node_modules/next/src/server/web/spec-extension/adapters/reflect.ts","../../../../node_modules/next/src/server/web/spec-extension/cookies.ts","../../../../node_modules/next/src/shared/lib/instant-messages.ts","../../../../node_modules/next/src/shared/lib/invariant-error.ts","../../../../node_modules/next/src/shared/lib/lazy-dynamic/react-browser-bailout.ts","../../../../node_modules/next/src/shared/lib/promise-with-resolvers.ts","../../../../node_modules/next/src/shared/lib/router/utils/parse-loader-tree.ts","../../../../node_modules/next/src/shared/lib/segment.ts","../../../../node_modules/next/dist/compiled/%40opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/cookie/index.js","../../../../node_modules/next/src/server/route-modules/app-route/module.compiled.js"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Baggage, BaggageEntry } from '../types';\n\nexport class BaggageImpl implements Baggage {\n private _entries: Map<string, BaggageEntry>;\n\n constructor(entries?: Map<string, BaggageEntry>) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n\n getEntry(key: string): BaggageEntry | undefined {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n\n return Object.assign({}, entry);\n }\n\n getAllEntries(): [string, BaggageEntry][] {\n return Array.from(this._entries.entries());\n }\n\n setEntry(key: string, entry: BaggageEntry): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n\n removeEntry(key: string): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n\n removeEntries(...keys: string[]): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n\n clear(): BaggageImpl {\n return new BaggageImpl();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DiagAPI } from '../api/diag';\nimport { BaggageImpl } from './internal/baggage-impl';\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\nimport type { Baggage, BaggageEntry, BaggageEntryMetadata } from './types';\n\nconst diag = DiagAPI.instance();\n\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nexport function createBaggage(\n entries: Record<string, BaggageEntry> = {}\n): Baggage {\n return new BaggageImpl(new Map(Object.entries(entries)));\n}\n\n/**\n * Create a serializable BaggageEntryMetadata object from a string.\n *\n * @param str string metadata. Format is currently not defined by the spec and has no special meaning.\n *\n * @since 1.0.0\n */\nexport function baggageEntryMetadataFromString(\n str: string\n): BaggageEntryMetadata {\n if (typeof str !== 'string') {\n diag.error(\n `Cannot create baggage metadata from unknown type: ${typeof str}`\n );\n str = '';\n }\n\n return {\n __TYPE__: baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { MeterProvider } from '../metrics/MeterProvider';\nimport type { ContextManager } from '../context/types';\nimport type { DiagLogger } from '../diag/types';\nimport type { TextMapPropagator } from '../propagation/TextMapPropagator';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\n\nconst major = VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\n `opentelemetry.js.api.${major}`\n);\n\ndeclare const self: unknown;\ndeclare const window: unknown;\ndeclare const global: unknown;\n\nconst _global = (\n typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : {}\n) as OTelGlobal;\n\nexport function registerGlobal<Type extends keyof OTelGlobalAPI>(\n type: Type,\n instance: OTelGlobalAPI[Type],\n diag: DiagLogger,\n allowOverride = false\n): boolean {\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = _global[\n GLOBAL_OPENTELEMETRY_API_KEY\n ] ?? {\n version: VERSION,\n });\n\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(\n `@opentelemetry/api: Attempted duplicate registration of API: ${type}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n if (api.version !== VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(\n `@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${VERSION}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n api[type] = instance;\n diag.debug(\n `@opentelemetry/api: Registered a global for ${type} v${VERSION}.`\n );\n\n return true;\n}\n\nexport function getGlobal<Type extends keyof OTelGlobalAPI>(\n type: Type\n): OTelGlobalAPI[Type] | undefined {\n const globalVersion = _global[GLOBAL_OPENTELEMETRY_API_KEY]?.version;\n if (!globalVersion || !isCompatible(globalVersion)) {\n return;\n }\n return _global[GLOBAL_OPENTELEMETRY_API_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger) {\n diag.debug(\n `@opentelemetry/api: Unregistering a global for ${type} v${VERSION}.`\n );\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n\n if (api) {\n delete api[type];\n }\n}\n\ntype OTelGlobal = {\n [GLOBAL_OPENTELEMETRY_API_KEY]?: OTelGlobalAPI;\n};\n\ntype OTelGlobalAPI = {\n version: string;\n\n diag?: DiagLogger;\n trace?: TracerProvider;\n context?: ContextManager;\n metrics?: MeterProvider;\n propagation?: TextMapPropagator;\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { VERSION } from '../version';\n\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nexport function _makeCompatibilityCheck(\n ownVersion: string\n): (globalVersion: string) => boolean {\n const acceptedVersions = new Set<string>([ownVersion]);\n const rejectedVersions = new Set<string>();\n\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion: string): boolean {\n return globalVersion === ownVersion;\n };\n }\n\n function _reject(v: string) {\n rejectedVersions.add(v);\n return false;\n }\n\n function _accept(v: string) {\n acceptedVersions.add(v);\n return true;\n }\n\n return function isCompatible(globalVersion: string): boolean {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n\n const globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.major === 0) {\n if (\n ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch\n ) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n };\n}\n\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexport const isCompatible = _makeCompatibilityCheck(VERSION);\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { DiagLogger, DiagLogFunction } from './types';\n\ntype ConsoleMapKeys = 'error' | 'warn' | 'info' | 'debug' | 'trace';\nconst consoleMap: { n: keyof DiagLogger; c: ConsoleMapKeys }[] = [\n { n: 'error', c: 'error' },\n { n: 'warn', c: 'warn' },\n { n: 'info', c: 'info' },\n { n: 'debug', c: 'debug' },\n { n: 'verbose', c: 'trace' },\n];\n\n// Save original console methods at module load time, before any instrumentation\n// can wrap them. This ensures DiagConsoleLogger calls the unwrapped originals.\n// Exported for testing only — not part of the public API.\nexport const _originalConsoleMethods: Partial<\n Record<ConsoleMapKeys | 'log', typeof console.log>\n> = {};\nif (typeof console !== 'undefined') {\n const keys: (ConsoleMapKeys | 'log')[] = [\n 'error',\n 'warn',\n 'info',\n 'debug',\n 'trace',\n 'log',\n ];\n for (const key of keys) {\n // eslint-disable-next-line no-console\n if (typeof console[key] === 'function') {\n // eslint-disable-next-line no-console\n _originalConsoleMethods[key] = console[key];\n }\n }\n}\n\n/**\n * A simple Immutable Console based diagnostic logger which will output any messages to the Console.\n * If you want to limit the amount of logging to a specific level or lower use the\n * {@link createLogLevelDiagLogger}\n *\n * @since 1.0.0\n */\nexport class DiagConsoleLogger implements DiagLogger {\n constructor() {\n function _consoleFunc(funcName: ConsoleMapKeys): DiagLogFunction {\n return function (...args) {\n // Prefer original (pre-instrumentation) methods saved at module load time.\n let theFunc = _originalConsoleMethods[funcName];\n // Some environments only expose the console when the F12 developer console is open\n if (typeof theFunc !== 'function') {\n theFunc = _originalConsoleMethods['log'];\n }\n // Fall back in case console was not available at module load time but became available later.\n if (typeof theFunc !== 'function' && console) {\n // eslint-disable-next-line no-console\n theFunc = console[funcName];\n if (typeof theFunc !== 'function') {\n // eslint-disable-next-line no-console\n theFunc = console.log;\n }\n }\n if (typeof theFunc === 'function') {\n return theFunc.apply(console, args);\n }\n };\n }\n\n for (let i = 0; i < consoleMap.length; i++) {\n this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n }\n }\n\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n public error!: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n public warn!: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n public info!: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario. Useful scenarios would be to log the execution\n * order of async operations\n */\n public debug!: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n public verbose!: DiagLogFunction;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getGlobal } from '../internal/global-utils';\nimport type { ComponentLoggerOptions, DiagLogger } from './types';\n\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nexport class DiagComponentLogger implements DiagLogger {\n private _namespace: string;\n\n constructor(props: ComponentLoggerOptions) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n\n public debug(...args: unknown[]): void {\n return logProxy('debug', this._namespace, args);\n }\n\n public error(...args: unknown[]): void {\n return logProxy('error', this._namespace, args);\n }\n\n public info(...args: unknown[]): void {\n return logProxy('info', this._namespace, args);\n }\n\n public warn(...args: unknown[]): void {\n return logProxy('warn', this._namespace, args);\n }\n\n public verbose(...args: unknown[]): void {\n return logProxy('verbose', this._namespace, args);\n }\n}\n\nfunction logProxy(\n funcName: keyof DiagLogger,\n namespace: string,\n args: unknown[]\n): void {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n\n return logger[funcName](namespace, ...args);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { NoopTextMapPropagator } from '../propagation/NoopTextMapPropagator';\nimport type {\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '../propagation/TextMapPropagator';\nimport {\n defaultTextMapGetter,\n defaultTextMapSetter,\n} from '../propagation/TextMapPropagator';\nimport {\n getBaggage,\n getActiveBaggage,\n setBaggage,\n deleteBaggage,\n} from '../baggage/context-helpers';\nimport { createBaggage } from '../baggage/utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n *\n * @since 1.0.0\n */\nexport class PropagationAPI {\n private static _instance?: PropagationAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Propagator API */\n public static getInstance(): PropagationAPI {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n public setGlobalPropagator(propagator: TextMapPropagator): boolean {\n return registerGlobal(API_NAME, propagator, DiagAPI.instance());\n }\n\n /**\n * Inject context into a carrier to be propagated inter-process\n *\n * @param context Context carrying tracing data to inject\n * @param carrier carrier to inject context into\n * @param setter Function used to set values on the carrier\n */\n public inject<Carrier>(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter<Carrier> = defaultTextMapSetter\n ): void {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\n\n /**\n * Extract context from a carrier\n *\n * @param context Context which the newly created context will inherit from\n * @param carrier Carrier to extract context from\n * @param getter Function used to extract keys from a carrier\n */\n public extract<Carrier>(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter<Carrier> = defaultTextMapGetter\n ): Context {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n public fields(): string[] {\n return this._getGlobalPropagator().fields();\n }\n\n /** Remove the global propagator */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n\n public createBaggage = createBaggage;\n\n public getBaggage = getBaggage;\n\n public getActiveBaggage = getActiveBaggage;\n\n public setBaggage = setBaggage;\n\n public deleteBaggage = deleteBaggage;\n\n private _getGlobalPropagator(): TextMapPropagator {\n return getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n isSpanContextValid,\n wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport type { Tracer } from '../trace/tracer';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport {\n deleteSpan,\n getActiveSpan,\n getSpan,\n getSpanContext,\n setSpan,\n setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n *\n * @since 1.0.0\n */\nexport class TraceAPI {\n private static _instance?: TraceAPI;\n\n private _proxyTracerProvider = new ProxyTracerProvider();\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Trace API */\n public static getInstance(): TraceAPI {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n public setGlobalTracerProvider(provider: TracerProvider): boolean {\n const success = registerGlobal(\n API_NAME,\n this._proxyTracerProvider,\n DiagAPI.instance()\n );\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n\n /**\n * Returns the global tracer provider.\n */\n public getTracerProvider(): TracerProvider {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n }\n\n /**\n * Returns a tracer from the global tracer provider.\n */\n public getTracer(name: string, version?: string): Tracer {\n return this.getTracerProvider().getTracer(name, version);\n }\n\n /** Remove the global tracer provider */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n }\n\n public wrapSpanContext = wrapSpanContext;\n\n public isSpanContextValid = isSpanContextValid;\n\n public deleteSpan = deleteSpan;\n\n public getSpan = getSpan;\n\n public getActiveSpan = getActiveSpan;\n\n public getSpanContext = getSpanContext;\n\n public setSpan = setSpan;\n\n public setSpanContext = setSpanContext;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ContextAPI } from '../api/context';\nimport { createContextKey } from '../context/context';\nimport type { Context } from '../context/types';\nimport type { Baggage } from './types';\n\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');\n\n/**\n * Retrieve the current baggage from the given context\n *\n * @param {Context} Context that manage all context values\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getBaggage(context: Context): Baggage | undefined {\n return (context.getValue(BAGGAGE_KEY) as Baggage) || undefined;\n}\n\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getActiveBaggage(): Baggage | undefined {\n return getBaggage(ContextAPI.getInstance().active());\n}\n\n/**\n * Store a baggage in the given context\n *\n * @param {Context} Context that manage all context values\n * @param {Baggage} baggage that will be set in the actual context\n */\nexport function setBaggage(context: Context, baggage: Baggage): Context {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\n\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nexport function deleteBaggage(context: Context): Context {\n return context.deleteValue(BAGGAGE_KEY);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Tracer } from './tracer';\nimport type { TracerProvider } from './tracer_provider';\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nimport type { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n *\n * @deprecated This will be removed in the next major version.\n * @since 1.0.0\n */\nexport class ProxyTracerProvider implements TracerProvider {\n private _delegate?: TracerProvider;\n\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer {\n return (\n this.getDelegateTracer(name, version, options) ??\n new ProxyTracer(this, name, version, options)\n );\n }\n\n getDelegate(): TracerProvider {\n return this._delegate ?? NOOP_TRACER_PROVIDER;\n }\n\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate: TracerProvider) {\n this._delegate = delegate;\n }\n\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined {\n return this._delegate?.getTracer(name, version, options);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createContextKey } from '../context/context';\nimport type { Context } from '../context/types';\nimport type { Span } from './span';\nimport type { SpanContext } from './span_context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n\n/**\n * span key\n */\nconst SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context: Context): Span | undefined {\n return (context.getValue(SPAN_KEY) as Span) || undefined;\n}\n\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan(): Span | undefined {\n return getSpan(ContextAPI.getInstance().active());\n}\n\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nexport function setSpan(context: Context, span: Span): Context {\n return context.setValue(SPAN_KEY, span);\n}\n\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context: Context): Context {\n return context.deleteValue(SPAN_KEY);\n}\n\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nexport function setSpanContext(\n context: Context,\n spanContext: SpanContext\n): Context {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context: Context): SpanContext | undefined {\n return getSpan(context)?.spanContext();\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport type { Span } from './span';\nimport type { SpanContext } from './span_context';\n\n// Valid characters (0-9, a-f, A-F) are marked as 1.\nconst isHex = new Uint8Array([\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,\n]);\n\nfunction isValidHex(id: string, length: number): boolean {\n // As of 1.9.0 the id was allowed to be a non-string value,\n // even though it was not possible in the types.\n if (typeof id !== 'string' || id.length !== length) return false;\n\n let r = 0;\n for (let i = 0; i < id.length; i += 4) {\n r +=\n (isHex[id.charCodeAt(i)] | 0) +\n (isHex[id.charCodeAt(i + 1)] | 0) +\n (isHex[id.charCodeAt(i + 2)] | 0) +\n (isHex[id.charCodeAt(i + 3)] | 0);\n }\n\n return r === length;\n}\n\n/**\n * @since 1.0.0\n */\nexport function isValidTraceId(traceId: string): boolean {\n return isValidHex(traceId, 32) && traceId !== INVALID_TRACEID;\n}\n\n/**\n * @since 1.0.0\n */\nexport function isValidSpanId(spanId: string): boolean {\n return isValidHex(spanId, 16) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n *\n * @since 1.0.0\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n return (\n isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n );\n}\n\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n return new NonRecordingSpan(spanContext);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TraceState } from '../trace_state';\nimport { validateKey, validateValue } from './tracestate-validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nexport class TraceStateImpl implements TraceState {\n private _internalState: Map<string, string> = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceStateImpl {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n\n unset(key: string): TraceStateImpl {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return (\n Array.from(this._internalState.keys())\n // Use reduceRight() because keys are stored in reverse insertion order.\n .reduceRight((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR)\n );\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n // Use reduceRight() so new keys (.set(...)) will be placed at the beginning\n .reduceRight((agg: Map<string, string>, part: string) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(\n Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS)\n );\n }\n }\n\n // @ts-expect-error TS6133 Accessed in tests only.\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceStateImpl {\n const traceState = new TraceStateImpl();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.9.1';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ROOT_CONTEXT } from './context';\nimport type * as types from './types';\n\nexport class NoopContextManager implements types.ContextManager {\n active(): types.Context {\n return ROOT_CONTEXT;\n }\n\n with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n _context: types.Context,\n fn: F,\n thisArg?: ThisParameterType<F>,\n ...args: A\n ): ReturnType<F> {\n return fn.call(thisArg, ...args);\n }\n\n bind<T>(_context: types.Context, target: T): T {\n return target;\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n return this;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ContextAPI } from '../api/context';\nimport type { Context } from '../context/types';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport type { Span } from './span';\nimport { isSpanContextValid } from './spancontext-utils';\nimport type { SpanOptions } from './SpanOptions';\nimport type { SpanContext } from './span_context';\nimport type { Tracer } from './tracer';\n\nconst contextApi = ContextAPI.getInstance();\n\n/**\n * No-op implementations of {@link Tracer}.\n */\nexport class NoopTracer implements Tracer {\n // startSpan starts a noop span.\n startSpan(\n name: string,\n options?: SpanOptions,\n context = contextApi.active()\n ): Span {\n const root = Boolean(options?.root);\n if (root) {\n return new NonRecordingSpan();\n }\n\n const parentFromContext = context && getSpanContext(context);\n\n if (\n isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)\n ) {\n return new NonRecordingSpan(parentFromContext);\n } else {\n return new NonRecordingSpan();\n }\n }\n\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n fn: F\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n opts: SpanOptions | undefined,\n fn: F\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n opts: SpanOptions | undefined,\n ctx: Context | undefined,\n fn: F\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n arg2?: F | SpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType<F> | undefined {\n let opts: SpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as SpanOptions | undefined;\n ctx = arg3 as Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = setSpan(parentContext, span);\n\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\n\nfunction isSpanContext(spanContext: unknown): spanContext is SpanContext {\n return (\n spanContext !== null &&\n typeof spanContext === 'object' &&\n 'spanId' in spanContext &&\n typeof spanContext['spanId'] === 'string' &&\n 'traceId' in spanContext &&\n typeof spanContext['traceId'] === 'string' &&\n 'traceFlags' in spanContext &&\n typeof spanContext['traceFlags'] === 'number'\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport type {\n ComponentLoggerOptions,\n DiagLogFunction,\n DiagLogger,\n DiagLoggerApi,\n} from '../diag/types';\nimport { DiagLogLevel } from '../diag/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\n\nconst API_NAME = 'diag';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n *\n * @since 1.0.0\n */\nexport class DiagAPI implements DiagLogger, DiagLoggerApi {\n private static _instance?: DiagAPI;\n\n /** Get the singleton instance of the DiagAPI API */\n public static instance(): DiagAPI {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Private internal constructor\n * @private\n */\n private constructor() {\n function _logProxy(funcName: keyof DiagLogger): DiagLogFunction {\n return function (...args) {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) return;\n return logger[funcName](...args);\n };\n }\n\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n\n // DiagAPI specific functions\n\n const setLogger: DiagLoggerApi['setLogger'] = (\n logger,\n optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }\n ) => {\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n const err = new Error(\n 'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'\n );\n self.error(err.stack ?? err.message);\n return false;\n }\n\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n\n const oldLogger = getGlobal('diag');\n const newLogger = createLogLevelDiagLogger(\n optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO,\n logger\n );\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = new Error().stack ?? '<failed to generate stacktrace>';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(\n `Current logger will overwrite one already registered from ${stack}`\n );\n }\n\n return registerGlobal('diag', newLogger, self, true);\n };\n\n self.setLogger = setLogger;\n\n self.disable = () => {\n unregisterGlobal(API_NAME, self);\n };\n\n self.createComponentLogger = (options: ComponentLoggerOptions) => {\n return new DiagComponentLogger(options);\n };\n\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n\n public setLogger!: DiagLoggerApi['setLogger'];\n /**\n *\n */\n public createComponentLogger!: (\n options: ComponentLoggerOptions\n ) => DiagLogger;\n\n // DiagLogger implementation\n public verbose!: DiagLogFunction;\n public debug!: DiagLogFunction;\n public info!: DiagLogFunction;\n public warn!: DiagLogFunction;\n public error!: DiagLogFunction;\n\n /**\n * Unregister the global logger and return to Noop\n */\n public disable!: () => void;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Meter, MeterOptions } from '../metrics/Meter';\nimport type { MeterProvider } from '../metrics/MeterProvider';\nimport { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'metrics';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nexport class MetricsAPI {\n private static _instance?: MetricsAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Metrics API */\n public static getInstance(): MetricsAPI {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n public setGlobalMeterProvider(provider: MeterProvider): boolean {\n return registerGlobal(API_NAME, provider, DiagAPI.instance());\n }\n\n /**\n * Returns the global meter provider.\n */\n public getMeterProvider(): MeterProvider {\n return getGlobal(API_NAME) || NOOP_METER_PROVIDER;\n }\n\n /**\n * Returns a meter from the global meter provider.\n */\n public getMeter(\n name: string,\n version?: string,\n options?: MeterOptions\n ): Meter {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n\n /** Remove the global meter provider */\n public disable(): void {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '../context/types';\nimport { NoopTracer } from './NoopTracer';\nimport type { Span } from './span';\nimport type { SpanOptions } from './SpanOptions';\nimport type { Tracer } from './tracer';\nimport type { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER = new NoopTracer();\n\n/**\n * Proxy tracer provided by the proxy tracer provider\n *\n * @since 1.0.0\n */\nexport class ProxyTracer implements Tracer {\n // When a real implementation is provided, this will be it\n private _delegate?: Tracer;\n private _provider: TracerDelegator;\n public readonly name: string;\n public readonly version?: string;\n public readonly options?: TracerOptions;\n\n constructor(\n provider: TracerDelegator,\n name: string,\n version?: string,\n options?: TracerOptions\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n return this._getTracer().startSpan(name, options, context);\n }\n\n startActiveSpan<F extends (span: Span) => unknown>(\n _name: string,\n _options: F | SpanOptions,\n _context?: F | Context,\n _fn?: F\n ): ReturnType<F> {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\n\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n private _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n\n const tracer = this._provider.getDelegateTracer(\n this.name,\n this.version,\n this.options\n );\n\n if (!tracer) {\n return NOOP_TRACER;\n }\n\n this._delegate = tracer;\n return this._delegate;\n }\n}\n\n/**\n * @since 1.0.3\n */\nexport interface TracerDelegator {\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport type { Context, ContextManager } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n *\n * @since 1.0.0\n */\nexport class ContextAPI {\n private static _instance?: ContextAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Context API */\n public static getInstance(): ContextAPI {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n public setGlobalContextManager(contextManager: ContextManager): boolean {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n }\n\n /**\n * Get the currently active context\n */\n public active(): Context {\n return this._getContextManager().active();\n }\n\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n public with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType<F>,\n ...args: A\n ): ReturnType<F> {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\n\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n public bind<T>(context: Context, target: T): T {\n return this._getContextManager().bind(context, target);\n }\n\n private _getContextManager(): ContextManager {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n\n /** Disable and remove the global context manager */\n public disable() {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { DiagAPI } from './api/diag';\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n *\n * @since 1.0.0\n */\nexport const diag = DiagAPI.instance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { MetricsAPI } from './api/metrics';\n/**\n * Entrypoint for metrics API\n *\n * @since 1.3.0\n */\nexport const metrics = MetricsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/**\n * Entrypoint for context API\n * @since 1.0.0\n */\nexport const context = ContextAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { PropagationAPI } from './api/propagation';\n/**\n * Entrypoint for propagation API\n *\n * @since 1.0.0\n */\nexport const propagation = PropagationAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n\n/**\n * Entrypoint for trace API\n *\n * @since 1.0.0\n */\nexport const trace = TraceAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { DiagLogFunction, DiagLogger } from '../types';\nimport { DiagLogLevel } from '../types';\n\nexport function createLogLevelDiagLogger(\n maxLevel: DiagLogLevel,\n logger: DiagLogger\n): DiagLogger {\n if (maxLevel < DiagLogLevel.NONE) {\n maxLevel = DiagLogLevel.NONE;\n } else if (maxLevel > DiagLogLevel.ALL) {\n maxLevel = DiagLogLevel.ALL;\n }\n\n // In case the logger is null or undefined\n logger = logger || {};\n\n function _filterFunc(\n funcName: keyof DiagLogger,\n theLevel: DiagLogLevel\n ): DiagLogFunction {\n const theFunc = logger[funcName];\n\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () {};\n }\n\n return {\n error: _filterFunc('error', DiagLogLevel.ERROR),\n warn: _filterFunc('warn', DiagLogLevel.WARN),\n info: _filterFunc('info', DiagLogLevel.INFO),\n debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexport const baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @since 1.0.0\n */\nexport enum SpanKind {\n /** Default value. Indicates that the span is used internally. */\n INTERNAL = 0,\n\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SERVER = 1,\n\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n CLIENT = 2,\n\n /**\n * Indicates that the span describes producer sending a message to a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n PRODUCER = 3,\n\n /**\n * Indicates that the span describes consumer receiving a message from a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n CONSUMER = 4,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * @since 1.0.0\n */\nexport enum TraceFlags {\n /** Represents no flag set. */\n NONE = 0x0,\n /** Bit to represent whether trace is sampled in trace flags. */\n SAMPLED = 0x1 << 0,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '../context/types';\nimport type { TextMapPropagator } from './TextMapPropagator';\n\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nexport class NoopTextMapPropagator implements TextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context: Context, _carrier: unknown): void {}\n /** Noop extract function does nothing and returns the input context */\n extract(context: Context, _carrier: unknown): Context {\n return context;\n }\n fields(): string[] {\n return [];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '../context/types';\n\n/**\n * Injects `Context` into and extracts it from carriers that travel\n * in-band across process boundaries. Encoding is expected to conform to the\n * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request\n * headers.\n *\n * The carrier of propagated data on both the client (injector) and server\n * (extractor) side is usually an object such as http headers. Propagation is\n * usually implemented via library-specific request interceptors, where the\n * client-side injects values and the server-side extracts them.\n *\n * @since 1.0.0\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TextMapPropagator<Carrier = any> {\n /**\n * Injects values from a given `Context` into a carrier.\n *\n * OpenTelemetry defines a common set of format values (TextMapPropagator),\n * and each has an expected `carrier` type.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param setter an optional {@link TextMapSetter}. If undefined, values will be\n * set by direct object assignment.\n */\n inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter<Carrier>\n ): void;\n\n /**\n * Given a `Context` and a carrier, extract context values from a\n * carrier and return a new context, created from the old context, with the\n * extracted values.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all\n * own properties, and keys will be accessed by direct object access.\n */\n extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter<Carrier>\n ): Context;\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields(): string[];\n}\n\n/**\n * A setter is specified by the caller to define a specific method\n * to set key/value pairs on the carrier within a propagator\n *\n * @since 1.0.0\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TextMapSetter<Carrier = any> {\n /**\n * Callback used to set a key/value pair on an object.\n *\n * Should be called by the propagator each time a key/value pair\n * should be set, and should set that key/value pair on the propagator.\n *\n * @param carrier object or class which carries key/value pairs\n * @param key string key to modify\n * @param value value to be set to the key on the carrier\n */\n set(carrier: Carrier, key: string, value: string): void;\n}\n\n/**\n * A getter is specified by the caller to define a specific method\n * to get the value of a key from a carrier.\n *\n * @since 1.0.0\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TextMapGetter<Carrier = any> {\n /**\n * Get a list of all keys available on the carrier.\n *\n * @param carrier\n */\n keys(carrier: Carrier): string[];\n\n /**\n * Get the value of a specific key from the carrier.\n *\n * @param carrier\n * @param key\n */\n get(carrier: Carrier, key: string): undefined | string | string[];\n}\n\n/**\n * @since 1.0.0\n */\nexport const defaultTextMapGetter: TextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\n\n/**\n * @since 1.0.0\n */\nexport const defaultTextMapSetter: TextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n\n carrier[key] = value;\n },\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @module @opentelemetry/api\n */\n\nexport type {\n BaggageEntry,\n BaggageEntryMetadata,\n Baggage,\n} from './baggage/types';\nexport { baggageEntryMetadataFromString } from './baggage/utils';\nexport type { Exception } from './common/Exception';\nexport type { HrTime, TimeInput } from './common/Time';\nexport type { Attributes, AttributeValue } from './common/Attributes';\n\n// Context APIs\nexport { createContextKey, ROOT_CONTEXT } from './context/context';\nexport type { Context, ContextManager } from './context/types';\nexport type { ContextAPI } from './api/context';\n\n// Diag APIs\nexport { DiagConsoleLogger } from './diag/consoleLogger';\nexport { DiagLogLevel } from './diag/types';\nexport type {\n DiagLogFunction,\n DiagLogger,\n ComponentLoggerOptions,\n DiagLoggerOptions,\n} from './diag/types';\nexport type { DiagAPI } from './api/diag';\n\n// Metrics APIs\nexport { createNoopMeter } from './metrics/NoopMeter';\nexport type { MeterOptions, Meter } from './metrics/Meter';\nexport type { MeterProvider } from './metrics/MeterProvider';\nexport { ValueType } from './metrics/Metric';\nexport type {\n Counter,\n Gauge,\n Histogram,\n MetricOptions,\n UpDownCounter,\n MetricAdvice,\n MetricAttributes,\n MetricAttributeValue,\n Observable,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n BatchObservableCallback,\n ObservableCallback,\n BatchObservableResult,\n ObservableResult,\n} from './metrics/Metric';\nexport type { MetricsAPI } from './api/metrics';\n\n// Propagation APIs\nexport {\n defaultTextMapGetter,\n defaultTextMapSetter,\n} from './propagation/TextMapPropagator';\nexport type {\n TextMapPropagator,\n TextMapSetter,\n TextMapGetter,\n} from './propagation/TextMapPropagator';\nexport type { PropagationAPI } from './api/propagation';\n\n// Trace APIs\nexport type { SpanAttributes, SpanAttributeValue } from './trace/attributes';\nexport type { Link } from './trace/link';\nexport { ProxyTracer, type TracerDelegator } from './trace/ProxyTracer';\n// TODO: Remove ProxyTracerProvider export in the next major version.\nexport { ProxyTracerProvider } from './trace/ProxyTracerProvider';\nexport type { Sampler } from './trace/Sampler';\nexport { SamplingDecision, type SamplingResult } from './trace/SamplingResult';\nexport type { SpanContext } from './trace/span_context';\nexport { SpanKind } from './trace/span_kind';\nexport type { Span } from './trace/span';\nexport type { SpanOptions } from './trace/SpanOptions';\nexport { type SpanStatus, SpanStatusCode } from './trace/status';\nexport { TraceFlags } from './trace/trace_flags';\nexport type { TraceState } from './trace/trace_state';\nexport { createTraceState } from './trace/internal/utils';\nexport type { TracerProvider } from './trace/tracer_provider';\nexport type { Tracer } from './trace/tracer';\nexport type { TracerOptions } from './trace/tracer_options';\nexport {\n isSpanContextValid,\n isValidTraceId,\n isValidSpanId,\n} from './trace/spancontext-utils';\nexport {\n INVALID_SPANID,\n INVALID_TRACEID,\n INVALID_SPAN_CONTEXT,\n} from './trace/invalid-span-constants';\nexport type { TraceAPI } from './api/trace';\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { context } from './context-api';\nimport { diag } from './diag-api';\nimport { metrics } from './metrics-api';\nimport { propagation } from './propagation-api';\nimport { trace } from './trace-api';\n\n// Named export.\nexport { context, diag, metrics, propagation, trace };\n// Default export.\nexport default {\n context,\n diag,\n metrics,\n propagation,\n trace,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { SpanContext } from './span_context';\nimport { TraceFlags } from './trace_flags';\n\n/**\n * @since 1.0.0\n */\nexport const INVALID_SPANID = '0000000000000000';\n\n/**\n * @since 1.0.0\n */\nexport const INVALID_TRACEID = '00000000000000000000000000000000';\n\n/**\n * @since 1.0.0\n */\nexport const INVALID_SPAN_CONTEXT: SpanContext = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TraceState } from '../trace_state';\nimport { TraceStateImpl } from './tracestate-impl';\n\n/**\n * @since 1.1.0\n */\nexport function createTraceState(rawTraceState?: string): TraceState {\n return new TraceStateImpl(rawTraceState);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @since 1.0.0\n */\nexport interface SpanStatus {\n /** The status code of this message. */\n code: SpanStatusCode;\n /** A developer-facing error message. */\n message?: string;\n}\n\n/**\n * An enumeration of status codes.\n *\n * @since 1.0.0\n */\nexport enum SpanStatusCode {\n /**\n * The default status.\n */\n UNSET = 0,\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n OK = 1,\n /**\n * The operation contains an error.\n */\n ERROR = 2,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Meter, MeterOptions } from './Meter';\nimport type { MeterProvider } from './MeterProvider';\nimport { NOOP_METER } from './NoopMeter';\n\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nexport class NoopMeterProvider implements MeterProvider {\n getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter {\n return NOOP_METER;\n }\n}\n\nexport const NOOP_METER_PROVIDER = new NoopMeterProvider();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from './types';\n\n/**\n * Get a key to uniquely identify a context value\n *\n * @since 1.0.0\n */\nexport function createContextKey(description: string) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\n\nclass BaseContext implements Context {\n private _currentContext!: Map<symbol, unknown>;\n\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n constructor(parentContext?: Map<symbol, unknown>) {\n // for minification\n const self = this;\n\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n self.getValue = (key: symbol) => self._currentContext.get(key);\n\n self.setValue = (key: symbol, value: unknown): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n\n self.deleteValue = (key: symbol): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n public getValue!: (key: symbol) => unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n public setValue!: (key: symbol, value: unknown) => Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n public deleteValue!: (key: symbol) => Context;\n}\n\n/**\n * The root context is used as the default parent context when there is no active context\n *\n * @since 1.0.0\n */\nexport const ROOT_CONTEXT: Context = new BaseContext();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Exception } from '../common/Exception';\nimport type { TimeInput } from '../common/Time';\nimport type { SpanAttributes } from './attributes';\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\nimport type { Span } from './span';\nimport type { SpanContext } from './span_context';\nimport type { SpanStatus } from './status';\nimport type { Link } from './link';\n\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nexport class NonRecordingSpan implements Span {\n private readonly _spanContext: SpanContext;\n\n constructor(spanContext: SpanContext = INVALID_SPAN_CONTEXT) {\n this._spanContext = spanContext;\n }\n\n // Returns a SpanContext.\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n // By default does nothing\n setAttribute(_key: string, _value: unknown): this {\n return this;\n }\n\n // By default does nothing\n setAttributes(_attributes: SpanAttributes): this {\n return this;\n }\n\n // By default does nothing\n addEvent(_name: string, _attributes?: SpanAttributes): this {\n return this;\n }\n\n addLink(_link: Link): this {\n return this;\n }\n\n addLinks(_links: Link[]): this {\n return this;\n }\n\n // By default does nothing\n setStatus(_status: SpanStatus): this {\n return this;\n }\n\n // By default does nothing\n updateName(_name: string): this {\n return this;\n }\n\n // By default does nothing\n end(_endTime?: TimeInput): void {}\n\n // isRecording always returns false for NonRecordingSpan.\n isRecording(): boolean {\n return false;\n }\n\n // By default does nothing\n recordException(_exception: Exception, _time?: TimeInput): void {}\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes, AttributeValue } from '../common/Attributes';\nimport type { Context } from '../context/types';\n\n/**\n * Advisory options influencing aggregation configuration parameters.\n *\n * @since 1.7.0\n * @experimental\n */\nexport interface MetricAdvice {\n /**\n * Hint the explicit bucket boundaries for SDK if the metric is been\n * aggregated with a HistogramAggregator.\n */\n explicitBucketBoundaries?: number[];\n}\n\n/**\n * Options needed for metric creation\n *\n * @since 1.3.0\n */\nexport interface MetricOptions {\n /**\n * The description of the Metric.\n * @default ''\n */\n description?: string;\n\n /**\n * The unit of the Metric values.\n * @default ''\n */\n unit?: string;\n\n /**\n * Indicates the type of the recorded value.\n * @default {@link ValueType.DOUBLE}\n */\n valueType?: ValueType;\n\n /**\n * The advice influencing aggregation configuration parameters.\n * @experimental\n * @since 1.7.0\n */\n advice?: MetricAdvice;\n}\n\n/**\n * The Type of value. It describes how the data is reported.\n *\n * @since 1.3.0\n */\nexport enum ValueType {\n INT,\n DOUBLE,\n}\n\n/**\n * Counter is the most common synchronous instrument. This instrument supports\n * an `Add(increment)` function for reporting a sum, and is restricted to\n * non-negative increments. The default aggregation is Sum, as for any additive\n * instrument.\n *\n * Example uses for Counter:\n * <ol>\n * <li> count the number of bytes received. </li>\n * <li> count the number of requests completed. </li>\n * <li> count the number of accounts created. </li>\n * <li> count the number of checkpoints run. </li>\n * <li> count the number of 5xx errors. </li>\n * <ol>\n *\n * @since 1.3.0\n */\nexport interface Counter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Increment value of counter by the input. Inputs must not be negative.\n */\n add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @since 1.3.0\n */\nexport interface UpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Increment value of counter by the input. Inputs may be negative.\n */\n add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @since 1.9.0\n */\nexport interface Gauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Records a measurement.\n */\n record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @since 1.3.0\n */\nexport interface Histogram<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Records a measurement. Value of the measurement must not be negative.\n */\n record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @deprecated please use {@link Attributes}\n * @since 1.3.0\n */\nexport type MetricAttributes = Attributes;\n\n/**\n * @deprecated please use {@link AttributeValue}\n * @since 1.3.0\n */\nexport type MetricAttributeValue = AttributeValue;\n\n/**\n * Interface that is being used in callback function for Observable Metric.\n *\n * @since 1.3.0\n */\nexport interface ObservableResult<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Observe a measurement of the value associated with the given attributes.\n *\n * @param value The value to be observed.\n * @param attributes The attributes associated with the value. If more than\n * one value is associated with the same attributes values, SDK may pick the\n * last one or simply drop the entire observable result.\n */\n observe(\n this: ObservableResult<AttributesTypes>,\n value: number,\n attributes?: AttributesTypes\n ): void;\n}\n\n/**\n * Interface that is being used in batch observable callback function.\n */\nexport interface BatchObservableResult<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Observe a measurement of the value associated with the given attributes.\n *\n * @param metric The observable metric to be observed.\n * @param value The value to be observed.\n * @param attributes The attributes associated with the value. If more than\n * one value is associated with the same attributes values, SDK may pick the\n * last one or simply drop the entire observable result.\n */\n observe(\n this: BatchObservableResult<AttributesTypes>,\n metric: Observable<AttributesTypes>,\n value: number,\n attributes?: AttributesTypes\n ): void;\n}\n\n/**\n * The observable callback for Observable instruments.\n *\n * @since 1.3.0\n */\nexport type ObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n observableResult: ObservableResult<AttributesTypes>\n) => void | Promise<void>;\n\n/**\n * The observable callback for a batch of Observable instruments.\n *\n * @since 1.3.0\n */\nexport type BatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n observableResult: BatchObservableResult<AttributesTypes>\n) => void | Promise<void>;\n\n/**\n * @since 1.3.0\n */\nexport interface Observable<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Sets up a function that will be called whenever a metric collection is initiated.\n *\n * If the function is already in the list of callbacks for this Observable, the function is not added a second time.\n */\n addCallback(callback: ObservableCallback<AttributesTypes>): void;\n\n /**\n * Removes a callback previously registered with {@link Observable.addCallback}.\n */\n removeCallback(callback: ObservableCallback<AttributesTypes>): void;\n}\n\n/**\n * @since 1.3.0\n */\nexport type ObservableCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable<AttributesTypes>;\n/**\n * @since 1.3.0\n */\nexport type ObservableUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable<AttributesTypes>;\n/**\n * @since 1.3.0\n */\nexport type ObservableGauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable<AttributesTypes>;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { SpanAttributes } from './attributes';\nimport type { TraceState } from './trace_state';\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n *\n * @since 1.0.0\n */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n *\n * @since 1.0.0\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly<SpanAttributes>;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { NoopTracer } from './NoopTracer';\nimport type { Tracer } from './tracer';\nimport type { TracerOptions } from './tracer_options';\nimport type { TracerProvider } from './tracer_provider';\n\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nexport class NoopTracerProvider implements TracerProvider {\n getTracer(\n _name?: string,\n _version?: string,\n _options?: TracerOptions\n ): Tracer {\n return new NoopTracer();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Meter } from './Meter';\nimport type {\n BatchObservableCallback,\n Counter,\n Gauge,\n Histogram,\n MetricAttributes,\n MetricOptions,\n Observable,\n ObservableCallback,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n} from './Metric';\n\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nexport class NoopMeter implements Meter {\n constructor() {}\n\n /**\n * @see {@link Meter.createGauge}\n */\n createGauge(_name: string, _options?: MetricOptions): Gauge {\n return NOOP_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name: string, _options?: MetricOptions): Histogram {\n return NOOP_HISTOGRAM_METRIC;\n }\n\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name: string, _options?: MetricOptions): Counter {\n return NOOP_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter {\n return NOOP_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(\n _name: string,\n _options?: MetricOptions\n ): ObservableGauge {\n return NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableCounter {\n return NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableUpDownCounter {\n return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(\n _callback: BatchObservableCallback,\n _observables: Observable[]\n ): void {}\n\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback: BatchObservableCallback): void {}\n}\n\nexport class NoopMetric {}\n\nexport class NoopCounterMetric extends NoopMetric implements Counter {\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopUpDownCounterMetric\n extends NoopMetric\n implements UpDownCounter\n{\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopGaugeMetric extends NoopMetric implements Gauge {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopHistogramMetric extends NoopMetric implements Histogram {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopObservableMetric {\n addCallback(_callback: ObservableCallback) {}\n\n removeCallback(_callback: ObservableCallback) {}\n}\n\nexport class NoopObservableCounterMetric\n extends NoopObservableMetric\n implements ObservableCounter {}\n\nexport class NoopObservableGaugeMetric\n extends NoopObservableMetric\n implements ObservableGauge {}\n\nexport class NoopObservableUpDownCounterMetric\n extends NoopObservableMetric\n implements ObservableUpDownCounter {}\n\nexport const NOOP_METER = new NoopMeter();\n\n// Synchronous instruments\nexport const NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexport const NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexport const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexport const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n\n// Asynchronous instruments\nexport const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexport const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexport const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC =\n new NoopObservableUpDownCounterMetric();\n\n/**\n * Create a no-op Meter\n *\n * @since 1.3.0\n */\nexport function createNoopMeter(): Meter {\n return NOOP_METER;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @since 1.0.0\n */\nexport type DiagLogFunction = (message: string, ...args: unknown[]) => void;\n\n/**\n * Defines an internal diagnostic logger interface which is used to log internal diagnostic\n * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function.\n * API provided implementations include :-\n * - a No-Op {@link createNoopDiagLogger}\n * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger}\n * - a general Console {@link DiagConsoleLogger} version.\n *\n * @since 1.0.0\n */\nexport interface DiagLogger {\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n error: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n warn: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n info: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario.\n * For example: Logging the order of execution of async operations.\n */\n debug: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n verbose: DiagLogFunction;\n}\n\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nexport enum DiagLogLevel {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n NONE = 0,\n\n /** Identifies an error scenario */\n ERROR = 30,\n\n /** Identifies a warning scenario */\n WARN = 50,\n\n /** General informational log message */\n INFO = 60,\n\n /** General debug log message */\n DEBUG = 70,\n\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n VERBOSE = 80,\n\n /** Used to set the logging level to include all logging */\n ALL = 9999,\n}\n\n/**\n * Defines options for ComponentLogger\n *\n * @since 1.0.0\n */\nexport interface ComponentLoggerOptions {\n namespace: string;\n}\n\n/**\n * @since 1.4.1\n */\nexport interface DiagLoggerOptions {\n /**\n * The {@link DiagLogLevel} used to filter logs sent to the logger.\n *\n * @defaultValue DiagLogLevel.INFO\n */\n logLevel?: DiagLogLevel;\n\n /**\n * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered.\n */\n suppressOverrideMessage?: boolean;\n}\n\nexport interface DiagLoggerApi {\n /**\n * Set the global DiagLogger and DiagLogLevel.\n * If a global diag logger is already set, this will override it.\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean;\n\n /**\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean;\n}\n","const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'\n\nexport class DynamicServerError extends Error {\n digest: typeof DYNAMIC_ERROR_CODE = DYNAMIC_ERROR_CODE\n\n constructor(public readonly description: string) {\n super(`Dynamic server usage: ${description}`)\n }\n}\n\nexport function isDynamicServerError(err: unknown): err is DynamicServerError {\n if (\n typeof err !== 'object' ||\n err === null ||\n !('digest' in err) ||\n typeof err.digest !== 'string'\n ) {\n return false\n }\n\n return err.digest === DYNAMIC_ERROR_CODE\n}\n","const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'\n\nexport class StaticGenBailoutError extends Error {\n public readonly code = NEXT_STATIC_GEN_BAILOUT\n}\n\nexport function isStaticGenBailoutError(\n error: unknown\n): error is StaticGenBailoutError {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false\n }\n\n return error.code === NEXT_STATIC_GEN_BAILOUT\n}\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n RequestCookies: () => RequestCookies,\n ResponseCookies: () => ResponseCookies,\n parseCookie: () => parseCookie,\n parseSetCookie: () => parseSetCookie,\n stringifyCookie: () => stringifyCookie\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/serialize.ts\nfunction stringifyCookie(c) {\n var _a;\n const attrs = [\n \"path\" in c && c.path && `Path=${c.path}`,\n \"expires\" in c && (c.expires || c.expires === 0) && `Expires=${(typeof c.expires === \"number\" ? new Date(c.expires) : c.expires).toUTCString()}`,\n \"maxAge\" in c && typeof c.maxAge === \"number\" && `Max-Age=${c.maxAge}`,\n \"domain\" in c && c.domain && `Domain=${c.domain}`,\n \"secure\" in c && c.secure && \"Secure\",\n \"httpOnly\" in c && c.httpOnly && \"HttpOnly\",\n \"sameSite\" in c && c.sameSite && `SameSite=${c.sameSite}`,\n \"partitioned\" in c && c.partitioned && \"Partitioned\",\n \"priority\" in c && c.priority && `Priority=${c.priority}`\n ].filter(Boolean);\n const stringified = `${c.name}=${encodeURIComponent((_a = c.value) != null ? _a : \"\")}`;\n return attrs.length === 0 ? stringified : `${stringified}; ${attrs.join(\"; \")}`;\n}\nfunction parseCookie(cookie) {\n const map = /* @__PURE__ */ new Map();\n for (const pair of cookie.split(/; */)) {\n if (!pair)\n continue;\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n map.set(pair, \"true\");\n continue;\n }\n const [key, value] = [pair.slice(0, splitAt), pair.slice(splitAt + 1)];\n try {\n map.set(key, decodeURIComponent(value != null ? value : \"true\"));\n } catch {\n }\n }\n return map;\n}\nfunction parseSetCookie(setCookie) {\n if (!setCookie) {\n return void 0;\n }\n const [[name, value], ...attributes] = parseCookie(setCookie);\n const {\n domain,\n expires,\n httponly,\n maxage,\n path,\n samesite,\n secure,\n partitioned,\n priority\n } = Object.fromEntries(\n attributes.map(([key, value2]) => [\n key.toLowerCase().replace(/-/g, \"\"),\n value2\n ])\n );\n const cookie = {\n name,\n value: decodeURIComponent(value),\n domain,\n ...expires && { expires: new Date(expires) },\n ...httponly && { httpOnly: true },\n ...typeof maxage === \"string\" && { maxAge: Number(maxage) },\n path,\n ...samesite && { sameSite: parseSameSite(samesite) },\n ...secure && { secure: true },\n ...priority && { priority: parsePriority(priority) },\n ...partitioned && { partitioned: true }\n };\n return compact(cookie);\n}\nfunction compact(t) {\n const newT = {};\n for (const key in t) {\n if (t[key]) {\n newT[key] = t[key];\n }\n }\n return newT;\n}\nvar SAME_SITE = [\"strict\", \"lax\", \"none\"];\nfunction parseSameSite(string) {\n string = string.toLowerCase();\n return SAME_SITE.includes(string) ? string : void 0;\n}\nvar PRIORITY = [\"low\", \"medium\", \"high\"];\nfunction parsePriority(string) {\n string = string.toLowerCase();\n return PRIORITY.includes(string) ? string : void 0;\n}\nfunction splitCookiesString(cookiesString) {\n if (!cookiesString)\n return [];\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n cookiesSeparatorFound = true;\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n\n// src/request-cookies.ts\nvar RequestCookies = class {\n constructor(requestHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n this._headers = requestHeaders;\n const header = requestHeaders.get(\"cookie\");\n if (header) {\n const parsed = parseCookie(header);\n for (const [name, value] of parsed) {\n this._parsed.set(name, { name, value });\n }\n }\n }\n [Symbol.iterator]() {\n return this._parsed[Symbol.iterator]();\n }\n /**\n * The amount of cookies received from the client\n */\n get size() {\n return this._parsed.size;\n }\n get(...args) {\n const name = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(name);\n }\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed);\n if (!args.length) {\n return all.map(([_, value]) => value);\n }\n const name = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter(([n]) => n === name).map(([_, value]) => value);\n }\n has(name) {\n return this._parsed.has(name);\n }\n set(...args) {\n const [name, value] = args.length === 1 ? [args[0].name, args[0].value] : args;\n const map = this._parsed;\n map.set(name, { name, value });\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value2]) => stringifyCookie(value2)).join(\"; \")\n );\n return this;\n }\n /**\n * Delete the cookies matching the passed name or names in the request.\n */\n delete(names) {\n const map = this._parsed;\n const result = !Array.isArray(names) ? map.delete(names) : names.map((name) => map.delete(name));\n this._headers.set(\n \"cookie\",\n Array.from(map).map(([_, value]) => stringifyCookie(value)).join(\"; \")\n );\n return result;\n }\n /**\n * Delete all the cookies in the cookies in the request.\n */\n clear() {\n this.delete(Array.from(this._parsed.keys()));\n return this;\n }\n /**\n * Format the cookies in the request as a string for logging\n */\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map((v) => `${v.name}=${encodeURIComponent(v.value)}`).join(\"; \");\n }\n};\n\n// src/response-cookies.ts\nvar ResponseCookies = class {\n constructor(responseHeaders) {\n /** @internal */\n this._parsed = /* @__PURE__ */ new Map();\n var _a, _b, _c;\n this._headers = responseHeaders;\n const setCookie = (_c = (_b = (_a = responseHeaders.getSetCookie) == null ? void 0 : _a.call(responseHeaders)) != null ? _b : responseHeaders.get(\"set-cookie\")) != null ? _c : [];\n const cookieStrings = Array.isArray(setCookie) ? setCookie : splitCookiesString(setCookie);\n for (const cookieString of cookieStrings) {\n const parsed = parseSetCookie(cookieString);\n if (parsed)\n this._parsed.set(parsed.name, parsed);\n }\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise.\n */\n get(...args) {\n const key = typeof args[0] === \"string\" ? args[0] : args[0].name;\n return this._parsed.get(key);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise.\n */\n getAll(...args) {\n var _a;\n const all = Array.from(this._parsed.values());\n if (!args.length) {\n return all;\n }\n const key = typeof args[0] === \"string\" ? args[0] : (_a = args[0]) == null ? void 0 : _a.name;\n return all.filter((c) => c.name === key);\n }\n has(name) {\n return this._parsed.has(name);\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise.\n */\n set(...args) {\n const [name, value, cookie] = args.length === 1 ? [args[0].name, args[0].value, args[0]] : args;\n const map = this._parsed;\n map.set(name, normalizeCookie({ name, value, ...cookie }));\n replace(map, this._headers);\n return this;\n }\n /**\n * {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise.\n */\n delete(...args) {\n const [name, options] = typeof args[0] === \"string\" ? [args[0]] : [args[0].name, args[0]];\n return this.set({ ...options, name, value: \"\", expires: /* @__PURE__ */ new Date(0) });\n }\n [Symbol.for(\"edge-runtime.inspect.custom\")]() {\n return `ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`;\n }\n toString() {\n return [...this._parsed.values()].map(stringifyCookie).join(\"; \");\n }\n};\nfunction replace(bag, headers) {\n headers.delete(\"set-cookie\");\n for (const [, value] of bag) {\n const serialized = stringifyCookie(value);\n headers.append(\"set-cookie\", serialized);\n }\n}\nfunction normalizeCookie(cookie = { name: \"\", value: \"\" }) {\n if (typeof cookie.expires === \"number\") {\n cookie.expires = new Date(cookie.expires);\n }\n if (cookie.maxAge) {\n cookie.expires = new Date(Date.now() + cookie.maxAge * 1e3);\n }\n if (cookie.path === null || cookie.path === void 0) {\n cookie.path = \"/\";\n }\n return cookie;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestCookies,\n ResponseCookies,\n parseCookie,\n parseSetCookie,\n stringifyCookie\n});\n","let spanRecorderForTest;\nexport function recordSpan(record) {\n if (!isLocalSpanRecordingEnabled()) {\n return;\n }\n const spanRecord = {\n timestamp: getCurrentTimestamp(),\n ...record\n };\n spanRecorderForTest == null ? void 0 : spanRecorderForTest(spanRecord);\n if (isRequestInsightsEnabled() && spanRecord.requestId) {\n const { recordRequestInsightSpan } = require('./request-insights');\n recordRequestInsightSpan(spanRecord);\n }\n}\nexport function setSpanRecorderForTest(recorder) {\n spanRecorderForTest = recorder;\n}\nexport function isLocalSpanRecordingEnabled() {\n if (!process.env.__NEXT_DEV_SERVER) {\n return false;\n }\n return spanRecorderForTest !== undefined || isRequestInsightsEnabled();\n}\nexport function isRequestInsightsEnabled() {\n if (!process.env.__NEXT_DEV_SERVER) {\n return false;\n }\n const value = process.env.__NEXT_REQUEST_INSIGHTS;\n return isEnabledEnvValue(value);\n}\nfunction isEnabledEnvValue(value) {\n return value === '1' || value === 'true' || value === true;\n}\nfunction getCurrentTimestamp() {\n return performance.timeOrigin + performance.now();\n}\n\n//# sourceMappingURL=span-store.js.map","// This regex will have fast negatives meaning valid identifiers may not pass\n// this test. However this is only used during static generation to provide hints\n// about why a page bailed out of some or all prerendering and we can use bracket notation\n// for example while `ಠ_ಠ` is a valid identifier it's ok to print `searchParams['ಠ_ಠ']`\n// even if this would have been fine too `searchParams.ಠ_ಠ`\nconst isDefinitelyAValidIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nexport function describeStringPropertyAccess(target, prop) {\n if (isDefinitelyAValidIdentifier.test(prop)) {\n return `\\`${target}.${prop}\\``;\n }\n return `\\`${target}[${JSON.stringify(prop)}]\\``;\n}\nexport function describeHasCheckingStringProperty(target, prop) {\n const stringifiedProp = JSON.stringify(prop);\n return `\\`Reflect.has(${target}, ${stringifiedProp})\\`, \\`${stringifiedProp} in ${target}\\`, or similar`;\n}\nexport const wellKnownProperties = new Set([\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toString',\n 'valueOf',\n 'toLocaleString',\n // Promise prototype\n 'then',\n 'catch',\n 'finally',\n // React Promise extension\n 'status',\n // 'value',\n // 'error',\n // React introspection\n 'displayName',\n '_debugInfo',\n // Common tested properties\n 'toJSON',\n '$$typeof',\n '__esModule',\n // Tested by flight when checking for iterables\n '@@iterator'\n]);\n\n//# sourceMappingURL=reflect-utils.js.map","const sharedAsyncLocalStorageNotAvailableError = new Error('Invariant: AsyncLocalStorage accessed in runtime where it is not available');\nclass FakeAsyncLocalStorage {\n disable() {\n throw sharedAsyncLocalStorageNotAvailableError;\n }\n getStore() {\n // This fake implementation of AsyncLocalStorage always returns `undefined`.\n return undefined;\n }\n run() {\n throw sharedAsyncLocalStorageNotAvailableError;\n }\n exit() {\n throw sharedAsyncLocalStorageNotAvailableError;\n }\n enterWith() {\n throw sharedAsyncLocalStorageNotAvailableError;\n }\n static bind(fn) {\n return fn;\n }\n}\nconst maybeGlobalAsyncLocalStorage = typeof globalThis !== 'undefined' && globalThis.AsyncLocalStorage;\nexport function createAsyncLocalStorage() {\n if (maybeGlobalAsyncLocalStorage) {\n return new maybeGlobalAsyncLocalStorage();\n }\n return new FakeAsyncLocalStorage();\n}\n/**\n * Returns the storage registered under `name`, and creates it on first use.\n *\n * These storages must be singletons within a realm. A store that is entered\n * through one reference to a storage must be readable through every other\n * reference to it. If it is not, code that runs inside the scope sees no store\n * at all. Module identity does not guarantee this. A realm can evaluate the\n * same `next` file more than once if the package is reachable through more than\n * one path, and then each evaluation creates a storage of its own. A global\n * symbol keeps the singleton intact for any number of copies. Worker threads\n * and edge sandboxes still get separate storages, because each of them has its\n * own `globalThis`.\n *\n * Module identity broke this way in `next dev`. A bug in Node's\n * `fs.realpathSync` can return a path with its symlinks unresolved, and the\n * module loader keys the module cache on that path. On a pnpm install it then\n * resolves `next/dist/...` through the `node_modules/next` symlink instead of\n * the real path, so the file is evaluated a second time. See\n * https://github.com/nodejs/node/pull/65113. Node versions without that fix\n * stay affected.\n *\n * The key includes the Next.js version, so two different versions of Next.js in\n * the same realm keep separate storages. Their store shapes might not be\n * compatible.\n */ export function getOrCreateGlobalAsyncLocalStorage(name) {\n const key = Symbol.for(`@next/${name}@${\"16.4.2\"}`);\n const globalStore = globalThis;\n return globalStore[key] ??= createAsyncLocalStorage();\n}\nexport function bindSnapshot(// WARNING: Don't pass a named function to this argument! See: https://github.com/facebook/react/pull/34911\nfn) {\n if (maybeGlobalAsyncLocalStorage) {\n return maybeGlobalAsyncLocalStorage.bind(fn);\n }\n return FakeAsyncLocalStorage.bind(fn);\n}\nexport function createSnapshot() {\n if (maybeGlobalAsyncLocalStorage) {\n return maybeGlobalAsyncLocalStorage.snapshot();\n }\n return function(fn, ...args) {\n return fn(...args);\n };\n}\n\n//# sourceMappingURL=async-local-storage.js.map","/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */ // Once postpone is in stable we should switch to importing the postpone export directly\nimport React from 'react';\nimport { DynamicServerError } from '../../client/components/hooks-server-context';\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout';\nimport { getStagedRenderingController } from './work-unit-async-storage.external';\nimport { isClientHookDynamicError } from '../dynamic-rendering-utils';\nimport { METADATA_BOUNDARY_NAME, VIEWPORT_BOUNDARY_NAME, OUTLET_BOUNDARY_NAME, ROOT_LAYOUT_BOUNDARY_NAME } from '../../lib/framework/boundary-constants';\nimport { scheduleOnNextTick } from '../../lib/scheduler';\nimport { createRuntimeBodyError, createDynamicBodyError, createRuntimeBodyErrorInNavigation, createNavigationBodyErrorInNavigation, createPrefetchBodyErrorInNavigation, createDynamicBodyErrorInNavigation, createDynamicOrRuntimeBodyError, createRuntimeMetadataError, createDynamicMetadataError, createRuntimeViewportError, createNavigationViewportError, createPrefetchViewportError, createDynamicViewportError, createDynamicOrRuntimeViewportError, createDynamicOrRuntimeMetadataError, logBuildDebugHint, createLinkBodyErrorInNavigation, createLinkMetadataError, createLinkViewportError, createNavigationMetadataError, createPrefetchMetadataError, createNonPrerenderableMetadataErrorInStaticRoute, createNonPrerenderableViewportErrorInStaticRoute, createNonPrerenderableBodyErrorInStaticRoute, createRuntimeBodyErrorInStaticRoute, createDynamicBodyErrorInStaticRoute, createRuntimeMetadataErrorInStaticRoute, createDynamicMetadataErrorInStaticRoute, createRuntimeViewportErrorInStaticRoute, createDynamicViewportErrorInStaticRoute } from './blocking-route-messages';\nimport { InvariantError } from '../../shared/lib/invariant-error';\nimport { INSTANT_VALIDATION_BOUNDARY_NAME, INSTANT_SLOT_MARKER_PREFIX, INSTANT_SLOT_MARKER_SUFFIX } from './instant-validation/boundary-constants';\nimport { allRequiredBoundariesRendered } from './instant-validation/boundary-tracking';\nimport { createUnrenderedSegmentError } from '../../shared/lib/instant-messages';\nimport { getReactBrowserBailoutReason } from '../../shared/lib/lazy-dynamic/react-browser-bailout';\nexport function createDynamicTrackingState(isDebugDynamicAccesses) {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null,\n syncDynamicErrorWithStackPostMicrotask: false\n };\n}\nexport function createDynamicValidationState() {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: []\n };\n}\nfunction getPendingClientSyncDynamicError(clientDynamic) {\n return clientDynamic.syncDynamicErrorWithStackPostMicrotask ? null : clientDynamic.syncDynamicErrorWithStack;\n}\nexport function getFirstDynamicReason(trackingState) {\n var _trackingState_dynamicAccesses_;\n return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression;\n}\n/**\n * This function communicates that the current scope should be treated as dynamic.\n *\n * In most cases this function is a no-op but if called during\n * a PPR prerender it will postpone the current sub-tree and calling\n * it during a normal prerender will cause the entire prerender to abort\n */ export function markCurrentScopeAsDynamic(store, workUnitStore, expression) {\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender-legacy':\n case 'request':\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n }\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return;\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(`Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);\n }\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-legacy':\n workUnitStore.revalidate = 0;\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = new DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n case 'request':\n markRequestStoreAsDynamic(workUnitStore);\n break;\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n }\n}\n/**\n * This function is meant to be used when prerendering without cacheComponents or PPR.\n * When called during a build it will cause Next.js to consider the route as dynamic.\n *\n * @internal\n */ export function throwToInterruptStaticGeneration(expression, store, prerenderStore) {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = new DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);\n prerenderStore.revalidate = 0;\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n}\n/**\n * This function should be used to track whether something dynamic happened even when\n * we are in a dynamic render. This is useful for Dev where all renders are dynamic but\n * we still track whether dynamic APIs were accessed for helpful messaging\n *\n * @internal\n */ export function trackDynamicDataInDynamicRender(workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-client':\n case 'validation-client':\n case 'build-time-generator':\n break;\n case 'request':\n markRequestStoreAsDynamic(workUnitStore);\n break;\n default:\n workUnitStore;\n }\n}\nfunction markRequestStoreAsDynamic(requestStore) {\n if (process.env.__NEXT_DEV_SERVER && requestStore.phase === 'render') {\n requestStore.usedDynamic = true;\n }\n}\nfunction abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore) {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`;\n const error = createPrerenderInterruptedError(reason);\n prerenderStore.controller.abort(error);\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nexport function abortOnSynchronousPlatformIOAccess(route, expression, errorWithStack, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking && dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n // React completes the task that is currently rendering before scheduled\n // abort cleanup. Client tracking can attribute the sync IO only during\n // that current task; server tracking keeps the error regardless.\n queueMicrotask(()=>{\n dynamicTracking.syncDynamicErrorWithStackPostMicrotask = true;\n });\n }\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n}\n/**\n * use this function when prerendering with cacheComponents. If we are doing a\n * prospective prerender we don't actually abort because we want to discover\n * all caches for the shell. If this is the actual prerender we do abort.\n *\n * This function accepts a prerenderStore but the caller should ensure we're\n * actually running in cacheComponents mode.\n *\n * @internal\n */ export function abortAndThrowOnSynchronousRequestDataAccess(route, expression, errorWithStack, prerenderStore) {\n const prerenderSignal = prerenderStore.controller.signal;\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // Preserve the exact server-side dynamic access for final validation after\n // interrupting this render.\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n }\n throw createPrerenderInterruptedError(`Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`);\n}\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED';\nfunction createPrerenderInterruptedError(message) {\n const error = new Error(message);\n error.digest = NEXT_PRERENDER_INTERRUPTED;\n return error;\n}\nexport function isPrerenderInterruptedError(error) {\n return typeof error === 'object' && error !== null && error.digest === NEXT_PRERENDER_INTERRUPTED && 'name' in error && 'message' in error && error instanceof Error;\n}\nexport function accessedDynamicData(dynamicAccesses) {\n return dynamicAccesses.length > 0;\n}\nexport function consumeDynamicAccess(serverDynamic, clientDynamic) {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses);\n return serverDynamic.dynamicAccesses;\n}\nexport function formatDynamicAPIAccesses(dynamicAccesses) {\n return dynamicAccesses.filter((access)=>typeof access.stack === 'string' && access.stack.length > 0).map(({ expression, stack })=>{\n stack = stack.split('\\n')// Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4).filter((line)=>{\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false;\n }\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' (<anonymous>)')) {\n return false;\n }\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false;\n }\n return true;\n }).join('\\n');\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`;\n });\n}\nexport function createHangingInputAbortSignal(workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController();\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(()=>{\n controller.abort();\n });\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the final stage.\n // if an input didn't resolve at that point, then we can assume it never will.\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n const stagedRendering = getStagedRenderingController(workUnitStore);\n if (stagedRendering && stagedRendering.finalStage !== null) {\n stagedRendering.waitForStage(stagedRendering.finalStage).then(()=>scheduleOnNextTick(()=>controller.abort()), noop);\n } else {\n scheduleOnNextTick(()=>controller.abort());\n }\n }\n return controller.signal;\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'build-time-generator':\n return undefined;\n default:\n workUnitStore;\n }\n}\nfunction noop() {}\nexport function annotateDynamicAccess(expression, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(<anonymous>\\)/;\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6';\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense (<anonymous>)\n// at SomeComponent (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\\\n\\\\s+at Suspense \\\\(<anonymous>\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(<anonymous>\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`);\nconst hasMetadataRegex = new RegExp(`\\\\n\\\\s+at ${METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasViewportRegex = new RegExp(`\\\\n\\\\s+at ${VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasInstantValidationBoundaryRegex = new RegExp(`\\\\n\\\\s+at ${INSTANT_VALIDATION_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst slotMarkerRegex = new RegExp(`\\\\n\\\\s+at ${INSTANT_SLOT_MARKER_PREFIX}(\\\\d+)${INSTANT_SLOT_MARKER_SUFFIX}[\\\\n\\\\s]`);\n/** Look up the config factory for the slot this error belongs to.\n * Checks the component stack for a slot marker (__next_instant_slot_N__)\n * and returns the config at that index. Falls back to index 0 (root\n * config) when no slot marker is found or the slot has no config. */ function resolveInstantStack(componentStack, dynamicValidation) {\n const { slotStacks } = dynamicValidation;\n if (slotStacks.length > 1) {\n const match = slotMarkerRegex.exec(componentStack);\n if (match) {\n // Slot markers are 0-indexed in the component name but\n // slotStacks is 1-indexed (index 0 is the root config).\n const slotIndex = parseInt(match[1], 10) + 1;\n const slotStack = slotStacks[slotIndex];\n if (slotStack != null) {\n return slotStack;\n }\n }\n }\n // Fall back to root config (index 0)\n return slotStacks[0] ?? null;\n}\n/**\n * Inspects the component stack of an outlet boundary to discover whether the\n * user placed a Suspense boundary above the document body, and records the\n * opt-in on `dynamicValidation.hasSuspenseAboveBody` if so.\n *\n * The outlet itself isn't a meaningful source of dynamic — it only resolves\n * when metadata/viewport are dynamic, which we track via their own boundaries.\n * However, the outlet renders alongside the page content, so its stack passes\n * through the user's layout chain (typically reaching into `<body>` via the\n * root layout). That makes the outlet stack our best opportunity to spot a\n * Suspense boundary above the body, even when no real body content is dynamic.\n * Without this, a route whose only dynamic source is `generateViewport()` would\n * miss the Suspense-above-body opt-in, because the viewport's stack lives in\n * the head and never sees the user's root layout.\n *\n * We deliberately only set `hasSuspenseAboveBody`, not `hasAllowedDynamic`. The\n * latter tracks whether the body has dynamic content that's been wrapped in\n * Suspense (i.e., the page is partially dynamic). The outlet rendering tells us\n * about the structural opt-in for an empty shell, not about the body being\n * partially dynamic. The distinction matters because dynamic metadata is only\n * acceptable when the page is partially dynamic (via real body holes), and we\n * don't want this outlet-based detection to mask that case.\n */ function trackOutletSuspenseAboveBody(componentStack, dynamicValidation) {\n if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n dynamicValidation.hasSuspenseAboveBody = true;\n }\n}\nexport function trackDynamicAccessInStaticRoute(dynamicReason, workStore, componentStack, dynamicValidation, clientDynamic, isServerPartial, kind) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic);\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation);\n return;\n }\n if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.dynamicErrors.push(addErrorContext(createMetadataErrorInStaticRoute(kind, workStore.route), componentStack, null));\n return;\n }\n if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.dynamicErrors.push(addErrorContext(createViewportErrorInStaticRoute(kind, workStore.route), componentStack, null));\n return;\n }\n let hasSuspense = false;\n if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // this error had a Suspense boundary above it, and it's above the body as well.\n dynamicValidation.hasSuspenseAboveBody = true;\n hasSuspense = true;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it.\n hasSuspense = true;\n }\n if (hasSuspense) {\n if (!isServerPartial) {\n // If we don't have holes caused by server data, then any holes must be caused\n // by client-only code, which is allowed.\n dynamicValidation.hasAllowedDynamic = true;\n return;\n }\n // We have holes that may be caused by server data.\n if (syncDynamicError || isClientHookDynamicError(dynamicReason)) {\n // We know this hole wasn't caused by server data, so it's allowed\n // (because it's wrapped in a Suspense)\n dynamicValidation.hasAllowedDynamic = true;\n return;\n }\n // Any remaining hole may be caused by a server hole.\n // These are not allowed even with Suspense.\n // (NOTE: this may misreport valid client dynamic holes as server holes)\n dynamicValidation.dynamicErrors.push(addErrorContext(createBodyErrorInStaticRoute(kind, workStore.route), componentStack, null));\n return;\n }\n if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError);\n return;\n }\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(addErrorContext(dynamicReason, componentStack, null));\n return;\n }\n const error = addErrorContext(isServerPartial ? // (NOTE: this may misreport client dynamic holes as server holes)\n createBodyErrorInStaticRoute(kind, workStore.route) : // that server data is complete\n createBodyError(kind, workStore.route), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n}\nexport function trackAllowedDynamicAccess(dynamicReason, workStore, componentStack, dynamicValidation, clientDynamic) {\n const dynamicHoleKind = 6;\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic);\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation);\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true;\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError);\n return;\n }\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(addErrorContext(dynamicReason, componentStack, null));\n return;\n }\n const error = addErrorContext(createBodyError(dynamicHoleKind, workStore.route), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n}\nexport var DynamicHoleKind = /*#__PURE__*/ function(DynamicHoleKind) {\n /** We know that this hole is caused by runtime data. */ DynamicHoleKind[DynamicHoleKind[\"Runtime\"] = 1] = \"Runtime\";\n /** We know that this hole is caused by link data. */ DynamicHoleKind[DynamicHoleKind[\"Link\"] = 2] = \"Link\";\n /** We know that this hole is caused by navigation(). */ DynamicHoleKind[DynamicHoleKind[\"Navigation\"] = 3] = \"Navigation\";\n /** We know that this hole is caused by prefetch(). */ DynamicHoleKind[DynamicHoleKind[\"Prefetch\"] = 4] = \"Prefetch\";\n /** We know that this hole is caused by dynamic data. */ DynamicHoleKind[DynamicHoleKind[\"Dynamic\"] = 5] = \"Dynamic\";\n /** We know that this hole is caused by runtime or dynamic data, but don't know which. */ DynamicHoleKind[DynamicHoleKind[\"RuntimeOrDynamic\"] = 6] = \"RuntimeOrDynamic\";\n return DynamicHoleKind;\n}({});\nexport function createInstantValidationState(slotStacks) {\n return {\n hasDynamicMetadata: false,\n hasAllowedClientDynamicAboveBoundary: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n validationPreventingErrors: [],\n thrownErrorsOutsideBoundary: [],\n slotStacks\n };\n}\nexport function trackDynamicHoleInNavigation(dynamicReason, workStore, componentStack, dynamicValidation, clientDynamic, kind, boundaryState) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic);\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n }\n // Resolve the config stack for this specific error. If the error\n // is inside a slot marker, use that slot's config. Otherwise fall\n // back to the default.\n const effectiveCreateInstantStack = resolveInstantStack(componentStack, dynamicValidation);\n if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(createMetadataError(kind, workStore.route), componentStack, effectiveCreateInstantStack);\n dynamicValidation.dynamicMetadata = error;\n return;\n }\n if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(createViewportError(kind, workStore.route), componentStack, effectiveCreateInstantStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n const boundaryLocation = hasInstantValidationBoundaryRegex.exec(componentStack);\n if (!boundaryLocation) {\n // We don't see the validation boundary in the component stack,\n // so this hole must be coming from a shared parent.\n // Shared parents are fully resolved and don't have RSC holes,\n // but they can still suspend in a client component during SSR.\n // If we managed to render all the validation boundaries, that means\n // that the client holes aren't blocking validation and we can disregard them.\n // Note that we don't even care whether they have suspense or not.\n if (allRequiredBoundariesRendered(boundaryState)) {\n dynamicValidation.hasAllowedClientDynamicAboveBoundary = true;\n dynamicValidation.hasAllowedDynamic = true // Holes outside the boundary contribute to allowing dynamic metadata\n ;\n return;\n } else {\n // TODO(instant-validation) TODO(NAR-787)\n // If shared parents blocked us from validating, we should only log\n // the errors from the innermost (segments), i.e. omit layouts whose\n // slots managed to render (because clearly they didn't block validation)\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because a Client Component in a parent segment prevented the page from rendering.`;\n const error = addErrorContext(new Error(message), componentStack, effectiveCreateInstantStack);\n dynamicValidation.validationPreventingErrors.push(error);\n return;\n }\n } else {\n // The hole originates inside the validation boundary.\n //\n // Check if we have a Suspense above the hole, but below the validation boundary.\n // If we do, then this dynamic usage wouldn't block a navigation to this subtree.\n // Conversely, if the nearest suspense is above the validation boundary, then this subtree would block.\n //\n // Note that in the component stack, children come before parents.\n //\n // Valid:\n // ...\n // at Suspense\n // ...\n // at __next_prefetch_validation_boundary__\n //\n // Invalid:\n // ...\n // at __next_prefetch_validation_boundary__\n // ...\n // at Suspense\n //\n const suspenseLocation = hasSuspenseRegex.exec(componentStack);\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else {\n // invalid - fallthrough\n }\n }\n }\n if (syncDynamicError) {\n if (effectiveCreateInstantStack !== null && syncDynamicError.cause === undefined) {\n syncDynamicError.cause = effectiveCreateInstantStack();\n }\n dynamicValidation.dynamicErrors.push(syncDynamicError);\n return;\n }\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(addErrorContext(dynamicReason, componentStack, effectiveCreateInstantStack));\n return;\n }\n const error = addErrorContext(createBodyErrorInNavigation(kind, workStore.route), componentStack, effectiveCreateInstantStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n}\nfunction createBodyError(kind, route) {\n switch(kind){\n case 1:\n return createRuntimeBodyError(route);\n case 5:\n return createDynamicBodyError(route);\n case 6:\n return createDynamicOrRuntimeBodyError(route);\n }\n}\nfunction createBodyErrorInNavigation(kind, route) {\n switch(kind){\n case 1:\n return createRuntimeBodyErrorInNavigation(route);\n case 2:\n return createLinkBodyErrorInNavigation(route);\n case 3:\n return createNavigationBodyErrorInNavigation(route);\n case 4:\n return createPrefetchBodyErrorInNavigation(route);\n case 5:\n return createDynamicBodyErrorInNavigation(route);\n }\n}\nfunction createMetadataError(kind, route) {\n switch(kind){\n case 1:\n return createRuntimeMetadataError(route);\n case 2:\n return createLinkMetadataError(route);\n case 3:\n return createNavigationMetadataError(route);\n case 4:\n return createPrefetchMetadataError(route);\n case 5:\n return createDynamicMetadataError(route);\n case 6:\n return createDynamicOrRuntimeMetadataError(route);\n }\n}\nfunction createViewportError(kind, route) {\n switch(kind){\n case 1:\n return createRuntimeViewportError(route);\n case 2:\n return createLinkViewportError(route);\n case 3:\n return createNavigationViewportError(route);\n case 4:\n return createPrefetchViewportError(route);\n case 5:\n return createDynamicViewportError(route);\n case 6:\n return createDynamicOrRuntimeViewportError(route);\n }\n}\nfunction createBodyErrorInStaticRoute(kind, route) {\n switch(kind){\n case 1:\n return createRuntimeBodyErrorInStaticRoute(route);\n case 5:\n return createDynamicBodyErrorInStaticRoute(route);\n case 6:\n return createNonPrerenderableBodyErrorInStaticRoute(route);\n }\n}\nfunction createMetadataErrorInStaticRoute(kind, route) {\n switch(kind){\n case 1:\n return createRuntimeMetadataErrorInStaticRoute(route);\n case 5:\n return createDynamicMetadataErrorInStaticRoute(route);\n case 6:\n return createNonPrerenderableMetadataErrorInStaticRoute(route);\n }\n}\nfunction createViewportErrorInStaticRoute(kind, route) {\n switch(kind){\n case 1:\n return createRuntimeViewportErrorInStaticRoute(route);\n case 5:\n return createDynamicViewportErrorInStaticRoute(route);\n case 6:\n return createNonPrerenderableViewportErrorInStaticRoute(route);\n }\n}\nexport function trackThrownErrorInNavigation(workStore, dynamicValidation, thrownValue, componentStack, reactBrowserBailout) {\n const boundaryLocation = hasInstantValidationBoundaryRegex.exec(componentStack);\n if (!boundaryLocation) {\n // There's no validation boundary on the component stack.\n // This error may have blocked a boundary from rendering.\n // Wrap the error to provide component context.\n // This helps for errors from node_modules which would otherwise\n // have no useful stack information due to ignore-listing,\n // e.g. next/dynamic with `ssr: false`.\n if (reactBrowserBailout) {\n // React preserves Next's branded bailout reason as the error cause.\n // Replace the internal wrapper before storing the user-facing diagnostic.\n const browserBailoutReason = getReactBrowserBailoutReason(thrownValue);\n if (browserBailoutReason !== undefined) {\n const browserBailoutError = thrownValue;\n browserBailoutError.cause = browserBailoutReason;\n }\n }\n const error = addErrorContext(new Error('An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.', {\n cause: thrownValue\n }), componentStack, null);\n dynamicValidation.thrownErrorsOutsideBoundary.push(error);\n } else {\n // There's validation boundary on the component stack,\n // so we know this error didn't block a validation boundary from rendering.\n // However, this error might be hiding be hiding dynamic content that would\n // cause validation to fail.\n const suspenseLocation = hasSuspenseRegex.exec(componentStack);\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n // There's a Suspense below the validation boundary but above this error's location.\n // This subtree can't fail instant validation because any potential\n // dynamic holes would be guarded by the Suspense anyway,\n // so we can allow this.\n return;\n } else {\n // invalid - fallthrough\n }\n }\n if (reactBrowserBailout) {\n // React preserves Next's branded bailout reason as the error cause.\n // Replace the internal wrapper before storing the user-facing diagnostic.\n const browserBailoutReason = getReactBrowserBailoutReason(thrownValue);\n if (browserBailoutReason !== undefined) {\n const browserBailoutError = thrownValue;\n browserBailoutError.cause = browserBailoutReason;\n }\n }\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because an error prevented the target segment from rendering.`;\n const error = addErrorContext(new Error(message, {\n cause: thrownValue\n }), componentStack, null // TODO(instant-validation-build): conflicting use of cause\n );\n dynamicValidation.validationPreventingErrors.push(error);\n }\n}\nexport function trackDynamicHoleInStaticShell(dynamicReason, workStore, componentStack, dynamicValidation, clientDynamic, kind) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic);\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation);\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(createMetadataError(kind, workStore.route), componentStack, null);\n dynamicValidation.dynamicMetadata = error;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(createViewportError(kind, workStore.route), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError);\n return;\n }\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(addErrorContext(dynamicReason, componentStack, null));\n return;\n }\n const error = addErrorContext(kind === 1 ? createRuntimeBodyError(workStore.route) : createDynamicBodyError(workStore.route), componentStack, null);\n dynamicValidation.dynamicErrors.push(error);\n return;\n}\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n */ function addErrorContext(error, componentStack, createInstantStack) {\n const ownerStack = process.env.NODE_ENV !== 'production' && React.captureOwnerStack ? React.captureOwnerStack() : null;\n if (createInstantStack !== null) {\n error.cause = createInstantStack();\n }\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack = error.name + ': ' + error.message + (ownerStack || componentStack);\n return error;\n}\nexport var PreludeState = /*#__PURE__*/ function(PreludeState) {\n PreludeState[PreludeState[\"Full\"] = 0] = \"Full\";\n PreludeState[PreludeState[\"Empty\"] = 1] = \"Empty\";\n PreludeState[PreludeState[\"Errored\"] = 2] = \"Errored\";\n return PreludeState;\n}({});\nexport function logDisallowedDynamicError(workStore, error) {\n console.error(error);\n logBuildDebugHint(workStore.route);\n}\nexport function throwIfSyncIOUsed(workStore, serverDynamic) {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack);\n throw new StaticGenBailoutError();\n }\n}\nexport function throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic, allowEmptyStaticShell) {\n const dynamicHoleKind = 6;\n throwIfSyncIOUsed(workStore, serverDynamic);\n // The dynamic metadata error is a mistake-detection signal. It fires when the\n // rest of the shell is otherwise fully static apart from metadata, suggesting\n // the dynamic data access in `generateMetadata` was probably unintentional.\n // That condition is independent of whether the user or build phase accepted\n // an empty shell, so we surface it before any opt-in bypass.\n if (prelude === 0 && dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) {\n console.error(createMetadataError(dynamicHoleKind, workStore.route).message);\n throw new StaticGenBailoutError();\n }\n // Either flag expresses \"this shell is allowed to be empty/blocking\":\n // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)\n // and the build-phase fallback-shell case.\n // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root\n // layout.\n // Treat them as synonyms for the purpose of bypassing shell-failure errors.\n if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {\n return;\n }\n if (prelude !== 0) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n for(let i = 0; i < dynamicErrors.length; i++){\n logDisallowedDynamicError(workStore, dynamicErrors[i]);\n }\n throw new StaticGenBailoutError();\n }\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(createViewportError(dynamicHoleKind, workStore.route).message);\n throw new StaticGenBailoutError();\n }\n if (prelude === 1) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`);\n throw new StaticGenBailoutError();\n }\n }\n}\nexport function throwIfDisallowedDynamicInStaticRoute(workStore, prelude, dynamicValidation, serverDynamic, isFallbackShell, allowEmptyStaticShell, isServerPartial) {\n const reasons = getDisallowedReasonsInStaticRoute(workStore, prelude, dynamicValidation, serverDynamic, isFallbackShell, allowEmptyStaticShell, isServerPartial);\n if (reasons.length > 0) {\n for (const reason of reasons){\n logDisallowedDynamicError(workStore, reason);\n }\n throw new StaticGenBailoutError();\n }\n}\nexport function getDisallowedReasonsInStaticRoute(workStore, prelude, dynamicValidation, serverDynamic, isFallbackShell, allowEmptyStaticShell, isServerPartial) {\n if (serverDynamic && serverDynamic.syncDynamicErrorWithStack) {\n return [\n serverDynamic.syncDynamicErrorWithStack\n ];\n }\n // We do a fallback shell prerender, but it's not meant to be validated --\n // we just need it to create the relevant prerender outputs.\n if (isFallbackShell) {\n return [];\n }\n // Suspense-above-body and `instant = false` bypass reporting\n // that the shell is blocked. However, if we have non-prerenderable server\n // data, we still have to error, regardless of those two.\n if (!isServerPartial && (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody)) {\n return [];\n }\n const { dynamicErrors } = dynamicValidation;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n // Dynamic data may have been passed into a client component without calling `use()`,\n // in which case we wouldn't see it during the prerender, but still need to error.\n // Fall back to a generic error message.\n if (isServerPartial) {\n return [\n new Error(`Route \"${workStore.route}\": Next.js encountered data that is not available during a static prerender, but is unable to provide a location.`)\n ];\n }\n if (prelude === 1 || prelude === 2) {\n // We've somehow ended up with an empty prelude but no dynamic errors.\n // We must've messed up the tracking somehow.\n return [\n new InvariantError(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`)\n ];\n }\n return [];\n}\nexport function getStaticShellDisallowedDynamicReasons(workStore, prelude, dynamicValidation, allowEmptyStaticShell) {\n // The dynamic metadata error is a mistake-detection signal. It fires when the\n // rest of the shell is otherwise fully static apart from metadata, suggesting\n // the dynamic data access in `generateMetadata` was probably unintentional.\n // That condition is independent of whether the user or build phase accepted\n // an empty shell, so we surface it before any opt-in bypass.\n if (prelude === 0 && dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicErrors.length === 0 && dynamicValidation.dynamicMetadata) {\n return [\n dynamicValidation.dynamicMetadata\n ];\n }\n // Either flag expresses \"this shell is allowed to be empty/blocking\":\n // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)\n // and the build-phase fallback-shell case.\n // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root\n // layout.\n // Treat them as synonyms for the purpose of bypassing shell-failure errors.\n if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {\n return [];\n }\n if (prelude !== 0) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n if (prelude === 1) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n new InvariantError(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`)\n ];\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return [];\n}\nexport function getNavigationDisallowedDynamicReasons(workStore, prelude, dynamicValidation, validationSampleTracking, boundaryState, devRenderDidError) {\n // If we have errors related to missing samples, those should take precedence over everything else.\n if (validationSampleTracking) {\n const { missingSampleErrors } = validationSampleTracking;\n if (missingSampleErrors.length > 0) {\n return missingSampleErrors;\n }\n }\n const { validationPreventingErrors } = dynamicValidation;\n if (validationPreventingErrors.length > 0) {\n if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {\n // The dev render already surfaced server errors to the user.\n // The same errors likely caused validation to be inconclusive,\n // so reporting them again as validation failures would be noisy.\n return [];\n }\n return validationPreventingErrors;\n }\n // NOTE: We don't care about Suspense above body here,\n // we're only concerned with the validation boundary\n if (prelude !== 0) {\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n if (prelude === 1 && !dynamicValidation.hasAllowedClientDynamicAboveBoundary && allRequiredBoundariesRendered(boundaryState)) {\n // If we ever get this far then we messed up the tracking of invalid\n // dynamic. (When boundaries are missing the deferred fallback below\n // will surface a more useful error.)\n return new InvariantError(`Route \"${workStore.route}\" failed to render during instant validation and Next.js was unable to determine a reason.`);\n }\n } else {\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicMetadata) {\n return [\n dynamicValidation.dynamicMetadata\n ];\n }\n }\n // Missing boundaries on their own aren't a strong signal — a parent\n // layout may legitimately omit a slot. Defer this so the caller can\n // try shallower validation depths first; if every depth comes up\n // empty we still want to surface this so the user is made aware that\n // validation didn't complete. When we add a markers API, the\n // marker-based variant of this check can become strict again.\n if (!allRequiredBoundariesRendered(boundaryState)) {\n const { thrownErrorsOutsideBoundary } = dynamicValidation;\n const rootInstantStack = dynamicValidation.slotStacks[0];\n if (thrownErrorsOutsideBoundary.length === 0) {\n const missingFiles = [];\n for (const [id, filePaths] of boundaryState.requiredIds){\n if (!boundaryState.renderedIds.has(id)) {\n for (const filePath of filePaths){\n let normalized = filePath.replace(/^\\[project\\][\\\\/]?/, '').replace(process.cwd() + '/', '').replace(process.cwd() + '\\\\', '');\n missingFiles.push(normalized);\n }\n }\n }\n missingFiles.sort();\n return createUnrenderedSegmentError(workStore.route, missingFiles);\n } else if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {\n // Errors outside the boundary likely blocked it from rendering,\n // but they're already being reported to the user via the dev\n // render. Suppress the validation failure to avoid noise.\n return [];\n } else if (thrownErrorsOutsideBoundary.length === 1) {\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because the target segment was prevented from rendering, likely due to the following error.`;\n const error = rootInstantStack !== null ? rootInstantStack() : new Error();\n error.name = 'Error';\n error.message = message;\n return new AggregateError([\n error,\n thrownErrorsOutsideBoundary[0]\n ]);\n } else {\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because the target segment was prevented from rendering, likely due to one of the following errors.`;\n const error = rootInstantStack !== null ? rootInstantStack() : new Error();\n error.name = 'Error';\n error.message = message;\n return new AggregateError([\n error,\n ...thrownErrorsOutsideBoundary\n ]);\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return [];\n}\n\n//# sourceMappingURL=dynamic-rendering.js.map","const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE';\nexport class DynamicServerError extends Error {\n constructor(description){\n super(`Dynamic server usage: ${description}`), this.description = description, this.digest = DYNAMIC_ERROR_CODE;\n }\n}\nexport function isDynamicServerError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err) || typeof err.digest !== 'string') {\n return false;\n }\n return err.digest === DYNAMIC_ERROR_CODE;\n}\n\n//# sourceMappingURL=hooks-server-context.js.map","const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT';\nexport class StaticGenBailoutError extends Error {\n constructor(...args){\n super(...args), this.code = NEXT_STATIC_GEN_BAILOUT;\n }\n}\nexport function isStaticGenBailoutError(error) {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false;\n }\n return error.code === NEXT_STATIC_GEN_BAILOUT;\n}\n\n//# sourceMappingURL=static-generation-bailout.js.map","const noop = ()=>{};\nlet registry;\nif (globalThis.FinalizationRegistry) {\n registry = new FinalizationRegistry((weakRef)=>{\n const stream = weakRef.deref();\n if (stream && !stream.locked) {\n stream.cancel('Response object has been garbage collected').then(noop);\n }\n });\n}\n/**\n * Clones a response by teeing the body so we can return two independent\n * ReadableStreams from it. This avoids the bug in the undici library around\n * response cloning.\n *\n * After cloning, the original response's body will be consumed and closed.\n *\n * @see https://github.com/vercel/next.js/pull/73274\n *\n * @param original - The original response to clone.\n * @returns A tuple containing two independent clones of the original response.\n */ export function cloneResponse(original) {\n // If the response has no body, then we can just return the original response\n // twice because it's immutable.\n if (!original.body) {\n return [\n original,\n original\n ];\n }\n const [body1, body2] = original.body.tee();\n const cloned1 = new Response(body1, {\n status: original.status,\n statusText: original.statusText,\n headers: original.headers\n });\n Object.defineProperty(cloned1, 'url', {\n value: original.url,\n // How the original response.url behaves\n configurable: true,\n enumerable: true,\n writable: false\n });\n const cloned2 = new Response(body2, {\n status: original.status,\n statusText: original.statusText,\n headers: original.headers\n });\n Object.defineProperty(cloned2, 'url', {\n value: original.url,\n // How the original response.url behaves\n configurable: true,\n enumerable: true,\n writable: false\n });\n // The Fetch Standard allows users to skip consuming the response body by\n // relying on garbage collection to release connection resources.\n // https://github.com/nodejs/undici?tab=readme-ov-file#garbage-collection\n //\n // To cancel the stream you then need to cancel both resulting branches.\n // Teeing a stream will generally lock it for the duration, preventing other\n // readers from locking it.\n // https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/tee\n if (registry) {\n if (cloned1.body) {\n registry.register(cloned1, new WeakRef(cloned1.body));\n }\n if (cloned2.body) {\n registry.register(cloned2, new WeakRef(cloned2.body));\n }\n }\n return [\n cloned1,\n cloned2\n ];\n}\n\n//# sourceMappingURL=clone-response.js.map","/**\n * Node in the doubly-linked list used for LRU tracking.\n * Each node represents a cache entry with bidirectional pointers.\n */ class LRUNode {\n constructor(key, data, size){\n this.prev = null;\n this.next = null;\n this.key = key;\n this.data = data;\n this.size = size;\n }\n}\n/**\n * Sentinel node used for head/tail boundaries.\n * These nodes don't contain actual cache data but simplify list operations.\n */ class SentinelNode {\n constructor(){\n this.prev = null;\n this.next = null;\n }\n}\n/**\n * LRU (Least Recently Used) Cache implementation using a doubly-linked list\n * and hash map for O(1) operations.\n *\n * Algorithm:\n * - Uses a doubly-linked list to maintain access order (most recent at head)\n * - Hash map provides O(1) key-to-node lookup\n * - Sentinel head/tail nodes simplify edge case handling\n * - Size-based eviction supports custom size calculation functions\n *\n * Data Structure Layout:\n * HEAD <-> [most recent] <-> ... <-> [least recent] <-> TAIL\n *\n * Operations:\n * - get(): Move accessed node to head (mark as most recent)\n * - set(): Add new node at head, evict from tail if over capacity\n * - Eviction: Remove least recent node (tail.prev) when size exceeds limit\n */ export class LRUCache {\n constructor(maxSize, calculateSize, onEvict){\n this.cache = new Map();\n this.totalSize = 0;\n this.maxSize = maxSize;\n this.calculateSize = calculateSize;\n this.onEvict = onEvict;\n // Create sentinel nodes to simplify doubly-linked list operations\n // HEAD <-> TAIL (empty list)\n this.head = new SentinelNode();\n this.tail = new SentinelNode();\n this.head.next = this.tail;\n this.tail.prev = this.head;\n }\n /**\n * Adds a node immediately after the head (marks as most recently used).\n * Used when inserting new items or when an item is accessed.\n * PRECONDITION: node must be disconnected (prev/next should be null)\n */ addToHead(node) {\n node.prev = this.head;\n node.next = this.head.next;\n // head.next is always non-null (points to tail or another node)\n this.head.next.prev = node;\n this.head.next = node;\n }\n /**\n * Removes a node from its current position in the doubly-linked list.\n * Updates the prev/next pointers of adjacent nodes to maintain list integrity.\n * PRECONDITION: node must be connected (prev/next are non-null)\n */ removeNode(node) {\n // Connected nodes always have non-null prev/next\n node.prev.next = node.next;\n node.next.prev = node.prev;\n }\n /**\n * Moves an existing node to the head position (marks as most recently used).\n * This is the core LRU operation - accessed items become most recent.\n */ moveToHead(node) {\n this.removeNode(node);\n this.addToHead(node);\n }\n /**\n * Removes and returns the least recently used node (the one before tail).\n * This is called during eviction when the cache exceeds capacity.\n * PRECONDITION: cache is not empty (ensured by caller)\n */ removeTail() {\n const lastNode = this.tail.prev;\n // tail.prev is always non-null and always LRUNode when cache is not empty\n this.removeNode(lastNode);\n return lastNode;\n }\n /**\n * Sets a key-value pair in the cache.\n * If the key exists, updates the value and moves to head.\n * If new, adds at head and evicts from tail if necessary.\n *\n * Time Complexity:\n * - O(1) for uniform item sizes\n * - O(k) where k is the number of items evicted (can be O(N) for variable sizes)\n */ set(key, value) {\n const size = (this.calculateSize == null ? void 0 : this.calculateSize.call(this, value, key)) ?? 1;\n if (size <= 0) {\n throw new Error(`LRUCache: calculateSize returned ${size}, but size must be > 0. ` + `Items with size 0 would never be evicted, causing unbounded cache growth.`);\n }\n if (size > this.maxSize) {\n console.warn('Single item size exceeds maxSize');\n return false;\n }\n const existing = this.cache.get(key);\n if (existing) {\n // Update existing node: adjust size and move to head (most recent)\n existing.data = value;\n this.totalSize = this.totalSize - existing.size + size;\n existing.size = size;\n this.moveToHead(existing);\n } else {\n // Add new node at head (most recent position)\n const newNode = new LRUNode(key, value, size);\n this.cache.set(key, newNode);\n this.addToHead(newNode);\n this.totalSize += size;\n }\n // Evict least recently used items until under capacity\n while(this.totalSize > this.maxSize && this.cache.size > 0){\n const tail = this.removeTail();\n this.cache.delete(tail.key);\n this.totalSize -= tail.size;\n this.onEvict == null ? void 0 : this.onEvict.call(this, tail.key, tail.data);\n }\n return true;\n }\n /**\n * Checks if a key exists in the cache.\n * This is a pure query operation - does NOT update LRU order.\n *\n * Time Complexity: O(1)\n */ has(key) {\n return this.cache.has(key);\n }\n /**\n * Retrieves a value by key and marks it as most recently used.\n * Moving to head maintains the LRU property for future evictions.\n *\n * Time Complexity: O(1)\n */ get(key) {\n const node = this.cache.get(key);\n if (!node) return undefined;\n // Mark as most recently used by moving to head\n this.moveToHead(node);\n return node.data;\n }\n /**\n * Returns an iterator over the cache entries. The order is outputted in the\n * order of most recently used to least recently used.\n */ *[Symbol.iterator]() {\n let current = this.head.next;\n while(current && current !== this.tail){\n // Between head and tail, current is always LRUNode\n const node = current;\n yield [\n node.key,\n node.data\n ];\n current = current.next;\n }\n }\n /**\n * Removes a specific key from the cache.\n * Updates both the hash map and doubly-linked list.\n *\n * Note: This is an explicit removal and does NOT trigger the `onEvict`\n * callback. Use this for intentional deletions where eviction tracking\n * is not needed.\n *\n * Time Complexity: O(1)\n */ remove(key) {\n const node = this.cache.get(key);\n if (!node) return;\n this.removeNode(node);\n this.cache.delete(key);\n this.totalSize -= node.size;\n }\n /**\n * Returns the number of items in the cache.\n */ get size() {\n return this.cache.size;\n }\n /**\n * Returns the current total size of all cached items.\n * This uses the custom size calculation if provided.\n */ get currentSize() {\n return this.totalSize;\n }\n}\n\n//# sourceMappingURL=lru-cache.js.map","// ISC License\n// Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n//\n// https://github.com/alexeyraspopov/picocolors/blob/b6261487e7b81aaab2440e397a356732cad9e342/picocolors.js#L1\nvar _globalThis;\nconst { env, stdout } = ((_globalThis = globalThis) == null ? void 0 : _globalThis.process) ?? {};\nconst enabled = env && !env.NO_COLOR && (env.FORCE_COLOR || (stdout == null ? void 0 : stdout.isTTY) && !env.CI && env.TERM !== 'dumb');\nexport const isColorSupported = Boolean(enabled);\n// Whether stdout ends up on a terminal: directly, or through the CLI, which\n// pipes a child's output while the upgrade menu is open.\nexport const stdoutIsTerminal = Boolean(stdout == null ? void 0 : stdout.isTTY) || env.NEXT_PRIVATE_PROMPT_OUTPUT === '1';\nconst replaceClose = (str, close, replace, index)=>{\n const start = str.substring(0, index) + replace;\n const end = str.substring(index + close.length);\n const nextIndex = end.indexOf(close);\n return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end;\n};\nconst formatter = (open, close, replace = open)=>{\n if (!enabled) return String;\n return (input)=>{\n const string = '' + input;\n const index = string.indexOf(close, open.length);\n return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;\n };\n};\nexport const reset = enabled ? (s)=>`\\x1b[0m${s}\\x1b[0m` : String;\nexport const bold = formatter('\\x1b[1m', '\\x1b[22m', '\\x1b[22m\\x1b[1m');\nexport const dim = formatter('\\x1b[2m', '\\x1b[22m', '\\x1b[22m\\x1b[2m');\nexport const italic = formatter('\\x1b[3m', '\\x1b[23m');\nexport const underline = formatter('\\x1b[4m', '\\x1b[24m');\nexport const inverse = formatter('\\x1b[7m', '\\x1b[27m');\nexport const hidden = formatter('\\x1b[8m', '\\x1b[28m');\nexport const strikethrough = formatter('\\x1b[9m', '\\x1b[29m');\nexport const black = formatter('\\x1b[30m', '\\x1b[39m');\nexport const red = formatter('\\x1b[31m', '\\x1b[39m');\nexport const green = formatter('\\x1b[32m', '\\x1b[39m');\nexport const yellow = formatter('\\x1b[33m', '\\x1b[39m');\nexport const blue = formatter('\\x1b[34m', '\\x1b[39m');\nexport const magenta = formatter('\\x1b[35m', '\\x1b[39m');\nexport const purple = formatter('\\x1b[38;2;173;127;168m', '\\x1b[39m');\nexport const cyan = formatter('\\x1b[36m', '\\x1b[39m');\nexport const white = formatter('\\x1b[37m', '\\x1b[39m');\nexport const gray = formatter('\\x1b[90m', '\\x1b[39m');\nexport const bgBlack = formatter('\\x1b[40m', '\\x1b[49m');\nexport const bgRed = formatter('\\x1b[41m', '\\x1b[49m');\nexport const bgGreen = formatter('\\x1b[42m', '\\x1b[49m');\nexport const bgYellow = formatter('\\x1b[43m', '\\x1b[49m');\nexport const bgBlue = formatter('\\x1b[44m', '\\x1b[49m');\nexport const bgMagenta = formatter('\\x1b[45m', '\\x1b[49m');\nexport const bgCyan = formatter('\\x1b[46m', '\\x1b[49m');\nexport const bgWhite = formatter('\\x1b[47m', '\\x1b[49m');\n\n//# sourceMappingURL=picocolors.js.map","/**\n * Contains predefined constants for the trace span name in next/server.\n *\n * Currently, next/server/tracer is internal implementation only for tracking\n * next.js's implementation only with known span names defined here.\n **/ // eslint typescript has a bug with TS enums\nvar BaseServerSpan = /*#__PURE__*/ function(BaseServerSpan) {\n BaseServerSpan[\"handleRequest\"] = \"BaseServer.handleRequest\";\n BaseServerSpan[\"run\"] = \"BaseServer.run\";\n BaseServerSpan[\"pipe\"] = \"BaseServer.pipe\";\n BaseServerSpan[\"getStaticHTML\"] = \"BaseServer.getStaticHTML\";\n BaseServerSpan[\"render\"] = \"BaseServer.render\";\n BaseServerSpan[\"renderToResponseWithComponents\"] = \"BaseServer.renderToResponseWithComponents\";\n BaseServerSpan[\"renderToResponse\"] = \"BaseServer.renderToResponse\";\n BaseServerSpan[\"renderToHTML\"] = \"BaseServer.renderToHTML\";\n BaseServerSpan[\"renderError\"] = \"BaseServer.renderError\";\n BaseServerSpan[\"renderErrorToResponse\"] = \"BaseServer.renderErrorToResponse\";\n BaseServerSpan[\"renderErrorToHTML\"] = \"BaseServer.renderErrorToHTML\";\n BaseServerSpan[\"render404\"] = \"BaseServer.render404\";\n return BaseServerSpan;\n}(BaseServerSpan || {});\nvar LoadComponentsSpan = /*#__PURE__*/ function(LoadComponentsSpan) {\n LoadComponentsSpan[\"loadDefaultErrorComponents\"] = \"LoadComponents.loadDefaultErrorComponents\";\n LoadComponentsSpan[\"loadComponents\"] = \"LoadComponents.loadComponents\";\n LoadComponentsSpan[\"loadRouteModule\"] = \"LoadComponents.loadRouteModule\";\n return LoadComponentsSpan;\n}(LoadComponentsSpan || {});\nvar InstrumentationSpan = /*#__PURE__*/ function(InstrumentationSpan) {\n InstrumentationSpan[\"loadModule\"] = \"Instrumentation.loadModule\";\n InstrumentationSpan[\"register\"] = \"Instrumentation.register\";\n return InstrumentationSpan;\n}(InstrumentationSpan || {});\nvar NextServerSpan = /*#__PURE__*/ function(NextServerSpan) {\n NextServerSpan[\"getRequestHandler\"] = \"NextServer.getRequestHandler\";\n NextServerSpan[\"getRequestHandlerWithMetadata\"] = \"NextServer.getRequestHandlerWithMetadata\";\n NextServerSpan[\"getServer\"] = \"NextServer.getServer\";\n NextServerSpan[\"getServerRequestHandler\"] = \"NextServer.getServerRequestHandler\";\n NextServerSpan[\"createServer\"] = \"createServer.createServer\";\n return NextServerSpan;\n}(NextServerSpan || {});\nvar NextNodeServerSpan = /*#__PURE__*/ function(NextNodeServerSpan) {\n NextNodeServerSpan[\"compression\"] = \"NextNodeServer.compression\";\n NextNodeServerSpan[\"getBuildId\"] = \"NextNodeServer.getBuildId\";\n NextNodeServerSpan[\"createComponentTree\"] = \"NextNodeServer.createComponentTree\";\n NextNodeServerSpan[\"clientComponentLoading\"] = \"NextNodeServer.clientComponentLoading\";\n NextNodeServerSpan[\"getLayoutOrPageModule\"] = \"NextNodeServer.getLayoutOrPageModule\";\n NextNodeServerSpan[\"generateStaticRoutes\"] = \"NextNodeServer.generateStaticRoutes\";\n NextNodeServerSpan[\"generateFsStaticRoutes\"] = \"NextNodeServer.generateFsStaticRoutes\";\n NextNodeServerSpan[\"generatePublicRoutes\"] = \"NextNodeServer.generatePublicRoutes\";\n NextNodeServerSpan[\"generateImageRoutes\"] = \"NextNodeServer.generateImageRoutes.route\";\n NextNodeServerSpan[\"sendRenderResult\"] = \"NextNodeServer.sendRenderResult\";\n NextNodeServerSpan[\"proxyRequest\"] = \"NextNodeServer.proxyRequest\";\n NextNodeServerSpan[\"runApi\"] = \"NextNodeServer.runApi\";\n NextNodeServerSpan[\"render\"] = \"NextNodeServer.render\";\n NextNodeServerSpan[\"renderHTML\"] = \"NextNodeServer.renderHTML\";\n NextNodeServerSpan[\"imageOptimizer\"] = \"NextNodeServer.imageOptimizer\";\n NextNodeServerSpan[\"getPagePath\"] = \"NextNodeServer.getPagePath\";\n NextNodeServerSpan[\"getRoutesManifest\"] = \"NextNodeServer.getRoutesManifest\";\n NextNodeServerSpan[\"findPageComponents\"] = \"NextNodeServer.findPageComponents\";\n NextNodeServerSpan[\"getFontManifest\"] = \"NextNodeServer.getFontManifest\";\n NextNodeServerSpan[\"getServerComponentManifest\"] = \"NextNodeServer.getServerComponentManifest\";\n NextNodeServerSpan[\"getRequestHandler\"] = \"NextNodeServer.getRequestHandler\";\n NextNodeServerSpan[\"renderToHTML\"] = \"NextNodeServer.renderToHTML\";\n NextNodeServerSpan[\"renderError\"] = \"NextNodeServer.renderError\";\n NextNodeServerSpan[\"renderErrorToHTML\"] = \"NextNodeServer.renderErrorToHTML\";\n NextNodeServerSpan[\"render404\"] = \"NextNodeServer.render404\";\n NextNodeServerSpan[\"startResponse\"] = \"NextNodeServer.startResponse\";\n // nested inner span, does not require parent scope name\n NextNodeServerSpan[\"route\"] = \"route\";\n NextNodeServerSpan[\"onProxyReq\"] = \"onProxyReq\";\n NextNodeServerSpan[\"apiResolver\"] = \"apiResolver\";\n NextNodeServerSpan[\"internalFetch\"] = \"internalFetch\";\n return NextNodeServerSpan;\n}(NextNodeServerSpan || {});\nvar StartServerSpan = /*#__PURE__*/ function(StartServerSpan) {\n StartServerSpan[\"startServer\"] = \"startServer.startServer\";\n return StartServerSpan;\n}(StartServerSpan || {});\nvar RenderSpan = /*#__PURE__*/ function(RenderSpan) {\n RenderSpan[\"getServerSideProps\"] = \"Render.getServerSideProps\";\n RenderSpan[\"getStaticProps\"] = \"Render.getStaticProps\";\n RenderSpan[\"renderToString\"] = \"Render.renderToString\";\n RenderSpan[\"renderDocument\"] = \"Render.renderDocument\";\n RenderSpan[\"createBodyResult\"] = \"Render.createBodyResult\";\n return RenderSpan;\n}(RenderSpan || {});\nvar AppRenderSpan = /*#__PURE__*/ function(AppRenderSpan) {\n AppRenderSpan[\"renderToString\"] = \"AppRender.renderToString\";\n AppRenderSpan[\"renderToReadableStream\"] = \"AppRender.renderToReadableStream\";\n AppRenderSpan[\"getBodyResult\"] = \"AppRender.getBodyResult\";\n AppRenderSpan[\"fetch\"] = \"AppRender.fetch\";\n AppRenderSpan[\"waitShellReady\"] = \"AppRender.waitShellReady\";\n AppRenderSpan[\"renderToNodeFizzStream\"] = \"AppRender.renderToNodeFizzStream\";\n AppRenderSpan[\"instantInsights\"] = \"AppRender.instantInsights\";\n AppRenderSpan[\"instantInsightsPrepareValidation\"] = \"AppRender.instantInsights.prepareValidation\";\n AppRenderSpan[\"instantInsightsRunValidation\"] = \"AppRender.instantInsights.runValidation\";\n return AppRenderSpan;\n}(AppRenderSpan || {});\nvar DevBundlerServiceSpan = /*#__PURE__*/ function(DevBundlerServiceSpan) {\n DevBundlerServiceSpan[\"ensurePage\"] = \"DevBundlerService.ensurePage\";\n return DevBundlerServiceSpan;\n}(DevBundlerServiceSpan || {});\nvar RouterSpan = /*#__PURE__*/ function(RouterSpan) {\n RouterSpan[\"executeRoute\"] = \"Router.executeRoute\";\n return RouterSpan;\n}(RouterSpan || {});\nvar NodeSpan = /*#__PURE__*/ function(NodeSpan) {\n NodeSpan[\"runHandler\"] = \"Node.runHandler\";\n return NodeSpan;\n}(NodeSpan || {});\nvar AppRouteRouteHandlersSpan = /*#__PURE__*/ function(AppRouteRouteHandlersSpan) {\n AppRouteRouteHandlersSpan[\"runHandler\"] = \"AppRouteRouteHandlers.runHandler\";\n return AppRouteRouteHandlersSpan;\n}(AppRouteRouteHandlersSpan || {});\nvar AppRouteRouteModuleSpan = /*#__PURE__*/ function(AppRouteRouteModuleSpan) {\n AppRouteRouteModuleSpan[\"loadUserland\"] = \"AppRouteRouteModule.loadUserland\";\n return AppRouteRouteModuleSpan;\n}(AppRouteRouteModuleSpan || {});\nvar RouteModuleSpan = /*#__PURE__*/ function(RouteModuleSpan) {\n RouteModuleSpan[\"prepare\"] = \"RouteModule.prepare\";\n RouteModuleSpan[\"loadManifests\"] = \"RouteModule.loadManifests\";\n return RouteModuleSpan;\n}(RouteModuleSpan || {});\nvar ResolveMetadataSpan = /*#__PURE__*/ function(ResolveMetadataSpan) {\n ResolveMetadataSpan[\"generateMetadata\"] = \"ResolveMetadata.generateMetadata\";\n ResolveMetadataSpan[\"generateViewport\"] = \"ResolveMetadata.generateViewport\";\n return ResolveMetadataSpan;\n}(ResolveMetadataSpan || {});\nvar MiddlewareSpan = /*#__PURE__*/ function(MiddlewareSpan) {\n MiddlewareSpan[\"execute\"] = \"Middleware.execute\";\n return MiddlewareSpan;\n}(MiddlewareSpan || {});\n// This list is used to filter out spans that are not relevant to the user\nexport const NextVanillaSpanAllowlist = new Set([\n \"Middleware.execute\",\n \"BaseServer.handleRequest\",\n \"Render.getServerSideProps\",\n \"Render.getStaticProps\",\n \"AppRender.fetch\",\n \"AppRender.getBodyResult\",\n \"LoadComponents.loadRouteModule\",\n \"Render.renderDocument\",\n \"Node.runHandler\",\n \"AppRouteRouteHandlers.runHandler\",\n \"AppRouteRouteModule.loadUserland\",\n \"RouteModule.prepare\",\n \"Instrumentation.loadModule\",\n \"Instrumentation.register\",\n \"ResolveMetadata.generateMetadata\",\n \"ResolveMetadata.generateViewport\",\n \"NextNodeServer.createComponentTree\",\n \"NextNodeServer.findPageComponents\",\n \"NextNodeServer.getLayoutOrPageModule\",\n \"NextNodeServer.startResponse\",\n \"NextNodeServer.clientComponentLoading\"\n]);\n// These Spans are allowed to be always logged\n// when the otel log prefix env is set\nexport const LogSpanAllowList = new Set([\n \"NextNodeServer.findPageComponents\",\n \"NextNodeServer.createComponentTree\",\n \"NextNodeServer.clientComponentLoading\"\n]);\nexport { BaseServerSpan, LoadComponentsSpan, InstrumentationSpan, NextServerSpan, NextNodeServerSpan, StartServerSpan, RenderSpan, RouterSpan, AppRenderSpan, DevBundlerServiceSpan, NodeSpan, AppRouteRouteHandlersSpan, AppRouteRouteModuleSpan, RouteModuleSpan, ResolveMetadataSpan, MiddlewareSpan, };\n\n//# sourceMappingURL=constants.js.map","/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */ const cache = new WeakMap();\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */ export function normalizeLocalePath(pathname, locales) {\n // If locales is undefined, return the pathname as is.\n if (!locales) return {\n pathname\n };\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales);\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale)=>locale.toLowerCase());\n cache.set(locales, lowercasedLocales);\n }\n let detectedLocale;\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2);\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return {\n pathname\n };\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase();\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment);\n if (index < 0) return {\n pathname\n };\n // Return the case-sensitive locale.\n detectedLocale = locales[index];\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/';\n return {\n pathname,\n detectedLocale\n };\n}\n\n//# sourceMappingURL=normalize-locale-path.js.map","export { RequestCookies, ResponseCookies, stringifyCookie } from 'next/dist/compiled/@edge-runtime/cookies';\n\n//# sourceMappingURL=cookies.js.map","/**\n * Percent-encode every character other than horizontal tab and printable ASCII\n * so a value can be safely serialized into an HTTP header.\n *\n * Node's `validateHeaderValue` and `fetch`'s ByteString conversion accept\n * different character ranges. Restricting values to `\\t\\x20-\\x7e` produces a\n * conservative representation that both can serialize. Characters outside a\n * transport's accepted range (Hebrew, Arabic, Chinese, emoji, …) would\n * otherwise throw `ERR_INVALID_CHAR` or a `TypeError`, which crashes ISR or\n * fails a cache read on every affected request.\n *\n * Cache tags are encoded at the public boundaries — tag construction\n * (`getImplicitTags`, `validateTags`) and invalidation input\n * (`revalidatePath`, `revalidateTag`, `updateTag`) — so storage, comparison,\n * and the wire all see the same canonical form.\n *\n * The class is narrower than either transport accepts. Everything inside it\n * passes through byte-for-byte, including `,`, `/`, `%`, `[`, `]`, `_`, `-` and\n * `\\t`, which preserves the comma-separated header format and the\n * dynamic-segment markers in derived tags (`_N_T_/[slug]/page`).\n *\n * Properties:\n * - Fast-path: input that already fits the class is returned unchanged. This\n * makes the encoder idempotent on already-encoded `%xx` sequences.\n * - Matches *runs* of out-of-class code units so surrogate pairs (e.g. an\n * emoji) are handed to `encodeURIComponent` as a complete code point — a\n * per-code-unit regex would split the pair and throw `URIError`.\n */ const OUT_OF_CLASS_CHAR = /[^\\t\\x20-\\x7e]/;\nconst OUT_OF_CLASS_RUN = /[^\\t\\x20-\\x7e]+/g;\nexport function encodeHeaderSafe(value) {\n return OUT_OF_CLASS_CHAR.test(value) ? value.replace(OUT_OF_CLASS_RUN, (run)=>encodeURIComponent(run)) : value;\n}\n\n//# sourceMappingURL=encode-header-safe.js.map","export function getSegmentValue(segment) {\n return Array.isArray(segment) ? segment[1] : segment;\n}\nexport function isGroupSegment(segment) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')');\n}\nexport function isParallelRouteSegment(segment) {\n return segment.startsWith('@') && segment !== '@children';\n}\nexport function computeSelectedLayoutSegment(segments, parallelRouteKey) {\n if (!segments || segments.length === 0) {\n return null;\n }\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment = parallelRouteKey === 'children' ? segments[0] : segments[segments.length - 1];\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment;\n}\n/** Get the canonical parameters from the current level to the leaf node. */ export function getSelectedLayoutSegmentPath(tree, parallelRouteKey, first = true, segmentPath = []) {\n let node;\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey];\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1];\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0];\n }\n if (!node) return segmentPath;\n const segment = node[0];\n let segmentValue = getSegmentValue(segment);\n if (!segmentValue || segmentValue === PAGE_SEGMENT_KEY) {\n return segmentPath;\n }\n segmentPath.push(segmentValue);\n return getSelectedLayoutSegmentPath(node, parallelRouteKey, false, segmentPath);\n}\nexport const PAGE_SEGMENT_KEY = '__PAGE__';\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__';\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found';\n\n//# sourceMappingURL=segment.js.map","export function getRequestInsightKind(insight) {\n return insight.kind ?? 'request';\n}\nexport function getRequestInsightKey(insight) {\n return `${getRequestInsightKind(insight)}:${insight.requestId}`;\n}\n\n//# sourceMappingURL=request-insights.js.map","export const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain';\nexport const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8';\nexport const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8';\nexport const NEXT_QUERY_PARAM_PREFIX = 'nxtP';\nexport const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI';\nexport const MATCHED_PATH_HEADER = 'x-matched-path';\nexport const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate';\nexport const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = 'x-prerender-revalidate-if-generated';\nexport const RSC_SEGMENTS_DIR_SUFFIX = '.segments';\nexport const RSC_SEGMENT_SUFFIX = '.segment.rsc';\nexport const RSC_SUFFIX = '.rsc';\nexport const ACTION_SUFFIX = '.action';\nexport const NEXT_DATA_SUFFIX = '.json';\nexport const NEXT_META_SUFFIX = '.meta';\nexport const NEXT_BODY_SUFFIX = '.body';\nexport const NEXT_NAV_DEPLOYMENT_ID_HEADER = 'x-nextjs-deployment-id';\nexport const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags';\nexport const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags';\nexport const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER = 'x-next-revalidate-tag-token';\nexport const NEXT_RESUME_HEADER = 'next-resume';\nexport const NEXT_RESUME_STATE_LENGTH_HEADER = 'x-next-resume-state-length';\n// if these change make sure we update the related\n// documentation as well\nexport const NEXT_CACHE_TAG_MAX_ITEMS = 128;\nexport const NEXT_CACHE_TAG_MAX_LENGTH = 256;\nexport const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024;\nexport const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_';\nexport const NEXT_CACHE_ROOT_PARAM_TAG_ID = '_N_RP_';\n// in seconds\nexport const CACHE_ONE_YEAR_SECONDS = 31536000;\n// in seconds, represents revalidate=false. I.e. never revaliate.\n// We use this value since it can be represented as a V8 SMI for optimal performance.\n// It can also be serialized as JSON if it ever leaks accidentally as an actual value.\nexport const INFINITE_CACHE = 0xfffffffe;\n// Patterns to detect middleware files\nexport const MIDDLEWARE_FILENAME = 'middleware';\nexport const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`;\n// Patterns to detect proxy files (replacement for middleware)\nexport const PROXY_FILENAME = 'proxy';\nexport const PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`;\n// Pattern to detect instrumentation hooks file\nexport const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation';\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\nexport const PAGES_DIR_ALIAS = 'private-next-pages';\nexport const DOT_NEXT_ALIAS = 'private-dot-next';\nexport const ROOT_DIR_ALIAS = 'private-next-root-dir';\nexport const APP_DIR_ALIAS = 'private-next-app-dir';\nexport const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy';\nexport const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate';\nexport const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference';\nexport const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper';\nexport const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS = 'private-next-rsc-track-dynamic-import';\nexport const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption';\nexport const RSC_ACTION_CLIENT_WRAPPER_ALIAS = 'private-next-rsc-action-client-wrapper';\nexport const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`;\nexport const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`;\nexport const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`;\nexport const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`;\nexport const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`;\nexport const SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`;\nexport const GSP_NO_RETURNED_VALUE = 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?';\nexport const GSSP_NO_RETURNED_VALUE = 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?';\nexport const UNSTABLE_REVALIDATE_RENAME_ERROR = 'The `unstable_revalidate` property is available for general use.\\n' + 'Please use `revalidate` instead.';\nexport const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`;\nexport const NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`;\nexport const SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`;\nexport const ESLINT_DEFAULT_DIRS = [\n 'app',\n 'pages',\n 'components',\n 'lib',\n 'src'\n];\nexport const SERVER_RUNTIME = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs'\n};\nexport const WEB_SOCKET_MAX_RECONNECTIONS = 12;\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */ const WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */ shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */ reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */ serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */ actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */ apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */ apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */ middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */ instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */ edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */ appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */ pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */ pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */ pagesDirNode: 'pages-dir-node'\n};\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser\n ]\n }\n};\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__'\n};\nexport { WEBPACK_LAYERS, WEBPACK_RESOURCE_QUERIES };\n\n//# sourceMappingURL=constants.js.map","export var CachedRouteKind = /*#__PURE__*/ function(CachedRouteKind) {\n CachedRouteKind[\"APP_PAGE\"] = \"APP_PAGE\";\n CachedRouteKind[\"APP_ROUTE\"] = \"APP_ROUTE\";\n CachedRouteKind[\"PAGES\"] = \"PAGES\";\n CachedRouteKind[\"FETCH\"] = \"FETCH\";\n CachedRouteKind[\"REDIRECT\"] = \"REDIRECT\";\n CachedRouteKind[\"IMAGE\"] = \"IMAGE\";\n return CachedRouteKind;\n}({});\nexport var IncrementalCacheKind = /*#__PURE__*/ function(IncrementalCacheKind) {\n IncrementalCacheKind[\"APP_PAGE\"] = \"APP_PAGE\";\n IncrementalCacheKind[\"APP_ROUTE\"] = \"APP_ROUTE\";\n IncrementalCacheKind[\"PAGES\"] = \"PAGES\";\n IncrementalCacheKind[\"FETCH\"] = \"FETCH\";\n IncrementalCacheKind[\"IMAGE\"] = \"IMAGE\";\n return IncrementalCacheKind;\n}({});\n\n//# sourceMappingURL=types.js.map","export class InvariantError extends Error {\n constructor(message, options){\n super(`Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`, options);\n this.name = 'InvariantError';\n }\n}\n\n//# sourceMappingURL=invariant-error.js.map","export function detectDomainLocale(domainItems, hostname, detectedLocale) {\n if (!domainItems) return;\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase();\n }\n for (const item of domainItems){\n // remove port if present\n const domainHostname = item.domain?.split(':', 1)[0].toLowerCase();\n if (hostname === domainHostname || detectedLocale === item.defaultLocale.toLowerCase() || item.locales?.some((locale)=>locale.toLowerCase() === detectedLocale)) {\n return item;\n }\n }\n}\n\n//# sourceMappingURL=detect-domain-locale.js.map","export function createPromiseWithResolvers() {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve;\n let reject;\n const promise = new Promise((res, rej)=>{\n resolve = res;\n reject = rej;\n });\n return {\n resolve: resolve,\n reject: reject,\n promise\n };\n}\n\n//# sourceMappingURL=promise-with-resolvers.js.map","export const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__';\nexport const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__';\nexport const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__';\nexport const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__';\n\n//# sourceMappingURL=boundary-constants.js.map","export var RouteKind = /*#__PURE__*/ function(RouteKind) {\n /**\n * `PAGES` represents all the React pages that are under `pages/`.\n */ RouteKind[\"PAGES\"] = \"PAGES\";\n /**\n * `PAGES_API` represents all the API routes under `pages/api/`.\n */ RouteKind[\"PAGES_API\"] = \"PAGES_API\";\n /**\n * `APP_PAGE` represents all the React pages that are under `app/` with the\n * filename of `page.{j,t}s{,x}`.\n */ RouteKind[\"APP_PAGE\"] = \"APP_PAGE\";\n /**\n * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the\n * filename of `route.{j,t}s{,x}`.\n */ RouteKind[\"APP_ROUTE\"] = \"APP_ROUTE\";\n /**\n * `IMAGE` represents all the images that are generated by `next/image`.\n */ RouteKind[\"IMAGE\"] = \"IMAGE\";\n return RouteKind;\n}({});\n\n//# sourceMappingURL=route-kind.js.map","export class PageSignatureError extends Error {\n constructor({ page }){\n super(`The middleware \"${page}\" accepts an async API directly with the form:\n \n export function middleware(request, event) {\n return NextResponse.redirect('/new-location')\n }\n \n Read more: https://nextjs.org/docs/messages/middleware-new-signature\n `);\n }\n}\nexport class RemovedPageError extends Error {\n constructor(){\n super(`The request.page has been deprecated in favour of \\`URLPattern\\`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n `);\n }\n}\nexport class RemovedUAError extends Error {\n constructor(){\n super(`The request.ua has been removed in favour of \\`userAgent\\` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n `);\n }\n}\n\n//# sourceMappingURL=error.js.map","export const INSTANT_VALIDATION_BOUNDARY_NAME = '__next_instant_validation_boundary__';\nexport const INSTANT_SLOT_MARKER_PREFIX = '__next_instant_slot_';\nexport const INSTANT_SLOT_MARKER_SUFFIX = '__';\n\n//# sourceMappingURL=boundary-constants.js.map","export const SERVER_REFERENCE_ID_LENGTH = 42;\nexport function mightBeServerReferenceId(id) {\n return id.length === SERVER_REFERENCE_ID_LENGTH;\n}\n/**\n * Extracts info about the server reference for the given server reference ID by\n * parsing the first byte of the hex-encoded ID.\n *\n * ```\n * Bit positions: [7] [6] [5] [4] [3] [2] [1] [0]\n * Bits: typeBit argMask restArgs\n * ```\n *\n * If the `typeBit` is `1` the server reference represents a `\"use cache\"`\n * function, otherwise a server action.\n *\n * The `argMask` encodes whether the function uses the argument at the\n * respective position.\n *\n * The `restArgs` bit indicates whether the function uses a rest parameter. It's\n * also set to 1 if the function has more than 6 args.\n *\n * @param id hex-encoded server reference ID\n */ export function extractInfoFromServerReferenceId(id) {\n const infoByte = parseInt(id.slice(0, 2), 16);\n const typeBit = infoByte >> 7 & 0x1;\n const argMask = infoByte >> 1 & 0x3f;\n const restArgs = infoByte & 0x1;\n const usedArgs = Array(6);\n for(let index = 0; index < 6; index++){\n const bitPosition = 5 - index;\n const bit = argMask >> bitPosition & 0x1;\n usedArgs[index] = bit === 1;\n }\n return {\n type: typeBit === 1 ? 'use-cache' : 'server-action',\n usedArgs: usedArgs,\n hasRestArgs: restArgs === 1\n };\n}\n/**\n * Creates a sparse array containing only the used arguments based on the\n * provided action info.\n */ export function omitUnusedArgs(args, info) {\n const filteredArgs = new Array(args.length);\n let length = 0;\n for(let index = 0; index < args.length; index++){\n if (index < 6 && info.usedArgs[index] || // This assumes that the server reference info byte has the restArgs bit\n // set to 1 if there are more than 6 args.\n index >= 6 && info.hasRestArgs) {\n filteredArgs[index] = args[index];\n length = index + 1;\n }\n }\n // Trim trailing unused args from the array.\n filteredArgs.length = length;\n return filteredArgs;\n}\n\n//# sourceMappingURL=server-reference-info.js.map","export var RedirectStatusCode = /*#__PURE__*/ function(RedirectStatusCode) {\n RedirectStatusCode[RedirectStatusCode[\"SeeOther\"] = 303] = \"SeeOther\";\n RedirectStatusCode[RedirectStatusCode[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n RedirectStatusCode[RedirectStatusCode[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n return RedirectStatusCode;\n}({});\n\n//# sourceMappingURL=redirect-status-code.js.map","export function getRevalidateReason(params) {\n if (params.isOnDemandRevalidate) {\n return 'on-demand';\n }\n if (params.isStaticGeneration) {\n return 'stale';\n }\n return undefined;\n}\n\n//# sourceMappingURL=utils.js.map","export function wrapNormalizerFn(fn) {\n return {\n normalize: fn\n };\n}\n\n//# sourceMappingURL=wrap-normalizer-fn.js.map","import { hexHash } from '../../hash';\nconst CACHE_BUSTING_SEARCH_PARAM_DIGEST_BYTES = 12;\nconst textEncoder = new TextEncoder();\nfunction encodeCacheBustingSearchParam(bytes) {\n let binary = '';\n for(let i = 0; i < bytes.length; i++){\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\nfunction normalizeCacheBustingInput(value) {\n if (value === undefined) {\n return '0';\n }\n return Array.isArray(value) ? value.join(',') : value;\n}\nfunction createCacheBustingSearchParamInput(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) {\n if ((prefetchHeader === undefined || prefetchHeader === '0') && segmentPrefetchHeader === undefined && stateTreeHeader === undefined && nextUrlHeader === undefined) {\n return null;\n }\n return [\n prefetchHeader ?? '0',\n normalizeCacheBustingInput(segmentPrefetchHeader),\n normalizeCacheBustingInput(stateTreeHeader),\n normalizeCacheBustingInput(nextUrlHeader)\n ].join(',');\n}\nasync function computeCacheBustingSearchParamFromInput(input) {\n // Truncate SHA-256 to 96 bits to keep `_rsc` compact\n const digest = await globalThis.crypto.subtle.digest('SHA-256', textEncoder.encode(input));\n return encodeCacheBustingSearchParam(new Uint8Array(digest).subarray(0, CACHE_BUSTING_SEARCH_PARAM_DIGEST_BYTES));\n}\nexport async function computeCacheBustingSearchParam(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) {\n const input = createCacheBustingSearchParamInput(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader);\n if (input === null) {\n return '';\n }\n return computeCacheBustingSearchParamFromInput(input);\n}\nexport function computeLegacyCacheBustingSearchParam(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader) {\n const input = createCacheBustingSearchParamInput(prefetchHeader, segmentPrefetchHeader, stateTreeHeader, nextUrlHeader);\n if (input === null) {\n return '';\n }\n return hexHash(input);\n}\n\n//# sourceMappingURL=cache-busting-search-param.js.map","import { getOrCreateGlobalAsyncLocalStorage } from '../../app-render/async-local-storage';\n// This storage covers the part of BaseServer request handling that runs before\n// App Render creates workAsyncStorage. Once available, workStore remains the\n// primary identity source for locally recorded spans.\nfunction getRequestInsightsIdentityStorage() {\n return getOrCreateGlobalAsyncLocalStorage('request-insights-identity-storage');\n}\nexport function runWithRequestInsightsIdentity(identity, fn) {\n return getRequestInsightsIdentityStorage().run(identity, fn);\n}\nexport function getRequestInsightsIdentity() {\n return getRequestInsightsIdentityStorage().getStore();\n}\n\n//# sourceMappingURL=request-insights-identity.js.map","// FIXME: (wyattjoh) this is a temporary solution to allow us to pass data between bundled modules\nexport const NEXT_REQUEST_META = Symbol.for('NextInternalRequestMeta');\nexport function getRequestMeta(req, key) {\n const meta = req[NEXT_REQUEST_META] || {};\n return typeof key === 'string' ? meta[key] : meta;\n}\n/**\n * Sets the request metadata.\n *\n * @param req the request to set the metadata on\n * @param meta the metadata to set\n * @returns the mutated request metadata\n */ export function setRequestMeta(req, meta) {\n req[NEXT_REQUEST_META] = meta;\n return meta;\n}\n/**\n * Adds a value to the request metadata.\n *\n * @param request the request to mutate\n * @param key the key to set\n * @param value the value to set\n * @returns the mutated request metadata\n */ export function addRequestMeta(request, key, value) {\n const meta = getRequestMeta(request);\n meta[key] = value;\n return setRequestMeta(request, meta);\n}\n/**\n * Removes a key from the request metadata.\n *\n * @param request the request to mutate\n * @param key the key to remove\n * @returns the mutated request metadata\n */ export function removeRequestMeta(request, key) {\n const meta = getRequestMeta(request);\n delete meta[key];\n return setRequestMeta(request, meta);\n}\n\n//# sourceMappingURL=request-meta.js.map","import { CACHE_ONE_YEAR_SECONDS } from '../../lib/constants';\nexport function getCacheControlHeader({ revalidate, expire }) {\n const swrHeader = typeof revalidate === 'number' && expire !== undefined && revalidate < expire ? `, stale-while-revalidate=${expire - revalidate}` : '';\n if (revalidate === 0) {\n return 'private, no-cache, no-store, max-age=0, must-revalidate';\n } else if (typeof revalidate === 'number') {\n return `s-maxage=${revalidate}${swrHeader}`;\n }\n return `s-maxage=${CACHE_ONE_YEAR_SECONDS}${swrHeader}`;\n}\n\n//# sourceMappingURL=cache-control.js.map","import { getRequestInsightKey, getRequestInsightKind } from '../../../shared/lib/request-insights';\nexport { isRequestInsightsEnabled } from './span-store';\nconst MAX_REQUEST_INSIGHTS = 100;\nconst REQUEST_INSIGHTS_STORE_KEY = Symbol.for('@next/request-insights-store');\nconst CLIENT_COMPONENT_LOADING_SPAN_TYPE = 'NextNodeServer.clientComponentLoading';\nconst REDACTED_VALUE = 'redacted';\nconst SAFE_SPAN_ATTRIBUTE_KEYS = new Set([\n 'http.method',\n 'http.route',\n 'http.status_code',\n 'http.url',\n 'net.peer.name',\n 'net.peer.port',\n 'next.fetch.cache_reason',\n 'next.fetch.cache_status',\n 'next.fetch.idx',\n 'next.route',\n 'next.rsc',\n 'next.segment',\n 'next.span_category',\n 'next.span_name',\n 'next.span_type'\n]);\nconst SENSITIVE_PARAM_NAME_RE = /(?:^|[_-])(?:access[_-]?token|api[_-]?key|auth|authorization|code|cookie|credential|id[_-]?token|jwt|key|password|secret|session|signature|sig|token)(?:$|[_-])/i;\nclass InMemoryRequestInsightsStore {\n recordSpan(span) {\n var _span_attributes;\n if (!span.requestId) {\n return;\n }\n const insight = this.getOrCreateRequest({\n requestId: span.requestId,\n kind: span.requestInsightKind,\n htmlRequestId: span.htmlRequestId,\n route: span.route,\n url: span.url\n }, span.startTime ?? span.timestamp);\n const spanStartTime = span.startTime ?? span.timestamp;\n insight.htmlRequestId = span.htmlRequestId ?? insight.htmlRequestId;\n insight.route = insight.route ?? span.route;\n insight.url = insight.url ?? sanitizeUrl(span.url);\n this.updateTiming(insight, spanStartTime, span.durationMs, ((_span_attributes = span.attributes) == null ? void 0 : _span_attributes['next.span_type']) === 'BaseServer.handleRequest');\n insight.status = insight.status === 'error' || span.status === 'error' ? 'error' : span.status === 'ok' ? 'ok' : insight.status;\n insight.spans.push({\n name: span.name,\n startTime: spanStartTime,\n durationMs: span.durationMs,\n status: span.status,\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentSpanId,\n attributes: sanitizeSpanAttributes(span.attributes),\n links: sanitizeSpanLinks(span.links),\n events: sanitizeSpanEvents(span.events),\n error: span.error\n });\n const fetch = getFetchInsight(span);\n if (fetch) {\n this.recordFetchForInsight(insight, fetch);\n }\n this.notify(insight);\n }\n recordFetch(identity, fetch) {\n if (!identity.requestId) {\n return;\n }\n const fetchStartTime = fetch.startTime ?? getCurrentTimestamp();\n const insight = this.getOrCreateRequest(identity, fetchStartTime);\n this.updateTiming(insight, fetchStartTime, fetch.durationMs, false);\n this.recordFetchForInsight(insight, sanitizeFetchInsight(fetch));\n this.notify(insight);\n }\n getSnapshot() {\n return {\n requests: this.requestOrder.map((insightKey)=>this.requests.get(insightKey)).filter((request)=>request !== undefined)\n };\n }\n subscribe(listener) {\n this.listeners.add(listener);\n return ()=>{\n this.listeners.delete(listener);\n };\n }\n clear() {\n this.requests.clear();\n this.requestTimings.clear();\n this.requestOrder.length = 0;\n }\n updateTiming(insight, startTime, durationMs, isRequestSpan) {\n const insightKey = getRequestInsightKey(insight);\n if (isRequestSpan && durationMs !== undefined) {\n const requestTiming = {\n startTime,\n durationMs\n };\n this.requestTimings.set(insightKey, requestTiming);\n insight.startTime = requestTiming.startTime;\n insight.durationMs = requestTiming.durationMs;\n return;\n }\n const requestTiming = this.requestTimings.get(insightKey);\n if (requestTiming) {\n insight.startTime = requestTiming.startTime;\n insight.durationMs = requestTiming.durationMs;\n return;\n }\n const endTime = startTime + (durationMs ?? 0);\n const requestEndTime = insight.startTime + (insight.durationMs ?? 0);\n insight.startTime = Math.min(insight.startTime, startTime);\n insight.durationMs = Math.max(requestEndTime, endTime) - insight.startTime;\n }\n notify(insight) {\n for (const listener of this.listeners){\n listener(insight);\n }\n }\n getOrCreateRequest(identity, startTime) {\n const requestId = identity.requestId;\n const insightKey = getRequestInsightKey({\n requestId,\n kind: identity.kind\n });\n let insight = this.requests.get(insightKey);\n if (!insight) {\n insight = {\n requestId,\n kind: getRequestInsightKind(identity),\n htmlRequestId: identity.htmlRequestId ?? requestId,\n route: identity.route,\n url: sanitizeUrl(identity.url),\n startTime,\n status: 'pending',\n spans: [],\n fetches: []\n };\n this.requests.set(insightKey, insight);\n this.requestOrder.push(insightKey);\n this.trim();\n }\n insight.htmlRequestId = identity.htmlRequestId ?? insight.htmlRequestId;\n insight.route = insight.route ?? identity.route;\n insight.url = insight.url ?? sanitizeUrl(identity.url);\n insight.startTime = Math.min(insight.startTime, startTime);\n return insight;\n }\n recordFetchForInsight(insight, fetch) {\n if (insight.fetches.some((existingFetch)=>existingFetch.url === fetch.url && (existingFetch.index !== undefined && fetch.index !== undefined ? existingFetch.index === fetch.index : existingFetch.startTime === fetch.startTime))) {\n return;\n }\n insight.fetches.push(sanitizeFetchInsight(fetch));\n }\n trim() {\n while(this.requestOrder.length > MAX_REQUEST_INSIGHTS){\n const insightKey = this.requestOrder.shift();\n if (insightKey) {\n this.requests.delete(insightKey);\n this.requestTimings.delete(insightKey);\n }\n }\n }\n constructor(){\n this.requests = new Map();\n this.requestTimings = new Map();\n this.requestOrder = [];\n this.listeners = new Set();\n }\n}\nexport function recordRequestInsightSpan(span) {\n var _span_attributes;\n if (((_span_attributes = span.attributes) == null ? void 0 : _span_attributes['next.span_type']) === CLIENT_COMPONENT_LOADING_SPAN_TYPE) {\n return;\n }\n getRequestInsightsStore().recordSpan(span);\n}\nexport function recordRequestInsightFetch(identity, fetch) {\n getRequestInsightsStore().recordFetch(identity, fetch);\n}\nexport function getRequestInsightsSnapshot() {\n return getRequestInsightsStore().getSnapshot();\n}\nexport function subscribeRequestInsights(listener) {\n return getRequestInsightsStore().subscribe(listener);\n}\nexport function clearRequestInsightsForTest() {\n getRequestInsightsStore().clear();\n}\nfunction getRequestInsightsStore() {\n const globalStore = globalThis;\n return globalStore[REQUEST_INSIGHTS_STORE_KEY] ??= new InMemoryRequestInsightsStore();\n}\nfunction getFetchInsight(span) {\n const attributes = span.attributes;\n if (!attributes || attributes['next.span_type'] !== 'AppRender.fetch') {\n return null;\n }\n return {\n url: sanitizeUrl(getStringAttribute(attributes['http.url']) ?? span.url),\n method: getStringAttribute(attributes['http.method']),\n statusCode: getNumberAttribute(attributes['http.status_code']),\n startTime: span.startTime ?? span.timestamp,\n durationMs: span.durationMs,\n cacheStatus: getStringAttribute(attributes['next.fetch.cache_status']),\n cacheReason: getStringAttribute(attributes['next.fetch.cache_reason']),\n index: getNumberAttribute(attributes['next.fetch.idx'])\n };\n}\nfunction sanitizeFetchInsight(fetch) {\n return {\n ...fetch,\n url: sanitizeUrl(fetch.url)\n };\n}\nfunction getCurrentTimestamp() {\n return performance.timeOrigin + performance.now();\n}\nfunction sanitizeSpanAttributes(attributes) {\n if (!attributes) {\n return undefined;\n }\n const sanitized = {};\n for (const [key, value] of Object.entries(attributes)){\n if (!SAFE_SPAN_ATTRIBUTE_KEYS.has(key)) {\n continue;\n }\n sanitized[key] = key === 'http.url' ? sanitizeUrlAttribute(value) : value;\n }\n return Object.keys(sanitized).length > 0 ? sanitized : undefined;\n}\nfunction sanitizeSpanEvents(events) {\n return events == null ? void 0 : events.map((event)=>({\n ...event,\n attributes: sanitizeSpanAttributes(event.attributes)\n }));\n}\nfunction sanitizeSpanLinks(links) {\n return links == null ? void 0 : links.map((link)=>({\n ...link,\n attributes: sanitizeSpanAttributes(link.attributes)\n }));\n}\nfunction sanitizeUrlAttribute(value) {\n return typeof value === 'string' ? sanitizeUrl(value) ?? '' : value;\n}\nfunction sanitizeUrl(value) {\n if (!value) {\n return value;\n }\n const isRelativeUrl = value.startsWith('/');\n try {\n const url = isRelativeUrl ? new URL(value, 'http://n') : new URL(value);\n url.username = '';\n url.password = '';\n for (const name of Array.from(url.searchParams.keys())){\n if (SENSITIVE_PARAM_NAME_RE.test(name)) {\n url.searchParams.set(name, REDACTED_VALUE);\n }\n }\n return isRelativeUrl ? `${url.pathname}${url.search}${url.hash}` : url.href;\n } catch {\n return value;\n }\n}\nfunction getStringAttribute(value) {\n return typeof value === 'string' ? value : undefined;\n}\nfunction getNumberAttribute(value) {\n return typeof value === 'number' ? value : undefined;\n}\n\n//# sourceMappingURL=request-insights.js.map","import { LogSpanAllowList, NextVanillaSpanAllowlist } from './constants';\nimport { isThenable } from '../../../shared/lib/is-thenable';\nconst NEXT_OTEL_PERFORMANCE_PREFIX = process.env.NEXT_OTEL_PERFORMANCE_PREFIX;\nconst LOCAL_SPAN_RECORDER_KEY = Symbol.for('@next/local-span-recorder');\nlet api;\nfunction getLocalSpanRecorder() {\n if (process.env.__NEXT_DEV_SERVER) {\n return globalThis[LOCAL_SPAN_RECORDER_KEY];\n } else {\n return undefined;\n }\n}\n// we want to allow users to use their own version of @opentelemetry/api if they\n// want to, so we try to require it first, and if it fails we fall back to the\n// version that is bundled with Next.js\n// this is because @opentelemetry/api has to be synced with the version of\n// @opentelemetry/tracing that is used, and we don't want to force users to use\n// the version that is bundled with Next.js.\n// the API is ~stable, so this should be fine\nif (process.env.NEXT_RUNTIME === 'edge') {\n api = require('@opentelemetry/api');\n} else {\n try {\n api = require('@opentelemetry/api');\n } catch (err) {\n api = require('next/dist/compiled/@opentelemetry/api');\n }\n}\nconst { context, propagation, trace, SpanStatusCode, SpanKind, ROOT_CONTEXT } = api;\nexport class BubbledError extends Error {\n constructor(bubble, result){\n super(), this.bubble = bubble, this.result = result;\n }\n}\nexport function isBubbledError(error) {\n if (typeof error !== 'object' || error === null) return false;\n return error instanceof BubbledError;\n}\nconst closeSpanWithError = (span, error, endTime)=>{\n if (isBubbledError(error) && error.bubble) {\n span.setAttribute('next.bubble', true);\n } else {\n if (error) {\n span.recordException(error);\n span.setAttribute('error.type', error.name);\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error == null ? void 0 : error.message\n });\n }\n span.end(endTime);\n};\n/** we use this map to propagate attributes from nested spans to the top span */ const rootSpanAttributesStore = new Map();\nconst rootSpanIdKey = api.createContextKey('next.rootSpanId');\nlet lastSpanId = 0;\nconst getSpanId = ()=>lastSpanId++;\nconst clientTraceDataSetter = {\n set (carrier, key, value) {\n carrier.push({\n key,\n value\n });\n }\n};\nclass NextTracerImpl {\n /**\n * Returns an instance to the trace with configured name.\n * Since wrap / trace can be defined in any place prior to actual trace subscriber initialization,\n * This should be lazily evaluated.\n */ getTracerInstance() {\n return trace.getTracer('next.js', \"16.4.2\");\n }\n isOpenTelemetryEnabled() {\n var _tracerProvider_getDelegate_constructor, _tracerProvider_getDelegate;\n const activeSpan = trace.getSpan(context.active());\n if (activeSpan == null ? void 0 : activeSpan.isRecording()) {\n return true;\n }\n const tracerProvider = trace.getTracerProvider();\n if (!('getDelegate' in tracerProvider)) {\n return true;\n }\n return (tracerProvider.getDelegate == null ? void 0 : (_tracerProvider_getDelegate = tracerProvider.getDelegate.call(tracerProvider)) == null ? void 0 : (_tracerProvider_getDelegate_constructor = _tracerProvider_getDelegate.constructor) == null ? void 0 : _tracerProvider_getDelegate_constructor.name) !== 'NoopTracerProvider';\n }\n getContext() {\n return context;\n }\n getTracePropagationData() {\n const activeContext = context.active();\n const entries = [];\n propagation.inject(activeContext, entries, clientTraceDataSetter);\n return entries;\n }\n getActiveScopeSpan() {\n const localSpanRecorder = getLocalSpanRecorder();\n const activeLocalSpan = localSpanRecorder == null ? void 0 : localSpanRecorder.getActiveLocalSpan();\n if (activeLocalSpan && (localSpanRecorder == null ? void 0 : localSpanRecorder.isOpenTelemetryIsolatedSpan(activeLocalSpan))) {\n return activeLocalSpan;\n }\n const activeSpan = trace.getSpan(context.active());\n if (activeSpan || !process.env.__NEXT_DEV_SERVER) {\n return activeSpan;\n }\n return activeLocalSpan;\n }\n /**\n * Run `fn` with the active span cleared, so spans created inside become new\n * roots (or parent to incoming propagated context). Used for in-process\n * Node.js middleware so its span is a sibling of the request span, matching\n * edge middleware which runs in a detached sandbox.\n */ runWithDetachedContext(fn) {\n if (!NEXT_OTEL_PERFORMANCE_PREFIX && !this.isOpenTelemetryEnabled()) {\n return fn();\n }\n return context.with(ROOT_CONTEXT, fn);\n }\n withPropagatedContext(carrier, fn, getter, force = false) {\n const activeContext = context.active();\n if (!NEXT_OTEL_PERFORMANCE_PREFIX && !this.isOpenTelemetryEnabled() && !trace.getSpanContext(activeContext)) {\n return fn();\n }\n if (force) {\n const remoteContext = propagation.extract(ROOT_CONTEXT, carrier, getter);\n if (trace.getSpanContext(remoteContext)) {\n return context.with(remoteContext, fn);\n }\n // Preserve the current active span while still merging any extracted\n // baggage/context values from the carrier.\n const mergedContext = propagation.extract(activeContext, carrier, getter);\n return context.with(mergedContext, fn);\n }\n if (trace.getSpanContext(activeContext)) {\n // Active span is already set, too late to propagate.\n return fn();\n }\n const remoteContext = propagation.extract(activeContext, carrier, getter);\n return context.with(remoteContext, fn);\n }\n trace(...args) {\n const [type, fnOrOptions, fnOrEmpty] = args;\n const tracingEnabled = Boolean(NEXT_OTEL_PERFORMANCE_PREFIX) || this.isOpenTelemetryEnabled();\n const localSpanRecorder = getLocalSpanRecorder();\n const localSpanRecordingEnabled = (localSpanRecorder == null ? void 0 : localSpanRecorder.isLocalSpanRecordingEnabled()) ?? false;\n if (!tracingEnabled && !localSpanRecordingEnabled) {\n return typeof fnOrOptions === 'function' ? fnOrOptions() : fnOrEmpty();\n }\n // coerce options form overload\n const { fn, options } = typeof fnOrOptions === 'function' ? {\n fn: fnOrOptions,\n options: {}\n } : {\n fn: fnOrEmpty,\n options: {\n ...fnOrOptions\n }\n };\n const spanName = options.spanName ?? type;\n const parentSpan = options.parentSpan ?? this.getActiveScopeSpan();\n const isolatedParentSpan = parentSpan && (localSpanRecorder == null ? void 0 : localSpanRecorder.isOpenTelemetryIsolatedSpan(parentSpan)) ? parentSpan : undefined;\n const shouldDelegateSpan = !isolatedParentSpan && (NextVanillaSpanAllowlist.has(type) || process.env.NEXT_OTEL_VERBOSE === '1');\n const shouldTraceSpan = shouldDelegateSpan || ((localSpanRecorder == null ? void 0 : localSpanRecorder.isRequestInsightsEnabled()) ?? false);\n if (!shouldTraceSpan || options.hideSpan) {\n return fn();\n }\n // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it.\n let spanContext = isolatedParentSpan ? context.active() : this.getSpanContext(parentSpan);\n if (!spanContext) {\n spanContext = (context == null ? void 0 : context.active()) ?? ROOT_CONTEXT;\n }\n // Check if there's already a root span in the store for this trace\n // We are intentionally not checking whether there is an active context\n // from outside of nextjs to ensure that we can provide the same level\n // of telemetry when using a custom server\n const existingRootSpanId = spanContext.getValue(rootSpanIdKey);\n const isRootSpan = typeof existingRootSpanId !== 'number' || !rootSpanAttributesStore.has(existingRootSpanId);\n const spanId = getSpanId();\n options.attributes = {\n 'next.span_category': 'nextjs',\n 'next.span_name': spanName,\n 'next.span_type': type,\n ...options.attributes\n };\n return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.runWithActiveSpan(spanName, options, spanContext, tracingEnabled && shouldDelegateSpan, localSpanRecordingEnabled, isolatedParentSpan, (span)=>{\n let startTime;\n if (NEXT_OTEL_PERFORMANCE_PREFIX && type && LogSpanAllowList.has(type)) {\n startTime = 'performance' in globalThis && 'measure' in performance ? globalThis.performance.now() : undefined;\n }\n let cleanedUp = false;\n const onCleanup = ()=>{\n if (cleanedUp) return;\n cleanedUp = true;\n rootSpanAttributesStore.delete(spanId);\n if (startTime) {\n performance.measure(`${NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split('.').pop() || '').replace(/[A-Z]/g, (match)=>'-' + match.toLowerCase())}`, {\n start: startTime,\n end: performance.now()\n });\n }\n };\n if (isRootSpan) {\n rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {})));\n }\n if (fn.length > 1) {\n try {\n return fn(span, (err)=>{\n if (err) {\n closeSpanWithError(span, err, options.endTime);\n } else {\n span.end(options.endTime);\n }\n });\n } catch (err) {\n closeSpanWithError(span, err, options.endTime);\n throw err;\n } finally{\n onCleanup();\n }\n }\n try {\n const result = fn(span);\n if (isThenable(result)) {\n // If there's error make sure it throws\n return result.then((res)=>{\n span.end(options.endTime);\n // Need to pass down the promise result,\n // it could be react stream response with error { error, stream }\n return res;\n }).catch((err)=>{\n closeSpanWithError(span, err, options.endTime);\n throw err;\n }).finally(onCleanup);\n } else {\n span.end(options.endTime);\n onCleanup();\n }\n return result;\n } catch (err) {\n closeSpanWithError(span, err, options.endTime);\n onCleanup();\n throw err;\n }\n }));\n }\n runWithActiveSpan(spanName, options, parentContext, tracingEnabled, localSpanRecordingEnabled, isolatedParentSpan, fn) {\n if (tracingEnabled) {\n return this.getTracerInstance().startActiveSpan(spanName, options, (span)=>fn(localSpanRecordingEnabled ? this.createLocalRecordingSpan(spanName, options, parentContext, span, isolatedParentSpan) : span));\n }\n const span = this.createLocalRecordingSpan(spanName, options, parentContext, undefined, isolatedParentSpan);\n const localSpanRecorder = getLocalSpanRecorder();\n return localSpanRecorder.withLocalSpan(span, ()=>localSpanRecorder.isOpenTelemetryIsolatedSpan(span) ? fn(span) : context.with(trace.setSpan(context.active(), span), fn, undefined, span));\n }\n createLocalRecordingSpan(name, options, parentContext, delegateSpan, isolatedParentSpan) {\n const parentSpanContext = (isolatedParentSpan == null ? void 0 : isolatedParentSpan.spanContext()) ?? trace.getSpanContext(parentContext);\n const delegateSpanContext = delegateSpan == null ? void 0 : delegateSpan.spanContext();\n return getLocalSpanRecorder().createLocalSpan({\n name,\n attributes: options.attributes,\n links: options.links,\n startTime: options.startTime,\n delegateSpan,\n traceId: (delegateSpanContext == null ? void 0 : delegateSpanContext.traceId) ?? (parentSpanContext == null ? void 0 : parentSpanContext.traceId),\n spanId: delegateSpanContext == null ? void 0 : delegateSpanContext.spanId,\n parentSpanId: parentSpanContext == null ? void 0 : parentSpanContext.spanId,\n isolateOpenTelemetry: isolatedParentSpan !== undefined\n });\n }\n wrap(...args) {\n const tracer = this;\n const [name, options, fn] = args.length === 3 ? args : [\n args[0],\n {},\n args[1]\n ];\n if (!NextVanillaSpanAllowlist.has(name) && process.env.NEXT_OTEL_VERBOSE !== '1' && !process.env.__NEXT_DEV_SERVER) {\n return fn;\n }\n return function() {\n let optionsObj = options;\n if (typeof optionsObj === 'function' && typeof fn === 'function') {\n optionsObj = optionsObj.apply(this, arguments);\n }\n const lastArgId = arguments.length - 1;\n const cb = arguments[lastArgId];\n if (typeof cb === 'function') {\n const scopeBoundCb = tracer.getContext().bind(context.active(), cb);\n return tracer.trace(name, optionsObj, (_span, done)=>{\n arguments[lastArgId] = function(err) {\n done == null ? void 0 : done(err);\n return scopeBoundCb.apply(this, arguments);\n };\n return fn.apply(this, arguments);\n });\n } else {\n return tracer.trace(name, optionsObj, ()=>fn.apply(this, arguments));\n }\n };\n }\n startSpan(...args) {\n const [type, passedOptions] = args;\n const options = passedOptions ? {\n ...passedOptions,\n attributes: {\n 'next.span_category': 'nextjs',\n ...passedOptions.attributes\n }\n } : {\n attributes: {\n 'next.span_category': 'nextjs'\n }\n };\n const localSpanRecorder = getLocalSpanRecorder();\n const parentSpan = options.parentSpan ?? this.getActiveScopeSpan();\n const isolatedParentSpan = parentSpan && (localSpanRecorder == null ? void 0 : localSpanRecorder.isOpenTelemetryIsolatedSpan(parentSpan)) ? parentSpan : undefined;\n const parentContext = (isolatedParentSpan ? undefined : this.getSpanContext(parentSpan)) ?? context.active();\n const localSpanRecordingEnabled = (localSpanRecorder == null ? void 0 : localSpanRecorder.isLocalSpanRecordingEnabled()) ?? false;\n if (!localSpanRecordingEnabled) {\n return this.getTracerInstance().startSpan(type, options, parentContext);\n }\n const delegateSpan = !isolatedParentSpan && this.isOpenTelemetryEnabled() ? this.getTracerInstance().startSpan(type, options, parentContext) : undefined;\n return this.createLocalRecordingSpan(type, options, parentContext, delegateSpan, isolatedParentSpan);\n }\n getSpanContext(parentSpan) {\n const spanContext = parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined;\n return spanContext;\n }\n getRootSpanAttributes() {\n const spanId = context.active().getValue(rootSpanIdKey);\n return rootSpanAttributesStore.get(spanId);\n }\n setRootSpanAttribute(key, value) {\n const spanId = context.active().getValue(rootSpanIdKey);\n const attributes = rootSpanAttributesStore.get(spanId);\n if (attributes && !attributes.has(key)) {\n attributes.set(key, value);\n }\n if (process.env.__NEXT_DEV_SERVER) {\n var _getLocalSpanRecorder;\n const localSpan = (_getLocalSpanRecorder = getLocalSpanRecorder()) == null ? void 0 : _getLocalSpanRecorder.getActiveLocalSpan();\n if (localSpan) {\n localSpan.setAttribute(key, value);\n }\n }\n }\n withSpan(span, fn) {\n const recorder = getLocalSpanRecorder();\n if (recorder == null ? void 0 : recorder.isLocalRecordingSpan(span)) {\n return recorder.withLocalSpan(span, ()=>recorder.isOpenTelemetryIsolatedSpan(span) ? fn() : context.with(trace.setSpan(context.active(), span), fn));\n }\n return context.with(trace.setSpan(context.active(), span), fn);\n }\n}\nconst getTracer = (()=>{\n const tracer = new NextTracerImpl();\n return ()=>tracer;\n})();\nexport { getTracer, SpanStatusCode, SpanKind };\n\n//# sourceMappingURL=tracer.js.map","import { bold, green, magenta, red, yellow, white } from '../../lib/picocolors';\nimport { LRUCache } from '../../server/lib/lru-cache';\nexport const prefixes = {\n wait: white(bold('○')),\n error: red(bold('⨯')),\n warn: yellow(bold('⚠')),\n ready: '▲',\n info: white(bold(' ')),\n event: green(bold('✓')),\n trace: magenta(bold('»'))\n};\nconst LOGGING_METHOD = {\n log: 'log',\n warn: 'warn',\n error: 'error'\n};\nfunction prefixedLog(prefixType, ...message) {\n if ((message[0] === '' || message[0] === undefined) && message.length === 1) {\n message.shift();\n }\n const consoleMethod = prefixType in LOGGING_METHOD ? LOGGING_METHOD[prefixType] : 'log';\n const prefix = prefixes[prefixType];\n // If there's no message, don't print the prefix but a new line\n if (message.length === 0) {\n console[consoleMethod]('');\n } else {\n // Ensure if there's ANSI escape codes it's concatenated into one string.\n // Chrome DevTool can only handle color if it's in one string.\n if (message.length === 1 && typeof message[0] === 'string') {\n console[consoleMethod](prefix + ' ' + message[0]);\n } else {\n console[consoleMethod](prefix, ...message);\n }\n }\n}\nexport function bootstrap(message) {\n console.log(message);\n}\nexport function wait(...message) {\n prefixedLog('wait', ...message);\n}\nexport function error(...message) {\n prefixedLog('error', ...message);\n}\nexport function warn(...message) {\n prefixedLog('warn', ...message);\n}\nexport function ready(...message) {\n prefixedLog('ready', ...message);\n}\nexport function info(...message) {\n prefixedLog('info', ...message);\n}\nexport function event(...message) {\n prefixedLog('event', ...message);\n}\nexport function trace(...message) {\n prefixedLog('trace', ...message);\n}\nconst warnOnceCache = new LRUCache(10000, (value)=>value.length);\nexport function warnOnce(...message) {\n const key = message.join(' ');\n if (!warnOnceCache.has(key)) {\n warnOnceCache.set(key, key);\n warn(...message);\n }\n}\nconst errorOnceCache = new LRUCache(10000, (value)=>value.length);\nexport function errorOnce(...message) {\n const key = message.join(' ');\n if (!errorOnceCache.has(key)) {\n errorOnceCache.set(key, key);\n error(...message);\n }\n}\n\n//# sourceMappingURL=log.js.map","import { RedirectStatusCode } from '../../client/components/redirect-status-code';\nimport { getCookieParser } from '../api-utils/get-cookie-parser';\nexport class BaseNextRequest {\n constructor(method, url, body){\n this.method = method;\n this.url = url;\n this.body = body;\n }\n // Utils implemented using the abstract methods above\n get cookies() {\n if (this._cookies) return this._cookies;\n return this._cookies = getCookieParser(this.headers)();\n }\n}\nexport class BaseNextResponse {\n constructor(destination){\n this.destination = destination;\n }\n // Utils implemented using the abstract methods above\n redirect(destination, statusCode) {\n this.setHeader('Location', destination);\n this.statusCode = statusCode;\n // Since IE11 doesn't support the 308 header add backwards\n // compatibility using refresh header\n if (statusCode === RedirectStatusCode.PermanentRedirect) {\n this.setHeader('Refresh', `0;url=${destination}`);\n }\n return this;\n }\n}\n\n//# sourceMappingURL=index.js.map","import { InvariantError } from '../../shared/lib/invariant-error';\nimport { createPromiseWithResolvers } from '../../shared/lib/promise-with-resolvers';\nexport var RenderStage = /*#__PURE__*/ function(RenderStage) {\n RenderStage[RenderStage[\"Before\"] = 1] = \"Before\";\n //\n RenderStage[RenderStage[\"ShellStatic\"] = 10] = \"ShellStatic\";\n /** Discrimination-only stage: `prefetch()` in validation renders (static) */ RenderStage[RenderStage[\"PrefetchStatic_prefetchApi\"] = 11] = \"PrefetchStatic_prefetchApi\";\n RenderStage[RenderStage[\"PrefetchStatic\"] = 12] = \"PrefetchStatic\";\n RenderStage[RenderStage[\"NavigationStatic\"] = 13] = \"NavigationStatic\";\n RenderStage[RenderStage[\"Static\"] = 14] = \"Static\";\n //\n RenderStage[RenderStage[\"ShellRuntime\"] = 20] = \"ShellRuntime\";\n /** Discrimination-only stage: `prefetch()` in validation renders (runtime) */ RenderStage[RenderStage[\"PrefetchRuntime_prefetchApi\"] = 21] = \"PrefetchRuntime_prefetchApi\";\n RenderStage[RenderStage[\"PrefetchRuntime\"] = 22] = \"PrefetchRuntime\";\n RenderStage[RenderStage[\"NavigationRuntime\"] = 23] = \"NavigationRuntime\";\n //\n RenderStage[RenderStage[\"Dynamic\"] = 30] = \"Dynamic\";\n RenderStage[RenderStage[\"Abandoned\"] = 40] = \"Abandoned\";\n return RenderStage;\n}({});\nexport const RENDER_STAGE_ADVANCE_ORDER = [\n 10,\n 11,\n 12,\n 13,\n 14,\n 20,\n 21,\n 22,\n 23,\n 30\n];\nexport function getNextStage(stage) {\n return RENDER_STAGE_ADVANCE_ORDER[RENDER_STAGE_ADVANCE_ORDER.indexOf(stage) + 1];\n}\nexport function isAdvanceableRenderStage(stage) {\n return 1 < stage && stage <= 30;\n}\nexport var SyncIOMode = /*#__PURE__*/ function(SyncIOMode) {\n /** Sync IO does not error in any stage. */ SyncIOMode[SyncIOMode[\"Untracked\"] = 1] = \"Untracked\";\n /** Before `partialPrefetching`: Sync IO errors in static stages, and is allowed otherwise. */ SyncIOMode[SyncIOMode[\"AllowedInRuntimeOrDynamic\"] = 2] = \"AllowedInRuntimeOrDynamic\";\n /** After `partialPrefetching`: Sync IO errors in all stages other than dynamic. */ SyncIOMode[SyncIOMode[\"AllowedInDynamic\"] = 3] = \"AllowedInDynamic\";\n return SyncIOMode;\n}({});\nexport class StagedRenderingController {\n constructor({ abortSignal, abandonController, syncIO, finalStage }){\n this.currentStage = 1;\n this.syncInterruptReason = null;\n this.triggers = createAdvanceableStageTriggers();\n this.abortSignal = abortSignal;\n this.abandonController = abandonController;\n this.syncIOMode = syncIO;\n this.finalStage = finalStage;\n if (abortSignal) {\n abortSignal.addEventListener('abort', ()=>{\n // Reject all stage promises that haven't already been resolved.\n // `cancelStageTrigger` is a noop if the trigger already resolved.\n const { reason } = abortSignal;\n for (const trigger of Object.values(this.triggers)){\n cancelStageTrigger(trigger, reason);\n }\n }, {\n once: true\n });\n }\n if (abandonController) {\n abandonController.signal.addEventListener('abort', ()=>{\n this.abandonRender();\n }, {\n once: true\n });\n }\n }\n /**\n * Schedules a callback that will execute synchronously when the controller is advanced\n * to `stage` or past it, before any promises for that stage are resolved.\n * If the controller is already past `stage`, the callback is executed immediately.\n * */ onStage(stage, callback) {\n addSyncTriggerListener(this.triggers[stage], callback);\n }\n shouldTrackSyncInterrupt() {\n const { syncIOMode, currentStage } = this;\n switch(syncIOMode){\n case 1:\n {\n return false;\n }\n case 2:\n {\n // Legacy: track Sync IO only in static stages.\n // Do not track it before the render, or in runtime/dynamic stages.\n return currentStage > 1 && currentStage <= 14;\n }\n case 3:\n {\n // Track sync IO in all cacheable stages.\n // This means all stages except:\n // - before the render\n // - in the dynamic stage\n return currentStage > 1 && currentStage < 30;\n }\n }\n }\n /** Note: only call this if `shouldTrackSyncInterrupt()` returned true */ syncInterruptCurrentStageWithReason(reason) {\n const { currentStage } = this;\n if (currentStage === 1 || currentStage === 30 || currentStage === 40) {\n // Not interruptible. Defensive noop.\n return;\n }\n // If Sync IO occurs during an abandonable render, we trigger the abandon.\n // The abandon listener will call abandonRender which advances through\n // stages to let caches fill before marking as Abandoned.\n if (this.abandonController) {\n this.abandonController.abort();\n return;\n }\n if (this.abortSignal) {\n // If this is an abortable render, we capture the interruption reason and stop advancing.\n // We don't release any more promises.\n // The caller is expected to abort the signal.\n this.syncInterruptReason = reason;\n this.currentStage = 40;\n return;\n }\n // If we're in a non-abandonable & non-abortable render,\n // we need to advance to the Dynamic stage and capture the interruption reason.\n // (in dev, this will be the restarted render)\n this.syncInterruptReason = reason;\n this.advanceStage(30);\n }\n getSyncInterruptReason() {\n return this.syncInterruptReason;\n }\n getStageEndTime(stage) {\n return this.triggers[getNextStage(stage)].triggeredAt ?? Infinity;\n }\n abandonRender() {\n // In staged rendering, only the initial render is abandonable.\n // We can abandon the initial render if\n // 1. We notice a cache miss, and need to wait for caches to fill\n // 2. A sync IO error occurs, and the render should be interrupted\n // (this might be a lazy intitialization of a module,\n // so we still want to restart in this case and see if it still occurs)\n // In either case, we'll be doing another render after this one,\n // so we only want to unblock the next stage, not Dynamic, because\n // unblocking the dynamic stage would likely lead to wasted (uncached) IO.\n const { currentStage } = this;\n if (currentStage === 1) {\n throw new InvariantError(\"A render that hasn't started yet cannot be abandoned\");\n }\n if (currentStage === 30 || currentStage === 40) {\n // We shouldn't ever trigger an abandon in these. Defensive noop.\n return;\n }\n // Resolve all stages after the current one, up to runtime (excluding dynamic)\n const nextStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(currentStage) + 1;\n const dynamicStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(30);\n for(let i = nextStageIx; i < dynamicStageIx; i++){\n this.resolveStage(RENDER_STAGE_ADVANCE_ORDER[i]);\n }\n this.currentStage = 40;\n }\n advanceStage(targetStage) {\n if (this.finalStage !== null && targetStage > this.finalStage) {\n throw new InvariantError(`Attempted to advance to stage ${RenderStage[targetStage]} but the render is limited to ${RenderStage[this.finalStage]}`);\n }\n const { currentStage } = this;\n if (currentStage === 30 || currentStage === 40) {\n // Terminal stages, nowhere left to advance.\n return;\n }\n // If we're already at the target stage or beyond, do nothing.\n if (targetStage <= currentStage) {\n return;\n }\n this.currentStage = targetStage;\n // Resolve all stages between the current stage and the target.\n const nextStageIx = currentStage === 1 ? 0 : RENDER_STAGE_ADVANCE_ORDER.indexOf(currentStage) + 1;\n const targetStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(targetStage);\n for(let i = nextStageIx; i <= targetStageIx; i++){\n this.resolveStage(RENDER_STAGE_ADVANCE_ORDER[i]);\n }\n }\n resolveStage(stage) {\n fireStageTrigger(this.triggers[stage]);\n }\n getStagePromise(stage) {\n return this.triggers[stage].promise;\n }\n waitForStage(stage) {\n return this.getStagePromise(stage);\n }\n delayUntilStage(stage, displayName, resolvedValue) {\n const stagePromise = this.getStagePromise(stage);\n const promise = process.env.NODE_ENV === 'development' ? makeDevtoolsIOPromiseFromIOTrigger(stagePromise, displayName, resolvedValue) : stagePromise.then(()=>resolvedValue);\n // Analogously to `makeDynamicHangingPromise`, we might reject this promise if the signal is invoked.\n // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it).\n // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning.\n if (this.abortSignal) {\n promise.catch(ignoreReject);\n }\n return promise;\n }\n}\nfunction createAdvanceableStageTriggers() {\n const triggers = {};\n for (const stage of RENDER_STAGE_ADVANCE_ORDER){\n triggers[stage] = createStageTrigger();\n }\n return triggers;\n}\nfunction ignoreReject() {}\n// TODO(restart-on-cache-miss): the layering of `delayUntilStage`,\n// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise`\n// is confusing, we should clean it up.\nfunction makeDevtoolsIOPromiseFromIOTrigger(ioTrigger, displayName, resolvedValue) {\n // If we create a `new Promise` and give it a displayName\n // (with no userspace code above us in the stack)\n // React Devtools will use it as the IO cause when determining \"suspended by\".\n // In particular, it should shadow any inner IO that resolved/rejected the promise\n // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage)\n const promise = new Promise((resolve, reject)=>{\n ioTrigger.then(resolve.bind(null, resolvedValue), reject);\n });\n if (displayName !== undefined) {\n // @ts-expect-error\n promise.displayName = displayName;\n }\n return promise;\n}\nfunction addSyncTriggerListener(trigger, listener) {\n if (trigger.state === 'pending') {\n trigger._listeners.push(listener);\n } else {\n listener();\n }\n}\nfunction createStageTrigger() {\n const { promise, resolve, reject } = createPromiseWithResolvers();\n return {\n state: 'pending',\n triggeredAt: null,\n promise,\n _listeners: [],\n _resolvePromise: resolve,\n _rejectPromise: reject\n };\n}\nfunction fireStageTrigger(trigger) {\n if (trigger.state !== 'pending') {\n return;\n }\n trigger.state = 'triggered';\n trigger.triggeredAt = performance.now() + performance.timeOrigin;\n try {\n const { _listeners: listeners } = trigger;\n for(let i = 0; i < listeners.length; i++){\n listeners[i]();\n }\n listeners.length = 0;\n } finally{\n trigger._resolvePromise();\n }\n}\nfunction cancelStageTrigger(trigger, reason) {\n if (trigger.state !== 'pending') {\n return;\n }\n trigger.state = 'cancelled';\n // we didn't trigger, so don't save `triggeredAt`.\n // We're not gonna fire the listeners, we may as well free them.\n trigger._listeners.length = 0;\n // Suppress unhandled rejection warnings for promises that no one is awaiting.\n trigger.promise.catch(ignoreReject);\n trigger._rejectPromise(reason);\n}\n\n//# sourceMappingURL=staged-rendering.js.map","/**\n * UnderscoreNormalizer replaces all instances of %5F with _.\n */ export class UnderscoreNormalizer {\n normalize(pathname) {\n return pathname.replace(/%5F/g, '_');\n }\n}\n\n//# sourceMappingURL=underscore-normalizer.js.map","import { SYMBOL_CLEARED_COOKIES } from '../api-utils';\nimport { NEXT_REQUEST_META } from '../request-meta';\nimport { BaseNextRequest, BaseNextResponse } from './index';\nlet prop;\nexport class NodeNextRequest extends BaseNextRequest {\n static #_ = prop = _NEXT_REQUEST_META = NEXT_REQUEST_META;\n constructor(_req){\n var _this__req;\n super(_req.method.toUpperCase(), _req.url, _req), this._req = _req, this.headers = this._req.headers, this.fetchMetrics = (_this__req = this._req) == null ? void 0 : _this__req.fetchMetrics, this[_NEXT_REQUEST_META] = this._req[NEXT_REQUEST_META] || {}, this.streaming = false;\n }\n get originalRequest() {\n // Need to mimic these changes to the original req object for places where we use it:\n // render.tsx, api/ssg requests\n this._req[NEXT_REQUEST_META] = this[NEXT_REQUEST_META];\n this._req.url = this.url;\n this._req.cookies = this.cookies;\n return this._req;\n }\n set originalRequest(value) {\n this._req = value;\n }\n /**\n * Returns the request body as a Web Readable Stream. The body here can only\n * be read once as the body will start flowing as soon as the data handler\n * is attached.\n *\n * @internal\n */ stream() {\n if (this.streaming) {\n throw new Error('Invariant: NodeNextRequest.stream() can only be called once');\n }\n this.streaming = true;\n return new ReadableStream({\n start: (controller)=>{\n this._req.on('data', (chunk)=>{\n controller.enqueue(new Uint8Array(chunk));\n });\n this._req.on('end', ()=>{\n controller.close();\n });\n this._req.on('error', (err)=>{\n controller.error(err);\n });\n }\n });\n }\n}\nexport class NodeNextResponse extends BaseNextResponse {\n get originalResponse() {\n if (SYMBOL_CLEARED_COOKIES in this) {\n this._res[SYMBOL_CLEARED_COOKIES] = this[SYMBOL_CLEARED_COOKIES];\n }\n return this._res;\n }\n constructor(_res){\n super(_res), this._res = _res, this.textBody = undefined;\n }\n get sent() {\n return this._res.finished || this._res.headersSent;\n }\n get statusCode() {\n return this._res.statusCode;\n }\n set statusCode(value) {\n this._res.statusCode = value;\n }\n get statusMessage() {\n return this._res.statusMessage;\n }\n set statusMessage(value) {\n this._res.statusMessage = value;\n }\n setHeader(name, value) {\n this._res.setHeader(name, value);\n return this;\n }\n removeHeader(name) {\n this._res.removeHeader(name);\n return this;\n }\n getHeaderValues(name) {\n const values = this._res.getHeader(name);\n if (values === undefined) return undefined;\n return (Array.isArray(values) ? values : [\n values\n ]).map((value)=>value.toString());\n }\n hasHeader(name) {\n return this._res.hasHeader(name);\n }\n getHeader(name) {\n const values = this.getHeaderValues(name);\n return Array.isArray(values) ? values.join(',') : undefined;\n }\n getHeaders() {\n return this._res.getHeaders();\n }\n appendHeader(name, value) {\n const currentValues = this.getHeaderValues(name) ?? [];\n if (!currentValues.includes(value)) {\n this._res.setHeader(name, [\n ...currentValues,\n value\n ]);\n }\n return this;\n }\n body(value) {\n this.textBody = value;\n return this;\n }\n send() {\n this._res.end(this.textBody);\n }\n onClose(callback) {\n this.originalResponse.on('close', callback);\n }\n}\nvar _NEXT_REQUEST_META;\n\n//# sourceMappingURL=node.js.map","import { chainStreams, streamFromBuffer, streamFromString, streamToString } from './stream-utils/node-web-streams-helper';\nimport { isAbortError, pipeToNodeResponse, pipeNodeReadableToNodeResponse } from './pipe-readable';\nimport { InvariantError } from '../shared/lib/invariant-error';\nfunction isNodeReadable(value) {\n return value !== null && typeof value === 'object' && typeof value.pipe === 'function' && typeof value.on === 'function' && !(value instanceof ReadableStream);\n}\nexport default class RenderResult {\n static #_ = /**\n * A render result that represents an empty response. This is used to\n * represent a response that was not found or was already sent.\n */ this.EMPTY = new RenderResult(null, {\n metadata: {},\n contentType: null\n });\n /**\n * Creates a new RenderResult instance from a static response.\n *\n * @param value the static response value\n * @param contentType the content type of the response\n * @returns a new RenderResult instance\n */ static fromStatic(value, contentType) {\n return new RenderResult(value, {\n metadata: {},\n contentType\n });\n }\n constructor(response, { contentType, waitUntil, metadata }){\n this.response = response;\n this.contentType = contentType;\n this.metadata = metadata;\n this.waitUntil = waitUntil;\n }\n assignMetadata(metadata) {\n Object.assign(this.metadata, metadata);\n }\n /**\n * Returns true if the response is null. It can be null if the response was\n * not found or was already sent.\n */ get isNull() {\n return this.response === null;\n }\n /**\n * Returns false if the response is a string. It can be a string if the page\n * was prerendered. If it's not, then it was generated dynamically.\n */ get isDynamic() {\n return typeof this.response !== 'string';\n }\n toUnchunkedString(stream = false) {\n if (this.response === null) {\n // If the response is null, return an empty string. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return '';\n }\n if (typeof this.response !== 'string') {\n if (!stream) {\n throw new InvariantError('dynamic responses cannot be unchunked. This is a bug in Next.js');\n }\n return streamToString(this.readable);\n }\n return this.response;\n }\n /**\n * Returns a readable stream of the response.\n */ get readable() {\n if (this.response === null) {\n // If the response is null, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return new ReadableStream({\n start (controller) {\n controller.close();\n }\n });\n }\n if (typeof this.response === 'string') {\n return streamFromString(this.response);\n }\n if (Buffer.isBuffer(this.response)) {\n return streamFromBuffer(this.response);\n }\n // If the response is an array of streams, then chain them together.\n if (Array.isArray(this.response)) {\n return chainStreams(...this.response);\n }\n if (isNodeReadable(this.response)) {\n if (process.env.NEXT_RUNTIME === 'edge') {\n throw new InvariantError('Node.js Readable cannot be converted to a web stream in the edge runtime');\n } else {\n let Readable;\n if (process.env.TURBOPACK) {\n Readable = require('node:stream').Readable;\n } else {\n Readable = __non_webpack_require__('node:stream').Readable;\n }\n return Readable.toWeb(this.response);\n }\n }\n return this.response;\n }\n /**\n * Coerces the response to an array of streams. This will convert the response\n * to an array of streams if it is not already one.\n *\n * @returns An array of streams\n */ coerce() {\n if (this.response === null) {\n // If the response is null, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n return [];\n }\n if (typeof this.response === 'string') {\n return [\n streamFromString(this.response)\n ];\n } else if (Array.isArray(this.response)) {\n return this.response;\n } else if (Buffer.isBuffer(this.response)) {\n return [\n streamFromBuffer(this.response)\n ];\n } else if (isNodeReadable(this.response)) {\n if (process.env.NEXT_RUNTIME === 'edge') {\n throw new InvariantError('Node.js Readable cannot be converted to a web stream in the edge runtime');\n } else {\n let Readable;\n if (process.env.TURBOPACK) {\n Readable = require('node:stream').Readable;\n } else {\n Readable = __non_webpack_require__('node:stream').Readable;\n }\n return [\n Readable.toWeb(this.response)\n ];\n }\n } else {\n return [\n this.response\n ];\n }\n }\n /**\n * Pipes the response through a transform stream. This converts the response\n * to a single readable stream (chaining if needed) and pipes it through the\n * provided transform.\n *\n * @param transform The transform stream to pipe through\n */ pipeThrough(transform) {\n this.response = this.readable.pipeThrough(transform);\n }\n /**\n * Unshifts a new stream to the response. This will convert the response to an\n * array of streams if it is not already one and will add the new stream to\n * the start of the array. When this response is piped, all of the streams\n * will be piped one after the other.\n *\n * @param readable The new stream to unshift\n */ unshift(readable) {\n // Coerce the response to an array of streams.\n this.response = this.coerce();\n // Add the new stream to the start of the array.\n this.response.unshift(readable);\n }\n /**\n * Chains a new stream to the response. This will convert the response to an\n * array of streams if it is not already one and will add the new stream to\n * the end. When this response is piped, all of the streams will be piped\n * one after the other.\n *\n * @param readable The new stream to chain\n */ push(readable) {\n // Coerce the response to an array of streams.\n this.response = this.coerce();\n // Add the new stream to the end of the array.\n this.response.push(readable);\n }\n /**\n * Pipes the response to a writable stream. This will close/cancel the\n * writable stream if an error is encountered. If this doesn't throw, then\n * the writable stream will be closed or aborted.\n *\n * @param writable Writable stream to pipe the response to\n */ async pipeTo(writable) {\n try {\n await this.readable.pipeTo(writable, {\n // We want to close the writable stream ourselves so that we can wait\n // for the waitUntil promise to resolve before closing it. If an error\n // is encountered, we'll abort the writable stream if we swallowed the\n // error.\n preventClose: true\n });\n // If there is a waitUntil promise, wait for it to resolve before\n // closing the writable stream.\n if (this.waitUntil) await this.waitUntil;\n // Close the writable stream.\n await writable.close();\n } catch (err) {\n // If this is an abort error, we should abort the writable stream (as we\n // took ownership of it when we started piping). We don't need to re-throw\n // because we handled the error.\n if (isAbortError(err)) {\n // Abort the writable stream if an error is encountered.\n await writable.abort(err);\n return;\n }\n // We're not aborting the writer here as when this method throws it's not\n // clear as to how so the caller should assume it's their responsibility\n // to clean up the writer.\n throw err;\n }\n }\n /**\n * Pipes the response to a node response. This will close/cancel the node\n * response if an error is encountered.\n *\n * @param res\n */ async pipeToNodeResponse(res) {\n if (this.response !== null && typeof this.response !== 'string' && !Buffer.isBuffer(this.response) && !Array.isArray(this.response) && isNodeReadable(this.response)) {\n await pipeNodeReadableToNodeResponse(this.response, res, this.waitUntil, this.metadata.clientComponentLoadTracker);\n return;\n }\n await pipeToNodeResponse(this.readable, res, this.waitUntil, this.metadata.clientComponentLoadTracker);\n }\n}\n\n//# sourceMappingURL=render-result.js.map","import { normalizeLocalePath } from '../../i18n/normalize-locale-path';\nimport { removePathPrefix } from './remove-path-prefix';\nimport { pathHasPrefix } from './path-has-prefix';\nexport function getNextPathnameInfo(pathname, options) {\n const { basePath, i18n, trailingSlash } = options.nextConfig ?? {};\n const info = {\n pathname,\n trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash\n };\n if (basePath && pathHasPrefix(info.pathname, basePath)) {\n info.pathname = removePathPrefix(info.pathname, basePath);\n info.basePath = basePath;\n }\n let pathnameNoDataPrefix = info.pathname;\n if (info.pathname.startsWith('/_next/data/') && info.pathname.endsWith('.json')) {\n const paths = info.pathname.replace(/^\\/_next\\/data\\//, '').replace(/\\.json$/, '').split('/');\n const buildId = paths[0];\n info.buildId = buildId;\n pathnameNoDataPrefix = paths[1] !== 'index' ? `/${paths.slice(1).join('/')}` : '/';\n // update pathname with normalized if enabled although\n // we use normalized to populate locale info still\n if (options.parseData === true) {\n info.pathname = pathnameNoDataPrefix;\n }\n }\n // If provided, use the locale route normalizer to detect the locale instead\n // of the function below.\n if (i18n) {\n let result = options.i18nProvider ? options.i18nProvider.analyze(info.pathname) : normalizeLocalePath(info.pathname, i18n.locales);\n info.locale = result.detectedLocale;\n info.pathname = result.pathname ?? info.pathname;\n if (!result.detectedLocale && info.buildId) {\n result = options.i18nProvider ? options.i18nProvider.analyze(pathnameNoDataPrefix) : normalizeLocalePath(pathnameNoDataPrefix, i18n.locales);\n if (result.detectedLocale) {\n info.locale = result.detectedLocale;\n }\n }\n }\n return info;\n}\n\n//# sourceMappingURL=get-next-pathname-info.js.map","/**\n * Parse cookies from the `headers` of request\n * @param req request object\n */ export function getCookieParser(headers) {\n return function parseCookie() {\n const { cookie } = headers;\n if (!cookie) {\n return {};\n }\n const { parse: parseCookieFn } = require('next/dist/compiled/cookie');\n return parseCookieFn(Array.isArray(cookie) ? cookie.join('; ') : cookie);\n };\n}\n\n//# sourceMappingURL=get-cookie-parser.js.map","/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */ export function ensureLeadingSlash(path) {\n return path.startsWith('/') ? path : `/${path}`;\n}\n\n//# sourceMappingURL=ensure-leading-slash.js.map","/**\n * Normalizers combines many normalizers into a single normalizer interface that\n * will normalize the inputted pathname with each normalizer in order.\n */ export class Normalizers {\n constructor(normalizers = []){\n this.normalizers = normalizers;\n }\n push(normalizer) {\n this.normalizers.push(normalizer);\n }\n normalize(pathname) {\n return this.normalizers.reduce((normalized, normalizer)=>normalizer.normalize(normalized), pathname);\n }\n}\n\n//# sourceMappingURL=normalizers.js.map","import { InvariantError } from '../shared/lib/invariant-error';\nimport { createPromiseWithResolvers } from '../shared/lib/promise-with-resolvers';\nimport { EnsureStaticLevel } from './app-render/segment-config/ensure-static';\nimport { RenderStage } from './app-render/staged-rendering';\nimport { workAsyncStorage } from './app-render/work-async-storage.external';\nimport { workUnitAsyncStorage } from './app-render/work-unit-async-storage.external';\nimport { getServerReact, getClientReact } from './runtime-reacts.external';\nexport function isHangingPromiseRejectionError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === HANGING_PROMISE_REJECTION;\n}\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION';\nclass HangingPromiseRejectionError extends Error {\n constructor(route, expression){\n super(`During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`), this.route = route, this.expression = expression, this.digest = HANGING_PROMISE_REJECTION;\n }\n}\nconst CLIENT_HOOK_DYNAMIC = 'CLIENT_HOOK_DYNAMIC';\nexport class ClientHookDynamicError extends Error {\n constructor(route, expression){\n super(`Route \"${route}\": Next.js encountered URL data \\`${expression}\\` in a Client Component outside of \\`<Suspense>\\`.\\n\\n` + `This blocks prerendering because the value is only available at runtime.\\n\\n` + `Ways to fix this:\\n` + ` - [stream] Wrap the component in \\`<Suspense fallback={...}>\\` so the hook value streams in after prerendering\\n` + ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` + `Learn more: https://nextjs.org/docs/messages/blocking-prerender-client-hook`), this.digest = CLIENT_HOOK_DYNAMIC;\n }\n}\nexport function isClientHookDynamicError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === CLIENT_HOOK_DYNAMIC;\n}\nconst abortListenersBySignal = new WeakMap();\n/**\n * Constructs a promise that never resolves, standing in for *dynamic* data:\n * data that is only available during a real dynamic request and hangs in\n * every kind of prerender — `io()`, `connection()`, uncached `fetch()`.\n *\n * This is primarily useful for cacheComponents where we use promise\n * resolution timing to determine which parts of a render can be included in a\n * prerender.\n *\n * Records nothing on the prerender store: the promise's holes are only ever\n * filled by a real dynamic request, so a runtime prefetch response would have\n * the same holes as the static one. If the data source would resolve during a\n * runtime prerender, use `makeRuntimeHangingPromise` instead.\n */ export function makeDynamicHangingPromise(signal, route, expression) {\n return makeHangingPromiseWithError(signal, new HangingPromiseRejectionError(route, expression));\n}\nexport function makeUntrackedHangingPromise(signal, route, expression) {\n return makeHangingPromiseWithError(signal, new HangingPromiseRejectionError(route, expression));\n}\n/**\n * Constructs a promise that never resolves, standing in for session data\n * (which a runtime shell can access).\n * Examples: cookies, headers\n *\n * Awaiting one of these during a static prerender records on the prerender\n * store that a runtime shell would produce more content than the static\n * static shell, which the segment prefetch encoding uses\n * to tell the client whether a runtime request could be skipped.\n *\n * When unsure whether data is dynamic or runtime, prefer this method — the\n * cost of over-recording is a redundant runtime prefetch request; the cost of\n * under-recording is a permanently missing one.\n *\n * For fallback-param data — data a concrete (ISR-upgraded) prerender would\n * resolve — use `makeFallbackParamsHangingPromise` instead, so the access\n * is recorded with the right effect on the static-prefetch hint.\n */ export function makeSessionDataHangingPromise(signal, route, expression, workUnitStore) {\n const promise = makeHangingPromiseWithError(signal, new HangingPromiseRejectionError(route, expression));\n return trackPromiseUsed(promise, trackSessionDataAccessed.bind(null, workUnitStore, expression));\n}\n/**\n * Constructs a promise that never resolves, standing in for URL data,\n * which can be accessed in a runtime prefetch (but not a runtime shell).\n * Examples: fallback params, searchParams\n *\n * Awaiting one of these during a static prerender records on the prerender\n * store that a runtime prefetch would produce more content than the static\n * response, which the segment prefetch encoding uses\n * to tell the client whether a runtime prefetch request could be skipped.\n *\n * When unsure whether data is dynamic or runtime, prefer this method — the\n * cost of over-recording is a redundant runtime prefetch request; the cost of\n * under-recording is a permanently missing one.\n *\n * `workUnitStore` may be null ONLY when the caller tracks the access itself.\n * Such a caller MUST call `trackURLDataAccessed` from every path that\n * observes the promise (e.g. the proxy traps for `then`/`status`),\n * against the work unit store active at access time.\n *\n * For fallback-param data — data a concrete (ISR-upgraded) prerender would\n * resolve — use `makeFallbackParamsHangingPromise` instead, so the access\n * is recorded with the right effect on the static-prefetch hint.\n */ export function makeURLDataHangingPromise(signal, route, expression, workUnitStore) {\n const promise = makeHangingPromiseWithError(signal, new HangingPromiseRejectionError(route, expression));\n if (workUnitStore === null) {\n return promise;\n }\n return trackPromiseUsed(promise, trackURLDataAccessed.bind(null, workUnitStore, expression));\n}\n/**\n * Creates a promise that stands in for a result that will either be session data\n * or URL data, but we don't know which.\n */ export function makeUnknownRuntimeDataHangingPromise(signal, route, expression, workUnitStore) {\n // We don't know if this is session or URL data, i.e. if it should affect the shell\n // or only the prefetch. Track it conservatively as affecting both.\n return makeSessionDataHangingPromise(signal, route, expression, workUnitStore);\n}\n/**\n * Constructs a promise that never resolves, standing in for data that is only\n * accessible in the prefetch, but not in the shell, e.g. `prefetch()`.\n * This usage does *not* indicate that a runtime request is needed,\n * only that the data is not available in a shell.\n *\n * @internal\n */ export function makePrefetchHangingPromise(signal, route, expression) {\n return makeUntrackedHangingPromise(signal, route, expression);\n}\n/**\n * Variant of `makeRuntimeHangingPromise` for *fallback-param* data: fallback\n * route params and values derived solely from them (`params`, `rootParams`,\n * `pathname` during a fallback prerender). Like every runtime data access,\n * awaiting it records the access on the prerender store's response-level flag,\n * but its effect on the build-time static-prefetch hint differs — on a\n * fallback-upgradeable route the access is transient (a concrete prerender\n * resolves it), so it leaves the hint intact. See `trackFallbackParamsAccessed`.\n *\n * As with `makeRuntimeHangingPromise`, `workUnitStore` may be null ONLY when\n * the caller tracks the access itself by calling `trackFallbackParamsAccessed`\n * from every path that observes the promise.\n */ export function makeFallbackParamsHangingPromise(signal, route, expression, workUnitStore) {\n const promise = makeHangingPromiseWithError(signal, new HangingPromiseRejectionError(route, expression));\n if (workUnitStore === null) {\n return promise;\n }\n return trackPromiseUsed(promise, trackFallbackParamsAccessed.bind(null, workUnitStore, expression));\n}\nexport function createPrerenderDataTracking() {\n return {\n runtimeDataAccessed: createPromiseWithResolvers(),\n shouldAttemptStaticShell: true,\n shouldAttemptStaticPrefetch: true\n };\n}\nexport function finishPrerenderDataTracking(prerenderDataTracking) {\n // If a runtime data access already resolved this promise, this is a no-op.\n prerenderDataTracking.runtimeDataAccessed.resolve(false);\n}\n/**\n * Records on a static prerender store that the render accessed a data source\n * which would have resolved in a runtime shell (or runtime prefetch).\n * No-op for all other store types.\n *\n * Prefer `makeRuntimeHangingPromise`. Use this function only when implementing\n * similar tracking and that one is not enough.\n */ function trackSessionDataAccessed(workUnitStore, expression) {\n trackRuntimeDataAccessed(workUnitStore, 1, expression);\n}\n/**\n * Records on a static prerender store that the render accessed a data source\n * which would have resolved in a runtime prefetch (but NOT in a runtime shell)\n * No-op for all other store types.\n *\n * Prefer `makeRuntimeHangingPromise`. Use this function only when implementing\n * similar tracking and that one is not enough.\n *\n * For fallback-param data, use `trackFallbackParamsAccessed` instead. When\n * unsure, this is the conservative choice.\n */ export function trackURLDataAccessed(workUnitStore, expression) {\n trackRuntimeDataAccessed(workUnitStore, 2, expression);\n}\n/**\n * Fallback-param variant of `trackRuntimeDataAccessed`, for accesses of\n * fallback route params and values derived solely from them. It records the\n * response-level flag all the same, but only clears the build-time\n * static-prefetch hint when the route is not fallback-upgradeable — on an\n * upgradeable route the access is transient, since ISR later produces a\n * concrete prerender that resolves it.\n */ export function trackFallbackParamsAccessed(workUnitStore, expression) {\n trackRuntimeDataAccessed(workUnitStore, 3, expression);\n}\nfunction trackRuntimeDataAccessed(workUnitStore, dataKind, expression) {\n switch(workUnitStore.type){\n case 'prerender':\n {\n const { prerenderDataTracking, stagedRendering } = workUnitStore;\n if (!prerenderDataTracking || !stagedRendering) {\n return;\n }\n const { currentStage } = stagedRendering;\n if (currentStage === RenderStage.Before) {\n console.error(new InvariantError('Unexpected trackRuntimeDataAccessed in the Before stage.'));\n return;\n }\n if (currentStage >= RenderStage.NavigationStatic) {\n // Ignore any accesses that happen after `navigation()` resolves.\n // The purpose of this tracking is to judge whether a runtime prefetch\n // would give us a more complete result than a static one.\n // But `navigation()` wouldn't have resolved in a runtime prefetch,\n // so e.g. `await navigation(); await cookies()` wouldn't have more content\n // in those, and we shouldn't count it.\n return;\n }\n const ensureStaticLevel = workUnitStore.ensureStaticLevel ?? EnsureStaticLevel.None;\n // NOTE: In general, we keep hints in sync with `needsRuntimeRequest`, but they\n // don't have to always match. The client re-uses hints for the entire route,\n // while `needsRuntimeRequest` can vary across individual prerendered param values\n // (e.g. if cookies are accessed depending on a param value).\n // Hints can also become outdated if a route only starts using runtime data\n // after a revalidation, so we have to expect this and be resilient to it.\n // Also see the upgradeable fallback params case below, which deliberately\n // puts them out of sync.\n switch(dataKind){\n case 1:\n {\n // Potentially deopt both the shell and the prefetch,\n // because if the shell accessed runtime data, so does the prefetch.\n // However, if we're already past the shell stage, the shell is not affected.\n // (which makes e.g. `await prefetch(); await cookies()` only affect the prefetch)\n let firstAffectedStage = null;\n if (currentStage <= RenderStage.ShellStatic && // Only track if we're not forcing the shell to be static.\n ensureStaticLevel < EnsureStaticLevel.Shell) {\n prerenderDataTracking.shouldAttemptStaticShell = false;\n firstAffectedStage ??= RenderStage.ShellStatic;\n logRuntimeDeopt == null ? void 0 : logRuntimeDeopt(expression, 'shell');\n }\n if (currentStage <= RenderStage.PrefetchStatic && // Only track if we're not forcing the prefetch to be static.\n ensureStaticLevel < EnsureStaticLevel.Prefetch) {\n prerenderDataTracking.shouldAttemptStaticPrefetch = false;\n // NOTE: if the shell is affected, don't override it.\n firstAffectedStage ??= RenderStage.PrefetchStatic;\n logRuntimeDeopt == null ? void 0 : logRuntimeDeopt(expression, 'prefetch');\n }\n if (firstAffectedStage !== null) {\n markRuntimeDataAccessWhenStageReached(prerenderDataTracking, stagedRendering, firstAffectedStage);\n }\n break;\n }\n case 3:\n {\n if (workUnitStore.isFallbackUpgradeable) {\n // An fallback-param access is transient when the route is\n // fallback-upgradeable (i.e. ISR later produces the concrete prerender a\n // static prefetch would hit) so it does not indicate the need for a runtime\n // request and thus does not affect the static hints.\n //\n // If runtime prefetches are not disallowed by `ensureStatic`, then we still\n // set `runtimeDataAccessed` (while keeping the hints static). This means that\n // if the concrete prerender isn't ready yet and we served the fallback, then\n // the client knows it can use a *runtime* prefetch for speculative links --\n // a runtime prefetch can provide the same content (or more) as the concrete\n // prerender would.\n if (ensureStaticLevel < EnsureStaticLevel.Prefetch) {\n markRuntimeDataAccessWhenStageReached(prerenderDataTracking, stagedRendering, // `params` are URL data, so they only affect the prefetch\n RenderStage.PrefetchStatic);\n logRuntimeUpgradeableFallback == null ? void 0 : logRuntimeUpgradeableFallback();\n }\n break;\n }\n // not an upgradeable fallback param access, so we treat it as URL data.\n // intentional fallthrough\n }\n case 2:\n {\n // Only deopt the prefetch, not the shell, which cannot access URL data anyway.\n if (currentStage <= RenderStage.PrefetchStatic && ensureStaticLevel < EnsureStaticLevel.Prefetch) {\n prerenderDataTracking.shouldAttemptStaticPrefetch = false;\n logRuntimeDeopt == null ? void 0 : logRuntimeDeopt(expression, 'prefetch');\n markRuntimeDataAccessWhenStageReached(prerenderDataTracking, stagedRendering, RenderStage.PrefetchStatic);\n }\n break;\n }\n }\n break;\n }\n case 'prerender-client':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'validation-client':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n}\n/**\n * Tracks a runtime data access on the `runtimeDataAccessed` promise,\n * but with a delay until `targetStage`.\n *\n * When we encounter a URL data access like `await params`, we need to mark the\n * *prefetch* as needing runtime data, but the *shell* should remain unaffected\n * (because it cannot access params anyway).\n *\n * However, the shell and the prefetch share one `runtimeDataAccessed` promise,\n * and it needs to be accurately rewindable by the client\n * In other words, we need to make sure that it reads as `false` when rewound\n * to a shell, but as `true` in the final response (the prefetch).\n *\n * This means that if the `await params` is encountered during the shell stage, we\n * cannot resolve `runtimeDataAccessed` immediately.\n * Instead, we delay the resolution until the PrefetchStatic stage, so the promise\n * will remain unresolved when rewound to the shell stage (which reads as `false`).\n */ function markRuntimeDataAccessWhenStageReached(prerenderDataTracking, stageController, targetStage) {\n const { runtimeDataAccessed } = prerenderDataTracking;\n // NOTE: If we're already in or past the target stage, we can avoid allocating a closure,\n // because `onStage` would've executed the callback immediately anyway.\n if (stageController.currentStage >= targetStage) {\n runtimeDataAccessed.resolve(true);\n } else {\n stageController.onStage(targetStage, runtimeDataAccessed.resolve.bind(null, true));\n }\n}\nconst logRuntimeDeopt = process.env.NEXT_PRIVATE_DEBUG_RUNTIME_DATA ? (expression, kind)=>{\n const { route } = workAsyncStorage.getStore();\n console.log(`Route '${route}': deopting to a runtime ${kind} because it used ${expression}`);\n} : undefined;\nconst logRuntimeUpgradeableFallback = process.env.NEXT_PRIVATE_DEBUG_RUNTIME_DATA ? ()=>{\n const { route } = workAsyncStorage.getStore();\n console.log(`Route '${route}': marking upgradeable fallback as runtime prefetchable`);\n} : undefined;\n/**\n * Signals that we cannot recover both a runtime shell and a static (PPR) shell\n * from the same render. Use this whenever the stage of a promise varies on\n * `RequestStore.needsRuntimeShell`.\n * */ export function trackIncompatibleShellContent(workUnitStore, reason) {\n const { stagedRendering } = workUnitStore;\n if (!stagedRendering) {\n return;\n }\n // TODO(app-shells): optimize this to only consider stages that are relevant for validation.\n // We should only track incompatible content when it can affect them.\n // For now, we simply exclude everything that happens in the dynamic stage.\n // (Note that we also need to account for cache misses that move things to a\n // different stage -- those should also preemptively set `hasIncompatibleShellContent`\n // because there's a chance that a render with warm caches would set it)\n const { currentStage } = stagedRendering;\n if (currentStage === RenderStage.Dynamic || currentStage === RenderStage.Abandoned) {\n return;\n }\n if (process.env.NEXT_PRIVATE_DEBUG_VALIDATION) {\n const workStore = workAsyncStorage.getStore();\n console.log(`Route ${workStore.route}: Incompatible shell content: ${reason}`);\n }\n workUnitStore.hasIncompatibleShellContent = true;\n}\nexport function makeClientHookHangingPromise(signal, error) {\n return makeHangingPromiseWithError(signal, error);\n}\nfunction makeHangingPromiseWithError(signal, error) {\n if (signal.aborted) {\n return Promise.reject(error);\n } else {\n const hangingPromise = new Promise((_, reject)=>{\n const boundRejection = reject.bind(null, error);\n let currentListeners = abortListenersBySignal.get(signal);\n if (currentListeners) {\n currentListeners.push(boundRejection);\n } else {\n const listeners = [\n boundRejection\n ];\n abortListenersBySignal.set(signal, listeners);\n signal.addEventListener('abort', ()=>{\n for(let i = 0; i < listeners.length; i++){\n listeners[i]();\n }\n }, {\n once: true\n });\n }\n });\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject);\n return hangingPromise;\n }\n}\nfunction ignoreReject() {}\n/**\n * Creates a promise that will be triggered when another promise resolves.\n * It will not emit unhandled rejections, which is important if the trigger\n * is a promise that might itself get rejected (e.g. when a prerender/render\n * are aborted due to sync IO)\n */ export function makePromiseFromTrigger(trigger, value) {\n const promise = trigger.then(()=>value);\n promise.catch(ignoreReject);\n return promise;\n}\nexport function makeDevtoolsIOAwarePromise(underlying, requestStore, stage) {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(stage, undefined, underlying);\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise((resolve)=>{\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(()=>{\n resolve(underlying);\n }, 0);\n });\n}\n/**\n * Invokes `onUse` whenever `then()/catch()/finally()` are called on the promise\n * or when the promise is awaited. */ export function trackPromiseUsed(promise, onUse) {\n // We can instrument `.then()/.catch()/.finally()` in one go by using a Promise subclass\n // that implements a custom `.then()`, because `catch` and `finally` delegate to it.\n //\n // Alternative implementation ideas that were tried and rejected:\n //\n // 1. Patching the methods directly via `promise.then = (..args) => { ... }`:\n // doesn't work, because Node does not call the monkeypatched methods for native `await`:\n // > Native Promise [...]: The promise is directly used and awaited natively, without calling `then()`.\n // > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await#description\n //\n // 2. Wrapping in a proxy that returns a custom `then/catch/finally`:\n // breaks async stacks in React's IO tracking (stack becomes `Promise.then`)\n return TrackedPromise.from(promise, onUse);\n}\nclass TrackedPromise extends Promise {\n #onUse;\n // We don't need derived promises to also be a TrackedPromise.\n // We only care about the first level of `.then()`.\n static get [Symbol.species]() {\n return Promise;\n }\n static from(promise, onUse) {\n // Whenever the promise we're tracking resolves/rejects, we should follow.\n const tracked = new TrackedPromise(promise.then.bind(promise));\n tracked.#onUse = onUse;\n // Hanging promises catch rejections when created. Tracked promises are generally derived\n // from promises that may hang & reject, so we need to do the same.\n // However, we have to bypass the tracking we do in `TrackedPromise.then`.\n // (we're using `then` directly, because `catch` ends up delegating `TrackedPromise.then`)\n Promise.prototype.then.call(tracked, undefined, ignoreReject);\n return tracked;\n }\n then(onFulfilled, onRejected) {\n const onUse = this.#onUse;\n if (onUse) {\n try {\n onUse();\n } catch (err) {\n // We don't want to break the method even if our tracking errored.\n console.error(err);\n }\n }\n return Promise.prototype.then.call(this, onFulfilled, onRejected);\n }\n constructor(...args){\n super(...args), this.#onUse = null;\n }\n}\nexport const RENDER_STAGES_BY_DATA_KIND = {\n sessionData: RenderStage.ShellRuntime,\n /**\n * Statically-prerenderable URL data, like static `params`.\n * It may need to be pushed to a runtime stage in a runtime prerender,\n * but it's semantically distinct from `runtimeUrlData` like `searchParams`,\n * which is always excluded from static prerenders.\n * */ staticUrlData: {\n /**\n * From that app's point of view, `prefetch()` is semantically the same as\n * `staticUrlData`, because it does not resolve in a shell but resolves in\n * a prefetch (even a static one).\n * We handle it separately to provide a specialized error in validation renders.\n */ prefetchApi: {\n static: RenderStage.PrefetchStatic_prefetchApi,\n runtime: RenderStage.PrefetchRuntime_prefetchApi\n },\n static: RenderStage.PrefetchStatic,\n runtime: RenderStage.PrefetchRuntime\n },\n /**\n * URL data that is never statically-prerenderable, like static `searchParams`.\n * */ runtimeUrlData: RenderStage.PrefetchRuntime\n};\nexport function applyOwnerStack(error) {\n if (process.env.NODE_ENV !== 'production') {\n var _getClientReact_captureOwnerStack, _getClientReact, _getServerReact_captureOwnerStack, _getServerReact;\n let ownerStack;\n const workUnitStore = workUnitAsyncStorage.getStore();\n // captureOwnerStack() returns the owner stack for the current React\n // rendering context. Inside a cache scope this only includes the inner\n // component tree. The outer owner stack (captured before entering the\n // cache boundary in use-cache-wrapper.ts) is stored on the cache store.\n // We concatenate both to get the full component tree.\n const innerOwnerStack = ((_getClientReact = getClientReact()) == null ? void 0 : (_getClientReact_captureOwnerStack = _getClientReact.captureOwnerStack) == null ? void 0 : _getClientReact_captureOwnerStack.call(_getClientReact)) ?? ((_getServerReact = getServerReact()) == null ? void 0 : (_getServerReact_captureOwnerStack = _getServerReact.captureOwnerStack) == null ? void 0 : _getServerReact_captureOwnerStack.call(_getServerReact));\n switch(workUnitStore == null ? void 0 : workUnitStore.type){\n case 'cache':\n case 'private-cache':\n ownerStack = (innerOwnerStack || '') + (workUnitStore.outerOwnerStack || '') || undefined;\n break;\n case 'unstable-cache':\n case 'request':\n case 'prerender':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'prerender-client':\n case 'validation-client':\n case 'build-time-generator':\n case undefined:\n ownerStack = innerOwnerStack;\n break;\n default:\n workUnitStore;\n }\n if (ownerStack) {\n let stack = ownerStack;\n if (error.stack) {\n const frames = [];\n for (const frame of error.stack.split('\\n').slice(1)){\n if (frame.includes('react_stack_bottom_frame')) {\n break;\n }\n frames.push(frame);\n }\n stack = '\\n' + frames.join('\\n') + stack;\n }\n error.stack = error.name + ': ' + error.message + stack;\n }\n }\n return error;\n}\n\n//# sourceMappingURL=dynamic-rendering-utils.js.map","import { detectDomainLocale } from '../../shared/lib/i18n/detect-domain-locale';\nimport { formatNextPathnameInfo } from '../../shared/lib/router/utils/format-next-pathname-info';\nimport { getHostname } from '../../shared/lib/get-hostname';\nimport { getNextPathnameInfo } from '../../shared/lib/router/utils/get-next-pathname-info';\nconst REGEX_LOCALHOST_HOSTNAME = /^(?:127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\\[::1\\]|localhost)$/;\nfunction parseURL(url, base) {\n const parsed = new URL(String(url), base && String(base));\n if (REGEX_LOCALHOST_HOSTNAME.test(parsed.hostname)) {\n parsed.hostname = 'localhost';\n }\n return parsed;\n}\nconst Internal = Symbol('NextURLInternal');\nexport class NextURL {\n constructor(input, baseOrOpts, opts){\n let base;\n let options;\n if (typeof baseOrOpts === 'object' && 'pathname' in baseOrOpts || typeof baseOrOpts === 'string') {\n base = baseOrOpts;\n options = opts || {};\n } else {\n options = opts || baseOrOpts || {};\n }\n this[Internal] = {\n url: parseURL(input, base ?? options.base),\n options: options,\n basePath: ''\n };\n this.analyze();\n }\n analyze() {\n var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig, _this_Internal_domainLocale, _this_Internal_options_nextConfig_i18n1, _this_Internal_options_nextConfig1;\n const info = getNextPathnameInfo(this[Internal].url.pathname, {\n nextConfig: this[Internal].options.nextConfig,\n parseData: !process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE,\n i18nProvider: this[Internal].options.i18nProvider\n });\n const hostname = getHostname(this[Internal].url, this[Internal].options.headers);\n this[Internal].domainLocale = this[Internal].options.i18nProvider ? this[Internal].options.i18nProvider.detectDomainLocale(hostname) : detectDomainLocale((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.domains, hostname);\n const defaultLocale = ((_this_Internal_domainLocale = this[Internal].domainLocale) == null ? void 0 : _this_Internal_domainLocale.defaultLocale) || ((_this_Internal_options_nextConfig1 = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n1 = _this_Internal_options_nextConfig1.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n1.defaultLocale);\n this[Internal].url.pathname = info.pathname;\n this[Internal].defaultLocale = defaultLocale;\n this[Internal].basePath = info.basePath ?? '';\n this[Internal].buildId = info.buildId;\n this[Internal].locale = info.locale ?? defaultLocale;\n this[Internal].trailingSlash = info.trailingSlash;\n }\n formatPathname() {\n return formatNextPathnameInfo({\n basePath: this[Internal].basePath,\n buildId: this[Internal].buildId,\n defaultLocale: !this[Internal].options.forceLocale ? this[Internal].defaultLocale : undefined,\n locale: this[Internal].locale,\n pathname: this[Internal].url.pathname,\n trailingSlash: this[Internal].trailingSlash\n });\n }\n formatSearch() {\n return this[Internal].url.search;\n }\n get buildId() {\n return this[Internal].buildId;\n }\n set buildId(buildId) {\n this[Internal].buildId = buildId;\n }\n get locale() {\n return this[Internal].locale ?? '';\n }\n set locale(locale) {\n var _this_Internal_options_nextConfig_i18n, _this_Internal_options_nextConfig;\n if (!this[Internal].locale || !((_this_Internal_options_nextConfig = this[Internal].options.nextConfig) == null ? void 0 : (_this_Internal_options_nextConfig_i18n = _this_Internal_options_nextConfig.i18n) == null ? void 0 : _this_Internal_options_nextConfig_i18n.locales.includes(locale))) {\n throw new TypeError(`The NextURL configuration includes no locale \"${locale}\"`);\n }\n this[Internal].locale = locale;\n }\n get defaultLocale() {\n return this[Internal].defaultLocale;\n }\n get domainLocale() {\n return this[Internal].domainLocale;\n }\n get searchParams() {\n return this[Internal].url.searchParams;\n }\n get host() {\n return this[Internal].url.host;\n }\n set host(value) {\n this[Internal].url.host = value;\n }\n get hostname() {\n return this[Internal].url.hostname;\n }\n set hostname(value) {\n this[Internal].url.hostname = value;\n }\n get port() {\n return this[Internal].url.port;\n }\n set port(value) {\n this[Internal].url.port = value;\n }\n get protocol() {\n return this[Internal].url.protocol;\n }\n set protocol(value) {\n this[Internal].url.protocol = value;\n }\n get href() {\n const pathname = this.formatPathname();\n const search = this.formatSearch();\n return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`;\n }\n set href(url) {\n this[Internal].url = parseURL(url);\n this.analyze();\n }\n get origin() {\n return this[Internal].url.origin;\n }\n get pathname() {\n return this[Internal].url.pathname;\n }\n set pathname(value) {\n this[Internal].url.pathname = value;\n }\n get hash() {\n return this[Internal].url.hash;\n }\n set hash(value) {\n this[Internal].url.hash = value;\n }\n get search() {\n return this[Internal].url.search;\n }\n set search(value) {\n this[Internal].url.search = value;\n }\n get password() {\n return this[Internal].url.password;\n }\n set password(value) {\n this[Internal].url.password = value;\n }\n get username() {\n return this[Internal].url.username;\n }\n set username(value) {\n this[Internal].url.username = value;\n }\n get basePath() {\n return this[Internal].basePath;\n }\n set basePath(value) {\n this[Internal].basePath = value.startsWith('/') ? value : `/${value}`;\n }\n toString() {\n return this.href;\n }\n toJSON() {\n return this.href;\n }\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n href: this.href,\n origin: this.origin,\n protocol: this.protocol,\n username: this.username,\n password: this.password,\n host: this.host,\n hostname: this.hostname,\n port: this.port,\n pathname: this.pathname,\n search: this.search,\n searchParams: this.searchParams,\n hash: this.hash\n };\n }\n clone() {\n return new NextURL(String(this), this[Internal].options);\n }\n}\n\n//# sourceMappingURL=next-url.js.map","import { CachedRouteKind, IncrementalCacheKind } from './types';\nimport RenderResult from '../render-result';\nimport { RouteKind } from '../route-kind';\nimport { HTML_CONTENT_TYPE_HEADER } from '../../lib/constants';\nexport async function fromResponseCacheEntry(cacheEntry) {\n var _cacheEntry_value, _cacheEntry_value1;\n return {\n ...cacheEntry,\n value: ((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) === CachedRouteKind.PAGES ? {\n kind: CachedRouteKind.PAGES,\n html: await cacheEntry.value.html.toUnchunkedString(true),\n pageData: cacheEntry.value.pageData,\n headers: cacheEntry.value.headers,\n status: cacheEntry.value.status\n } : ((_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind) === CachedRouteKind.APP_PAGE ? {\n kind: CachedRouteKind.APP_PAGE,\n html: await cacheEntry.value.html.toUnchunkedString(true),\n postponed: cacheEntry.value.postponed,\n rscData: cacheEntry.value.rscData,\n headers: cacheEntry.value.headers,\n status: cacheEntry.value.status,\n segmentData: cacheEntry.value.segmentData\n } : cacheEntry.value\n };\n}\nexport async function toResponseCacheEntry(response) {\n var _response_value, _response_value1;\n if (!response) return null;\n return {\n isMiss: response.isMiss,\n isStale: response.isStale,\n cacheControl: response.cacheControl,\n isFallback: response.isFallback,\n value: ((_response_value = response.value) == null ? void 0 : _response_value.kind) === CachedRouteKind.PAGES ? {\n kind: CachedRouteKind.PAGES,\n html: RenderResult.fromStatic(response.value.html, HTML_CONTENT_TYPE_HEADER),\n pageData: response.value.pageData,\n headers: response.value.headers,\n status: response.value.status\n } : ((_response_value1 = response.value) == null ? void 0 : _response_value1.kind) === CachedRouteKind.APP_PAGE ? {\n kind: CachedRouteKind.APP_PAGE,\n html: RenderResult.fromStatic(response.value.html, HTML_CONTENT_TYPE_HEADER),\n rscData: response.value.rscData,\n headers: response.value.headers,\n status: response.value.status,\n postponed: response.value.postponed,\n segmentData: response.value.segmentData\n } : response.value\n };\n}\nexport function routeKindToIncrementalCacheKind(routeKind) {\n switch(routeKind){\n case RouteKind.PAGES:\n return IncrementalCacheKind.PAGES;\n case RouteKind.APP_PAGE:\n return IncrementalCacheKind.APP_PAGE;\n case RouteKind.IMAGE:\n return IncrementalCacheKind.IMAGE;\n case RouteKind.APP_ROUTE:\n return IncrementalCacheKind.APP_ROUTE;\n case RouteKind.PAGES_API:\n // Pages Router API routes are not cached in the incremental cache.\n throw new Error(`Unexpected route kind ${routeKind}`);\n default:\n return routeKind;\n }\n}\n\n//# sourceMappingURL=utils.js.map","import { getRequestMeta } from '../../../request-meta';\nimport { fromNodeOutgoingHttpHeaders } from '../../utils';\nimport { NextRequest } from '../request';\nimport { isNodeNextRequest, isWebNextRequest } from '../../../base-http/helpers';\nexport const ResponseAbortedName = 'ResponseAborted';\nexport class ResponseAborted extends Error {\n constructor(...args){\n super(...args), this.name = ResponseAbortedName;\n }\n}\n/**\n * Creates an AbortController tied to the closing of a ServerResponse (or other\n * appropriate Writable).\n *\n * If the `close` event is fired before the `finish` event, then we'll send the\n * `abort` signal.\n */ export function createAbortController(response) {\n const controller = new AbortController();\n // If `finish` fires first, then `res.end()` has been called and the close is\n // just us finishing the stream on our side. If `close` fires first, then we\n // know the client disconnected before we finished.\n response.once('close', ()=>{\n if (response.writableFinished) return;\n controller.abort(new ResponseAborted());\n });\n return controller;\n}\n/**\n * Creates an AbortSignal tied to the closing of a ServerResponse (or other\n * appropriate Writable).\n *\n * This cannot be done with the request (IncomingMessage or Readable) because\n * the `abort` event will not fire if to data has been fully read (because that\n * will \"close\" the readable stream and nothing fires after that).\n */ export function signalFromNodeResponse(response) {\n const { errored, destroyed } = response;\n if (errored || destroyed) {\n return AbortSignal.abort(errored ?? new ResponseAborted());\n }\n const { signal } = createAbortController(response);\n return signal;\n}\nexport class NextRequestAdapter {\n static fromBaseNextRequest(request, signal) {\n if (// The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n process.env.NEXT_RUNTIME === 'edge' && isWebNextRequest(request)) {\n return NextRequestAdapter.fromWebNextRequest(request);\n } else if (// The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n process.env.NEXT_RUNTIME !== 'edge' && isNodeNextRequest(request)) {\n return NextRequestAdapter.fromNodeNextRequest(request, signal);\n } else {\n throw new Error('Invariant: Unsupported NextRequest type');\n }\n }\n static fromNodeNextRequest(request, signal) {\n // HEAD and GET requests can not have a body.\n let body = null;\n if (request.method !== 'GET' && request.method !== 'HEAD' && request.body) {\n // @ts-expect-error - this is handled by undici, when streams/web land use it instead\n body = request.body;\n }\n let url;\n if (request.url.startsWith('http')) {\n url = new URL(request.url);\n } else {\n // Grab the full URL from the request metadata.\n const base = getRequestMeta(request, 'initURL');\n if (!base || !base.startsWith('http')) {\n // Because the URL construction relies on the fact that the URL provided\n // is absolute, we need to provide a base URL. We can't use the request\n // URL because it's relative, so we use a dummy URL instead.\n url = new URL(request.url, 'http://n');\n } else {\n url = new URL(request.url, base);\n }\n }\n return new NextRequest(url, {\n method: request.method,\n headers: fromNodeOutgoingHttpHeaders(request.headers),\n duplex: 'half',\n signal,\n // geo\n // ip\n // nextConfig\n // body can not be passed if request was aborted\n // or we get a Request body was disturbed error\n ...signal.aborted ? {} : {\n body\n }\n });\n }\n static fromWebNextRequest(request) {\n // HEAD and GET requests can not have a body.\n let body = null;\n if (request.method !== 'GET' && request.method !== 'HEAD') {\n body = request.body;\n }\n return new NextRequest(request.url, {\n method: request.method,\n headers: fromNodeOutgoingHttpHeaders(request.headers),\n duplex: 'half',\n signal: request.request.signal,\n // geo\n // ip\n // nextConfig\n // body can not be passed if request was aborted\n // or we get a Request body was disturbed error\n ...request.request.signal.aborted ? {} : {\n body\n }\n });\n }\n}\n\n//# sourceMappingURL=next-request.js.map","import { NextURL } from '../next-url';\nimport { toNodeOutgoingHttpHeaders, validateURL } from '../utils';\nimport { RemovedUAError, RemovedPageError } from '../error';\nimport { RequestCookies } from './cookies';\nexport const INTERNALS = Symbol('internal request');\n/**\n * This class extends the [Web `Request` API](https://developer.mozilla.org/docs/Web/API/Request) with additional convenience methods.\n *\n * Read more: [Next.js Docs: `NextRequest`](https://nextjs.org/docs/app/api-reference/functions/next-request)\n */ export class NextRequest extends Request {\n constructor(input, init = {}){\n const url = typeof input !== 'string' && 'url' in input ? input.url : String(input);\n validateURL(url);\n // node Request instance requires duplex option when a body\n // is present or it errors, we don't handle this for\n // Request being passed in since it would have already\n // errored if this wasn't configured\n if (process.env.NEXT_RUNTIME !== 'edge') {\n if (init.body && init.duplex !== 'half') {\n init.duplex = 'half';\n }\n }\n if (input instanceof Request) super(input, init);\n else super(url, init);\n const nextUrl = new NextURL(url, {\n headers: toNodeOutgoingHttpHeaders(this.headers),\n nextConfig: init.nextConfig\n });\n this[INTERNALS] = {\n cookies: new RequestCookies(this.headers),\n nextUrl,\n url: process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE ? url : nextUrl.toString()\n };\n }\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n cookies: this.cookies,\n nextUrl: this.nextUrl,\n url: this.url,\n // rest of props come from Request\n bodyUsed: this.bodyUsed,\n cache: this.cache,\n credentials: this.credentials,\n destination: this.destination,\n headers: Object.fromEntries(this.headers),\n integrity: this.integrity,\n keepalive: this.keepalive,\n method: this.method,\n mode: this.mode,\n redirect: this.redirect,\n referrer: this.referrer,\n referrerPolicy: this.referrerPolicy,\n signal: this.signal\n };\n }\n get cookies() {\n return this[INTERNALS].cookies;\n }\n get nextUrl() {\n return this[INTERNALS].nextUrl;\n }\n /**\n * @deprecated\n * `page` has been deprecated in favour of `URLPattern`.\n * Read more: https://nextjs.org/docs/messages/middleware-request-page\n */ get page() {\n throw new RemovedPageError();\n }\n /**\n * @deprecated\n * `ua` has been removed in favour of \\`userAgent\\` function.\n * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n */ get ua() {\n throw new RemovedUAError();\n }\n get url() {\n return this[INTERNALS].url;\n }\n}\n\n//# sourceMappingURL=request.js.map","import { HeadersAdapter } from '../web/spec-extension/adapters/headers';\nimport { PRERENDER_REVALIDATE_HEADER, PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER } from '../../lib/constants';\nimport { getTracer } from '../lib/trace/tracer';\nimport { NodeSpan } from '../lib/trace/constants';\nexport function wrapApiHandler(page, handler) {\n return (...args)=>{\n getTracer().setRootSpanAttribute('next.route', page);\n // Call API route method\n return getTracer().trace(NodeSpan.runHandler, {\n spanName: `executing api route (pages) ${page}`\n }, ()=>handler(...args));\n };\n}\n/**\n *\n * @param res response object\n * @param statusCode `HTTP` status code of response\n */ export function sendStatusCode(res, statusCode) {\n res.statusCode = statusCode;\n return res;\n}\n/**\n *\n * @param res response object\n * @param [statusOrUrl] `HTTP` status code of redirect\n * @param url URL of redirect\n */ export function redirect(res, statusOrUrl, url) {\n if (typeof statusOrUrl === 'string') {\n url = statusOrUrl;\n statusOrUrl = 307;\n }\n if (typeof statusOrUrl !== 'number' || typeof url !== 'string') {\n throw new Error(`Invalid redirect arguments. Please use a single argument URL, e.g. res.redirect('/destination') or use a status code and URL, e.g. res.redirect(307, '/destination').`);\n }\n res.writeHead(statusOrUrl, {\n Location: url\n });\n res.write(url);\n res.end();\n return res;\n}\nexport function checkIsOnDemandRevalidate(rawHeaders, previewProps) {\n // Headers is a plain object for Node.js, Headers object in Edge runtime\n if (typeof rawHeaders.get === 'function') {\n const headers = HeadersAdapter.from(rawHeaders);\n const previewModeId = headers.get(PRERENDER_REVALIDATE_HEADER);\n const isOnDemandRevalidate = previewModeId === previewProps.previewModeId;\n const revalidateOnlyGenerated = headers.has(PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER);\n return {\n isOnDemandRevalidate,\n revalidateOnlyGenerated\n };\n }\n const headers = rawHeaders;\n const previewModeId = headers[PRERENDER_REVALIDATE_HEADER];\n const isOnDemandRevalidate = previewModeId === previewProps.previewModeId;\n const revalidateOnlyGenerated = headers.hasOwnProperty(PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER);\n return {\n isOnDemandRevalidate,\n revalidateOnlyGenerated\n };\n}\nexport const COOKIE_NAME_PRERENDER_BYPASS = `__prerender_bypass`;\nexport const COOKIE_NAME_PRERENDER_DATA = `__next_preview_data`;\nexport const RESPONSE_LIMIT_DEFAULT = 4 * 1024 * 1024;\nexport const SYMBOL_PREVIEW_DATA = Symbol(COOKIE_NAME_PRERENDER_DATA);\nexport const SYMBOL_CLEARED_COOKIES = Symbol(COOKIE_NAME_PRERENDER_BYPASS);\nexport function clearPreviewData(res, options = {}) {\n if (SYMBOL_CLEARED_COOKIES in res) {\n return res;\n }\n const { serialize } = require('next/dist/compiled/cookie');\n const previous = res.getHeader('Set-Cookie');\n res.setHeader(`Set-Cookie`, [\n ...typeof previous === 'string' ? [\n previous\n ] : Array.isArray(previous) ? previous : [],\n serialize(COOKIE_NAME_PRERENDER_BYPASS, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...options.path !== undefined ? {\n path: options.path\n } : undefined\n }),\n serialize(COOKIE_NAME_PRERENDER_DATA, '', {\n // To delete a cookie, set `expires` to a date in the past:\n // https://tools.ietf.org/html/rfc6265#section-4.1.1\n // `Max-Age: 0` is not valid, thus ignored, and the cookie is persisted.\n expires: new Date(0),\n httpOnly: true,\n sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',\n secure: process.env.NODE_ENV !== 'development',\n path: '/',\n ...options.path !== undefined ? {\n path: options.path\n } : undefined\n })\n ]);\n Object.defineProperty(res, SYMBOL_CLEARED_COOKIES, {\n value: true,\n enumerable: false\n });\n return res;\n}\n/**\n * Custom error class\n */ export class ApiError extends Error {\n constructor(statusCode, message){\n super(message);\n this.statusCode = statusCode;\n }\n}\n/**\n * Sends error in `response`\n * @param res response object\n * @param statusCode of response\n * @param message of response\n */ export function sendError(res, statusCode, message) {\n res.statusCode = statusCode;\n res.statusMessage = message;\n res.end(message);\n}\n/**\n * Execute getter function only if its needed\n * @param LazyProps `req` and `params` for lazyProp\n * @param prop name of property\n * @param getter function to get data\n */ export function setLazyProp({ req }, prop, getter) {\n const opts = {\n configurable: true,\n enumerable: true\n };\n const optsReset = {\n ...opts,\n writable: true\n };\n Object.defineProperty(req, prop, {\n ...opts,\n get: ()=>{\n const value = getter();\n // we set the property on the object to avoid recalculating it\n Object.defineProperty(req, prop, {\n ...optsReset,\n value\n });\n return value;\n },\n set: (value)=>{\n Object.defineProperty(req, prop, {\n ...optsReset,\n value\n });\n }\n });\n}\n\n//# sourceMappingURL=index.js.map","import { removeTrailingSlash } from './remove-trailing-slash';\nimport { addPathPrefix } from './add-path-prefix';\nimport { addPathSuffix } from './add-path-suffix';\nimport { addLocale } from './add-locale';\nexport function formatNextPathnameInfo(info) {\n let pathname = addLocale(info.pathname, info.locale, info.buildId ? undefined : info.defaultLocale, info.ignorePrefix);\n if (info.buildId || !info.trailingSlash) {\n pathname = removeTrailingSlash(pathname);\n }\n if (info.buildId) {\n pathname = addPathSuffix(addPathPrefix(pathname, `/_next/data/${info.buildId}`), info.pathname === '/' ? 'index.json' : '.json');\n }\n pathname = addPathPrefix(pathname, info.basePath);\n return !info.buildId && info.trailingSlash ? !pathname.endsWith('/') ? addPathSuffix(pathname, '/') : pathname : removeTrailingSlash(pathname);\n}\n\n//# sourceMappingURL=format-next-pathname-info.js.map","import { ResponseAbortedName, createAbortController } from './web/spec-extension/adapters/next-request';\nimport { createPromiseWithResolvers } from '../shared/lib/promise-with-resolvers';\nimport { getTracer } from './lib/trace/tracer';\nimport { NextNodeServerSpan } from './lib/trace/constants';\nexport function isAbortError(e) {\n return (e == null ? void 0 : e.name) === 'AbortError' || (e == null ? void 0 : e.name) === ResponseAbortedName;\n}\nconst HAS_CLIENT_COMPONENT_METRICS_ENABLED = 'performance' in globalThis && process.env.NEXT_OTEL_PERFORMANCE_PREFIX;\nfunction createWriterFromResponse(res, waitUntilForEnd, clientComponentLoadTracker) {\n let started = false;\n // Create a promise that will resolve once the response has drained. See\n // https://nodejs.org/api/stream.html#stream_event_drain\n let drained = createPromiseWithResolvers();\n function onDrain() {\n drained.resolve();\n }\n res.on('drain', onDrain);\n // If the finish event fires, it means we shouldn't block and wait for the\n // drain event.\n res.once('close', ()=>{\n res.off('drain', onDrain);\n drained.resolve();\n });\n // Create a promise that will resolve once the response has finished. See\n // https://nodejs.org/api/http.html#event-finish_1\n const finished = createPromiseWithResolvers();\n res.once('finish', ()=>{\n finished.resolve();\n });\n // Create a writable stream that will write to the response.\n return new WritableStream({\n write: async (chunk)=>{\n // You'd think we'd want to use `start` instead of placing this in `write`\n // but this ensures that we don't actually flush the headers until we've\n // started writing chunks.\n if (!started) {\n started = true;\n if (HAS_CLIENT_COMPONENT_METRICS_ENABLED) {\n const metrics = clientComponentLoadTracker == null ? void 0 : clientComponentLoadTracker.snapshot();\n if (metrics) {\n performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-client-component-loading`, {\n start: metrics.clientComponentLoadStart,\n end: metrics.clientComponentLoadStart + metrics.clientComponentLoadTimes\n });\n }\n }\n res.flushHeaders();\n getTracer().trace(NextNodeServerSpan.startResponse, {\n spanName: 'start response'\n }, ()=>undefined);\n }\n try {\n const ok = res.write(chunk);\n // Added by the `compression` middleware, this is a function that will\n // flush the partially-compressed response to the client.\n if ('flush' in res && typeof res.flush === 'function') {\n res.flush();\n }\n // If the write returns false, it means there's some backpressure, so\n // wait until it's streamed before continuing.\n if (!ok) {\n await drained.promise;\n // Reset the drained promise so that we can wait for the next drain event.\n drained = createPromiseWithResolvers();\n }\n } catch (err) {\n res.end();\n throw new Error('failed to write chunk to response', {\n cause: err\n });\n }\n },\n abort: (err)=>{\n if (res.writableFinished) return;\n res.destroy(err);\n },\n close: async ()=>{\n // if a waitUntil promise was passed, wait for it to resolve before\n // ending the response.\n if (waitUntilForEnd) {\n await waitUntilForEnd;\n }\n if (res.writableFinished) return;\n res.end();\n return finished.promise;\n }\n });\n}\nexport async function pipeToNodeResponse(readable, res, waitUntilForEnd, clientComponentLoadTracker) {\n try {\n // If the response has already errored, then just return now.\n const { errored, destroyed } = res;\n if (errored || destroyed) return;\n // Create a new AbortController so that we can abort the readable if the\n // client disconnects.\n const controller = createAbortController(res);\n const writer = createWriterFromResponse(res, waitUntilForEnd, clientComponentLoadTracker);\n await readable.pipeTo(writer, {\n signal: controller.signal\n });\n } catch (err) {\n // If this isn't related to an abort error, re-throw it.\n if (isAbortError(err)) return;\n throw new Error('failed to pipe response', {\n cause: err\n });\n }\n}\nexport async function pipeNodeReadableToNodeResponse(readable, res, waitUntilForEnd, clientComponentLoadTracker) {\n try {\n const { errored, destroyed } = res;\n if (errored || destroyed) return;\n let started = false;\n const finished = createPromiseWithResolvers();\n // One `drain` listener for the whole response, as in\n // `createWriterFromResponse` above. It must not be `res.once('drain')` per\n // backpressured write: the `compression` middleware forwards `res.on` to\n // its zlib stream but leaves `removeListener` pointing at the response, so\n // a `once` listener is never removed from the stream it was added to. Each\n // backpressured write would leak one, and past ten Node reports the stream\n // as a probable leak via `MaxListenersExceededWarning`.\n //\n // TODO: the upstream fix for that asymmetry is\n // https://github.com/expressjs/compression/pull/153, which intercepts\n // `removeListener` so it reaches the zlib stream. It has been open since\n // 2019 and is not in upstream 1.8.1; we vendor 1.7.4. If it ever lands and\n // we upgrade, `res.off('drain', onDrain)` below would start working with\n // compression active and the caveat on the `close` handler could go away.\n let paused = false;\n const onDrain = ()=>{\n // The listener outlives the readable: `off` below cannot reach the zlib\n // stream either, so a late drain can arrive after teardown.\n if (!paused || readable.destroyed) return;\n paused = false;\n readable.resume();\n };\n res.on('drain', onDrain);\n res.once('close', ()=>{\n // Only removes the listener when compression is inactive, which is the\n // case where it was added to the response itself. Otherwise it lives on\n // the zlib stream, which is released with the response.\n res.off('drain', onDrain);\n readable.destroy();\n finished.resolve();\n });\n readable.on('data', (chunk)=>{\n if (!started) {\n started = true;\n if ('performance' in globalThis && process.env.NEXT_OTEL_PERFORMANCE_PREFIX) {\n const metrics = clientComponentLoadTracker == null ? void 0 : clientComponentLoadTracker.snapshot();\n if (metrics) {\n performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-client-component-loading`, {\n start: metrics.clientComponentLoadStart,\n end: metrics.clientComponentLoadStart + metrics.clientComponentLoadTimes\n });\n }\n }\n res.flushHeaders();\n getTracer().trace(NextNodeServerSpan.startResponse, {\n spanName: 'start response'\n }, ()=>undefined);\n }\n const ok = res.write(chunk);\n if ('flush' in res && typeof res.flush === 'function') {\n res.flush();\n }\n if (!ok) {\n paused = true;\n readable.pause();\n }\n });\n readable.on('end', async ()=>{\n if (waitUntilForEnd) {\n await waitUntilForEnd;\n }\n if (!res.writableFinished) {\n res.end();\n }\n finished.resolve();\n });\n readable.on('error', (err)=>{\n if (isAbortError(err)) {\n finished.resolve();\n return;\n }\n res.destroy(err);\n finished.resolve();\n });\n await finished.promise;\n } catch (err) {\n if (isAbortError(err)) return;\n throw new Error('failed to pipe response', {\n cause: err\n });\n }\n}\n\n//# sourceMappingURL=pipe-readable.js.map","import { normalizeAppPath } from '../../../../shared/lib/router/utils/app-paths';\nimport { Normalizers } from '../../normalizers';\nimport { wrapNormalizerFn } from '../../wrap-normalizer-fn';\nimport { UnderscoreNormalizer } from '../../underscore-normalizer';\nexport class AppPathnameNormalizer extends Normalizers {\n constructor(){\n super([\n // The pathname to match should have the trailing `/page` and other route\n // group information stripped from it.\n wrapNormalizerFn(normalizeAppPath),\n // The page should have the `%5F` characters replaced with `_` characters.\n new UnderscoreNormalizer()\n ]);\n }\n normalize(page) {\n return super.normalize(page);\n }\n}\nexport class DevAppPathnameNormalizer extends Normalizers {\n constructor(pageNormalizer){\n super([\n // This should normalize the filename to a page.\n pageNormalizer,\n // Normalize the app page to a pathname.\n new AppPathnameNormalizer()\n ]);\n }\n normalize(filename) {\n return super.normalize(filename);\n }\n}\n\n//# sourceMappingURL=app-pathname-normalizer.js.map","import { parsePath } from './parse-path';\n/**\n * Adds the provided prefix to the given path. It first ensures that the path\n * is indeed starting with a slash.\n */ export function addPathPrefix(path, prefix) {\n if (!path.startsWith('/') || !prefix) {\n return path;\n }\n const { pathname, query, hash } = parsePath(path);\n return `${prefix}${pathname}${query}${hash}`;\n}\n\n//# sourceMappingURL=add-path-prefix.js.map","import { createPromiseWithResolvers } from '../shared/lib/promise-with-resolvers';\n/**\n * A wrapper for a function that will only allow one call to the function to\n * execute at a time.\n */ export class Batcher {\n constructor(cacheKeyFn, /**\n * A function that will be called to schedule the wrapped function to be\n * executed. This defaults to a function that will execute the function\n * immediately.\n */ schedulerFn = (fn)=>fn()){\n this.cacheKeyFn = cacheKeyFn;\n this.schedulerFn = schedulerFn;\n this.pending = new Map();\n }\n static create(options) {\n return new Batcher(options == null ? void 0 : options.cacheKeyFn, options == null ? void 0 : options.schedulerFn);\n }\n /**\n * Wraps a function in a promise that will be resolved or rejected only once\n * for a given key. This will allow multiple calls to the function to be\n * made, but only one will be executed at a time. The result of the first\n * call will be returned to all callers.\n *\n * @param key the key to use for the cache\n * @param fn the function to wrap\n * @returns a promise that resolves to the result of the function\n */ async batch(key, fn) {\n const cacheKey = this.cacheKeyFn ? await this.cacheKeyFn(key) : key;\n if (cacheKey === null) {\n return fn({\n resolve: (value)=>Promise.resolve(value),\n key\n });\n }\n const pending = this.pending.get(cacheKey);\n if (pending) return pending;\n const { promise, resolve, reject } = createPromiseWithResolvers();\n this.pending.set(cacheKey, promise);\n this.schedulerFn(async ()=>{\n try {\n const result = await fn({\n resolve,\n key\n });\n // Resolving a promise multiple times is a no-op, so we can safely\n // resolve all pending promises with the same result.\n resolve(result);\n } catch (err) {\n reject(err);\n } finally{\n this.pending.delete(cacheKey);\n }\n });\n return promise;\n }\n}\n\n//# sourceMappingURL=batcher.js.map","/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */ export function parsePath(path) {\n const hashIndex = path.indexOf('#');\n const queryIndex = path.indexOf('?');\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex);\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined) : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : ''\n };\n }\n return {\n pathname: path,\n query: '',\n hash: ''\n };\n}\n\n//# sourceMappingURL=parse-path.js.map","/**\n * Based on https://github.com/facebook/react/blob/d4e78c42a94be027b4dc7ed2659a5fddfbf9bd4e/packages/react/src/ReactFetch.js\n */ import * as React from 'react';\nimport { cloneResponse } from './clone-response';\nimport { InvariantError } from '../../shared/lib/invariant-error';\nconst simpleCacheKey = '[\"GET\",[],null,\"follow\",null,null,null,null]' // generateCacheKey(new Request('https://blank'));\n;\n// Headers that should not affect deduplication\n// traceparent and tracestate are used for distributed tracing and should not affect cache keys\nconst headersToExcludeInCacheKey = new Set([\n 'traceparent',\n 'tracestate'\n]);\nfunction generateCacheKey(request) {\n // We pick the fields that goes into the key used to dedupe requests.\n // We don't include the `cache` field, because we end up using whatever\n // caching resulted from the first request.\n // Notably we currently don't consider non-standard (or future) options.\n // This might not be safe. TODO: warn for non-standard extensions differing.\n // IF YOU CHANGE THIS UPDATE THE simpleCacheKey ABOVE.\n const filteredHeaders = Array.from(request.headers.entries()).filter(([key])=>!headersToExcludeInCacheKey.has(key.toLowerCase()));\n return JSON.stringify([\n request.method,\n filteredHeaders,\n request.mode,\n request.redirect,\n request.credentials,\n request.referrer,\n request.referrerPolicy,\n request.integrity\n ]);\n}\nexport function createDedupeFetch(originalFetch) {\n const getCacheEntries = React.cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- url is the cache key\n (url)=>[]);\n return function dedupeFetch(resource, options) {\n if (options && options.signal) {\n // If we're passed a signal, then we assume that\n // someone else controls the lifetime of this object and opts out of\n // caching. It's effectively the opt-out mechanism.\n // Ideally we should be able to check this on the Request but\n // it always gets initialized with its own signal so we don't\n // know if it's supposed to override - unless we also override the\n // Request constructor.\n return originalFetch(resource, options);\n }\n // Normalize the Request\n let url;\n let cacheKey;\n if (typeof resource === 'string' && !options) {\n // Fast path.\n cacheKey = simpleCacheKey;\n url = resource;\n } else {\n // Normalize the request.\n // if resource is not a string or a URL (its an instance of Request)\n // then do not instantiate a new Request but instead\n // reuse the request as to not disturb the body in the event it's a ReadableStream.\n const request = typeof resource === 'string' || resource instanceof URL ? new Request(resource, options) : resource;\n if (request.method !== 'GET' && request.method !== 'HEAD' || request.keepalive) {\n // We currently don't dedupe requests that might have side-effects. Those\n // have to be explicitly cached. We assume that the request doesn't have a\n // body if it's GET or HEAD.\n // keepalive gets treated the same as if you passed a custom cache signal.\n return originalFetch(resource, options);\n }\n cacheKey = generateCacheKey(request);\n url = request.url;\n }\n const cacheEntries = getCacheEntries(url);\n for(let i = 0, j = cacheEntries.length; i < j; i += 1){\n const [key, promise] = cacheEntries[i];\n if (key === cacheKey) {\n return promise.then(()=>{\n const response = cacheEntries[i][2];\n if (!response) throw new InvariantError('No cached response');\n // We're cloning the response using this utility because there exists\n // a bug in the undici library around response cloning. See the\n // following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = cloneResponse(response);\n cacheEntries[i][2] = cloned2;\n return cloned1;\n });\n }\n }\n // We pass the original arguments here in case normalizing the Request\n // doesn't include all the options in this environment.\n const promise = originalFetch(resource, options);\n const entry = [\n cacheKey,\n promise,\n null\n ];\n cacheEntries.push(entry);\n return promise.then((response)=>{\n // We're cloning the response using this utility because there exists\n // a bug in the undici library around response cloning. See the\n // following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = cloneResponse(response);\n entry[2] = cloned2;\n return cloned1;\n });\n };\n}\n\n//# sourceMappingURL=dedupe-fetch.js.map","import { normalizePagePath } from '../../shared/lib/page-path/normalize-page-path';\nimport { normalizeLocalePath } from '../../shared/lib/i18n/normalize-locale-path';\nimport { InvariantError } from '../../shared/lib/invariant-error';\nimport { AppPathnameNormalizer } from '../normalizers/built/app/app-pathname-normalizer';\nimport { RouteKind } from '../route-kind';\nexport const ROUTE_CACHE_DIRECTORY = 'route-cache';\nconst appPathnameNormalizer = new AppPathnameNormalizer();\n/** Convert a runtime route definition to the identity used by response caches. */ export function getResponseCacheOwner(definition) {\n return {\n kind: definition.kind,\n // Pages module names can include a trailing /index in Turbopack. Their\n // pathname matches the manifest's source in both bundlers. App modules\n // retain groups and parallel slots in their cache identity.\n sourceRoute: definition.kind === RouteKind.PAGES ? definition.pathname : definition.page\n };\n}\n/**\n * Prerender metadata already identifies its source route. Compare that source\n * with the selected module before using its metadata, including negative\n * entries and partially specialized fallback shells. Cache storage continues\n * to use the full module identity, including groups and parallel slots.\n */ export function isRouteCacheOwner(pathname, owner, prerender, locales) {\n if (!prerender) {\n return false;\n }\n // Pages have JSON data routes, App Pages have RSC data routes, and App\n // Route Handlers have no separate data route.\n const kind = prerender.dataRoute === null ? RouteKind.APP_ROUTE : prerender.dataRoute.endsWith('.json') ? RouteKind.PAGES : prerender.dataRoute.endsWith('.rsc') ? RouteKind.APP_PAGE : undefined;\n if (kind !== owner.kind) {\n return false;\n }\n const source = 'srcRoute' in prerender ? prerender.srcRoute : prerender.fallbackSourceRoute;\n const prerenderOwner = source ?? (kind === RouteKind.PAGES ? normalizeLocalePath(pathname, locales).pathname : pathname);\n return prerenderOwner === (kind === RouteKind.PAGES ? owner.sourceRoute : appPathnameNormalizer.normalize(owner.sourceRoute));\n}\n/**\n * Response keys are opaque to cache handlers. Hash the source route into one\n * fixed-length directory, preserving App groups and slots without expanding\n * Unicode names or repeating the source directory hierarchy on disk. The\n * pathname stays readable and is normalized exactly once before namespacing.\n */ export function getRouteCacheKey(pathname, owner) {\n if (!owner) {\n throw new InvariantError('Response cache requires a source route');\n }\n const { sourceRoute } = owner;\n let source;\n if (process.env.NEXT_RUNTIME === 'edge') {\n const sha256 = require('next/dist/compiled/hash.js/sha256');\n source = sha256().update(new TextEncoder().encode(sourceRoute)).digest('hex');\n } else {\n const { createHash } = require('crypto');\n source = createHash('sha256').update(sourceRoute).digest('hex');\n }\n return `/${ROUTE_CACHE_DIRECTORY}/${owner.kind}/${source}/$${normalizePagePath(pathname)}`;\n}\n\n//# sourceMappingURL=route-cache-key.js.map","/**\n * Takes an object with a hostname property (like a parsed URL) and some\n * headers that may contain Host and returns the preferred hostname.\n * @param parsed An object containing a hostname property.\n * @param headers A dictionary with headers containing a `host`.\n */ export function getHostname(parsed, headers) {\n // Get the hostname from the headers if it exists, otherwise use the parsed\n // hostname.\n let hostname;\n if (headers?.host && !Array.isArray(headers.host)) {\n hostname = headers.host.toString().split(':', 1)[0];\n } else if (parsed.hostname) {\n hostname = parsed.hostname;\n } else return;\n return hostname.toLowerCase();\n}\n\n//# sourceMappingURL=get-hostname.js.map","import { parsePath } from './parse-path';\n/**\n * Similarly to `addPathPrefix`, this function adds a suffix at the end on the\n * provided path. It also works only for paths ensuring the argument starts\n * with a slash.\n */ export function addPathSuffix(path, suffix) {\n if (!path.startsWith('/') || !suffix) {\n return path;\n }\n const { pathname, query, hash } = parsePath(path);\n return `${pathname}${suffix}${query}${hash}`;\n}\n\n//# sourceMappingURL=add-path-suffix.js.map","/**\n * Schedules a function to be called on the next tick after the other promises\n * have been resolved.\n *\n * @param cb the function to schedule\n */ export const scheduleOnNextTick = (cb)=>{\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(()=>{\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0);\n } else {\n process.nextTick(cb);\n }\n });\n};\n/**\n * Schedules a function to be called using `setImmediate` or `setTimeout` if\n * `setImmediate` is not available (like in the Edge runtime).\n *\n * @param cb the function to schedule\n */ export const scheduleImmediate = (cb)=>{\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0);\n } else {\n setImmediate(cb);\n }\n};\n/**\n * returns a promise than resolves in a future task. There is no guarantee that the task it resolves in\n * will be the next task but if you await it you can at least be sure that the current task is over and\n * most usefully that the entire microtask queue of the current task has been emptied.\n */ export function atLeastOneTask() {\n return new Promise((resolve)=>scheduleImmediate(resolve));\n}\n/**\n * This utility function is extracted to make it easier to find places where we are doing\n * specific timing tricks to try to schedule work after React has rendered. This is especially\n * important at the moment because Next.js uses the edge builds of React which use setTimeout to\n * schedule work when you might expect that something like setImmediate would do the trick.\n *\n * Long term we should switch to the node versions of React rendering when possible and then\n * update this to use setImmediate rather than setTimeout\n */ export function waitAtLeastOneReactRenderTask() {\n if (process.env.NEXT_RUNTIME === 'edge') {\n return new Promise((r)=>setTimeout(r, 0));\n } else {\n return new Promise((r)=>setImmediate(r));\n }\n}\n\n//# sourceMappingURL=scheduler.js.map","/**\n * Check to see if a value is Thenable.\n *\n * @param promise the maybe-thenable value\n * @returns true if the value is thenable\n */ export function isThenable(promise) {\n return promise !== null && typeof promise === 'object' && 'then' in promise && typeof promise.then === 'function';\n}\n\n//# sourceMappingURL=is-thenable.js.map","import { addPathPrefix } from './add-path-prefix';\nimport { pathHasPrefix } from './path-has-prefix';\n/**\n * For a given path and a locale, if the locale is given, it will prefix the\n * locale. The path shouldn't be an API path. If a default locale is given the\n * prefix will be omitted if the locale is already the default locale.\n */ export function addLocale(path, locale, defaultLocale, ignorePrefix) {\n // If no locale was given or the locale is the default locale, we don't need\n // to prefix the path.\n if (!locale || locale === defaultLocale) return path;\n const lower = path.toLowerCase();\n // If the path is an API path or the path already has the locale prefix, we\n // don't need to prefix the path.\n if (!ignorePrefix) {\n if (pathHasPrefix(lower, '/api')) return path;\n if (pathHasPrefix(lower, `/${locale.toLowerCase()}`)) return path;\n }\n // Add the locale prefix to the path.\n return addPathPrefix(path, `/${locale}`);\n}\n\n//# sourceMappingURL=add-locale.js.map","import { IncrementalCacheKind } from './types';\nimport { InvariantError } from '../../shared/lib/invariant-error';\nimport { Batcher } from '../../lib/batcher';\nimport { LRUCache } from '../lib/lru-cache';\nimport { warnOnce } from '../../build/output/log';\nimport { scheduleOnNextTick } from '../../lib/scheduler';\nimport { fromResponseCacheEntry, routeKindToIncrementalCacheKind, toResponseCacheEntry } from './utils';\n/**\n * Parses an environment variable as a positive integer, returning the fallback\n * if the value is missing, not a number, or not positive.\n */ function parsePositiveInt(envValue, fallback) {\n if (!envValue) return fallback;\n const parsed = parseInt(envValue, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n}\n/**\n * Default TTL (in milliseconds) for minimal mode response cache entries.\n * Used for cache hit validation as a fallback for providers that don't\n * send the x-invocation-id header yet.\n *\n * 10 seconds chosen because:\n * - Long enough to dedupe rapid successive requests (e.g., page + data)\n * - Short enough to not serve stale data across unrelated requests\n *\n * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_TTL` environment variable.\n */ const DEFAULT_TTL_MS = parsePositiveInt(process.env.NEXT_PRIVATE_RESPONSE_CACHE_TTL, 10000);\n/**\n * Default maximum number of entries in the response cache.\n * Can be configured via `NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE` environment variable.\n */ const DEFAULT_MAX_SIZE = parsePositiveInt(process.env.NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE, 150);\n/**\n * Separator used in compound cache keys to join pathname and invocationID.\n * Using null byte (\\0) since it cannot appear in valid URL paths or UUIDs.\n */ const KEY_SEPARATOR = '\\0';\n/**\n * Sentinel value used for TTL-based cache entries (when invocationID is undefined).\n * Chosen to be a clearly reserved marker for internal cache keys.\n */ const TTL_SENTINEL = '__ttl_sentinel__';\n/**\n * Creates a compound cache key from pathname and invocationID.\n */ function createCacheKey(pathname, invocationID) {\n return `${pathname}${KEY_SEPARATOR}${invocationID ?? TTL_SENTINEL}`;\n}\n/**\n * Extracts the invocationID from a compound cache key.\n * Returns undefined if the key used TTL_SENTINEL.\n */ function extractInvocationID(compoundKey) {\n const separatorIndex = compoundKey.lastIndexOf(KEY_SEPARATOR);\n if (separatorIndex === -1) return undefined;\n const invocationID = compoundKey.slice(separatorIndex + 1);\n return invocationID === TTL_SENTINEL ? undefined : invocationID;\n}\nexport * from './types';\nexport default class ResponseCache {\n constructor({ minimalMode, route, maxSize = DEFAULT_MAX_SIZE, ttl = DEFAULT_TTL_MS }){\n // The get and revalidate batchers share pending renders across invocation\n // IDs, including failures. Invocation IDs scope reuse of completed results in\n // the LRU below.\n this.getBatcher = Batcher.create({\n // Ensure on-demand revalidate doesn't block normal requests, it should be\n // safe to run an on-demand revalidate for the same key as a normal request.\n cacheKeyFn: ({ key, isOnDemandRevalidate })=>`${key}-${isOnDemandRevalidate ? '1' : '0'}`,\n // We wait to do any async work until after we've added our promise to\n // `pendingResponses` to ensure that any any other calls will reuse the\n // same promise until we've fully finished our work.\n schedulerFn: scheduleOnNextTick\n });\n this.revalidateBatcher = Batcher.create({\n // We wait to do any async work until after we've added our promise to\n // `pendingResponses` to ensure that any any other calls will reuse the\n // same promise until we've fully finished our work.\n schedulerFn: scheduleOnNextTick\n });\n /**\n * Set of invocation IDs that have had cache entries evicted.\n * Used to detect when the cache size may be too small.\n * Bounded to prevent memory growth.\n */ this.evictedInvocationIDs = new Set();\n if (!route) {\n throw new InvariantError('Response cache requires a source route');\n }\n this.route = route;\n this.minimal_mode = minimalMode;\n this.maxSize = maxSize;\n this.ttl = ttl;\n // Create the LRU cache with eviction tracking\n this.cache = new LRUCache(maxSize, undefined, (compoundKey)=>{\n const invocationID = extractInvocationID(compoundKey);\n if (invocationID) {\n // Bound to 100 entries to prevent unbounded memory growth.\n // FIFO eviction is acceptable here because:\n // 1. Invocations are short-lived (single request lifecycle), so older\n // invocations are unlikely to still be active after 100 newer ones\n // 2. This warning mechanism is best-effort for developer guidance—\n // missing occasional eviction warnings doesn't affect correctness\n // 3. If a long-running invocation is somehow evicted and then has\n // another cache entry evicted, it will simply be re-added\n if (this.evictedInvocationIDs.size >= 100) {\n const first = this.evictedInvocationIDs.values().next().value;\n if (first) this.evictedInvocationIDs.delete(first);\n }\n this.evictedInvocationIDs.add(invocationID);\n }\n });\n }\n /**\n * Gets the response cache entry for the given key.\n *\n * @param key - The key to get the response cache entry for.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param context - The context for the get request.\n * @returns The response cache entry.\n */ async get(key, responseGenerator, context) {\n // If there is no key for the cache, we can't possibly look this up in the\n // cache so just return the result of the response generator.\n if (!key) {\n return responseGenerator({\n hasResolved: false,\n previousCacheEntry: null\n });\n }\n // Check minimal mode cache before doing any other work.\n if (this.minimal_mode) {\n const cacheKey = createCacheKey(key, context.invocationID);\n const cachedItem = this.cache.get(cacheKey);\n if (cachedItem) {\n // With invocationID: exact match found - always a hit\n // With TTL mode: must check expiration\n if (context.invocationID !== undefined) {\n return cachedItem.entry !== null && 'error' in cachedItem.entry ? cachedItem.entry : toResponseCacheEntry(cachedItem.entry);\n }\n // TTL entries can be reused by unrelated requests. Exclude failures so\n // those requests can retry instead of receiving a cached error.\n const now = Date.now();\n if ((cachedItem.entry === null || !('error' in cachedItem.entry)) && cachedItem.expiresAt > now) {\n return toResponseCacheEntry(cachedItem.entry);\n }\n // TTL expired - clean up\n this.cache.remove(cacheKey);\n }\n // Warn if this invocation had entries evicted - indicates cache may be too small.\n if (context.invocationID && this.evictedInvocationIDs.has(context.invocationID)) {\n warnOnce(`Response cache entry was evicted for invocation ${context.invocationID}. ` + `Consider increasing NEXT_PRIVATE_RESPONSE_CACHE_MAX_SIZE (current: ${this.maxSize}).`);\n }\n }\n const { incrementalCache, isOnDemandRevalidate = false, isFallback = false, isRoutePPREnabled = false, isPrefetch = false, waitUntil, invocationID } = context;\n const response = await this.getBatcher.batch({\n key,\n isOnDemandRevalidate\n }, ({ resolve })=>{\n const promise = this.handleGet(key, responseGenerator, {\n incrementalCache,\n isOnDemandRevalidate,\n isFallback,\n isRoutePPREnabled,\n isPrefetch,\n invocationID\n }, resolve);\n // We need to ensure background revalidates are passed to waitUntil.\n if (waitUntil) waitUntil(promise);\n return promise;\n });\n // In minimal mode, each caller with an invocation ID stores the shared\n // failure under its own ID for reuse by related requests. Callers without\n // an invocation ID receive the failure but do not store it in the LRU.\n if (this.minimal_mode && response && ('error' in response ? invocationID !== undefined : response.cacheControl)) {\n const cacheKey = createCacheKey(key, invocationID);\n this.cache.set(cacheKey, {\n entry: response,\n expiresAt: Date.now() + this.ttl\n });\n }\n return response !== null && 'error' in response ? response : toResponseCacheEntry(response);\n }\n /**\n * Handles the get request for the response cache.\n *\n * @param key - The key to get the response cache entry for.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param context - The context for the get request.\n * @param resolve - The resolve function to use to resolve the response cache entry.\n * @returns The response cache entry.\n */ async handleGet(key, responseGenerator, context, resolve) {\n let previousIncrementalCacheEntry = null;\n let resolved = false;\n try {\n // Get the previous cache entry if not in minimal mode\n previousIncrementalCacheEntry = !this.minimal_mode ? await context.incrementalCache.get(key, this.getCacheContext(context.isRoutePPREnabled, context.isFallback)) : null;\n // `isStale === -1` signals that the entry is past its `expire` (either\n // via an expired tag or, with `cacheLife({ expire })`, past the route's\n // expire time in the prerender manifest). In that case we must NOT\n // early-resolve with the stale value — instead we fall through to a\n // blocking revalidation so the response returned to the user is fresh.\n if (previousIncrementalCacheEntry && !context.isOnDemandRevalidate && previousIncrementalCacheEntry.isStale !== -1) {\n resolve(previousIncrementalCacheEntry);\n resolved = true;\n if (!previousIncrementalCacheEntry.isStale || context.isPrefetch) {\n // The cached value is still valid, so we don't need to update it yet.\n return previousIncrementalCacheEntry;\n }\n }\n // Revalidate the cache entry.\n //\n // A prefetch request that missed must run its own response generator\n // rather than joining an in-flight revalidation through the batcher. A\n // background revalidation may be regenerating the concrete (non-fallback)\n // entry for this route — e.g. an ISR fallback-shell upgrade scheduled by\n // an earlier prefetch sub-request. Joining it would serve that concrete\n // result to the prefetch instead of the fallback shell, and which segment\n // wins would depend purely on request timing. Running the generator\n // directly lets every prefetch segment take the same fallback-shell path,\n // independent of any concurrent background upgrade.\n const incrementalResponseCacheEntry = context.isPrefetch && previousIncrementalCacheEntry === null ? await this.handleRevalidate(key, context.incrementalCache, context.isRoutePPREnabled, context.isFallback, responseGenerator, previousIncrementalCacheEntry, resolved) : await this.revalidate(key, context.incrementalCache, context.isRoutePPREnabled, context.isFallback, responseGenerator, previousIncrementalCacheEntry, resolved);\n if (incrementalResponseCacheEntry !== null && 'error' in incrementalResponseCacheEntry && resolved) {\n // The caller already received the stale entry. Report the background\n // failure here, as the catch below does for a thrown error.\n console.error(incrementalResponseCacheEntry.error);\n return null;\n }\n // Handle null response\n if (!incrementalResponseCacheEntry) {\n // Remove the cache item if it was set so we don't use it again.\n if (this.minimal_mode) {\n const cacheKey = createCacheKey(key, context.invocationID);\n this.cache.remove(cacheKey);\n }\n return null;\n }\n // Resolve for on-demand revalidation or if not already resolved\n if (context.isOnDemandRevalidate && !resolved) {\n return incrementalResponseCacheEntry;\n }\n return incrementalResponseCacheEntry;\n } catch (err) {\n // If we've already resolved the cache entry, we can't reject as we\n // already resolved the cache entry so log the error here.\n if (resolved) {\n console.error(err);\n return null;\n }\n throw err;\n }\n }\n /**\n * Revalidates the cache entry for the given key.\n *\n * @param key - The key to revalidate the cache entry for.\n * @param incrementalCache - The incremental cache to use to revalidate the cache entry.\n * @param isRoutePPREnabled - Whether the route is PPR enabled.\n * @param isFallback - Whether the route is a fallback.\n * @param responseGenerator - The response generator to use to generate the response cache entry.\n * @param previousIncrementalCacheEntry - The previous cache entry to use to revalidate the cache entry.\n * @param hasResolved - Whether the response has been resolved.\n * @param waitUntil - Optional function to register background work.\n * @param invocationID - The invocation ID for cache key scoping.\n * @returns The revalidated cache entry.\n */ async revalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved, waitUntil) {\n return this.revalidateBatcher.batch(key, ()=>{\n const promise = this.handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved);\n // We need to ensure background revalidates are passed to waitUntil.\n if (waitUntil) waitUntil(promise);\n return promise;\n });\n }\n async handleRevalidate(key, incrementalCache, isRoutePPREnabled, isFallback, responseGenerator, previousIncrementalCacheEntry, hasResolved) {\n let failure;\n try {\n // Generate the response cache entry using the response generator.\n const responseCacheEntry = await responseGenerator({\n hasResolved,\n previousCacheEntry: previousIncrementalCacheEntry,\n isRevalidating: true\n });\n if (!responseCacheEntry) {\n return null;\n }\n if ('error' in responseCacheEntry) {\n failure = responseCacheEntry;\n } else {\n // Convert the response cache entry to an incremental response cache entry.\n const incrementalResponseCacheEntry = await fromResponseCacheEntry({\n ...responseCacheEntry,\n isMiss: !previousIncrementalCacheEntry\n });\n // We want to persist the result only if it has a cache control value\n // defined. The minimal mode LRU write is handled in get() so that every\n // caller, including batched invocations, populates the cache.\n if (incrementalResponseCacheEntry.cacheControl && !this.minimal_mode) {\n await incrementalCache.set(key, incrementalResponseCacheEntry.value, {\n ...this.getCacheContext(isRoutePPREnabled, isFallback),\n cacheControl: incrementalResponseCacheEntry.cacheControl\n });\n }\n return incrementalResponseCacheEntry;\n }\n } catch (err) {\n await this.retainPreviousCacheEntry(key, incrementalCache, isRoutePPREnabled, isFallback, previousIncrementalCacheEntry);\n throw err;\n }\n await this.retainPreviousCacheEntry(key, incrementalCache, isRoutePPREnabled, isFallback, previousIncrementalCacheEntry);\n return failure;\n }\n // Retain the previous successful value and delay retries after revalidation\n // fails.\n async retainPreviousCacheEntry(key, incrementalCache, isRoutePPREnabled, isFallback, previousIncrementalCacheEntry) {\n if (previousIncrementalCacheEntry == null ? void 0 : previousIncrementalCacheEntry.cacheControl) {\n const revalidate = Math.min(Math.max(previousIncrementalCacheEntry.cacheControl.revalidate || 3, 3), 30);\n const expire = previousIncrementalCacheEntry.cacheControl.expire === undefined ? undefined : Math.max(revalidate + 3, previousIncrementalCacheEntry.cacheControl.expire);\n await incrementalCache.set(key, previousIncrementalCacheEntry.value, {\n ...this.getCacheContext(isRoutePPREnabled, isFallback),\n cacheControl: {\n revalidate: revalidate,\n expire: expire\n }\n });\n }\n }\n getCacheContext(isRoutePPREnabled, isFallback) {\n if (this.route === 'image') {\n return {\n kind: IncrementalCacheKind.IMAGE,\n isFallback: false\n };\n }\n const kind = routeKindToIncrementalCacheKind(this.route.kind);\n if (kind === IncrementalCacheKind.IMAGE) {\n throw new InvariantError('Images must use the image response cache');\n }\n return {\n route: this.route,\n kind,\n isRoutePPREnabled,\n isFallback\n };\n }\n}\n\n//# sourceMappingURL=index.js.map","/**\n * Removes the trailing slash for a given route or page path. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n *\n * Uses charCodeAt (47 === '/') instead of regex to avoid the overhead of\n * compiling and executing a RegExp on every call (~3-5x faster).\n */ export function removeTrailingSlash(route) {\n return route.charCodeAt(route.length - 1) === 47 && route.length > 1 ? route.slice(0, -1) : route;\n}\n\n//# sourceMappingURL=remove-trailing-slash.js.map","import { parsePath } from './parse-path';\n/**\n * Checks if a given path starts with a given prefix. It ensures it matches\n * exactly without containing extra chars. e.g. prefix /docs should replace\n * for /docs, /docs/, /docs/a but not /docsss\n * @param path The path to check.\n * @param prefix The prefix to check against.\n */ export function pathHasPrefix(path, prefix) {\n if (typeof path !== 'string') {\n return false;\n }\n const { pathname } = parsePath(path);\n return pathname === prefix || pathname.startsWith(prefix + '/');\n}\n\n//# sourceMappingURL=path-has-prefix.js.map","import { InvariantError } from '../../shared/lib/invariant-error';\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths';\nimport { pathHasPrefix } from '../../shared/lib/router/utils/path-has-prefix';\nimport { removePathPrefix } from '../../shared/lib/router/utils/remove-path-prefix';\nimport { mightBeServerReferenceId } from '../../shared/lib/server-reference-info';\nimport { wellKnownProperties } from '../../shared/lib/utils/reflect-utils';\nimport { workAsyncStorage } from './work-async-storage.external';\nimport { workUnitAsyncStorage } from './work-unit-async-storage.external';\nexport function getActionNotFoundError(actionId) {\n return new Error(`Failed to find Server Action${actionId ? ` \"${actionId}\"` : ''}. This request might be from an older or newer deployment.\\nRead more: https://nextjs.org/docs/messages/failed-to-find-server-action`);\n}\nexport function getInvalidServerReferenceIdError(id) {\n // `id` is arbitrary client-provided input. Unlike the not-found case, it has\n // not passed the length gate and can reach this error via a malformed server\n // reference in an action payload, so it may be of any length and contain\n // control characters. `JSON.stringify` escapes newlines and quotes so it\n // can't forge log lines, and truncating overly long ids prevents log\n // flooding. Ids at or below the cap are logged in full so that we only add an\n // ellipsis to ids that are meaningfully longer than the truncated length.\n const encoded = JSON.stringify(id.length > MAX_LOGGED_SERVER_REFERENCE_ID_LENGTH ? id.slice(0, TRUNCATED_SERVER_REFERENCE_ID_LENGTH) + '…' : id);\n return new Error(`The Server Reference ID did not match the expected format. Received ${encoded}.\\nRead more: https://nextjs.org/docs/messages/failed-to-find-server-action`);\n}\n// Ids at or below the cap are logged in full. Longer ids are truncated to the\n// shorter length and marked with an ellipsis, so the cap leaves headroom over\n// the truncated length rather than ellipsizing ids that are barely too long.\nconst MAX_LOGGED_SERVER_REFERENCE_ID_LENGTH = 100;\nconst TRUNCATED_SERVER_REFERENCE_ID_LENGTH = 90;\n// This is a global singleton that is, among other things, also used to\n// encode/decode bound args of server function closures. This can't be using a\n// AsyncLocalStorage as it might happen at the module level.\nconst MANIFESTS_SINGLETON = Symbol.for('next.server.manifests');\nconst globalThisWithManifests = globalThis;\nfunction isUseCacheStore(workUnitStore) {\n if (!workUnitStore) {\n return false;\n }\n switch(workUnitStore.type){\n case 'cache':\n case 'private-cache':\n return true;\n case 'request':\n case 'unstable-cache':\n case 'prerender':\n case 'prerender-client':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'validation-client':\n case 'build-time-generator':\n return false;\n default:\n return workUnitStore;\n }\n}\nfunction createProxiedClientReferenceManifest(clientReferenceManifestsPerRoute) {\n const createMappingProxy = (prop)=>{\n return new Proxy({}, {\n get (_, id) {\n const workStore = workAsyncStorage.getStore();\n if (workStore) {\n var _clientReferenceManifestsPerRoute_get;\n const currentManifest = (_clientReferenceManifestsPerRoute_get = clientReferenceManifestsPerRoute.get(workStore.route)) == null ? void 0 : _clientReferenceManifestsPerRoute_get.clientReferenceManifest;\n if (currentManifest == null ? void 0 : currentManifest[prop][id]) {\n if (workStore.durableUseCacheEntries && prop === 'clientModules') {\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (isUseCacheStore(workUnitStore)) {\n // This creates a mapping so that a given client references with name\n // `app/foo/client.tsx` is serialized as\n // ```\n // { id: `app/foo/client.tsx`, name: `*`, chunks: [\"stub\"], async: false }\n // ```\n // instead of the actual\n // ```\n // { id: 19132, name: `*`, chunks: [\"/_next/static/chunks/...\"], async: true }\n // ```\n //\n // This means that not the unstable client module id is used for the cache entry,\n // but the stable client reference name. The stable client reference name is\n // resolved against the current manifest via rscModuleMappingForUseCache when the\n // entry is read.\n const clientReferenceManifestEntry = currentManifest.clientModules[id];\n return {\n // Return `id` instead of `clientReferenceManifestEntry.id` here.\n id,\n name: clientReferenceManifestEntry.name,\n // Set a sentinel value just in case this does ends up being read at some point\n // in the future, then at least we'll get \"Failed to load chunk stub (404)\"\n // instead of \"Failed to load module 1234\".\n chunks: [\n 'stub'\n ],\n async: false\n };\n }\n }\n return currentManifest[prop][id];\n }\n // In development, we also check all other manifests to see if the\n // module exists there. This is to support a scenario where React's\n // I/O tracking (dev-only) creates a connection from one page to\n // another through an emitted async I/O node that references client\n // components from the other page, e.g. in owner props.\n // TODO: Maybe we need to add a `debugBundlerConfig` option to React\n // to avoid this workaround. The current workaround has the\n // disadvantage that one might accidentally or intentionally share\n // client references across pages (e.g. by storing them in a global\n // variable), which would then only be caught in production.\n if (process.env.NODE_ENV !== 'production') {\n for (const [route, { page, clientReferenceManifest }] of clientReferenceManifestsPerRoute){\n if (route === workStore.route) {\n continue;\n }\n const entry = clientReferenceManifest[prop][id];\n if (entry !== undefined) {\n if (process.env.__NEXT_DEV_SERVER) {\n // The dev validation worker rebuilds this registry in its\n // own thread, seeded with only the route it validates, so\n // it has to be told which other manifests it needs.\n workStore.additionalClientReferenceManifestPages ??= new Set();\n workStore.additionalClientReferenceManifestPages.add(page);\n }\n return entry;\n }\n }\n }\n } else {\n // If there's no work store defined, we can assume that a client\n // reference manifest is needed during module evaluation, e.g. to\n // create a server function using a higher-order function. This\n // might also use client components which need to be serialized by\n // Flight, and therefore client references need to be resolvable. In\n // that case we search all page manifests to find the module.\n for (const { clientReferenceManifest } of clientReferenceManifestsPerRoute.values()){\n const entry = clientReferenceManifest[prop][id];\n if (entry !== undefined) {\n return entry;\n }\n }\n }\n return undefined;\n }\n });\n };\n const mappingProxies = new Map();\n const proxiedClientReferenceManifest = new Proxy({}, {\n get (_, prop) {\n const workStore = workAsyncStorage.getStore();\n switch(prop){\n case 'moduleLoading':\n case 'entryCSSFiles':\n case 'entryJSFiles':\n {\n if (!workStore) {\n throw new InvariantError(`Cannot access \"${prop}\" without a work store.`);\n }\n const registeredManifest = clientReferenceManifestsPerRoute.get(workStore.route);\n if (!registeredManifest) {\n throw new InvariantError(`The client reference manifest for route \"${workStore.route}\" does not exist.`);\n }\n return registeredManifest.clientReferenceManifest[prop];\n }\n case 'clientModules':\n case 'rscModuleMapping':\n case 'edgeRscModuleMapping':\n case 'ssrModuleMapping':\n case 'edgeSSRModuleMapping':\n {\n let proxy = mappingProxies.get(prop);\n if (!proxy) {\n proxy = createMappingProxy(prop);\n mappingProxies.set(prop, proxy);\n }\n return proxy;\n }\n default:\n {\n throw new InvariantError(`This is a proxied client reference manifest. The property \"${String(prop)}\" is not handled.`);\n }\n }\n }\n });\n // Performs the inverse of the clientModules isUseCacheStore(workUnitStore) special case above:\n //\n // For cache functions, don't do the usual rscModuleMapping lookup by module ID, but instead look\n // up by the stable client reference name. This is because cache entries must not depend on\n // build-local module IDs or chunks. So we need a second layer of indirection here to do client\n // reference name -> client module id -> rsc module mapping lookup.\n //\n // This one is created separately (not inside proxiedClientReferenceManifest.rscModuleMapping) as\n // we don't necessarily are inside a workUnitStore when we need to access this mapping (as opposed\n // to the clientModules mapping, which always has the ALS set).\n const rscModuleMappingForUseCache = new Proxy({}, {\n get (_, key) {\n const workStore = workAsyncStorage.getStore();\n if (workStore && workStore.durableUseCacheEntries) {\n var _clientReferenceManifestsPerRoute_get;\n const currentManifest = (_clientReferenceManifestsPerRoute_get = clientReferenceManifestsPerRoute.get(workStore.route)) == null ? void 0 : _clientReferenceManifestsPerRoute_get.clientReferenceManifest;\n const clientReferenceName = key;\n const clientReferenceManifestEntry = currentManifest == null ? void 0 : currentManifest.clientModules[clientReferenceName];\n if (clientReferenceManifestEntry === undefined) {\n return undefined;\n }\n const clientModuleId = clientReferenceManifestEntry.id;\n return currentManifest == null ? void 0 : currentManifest.rscModuleMapping[clientModuleId];\n } else {\n return proxiedClientReferenceManifest.rscModuleMapping[key];\n }\n }\n });\n return {\n proxiedClientReferenceManifest,\n rscModuleMappingForUseCache\n };\n}\n/**\n * This function creates a Flight-acceptable server module map proxy from our\n * Server Reference Manifest similar to our client module map. This is because\n * our manifest contains a lot of internal Next.js data that are relevant to the\n * runtime, workers, etc. that React doesn't need to know.\n */ function createServerModuleMap() {\n return new Proxy(Object.create(null), {\n get: (target, id, receiver)=>{\n var _getServerActionsManifest__id, _getServerActionsManifest_;\n // React's debug serialization can probe the module map like a plain object.\n // These probes are not server reference lookups.\n if (typeof id !== 'string') {\n return Reflect.get(target, id, receiver);\n }\n if (wellKnownProperties.has(id)) {\n return Reflect.get(target, id, receiver);\n }\n if (!mightBeServerReferenceId(id)) {\n throw getInvalidServerReferenceIdError(id);\n }\n const workers = (_getServerActionsManifest_ = getServerActionsManifest()[process.env.NEXT_RUNTIME === 'edge' ? 'edge' : 'node']) == null ? void 0 : (_getServerActionsManifest__id = _getServerActionsManifest_[id]) == null ? void 0 : _getServerActionsManifest__id.workers;\n if (!workers) {\n throw getActionNotFoundError(id);\n }\n const workStore = workAsyncStorage.getStore();\n let workerEntry;\n if (workStore) {\n workerEntry = workers[normalizeWorkerPageName(workStore.page)];\n } else {\n // If there's no work store defined, we can assume that a server\n // module map is needed during module evaluation, e.g. to create a\n // server action using a higher-order function. Therefore it should be\n // safe to return any entry from the manifest that matches the action\n // ID. They all refer to the same module ID, which must also exist in\n // the current page bundle. TODO: This is currently not guaranteed in\n // Turbopack, and needs to be fixed.\n workerEntry = Object.values(workers).at(0);\n }\n if (!workerEntry) {\n throw getActionNotFoundError(id);\n }\n const { moduleId, async, durability } = workerEntry;\n return {\n id: moduleId,\n name: id,\n chunks: [],\n async,\n durability\n };\n }\n });\n}\n/**\n * The flight entry loader keys actions by bundlePath. bundlePath corresponds\n * with the relative path (including 'app') to the page entrypoint.\n */ export function normalizeWorkerPageName(pageName) {\n if (pathHasPrefix(pageName, 'app')) {\n return pageName;\n }\n return 'app' + pageName;\n}\n/**\n * Converts a bundlePath (relative path to the entrypoint) to a routable page\n * name.\n */ function denormalizeWorkerPageName(bundlePath) {\n return normalizeAppPath(removePathPrefix(bundlePath, 'app'));\n}\n/**\n * Checks if the requested action has a worker for the current page.\n * If not, it returns the first worker that has a handler for the action.\n */ export function selectWorkerForForwarding(actionId, pageName) {\n var _serverActionsManifest__actionId;\n const serverActionsManifest = getServerActionsManifest();\n const workers = (_serverActionsManifest__actionId = serverActionsManifest[process.env.NEXT_RUNTIME === 'edge' ? 'edge' : 'node'][actionId]) == null ? void 0 : _serverActionsManifest__actionId.workers;\n // There are no workers to handle this action, nothing to forward to.\n if (!workers) {\n return;\n }\n // If there is an entry for the current page, we don't need to forward.\n if (workers[normalizeWorkerPageName(pageName)]) {\n return;\n }\n // Otherwise, grab the first worker that has a handler for this action id.\n return denormalizeWorkerPageName(Object.keys(workers)[0]);\n}\nexport function setManifestsSingleton({ page, clientReferenceManifest, serverActionsManifest: rawServerActionsManifest }) {\n const existingSingleton = globalThisWithManifests[MANIFESTS_SINGLETON];\n const route = normalizeAppPath(page);\n const serverActionsManifest = {\n encryptionKey: rawServerActionsManifest.encryptionKey,\n // Use null-prototypes for the action objects to prevent prototype pollution\n // from affecting action ID lookups.\n node: Object.assign(Object.create(null), rawServerActionsManifest.node),\n edge: Object.assign(Object.create(null), rawServerActionsManifest.edge)\n };\n if (existingSingleton) {\n existingSingleton.clientReferenceManifestsPerRoute.set(route, {\n page,\n clientReferenceManifest\n });\n existingSingleton.serverActionsManifest = serverActionsManifest;\n } else {\n const clientReferenceManifestsPerRoute = new Map([\n [\n route,\n {\n page,\n clientReferenceManifest\n }\n ]\n ]);\n const { proxiedClientReferenceManifest, rscModuleMappingForUseCache } = createProxiedClientReferenceManifest(clientReferenceManifestsPerRoute);\n globalThisWithManifests[MANIFESTS_SINGLETON] = {\n clientReferenceManifestsPerRoute,\n proxiedClientReferenceManifest,\n rscModuleMappingForUseCache,\n serverActionsManifest,\n serverModuleMap: createServerModuleMap()\n };\n }\n}\nfunction getManifestsSingleton() {\n const manifestSingleton = globalThisWithManifests[MANIFESTS_SINGLETON];\n if (!manifestSingleton) {\n throw new InvariantError('The manifests singleton was not initialized.');\n }\n return manifestSingleton;\n}\n/**\n * Returns the usual client_reference_manifest.json.\n *\n * In dev, it also looks up references of other pages (due to overlapping processing on\n * navigations).\n *\n * Inside a use-cache workUnitStore, clientModules instead map to a stable dummy value (see comments\n * above).\n */ export function getClientReferenceManifest() {\n return getManifestsSingleton().proxiedClientReferenceManifest;\n}\n/**\n * A mapping of client reference names to the RSC module id. (So a double lookup of clientModules ->\n * rscModuleMapping)\n */ export function getRscModuleMappingForUseCache() {\n return getManifestsSingleton().rscModuleMappingForUseCache;\n}\nexport function getServerActionsManifest() {\n return getManifestsSingleton().serverActionsManifest;\n}\nexport function getServerModuleMap() {\n return getManifestsSingleton().serverModuleMap;\n}\n\n//# sourceMappingURL=manifests-singleton.js.map","import { pathHasPrefix } from './path-has-prefix';\n/**\n * Given a path and a prefix it will remove the prefix when it exists in the\n * given path. It ensures it matches exactly without containing extra chars\n * and if the prefix is not there it will be noop.\n *\n * @param path The path to remove the prefix from.\n * @param prefix The prefix to be removed.\n */ export function removePathPrefix(path, prefix) {\n // If the path doesn't start with the prefix we can return it as is. This\n // protects us from situations where the prefix is a substring of the path\n // prefix such as:\n //\n // For prefix: /blog\n //\n // /blog -> true\n // /blog/ -> true\n // /blog/1 -> true\n // /blogging -> false\n // /blogging/ -> false\n // /blogging/1 -> false\n if (!pathHasPrefix(path, prefix)) {\n return path;\n }\n // Remove the prefix from the path via slicing.\n const withoutPrefix = path.slice(prefix.length);\n // If the path without the prefix starts with a `/` we can return it as is.\n if (withoutPrefix.startsWith('/')) {\n return withoutPrefix;\n }\n // If the path without the prefix doesn't start with a `/` we need to add it\n // back to the path to make sure it's a valid path.\n return `/${withoutPrefix}`;\n}\n\n//# sourceMappingURL=remove-path-prefix.js.map","import { getTracer } from '../lib/trace/tracer';\nimport { AppRenderSpan } from '../lib/trace/constants';\nimport { createPromiseWithResolvers } from '../../shared/lib/promise-with-resolvers';\nimport { scheduleImmediate, atLeastOneTask, waitAtLeastOneReactRenderTask } from '../../lib/scheduler';\nimport { ENCODED_TAGS } from './encoded-tags';\nimport { indexOfUint8Array, isEquivalentUint8Arrays, removeFromUint8Array } from './uint8array-helpers';\nimport { MISSING_ROOT_TAGS_ERROR } from '../../shared/lib/errors/constants';\nimport { RSC_HEADER, NEXT_ROUTER_PREFETCH_HEADER, NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, NEXT_RSC_UNION_QUERY } from '../../client/components/app-router-headers';\nimport { computeCacheBustingSearchParam } from '../../shared/lib/router/utils/cache-busting-search-param';\nfunction voidCatch() {\n// this catcher is designed to be used with pipeTo where we expect the underlying\n// pipe implementation to forward errors but we don't want the pipeTo promise to reject\n// and be unhandled\n}\n// We can share the same encoder instance everywhere\n// Notably we cannot do the same for TextDecoder because it is stateful\n// when handling streaming data\nconst encoder = new TextEncoder();\nexport function chainStreams(...streams) {\n // If we have no streams, return an empty stream. This behavior is\n // intentional as we're now providing the `RenderResult.EMPTY` value.\n if (streams.length === 0) {\n return new ReadableStream({\n start (controller) {\n controller.close();\n }\n });\n }\n // If we only have 1 stream we fast path it by returning just this stream\n if (streams.length === 1) {\n return streams[0];\n }\n const { readable, writable } = new TransformStream();\n // We always initiate pipeTo immediately. We know we have at least 2 streams\n // so we need to avoid closing the writable when this one finishes.\n let promise = streams[0].pipeTo(writable, {\n preventClose: true\n });\n let i = 1;\n for(; i < streams.length - 1; i++){\n const nextStream = streams[i];\n promise = promise.then(()=>nextStream.pipeTo(writable, {\n preventClose: true\n }));\n }\n // We can omit the length check because we halted before the last stream and there\n // is at least two streams so the lastStream here will always be defined\n const lastStream = streams[i];\n promise = promise.then(()=>lastStream.pipeTo(writable));\n // Catch any errors from the streams and ignore them, they will be handled\n // by whatever is consuming the readable stream.\n promise.catch(voidCatch);\n return readable;\n}\nexport function streamFromString(str) {\n return new ReadableStream({\n start (controller) {\n controller.enqueue(encoder.encode(str));\n controller.close();\n }\n });\n}\n/**\n * Creates a stream that delivers `chunk` and then closes.\n *\n * The stream is a default stream, and it has to stay one. A byte stream (`type:\n * 'bytes'`) transfers the buffer of each chunk that it receives, which detaches\n * `chunk`. A caller that keeps `chunk` to serve more than one read, such as an\n * in-memory cache handler, loses the data on the first read.\n *\n * Every reader receives the same `chunk` instance. A reader that modifies it\n * changes what later readers see.\n */ export function streamFromBuffer(chunk) {\n return new ReadableStream({\n start (controller) {\n controller.enqueue(chunk);\n controller.close();\n }\n });\n}\nasync function streamToChunks(stream) {\n const reader = stream.getReader();\n const chunks = [];\n while(true){\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n }\n return chunks;\n}\nfunction concatUint8Arrays(chunks) {\n const totalLength = chunks.reduce((sum, chunk)=>sum + chunk.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks){\n result.set(chunk, offset);\n offset += chunk.length;\n }\n return result;\n}\nexport async function webstreamToUint8Array(stream) {\n return concatUint8Arrays(await streamToChunks(stream));\n}\nfunction webToReadable(stream) {\n if (process.env.NEXT_RUNTIME === 'edge') {\n throw new Error('webToReadable cannot be used in the edge runtime');\n } else {\n let Readable;\n if (process.env.TURBOPACK) {\n Readable = require('node:stream').Readable;\n } else if (process.env.__NEXT_BUNDLER === 'Webpack' || process.env.__NEXT_BUNDLER === 'Rspack') {\n Readable = __non_webpack_require__('node:stream').Readable;\n } else {\n Readable = require('node:stream').Readable;\n }\n if (stream instanceof Readable) {\n return stream;\n }\n return Readable.fromWeb(stream);\n }\n}\nexport async function nodestreamToUint8Array(stream) {\n const chunks = [];\n for await (const chunk of webToReadable(stream)){\n chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);\n }\n return Buffer.concat(chunks);\n}\nexport async function streamToUint8Array(stream) {\n if (process.env.NEXT_RUNTIME === 'edge') {\n // Edge runtime always uses web streams\n return webstreamToUint8Array(stream);\n } else {\n let Readable;\n if (process.env.TURBOPACK) {\n Readable = require('node:stream').Readable;\n } else if (process.env.__NEXT_BUNDLER === 'Webpack' || process.env.__NEXT_BUNDLER === 'Rspack') {\n Readable = __non_webpack_require__('node:stream').Readable;\n } else {\n Readable = require('node:stream').Readable;\n }\n if (stream instanceof Readable) {\n return nodestreamToUint8Array(stream);\n }\n return webstreamToUint8Array(stream);\n }\n}\nexport async function streamToBuffer(stream) {\n return Buffer.concat(await streamToChunks(stream));\n}\nexport async function streamToString(stream, signal) {\n const decoder = new TextDecoder('utf-8', {\n fatal: true\n });\n let string = '';\n for await (const chunk of stream){\n if (signal == null ? void 0 : signal.aborted) {\n return string;\n }\n string += decoder.decode(chunk, {\n stream: true\n });\n }\n string += decoder.decode();\n return string;\n}\nexport function createBufferedTransformStream(options = {}) {\n const { maxBufferByteLength = Infinity } = options;\n let bufferedChunks = [];\n let bufferByteLength = 0;\n let pending;\n const flush = (controller)=>{\n try {\n if (bufferedChunks.length === 0) {\n return;\n }\n const chunk = new Uint8Array(bufferByteLength);\n let copiedBytes = 0;\n for(let i = 0; i < bufferedChunks.length; i++){\n const bufferedChunk = bufferedChunks[i];\n chunk.set(bufferedChunk, copiedBytes);\n copiedBytes += bufferedChunk.byteLength;\n }\n // We just wrote all the buffered chunks so we need to reset the bufferedChunks array\n // and our bufferByteLength to prepare for the next round of buffered chunks\n bufferedChunks.length = 0;\n bufferByteLength = 0;\n controller.enqueue(chunk);\n } catch {\n // If an error occurs while enqueuing, it can't be due to this\n // transformer. It's most likely caused by the controller having been\n // errored (for example, if the stream was cancelled).\n }\n };\n const scheduleFlush = (controller)=>{\n if (pending) {\n return;\n }\n const detached = createPromiseWithResolvers();\n pending = detached;\n scheduleImmediate(()=>{\n try {\n flush(controller);\n } finally{\n pending = undefined;\n detached.resolve();\n }\n });\n };\n return new TransformStream({\n transform (chunk, controller) {\n // Combine the previous buffer with the new chunk.\n bufferedChunks.push(chunk);\n bufferByteLength += chunk.byteLength;\n if (bufferByteLength >= maxBufferByteLength) {\n flush(controller);\n } else {\n scheduleFlush(controller);\n }\n },\n flush () {\n return pending == null ? void 0 : pending.promise;\n }\n });\n}\n// TODO this is currently unused but once we add proper output:export support, it needs to be\n// revisited. See https://github.com/vercel/next.js/pull/89478 for more details\n//\n// function createPrefetchCommentStream(\n// isBuildTimePrerendering: boolean,\n// buildId: string\n// ): TransformStream<Uint8Array, Uint8Array> {\n// // Insert an extra comment at the beginning of the HTML document. This must\n// // come after the DOCTYPE, which is inserted by React.\n// //\n// // The first chunk sent by React will contain the doctype. After that, we can\n// // pass through the rest of the chunks as-is.\n// let didTransformFirstChunk = false\n// return new TransformStream({\n// transform(chunk, controller) {\n// if (isBuildTimePrerendering && !didTransformFirstChunk) {\n// didTransformFirstChunk = true\n// const decoder = new TextDecoder('utf-8', { fatal: true })\n// const chunkStr = decoder.decode(chunk, {\n// stream: true,\n// })\n// const updatedChunkStr = insertBuildIdComment(chunkStr, buildId)\n// controller.enqueue(encoder.encode(updatedChunkStr))\n// return\n// }\n// controller.enqueue(chunk)\n// },\n// })\n// }\nexport function renderToInitialFizzStream({ ReactDOMServer, element, streamOptions }) {\n return getTracer().trace(AppRenderSpan.renderToReadableStream, async ()=>ReactDOMServer.renderToReadableStream(element, streamOptions));\n}\nexport function createMetadataTransformStream(insert) {\n let chunkIndex = -1;\n let isMarkRemoved = false;\n return new TransformStream({\n async transform (chunk, controller) {\n let iconMarkIndex = -1;\n let closedHeadIndex = -1;\n chunkIndex++;\n if (isMarkRemoved) {\n controller.enqueue(chunk);\n return;\n }\n let iconMarkLength = 0;\n // Only search for the closed head tag once\n if (iconMarkIndex === -1) {\n iconMarkIndex = indexOfUint8Array(chunk, ENCODED_TAGS.META.ICON_MARK);\n if (iconMarkIndex === -1) {\n controller.enqueue(chunk);\n return;\n } else {\n // When we found the `<meta name=\"«nxt-icon»\"` tag prefix, we will remove it from the chunk.\n // Its close tag could either be `/>` or `>`, checking the next char to ensure we cover both cases.\n iconMarkLength = ENCODED_TAGS.META.ICON_MARK.length;\n // Check if next char is /, this is for xml mode.\n if (chunk[iconMarkIndex + iconMarkLength] === 47) {\n iconMarkLength += 2;\n } else {\n // The last char is `>`\n iconMarkLength++;\n }\n }\n }\n // Check if icon mark is inside <head> tag in the first chunk.\n if (chunkIndex === 0) {\n closedHeadIndex = indexOfUint8Array(chunk, ENCODED_TAGS.CLOSED.HEAD);\n if (iconMarkIndex !== -1) {\n // The mark icon is located in the 1st chunk before the head tag.\n // We do not need to insert the script tag in this case because it's in the head.\n // Just remove the icon mark from the chunk.\n if (iconMarkIndex < closedHeadIndex) {\n const replaced = new Uint8Array(chunk.length - iconMarkLength);\n // Remove the icon mark from the chunk.\n replaced.set(chunk.subarray(0, iconMarkIndex));\n replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex);\n chunk = replaced;\n } else {\n // The icon mark is after the head tag, replace and insert the script tag at that position.\n const insertion = await insert();\n const encodedInsertion = encoder.encode(insertion);\n const insertionLength = encodedInsertion.length;\n const replaced = new Uint8Array(chunk.length - iconMarkLength + insertionLength);\n replaced.set(chunk.subarray(0, iconMarkIndex));\n replaced.set(encodedInsertion, iconMarkIndex);\n replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex + insertionLength);\n chunk = replaced;\n }\n isMarkRemoved = true;\n }\n // If there's no icon mark located, it will be handled later when if present in the following chunks.\n } else {\n // When it's appeared in the following chunks, we'll need to\n // remove the mark and then insert the script tag at that position.\n const insertion = await insert();\n const encodedInsertion = encoder.encode(insertion);\n const insertionLength = encodedInsertion.length;\n // Replace the icon mark with the hoist script or empty string.\n const replaced = new Uint8Array(chunk.length - iconMarkLength + insertionLength);\n // Set the first part of the chunk, before the icon mark.\n replaced.set(chunk.subarray(0, iconMarkIndex));\n // Set the insertion after the icon mark.\n replaced.set(encodedInsertion, iconMarkIndex);\n // Set the rest of the chunk after the icon mark.\n replaced.set(chunk.subarray(iconMarkIndex + iconMarkLength), iconMarkIndex + insertionLength);\n chunk = replaced;\n isMarkRemoved = true;\n }\n controller.enqueue(chunk);\n }\n });\n}\nexport function createHeadInsertionTransformStream(insert) {\n let inserted = false;\n // We need to track if this transform saw any bytes because if it didn't\n // we won't want to insert any server HTML at all\n let hasBytes = false;\n return new TransformStream({\n async transform (chunk, controller) {\n hasBytes = true;\n const insertion = await insert();\n if (inserted) {\n if (insertion) {\n const encodedInsertion = encoder.encode(insertion);\n controller.enqueue(encodedInsertion);\n }\n controller.enqueue(chunk);\n } else {\n // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for.\n const index = indexOfUint8Array(chunk, ENCODED_TAGS.CLOSED.HEAD);\n // In fully static rendering or non PPR rendering cases:\n // `/head>` will always be found in the chunk in first chunk rendering.\n if (index !== -1) {\n if (insertion) {\n const encodedInsertion = encoder.encode(insertion);\n // Get the total count of the bytes in the chunk and the insertion\n // e.g.\n // chunk = <head><meta charset=\"utf-8\"></head>\n // insertion = <script>...</script>\n // output = <head><meta charset=\"utf-8\"> [ <script>...</script> ] </head>\n const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length);\n // Append the first part of the chunk, before the head tag\n insertedHeadContent.set(chunk.slice(0, index));\n // Append the server inserted content\n insertedHeadContent.set(encodedInsertion, index);\n // Append the rest of the chunk\n insertedHeadContent.set(chunk.slice(index), index + encodedInsertion.length);\n controller.enqueue(insertedHeadContent);\n } else {\n controller.enqueue(chunk);\n }\n inserted = true;\n } else {\n // This will happens in PPR rendering during next start, when the page is partially rendered.\n // When the page resumes, the head tag will be found in the middle of the chunk.\n // Where we just need to append the insertion and chunk to the current stream.\n // e.g.\n // PPR-static: <head>...</head><body> [ resume content ] </body>\n // PPR-resume: [ insertion ] [ rest content ]\n if (insertion) {\n controller.enqueue(encoder.encode(insertion));\n }\n controller.enqueue(chunk);\n inserted = true;\n }\n }\n },\n async flush (controller) {\n // Check before closing if there's anything remaining to insert.\n if (hasBytes) {\n const insertion = await insert();\n if (insertion) {\n controller.enqueue(encoder.encode(insertion));\n }\n }\n }\n });\n}\nasync function createClientResumeScriptInsertionTransformStream() {\n const segmentPath = '/_full';\n const cacheBustingHeader = await computeCacheBustingSearchParam('1', '/_full', undefined, undefined // headers[NEXT_URL]\n );\n const searchStr = `${NEXT_RSC_UNION_QUERY}=${cacheBustingHeader}`;\n const NEXT_CLIENT_RESUME_SCRIPT = `<script>__NEXT_CLIENT_RESUME=fetch(location.pathname+'?${searchStr}',{credentials:'same-origin',headers:{'${RSC_HEADER}': '1','${NEXT_ROUTER_PREFETCH_HEADER}': '1','${NEXT_ROUTER_SEGMENT_PREFETCH_HEADER}': '${segmentPath}'}})</script>`;\n let didAlreadyInsert = false;\n return new TransformStream({\n transform (chunk, controller) {\n if (didAlreadyInsert) {\n // Already inserted the script into the head. Pass through.\n controller.enqueue(chunk);\n return;\n }\n // TODO (@Ethan-Arrowood): Replace the generic `indexOfUint8Array` method with something finely tuned for the subset of things actually being checked for.\n const headClosingTagIndex = indexOfUint8Array(chunk, ENCODED_TAGS.CLOSED.HEAD);\n if (headClosingTagIndex === -1) {\n // In fully static rendering or non PPR rendering cases:\n // `/head>` will always be found in the chunk in first chunk rendering.\n controller.enqueue(chunk);\n return;\n }\n const encodedInsertion = encoder.encode(NEXT_CLIENT_RESUME_SCRIPT);\n // Get the total count of the bytes in the chunk and the insertion\n // e.g.\n // chunk = <head><meta charset=\"utf-8\"></head>\n // insertion = <script>...</script>\n // output = <head><meta charset=\"utf-8\"> [ <script>...</script> ] </head>\n const insertedHeadContent = new Uint8Array(chunk.length + encodedInsertion.length);\n // Append the first part of the chunk, before the head tag\n insertedHeadContent.set(chunk.slice(0, headClosingTagIndex));\n // Append the server inserted content\n insertedHeadContent.set(encodedInsertion, headClosingTagIndex);\n // Append the rest of the chunk\n insertedHeadContent.set(chunk.slice(headClosingTagIndex), headClosingTagIndex + encodedInsertion.length);\n controller.enqueue(insertedHeadContent);\n didAlreadyInsert = true;\n }\n });\n}\n// Suffix after main body content - scripts before </body>,\n// but wait for the major chunks to be enqueued.\nexport function createDeferredSuffixStream(suffix) {\n let flushed = false;\n let pending;\n const flush = (controller)=>{\n const detached = createPromiseWithResolvers();\n pending = detached;\n scheduleImmediate(()=>{\n try {\n controller.enqueue(encoder.encode(suffix));\n } catch {\n // If an error occurs while enqueuing it can't be due to this\n // transformers fault. It's likely due to the controller being\n // errored due to the stream being cancelled.\n } finally{\n pending = undefined;\n detached.resolve();\n }\n });\n };\n return new TransformStream({\n transform (chunk, controller) {\n controller.enqueue(chunk);\n // If we've already flushed, we're done.\n if (flushed) return;\n // Schedule the flush to happen.\n flushed = true;\n flush(controller);\n },\n flush (controller) {\n if (pending) return pending.promise;\n if (flushed) return;\n // Flush now.\n controller.enqueue(encoder.encode(suffix));\n }\n });\n}\nexport function createFlightDataInjectionTransformStream(stream, delayDataUntilFirstHtmlChunk) {\n let htmlStreamFinished = false;\n let pull = null;\n let donePulling = false;\n function startOrContinuePulling(controller) {\n if (!pull) {\n pull = startPulling(controller);\n }\n return pull;\n }\n async function startPulling(controller) {\n const reader = stream.getReader();\n if (delayDataUntilFirstHtmlChunk) {\n // NOTE: streaming flush\n // We are buffering here for the inlined data stream because the\n // \"shell\" stream might be chunkenized again by the underlying stream\n // implementation, e.g. with a specific high-water mark. To ensure it's\n // the safe timing to pipe the data stream, this extra tick is\n // necessary.\n // We don't start reading until we've left the current Task to ensure\n // that it's inserted after flushing the shell. Note that this implementation\n // might get stale if impl details of Fizz change in the future.\n await atLeastOneTask();\n }\n try {\n while(true){\n const { done, value } = await reader.read();\n if (done) {\n donePulling = true;\n return;\n }\n // We want to prioritize HTML over RSC data.\n // The SSR render is based on the same RSC stream, so when we get a new RSC chunk,\n // we're likely to produce an HTML chunk as well, so give it a chance to flush first.\n if (!delayDataUntilFirstHtmlChunk && !htmlStreamFinished) {\n await atLeastOneTask();\n }\n controller.enqueue(value);\n }\n } catch (err) {\n controller.error(err);\n }\n }\n return new TransformStream({\n start (controller) {\n if (!delayDataUntilFirstHtmlChunk) {\n startOrContinuePulling(controller);\n }\n },\n transform (chunk, controller) {\n controller.enqueue(chunk);\n // Start the streaming if it hasn't already been started yet.\n if (delayDataUntilFirstHtmlChunk) {\n startOrContinuePulling(controller);\n }\n },\n flush (controller) {\n htmlStreamFinished = true;\n if (donePulling) {\n return;\n }\n return startOrContinuePulling(controller);\n }\n });\n}\nexport const CLOSE_TAG = '</body></html>';\n/**\n * This transform stream moves the suffix to the end of the stream, so results\n * like `</body></html><script>...</script>` will be transformed to\n * `<script>...</script></body></html>`.\n */ export function createMoveSuffixStream() {\n let foundSuffix = false;\n return new TransformStream({\n transform (chunk, controller) {\n if (foundSuffix) {\n return controller.enqueue(chunk);\n }\n const index = indexOfUint8Array(chunk, ENCODED_TAGS.CLOSED.BODY_AND_HTML);\n if (index > -1) {\n foundSuffix = true;\n // If the whole chunk is the suffix, then don't write anything, it will\n // be written in the flush.\n if (chunk.length === ENCODED_TAGS.CLOSED.BODY_AND_HTML.length) {\n return;\n }\n // Write out the part before the suffix.\n const before = chunk.slice(0, index);\n controller.enqueue(before);\n // In the case where the suffix is in the middle of the chunk, we need\n // to split the chunk into two parts.\n if (chunk.length > ENCODED_TAGS.CLOSED.BODY_AND_HTML.length + index) {\n // Write out the part after the suffix.\n const after = chunk.slice(index + ENCODED_TAGS.CLOSED.BODY_AND_HTML.length);\n controller.enqueue(after);\n }\n } else {\n controller.enqueue(chunk);\n }\n },\n flush (controller) {\n // Even if we didn't find the suffix, the HTML is not valid if we don't\n // add it, so insert it at the end.\n controller.enqueue(ENCODED_TAGS.CLOSED.BODY_AND_HTML);\n }\n });\n}\nfunction createStripDocumentClosingTagsTransform() {\n return new TransformStream({\n transform (chunk, controller) {\n // We rely on the assumption that chunks will never break across a code unit.\n // This is reasonable because we currently concat all of React's output from a single\n // flush into one chunk before streaming it forward which means the chunk will represent\n // a single coherent utf-8 string. This is not safe to use if we change our streaming to no\n // longer do this large buffered chunk\n if (isEquivalentUint8Arrays(chunk, ENCODED_TAGS.CLOSED.BODY_AND_HTML) || isEquivalentUint8Arrays(chunk, ENCODED_TAGS.CLOSED.BODY) || isEquivalentUint8Arrays(chunk, ENCODED_TAGS.CLOSED.HTML)) {\n // the entire chunk is the closing tags; return without enqueueing anything.\n return;\n }\n // We assume these tags will go at together at the end of the document and that\n // they won't appear anywhere else in the document. This is not really a safe assumption\n // but until we revamp our streaming infra this is a performant way to string the tags\n chunk = removeFromUint8Array(chunk, ENCODED_TAGS.CLOSED.BODY);\n chunk = removeFromUint8Array(chunk, ENCODED_TAGS.CLOSED.HTML);\n controller.enqueue(chunk);\n }\n });\n}\nexport function createHtmlDataDplIdTransformStream(dplId) {\n let didTransform = false;\n return new TransformStream({\n transform (chunk, controller) {\n if (didTransform) {\n controller.enqueue(chunk);\n return;\n }\n const htmlTagIndex = indexOfUint8Array(chunk, ENCODED_TAGS.OPENING.HTML);\n if (htmlTagIndex === -1) {\n controller.enqueue(chunk);\n return;\n }\n // Insert the data-dpl-id attribute right after \"<html \"\n const insertionPoint = htmlTagIndex + ENCODED_TAGS.OPENING.HTML.length;\n const attribute = ` data-dpl-id=\"${dplId}\"`;\n const encodedAttribute = encoder.encode(attribute);\n const modifiedChunk = new Uint8Array(chunk.length + encodedAttribute.length);\n // Copy everything before the insertion point\n modifiedChunk.set(chunk.subarray(0, insertionPoint));\n // Insert the attribute\n modifiedChunk.set(encodedAttribute, insertionPoint);\n // Copy everything after\n modifiedChunk.set(chunk.subarray(insertionPoint), insertionPoint + encodedAttribute.length);\n controller.enqueue(modifiedChunk);\n didTransform = true;\n }\n });\n}\n/*\n * Checks if the root layout is missing the html or body tags\n * and if so, it will inject a script tag to throw an error in the browser, showing the user\n * the error message in the error overlay.\n */ export function createRootLayoutValidatorStream() {\n let foundHtml = false;\n let foundBody = false;\n return new TransformStream({\n async transform (chunk, controller) {\n // Peek into the streamed chunk to see if the tags are present.\n if (!foundHtml && indexOfUint8Array(chunk, ENCODED_TAGS.OPENING.HTML) > -1) {\n foundHtml = true;\n }\n if (!foundBody && indexOfUint8Array(chunk, ENCODED_TAGS.OPENING.BODY) > -1) {\n foundBody = true;\n }\n controller.enqueue(chunk);\n },\n flush (controller) {\n const missingTags = [];\n if (!foundHtml) missingTags.push('html');\n if (!foundBody) missingTags.push('body');\n if (!missingTags.length) return;\n controller.enqueue(encoder.encode(`<html id=\"__next_error__\">\n <template\n data-next-error-message=\"Missing ${missingTags.map((c)=>`<${c}>`).join(missingTags.length > 1 ? ' and ' : '')} tags in the root layout.\\nRead more at https://nextjs.org/docs/messages/missing-root-layout-tags\"\n data-next-error-digest=\"${MISSING_ROOT_TAGS_ERROR}\"\n data-next-error-stack=\"\"\n ></template>\n `));\n }\n });\n}\nexport function chainTransformers(readable, transformers) {\n let stream = readable;\n for (const transformer of transformers){\n if (!transformer) continue;\n stream = stream.pipeThrough(transformer);\n }\n return stream;\n}\nexport async function continueFizzStream(renderStream, { suffix, inlinedDataStream, waitForAllReady, deploymentId, getServerInsertedHTML, getServerInsertedMetadata, validateRootLayout }) {\n // Suffix itself might contain close tags at the end, so we need to split it.\n const suffixUnclosed = suffix ? suffix.split(CLOSE_TAG, 1)[0] : null;\n if (waitForAllReady) {\n // Wait for all Suspense boundaries to resolve before continuing.\n await renderStream.allReady;\n } else {\n // Otherwise, we want to make sure Fizz is done with all microtasky work\n // before we start pulling the stream and cause a flush.\n await waitAtLeastOneReactRenderTask();\n }\n return chainTransformers(renderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n // Insert data-dpl-id attribute on the html tag\n deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null,\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata),\n // Insert suffix content\n suffixUnclosed != null && suffixUnclosed.length > 0 ? createDeferredSuffixStream(suffixUnclosed) : null,\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n inlinedDataStream ? createFlightDataInjectionTransformStream(inlinedDataStream, true) : null,\n // Validate the root layout for missing html or body tags\n validateRootLayout ? createRootLayoutValidatorStream() : null,\n // Close tags should always be deferred to the end\n createMoveSuffixStream(),\n // Special head insertions\n // TODO-APP: Insert server side html to end of head in app layout rendering, to avoid\n // hydration errors. Remove this once it's ready to be handled by react itself.\n createHeadInsertionTransformStream(getServerInsertedHTML)\n ]);\n}\nexport async function continueDynamicPrerender(prerenderStream, { getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) {\n return chainTransformers(prerenderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n createStripDocumentClosingTagsTransform(),\n // Insert data-dpl-id attribute on the html tag\n deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null,\n // Insert generated tags to head\n createHeadInsertionTransformStream(getServerInsertedHTML),\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata)\n ]);\n}\nexport async function continueStaticPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) {\n return chainTransformers(prerenderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n // Add build id comment to start of the HTML document (in export mode)\n // Insert data-dpl-id attribute on the html tag\n deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null,\n // Insert generated tags to head\n createHeadInsertionTransformStream(getServerInsertedHTML),\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata),\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n createFlightDataInjectionTransformStream(inlinedDataStream, true),\n // Close tags should always be deferred to the end\n createMoveSuffixStream()\n ]);\n}\nexport async function continueStaticFallbackPrerender(prerenderStream, { inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) {\n // Same as `continueStaticPrerender`, but also inserts an additional script\n // to instruct the client to start fetching the hydration data as early\n // as possible.\n return chainTransformers(prerenderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n // Insert data-dpl-id attribute on the html tag\n deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null,\n // Insert generated tags to head\n createHeadInsertionTransformStream(getServerInsertedHTML),\n // Insert the client resume script into the head\n await createClientResumeScriptInsertionTransformStream(),\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata),\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n createFlightDataInjectionTransformStream(inlinedDataStream, true),\n // Close tags should always be deferred to the end\n createMoveSuffixStream()\n ]);\n}\nexport async function continueDynamicHTMLResume(renderStream, { delayDataUntilFirstHtmlChunk, inlinedDataStream, getServerInsertedHTML, getServerInsertedMetadata, deploymentId }) {\n return chainTransformers(renderStream, [\n // Buffer everything to avoid flushing too frequently\n createBufferedTransformStream(),\n // Insert data-dpl-id attribute on the html tag\n deploymentId ? createHtmlDataDplIdTransformStream(deploymentId) : null,\n // Insert generated tags to head\n createHeadInsertionTransformStream(getServerInsertedHTML),\n // Transform metadata\n createMetadataTransformStream(getServerInsertedMetadata),\n // Insert the inlined data (Flight data, form state, etc.) stream into the HTML\n createFlightDataInjectionTransformStream(inlinedDataStream, delayDataUntilFirstHtmlChunk),\n // Close tags should always be deferred to the end\n createMoveSuffixStream()\n ]);\n}\nexport function createDocumentClosingStream() {\n return streamFromString(CLOSE_TAG);\n}\n// ---------------------------------------------------------------------------\n// Runtime prefetch transform (Web streams)\n// ---------------------------------------------------------------------------\n/**\n * Web TransformStream that replaces the runtime prefetch sentinel in an RSC\n * payload stream: `[<sentinel>]` -> `[<isPartial>,<staleTime>]`.\n *\n * This is the web equivalent of createRuntimePrefetchNodeTransform\n * in node-stream-helpers.ts.\n */ export function createRuntimePrefetchTransformStream(sentinel, isPartial, staleTime) {\n const enc = new TextEncoder();\n // Search for: [<sentinel>]\n // Replace with: [<isPartial>,<staleTime>]\n const search = enc.encode(`[${sentinel}]`);\n const first = search[0];\n const replace = enc.encode(`[${isPartial},${staleTime}]`);\n const searchLen = search.length;\n let currentChunk = null;\n let found = false;\n function processChunk(controller, nextChunk) {\n if (found) {\n if (nextChunk) {\n controller.enqueue(nextChunk);\n }\n return;\n }\n if (currentChunk) {\n // We can't search past the index that can contain a full match\n let exclusiveUpperBound = currentChunk.length - (searchLen - 1);\n if (nextChunk) {\n // If we have any overflow bytes we can search up to the chunk's final byte\n exclusiveUpperBound += Math.min(nextChunk.length, searchLen - 1);\n }\n if (exclusiveUpperBound < 1) {\n // we can't match the current chunk.\n controller.enqueue(currentChunk);\n currentChunk = nextChunk // advance so we don't process this chunk again\n ;\n return;\n }\n let currentIndex = currentChunk.indexOf(first);\n // check the current candidate match if it is within the bounds of our search space for the currentChunk\n candidateLoop: while(-1 < currentIndex && currentIndex < exclusiveUpperBound){\n // We already know index 0 matches because we used indexOf to find the candidateIndex so we start at index 1\n let matchIndex = 1;\n while(matchIndex < searchLen){\n const candidateIndex = currentIndex + matchIndex;\n const candidateValue = candidateIndex < currentChunk.length ? currentChunk[candidateIndex] : nextChunk[candidateIndex - currentChunk.length];\n if (candidateValue !== search[matchIndex]) {\n // No match, reset and continue the search from the next position\n currentIndex = currentChunk.indexOf(first, currentIndex + 1);\n continue candidateLoop;\n }\n matchIndex++;\n }\n // We found a complete match. currentIndex is our starting point to replace the value.\n found = true;\n // enqueue everything up to the match\n controller.enqueue(currentChunk.subarray(0, currentIndex));\n // enqueue the replacement value\n controller.enqueue(replace);\n // If there are bytes in the currentChunk after the match enqueue them\n if (currentIndex + searchLen < currentChunk.length) {\n controller.enqueue(currentChunk.slice(currentIndex + searchLen));\n }\n // If we have a next chunk we enqueue it now\n if (nextChunk) {\n // if replacement spills over to the next chunk we first exclude the replaced bytes\n const overflowBytes = currentIndex + searchLen - currentChunk.length;\n const truncatedChunk = overflowBytes > 0 ? nextChunk.subarray(overflowBytes) : nextChunk;\n controller.enqueue(truncatedChunk);\n }\n // We are now in found mode and don't need to track currentChunk anymore\n currentChunk = null;\n return;\n }\n // No match found in this chunk, emit it and wait for the next one\n controller.enqueue(currentChunk);\n }\n // Advance to the next chunk\n currentChunk = nextChunk;\n }\n return new TransformStream({\n transform (chunk, controller) {\n processChunk(controller, chunk);\n },\n flush (controller) {\n processChunk(controller, null);\n }\n });\n}\n\n//# sourceMappingURL=node-web-streams-helper.js.map","import { isNodeNextResponse } from './base-http/helpers';\nimport { pipeToNodeResponse } from './pipe-readable';\nimport { splitCookiesString } from './web/utils';\n/**\n * Sends the response on the underlying next response object.\n *\n * @param req the underlying request object\n * @param res the underlying response object\n * @param response the response to send\n */ export async function sendResponse(req, res, response, waitUntil) {\n if (// The type check here ensures that `req` is correctly typed, and the\n // environment variable check provides dead code elimination.\n process.env.NEXT_RUNTIME !== 'edge' && isNodeNextResponse(res)) {\n var // Copy over the response headers.\n _response_headers;\n // Copy over the response status.\n res.statusCode = response.status;\n res.statusMessage = response.statusText;\n // TODO: this is not spec-compliant behavior and we should not restrict\n // headers that are allowed to appear many times.\n //\n // See:\n // https://github.com/vercel/next.js/pull/70127\n const headersWithMultipleValuesAllowed = [\n // can add more headers to this list if needed\n 'set-cookie',\n 'www-authenticate',\n 'proxy-authenticate',\n 'vary'\n ];\n (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{\n // `x-middleware-set-cookie` is an internal header not needed for the response\n if (name.toLowerCase() === 'x-middleware-set-cookie') {\n return;\n }\n // The append handling is special cased for `set-cookie`.\n if (name.toLowerCase() === 'set-cookie') {\n // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici\n for (const cookie of splitCookiesString(value)){\n res.appendHeader(name, cookie);\n }\n } else {\n // only append the header if it is either not present in the outbound response\n // or if the header supports multiple values\n const isHeaderPresent = typeof res.getHeader(name) !== 'undefined';\n if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) {\n res.appendHeader(name, value);\n }\n }\n });\n /**\n * The response can't be directly piped to the underlying response. The\n * following is duplicated from the edge runtime handler.\n *\n * See packages/next/server/next-server.ts\n */ const { originalResponse } = res;\n // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD\n if (response.body && req.method !== 'HEAD') {\n await pipeToNodeResponse(response.body, originalResponse, waitUntil);\n } else {\n originalResponse.end();\n }\n }\n}\n\n//# sourceMappingURL=send-response.js.map","import { NEXT_INTERCEPTION_MARKER_PREFIX, NEXT_QUERY_PARAM_PREFIX } from '../../lib/constants';\n/**\n * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any\n * headers with multiple values will be joined with a comma and space. Any\n * headers that have an undefined value will be ignored and others will be\n * coerced to strings.\n *\n * @param nodeHeaders the headers object to convert\n * @returns the converted headers object\n */ export function fromNodeOutgoingHttpHeaders(nodeHeaders) {\n const headers = new Headers();\n for (let [key, value] of Object.entries(nodeHeaders)){\n const values = Array.isArray(value) ? value : [\n value\n ];\n for (let v of values){\n if (typeof v === 'undefined') continue;\n if (typeof v === 'number') {\n v = v.toString();\n }\n headers.append(key, v);\n }\n }\n return headers;\n}\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n \n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/ export function splitCookiesString(cookiesString) {\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n function skipWhitespace() {\n while(pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))){\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n return ch !== '=' && ch !== ';' && ch !== ',';\n }\n while(pos < cookiesString.length){\n start = pos;\n cookiesSeparatorFound = false;\n while(skipWhitespace()){\n ch = cookiesString.charAt(pos);\n if (ch === ',') {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n skipWhitespace();\n nextStart = pos;\n while(pos < cookiesString.length && notSpecialChar()){\n pos += 1;\n }\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n return cookiesStrings;\n}\n/**\n * Converts a Headers object to a Node.js OutgoingHttpHeaders object. This is\n * required to support the set-cookie header, which may have multiple values.\n *\n * @param headers the headers object to convert\n * @returns the converted headers object\n */ export function toNodeOutgoingHttpHeaders(headers) {\n const nodeHeaders = {};\n const cookies = [];\n if (headers) {\n for (const [key, value] of headers.entries()){\n if (key.toLowerCase() === 'set-cookie') {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value));\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies;\n } else {\n nodeHeaders[key] = value;\n }\n }\n }\n return nodeHeaders;\n}\n/**\n * Validate the correctness of a user-provided URL.\n */ export function validateURL(url) {\n try {\n return String(new URL(String(url)));\n } catch (error) {\n throw new Error(`URL is malformed \"${String(url)}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`, {\n cause: error\n });\n }\n}\n/**\n * Normalizes `nxtP` and `nxtI` query param values to remove the prefix.\n * This function does not mutate the input key.\n */ export function normalizeNextQueryParam(key) {\n const prefixes = [\n NEXT_QUERY_PARAM_PREFIX,\n NEXT_INTERCEPTION_MARKER_PREFIX\n ];\n for (const prefix of prefixes){\n if (key !== prefix && key.startsWith(prefix)) {\n return key.substring(prefix.length);\n }\n }\n return null;\n}\n\n//# sourceMappingURL=utils.js.map","/**\n * This file provides some helpers that should be used in conjunction with\n * explicit environment checks. When combined with the environment checks, it\n * will ensure that the correct typings are used as well as enable code\n * elimination.\n */ /**\n * Type guard to determine if a request is a WebNextRequest. This does not\n * actually check the type of the request, but rather the runtime environment.\n * It's expected that when the runtime environment is the edge runtime, that any\n * base request is a WebNextRequest.\n */ export const isWebNextRequest = (req)=>process.env.NEXT_RUNTIME === 'edge';\n/**\n * Type guard to determine if a response is a WebNextResponse. This does not\n * actually check the type of the response, but rather the runtime environment.\n * It's expected that when the runtime environment is the edge runtime, that any\n * base response is a WebNextResponse.\n */ export const isWebNextResponse = (res)=>process.env.NEXT_RUNTIME === 'edge';\n/**\n * Type guard to determine if a request is a NodeNextRequest. This does not\n * actually check the type of the request, but rather the runtime environment.\n * It's expected that when the runtime environment is the node runtime, that any\n * base request is a NodeNextRequest.\n */ export const isNodeNextRequest = (req)=>process.env.NEXT_RUNTIME !== 'edge';\n/**\n * Type guard to determine if a response is a NodeNextResponse. This does not\n * actually check the type of the response, but rather the runtime environment.\n * It's expected that when the runtime environment is the node runtime, that any\n * base response is a NodeNextResponse.\n */ export const isNodeNextResponse = (res)=>process.env.NEXT_RUNTIME !== 'edge';\n\n//# sourceMappingURL=helpers.js.map","import { ensureLeadingSlash } from './ensure-leading-slash';\nimport { isDynamicRoute } from '../router/utils';\nimport { NormalizeError } from '../utils';\n/**\n * Takes a page and transforms it into its file counterpart ensuring that the\n * output is normalized. Note this function is not idempotent because a page\n * `/index` can be referencing `/index/index.js` and `/index/index` could be\n * referencing `/index/index/index.js`. Examples:\n * - `/` -> `/index`\n * - `/index/foo` -> `/index/index/foo`\n * - `/index` -> `/index/index`\n */ export function normalizePagePath(page) {\n const normalized = /^\\/index(\\/|$)/.test(page) && !isDynamicRoute(page) ? `/index${page}` : page === '/' ? '/index' : ensureLeadingSlash(page);\n if (process.env.NEXT_RUNTIME !== 'edge') {\n const { posix } = require('path');\n const resolvedPage = posix.normalize(normalized);\n if (resolvedPage !== normalized) {\n throw new NormalizeError(`Requested and resolved page mismatch: ${normalized} ${resolvedPage}`);\n }\n }\n return normalized;\n}\n\n//# sourceMappingURL=normalize-page-path.js.map","import { AppRenderSpan, NextNodeServerSpan } from './trace/constants';\nimport { isRequestInsightsEnabled, recordRequestInsightFetch } from './trace/request-insights';\nimport { getRequestInsightsIdentity } from './trace/request-insights-identity';\nimport { getTracer, SpanKind } from './trace/tracer';\nimport { CACHE_ONE_YEAR_SECONDS, INFINITE_CACHE, NEXT_CACHE_TAG_MAX_ITEMS, NEXT_CACHE_TAG_MAX_LENGTH } from '../../lib/constants';\nimport { markCurrentScopeAsDynamic } from '../app-render/dynamic-rendering';\nimport { makeDynamicHangingPromise } from '../dynamic-rendering-utils';\nimport { createDedupeFetch } from './dedupe-fetch';\nimport { getCacheSignal, willConsumerServerCache } from '../app-render/work-unit-async-storage.external';\nimport { CachedRouteKind, IncrementalCacheKind } from '../response-cache';\nimport { cloneResponse } from './clone-response';\nimport { RenderStage } from '../app-render/staged-rendering';\nimport { encodeHeaderSafe } from './encode-header-safe';\nconst isEdgeRuntime = process.env.NEXT_RUNTIME === 'edge';\n/**\n * Whether fetch cache configuration needs to be processed for the current work\n * unit before an origin fetch. Static prerender stores use it for dynamic\n * access tracking. Cache scopes apply it to their own cache policy, regardless\n * of which outer work unit created them. Development staged renders additionally\n * coordinate dynamic fetches with the dynamic render stage.\n */ function shouldProcessFetchConfigForWorkUnit(workUnitStore) {\n if (!workUnitStore) {\n return false;\n }\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n return true;\n case 'request':\n return Boolean(process.env.NODE_ENV === 'development' && process.env.__NEXT_CACHE_COMPONENTS && workUnitStore.stagedRendering);\n case 'prerender-runtime':\n case 'validation-client':\n case 'build-time-generator':\n return false;\n default:\n return workUnitStore;\n }\n}\nexport const NEXT_PATCH_SYMBOL = Symbol.for('next-patch');\nfunction isFetchPatched() {\n return globalThis[NEXT_PATCH_SYMBOL] === true;\n}\nexport function validateRevalidate(revalidateVal, route) {\n try {\n let normalizedRevalidate = undefined;\n if (revalidateVal === false || revalidateVal === Infinity) {\n // Unlike Infinity, INFINITE_CACHE survives JSON serialization (e.g. in\n // the fetch cache).\n normalizedRevalidate = INFINITE_CACHE;\n } else if (typeof revalidateVal === 'number' && !isNaN(revalidateVal) && revalidateVal > -1) {\n normalizedRevalidate = revalidateVal;\n } else if (typeof revalidateVal !== 'undefined') {\n throw new Error(`Invalid revalidate value \"${revalidateVal}\" on \"${route}\", must be a non-negative number or false`);\n }\n return normalizedRevalidate;\n } catch (err) {\n // handle client component error from attempting to check revalidate value\n if (err instanceof Error && err.message.includes('Invalid revalidate')) {\n throw err;\n }\n return undefined;\n }\n}\nexport function validateTags(tags, description) {\n const validTags = [];\n const invalidTags = [];\n for(let i = 0; i < tags.length; i++){\n const tag = tags[i];\n if (typeof tag !== 'string') {\n invalidTags.push({\n tag,\n reason: 'invalid type, must be a string'\n });\n } else if (tag.length > NEXT_CACHE_TAG_MAX_LENGTH) {\n invalidTags.push({\n tag,\n reason: `exceeded max length of ${NEXT_CACHE_TAG_MAX_LENGTH}`\n });\n } else {\n // Encode so a non-ASCII tag can be safely serialized into the\n // `x-next-cache-tags` HTTP header without tripping Node's header\n // validation. Length is checked on the raw input above.\n validTags.push(encodeHeaderSafe(tag));\n }\n if (validTags.length > NEXT_CACHE_TAG_MAX_ITEMS) {\n console.warn(`Warning: exceeded max tag count for ${description}, dropped tags:`, tags.slice(i).join(', '));\n break;\n }\n }\n if (invalidTags.length > 0) {\n console.warn(`Warning: invalid tags passed to ${description}: `);\n for (const { tag, reason } of invalidTags){\n console.log(`tag: \"${tag}\" ${reason}`);\n }\n }\n return validTags;\n}\nfunction trackFetchMetric(workStore, span, ctx) {\n const metric = {\n ...ctx,\n end: performance.timeOrigin + performance.now(),\n idx: workStore.nextFetchId || 0\n };\n span == null ? void 0 : span.setAttributes({\n 'http.status_code': metric.status,\n 'next.fetch.idx': metric.idx,\n 'next.fetch.cache_status': metric.cacheStatus,\n 'next.fetch.cache_reason': metric.cacheReason\n });\n if (isRequestInsightsEnabled()) {\n const requestInsightsIdentity = getRequestInsightsIdentity();\n const requestInsightsRequestId = (requestInsightsIdentity == null ? void 0 : requestInsightsIdentity.requestId) ?? workStore.requestId;\n if (requestInsightsRequestId) {\n recordRequestInsightFetch({\n requestId: requestInsightsRequestId,\n kind: requestInsightsIdentity == null ? void 0 : requestInsightsIdentity.kind,\n htmlRequestId: (requestInsightsIdentity == null ? void 0 : requestInsightsIdentity.htmlRequestId) ?? workStore.htmlRequestId,\n route: workStore.route\n }, {\n url: metric.url,\n method: metric.method,\n statusCode: metric.status,\n startTime: metric.start,\n durationMs: metric.end - metric.start,\n cacheStatus: metric.cacheStatus,\n cacheReason: metric.cacheReason,\n index: metric.idx\n });\n }\n }\n if (!workStore.shouldTrackFetchMetrics) {\n return;\n }\n workStore.fetchMetrics ??= [];\n workStore.fetchMetrics.push(metric);\n}\nasync function createCachedPrerenderResponse(res, cacheKey, incrementalCacheContext, incrementalCache, revalidate, handleUnlock) {\n // We are prerendering at build time or revalidate time with cacheComponents so we\n // need to buffer the response so we can guarantee it can be read in a\n // microtask.\n const bodyBuffer = await res.arrayBuffer();\n const fetchedData = {\n headers: Object.fromEntries(res.headers.entries()),\n body: Buffer.from(bodyBuffer).toString('base64'),\n status: res.status,\n url: res.url\n };\n // We can skip setting the serverComponentsHmrCache because we aren't in dev\n // mode.\n if (incrementalCacheContext) {\n await incrementalCache.set(cacheKey, {\n kind: CachedRouteKind.FETCH,\n data: fetchedData,\n revalidate\n }, incrementalCacheContext);\n }\n await handleUnlock();\n // We return a new Response to the caller.\n return new Response(bodyBuffer, {\n headers: res.headers,\n status: res.status,\n statusText: res.statusText\n });\n}\nasync function createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheContext, incrementalCache, serverComponentsHmrCache, revalidate, input, handleUnlock, signal) {\n // We're cloning the response using this utility because there exists a bug in\n // the undici library around response cloning. See the following pull request\n // for more details: https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = cloneResponse(res);\n // We are dynamically rendering including dev mode. We want to return the\n // response to the caller as soon as possible because it might stream over a\n // very long time.\n const cacheSetPromise = cloned1.arrayBuffer().then(async (arrayBuffer)=>{\n const bodyBuffer = Buffer.from(arrayBuffer);\n const fetchedData = {\n headers: Object.fromEntries(cloned1.headers.entries()),\n body: bodyBuffer.toString('base64'),\n status: cloned1.status,\n url: cloned1.url\n };\n serverComponentsHmrCache == null ? void 0 : serverComponentsHmrCache.set(cacheKey, fetchedData);\n if (incrementalCacheContext) {\n await incrementalCache.set(cacheKey, {\n kind: CachedRouteKind.FETCH,\n data: fetchedData,\n revalidate\n }, incrementalCacheContext);\n }\n }).catch((error)=>{\n // Don't warn if the request was aborted intentionally.\n if (!(signal == null ? void 0 : signal.aborted)) {\n console.warn(`Failed to set fetch cache`, input, error);\n }\n }).finally(handleUnlock);\n const pendingRevalidateKey = `cache-set-${cacheKey}`;\n const pendingRevalidates = workStore.pendingRevalidates ??= {};\n let pendingRevalidatePromise = Promise.resolve();\n if (pendingRevalidateKey in pendingRevalidates) {\n // There is already a pending revalidate entry that we need to await to\n // avoid race conditions.\n pendingRevalidatePromise = pendingRevalidates[pendingRevalidateKey];\n }\n pendingRevalidates[pendingRevalidateKey] = pendingRevalidatePromise.then(()=>cacheSetPromise).finally(()=>{\n // If the pending revalidate is not present in the store, then we have\n // nothing to delete.\n if (!(pendingRevalidates == null ? void 0 : pendingRevalidates[pendingRevalidateKey])) {\n return;\n }\n delete pendingRevalidates[pendingRevalidateKey];\n });\n return cloned2;\n}\nexport function createPatchedFetcher(originFetch, { workAsyncStorage, workUnitAsyncStorage }) {\n // Create the patched fetch function.\n const patched = async function fetch(input, init) {\n var _init_method, _init_next;\n let url;\n try {\n url = new URL(input instanceof Request ? input.url : input);\n url.username = '';\n url.password = '';\n } catch {\n // Error caused by malformed URL should be handled by native fetch\n url = undefined;\n }\n const fetchUrl = (url == null ? void 0 : url.href) ?? '';\n const method = (init == null ? void 0 : (_init_method = init.method) == null ? void 0 : _init_method.toUpperCase()) || 'GET';\n // Do create a new span trace for internal fetches in the\n // non-verbose mode.\n const isInternal = (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next.internal) === true;\n const hideSpan = process.env.NEXT_OTEL_FETCH_DISABLED === '1';\n // We don't track fetch metrics for internal fetches\n // so it's not critical that we have a start time, as it won't be recorded.\n // This is to workaround a flaky issue where performance APIs might\n // not be available and will require follow-up investigation.\n const fetchStart = isInternal ? undefined : performance.timeOrigin + performance.now();\n const workStore = workAsyncStorage.getStore();\n const workUnitStore = workUnitAsyncStorage.getStore();\n let cacheSignal = workUnitStore ? getCacheSignal(workUnitStore) : null;\n if (cacheSignal) {\n cacheSignal.beginRead();\n }\n const result = getTracer().trace(isInternal ? NextNodeServerSpan.internalFetch : AppRenderSpan.fetch, {\n hideSpan,\n kind: SpanKind.CLIENT,\n spanName: [\n 'fetch',\n method,\n fetchUrl\n ].filter(Boolean).join(' '),\n attributes: {\n 'http.url': fetchUrl,\n 'http.method': method,\n 'net.peer.name': url == null ? void 0 : url.hostname,\n 'net.peer.port': (url == null ? void 0 : url.port) || undefined\n }\n }, async (span)=>{\n var _getRequestMeta;\n // If this is an internal fetch, we should not do any special treatment.\n if (isInternal) {\n return originFetch(input, init);\n }\n // If the workStore is not available, we can't do any\n // special treatment of fetch, therefore fallback to the original\n // fetch implementation.\n if (!workStore) {\n return originFetch(input, init);\n }\n // We should also fallback to the original fetch implementation if we\n // are in draft mode, it does not constitute a static generation.\n if (workStore.isDraftMode) {\n return originFetch(input, init);\n }\n const isRequestInput = input && typeof input === 'object' && typeof input.method === 'string';\n // With `fetch(new Request(url), init)`, native fetch lets `init`\n // override the base Request. Merge them into a single effective Request\n // so cacheability, the cache key, and the upstream request all describe\n // the same thing.\n if (isRequestInput && init) {\n // `next` (revalidate/tags) is Next-specific and dropped by\n // `new Request`, so keep it on `init` and move the rest onto input.\n const { next, ...overrides } = init;\n input = new Request(input, overrides);\n init = next ? {\n next\n } : undefined;\n }\n const getRequestMeta = (field)=>{\n // If request input is present but init is not, retrieve from input first.\n const value = init == null ? void 0 : init[field];\n return value || (isRequestInput ? input[field] : null);\n };\n let finalRevalidate = undefined;\n const getNextField = (field)=>{\n var _init_next, _init_next1, _input_next;\n return typeof (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next[field]) !== 'undefined' ? init == null ? void 0 : (_init_next1 = init.next) == null ? void 0 : _init_next1[field] : isRequestInput ? (_input_next = input.next) == null ? void 0 : _input_next[field] : undefined;\n };\n // RequestInit doesn't keep extra fields e.g. next so it's\n // only available if init is used separate\n const originalFetchRevalidate = getNextField('revalidate');\n let currentFetchRevalidate = originalFetchRevalidate;\n const tags = validateTags(getNextField('tags') || [], `fetch ${input.toString()}`);\n let revalidateStore;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n // TODO: Stop accumulating tags in client prerender. (fallthrough)\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n revalidateStore = workUnitStore;\n break;\n case 'request':\n case 'unstable-cache':\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n }\n if (revalidateStore) {\n if (Array.isArray(tags)) {\n // Collect tags onto parent caches or parent prerenders.\n const collectedTags = revalidateStore.tags ?? (revalidateStore.tags = []);\n for (const tag of tags){\n if (!collectedTags.includes(tag)) {\n collectedTags.push(tag);\n }\n }\n }\n }\n const implicitTags = workUnitStore == null ? void 0 : workUnitStore.implicitTags;\n let pageFetchCacheMode = workStore.fetchCache;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'unstable-cache':\n // Inside unstable-cache we treat it the same as force-no-store on\n // the page.\n pageFetchCacheMode = 'force-no-store';\n break;\n case 'prerender':\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n }\n const isUsingNoStore = !!workStore.isUnstableNoStore;\n let currentFetchCacheConfig = getRequestMeta('cache');\n let cacheReason = '';\n let cacheWarning;\n if (typeof currentFetchCacheConfig === 'string' && typeof currentFetchRevalidate !== 'undefined') {\n // If the revalidate value conflicts with the cache value, we should warn the user and unset the conflicting values.\n const isConflictingRevalidate = // revalidate: 0 and cache: force-cache\n currentFetchCacheConfig === 'force-cache' && currentFetchRevalidate === 0 || // revalidate: >0 or revalidate: false and cache: no-store\n currentFetchCacheConfig === 'no-store' && (currentFetchRevalidate > 0 || currentFetchRevalidate === false);\n if (isConflictingRevalidate) {\n cacheWarning = `Specified \"cache: ${currentFetchCacheConfig}\" and \"revalidate: ${currentFetchRevalidate}\", only one should be specified.`;\n currentFetchCacheConfig = undefined;\n currentFetchRevalidate = undefined;\n }\n }\n const hasExplicitFetchCacheOptOut = // fetch config itself signals not to cache\n currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store' || // the fetch isn't explicitly caching and the segment level cache config signals not to cache\n // note: `pageFetchCacheMode` is also set by being in an unstable_cache context.\n pageFetchCacheMode === 'force-no-store' || pageFetchCacheMode === 'only-no-store';\n // If no explicit fetch cache mode is set, but dynamic = `force-dynamic` is set,\n // we shouldn't consider caching the fetch. This is because the `dynamic` cache\n // is considered a \"top-level\" cache mode, whereas something like `fetchCache` is more\n // fine-grained. Top-level modes are responsible for setting reasonable defaults for the\n // other configurations.\n const noFetchConfigAndForceDynamic = !pageFetchCacheMode && !currentFetchCacheConfig && !currentFetchRevalidate && workStore.forceDynamic;\n if (// force-cache was specified without a revalidate value. We set the revalidate value to false\n // which will signal the cache to not revalidate\n currentFetchCacheConfig === 'force-cache' && typeof currentFetchRevalidate === 'undefined') {\n currentFetchRevalidate = false;\n } else if (hasExplicitFetchCacheOptOut || noFetchConfigAndForceDynamic) {\n currentFetchRevalidate = 0;\n }\n if (currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store') {\n cacheReason = `cache: ${currentFetchCacheConfig}`;\n }\n finalRevalidate = validateRevalidate(currentFetchRevalidate, workStore.route);\n const _headers = getRequestMeta('headers');\n const initHeaders = typeof (_headers == null ? void 0 : _headers.get) === 'function' ? _headers : new Headers(_headers || {});\n const hasUnCacheableHeader = initHeaders.get('authorization') || initHeaders.get('cookie');\n const isUnCacheableMethod = ![\n 'get',\n 'head'\n ].includes(((_getRequestMeta = getRequestMeta('method')) == null ? void 0 : _getRequestMeta.toLowerCase()) || 'get');\n /**\n * We automatically disable fetch caching under the following conditions:\n * - Fetch cache configs are not set. Specifically:\n * - A page fetch cache mode is not set (export const fetchCache=...)\n * - A fetch cache mode is not set in the fetch call (fetch(url, { cache: ... }))\n * or the fetch cache mode is set to 'default'\n * - A fetch revalidate value is not set in the fetch call (fetch(url, { revalidate: ... }))\n * - OR the fetch comes after a configuration that triggered dynamic rendering (e.g., reading cookies())\n * and the fetch was considered uncacheable (e.g., POST method or has authorization headers)\n */ const hasNoExplicitCacheConfig = // eslint-disable-next-line eqeqeq\n pageFetchCacheMode == undefined && // eslint-disable-next-line eqeqeq\n (currentFetchCacheConfig == undefined || // when considering whether to opt into the default \"no-cache\" fetch semantics,\n // a \"default\" cache config should be treated the same as no cache config\n currentFetchCacheConfig === 'default') && // eslint-disable-next-line eqeqeq\n currentFetchRevalidate == undefined;\n let autoNoCache = Boolean((hasUnCacheableHeader || isUnCacheableMethod) && (revalidateStore == null ? void 0 : revalidateStore.revalidate) === 0);\n let isImplicitBuildTimeCache = false;\n if (!autoNoCache && hasNoExplicitCacheConfig) {\n // We don't enable automatic no-cache behavior during build-time\n // prerendering so that we can still leverage the fetch cache between\n // export workers.\n if (workStore.isBuildTimePrerendering) {\n isImplicitBuildTimeCache = true;\n } else {\n autoNoCache = true;\n }\n }\n // If we have no cache config, and we're in Dynamic I/O prerendering,\n // it'll be a dynamic call. We don't have to issue that dynamic call.\n if (hasNoExplicitCacheConfig && workUnitStore !== undefined) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n // While we don't want to do caching in the client scope we know the\n // fetch will be dynamic for cacheComponents so we may as well avoid the\n // call here. (fallthrough)\n case 'prerender-client':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return makeDynamicHangingPromise(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'validation-client':\n break;\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering) {\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n await workUnitStore.stagedRendering.waitForStage(RenderStage.Dynamic);\n }\n break;\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n }\n switch(pageFetchCacheMode){\n case 'force-no-store':\n {\n cacheReason = 'fetchCache = force-no-store';\n break;\n }\n case 'only-no-store':\n {\n if (currentFetchCacheConfig === 'force-cache' || typeof finalRevalidate !== 'undefined' && finalRevalidate > 0) {\n throw new Error(`cache: 'force-cache' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-no-store'`);\n }\n cacheReason = 'fetchCache = only-no-store';\n break;\n }\n case 'only-cache':\n {\n if (currentFetchCacheConfig === 'no-store') {\n throw new Error(`cache: 'no-store' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-cache'`);\n }\n break;\n }\n case 'force-cache':\n {\n if (typeof currentFetchRevalidate === 'undefined' || currentFetchRevalidate === 0) {\n cacheReason = 'fetchCache = force-cache';\n finalRevalidate = INFINITE_CACHE;\n }\n break;\n }\n case 'default-cache':\n case 'default-no-store':\n case 'auto':\n case undefined:\n break;\n default:\n pageFetchCacheMode;\n }\n if (typeof finalRevalidate === 'undefined') {\n if (pageFetchCacheMode === 'default-cache' && !isUsingNoStore) {\n finalRevalidate = INFINITE_CACHE;\n cacheReason = 'fetchCache = default-cache';\n } else if (pageFetchCacheMode === 'default-no-store') {\n finalRevalidate = 0;\n cacheReason = 'fetchCache = default-no-store';\n } else if (isUsingNoStore) {\n finalRevalidate = 0;\n cacheReason = 'noStore call';\n } else if (autoNoCache) {\n finalRevalidate = 0;\n cacheReason = 'auto no cache';\n } else {\n // TODO: should we consider this case an invariant?\n cacheReason = 'auto cache';\n finalRevalidate = revalidateStore ? revalidateStore.revalidate : INFINITE_CACHE;\n }\n } else if (!cacheReason) {\n cacheReason = `revalidate: ${finalRevalidate}`;\n }\n if (// when force static is configured we don't bail from\n // `revalidate: 0` values\n !(workStore.forceStatic && finalRevalidate === 0) && // we don't consider autoNoCache to switch to dynamic for ISR\n !autoNoCache && // If the revalidate value isn't currently set or the value is less\n // than the current revalidate value, we should update the revalidate\n // value.\n revalidateStore && finalRevalidate < revalidateStore.revalidate) {\n // If we were setting the revalidate value to 0, we should try to\n // postpone instead first.\n if (finalRevalidate === 0) {\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n // If we're in an instant validation, a dynamic fetch won't\n // have time to resolve during the validation prerender anyway,\n // so we leave it hanging. This can cause false negatives in shared parents,\n // but we accept that for now, because client data fetching is non-idiomatic.\n // eslint-disable-next-line no-fallthrough\n case 'validation-client':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return makeDynamicHangingPromise(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering) {\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n await workUnitStore.stagedRendering.waitForStage(RenderStage.Dynamic);\n }\n break;\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n }\n markCurrentScopeAsDynamic(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`);\n }\n // We only want to set the revalidate store's revalidate time if it\n // was explicitly set for the fetch call, i.e.\n // originalFetchRevalidate.\n if (revalidateStore && originalFetchRevalidate === finalRevalidate) {\n revalidateStore.revalidate = finalRevalidate;\n }\n }\n const isCacheableRevalidate = typeof finalRevalidate === 'number' && finalRevalidate > 0;\n let cacheKey;\n const { incrementalCache } = workStore;\n let isHmrRefresh = false;\n let serverComponentsHmrCache;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'request':\n case 'cache':\n case 'private-cache':\n isHmrRefresh = workUnitStore.isHmrRefresh ?? false;\n serverComponentsHmrCache = workUnitStore.serverComponentsHmrCache;\n break;\n case 'prerender':\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'unstable-cache':\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n }\n if (incrementalCache && (isCacheableRevalidate || serverComponentsHmrCache)) {\n try {\n cacheKey = await incrementalCache.generateCacheKey(fetchUrl, isRequestInput ? input : init);\n } catch (cause) {\n console.error(`Failed to generate cache key for`, input, cause);\n }\n }\n const fetchIdx = workStore.nextFetchId ?? 1;\n workStore.nextFetchId = fetchIdx + 1;\n let handleUnlock = ()=>{};\n const doOriginalFetch = async (isStale, cacheReasonOverride)=>{\n const requestInputFields = [\n 'cache',\n 'credentials',\n 'headers',\n 'integrity',\n 'keepalive',\n 'method',\n 'mode',\n 'redirect',\n 'referrer',\n 'referrerPolicy',\n 'window',\n 'duplex',\n // don't pass through signal when revalidating\n ...isStale ? [] : [\n 'signal'\n ]\n ];\n if (isRequestInput) {\n const reqInput = input;\n const reqOptions = {\n body: reqInput._ogBody || reqInput.body\n };\n for (const field of requestInputFields){\n // @ts-expect-error custom fields\n reqOptions[field] = reqInput[field];\n }\n input = new Request(reqInput.url, reqOptions);\n } else if (init) {\n const { _ogBody, body, signal, ...otherInput } = init;\n init = {\n ...otherInput,\n body: _ogBody || body,\n signal: isStale ? undefined : signal\n };\n }\n // add metadata to init without editing the original\n const clonedInit = {\n ...init,\n next: {\n ...init == null ? void 0 : init.next,\n fetchType: 'origin',\n fetchIdx\n }\n };\n return originFetch(input, clonedInit).then(async (res)=>{\n if (!isStale && fetchStart) {\n trackFetchMetric(workStore, span, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason: cacheReasonOverride || cacheReason,\n cacheStatus: finalRevalidate === 0 || cacheReasonOverride ? 'skip' : 'miss',\n cacheWarning,\n status: res.status,\n method: clonedInit.method || 'GET'\n });\n }\n if (res.status === 200 && incrementalCache && cacheKey && (isCacheableRevalidate || serverComponentsHmrCache)) {\n const normalizedRevalidate = finalRevalidate >= INFINITE_CACHE ? CACHE_ONE_YEAR_SECONDS : finalRevalidate;\n const incrementalCacheConfig = isCacheableRevalidate ? {\n fetchCache: true,\n fetchUrl,\n fetchIdx,\n tags,\n isImplicitBuildTimeCache\n } : undefined;\n switch(workUnitStore == null ? void 0 : workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-runtime':\n return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock);\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering && workUnitStore.cacheSignal && isCacheableRevalidate) {\n // We're filling caches for a staged render with an\n // explicit cache config, so we need to wait for the\n // response to finish instead of streaming. For HMR-only\n // caching (no explicit revalidate), we fall through to\n // createCachedDynamicResponse which handles streaming\n // and abort gracefully.\n return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock);\n }\n // fallthrough\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'build-time-generator':\n case undefined:\n return createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheConfig, incrementalCache, serverComponentsHmrCache, normalizedRevalidate, input, handleUnlock, getRequestMeta('signal'));\n default:\n workUnitStore;\n }\n }\n // we had response that we determined shouldn't be cached so we return it\n // and don't cache it. This also needs to unlock the cache lock we acquired.\n await handleUnlock();\n return res;\n }).catch((error)=>{\n handleUnlock();\n throw error;\n });\n };\n let cacheReasonOverride;\n let isForegroundRevalidate = false;\n let isHmrRefreshCache = false;\n if (cacheKey && incrementalCache) {\n let cachedFetchData;\n if (isHmrRefresh && serverComponentsHmrCache) {\n cachedFetchData = serverComponentsHmrCache.get(cacheKey);\n isHmrRefreshCache = true;\n }\n if (isCacheableRevalidate && !cachedFetchData) {\n handleUnlock = await incrementalCache.lock(cacheKey);\n const entry = workStore.isOnDemandRevalidate ? null : await incrementalCache.get(cacheKey, {\n kind: IncrementalCacheKind.FETCH,\n revalidate: finalRevalidate,\n fetchUrl,\n fetchIdx,\n tags,\n softTags: implicitTags == null ? void 0 : implicitTags.tags\n });\n if (hasNoExplicitCacheConfig && workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-runtime':\n // We sometimes use the cache to dedupe fetches that do not\n // specify a cache configuration. In these cases we want to\n // make sure we still exclude them from prerenders if\n // cacheComponents is on so we introduce an artificial task boundary\n // here.\n await getTimeoutBoundary();\n break;\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering) {\n await workUnitStore.stagedRendering.waitForStage(RenderStage.Dynamic);\n }\n break;\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n }\n if (entry) {\n await handleUnlock();\n } else {\n // in dev, incremental cache response will be null in case the browser adds `cache-control: no-cache` in the request headers\n // TODO: it seems like we also hit this after revalidates in dev?\n cacheReasonOverride = 'cache-control: no-cache (hard refresh)';\n }\n if ((entry == null ? void 0 : entry.value) && entry.value.kind === CachedRouteKind.FETCH) {\n // If the consumer will persist this result in a server cache,\n // wait for fresh data so it doesn't persist a stale value.\n if (willConsumerServerCache(workUnitStore) && entry.isStale) {\n isForegroundRevalidate = true;\n } else {\n if (entry.isStale) {\n workStore.pendingRevalidates ??= {};\n if (!workStore.pendingRevalidates[cacheKey]) {\n const pendingRevalidate = doOriginalFetch(true).then(async (response)=>({\n body: await response.arrayBuffer(),\n headers: response.headers,\n status: response.status,\n statusText: response.statusText\n })).finally(()=>{\n workStore.pendingRevalidates ??= {};\n delete workStore.pendingRevalidates[cacheKey || ''];\n });\n // Attach the empty catch here so we don't get a \"unhandled\n // promise rejection\" warning.\n pendingRevalidate.catch(console.error);\n workStore.pendingRevalidates[cacheKey] = pendingRevalidate;\n }\n }\n cachedFetchData = entry.value.data;\n }\n }\n }\n if (cachedFetchData) {\n if (fetchStart) {\n trackFetchMetric(workStore, span, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason,\n cacheStatus: isHmrRefreshCache ? 'hmr' : 'hit',\n cacheWarning,\n status: cachedFetchData.status || 200,\n method: (init == null ? void 0 : init.method) || 'GET'\n });\n }\n const response = new Response(Buffer.from(cachedFetchData.body, 'base64'), {\n headers: cachedFetchData.headers,\n status: cachedFetchData.status\n });\n Object.defineProperty(response, 'url', {\n value: cachedFetchData.url\n });\n return response;\n }\n }\n if (init && typeof init === 'object' && shouldProcessFetchConfigForWorkUnit(workUnitStore)) {\n const { cache } = init;\n // Delete `cache` property as Cloudflare Workers will throw an error\n if (isEdgeRuntime) delete init.cache;\n if (cache === 'no-store') {\n // If enabled, we should bail out of static generation.\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'validation-client':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return makeDynamicHangingPromise(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering) {\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n await workUnitStore.stagedRendering.waitForStage(RenderStage.Dynamic);\n }\n break;\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n }\n markCurrentScopeAsDynamic(workStore, workUnitStore, `no-store fetch ${input} ${workStore.route}`);\n }\n const hasNextConfig = 'next' in init;\n const { next = {} } = init;\n if (typeof next.revalidate === 'number' && revalidateStore && next.revalidate < revalidateStore.revalidate) {\n if (next.revalidate === 0) {\n // If enabled, we should bail out of static generation.\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'validation-client':\n return makeDynamicHangingPromise(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering) {\n await workUnitStore.stagedRendering.waitForStage(RenderStage.Dynamic);\n }\n break;\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'prerender-legacy':\n case 'build-time-generator':\n break;\n default:\n workUnitStore;\n }\n }\n markCurrentScopeAsDynamic(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`);\n }\n if (!workStore.forceStatic || next.revalidate !== 0) {\n revalidateStore.revalidate = next.revalidate;\n }\n }\n if (hasNextConfig) delete init.next;\n }\n // if we are revalidating the whole page via time or on-demand and\n // the fetch cache entry is stale we should still de-dupe the\n // origin hit if it's a cache-able entry\n if (cacheKey && isForegroundRevalidate) {\n const pendingRevalidateKey = cacheKey;\n workStore.pendingRevalidates ??= {};\n let pendingRevalidate = workStore.pendingRevalidates[pendingRevalidateKey];\n if (pendingRevalidate) {\n const revalidatedResult = await pendingRevalidate;\n return new Response(revalidatedResult.body, {\n headers: revalidatedResult.headers,\n status: revalidatedResult.status,\n statusText: revalidatedResult.statusText\n });\n }\n // We used to just resolve the Response and clone it however for\n // static generation with cacheComponents we need the response to be able to\n // be resolved in a microtask and cloning the response will never have\n // a body that can resolve in a microtask in node (as observed through\n // experimentation) So instead we await the body and then when it is\n // available we construct manually cloned Response objects with the\n // body as an ArrayBuffer. This will be resolvable in a microtask\n // making it compatible with cacheComponents.\n const pendingResponse = doOriginalFetch(true, cacheReasonOverride)// We're cloning the response using this utility because there\n // exists a bug in the undici library around response cloning.\n // See the following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n .then(cloneResponse);\n pendingRevalidate = pendingResponse.then(async (responses)=>{\n const response = responses[0];\n return {\n body: await response.arrayBuffer(),\n headers: response.headers,\n status: response.status,\n statusText: response.statusText\n };\n }).finally(()=>{\n var _workStore_pendingRevalidates;\n // If the pending revalidate is not present in the store, then\n // we have nothing to delete.\n if (!((_workStore_pendingRevalidates = workStore.pendingRevalidates) == null ? void 0 : _workStore_pendingRevalidates[pendingRevalidateKey])) {\n return;\n }\n delete workStore.pendingRevalidates[pendingRevalidateKey];\n });\n // Attach the empty catch here so we don't get a \"unhandled promise\n // rejection\" warning\n pendingRevalidate.catch(()=>{});\n workStore.pendingRevalidates[pendingRevalidateKey] = pendingRevalidate;\n return pendingResponse.then((responses)=>responses[1]);\n } else {\n return doOriginalFetch(false, cacheReasonOverride);\n }\n });\n if (cacheSignal) {\n try {\n return await result;\n } finally{\n if (cacheSignal) {\n cacheSignal.endRead();\n }\n }\n }\n return result;\n };\n // Attach the necessary properties to the patched fetch function.\n // We don't use this to determine if the fetch function has been patched,\n // but for external consumers to determine if the fetch function has been\n // patched.\n patched.__nextPatched = true;\n patched.__nextGetStaticStore = ()=>workAsyncStorage;\n patched._nextOriginalFetch = originFetch;\n globalThis[NEXT_PATCH_SYMBOL] = true;\n // Assign the function name also as a name property, so that it's preserved\n // even when mangling is enabled.\n Object.defineProperty(patched, 'name', {\n value: 'fetch',\n writable: false\n });\n return patched;\n}\n// we patch fetch to collect cache information used for\n// determining if a page is static or not\nexport function patchFetch(options) {\n // If we've already patched fetch, we should not patch it again.\n if (isFetchPatched()) return;\n // Grab the original fetch function. We'll attach this so we can use it in\n // the patched fetch function.\n const original = createDedupeFetch(globalThis.fetch);\n // Set the global fetch to the patched fetch.\n globalThis.fetch = createPatchedFetcher(original, options);\n}\nlet currentTimeoutBoundary = null;\nfunction getTimeoutBoundary() {\n if (!currentTimeoutBoundary) {\n currentTimeoutBoundary = new Promise((r)=>{\n setTimeout(()=>{\n currentTimeoutBoundary = null;\n r();\n }, 0);\n });\n }\n return currentTimeoutBoundary;\n}\n\n//# sourceMappingURL=patch-fetch.js.map","import { ensureLeadingSlash } from '../../page-path/ensure-leading-slash';\nimport { isGroupSegment } from '../../segment';\n/**\n * Normalizes an app route so it represents the actual request path. Essentially\n * performing the following transformations:\n *\n * - `/(dashboard)/user/[id]/page` to `/user/[id]`\n * - `/(dashboard)/account/page` to `/account`\n * - `/user/[id]/page` to `/user/[id]`\n * - `/account/page` to `/account`\n * - `/page` to `/`\n * - `/(dashboard)/user/[id]/route` to `/user/[id]`\n * - `/(dashboard)/account/route` to `/account`\n * - `/user/[id]/route` to `/user/[id]`\n * - `/account/route` to `/account`\n * - `/route` to `/`\n * - `/` to `/`\n *\n * @param route the app route to normalize\n * @returns the normalized pathname\n */ export function normalizeAppPath(route) {\n return ensureLeadingSlash(route.split('/').reduce((pathname, segment, index, segments)=>{\n // Empty segments are ignored.\n if (!segment) {\n return pathname;\n }\n // Groups are ignored.\n if (isGroupSegment(segment)) {\n return pathname;\n }\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname;\n }\n // The last segment (if it's a leaf) should be ignored.\n if ((segment === 'page' || segment === 'route') && index === segments.length - 1) {\n return pathname;\n }\n return `${pathname}/${segment}`;\n }, ''));\n}\n/**\n * Comparator for sorting app paths so that parallel slot paths (containing\n * `/@`) come before the children/root page path. This keeps the direct\n * children/root page last so it can be selected as the canonical entry.\n *\n * Without this, route group prefixes like `(group)` (char code 0x28) sort\n * before `@` (0x40), causing the children page to sort first instead of last\n * and leading to a manifest mismatch / 404 in webpack dev mode.\n */ export function compareAppPaths(a, b) {\n const aHasSlot = a.includes('/@');\n const bHasSlot = b.includes('/@');\n if (aHasSlot && !bHasSlot) return -1;\n if (!aHasSlot && bHasSlot) return 1;\n return a.localeCompare(b);\n}\nfunction normalizeAppPageEntryPathname(appPath) {\n // Webpack app entries preserve escaped underscore segments as `%5F`, while\n // normalized request pathnames expose the decoded `_` segment.\n return normalizeAppPath(appPath).replace(/%5F/g, '_');\n}\n/**\n * Selects the app path that owns the compiled entry for a normalized route.\n * Catch-all normalization can add app paths from other routes, so only direct\n * paths are candidates. Among those, compareAppPaths deterministically prefers\n * the children/root page, or a stable slot when the route only has slots.\n */ export function selectAppPageEntry(pathname, appPaths, normalizePathname = normalizeAppPageEntryPathname) {\n let entry;\n for (const appPath of appPaths){\n if (normalizePathname(appPath) !== pathname) continue;\n if (entry === undefined || compareAppPaths(entry, appPath) < 0) {\n entry = appPath;\n }\n }\n if (entry === undefined) {\n throw new Error(`Invariant: no direct app page entry found for ${pathname}`);\n }\n return entry;\n}\n/**\n * Strips the `.rsc` extension if it's in the pathname.\n * Since this function is used on full urls it checks `?` for searchParams handling.\n */ export function normalizeRscURL(url) {\n return url.replace(/\\.rsc($|\\?)/, // $1 ensures `?` is preserved\n '$1');\n}\n\n//# sourceMappingURL=app-paths.js.map","export const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'\nexport const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'\nexport const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'\nexport const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'\n","export type ScheduledFn<T = void> = () => T | PromiseLike<T>\nexport type SchedulerFn<T = void> = (cb: ScheduledFn<T>) => void\n\n/**\n * Schedules a function to be called on the next tick after the other promises\n * have been resolved.\n *\n * @param cb the function to schedule\n */\nexport const scheduleOnNextTick = (cb: ScheduledFn<void>) => {\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(() => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n process.nextTick(cb)\n }\n })\n}\n\n/**\n * Schedules a function to be called using `setImmediate` or `setTimeout` if\n * `setImmediate` is not available (like in the Edge runtime).\n *\n * @param cb the function to schedule\n */\nexport const scheduleImmediate = (cb: ScheduledFn<void>): void => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n setImmediate(cb)\n }\n}\n\n/**\n * returns a promise than resolves in a future task. There is no guarantee that the task it resolves in\n * will be the next task but if you await it you can at least be sure that the current task is over and\n * most usefully that the entire microtask queue of the current task has been emptied.\n */\nexport function atLeastOneTask() {\n return new Promise<void>((resolve) => scheduleImmediate(resolve))\n}\n\n/**\n * This utility function is extracted to make it easier to find places where we are doing\n * specific timing tricks to try to schedule work after React has rendered. This is especially\n * important at the moment because Next.js uses the edge builds of React which use setTimeout to\n * schedule work when you might expect that something like setImmediate would do the trick.\n *\n * Long term we should switch to the node versions of React rendering when possible and then\n * update this to use setImmediate rather than setTimeout\n */\nexport function waitAtLeastOneReactRenderTask(): Promise<void> {\n if (process.env.NEXT_RUNTIME === 'edge') {\n return new Promise((r) => setTimeout(r, 0))\n } else {\n return new Promise((r) => setImmediate(r))\n }\n}\n","export function createRuntimeBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data during prerendering.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-runtime`\n )\n}\n\nexport function createDynamicBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data during prerendering.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] Cache the data access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\nexport function createRuntimeBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data during prerendering or a navigation.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered or the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-runtime`\n )\n}\n\nexport function createLinkBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data during prerendering or a navigation.\\n\\n` +\n `\\`params\\` or \\`searchParams\\` accessed outside of \\`<Suspense>\\` may prevent the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-shell-url-data`\n )\n}\n\nexport function createNavigationBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered \\`navigation()\\` during prerendering or a navigation.\\n\\n` +\n `\\`navigation()\\` called outside of \\`<Suspense>\\` may prevent the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the component that calls \\`navigation()\\`\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-navigation-stage`\n )\n}\n\nexport function createPrefetchBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered \\`prefetch()\\` during prerendering or a navigation.\\n\\n` +\n `\\`prefetch()\\` called outside of \\`<Suspense>\\` may prevent the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the component that calls \\`prefetch()\\`\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-navigation-stage`\n )\n}\n\nexport function createDynamicBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data during prerendering or a navigation.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered or the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] Cache the data access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeBodyError` or `createDynamicBodyError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data during prerendering.\\n\\n` +\n `\\`fetch(...)\\`, \\`cookies()\\`, \\`headers()\\`, \\`params\\`, \\`searchParams\\`, or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] For uncached data (\\`fetch\\`, database calls): cache the access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\nexport function createLinkMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prefetched. \\`params\\` or \\`searchParams\\` accessed in \\`generateMetadata()\\` prevent it from being prefetched.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function createRuntimeMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered. \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed in \\`generateMetadata()\\` cause it to run dynamically.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function createNavigationMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered \\`navigation()\\` in \\`generateMetadata()\\`.\\n\\n` +\n `Metadata can already stream without blocking the route's UI, so delaying it until navigation may be unintentional.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [remove] Remove \\`navigation()\\` from \\`generateMetadata()\\`\\n` +\n ` - [mark] Render a marker component that calls \\`await navigation()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-navigation-stage-metadata`\n )\n}\n\nexport function createPrefetchMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered \\`prefetch()\\` in \\`generateMetadata()\\`.\\n\\n` +\n `Metadata can already stream without blocking the route's UI, so delaying it until a per-link prefetch or navigation may be unintentional.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [remove] Remove \\`prefetch()\\` from \\`generateMetadata()\\`\\n` +\n ` - [mark] Render a marker component that calls \\`await prefetch()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-navigation-stage-metadata`\n )\n}\n\nexport function createDynamicMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered. \\`fetch(...)\\` or \\`connection()\\` accessed in \\`generateMetadata()\\` cause it to run dynamically.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the metadata with \\`\"use cache\"\\` in \\`generateMetadata()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-dynamic`\n )\n}\n\nexport function createLinkViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data in \\`generateViewport()\\`.\\n\\n` +\n `\\`params\\` or \\`searchParams\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\nexport function createRuntimeViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data in \\`generateViewport()\\`.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\nexport function createNavigationViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered \\`navigation()\\` in \\`generateViewport()\\`.\\n\\n` +\n `This prevents Next.js from creating the App Shell, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [remove] Remove \\`navigation()\\` from \\`generateViewport()\\`\\n` +\n ` - [ignore] Set \\`export const instant = false\\` to disable validation for this segment\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-navigation-stage-viewport`\n )\n}\n\nexport function createPrefetchViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered \\`prefetch()\\` in \\`generateViewport()\\`.\\n\\n` +\n `This prevents Next.js from creating the App Shell, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [remove] Remove \\`prefetch()\\` from \\`generateViewport()\\`\\n` +\n ` - [ignore] Set \\`export const instant = false\\` to disable validation for this segment\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-navigation-stage-viewport`\n )\n}\n\nexport function createDynamicViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data in \\`generateViewport()\\`.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the viewport data with \\`\"use cache\"\\` in \\`generateViewport()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-dynamic`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeViewportError` or `createDynamicViewportError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data in \\`generateViewport()\\`.\\n\\n` +\n `This prevents the page from being prerendered, leading to a slower user experience. Unlike metadata, viewport cannot be streamed behind \\`<Suspense>\\` because it affects the initial page load.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [cache] For uncached data (\\`fetch\\`, database calls): cache the viewport with \\`\"use cache\"\\` in \\`generateViewport()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeMetadataError` or `createDynamicMetadataError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [cache] Cache the metadata with \\`\"use cache\"\\` in \\`generateMetadata()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\n//====================================================\n// Static routes (with `ensureStatic = \"navigation\"`)\n//====================================================\n\nexport function createRuntimeBodyErrorInStaticRoute(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data on a route that must be fully static.\\n\\n` +\n `This route is configured to be fully static, but runtime data from \\`cookies()\\`, \\`headers()\\`, \\`params\\`, \\`searchParams\\`, or a short-lived cache requires rendering at request time.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [remove] Remove the data access\\n` +\n ` - [client] Read the data on the client\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/static-route-runtime`\n )\n}\n\nexport function createDynamicBodyErrorInStaticRoute(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data on a route that must be fully static.\\n\\n` +\n `This route is configured to be fully static, but an uncached \\`fetch(...)\\`, database call, or \\`connection()\\` requires rendering at request time.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the data access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [remove] Remove the data access\\n` +\n ` - [client] Read the data on the client\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/static-route-dynamic`\n )\n}\n\nexport function createNonPrerenderableBodyErrorInStaticRoute(\n route: string\n): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data on a route that must be fully static.\\n\\n` +\n `This route is configured to be fully static, but some data requires rendering at request time.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] For uncached data (\\`fetch\\`, database calls): cache the access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [remove] Remove the data access\\n` +\n ` - [client] Read the data on the client\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/static-route-dynamic`\n )\n}\n\nexport function createRuntimeMetadataErrorInStaticRoute(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data in \\`generateMetadata()\\` on a route that must be fully static.\\n\\n` +\n `This route is configured to be fully static, but runtime data from \\`cookies()\\`, \\`headers()\\`, \\`params\\`, \\`searchParams\\`, or a short-lived cache requires rendering at request time.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Replace the dynamic data used by \\`generateMetadata()\\` with static data\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/static-metadata-runtime`\n )\n}\n\nexport function createDynamicMetadataErrorInStaticRoute(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data in \\`generateMetadata()\\` on a route that must be fully static.\\n\\n` +\n `This route is configured to be fully static, but an uncached \\`fetch(...)\\`, database call, or \\`connection()\\` requires rendering at request time.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the data used by \\`generateMetadata()\\` with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [static] Replace the dynamic data used by \\`generateMetadata()\\` with static data\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/static-metadata-dynamic`\n )\n}\n\nexport function createNonPrerenderableMetadataErrorInStaticRoute(\n route: string\n): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data in \\`generateMetadata()\\` on a route that must be fully static.\\n\\n` +\n `This route is configured to be fully static, but some data requires rendering at request time.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] For uncached data: cache the data used by \\`generateMetadata()\\` with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [static] Replace the dynamic data used by \\`generateMetadata()\\` with static data\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/static-metadata-dynamic`\n )\n}\n\nexport function createRuntimeViewportErrorInStaticRoute(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data in \\`generateViewport()\\` on a route that must be fully static.\\n\\n` +\n `This route is configured to be fully static, but runtime data from \\`cookies()\\`, \\`headers()\\`, \\`params\\`, \\`searchParams\\`, or a short-lived cache requires rendering at request time.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Replace the dynamic data used by \\`generateViewport()\\` with static data\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/static-viewport-runtime`\n )\n}\n\nexport function createDynamicViewportErrorInStaticRoute(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data in \\`generateViewport()\\` on a route that must be fully static.\\n\\n` +\n `This route is configured to be fully static, but an uncached \\`fetch(...)\\`, database call, or \\`connection()\\` requires rendering at request time.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the data used by \\`generateViewport()\\` with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [static] Replace the dynamic data used by \\`generateViewport()\\` with static data\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/static-viewport-dynamic`\n )\n}\n\nexport function createNonPrerenderableViewportErrorInStaticRoute(\n route: string\n): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data in \\`generateViewport()\\` on a route that must be fully static.\\n\\n` +\n `This route is configured to be fully static, but some data requires rendering at request time.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] For uncached data: cache the data used by \\`generateViewport()\\` with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [static] Replace the dynamic data used by \\`generateViewport()\\` with static data\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/static-viewport-dynamic`\n )\n}\n\nexport function logBuildDebugHint(route: string): void {\n if (process.env.NODE_ENV !== 'development') {\n console.error(\n `To get a more detailed stack trace and pinpoint the issue, try one of the following:\\n` +\n ` - Start the app in development mode by running \\`next dev\\`, then open \"${route}\" in your browser to investigate the error.\\n` +\n ` - Rerun the production build with \\`next build --debug-prerender\\` to generate better stack traces.`\n )\n } else if (!process.env.__NEXT_DEV_SERVER) {\n console.error(\n `To debug the issue, start the app in development mode by running \\`next dev\\`, then open \"${route}\" in your browser to investigate the error.`\n )\n }\n}\n","/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */\n\nimport type { WorkStore } from './work-async-storage.external'\nimport type {\n RequestStore,\n WorkUnitStore,\n PrerenderStoreLegacy,\n PrerenderStoreModern,\n ValidationStoreClient,\n PrerenderStoreModernServer,\n} from './work-unit-async-storage.external'\n\n// Once postpone is in stable we should switch to importing the postpone export directly\nimport React from 'react'\n\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport { getStagedRenderingController } from './work-unit-async-storage.external'\nimport { isClientHookDynamicError } from '../dynamic-rendering-utils'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n OUTLET_BOUNDARY_NAME,\n ROOT_LAYOUT_BOUNDARY_NAME,\n} from '../../lib/framework/boundary-constants'\nimport { scheduleOnNextTick } from '../../lib/scheduler'\nimport {\n createRuntimeBodyError,\n createDynamicBodyError,\n createRuntimeBodyErrorInNavigation,\n createNavigationBodyErrorInNavigation,\n createPrefetchBodyErrorInNavigation,\n createDynamicBodyErrorInNavigation,\n createDynamicOrRuntimeBodyError,\n createRuntimeMetadataError,\n createDynamicMetadataError,\n createRuntimeViewportError,\n createNavigationViewportError,\n createPrefetchViewportError,\n createDynamicViewportError,\n createDynamicOrRuntimeViewportError,\n createDynamicOrRuntimeMetadataError,\n logBuildDebugHint,\n createLinkBodyErrorInNavigation,\n createLinkMetadataError,\n createLinkViewportError,\n createNavigationMetadataError,\n createPrefetchMetadataError,\n createNonPrerenderableMetadataErrorInStaticRoute,\n createNonPrerenderableViewportErrorInStaticRoute,\n createNonPrerenderableBodyErrorInStaticRoute,\n createRuntimeBodyErrorInStaticRoute,\n createDynamicBodyErrorInStaticRoute,\n createRuntimeMetadataErrorInStaticRoute,\n createDynamicMetadataErrorInStaticRoute,\n createRuntimeViewportErrorInStaticRoute,\n createDynamicViewportErrorInStaticRoute,\n} from './blocking-route-messages'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport {\n INSTANT_VALIDATION_BOUNDARY_NAME,\n INSTANT_SLOT_MARKER_PREFIX,\n INSTANT_SLOT_MARKER_SUFFIX,\n} from './instant-validation/boundary-constants'\nimport {\n type ValidationBoundaryTracking,\n allRequiredBoundariesRendered,\n} from './instant-validation/boundary-tracking'\nimport type { InstantValidationSampleTracking } from './instant-validation/instant-samples'\nimport { createUnrenderedSegmentError } from '../../shared/lib/instant-messages'\nimport { getReactBrowserBailoutReason } from '../../shared/lib/lazy-dynamic/react-browser-bailout'\n\nexport type DynamicAccess = {\n /**\n * If debugging, this will contain the stack trace of where the dynamic access\n * occurred. This is used to provide more information to the user about why\n * their page is being rendered dynamically.\n */\n stack?: string\n\n /**\n * The expression that was accessed dynamically.\n */\n expression: string\n}\n\n// Stores dynamic reasons used during an RSC render.\nexport type DynamicTrackingState = {\n /**\n * When true, stack information will also be tracked during dynamic access.\n */\n readonly isDebugDynamicAccesses: boolean | undefined\n\n /**\n * The dynamic accesses that occurred during the render.\n */\n readonly dynamicAccesses: Array<DynamicAccess>\n\n syncDynamicErrorWithStack: null | Error\n syncDynamicErrorWithStackPostMicrotask: boolean\n}\n\n// Stores dynamic reasons used during an SSR render.\nexport type DynamicValidationState = {\n hasSuspenseAboveBody: boolean\n hasDynamicMetadata: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array<Error>\n}\n\nexport function createDynamicTrackingState(\n isDebugDynamicAccesses: boolean | undefined\n): DynamicTrackingState {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null,\n syncDynamicErrorWithStackPostMicrotask: false,\n }\n}\n\nexport function createDynamicValidationState(): DynamicValidationState {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n }\n}\n\nfunction getPendingClientSyncDynamicError(\n clientDynamic: DynamicTrackingState\n): null | Error {\n return clientDynamic.syncDynamicErrorWithStackPostMicrotask\n ? null\n : clientDynamic.syncDynamicErrorWithStack\n}\n\nexport function getFirstDynamicReason(\n trackingState: DynamicTrackingState\n): undefined | string {\n return trackingState.dynamicAccesses[0]?.expression\n}\n\n/**\n * This function communicates that the current scope should be treated as dynamic.\n *\n * In most cases this function is a no-op but if called during\n * a PPR prerender it will postpone the current sub-tree and calling\n * it during a normal prerender will cause the entire prerender to abort\n */\nexport function markCurrentScopeAsDynamic(\n store: WorkStore,\n workUnitStore: undefined | Exclude<WorkUnitStore, PrerenderStoreModern>,\n expression: string\n): void {\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender-legacy':\n case 'request':\n case 'build-time-generator':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-legacy':\n workUnitStore.revalidate = 0\n\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n case 'request':\n markRequestStoreAsDynamic(workUnitStore)\n break\n case 'build-time-generator':\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\n/**\n * This function is meant to be used when prerendering without cacheComponents or PPR.\n * When called during a build it will cause Next.js to consider the route as dynamic.\n *\n * @internal\n */\nexport function throwToInterruptStaticGeneration(\n expression: string,\n store: WorkStore,\n prerenderStore: PrerenderStoreLegacy\n): never {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n\n prerenderStore.revalidate = 0\n\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n}\n\n/**\n * This function should be used to track whether something dynamic happened even when\n * we are in a dynamic render. This is useful for Dev where all renders are dynamic but\n * we still track whether dynamic APIs were accessed for helpful messaging\n *\n * @internal\n */\nexport function trackDynamicDataInDynamicRender(workUnitStore: WorkUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-client':\n case 'validation-client':\n case 'build-time-generator':\n break\n case 'request':\n markRequestStoreAsDynamic(workUnitStore)\n break\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction markRequestStoreAsDynamic(requestStore: RequestStore): void {\n if (process.env.__NEXT_DEV_SERVER && requestStore.phase === 'render') {\n requestStore.usedDynamic = true\n }\n}\n\nfunction abortOnSynchronousDynamicDataAccess(\n route: string,\n expression: string,\n prerenderStore: PrerenderStoreModern\n): void {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n\n const error = createPrerenderInterruptedError(reason)\n\n prerenderStore.controller.abort(error)\n\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function abortOnSynchronousPlatformIOAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): void {\n const dynamicTracking = prerenderStore.dynamicTracking\n\n if (dynamicTracking && dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n // React completes the task that is currently rendering before scheduled\n // abort cleanup. Client tracking can attribute the sync IO only during\n // that current task; server tracking keeps the error regardless.\n queueMicrotask(() => {\n dynamicTracking.syncDynamicErrorWithStackPostMicrotask = true\n })\n }\n\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n}\n\n/**\n * use this function when prerendering with cacheComponents. If we are doing a\n * prospective prerender we don't actually abort because we want to discover\n * all caches for the shell. If this is the actual prerender we do abort.\n *\n * This function accepts a prerenderStore but the caller should ensure we're\n * actually running in cacheComponents mode.\n *\n * @internal\n */\nexport function abortAndThrowOnSynchronousRequestDataAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): never {\n const prerenderSignal = prerenderStore.controller.signal\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n // Preserve the exact server-side dynamic access for final validation after\n // interrupting this render.\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n }\n }\n }\n throw createPrerenderInterruptedError(\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n )\n}\n\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'\n\nfunction createPrerenderInterruptedError(message: string): Error {\n const error = new Error(message)\n ;(error as any).digest = NEXT_PRERENDER_INTERRUPTED\n return error\n}\n\ntype DigestError = Error & {\n digest: string\n}\n\nexport function isPrerenderInterruptedError(\n error: unknown\n): error is DigestError {\n return (\n typeof error === 'object' &&\n error !== null &&\n (error as any).digest === NEXT_PRERENDER_INTERRUPTED &&\n 'name' in error &&\n 'message' in error &&\n error instanceof Error\n )\n}\n\nexport function accessedDynamicData(\n dynamicAccesses: Array<DynamicAccess>\n): boolean {\n return dynamicAccesses.length > 0\n}\n\nexport function consumeDynamicAccess(\n serverDynamic: DynamicTrackingState,\n clientDynamic: DynamicTrackingState\n): DynamicTrackingState['dynamicAccesses'] {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses)\n return serverDynamic.dynamicAccesses\n}\n\nexport function formatDynamicAPIAccesses(\n dynamicAccesses: Array<DynamicAccess>\n): string[] {\n return dynamicAccesses\n .filter(\n (access): access is Required<DynamicAccess> =>\n typeof access.stack === 'string' && access.stack.length > 0\n )\n .map(({ expression, stack }) => {\n stack = stack\n .split('\\n')\n // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4)\n .filter((line) => {\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false\n }\n\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' (<anonymous>)')) {\n return false\n }\n\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false\n }\n\n return true\n })\n .join('\\n')\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`\n })\n}\n\n/**\n * In a prerender, we may end up with hanging Promises as inputs due them\n * stalling on connection() or because they're loading dynamic data. In that\n * case we need to abort the encoding of arguments since they'll never complete.\n */\nexport function createHangingInputAbortSignal(\n workUnitStore: PrerenderStoreModernServer\n): AbortSignal\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController()\n\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(() => {\n controller.abort()\n })\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the final stage.\n // if an input didn't resolve at that point, then we can assume it never will.\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n\n const stagedRendering = getStagedRenderingController(workUnitStore)\n if (stagedRendering && stagedRendering.finalStage !== null) {\n stagedRendering\n .waitForStage(stagedRendering.finalStage)\n .then(() => scheduleOnNextTick(() => controller.abort()), noop)\n } else {\n scheduleOnNextTick(() => controller.abort())\n }\n }\n\n return controller.signal\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'build-time-generator':\n return undefined\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction noop() {}\n\nexport function annotateDynamicAccess(\n expression: string,\n prerenderStore: PrerenderStoreModern | ValidationStoreClient\n) {\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(<anonymous>\\)/\n\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags =\n 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'\n\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense (<anonymous>)\n// at SomeComponent (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(\n `\\\\n\\\\s+at Suspense \\\\(<anonymous>\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(<anonymous>\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`\n)\n\nconst hasMetadataRegex = new RegExp(\n `\\\\n\\\\s+at ${METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasViewportRegex = new RegExp(\n `\\\\n\\\\s+at ${VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`)\n\nconst hasInstantValidationBoundaryRegex = new RegExp(\n `\\\\n\\\\s+at ${INSTANT_VALIDATION_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst slotMarkerRegex = new RegExp(\n `\\\\n\\\\s+at ${INSTANT_SLOT_MARKER_PREFIX}(\\\\d+)${INSTANT_SLOT_MARKER_SUFFIX}[\\\\n\\\\s]`\n)\n\n/** Look up the config factory for the slot this error belongs to.\n * Checks the component stack for a slot marker (__next_instant_slot_N__)\n * and returns the config at that index. Falls back to index 0 (root\n * config) when no slot marker is found or the slot has no config. */\nfunction resolveInstantStack(\n componentStack: string,\n dynamicValidation: InstantValidationState\n): (() => Error) | null {\n const { slotStacks } = dynamicValidation\n if (slotStacks.length > 1) {\n const match = slotMarkerRegex.exec(componentStack)\n if (match) {\n // Slot markers are 0-indexed in the component name but\n // slotStacks is 1-indexed (index 0 is the root config).\n const slotIndex = parseInt(match[1], 10) + 1\n const slotStack = slotStacks[slotIndex]\n if (slotStack != null) {\n return slotStack\n }\n }\n }\n // Fall back to root config (index 0)\n return slotStacks[0] ?? null\n}\n\n/**\n * Inspects the component stack of an outlet boundary to discover whether the\n * user placed a Suspense boundary above the document body, and records the\n * opt-in on `dynamicValidation.hasSuspenseAboveBody` if so.\n *\n * The outlet itself isn't a meaningful source of dynamic — it only resolves\n * when metadata/viewport are dynamic, which we track via their own boundaries.\n * However, the outlet renders alongside the page content, so its stack passes\n * through the user's layout chain (typically reaching into `<body>` via the\n * root layout). That makes the outlet stack our best opportunity to spot a\n * Suspense boundary above the body, even when no real body content is dynamic.\n * Without this, a route whose only dynamic source is `generateViewport()` would\n * miss the Suspense-above-body opt-in, because the viewport's stack lives in\n * the head and never sees the user's root layout.\n *\n * We deliberately only set `hasSuspenseAboveBody`, not `hasAllowedDynamic`. The\n * latter tracks whether the body has dynamic content that's been wrapped in\n * Suspense (i.e., the page is partially dynamic). The outlet rendering tells us\n * about the structural opt-in for an empty shell, not about the body being\n * partially dynamic. The distinction matters because dynamic metadata is only\n * acceptable when the page is partially dynamic (via real body holes), and we\n * don't want this outlet-based detection to mask that case.\n */\nfunction trackOutletSuspenseAboveBody(\n componentStack: string,\n dynamicValidation: DynamicValidationState\n): void {\n if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n dynamicValidation.hasSuspenseAboveBody = true\n }\n}\n\nexport function trackDynamicAccessInStaticRoute(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState,\n isServerPartial: boolean,\n kind: StaticValidationHoleKind\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n }\n if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(\n createMetadataErrorInStaticRoute(kind, workStore.route),\n componentStack,\n null\n )\n )\n return\n }\n if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(\n createViewportErrorInStaticRoute(kind, workStore.route),\n componentStack,\n null\n )\n )\n return\n }\n\n let hasSuspense = false\n if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // this error had a Suspense boundary above it, and it's above the body as well.\n dynamicValidation.hasSuspenseAboveBody = true\n hasSuspense = true\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it.\n hasSuspense = true\n }\n\n if (hasSuspense) {\n if (!isServerPartial) {\n // If we don't have holes caused by server data, then any holes must be caused\n // by client-only code, which is allowed.\n dynamicValidation.hasAllowedDynamic = true\n return\n }\n\n // We have holes that may be caused by server data.\n if (syncDynamicError || isClientHookDynamicError(dynamicReason)) {\n // We know this hole wasn't caused by server data, so it's allowed\n // (because it's wrapped in a Suspense)\n dynamicValidation.hasAllowedDynamic = true\n return\n }\n\n // Any remaining hole may be caused by a server hole.\n // These are not allowed even with Suspense.\n // (NOTE: this may misreport valid client dynamic holes as server holes)\n dynamicValidation.dynamicErrors.push(\n addErrorContext(\n createBodyErrorInStaticRoute(kind, workStore.route),\n componentStack,\n null\n )\n )\n return\n }\n\n if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n isServerPartial\n ? // This hole may be caused by server data.\n // (NOTE: this may misreport client dynamic holes as server holes)\n createBodyErrorInStaticRoute(kind, workStore.route)\n : // TODO(ensure-static): this could be something client-specific because we know\n // that server data is complete\n createBodyError(kind, workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n}\n\nexport function trackAllowedDynamicAccess(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n const dynamicHoleKind = DynamicHoleKind.RuntimeOrDynamic\n\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true\n return\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n createBodyError(dynamicHoleKind, workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nexport enum DynamicHoleKind {\n /** We know that this hole is caused by runtime data. */\n Runtime = 1,\n /** We know that this hole is caused by link data. */\n Link = 2,\n /** We know that this hole is caused by navigation(). */\n Navigation = 3,\n /** We know that this hole is caused by prefetch(). */\n Prefetch = 4,\n /** We know that this hole is caused by dynamic data. */\n Dynamic = 5,\n /** We know that this hole is caused by runtime or dynamic data, but don't know which. */\n RuntimeOrDynamic = 6,\n}\n\n// In Instant Validation we can always discriminate between runtime and dynamic.\nexport type InstantValidationHoleKind = Exclude<\n DynamicHoleKind,\n DynamicHoleKind.RuntimeOrDynamic\n>\n\nexport type StaticValidationHoleKind =\n // During dev-time static validation we can discriminate runtime and dynamic.\n | DynamicHoleKind.Runtime\n | DynamicHoleKind.Dynamic\n // During build-time static validation we can't discriminate runtime and dynamic.\n | DynamicHoleKind.RuntimeOrDynamic\n\n/** Stores dynamic reasons used during an SSR render in instant validation. */\nexport type InstantValidationState = {\n hasDynamicMetadata: boolean\n hasAllowedClientDynamicAboveBoundary: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array<Error>\n validationPreventingErrors: Array<Error>\n thrownErrorsOutsideBoundary: Array<unknown>\n /** Per-slot config factories. Index 0 is the root config (fallback).\n * Indices 1+ correspond to slot marker components in the tree. */\n slotStacks: Array<(() => Error) | null>\n}\n\nexport function createInstantValidationState(\n slotStacks: Array<(() => Error) | null>\n): InstantValidationState {\n return {\n hasDynamicMetadata: false,\n hasAllowedClientDynamicAboveBoundary: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n validationPreventingErrors: [],\n thrownErrorsOutsideBoundary: [],\n slotStacks,\n }\n}\n\nexport function trackDynamicHoleInNavigation(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: InstantValidationState,\n clientDynamic: DynamicTrackingState,\n kind: InstantValidationHoleKind,\n boundaryState: ValidationBoundaryTracking\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n }\n // Resolve the config stack for this specific error. If the error\n // is inside a slot marker, use that slot's config. Otherwise fall\n // back to the default.\n const effectiveCreateInstantStack = resolveInstantStack(\n componentStack,\n dynamicValidation\n )\n\n if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n createMetadataError(kind, workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicMetadata = error\n return\n }\n if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n createViewportError(kind, workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n\n const boundaryLocation =\n hasInstantValidationBoundaryRegex.exec(componentStack)\n if (!boundaryLocation) {\n // We don't see the validation boundary in the component stack,\n // so this hole must be coming from a shared parent.\n // Shared parents are fully resolved and don't have RSC holes,\n // but they can still suspend in a client component during SSR.\n\n // If we managed to render all the validation boundaries, that means\n // that the client holes aren't blocking validation and we can disregard them.\n // Note that we don't even care whether they have suspense or not.\n if (allRequiredBoundariesRendered(boundaryState)) {\n dynamicValidation.hasAllowedClientDynamicAboveBoundary = true\n dynamicValidation.hasAllowedDynamic = true // Holes outside the boundary contribute to allowing dynamic metadata\n return\n } else {\n // TODO(instant-validation) TODO(NAR-787)\n // If shared parents blocked us from validating, we should only log\n // the errors from the innermost (segments), i.e. omit layouts whose\n // slots managed to render (because clearly they didn't block validation)\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because a Client Component in a parent segment prevented the page from rendering.`\n const error = addErrorContext(\n new Error(message),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.validationPreventingErrors.push(error)\n return\n }\n } else {\n // The hole originates inside the validation boundary.\n //\n // Check if we have a Suspense above the hole, but below the validation boundary.\n // If we do, then this dynamic usage wouldn't block a navigation to this subtree.\n // Conversely, if the nearest suspense is above the validation boundary, then this subtree would block.\n //\n // Note that in the component stack, children come before parents.\n //\n // Valid:\n // ...\n // at Suspense\n // ...\n // at __next_prefetch_validation_boundary__\n //\n // Invalid:\n // ...\n // at __next_prefetch_validation_boundary__\n // ...\n // at Suspense\n //\n const suspenseLocation = hasSuspenseRegex.exec(componentStack)\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n dynamicValidation.hasAllowedDynamic = true\n return\n } else {\n // invalid - fallthrough\n }\n }\n }\n\n if (syncDynamicError) {\n if (\n effectiveCreateInstantStack !== null &&\n syncDynamicError.cause === undefined\n ) {\n syncDynamicError.cause = effectiveCreateInstantStack()\n }\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(\n dynamicReason,\n componentStack,\n effectiveCreateInstantStack\n )\n )\n return\n }\n\n const error = addErrorContext(\n createBodyErrorInNavigation(kind, workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nfunction createBodyError(kind: StaticValidationHoleKind, route: string): Error {\n switch (kind) {\n case DynamicHoleKind.Runtime:\n return createRuntimeBodyError(route)\n case DynamicHoleKind.Dynamic:\n return createDynamicBodyError(route)\n case DynamicHoleKind.RuntimeOrDynamic:\n return createDynamicOrRuntimeBodyError(route)\n }\n}\n\nfunction createBodyErrorInNavigation(\n kind: InstantValidationHoleKind,\n route: string\n): Error {\n switch (kind) {\n case DynamicHoleKind.Runtime:\n return createRuntimeBodyErrorInNavigation(route)\n case DynamicHoleKind.Link:\n return createLinkBodyErrorInNavigation(route)\n case DynamicHoleKind.Navigation:\n return createNavigationBodyErrorInNavigation(route)\n case DynamicHoleKind.Prefetch:\n return createPrefetchBodyErrorInNavigation(route)\n case DynamicHoleKind.Dynamic:\n return createDynamicBodyErrorInNavigation(route)\n }\n}\n\nfunction createMetadataError(kind: DynamicHoleKind, route: string): Error {\n switch (kind) {\n case DynamicHoleKind.Runtime:\n return createRuntimeMetadataError(route)\n case DynamicHoleKind.Link:\n return createLinkMetadataError(route)\n case DynamicHoleKind.Navigation:\n return createNavigationMetadataError(route)\n case DynamicHoleKind.Prefetch:\n return createPrefetchMetadataError(route)\n case DynamicHoleKind.Dynamic:\n return createDynamicMetadataError(route)\n case DynamicHoleKind.RuntimeOrDynamic:\n return createDynamicOrRuntimeMetadataError(route)\n }\n}\n\nfunction createViewportError(kind: DynamicHoleKind, route: string): Error {\n switch (kind) {\n case DynamicHoleKind.Runtime:\n return createRuntimeViewportError(route)\n case DynamicHoleKind.Link:\n return createLinkViewportError(route)\n case DynamicHoleKind.Navigation:\n return createNavigationViewportError(route)\n case DynamicHoleKind.Prefetch:\n return createPrefetchViewportError(route)\n case DynamicHoleKind.Dynamic:\n return createDynamicViewportError(route)\n case DynamicHoleKind.RuntimeOrDynamic:\n return createDynamicOrRuntimeViewportError(route)\n }\n}\n\nfunction createBodyErrorInStaticRoute(\n kind: StaticValidationHoleKind,\n route: string\n): Error {\n switch (kind) {\n case DynamicHoleKind.Runtime:\n return createRuntimeBodyErrorInStaticRoute(route)\n case DynamicHoleKind.Dynamic:\n return createDynamicBodyErrorInStaticRoute(route)\n case DynamicHoleKind.RuntimeOrDynamic:\n return createNonPrerenderableBodyErrorInStaticRoute(route)\n }\n}\n\nfunction createMetadataErrorInStaticRoute(\n kind: StaticValidationHoleKind,\n route: string\n) {\n switch (kind) {\n case DynamicHoleKind.Runtime:\n return createRuntimeMetadataErrorInStaticRoute(route)\n case DynamicHoleKind.Dynamic:\n return createDynamicMetadataErrorInStaticRoute(route)\n case DynamicHoleKind.RuntimeOrDynamic:\n return createNonPrerenderableMetadataErrorInStaticRoute(route)\n }\n}\n\nfunction createViewportErrorInStaticRoute(\n kind: StaticValidationHoleKind,\n route: string\n) {\n switch (kind) {\n case DynamicHoleKind.Runtime:\n return createRuntimeViewportErrorInStaticRoute(route)\n case DynamicHoleKind.Dynamic:\n return createDynamicViewportErrorInStaticRoute(route)\n case DynamicHoleKind.RuntimeOrDynamic:\n return createNonPrerenderableViewportErrorInStaticRoute(route)\n }\n}\n\nexport function trackThrownErrorInNavigation(\n workStore: WorkStore,\n dynamicValidation: InstantValidationState,\n thrownValue: unknown,\n componentStack: string,\n reactBrowserBailout: boolean\n) {\n const boundaryLocation =\n hasInstantValidationBoundaryRegex.exec(componentStack)\n if (!boundaryLocation) {\n // There's no validation boundary on the component stack.\n // This error may have blocked a boundary from rendering.\n\n // Wrap the error to provide component context.\n // This helps for errors from node_modules which would otherwise\n // have no useful stack information due to ignore-listing,\n // e.g. next/dynamic with `ssr: false`.\n if (reactBrowserBailout) {\n // React preserves Next's branded bailout reason as the error cause.\n // Replace the internal wrapper before storing the user-facing diagnostic.\n const browserBailoutReason = getReactBrowserBailoutReason(thrownValue)\n if (browserBailoutReason !== undefined) {\n const browserBailoutError = thrownValue as Error\n browserBailoutError.cause = browserBailoutReason\n }\n }\n\n const error = addErrorContext(\n new Error(\n 'An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.',\n { cause: thrownValue }\n ),\n componentStack,\n null\n )\n dynamicValidation.thrownErrorsOutsideBoundary.push(error)\n } else {\n // There's validation boundary on the component stack,\n // so we know this error didn't block a validation boundary from rendering.\n // However, this error might be hiding be hiding dynamic content that would\n // cause validation to fail.\n const suspenseLocation = hasSuspenseRegex.exec(componentStack)\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n // There's a Suspense below the validation boundary but above this error's location.\n // This subtree can't fail instant validation because any potential\n // dynamic holes would be guarded by the Suspense anyway,\n // so we can allow this.\n return\n } else {\n // invalid - fallthrough\n }\n }\n if (reactBrowserBailout) {\n // React preserves Next's branded bailout reason as the error cause.\n // Replace the internal wrapper before storing the user-facing diagnostic.\n const browserBailoutReason = getReactBrowserBailoutReason(thrownValue)\n if (browserBailoutReason !== undefined) {\n const browserBailoutError = thrownValue as Error\n browserBailoutError.cause = browserBailoutReason\n }\n }\n\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because an error prevented the target segment from rendering.`\n const error = addErrorContext(\n new Error(message, { cause: thrownValue }),\n componentStack,\n null // TODO(instant-validation-build): conflicting use of cause\n )\n dynamicValidation.validationPreventingErrors.push(error)\n }\n}\n\nexport function trackDynamicHoleInStaticShell(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState,\n kind: DynamicHoleKind.Runtime | DynamicHoleKind.Dynamic\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n createMetadataError(kind, workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n createViewportError(kind, workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n kind === DynamicHoleKind.Runtime\n ? createRuntimeBodyError(workStore.route)\n : createDynamicBodyError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n */\nfunction addErrorContext(\n error: Error,\n componentStack: string,\n createInstantStack: (() => Error) | null\n) {\n const ownerStack =\n process.env.NODE_ENV !== 'production' && React.captureOwnerStack\n ? React.captureOwnerStack()\n : null\n\n if (createInstantStack !== null) {\n error.cause = createInstantStack()\n }\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack =\n error.name + ': ' + error.message + (ownerStack || componentStack)\n return error\n}\n\nexport enum PreludeState {\n Full = 0,\n Empty = 1,\n Errored = 2,\n}\n\nexport function logDisallowedDynamicError(\n workStore: WorkStore,\n error: Error\n): void {\n console.error(error)\n logBuildDebugHint(workStore.route)\n}\n\nexport function throwIfSyncIOUsed(\n workStore: WorkStore,\n serverDynamic: DynamicTrackingState\n) {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(\n workStore,\n serverDynamic.syncDynamicErrorWithStack\n )\n throw new StaticGenBailoutError()\n }\n}\n\nexport function throwIfDisallowedDynamic(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n serverDynamic: DynamicTrackingState,\n allowEmptyStaticShell: boolean\n): void {\n const dynamicHoleKind = DynamicHoleKind.RuntimeOrDynamic\n\n throwIfSyncIOUsed(workStore, serverDynamic)\n\n // The dynamic metadata error is a mistake-detection signal. It fires when the\n // rest of the shell is otherwise fully static apart from metadata, suggesting\n // the dynamic data access in `generateMetadata` was probably unintentional.\n // That condition is independent of whether the user or build phase accepted\n // an empty shell, so we surface it before any opt-in bypass.\n if (\n prelude === PreludeState.Full &&\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.hasDynamicMetadata\n ) {\n console.error(createMetadataError(dynamicHoleKind, workStore.route).message)\n throw new StaticGenBailoutError()\n }\n\n // Either flag expresses \"this shell is allowed to be empty/blocking\":\n // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)\n // and the build-phase fallback-shell case.\n // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root\n // layout.\n // Treat them as synonyms for the purpose of bypassing shell-failure errors.\n if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {\n return\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n for (let i = 0; i < dynamicErrors.length; i++) {\n logDisallowedDynamicError(workStore, dynamicErrors[i])\n }\n\n throw new StaticGenBailoutError()\n }\n\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(\n createViewportError(dynamicHoleKind, workStore.route).message\n )\n throw new StaticGenBailoutError()\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`\n )\n throw new StaticGenBailoutError()\n }\n }\n}\n\nexport function throwIfDisallowedDynamicInStaticRoute(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n serverDynamic: DynamicTrackingState,\n isFallbackShell: boolean,\n allowEmptyStaticShell: boolean,\n isServerPartial: boolean\n): void {\n const reasons = getDisallowedReasonsInStaticRoute(\n workStore,\n prelude,\n dynamicValidation,\n serverDynamic,\n isFallbackShell,\n allowEmptyStaticShell,\n isServerPartial\n )\n if (reasons.length > 0) {\n for (const reason of reasons) {\n logDisallowedDynamicError(workStore, reason)\n }\n throw new StaticGenBailoutError()\n }\n}\n\nexport function getDisallowedReasonsInStaticRoute(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n serverDynamic: DynamicTrackingState | null,\n isFallbackShell: boolean,\n allowEmptyStaticShell: boolean,\n isServerPartial: boolean\n): Error[] {\n if (serverDynamic && serverDynamic.syncDynamicErrorWithStack) {\n return [serverDynamic.syncDynamicErrorWithStack]\n }\n\n // We do a fallback shell prerender, but it's not meant to be validated --\n // we just need it to create the relevant prerender outputs.\n if (isFallbackShell) {\n return []\n }\n\n // Suspense-above-body and `instant = false` bypass reporting\n // that the shell is blocked. However, if we have non-prerenderable server\n // data, we still have to error, regardless of those two.\n if (\n !isServerPartial &&\n (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody)\n ) {\n return []\n }\n\n const { dynamicErrors } = dynamicValidation\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n // Dynamic data may have been passed into a client component without calling `use()`,\n // in which case we wouldn't see it during the prerender, but still need to error.\n // Fall back to a generic error message.\n if (isServerPartial) {\n return [\n new Error(\n `Route \"${workStore.route}\": Next.js encountered data that is not available during a static prerender, but is unable to provide a location.`\n ),\n ]\n }\n\n if (prelude === PreludeState.Empty || prelude === PreludeState.Errored) {\n // We've somehow ended up with an empty prelude but no dynamic errors.\n // We must've messed up the tracking somehow.\n return [\n new InvariantError(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`\n ),\n ]\n }\n return []\n}\n\nexport function getStaticShellDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n allowEmptyStaticShell: boolean\n): Array<Error> {\n // The dynamic metadata error is a mistake-detection signal. It fires when the\n // rest of the shell is otherwise fully static apart from metadata, suggesting\n // the dynamic data access in `generateMetadata` was probably unintentional.\n // That condition is independent of whether the user or build phase accepted\n // an empty shell, so we surface it before any opt-in bypass.\n if (\n prelude === PreludeState.Full &&\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicErrors.length === 0 &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n\n // Either flag expresses \"this shell is allowed to be empty/blocking\":\n // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)\n // and the build-phase fallback-shell case.\n // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root\n // layout.\n // Treat them as synonyms for the purpose of bypassing shell-failure errors.\n if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {\n return []\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n new InvariantError(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`\n ),\n ]\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n\n/**\n * `errors` are validation failures that should be surfaced immediately.\n * `deferredFallback` carries a missing-boundary explanation that the caller\n * should hold back until *every* validation depth has been tried — a missing\n * boundary often just means a parent layout intentionally omitted a slot, and\n * a different depth's validation may surface a more meaningful error.\n */\nexport type NavigationValidationResult =\n // instances that block instant navigation\n | Array<Error>\n // validation was blocked with zero or more reasons\n | Error\n | AggregateError\n\nexport function getNavigationDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: InstantValidationState,\n validationSampleTracking: InstantValidationSampleTracking | null,\n boundaryState: ValidationBoundaryTracking,\n devRenderDidError: boolean\n): NavigationValidationResult {\n // If we have errors related to missing samples, those should take precedence over everything else.\n if (validationSampleTracking) {\n const { missingSampleErrors } = validationSampleTracking\n if (missingSampleErrors.length > 0) {\n return missingSampleErrors\n }\n }\n\n const { validationPreventingErrors } = dynamicValidation\n if (validationPreventingErrors.length > 0) {\n if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {\n // The dev render already surfaced server errors to the user.\n // The same errors likely caused validation to be inconclusive,\n // so reporting them again as validation failures would be noisy.\n return []\n }\n return validationPreventingErrors\n }\n\n // NOTE: We don't care about Suspense above body here,\n // we're only concerned with the validation boundary\n if (prelude !== PreludeState.Full) {\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (\n prelude === PreludeState.Empty &&\n !dynamicValidation.hasAllowedClientDynamicAboveBoundary &&\n allRequiredBoundariesRendered(boundaryState)\n ) {\n // If we ever get this far then we messed up the tracking of invalid\n // dynamic. (When boundaries are missing the deferred fallback below\n // will surface a more useful error.)\n return new InvariantError(\n `Route \"${workStore.route}\" failed to render during instant validation and Next.js was unable to determine a reason.`\n )\n }\n } else {\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n }\n\n // Missing boundaries on their own aren't a strong signal — a parent\n // layout may legitimately omit a slot. Defer this so the caller can\n // try shallower validation depths first; if every depth comes up\n // empty we still want to surface this so the user is made aware that\n // validation didn't complete. When we add a markers API, the\n // marker-based variant of this check can become strict again.\n if (!allRequiredBoundariesRendered(boundaryState)) {\n const { thrownErrorsOutsideBoundary } = dynamicValidation\n const rootInstantStack = dynamicValidation.slotStacks[0]\n if (thrownErrorsOutsideBoundary.length === 0) {\n const missingFiles: string[] = []\n for (const [id, filePaths] of boundaryState.requiredIds) {\n if (!boundaryState.renderedIds.has(id)) {\n for (const filePath of filePaths) {\n let normalized = filePath\n .replace(/^\\[project\\][\\\\/]?/, '')\n .replace(process.cwd() + '/', '')\n .replace(process.cwd() + '\\\\', '')\n missingFiles.push(normalized)\n }\n }\n }\n missingFiles.sort()\n return createUnrenderedSegmentError(workStore.route, missingFiles)\n } else if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {\n // Errors outside the boundary likely blocked it from rendering,\n // but they're already being reported to the user via the dev\n // render. Suppress the validation failure to avoid noise.\n return []\n } else if (thrownErrorsOutsideBoundary.length === 1) {\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because the target segment was prevented from rendering, likely due to the following error.`\n const error = rootInstantStack !== null ? rootInstantStack() : new Error()\n error.name = 'Error'\n error.message = message\n return new AggregateError([\n error,\n thrownErrorsOutsideBoundary[0] as Error,\n ])\n } else {\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because the target segment was prevented from rendering, likely due to one of the following errors.`\n const error = rootInstantStack !== null ? rootInstantStack() : new Error()\n error.name = 'Error'\n error.message = message\n return new AggregateError([\n error,\n ...(thrownErrorsOutsideBoundary as Error[]),\n ])\n }\n }\n\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n","export const INSTANT_VALIDATION_BOUNDARY_NAME =\n '__next_instant_validation_boundary__'\n\nexport const INSTANT_SLOT_MARKER_PREFIX = '__next_instant_slot_'\nexport const INSTANT_SLOT_MARKER_SUFFIX = '__'\n","export type ValidationBoundaryTracking = {\n /**\n * Map from boundary id (the SegmentPath where a validation boundary is\n * placed) to the file paths of modules inside that boundary's subtree.\n * When the boundary spans multiple parallel slots, each slot contributes\n * its own first-found module path so all unrendered segments can be\n * reported together.\n */\n requiredIds: Map<string, string[]>\n renderedIds: Set<string>\n}\n\nexport function createValidationBoundaryTracking(\n /** Pass if the render is expected to render the same IDs as a previous one. */\n matchPrevious?: ValidationBoundaryTracking\n): ValidationBoundaryTracking {\n return {\n requiredIds: matchPrevious ? new Map(matchPrevious.requiredIds) : new Map(),\n renderedIds: new Set(),\n }\n}\n\nexport function allRequiredBoundariesRendered(\n state: ValidationBoundaryTracking\n): boolean {\n for (const id of state.requiredIds.keys()) {\n if (!state.renderedIds.has(id)) {\n return false\n }\n }\n return true\n}\n","import type {\n AppSegmentConfig,\n EnsureStatic,\n} from '../../../build/segment-config/app/app-segment-config'\nimport { parseLoaderTree } from '../../../shared/lib/router/utils/parse-loader-tree'\nimport {\n getLayoutOrPageModule,\n type LoaderTree,\n} from '../../lib/app-dir-module'\n\n/**\n * The outcome of resolving a route's `ensureStatic` config.\n * The ordering is intentional -- higher values indicate a\n * more constrained route that forces more request kinds to be static.\n *\n * A constraint also implies all its predecessors:\n * - `Prefetch` implies `Shell`, i.e. if prefetches are static, so are shells.\n * - `Navigation` implies `Prefetch` and `Shell`, i.e. if the whole page is static,\n * then so are its shells and prefetches.\n *\n * Note that this flattens `\"auto\"` and `false` into `None`.\n * This is because rendering code does not need to distinguish them --\n * both indicate that the route follows normal Partial Prefetching semantics\n * and does not force anything to be static.\n * However, it is only correct to collapse them into one *after* resolving the\n * config for the entire route, because they have different interactions with\n * configs from other segments on the same route.\n */\nexport enum EnsureStaticLevel {\n /** The route follows standard Partial Prefetching semantics. */\n None = 0,\n /** The route requires that app shells must be statically prerendered. */\n Shell = 1,\n /** The route requires that app shells and prefetches must be statically prerendered. */\n Prefetch = 2,\n /** The route requires that app shells, prefetches, and the whole page must be statically prerendered. */\n Navigation = 3,\n}\n\nfunction getEnsureStaticLevel(ensureStatic: EnsureStatic) {\n switch (ensureStatic) {\n case 'auto':\n case false: {\n return EnsureStaticLevel.None\n }\n case 'shell': {\n return EnsureStaticLevel.Shell\n }\n case 'prefetch': {\n return EnsureStaticLevel.Prefetch\n }\n case 'navigation': {\n return EnsureStaticLevel.Navigation\n }\n }\n}\n\nexport async function resolveEnsureStaticLevel(\n tree: LoaderTree,\n partialPrefetching: boolean\n): Promise<EnsureStaticLevel> {\n return getEnsureStaticLevel(\n await resolveEnsureStaticConfig(tree, partialPrefetching)\n )\n}\n\nexport async function resolveEnsureStaticConfig(\n tree: LoaderTree,\n partialPrefetching: boolean\n): Promise<Exclude<EnsureStatic, false>> {\n let { config, filePath } = await resolveEnsureStaticConfigImpl(tree)\n\n if (!partialPrefetching) {\n // If Partial Prefetching is not enabled for this route, we only support\n // a subset of `ensureStatic` values.\n // (We error in `getAppPageStaticInfo` if `ensureStatic` is used without enabling\n // Cache Components, so we don't have to assert that here)\n switch (config) {\n case 'auto': {\n // Default to the equivalent of Cache Components prefetching behavior.\n config = 'prefetch'\n break\n }\n case false:\n case 'shell': {\n // Not meaningful in Cache Components without Partial Prefetching\n const originalConfig = config\n config = 'prefetch'\n console.warn(\n `${formatEnsureStaticExport(originalConfig)} has no effect unless the route is using Partial Prefetching.` +\n `\\n (from: ${filePath})`\n )\n break\n }\n case 'prefetch':\n // Equivalent to regular Cache Components behavior, so we allow it\n // without warning to avoid noise when doing gradual opt-in\n break\n case 'navigation':\n // Meaningful in Cache Components, even without Partial Prefetching\n break\n default:\n config satisfies never\n }\n }\n\n if (config === false) {\n // `false` and \"auto\" are equivalent once resolved.\n return 'auto'\n } else {\n return config\n }\n}\n\ntype EnsureStaticWithSource = {\n config: EnsureStatic\n filePath: string | null\n}\n\nasync function resolveEnsureStaticConfigImpl(\n tree: LoaderTree\n): Promise<EnsureStaticWithSource> {\n const { mod: layoutOrPageMod, filePath } = await getLayoutOrPageModule(tree)\n\n const config = getEnsureStaticConfigForModule(layoutOrPageMod)\n\n const parentResult: EnsureStaticWithSource = {\n config,\n filePath: filePath ?? null,\n }\n\n // Walk the slots if any and validate that they don't have incompatible configs\n // with each other. If compatible, pick the most constrained value from the slots.\n let slotsResult: EnsureStaticWithSource | null = null\n let slotResultKey: string | null = null\n const { parallelRoutes } = parseLoaderTree(tree)\n for (const parallelRouteKey in parallelRoutes) {\n const parallelRoute = parallelRoutes[parallelRouteKey]\n const childResult = await resolveEnsureStaticConfigImpl(parallelRoute)\n if (!slotsResult) {\n slotsResult = childResult\n slotResultKey = parallelRouteKey\n } else {\n // Check if the child is compatible with the current result for the slots.\n switch (compareEnsureStatic(childResult.config, slotsResult.config)) {\n case Comparison.Compatible: {\n // 'auto' is compatible with anything, but if the current result is 'auto' and the new one isn't,\n // we want to use the more specific result.\n if (slotsResult.config === 'auto' && childResult.config !== 'auto') {\n slotsResult = childResult\n slotResultKey = parallelRouteKey\n }\n break\n }\n case Comparison.Incompatible:\n case Comparison.LessConstrained:\n case Comparison.MoreConstrained: {\n throw new Error(\n `Parallel slots cannot have incompatible \\`ensureStatic\\`.` +\n `\\n ${formatParallelSlot(slotResultKey!)}: ` +\n `\\n ${formatEnsureStaticExport(slotsResult.config)}` +\n `\\n (from: ${slotsResult.filePath})` +\n `\\n` +\n `\\n ${formatParallelSlot(parallelRouteKey)}: ` +\n `\\n ${formatEnsureStaticExport(childResult.config)}` +\n `\\n (from: ${childResult.filePath})` +\n `\\n` +\n `\\n Possible fixes:` +\n `\\n - Remove one of the \\`ensureStatic\\` exports` +\n `\\n - Change one of the \\`ensureStatic\\` exports to match the other`\n )\n }\n }\n }\n }\n\n // Child segments can override the config from the parent with a more constrained value,\n // but they cannot have a less constrained value.\n if (!slotsResult) {\n return parentResult\n } else {\n const comparison = compareEnsureStatic(\n slotsResult.config,\n parentResult.config\n )\n switch (comparison) {\n case Comparison.Compatible: {\n // 'auto' is compatible with anything, but if the parent result is 'auto' and the slots one isn't,\n // we want to use the more constrained result.\n if (parentResult.config === 'auto' && slotsResult.config !== 'auto') {\n return slotsResult\n } else {\n return parentResult\n }\n }\n case Comparison.MoreConstrained: {\n return slotsResult\n }\n case Comparison.LessConstrained:\n case Comparison.Incompatible: {\n throw new Error(\n (comparison === Comparison.LessConstrained\n ? `A child segment cannot override a parent segment with a less-constrained \\`ensureStatic\\`.`\n : `A child segment cannot override a parent segment with an incompatible \\`ensureStatic\\`.`) +\n `\\n Parent has: ` +\n `\\n ${formatEnsureStaticExport(parentResult.config)}` +\n `\\n (from: ${parentResult.filePath})` +\n `\\n Child has: ` +\n `\\n ${formatEnsureStaticExport(slotsResult.config)}` +\n `\\n (from: ${slotsResult.filePath})` +\n `\\n` +\n `\\n Possible fixes:` +\n `\\n - Remove one of the \\`ensureStatic\\` exports` +\n `\\n - Change one of the \\`ensureStatic\\` exports to match the other`\n )\n }\n }\n }\n}\n\nfunction formatParallelSlot(slot: string) {\n return slot === 'children' ? slot : `@${slot}`\n}\n\nfunction formatEnsureStaticExport(config: EnsureStatic) {\n return `export const ensureStatic = ${JSON.stringify(config)}`\n}\n\nenum Comparison {\n LessConstrained = 1,\n Compatible = 2,\n MoreConstrained = 3,\n Incompatible = 4,\n}\n\nconst ENSURE_STATIC_ORDER: Exclude<EnsureStatic, 'auto' | false>[] = [\n 'shell',\n 'prefetch',\n 'navigation',\n]\n\nfunction compareEnsureStatic(\n left: EnsureStatic,\n right: EnsureStatic\n): Comparison {\n // 'auto' is compatible with everything.\n if (left === 'auto' || right === 'auto') {\n return Comparison.Compatible\n }\n\n // `false` is compatible with false.\n if (left === false && right === false) {\n return Comparison.Compatible\n }\n // If only one of the values is `false` (we know it's not both), it's incompatible.\n if (left === false || right === false) {\n return Comparison.Incompatible\n }\n\n const leftSort = ENSURE_STATIC_ORDER.indexOf(left)\n const rightSort = ENSURE_STATIC_ORDER.indexOf(right)\n return leftSort < rightSort\n ? Comparison.LessConstrained\n : leftSort === rightSort\n ? Comparison.Compatible\n : Comparison.MoreConstrained\n}\n\nfunction getEnsureStaticConfigForModule(\n mod: Record<string, any> | undefined\n): EnsureStatic {\n return (mod ? (mod as AppSegmentConfig).ensureStatic : undefined) ?? 'auto'\n}\n","import { InvariantError } from '../../shared/lib/invariant-error'\nimport { createPromiseWithResolvers } from '../../shared/lib/promise-with-resolvers'\n\nexport enum RenderStage {\n Before = 1,\n //\n ShellStatic = 10,\n /** Discrimination-only stage: `prefetch()` in validation renders (static) */\n PrefetchStatic_prefetchApi = 11,\n PrefetchStatic = 12,\n NavigationStatic = 13,\n Static = 14,\n //\n ShellRuntime = 20,\n /** Discrimination-only stage: `prefetch()` in validation renders (runtime) */\n PrefetchRuntime_prefetchApi = 21,\n PrefetchRuntime = 22,\n NavigationRuntime = 23,\n //\n Dynamic = 30,\n Abandoned = 40,\n}\n\nexport type AdvanceableRenderStage = Exclude<\n RenderStage,\n RenderStage.Before | RenderStage.Abandoned\n>\n\nexport const RENDER_STAGE_ADVANCE_ORDER: AdvanceableRenderStage[] = [\n RenderStage.ShellStatic,\n RenderStage.PrefetchStatic_prefetchApi,\n RenderStage.PrefetchStatic,\n RenderStage.NavigationStatic,\n RenderStage.Static,\n //\n RenderStage.ShellRuntime,\n RenderStage.PrefetchRuntime_prefetchApi,\n RenderStage.PrefetchRuntime,\n RenderStage.NavigationRuntime,\n //\n RenderStage.Dynamic,\n]\n\nexport function getNextStage(\n stage: Exclude<AdvanceableRenderStage, RenderStage.Dynamic>\n) {\n return RENDER_STAGE_ADVANCE_ORDER[\n RENDER_STAGE_ADVANCE_ORDER.indexOf(stage) + 1\n ]\n}\n\nexport function isAdvanceableRenderStage(\n stage: RenderStage\n): stage is AdvanceableRenderStage {\n return RenderStage.Before < stage && stage <= RenderStage.Dynamic\n}\n\nexport enum SyncIOMode {\n /** Sync IO does not error in any stage. */\n Untracked = 1,\n /** Before `partialPrefetching`: Sync IO errors in static stages, and is allowed otherwise. */\n AllowedInRuntimeOrDynamic = 2,\n /** After `partialPrefetching`: Sync IO errors in all stages other than dynamic. */\n AllowedInDynamic = 3,\n}\n\nexport class StagedRenderingController {\n private abortSignal: AbortSignal | null\n private abandonController: AbortController | null\n private syncIOMode: SyncIOMode\n public readonly finalStage: AdvanceableRenderStage | null\n\n currentStage: RenderStage = RenderStage.Before\n\n syncInterruptReason: Error | null = null\n\n triggers: Record<AdvanceableRenderStage, StageTrigger> =\n createAdvanceableStageTriggers()\n\n constructor({\n abortSignal,\n abandonController,\n syncIO,\n finalStage,\n }: {\n abortSignal: AbortSignal | null\n abandonController: AbortController | null\n syncIO: SyncIOMode\n finalStage: AdvanceableRenderStage | null\n }) {\n this.abortSignal = abortSignal\n this.abandonController = abandonController\n this.syncIOMode = syncIO\n this.finalStage = finalStage\n\n if (abortSignal) {\n abortSignal.addEventListener(\n 'abort',\n () => {\n // Reject all stage promises that haven't already been resolved.\n // `cancelStageTrigger` is a noop if the trigger already resolved.\n const { reason } = abortSignal\n for (const trigger of Object.values(this.triggers)) {\n cancelStageTrigger(trigger, reason)\n }\n },\n { once: true }\n )\n }\n\n if (abandonController) {\n abandonController.signal.addEventListener(\n 'abort',\n () => {\n this.abandonRender()\n },\n { once: true }\n )\n }\n }\n\n /**\n * Schedules a callback that will execute synchronously when the controller is advanced\n * to `stage` or past it, before any promises for that stage are resolved.\n * If the controller is already past `stage`, the callback is executed immediately.\n * */\n onStage(stage: AdvanceableRenderStage, callback: () => void) {\n addSyncTriggerListener(this.triggers[stage], callback)\n }\n\n shouldTrackSyncInterrupt(): boolean {\n const { syncIOMode, currentStage } = this\n switch (syncIOMode) {\n case SyncIOMode.Untracked: {\n return false\n }\n case SyncIOMode.AllowedInRuntimeOrDynamic: {\n // Legacy: track Sync IO only in static stages.\n // Do not track it before the render, or in runtime/dynamic stages.\n return (\n currentStage > RenderStage.Before &&\n currentStage <= RenderStage.Static\n )\n }\n case SyncIOMode.AllowedInDynamic: {\n // Track sync IO in all cacheable stages.\n // This means all stages except:\n // - before the render\n // - in the dynamic stage\n return (\n currentStage > RenderStage.Before &&\n currentStage < RenderStage.Dynamic\n )\n }\n }\n }\n\n /** Note: only call this if `shouldTrackSyncInterrupt()` returned true */\n syncInterruptCurrentStageWithReason(reason: Error) {\n const { currentStage } = this\n if (\n currentStage === RenderStage.Before ||\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // Not interruptible. Defensive noop.\n return\n }\n\n // If Sync IO occurs during an abandonable render, we trigger the abandon.\n // The abandon listener will call abandonRender which advances through\n // stages to let caches fill before marking as Abandoned.\n if (this.abandonController) {\n this.abandonController.abort()\n return\n }\n\n if (this.abortSignal) {\n // If this is an abortable render, we capture the interruption reason and stop advancing.\n // We don't release any more promises.\n // The caller is expected to abort the signal.\n this.syncInterruptReason = reason\n this.currentStage = RenderStage.Abandoned\n return\n }\n\n // If we're in a non-abandonable & non-abortable render,\n // we need to advance to the Dynamic stage and capture the interruption reason.\n // (in dev, this will be the restarted render)\n this.syncInterruptReason = reason\n this.advanceStage(RenderStage.Dynamic)\n }\n\n getSyncInterruptReason() {\n return this.syncInterruptReason\n }\n\n getStageEndTime(stage: Exclude<AdvanceableRenderStage, RenderStage.Dynamic>) {\n return this.triggers[getNextStage(stage)].triggeredAt ?? Infinity\n }\n\n private abandonRender() {\n // In staged rendering, only the initial render is abandonable.\n // We can abandon the initial render if\n // 1. We notice a cache miss, and need to wait for caches to fill\n // 2. A sync IO error occurs, and the render should be interrupted\n // (this might be a lazy intitialization of a module,\n // so we still want to restart in this case and see if it still occurs)\n // In either case, we'll be doing another render after this one,\n // so we only want to unblock the next stage, not Dynamic, because\n // unblocking the dynamic stage would likely lead to wasted (uncached) IO.\n\n const { currentStage } = this\n\n if (currentStage === RenderStage.Before) {\n throw new InvariantError(\n \"A render that hasn't started yet cannot be abandoned\"\n )\n }\n if (\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // We shouldn't ever trigger an abandon in these. Defensive noop.\n return\n }\n\n // Resolve all stages after the current one, up to runtime (excluding dynamic)\n const nextStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(currentStage) + 1\n const dynamicStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(\n RenderStage.Dynamic\n )\n for (let i = nextStageIx; i < dynamicStageIx; i++) {\n this.resolveStage(RENDER_STAGE_ADVANCE_ORDER[i])\n }\n\n this.currentStage = RenderStage.Abandoned\n }\n\n advanceStage(targetStage: AdvanceableRenderStage) {\n if (this.finalStage !== null && targetStage > this.finalStage) {\n throw new InvariantError(\n `Attempted to advance to stage ${RenderStage[targetStage]} but the render is limited to ${RenderStage[this.finalStage]}`\n )\n }\n const { currentStage } = this\n\n if (\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // Terminal stages, nowhere left to advance.\n return\n }\n\n // If we're already at the target stage or beyond, do nothing.\n if (targetStage <= currentStage) {\n return\n }\n\n this.currentStage = targetStage\n\n // Resolve all stages between the current stage and the target.\n const nextStageIx =\n currentStage === RenderStage.Before\n ? 0\n : RENDER_STAGE_ADVANCE_ORDER.indexOf(currentStage) + 1\n const targetStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(targetStage)\n for (let i = nextStageIx; i <= targetStageIx; i++) {\n this.resolveStage(RENDER_STAGE_ADVANCE_ORDER[i])\n }\n }\n\n private resolveStage(stage: AdvanceableRenderStage) {\n fireStageTrigger(this.triggers[stage])\n }\n\n private getStagePromise(stage: AdvanceableRenderStage): Promise<void> {\n return this.triggers[stage].promise\n }\n\n waitForStage(stage: AdvanceableRenderStage) {\n return this.getStagePromise(stage)\n }\n\n delayUntilStage<T>(\n stage: AdvanceableRenderStage,\n displayName: string | undefined,\n resolvedValue: T\n ): Promise<T> {\n const stagePromise = this.getStagePromise(stage)\n\n const promise =\n process.env.NODE_ENV === 'development'\n ? makeDevtoolsIOPromiseFromIOTrigger(\n stagePromise,\n displayName,\n resolvedValue\n )\n : stagePromise.then(() => resolvedValue)\n\n // Analogously to `makeDynamicHangingPromise`, we might reject this promise if the signal is invoked.\n // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it).\n // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning.\n if (this.abortSignal) {\n promise.catch(ignoreReject)\n }\n return promise\n }\n}\n\nfunction createAdvanceableStageTriggers(): Record<\n AdvanceableRenderStage,\n StageTrigger\n> {\n const triggers: Partial<Record<AdvanceableRenderStage, StageTrigger>> = {}\n for (const stage of RENDER_STAGE_ADVANCE_ORDER) {\n triggers[stage] = createStageTrigger()\n }\n return triggers as Record<AdvanceableRenderStage, StageTrigger>\n}\n\nfunction ignoreReject() {}\n\n// TODO(restart-on-cache-miss): the layering of `delayUntilStage`,\n// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise`\n// is confusing, we should clean it up.\nfunction makeDevtoolsIOPromiseFromIOTrigger<T>(\n ioTrigger: Promise<any>,\n displayName: string | undefined,\n resolvedValue: T\n): Promise<T> {\n // If we create a `new Promise` and give it a displayName\n // (with no userspace code above us in the stack)\n // React Devtools will use it as the IO cause when determining \"suspended by\".\n // In particular, it should shadow any inner IO that resolved/rejected the promise\n // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage)\n const promise = new Promise<T>((resolve, reject) => {\n ioTrigger.then(resolve.bind(null, resolvedValue), reject)\n })\n if (displayName !== undefined) {\n // @ts-expect-error\n promise.displayName = displayName\n }\n return promise\n}\n\ntype StageTrigger = {\n state: 'pending' | 'triggered' | 'cancelled'\n triggeredAt: number | null\n promise: Promise<void>\n _listeners: Array<() => void>\n _resolvePromise: () => void\n _rejectPromise: (reason: unknown) => void\n}\n\nfunction addSyncTriggerListener(trigger: StageTrigger, listener: () => void) {\n if (trigger.state === 'pending') {\n trigger._listeners.push(listener)\n } else {\n listener()\n }\n}\n\nfunction createStageTrigger(): StageTrigger {\n const { promise, resolve, reject } = createPromiseWithResolvers<void>()\n return {\n state: 'pending',\n triggeredAt: null,\n promise,\n _listeners: [],\n _resolvePromise: resolve,\n _rejectPromise: reject,\n }\n}\n\nfunction fireStageTrigger(trigger: StageTrigger) {\n if (trigger.state !== 'pending') {\n return\n }\n trigger.state = 'triggered'\n trigger.triggeredAt = performance.now() + performance.timeOrigin\n try {\n const { _listeners: listeners } = trigger\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n listeners.length = 0\n } finally {\n trigger._resolvePromise()\n }\n}\n\nfunction cancelStageTrigger(trigger: StageTrigger, reason: unknown) {\n if (trigger.state !== 'pending') {\n return\n }\n trigger.state = 'cancelled'\n // we didn't trigger, so don't save `triggeredAt`.\n\n // We're not gonna fire the listeners, we may as well free them.\n trigger._listeners.length = 0\n\n // Suppress unhandled rejection warnings for promises that no one is awaiting.\n trigger.promise.catch(ignoreReject)\n trigger._rejectPromise(reason)\n}\n","import { InvariantError } from '../shared/lib/invariant-error'\nimport { createPromiseWithResolvers } from '../shared/lib/promise-with-resolvers'\nimport { EnsureStaticLevel } from './app-render/segment-config/ensure-static'\nimport {\n RenderStage,\n type StagedRenderingController,\n type AdvanceableRenderStage,\n} from './app-render/staged-rendering'\nimport { workAsyncStorage } from './app-render/work-async-storage.external'\nimport type {\n RequestStore,\n WorkUnitStore,\n} from './app-render/work-unit-async-storage.external'\nimport { workUnitAsyncStorage } from './app-render/work-unit-async-storage.external'\nimport { getServerReact, getClientReact } from './runtime-reacts.external'\n\nexport function isHangingPromiseRejectionError(\n err: unknown\n): err is HangingPromiseRejectionError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === HANGING_PROMISE_REJECTION\n}\n\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'\n\nclass HangingPromiseRejectionError extends Error {\n public readonly digest = HANGING_PROMISE_REJECTION\n\n constructor(\n public readonly route: string,\n public readonly expression: string\n ) {\n super(\n `During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`\n )\n }\n}\n\nconst CLIENT_HOOK_DYNAMIC = 'CLIENT_HOOK_DYNAMIC'\n\nexport class ClientHookDynamicError extends Error {\n public readonly digest = CLIENT_HOOK_DYNAMIC\n\n constructor(route: string, expression: string) {\n super(\n `Route \"${route}\": Next.js encountered URL data \\`${expression}\\` in a Client Component outside of \\`<Suspense>\\`.\\n\\n` +\n `This blocks prerendering because the value is only available at runtime.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Wrap the component in \\`<Suspense fallback={...}>\\` so the hook value streams in after prerendering\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-client-hook`\n )\n }\n}\n\nexport function isClientHookDynamicError(\n err: unknown\n): err is ClientHookDynamicError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === CLIENT_HOOK_DYNAMIC\n}\n\ntype AbortListeners = Array<() => void>\nconst abortListenersBySignal = new WeakMap<AbortSignal, AbortListeners>()\n\n/**\n * Constructs a promise that never resolves, standing in for *dynamic* data:\n * data that is only available during a real dynamic request and hangs in\n * every kind of prerender — `io()`, `connection()`, uncached `fetch()`.\n *\n * This is primarily useful for cacheComponents where we use promise\n * resolution timing to determine which parts of a render can be included in a\n * prerender.\n *\n * Records nothing on the prerender store: the promise's holes are only ever\n * filled by a real dynamic request, so a runtime prefetch response would have\n * the same holes as the static one. If the data source would resolve during a\n * runtime prerender, use `makeRuntimeHangingPromise` instead.\n */\nexport function makeDynamicHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise<T> {\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\nexport function makeUntrackedHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise<T> {\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Constructs a promise that never resolves, standing in for session data\n * (which a runtime shell can access).\n * Examples: cookies, headers\n *\n * Awaiting one of these during a static prerender records on the prerender\n * store that a runtime shell would produce more content than the static\n * static shell, which the segment prefetch encoding uses\n * to tell the client whether a runtime request could be skipped.\n *\n * When unsure whether data is dynamic or runtime, prefer this method — the\n * cost of over-recording is a redundant runtime prefetch request; the cost of\n * under-recording is a permanently missing one.\n *\n * For fallback-param data — data a concrete (ISR-upgraded) prerender would\n * resolve — use `makeFallbackParamsHangingPromise` instead, so the access\n * is recorded with the right effect on the static-prefetch hint.\n */\nexport function makeSessionDataHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore\n): Promise<T> {\n const promise = makeHangingPromiseWithError<T>(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n return trackPromiseUsed(\n promise,\n trackSessionDataAccessed.bind(null, workUnitStore, expression)\n )\n}\n\n/**\n * Constructs a promise that never resolves, standing in for URL data,\n * which can be accessed in a runtime prefetch (but not a runtime shell).\n * Examples: fallback params, searchParams\n *\n * Awaiting one of these during a static prerender records on the prerender\n * store that a runtime prefetch would produce more content than the static\n * response, which the segment prefetch encoding uses\n * to tell the client whether a runtime prefetch request could be skipped.\n *\n * When unsure whether data is dynamic or runtime, prefer this method — the\n * cost of over-recording is a redundant runtime prefetch request; the cost of\n * under-recording is a permanently missing one.\n *\n * `workUnitStore` may be null ONLY when the caller tracks the access itself.\n * Such a caller MUST call `trackURLDataAccessed` from every path that\n * observes the promise (e.g. the proxy traps for `then`/`status`),\n * against the work unit store active at access time.\n *\n * For fallback-param data — data a concrete (ISR-upgraded) prerender would\n * resolve — use `makeFallbackParamsHangingPromise` instead, so the access\n * is recorded with the right effect on the static-prefetch hint.\n */\nexport function makeURLDataHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore | null\n): Promise<T> {\n const promise = makeHangingPromiseWithError<T>(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n if (workUnitStore === null) {\n return promise\n }\n return trackPromiseUsed(\n promise,\n trackURLDataAccessed.bind(null, workUnitStore, expression)\n )\n}\n\n/**\n * Creates a promise that stands in for a result that will either be session data\n * or URL data, but we don't know which.\n */\nexport function makeUnknownRuntimeDataHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore\n): Promise<T> {\n // We don't know if this is session or URL data, i.e. if it should affect the shell\n // or only the prefetch. Track it conservatively as affecting both.\n return makeSessionDataHangingPromise(signal, route, expression, workUnitStore)\n}\n\n/**\n * Constructs a promise that never resolves, standing in for data that is only\n * accessible in the prefetch, but not in the shell, e.g. `prefetch()`.\n * This usage does *not* indicate that a runtime request is needed,\n * only that the data is not available in a shell.\n *\n * @internal\n */\nexport function makePrefetchHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise<T> {\n return makeUntrackedHangingPromise(signal, route, expression)\n}\n\n/**\n * Variant of `makeRuntimeHangingPromise` for *fallback-param* data: fallback\n * route params and values derived solely from them (`params`, `rootParams`,\n * `pathname` during a fallback prerender). Like every runtime data access,\n * awaiting it records the access on the prerender store's response-level flag,\n * but its effect on the build-time static-prefetch hint differs — on a\n * fallback-upgradeable route the access is transient (a concrete prerender\n * resolves it), so it leaves the hint intact. See `trackFallbackParamsAccessed`.\n *\n * As with `makeRuntimeHangingPromise`, `workUnitStore` may be null ONLY when\n * the caller tracks the access itself by calling `trackFallbackParamsAccessed`\n * from every path that observes the promise.\n */\nexport function makeFallbackParamsHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore | null\n): Promise<T> {\n const promise = makeHangingPromiseWithError<T>(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n if (workUnitStore === null) {\n return promise\n }\n return trackPromiseUsed(\n promise,\n trackFallbackParamsAccessed.bind(null, workUnitStore, expression)\n )\n}\n\nexport type PrerenderDataTracking = {\n /**\n * Records when the render has accessed a request data source\n * that hangs during a static prerender but would resolve during a runtime\n * prerender — cookies, headers, fallback params, searchParams, and cache\n * entries excluded only from static prerenders.\n *\n * The client uses this promise as the actual source of truth for whether a segment\n * needs a runtime request. Prefetch hints can become stale after a revalidation,\n * so if a hint says a static request should be enough but `runtimeDataAccessed`\n * resolves to `true`, a follow-up runtime request will be issued.\n * This applies to both shells and prefetches.\n *\n * The promise is embedded in the RSC payload (`InitialRSCPayload['u']`),\n * and is meant to be rewindable. This means that the shell might not have\n * any runtime data accesses, even when the prefetch does.\n * (this has some subtleties; see `markRuntimeDataAccessWhenStageReached`\n * for more)\n *\n * After the prerender, the promise is consumed by `collectSegmentData` and each\n * static prefetch will contain it (`PrefetchFlightResponse['u']`).\n * However, all the segments for a route will use the same promise (because we're\n * only tracking this on the page level) so if one segment needs runtime data, then\n * all segments will be marked as such.\n * However, on the client `isPartial` takes precedence over `runtimeDataAccessed`,\n * so complete segments will not end up being deopted.\n */\n readonly runtimeDataAccessed: PromiseWithResolvers<boolean>\n\n /** Corresponds to `PrefetchHint.ShouldAttemptStaticShell`. */\n shouldAttemptStaticShell: boolean\n /** Corresponds to `PrefetchHint.ShouldAttemptStaticPrefetch`. */\n shouldAttemptStaticPrefetch: boolean\n}\n\nexport function createPrerenderDataTracking(): PrerenderDataTracking {\n return {\n runtimeDataAccessed: createPromiseWithResolvers(),\n shouldAttemptStaticShell: true,\n shouldAttemptStaticPrefetch: true,\n }\n}\n\nexport function finishPrerenderDataTracking(\n prerenderDataTracking: PrerenderDataTracking\n) {\n // If a runtime data access already resolved this promise, this is a no-op.\n prerenderDataTracking.runtimeDataAccessed.resolve(false)\n}\n\n/**\n * Records on a static prerender store that the render accessed a data source\n * which would have resolved in a runtime shell (or runtime prefetch).\n * No-op for all other store types.\n *\n * Prefer `makeRuntimeHangingPromise`. Use this function only when implementing\n * similar tracking and that one is not enough.\n */\nfunction trackSessionDataAccessed(\n workUnitStore: WorkUnitStore,\n expression: string\n): void {\n trackRuntimeDataAccessed(\n workUnitStore,\n PrerenderDataKind.SessionData,\n expression\n )\n}\n\n/**\n * Records on a static prerender store that the render accessed a data source\n * which would have resolved in a runtime prefetch (but NOT in a runtime shell)\n * No-op for all other store types.\n *\n * Prefer `makeRuntimeHangingPromise`. Use this function only when implementing\n * similar tracking and that one is not enough.\n *\n * For fallback-param data, use `trackFallbackParamsAccessed` instead. When\n * unsure, this is the conservative choice.\n */\nexport function trackURLDataAccessed(\n workUnitStore: WorkUnitStore,\n expression: string\n): void {\n trackRuntimeDataAccessed(workUnitStore, PrerenderDataKind.UrlData, expression)\n}\n\n/**\n * Fallback-param variant of `trackRuntimeDataAccessed`, for accesses of\n * fallback route params and values derived solely from them. It records the\n * response-level flag all the same, but only clears the build-time\n * static-prefetch hint when the route is not fallback-upgradeable — on an\n * upgradeable route the access is transient, since ISR later produces a\n * concrete prerender that resolves it.\n */\nexport function trackFallbackParamsAccessed(\n workUnitStore: WorkUnitStore,\n expression: string\n): void {\n trackRuntimeDataAccessed(\n workUnitStore,\n PrerenderDataKind.FallbackParams,\n expression\n )\n}\n\nconst enum PrerenderDataKind {\n SessionData = 1,\n UrlData = 2,\n FallbackParams = 3,\n}\n\nfunction trackRuntimeDataAccessed(\n workUnitStore: WorkUnitStore,\n dataKind: PrerenderDataKind,\n expression: string\n): void {\n switch (workUnitStore.type) {\n case 'prerender': {\n const { prerenderDataTracking, stagedRendering } = workUnitStore\n if (!prerenderDataTracking || !stagedRendering) {\n return\n }\n const { currentStage } = stagedRendering\n if (currentStage === RenderStage.Before) {\n console.error(\n new InvariantError(\n 'Unexpected trackRuntimeDataAccessed in the Before stage.'\n )\n )\n return\n }\n if (currentStage >= RenderStage.NavigationStatic) {\n // Ignore any accesses that happen after `navigation()` resolves.\n // The purpose of this tracking is to judge whether a runtime prefetch\n // would give us a more complete result than a static one.\n // But `navigation()` wouldn't have resolved in a runtime prefetch,\n // so e.g. `await navigation(); await cookies()` wouldn't have more content\n // in those, and we shouldn't count it.\n return\n }\n\n const ensureStaticLevel =\n workUnitStore.ensureStaticLevel ?? EnsureStaticLevel.None\n\n // NOTE: In general, we keep hints in sync with `needsRuntimeRequest`, but they\n // don't have to always match. The client re-uses hints for the entire route,\n // while `needsRuntimeRequest` can vary across individual prerendered param values\n // (e.g. if cookies are accessed depending on a param value).\n // Hints can also become outdated if a route only starts using runtime data\n // after a revalidation, so we have to expect this and be resilient to it.\n // Also see the upgradeable fallback params case below, which deliberately\n // puts them out of sync.\n\n switch (dataKind) {\n case PrerenderDataKind.SessionData: {\n // Potentially deopt both the shell and the prefetch,\n // because if the shell accessed runtime data, so does the prefetch.\n // However, if we're already past the shell stage, the shell is not affected.\n // (which makes e.g. `await prefetch(); await cookies()` only affect the prefetch)\n let firstAffectedStage:\n | RenderStage.ShellStatic\n | RenderStage.PrefetchStatic\n | null = null\n\n if (\n currentStage <= RenderStage.ShellStatic &&\n // Only track if we're not forcing the shell to be static.\n ensureStaticLevel < EnsureStaticLevel.Shell\n ) {\n prerenderDataTracking.shouldAttemptStaticShell = false\n firstAffectedStage ??= RenderStage.ShellStatic\n logRuntimeDeopt?.(expression, 'shell')\n }\n\n if (\n currentStage <= RenderStage.PrefetchStatic &&\n // Only track if we're not forcing the prefetch to be static.\n ensureStaticLevel < EnsureStaticLevel.Prefetch\n ) {\n prerenderDataTracking.shouldAttemptStaticPrefetch = false\n // NOTE: if the shell is affected, don't override it.\n firstAffectedStage ??= RenderStage.PrefetchStatic\n logRuntimeDeopt?.(expression, 'prefetch')\n }\n\n if (firstAffectedStage !== null) {\n markRuntimeDataAccessWhenStageReached(\n prerenderDataTracking,\n stagedRendering,\n firstAffectedStage\n )\n }\n break\n }\n case PrerenderDataKind.FallbackParams: {\n if (workUnitStore.isFallbackUpgradeable) {\n // An fallback-param access is transient when the route is\n // fallback-upgradeable (i.e. ISR later produces the concrete prerender a\n // static prefetch would hit) so it does not indicate the need for a runtime\n // request and thus does not affect the static hints.\n //\n // If runtime prefetches are not disallowed by `ensureStatic`, then we still\n // set `runtimeDataAccessed` (while keeping the hints static). This means that\n // if the concrete prerender isn't ready yet and we served the fallback, then\n // the client knows it can use a *runtime* prefetch for speculative links --\n // a runtime prefetch can provide the same content (or more) as the concrete\n // prerender would.\n if (ensureStaticLevel < EnsureStaticLevel.Prefetch) {\n markRuntimeDataAccessWhenStageReached(\n prerenderDataTracking,\n stagedRendering,\n // `params` are URL data, so they only affect the prefetch\n RenderStage.PrefetchStatic\n )\n logRuntimeUpgradeableFallback?.()\n }\n break\n }\n // not an upgradeable fallback param access, so we treat it as URL data.\n // intentional fallthrough\n }\n case PrerenderDataKind.UrlData: {\n // Only deopt the prefetch, not the shell, which cannot access URL data anyway.\n if (\n currentStage <= RenderStage.PrefetchStatic &&\n ensureStaticLevel < EnsureStaticLevel.Prefetch\n ) {\n prerenderDataTracking.shouldAttemptStaticPrefetch = false\n logRuntimeDeopt?.(expression, 'prefetch')\n\n markRuntimeDataAccessWhenStageReached(\n prerenderDataTracking,\n stagedRendering,\n RenderStage.PrefetchStatic\n )\n }\n break\n }\n }\n\n break\n }\n case 'prerender-client':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'validation-client':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'build-time-generator':\n // Only the modern server prerender tracks this; see the field docs on\n // PrerenderStoreModernServer.\n break\n default:\n workUnitStore satisfies never\n }\n}\n\n/**\n * Tracks a runtime data access on the `runtimeDataAccessed` promise,\n * but with a delay until `targetStage`.\n *\n * When we encounter a URL data access like `await params`, we need to mark the\n * *prefetch* as needing runtime data, but the *shell* should remain unaffected\n * (because it cannot access params anyway).\n *\n * However, the shell and the prefetch share one `runtimeDataAccessed` promise,\n * and it needs to be accurately rewindable by the client\n * In other words, we need to make sure that it reads as `false` when rewound\n * to a shell, but as `true` in the final response (the prefetch).\n *\n * This means that if the `await params` is encountered during the shell stage, we\n * cannot resolve `runtimeDataAccessed` immediately.\n * Instead, we delay the resolution until the PrefetchStatic stage, so the promise\n * will remain unresolved when rewound to the shell stage (which reads as `false`).\n */\nfunction markRuntimeDataAccessWhenStageReached(\n prerenderDataTracking: PrerenderDataTracking,\n stageController: StagedRenderingController,\n targetStage: AdvanceableRenderStage\n) {\n const { runtimeDataAccessed } = prerenderDataTracking\n // NOTE: If we're already in or past the target stage, we can avoid allocating a closure,\n // because `onStage` would've executed the callback immediately anyway.\n if (stageController.currentStage >= targetStage) {\n runtimeDataAccessed.resolve(true)\n } else {\n stageController.onStage(\n targetStage,\n runtimeDataAccessed.resolve.bind(null, true)\n )\n }\n}\n\nconst logRuntimeDeopt = process.env.NEXT_PRIVATE_DEBUG_RUNTIME_DATA\n ? (expression: string, kind: 'shell' | 'prefetch') => {\n const { route } = workAsyncStorage.getStore()!\n console.log(\n `Route '${route}': deopting to a runtime ${kind} because it used ${expression}`\n )\n }\n : undefined\n\nconst logRuntimeUpgradeableFallback = process.env\n .NEXT_PRIVATE_DEBUG_RUNTIME_DATA\n ? () => {\n const { route } = workAsyncStorage.getStore()!\n console.log(\n `Route '${route}': marking upgradeable fallback as runtime prefetchable`\n )\n }\n : undefined\n\n/**\n * Signals that we cannot recover both a runtime shell and a static (PPR) shell\n * from the same render. Use this whenever the stage of a promise varies on\n * `RequestStore.needsRuntimeShell`.\n * */\nexport function trackIncompatibleShellContent(\n workUnitStore: RequestStore,\n reason: string\n) {\n const { stagedRendering } = workUnitStore\n if (!stagedRendering) {\n return\n }\n\n // TODO(app-shells): optimize this to only consider stages that are relevant for validation.\n // We should only track incompatible content when it can affect them.\n // For now, we simply exclude everything that happens in the dynamic stage.\n // (Note that we also need to account for cache misses that move things to a\n // different stage -- those should also preemptively set `hasIncompatibleShellContent`\n // because there's a chance that a render with warm caches would set it)\n const { currentStage } = stagedRendering\n if (\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n return\n }\n if (process.env.NEXT_PRIVATE_DEBUG_VALIDATION) {\n const workStore = workAsyncStorage.getStore()!\n console.log(\n `Route ${workStore.route}: Incompatible shell content: ${reason}`\n )\n }\n workUnitStore.hasIncompatibleShellContent = true\n}\n\nexport function makeClientHookHangingPromise<T>(\n signal: AbortSignal,\n error: ClientHookDynamicError\n): Promise<T> {\n return makeHangingPromiseWithError(signal, error)\n}\n\nfunction makeHangingPromiseWithError<T>(\n signal: AbortSignal,\n error: Error\n): Promise<T> {\n if (signal.aborted) {\n return Promise.reject(error)\n } else {\n const hangingPromise = new Promise<T>((_, reject) => {\n const boundRejection = reject.bind(null, error)\n let currentListeners = abortListenersBySignal.get(signal)\n if (currentListeners) {\n currentListeners.push(boundRejection)\n } else {\n const listeners = [boundRejection]\n abortListenersBySignal.set(signal, listeners)\n signal.addEventListener(\n 'abort',\n () => {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n },\n { once: true }\n )\n }\n })\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject)\n return hangingPromise\n }\n}\n\nfunction ignoreReject() {}\n\n/**\n * Creates a promise that will be triggered when another promise resolves.\n * It will not emit unhandled rejections, which is important if the trigger\n * is a promise that might itself get rejected (e.g. when a prerender/render\n * are aborted due to sync IO)\n */\nexport function makePromiseFromTrigger<T>(\n trigger: Promise<any>,\n value: T\n): Promise<T> {\n const promise = trigger.then(() => value)\n promise.catch(ignoreReject)\n return promise\n}\n\nexport function makeDevtoolsIOAwarePromise<T>(\n underlying: T,\n requestStore: RequestStore,\n stage: AdvanceableRenderStage\n): Promise<T> {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(\n stage,\n undefined,\n underlying\n )\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise<T>((resolve) => {\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(() => {\n resolve(underlying)\n }, 0)\n })\n}\n\n/**\n * Invokes `onUse` whenever `then()/catch()/finally()` are called on the promise\n * or when the promise is awaited. */\nexport function trackPromiseUsed<T>(\n promise: Promise<T>,\n onUse: () => void\n): Promise<T> {\n // We can instrument `.then()/.catch()/.finally()` in one go by using a Promise subclass\n // that implements a custom `.then()`, because `catch` and `finally` delegate to it.\n //\n // Alternative implementation ideas that were tried and rejected:\n //\n // 1. Patching the methods directly via `promise.then = (..args) => { ... }`:\n // doesn't work, because Node does not call the monkeypatched methods for native `await`:\n // > Native Promise [...]: The promise is directly used and awaited natively, without calling `then()`.\n // > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await#description\n //\n // 2. Wrapping in a proxy that returns a custom `then/catch/finally`:\n // breaks async stacks in React's IO tracking (stack becomes `Promise.then`)\n return TrackedPromise.from<T>(promise, onUse)\n}\n\nclass TrackedPromise<T> extends Promise<T> {\n #onUse: (() => void) | null = null\n\n // We don't need derived promises to also be a TrackedPromise.\n // We only care about the first level of `.then()`.\n static get [Symbol.species]() {\n return Promise\n }\n\n static from<T>(promise: Promise<T>, onUse: () => void): TrackedPromise<T> {\n // Whenever the promise we're tracking resolves/rejects, we should follow.\n const tracked = new TrackedPromise<T>(promise.then.bind(promise))\n\n tracked.#onUse = onUse\n\n // Hanging promises catch rejections when created. Tracked promises are generally derived\n // from promises that may hang & reject, so we need to do the same.\n // However, we have to bypass the tracking we do in `TrackedPromise.then`.\n // (we're using `then` directly, because `catch` ends up delegating `TrackedPromise.then`)\n Promise.prototype.then.call(tracked, undefined, ignoreReject)\n\n return tracked\n }\n\n then<TResult1, TResult2>(\n onFulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>,\n onRejected?: (reason: unknown) => TResult2 | PromiseLike<TResult2>\n ): Promise<TResult1 | TResult2> {\n const onUse = this.#onUse\n if (onUse) {\n try {\n onUse()\n } catch (err) {\n // We don't want to break the method even if our tracking errored.\n console.error(err)\n }\n }\n\n return Promise.prototype.then.call(\n this,\n onFulfilled,\n onRejected\n ) as Promise<TResult1 | TResult2>\n }\n}\n\nexport const RENDER_STAGES_BY_DATA_KIND = {\n sessionData: RenderStage.ShellRuntime as const,\n /**\n * Statically-prerenderable URL data, like static `params`.\n * It may need to be pushed to a runtime stage in a runtime prerender,\n * but it's semantically distinct from `runtimeUrlData` like `searchParams`,\n * which is always excluded from static prerenders.\n * */\n staticUrlData: {\n /**\n * From that app's point of view, `prefetch()` is semantically the same as\n * `staticUrlData`, because it does not resolve in a shell but resolves in\n * a prefetch (even a static one).\n * We handle it separately to provide a specialized error in validation renders.\n */\n prefetchApi: {\n static: RenderStage.PrefetchStatic_prefetchApi as const,\n runtime: RenderStage.PrefetchRuntime_prefetchApi as const,\n },\n static: RenderStage.PrefetchStatic as const,\n runtime: RenderStage.PrefetchRuntime as const,\n },\n /**\n * URL data that is never statically-prerenderable, like static `searchParams`.\n * */\n runtimeUrlData: RenderStage.PrefetchRuntime as const,\n}\n\nexport function applyOwnerStack(error: Error): Error {\n if (process.env.NODE_ENV !== 'production') {\n let ownerStack: string | undefined | null\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n // captureOwnerStack() returns the owner stack for the current React\n // rendering context. Inside a cache scope this only includes the inner\n // component tree. The outer owner stack (captured before entering the\n // cache boundary in use-cache-wrapper.ts) is stored on the cache store.\n // We concatenate both to get the full component tree.\n const innerOwnerStack =\n getClientReact()?.captureOwnerStack?.() ??\n getServerReact()?.captureOwnerStack?.()\n\n switch (workUnitStore?.type) {\n case 'cache':\n case 'private-cache':\n ownerStack =\n (innerOwnerStack || '') + (workUnitStore.outerOwnerStack || '') ||\n undefined\n break\n case 'unstable-cache':\n case 'request':\n case 'prerender':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'prerender-client':\n case 'validation-client':\n case 'build-time-generator':\n case undefined:\n ownerStack = innerOwnerStack\n break\n default:\n workUnitStore satisfies never\n }\n\n if (ownerStack) {\n let stack = ownerStack\n\n if (error.stack) {\n const frames: string[] = []\n\n for (const frame of error.stack.split('\\n').slice(1)) {\n if (frame.includes('react_stack_bottom_frame')) {\n break\n }\n\n frames.push(frame)\n }\n\n stack = '\\n' + frames.join('\\n') + stack\n }\n\n error.stack = error.name + ': ' + error.message + stack\n }\n }\n\n return error\n}\n","import type { AppDirModules } from '../../build/webpack/loaders/next-app-loader'\nimport { DEFAULT_SEGMENT_KEY } from '../../shared/lib/segment'\n\n/**\n * LoaderTree is generated in next-app-loader.\n */\nexport type LoaderTree = [\n segment: string,\n parallelRoutes: { [parallelRouterKey: string]: LoaderTree },\n modules: AppDirModules,\n /**\n * At build time, for each dynamic segment, we compute the list of static\n * sibling segments that exist at the same URL path level. This is used by\n * the client router to determine if a prefetch can be reused.\n *\n * For example, given the following file structure:\n * /app/(group1)/products/sale/page.tsx -> /products/sale\n * /app/(group2)/products/[id]/page.tsx -> /products/[id]\n *\n * The [id] segment would have staticSiblings: ['sale']\n *\n * This accounts for route groups, which may place sibling routes in\n * different parts of the file system tree but at the same URL level.\n *\n * A value of `null` means the static siblings are unknown (e.g., in webpack\n * dev mode where routes are compiled on-demand).\n */\n staticSiblings: readonly string[] | null,\n]\n\nexport async function getLayoutOrPageModule(loaderTree: LoaderTree) {\n const { layout, page, defaultPage } = loaderTree[2]\n const isLayout = typeof layout !== 'undefined'\n const isPage = typeof page !== 'undefined'\n const isDefaultPage =\n typeof defaultPage !== 'undefined' && loaderTree[0] === DEFAULT_SEGMENT_KEY\n\n let mod = undefined\n let modType: 'layout' | 'page' | undefined = undefined\n let filePath = undefined\n\n if (isLayout) {\n mod = await layout[0]()\n modType = 'layout'\n filePath = layout[1]\n } else if (isPage) {\n mod = await page[0]()\n modType = 'page'\n filePath = page[1]\n } else if (isDefaultPage) {\n mod = await defaultPage[0]()\n modType = 'page'\n filePath = defaultPage[1]\n }\n\n return { mod, modType, filePath }\n}\n\nexport async function getComponentTypeModule(\n loaderTree: LoaderTree,\n moduleType: 'layout' | 'not-found' | 'forbidden' | 'unauthorized'\n) {\n const { [moduleType]: module } = loaderTree[2]\n if (typeof module !== 'undefined') {\n return await module[0]()\n }\n return undefined\n}\n","import { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport { actionAsyncStorage } from '../app-render/action-async-storage.external'\nimport { afterTaskAsyncStorage } from '../app-render/after-task-async-storage.external'\nimport type { WorkStore } from '../app-render/work-async-storage.external'\nimport { createSearchParamsInUseCacheError } from '../use-cache/use-cache-messages'\nimport type { WorkUnitStore } from '../app-render/work-unit-async-storage.external'\n\nexport function throwWithStaticGenerationBailoutErrorWithDynamicError(\n route: string,\n expression: string\n): never {\n throw new StaticGenBailoutError(\n `Route ${route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n}\n\nexport function throwForSearchParamsAccessInUseCache(\n workStore: WorkStore,\n constructorOpt: Function\n): never {\n const error = createSearchParamsInUseCacheError(workStore.route)\n\n Error.captureStackTrace(error, constructorOpt)\n workStore.invalidDynamicUsageError ??= error\n\n throw error\n}\n\nexport function isRequestApiAllowedInCurrentPhase(\n workUnitStore: WorkUnitStore\n): boolean {\n switch (workUnitStore.phase) {\n case 'action':\n case 'render': {\n // The request is still in progress. The API may be disallowed for other reasons,\n // but not because of phase.\n return true\n }\n case 'after': {\n // The request has finished.\n\n // If we're in a Route Handler or a Server Action,\n // request APIs can be called everywhere, even in after().\n const actionStore = actionAsyncStorage.getStore()\n if (actionStore && (actionStore.isAppRoute || actionStore.isAction)) {\n return true\n }\n\n const afterTaskStore = afterTaskAsyncStorage.getStore()\n if (afterTaskStore) {\n // We're in an `after` callback. Request APIs are callable if\n // the `after()` call happened in an action phase:\n // - in a Route Handler\n // - in a Server Action's body (but not the render after)\n //\n // TODO(after): Is it even possible to have `phase === 'action'` but no `actionStore`?\n // We should revisit this setup and simplify this.\n return afterTaskStore.rootTaskSpawnPhase === 'action'\n }\n\n // Otherwise, we must be in a page, in the `after` phase.\n // We don't allow calling request APIs here because we'd miss\n // them during prerendering and wouldn't know that the page is dynamic.\n return false\n }\n }\n}\n","if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-rsc']!.React\n","/**\n * Centralized error factories for cached function and revalidation misuse.\n * State the scope and constraint, explain non-obvious boundaries, give the\n * immediate fix, then link to the relevant docs.\n */\n\nimport type { BuildTimeGeneratorName } from '../app-render/work-unit-async-storage.external'\n\nconst NEXT_REQUEST_IN_USE_CACHE =\n 'https://nextjs.org/docs/messages/next-request-in-use-cache'\n\nconst UNSTABLE_CACHE_API_DOCS =\n 'https://nextjs.org/docs/app/api-reference/functions/unstable_cache'\n\nconst USE_CACHE_PRIVATE_API_DOCS =\n 'https://nextjs.org/docs/app/api-reference/directives/use-cache-private'\n\nconst CACHE_TAG_OUTSIDE_USE_CACHE =\n 'https://nextjs.org/docs/messages/cache-tag-outside-use-cache'\n\nconst CACHE_LIFE_OUTSIDE_USE_CACHE =\n 'https://nextjs.org/docs/messages/cache-life-outside-use-cache'\n\nconst USE_CACHE_PRIVATE_COMPOSITION =\n 'https://nextjs.org/docs/messages/use-cache-private-composition'\n\nconst REVALIDATE_IN_USE_CACHE =\n 'https://nextjs.org/docs/messages/revalidate-in-use-cache'\n\nconst NESTED_USE_CACHE_NO_EXPLICIT_CACHELIFE =\n 'https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife'\n\n// Request data accessed in caches\n\nexport function createCookiesInUseCacheError(route: string): Error {\n return new Error(\n `Route \"${route}\": \\`cookies()\\` can't be read inside \\`\"use cache\"\\`. Read it outside the cached function and pass what you need as an argument.\\nLearn more: ${NEXT_REQUEST_IN_USE_CACHE}`\n )\n}\n\nexport function createCookiesInUnstableCacheError(route: string): Error {\n return new Error(\n `Route \"${route}\": \\`cookies()\\` can't be read inside \\`unstable_cache()\\`. Read it outside the cached function and pass what you need as an argument.\\nLearn more: ${UNSTABLE_CACHE_API_DOCS}`\n )\n}\n\nexport function createHeadersInUseCacheError(route: string): Error {\n return new Error(\n `Route \"${route}\": \\`headers()\\` can't be read inside \\`\"use cache\"\\`. Read it outside the cached function and pass what you need as an argument.\\nLearn more: ${NEXT_REQUEST_IN_USE_CACHE}`\n )\n}\n\nexport function createHeadersInUnstableCacheError(route: string): Error {\n return new Error(\n `Route \"${route}\": \\`headers()\\` can't be read inside \\`unstable_cache()\\`. Read it outside the cached function and pass what you need as an argument.\\nLearn more: ${UNSTABLE_CACHE_API_DOCS}`\n )\n}\n\nexport function createSearchParamsInUseCacheError(route: string): Error {\n return new Error(\n `Route \"${route}\": \\`searchParams\\` can't be read inside \\`\"use cache\"\\`. Await it outside the cached function and pass what you need as an argument.\\nLearn more: ${NEXT_REQUEST_IN_USE_CACHE}`\n )\n}\n\nexport function createConnectionInPublicUseCacheError(route: string): Error {\n return new Error(\n `Route \"${route}\": \\`connection()\\` can't be called inside \\`\"use cache\"\\` because cached functions may run during prerendering, without an incoming request. Call it outside the cached function.\\nLearn more: ${NEXT_REQUEST_IN_USE_CACHE}`\n )\n}\n\nexport function createConnectionInPrivateUseCacheError(route: string): Error {\n return new Error(\n `Route \"${route}\": \\`connection()\\` can't be called inside \\`\"use cache: private\"\\` because private cached functions may run during prefetching, without a navigation request. Call it outside the cached function.\\nLearn more: ${USE_CACHE_PRIVATE_API_DOCS}`\n )\n}\n\nexport function createConnectionInUnstableCacheError(route: string): Error {\n return new Error(\n `Route \"${route}\": \\`connection()\\` can't be called inside \\`unstable_cache()\\` because cached functions may run during prerendering, without an incoming request. Call it outside the cached function.\\nLearn more: ${UNSTABLE_CACHE_API_DOCS}`\n )\n}\n\nexport function createRouteHandlerRequestInUseCacheError(\n route: string,\n expression: string\n): Error {\n return new Error(\n `Route \"${route}\": \\`${expression}\\` can't be read inside \\`\"use cache\"\\`. Read it outside the cached function and pass what you need as an argument.\\nLearn more: ${NEXT_REQUEST_IN_USE_CACHE}`\n )\n}\n\nexport function createRouteHandlerRequestInUnstableCacheError(\n route: string,\n expression: string\n): Error {\n return new Error(\n `Route \"${route}\": \\`${expression}\\` can't be read inside \\`unstable_cache()\\`. Read it outside the cached function and pass what you need as an argument.\\nLearn more: ${UNSTABLE_CACHE_API_DOCS}`\n )\n}\n\n// Mutations inside caches and render\n\n/**\n * Used when `draftMode().enable()` or `.disable()` is called inside\n * `\"use cache\"` or `\"use cache: private\"`. Reading `draftMode()` is fine\n * inside a cached function, but toggling it is not.\n */\nexport function createDraftModeMutationInUseCacheError(\n route: string,\n expression: string\n): Error {\n return new Error(\n `Route \"${route}\": \\`${expression}\\` can't be called inside \\`\"use cache\"\\`. Draft mode can be read inside a cached function, but enabling or disabling it must happen outside.\\nLearn more: ${NEXT_REQUEST_IN_USE_CACHE}`\n )\n}\n\nexport function createDraftModeMutationInUnstableCacheError(\n route: string,\n expression: string\n): Error {\n return new Error(\n `Route \"${route}\": \\`${expression}\\` can't be called inside \\`unstable_cache()\\`. Draft mode can be read inside a cached function, but enabling or disabling it must happen outside.\\nLearn more: ${UNSTABLE_CACHE_API_DOCS}`\n )\n}\n\nexport function createRevalidateDuringRenderError(\n route: string,\n expression: string\n): Error {\n return new Error(\n `Route \"${route}\": \\`${expression}\\` can't be called during render. Call it from a Server Action or Route Handler instead.\\nLearn more: ${REVALIDATE_IN_USE_CACHE}`\n )\n}\n\nexport function createRevalidateInCachedFunctionError(\n route: string,\n expression: string\n): Error {\n return new Error(\n `Route \"${route}\": \\`${expression}\\` can't be called inside a cached function. Call it from a Server Action or Route Handler instead.\\nLearn more: ${REVALIDATE_IN_USE_CACHE}`\n )\n}\n\nexport function createRevalidateInBuildTimeGeneratorError(\n route: string,\n expression: string,\n generatorName: BuildTimeGeneratorName\n): Error {\n return new Error(\n `Route \"${route}\": \\`${expression}\\` can't be called inside \\`${generatorName}\\`. Call it from a Server Action or Route Handler instead.\\nLearn more: ${REVALIDATE_IN_USE_CACHE}`\n )\n}\n\n// Cache configuration and nesting\n\nfunction routePrefix(route: string | undefined): string {\n return route === undefined ? '' : `Route \"${route}\": `\n}\n\nexport function createCacheTagOutsideUseCacheError(\n route: string | undefined\n): Error {\n return new Error(\n `${routePrefix(route)}\\`cacheTag()\\` can only be called inside a \\`\"use cache\"\\` or \\`\"use cache: private\"\\` function.\\nLearn more: ${CACHE_TAG_OUTSIDE_USE_CACHE}`\n )\n}\n\nexport function createCacheLifeOutsideUseCacheError(\n route: string | undefined\n): Error {\n return new Error(\n `${routePrefix(route)}\\`cacheLife()\\` can only be called inside a \\`\"use cache\"\\` or \\`\"use cache: private\"\\` function.\\nLearn more: ${CACHE_LIFE_OUTSIDE_USE_CACHE}`\n )\n}\n\nexport function createNestedCacheZeroRevalidateError(\n route: string,\n cause: Error | undefined\n): Error {\n return new Error(\n `Route \"${route}\": A nested \\`\"use cache\"\\` with \\`revalidate: 0\\` is inside an outer \\`\"use cache\"\\` that has no \\`cacheLife()\\`. Add \\`cacheLife()\\` to the outer one to choose whether to prerender it with a non-zero \\`revalidate\\` or keep it dynamic with \\`revalidate: 0\\`.\\nLearn more: ${NESTED_USE_CACHE_NO_EXPLICIT_CACHELIFE}`,\n { cause }\n )\n}\n\nexport function createNestedCacheShortExpireError(\n route: string,\n cause: Error | undefined\n): Error {\n return new Error(\n `Route \"${route}\": A nested \\`\"use cache\"\\` with a short \\`expire\\` (under 5 minutes) is inside an outer \\`\"use cache\"\\` that has no \\`cacheLife()\\`. Add \\`cacheLife()\\` to the outer one to choose whether to prerender it with a longer \\`expire\\` or keep it dynamic with a short \\`expire\\`.\\nLearn more: ${NESTED_USE_CACHE_NO_EXPLICIT_CACHELIFE}`,\n { cause }\n )\n}\n\n// Private cache composition and request context\n\nexport function createUseCachePrivateInsidePublicUseCacheError(\n route: string\n): Error {\n return new Error(\n `Route \"${route}\": \\`\"use cache: private\"\\` can't be nested inside \\`\"use cache\"\\` because a shared cached function can't depend on private request data. Nest it only inside another \\`\"use cache: private\"\\`.\\nLearn more: ${USE_CACHE_PRIVATE_COMPOSITION}`\n )\n}\n\nexport function createUseCachePrivateInsideUnstableCacheError(\n route: string\n): Error {\n return new Error(\n `Route \"${route}\": \\`\"use cache: private\"\\` can't be used inside \\`unstable_cache()\\` because \\`unstable_cache()\\` uses a shared cache that can't contain private request data. Call the private cached function outside \\`unstable_cache()\\`.\\nLearn more: ${USE_CACHE_PRIVATE_COMPOSITION}`\n )\n}\n\nexport function createUseCachePrivateOutsideRequestContextError(\n route: string,\n functionName: string\n): Error {\n return new Error(\n `Route \"${route}\": \\`\"use cache: private\"\\` needs an active request, so it can't be used during \\`${functionName}\\` or other build-time contexts. Move it to a request-time component or function.\\nLearn more: ${USE_CACHE_PRIVATE_COMPOSITION}`\n )\n}\n","export class ReflectAdapter {\n static get<T extends object>(\n target: T,\n prop: string | symbol,\n receiver: unknown\n ): any {\n const value = Reflect.get(target, prop, receiver)\n if (typeof value === 'function') {\n return value.bind(target)\n }\n\n return value\n }\n\n static set<T extends object>(\n target: T,\n prop: string | symbol,\n value: any,\n receiver: any\n ): boolean {\n return Reflect.set(target, prop, value, receiver)\n }\n\n static has<T extends object>(target: T, prop: string | symbol): boolean {\n return Reflect.has(target, prop)\n }\n\n static deleteProperty<T extends object>(\n target: T,\n prop: string | symbol\n ): boolean {\n return Reflect.deleteProperty(target, prop)\n }\n}\n","export {\n RequestCookies,\n ResponseCookies,\n stringifyCookie,\n} from 'next/dist/compiled/@edge-runtime/cookies'\n","export function createUnrenderedSegmentError(\n route: string,\n missingFiles: readonly string[]\n): Error {\n let message = `Route \"${route}\": Could not validate that a segment in your UI has instant navigation.`\n if (missingFiles.length > 0) {\n const label =\n missingFiles.length === 1 ? 'Dropped segment' : 'Dropped segments'\n message +=\n `\\n\\nThis segment was dropped from rendering. Issues that would prevent instant navigation will go undetected.` +\n `\\n\\n${label}:\\n${missingFiles.map((p) => ` ${p}`).join('\\n')}` +\n `\\n\\nWays to fix this:` +\n `\\n - [render] Render the dropped segment` +\n `\\n - [ignore] Set \\`export const instant = false\\` to opt the dropped segment out of instant-navigation validation` +\n `\\n\\nLearn more: https://nextjs.org/docs/messages/instant-unrendered-segment`\n }\n return new Error(message)\n}\n\nexport function createLinkPrefetchPartialError(pathname: string): Error {\n return new Error(\n `Next.js encountered dynamic data during prefetching for \"${pathname}\".\\n\\n` +\n `This will lead to slower, more expensive prefetches.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [upgrade] Opt into Partial Prefetching by exporting \\`const prefetch = 'partial'\\` from the page or layout, or by setting \\`partialPrefetching: true\\` in next.config to opt the whole app in\\n` +\n ` - [disable] Remove \\`prefetch={true}\\` from the <Link> to use the default prefetch\\n` +\n ` - [ignore] Set \\`export const instant = false\\` to opt the route out of instant-navigation validation\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-link-prefetch-partial`\n )\n}\n","export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","// This module is bundled separately into user code and the precompiled App\n// Router runtime. Use the global symbol registry so both copies recognize the\n// same browser bailout reason.\nconst REACT_BROWSER_BAILOUT_REASON = Symbol.for('next.browser-bailout-reason')\n\ntype ReactBrowserBailoutReason = {\n $$typeof: symbol\n reason: string\n}\n\nexport function createReactBrowserBailoutReason(\n reason: string\n): ReactBrowserBailoutReason {\n return {\n $$typeof: REACT_BROWSER_BAILOUT_REASON,\n reason,\n }\n}\n\nexport function getReactBrowserBailoutReason(\n error: unknown\n): string | undefined {\n const cause = (error as Error)?.cause as ReactBrowserBailoutReason | undefined\n\n return cause?.$$typeof === REACT_BROWSER_BAILOUT_REASON\n ? cause.reason\n : undefined\n}\n\nexport function isNextBrowserBailoutError(error: unknown): boolean {\n return getReactBrowserBailoutReason(error) !== undefined\n}\n","export function createPromiseWithResolvers<T>(): PromiseWithResolvers<T> {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve: (value: T | PromiseLike<T>) => void\n let reject: (reason: any) => void\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n return { resolve: resolve!, reject: reject!, promise }\n}\n","import { DEFAULT_SEGMENT_KEY } from '../../segment'\nimport type { LoaderTree } from '../../../../server/lib/app-dir-module'\n\nexport function parseLoaderTree(tree: LoaderTree) {\n const [segment, parallelRoutes, modules, staticSiblings] = tree\n const { layout, template } = modules\n let { page } = modules\n // a __DEFAULT__ segment means that this route didn't match any of the\n // segments in the route, so we should use the default page\n page = segment === DEFAULT_SEGMENT_KEY ? modules.defaultPage : page\n\n const conventionPath = layout?.[1] || template?.[1] || page?.[1]\n\n return {\n page,\n segment,\n modules,\n /* it can be either layout / template / page */\n conventionPath,\n parallelRoutes,\n staticSiblings,\n }\n}\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue === PAGE_SEGMENT_KEY) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","(()=>{\"use strict\";var e={912:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ContextAPI=void 0;const n=r(108);const a=r(221);const o=r(44);const i=\"context\";const c=new n.NoopContextManager;class ContextAPI{constructor(){}static getInstance(){if(!this._instance){this._instance=new ContextAPI}return this._instance}setGlobalContextManager(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,a.getGlobal)(i)||c}disable(){this._getContextManager().disable();(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.ContextAPI=ContextAPI},44:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagAPI=void 0;const n=r(757);const a=r(412);const o=r(711);const i=r(221);const c=\"diag\";class DiagAPI{constructor(){function _logProxy(e){return function(...t){const r=(0,i.getGlobal)(\"diag\");if(!r)return;return r[e](...t)}}const e=this;const setLogger=(t,r={logLevel:o.DiagLogLevel.INFO})=>{var n,c,s;if(t===e){const t=new Error(\"Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation\");e.error((n=t.stack)!==null&&n!==void 0?n:t.message);return false}if(typeof r===\"number\"){r={logLevel:r}}const u=(0,i.getGlobal)(\"diag\");const l=(0,a.createLogLevelDiagLogger)((c=r.logLevel)!==null&&c!==void 0?c:o.DiagLogLevel.INFO,t);if(u&&!r.suppressOverrideMessage){const e=(s=(new Error).stack)!==null&&s!==void 0?s:\"<failed to generate stacktrace>\";u.warn(`Current logger will be overwritten from ${e}`);l.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,i.registerGlobal)(\"diag\",l,e,true)};e.setLogger=setLogger;e.disable=()=>{(0,i.unregisterGlobal)(c,e)};e.createComponentLogger=e=>new n.DiagComponentLogger(e);e.verbose=_logProxy(\"verbose\");e.debug=_logProxy(\"debug\");e.info=_logProxy(\"info\");e.warn=_logProxy(\"warn\");e.error=_logProxy(\"error\")}static instance(){if(!this._instance){this._instance=new DiagAPI}return this._instance}}t.DiagAPI=DiagAPI},262:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.MetricsAPI=void 0;const n=r(586);const a=r(221);const o=r(44);const i=\"metrics\";class MetricsAPI{constructor(){}static getInstance(){if(!this._instance){this._instance=new MetricsAPI}return this._instance}setGlobalMeterProvider(e){return(0,a.registerGlobal)(i,e,o.DiagAPI.instance())}getMeterProvider(){return(0,a.getGlobal)(i)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,a.unregisterGlobal)(i,o.DiagAPI.instance())}}t.MetricsAPI=MetricsAPI},25:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.PropagationAPI=void 0;const n=r(221);const a=r(19);const o=r(92);const i=r(398);const c=r(504);const s=r(44);const u=\"propagation\";const l=new a.NoopTextMapPropagator;class PropagationAPI{constructor(){this.createBaggage=c.createBaggage;this.getBaggage=i.getBaggage;this.getActiveBaggage=i.getActiveBaggage;this.setBaggage=i.setBaggage;this.deleteBaggage=i.deleteBaggage}static getInstance(){if(!this._instance){this._instance=new PropagationAPI}return this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(u,e,s.DiagAPI.instance())}inject(e,t,r=o.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=o.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(u,s.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(u)||l}}t.PropagationAPI=PropagationAPI},397:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceAPI=void 0;const n=r(221);const a=r(498);const o=r(477);const i=r(793);const c=r(44);const s=\"trace\";class TraceAPI{constructor(){this._proxyTracerProvider=new a.ProxyTracerProvider;this.wrapSpanContext=o.wrapSpanContext;this.isSpanContextValid=o.isSpanContextValid;this.deleteSpan=i.deleteSpan;this.getSpan=i.getSpan;this.getActiveSpan=i.getActiveSpan;this.getSpanContext=i.getSpanContext;this.setSpan=i.setSpan;this.setSpanContext=i.setSpanContext}static getInstance(){if(!this._instance){this._instance=new TraceAPI}return this._instance}setGlobalTracerProvider(e){const t=(0,n.registerGlobal)(s,this._proxyTracerProvider,c.DiagAPI.instance());if(t){this._proxyTracerProvider.setDelegate(e)}return t}getTracerProvider(){return(0,n.getGlobal)(s)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(s,c.DiagAPI.instance());this._proxyTracerProvider=new a.ProxyTracerProvider}}t.TraceAPI=TraceAPI},398:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;const n=r(912);const a=r(23);const o=(0,a.createContextKey)(\"OpenTelemetry Baggage Key\");function getBaggage(e){return e.getValue(o)||undefined}t.getBaggage=getBaggage;function getActiveBaggage(){return getBaggage(n.ContextAPI.getInstance().active())}t.getActiveBaggage=getActiveBaggage;function setBaggage(e,t){return e.setValue(o,t)}t.setBaggage=setBaggage;function deleteBaggage(e){return e.deleteValue(o)}t.deleteBaggage=deleteBaggage},152:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.BaggageImpl=void 0;class BaggageImpl{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){const t=this._entries.get(e);if(!t){return undefined}return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map((([e,t])=>[e,t]))}setEntry(e,t){const r=new BaggageImpl(this._entries);r._entries.set(e,t);return r}removeEntry(e){const t=new BaggageImpl(this._entries);t._entries.delete(e);return t}removeEntries(...e){const t=new BaggageImpl(this._entries);for(const r of e){t._entries.delete(r)}return t}clear(){return new BaggageImpl}}t.BaggageImpl=BaggageImpl},647:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.baggageEntryMetadataSymbol=void 0;t.baggageEntryMetadataSymbol=Symbol(\"BaggageEntryMetadata\")},504:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.baggageEntryMetadataFromString=t.createBaggage=void 0;const n=r(44);const a=r(152);const o=r(647);const i=n.DiagAPI.instance();function createBaggage(e={}){return new a.BaggageImpl(new Map(Object.entries(e)))}t.createBaggage=createBaggage;function baggageEntryMetadataFromString(e){if(typeof e!==\"string\"){i.error(`Cannot create baggage metadata from unknown type: ${typeof e}`);e=\"\"}return{__TYPE__:o.baggageEntryMetadataSymbol,toString(){return e}}}t.baggageEntryMetadataFromString=baggageEntryMetadataFromString},778:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.context=void 0;const n=r(912);t.context=n.ContextAPI.getInstance()},108:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopContextManager=void 0;const n=r(23);class NoopContextManager{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}t.NoopContextManager=NoopContextManager},23:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ROOT_CONTEXT=t.createContextKey=void 0;function createContextKey(e){return Symbol.for(e)}t.createContextKey=createContextKey;class BaseContext{constructor(e){const t=this;t._currentContext=e?new Map(e):new Map;t.getValue=e=>t._currentContext.get(e);t.setValue=(e,r)=>{const n=new BaseContext(t._currentContext);n._currentContext.set(e,r);return n};t.deleteValue=e=>{const r=new BaseContext(t._currentContext);r._currentContext.delete(e);return r}}}t.ROOT_CONTEXT=new BaseContext},304:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.diag=void 0;const n=r(44);t.diag=n.DiagAPI.instance()},757:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagComponentLogger=void 0;const n=r(221);class DiagComponentLogger{constructor(e){this._namespace=e.namespace||\"DiagComponentLogger\"}debug(...e){return logProxy(\"debug\",this._namespace,e)}error(...e){return logProxy(\"error\",this._namespace,e)}info(...e){return logProxy(\"info\",this._namespace,e)}warn(...e){return logProxy(\"warn\",this._namespace,e)}verbose(...e){return logProxy(\"verbose\",this._namespace,e)}}t.DiagComponentLogger=DiagComponentLogger;function logProxy(e,t,r){const a=(0,n.getGlobal)(\"diag\");if(!a){return}r.unshift(t);return a[e](...r)}},83:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagConsoleLogger=void 0;const r=[{n:\"error\",c:\"error\"},{n:\"warn\",c:\"warn\"},{n:\"info\",c:\"info\"},{n:\"debug\",c:\"debug\"},{n:\"verbose\",c:\"trace\"}];class DiagConsoleLogger{constructor(){function _consoleFunc(e){return function(...t){if(console){let r=console[e];if(typeof r!==\"function\"){r=console.log}if(typeof r===\"function\"){return r.apply(console,t)}}}}for(let e=0;e<r.length;e++){this[r[e].n]=_consoleFunc(r[e].c)}}}t.DiagConsoleLogger=DiagConsoleLogger},412:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createLogLevelDiagLogger=void 0;const n=r(711);function createLogLevelDiagLogger(e,t){if(e<n.DiagLogLevel.NONE){e=n.DiagLogLevel.NONE}else if(e>n.DiagLogLevel.ALL){e=n.DiagLogLevel.ALL}t=t||{};function _filterFunc(r,n){const a=t[r];if(typeof a===\"function\"&&e>=n){return a.bind(t)}return function(){}}return{error:_filterFunc(\"error\",n.DiagLogLevel.ERROR),warn:_filterFunc(\"warn\",n.DiagLogLevel.WARN),info:_filterFunc(\"info\",n.DiagLogLevel.INFO),debug:_filterFunc(\"debug\",n.DiagLogLevel.DEBUG),verbose:_filterFunc(\"verbose\",n.DiagLogLevel.VERBOSE)}}t.createLogLevelDiagLogger=createLogLevelDiagLogger},711:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.DiagLogLevel=void 0;var r;(function(e){e[e[\"NONE\"]=0]=\"NONE\";e[e[\"ERROR\"]=30]=\"ERROR\";e[e[\"WARN\"]=50]=\"WARN\";e[e[\"INFO\"]=60]=\"INFO\";e[e[\"DEBUG\"]=70]=\"DEBUG\";e[e[\"VERBOSE\"]=80]=\"VERBOSE\";e[e[\"ALL\"]=9999]=\"ALL\"})(r=t.DiagLogLevel||(t.DiagLogLevel={}))},221:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;const n=r(678);const a=r(652);const o=r(662);const i=a.VERSION.split(\".\")[0];const c=Symbol.for(`opentelemetry.js.api.${i}`);const s=n._globalThis;function registerGlobal(e,t,r,n=false){var o;const i=s[c]=(o=s[c])!==null&&o!==void 0?o:{version:a.VERSION};if(!n&&i[e]){const t=new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);r.error(t.stack||t.message);return false}if(i.version!==a.VERSION){const t=new Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${a.VERSION}`);r.error(t.stack||t.message);return false}i[e]=t;r.debug(`@opentelemetry/api: Registered a global for ${e} v${a.VERSION}.`);return true}t.registerGlobal=registerGlobal;function getGlobal(e){var t,r;const n=(t=s[c])===null||t===void 0?void 0:t.version;if(!n||!(0,o.isCompatible)(n)){return}return(r=s[c])===null||r===void 0?void 0:r[e]}t.getGlobal=getGlobal;function unregisterGlobal(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${a.VERSION}.`);const r=s[c];if(r){delete r[e]}}t.unregisterGlobal=unregisterGlobal},662:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.isCompatible=t._makeCompatibilityCheck=void 0;const n=r(652);const a=/^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;function _makeCompatibilityCheck(e){const t=new Set([e]);const r=new Set;const n=e.match(a);if(!n){return()=>false}const o={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(o.prerelease!=null){return function isExactmatch(t){return t===e}}function _reject(e){r.add(e);return false}function _accept(e){t.add(e);return true}return function isCompatible(e){if(t.has(e)){return true}if(r.has(e)){return false}const n=e.match(a);if(!n){return _reject(e)}const i={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(i.prerelease!=null){return _reject(e)}if(o.major!==i.major){return _reject(e)}if(o.major===0){if(o.minor===i.minor&&o.patch<=i.patch){return _accept(e)}return _reject(e)}if(o.minor<=i.minor){return _accept(e)}return _reject(e)}}t._makeCompatibilityCheck=_makeCompatibilityCheck;t.isCompatible=_makeCompatibilityCheck(n.VERSION)},120:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.metrics=void 0;const n=r(262);t.metrics=n.MetricsAPI.getInstance()},532:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ValueType=void 0;var r;(function(e){e[e[\"INT\"]=0]=\"INT\";e[e[\"DOUBLE\"]=1]=\"DOUBLE\"})(r=t.ValueType||(t.ValueType={}))},440:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class NoopMeter{constructor(){}createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=NoopMeter;class NoopMetric{}t.NoopMetric=NoopMetric;class NoopCounterMetric extends NoopMetric{add(e,t){}}t.NoopCounterMetric=NoopCounterMetric;class NoopUpDownCounterMetric extends NoopMetric{add(e,t){}}t.NoopUpDownCounterMetric=NoopUpDownCounterMetric;class NoopHistogramMetric extends NoopMetric{record(e,t){}}t.NoopHistogramMetric=NoopHistogramMetric;class NoopObservableMetric{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=NoopObservableMetric;class NoopObservableCounterMetric extends NoopObservableMetric{}t.NoopObservableCounterMetric=NoopObservableCounterMetric;class NoopObservableGaugeMetric extends NoopObservableMetric{}t.NoopObservableGaugeMetric=NoopObservableGaugeMetric;class NoopObservableUpDownCounterMetric extends NoopObservableMetric{}t.NoopObservableUpDownCounterMetric=NoopObservableUpDownCounterMetric;t.NOOP_METER=new NoopMeter;t.NOOP_COUNTER_METRIC=new NoopCounterMetric;t.NOOP_HISTOGRAM_METRIC=new NoopHistogramMetric;t.NOOP_UP_DOWN_COUNTER_METRIC=new NoopUpDownCounterMetric;t.NOOP_OBSERVABLE_COUNTER_METRIC=new NoopObservableCounterMetric;t.NOOP_OBSERVABLE_GAUGE_METRIC=new NoopObservableGaugeMetric;t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new NoopObservableUpDownCounterMetric;function createNoopMeter(){return t.NOOP_METER}t.createNoopMeter=createNoopMeter},586:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;const n=r(440);class NoopMeterProvider{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=NoopMeterProvider;t.NOOP_METER_PROVIDER=new NoopMeterProvider},678:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var a=this&&this.__exportStar||function(e,t){for(var r in e)if(r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r))n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:true});a(r(59),t)},460:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t._globalThis=void 0;t._globalThis=typeof globalThis===\"object\"?globalThis:global},59:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var a=this&&this.__exportStar||function(e,t){for(var r in e)if(r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r))n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:true});a(r(460),t)},27:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.propagation=void 0;const n=r(25);t.propagation=n.PropagationAPI.getInstance()},19:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTextMapPropagator=void 0;class NoopTextMapPropagator{inject(e,t){}extract(e,t){return e}fields(){return[]}}t.NoopTextMapPropagator=NoopTextMapPropagator},92:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.defaultTextMapSetter=t.defaultTextMapGetter=void 0;t.defaultTextMapGetter={get(e,t){if(e==null){return undefined}return e[t]},keys(e){if(e==null){return[]}return Object.keys(e)}};t.defaultTextMapSetter={set(e,t,r){if(e==null){return}e[t]=r}}},816:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.trace=void 0;const n=r(397);t.trace=n.TraceAPI.getInstance()},374:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NonRecordingSpan=void 0;const n=r(546);class NonRecordingSpan{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return false}recordException(e,t){}}t.NonRecordingSpan=NonRecordingSpan},637:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTracer=void 0;const n=r(912);const a=r(793);const o=r(374);const i=r(477);const c=n.ContextAPI.getInstance();class NoopTracer{startSpan(e,t,r=c.active()){const n=Boolean(t===null||t===void 0?void 0:t.root);if(n){return new o.NonRecordingSpan}const s=r&&(0,a.getSpanContext)(r);if(isSpanContext(s)&&(0,i.isSpanContextValid)(s)){return new o.NonRecordingSpan(s)}else{return new o.NonRecordingSpan}}startActiveSpan(e,t,r,n){let o;let i;let s;if(arguments.length<2){return}else if(arguments.length===2){s=t}else if(arguments.length===3){o=t;s=r}else{o=t;i=r;s=n}const u=i!==null&&i!==void 0?i:c.active();const l=this.startSpan(e,o,u);const g=(0,a.setSpan)(u,l);return c.with(g,s,undefined,l)}}t.NoopTracer=NoopTracer;function isSpanContext(e){return typeof e===\"object\"&&typeof e[\"spanId\"]===\"string\"&&typeof e[\"traceId\"]===\"string\"&&typeof e[\"traceFlags\"]===\"number\"}},76:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.NoopTracerProvider=void 0;const n=r(637);class NoopTracerProvider{getTracer(e,t,r){return new n.NoopTracer}}t.NoopTracerProvider=NoopTracerProvider},779:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ProxyTracer=void 0;const n=r(637);const a=new n.NoopTracer;class ProxyTracer{constructor(e,t,r,n){this._provider=e;this.name=t;this.version=r;this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){const a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)}_getTracer(){if(this._delegate){return this._delegate}const e=this._provider.getDelegateTracer(this.name,this.version,this.options);if(!e){return a}this._delegate=e;return this._delegate}}t.ProxyTracer=ProxyTracer},498:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.ProxyTracerProvider=void 0;const n=r(779);const a=r(76);const o=new a.NoopTracerProvider;class ProxyTracerProvider{getTracer(e,t,r){var a;return(a=this.getDelegateTracer(e,t,r))!==null&&a!==void 0?a:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return(e=this._delegate)!==null&&e!==void 0?e:o}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return(n=this._delegate)===null||n===void 0?void 0:n.getTracer(e,t,r)}}t.ProxyTracerProvider=ProxyTracerProvider},312:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SamplingDecision=void 0;var r;(function(e){e[e[\"NOT_RECORD\"]=0]=\"NOT_RECORD\";e[e[\"RECORD\"]=1]=\"RECORD\";e[e[\"RECORD_AND_SAMPLED\"]=2]=\"RECORD_AND_SAMPLED\"})(r=t.SamplingDecision||(t.SamplingDecision={}))},793:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;const n=r(23);const a=r(374);const o=r(912);const i=(0,n.createContextKey)(\"OpenTelemetry Context Key SPAN\");function getSpan(e){return e.getValue(i)||undefined}t.getSpan=getSpan;function getActiveSpan(){return getSpan(o.ContextAPI.getInstance().active())}t.getActiveSpan=getActiveSpan;function setSpan(e,t){return e.setValue(i,t)}t.setSpan=setSpan;function deleteSpan(e){return e.deleteValue(i)}t.deleteSpan=deleteSpan;function setSpanContext(e,t){return setSpan(e,new a.NonRecordingSpan(t))}t.setSpanContext=setSpanContext;function getSpanContext(e){var t;return(t=getSpan(e))===null||t===void 0?void 0:t.spanContext()}t.getSpanContext=getSpanContext},285:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceStateImpl=void 0;const n=r(240);const a=32;const o=512;const i=\",\";const c=\"=\";class TraceStateImpl{constructor(e){this._internalState=new Map;if(e)this._parse(e)}set(e,t){const r=this._clone();if(r._internalState.has(e)){r._internalState.delete(e)}r._internalState.set(e,t);return r}unset(e){const t=this._clone();t._internalState.delete(e);return t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce(((e,t)=>{e.push(t+c+this.get(t));return e}),[]).join(i)}_parse(e){if(e.length>o)return;this._internalState=e.split(i).reverse().reduce(((e,t)=>{const r=t.trim();const a=r.indexOf(c);if(a!==-1){const o=r.slice(0,a);const i=r.slice(a+1,t.length);if((0,n.validateKey)(o)&&(0,n.validateValue)(i)){e.set(o,i)}else{}}return e}),new Map);if(this._internalState.size>a){this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,a))}}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){const e=new TraceStateImpl;e._internalState=new Map(this._internalState);return e}}t.TraceStateImpl=TraceStateImpl},240:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.validateValue=t.validateKey=void 0;const r=\"[_0-9a-z-*/]\";const n=`[a-z]${r}{0,255}`;const a=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`;const o=new RegExp(`^(?:${n}|${a})$`);const i=/^[ -~]{0,255}[!-~]$/;const c=/,|=/;function validateKey(e){return o.test(e)}t.validateKey=validateKey;function validateValue(e){return i.test(e)&&!c.test(e)}t.validateValue=validateValue},87:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.createTraceState=void 0;const n=r(285);function createTraceState(e){return new n.TraceStateImpl(e)}t.createTraceState=createTraceState},546:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;const n=r(731);t.INVALID_SPANID=\"0000000000000000\";t.INVALID_TRACEID=\"00000000000000000000000000000000\";t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},613:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SpanKind=void 0;var r;(function(e){e[e[\"INTERNAL\"]=0]=\"INTERNAL\";e[e[\"SERVER\"]=1]=\"SERVER\";e[e[\"CLIENT\"]=2]=\"CLIENT\";e[e[\"PRODUCER\"]=3]=\"PRODUCER\";e[e[\"CONSUMER\"]=4]=\"CONSUMER\"})(r=t.SpanKind||(t.SpanKind={}))},477:(e,t,r)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;const n=r(546);const a=r(374);const o=/^([0-9a-f]{32})$/i;const i=/^[0-9a-f]{16}$/i;function isValidTraceId(e){return o.test(e)&&e!==n.INVALID_TRACEID}t.isValidTraceId=isValidTraceId;function isValidSpanId(e){return i.test(e)&&e!==n.INVALID_SPANID}t.isValidSpanId=isValidSpanId;function isSpanContextValid(e){return isValidTraceId(e.traceId)&&isValidSpanId(e.spanId)}t.isSpanContextValid=isSpanContextValid;function wrapSpanContext(e){return new a.NonRecordingSpan(e)}t.wrapSpanContext=wrapSpanContext},854:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.SpanStatusCode=void 0;var r;(function(e){e[e[\"UNSET\"]=0]=\"UNSET\";e[e[\"OK\"]=1]=\"OK\";e[e[\"ERROR\"]=2]=\"ERROR\"})(r=t.SpanStatusCode||(t.SpanStatusCode={}))},731:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.TraceFlags=void 0;var r;(function(e){e[e[\"NONE\"]=0]=\"NONE\";e[e[\"SAMPLED\"]=1]=\"SAMPLED\"})(r=t.TraceFlags||(t.TraceFlags={}))},652:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:true});t.VERSION=void 0;t.VERSION=\"1.6.0\"}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var a=t[r]={exports:{}};var o=true;try{e[r].call(a.exports,a,a.exports,__nccwpck_require__);o=false}finally{if(o)delete t[r]}return a.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r={};(()=>{var e=r;Object.defineProperty(e,\"__esModule\",{value:true});e.trace=e.propagation=e.metrics=e.diag=e.context=e.INVALID_SPAN_CONTEXT=e.INVALID_TRACEID=e.INVALID_SPANID=e.isValidSpanId=e.isValidTraceId=e.isSpanContextValid=e.createTraceState=e.TraceFlags=e.SpanStatusCode=e.SpanKind=e.SamplingDecision=e.ProxyTracerProvider=e.ProxyTracer=e.defaultTextMapSetter=e.defaultTextMapGetter=e.ValueType=e.createNoopMeter=e.DiagLogLevel=e.DiagConsoleLogger=e.ROOT_CONTEXT=e.createContextKey=e.baggageEntryMetadataFromString=void 0;var t=__nccwpck_require__(504);Object.defineProperty(e,\"baggageEntryMetadataFromString\",{enumerable:true,get:function(){return t.baggageEntryMetadataFromString}});var n=__nccwpck_require__(23);Object.defineProperty(e,\"createContextKey\",{enumerable:true,get:function(){return n.createContextKey}});Object.defineProperty(e,\"ROOT_CONTEXT\",{enumerable:true,get:function(){return n.ROOT_CONTEXT}});var a=__nccwpck_require__(83);Object.defineProperty(e,\"DiagConsoleLogger\",{enumerable:true,get:function(){return a.DiagConsoleLogger}});var o=__nccwpck_require__(711);Object.defineProperty(e,\"DiagLogLevel\",{enumerable:true,get:function(){return o.DiagLogLevel}});var i=__nccwpck_require__(440);Object.defineProperty(e,\"createNoopMeter\",{enumerable:true,get:function(){return i.createNoopMeter}});var c=__nccwpck_require__(532);Object.defineProperty(e,\"ValueType\",{enumerable:true,get:function(){return c.ValueType}});var s=__nccwpck_require__(92);Object.defineProperty(e,\"defaultTextMapGetter\",{enumerable:true,get:function(){return s.defaultTextMapGetter}});Object.defineProperty(e,\"defaultTextMapSetter\",{enumerable:true,get:function(){return s.defaultTextMapSetter}});var u=__nccwpck_require__(779);Object.defineProperty(e,\"ProxyTracer\",{enumerable:true,get:function(){return u.ProxyTracer}});var l=__nccwpck_require__(498);Object.defineProperty(e,\"ProxyTracerProvider\",{enumerable:true,get:function(){return l.ProxyTracerProvider}});var g=__nccwpck_require__(312);Object.defineProperty(e,\"SamplingDecision\",{enumerable:true,get:function(){return g.SamplingDecision}});var p=__nccwpck_require__(613);Object.defineProperty(e,\"SpanKind\",{enumerable:true,get:function(){return p.SpanKind}});var d=__nccwpck_require__(854);Object.defineProperty(e,\"SpanStatusCode\",{enumerable:true,get:function(){return d.SpanStatusCode}});var _=__nccwpck_require__(731);Object.defineProperty(e,\"TraceFlags\",{enumerable:true,get:function(){return _.TraceFlags}});var f=__nccwpck_require__(87);Object.defineProperty(e,\"createTraceState\",{enumerable:true,get:function(){return f.createTraceState}});var b=__nccwpck_require__(477);Object.defineProperty(e,\"isSpanContextValid\",{enumerable:true,get:function(){return b.isSpanContextValid}});Object.defineProperty(e,\"isValidTraceId\",{enumerable:true,get:function(){return b.isValidTraceId}});Object.defineProperty(e,\"isValidSpanId\",{enumerable:true,get:function(){return b.isValidSpanId}});var v=__nccwpck_require__(546);Object.defineProperty(e,\"INVALID_SPANID\",{enumerable:true,get:function(){return v.INVALID_SPANID}});Object.defineProperty(e,\"INVALID_TRACEID\",{enumerable:true,get:function(){return v.INVALID_TRACEID}});Object.defineProperty(e,\"INVALID_SPAN_CONTEXT\",{enumerable:true,get:function(){return v.INVALID_SPAN_CONTEXT}});const O=__nccwpck_require__(778);Object.defineProperty(e,\"context\",{enumerable:true,get:function(){return O.context}});const P=__nccwpck_require__(304);Object.defineProperty(e,\"diag\",{enumerable:true,get:function(){return P.diag}});const N=__nccwpck_require__(120);Object.defineProperty(e,\"metrics\",{enumerable:true,get:function(){return N.metrics}});const S=__nccwpck_require__(27);Object.defineProperty(e,\"propagation\",{enumerable:true,get:function(){return S.propagation}});const C=__nccwpck_require__(816);Object.defineProperty(e,\"trace\",{enumerable:true,get:function(){return C.trace}});e[\"default\"]={context:O.context,diag:P.diag,metrics:N.metrics,propagation:S.propagation,trace:C.trace}})();module.exports=r})();","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */r.parse=parse;r.serialize=serialize;var i=decodeURIComponent;var t=encodeURIComponent;var a=/; */;var n=/^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;function parse(e,r){if(typeof e!==\"string\"){throw new TypeError(\"argument str must be a string\")}var t={};var n=r||{};var o=e.split(a);var s=n.decode||i;for(var p=0;p<o.length;p++){var f=o[p];var u=f.indexOf(\"=\");if(u<0){continue}var v=f.substr(0,u).trim();var c=f.substr(++u,f.length).trim();if('\"'==c[0]){c=c.slice(1,-1)}if(undefined==t[v]){t[v]=tryDecode(c,s)}}return t}function serialize(e,r,i){var a=i||{};var o=a.encode||t;if(typeof o!==\"function\"){throw new TypeError(\"option encode is invalid\")}if(!n.test(e)){throw new TypeError(\"argument name is invalid\")}var s=o(r);if(s&&!n.test(s)){throw new TypeError(\"argument val is invalid\")}var p=e+\"=\"+s;if(null!=a.maxAge){var f=a.maxAge-0;if(isNaN(f)||!isFinite(f)){throw new TypeError(\"option maxAge is invalid\")}p+=\"; Max-Age=\"+Math.floor(f)}if(a.domain){if(!n.test(a.domain)){throw new TypeError(\"option domain is invalid\")}p+=\"; Domain=\"+a.domain}if(a.path){if(!n.test(a.path)){throw new TypeError(\"option path is invalid\")}p+=\"; Path=\"+a.path}if(a.expires){if(typeof a.expires.toUTCString!==\"function\"){throw new TypeError(\"option expires is invalid\")}p+=\"; Expires=\"+a.expires.toUTCString()}if(a.httpOnly){p+=\"; HttpOnly\"}if(a.secure){p+=\"; Secure\"}if(a.sameSite){var u=typeof a.sameSite===\"string\"?a.sameSite.toLowerCase():a.sameSite;switch(u){case true:p+=\"; SameSite=Strict\";break;case\"lax\":p+=\"; SameSite=Lax\";break;case\"strict\":p+=\"; SameSite=Strict\";break;case\"none\":p+=\"; SameSite=None\";break;default:throw new TypeError(\"option sameSite is invalid\")}}return p}function tryDecode(e,r){try{return r(e)}catch(r){return e}}})();module.exports=e})();","if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-route/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-route.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-route.runtime.prod.js')\n }\n }\n }\n}\n"],"names":["DynamicServerError","isDynamicServerError","DYNAMIC_ERROR_CODE","Error","constructor","description","digest","err","StaticGenBailoutError","isStaticGenBailoutError","NEXT_STATIC_GEN_BAILOUT","code","error","__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","src_exports","RequestCookies","ResponseCookies","parseCookie","parseSetCookie","stringifyCookie","module","exports","c","_a","attrs","path","expires","Date","toUTCString","maxAge","domain","secure","httpOnly","sameSite","partitioned","priority","filter","Boolean","stringified","encodeURIComponent","length","join","cookie","map","Map","pair","split","splitAt","indexOf","set","slice","decodeURIComponent","setCookie","attributes","httponly","maxage","samesite","fromEntries","value2","toLowerCase","replace","Number","parseSameSite","parsePriority","compact","t","newT","SAME_SITE","string","includes","PRIORITY","splitCookiesString","cookiesString","cookiesStrings","pos","start","ch","lastComma","nextStart","cookiesSeparatorFound","skipWhitespace","test","charAt","notSpecialChar","push","substring","requestHeaders","_parsed","_headers","header","parsed","Symbol","iterator","size","args","getAll","Array","_","n","has","delete","names","result","isArray","clear","keys","for","JSON","stringify","toString","values","v","responseHeaders","_b","_c","getSetCookie","cookieStrings","cookieString","normalizeCookie","options","bag","headers","serialized","append","now","RouteKind","METADATA_BOUNDARY_NAME","OUTLET_BOUNDARY_NAME","ROOT_LAYOUT_BOUNDARY_NAME","VIEWPORT_BOUNDARY_NAME","atLeastOneTask","scheduleImmediate","scheduleOnNextTick","waitAtLeastOneReactRenderTask","cb","Promise","resolve","then","process","env","NEXT_RUNTIME","setTimeout","nextTick","setImmediate","r","createDynamicBodyError","createDynamicBodyErrorInNavigation","createDynamicBodyErrorInStaticRoute","createDynamicMetadataError","createDynamicMetadataErrorInStaticRoute","createDynamicOrRuntimeBodyError","createDynamicOrRuntimeMetadataError","createDynamicOrRuntimeViewportError","createDynamicViewportError","createDynamicViewportErrorInStaticRoute","createLinkBodyErrorInNavigation","createLinkMetadataError","createLinkViewportError","createNavigationBodyErrorInNavigation","createNavigationMetadataError","createNavigationViewportError","createNonPrerenderableBodyErrorInStaticRoute","createNonPrerenderableMetadataErrorInStaticRoute","createNonPrerenderableViewportErrorInStaticRoute","createPrefetchBodyErrorInNavigation","createPrefetchMetadataError","createPrefetchViewportError","createRuntimeBodyError","createRuntimeBodyErrorInNavigation","createRuntimeBodyErrorInStaticRoute","createRuntimeMetadataError","createRuntimeMetadataErrorInStaticRoute","createRuntimeViewportError","createRuntimeViewportErrorInStaticRoute","logBuildDebugHint","route","NODE_ENV","console","__NEXT_DEV_SERVER","DynamicHoleKind","PreludeState","abortAndThrowOnSynchronousRequestDataAccess","abortOnSynchronousPlatformIOAccess","accessedDynamicData","annotateDynamicAccess","consumeDynamicAccess","createDynamicTrackingState","createDynamicValidationState","createHangingInputAbortSignal","createInstantValidationState","formatDynamicAPIAccesses","getDisallowedReasonsInStaticRoute","getFirstDynamicReason","getNavigationDisallowedDynamicReasons","getStaticShellDisallowedDynamicReasons","isPrerenderInterruptedError","logDisallowedDynamicError","markCurrentScopeAsDynamic","throwIfDisallowedDynamic","throwIfDisallowedDynamicInStaticRoute","throwIfSyncIOUsed","throwToInterruptStaticGeneration","trackAllowedDynamicAccess","trackDynamicAccessInStaticRoute","trackDynamicDataInDynamicRender","trackDynamicHoleInNavigation","trackDynamicHoleInStaticShell","trackThrownErrorInNavigation","isDebugDynamicAccesses","dynamicAccesses","syncDynamicErrorWithStack","syncDynamicErrorWithStackPostMicrotask","hasSuspenseAboveBody","hasDynamicMetadata","dynamicMetadata","hasDynamicViewport","hasAllowedDynamic","dynamicErrors","getPendingClientSyncDynamicError","clientDynamic","trackingState","expression","store","workUnitStore","type","forceDynamic","forceStatic","dynamicShouldError","revalidate","dynamicUsageDescription","dynamicUsageStack","stack","markRequestStoreAsDynamic","prerenderStore","requestStore","phase","usedDynamic","abortOnSynchronousDynamicDataAccess","reason","createPrerenderInterruptedError","controller","abort","dynamicTracking","undefined","errorWithStack","queueMicrotask","prerenderSignal","signal","aborted","NEXT_PRERENDER_INTERRUPTED","message","serverDynamic","access","line","AbortController","cacheSignal","inputReady","stagedRendering","getStagedRenderingController","finalStage","waitForStage","noop","hasSuspenseRegex","bodyAndImplicitTags","hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex","RegExp","hasMetadataRegex","hasViewportRegex","hasOutletRegex","hasInstantValidationBoundaryRegex","INSTANT_VALIDATION_BOUNDARY_NAME","slotMarkerRegex","INSTANT_SLOT_MARKER_PREFIX","INSTANT_SLOT_MARKER_SUFFIX","resolveInstantStack","componentStack","dynamicValidation","slotStacks","match","exec","slotIndex","parseInt","slotStack","trackOutletSuspenseAboveBody","dynamicReason","workStore","isServerPartial","kind","syncDynamicError","addErrorContext","createMetadataErrorInStaticRoute","createViewportErrorInStaticRoute","hasSuspense","isClientHookDynamicError","createBodyErrorInStaticRoute","createBodyError","dynamicHoleKind","hasAllowedClientDynamicAboveBoundary","validationPreventingErrors","thrownErrorsOutsideBoundary","boundaryState","effectiveCreateInstantStack","createMetadataError","createViewportError","boundaryLocation","allRequiredBoundariesRendered","suspenseLocation","index","cause","createBodyErrorInNavigation","thrownValue","reactBrowserBailout","browserBailoutReason","getReactBrowserBailoutReason","browserBailoutError","createInstantStack","ownerStack","React","captureOwnerStack","prelude","allowEmptyStaticShell","i","isFallbackShell","reasons","InvariantError","validationSampleTracking","devRenderDidError","missingSampleErrors","rootInstantStack","missingFiles","id","filePaths","requiredIds","renderedIds","filePath","normalized","cwd","sort","createUnrenderedSegmentError","AggregateError","createValidationBoundaryTracking","matchPrevious","Set","state","EnsureStaticLevel","resolveEnsureStaticConfig","resolveEnsureStaticLevel","getEnsureStaticLevel","ensureStatic","tree","partialPrefetching","config","resolveEnsureStaticConfigImpl","originalConfig","warn","formatEnsureStaticExport","layoutOrPageMod","getLayoutOrPageModule","getEnsureStaticConfigForModule","parentResult","slotsResult","slotResultKey","parallelRoutes","parseLoaderTree","parallelRouteKey","parallelRoute","childResult","compareEnsureStatic","formatParallelSlot","comparison","slot","Comparison","ENSURE_STATIC_ORDER","left","right","leftSort","rightSort","RENDER_STAGE_ADVANCE_ORDER","RenderStage","StagedRenderingController","SyncIOMode","getNextStage","isAdvanceableRenderStage","stage","abortSignal","abandonController","syncIO","currentStage","syncInterruptReason","triggers","createAdvanceableStageTriggers","syncIOMode","addEventListener","trigger","cancelStageTrigger","once","abandonRender","onStage","callback","addSyncTriggerListener","shouldTrackSyncInterrupt","syncInterruptCurrentStageWithReason","advanceStage","getSyncInterruptReason","getStageEndTime","triggeredAt","Infinity","nextStageIx","dynamicStageIx","resolveStage","targetStage","targetStageIx","fireStageTrigger","getStagePromise","promise","delayUntilStage","displayName","resolvedValue","stagePromise","makeDevtoolsIOPromiseFromIOTrigger","catch","ignoreReject","createStageTrigger","ioTrigger","reject","bind","listener","_listeners","createPromiseWithResolvers","_resolvePromise","_rejectPromise","performance","timeOrigin","listeners","ClientHookDynamicError","RENDER_STAGES_BY_DATA_KIND","applyOwnerStack","createPrerenderDataTracking","finishPrerenderDataTracking","isHangingPromiseRejectionError","makeClientHookHangingPromise","makeDevtoolsIOAwarePromise","makeDynamicHangingPromise","makeFallbackParamsHangingPromise","makePrefetchHangingPromise","makePromiseFromTrigger","makeSessionDataHangingPromise","makeURLDataHangingPromise","makeUnknownRuntimeDataHangingPromise","makeUntrackedHangingPromise","trackFallbackParamsAccessed","trackIncompatibleShellContent","trackPromiseUsed","trackURLDataAccessed","HANGING_PROMISE_REJECTION","HangingPromiseRejectionError","CLIENT_HOOK_DYNAMIC","abortListenersBySignal","WeakMap","makeHangingPromiseWithError","trackSessionDataAccessed","runtimeDataAccessed","shouldAttemptStaticShell","shouldAttemptStaticPrefetch","prerenderDataTracking","trackRuntimeDataAccessed","dataKind","Before","NavigationStatic","ensureStaticLevel","None","firstAffectedStage","ShellStatic","Shell","logRuntimeDeopt","PrefetchStatic","Prefetch","markRuntimeDataAccessWhenStageReached","isFallbackUpgradeable","logRuntimeUpgradeableFallback","stageController","NEXT_PRIVATE_DEBUG_RUNTIME_DATA","workAsyncStorage","getStore","log","Dynamic","Abandoned","NEXT_PRIVATE_DEBUG_VALIDATION","hasIncompatibleShellContent","hangingPromise","boundRejection","currentListeners","underlying","onUse","TrackedPromise","species","tracked","onFulfilled","onRejected","sessionData","ShellRuntime","staticUrlData","prefetchApi","static","PrefetchStatic_prefetchApi","runtime","PrefetchRuntime_prefetchApi","PrefetchRuntime","runtimeUrlData","getClientReact","getServerReact","workUnitAsyncStorage","innerOwnerStack","outerOwnerStack","frames","frame","getComponentTypeModule","loaderTree","layout","page","defaultPage","isLayout","isPage","isDefaultPage","DEFAULT_SEGMENT_KEY","modType","moduleType","isRequestApiAllowedInCurrentPhase","throwForSearchParamsAccessInUseCache","throwWithStaticGenerationBailoutErrorWithDynamicError","constructorOpt","createSearchParamsInUseCacheError","captureStackTrace","invalidDynamicUsageError","actionStore","actionAsyncStorage","isAppRoute","isAction","afterTaskStore","afterTaskAsyncStorage","rootTaskSpawnPhase","require","__NEXT_EXPERIMENTAL_REACT","TURBOPACK","vendored","createCacheLifeOutsideUseCacheError","createCacheTagOutsideUseCacheError","createConnectionInPrivateUseCacheError","createConnectionInPublicUseCacheError","createConnectionInUnstableCacheError","createCookiesInUnstableCacheError","createCookiesInUseCacheError","createDraftModeMutationInUnstableCacheError","createDraftModeMutationInUseCacheError","createHeadersInUnstableCacheError","createHeadersInUseCacheError","createNestedCacheShortExpireError","createNestedCacheZeroRevalidateError","createRevalidateDuringRenderError","createRevalidateInBuildTimeGeneratorError","createRevalidateInCachedFunctionError","createRouteHandlerRequestInUnstableCacheError","createRouteHandlerRequestInUseCacheError","createUseCachePrivateInsidePublicUseCacheError","createUseCachePrivateInsideUnstableCacheError","createUseCachePrivateOutsideRequestContextError","NEXT_REQUEST_IN_USE_CACHE","UNSTABLE_CACHE_API_DOCS","USE_CACHE_PRIVATE_API_DOCS","CACHE_TAG_OUTSIDE_USE_CACHE","CACHE_LIFE_OUTSIDE_USE_CACHE","USE_CACHE_PRIVATE_COMPOSITION","REVALIDATE_IN_USE_CACHE","NESTED_USE_CACHE_NO_EXPLICIT_CACHELIFE","generatorName","routePrefix","functionName","ReflectAdapter","prop","receiver","Reflect","deleteProperty","createLinkPrefetchPartialError","label","p","pathname","endsWith","createReactBrowserBailoutReason","isNextBrowserBailoutError","REACT_BROWSER_BAILOUT_REASON","$$typeof","res","rej","segment","modules","staticSiblings","template","conventionPath","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","computeSelectedLayoutSegment","getSegmentValue","getSelectedLayoutSegmentPath","isGroupSegment","isParallelRouteSegment","startsWith","segments","rawSegment","first","segmentPath","node","children","segmentValue","e","ContextAPI","a","o","NoopContextManager","getInstance","_instance","setGlobalContextManager","registerGlobal","DiagAPI","instance","active","_getContextManager","with","getGlobal","disable","unregisterGlobal","_logProxy","setLogger","logLevel","DiagLogLevel","INFO","s","u","l","createLogLevelDiagLogger","suppressOverrideMessage","createComponentLogger","DiagComponentLogger","verbose","debug","info","MetricsAPI","setGlobalMeterProvider","getMeterProvider","NOOP_METER_PROVIDER","getMeter","PropagationAPI","NoopTextMapPropagator","createBaggage","getBaggage","getActiveBaggage","setBaggage","deleteBaggage","setGlobalPropagator","inject","defaultTextMapSetter","_getGlobalPropagator","extract","defaultTextMapGetter","fields","TraceAPI","_proxyTracerProvider","ProxyTracerProvider","wrapSpanContext","isSpanContextValid","deleteSpan","getSpan","getActiveSpan","getSpanContext","setSpan","setSpanContext","setGlobalTracerProvider","setDelegate","getTracerProvider","getTracer","createContextKey","getValue","setValue","deleteValue","BaggageImpl","_entries","getEntry","assign","getAllEntries","entries","setEntry","removeEntry","removeEntries","baggageEntryMetadataSymbol","baggageEntryMetadataFromString","__TYPE__","context","ROOT_CONTEXT","enable","BaseContext","_currentContext","diag","_namespace","namespace","logProxy","unshift","DiagConsoleLogger","_consoleFunc","apply","NONE","ALL","_filterFunc","ERROR","WARN","DEBUG","VERBOSE","VERSION","_globalThis","version","isCompatible","_makeCompatibilityCheck","major","minor","patch","prerelease","isExactmatch","_reject","add","_accept","metrics","ValueType","createNoopMeter","NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC","NOOP_OBSERVABLE_GAUGE_METRIC","NOOP_OBSERVABLE_COUNTER_METRIC","NOOP_UP_DOWN_COUNTER_METRIC","NOOP_HISTOGRAM_METRIC","NOOP_COUNTER_METRIC","NOOP_METER","NoopObservableUpDownCounterMetric","NoopObservableGaugeMetric","NoopObservableCounterMetric","NoopObservableMetric","NoopHistogramMetric","NoopUpDownCounterMetric","NoopCounterMetric","NoopMetric","NoopMeter","createHistogram","createCounter","createUpDownCounter","createObservableGauge","createObservableCounter","createObservableUpDownCounter","addBatchObservableCallback","removeBatchObservableCallback","record","addCallback","removeCallback","NoopMeterProvider","__createBinding","create","__exportStar","globalThis","propagation","trace","NonRecordingSpan","INVALID_SPAN_CONTEXT","_spanContext","spanContext","setAttribute","setAttributes","addEvent","setStatus","updateName","end","isRecording","recordException","NoopTracer","startSpan","root","isSpanContext","startActiveSpan","arguments","g","NoopTracerProvider","ProxyTracer","_provider","_getTracer","_delegate","getDelegateTracer","getDelegate","SamplingDecision","TraceStateImpl","_internalState","_parse","_clone","unset","serialize","_keys","reduce","reverse","trim","validateKey","validateValue","createTraceState","INVALID_TRACEID","INVALID_SPANID","traceId","spanId","traceFlags","TraceFlags","SpanKind","isValidSpanId","isValidTraceId","SpanStatusCode","__nccwpck_require__","ab","d","f","b","O","P","N","S","C","parse","TypeError","decode","substr","tryDecode","encode","isNaN","isFinite","Math","floor"],"mappings":"oDmCoBY,uBEDH,OAAA,GAAA,CAAA,iDAeA,eAAe,CAAA,EAAmB,IAAA,IAAQ,GAAiB,IAAI,GAAG,EAAE,CAAC,KGJ1D,CAAA,EHMH,CxBHC,AwBGG,GAAA,EAAA,eAAA,CAAqC,GAAG,CAAC,KAErD,QAAQ,C9BKU,AMTX,CwBIK,EAAa,WACZ,IAAA,EAAgB,EpBQE,CAAD,Ae6DQ,CKrEL,ApBQF,Ae6DQ,af7DR,EoBNlC,OADA,EAAA,eAAA,CAAA,GAAA,CAAA,EAAA,GACA,iBAGiB,QACX,EAAA,IAAA,EAA0B,EAAK,EAAD,aAAgB,CAAC,CAAC,AnCqBL,OmCpBjD,ErB0BE,eAAA,CqB1BsB,MAAM,CAAC,GACxB,iBlCxCF,gCAyHE,EAAe,UAAH,MApGjB,EAAA,IAAA,CAoG2C,GApG3C,KACA,EAAmB,IAAA,IAEnB,EAAA,EAA4B,CHID,AgBKF,IAAA,CAAA,uBbRV,GAKf,CEGQ,AiCMP,CAAA,SnCRiB,CAAA,EAAA,SACA,CAAA,EAAA,SACA,CAAC,CyBH1B,AzBG2B,CAAC,YACb,CAAA,CAAA,EAAA,KAIqB,MAAM,8BACW,EeYN,yBfP7B,CAAS,EeYR,SfXC,GAAA,CAAI,CAAC,YASjB,SAAsB,CCHL,ADG0B,EQEN,GRDtC,EAAiB,GAAA,CAAI,CIUC,SJTjB,MADgC,CAIpB,GAAG,CAAC,GACvB,MAAA,CUHiC,AVGjC,GADoC,CAAC,EAIjC,AAJmC,EAInC,EAAA,KAAA,CAAyC,OAC1C,EAGH,OAAO,EAAQ,OAGX,EAAA,AANmB,CAOvB,ACZoB,CSEK,KVUlB,CAAA,CAAA,CAAoB,CAAC,AUJF,CVIG,CiBSG,QjBRN,CAAC,EAAE,CGiBG,MHhBzB,CAAA,CAAmB,CAAC,CAAC,CAAC,YACjB,CAAkB,CAAA,EAAA,EAIhC,EuC6BI,CvC7BkC,IcmBE,AdnBE,CcmBD,CyBUrC,AvC7BwC,EAApB,UAAU,YAKH,EUNA,AVMoB,KAAK,CAJtD,CAIwD,MAJjD,CUNK,CVMG,AUNF,CAAC,EPkCU,EH5BV,CAQe,CAAC,EAAE,CAA9B,EAAiB,CARS,CAAC,CAAC,CuCsCpB,CvC9Bc,QACxB,AACE,EAAiB,KAAK,GAAK,EAAoB,IAA/B,CAAoC,EACpD,EAAiB,KAAK,EuC+B5B,AvC/BgC,CADoB,CACA,KAA9B,AAAmC,OAxCtC,CA0CE,OAGV,EAAQ,IAHe,CAAC,AAGjB,CAHkB,IAM9B,EAAiB,CAHS,CAAC,CAAC,EAGN,EAAI,EAAoB,KUPb,AVOkB,EUPhB,AVOkB,CUPjB,CVzCvB,GAAA,CAiDA,AAjDI,IAgD4B,GAI1C,EAAQ,EACjB,CAAC,CAAC,AuCiCE,CvClCY,AAmBkC,IuCcpB,CxCjIlB,CEHD,CcGG,AGNA,ADKA,AMAF,AvBoH6C,CAAC,CAAC,GuBpH/C,CAAA,IAAA,CAAA,ExBCqB,GACE,EIUnC,AqBhBqC,KzBMK,CKO1C,ELP6C,CAC7C,CAAA,qBAAA,EAAA,EAAA,CAA+B,CAChC,CAAC,EAOO,CKAO,GACf,AUNgC,CAAC,KVM3B,OLDE,CIG0B,CAAC,SJH3B,MKCsB,CAAC,ILDvB,UAAA,OAAA,KAAA,KAKC,EADF,AACE,CAAA,UAMM,EAAA,CACJ,CSZuB,AqBsDC,C9BzCL,CgBPS,AhBQtC,CSdwD,CAAA,CAAA,CTexC,EsClBN,AtCkBW,CsClBX,WtCoBJ,EAAA,CAZE,AAYF,CAAA,EAAA,CAA+C,MAAA,CAAA,EAAA,CAAO,CAC1D,AiBDyD,CAAC,CjBE3D,AAD6B,AcT+B,AGQA,CHRC,CdU7D,AcV8D,EdU1D,EAAJ,QAAA,OAAA,KAAA,CAI8B,CAAA,OAEb,C8BkDlB,ApBtEa,AcQM,KAAA,CAAA,6DAAA,EAAA,EAAA,CxBauD,CACvE,CAAC,4DAOI,EAAM,AAAI,CmClBD,KAAA,CAAA,6CAAA,EnCmBmC,EAAI,CAAD,MAAQ,CAAA,KAAA,EAAQ,EAAI,EAAA,yCAAA,EAA8C,EAAO,CAAE,CAC/H,CAAC,EAD4H,OAEzH,C8BiDK,AhB1CD,IdPC,CAAA,EAAA,KAAU,EAAA,EAAA,OAAA,aAInB,CAAA,EAAA,CAAS,CGnBG,wDHqBkC,EAAA,EAAA,EAAS,EAAO,CAAA,CAAG,CACnE,CAAC,CAD+D,CAInE,CAAC,AAEK,SAAU,EAAA,CAAA,yBAGQ,CefZ,CfeoB,EAAA,AAA6B,EedX,IfcW,CedX,EAAA,CAAA,Cfca,OAAO,CAAC,GACjE,GAAmB,EE3BA,AKAI,AP2BS,OKlBxB,GLqBL,EAHe,IAA8B,AAG7C,CAAA,EAAA,CAAO,CAAC,EE3BE,EAAmC,IF2BR,CE3BQ,CAAA,CAAA,CAAA,CF2BL,EAAK,AACtD,CADuD,AACtD,CADoD,CmCClD,AzB3BA,SV6B8B,CAAyB,CAAA,CAAA,IACnD,EU5BE,GV4BG,CAAA,CAAA,+CAAA,EAAA,EAC8C,EAAA,EAAK,CkBjBQ,CAAC,ARXJ,CAAA,CV4BK,CACtE,AU5BA,SV6BmB,EAA6B,CAAC,wDGjExB,C4BAK,AIFF,ACSF,QjCPQ,EAAI,gCAGR,CAAA,uBACC,UAAA,CAAY,C8BItC,CAAA,CjCW2C,MGZpC,GAAG,CAAe,CAAA,kBACJ,CqBKC,AxBYE,GAAA,CAAA,UAAA,CAAA,WGdf,CAAA,CAAA,6CAIe,CAAA,gCACW,CAAA,mDAIG,CgCDD,gBhCMjB,CAC1B,CAAiB,CYGW,CZFb,IYEsB,CRTO,AQSN,CAAC,ARTM,AJSvC,CITwC,CJSxC,EAAmB,CcmBH,UdjBjB,QAAQ,oBsCQH,GAAA,CAAA,CAAA,4O1BvBa,CAAC,ADDF,mCCUX,SAAA,GAAa,CAAI,QACP,EAAU,EoBRI,SpBUzB,CAAA,QACG,CAAM,CAAC,CoBNa,CAAW,C3BCjB,A2BDiB,GAAA,QpBWpC,EAAA,IAAW,GA0CZ,SAAS,CAtCR,CAAA,CAsCW,CAtCX,EAEgB,CAAE,KAoCE,CAAC,EApCK,CAAE,CfcsB,CedT,IAAI,CAAE,EACnD,YACA,GAAA,IAAe,EAAM,OAIP,AAAI,MACd,sIAGF,CbfC,QacI,CJdO,CAAC,CVCD,EAAA,CAAA,MAAA,CAAA,EAAA,EcaG,KAAA,AAAK,EAAA,EAAI,EDYW,ACZP,OAAO,CDYU,ACZT,CAAC,CAC9B,EAGwB,AAAjC,UAAA,OAAA,GACE,GqBFS,ArBEW,oBAKJ,EAAA,UACA,CDaG,AJ3BE,Sc1DL,CACtB,CRCgB,AEDA,ATDmC,CCJA,AHCA,AEGA,AVHA,ayBgBvB,CAAA,CACJ,4CAI2B,QAAQ,CrBNC,AqBOpC,+BAhBQ,CLLG,ApBAA,WyBOb,EAAa,CdFD,EAAA,EcEM,kBAmBjC,+BAEC,EAAA,OAAA,EAAA,IAAA,gBACoB,EAAA,IAAA,yBACoB,CrBJC,AqBIA,AjBNE,CAAC,CAAC,CkCiDzC,CAAA,mBjB1CmC,OAAO,Id6B3B,MAAA,CAAA,EAAA,EKeH,QAAQ,AAAR,EAAQ,EAAI,EAAa,IAAI,CAC/C,KAD0C,CACpC,CACP,CAAC,CAEe,CAAA,EAAmB,CbpBD,sBaoBwB,CAAE,CAC3D,IAAA,EAAc,OAAA,CNfE,AEHI,CIkBN,QAAA,KAAA,AAAiB,EAAA,EAAA,wCACjB,CAAC,CAAA,GDUQ,qCAAA,ECVmC,EAAK,CAAE,CAAC,CAAH,AAAI,EACzD,IAAI,CACZ,CAAA,CVNmB,yDAAA,EUM0C,EAAK,CAAE,CACrE,CADmE,AAClE,OAGG,EAAA,OAAuB,CGRG,CAAC,EAAA,CAAA,IHapC,EAAA,OAAA,CAAe,GAAG,EAAE,QyBQtB,CzBP+B,2BAGH,CAAA,AAAI,IXFI,GWGrB,EAAoB,KAG5B,OAAO,CAAG,CXQC,CAAA,aWPX,KAAK,CAAG,EAAA,WACR,IAAA,CAAO,EAAU,MdnBF,EcoBpB,EAAA,IAAA,CAAY,EAAU,GyBWO,GzBXD,CAAC,CAAC,EdnBA,AcoBzB,CdpB0B,CAAC,AuC+BvB,GzBXC,CAAG,EAAU,OAAO,CAChC,AADiC,CAAC,AACjC,OJzBsC,CAAC,CACnC,CAAC,SOzEqB,0BLLlB,CWGC,UXGR,CAAA,CAAA,GACG,CAAO,CAAA,6BAKmB,CiBiBf,APzBA,COyBA,CAAA,gDjBRP,IAAA,kBKFK,aAAA,4CAEW,CAAA,EAGhB,IAAA,CAAA,SAAA,mCASA,EAAe,EAAA,EAA0B,EAAO,KAAA,GAAS,EAAE,CAAC,wCAOrC,GAAA,MAAA,QAY9B,CAAA,CACA,CAAA,CAAA,CAC8B,CAC9B,GAAA,CAAA,CAAA,kCAEiC,IAAI,CAAA,EAAU,EAAA,KAAgB,QASlD,CAAA,CAAA,CAAA,CAAA,QACN,CJiBC,GIjBG,CAAA,kBAAmB,EAAE,CAAC,ERVI,CAAC,CAAA,CQUA,EAAS,EACjD,GAD+C,CHID,+BGAd,EAIzB,SAAA,KACD,CAAA,kBAAmB,GAAA,OAAU,KAChB,EAAU,EAAQ,KhBdG,GgBcK,EAAE,CAC/C,AADgD,CAAC,AAChD,oBG5E0C,iBmBwFvC,OAAO,CtC/BL,EsCoDF,MAAO,EACX,YAAY,CAA6B,CAAA,CAAG,CAAC,AzBXrB,eyBaT,CAAA,CAAA,CAAgC,CAAC,CAe3C,IAAM,EAAa,G7BxCZ,C6BwCgB,uBA3G1B,OAAO,gDAaoB,CxBNA,AQFT,CAAA,oEgBwBlB,CAAwB,CAAA,QAEjB,0BAOP,CAAa,CACb,CAAwB,CAAA,wCASxB,CAAa,CAAA,CAAA,CAAA,sCAUqB,CtC3BT,ASEM,C6B0BL,CAAA,CACnB,CAAC,oCAkDC,EAAsB,CvCjCH,CAAC,CAAC,CuCiCK,cAxCA,GAwCiB,EAAE,CAAC,CAvCvC,CAAA,CAAA,CAAA,CAAA,EACnB,CAuCY,EAAoB,IAAI,AA9B/B,WA8BwB,GA9BxB,CA8B8C,EAAE,CAAC,KA7B9C,CAAc,CAAA,CAA+B,CvC7B3B,CuC6BoC,CAAC,CAC/D,CA6BY,EAAwB,IA3B/B,AA2BmC,cA3BA,CzBVH,AyBqCJ,CzBrCK,AyBWrC,CzBXsC,AXSrC,EoC4ByD,EAAE,CAAC,CA1BtD,CAD0C,AAC1C,CAAgB,CAA6B,CAAA,CAAS,CAAC,EA2BnD,EAA8B,EpC9Be,CAAC,CoCTrD,AAuCyC,cAtCrC,MAGJ,CAAc,AAmCoB,CAnClB,CAmCgD,AAnCnB,CzBV7B,AyBOF,CAGwC,AAmCY,CAnCX,AAmCY,CAlCxE,CAqCY,EAAiC,IAAI,AArB5C,MAAO,QACH,GACuB,CAoBpB,EAA+B,IADD,AACK,AAlB1C,GAiBuE,EAAE,CAAC,QAhBtE,GACqB,CAiBlB,EACX,EAFuC,EAEnC,AAhBA,CAcmE,EAAE,CAAC,UAblE,GAC6B,eAaY,CACZ,CAfT,CAeW,CAAC,INzIlB,CAAA,CAAA,CAAqB,CAAA,CAAA,QAClC,kClBYK,aAAA,sBACO,QACZ,SAAS,CAAG,ChBKO,A8B2CA,GdhDH,CAAA,wDAWmB,CUXhC,CVWwC,AUXxC,AFSkC,CpBMS,OYJK,EAAE,CAAC,CAAC,+CAgB9D,CNZyB,CAAA,YMcd,CAAA,gBAAA,GAAoB,QAAQ,CAAA,EAAO,EAAA,eAK7B,EAAU,EAAQ,CTbG,OSaK,EAAE,CAAC,CAAC,EAElD,CIpDiC,WAAA,WSqGrB,CAAA,CAAA,KACL,MAAA,UAGU,CAAC,EAAI,OAGhB,CDvGC,ECwGA,IADM,EACN,AAAiB,KAGd,OAAO,IAAA,CAAK,6BAaZ,CAAC,EAAI,CAAA,CAAA,qEtBpHW,IAAA,KAAA,sBASlB,EAAW,EAAA,WAAsB,CPoBD,EAAA,MAAA,gBOXE,CAAE,CAAgB,CuBwEjB,EAAE,KAAK,CvBvE1C,CuBuE4C,CAAC,AvBvErC,QAAA,CAAA,EAAsB,EACvC,CAAC,AAOK,SAAA,EAAwB,CAAgB,SACrC,EAAA,WAAmB,CAAA,EAC5B,CAAC,MT5CY,GEGG,AEFA,AHHA,AEAA,EICL,AFDO,AJAA,AEAA,ADKA,AIHP,gBNIH,CAAA,QAAA,CAAA,EAAA,IAAA,IAAA,GAAyC,CgBHK,AVYrD,AITqD,EFJE,CRIH,GMS9C,ANTiD,ECJM,ADIJ,CCJK,ADIJ,GgCSO,CAAC,iBhCL5C,QAAA,CAAA,GAAA,CAAA,GACnB,GAAA,8DAQiB,CAAA,IAAA,CAAA,QAAc,CAAC,OAAO,eAGnB,CAAmB,CAAA,8CAEnB,GAAA,CAAI,EAAA,mBAIH,aACc,IAAI,CAAA,QAAS,CAAC,CUFX,AVEY,wBACxB,CAAA,mCAKH,EAAY,IAAI,CAAA,QAAS,CAAC,CAAC,uE2BhCzC,EAAA,OAAA,iD1BSG,GACd,EAAwC,CAAA,CAAE,SAEnC,IAAA,EAAA,IAAA,IAAA,OAAA,OAAA,CAAA,0BKWH,GAAA,iCwBhBsB,CAAA,CAAA,wCxBuBf,6EAsEY,CAAG,gDA/DZ,aAAA,wBACS,MACd,SAAS,CAAA,IAAO,C+BTqB,CAAA,C/BYrC,IAAA,CAAA,SAAA,qBAQkB,CAA6B,CAAA,QAC/C,EAAe,EHZA,CGYU,EAAY,EAAQ,GHZf,CAAC,CGYa,CAAT,EAAkB,EAAE,CAAC,CAAC,QAWhD,CHZL,CGaK,CWAA,EXCiB,CAAoB,CUWrB,AVXqB,CUWA,CAAC,CAAC,KVThD,IAAI,CAAC,UKfc,UAAA,GAAA,MLee,CAAC,EAAS,EAAS,CUUN,CAAC,CAAC,EVVE,CAAQ,CAAC,CAAC,IAWpD,CAAA,CACA,CAChB,EAAiC,CAAoB,CAAA,CAErD,OAAA,IAAW,CAAA,oBAAA,GAAA,OAA+B,CAAC,EAAS,EAAS,EAC/D,AOrBiE,CPqBhE,AcRA,SdcC,CFtBC,MEsBM,IAAA,CAAK,oBAAoB,GAAG,MAAM,EAAE,CAItC,AAJuC,SAIhC,GACK,GoCYQ,ApCZE,EAAQ,EWE0B,CXFpC,CoCYkB,AzBVoB,EAAE,EXFtB,EAAE,CAAC,CAAC,AAazC,sBAAA,QACC,EAAU,KAAa,EWRN,AyBUK,IlBxGS,CCCC,UDDU,CKFjC,CLEmC,CAAC,GKN5C,GAAA,CAAA,EAAA,AISqD,CJTrD,AISsD,CJTtD,0EISmB,sCAKkB,gEKCR,EAAoB,CAAA,CACzD,IAAI,CAAC,YAAY,CAAG,uDASG,CAAE,CAAA,CAAA,yCAMd,4DAYU,CAAA,uBAKb,CAAmB,CAAA,wBAKlB,CAAa,C/BHT,iB+BQX,CAAA,CAAA,CAA6B,CtBcf,AsBdgB,C/BAlB,AScG,CTdF,mB+BIR,CACT,iBAGgB,CAAqB,CAAA,CAAmB,CAAA,CAAS,yD3BnD3C,CAAA,qDAQf,GAAA,EAAmB,WAAA,GAAA,MAAA,sDAkBZ,GAAW,CAAgB,CLWlB,QKVhB,EAAA,WAAA,CAAoB,gBAW3B,CKwB0B,ALxBV,C+BmBa,A/BnBb,CACQ,KKuB0B,CVVC,QKX3B,IAAA,GAAA,GAC1B,CAAC,aAO8C,CEJe,ANY3B,OIPjC,OAAO,MAAA,CAAA,EAAA,GAAA,EAAA,EAAA,KAAA,EAAA,EAAA,WAA6B,UC9DxB,IAAA,WAAA,KACN,QAAY,CKSG,ALTF,CAAE,CQIG,AYUA,ApBdF,CqBAG,IrBAK,CAAC,CCAG,ADAD,CAAC,CAAE,EAAG,CkBCC,AdGE,AJJF,OAAW,CAAC,AoBcE,CAAC,ApBdD,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,KACtE,IAAM,QAAY,EAAG,EAAG,UAAe,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,GAAK,CAAC,CAAE,AgBHD,ChBGE,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,KACtE,IAAM,YAAkB,EAAG,IAAM,CAAC,CAAE,CAAC,AiBJjC,CAAA,AjBImC,CAAC,CgBHlC,EhBGuC,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CDEG,ECFE,CAAC,CAAE,CAAC,CkBCC,AlBDC,CAAC,CAAE,CAAC,KACtE,QAAY,IAAM,IAAM,IAAM,CAAC,CAAE,CAAC,A2B8CrC,C3B9CuC,CAAC,AWFE,CAAC,AXED,IAAM,CAAC,CAAE,CAAC,CNiBG,EMjBE,CAAC,CAAE,CAAC,AiBJA,CjBIE,CAAC,CAAE,CAAC,CAAE,CAAC,CAC1E,CAAC,CXCC,AWDA,SAEM,CcED,EAAA,CAAA,CAAA,CAAA,KdCY,oBAAA,EAAe,MAAM,GAAK,CZID,CAAC,A2C4CnC,C3C5CoC,C2C4CpC,CAAA,AjBzCsC,IdPY,QAEnD,YACK,EAAA,EAAA,EAAA,MAAA,CAAA,GAAuB,CAAC,AISF,SJPzB,CAAA,EAAI,UAAU,CAAC,CAAC,EAAA,AAAK,CAAC,CAAC,CACD,AADC,EAAA,EAAA,CAAA,EAAA,UAAA,CAAA,EAAA,GACD,GACA,EAA3B,EAAA,CAAA,EAAA,UAAA,CAAA,EAAA,GAA2B,EAAA,CTEU,ASFV,EAAA,EAAA,CAAA,EAAA,UAAA,CACP,CAAC,ATCgB,CAAA,GAAA,SSEnC,IAAA,CACT,CAAC,sBAMQ,GAAA,EAAA,KAAA,IAAuC,CgBFlC,CAAA,KVWuC,CAAC,INHtC,GAN+C,AAMjC,CANkC,AAMpB,SACnC,GAAW,CNaQ,CMbA,EAAE,GAAK,IAAW,EAC9C,CAAC,YAQkC,CAAA,cAEJ,CQWK,MAAA,GRXO,GAAc,CQWK,AJejC,CAAA,MAAA,CJxB7B,CAAC,EDAE,OCQa,GAAgB,CAAwB,SAC/C,IAAA,GAAqB,gDI3CL,CAAA,EAAA,GAAA,MACM,CmBDpB,AlCJ4C,CeKtB,CoBN0B,AnCCF,KesElC,WAAoB,EA/DX,EZkCJ,GYlCI,EAAP,EAAS,IAAI,CAAC,CAAC,GAAf,CgBgD+C,MhB9CvD,KAFe,KAAA,KAKwB,UA2DtD,cAAA,AAES,UAFT,OAES,GAAA,WAAA,GAAA,AAE0B,ObzBO,GauBjC,OAAA,EAEY,EH5BqB,CFId,GKwBE,EbzBY,YAAA,GAAA,Aa2BX,Ub3BW,OAAA,Ea2BtB,OAAW,EAAX,AAClB,GTfY,YSeI,CCVH,EVJqB,AUIrB,UAAA,ODWN,EAAA,UAAyB,CbzBD,CAAC,AIUE,GShDb,oBACnB,gDAgCY,EEtBE,IFsBI,CJ/BG,AI+BA,CAAC,Ab9BA,Ca+BtB,MXpB6B,CAAA,GWqBpB,AAAwB,EqB1BF,QrB0BtB,MAAgB,EXrBE,CAAC,AWsBvB,CXtBwB,AQRrB,CDGY,GI4BX,AAAwB,CClBzB,CyBQyB,A9BlBE,C8BkBD,O1BUf,CJ5BC,KAAA,MI8BpB,EAAK,MAEE,EHzBF,EG0BC,EACN,EAAK,qCAIU,CAAC,SAAS,CAAC,EAAM,EAAM,EAAF,CAChC,CdEwC,CcFnB,GAAA,EAAuB,kBAE3B,EAAoB,EAAA,KAAA,EAAe,IAAI,CAAC,CAAC,iCG1DhE,CAAyB,CACzB,CAAY,CACZ,CAAA,CAAA,CAAA,CAAA,gBAGiB,CoB0BA,AbxCG,UPeX,CAAG,CjBLC,EkBPM,CMDD,APaF,wCAKM,CYsFT,CAAA,CAAA,CAAA,sCZrF4B,EAAA,mBAIzC,CPnBW,AoB4DM,CbxCjB,CAAyB,CACzB,CAAsB,CACtB,CasC4C,AhBjDN,AGW/B,CHXgC,AgBiDM,AbtCtC,YAEa,UAAA,UACb,QAAA,KAAa,CAAC,EAAA,eAAsB,COfC,AfLE,AQoBD,CRpBG,CQoBK,EgBjB9C,CH6DI,AG7DJ,ChBiB4C,Ea6ChD,Gb7C2D,CAAC,CAAC,sBa6ClC,CAAC,ObrCb,YACL,CAAA,SAAA,KAGP,EAAS,IAAA,CAAA,SAAc,CAAC,iBAAiB,CAC7C,IAAI,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CACZ,IAAI,CAAC,OAAO,CACb,CAAC,OAEF,AAAI,IAAA,GAIA,CAJS,AAIT,SAAU,CAAA,gBACO,aT9DI,EJQ3B,AoBP2B,A1BDF,AwBJI,AtBMA,AWJA,oB4BU3B,CAAA,CAAA,CAAA,CAAA,qC/BWoB,CAAA,CAAA,CAAA,CAAA,CAAA,OACpB,OAAA,MAAA,CAAA,EAAA,IAAA,CAAA,iBAAA,CACyB,CgBIa,ChBJP,CgBIa,ChBJJ,EsBmEtB,AtBnE6B,CAAC,CsBoE7C,CAAN,CAAM,AtBnED,CsBmEkC,GtBnE9B,GAAY,IAAI,CAAE,EAAM,CAAb,CAAsB,AAAX,KAAS,EAAS,CAAC,CAC9C,CAAC,+CAIuB,gBAMS,CVAjB,GUN4B,CAAC,WAOhC,CAAA,qBAIF,CACZ,CAAA,CACA,CAAA,CAAA,qCAEqB,EAAA,KAAA,EAAA,EAAE,SAAS,CAAC,EAAM,EAAS,AAAX,KAAS,EAAS,CAAC,CAAC,6DHhB/B,CwBwFA,AAAC,CAAA,GxBxFM,uBAmDb,CAAA,2GAUE,sCAIH,CmBhEC,UnBKR,aAAA,sBACO,QACZ,SAAS,CAAA,IAAA,CAAA,yCAWa,CAAwB,CFAtB,OECf,EAAA,GAEd,IAAA,CAAK,oBAAoB,CACzB,EAAQ,KAAD,GAAS,EAAE,CACnB,CAAC,eAEK,oBAAoB,CAAC,WAAW,CAAC,GAEjC,6BAOA,EAAU,KAAa,IAAI,CAAC,GJVG,CAAC,gBIUgB,CAAC,UAMzC,CAAA,CAAA,CAA8B,CAAA,YAClC,CAAC,iBAAA,GAAoB,SAAA,CAAU,EAAM,CJTC,CAAC,CAAC,IISI,CAAC,CAAC,IAKzD,EAAA,GAA2B,EAAQ,CMbP,ONae,ESeE,ATfA,MACzC,CAAA,oBAAqB,CAAG,IAAA,EAC9B,GAiBD,gCH9FkB,CHHG,QGIpB,UAAa,CcGG,AdHF,AiBHE,ADKA,ChBFA,oBACA,6EAWkB,kBAC5B,QAQkB,sCAEC,mBAAZ,CFmBC,MAAA,CAAA,EEnBW,gBAEiB,CAAC,EAAA,AAAI,uDoCpBrC,mHZPA,GAAA,CAAA,EAAA,CAAA,CAAA,8NpBFM,CAAA,KAAA,EAAQ,CCAC,ACEA,ACCA,ACJA,ACGA,CNEC,AHDF,AHHE,COAkB,OAAA,CAAS,CAAC,gCACgB,GAAoB,CFanD,CAAC,ICNP,ADMO,CCNN,ACPgE,CAAC,GAC7E,AJGA,EgBGE,AFCA,AdJF,IIJoE,CACzD,CAAA,IAAA,EAAO,CDYjC,ALNkC,EKMlC,CAAA,ECZ8C,CQEC,CAAC,CTYhD,CADO,CACP,CUJF,AVIL,ACdyE,CAAC,CNO7C,AMP8C,CFiB9D,GACd,CCJQ,wEMCe,CAAA,IAA4B,CbMrB,GaHvB,GAAA,IAAmB,CAAA,MAAO,CAAC,CDApB,AoB6DU,OnB1DR,CAAE,CAAa,CAAA,KAGtB,EAAa,IAAI,CAAC,MAAM,YACf,cAAc,CAAC,CTED,ESFI,CAAC,MACrB,cAAc,CAAC,CmByEO,AKrEsB,CLqErB,InBzEF,CAAC,mBAEV,CAAC,GAAG,CAAC,EAAA,KAIhC,MAAM,CAAW,CAAA,CACf,IAAA,EAAmB,IAAI,CAAC,MAAA,UACxB,CM4BC,AFlBA,CAAA,cJVwB,CAAC,MAAM,CAAA,GACzB,OAGM,CAAA,CACb,CVCC,A6BuEE,MnBxEI,IAAI,CAAC,CG4BI,CAAC,CChBF,AfgBE,WW5BS,CAAC,GAAG,CAAA,EAChC,CAAC,AVCA,AUCD,CJDI,UICJ,CACE,OAAA,MACQ,CGyBgC,CAAC,AbzBzB,EUAJ,CAAC,IAAA,CAAA,cAAmB,CAAC,IAAI,EAAE,CAAC,CAEnC,CGyBD,EThB4C,CAAC,CAAC,MMTlC,CAAC,CAAC,EAAe,CAAF,EAAK,EAAE,AAChC,EADkC,AAC9B,IAAI,CAAA,EA5ClB,IA4CyB,AAAiC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAE9D,EAAE,EACJ,IAAI,CAhDkB,AAgDjB,IAEZ,CAAC,APeA,AObO,C6BsBP,A1BGA,AdGA,MW5Bc,CAT+D,AAS1C,CAAA,EAClC,CAAA,EAAkB,CTHL,CagBC,IJbU,CAtDA,EAsDG,CAAA,GAAqB,CAChD,GG2BK,CAAA,CAAA,cH3Bc,CAAG,EACnB,KAAK,MAEL,WAAW,CAAC,CAAA,EAA2B,CVGlB,GcFkH,CACrI,CAAC,GJDI,EAAa,CG4BC,CH5BI,IAAI,EAAE,CAAC,AACzB,CAD0B,CACtB,EOYE,AHKqB,ANdzB,ASSI,OAAA,CPtEpB,KA2DQ,GAAA,AAAU,CAAC,IAAX,EAAW,KACH,C6B6BO,C7B7BD,ANaF,EMba,EAH4C,GAGvC,CAAA,EAAI,CAAC,CAAC,CAC5B,EAAQ,EAAW,CAAd,IAAmB,CAAC,CAAC,CANwC,AAMrC,CAAC,CAAE,EAAK,EAAD,ANaK,CAAC,GMbC,CAAC,AAC9C,CLpDL,AKmDoD,GLnDpD,IAAA,CAAqB,AKoDJ,CIqBC,AdjBE,AiBSA,OPbK,GL3CH,CK2CiB,GIqBG,CThEpB,CAC1B,CFcU,EAAA,AO4ByC,CIqBC,CAAC,CAAC,CT/DlB,CAAC,IK2C9B,EAAI,CAAD,EAAI,CAAC,EAAA,WAMd,CIyBD,AJzBE,CIyBD,AJzBG,IAAI,GAAG,EAGR,IAAI,CAAA,cAAA,CAAgB,IAAI,EIyBE,CJzBC,CIyBC,EJxB9B,IAAI,CAAA,aAD8C,CAC/B,CADiC,AAC9B,EIyBI,CAAC,CAAA,IJxBzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CACtC,OAAO,EAAE,AVKA,CUJT,KAAK,CAAC,CAAC,CA/EY,CEAC,ADFA,ADiFX,CA/EY,AGDA,AVIA,CMNC,AKCA,ARAA,AIEA,AFCA,CKFC,AEGlB,ACEkB,ACHlB,AP8EI,CH/Ee,AOFA,CVIC,AWClC,ACCkC,ACFlC,APgFA,CM9EmC,AINA,AEAA,AJAA,ACAA,AEAA,AXoFlC,AAGO,CPlF4B,CJAC,CcJC,AdIA,AwBHA,EbqFzB,EAAA,CACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,O6BsCzB,C7B9CyE,MAQlC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,AACzD,CAD0D,AACzD,AAEO,E6BsCJ,CAHwB,KAGxB,C7BrCF,IAAM,EAAa,CVOC,GUPG,GAEvB,CAFgB,AVSf,MURD,EAAA,cAAyB,CAAG,G6BwCO,CAAA,I7BxCC,IAAI,CAAC,cAAc,CAAC,CAAC,AAClD,CACT,CAAC,C6ByCG,O7B1Ce,CAAC,A6ByCI,yBtC9Fb,sBAyBA,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EsC8BO,CAAA,MtC9BU,CAAE,CAAC,CsC8BK,CtC9BH,CAAE,AasBH,UbrBrB,CAAC,CAAC,CAAA,CAAI,SAxBjB,CAAA,kBACU,GAAG,CAAI,MKAU,ASaF,OdXiB,CAAC,GAEzB,YAAY,MSCY,OTAnC,CDEO,CAAC,CCFgB,GAAM,AAAN,CAAO,CAGpB,CagBG,WbhBtB,CGac,EHhBiB,IAGxB,GAA0B,CsCyBK,QtCzBI,AAGrB,COE4B,CKuBD,QZzBjB,EAA7B,AAA+B,OAAxB,SADM,CAAC,EAAQ,MAGd,KY8Ba,ACbF,GAAA,GAAA,AbjBA,CAAC,AaiBM,CAAC,AbdtB,CacuB,WbdC,AAA/B,OAAO,WACM,KAAA,CAAA,QAAA,KAMkB,EAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAoC3D,sSH9EC,CAAA,2FAIyD,OAAO,EAAG,CAAA,AAAE,CAClE,CAAC,MAIG,UACK,4EyCqHR,SAAU,EACd,OAAO,CACT,CAAC,IAF8B,IACZ,CAAC,gCRnJX,IAAI,GAAA,yUUVAA,kBAAkB,CAAA,kBAAlBA,GAQGC,oBAAoB,CAAA,kBAApBA,uEAVhB,IAAMC,EAAqB,sBAEpB,OAAMF,UAA2BG,MAGtCC,YAA4BC,CAAmB,CAAE,CAC/C,KAAK,CAAC,CAAC,sBAAsB,EAAEA,EAAAA,CAAa,EAAA,IAAA,CADlBA,WAAAA,CAAAA,EAAAA,IAAAA,CAF5BC,MAAAA,CAAoCJ,CAIpC,CACF,CAEO,SAASD,EAAqBM,CAAY,QAC/C,AACiB,UAAf,OAAOA,GACC,OAARA,CACA,CAAE,CAAA,WAAYA,GACQ,AADN,UAEhB,AADA,OAAOA,EAAID,MAAM,EAKZC,EAAID,MAAM,GAAKJ,CACxB,iSCnBaM,qBAAqB,CAAA,kBAArBA,GAIGC,uBAAuB,CAAA,kBAAvBA,uEANhB,IAAMC,EAA0B,yBAEzB,OAAMF,UAA8BL,wBAApC,KAAA,IAAA,GAAA,IAAA,CACWQ,IAAAA,CAAOD,EACzB,CAEO,SAASD,EACdG,CAAc,QAEd,AAAqB,UAAjB,OAAOA,GAAgC,OAAVA,CAAkB,CAAE,CAAA,SAAUA,GAIxDA,EAAMD,AAJsD,GAAI,CAItD,GAAKD,CACxB,yOCbA,IAAIG,EAAYC,OAAOC,cAAc,CACjCC,EAAmBF,OAAOG,wBAAwB,CAClDC,EAAoBJ,OAAOK,mBAAmB,CAC9CC,EAAeN,OAAOO,SAAS,CAACC,cAAc,CAgB9CiB,EAAc,CAAC,EAfKd,EAgBF,CACpBe,eAAgB,IAAMA,EACtBC,gBAAiB,IAAMA,EACvBC,YAAa,IAAMA,EACnBC,eAAgB,IAAMA,EACtBC,gBAAiB,IAAMA,CACzB,EArBE,IAAK,IAAIlB,KAAQD,EACfZ,EAcK0B,EAdab,EAAM,CAAEC,GAAhBH,CAAqBC,CAAG,CAACC,EAAK,CAAEE,YAAY,CAAK,GAwB/D,SAASgB,EAAgBG,CAAC,EACxB,IAAIC,EACJ,IAAMC,EAAQ,CACZ,SAAUF,GAAKA,EAAEG,IAAI,EAAI,CAAC,KAAK,EAAEH,EAAEG,IAAI,CAAA,CAAE,CACzC,YAAaH,IAAMA,CAAD,CAAGI,OAAO,MAAIJ,EAAEI,OAAO,AAAK,CAAC,EAAK,CAAC,QAAQ,EAAE,CAAsB,AAArB,iBAAOJ,EAAEI,OAAO,CAAgB,IAAIC,KAAKL,EAAEI,OAAO,EAAIJ,EAAEI,OAAAA,AAAO,EAAEE,WAAW,GAAA,CAAI,CAChJ,WAAYN,GAAyB,UAApB,OAAOA,EAAEO,MAAM,EAAiB,CAAC,QAAQ,EAAEP,EAAEO,MAAM,CAAA,CAAE,CACtE,WAAYP,GAAKA,EAAEQ,MAAM,EAAI,CAAC,OAAO,EAAER,EAAEQ,MAAM,CAAA,CAAE,CACjD,WAAYR,GAAKA,EAAES,MAAM,EAAI,SAC7B,aAAcT,GAAKA,EAAEU,QAAQ,EAAI,WACjC,aAAcV,GAAKA,EAAEW,QAAQ,EAAI,CAAC,SAAS,EAAEX,EAAEW,QAAQ,CAAA,CAAE,CACzD,gBAAiBX,GAAKA,EAAEY,WAAW,EAAI,cACvC,aAAcZ,GAAKA,EAAEa,QAAQ,EAAI,CAAC,SAAS,EAAEb,EAAEa,QAAQ,CAAA,CAAE,CAC1D,CAACC,MAAM,CAACC,SACHC,EAAc,CAAA,EAAGhB,EAAErB,IAAI,CAAC,CAAC,EAAEsC,mBAAmB,AAAkB,OAAjBhB,EAAKD,EAAET,KAAAA,AAAK,EAAYU,EAAK,IAAA,CAAK,CACvF,OAAwB,IAAjBC,EAAMgB,MAAM,CAASF,EAAc,CAAA,EAAGA,EAAY,EAAE,EAAEd,EAAMiB,IAAI,CAAC,MAAA,CAAO,AACjF,CACA,SAASxB,EAAYyB,CAAM,EACzB,IAAMC,EAAsB,IAAhB,AAAoBC,IAChC,IAAK,IAAMC,CADc,IACNH,EAAOI,KAAK,CAAC,OAAQ,CACtC,GAAI,CAACD,EACH,SACF,IAAME,EAAUF,EAAKG,OAAO,CAAC,KAC7B,GAAgB,CAAC,IAAbD,EAAgB,CAClBJ,EAAIM,GAAG,CAACJ,EAAM,QACd,QACF,CACA,GAAM,CAACpC,EAAKI,EAAM,CAAG,CAACgC,EAAKK,KAAK,CAAC,EAAGH,GAAUF,EAAKK,KAAK,CAACH,EAAU,GAAG,CACtE,GAAI,CACFJ,EAAIM,GAAG,CAACxC,EAAK0C,mBAA4B,MAATtC,EAAgBA,EAAQ,QAC1D,CAAE,KAAM,CACR,CACF,CACA,OAAO8B,CACT,CACA,SAASzB,EAAekC,CAAS,EAC/B,GAAI,CAACA,EACH,OAAO,AAET,EAHgB,CAGV,CAAC,CAFO,AAENnD,EAAMY,EAAM,CAAE,GAAGwC,EAAW,CAAGpC,EAAYmC,GAC7C,QACJtB,CAAM,SACNJ,CAAO,UACP4B,CAAQ,QACRC,CAAM,MACN9B,CAAI,UACJ+B,CAAQ,QACRzB,CAAM,aACNG,CAAW,UACXC,CAAQ,CACT,CAAG9C,OAAOoE,WAAW,CACpBJ,EAAWV,GAAG,CAAC,CAAC,CAAClC,EAAKiD,EAAO,GAAK,CAChCjD,EAAIkD,WAAW,GAAGC,OAAO,CAAC,KAAM,IAChCF,EACD,EAeIM,QAAQtB,AAiBM0B,EAfNH,CAAC,CAfD,EA8BY,IA7BzBhE,EACAY,MAAOsC,mBAAmBtC,UAC1BiB,EACA,GAAGJ,GAAW,CAAEA,QAAS,IAAIC,KAAKD,EAAS,CAAC,CAC5C,GAAG4B,GAAY,CAAEtB,UAAU,CAAK,CAAC,CACjC,GAAqB,UAAlB,OAAOuB,GAAuB,CAAE1B,OAAQgC,OAAON,EAAQ,CAAC,MAC3D9B,EACA,GAAG+B,GAAY,CAAEvB,QAAAA,CAmBZkC,CAnBsBL,CAmBZO,QAAQ,CADzBD,AAC0BA,EADjBA,CADYA,EAjBsBZ,GAkB3BG,CADW,UACA,IACSS,EAAS,KAAK,CAnBG,CAAC,CACpD,GAAGrC,GAAU,CAAEA,OAAQ,EAAK,CAAC,CAC7B,GAAGI,GAAY,CAAEA,QAAAA,CAsBZmC,CAtBsBP,CAsBbM,QAAQ,CADxBD,AACyBA,EADhBA,GArBkCjC,GAqB3BwB,WAAW,IACQS,EAAS,KAAK,CAtBI,CAAC,CACpD,GAAGlC,GAAe,CAAEA,aAAa,CAAK,CACxC,AADyC,EAKzC,IAAMgC,EAAO,CAAC,EACd,IAAK,IAAMzD,KAAOwD,EAAG,AACfA,CAAC,CAACxD,EAAI,EAAE,CACVyD,CAAI,CAACzD,EAAI,CAAGwD,CAAC,CAACxD,EAAAA,AAAI,EAGtB,OAAOyD,CATQxB,CACjB,CAxEAtB,EAAOC,OAAO,CAXcjB,CARV,CAmBDO,AAnBEN,EAAIC,EAAcE,KACnC,GAAIF,GAAwB,UAAhB,OAAOA,GAAqC,YAAhB,AAA4B,OAArBA,EAC7C,IAAK,IAAIG,KAAOhB,EAAkBa,GAC5B,AAACX,EAAae,CAAlB,GAAsB,CAACL,EAAII,SAHJF,IAGYE,GACjCrB,EAAUiB,EAAII,CAD2BF,CACtB,CAAEL,IAAK,IAAMI,CAAI,CAACG,EAAI,CAAEN,WAAY,CAAC,CAACK,EAAOjB,EAAiBe,EAAMG,EAAAA,CAAI,EAAKD,EAAKL,UAAU,AAAC,GAEtH,OAAOE,EACT,EACwCjB,EAAU,CAAC,EAAG,aAAc,CAAEyB,OAAO,CAAK,GAWpDC,CAXwDF,EA6FtF,IAAIuD,EAAY,CAAC,SAAU,MAAO,OAAO,CAKrCG,EAAW,CAAC,MAAO,SAAU,OAAO,CA0DpCvD,EAAiB,MACnB,YAAYuE,CAAc,CAAE,CAE1B,IAAI,CAACC,OAAO,CAAmB,EAAhB,EAAoB3C,IACnC,IAAI,CAAC4C,EADuB,MACf,CAAGF,EAChB,IAAMG,EAASH,EAAepF,GAAG,CAAC,UAClC,GAAIuF,EAEF,IAAK,EAFK,CAEC,CAACxF,EAAMY,EAAM,GADTI,CACayE,CADDD,GAEzB,GADkC,CAC9B,CAACF,OAAO,CAACtC,GAAG,CAAChD,EAAM,MAAEA,QAAMY,CAAM,EAG3C,CACA,CAAC8E,OAAOC,QAAQ,CAAC,EAAG,CAClB,OAAO,IAAI,CAACL,OAAO,CAACI,OAAOC,QAAQ,CAAC,EACtC,CAIA,IAAIC,MAAO,CACT,OAAO,IAAI,CAACN,OAAO,CAACM,IAAI,AAC1B,CACA3F,IAAI,GAAG4F,CAAI,CAAE,CACX,IAAM7F,EAA0B,UAAnB,OAAO6F,CAAI,CAAC,EAAE,CAAgBA,CAAI,CAAC,EAAE,CAAGA,CAAI,CAAC,EAAE,CAAC7F,IAAI,CACjE,OAAO,IAAI,CAACsF,OAAO,CAACrF,GAAG,CAACD,EAC1B,CACA8F,OAAO,GAAGD,CAAI,CAAE,CACd,IAAIvE,EACJ,IAAMvB,EAAMgG,MAAM1F,IAAI,CAAC,IAAI,CAACiF,OAAO,EACnC,GAAI,CAACO,EAAKtD,MAAM,CACd,CADgB,MACTxC,EAAI2C,GAAG,CAAC,CAAC,CAACsD,EAAGpF,EAAM,GAAKA,GAEjC,IAAMZ,EAA0B,UAAnB,OAAO6F,CAAI,CAAC,EAAE,CAAgBA,CAAI,CAAC,EAAE,CAAqB,AAAlB,OAACvE,EAAKuE,CAAI,CAAC,EAAA,AAAE,EAAY,KAAK,EAAIvE,EAAGtB,IAAI,CAC9F,OAAOD,EAAIoC,MAAM,CAAC,CAAC,CAAC8D,EAAE,GAAKA,IAAMjG,GAAM0C,GAAG,CAAC,CAAC,CAACsD,EAAGpF,EAAM,GAAKA,EAC7D,CACAsF,IAAIlG,CAAI,CAAE,CACR,OAAO,IAAI,CAACsF,OAAO,CAACY,GAAG,CAAClG,EAC1B,CACAgD,IAAI,GAAG6C,CAAI,CAAE,CACX,GAAM,CAAC7F,EAAMY,EAAM,CAAmB,IAAhBiF,EAAKtD,MAAM,CAAS,CAACsD,CAAI,CAAC,EAAE,CAAC7F,IAAI,CAAE6F,CAAI,CAAC,EAAE,CAACjF,KAAK,CAAC,CAAGiF,EACpEnD,EAAM,IAAI,CAAC4C,OAAO,CAMxB,OALA5C,EAAIM,GAAG,CAAChD,EAAM,MAAEA,QAAMY,CAAM,GAC5B,IAAI,CAAC2E,QAAQ,CAACvC,GAAG,CACf,SACA+C,MAAM1F,IAAI,CAACqC,GAAKA,GAAG,CAAC,CAAC,CAACsD,EAAGvC,EAAO,GAAKvC,EAAgBuC,IAASjB,IAAI,CAAC,OAE9D,IAAI,AACb,CAIA2D,OAAOC,CAAK,CAAE,CACZ,IAAM1D,EAAM,IAAI,CAAC4C,OAAO,CAClBe,EAAS,AAACN,MAAMO,OAAO,CAACF,GAA6BA,EAAM1D,GAAG,CAAE1C,AAAD,GAAU0C,EAAIyD,MAAM,CAACnG,IAAnD0C,EAAIyD,MAAM,CAACC,GAKlD,OAJA,IAAI,CAACb,QAAQ,CAACvC,GAAG,CACf,SACA+C,MAAM1F,IAAI,CAACqC,GAAKA,GAAG,CAAC,CAAC,CAACsD,EAAGpF,EAAM,GAAKM,EAAgBN,IAAQ4B,IAAI,CAAC,OAE5D6D,CACT,CAIAE,OAAQ,CAEN,OADA,IAAI,CAACJ,MAAM,CAACJ,MAAM1F,IAAI,CAAC,IAAI,CAACiF,OAAO,CAACkB,IAAI,KACjC,IAAI,AACb,CAIA,CAACd,OAAOe,GAAG,CAAC,+BAA+B,EAAG,CAC5C,MAAO,CAAC,eAAe,EAAEC,KAAKC,SAAS,CAACvH,OAAOoE,WAAW,CAAC,IAAI,CAAC8B,OAAO,GAAA,CAAI,AAC7E,CACAsB,UAAW,CACT,MAAO,IAAI,IAAI,CAACtB,OAAO,CAACuB,MAAM,GAAG,CAACnE,GAAG,CAAC,AAACoE,GAAM,CAAA,EAAGA,EAAE9G,IAAI,CAAC,CAAC,EAAEsC,mBAAmBwE,EAAElG,KAAK,EAAA,CAAG,EAAE4B,IAAI,CAAC,KAChG,CACF,EAGIzB,EAAkB,MACpB,YAAYgG,CAAe,CAAE,KAGvBzF,EAAI0F,EAAIC,EADZ,IAAI,CAAC3B,OAAO,CAAmB,EAAhB,EAAoB3C,IAEnC,IAAI,CAAC4C,EAFuB,MAEf,CAAGwB,EAChB,IAAM5D,EAA8J,AAAlJ,OAAC8D,EAA+F,AAA1F,OAACD,EAAK,AAAuC,OAAtC1F,EAAKyF,EAAgBG,YAAAA,AAAY,EAAY,KAAK,EAAI5F,EAAGb,IAAI,CAACsG,EAAAA,CAAgB,CAAYC,EAAKD,EAAgB9G,GAAG,CAAC,aAAA,CAAa,CAAYgH,EAAK,EAAE,CAElL,IAAK,IAAMG,KADWrB,MAAMO,KACDa,EADQ,CAAChE,GAAaA,EA3IrD,AA2IiEmB,SA3IxDA,AAAmBC,CAAa,EACvC,GAAI,CAACA,EACH,MAAO,EAAE,CACX,IAEIG,EACAC,EACAC,EACAC,EACAC,EANAN,EAAiB,EAAE,CACnBC,EAAM,EAMV,SAASM,IACP,KAAON,EAAMF,EAAchC,MAAM,EAAI,KAAKyC,IAAI,CAACT,EAAcU,MAAM,CAACR,KAClEA,CADyE,EAClE,EAET,OAAOA,EAAMF,EAAchC,MAC7B,AADmC,CAMnC,KAAOkC,EAAMF,EAAchC,MAAM,EAAE,CAGjC,IAFAmC,EAAQD,EACRK,GAAwB,EACjBC,KAEL,GAAIJ,AAAO,MADXA,GADuB,AAClBJ,EAAcU,MAAM,CAACR,EAAAA,EACV,CAKd,IAJAG,EAAYH,EACZA,GAAO,EACPM,IACAF,EAAYJ,EACLA,EAAMF,EAAchC,MAAM,EAZ9BoC,AAAO,EAY2BO,KAbzCP,EAAKJ,EAAcU,MAAM,CAACR,CAaiC,CAbjCA,GACE,MAAPE,GAAqB,MAAPA,GAa7BF,GAAO,EAELA,EAAMF,EAAchC,MAAM,EAAkC,KAAK,CAAnCgC,EAAcU,MAAM,CAACR,IACrDK,GAAwB,EACxBL,EAAMI,EACNL,EAAeW,IAAI,CAACZ,EAAca,SAAS,CAACV,EAAOE,IACnDF,EAAQD,GAERA,EAAMG,EAAY,CAEtB,MACEH,CADK,EACE,GAGP,CAACK,GAAyBL,GAAOF,EAAchC,MAAAA,AAAM,EAAE,CACzDiC,EAAeW,IAAI,CAACZ,EAAca,SAAS,CAACV,EAAOH,EAAchC,MAAM,EAE3E,CACA,OAAOiC,CACT,EAyFoFrB,GACtC,CACxC,IAAMsC,EAASxE,EAAemG,GAC1B3B,GACF,IAAI,CAACH,OAAO,CAACtC,GAAG,CAACyC,EAAOzF,IAAI,CAAEyF,EAClC,CACF,CAIAxF,IAAI,GAAG4F,CAAI,CAAE,CACX,IAAMrF,EAAyB,UAAnB,OAAOqF,CAAI,CAAC,EAAE,CAAgBA,CAAI,CAAC,EAAE,CAAGA,CAAI,CAAC,EAAE,CAAC7F,IAAI,CAChE,OAAO,IAAI,CAACsF,OAAO,CAACrF,GAAG,CAACO,EAC1B,CAIAsF,OAAO,GAAGD,CAAI,CAAE,CACd,IAAIvE,EACJ,IAAMvB,EAAMgG,MAAM1F,IAAI,CAAC,IAAI,CAACiF,OAAO,CAACuB,MAAM,IAC1C,GAAI,CAAChB,EAAKtD,MAAM,CACd,CADgB,MACTxC,EAET,IAAMS,EAAyB,UAAnB,OAAOqF,CAAI,CAAC,EAAE,CAAgBA,CAAI,CAAC,EAAE,CAAqB,AAAlB,OAACvE,EAAKuE,CAAI,CAAC,EAAA,AAAE,EAAY,KAAK,EAAIvE,EAAGtB,IAAI,CAC7F,OAAOD,EAAIoC,MAAM,CAAC,AAACd,GAAMA,EAAErB,IAAI,GAAKQ,EACtC,CACA0F,IAAIlG,CAAI,CAAE,CACR,OAAO,IAAI,CAACsF,OAAO,CAACY,GAAG,CAAClG,EAC1B,CAIAgD,IAAI,GAAG6C,CAAI,CAAE,CACX,GAAM,CAAC7F,EAAMY,EAAO6B,EAAO,CAAGoD,AAAgB,MAAXtD,MAAM,CAAS,CAACsD,CAAI,CAAC,EAAE,CAAC7F,IAAI,CAAE6F,CAAI,CAAC,EAAE,CAACjF,KAAK,CAAEiF,CAAI,CAAC,EAAE,CAAC,CAAGA,EACrFnD,EAAM,IAAI,CAAC4C,OAAO,CAGxB,OAFA5C,EAAIM,GAAG,CAAChD,EAAMqH,AAyBlB,SAASA,AAAgB5E,EAAS,CAAEzC,KAAM,GAAIY,MAAO,EAAG,CAAC,EAUvD,MAT8B,UAA1B,AAAoC,OAA7B6B,EAAOhB,OAAO,GACvBgB,EAAOhB,OAAO,CAAG,IAAIC,KAAKe,EAAOhB,QAAO,EAEtCgB,EAAOb,MAAM,EAAE,CACjBa,EAAOhB,OAAO,CAAG,IAAIC,KAAKA,KAAKiG,GAAG,GAAqB,IAAhBlF,EAAOb,MAAM,CAAG,GAErC,OAAhBa,EAAOjB,IAAI,EAA6B,KAAK,GAAG,CAAxBiB,EAAOjB,IAAI,IACrCiB,EAAOjB,IAAI,CAAG,GAAA,EAETiB,CACT,EApCkC,MAAEzC,QAAMY,EAAO,GAAG6B,CAAM,AAAC,IAkB3D,AAjBIkB,SAiBKA,AAAQ4D,CAAG,CAAEC,CAAO,EAE3B,IAAK,GAAM,EAAG5G,EAAM,GADpB4G,EAAQrB,MAAM,CAAC,cACSoB,GAAK,CAC3B,IAAME,EAAavG,EAAgBN,GACnC4G,EAAQE,MAAM,CAAC,aAAcD,EAC/B,CACF,EAvBY/E,EAAK,IAAI,CAAC6C,QAAQ,EACnB,IAAI,AACb,CAIAY,OAAO,GAAGN,CAAI,CAAE,CACd,GAAM,CAAC7F,EAAMsH,EAAQ,CAAsB,UAAnB,OAAOzB,CAAI,CAAC,EAAE,CAAgB,CAACA,CAAI,CAAC,EAAE,CAAC,CAAG,CAACA,CAAI,CAAC,EAAE,CAAC7F,IAAI,CAAE6F,CAAI,CAAC,EAAE,CAAC,CACzF,OAAO,IAAI,CAAC7C,GAAG,CAAC,CAAE,GAAGsE,CAAO,CAAEtH,OAAMY,MAAO,GAAIa,QAAyB,CAAhB,GAAoBC,KAAK,EAAG,EACtF,CACA,AAFuE,CAEtEgE,OAAOe,GAAG,CAAC,+BAA+B,EAAG,CAC5C,MAAO,CAAC,gBAAgB,EAAEC,KAAKC,SAAS,CAACvH,OAAOoE,WAAW,CAAC,IAAI,CAAC8B,OAAO,GAAA,CAAI,AAC9E,CACAsB,UAAW,CACT,MAAO,IAAI,IAAI,CAACtB,OAAO,CAACuB,MAAM,GAAG,CAACnE,GAAG,CAACxB,GAAiBsB,IAAI,CAAC,KAC9D,CACF,8GkCnTI,E3BHA,E2BgWM,EZjWH,MZqByC,IAWJ,EAQI,IAsCR,EAQG,EAYQ,IA7Ee,AAqF5B,AA1EoB,EA8CR,EAoCG,EA1Ea,EA8CV,AAqCP,CAjBH,CAsBF,E2B9HI,EpBFI,GPkGoB,KDpFpE,C4BZuD,CEoHvD,A7BUsD,EYhI/CoF,CZkHiE,AASR,EYxH9DA,ALH6D,CKArBA,EAmB5C,CAAC,GAhBa,EAHO,AAGR,CAHwC,EAG/B,CAAG,OAHO,CAM5BA,EAN+B,AAMrB,OAAD,EAAa,CAAG,YAIzBA,EAAU,OAAD,CAAY,CAAG,WAIxBA,EAAU,OAAD,EAAa,CAAG,YAGzBA,EAAU,KAAQ,CAAG,CAAZ,OACJA,wBZZX,IAAI,GACA,CADwC,EAc1C,GAAkB,CAAC,GAbF,IADE,AACH,CADwC,QACvB,CAAG,CADN,GAAG,uBAE/B,EAAe,GAAM,CAAG,QAAV,SACd,EAAe,IAAO,CAAG,OAAX,WACd,EAAe,YAAD,CAAiB,CAAG,2BAClC,EAAe,MAAS,CAAG,KAAb,eACd,EAAe,YAAD,kBAAkC,CAAG,4CACnD,EAAe,YAAD,IAAoB,CAAG,8BACrC,EAAe,YAAD,AAAgB,CAAG,0BACjC,EAAe,WAAc,CAAf,AAAkB,yBAChC,EAAe,YAAD,SAAyB,CAAG,mCAC1C,EAAe,YAAD,KAAqB,CAAG,+BACtC,EAAe,SAAY,CAAG,EAAhB,qBACP,GAEP,GACA,GAIF,GAAsB,CAAC,GAJF,QADE,AACH,WADc,GAAG,IACa,CAAG,4CACnD,EAAmB,cAAiB,CAAG,CAArB,+BAClB,EAAmB,eAAkB,CAAG,AAAtB,iCACX,GAEP,GACA,CAD6C,EAI/C,GAAuB,CAAC,GAHF,SADE,AACH,CAD6C,AAC/B,CAAG,SADH,GAAG,iBAEpC,EAAoB,QAAW,CAAG,QAAf,mBACZ,GAEP,GACA,GAMF,GAAkB,CAAC,GANF,IADE,AACH,WADc,EACO,CAAG,AADP,+BAE/B,EAAe,YAAD,iBAAiC,CAAG,2CAClD,EAAe,SAAY,CAAG,EAAhB,qBACd,EAAe,YAAD,WAA2B,CAAG,qCAC5C,EAAe,YAAD,AAAgB,CAAG,4BAC1B,GAEP,GACA,GAgCF,GAAsB,CAAC,GAhCF,QADE,AACH,GAAe,CAAG,OADJ,GAAG,mBAEnC,EAAmB,UAAa,CAAG,KAAjB,uBAClB,EAAmB,gBAAD,GAAuB,CAAG,qCAC5C,EAAmB,gBAAD,MAA0B,CAAG,wCAC/C,EAAmB,gBAAD,KAAyB,CAAG,uCAC9C,EAAmB,gBAAD,IAAwB,CAAG,sCAC7C,EAAmB,gBAAD,MAA0B,CAAG,wCAC/C,EAAmB,gBAAD,IAAwB,CAAG,sCAC7C,EAAmB,gBAAD,GAAuB,CAAG,2CAC5C,EAAmB,gBAAmB,AAApB,CAAuB,kCACzC,EAAmB,YAAe,CAAG,GAAnB,2BAClB,EAAmB,MAAS,CAAG,SAAb,eAClB,EAAmB,MAAS,CAAG,SAAb,eAClB,EAAmB,UAAa,CAAG,KAAjB,uBAClB,EAAmB,cAAiB,CAAG,CAArB,+BAClB,EAAmB,WAAc,CAAG,IAAlB,yBAClB,EAAmB,gBAAD,CAAqB,CAAG,mCAC1C,EAAmB,gBAAD,EAAsB,CAAG,oCAC3C,EAAmB,eAAkB,CAAnB,AAAsB,iCACxC,EAAmB,gBAAD,UAA8B,CAAG,4CACnD,EAAmB,gBAAD,CAAqB,CAAG,mCAC1C,EAAmB,YAAe,CAAG,GAAnB,2BAClB,EAAmB,WAAc,CAAG,IAAlB,yBAClB,EAAmB,gBAAD,CAAqB,CAAG,mCAC1C,EAAmB,SAAY,CAAG,MAAhB,qBAClB,EAAmB,aAAgB,CAAG,EAApB,6BAElB,EAAmB,KAAQ,CAAG,QAC9B,EADkB,AACC,UAAa,CAAG,KAAjB,QAClB,EAAmB,WAAc,CAAG,IAAlB,UAClB,EAAmB,aAAgB,CAAG,EAApB,cACX,GAEP,GACA,CADyC,EAG3C,GAAmB,CAAC,GAFF,KADE,AACH,CADyC,KAC1B,CAAG,IADJ,GAAG,mBAEzB,GAEP,GACA,GAMF,GAAc,CAAC,GAPA,AACH,AAAC,WADa,GAAG,IACK,CAAG,4BACnC,EAAW,QAAD,MAAkB,CAAG,wBAC/B,EAAW,QAAD,MAAkB,CAAG,wBAC/B,EAAW,QAAD,MAAkB,CAAG,wBAC/B,EAAW,QAAD,QAAoB,CAAG,0BAC1B,GAEP,GACA,GAUF,GAAiB,CAAC,GAVF,IADE,AACH,UAAkB,CADJ,AACO,GADJ,wBAE9B,EAAc,YAAD,UAA0B,CAAG,mCAC1C,EAAc,YAAD,CAAiB,CAAG,0BACjC,EAAc,KAAQ,CAAG,MAAZ,YACb,EAAc,YAAD,EAAkB,CAAG,2BAClC,EAAc,YAAD,UAA0B,CAAG,mCAC1C,EAAc,YAAD,GAAmB,CAAG,4BACnC,EAAc,YAAD,oBAAoC,CAAG,8CACpD,EAAc,YAAD,gBAAgC,CAAG,0CACzC,GAEP,GACA,GAEF,GAAyB,CAAC,GAFF,UAAa,CAAd,AAAiB,AADd,WAAW,GAAG,iBAE/B,GAEP,GACA,CADoC,EAGtC,GAAc,CAAC,GAHA,AACH,AAAC,CADmC,UAAtB,CACE,CAAG,CADF,qBAEpB,GAEP,GACA,GAEF,GAAY,CAAC,EAHA,AACH,CAAC,UADa,AACA,CAAG,EADA,gBAElB,GAEP,GACA,CADmD,EAGrD,GAA6B,CAAC,GAFF,UAAa,CAAG,IAAjB,AADG,CAAgD,UAArC,GAAG,iBAEnC,GAEP,GACA,GAEF,GAA2B,CAAC,GAFF,YAAe,CADb,AACH,AAAmB,WADL,GAAG,qBAEjC,GAEP,GACA,CADyC,EAI3C,GAAmB,CAAC,GAHF,KAAD,AADG,CAAsC,CAC9B,CAAG,QADA,GAAG,WAEhC,EAAgB,aAAD,AAAiB,CAAG,4BAC5B,GAEP,GACA,GAGF,GAAuB,CAAC,GAHF,SADE,AACH,OAAoB,CAAG,GADT,GAAG,6BAEpC,EAAoB,gBAAmB,CAApB,AAAuB,mCACnC,GAEP,GACA,GAEF,GAAkB,CAAC,GAFF,IADE,AACH,GAAW,CAAG,OADA,GAAG,WAExB,GAGJ,IAAM,EAA2B,IAAI,IAAI,CAC5C,qBACA,2BACA,4BACA,wBACA,kBACA,0BACA,iCACA,wBACA,kBACA,mCACA,mCACA,sBACA,6BACA,2BACA,mCACA,mCACA,qCACA,oCACA,uCACA,+BACA,wCACH,EAGY,EAAmB,IAAI,IAAI,CACpC,oCACA,qCACA,wCACH,uDuB/JkC,OAAO,GAAG,CAAC,gC9BHG,AAAI,MAAM,8EAsB3D,I+BpBMA,E/BoBA,A+BpB+B,QAAQ,GAAG,CAAC,mB/BoBZ,OAAO,E+BpBiC,CAG7E,SAAS,G/BiBkD,C+BX3D,CARgC,OAAO,GAAG,CAAC,E/BmB+B,WAAW,gB+BAjF,C/BAkG,E+BA9F,CACA,EAAA,EAAA,CAAA,CAAA,KACJ,CAAE,MAAO,EAAK,CACV,EAAA,EAAA,CAAA,CAAA,MACJ,CAEJ,GAAM,SAAE,CAAO,aAAE,CAAW,OAAE,CAAK,gBAAE,CAAc,UAAE,CAAQ,cAAE,CAAY,CAAE,CAAG,CACzE,OAAM,WAAqB,MAC9B,YAAY,CAAM,CAAE,CAAM,CAAC,CACvB,KAAK,GAAI,IAAI,CAAC,MAAM,CAAG,EAAQ,IAAI,CAAC,MAAM,CAAG,CACjD,CACJ,CAKA,IAAM,GAAqB,CAAC,EAAM,EAAO,KAHhB,AAIjB,UAJA,OAAO,GAAsB,AAAU,MAAM,IAC1C,AAGY,GAJqC,UAChC,IAGK,EAAM,MAAM,CACrC,CADuC,CAClC,YAAY,CAAC,eAAe,IAE7B,IACA,EAAK,CADE,cACa,CAAC,GACrB,EAAK,YAAY,CAAC,aAAc,EAAM,IAAI,GAE9C,EAAK,SAAS,CAAC,CACX,KAAM,EAAe,KAAK,CAC1B,QAAkB,MAAT,EAAgB,KAAK,EAAI,EAAM,OAAO,AACnD,IAEJ,EAAK,GAAG,CAAC,EACb,EACuF,GAA0B,IAAI,IAC/G,GAAgB,EAAI,gBAAgB,CAAC,mBACvC,GAAa,EAEX,GAAwB,CAC1B,IAAK,CAAO,CAAE,CAAG,CAAE,CAAK,EACpB,EAAQ,IAAI,CAAC,KACT,QACA,CACJ,EACJ,CACJ,EAgSM,MACa,IAAI,AAhSvB,GA+RkB,CAAC,EA/Rb,EAKA,mBAAoB,CAClB,OAAO,EAAM,SAAS,CAAC,UAAW,SACtC,CACA,wBAAyB,CACrB,IAAI,EAAyC,EAC7C,IAAM,EAAa,EAAM,OAAO,CAAC,EAAQ,MAAM,IAC/C,GAAkB,MAAd,EAAqB,KAAK,EAAI,EAAW,WAAW,GACpD,CADwD,MACjD,EAEX,IAAM,EAAiB,EAAM,iBAAiB,SAC9C,EAAM,EAAF,CAAC,aAAkB,CAAA,CAAc,EAG9B,CAHiC,AAGF,MAA9B,CAAqC,CAAtB,IAA2B,OAAhB,EAAuG,AAAnF,OAAC,AAAyF,EAA3D,EAAe,CAAiD,UAAtC,CAAC,IAAI,CAAC,EAAA,CAAe,EAAqB,AAAuF,OAAtF,EAA0C,EAA4B,WAAA,AAAW,EAAY,KAAK,EAAI,EAAwC,IAAI,IAAM,oBACtT,CACA,YAAa,CACT,OAAO,CACX,CACA,yBAA0B,CACtB,IAAM,EAAgB,EAAQ,MAAM,GAC9B,EAAU,EAAE,CAElB,OADA,EAAY,MAAM,CAAC,EAAe,EAAS,IACpC,CACX,CACA,oBAAqB,CACjB,IAAM,EAAoB,IACpB,EAAuC,MAArB,EAA4B,KAAK,EAAI,EAAkB,kBAAkB,UACjG,AAAI,IAAoB,AAAqB,QAAO,KAAK,EAAlC,AAAsC,EAAkB,2BAA2B,CAAC,EAAA,CAAgB,CAChH,EADmH,AAG3G,EAAM,OAAO,CAAC,EAAQ,MAAM,GAKnD,CAME,uBAAuB,CAAE,CAAE,QACzB,AAAI,AAAC,GAAiC,IAAI,CAAC,sBAAsB,EAA5B,CAG9B,CAH8D,CAGtD,IAAI,CAAC,EAAc,GAFvB,GAGf,CACA,sBAAsB,CAAO,CAAE,CAAE,CAAE,CAAM,CAAE,GAAQ,CAAK,CAAE,CACtD,IAAM,EAAgB,EAAQ,MAAM,GACpC,GAAI,CAAC,GAAgC,CAAC,IAAI,CAAC,sBAAsB,IAAM,CAAC,EAAM,cAAc,CAAC,GACzF,OAAO,IAEX,EAH6G,CAGzG,EAAO,CACP,IAAM,EAAgB,EAAY,OAAO,CAAC,EAAc,EAAS,GACjE,GAAI,EAAM,cAAc,CAAC,GACrB,OAAO,EAAQ,IADsB,AAClB,CAAC,EAAe,GAIvC,IAAM,EAAgB,EAAY,OAAO,CAAC,EAAe,EAAS,GAClE,OAAO,EAAQ,IAAI,CAAC,EAAe,EACvC,CACA,GAAI,EAAM,cAAc,CAAC,GAErB,OAAO,IAEX,EAJyC,EAInC,EAAgB,EAAY,OAAO,CAAC,EAAe,EAAS,GAClE,OAAO,EAAQ,IAAI,CAAC,EAAe,EACvC,CACA,MAAM,GAAG,CAAI,CAAE,CACX,GAAM,CAAC,EAAM,EAAa,EAAU,CAAG,EACjC,EAAiB,EAAQ,GAAiC,IAAI,CAAC,sBAAsB,GACrF,EAAoB,IACpB,EAA4B,CAAsB,MAArB,EAA4B,KAAK,EAAI,EAAkB,2BAA2B,EAAA,CAAE,GAAK,EAC5H,GAAI,CAAC,GAAkB,CAAC,EACpB,MAA8B,YAAvB,OADwC,AACjC,EAA6B,IAAgB,IAG/D,GAAM,IAAE,CAAE,SAAE,CAAO,CAAE,CAA0B,YAAvB,OAAO,EAA6B,CACxD,GAAI,EACJ,QAAS,CAAC,CACd,EAAI,CACA,GAAI,EACJ,QAAS,CACL,GAAG,CAAW,AAClB,CACJ,EACM,EAAW,EAAQ,QAAQ,EAAI,EAC/B,EAAa,EAAQ,UAAU,EAAI,IAAI,CAAC,kBAAkB,GAC1D,EAAqB,IAAoC,MAArB,EAA4B,EAA7B,GAAkC,EAAI,EAAkB,2BAA2B,CAAC,EAAA,CAAW,CAAI,OAAa,EACnJ,EAAqB,CAAC,IAAuB,EAAyB,GAAG,CAAC,IAA2C,MAAlC,EAAvC,MAA+C,GAAG,CAAC,iBAAiB,AAAK,CAAG,CAE9H,GAAI,CAAC,CADmB,IAA6C,MAArB,EAA4B,KAAK,EAAI,EAAkB,CAAzD,CAAC,sBAAgF,EAAA,CAAE,AAAU,GACnH,EAAQ,AADsG,QAC9F,CACpC,CADsC,MAC/B,IAGX,IAAI,EAAc,EAAqB,EAAQ,MAAM,GAAK,IAAI,CAAC,cAAc,CAAC,EAC1E,CAAC,IACD,EAAc,CAAY,MAAX,AADD,EACmB,KAAK,EAAI,EAAQ,MAAM,EAAA,CAAE,EAAK,CAAA,EAMnE,IAAM,EAAqB,EAAY,QAAQ,CAAC,IAC1C,EAA2C,UAA9B,OAAO,GAAmC,CAAC,GAAwB,GAAG,CAAC,GACpF,EAxHQ,KA+Hd,EAPe,KACf,EAAQ,UAAU,CAAG,CACjB,qBAAsB,SACtB,iBAAkB,EAClB,iBAAkB,EAClB,GAAG,EAAQ,UAAU,AACzB,EACO,EAAQ,IAAI,CAAC,EAAY,QAAQ,CAAC,GAAe,GAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAU,EAAS,EAAa,GAAkB,EAAoB,EAA2B,EAAoB,AAAC,QACtM,EACA,GAAgC,GAAQ,EAAiB,GAAG,CAAC,KAC7D,EADoE,AACxD,gBAAiB,YAAc,YAAa,YAAc,WAAW,WAAW,CAAC,GAAG,QAAK,CAAA,EAEzG,IAAI,GAAY,EACV,EAAY,MACV,IACJ,EAAY,GACZ,EAFe,CAES,MAAM,CAAC,GAC3B,GACA,QADW,IACC,OAAO,CAAC,CAAA,EAAG,EAA6B,MAAM,EAAE,CAAC,EAAK,KAAK,CAAC,KAAK,GAAG,IAAM,EAAA,CAAE,CAAE,OAAO,CAAC,SAAU,AAAC,GAAQ,IAAM,EAAM,WAAW,IAAA,CAAK,CAAE,CAC/I,MAAO,EACP,IAAK,YAAY,GAAG,EACxB,GAER,EAIA,GAHI,GACA,GAAwB,GAAG,CAAC,EADhB,AACwB,IAAI,IAAI,OAAO,OAAO,CAAC,EAAQ,UAAU,EAAI,CAAC,KAElF,EAAG,MAAM,CAAG,EACZ,CADe,EACX,CACA,OAAO,EAAG,EAAM,AAAC,IACT,EACA,GAAmB,AADd,EACoB,EAAK,EAAQ,OAAO,EAE7C,EAAK,GAAG,CAAC,EAAQ,OAAO,CAEhC,EACJ,CAAE,MAAO,EAAK,CAEV,MADA,GAAmB,EAAM,EAAK,EAAQ,OAAO,EACvC,CACV,QAAS,CACL,GACJ,CAEJ,GAAI,CACA,IAAM,EAAS,EAAG,GAClB,G4BvNT,AAAY,C5BuNC,S4BvN0B,UAAnB,OAAO,GAAwB,S5BuN3B,C4BvNqC,EAAmC,M5BuN/D,M4BvNuC,OAAO,EAAQ,IAAI,C5ByN9E,OAAO,EAAO,IAAI,CAAC,AAAC,IAChB,EAAK,GAAG,CAAC,EAAQ,OAAO,EAGjB,IACR,KAAK,CAAC,AAAC,IAEN,MADA,GAAmB,EAAM,EAAK,EAAQ,OAAO,EACvC,CACV,GAAG,OAAO,CAAC,GAKf,OAHI,EAAK,GAAG,CAAC,EAAQ,OAAO,EACxB,IAEG,CACX,CAAE,MAAO,EAAK,CAGV,MAFA,GAAmB,EAAM,EAAK,EAAQ,OAAO,EAC7C,IACM,CACV,CACJ,GACR,CACA,kBAAkB,CAAQ,CAAE,CAAO,CAAE,CAAa,CAAE,CAAc,CAAE,CAAyB,CAAE,CAAkB,CAAE,CAAE,CAAE,CACnH,GAAI,EACA,OAAO,IAAI,CAAC,EADI,eACa,GAAG,eAAe,CAAC,EAAU,EAAS,AAAC,GAAO,EAAG,EAA4B,IAAI,CAAC,wBAAwB,CAAC,EAAU,EAAS,EAAe,EAAM,GAAsB,IAE1M,IAAM,EAAO,IAAI,CAAC,wBAAwB,CAAC,EAAU,EAAS,OAAe,EAAW,GAClF,EAAoB,IAC1B,OAAO,EAAkB,aAAa,CAAC,EAAM,IAAI,EAAkB,2BAA2B,CAAC,GAAQ,EAAG,GAAQ,EAAQ,IAAI,CAAC,EAAM,OAAO,CAAC,EAAQ,MAAM,GAAI,GAAO,OAAI,EAAW,GACzL,CACA,yBAAyB,CAAI,CAAE,CAAO,CAAE,CAAa,CAAE,CAAY,CAAE,CAAkB,CAAE,CACrF,IAAM,EAAqB,AAAD,CAAuB,QAAO,KAAK,EAAI,EAAmB,WAAW,EAAA,CAAE,EAAK,EAAM,cAAc,CAAC,GACrH,EAAsC,MAAhB,EAAuB,KAAK,EAAI,EAAa,WAAW,GACpF,OAAO,IAAuB,eAAe,CAAC,MAC1C,EACA,WAAY,EAAQ,UAAU,CAC9B,MAAO,EAAQ,KAAK,CACpB,UAAW,EAAQ,SAAS,cAC5B,EACA,QAAS,AAAC,CAAuB,QAAO,KAAK,EAAI,EAAoB,OAAA,AAAO,GAAM,CAAqB,CAAtB,OAA6B,KAAK,EAAI,EAAkB,OAAA,AAAO,EAChJ,OAA+B,MAAvB,EAA8B,KAAK,EAAI,EAAoB,MAAM,CACzE,aAAc,AAAqB,QAAO,KAAK,EAAI,EAAkB,MAAM,CAC3E,qBAAsB,AAAuB,UACjD,EACJ,CACA,KAAK,GAAG,CAAI,CAAE,CACV,IAAM,EAAS,IAAI,CACb,CAAC,EAAM,EAAS,EAAG,CAAG,AAAgB,MAAX,MAAM,CAAS,EAAO,CACnD,CAAI,CAAC,EAAE,CACP,CAAC,EACD,CAAI,CAAC,EAAE,CACV,QACD,AAAI,AAAC,EAAyB,GAAG,CAAC,IAA2C,MAAlC,CAAyC,OAAjC,GAAG,CAAC,iBAAiB,CAGjE,UAH6G,CAIhH,IAAI,EAAa,EACS,YAAtB,OAAO,GAA2C,YAAd,AAA0B,OAAnB,IAC3C,EAAa,EAAW,KAAK,CAAC,IAAI,CAAE,UAAA,EAExC,IAAM,EAAY,UAAU,MAAM,CAAG,EAC/B,EAAK,SAAS,CAAC,EAAU,CAC/B,GAAkB,YAAd,OAAO,EAUP,OAAO,EAAO,KAAK,CAAC,EAAM,EAAY,IAAI,EAAG,KAAK,CAAC,IAAI,CAAE,WAV/B,EAC1B,IAAM,EAAe,EAAO,UAAU,GAAG,IAAI,CAAC,EAAQ,MAAM,GAAI,GAChE,OAAO,EAAO,KAAK,CAAC,EAAM,EAAY,CAAC,EAAO,KAC1C,SAAS,CAAC,EAAU,CAAG,SAAS,CAAG,EAE/B,OADQ,MAAR,CAAe,EAAS,EAAK,CAAT,EACb,EAAa,KAAK,CAAC,IAAI,CAAE,UACpC,EACO,EAAG,KAAK,CAAC,IAAI,CAAE,YAE9B,CAGJ,EArBW,CAsBf,CACA,EALe,QAKL,GAAG,CAAI,CAAE,CACf,GAAM,CAAC,EAAM,EAAc,CAAG,EACxB,EAAU,EAAgB,CAC5B,GAAG,CAAa,CAChB,WAAY,CACR,qBAAsB,SACtB,GAAG,EAAc,UAAU,AAC/B,CACJ,EAAI,CACA,WAAY,CACR,qBAAsB,QAC1B,CACJ,EACM,EAAoB,IACpB,EAAa,EAAQ,UAAU,EAAI,IAAI,CAAC,kBAAkB,GAC1D,EAAqB,GAAe,CAAqB,QAAO,EAA7B,GAAkC,EAAI,EAAkB,2BAA2B,CAAC,EAAA,CAAW,CAAI,OAAa,EACnJ,EAAgB,CAAC,OAAqB,EAAY,IAAI,CAAC,cAAc,CAAC,EAAA,CAAW,EAAK,EAAQ,MAAM,GAE1G,GAAI,CAAC,CADmD,MAArB,EAA4B,KAAK,EAAI,EAAkB,SAC1D,kBADqF,EAAA,CAAE,CAEnH,IAFwH,GAEjH,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,EAAM,EAAS,GAE7D,IAAM,EAAe,CAAC,GAAsB,IAAI,CAAC,sBAAsB,GAAK,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,EAAM,EAAS,QAAiB,EAC/I,OAAO,IAAI,CAAC,wBAAwB,CAAC,EAAM,EAAS,EAAe,EAAc,EACrF,CACA,eAAe,CAAU,CAAE,CAEvB,OADoB,AACb,EAD0B,EAAM,OAAO,CAAC,EAAQ,MAAM,GAAI,QAAc,CAEnF,CACA,uBAAwB,CACpB,IAAM,EAAS,EAAQ,MAAM,GAAG,QAAQ,CAAC,IACzC,OAAO,GAAwB,GAAG,CAAC,EACvC,CACA,qBAAqB,CAAG,CAAE,CAAK,CAAE,CAC7B,IAAM,EAAS,EAAQ,MAAM,GAAG,QAAQ,CAAC,IACnC,EAAa,GAAwB,GAAG,CAAC,GAC3C,GAAc,CAAC,EAAW,GAAG,CAAC,IAC9B,EADoC,AACzB,GAAG,CAAC,EAAK,EAS5B,CACA,SAAS,CAAI,CAAE,CAAE,CAAE,CACf,IAAM,EAAW,UACjB,CAAgB,MAAZ,EAAmB,KAAK,EAAI,EAAS,oBAAoB,CAAC,EAAA,EACnD,CAD0D,CACjD,aAAa,CAAC,EAAM,IAAI,EAAS,2BAA2B,CAAC,GAAQ,IAAO,EAAQ,IAAI,CAAC,EAAM,OAAO,CAAC,EAAQ,MAAM,GAAI,GAAO,IAE7I,EAAQ,IAAI,CAAC,EAAM,OAAO,CAAC,EAAQ,MAAM,GAAI,GAAO,EAC/D,CACJ,EAGW,IAAI,yClB/QX,IAAM,GAAuB,CAG3B,OAAQ,SAIR,sBAAuB,MAGvB,oBAAqB,MAGrB,cAAe,iBAGf,QAAS,WAGT,QAAS,WAGT,WAAY,aAGZ,WAAY,aAGZ,UAAW,aAGX,gBAAiB,oBAGjB,gBAAiB,oBAGjB,aAAc,iBAGd,aAAc,gBACpB,EAKY,GAAqB,qBAAqB,CAC1C,GAAqB,aAAa,CAGlC,GAAqB,qBAAqB,CAC1C,GAAqB,aAAa,CAClC,GAAqB,UAAU,CAC/B,GAAqB,UAAU,CAI/B,GAAqB,OAAO,CAC5B,GAAqB,OAAO,CAG5B,GAAqB,mBAAmB,CACxC,GAAqB,eAAe,CAGpC,GAAqB,qBAAqB,CAC1C,GAAqB,aAAa,CAClC,GAAqB,mBAAmB,CACxC,GAAqB,eAAe,CACpC,GAAqB,MAAM,CAC3B,GAAqB,UAAU,CAC/B,GAAqB,UAAU,CAI/B,GAAqB,qBAAqB,CAC1C,GAAqB,mBAAmB,CACxC,GAAqB,eAAe,CACpC,GAAqB,aAAa,0BAhKN,kDAeF,gDZKtC,IAAA,GAAA,EAAA,CAAA,CAAA,MCpBO,OAAM,WAA2B,MACpC,YAAY,CAAW,CAAC,CACpB,KAAKA,CAAC,CAAC,sBAAsB,EAAE,EAAA,CAAa,EAAG,IAAI,CAAC,WAAW,CAAG,EAAa,IAAI,CAAC,MAAM,CAHvE,EAG0E,oBACjG,CACJ,CCJO,MAAM,WAA8B,MACvC,YAAY,GAAG,CAAI,CAAC,CAChB,KAAK,IAAI,GAAO,IAAI,CAAC,IAAI,CAHD,EAGI,uBAChC,CACJ,CFmBA,IAAA,GAAA,EAAA,CAAA,CAAA,McxBO,OAAM,WAAuB,MAChC,YAAY,CAAO,CAAE,CAAO,CAAC,CACzB,KAAK,CAAC,CAAC,WAAW,EAAE,EAAQ,QAAQ,CAAC,KAAO,EAAU,EAAU,IAAI,0BAA0B,CAAC,CAAE,GACjG,IAAI,CAAC,IAAI,CAAG,gBAChB,CACJ,CELO,SAAS,KAIZ,IAFI,EACA,EACE,EAAU,IAAI,QAAQ,CAAC,EAAK,KAC9B,EAAU,EACV,EAAS,CACb,GACA,MAAO,CACH,QAAS,EACT,OAAQ,UACR,CACJ,CACJ,CiBXO,IAAI,IACP,GAgBF,CAAC,EAhBY,CAAC,EAAY,CADH,KACYA,CAAG,EAAb,AAAe,CAAG,EADT,GAAG,IAGnC,CAAW,CAAC,EAAY,SAAD,EAAe,CAAG,GAAG,CAAG,cAC+B,CAAW,CAAC,EAAY,SAAD,iBAA8B,CAAG,GAAG,CAAG,6BAC5I,CAAW,CAAC,EAAY,SAAD,KAAkB,CAAG,GAAG,CAAG,iBAClD,CAAW,CAAC,EAAY,SAAD,OAAoB,CAAG,GAAG,CAAG,mBACpD,CAAW,CAAC,EAAY,MAAS,CAAG,EAAb,CAAgB,CAAG,SAE1C,CAAW,CAAC,EAAY,SAAD,GAAgBA,CAAG,GAAG,CAAG,eAC+B,CAAW,CAAC,EAAY,SAAD,kBAA+B,CAAG,GAAG,CAAG,8BAC9I,CAAW,CAAC,EAAY,SAAD,MAAmB,CAAG,GAAG,CAAG,kBACnD,CAAW,CAAC,EAAY,SAAD,QAAqB,CAAG,GAAG,CAAG,oBAErD,CAAW,CAAC,EAAY,OAAU,CAAG,CAAd,EAAiB,CAAG,UAC3C,CAAW,CAAC,EAAY,SAAD,AAAa,CAAG,GAAG,CAAG,YACtC,GQdX,GAAA,EAAA,CAAA,CAAA,OAEA,EAAA,CAAA,CAAA,MAQA,OAAM,WAAqC,MACvC,YAAY,CAAK,CAAE,CAAU,CAAC,CAC1B,KAAK,CAAC,CAAC,qBAAqB,EAAE,EAAW,qGAAqG,EAAE,EAAW,8KAA8K,EAAE,EAAM,EAAE,CAAC,EAAG,IAAI,CAAC,KAAK,CAAG,EAAO,IAAI,CAAC,UAAU,CAAG,EAAY,IAAI,CAAC,MAAM,CAH1X,EAG6X,yBAC3Z,CACJ,CAaA,IAAM,GAAyB,IAAI,QAcxB,SAAS,GAA0B,CAAM,CAAE,CAAK,CAAE,CAAU,MAoTlC,EAnTE,EAmTM,EAnTE,AAmTJ,GAAO,CAnTC,GAA6B,EAAO,GAoTnF,GAAI,EAAO,OAAO,CACd,CADgB,MACT,QAAQ,MAAM,CAAC,EACnB,EACH,IAAM,EAAiB,IAAI,QAAQ,CAAC,EAAG,KACnC,IAAM,EAAiB,EAAO,IAAI,CAAC,KAAM,GACrC,EAAmB,GAAuB,GAAG,CAAC,GAClD,GAAI,EACA,EAAiB,IAAI,CAAC,OACnB,CACH,CAHkB,GAGZ,EAAY,CACd,EACH,CACD,GAAuB,GAAG,CAAC,EAAQ,GACnC,EAAO,gBAAgB,CAAC,QAAS,KAC7B,IAAI,IAAI,EAAI,EAAG,EAAI,EAAU,MAAM,CAAE,IAAI,AACrC,CAAS,CAAC,EAAE,EAEpB,EAAG,CACC,MAAM,CACV,EACJ,CACJ,GAKA,OADA,EAAe,KAAK,CAAC,IACd,CACX,CA9UJ,CAgVA,SAAS,KAAgB,CAlED,QAAQ,GAAG,CAAC,+BAA+B,CAI7B,EAJgC,CAAC,KAIzB,GAAG,CAAC,GAJiC,4BAIF,AAwGjF,GAxGoF,IAwG9E,WAAuB,SACzB,CAAM,AAAC,AAAP,AAGA,WAAW,CAAC,OAAO,OAAO,CAAC,EAAG,CAC1B,OAAO,OACX,CACA,OAAO,KAAK,CAAO,CAAE,CAAK,CAAE,CAExB,IAAM,EAAU,IAAI,GAAe,EAAQ,IAAI,CAAC,IAAI,CAAC,IAOrD,OANA,GAAQ,CAAA,AAAM,CAAG,EAKjB,QAAQ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAS,EAAW,IACzC,CACX,CACA,KAAK,CAAW,CAAE,CAAU,CAAE,CAC1B,IAAM,EAAQ,IAAI,EAAC,CAAM,AAAN,CACnB,GAAI,EACA,GAAI,CACA,CAFG,EAGP,CAAE,MAAO,EAAK,CAEV,QAAQ,KAAK,CAAC,EAClB,CAEJ,OAAO,QAAQ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,EAAa,EAC1D,CACA,YAAY,GAAG,CAAI,CAAC,CAChB,KAAK,IAAI,GAAO,IAAI,EAAC,CAAA,AAAM,CAAG,IAClC,CACJ,CzCzYW,SAAS,GAA0B,CAAK,CAAE,CAAa,CAAE,CAAU,EAC1E,GAAI,EACA,OAAO,EAAc,IADN,AACU,EACrB,IAAK,QACL,IAAK,iBAML,IAAK,gBADD,MAUR,CAKJ,IAAI,EAAM,YAAY,GAAI,EAAM,WAAW,EAAE,AAC7C,GAAI,EAAM,kBAAkB,CACxB,CAD0B,KACpB,IAAI,GAAsB,CAAC,MAAM,EAAE,EAAM,KAAK,CAAC,8EAA8E,EAAE,EAAW,4HAA4H,CAAC,EAEjR,GAAI,GAES,YAFM,SACR,EAAc,IAAI,EAEjB,EAAc,UAAU,CAAG,EAG3B,IAAM,EAAM,IAAI,GAAmB,CAAC,MAAM,EAAE,EAAM,KAAK,CAAC,iDAAiD,EAAE,EAAW,2EAA2E,CAAC,CAGlM,OAFA,EAAM,uBAAuB,CAAG,EAChC,EAAM,iBAAiB,CAAG,EAAI,KAAK,CAC7B,GAUtB,CyC4ViB,GAAY,YAAY,CAarB,GAAY,0BAA0B,CACrC,GAAY,2BAA2B,CAE5C,GAAY,cAAc,CACzB,GAAY,eAAe,CAIpB,GAAY,eAAe,CzCvJe,AAAI,OAAO,CAAC,uDAAuD,EAAE,oBAAoB,yCAAyC,EAAE,0BAA0B,cAAc,CAAC,gEACtN,AAAI,OAAO,CAAC,UAAU,EAAE,uBAAuB,QAAQ,CAAC,GACpD,AAAJ,OAAW,CAAC,UAAU,EAAE,uBAAuB,QAAQ,CAAC,GAC1D,AAAI,OAAO,CAAC,UAAU,EAAE,qBAAqB,QAAQ,CAAC,GACnC,AAAI,OAAO,CAAC,UAAU,EAAE,iCAAiC,QAAQ,CAAC,GACpF,AAAI,OAAO,CAAC,UAAU,EAAE,2BAA2B,MAAM,EAAE,EG/UnF,IAAM,GAAO,KAAK,EAqBP,SAAS,EH0T0F,CG1T5E,CAAQ,EAGtC,GAAI,CAAC,AHuT6G,CAAC,CGvTrG,IAAI,CACd,CADgB,KACT,CACH,EACA,EACH,CAEL,GAAM,CAAC,EAAO,EAAM,CAAG,EAAS,IAAI,CAAC,GAAG,GAClC,EAAU,IAAI,SAAS,EAAO,CAChC,OAAQ,EAAS,MAAM,CACvB,WAAY,EAAS,UAAU,CAC/B,QAAS,EAAS,OAAO,AAC7B,GACA,OAAO,cAAc,CAAC,EAAS,MAAO,CAClC,MAAO,EAAS,GAAG,CAEnB,cAAc,EACd,YAAY,EACZ,UAAU,CACd,GACA,IAAM,EAAU,IAAI,SAAS,EAAO,CAChC,OAAQ,EAAS,MAAM,CACvB,WAAY,EAAS,UAAU,CAC/B,QAAS,EAAS,OAAO,AAC7B,GAwBA,OAvBA,OAAO,cAAc,CAAC,EAAS,MAAO,CAClC,MAAO,EAAS,GAAG,CAEnB,cAAc,EACd,YAAY,EACZ,UAAU,CACd,GASI,IACI,EAAQ,IADF,AACM,EAAE,AACd,EAAS,QAAQ,CAAC,EAAS,IAAI,QAAQ,EAAQ,IAAI,GAEnD,EAAQ,IAAI,EAAE,AACd,EAAS,QAAQ,CAAC,EAAS,IAAI,QAAQ,EAAQ,IAAI,IAGpD,CACH,EACA,EAER,AADK,CAxED,WAAW,oBAAoB,EAAE,CACjC,EAAW,IAAI,qBAAsB,AAAD,IAChC,IAAM,EAAS,EAAQ,KAAK,GACxB,GAAU,CAAC,EAAO,MAAM,EAAE,AAC1B,EAAO,MAAM,CAAC,8CAA8C,IAAI,CAAC,GAEzE,EAAA,EkDCJ,IAAM,GAA6B,IAAI,IAAI,CACvC,cACA,aACH,ExCZM,IAAIA,IACP,GAOF,CAAC,GAPiB,OADS,CACV,AAAY,CAAG,SADM,EAEpC,CAFuC,CAEvB,SAAY,CAAG,GAAhB,SACf,EAAgB,KAAQ,CAAG,OAAZ,CACf,EAAgB,KAAQ,CAAG,OAAZ,CACf,EAAgB,QAAW,CAAG,IAAf,OACf,EAAgB,KAAQ,CAAG,OAAZ,CACR,GAEA,IACP,CADqD,EAOvD,CAAC,GANsB,QAAW,CAAG,GADL,CACV,CADqD,MAEzE,EAAqB,CAFoB,GAAG,KAEX,CAAG,QAAhB,IACpB,EAAqB,KAAQ,CAAG,QAChC,EAAqB,EADD,GACS,CAAG,QAChC,EAAqB,EADD,GACS,CAAG,QACzB,IADa,2BTXpB,OAAM,GACN,YAAY,CAAG,CAAE,CAAI,CAAE,CAAI,CAAC,CACxB,IAAI,CAAC,IAAI,CAAG,KACZ,IAAI,CAAC,IAAI,CAAG,KACZ,IAAI,CAAC,GAAG,CAAGA,EACX,IAAI,CAAC,IAAI,CAAG,EACZ,IAAI,CAAC,IAAI,CAAG,CAChB,CACJ,CAII,MAAM,GACN,aAAa,CACT,IAAI,CAAC,IAAI,CAAG,KACZ,IAAI,CAAC,IAAI,CAAG,IAChB,CACJ,CAkBW,MAAM,GACb,YAAY,CAAO,CAAE,CAAa,CAAE,CAAO,CAAC,CACxC,IAAI,CAAC,KAAK,CAAG,IAAI,IACjB,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,OAAO,CAAG,EACf,IAAI,CAAC,aAAa,CAAG,EACrB,IAAI,CAAC,OAAO,CAAG,EAGf,IAAI,CAAC,IAAI,CAAG,IAAI,GAChB,IAAI,CAAC,IAAI,CAAG,IAAI,GAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAG,IAAI,CAAC,IAAI,CAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAG,IAAI,CAAC,IAAI,AAC9B,CAKE,UAAU,CAAI,CAAE,CACd,EAAK,IAAI,CAAG,IAAI,CAAC,IAAI,CACrB,EAAK,IAAI,CAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAE1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAG,EACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAG,CACrB,CAKE,WAAW,CAAI,CAAE,CAEf,EAAK,IAAI,CAAC,IAAI,CAAG,EAAK,IAAI,CAC1B,EAAK,IAAI,CAAC,IAAI,CAAG,EAAK,IAAI,AAC9B,CAIE,WAAW,CAAI,CAAE,CACf,IAAI,CAAC,UAAU,CAAC,GAChB,IAAI,CAAC,SAAS,CAAC,EACnB,CAKE,YAAa,CACX,IAAM,EAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAG/B,OADA,IAAI,CAAC,UAAU,CAAC,GACT,CACX,CASE,IAAI,CAAG,CAAE,CAAK,CAAE,CACd,IAAM,EAAO,CAAuB,MAAtB,IAAI,CAAC,aAAa,CAAW,KAAK,EAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAE,EAAO,EAAA,CAAI,EAAK,EAClG,GAAI,GAAQ,EACR,CADW,KACL,AAAI,MAAM,CAAC,iCAAiC,EAAE,EAAK,iGAAwB,CAAC,EAEtF,CAFyF,CAAC,CAEtF,EAAO,IAAI,CAAC,OAAO,CAEnB,CAFqB,MACrB,QAAQ,IAAI,CAAC,qCACN,AAJwJ,CAAC,CAMpK,IAAM,EAAW,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAChC,GAAI,EAEA,EAAS,IAAI,CAAG,CAFN,CAGV,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,SAAS,CAAG,EAAS,IAAI,CAAG,EAClD,EAAS,IAAI,CAAG,EAChB,IAAI,CAAC,UAAU,CAAC,OACb,CAEH,IAAM,EAAU,IAAI,GAAQ,EAAK,EAAO,GACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAK,GACpB,IAAI,CAAC,SAAS,CAAC,GACf,IAAI,CAAC,SAAS,EAAI,CACtB,CAEA,KAAM,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,OAAO,EAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAG,GAAE,CACvD,IAAM,EAAO,IAAI,CAAC,UAAU,GAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAK,GAAG,EAC1B,IAAI,CAAC,SAAS,EAAI,EAAK,IAAI,CACX,MAAhB,CAAuB,GAAnB,CAAC,CAAuB,MAAhB,EAAoB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAE,EAAK,GAAG,CAAE,EAAK,IAAI,CAC/E,CACA,MAAO,EACX,CAME,IAAI,CAAG,CAAE,CACP,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAC1B,CAME,IAAI,CAAG,CAAE,CACP,IAAM,EAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAC5B,GAAK,CAAD,CAGJ,IAHW,GAEX,IAFkB,AAEd,CAAC,UAAU,CAAC,GACT,EAAK,IAAI,AACpB,CAIE,CAAC,CAAC,OAAO,QAAQ,CAAC,EAAG,CACnB,IAAI,EAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAC5B,KAAM,GAAW,IAAY,IAAI,CAAC,IAAI,EAAC,CAEnC,IAAM,EAAO,CACb,MAAM,CACF,EAAK,GAAG,CACR,EAAK,IAAI,CACZ,CACD,EAAU,EAAQ,IAAI,AAC1B,CACJ,CAUE,OAAO,CAAG,CAAE,CACV,IAAM,EAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GACvB,IACL,EADW,EACP,CAAC,UAAU,CAAC,GAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAClB,IAAI,CAAC,SAAS,EAAI,EAAK,IAAI,CAC/B,CAGE,IAAI,MAAO,CACT,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,AAC1B,CAIE,IAAI,aAAc,CAChB,OAAO,IAAI,CAAC,SAAS,AACzB,CACJ,CChLA,GAAM,KAAE,EAAG,QAAE,EAAM,CAAE,CAAG,CAA+B,AAA9B,OAAC,EAAc,UAAA,CAAU,CAAY,KAAK,EAAI,EAAY,OAAA,AAAO,GAAK,CAAC,EAC1F,GAAU,IAAO,CAAC,GAAI,QAAQ,GAAK,CAAD,EAAK,WAAW,EAAI,CAAW,MAAV,GAAiB,KAAK,EAAI,GAAO,KAAA,AAAK,GAAK,CAAC,GAAI,EAAE,EAAiB,SAAb,GAAI,IAAI,AAAK,CAAM,AAItG,EAAQ,AAAU,SAAO,KAAK,EAAI,GAAO,KAAA,AAAK,GAAK,GAAI,0BAA0B,CACjH,IADsH,AAChH,GAAe,CAAC,EAAK,EAAO,EAAS,KACvC,IAAM,EAAQ,EAAI,SAAS,CAAC,EAAG,GAAS,EAClC,EAAM,EAAI,SAAS,CAAC,EAAQ,EAAM,MAAM,EACxC,EAAY,EAAI,OAAO,CAAC,GAC9B,MAAO,CAAC,EAAY,EAAQ,GAAa,EAAK,EAAO,EAAS,GAAa,EAAQ,CACvF,EACM,GAAY,CAAC,EAAM,EAAO,EAAU,CAAI,GACrC,AAAL,GACO,AAAC,CADJ,GAEA,EAFU,EAEJ,EAAS,GAAK,EACd,EAAQ,EAAO,OAAO,CAAC,EAAO,EAAK,MAAM,EAC/C,MAAO,CAAC,EAAQ,EAAO,GAAa,EAAQ,EAAO,EAAS,GAAS,EAAQ,EAAO,EAAS,CACjG,EALqB,OAQZ,GAAO,GAAU,UAAW,WAAY,mBAClC,GAAU,UAAW,WAAY,mBAC9B,GAAU,UAAW,YAClB,GAAU,UAAW,YACvB,GAAU,UAAW,YACtB,GAAU,UAAW,YACd,GAAU,UAAW,YAC7B,GAAU,WAAY,YACpC,IAAM,GAAM,GAAU,WAAY,YAC5B,GAAQ,GAAU,WAAY,YAC9B,GAAS,GAAU,WAAY,YACxB,GAAU,WAAY,YACnC,IAAM,GAAU,GAAU,WAAY,YACvB,GAAU,yBAA0B,YACtC,GAAU,WAAY,YACnC,IAAM,GAAQ,GAAU,WAAY,Y4D1C3C,SAAS,KAIT,C5DuCoB,GAAU,WAAY,YACnB,GAAU,WAAY,YACxB,GAAU,WAAY,YACpB,GAAU,WAAY,YACrB,GAAU,WAAY,YACxB,GAAU,WAAY,YACnB,GAAU,WAAY,YACzB,GAAU,WAAY,YACrB,GAAU,WAAY,Y0BzDnC,GAAM,GAAK,MACV,GAAI,GAAK,MACV,GAAO,GAAK,MAEZ,GAAM,GAAK,MACV,GAAM,GAAK,MACX,GAAQ,GAAK,MAkDF,IAAI,GAAS,IAAO,AAAC,GAAQ,EAAM,MAAM,EAQxC,IAAI,GAAS,IAAQ,AAAD,GAAS,EAAM,MAAM,ENjE5C,IAAI,YwCexB,IAAM,GAAU,IAAI,YAqCb,SAAS,GAAiB,CAAG,EAChC,OAAO,IAAI,eAAe,CACtB,MAAO,CAAU,EACb,EAAW,OAAO,CAAC,GAAQ,MAAM,CAAC,IAClC,EAAW,KAAK,EACpB,CACJ,EACJ,CAWW,SAAS,GAAiB,CAAK,EACtC,OAAO,IAAI,eAAe,CACtB,MAAO,CAAU,EACb,EAAW,OAAO,CAAC,GACnB,EAAW,KAAK,EACpB,CACJ,EACJ,CAyEO,eAAe,GAAe,CAAM,CAAE,CAAM,EAC/C,IAAM,EAAU,IAAI,YAAY,QAAS,CACrC,OAAO,CACX,GACI,EAAS,GACb,UAAW,IAAM,KAAS,EAAO,CAC7B,GAAc,MAAV,EAAiB,KAAK,EAAI,EAAO,OAAO,CACxC,CAD0C,MACnC,EAEX,GAAU,EAAQ,MAAM,CAAC,EAAO,CAC5B,OAAQ,EACZ,EACJ,CAEA,OADA,AACO,EADG,EAAQ,MAAM,EAE5B,CtCtKO,IAAM,GAAoB,OAAO,GAAGA,CAAC,2BACrC,SAAS,GAAe,CAAG,CAAE,CAAG,EACnC,IAAM,EAAO,CAAG,CAAC,GAAkBA,EAAI,CAAC,EACxC,MAAsB,UAAf,OAAO,EAAmB,CAAI,CAAC,EAAI,CAAG,CACjD,CAOW,SAAS,GAAe,CAAG,CAAE,CAAI,EAExC,OADA,CAAG,CAAC,GAAkB,CAAG,EAClB,CACX,CwCNW,SAAS,GAA4B,CAAW,EACvD,IAAM,EAAU,IAAI,QACpB,IAAK,GAAI,CAAC,EAAK,EAAM,GAAI,OAAO,OAAO,CAAC,GAIpC,IAAK,IAAI,EAJwC,GAClC,AAGD,MAHO,CAGA,MAHO,CAAC,GAAS,EAAQ,CAC1C,EACH,MAEoB,IAAN,IACM,KADa,KAC1B,AAAuB,OAAhB,IACP,EAAI,EAAE,QAAQ,EAAA,EAElB,EAAQ,MAAM,CAAC,EAAK,IAG5B,OAAO,CACX,CAUU,SAAS,GAAmB,CAAa,EAC/C,IAEI,EACA,EACA,EACA,EACA,EANA,EAAiB,EAAE,CACnB,EAAM,EAMV,SAAS,IACL,KAAM,EAAM,EAAc,MAAM,EAAI,KAAK,IAAI,CAAC,EAAc,MAAM,CAAC,KAC/D,CADqE,EAC9D,EAEX,OAAO,EAAM,EAAc,MAAM,AACrC,CAKA,KAAM,EAAM,EAAc,MAAM,EAAC,CAG7B,IAFA,EAAQ,EACR,GAAwB,EAClB,KAEF,GAAI,AAAO,OADX,EADmB,AACd,EAAc,MAAM,CAAC,EAAA,EACV,CAMZ,IAJA,EAAY,EACZ,GAAO,EACP,IACA,EAAY,EACN,EAAM,EAAc,MAAM,EAbjC,AAAO,EAa8B,KAd5C,EAAK,EAAc,MAAM,CAAC,CAcmC,CAdnC,GACE,MAAP,GAAc,AAAO,SAc9B,GAAO,EAGP,EAAM,EAAc,MAAM,EAAkC,KAAK,CAAnC,EAAc,MAAM,CAAC,IAEnD,GAAwB,EAExB,EAAM,EACN,EAAe,IAAI,CAAC,EAAc,SAAS,CAAC,EAAO,IACnD,EAAQ,GAIR,EAAM,EAAY,CAE1B,MACI,CADG,EACI,GAGX,CAAC,GAAyB,GAAO,EAAc,MAAA,AAAM,EAAE,CACvD,EAAe,IAAI,CAAC,EAAc,SAAS,CAAC,EAAO,EAAc,MAAM,EAE/E,CACA,OAAO,CACX,CAOW,SAAS,GAA0B,CAAO,EACjD,IAAM,EAAc,CAAC,EACf,EAAU,EAAE,CAClB,GAAI,EACA,IAAK,GADI,AACE,CAAC,EAAK,EAAM,GAAI,EAAQ,OAAO,GAAG,AACf,cAAc,CAApC,EAAI,WAAW,IAIf,EAAQ,IAAI,IAAI,GAAmB,IACnC,CAAW,CAAC,EAAI,CAAsB,IAAnB,EAAQ,MAAM,CAAS,CAAO,CAAC,EAAE,CAAG,GAEvD,CAAW,CAAC,EAAI,CAAG,EAI/B,OAAO,CACX,CAGW,SAAS,GAAY,CAAG,EAC/B,GAAI,CACA,OAAO,OAAO,IAAI,IAAI,OAAO,IACjC,CAAE,MAAO,EAAO,CACZ,MAAM,AAAI,MAAM,CAAC,kBAAkB,EAAE,OAAO,GAAK,4FAA4F,CAAC,CAAE,CAC5I,MAAO,CACX,EACJ,CACJ,CNpHW,SAAS,GAAoB,CAAK,EACzC,OAA8C,KAAvC,EAAM,UAAU,CAAC,EAAM,MAAM,CAAG,IAAa,EAAM,MAAM,CAAG,EAAI,EAAM,KAAKA,CAAC,EAAG,CAAC,GAAK,CAChG,CTLW,SAAS,GAAU,CAAI,EAC9B,IAAM,EAAY,EAAK,OAAO,CAAC,KACzB,EAAa,EAAK,OAAO,CAAC,KAC1B,EAAW,EAAa,CAAC,IAAM,CAAD,CAAa,GAAK,EAAa,CAAA,CAAS,QAC5E,AAAI,GAAY,EAAY,CAAC,EAClB,CACH,AAFwB,SAEd,EAAK,SAAS,CAAC,EAAG,EAAW,EAAa,GACpD,MAAO,EAAW,EAAK,SAAS,CAAC,EAAY,EAAY,CAAC,EAAI,OAAY,GAAa,GACvF,KAAM,EAAY,CAAC,EAAI,EAAK,KAAK,CAAC,GAAa,EACnD,EAEGA,CACH,SAAU,EACV,MAAOA,GACP,KAAM,EACV,CACJ,CFhBW,SAAS,GAAc,CAAI,CAAE,CAAM,EAC1C,GAAI,CAAC,EAAK,UAAU,CAAC,MAAQ,CAAC,EAC1B,MADkC,CAC3B,EAEX,GAAM,UAAE,CAAQ,OAAE,CAAK,MAAE,CAAI,CAAE,CAAG,GAAU,GAC5C,MAAO,CAAA,EAAG,EAAA,EAAS,EAAA,EAAW,EAAA,EAAQ,EAAA,CAAM,AAChD,CMLW,SAAS,GAAc,CAAI,CAAE,CAAM,EAC1C,GAAI,CAAC,EAAK,UAAU,CAAC,MAAQ,CAAC,EAC1B,MADkC,CAC3B,EAEX,GAAM,UAAE,CAAQ,OAAE,CAAK,MAAE,CAAI,CAAE,CAAG,GAAU,GAC5C,MAAO,CAAA,EAAG,EAAA,EAAWA,EAAAA,EAAS,EAAA,EAAQ,EAAA,CAC1C,AADgD,CMHrC,SAAS,GAAc,CAAI,CAAE,CAAM,EAC1C,GAAoB,UAAhB,AAA0B,OAAnB,EACP,OAAO,EAEX,GAAM,UAAE,CAAQ,CAAE,CAAG,GAAU,GAC/B,OAAO,IAAa,GAAU,EAAS,UAAU,CAAC,EAAS,IAC/D,qBnCUW,SAAwB,AAAf,CAAsB,CAAE,CAAG,CAAE,CAAK,EAClD,IAAM,EAAO,GAAe,GAE5B,OADA,CAAI,CAAC,EAAI,CAAG,EACL,GAAe,EAAS,EACnC,6EpBvBI,IAAM,GAAQ,IAAI,QASX,SAAS,GAAoB,CAAQ,CAAE,CAAO,MAWjD,EATJ,GAAI,CAAC,EAAS,MAAO,UACjB,CACJ,EAEA,IAAI,EAAoB,GAAM,GAAG,CAAC,GAC7B,IACD,EAAoB,EAAQ,GAAG,CAAE,AAAD,GAAU,EAAO,EAD7B,SACwC,IAC5D,GAAM,GAAG,CAAC,EAAS,IAKvB,IAAM,EAAW,EAAS,KAAK,CAAC,IAAK,GAGrC,GAAI,CAAC,CAAQ,CAAC,EAAE,CAAE,MAAO,UACrB,CACJ,EAEA,IAAM,EAAU,CAAQ,CAAC,EAAE,CAAC,WAAW,GAGjC,EAAQ,EAAkB,OAAO,CAAC,UACxC,AAAI,EAAQ,EAAU,CAAP,AACX,UACJ,GAEA,EAAiB,CAAO,CAAC,EAAM,CAGxB,CACH,SAFJ,EAAW,EAAS,KAAK,CAAC,EAAe,MAAM,CAAG,IAAM,IAGpD,gBACJ,EACJ,CmC7CA,IAAM,GAA2B,+EACjC,SAAS,GAAS,CAAG,CAAE,CAAI,EACvB,IAAM,EAAS,IAAI,IAAI,OAAO,GAAM,GAAQ,OAAO,IAInD,OAHI,GAAyB,IAAI,CAAC,EAAO,QAAQ,GAAG,CAChD,EAAO,QAAQ,CAAG,WAAA,EAEf,CACX,CACA,IAAM,GAAW,OAAO,kBACjB,OAAM,GACT,YAAY,CAAK,CAAE,CAAU,CAAE,CAAI,CAAC,CAChC,IAAI,EACA,EACsB,UAAtB,OAAO,GAA2B,aAAc,GAAc,AAAsB,UAAU,OAAzB,GACrE,EAAO,EACP,EAAU,GAAQ,CAAC,GAEnB,EAAU,GAAQ,GAAc,CAAC,EAErC,IAAI,CAAC,GAAS,CAAG,CACb,IAAK,GAAS,EAAO,GAAQ,EAAQ,IAAI,EACzC,QAAS,EACT,SAAU,EACd,EACA,IAAI,CAAC,OAAO,EAChB,CACA,SAAU,CACN,IAAI,EAAwC,EAAmC,EAA6B,EAAyC,EACrJ,IAAM,EL7BP,AK6Bc,SL7BL,AAAoB,CAAQ,CAAE,CAAO,EACjD,GAAM,UAAE,CAAQ,MAAE,CAAI,eAAE,CAAa,CAAE,CAAG,EAAQ,UAAU,EAAI,CAAC,EAC3D,EAAO,UACT,EACA,cAA4B,MAAb,EAAmB,EAAS,QAAQ,CAAC,KAAO,CAC/D,EACI,GAAY,GAAc,EAAK,QAAQ,CAAE,KACzC,EAAK,IAD+C,IACvC,C2BFV,A3BEa,S2BFa,AAAjB,CAAqB,CAAE,CAAM,EAa7C,GAAI,CAAC,GAAc,EAAM,GACrB,MAD8B,CACvB,EAGX,IAAM,EAAgB,EAAK,KAAK,CAAC,EAAO,MAAM,SAE9C,AAAI,EAAc,UAAU,CAAC,KAClB,CADwB,CAK5B,CAAC,CAAC,EAAE,EAAA,CACf,AAD8B,E3BtBW,EAAK,QAAQ,CAAE,GAChD,EAAK,QAAQ,CAAG,GAEpB,IAAI,EAAuB,EAAK,QAAQ,CACxC,GAAI,EAAK,QAAQ,CAAC,UAAU,CAAC,iBAAmB,EAAK,QAAQ,CAAC,QAAQ,CAAC,SAAU,CAC7E,IAAM,EAAQ,EAAK,QAAQ,CAACA,OAAO,CAAC,mBAAoB,IAAI,OAAO,CAAC,UAAW,IAAI,KAAK,CAAC,IAEzF,GAAK,OAAO,CADI,CAAK,CAAC,AACP,EADS,CAExB,EAAoC,UAAb,CAAK,CAAC,EAAE,CAAe,CAAC,CAAC,EAAE,EAAM,KAAK,CAAC,GAAG,IAAI,CAAC,KAAA,CAAM,CAAG,KAGrD,IAAtB,EAAQ,AAAoB,SAAX,GACjB,EAAK,QAAQ,CAAG,CAAA,CAExB,CAGA,GAAI,EAAM,CACN,IAAI,EAAS,EAAQ,YAAY,CAAG,EAAQ,YAAY,CAAC,OAAO,CAAC,EAAK,QAAQ,EAAI,GAAoB,EAAK,QAAQ,CAAE,EAAK,OAAO,EACjI,EAAK,MAAM,CAAG,EAAO,cAAc,CACnC,EAAK,QAAQ,CAAG,EAAO,QAAQ,EAAI,EAAK,QAAQ,CAC5C,CAAC,EAAO,cAAc,EAAI,EAAK,OAAO,EAAE,AAEpC,CADJ,EAAS,EAAQ,YAAY,CAAG,EAAQ,YAAY,CAAC,OAAO,CAAC,GAAwB,GAAoB,EAAsB,EAAK,QAAO,EAChI,cAAc,EAAE,CACvB,EAAK,MAAM,CAAG,EAAO,cAAA,AAAc,CAG/C,CACA,OAAO,CACX,EKPyC,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,CAAE,CAC1D,WAAY,IAAI,CAAC,GAAS,CAAC,OAAO,CAAC,UAAU,CAC7C,WAAW,EACX,aAAc,IAAI,CAAC,GAAS,CAAC,OAAO,CAAC,YAAY,AACrD,GACM,EahCH,AbgCc,SahCL,AAAY,CAAM,CAAE,CAAO,EAG3C,IAAI,EACJ,GAAI,GAAS,MAAQ,CAAC,MAAM,OAAO,CAAC,EAAQ,IAAI,EAC5C,CAD+C,CACpC,EAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAK,EAAE,CAAC,EAAE,MAChD,IAAI,EAAO,QAAQ,CAEnB,CAFqB,MACxB,EAAW,EAAO,QAAQ,CAE9B,OAAO,EAAS,WAAW,EAC/B,EbsBqC,IAAI,CAAC,GAAS,CAAC,GAAG,CAAE,IAAI,CAAC,GAAS,CAAC,OAAO,CAAC,OAAO,EAC/E,IAAI,CAAC,GAAS,CAAC,YAAY,CAAG,IAAI,CAAC,GAAS,CAAC,OAAO,CAAC,YAAY,CAAG,IAAI,CAAC,GAAS,CAAC,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,G3BtC5H,A2BsCwI,S3BtC5G,AAAnB,CAA8BA,CAAE,CAAQ,CAAE,CAAc,EACpE,G2BqC8J,A3BrCzJ,CAAD,EAIJ,IAAK,IAAM,EAJO,GACd,IACA,EAAiB,EAAe,QADhB,GAC2B,EAAA,EAE5B,GAGf,GAAI,IADmB,EAAK,AAFD,MAEO,CACjB,CADmB,MAAM,IAAK,EAAE,CAAC,EAAE,CAAC,eAClB,IAAmB,EAAK,aAAa,CAAC,WAAW,IAAM,EAAK,OAAO,EAAE,KAAK,AAAC,GAAS,EAAO,WAAW,KAAO,GAC5I,OAAO,CAEf,CACJ,E2B0B6O,G3B9BpE,I2B8BN,AAAiF,EAA7C,GAAkD,CAA9C,CAAC,GAAS,CAAC,OAAO,CAAC,UAAU,AAAV,GAA+B,AAAqF,OAApF,EAAyC,EAAkC,IAAA,AAAI,EAAY,KAAK,EAAI,EAAuC,OAAO,CAAE,GAC1Y,IAAM,EAAgB,CAAC,AAA+D,OAA9D,EAA8B,IAAI,CAAC,GAAS,CAAC,YAAA,AAAY,EAAY,KAAK,EAAI,EAA4B,aAAA,AAAa,IAAkF,CAA7E,CAAC,KAAC,AAAkF,EAA7C,GAAkD,CAA9C,CAAC,GAAS,CAAC,OAAO,CAAC,UAAA,AAAU,GAAqB,AAAuF,OAAtF,EAA0C,EAAmC,IAAA,AAAI,EAAY,KAAK,EAAI,EAAwC,aAAa,EAC7Y,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,CAAG,EAAK,QAAQ,CAC3C,IAAI,CAAC,GAAS,CAAC,aAAa,CAAG,EAC/B,IAAI,CAAC,GAAS,CAAC,QAAQ,CAAG,EAAK,QAAQ,EAAI,GAC3C,IAAI,CAAC,GAAS,CAAC,OAAO,CAAG,EAAK,OAAO,CACrC,IAAI,CAAC,GAAS,CAAC,MAAM,CAAG,EAAK,MAAM,EAAI,EACvC,IAAI,CAAC,GAAS,CAAC,aAAa,CAAG,EAAK,aAAa,AACrD,CACA,gBAAiB,KK3CkB,IAAI,EACnC,EL2CA,OAAO,EK3CI,AYCR,SAAS,AAAU,CAAI,CAAE,CAAM,CAAE,CAAa,CAAE,CAAY,EAGnE,GAAI,CAAC,GAAU,IAAW,EAAe,OAAO,EAChD,IAAM,EAAQ,EAAK,WAAW,SAG9B,AAAI,CAAC,IACG,GAAc,EAAO,KADV,IACmB,AAC9B,GAAc,EAAO,CAAC,CAAC,EAAE,EAAO,WAAW,GAAA,CAAI,GADV,AACa,EAGnD,GAAc,EAH4C,AAGtC,CAAC,CAAC,EAAE,EAAA,CAAQ,CAC3C,EZd6B,GL2CS,CAC1B,SAAU,IAAI,CAAC,GAAS,CAAC,QAAQ,CACjC,QAAS,IAAI,CAAC,GAAS,CAAC,OAAO,CAC/B,cAAe,AAAC,IAAI,CAAC,GAAS,CAAC,OAAO,CAAC,WAAW,MAAkC,EAA/B,IAAI,CAAC,GAAS,CAAC,aAAa,CACjF,OAAQ,IAAI,CAAC,GAAS,CAAC,MAAM,CAC7B,SAAU,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,CACrC,cAAe,IAAI,CAAC,GAAS,CAAC,aAClC,AAD+C,GKjDrB,QAAQ,CAAE,EAAK,MAAM,CAAE,EAAK,OAAO,CAAG,OAAY,EAAK,aAAa,CAAE,EAAK,YAAY,GACjH,EAAK,OAAO,EAAI,CAAC,EAAK,aAAA,AAAa,EAAE,EACrC,EAAW,GAAoB,EAAA,EAE/B,EAAK,OAAO,EAAE,AACd,GAAW,GAAc,GAAc,EAAU,CAAC,YAAY,EAAE,EAAK,OAAO,CAAA,CAAE,EAAqB,MAAlB,EAAK,QAAQ,CAAW,aAAe,QAAA,EAE5H,EAAW,GAAc,EAAU,EAAK,QAAQ,EACzC,CAAC,EAAK,OAAO,EAAI,EAAK,aAAa,CAAG,AAAC,EAAS,QAAQ,CAACA,KAAsC,EAA/B,GAAc,EAAU,KAAkB,GAAoB,EL2CrI,CACA,cAAe,CACX,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,MAAM,AACpC,CACA,IAAI,SAAU,CACV,OAAO,IAAI,CAAC,GAAS,CAAC,OAAO,AACjC,CACA,IAAI,QAAQ,CAAO,CAAE,CACjB,IAAI,CAAC,GAAS,CAAC,OAAO,CAAG,CAC7B,CACA,IAAI,QAAS,CACT,OAAO,IAAI,CAAC,GAAS,CAAC,MAAM,EAAI,EACpC,CACA,IAAI,OAAO,CAAM,CAAE,CACf,IAAI,EAAwC,EAC5C,GAAI,CAAC,IAAI,CAAC,GAAS,CAAC,MAAM,EAAI,CAAC,CAA4E,AAA3E,OAAkF,AAAjF,EAAoC,GAAkD,CAA9C,CAAC,GAAS,CAAC,OAAO,CAAC,UAAA,AAAU,GAAqB,AAAqF,MAApF,GAAyC,EAAkC,IAAA,AAAI,EAAY,KAAK,EAAI,EAAuC,OAAO,CAAC,QAAQ,CAAC,IACpR,GAD2R,GAAG,AACxR,AAAI,UAAU,CAAC,8CAA8C,EAAE,EAAO,CAAC,CAAC,EAElF,IAAI,CAAC,GAAS,CAAC,MAAM,CAAG,CAC5B,CACA,IAAI,eAAgB,CAChB,OAAO,IAAI,CAAC,GAAS,CAAC,aAAa,AACvC,CACA,IAAI,cAAe,CACf,OAAO,IAAI,CAAC,GAAS,CAAC,YAAY,AACtC,CACA,IAAI,cAAe,CACf,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,YAAY,AAC1C,CACA,IAAI,MAAO,CACP,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,IAAI,AAClC,CACA,IAAI,KAAK,CAAK,CAAE,CACZ,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,IAAI,CAAG,CAC9B,CACA,IAAI,UAAW,CACX,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,AACtC,CACA,IAAI,SAAS,CAAK,CAAE,CAChB,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,CAAG,CAClC,CACA,IAAI,MAAO,CACP,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,IAAI,AAClC,CACA,IAAI,KAAK,CAAK,CAAE,CACZ,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,IAAI,CAAG,CAC9B,CACA,IAAI,UAAW,CACX,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,AACtC,CACA,IAAI,SAAS,CAAK,CAAE,CAChB,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,CAAG,CAClC,CACA,IAAI,MAAO,CACP,IAAM,EAAW,IAAI,CAAC,cAAc,GAC9B,EAAS,IAAI,CAAC,YAAY,GAChC,MAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAA,EAAG,EAAA,EAAW,EAAA,EAAS,IAAI,CAAC,IAAI,CAAA,CAAE,AAC3E,CACA,IAAI,KAAK,CAAG,CAAE,CACV,IAAI,CAAC,GAAS,CAAC,GAAG,CAAG,GAAS,GAC9B,IAAI,CAAC,OAAO,EAChB,CACA,IAAI,QAAS,CACT,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,MAAM,AACpC,CACA,IAAI,UAAW,CACX,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,AACtC,CACA,IAAI,SAAS,CAAK,CAAE,CAChB,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,CAAG,CAClC,CACA,IAAI,MAAO,CACP,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,IAAI,AAClC,CACA,IAAI,KAAK,CAAK,CAAE,CACZ,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,IAAI,CAAG,CAC9B,CACA,IAAI,QAAS,CACT,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,MAAM,AACpC,CACA,IAAI,OAAO,CAAK,CAAE,CACd,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,MAAM,CAAG,CAChC,CACA,IAAI,UAAW,CACX,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAC9B,AADsC,CAEtC,IAAI,SAAS,CAAK,CAAE,CAChB,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,CAAG,CAClC,CACA,IAAI,UAAW,CACX,OAAO,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,AACtC,CACA,IAAI,SAAS,CAAK,CAAE,CAChB,IAAI,CAAC,GAAS,CAAC,GAAG,CAAC,QAAQ,CAAG,CAClC,CACA,IAAI,UAAW,CACX,OAAO,IAAI,CAAC,GAAS,CAAC,QAAQ,AAClC,CACA,IAAI,SAAS,CAAK,CAAE,CAChB,IAAI,CAAC,GAAS,CAAC,QAAQ,CAAG,EAAM,UAAU,CAAC,KAAO,EAAQ,CAAC,CAAC,EAAE,EAAA,CAAO,AACzE,CACA,UAAW,CACP,OAAO,IAAI,CAAC,IAAI,AACpB,CACA,QAAS,CACL,OAAO,IAAI,CAAC,IAAI,AACpB,CACA,CAAC,OAAO,GAAG,CAAC,+BAA+B,EAAG,CAC1C,MAAO,CACH,KAAM,IAAI,CAAC,IAAI,CACf,OAAQ,IAAI,CAAC,MAAM,CACnB,SAAU,IAAI,CAAC,QAAQ,CACvB,SAAU,IAAI,CAAC,QAAQ,CACvB,SAAU,IAAI,CAAC,QAAQ,CACvB,KAAM,IAAI,CAAC,IAAI,CACf,SAAU,IAAI,CAAC,QAAQ,CACvB,KAAM,IAAI,CAAC,IAAI,CACf,SAAU,IAAI,CAAC,QAAQ,CACvB,OAAQ,IAAI,CAAC,MAAM,CACnB,aAAc,IAAI,CAAC,YAAY,CAC/B,KAAM,IAAI,CAAC,IAAI,AACnB,CACJ,CACA,OAAQ,CACJ,OAAO,IAAI,GAAQ,OAAO,IAAI,EAAG,IAAI,CAAC,GAAS,CAAC,OAAO,CAC3D,CACJ,CvB1KO,MAAM,WAAyB,MAClC,aAAa,CACT,KAAK,CAAC,CAAC,4IAGX,CACJ,CACO,MAAM,WAAuB,MAChC,aAAa,CACT,KAAK,CAAC,CAAC,mJAGX,CACJ,CXzBA,IAAA,GAAA,EAAA,CAAA,CAAA,OqCIO,IAAM,GAAY,OAAO,mBAKrB,OAAM,WAAoB,QACjC,YAAY,CAAK,CAAE,EAAO,CAAC,CAAC,CAAC,CACzB,IAAM,EAAuB,UAAjB,OAAO,GAAsB,QAAS,EAAQ,EAAM,GAAG,CAAG,OAAO,GAC7E,GAAY,GAKZ,AACQ,EAAK,CAD4B,GACxB,EAAoB,QAAQ,CAAxB,EAAK,MAAM,GACxB,EAAK,MAAM,CAAG,MAAA,EAGlB,aAAiB,QAAS,KAAK,CAAC,EAAO,GACtC,KAAK,CAAC,EAAK,GAChB,IAAM,EAAU,IAAI,GAAQ,EAAK,CAC7B,QAAS,GAA0B,IAAI,CAAC,OAAO,EAC/C,WAAY,EAAK,UAAU,AAC/B,GACA,IAAI,CAAC,GAAU,CAAG,CACd,QAAS,IAAI,GAAA,cAAc,CAAC,IAAI,CAAC,OAAO,UACxC,EACA,IAA4D,CAAvD,CAA+D,QAAQ,EAChF,CACJ,CACA,CAAC,OAAO,GAAG,CAAC,aAHkD,kBAGnB,EAAG,CAC1C,MAAO,CACH,QAAS,IAAI,CAAC,OAAO,CACrB,QAAS,IAAI,CAAC,OAAO,CACrB,IAAK,IAAI,CAAC,GAAG,CAEb,SAAU,IAAI,CAAC,QAAQ,CACvB,MAAO,IAAI,CAAC,KAAK,CACjB,YAAa,IAAI,CAAC,WAAW,CAC7B,YAAa,IAAI,CAAC,WAAW,CAC7B,QAAS,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EACxC,UAAW,IAAI,CAAC,SAAS,CACzB,UAAW,IAAI,CAAC,SAAS,CACzB,OAAQ,IAAI,CAAC,MAAM,CACnB,KAAM,IAAI,CAAC,IAAI,CACf,SAAU,IAAI,CAAC,QAAQ,CACvB,SAAU,IAAI,CAAC,QAAQ,CACvB,eAAgB,IAAI,CAAC,cAAc,CACnC,OAAQ,IAAI,CAAC,MAAM,AACvB,CACJ,CACA,IAAI,SAAU,CACV,OAAO,IAAI,CAAC,GAAU,CAAC,OAAO,AAClC,CACA,IAAI,SAAU,CACV,OAAO,IAAI,CAAC,GAAU,CAAC,OAAO,AAClC,CAKE,IAAI,MAAO,CACT,MAAM,IAAI,EACd,CAKE,IAAI,IAAK,CACP,MAAM,IAAI,EACd,CACA,IAAI,KAAM,CACN,OAAO,IAAI,CAAC,GAAU,CAAC,GAAG,AAC9B,CACJ,CD1EO,IAAM,GAAsB,iBAC5B,OAAM,WAAwB,MACjC,YAAY,GAAG,CAAI,CAAC,CAChB,KAAK,IAAI,GAAO,IAAI,CAAC,IAAI,CAAG,EAChC,CACJ,CAOW,SAAS,GAAsB,CAAQ,EAC9C,IAAM,EAAa,IAAI,gBAQvB,OAJA,EAAS,IAAI,CAAC,QAAS,KACf,EAAS,gBAAgB,EAAE,AAC/B,EAAW,KAAK,CAAC,IAAI,GACzB,GACO,CACX,CAgBO,MAAM,GACT,OAAO,oBAAoB,CAAO,CAAE,CAAM,CAAE,CAQpC,OAAO,GAAmB,mBAAmB,CAAC,EAAS,EAI/D,CACA,OAAO,oBAAoB,CAAO,CAAE,CAAM,CAAE,CAExC,IAKI,EALA,EAAO,KAMX,GALuB,QAAnB,EAAQ,MAAM,EAAiC,AAAnB,WAAQ,MAAM,EAAe,EAAQ,IAAI,EAAE,CAEvE,EAAO,EAAQ,IAAA,AAAI,EAGnB,EAAQ,GAAG,CAAC,UAAU,CAAC,QACvB,CADgC,CAC1B,IAAI,IAAI,EAAQ,GAAG,MACtB,CAEH,IAAM,EAAO,GAAe,EAAS,WAOjC,EANA,AAAC,GAAS,EAAK,GAAN,OAAgB,CAAC,QAMpB,CAN6B,GAMzB,IAAI,EAAQ,GAAG,CAAE,GAFrB,IAAI,IAAI,EAAQ,GAAG,CAAE,WAInC,CACA,OAAO,IAAI,GAAY,EAAK,CACxB,OAAQ,EAAQ,MAAM,CACtB,QAAS,GAA4B,EAAQ,OAAO,EACpD,OAAQ,cACR,EAMA,GAAG,EAAO,OAAO,CAAG,CAAC,EAAI,MACrB,CACJ,CAAC,AACL,EACJ,CACA,OAAO,mBAAmB,CAAO,CAAE,CAE/B,IAAI,EAAO,KAIX,MAHuB,QAAnB,EAAQ,MAAM,EAAiC,QAAQ,CAA3B,EAAQ,MAAM,GAC1C,EAAO,EAAQ,IAAA,AAAI,EAEhB,IAAI,GAAY,EAAQ,GAAG,CAAE,CAChC,OAAQ,EAAQ,MAAM,CACtB,QAAS,GAA4B,EAAQ,OAAO,EACpD,OAAQ,OACR,OAAQ,EAAQ,OAAO,CAAC,MAAM,CAM9B,GAAG,EAAQ,OAAO,CAAC,MAAM,CAAC,OAAO,CAAG,CAAC,EAAI,MACrC,CACJ,CAAC,AACL,EACJ,CACJ,CI9GO,SAAS,GAAa,CAAC,EAC1B,MAAO,CAAM,MAAL,EAAY,KAAK,EAAI,EAAE,IAAA,AAAI,IAAM,cAAgB,CAAC,AAAK,QAAO,KAAK,EAAI,EAAE,IAAA,AAAIA,IAAM,EAC/F,uCJ4BW,SAAS,AAAuB,CAAQ,EAC/C,GAAM,CAAE,SAAO,WAAE,CAAS,CAAE,CAAG,EAC/B,GAAI,GAAW,EACX,OAAO,EADe,UACH,KAAK,CAAC,GAAW,IAAI,IAE5C,GAAM,QAAE,CAAM,CAAE,CAAG,GAAsB,GACzC,OAAO,CACX,UIlCA,IAAM,GAAuC,gBAAiB,YAAc,QAAQ,GAAG,CAAC,4BAA4B,CAiF7G,eAAe,GAAmB,CAAQ,CAAE,CAAG,CAAE,CAAe,CAAE,CAA0B,EAC/F,GAAI,CAEA,GAAM,SAAE,CAAO,WAAE,CAAS,CAAE,CAAG,EAC/B,GAAI,GAAW,EAAW,OAG1B,IAAM,EAAa,GAAsB,GACnC,EAAS,AAxFvB,SAAS,AAAyB,CAAG,CAAE,CAAe,CAAE,CAA0B,EAC9E,IAAI,GAAU,EAGV,EAAU,KACd,SAAS,IACL,EAAQ,OAAO,EACnB,CACA,EAAI,EAAE,CAAC,QAAS,GAGhB,EAAI,IAAI,CAAC,QAAS,KACd,EAAI,GAAG,CAAC,QAAS,GACjB,EAAQ,OAAO,EACnB,GAGA,IAAM,EAAW,KAKjB,OAJA,EAAI,IAAI,CAAC,SAAU,KACf,EAAS,OAAO,EACpB,GAEO,IAAI,eAAe,CACtB,MAAO,MAAO,IAIV,GAAI,CAAC,EAAS,CAEV,GADA,EAAU,GACN,GAAsC,CACtC,IAAM,EAAwC,MAA9B,EAAqC,KAAK,EAAI,EAA2B,QAAQ,GAC7F,GACA,MADS,MACG,OAAO,CAAC,CAAA,EAAG,QAAQ,GAAG,CAAC,4BAA4B,CAAC,8BAA8B,CAAC,CAAE,CAC7F,MAAO,EAAQ,wBAAwB,CACvC,IAAK,EAAQ,wBAAwB,CAAG,EAAQ,wBAAwB,AAC5E,EAER,CACA,EAAI,YAAY,GAChB,KAAY,KAAK,CAAC,EAAmB,aAAa,CAAE,CAChD,SAAU,gBACd,EAAG,SAAI,EACX,CACA,GAAI,CACA,IAAM,EAAK,EAAI,KAAK,CAAC,GAGjB,UAAW,GAA4B,YAAY,AAAjC,OAAO,EAAI,KAAK,EAClC,EAAI,KAAK,GAIR,IAAI,AACL,MAAM,EAAQ,OAAO,CAErB,EAAU,KAElB,CAAE,MAAO,EAAK,CAEV,MADA,EAAI,GAAG,GACD,AAAI,MAAM,oCAAqC,CACjD,MAAO,CACX,EACJ,CACJ,EACA,MAAO,AAAC,IACA,EAAI,gBAAgB,EAAE,AAC1B,EAAI,OAAO,CAAC,EAChB,EACA,MAAO,UAMH,GAHI,GACA,MAAM,GAEN,EAAI,GAHa,aAGG,CAExB,CAF0B,MAC1B,EAAI,GAAG,GACA,EAAS,OAAO,AAC3B,CACJ,EACJ,EASgD,EAAK,EAAiB,EAC9D,OAAM,EAAS,MAAM,CAAC,EAAQ,CAC1B,OAAQ,EAAW,MAAM,AAC7B,EACJ,CAAE,MAAO,EAAK,CAEV,GAAI,GAAa,GAAM,MACvB,OAAU,AAAJ,MAAU,0BAA2B,CACvC,MAAO,CACX,EACJ,CACJ,CACO,eAAe,GAA+B,CAAQ,CAAE,CAAG,CAAE,CAAe,CAAE,CAA0B,EAC3G,GAAI,CACA,GAAM,SAAE,CAAO,WAAE,CAAS,CAAE,CAAG,EAC/B,GAAI,GAAW,EAAW,OAC1B,IAAI,EAAU,GACR,EAAW,KAeb,EAAS,GACP,EAAU,KAGP,IAAU,EAAS,SAAS,EAAE,CACnC,GAAS,EACT,EAAS,MAAM,GACnB,EACA,EAAI,EAAE,CAAC,QAAS,GAChB,EAAI,IAAI,CAAC,QAAS,KAId,EAAI,GAAG,CAAC,QAAS,GACjB,EAAS,OAAO,GAChB,EAAS,OAAO,EACpB,GACA,EAAS,EAAE,CAAC,OAAS,AAAD,IAChB,GAAI,CAAC,EAAS,CAEV,GADA,GAAU,EACN,gBAAiB,YAAc,QAAQ,GAAG,CAAC,4BAA4B,CAAE,CACzE,IAAM,EAAwC,MAA9B,EAAqC,KAAK,EAAI,EAA2B,QAAQ,GAC7F,GACA,MADS,MACG,OAAO,CAAC,CAAA,EAAG,QAAQ,GAAG,CAAC,4BAA4B,CAAC,8BAA8B,CAAC,CAAE,CAC7F,MAAO,EAAQ,wBAAwB,CACvC,IAAK,EAAQ,wBAAwB,CAAG,EAAQ,wBAAwB,AAC5E,EAER,CACA,EAAI,YAAY,GAChB,KAAY,KAAK,CAAC,EAAmB,aAAa,CAAE,CAChD,SAAU,gBACd,EAAG,SAAI,EACX,CACA,IAAM,EAAK,EAAI,KAAK,CAAC,GACjB,UAAW,GAA4B,YAArB,AAAiC,OAA1B,EAAI,KAAK,EAClC,EAAI,KAAK,GAER,IAAI,AACL,GAAS,EACT,EAAS,KAAK,GAEtB,GACA,EAAS,EAAE,CAAC,MAAO,UACX,GACA,MAAM,EAEN,AAAC,EAAI,IAHY,YAGI,EAAE,AACvB,EAAI,GAAG,GAEX,EAAS,OAAO,EACpB,GACA,EAAS,EAAE,CAAC,QAAS,AAAC,IACd,GAAa,IAIjB,EAJuB,AAInB,OAAO,CAAC,GAHR,EAAS,OAAO,EAKxB,GACA,MAAM,EAAS,OACnB,AAD0B,CACxB,MAAO,EAAK,CACV,GAAI,GAAa,GAAM,MACvB,OAAM,AAAI,MAAM,0BAA2B,CACvC,MAAO,CACX,EACJ,CACJ,CZhMA,SAAS,GAAe,CAAK,EACzB,OAAO,AAAU,UAAyB,UAAjB,OAAO,GAA4C,YAAtB,OAAO,EAAM,IAAI,EAAuC,YAApB,OAAO,EAAM,EAAE,EAAmB,CAAC,CAAC,aAAiB,cAAA,CAAc,AACjK,CACe,MAAM,GACjB,QAAO,CAAA,AAAE,CAGP,EAHU,EAGN,CAAC,KAAK,CAAG,IAAI,GAAa,KAAM,CAClC,SAAU,CAAC,EACX,YAAa,IACjB,EAAG,AAOD,QAAO,WAAW,CAAK,CAAE,CAAW,CAAE,CACpC,OAAO,IAAI,GAAa,EAAO,CAC3B,SAAU,CAAC,cACX,CACJ,EACJ,CACA,YAAY,CAAQ,CAAE,aAAE,CAAW,WAAE,CAAS,CAAE,UAAQ,CAAE,CAAC,CACvD,IAAI,CAAC,QAAQ,CAAG,EAChB,IAAI,CAAC,WAAW,CAAG,EACnB,IAAI,CAAC,QAAQ,CAAG,EAChB,IAAI,CAAC,SAAS,CAAG,CACrB,CACA,eAAe,CAAQ,CAAE,CACrB,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAE,EACjC,CAIE,IAAI,QAAS,CACX,OAAyB,OAAlB,IAAI,CAAC,QAAQ,AACxB,CAIE,IAAI,WAAY,CACd,MAAgC,UAAzB,OAAO,IAAI,CAAC,QAAQ,AAC/B,CACA,kBAAkB,GAAS,CAAK,CAAE,CAC9B,GAAsB,MAAM,CAAxB,IAAI,CAAC,QAAQ,CAGb,MAAO,GAEX,GAA6B,UAAzB,OAAO,IAAI,CAAC,QAAQ,CAAe,CACnC,GAAI,CAAC,EACD,MADS,AACH,IAAI,GAAe,mEAE7B,OAAO,GAAe,IAAI,CAAC,QAAQ,CACvC,CACA,OAAO,IAAI,CAAC,QAAQ,AACxB,CAGE,IAAI,UAAW,QACb,AAAI,AAAkB,MAAM,KAApB,CAAC,QAAQ,CAGN,IAAI,eAAe,CACtB,MAAO,CAAU,EACb,EAAW,KAAK,EACpB,CACJ,GAEyB,AAAzB,UAAmC,OAA5B,IAAI,CAAC,QAAQ,CACb,GAAiB,IAAI,CAAC,QAAQ,EAErC,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EACtB,CADyB,EACR,IAAI,CAAC,QAAQ,EAGrC,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,E6B9DhC,A7B+DY,CADuB,Q6B9Db,AAAb,GAAgB,CAAO,EAGnC,GAAuB,GAAG,CAAtB,EAAQ,MAAM,CACd,OAAO,IAAI,eAAe,CACtB,MAAO,CAAU,EACb,EAAW,KAAK,EACpB,CACJ,GAGJ,GAAuB,GAAG,CAAtB,EAAQ,MAAM,CACd,OAAO,CAAO,CAAC,EAAE,CAErB,GAAM,UAAE,CAAQ,UAAE,CAAQ,CAAE,CAAG,IAAI,gBAG/B,EAAU,CAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAU,CACtC,cAAc,CAClB,GACI,EAAI,EACR,KAAM,EAAI,EAAQ,MAAM,CAAG,EAAG,IAAI,CAC9B,IAAM,EAAa,CAAO,CAAC,EAAE,CAC7B,EAAU,EAAQ,IAAI,CAAC,IAAI,EAAW,MAAM,CAAC,EAAU,CAC/C,cAAc,CAClB,GACR,CAGA,IAAM,EAAa,CAAO,CAAC,EAAE,CAK7B,MADA,CAHA,EAAU,EAAQ,IAAI,CAAC,IAAI,EAAW,MAAM,CAAC,GAAA,EAGrC,KAAK,CAAC,IACP,CACX,K7B4BmC,IAAI,CAAC,QAAQ,EAEpC,GAAe,IAAI,CAAC,QAAQ,EAMT,AAIR,CAVoB,CAMZ,CAAA,CAAA,OAAuB,QAAQ,CAI9B,KAAK,CAAC,IAAI,CAAC,QAAQ,EAGpC,IAAI,CAAC,QAAQ,AACxB,CAME,QAAS,QACP,AAAsB,MAAM,CAAxB,IAAI,CAAC,QAAQ,CAGN,EAAE,CAEgB,UAAzB,AAAmC,OAA5B,IAAI,CAAC,QAAQ,CACb,CACH,GAAiB,IAAI,CAAC,QAAQ,EACjC,CACM,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAC3B,CAD8B,GAC1B,CAAC,QAAQ,CACb,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAC7B,CADgC,AAEnC,GAAiB,IAAI,CAAC,QAAQ,EACjC,CACM,GAAe,IAAI,CAAC,QAAQ,EAUxB,CAV2B,AAMnB,AAKX,EALW,CAAA,CAAA,OAAuB,QAAQ,CAKjC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAC/B,CAGE,CACH,IAAI,CAAC,QAAQ,CAChB,AAET,CAOE,YAAY,CAAS,CAAE,CACrB,IAAI,CAAC,QAAQ,CAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC9C,CAQE,QAAQ,CAAQ,CAAE,CAEhB,IAAI,CAAC,QAAQ,CAAG,IAAI,CAAC,MAAM,GAE3B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC1B,CAQE,KAAK,CAAQ,CAAE,CAEb,IAAI,CAAC,QAAQ,CAAG,IAAI,CAAC,MAAM,GAE3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EACvB,CAOE,MAAM,OAAO,CAAQ,CAAE,CACrB,GAAI,CACA,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAU,CAKjC,cAAc,CAClB,GAGI,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,SAAS,CAExC,MAAM,EAAS,KAAK,EACxB,CAAE,MAAO,EAAK,CAIV,GAAI,GAAa,GAAM,YAEnB,MAAM,EAAS,KAAK,CAAC,EAMzB,OAAM,CACV,CACJ,CAME,MAAM,mBAAmB,CAAG,CAAE,CAC5B,AAAsB,OAAlB,IAAI,CAAC,QAAQ,EAAsC,UAAzB,OAAO,IAAI,CAAC,QAAQ,EAAiB,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAK,GAAe,IAAI,CAAC,QAAQ,EAC/J,CADkK,KAC5J,GAA+B,IAAI,CAAC,QAAQ,CAAE,EAAK,IAAI,CAAC,SAAS,CAAE,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAGrH,MAAM,GAAmB,IAAI,CAAC,QAAQ,CAAE,EAAK,IAAI,CAAC,SAAS,CAAE,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CACzG,CACJ,CwBnNI,SAAS,GAAiB,CAAQ,CAAE,CAAQ,EAC5C,GAAI,CAAC,EAAU,OAAO,EACtB,IAAM,EAAS,SAAS,EAAU,IAClC,OAAO,OAAO,QAAQ,CAAC,IAAWA,EAAS,EAAI,EAAS,CAC5D,CAW2B,GAAiB,QAAQ,GAAG,CAAC,+BAA+B,CAAE,KAI5D,GAAiB,QAAQ,GAAG,CAAC,oCAAoC,CAAE,mBnDF5F,IAAM,GAAoB,iBACxB,GAAmB,mB6DcZ,GAAoB,OAAO,GAAG,CAAC,cA2D5C,SAAS,GAAiB,CAAS,CAAE,CAAI,CAAE,CAAG,EAC1C,IAAM,EAAS,CACX,GAAG,CAAG,CACN,IAAK,YAAY,UAAU,CAAG,YAAY,GAAG,GAC7C,IAAK,EAAU,WAAW,EAAI,CAClC,CACQ,OAAR,AAAe,GAAS,EAAJ,AAAS,aAAa,CAAC,CACvC,mBAAoB,EAAO,MAAM,CACjC,iBAAkB,EAAO,GAAG,CAC5B,0BAA2B,EAAO,WAAW,CAC7C,0BAA2B,EAAO,WAAW,AACjD,GAsBK,EAAU,uBAAuB,EAAE,CAGxC,EAAU,YAAY,GAAK,EAAE,CAC7B,EAAU,YAAY,CAAC,IAAI,CAAC,GAChC,CACA,eAAe,GAA8B,CAAG,CAAE,CAAQ,CAAE,CAAuB,CAAE,CAAgB,CAAE,CAAU,CAAE,CAAY,EAI3H,IAAM,EAAa,MAAM,EAAI,WAAW,GAClC,EAAc,CAChB,QAAS,OAAO,WAAW,CAAC,EAAI,OAAO,CAAC,OAAO,IAC/C,KAAM,OAAO,IAAI,CAAC,GAAY,QAAQ,CAAC,UACvC,OAAQ,EAAI,MAAM,CAClB,IAAK,EAAI,GAAG,AAChB,EAYA,OATI,GACA,MAAM,EAAiB,GAAG,CAAC,EAAU,CACjC,KAAM,EAFe,CAEC,KAAK,CAC3B,KAAM,aACN,CACJ,EAAG,GAEP,MAAM,IAEC,IAAI,SAAS,EAAY,CAC5B,QAAS,EAAI,OAAO,CACpB,OAAQ,EAAI,MAAM,CAClB,WAAY,EAAI,UACpB,AAD8B,EAElC,CACA,eAAe,GAA4B,CAAS,CAAE,CAAG,CAAE,CAAQ,CAAE,CAAuB,CAAE,CAAgB,CAAE,CAAwB,CAAE,CAAU,CAAE,CAAK,CAAE,CAAY,CAAE,CAAM,EAI7K,GAAM,CAAC,EAAS,EAAQ,CAAG,GAAc,GAInC,EAAkB,EAAQ,WAAW,GAAG,IAAI,CAAC,MAAO,IACtD,IAAM,EAAa,OAAO,IAAI,CAAC,GACzB,EAAc,CAChB,QAAS,OAAO,WAAW,CAAC,EAAQ,OAAO,CAAC,OAAO,IACnD,KAAM,EAAW,QAAQ,CAAC,UAC1B,OAAQ,EAAQ,MAAM,CACtB,IAAK,EAAQ,GAAG,AACpB,CAC4B,OAA5B,AAAmC,GAAS,EAAJ,AAA6B,GAAG,CAAC,EAAU,GAC/E,GACA,MAAM,EAAiB,GAAG,CAAC,EAAU,CACjC,KAAM,EAFe,CAEC,KAAK,CAC3B,KAAM,aACN,CACJ,EAAG,EAEX,GAAG,KAAK,CAAC,AAAC,IAEF,CAAC,AAAW,MAAV,EAAiB,KAAK,EAAI,EAAO,OAAO,AAAP,GAAU,AAC7C,QAAQ,IAAI,CAAC,CAAC,yBAAyB,CAAC,CAAE,EAAO,EAEzD,GAAG,OAAO,CAAC,GACL,EAAuB,CAAC,UAAU,EAAE,EAAA,CAAU,CAC9C,EAAqB,EAAU,kBAAkB,GAAK,CAAC,EACzD,EAA2B,QAAQ,OAAO,GAc9C,OAbI,KAAwB,GAGxB,GAA2B,CAAkB,CAAC,EAAqB,AAArB,EAElD,CAAkB,CAAC,EAAqB,CAAG,EAAyB,CALpB,GAKwB,CAAC,IAAI,GAAiB,OAAO,CAAC,MAG5F,AAAsB,QAAO,KAAK,EAAI,CAAkB,CAAC,EAAA,AAAqB,GAAG,AAGvF,OAAO,CAAkB,CAAC,EAAqB,AACnD,GACO,CACX,CAowBA,IAAI,GAAyB,KCv8BlB,SAAS,GAAiB,CAAK,MhCjBH,EgCkBnC,EhClBuC,IAChC,CgCiBA,EAAmB,EAAM,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC,EAAU,EAAS,EAAO,IAEzE,AAAK,E7DlBa,A6DsBlB,EAJI,EAIA,E7DtBD,CAAO,A6DkBI,C7DlBH,EAAE,E6DsBM,A7DtBM,EAAQ,QAAQ,A6DsBZ,C7DtBa,M6D0BvB,KAAK,CAApB,CAAO,CAAC,EAAE,EAIV,CAAa,SAAZ,GAAkC,UAAZ,CAAY,CAAO,EAAK,IAAU,EAAS,MAAM,CAAG,EAPpE,CAOuE,CAG3E,CAAA,EAAG,EAAS,CAAC,EAAE,EAAA,CAAS,CAdpB,EAeZ,KhCnCS,UAAU,CAAC,KAAO,EAAO,CAAC,CAAC,EAAE,EAAA,CAAMA,AgCoCnD,YD06BO,SAAS,AAAW,CAAO,MjBl7BA,QiBo7B9B,GAx6ByC,CAw6BrC,CjBp7BuC,GiBYpC,UAAU,CAAC,GAAkB,CAw6Bd,OAGtB,IAAM,KAA6B,MAAlB,KAA6B,KAAK,CjBt7B7C,EAAkB,GAAA,KAAW,CACnC,AAAC,GAAM,EAAE,EACF,SAAS,AAAY,CAAQ,CAAE,CAAO,MAYrC,EACA,EAZJ,GAAI,GAAW,EAAQ,MAAM,CAQzB,CAR2B,MAQpB,EAAc,EAAU,GAKnC,GAAwB,UAApB,EAAgC,KAAzB,GAA0B,EAI9B,CAKH,MAT0C,AASpC,EAA8B,UAApB,OAAO,GAAyB,aAAoB,IAAM,IAAI,QAAQ,EAAU,GAAW,EAC3G,GAAuB,QAAnB,EAAQ,MAAM,EAAiC,SAAnB,EAAQ,MAAM,EAAe,EAAQ,SAAS,CAK1E,CAL4E,MAKrE,EAAc,EAAU,GA5CrC,EAAkB,MAAM,IAAI,CA8CE,AA9CD,EAAQ,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAI,GAAG,CAAC,GAA2B,GAAG,CAAC,EAAI,WAAW,KA8CrH,EA7CD,KAAK,IA6CO,KA7CE,CAAC,CAClB,EAAQ,MAAM,CACd,EACA,EAAQ,IAAI,CACZ,EAAQ,QAAQ,CAChB,EAAQ,WAAW,CACnB,EAAQ,QAAQ,CAChB,EAAQ,cAAc,CACtB,EAAQ,SAAS,CACpB,EAqCO,EAAM,EAAQ,GAAG,AACrB,MAjBI,EA9CW,SA8CA,sCACX,AA/C0D,EA+CpD,EAiBV,IAAM,EAAe,EAAgB,GACrC,IAAI,IAAI,EAAI,EAAG,EAAI,EAAa,MAAM,CAAE,EAAI,EAAG,GAAK,EAAE,CAClD,EAlE4G,CAkEtG,CAAC,EAAK,EAAQ,CAAG,CAAY,CAAC,EAAE,CACtC,GAAI,IAAQ,EACR,OAAO,CADW,CACH,IAAI,CAAC,KAChB,IAAM,EAAW,CAAY,CAAC,EAAE,CAAC,EAAE,CACnC,GAAI,CAAC,EAAU,MAAM,IAAI,GAAe,sBAKxC,GAAM,CAAC,EAAS,EAAQ,CAAG,GAAc,GAEzC,OADA,CAAY,CAAC,EAAE,CAAC,EAAE,CAAG,EACd,CACX,EAER,CAGA,IAAM,EAAU,EAAc,EAAU,GAClC,EAAQ,CACV,EACA,EACA,KACH,CAED,OADA,EAAa,IAAI,CAAC,GACX,EAAQ,IAAI,CAAC,AAAC,IAKjB,GAAM,CAAC,EAAS,EAAQ,CAAG,GAAc,GAEzC,OADA,CAAK,CAAC,EAAE,CAAG,EACJ,CACX,EACJ,GiBi3BA,WAAW,KAAK,CAAG,AAjwBhB,SAAS,AAAqB,CAAW,CAAE,kBAAE,CAAgB,sBAAE,CAAoB,CAAE,EAExF,IAAM,EAAU,eAAqB,AAAN,CAAW,CAAE,CAAI,MACxC,EAAc,MACd,EACJ,GAAI,CAEA,CADA,EAAM,IAAI,IAAI,aAAiB,QAAU,EAAM,GAAG,CAAG,EAAA,EACjD,QAAQ,CAAG,GACf,EAAI,QAAQ,CAAG,EACnB,CAAE,KAAO,CAEL,EAAM,MACV,CACA,IAAM,EAAW,CAAQ,MAAP,EAAc,KAAK,EAAI,EAAI,IAAA,AAAI,GAAK,GAChD,EAAS,CAAS,MAAR,CAAe,EAAyC,AAAhC,GAAJ,IAAK,EAAe,EAAK,MAAA,AAAM,EAAY,KAAK,EAAI,EAAa,WAAW,EAAE,GAAK,MAGjH,EAAa,CAAS,MAAR,CAAe,EAAqC,AAA5B,GAAJ,IAAK,EAAa,EAAK,IAAA,AAAI,EAAY,KAAK,EAAI,EAAW,QAAQ,IAAM,GAC3G,EAAoD,MAAzC,QAAQ,GAAG,CAAC,wBAAwB,CAK/C,EAAa,OAAa,EAAY,YAAY,UAAU,CAAG,YAAY,GAAG,GAC9E,EAAY,EAAiB,QAAQ,GACrC,EAAgB,EAAqB,QAAQ,GAC/C,EAAc,EAAgB,CAAA,EAAA,GAAA,cAAA,AAAc,EAAC,GAAiB,KAC9D,GACA,EAAY,QADC,CACQ,GAEzB,IAAM,EAAS,KAAY,KAAK,CAAC,EAAa,EAAmB,aAAa,CAAG,EAAc,KAAK,CAAE,UAClG,EACA,KAAM,EAAS,MAAM,CACrB,SAAU,CACN,QACA,EACA,EACH,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,KACvB,WAAY,CACR,WAAY,EACZ,cAAe,EACf,gBAAwB,MAAP,EAAc,KAAK,EAAI,EAAI,QAAQ,CACpD,gBAAiB,CAAC,AAAO,QAAO,KAAK,EAAI,EAAI,IAAA,AAAI,QAAK,CAC1D,CACJ,EAAG,MAAO,QACF,MA6CA,EA0DA,EAwNA,EAGA,EAuIA,EAtaA,EAjCJ,GAAI,GAMA,CAAC,GAKD,EAAU,GAXE,CAiCM,EA3BN,KAKS,CAVrB,CAUuB,MAVhB,EAAY,EAAO,GAa9B,IAAM,EAAiB,GAA0B,UAAjB,OAAO,GAA8C,UAAxB,OAAO,EAAM,MAAM,CAKhF,GAAI,GAAkB,EAAM,CAGxB,GAAM,MAAE,CAAI,CAAE,GAAG,EAAW,CAAG,EAC/B,EAAQ,IAAI,QAAQ,EAAO,GAC3B,EAAO,EAAO,MACV,CACJ,OAAI,CACR,CACA,IAAM,EAAkB,AAAD,GAGZ,CADe,MAAR,EAAe,AACb,KADkB,EAAI,CAAI,CAAC,EAAA,AAAM,IAChC,EAAiB,CAAK,CAAC,EAAM,CAAG,IAAA,CAAI,CAGnD,EAAe,AAAC,IAClB,IAAI,EAAY,EAAa,EAC7B,OAAO,KAAmG,EAA5F,GAAS,MAAR,CAAe,EAAS,AAA4B,GAAhC,GAAK,GAAa,EAAK,IAAA,AAAI,EAAY,KAAK,EAAI,CAAU,CAAC,EAAM,EAA4B,MAAR,CAAe,EAAS,AAA6B,GAAjC,IAAK,EAAc,EAAK,IAAA,AAAI,EAAY,KAAK,EAAI,CAAW,CAAC,EAAM,CAAG,EAAiB,AAA8B,OAA7B,EAAc,EAAM,IAAA,AAAI,EAAY,KAAK,EAAI,CAAW,CAAC,EAAM,CAAG,MAC1S,EAGM,EAA0B,EAAa,cACzC,EAAyB,EACvB,EAAO,AA9OlB,SAAS,AAAa,CAAI,CAAE,CAAW,EAC1C,IAAM,EAAY,EAAE,CACd,EAAc,EAAE,CACtB,IAAI,IAAI,EAAI,EAAG,EAAI,EAAK,MAAM,CAAE,IAAI,CAChC,IAAM,EAAM,CAAI,CAAC,EAAE,CACnB,GAAI,AAAe,UAAU,OAAlB,EACP,EAAY,IAAI,CAAC,KACb,EACA,OAAQ,gCACZ,QACG,GAAI,EAAI,MAAM,C1DrDY,E0DqDT,EACpB,EAAY,IAAI,CAAC,KACb,EACA,OAAQ,CAAC,GAHkC,oBAGX,EAAE,EACtC,QAKA,EAAU,IAAI,CAAC,A7DxDhB,GAAkB,IAAI,CAAC,E6DkD2C,C7DlDlC,EAAM,OAAO,CAAC,GAAkB,AAAC,GAAM,mBAAmB,I6DwDzD,GAEpC,C7D1DqG,E6D0DjG,EAAU,MAAM,C1DjEY,E0DiET,EAA0B,CAC7C,QAAQ,IAAI,CAAC,CAAC,oCAAoC,EAAE,EAAY,eAAe,CAAC,CAAE,EAAK,KAAK,CAAC,GAAG,IAAI,CAAC,OACrG,KACJ,CACJ,CACA,GAAI,EAAY,MAAM,CAAG,EAErB,CAFwB,GAEnB,GAAM,KAAE,CAAG,QAAE,CAAM,CAAE,GAD1B,QAAQ,IAAI,CAAC,CAAC,gCAAgC,EAAE,EAAY,EAAE,CAAC,EACjC,GAC1B,QAAQ,CAD8B,EAC3B,CAAC,CAAC,MAAM,EAAE,EAAI,EAAE,EAAE,EAAA,CAAQ,EAG7C,OAAO,CACX,EA6MsC,EAAa,SAAW,EAAE,CAAE,CAAC,MAAM,EAAE,EAAM,QAAQ,GAAA,CAAI,EAEjF,GAAI,EACA,OAAO,EAAc,IADN,AACU,EACrB,IAAK,YACL,IAAK,oBAEL,IAAK,mBACL,IAAK,oBACL,IAAK,mBACL,IAAK,QACL,IAAK,gBACD,EAAkB,CAQ1B,CAEJ,GAAI,GACI,MAAM,OAAO,CADA,AACC,GAAO,CAErB,IAAM,EAAgB,EAAgB,IAAI,GAAK,CAAD,CAAiB,IAAI,CAAG,EAAA,AAAE,EACxE,IAAK,IAAM,KAAO,EACV,AAAC,EAAc,CADA,OACQ,CAAC,IACxB,EAD8B,AAChB,IAAI,CAAC,EAG/B,CAEJ,IAAM,EAAgC,MAAjB,EAAwB,KAAK,EAAI,EAAc,YAAY,CAC5E,EAAqB,EAAU,UAAU,CACzC,GAES,YAFM,OACR,EAAc,IAAI,GAIjB,EAAqB,gBAAA,EAgBjC,IAAM,EAAiB,CAAC,CAAC,EAAU,iBAAiB,CAChD,EAA0B,EAAe,SACzC,EAAc,GAEqB,UAAnC,OAAO,GAAwC,KAAkC,IAA3B,IAGtD,AAA4B,KAHkE,cAGtB,IAA3B,CAAgC,EACjD,aAA5B,CAA0C,GAAC,EAAyB,IAAgC,IAA3B,CAA2B,CAAK,IAErG,EAAe,CAAC,kBAAkB,EAHiG,AAG/F,EAAwB,mBAAmB,EAAE,EAAuB,gCAAgC,CAAC,CACzI,OAA0B,EAC1B,OAAyB,GAGjC,IAAM,EACsB,aAA5B,GAAsE,aAA5B,CAA0C,EAE7D,mBAAvB,GAAkE,kBAAvB,EAMrC,EAA+B,CAAC,GAAsB,CAAC,GAA2B,CAAC,GAA0B,EAAU,YAAY,CAG7G,gBAA5B,GAA6C,CAXoI,IAWlG,IAA3B,EAChD,GAAyB,GAClB,CAFiF,EAElD,CAAA,GAA8B,CACpE,EAAyB,IAEzB,AAA4B,gBAA0C,aAA5B,CAA4B,GAAY,AAClF,GAAc,CAAC,OAAO,EAAE,EAAA,CAAA,AAAyB,EAErD,EAAkB,AA9VvB,SAAS,AAAmB,CAAa,CAAE,CAAK,EACnD,GAAI,CACA,IAAI,EACJ,IAAsB,IAAlB,GAA6C,GAAA,EAAU,CAA5B,EAG3B,EAJuB,gBAKpB,GAA6B,EADT,QAChB,OAAO,GAA8B,CAAC,MAAM,IAAkB,EAAgB,CAAC,EACtF,CADyF,CAClE,OACpB,GAAI,KAAyB,IAAlB,EACd,MAAU,AAAJ,CADuC,KAC7B,CAAC,0BAA0B,EAAE,EAAc,MAAM,EAAE,EAAM,yCAAyC,CAAC,EAEvH,OAAO,CACX,CAAE,MAAO,EAAK,CAEV,GAAI,aAAe,OAAS,EAAI,OAAO,CAAC,QAAQ,CAAC,sBAC7C,CADoE,KAC9D,EAEV,MACJ,CADW,AAEf,EA0UiD,EAAwB,EAAU,KAAK,EAC5E,IAAM,EAAW,EAAe,WAC1B,EAAc,AAAsD,OAA/C,YAAa,MAAZ,EAAmB,KAAK,EAAI,EAAS,GAAA,AAAG,EAAmB,EAAW,IAAI,QAAQ,GAAY,CAAC,GACrH,EAAuB,EAAY,GAAG,CAAC,kBAAoB,EAAY,GAAG,CAAC,UAC3E,EAAsB,CAAC,CACzB,MACA,OACH,CAAC,QAAQ,CAAC,CAAiD,AAAhD,OAAC,EAAkB,EAAe,SAAA,CAAS,CAAY,KAAK,EAAI,EAAgB,WAAW,EAAA,CAAE,EAAK,OAUxG,EACN,KAAsB,MACrB,MAA2B,CADO,KAGP,OAFa,KAEzC,CAA4B,CAAS,KAAK,EAChB,GAA1B,EACI,EAAc,CALmD,EAK3C,CAAC,GAAwB,CAAA,CAAmB,EAAK,CAAoB,MAAnB,EAA0B,KAAK,AAF/B,EAEmC,EAAgB,UAAA,AAAU,KAAM,EAC3I,GAA2B,EAa/B,GAZI,CAAC,GANmH,AAMpG,IAIZ,EAAU,oBAJ4B,GAIL,CACjC,CADmC,EACR,EAE3B,GAAc,GAKlB,QAA8C,IAAlB,EAC5B,KADyD,EAClD,EAAc,IAAI,EACrB,IAAK,YACL,IAAK,oBAIL,IAAK,mBAKD,OAJI,IACA,EAAY,OADC,AACM,GACnB,EAAc,MAEX,GAA0B,EAAc,YAAY,CAAE,EAAU,KAAK,CAAE,UAoBtF,CAEJ,OAAO,GACH,IAAK,iBAEG,EAAc,8BACd,KAER,KAAK,gBAEG,GAAgC,gBAA5B,GAA6C,KAA2B,IAApB,GAAmC,EAAkB,EACzG,CAD4G,KAClG,AAAJ,MAAU,CAAC,uCAAuC,EAAE,EAAS,gDAAgD,CAAC,EAExH,EAAc,6BACd,KAER,KAAK,aAEG,GAAgC,YAAY,CAAxC,EACA,MAAM,AAAI,MAAM,CAAC,oCAAoC,EAAE,EAAS,6CAA6C,CAAC,EAElH,KAER,KAAK,eAEO,KAAkC,IAA3B,GAA0C,AAA2B,GAAG,MAC/E,EAAc,2BACd,aAWhB,CAsBA,GArBI,AAA2B,CAsB/B,AAlCkC,QAYvB,EACoB,EADa,aAsBnB,GArBjB,CAA0C,EAAC,EAGb,cAH6B,MAGT,CAA3C,GACP,EAAkB,EAClB,EAAc,iCACP,GACP,EAAkB,EAClB,EAAc,OAFS,SAGhB,GACP,EAAkB,EAClB,EAAc,IAFM,cAKpB,EAAc,aACd,EAAkB,EAAkB,EAAgB,UAAU,GAAG,WAdjE,aACA,EAAc,GADI,2BAgBf,AAAC,IACR,EAAc,CAAC,MADM,MACM,EAAE,EAAA,CAAA,AAAiB,EAIlD,CAAC,CAAC,EAAU,WAAW,EAAI,AAAoB,CAAC,KAAK,EACrD,CAAC,GAGD,GAAmB,EAAkB,EAAgB,KAHrC,KAG+C,CAAE,CAG7D,GAAI,AAAoB,MAAG,CACvB,GAAI,EACA,OAAO,EAAc,IADN,AACU,EACrB,IAAK,EAV6F,UAWlG,IAAK,UAV8D,SAWnE,IAAK,oBAML,IAAK,oBAKD,OAJI,IACA,EAAY,OADC,AACM,GACnB,EAAc,MAEX,GAA0B,EAAc,YAAY,CAAE,EAAU,KAAK,CAAE,UAkBtF,CAEJ,GAA0B,EAAW,EAAe,CAAC,oBAAoB,EAAE,EAAM,CAAC,EAAE,EAAU,KAAK,CAAA,CAAE,CACzG,CAII,GAAmB,IAA4B,IAC/C,EAAgB,UAAU,CADsC,AACnC,CAAA,CAErC,CACA,IAAM,EAAmD,UAA3B,OAAO,GAAgC,EAAkB,EAEjF,CAAE,kBAAgB,CAAE,CAAG,EACzB,GAAe,EAEnB,GAAI,EACA,OAAO,EAAc,IAAI,AADV,EAEX,IAAK,UACL,IAAK,QACL,IAAK,gBACD,EAAe,EAAc,YAAY,GAAI,EAC7C,EAA2B,EAAc,wBAYjD,AAZyE,CAc7E,GAAI,IAAqB,GAAyB,CAAA,CAAwB,CACtE,EADyE,CACrE,CACA,EAAW,IAFK,EAEC,EAAiB,gBAAgB,CAAC,EAAU,EAAiB,EAAQ,EAC1F,CAAE,MAAO,EAAO,CACZ,QAAQ,KAAK,CAAC,CAAC,gCAAgC,CAAC,CAAE,EAAO,EAC7D,CAEJ,IAAM,EAAW,EAAU,WAAW,EAAI,EAC1C,EAAU,WAAW,CAAG,EAAW,EACnC,IAAI,EAAe,KAAK,EAClB,EAAkB,MAAO,EAAS,KACpC,IAAM,EAAqB,CACvB,QACA,cACA,UACA,YACA,YACA,SACA,OACA,WACA,WACA,iBACA,SACA,YAEG,EAAU,EAAE,CAAG,CACd,SACH,CACJ,CACD,GAAI,EAAgB,CAChB,IAAM,EAAW,EACX,EAAa,CACf,KAAM,EAAS,OAAO,EAAI,EAAS,IAAI,AAC3C,EACA,IAAK,IAAM,KAAS,EAEhB,CAAU,CAAC,EAAM,CAAG,CAAQ,CAAC,EAAM,CAEvC,EAAQ,IAAI,CAJ2B,OAInB,EAAS,GAAG,CAAE,EACtC,MAAO,GAAI,EAAM,CACb,GAAM,SAAE,CAAO,MAAE,CAAI,QAAE,CAAM,CAAE,GAAG,EAAY,CAAG,EACjD,EAAO,CACH,GAAG,CAAU,CACb,KAAM,GAAW,EACjB,OAAQ,OAAU,EAAY,CAClC,CACJ,CAEA,IAAM,EAAa,CACf,GAAG,CAAI,CACP,KAAM,CACF,GAAG,AAAQ,QAAO,KAAK,EAAI,EAAK,IAAI,CACpC,UAAW,kBACX,CACJ,CACJ,EACA,OAAO,EAAY,EAAO,GAAY,IAAI,CAAC,MAAO,IAY9C,GAXI,CAAC,GAAW,GACZ,GAAiB,EAAW,EAAM,CAC9B,CAFoB,KAEb,EACP,IAAK,EACL,YAAa,GAAuB,EACpC,YAAiC,IAApB,GAAyB,EAAsB,OAAS,oBACrE,EACA,OAAQ,EAAI,MAAM,CAClB,OAAQ,EAAW,MAAM,EAAI,KACjC,GAEe,MAAf,EAAI,MAAM,EAAY,GAAoB,GAAa,IAAyB,CAAA,CAAwB,CAAG,CAC3G,CADsD,GAChD,EAAuB,G1DhoBvB,WAJQ,K0DooBkC,GAA0C,EACpF,EAAyB,EAAwB,CACnD,OAF6D,KAEjD,WACZ,WACA,EACA,gCACA,CACJ,OAAI,EACJ,OAAwB,MAAjB,EAAwB,KAAK,EAAI,EAAc,IAAI,EACtD,IAAK,YACL,IAAK,mBACL,IAAK,oBACL,IAAK,oBACD,OAAO,GAA8B,EAAK,EAAU,EAAwB,EAAkB,EAAsB,EACxH,KAAK,UAWL,IAAK,mBACL,IAAK,QACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,UAAK,EACD,OAAO,GAA4B,EAAW,EAAK,EAAU,EAAwB,EAAkB,EAA0B,EAAsB,EAAO,EAAc,EAAe,UAGnM,CACJ,CAIA,OADA,MAAM,IACC,CACX,GAAG,KAAK,CAAC,AAAC,IAEN,MADA,IACM,CACV,EACJ,EAEI,GAAyB,EACzB,EAAoB,GACxB,GAAI,GAAY,EAAkB,CAC9B,IAAI,EAKJ,GAJI,GAAgB,IAChB,EAAkB,EAAyB,GAAG,CAAC,GAC/C,GAAoB,GAEpB,GAAyB,CAAC,CAJgB,CAIC,CAC3C,EAAe,MAAM,EAAiB,IAAI,CAAC,GAC3C,IAAM,EAAQ,EAAU,oBAAoB,CAAG,KAAO,MAAM,EAAiB,GAAG,CAAC,EAAU,CACvF,KAAM,GAAqB,KAAK,CAChC,WAAY,WACZ,WACA,OACA,EACA,SAA0B,MAAhB,EAAuB,KAAK,EAAI,EAAa,IAAI,AAC/D,GACA,GAAI,GAA4B,EAC5B,OAAO,EAAc,IADsB,AAClB,EACrB,IAAK,YACL,IAAK,mBACL,IAAK,oBACL,IAAK,oBAMD,MAAM,CAiP7B,AAAD,KACA,GAAyB,IAAI,QAAQ,AAAC,IADb,AAErB,WAAW,KACP,GAAyB,KACzB,GACJ,EAAG,EACP,EAAA,EAEG,GA1Oa,CASJ,GAPI,EACA,KADO,CACD,IAIN,EAAsB,yCAEtB,CAAU,MAAT,EAAgB,KAAK,EAAI,EAAM,KAAA,AAAK,GAAK,EAAM,KAAK,CAAC,IAAI,GAAK,GAAgB,KAAK,CAGpF,CAHsF,EAGlF,CAAA,EAAA,GAAA,uBAAA,AAAuB,EAAC,IAAkB,EAAM,OAAO,CACvD,CADyD,EAChC,MACtB,CACH,GAAI,EAAM,OAAO,EAAE,CACf,EAAU,kBAAkB,GAAK,CAAC,EAC9B,CAAC,EAAU,kBAAkB,CAAC,EAAS,EAAE,CACzC,IAAM,EAAoB,GAAgB,GAAM,IAAI,CAAC,MAAO,IAAY,CAChE,KAAM,CADyD,KACnD,EAAS,WAAW,GAChC,QAAS,EAAS,OAAO,CACzB,OAAQ,EAAS,MAAM,CACvB,WAAY,EAAS,UAAU,CACnC,CAAC,EAAG,OAAO,CAAC,KACZ,EAAU,kBAAkB,GAAK,CAAC,EAClC,OAAO,EAAU,kBAAkB,CAAC,GAAY,GAAG,AACvD,GAGA,EAAkB,KAAK,CAAC,QAAQ,KAAK,EACrC,EAAU,kBAAkB,CAAC,EAAS,CAAG,CAC7C,CAEJ,EAAkB,EAAM,KAAK,CAAC,IAAI,AACtC,CAER,CACA,GAAI,EAAiB,CACb,GACA,GAAiB,EAAW,EAAM,CAC9B,CAFQ,KAED,EACP,IAAK,cACL,EACA,YAAa,EAAoB,MAAQ,mBACzC,EACA,OAAQ,EAAgB,MAAM,EAAI,IAClC,OAAQ,CAAS,MAAR,EAAe,KAAK,EAAI,EAAK,MAAA,AAAM,GAAK,KACrD,GAEJ,IAAM,EAAW,IAAI,SAAS,OAAO,IAAI,CAAC,EAAgB,IAAI,CAAE,UAAW,CACvE,QAAS,EAAgB,OAAO,CAChC,OAAQ,EAAgB,MAC5B,AADkC,GAKlC,OAHA,OAAO,cAAc,CAAC,EAAU,MAAO,CACnC,MAAO,EAAgB,GAAG,AAC9B,GACO,CACX,CACJ,CACA,GAAI,GAAwB,UAAhB,OAAO,GAAqB,AAlyBhD,SAAS,AAAoC,CAAa,EAC1D,GAAI,CAAC,EACD,OAAO,EAEX,IAHoB,GAGb,EAAc,IAAI,EACrB,IAAK,YACL,IAAK,mBACL,IAAK,mBACL,IAAK,QACL,IAAK,gBACL,IAAK,iBACD,OAAO,CACX,KAAK,UAEL,IAAK,oBACL,IAAK,oBACL,IAAK,uBAHD,OAAO,AAAQ,CAKnB,SACI,OAAO,CACf,CACJ,EA6wBwF,GAAgB,CACxF,GAAM,OAAE,CAAK,CAAE,CAAG,EAGlB,GAAc,QAzxBsB,KAyxBhC,EAAsB,CAEtB,GAAI,EACA,OAAO,EAAc,IAAI,AADV,EAEX,IAAK,YACL,IAAK,YA9xB2E,OA+xBhF,IAAK,GA/xByF,eAAe,EAgyB7G,IAAK,oBAKD,OAJI,IACA,EAAY,OADC,AACM,GACnB,EAAc,MAEX,GAA0B,EAAc,YAAY,CAAE,EAAU,KAAK,CAAE,UAkBtF,CAEJ,GAA0B,EAAW,EAAe,CAAC,eAAe,EAAE,EAAM,CAAC,EAAE,EAAU,KAAK,CAAA,CAAE,CACpG,CACA,IAAM,EAAgB,SAAU,EAC1B,MAAE,EAAO,CAAC,CAAC,CAAE,CAAG,EACtB,GAAI,AAA2B,iBAApB,EAAK,UAAU,EAAiB,GAAmB,EAAK,UAAU,CAAG,EAAgB,UAAU,CAAE,CACxG,GAAwB,IAApB,EAAK,UAAU,CAAQ,CAEvB,GAAI,EACA,OAAO,EAAc,IADN,AACU,EACrB,IAAK,YACL,IAAK,mBACL,IAAK,oBACL,IAAK,oBACD,OAAO,GAA0B,EAAc,YAAY,CAAE,EAAU,KAAK,CAAE,UActF,CAEJ,GAA0B,EAAW,EAAe,CAAC,oBAAoB,EAAE,EAAM,CAAC,EAAE,EAAU,KAAK,CAAA,CAAE,CACzG,CACI,AAAC,EAAU,WAAW,EAAwB,GAAG,CAAvB,EAAK,UAAU,GACzC,EAAgB,UAAU,CAAG,EAAK,UAAU,AAAV,CAE1C,CACI,GAAe,OAAO,EAAK,IAAI,AACvC,CAIA,IAAI,IAAY,EAgDZ,OAAO,GAAgB,EAAO,EAhDM,EACpC,IAAM,EAAuB,EAC7B,EAAU,kBAAkB,GAAK,CAAC,EAClC,IAAI,EAAoB,EAAU,kBAAkB,CAAC,EAAqB,CAC1E,GAAI,EAAmB,CACnB,IAAM,EAAoB,MAAM,EAChC,OAAO,IAAI,SAAS,EAAkB,IAAI,CAAE,CACxC,QAAS,EAAkB,OAAO,CAClC,OAAQ,EAAkB,MAAM,CAChC,WAAY,EAAkB,UAAU,AAC5C,EACJ,CASA,IAAM,EAAkB,GAAgB,EAAM,GAI7C,IAAI,CAAC,IAsBN,MAFA,CAnBA,EALkE,AAK9C,EAAgB,IAAI,CAAC,MAAO,IAC5C,IAAM,EAAW,CAAS,CAAC,EAAE,CAC7B,MAAO,CACH,KAAM,MAAM,EAAS,WAAW,GARwF,AASxH,QAAS,EAAS,OAAO,CACzB,OAAQ,EAAS,MAAM,CACvB,WAAY,EAAS,UAAU,AACnC,CACJ,GAAG,OAAO,CAAC,KACP,IAAI,EAGE,CAAkE,OAAjE,EAAgC,EAAU,kBAAA,AAAkB,EAAY,KAAK,EAAI,CAA6B,CAAC,EAAA,AAAqB,GAAG,AAG9I,OAAO,EAAU,kBAAkB,CAAC,EAAqB,AAC7D,EAAA,EAGkB,KAAK,CAAC,KAAK,GAC7B,EAAU,kBAAkB,CAAC,EAAqB,CAAG,EAC9C,EAAgB,IAAI,CAAE,AAAD,GAAa,CAAS,CAAC,EAAE,CACzD,CAGJ,GACA,GAJW,AAIP,EACA,GAAI,CACA,OAAO,AAFE,MAEI,CACjB,QAAS,CACD,GACA,EAAY,OAAO,CADN,CAGrB,CAEJ,OAAO,CACX,EAeA,OAVA,EAAQ,aAAa,EAAG,EACxB,EAAQ,oBAAoB,CAAG,IAAI,EACnC,EAAQ,kBAAkB,CAAG,EAC7B,UAAU,CAAC,GAAkB,EAAG,EAGhC,OAAO,cAAc,CAAC,EAAS,OAAQ,CACnC,MAAO,QACP,UAAU,CACd,GACO,CACX,EAU4C,EAAU,EACtD,gCxE18BO,IAAM,GAAsB,IAAI,IAAI,CACvC,iBACA,gBACA,uBACA,WACA,UACA,iBAEA,OACA,QACA,UAEA,SAIA,cACA,aAEA,SACA,WACA,aAEA,aACH,EiEhCM,SAAS,GAAuB,CAAQ,EAC3C,OAAW,AAAJ,MAAU,CAAC,4BAA4B,EAAE,EAAW,CAAC,EAAE,EAAE,EAAS,CAAC,CAAC,CAAG,GAAG;AAAA,wEAAoI,CAAC,CAC1N,CAeA,IAKM,EALA,CAKsB,OAAO,GAAG,CAAC,yBACjC,GAA0B,sBA2QzB,SAAS,AAAsB,MAAE,CAAI,yBAAE,CAAuB,CAAE,sBAAuB,CAAwB,CAAE,EACpH,IAAM,EAAoB,EAAuB,CAAC,GAAoB,CAChE,EAAQ,GAAiB,GACzB,EAAwB,CAC1B,cAAe,EAAyB,aAAa,CAGrD,KAAM,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,MAAO,EAAyB,IAAI,EACtE,KAAM,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC,MAAO,EAAyB,IAAI,CAC1E,EACA,GAAI,EACA,EAAkB,eADC,iBAC+B,CAAC,GAAG,CAAC,EAAO,MAC1D,0BACA,CACJ,GACA,EAAkB,qBAAqB,CAAG,MACvC,CACH,IA7KE,IAgDA,EA6HI,EAAmC,IAAI,IAAI,CAC7C,CACI,EACA,MACI,EACA,yBACJ,EACH,CACJ,EACK,gCAAE,CAA8B,6BAAE,CAA2B,CAAE,GAAG,CAtLrD,IAAI,IACrB,EAAiC,IAAI,MAAM,CAAC,EAAG,CACjD,IAAK,CAAC,CAAE,CAAI,EACR,IAAM,EAAY,GAAA,gBAAgB,CAAC,QAAQ,GAC3C,OAAO,GACH,IAAK,gBACL,IAAK,gBACL,IAAK,eACD,CACI,GAAI,CAAC,EACD,MAAM,GADM,CACF,GAAe,CAAC,eAAe,EAAE,EAAK,uBAAuB,CAAC,EAE5E,IAAM,EAAqB,AA0KkE,EA1KjC,GAAG,CAAC,EAAU,KAAK,EAC/E,GAAI,CAAC,EACD,MAAM,IAAI,GAAe,CAAC,IADL,qCAC8C,EAAE,EAAU,KAAK,CAAC,iBAAiB,CAAC,EAE3G,OAAO,EAAmB,uBAAuB,CAAC,EAAK,AAC3D,CACJ,IAAK,gBACL,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,uBACD,CACI,IAAI,EAAQ,EAAe,GAAG,CAAC,EAC3B,EAAC,IACD,EAjHb,CAgHqB,GAhHjB,EAiHiB,IAjHX,CAAC,EAAG,CACjB,IAAK,CAAC,CAAE,CAAE,EACN,IAAM,EAAY,GAAA,gBAAgB,CAAC,QAAQ,GAC3C,GAAI,EAAW,CACX,IAAI,EACJ,IAAM,EAAkB,AAAmG,OAAlG,EAAwC,EAAiC,GAAG,CAAC,EAAU,MAAK,CAAC,CAAY,KAAK,EAAI,EAAsC,uBAAuB,CACxM,GAAuB,MAAnB,EAA0B,KAAK,EAAI,CAAe,CA2GnB,AA3GoB,EAAK,CAAC,EAAG,CAAE,CAC9D,GAAI,EAAU,sBAAsB,EAAI,AAAS,iBAAiB,IA9B1F,AAgCgC,SAhCvB,AAAgB,CAAa,EAClC,GAAI,CAAC,AA+BuC,EA9BxC,OAAO,EAEX,IAHoB,GAGb,EAAc,IAAI,EACrB,IAAK,QACL,IAAK,gBACD,OAAO,CACX,KAAK,UACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,mBACL,IAAK,oBACL,IAAK,oBACL,IAAK,uBACD,OAAO,CACX,SACI,OAAO,CACf,CACJ,EAWkD,GAAA,oBAAoB,CAAC,QAAQ,IACf,CAehC,IAAM,EAA+B,EAAgB,aAAa,CAAC,EAAG,CACtE,MAAO,IAEH,EACA,KAAM,EAA6B,IAAI,CAIvC,OAAQ,CACJ,OACH,CACD,OAAO,CACX,CACJ,CAEJ,OAAO,CAAe,CAAC,EAAK,CAAC,EAAG,AACpC,CA6BJ,MAOI,CAPG,GAOE,GAAM,yBAAE,CAAuB,CAAE,GAAI,EAAiC,MAAM,GAAG,CAChF,IAAM,EAAQ,CAAuB,CAAC,EAAK,CAAC,EAAG,CAC/C,QAAc,IAAV,EACA,KADqB,EACd,CAEf,CAGR,CACJ,GA6BoB,EAAe,GAAG,CAAC,EAAM,IAE7B,OAAO,CACX,CACJ,QAEQ,MAAM,IAAI,GAAe,CAAC,2DAA2D,EAAE,OAAO,GAAM,iBAAiB,CAAC,CAElI,CACJ,CACJ,KAWoC,IAAI,MAAM,CAAC,EAAG,CAC9C,IAAK,CAAC,CAAE,CAAG,EACP,IAAM,EAAY,GAAA,gBAAgB,CAAC,QAAQ,GAC3C,IAAI,IAAa,EAAU,sBAAsB,CAW7C,OAAO,EAA+B,gBAAgB,CAAC,EAXR,AAWY,EAV3D,IAAI,EACJ,IAAM,EAAkB,AAAmG,OAAlG,EAAwC,EAAiC,GAAG,CAAC,EAAU,MAAK,CAAC,CAAY,KAAK,EAAI,EAAsC,uBAAuB,CAElM,EAAkD,MAAnB,EAA0B,KAAK,EAAI,EAAgB,aAAa,CADzE,AAC0E,EAAoB,CAC1H,QAAqC,IAAjC,EACA,KAD4C,EACrC,AAEX,IAAM,EAAiB,EAA6B,EAAE,CACtD,OAA0B,MAAnB,EAA0B,KAAK,EAAI,EAAgB,gBAAgB,CAAC,EAAe,AAC9F,CAGJ,CACJ,GACO,EALQ,8BAMX,8BACA,CACJ,GAkHI,EAAuB,CAAC,GAAoB,CAAG,kCAC3C,EACA,6DACA,wBACA,EACA,gBA/GD,CA+GkB,GA/Gd,MAAM,OAAO,MAAM,CAAC,MAAO,CAClC,IAAK,CAAC,EAAQ,EAAI,SACV,EAA+B,QAiB/B,EAdJ,GAAkB,UAAU,AAAxB,OAAO,GAGP,GAAoB,GAAG,CAAC,GAFxB,EAE6B,KAFtB,QAAQ,GAAG,CAAC,EAAQ,EAAI,GAKnC,G1CtO8B,C0CsO1B,CAAC,G1CpON,A0CoO+B,E1CpO5B,G0CoOiC,G1CpO3B,KAAK,E0CqOT,MAAM,CApNZ,EAAU,KAAK,SAAS,CAAC,AAoNoB,EApNjB,MAAM,CAME,EANC,EAAwC,EAAG,KAAK,CAAC,EAOnD,CAPsD,GAAwC,MAAM,CACtI,AAAI,MAAM,CAAC,oEAAoE,EAAE,EAAQ;AAAA,wEAA2E,CAAC,CAmNzH,CAE3C,IAAM,EAA8H,OAAnH,AAA0H,CAA3H,CAA8B,AAqG1D,AAyBW,GA9HiJ,MAqGnJ,EACL,IAAM,EAAoB,EAAuB,CAAC,GAAoB,CACtE,EAvGgF,CAAC,AAuG7E,CAAC,EACD,MAAM,IAAI,GAAe,IADL,kBAvG+F,0BA0GvH,OAAO,CACX,IAmBmC,qBAAqB,CA9H4E,IAAA,AAAO,GAAqB,AAAoE,OAAnE,EAAgC,CAA0B,CAAC,EAAA,AAAG,EAAY,KAAK,EAAI,EAA8B,OAAO,CAC7Q,GAAI,CAAC,EACD,MAAM,CADI,EACmB,GAEjC,IAAM,EAAY,GAAA,gBAAgB,CAAC,QAAQ,GAc3C,GAAI,CAAC,CAXD,EADA,EACc,CAAO,CA6B7B,AAAJ,AA7BkC,GA4BM,EA5BkB,CAWhC,CAX0C,AAD7C,IACiD,AA4BxB,CACpB,EAAV,KACP,CADyB,CAG7B,MAAQ,EAhC2D,CAShD,OAAO,MAAM,CAAC,GAAS,EAAE,CAAC,IAGxC,MAAM,GAAuB,GAEjC,GAAM,CAAE,UAAQ,OAAE,CAAK,YAAE,CAAU,CAAE,CAAG,EACxC,MAAO,CACH,GAAI,EACJ,KAAM,EACN,OAAQ,EAAE,OACV,aACA,CACJ,CACJ,CACJ,EAoEI,CACJ,CACJ,UjB5QmC,OAFO,AAEA,CAFC,mBAAmB,CAAC,EAGxD,IAAM,GAAyB,OAJM,AAIC,CAJA,kBAAkB,CAAC,ExB9DzD,IAAIA,IACP,CADmD,EAKrD,CAAC,EAJmB,CAAC,EAAmB,QAAW,AADrB,CACwB,CADiB,GACb,CAAG,EAAtB,GADE,GAAGA,GAE1C,CAAkB,CAAC,EAAmB,gBAAD,CAAqB,CAAG,IAAI,CAAG,oBACpE,CAAkB,CAAC,EAAmB,gBAAD,CAAqB,CAAG,IAAI,CAAG,oBAC7D,EUFJ,OAAM,GACT,YAAY,CAAM,CAAE,CAAG,CAAE,CAAI,CAAC,CAC1B,IAAI,CAAC,MAAM,CAAG,EACd,IAAI,CAAC,GAAG,CAAG,EACX,IAAI,CAAC,IAAI,CAAG,CAChB,CAEA,IAAI,SAAU,cACV,AAAI,IAAI,CAAC,QAAQ,CAAS,CAAP,GAAW,CAACA,QAAQ,CAChC,IAAI,CAAC,QAAQ,CAAG,CMRK,ENQW,IAAI,CMRR,ANQS,OAAO,CMPhD,SAAS,EACZ,GAAM,QAAE,CAAM,CAAE,CAAG,EACnB,GAAI,CAAC,EACD,MADS,AACF,CAAC,EAEZ,GAAM,CAAE,MAAO,CAAa,CAAE,CAAA,EAAA,CAAA,CAAA,OAC9B,OAAO,EAAc,MAAM,OAAO,CAAC,GAAU,EAAO,IAAI,CAAC,MAAQ,EACrE,INCA,CACJ,CACO,MAAM,GACT,YAAY,CAAW,CAAC,CACpB,IAAI,CAAC,WAAW,CAAG,CACvB,CAEA,SAAS,CAAW,CAAE,CAAU,CAAE,CAQ9B,OAPA,IAAI,CAAC,SAAS,CAAC,WAAY,GAC3B,IAAI,CAAC,UAAU,CAAG,EAGd,IAAe,GAAmB,iBAAiB,EAAE,AACrD,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,MAAM,EAAE,EAAA,CAAa,EAE7C,IAAI,AACf,CACJ,CGzBO,MAAM,WAAwB,GACjC,QAAO,CAAA,AAAE,CAAU,EAAqB,AAA5B,EAA8C,AAC1D,aAAY,CAAI,CAAC,CACb,IAAI,EACJ,KAAK,CAAC,EAAK,MAAM,CAAC,WAAW,GAAI,EAAK,GAAG,CAAE,GAAO,IAAI,CAAC,IAAI,CAAG,EAAM,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAE,IAAI,CAAC,YAAY,CAA+B,AAA5B,OAAC,EAAa,IAAI,CAAC,IAAA,AAAI,EAAY,KAAK,EAAI,EAAW,YAAY,CAAE,IAAI,CAAC,EAAmB,CAAG,IAAI,CAAC,IAAI,CAAC,GAAkB,EAAI,CAAC,EAAG,IAAI,CAAC,SAAS,EAAG,CACnR,CACA,IAAI,iBAAkB,CAMlB,OAHA,IAAI,CAAC,IAAI,CAAC,GAAkB,CAAG,IAAI,CAAC,GAAkB,CACtD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,OAAO,CACzB,IAAI,CAAC,IAChB,AADoB,CAEpB,IAAI,gBAAgB,CAAK,CAAE,CACvB,IAAI,CAAC,IAAI,CAAG,CAChB,CAOE,QAAS,CACP,GAAI,IAAI,CAAC,SAAS,CACd,CADgB,KACV,AAAI,MAAM,+DAGpB,OADA,IAAI,CAAC,SAAS,EAAG,EACV,IAAI,eAAe,CACtB,MAAO,AAAC,IACJ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAQ,AAAC,IAClB,EAAW,OAAO,CAAC,IAAI,WAAW,GACtC,GACA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAO,KAChB,EAAW,KAAK,EACpB,GACA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAS,AAAC,IACnB,EAAW,KAAK,CAAC,EACrB,EACJ,CACJ,EACJ,CACJ,C+BrCW,eAAe,GAAa,CAAG,CAAE,CAAG,CAAE,CAAQ,CAAEA,CAAS,EAGA,CAC5D,IACA,EAEA,EAAI,UAAU,CAAG,EAAS,MAAM,CAChC,EAAI,aAAa,CAAG,EAAS,UAAU,CAMvC,IAAM,EAAmC,CAErC,aACA,mBACA,qBACA,OAEsC,AADzC,AACD,OAAiD,CAAhD,EAAoB,EAAS,AAAwB,OAAxB,AAAO,GAAqB,EAAkB,OAAO,CAAC,CAAC,EAAO,KAExF,GAA2B,AAAvB,2BAAkD,GAA7C,WAAW,GAIpB,GAA2B,cAAc,CAArC,EAAK,WAAW,GAEhB,IAAK,IAAM,KAAU,GAAmB,GACpC,EAAI,EADuC,UAC3B,CAAC,EAAM,OAExB,CAGH,IAAM,EAAkB,AAA+B,SAAxB,EAAI,SAAS,CAAC,EACzC,IAAiC,QAAQ,CAAC,EAAK,WAAW,KAAO,CAAC,CAAA,GAAiB,AACnF,EAAI,YAAY,CAAC,EAAM,EAE/B,CACJ,GAMA,GAAM,kBAAE,CAAgB,CAAE,CAAG,CAEzB,GAAS,IAAI,EAAI,AAAe,QAAQ,GAAnB,MAAM,CAC3B,MAAM,GAAmB,EAAS,IAAI,CAAE,EAAkB,GAE1D,EAAiB,GAAG,EAE5B,CACJ,qB/BhBO,MAAM,QAAyB,GAClC,IAAI,kBAAmB,CAInB,OAHI,MAA0B,IAAI,EAAE,CAChC,IAAI,CAAC,IAAI,CAAC,GAAuB,CAAG,IAAI,CAAC,GAAuB,AAAvB,EAEtC,IAAI,CAAC,IAAI,AACpB,CACA,YAAY,CAAI,CAAC,CACb,KAAK,CAAC,GAAO,IAAI,CAAC,IAAI,CAAG,EAAM,IAAI,CAAC,QAAQ,MAAG,CACnD,CACA,IAAI,MAAO,CACP,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAI,IAAI,CAAC,IAAI,CAAC,WAAW,AACtD,CACA,IAAI,YAAa,CACb,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,AAC/B,CACA,IAAI,WAAW,CAAK,CAAE,CAClB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAG,CAC3B,CACA,IAAI,eAAgB,CAChB,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,AAClC,CACA,IAAI,cAAc,CAAK,CAAE,CACrB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAG,CAC9B,CACA,UAAU,CAAI,CAAE,CAAK,CAAE,CAEnB,OADA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAM,GACnB,IAAI,AACf,CACA,aAAa,CAAI,CAAE,CAEf,OADA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAChB,IAAI,AACf,CACA,gBAAgB,CAAI,CAAE,CAClB,IAAM,EAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GACnC,GAAI,KAAW,MACf,KAD0B,CACnB,AAAC,MADyB,CACnB,OAAO,CAAC,GAAU,EAAS,CACrC,EACH,EAAE,GAAG,CAAC,AAAC,GAAQ,EAAM,QAAQ,GAClC,CACA,UAAU,CAAI,CAAE,CACZ,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAC/B,CACA,UAAU,CAAI,CAAE,CACZ,IAAM,EAAS,IAAI,CAAC,eAAe,CAAC,GACpC,OAAO,MAAM,OAAO,CAAC,GAAU,EAAO,IAAI,CAAC,KAAO,MACtD,CACA,YAAa,CACT,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAC/B,CACA,aAAa,CAAI,CAAE,CAAK,CAAE,CACtB,IAAM,EAAgB,IAAI,CAAC,eAAe,CAAC,IAAS,EAAE,CAOtD,OANI,AAAC,EAAc,QAAQ,CAAC,IACxB,IADgC,AAC5B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAM,IACnB,EACH,EACH,EAEE,IAAI,AACf,CACA,KAAK,CAAK,CAAE,CAER,OADA,IAAI,CAAC,QAAQ,CAAG,EACT,IAAI,AACf,CACA,MAAO,CACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAC/B,CACA,QAAQ,CAAQ,CAAE,CACd,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAS,EACtC,CACJ,qBZrHO,SAAS,AAAoB,CAAM,SACtC,AAAI,EAAO,oBAAoB,CACpB,CADsB,WAG7B,EAAO,kBAAkB,CAClB,CADoB,aAInC,2CKPO,SAAS,AAAsB,YAAE,CAAU,CAAE,QAAM,CAAE,EACxD,IAAM,EAAkC,UAAtB,OAAO,GAA2B,KAAW,OAAa,EAAa,EAAS,CAAC,yBAAyB,EAAE,EAAS,EAAA,CAAY,CAAG,UACtJ,AAAmB,GAAG,CAAlB,EACO,0DACsB,UAAtB,AAAgC,OAAzB,EACP,CAAC,SAAS,EAAE,EAAA,EAAa,EAAA,CAAW,CAExC,CAAC,SAAS,EAAE,QAAyB,GAAW,AAC3D,SYNW,OAAM,GACb,YAAY,EAAc,EAAE,CAAC,CACzB,IAAI,CAAC,WAAW,CAAG,CACvB,CACA,KAAK,CAAU,CAAE,CACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAC1B,CACA,UAAU,CAAQ,CAAE,CAChB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAY,IAAa,EAAW,SAAS,CAAC,GAAa,EAC/F,CACJ,CNXW,MAAM,GACb,UAAU,CAAQ,CAAE,CAChB,OAAO,EAAS,OAAO,CAAC,OAAQ,IACpC,CACJ,CoBAAA,IAAM,GAAwB,ILFvB,AKE2B,MLFrB,QAA8B,GACvC,aAAa,CACT,KAAK,CAAC,CzBLH,CACH,UyBOqB,CzBPV,CACf,EyBQQ,IAAI,GACP,CACL,CACA,UAAU,CAAI,CAAE,CACZ,OAAO,KAAK,CAAC,UAAU,EAC3B,CACJ,aKIW,SAAS,AAAkB,CAAQ,CAAE,CAAK,CAAE,CAAS,CAAE,CAAO,EACrE,GAAI,CAAC,EACD,OAAO,EADK,AAKhB,IAAM,EAA+B,OAAxB,EAAU,SAAS,CAAY,EAAU,SAAS,CAAG,EAAU,SAAS,CAAC,QAAQ,CAAC,SAAW,EAAU,KAAK,CAAG,EAAU,SAAS,CAAC,QAAQ,CAAC,QAAU,EAAU,QAAQ,MAAG,SACpL,AAAJ,IAAa,EAAM,IAAI,EAKhB,AADgB,AAJE,EAGV,QACkB,KADJ,EAAY,EAEf,AAFyB,QAAQ,CAAG,EAAU,mBAAA,AAAmB,IACzD,IAAS,EAAU,KAAK,CAAG,GAAoB,EAAU,GAAS,QAAQ,CAAG,CAAA,CAAQ,IAC5F,KAAS,EAAU,KAAK,CAAG,EAAM,WAAW,CAAG,GAAsB,SAAS,CAAC,EAAM,YAAW,CAAC,AAChI,kFkBlCaC,sBAAsB,CAAA,kBAAtBA,GAEAC,oBAAoB,CAAA,kBAApBA,GACAC,yBAAyB,CAAA,kBAAzBA,GAFAC,sBAAsB,CAAA,kBAAtBA,uEADN,IAAMH,EAAyB,6BACzBG,EAAyB,6BACzBF,EAAuB,2BACvBC,EAA4B,yGCyCzBE,cAAc,CAAA,kBAAdA,GAbHC,iBAAiB,CAAA,kBAAjBA,GAtBAC,kBAAkB,CAAA,kBAAlBA,GAgDGC,6BAA6B,CAAA,kBAA7BA,uEAhDT,IAAMD,EAAqB,AAACE,IAOjCC,QAAQC,OAAO,GAAGC,IAAI,CAAC,KAInBC,QAAQI,QAAQ,CAACR,EAErB,EACF,EAQaH,EAAoB,AAACG,IAI9BS,aAAaT,EAEjB,EAOO,SAASJ,IACd,OAAO,IAAIK,QAAc,AAACC,GAAYL,EAAkBK,GAC1D,CAWO,SAASH,IAIZ,OAAO,IAAIE,QAAQ,AAACS,GAAMD,aAAaC,GAE3C,0ECpDgBC,sBAAsB,CAAA,kBAAtBA,GAwDAC,kCAAkC,CAAA,kBAAlCA,GA4LAC,mCAAmC,CAAA,kBAAnCA,GAnHAC,0BAA0B,CAAA,kBAA1BA,GAuJAC,uCAAuC,CAAA,kBAAvCA,GA/MAC,+BAA+B,CAAA,kBAA/BA,GAgJAC,mCAAmC,CAAA,kBAAnCA,GAjBAC,mCAAmC,CAAA,kBAAnCA,GAhBAC,0BAA0B,CAAA,kBAA1BA,GAkIAC,uCAAuC,CAAA,kBAAvCA,GAnSAC,+BAA+B,CAAA,kBAA/BA,GA8DAC,uBAAuB,CAAA,kBAAvBA,GAuDAC,uBAAuB,CAAA,kBAAvBA,GA1GAC,qCAAqC,CAAA,kBAArCA,GAyEAC,6BAA6B,CAAA,kBAA7BA,GAuDAC,6BAA6B,CAAA,kBAA7BA,GA8FAC,4CAA4C,CAAA,kBAA5CA,GAmCAC,gDAAgD,CAAA,kBAAhDA,GAkCAC,gDAAgD,CAAA,kBAAhDA,GAxRAC,mCAAmC,CAAA,kBAAnCA,GAyEAC,2BAA2B,CAAA,kBAA3BA,GAuDAC,2BAA2B,CAAA,kBAA3BA,GAxLAC,sBAAsB,CAAA,kBAAtBA,GAuBAC,kCAAkC,CAAA,kBAAlCA,GA6NAC,mCAAmC,CAAA,kBAAnCA,GAzIAC,0BAA0B,CAAA,kBAA1BA,GA8KAC,uCAAuC,CAAA,kBAAvCA,GAvHAC,0BAA0B,CAAA,kBAA1BA,GAyJAC,uCAAuC,CAAA,kBAAvCA,GAkCAC,iBAAiB,CAAA,kBAAjBA,uEA7VT,SAASP,EAAuBQ,CAAa,EAClD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,4DAA4D;AAGzE;AAAA,0DAA8F,CAAC,GAChG,CAAC,8EAA8E,CAAC,GAChF,CAAC;AAAA;AAAA,UAAuE,CAAC;AAIxE;AAEa,sCAA6D;AAC1E;AAAA,uEAVmB,CAAC,AAFsD,CAOjF,CAEO,CAND,AAFA,CAAC,AAEA,OAMS9B,EAAuB8B,CAAa,EAClD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,4BACuK,CAAC,GACtL,sIAZgN,CAAC,GACjN;AAYC;AAAA,yDAA8F,CAAC,GAChG,CAAC,6FAA6F,CAAC,GAC/F,CAAC;AAAA;AAAA;AAAA,uCAA8E,CAAC,GAChF,CAAC;AAAA,qBAAuE,CAAC;AAKlErM;AACO;AAAA,kBAA4E,qDAVtE,CAAC,AAFuD,CAQlF,CAEO,CAPD,AAFA,CAEC,AAFA,OASS8L,EAAmCO,CAAa,EAC9D,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa;AAGb;AAAA,0CAA8F,CAAC,GAChG,CAAC,8EAA8E,CAAC,GAChF,CAAC,uEAAuE,CAAC;AAIxE;AAASpB;AAAAA;AAEI,gCAAwE;AACrF;AAAA,uEAVmB,CAAC,AAFsE,CAOjG,CAEO,CAND,AAFA,CAEC,AAFA,OAQSA,EAAgCoB,CAAa,EAC3D,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,CACkJ,CAAC,AAC1J,GAAD,CAFc,gLAV4M,CAAC,GAC3N;AAYC;AAAA,8CAA8F,CAAC,GAChG,CAAC,8EAA8E,CAAC,GAChF,CAAC;AAAA;AAAA;AAAA,6BAAmE,CAAC;AAKzE;AACkB;AAAA,gCAAgF,mCAT1E,CAFmE,AAElE,CAK3B,CAEO,CARD,AAEA,CAFC,AAEA,OAMSjB,EAAsCiB,CAAa,EACjE,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa;AAGb;AAAA,gEAAwH,CAAC,GAC1H,CAAC;AAAA;AAAA,UAA8E,CAAC,GAChF,CAAC;AAAA,iEAAqE,CAAC;AAIzBA;AAEhC;AAAA,sCAA8E,+BATxE,CAF2E,AAE1E,CAK3B,CAEO,CAND,AAFA,CAEC,AAFA,OAQSX,EAAoCW,CAAa,EAC/D,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,gGAV4H,CAAC,GAC3I;AAYC;AAAA,gEAAsH,CAAC,GACxH,CAAC;AAAA;AAAA,YAA8E,CAAC,GAChF,CAAC;AAAA,mEAAqE,CAAC;AAI1BA;AAE/B;AAAA,wCAA6E,6BATvE,CAFyE,AAExE,CAK3B,CAEO,CARD,AAEA,CAAC,AAFA,OAQS7B,EAAmC6B,CAAa,EAC9D,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,8FAV0H,CAAC,GACzI;AAYC;AAAA,yCAA8F,CAAC,GAChG,CAAC,6FAA6F,CAAC,GAC/F,CAAC;AAAA;AAAA;AAAA,aAA8E,CAAC,GAChF,CAAC,uEAAuE,CAAC;AAE/E;AASoB,+DAAwE;AACrF;AAAA,uEAhBmB,CAAC,AAFuE,CAQlG,CAOO,CAZD,AAFA,CAEC,AAFA,OAcSzB,EAAgCyB,CAAa,EAC3D,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,kHACoO,CAAC,GACnP,+BAlB+L,CAAC,GAChM;AAkBC;AAAA,8CAA8F,CAAC,GAChG,CAAC,uIAAuI,CAAC,GACzI,CAAC;AAAA;AAAA;AAAA,SAA8E,CAAC,GAChF,CAAC,uEAAuE,CAAC;AAIxE;;AAGA;AAAA,uEAXmB,CAFmE,AAElE,CAM3B,CAEO,CATD,AAEA,CAFC,AAEA,OAOSnB,EAAwBmB,CAAa,EACnD,OAAO,AAAIrM,MACT,CAAC,OAAO,CACmL,CADjLqM,AACkL,EACzL,CAAD,GAFc,8DAA8D;AAG3E;AAAA,uCAA6E,CAAC,GAC/E,CAAC,+GAA+G,CAAC,GACjH,CAAC;AAAA;AAAA;AAAA,qCAAgF,CAAC;AAIxEL;AAEI,CAAkE;gFAT5D,CAAC,AAFwD,CAOnF,CAEO,CAND,AAFA,CAEC,AAFA,OAQSA,EAA2BK,CAAa,EACtD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa;AAGb;AAAA,mCAA6E,CAAC,GAC/E,CAAC,+GAA+G,CAAC,GACjH,CAAC;AAAA;AAAA;AAAA,MAAgF,CAAC;;AAOjF;AAAA,gFAVmB,CAAC,AAF4D,CAOvF,CAEO,CAND,AAFA,CAEC,AAFA,OAQShB,EAA8BgB,CAAa,EACzD,CAE2H,CAAC,GACxH,EAHG,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,sEAAsE,oGAVgI,CAAC,GACrN;AAYC;AAAA,oBAAkE,CAAC,GACpE,CAAC;AAAA;AAAA,eAA4G,CAAC;AAC9G,CAAC;AAAA,aAA8E,CAAC;AAMlE;AAAA,0DAAoE,oBAT9D,CAAC,AAFgE,CAO3F,CAEO,CAND,AAFA,CAAC,AAEA,OAMSV,EAA4BU,CAAa,EACvD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa;AAGb;AAAA,oBAAgE,CAAC,GAClE,CAAC,0GAA0G,CAAC,GAC5G,CAAC;AAAA;AAAA;AAAA,sDAA8E,CAAC;AAI/E;AAEa;AAAA,mCAAmE,2CAT7D,CAF+D,AAE9D,CAK3B,CAEO,CARD,AAEA,CAAC,AAFA,OAQS3B,EAA2B2B,CAAa,EACtD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,oGAVgI,CAAC,GAC/I;AAYC;AAAA,yEAAoH,CAAC,GACtH,CAAC;AAAA;AAAA,KAA+G,CAAC,GACjH,CAAC;AAAA,uEAAgF,CAAC;AAInC;AAG9C;AAAA,gFAVmB,CAF8D,AAE7D,CAK3B,CAEO,CARD,AAEA,CAAC,AAFA,OAQSlB,EAAwBkB,CAAa,EACnD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,KAC8H,CAAC,GAC7I,qDAF4E,iFAV6G,CAAC,GAC1L;AAYC;AAAA,uCAA6E,CAAC,GAC/E,CAAC,8EAA8E,CAAC,GAChF,CAAC;AAAA;AAAA;AAAA,iDAAgF,CAAC;AAIxEH;AAEI;AAAA,4CAAkE,oCAT5D,CAAC,AAFwD,CAOnF,CAEO,CARD,AAEA,CAFC,AAEA,OAMSA,EAA2BG,CAAa,EACtD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa;AAGb;AAAA,mCAA6E,CAAC,GAC/E,CAAC,8EAA8E,CAAC,GAChF,CAAC;AAAA;AAAA;AAAA,cAAgF,CAAC;AAK/E;AACW;AAAA,gBAAsE,gEAThE,CAF6D,AAE5D,CAK3B,CAEO,CAND,AAFA,CAAC,AAEA,OAMSf,EAA8Be,CAAa,EACzD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,iIAV6J,CAAC,GAC5K;AAYC;AAAA,oBAAkE,CAAC,GACpE,CAAC;AAAA;AAAA;AAAA,OAA4F,CAAC,GAC9F,CAAC;AAAA,wBAA8E,CAAC;AAKzErM;AAAAA,8EARa,CAFiE,AAEhE,CAK3B,CAEO,CAND,AAFA,CAEC,AAFA,OAQS4L,EAA4BS,CAAa,EACvD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,kDAV8E,CAAC,GAC7F,cASkF;AAGjF;AAAA,oBAAgE,CAAC,GAClE,CAAC;AAAA;AAAA;AAAA,OAA4F,CAAC,GAC9F,CAAC;AAAA,0BAA8E,CAAC;AAKzErM;AAAAA,8EARa,CAF+D,AAE9D,CAK3B,CAEO,CAND,AAFA,CAAC,AAEA,OAMS+K,EAA2BsB,CAAa,EACtD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,kDAV8E,CAAC,GAC7F,aASiF;AAGhF;AAAA,8EAAyH,CAAC,GAC3H,CAAC;AAAA;AAAA,kBAA8E;AAAC,GAChF,CAAC,gFAAgF,CAAC;AASxEvB;AAEI;AAAA,wDAA8E,wBAdxE,CAF8D,AAE7D,CAK3B,CAOO,CAXD,AAFA,CAEC,AAFA,OAaSA,EAAoCuB,CAAa,EAC/D,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,sGAfkI,CAAC,GACjJ;AAiBC;AAAA,uBAA6E,CAAC,GAC/E,CAAC,mKAAmK,CAAC;AAAA,CACrK;AAAC;AAAA,2DAA8E,CAAC,GAChF,CAAC;AAAA,mEAAgF,CAAC;AAWpE,2EAA8E;AAAC;AAAA,CAC7F,CAAC,8EAhBmB,CAAC,AAFwE,CAQnG,CAOO,CAdD,AAEA,CAFC,AAEA,EAeqF,CAAC,GACvF,CAJUxB,EAAoCwB,CAAa,EAC/D,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,2JAhBuL,CAAC,GACtM;AAkBC;AAAA,uBAA6E,CAAC,GAC/E,CAAC;AAAA;AAAA;AAAA,wCAAoH,CAAC,GACtH,CAAC;AAAA,+EAA+G,CAAC,GACjH,CAAC;AAAA,gDAAgF,CAAC;AAStF;AAAA,gFAbwB,CAAC,CAM3B,CAMO,CAXD,CAAC,OAWSN,EAAoCM,CAAa,EAC/D,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAIP,IAJa,6EAA6E;AAK1F;AAAA,qCAAiE,CAAC;AAMrD;AAAA;AAA8E;AAC3F;AAAA;AAAA,iEAR4C,CAJ+C,AAI9C,CAGpD,CAEO,CAJD,AAJA,CAIC,AAJA,KAWuJ,CAAC,CAH/I5B,EAAoC4B,AAI9C,CAJ2D,AAI1D,EAHL,OAAO,AAAIrM,MACT,CAAC,GAEqB,CAAC,GAFf,AAGN,CAAC,CAHOqM,EAKP,IALa,sFAGgF,CAAC,GAC/F,CAAC,qCAAqC,CAAC,GACvC,gBAf8L,CAAC,GAC/L,CAAC,mBAAmB,CAAC,GACrB,CAAC,qCAAqC,CAAC,GACvC;AAaC;AAAA,oCAAiE,CAAC;AAQrD;AAAA;AAAA,yDAAyF;AACtG;AAAA,8BAAkG,CAAC,GACpG,CAAC;AAAA;AAAA,UAAmB,CAAC,GACrB,CAAC,kDAZ4C,CAAC,AAL+C,CAQnG,CAEO,CATD,AAKA,CALC,AAKA,OAISd,EACdc,CAAa,EAEb,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAKP,IALa,uCAG0H,CAAC,GACzI,CAAC,qCAAqC,CAAC,GACvC;AACC;AAAA,yBAAiE,CAAC;AAKhE;AAAA;AACKA,KAAM,uGAAuG;AACpH;AAAA;AAAA;AAAA,iEAR4C,CAAC,AAL0D,CAQ9G,CAEO,CAJD,AALA,CAKC,AALA,OASSJ,EAAwCI,CAAa,EACnE,IAEkM,CAAC,EAFxLrM,CAGP,KAFF,CAAC,OAAO,EAAEqM,EAEP;AACA;AAAA,UAAyF,CAAC,GAC3F,CAAC,oEAAoE,CAAC;AAMxD;AAAA;AAAA,4EAAwG;AACrH;AAAA,oEATmB,CAAC,AAFiG,CAM5H,CAEO,CALD,AAFA,CAEC,AAFA,OAOS1B,EAAwC0B,CAAa,EACnE,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,6BAC0I,CAAC,GACzJ;AACC;AAAA,qCAAqH,CAAC,GACvH,CAAC,yFAAyF,CAAC,GAC3F,CAAC;AAAA;AAAA;AAAA,kCAAoE,CAAC;AAOnE;AACW;AAAA,iDAAmH,mBAX7G,CAAC,AAFkG,CAO7H,CAEO,CAND,AAFA,CAAC,AAEA,OAMSb,EACda,CAAa,EAEb,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa;AAGb;AAAA,6CAAwI,CAAC,GAC1I,CAAC;AAAA;AAAA;AAAA,sBAAyF,CAAC,GAC3F,CAAC,oEAAoE,CAAC;AAI5DF;AAEI;AAAA,oEATM,CAAC,AAF6G,CAOxI,AAI2H,CAFpH,CAND,AAFA,CAAC,AAEA,OAMSA,EAAwCE,CAAa,EACnE,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,yDAVqF,CAAC,GACpG;AAYC;AAAA,UAAyF,CAAC,GAC3F,CAAC,oEAAoE,CAAC;AAMxD;AAAA;AAAA,4EAAwG;AACrH;AAAA,oEATmB,CAAC,AAFiG,CAM5H,CAEO,CALD,AAFA,CAEC,AAFA,OAOSrB,EAAwCqB,CAAa,EACnE,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa,6BAC0I,CAAC,GACzJ,mHAX8L,CAAC,GAC/L;AAWC;AAAA,qCAAqH,CAAC,GACvH,CAAC,yFAAyF,CAAC,GAC3F,CAAC;AAAA;AAAA;AAAA,kCAAoE,CAAC;AAOnE;AACW;AAAA,iDAAmH,mBAX7G,CAFmG,AAElG,CAK3B,CAEO,CARD,AAEA,CAAC,AAFA,OAQSZ,EACdY,CAAa,EAEb,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAEP,IAFa;AAGb;AAAA,6CAAwI,CAAC,GAC1I,CAAC;AAAA;AAAA;AAAA,sBAAyF,CAAC,GAC3F,CAAC,oEAAoE,CAAC;AAI7B;AAGxC;AAAA,uDAAsF,aAVnE,CAF8G,AAE7G,CAK3B,CAEO,CAND,AAFA,CAEC,AAFA,OAQSD,EAAkBC,CAAa,EAE3CE,QAAQ9L,KAAK,CACX,CAAC,AACE,uEAZgG,CAAC,GACpG;AAWqF,0EAAR,EAAE4L,EAAM;qGAA6C,CAD1C,AAC2C,CAQzI,EARQ,AACA,CAAC,gBC9UR,OAAA,cAAA,CAAA,EAAA,aAAA,gBAgxBWI,EA+cAC,KA/cAD,OA+cAC,CA/cAD,OAAe,CAAA,SDlcmF,CAAC,QCkcnGA,GA+cAC,YAAY,CAAA,kBAAZA,IA/4BIC,2CAA2C,CAAA,kBAA3CA,GA/BAC,kCAAkC,CAAA,kBAAlCA,GAoFAC,mBAAmB,CAAA,kBAAnBA,GAwHAC,qBAAqB,CAAA,kBAArBA,GAlHAC,oBAAoB,CAAA,kBAApBA,GA3RAC,0BAA0B,CAAA,kBAA1BA,GAWAC,4BAA4B,CAAA,kBAA5BA,GA4UAC,6BAA6B,CAAA,kBAA7BA,GAoXAC,4BAA4B,CAAA,kBAA5BA,GAraAC,wBAAwB,CAAA,kBAAxBA,GAq8BAC,iCAAiC,CAAA,kBAAjCA,IA7sCAC,qBAAqB,CAAA,kBAArBA,GA00CAC,qCAAqC,CAAA,kBAArCA,IApEAC,sCAAsC,CAAA,kBAAtCA,IA5hCAC,2BAA2B,CAAA,kBAA3BA,GA62BAC,yBAAyB,CAAA,kBAAzBA,IA1kCAC,yBAAyB,CAAA,kBAAzBA,GA+lCAC,wBAAwB,CAAA,kBAAxBA,IAuEAC,qCAAqC,CAAA,kBAArCA,IApFAC,iBAAiB,CAAA,kBAAjBA,IA9gCAC,gCAAgC,CAAA,kBAAhCA,GAwfAC,yBAAyB,CAAA,kBAAzBA,GAzGAC,+BAA+B,CAAA,kBAA/BA,GAtXAC,+BAA+B,CAAA,kBAA/BA,GAmlBAC,4BAA4B,CAAA,kBAA5BA,GAwTAC,6BAA6B,CAAA,kBAA7BA,IAzEAC,4BAA4B,CAAA,kBAA5BA,0EA7iCE,CAAA,CAAA,IAAA,WAEiB,CAAA,CAAA,IAAA,OACG,CAAA,CAAA,IAAA,OACO,CAAA,CAAA,IAAA,OACJ,CAAA,CAAA,IAAA,MAMlC,CAAA,CAAA,IAAA,OAC4B,CAAA,CAAA,IAAA,OAgC5B,CAAA,CAAA,IAAA,MACwB,CAAA,CAAA,IAAA,OAKxB,CAAA,CAAA,IAAA,OAIA,CAAA,CAAA,IAAA,OAEsC,CAAA,CAAA,IAAA,OACA,CAAA,CAAA,IAAA,GA0CtC,SAASrB,EACdsB,CAA2C,EAE3C,MAAO,wBACLA,EACAC,gBAAiB,EAAE,CACnBC,0BAA2B,KAC3BC,wCAAwC,CAC1C,CACF,CAEO,SAASxB,IACd,MAAO,CACLyB,sBAAsB,EACtBC,mBAAoB,GACpBC,gBAAiB,KACjBC,oBAAoB,EACpBC,mBAAmB,EACnBC,cAAe,EAAE,AACnB,CACF,CAEA,SAASC,EACPC,CAAmC,EAEnC,OAAOA,EAAcR,sCAAsC,CACvD,KACAQ,EAAcT,yBAAyB,AAC7C,CAEO,SAASlB,EACd4B,CAAmC,MAE5BA,EAAP,OAAuC,AAAvC,OAAOA,EAAAA,EAAcX,eAAe,CAAC,EAAE,AAAF,EAAE,KAAA,EAAhCW,EAAkCC,UAAU,AACrD,CASO,SAASxB,EACdyB,CAAgB,CAChBC,CAAuE,CACvEF,CAAkB,EAElB,GAAIE,EACF,OAAQA,EAAcC,IADL,AACS,EACxB,IAAK,QACL,IAAK,iBAML,IAAK,gBADH,MAUJ,CAMF,GAAIF,GAAMG,YAAY,GAAIH,EAAMI,WAAW,EAAE,AAE7C,GAAIJ,EAAMK,kBAAkB,CAC1B,CAD4B,KACtB,IAAIpP,EAAAA,qBAAqB,CAC7B,CAAC,MAAM,EAAE+O,EAAM/C,KAAK,CAAC,8EAA8E,EAAE8C,EAAW,4HAA4H,CAAC,EAIjP,GAAIE,EACF,OAAQA,EAAcC,IADL,AACS,EACxB,IAAK,mBACHD,EAAcK,UAAU,CAAG,EAI3B,IAAMtP,EAAM,IAAIP,EAAAA,kBAAkB,CAChC,CAAC,MAAM,EAAEuP,EAAM/C,KAAK,CAAC,iDAAiD,EAAE8C,EAAW,2EAA2E,CAAC,CAKjK,OAHAC,EAAMO,uBAAuB,CAAGR,EAChCC,EAAMQ,iBAAiB,CAAGxP,EAAIyP,KAAK,CAE7BzP,CACR,KAAK,UACH0P,EAA0BT,EAM9B,EAEJ,CAQO,SAAStB,EACdoB,CAAkB,CAClBC,CAAgB,CAChBW,CAAoC,EAGpC,IAAM3P,EAAM,IAAIP,EAAAA,kBAAkB,CAChC,CAAC,MAAM,EAAEuP,EAAM/C,KAAK,CAAC,mDAAmD,EAAE8C,EAAW,6EAA6E,CAAC,CAQrK,OALAY,EAAeL,UAAU,CAAG,EAE5BN,EAAMO,uBAAuB,CAAGR,EAChCC,EAAMQ,iBAAiB,CAAGxP,EAAIyP,KAAK,CAE7BzP,CACR,CASO,SAAS8N,EAAgCmB,CAA4B,EAC1E,OAAQA,EAAcC,IAAI,EACxB,IAAK,QACL,IAAK,iBAML,IAAK,gBADH,MAIF,KAAK,YACL,IAAK,oBACL,IAAK,mBACL,IAAK,mBACL,IAAK,oBACL,IAAK,uBACH,KACF,KAAK,UACHQ,EAA0BT,EAI9B,CACF,CAEA,SAASS,EAA0BE,CAA0B,EAI7D,CAEA,SAASG,EACP9D,CAAa,CACb8C,CAAkB,CAClBY,CAAoC,EAIpC,IAAMtP,EAAQ4P,EAFC,CAAC,MAAM,EAAEhE,EAAM,mBAEgB+D,8CAFiD,EAAEjB,EAAW,CAAC,CAAC,EAI9GY,EAAeO,UAAU,CAACC,KAAK,CAAC9P,GAEhC,IAAM+P,EAAkBT,EAAeS,eAAe,AAClDA,IACFA,EAAgBjC,WADG,IACY,CAAC7H,IAAI,CAAC,CAGnCmJ,MAAOW,EAAgBlC,sBAAsB,CACzC,AAAItO,QAAQ6P,KAAK,CACjBY,kBACJtB,CACF,EAEJ,CAEO,SAASvC,EACdP,CAAa,CACb8C,CAAkB,CAClBuB,CAAqB,CACrBX,CAAoC,EAEpC,IAAMS,EAAkBT,EAAeS,eAAe,CAElDA,GAAiE,MAAM,CAApDA,EAAgBhC,yBAAyB,GAC9DgC,EAAgBhC,yBAAyB,CAAGkC,EAI5CC,eAAe,KACbH,EAAgB/B,sCAAsC,EAAG,CAC3D,IAGF0B,EAAoC9D,EAAO8C,EAAYY,EACzD,CAYO,SAASpD,EACdN,CAAa,CACb8C,CAAkB,CAClBuB,CAAqB,CACrBX,CAAoC,EAGpC,IAAgC,IADRA,AACpBa,EADmCN,UAAU,CAACO,MAAM,CACpCC,OAAO,CAAY,CAMrCX,EAAoC9D,EAAO8C,EAAYY,GAGvD,IAAMS,EAAkBT,EAAeS,eAAe,CAClDA,GACgD,MAAM,CAApDA,EAAgBhC,KADD,oBAC0B,GAC3CgC,EAAgBhC,yBAAyB,CAAGkC,CAAAA,CAGlD,CACA,MAAML,EACJ,CAAC,MAAM,EAAEhE,EAAM,iEAAiE,EAAE8C,EAAW,CAAC,CAAC,CAEnG,CAEA,IAAM4B,EAA6B,6BAEnC,SAASV,EAAgCW,CAAe,EACtD,IAAMvQ,EAAQ,AAAIT,MAAMgR,GAExB,OADEvQ,EAAcN,MAAM,CAAG4Q,EAClBtQ,CACT,CAMO,SAASgN,EACdhN,CAAc,EAEd,MACmB,UAAjB,OAAOA,GACG,OAAVA,GACCA,EAAcN,MAAM,GAAK4Q,GAC1B,SAAUtQ,GACV,YAAaA,GACbA,aAAiBT,KAErB,CAEO,SAAS6M,EACd0B,CAAqC,EAErC,OAAOA,EAAgBzK,MAAM,CAAG,CAClC,CAEO,SAASiJ,EACdkE,CAAmC,CACnChC,CAAmC,EAMnC,OADAgC,EAAc1C,eAAe,CAAC7H,IAAI,IAAIuI,EAAcV,eAAe,EAC5D0C,EAAc1C,eAAe,AACtC,CAEO,SAASnB,EACdmB,CAAqC,EAErC,OAAOA,EACJ7K,MAAM,CACJwN,AAAD,GAC0B,UAAxB,OAAOA,EAAOrB,KAAK,EAAiBqB,EAAOrB,KAAK,CAAC/L,MAAM,CAAG,GAE7DG,GAAG,CAAC,CAAC,YAAEkL,CAAU,OAAEU,CAAK,CAAE,IACzBA,EAAQA,EACLzL,KAAK,CAAC,MAINI,AAHD,KAGM,CAAC,GACNd,MAAM,CAAC,AAACyN,KAEHA,EAAKxL,QAAQ,CAAC,uBAAuB,AAKrCwL,EAAKxL,QAAQ,CAAC,MAXoD,aAWjC,AAKjCwL,EAAKxL,QAAQ,CAAC,YAAY,CAM/B5B,IAAI,CAAC,MACD,CAAC,0BAA0B,EAAEoL,EAAW;AAAG,EAAEU,EAAAA,CAAO,EAEjE,CAaO,SAAS3C,EACdmC,CAA4B,EAE5B,OAAQA,EAAcC,IAAI,EACxB,IAAK,YACL,IAAK,oBACH,IAAMgB,EAAa,IAAIc,gBAEvB,GAAI/B,EAAcgC,WAAW,CAI3BhC,CAJ6B,CAIfgC,WAAW,CAACC,UAAU,GAAGvH,IAAI,CAAC,KAC1CuG,EAAWC,KAAK,EAClB,OACK,CAYL,IAAMgB,EAAkBC,CAAAA,EAAAA,EAAAA,4BAAAA,AAA4B,EAACnC,GACjDkC,GAAkD,MAAM,CAArCA,EAAgBE,UAAU,CAC/CF,EACGG,YAAY,CAACH,EAAgBE,UAAU,EACvC1H,IAAI,CAAC,IAAML,CAAAA,EAAAA,EAAAA,kBAAAA,AAAkB,EAAC,IAAM4G,EAAWC,KAAK,IAAKoB,GAE5DjI,CAAAA,EAAAA,EAAAA,kBAAAA,AAAkB,EAAC,IAAM4G,EAAWC,KAAK,GAE7C,CAEA,OAAOD,EAAWO,MACpB,AAD0B,KACrB,mBACL,IAAK,oBACL,IAAK,mBACL,IAAK,UACL,IAAK,QACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACH,MAGJ,CAHWJ,AAIb,CAEA,SAASkB,IAAQ,CAEV,SAAS7E,EACdqC,CAAkB,CAClBY,CAA4D,EAE5D,IAAMS,EAAkBT,EAAeS,eAAe,CAClDA,GACFA,EAAgBjC,YADG,GACY,CAAC7H,IAAI,CAAC,CACnCmJ,MAAOW,EAAgBlC,sBAAsB,CACzC,AAAItO,QAAQ6P,KAAK,MACjBY,EACJtB,YACF,EAEJ,CAEA,IAAMyC,EAAmB,mCAkBnBE,EAA4D,AAAIC,OACpE,CAAC,uDAAuD,EAAEF,oBAAoB,yCAAyC,+DAAEvI,EAAAA,yBAAyB,CAAC,cAAc,CAAC,EAG9J0I,EAAmB,AAAID,OAC3B,CAAC,UAAU,EAAE3I,EAAAA,sBAAsB,CAAC,QAAQ,CAAC,EAEzC6I,EAAmB,AAAIF,OAC3B,CAAC,UAAU,EAAExI,EAAAA,sBAAsB,CAAC,QAAQ,CAAC,EAEzC2I,EAAiB,AAAIH,OAAO,CAAC,UAAU,EAAE1I,EAAAA,oBAAoB,CAAC,QAAQ,CAAC,EAEvE8I,EAAoC,AAAIJ,OAC5C,CAAC,UAAU,EAAEK,EAAAA,gCAAgC,CAAC,QAAQ,CAAC,EAEnDC,EAAkB,AAAIN,OAC1B,CAAC,UAAU,EAAEO,EAAAA,0BAA0B,CAAC,MAAM,EAAEC,EAAAA,0BAA0B,CAAC,QAAQ,CAAC,EAmDtF,SAASU,EACPR,CAAsB,CACtBC,CAAyC,EAGvCZ,EAA0DvL,IAAI,CAC5DkM,KAGFC,EAAkBhE,UADlB,UACsC,EAAG,CAAA,CAE7C,CAEO,SAAST,EACdiF,CAAsB,CACtBC,CAAoB,CACpBV,CAAsB,CACtBC,CAAyC,CACzCzD,CAAmC,CACnCmE,CAAwB,CACxBC,CAA8B,EAE9B,IAAMC,EAAmBtE,EAAiCC,GAE1D,GAAIiD,EAAe3L,IAAI,CAACkM,GAAiB,YACvCQ,EAA6BR,EAAgBC,GAG/C,GAAIV,EAAiBzL,IAAI,CAACkM,GAAiB,YACzCC,EAAkB3D,aAAa,CAACrI,IAAI,CAClC6M,GACEC,AA8ZR,SAASA,AACPH,CAA8B,CAC9BhH,CAAa,EAEb,OAAQgH,GACN,KAAA,EACE,MAAOpH,CAAAA,EAAAA,EAAAA,uCAAAA,AAAuC,EAACI,EACjD,MAAA,EACE,MAAO1B,CAAAA,EAAAA,EAAAA,uCAAAA,AAAuC,EAAC0B,EACjD,MAAA,EACE,MAAOb,CAAAA,EAAAA,EAAAA,gDAAgD,AAAhDA,EAAiDa,EAC5D,CACF,EA1ayCgH,EAAMF,EAAU9G,KAAK,EACtDoG,EACA,OAKN,GAAIR,EAAiB1L,IAAI,CAACkM,GAAiB,YACzCC,EAAkB3D,aAAa,CAACrI,IAAI,CAClC6M,GAmaN,AAlaQE,SAkaCA,AACPJ,CAA8B,CAC9BhH,CAAa,EAEb,OAAQgH,GACN,KAAA,EACE,MAAOlH,CAAAA,EAAAA,EAAAA,uCAAAA,AAAuC,EAACE,EACjD,MAAA,EACE,MAAOrB,CAAAA,EAAAA,EAAAA,uCAAAA,AAAuC,EAACqB,EACjD,MAAA,EACE,MAAOZ,CAAAA,EAAAA,EAAAA,gDAAAA,AAAgD,EAACY,EAC5D,CACF,EA9ayCgH,EAAMF,EAAU9G,KAAK,EACtDoG,EACA,OAMN,IAAIiB,GAAc,EAclB,GAZE5B,EAA0DvL,IAAI,CAC5DkM,IAIFC,EAAkBhE,WAFlB,SAEsC,EAAG,EACzCgF,GAAc,GACL9B,EAAiBrL,IAAI,CAACkM,KAE/BiB,GAAc,CAAA,EAGZA,EAAa,CACf,GANgD,AAM5C,CAACN,GAQDE,GAAoBK,CAAAA,EAAAA,EAAAA,wBAAAA,AAAwB,EAACT,GAR3B,CAGpBR,EAAkB5D,UAK6C,OAL5B,EAAG,EACtC,MACF,CAaA4D,EAAkB3D,aAAa,CAACrI,IAAI,CAClC6M,GACEK,GAA6BP,EAAMF,EAAU9G,KAAK,EAClDoG,EACA,OAGJ,MACF,CAEA,GAAIa,EAAkB,YACpBZ,EAAkB3D,aAAa,CAACrI,IAAI,CAAC4M,GAIvC,GAAIK,CAAAA,EAAAA,EAAAA,wBAAwB,AAAxBA,EAAyBT,GAAgB,YAC3CR,EAAkB3D,aAAa,CAACrI,IAAI,CAClC6M,GAAgBL,EAAeT,EAAgB,OAKnD,IAAMhS,EAAQ8S,GACZH,EAEI,GAC6BC,EAAMF,EAAU9G,KAAK,EAGlDwH,EAAgBR,EAAMF,EAAU9G,KAAK,CAJ6B,CAGnC,AAEnCoG,EACA,MAEFC,EAAkB3D,aAAa,CAACrI,IAAI,CAACjG,EACvC,CAEO,SAASuN,EACdkF,CAAsB,CACtBC,CAAoB,CACpBV,CAAsB,CACtBC,CAAyC,CACzCzD,CAAmC,EAInC,IAAMqE,EAAmBtE,EAAiCC,GAE1D,GAAIiD,EAAe3L,IAAI,CAACkM,GAAiB,YACvCQ,EAA6BR,EAAgBC,GAExC,GAAIV,EAAiBzL,IAAI,CAACkM,GAAiB,CAChDC,EAAkB/D,kBAAkB,EAAG,EACvC,MACF,CAAO,GAAIsD,EAAiB1L,IAAI,CAACkM,GAAiB,CAChDC,EAAkB7D,kBAAkB,EAAG,EACvC,MACF,CAAO,GACLiD,EAA0DvL,IAAI,CAC5DkM,GAEF,CAIAC,EAAkB5D,iBAAiB,EAAG,EACtC4D,EAAkBhE,oBAAoB,EAAG,EACzC,MACF,CAAO,GAAIkD,EAAiBrL,IAAI,CAACkM,GAAiB,CAGhDC,EAAkB5D,iBAAiB,EAAG,EACtC,MACF,MAAO,GAAIwE,EAAkB,YAC3BZ,EAAkB3D,aAAa,CAACrI,IAAI,CAAC4M,GAIvC,GAAIK,GAAAA,EAAAA,wBAAAA,AAAwB,EAACT,GAAgB,YAC3CR,EAAkB3D,aAAa,CAACrI,IAAI,CAClC6M,GAAgBL,EAAeT,EAAgB,OAKnD,IAAMhS,EAAQ8S,GACZM,EA1CIC,EA0C6BX,EAAU9G,KAAK,EAChDoG,EACA,CAFgBqB,KAIlBpB,EAAkB3D,aAAa,CAACrI,IAAI,CAACjG,EAEvC,CAEO,IAAKgM,GAC4C,MAAA,CAAA,EAAA,MAD5CA,CAC4C,CAAA,EAAA,CAAA,EAAA,IAD5CA,GAAAA,CAGyC,CAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,KAAA,EAEG,CAAA,CAAA,EAAA,UAAA,CAAA,EAAA,CAAA,aAEF,CAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,UAEE,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,QAEiC,CAAA,CAAA,EAAA,aAAA,GAAA,CAAA,EAAA,CAAA,mBAX7EA,GA2CL,SAASU,EACdwF,CAAuC,EAEvC,MAAO,CACLhE,oBAAoB,EACpBoF,sCAAsC,EACtCnF,gBAAiB,KACjBC,oBAAoB,EACpBC,mBAAmB,EACnBC,cAAe,EAAE,CACjBiF,2BAA4B,EAAE,CAC9BC,4BAA6B,EAAE,CAC/BtB,YACF,CACF,CAEO,SAASxE,EACd+E,CAAsB,CACtBC,CAAoB,CACpBV,CAAsB,CACtBC,CAAyC,CACzCzD,CAAmC,CACnCoE,CAA+B,CAC/Ba,CAAyC,EAEzC,IAAMZ,EAAmBtE,EAAiCC,GAE1D,GAAIiD,EAAe3L,IAAI,CAACkM,GAEtB,OAKF,IAAM0B,EAA8B3B,AAxStC,CAiS2C,QAjSlCA,AACPC,CAAsB,CACtBC,CAAyC,EAEzC,GAAM,YAAEC,CAAU,CAAE,CAAGD,EACvB,GAAIC,EAAW7O,MAAM,CAAG,EAAG,CACzB,IAAM8O,EAAQP,EAAgBQ,IAAI,CAACJ,GACnC,GAAIG,EAAO,CAIT,IAAMI,EAAYL,CAAU,CAACG,AADXC,SAASH,CAAK,CAAC,EAAE,CAAE,IAAM,EACJ,CACvC,GAAiB,MAAbI,AAAmB,EACrB,OAAOA,CAEX,CACF,CAEA,OAAOL,CAAU,CAAC,EAAE,EAAI,IAC1B,EAsRIF,EACAC,GAGF,GAAIV,EAAiBzL,IAAI,CAACkM,GAAiB,CAMzCC,EAAkB9D,eAAe,CALnB2E,EAKsB9S,CAJlC2T,EAAoBf,EAAMF,EAAU9G,KAAK,EACzCoG,EACA0B,GAGF,MACF,CACA,GAAIlC,EAAiB1L,IAAI,CAACkM,GAAiB,CACzC,IAAMhS,EAAQ8S,GACZc,GAAoBhB,EAAMF,EAAU9G,KAAK,EACzCoG,EACA0B,GAEFzB,EAAkB3D,aAAa,CAACrI,IAAI,CAACjG,GACrC,MACF,CAEA,IAAM6T,EACJnC,EAAkCU,IAAI,CAACJ,GACzC,GAAK6B,CAAD,CA2BG,CAqBL,IAAME,EAAmB5C,EAAiBiB,IAAI,CAACJ,EAhD1B,CAiDrB,GAAI+B,GACEA,EAAiBC,KAAK,CAAGH,EAAiBG,KAD1B,AAC+B,CAAE,CACnD/B,EAAkB5D,iBAAiB,EAAG,EACtC,MACF,CAIJ,MAJW,AA5CT,GAAIyF,CAAAA,EAAAA,EAAAA,6BAAAA,AAA6B,EAACL,GAAgB,CAChDxB,EAAkBqB,oCAAoC,EAAG,EACzDrB,EAAkB5D,iBAAiB,EAAG,EACtC,GAD2C,GAE7C,KAAO,CAML,IAAMrO,EAAQ8S,GACZ,AAAIvT,MAFU,AAEJgR,CAFK,OAAO,EAAEmC,EAAU9G,KAAK,CAAC,2BAPsE,wFAO6C,CAAC,EAG5JoG,EACA0B,GAEFzB,EAAkBsB,0BAA0B,CAACtN,IAAI,CAACjG,GAClD,MACF,CAiCF,GAAI6S,EAAkB,CAEc,OAAhCa,QAC2B1D,IAA3B6C,EAAiBoB,KACjB,AADsB,GAEtBpB,EAAiBoB,KAAK,CAAGP,GAAAA,EAE3BzB,EAAkB3D,aAAa,CAACrI,IAAI,CAAC4M,GACrC,MACF,CAEA,GAAIK,CAAAA,EAAAA,EAAAA,wBAAAA,AAAwB,EAACT,GAAgB,YAC3CR,EAAkB3D,aAAa,CAACrI,IAAI,CAClC6M,GACEL,EACAT,EACA0B,IAMN,IAAM1T,EAAQ8S,GAoBhB,AAnBIoB,SAmBKA,AACPtB,CAA+B,CAC/BhH,CAAa,EAEb,OAAQgH,GACN,KAAA,EACE,MAAOvH,CAAAA,EAAAA,EAAAA,kCAAkC,AAAlCA,EAAmCO,EAC5C,MAAA,EACE,MAAOpB,CAAAA,EAAAA,EAAAA,+BAAAA,AAA+B,EAACoB,EACzC,MAAA,EACE,MAAOjB,CAAAA,EAAAA,EAAAA,qCAAAA,AAAqC,EAACiB,EAC/C,MAAA,EACE,MAAOX,CAAAA,EAAAA,EAAAA,mCAAAA,AAAmC,EAACW,EAC7C,MAAA,EACE,MAAO7B,CAAAA,EAAAA,EAAAA,kCAAAA,AAAkC,EAAC6B,EAC9C,CACF,EAnCgCgH,EAAMF,EAAU9G,KAAK,EACjDoG,EACA0B,GAEFzB,EAAkB3D,aAAa,CAACrI,IAAI,CAACjG,EAEvC,CAEA,SAASoT,EAAgBR,CAA8B,CAAEhH,CAAa,EACpE,OAAQgH,GACN,KAAA,EACE,MAAOxH,CAAAA,EAAAA,EAAAA,sBAAAA,AAAsB,EAACQ,EAChC,MAAA,EACE,MAAO9B,CAAAA,EAAAA,EAAAA,sBAAAA,AAAsB,EAAC8B,EAChC,MAAA,EACE,MAAOzB,CAAAA,EAAAA,EAAAA,+BAAAA,AAA+B,EAACyB,EAC3C,CACF,CAoBA,SAAS+H,EAAoBf,CAAqB,CAAEhH,CAAa,EAC/D,OAAQgH,GACN,KAAA,EACE,MAAOrH,CAAAA,EAAAA,EAAAA,0BAAAA,AAA0B,EAACK,EACpC,MAAA,EACE,MAAOnB,CAAAA,EAAAA,EAAAA,uBAAAA,AAAuB,EAACmB,EACjC,MAAA,EACE,MAAOhB,CAAAA,EAAAA,EAAAA,6BAAAA,AAA6B,EAACgB,EACvC,MAAA,EACE,MAAOV,CAAAA,EAAAA,EAAAA,2BAAAA,AAA2B,EAACU,EACrC,MAAA,EACE,MAAO3B,CAAAA,EAAAA,EAAAA,0BAAAA,AAA0B,EAAC2B,EACpC,MAAA,EACE,MAAOxB,CAAAA,EAAAA,EAAAA,mCAAAA,AAAmC,EAACwB,EAC/C,CACF,CAEA,SAASgI,GAAoBhB,CAAqB,CAAEhH,CAAa,EAC/D,OAAQgH,GACN,KAAA,EACE,MAAOnH,CAAAA,EAAAA,EAAAA,0BAAAA,AAA0B,EAACG,EACpC,MAAA,EACE,MAAOlB,CAAAA,EAAAA,EAAAA,uBAAAA,AAAuB,EAACkB,EACjC,MAAA,EACE,MAAOf,CAAAA,EAAAA,EAAAA,6BAAAA,AAA6B,EAACe,EACvC,MAAA,EACE,MAAOT,CAAAA,EAAAA,EAAAA,2BAAAA,AAA2B,EAACS,EACrC,MAAA,EACE,MAAOtB,CAAAA,EAAAA,EAAAA,0BAAAA,AAA0B,EAACsB,EACpC,MAAA,EACE,MAAOvB,CAAAA,EAAAA,EAAAA,mCAAAA,AAAmC,EAACuB,EAC/C,CACF,CAEA,SAASuH,GACPP,CAA8B,CAC9BhH,CAAa,EAEb,OAAQgH,GACN,KAAA,EACE,MAAOtH,CAAAA,EAAAA,EAAAA,mCAAAA,AAAmC,EAACM,EAC7C,MAAA,EACE,MAAO5B,CAAAA,EAAAA,EAAAA,mCAAAA,AAAmC,EAAC4B,EAC7C,MAAA,EACE,MAAOd,CAAAA,EAAAA,EAAAA,4CAAAA,AAA4C,EAACc,EACxD,CACF,CA8BO,SAASgC,GACd8E,CAAoB,CACpBT,CAAyC,CACzCkC,CAAoB,CACpBnC,CAAsB,CACtBoC,CAA4B,EAE5B,IAAMP,EACJnC,EAAkCU,IAAI,CAACJ,GACzC,GAAK6B,CAAD,CA2BG,CAKL,IAAME,EAAmB5C,EAAiBiB,IAAI,CAACJ,GAC/C,GAAI+B,GACEA,EAAiBC,KAAK,CAAGH,EAAiBG,KAD1B,AAC+B,CAKjD,CALmD,MAUvD,GAAII,EAAqB,CAGvB,IAAMC,EAAuBC,CAAAA,EAAAA,EAAAA,4BAAAA,AAA4B,EAACH,QAC7BnE,IAAzBqE,IAC0BF,AAC5BI,EAAoBN,CAFkB,IAEb,CAAGI,CAAAA,CAEhC,CAGA,IAAMrU,EAAQ8S,GACZ,AAAIvT,MAFU,AAEJgR,CAFK,OAAO,EAAEmC,EAAU9G,KAAK,CAAC,+FAA+F,CAAC,CAErH,CAAEqI,MAAOE,CAAY,GACxCnC,EACA,KAAK,CAEPC,EAAkBsB,0BAA0B,CAACtN,IAAI,CAACjG,EACpD,KA7DuB,CAQrB,GAAIoU,EAAqB,CAGvB,IAAMC,EAAuBC,CAAAA,EAAAA,CA+CmC,CA/CnCA,4BAAAA,AAA4B,EAACH,QAC7BnE,IAAzBqE,GAEFE,CAD4BJ,EACRF,CAFkB,IAEb,CAAGI,CAAAA,CAEhC,CAEA,IAAMrU,EAAQ8S,GACRvT,AAAJ,MACE,0HACA,CAAE0U,MAAOE,CAAY,GAEvBnC,EACA,MAEFC,EAAkBuB,2BAA2B,CAACvN,IAAI,CAACjG,EACrD,CAmCF,CAEO,SAAS2N,GACd8E,CAAsB,CACtBC,CAAoB,CACpBV,CAAsB,CACtBC,CAAyC,CACzCzD,CAAmC,CACnCoE,CAAuD,EAEvD,IAAMC,EAAmBtE,EAAiCC,GAE1D,GAAIiD,EAAe3L,IAAI,CAACkM,GAAiB,YACvCQ,EAA6BR,EAAgBC,GAExC,GAAIV,EAAiBzL,IAAI,CAACkM,GAAiB,CAMhDC,EAAkB9D,eAAe,CALnB2E,EAKsB9S,CAJlC2T,EAAoBf,EAAMF,EAAU9G,KAAK,EACzCoG,EACA,MAGF,MACF,CAAO,GAAIR,EAAiB1L,IAAI,CAACkM,GAAiB,CAChD,IAAMhS,EAAQ8S,GACZc,GAAoBhB,EAAMF,EAAU9G,KAAK,EACzCoG,EACA,MAEFC,EAAkB3D,aAAa,CAACrI,IAAI,CAACjG,GACrC,MACF,CAAO,GACLqR,EAA0DvL,IAAI,CAC5DkM,GAEF,CAIAC,EAAkB5D,iBAAiB,CAAG,GACtC4D,EAAkBhE,oBAAoB,EAAG,EACzC,MACF,CAAO,GAAIkD,EAAiBrL,IAAI,CAACkM,GAAiB,CAGhDC,EAAkB5D,iBAAiB,EAAG,EACtC,MACF,MAAO,GAAIwE,EAAkB,YAC3BZ,EAAkB3D,aAAa,CAACrI,IAAI,CAAC4M,GAIvC,GAAIK,GAAAA,EAAAA,wBAAAA,AAAwB,EAACT,GAAgB,YAC3CR,EAAkB3D,aAAa,CAACrI,IAAI,CAClC6M,GAAgBL,EAAeT,EAAgB,OAKnD,IAAMhS,EAAQ8S,GACZF,IAAAA,EACIxH,CAAAA,EAAAA,EAAAA,sBAAAA,AAAsB,EAACsH,EAAU9G,KAAK,EACtC9B,CAAAA,EAAAA,EAAAA,sBAAsB,AAAtBA,EAAuB4I,EAAU9G,KAAK,EAC1CoG,EACA,MAEFC,EAAkB3D,aAAa,CAACrI,IAAI,CAACjG,EAEvC,CAMA,SAAS8S,GACP9S,CAAY,CACZgS,CAAsB,CACtBwC,CAAwC,EAcxC,OAP2B,MAAM,CAA7BA,IACFxU,EAAMiU,KAAK,CAAGO,GAAAA,EAIhBxU,EAAMoP,KAAK,CACTpP,EAAMc,IAAI,CAAG,KAAOd,EAAMuQ,OAAO,CAAkByB,EAAdyC,AAChCzU,CADgCyU,AAEzC,CAEO,IAAKxI,MAJwD,SAIxDA,WAAAA,GAAAA,6CAAAA,GAML,SAASgB,GACdyF,CAAoB,CACpB1S,CAAY,EAEZ8L,QAAQ9L,KAAK,CAACA,GACd2L,GAAAA,EAAAA,iBAAAA,AAAiB,EAAC+G,EAAU9G,KAAK,CACnC,CAEO,SAASyB,GACdqF,CAAoB,CACpBlC,CAAmC,EAEnC,GAAIA,EAAczC,yBAAyB,CAKzC,CAL2C,KAC3Cd,GACEyF,EACAlC,EAAczC,yBAAyB,EAEnC,IAAInO,EAAAA,qBAAqB,AAEnC,CAEO,SAASuN,GACduF,CAAoB,CACpBkC,CAAqB,CACrB3C,CAAyC,CACzCzB,CAAmC,CACnCqE,CAA8B,EAW9B,GAPAxH,GAAkBqF,EAAWlC,GAQ3BoE,IAAAA,IACwC,IAAxC3C,EAAkB5D,iBAAiB,EACnC4D,EAAkB/D,kBAAkB,CAGpC,CAFA,KACApC,QAAQ9L,KAAK,CAAC2T,IAAqCjB,EAAU9G,KAAK,EAAE2E,OAAlC8C,AAAyC,EACrE,IAAIzT,EAAAA,qBAAqB,CASjC,IAAIiV,IAAyB5C,EAAkBhE,oBAAoB,EAI/D2G,AAJiE,IAIjEA,EAA+B,CAIjC,IAAMtG,EAAgB2D,EAAkB3D,aAAa,CACrD,GAAIA,EAAcjL,MAAM,CAAG,EAAG,CAC5B,IAAK,IAAIyR,EAAI,EAAGA,EAAIxG,EAAcjL,MAAM,CAAEyR,IAAK,AAC7C7H,GAA0ByF,EAAWpE,CAAa,CAACwG,EAAE,CAGvD,OAAM,IAAIlV,EAAAA,qBAAqB,AACjC,CAMA,GAAIqS,EAAkB7D,kBAAkB,CAItC,CAJwC,KACxCtC,QAAQ9L,KAAK,CACX4T,GA/CAP,EA+CqCX,EAAU9G,KAAK,EAAE2E,MAAlC8C,CAAyC,EAEzD,IAAIzT,EAAAA,qBAAqB,CAGjC,GAAIgV,GAAgC,CAAhCA,EAOF,MAHA9I,QAAQ9L,KAAK,CACX,CAAC,OAAO,EAAE0S,EAAU9G,KAAK,CAAC,wGAAwG,CAAC,EAE/H,IAAIhM,EAAAA,qBAAqB,AAEnC,CACF,CAEO,SAASwN,GACdsF,CAAoB,CACpBkC,CAAqB,CACrB3C,CAAyC,CACzCzB,CAAmC,CACnCuE,CAAwB,CACxBF,CAA8B,CAC9BlC,CAAwB,EAExB,IAAMqC,EAAUpI,GACd8F,EACAkC,EACA3C,EACAzB,EACAuE,EACAF,EACAlC,GAEF,GAAIqC,EAAQ3R,MAAM,CAAG,EAAG,CACtB,IAAK,IAAMsM,KAAUqF,EACnB/H,GAA0ByF,EAAW/C,CADT,CAG9B,OAAM,IAAI/P,EAAAA,qBAAqB,AACjC,CACF,CAEO,SAASgN,GACd8F,CAAoB,CACpBkC,CAAqB,CACrB3C,CAAyC,CACzCzB,CAA0C,CAC1CuE,CAAwB,CACxBF,CAA8B,CAC9BlC,CAAwB,EAExB,GAAInC,GAAiBA,EAAczC,yBAAyB,CAC1D,CAD4D,KACrD,CAACyC,EAAczC,yBAAyB,CAAC,CAKlD,GAAIgH,GAQF,CAACpC,IACAkC,GAAyB5C,EAAkBhE,IATzB,MASlB4G,UAA2C5G,AAAmB,EAR/D,CASA,KATO,EAAE,CAaX,GAAM,CAAEK,eAAa,CAAE,CAAG2D,SAC1B,AAAI3D,EAAcjL,MAAM,CAAG,EAClBiL,CADqB,CAO1BqE,EACK,CACL,AAAIpT,MACF,CAAC,OAAO,AAHO,EAGLmT,EAAU9G,KAAK,CAAC,iHAAiH,CAAC,EAE/I,CAGCgJ,IAAAA,GAAkCA,GAAkC,GAG/D,CACL,IAAIK,EAAAA,cAAc,CAChB,CAAC,OAAO,EAAEvC,EAAU9G,KAAK,CAAC,8EAA8E,CAAC,EAE5G,CAEI,EACT,AADW,CAGJ,SAASmB,GACd2F,CAAoB,CACpBkC,CAAqB,CACrB3C,CAAyC,CACzC4C,CAA8B,EAO9B,GACED,IAAAA,IACwC,IAAxC3C,EAAkB5D,iBAAiB,EACQ,IAA3C4D,EAAkB3D,aAAa,CAACjL,MAAM,EACtC4O,EAAkB9D,eAAe,CAEjC,CADA,KACO,CAAC8D,EAAkB9D,eAAe,CAAC,CAS5C,GAAI0G,GAAyB5C,EAAkBhE,oBAAoB,CACjE,CADmE,KAC5D,EAAE,CAGX,GAAI2G,IAAAA,EAA+B,CAIjC,IAAMtG,EAAgB2D,EAAkB3D,aAAa,CACrD,GAAIA,EAAcjL,MAAM,CAAG,EACzB,CAD4B,MACrBiL,EAGT,GAAIsG,GAAgC,CAAhCA,EAIF,MAAO,CACL,IAAIK,EAAAA,cAAc,CAChB,CAAC,OAAO,EAAEvC,EAAU9G,KAAK,CAAC,8EAA8E,CAAC,EAE5G,AAEL,CAEA,MAAO,EAAE,AACX,CAgBO,SAASkB,GACd4F,CAAoB,CACpBkC,CAAqB,CACrB3C,CAAyC,CACzCiD,CAAgE,CAChEzB,CAAyC,CACzC0B,CAA0B,EAG1B,GAAID,EAA0B,CAC5B,GAAM,qBAAEE,CAAmB,CAAE,CAAGF,EAChC,GAAIE,EAAoB/R,MAAM,CAAG,EAC/B,CADkC,MAC3B+R,CAEX,CAEA,GAAM,CAAE7B,4BAA0B,CAAE,CAAGtB,EACvC,GAAIsB,EAA2BlQ,MAAM,CAAG,EAOtC,CAPyC,MAOlCkQ,EAKT,GAAIqB,MAA+B,CACjC,IAAMtG,EAAgB2D,EAAkB3D,aAAa,CACrD,GAAIA,EAAcjL,MAAM,CAAG,EACzB,CAD4B,MACrBiL,EAGT,GACEsG,IAAAA,GACA,CAAC3C,EAAkBqB,oCAAoC,EACvDQ,CAAAA,EAAAA,EAAAA,6BAAAA,AAA6B,EAACL,GAK9B,OAAO,IAAIwB,EAAAA,AAJX,cAIyB,CACvB,CAAC,OAAO,EAAEvC,EAAU9G,KAAK,CAAC,0FAA0F,CAAC,CAG3H,KAAO,CACL,IAAM0C,EAAgB2D,EAAkB3D,aAAa,CACrD,GAAIA,EAAcjL,MAAM,CAAG,EACzB,CAD4B,MACrBiL,EAGT,IAC0C,IAAxC2D,EAAkB5D,iBAAiB,EACnC4D,EAAkB9D,eAAe,CAEjC,CADA,KACO,CAAC8D,EAAkB9D,eAAe,CAAC,AAE9C,CAQA,GAAI,CAAC2F,GAAAA,EAAAA,6BAAAA,AAA6B,EAACL,GAAgB,CACjD,GAAM,CAAED,6BAA2B,CAAE,CAAGvB,EAClCoD,EAAmBpD,EAAkBC,UAAU,CAAC,EAAE,CACxD,GAA2C,IAAvCsB,EAA4BnQ,MAAM,CAAQ,CAC5C,IAAMiS,EAAyB,EAAE,CACjC,IAAK,GAAM,CAACC,EAAIC,EAAU,GAAI/B,EAAcgC,WAAW,CAAE,AACvD,GAAI,CAAChC,EAAciC,WAAW,CAAC1O,GAAG,CAACuO,GACjC,EADsC,EACjC,IAAMI,KAAYH,EAAW,CAChC,IAAII,EAAaD,EACdlR,OAAO,CAAC,qBAAsB,IAC9BA,OAAO,CAAC8E,QAAQsM,GAAG,GAAK,IAAK,IAC7BpR,OAAO,CAAC8E,QAAQsM,GAAG,GAAK,KAAM,IACjCP,EAAarP,IAAI,CAAC2P,EACpB,CAIJ,OADAN,EAAaQ,IAAI,GACVC,CAAAA,EAAAA,EAAAA,4BAA4B,AAA5BA,EAA6BrD,EAAU9G,KAAK,CAAE0J,EACvD,CAKO,GAA2C,GAL3C,CAKI9B,EAA4BnQ,CAL5BkG,KAKkC,CAAQ,CACnD,CANiBC,GAMX+G,AANc,CAACxE,CAML,CAAC,OAAO,EAAE2G,EAAU9G,IANE,CAMG,CAAC,EANAuJ,mBAAmB,wGAM0G,CAAC,CAClKnV,EAA6B,OAArBqV,EAA4BA,IAAyB9V,AAAJ,QAG/D,OAFAS,EAAMc,IAAI,CAAG,QACbd,EAAMuQ,OAAO,CAAGA,EACT,AAAIyF,eAAe,CACxBhW,EACAwT,CAA2B,CAAC,EAAE,CAC/B,CACH,CAAO,CACL,IAAMjD,EAAU,CAAC,OAAO,EAAEmC,EAAU9G,KAAK,CAAC,qIAAqI,CAAC,CAC1K5L,EAA6B,OAArBqV,EAA4BA,IAAqB,AAAI9V,QAGnE,OAFAS,EAAMc,IAAI,CAAG,QACbd,EAAMuQ,OAAO,CAAGA,EACT,AAAIyF,eAAe,CACxBhW,KACIwT,EACL,CACH,CACF,CAGA,MAAO,EAAE,AACX,2EC1lDa3B,0BAA0B,CAAA,kBAA1BA,GACAC,0BAA0B,CAAA,kBAA1BA,GAJAH,gCAAgC,CAAA,kBAAhCA,uEAAN,IAAMA,EACX,uCAEWE,EAA6B,uBAC7BC,EAA6B,8ECkB1BgC,6BAA6B,CAAA,kBAA7BA,GAVAmC,gCAAgC,CAAA,kBAAhCA,uEAAT,SAASA,EAEdC,CAA0C,EAE1C,MAAO,CACLT,YAAaS,EAAgB,IAAIzS,GAJnC,CAIuCyS,EAAcT,WAAW,EAAI,IAAIhS,IACtEiS,YAAa,IAAIS,GACnB,CACF,CAEO,SAASrC,EACdsC,CAAiC,EAEjC,IAAK,IAAMb,KAAMa,EAAMX,GAZsD,QAY3C,CAACnO,IAAI,GAAI,AACzC,GAAI,CAAC8O,EAAMV,WAAW,CAAC1O,GAAG,CAACuO,GACzB,EAD8B,IACvB,GAGX,OAAO,CACT,wECHYc,EAwMP2B,KAxMO3B,KAwMP2B,KAxMO3B,OAAiB,CAAA,kBAAjBA,GAsCUC,yBAAyB,CAAA,kBAAzBA,GATAC,wBAAwB,CAAA,kBAAxBA,+EArDU,CAAA,CAAA,IAAA,OAIzB,CAAA,CAAA,IAAA,GAoBA,IAAKF,GACoD,MAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CADpDA,AACoD,OAAA,AAES,CAAA,CAAA,EAAA,AAH7DA,GAAAA,EAG6D,CAAA,EAAA,CAAA,MAAA,EAEe,CAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,GAAA,QAEiB,CAAA,CAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,YAP7FA,GA6BL,eAAeE,EACpBG,CAAgB,CAChBC,CAA2B,EAnB3B,OAAQF,AAsBN,MAAMH,EAA0BI,EAAMC,IArBtC,IAAK,OACL,KAAK,EACH,OAAA,CAEF,KAAK,QACH,OAAA,CAEF,KAAK,WACH,OAAA,CAEF,KAAK,aACH,OAAA,CAEJ,CAUF,CAEO,eAAeL,EACpBI,CAAgB,CAChBC,CAA2B,EAE3B,GAAI,QAAEC,CAAM,UAAEjB,CAAQ,CAAE,CAAG,MAAMkB,EAA8BH,GAE/D,GAAI,CAACC,EAKH,OAAQC,GACN,IAAK,IANgB,GAQnBA,EAAS,WACT,KAEF,MAAK,EACL,IAAK,QAAS,CAEZ,IAAME,EAAiBF,EACvBA,EAAS,WACT9K,QAAQiL,IAAI,CACV,CAAA,EAAGC,EAAyBF,GACzB,aADyC,6DAA6D;AAS7G,EAAK,OARa,EAAEnB,EAAS,CAAC,CADgF,AAC/E,CAG/B,CAUF,CAbQ,MAgBV,CAAe,IAAXiB,EAEK,CAFa,MAIbA,CAEX,CAOA,eAAeC,EACbH,CAAgB,MAqJhBjV,EAnJA,CAmJoC,EAnJ9B,CAAEA,IAAKwV,CAAe,UAAEtB,CAAQ,CAAE,CAAG,MAAMuB,GAAAA,EAAAA,qBAAAA,AAAqB,EAACR,GAIjEU,EAAuC,CAC3CR,OAgJMnV,CAAAA,GAnJsCwV,GAmJ/BxV,EAAyBgV,YAAY,MAAGzG,CAAAA,CAAQ,EAAM,OA/InE2F,SAAUA,GAAY,IACxB,EAII0B,EAA6C,KAC7CC,EAA+B,KAC7B,gBAAEC,CAAc,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,eAAe,AAAfA,EAAgBd,GAC3C,IAAK,IAAMe,KAAoBF,EAAgB,CAC7C,IAAMG,EAAgBH,CAAc,CAACE,EAAiB,CAChDE,EAAc,MAAMd,EAA8Ba,GACxD,GAAKL,CAAD,CAKF,OAAQO,EAAoBD,EALZ,AAKwBf,MAAM,CAAES,EAAYT,MAAM,GAChE,KAAA,EAG6B,SAAvBS,EAAYT,MAAM,EAAee,AAAuB,QAAQ,GAAnBf,MAAM,GACrDS,EAAcM,EACdL,EAAgBG,GAElB,KAEF,MAAA,EACA,KAAA,EACA,KAAA,EACE,MAAM,AAAIlY,MACR,AACE,CADD,AACE,yDADuD,CAAC;AAEhDyX,EADJ,EAAEa,EAAmBP,GACzB,YADyC,EAAE;AAC3C,IAAM,EAAEN,EAAyBK,EAAYT,MAAM,GAAG,GACvD,CAAC;AAAA,WAAa,EAAES,EAAY1B,QAAQ,CAAC,AAEpC,CAFqC,CAAC,GACvC,CAAC,EAAE,CAAC,GACJ;AAAC;AAAI,EAAA,EAAEkC,EAAmBJ,GACzB,eAD2C,EAAE,CAAC,GAC/C;AAAC,IAAM,EAAET,EAAyBW,EAAYf,MAAM,GAAG,GACvD,CAAC;AAAA,WAAa,EAAEe,EAAYhC,QAAQ,CAEnC,AAFoC,CAAC,CAAC,GACvC,CAAC,EAAE,CAAC,GACJ;AAAC;AAAA;AACA;AAA+C,CAAC,GACjD,CAAC,4DAFkB,CAAC,AARyB,CAarD,EAZQ,AAQA,GACoE,CA7B5E0B,AA6B6E,EA7B/DM,EACdL,EAAgBG,CAiCpB,CAIA,GAAI,CAACJ,EACH,OAAOD,CACF,EACL,CAHgB,GAGVU,EAAaF,EACjBP,EAAYT,MAAM,CAClBQ,EAAaR,MAAM,EAErB,OAAQkB,GACN,KAAA,EAGE,GAA4B,SAAxBV,EAAaR,MAAM,EAAsC,QAAQ,CAA/BS,EAAYT,MAAM,CACtD,OAAOS,EAEP,OAAOD,CAGX,MAAA,EACE,OAAOC,CAET,MAAA,EACA,KAAA,EACE,MAAM,AAAI9X,OACPuY,IAAAA,EACG,CAAC,0FACD,AAD2F,CAAC,AAC3F,sFAAuF,CAAA,CAC1F,CAAC;AAAA,cAAgB,CAAC,CAClB,CAAC;AAAA,IAAM,EAAEd,EAAyBI,EAAaR,MAAM,EAAA,CAAG,CACxD,CAAC;AAAA,WAAa,EAAEQ,EAAazB,QAAQ,CAAC,CAAC,CAAC,CACxC,CAAC;AAAA,aAAe,CAAC,CACjB,CAAC;AAAA,IAAM,EAAEqB,EAAyBK,EAAYT,MAAM,EAAA,CAAG,CACvD,CAAC;AAAA,WAAa,EAAES,EAAY1B,QAAQ,CAAC,CAAC,CAAC,CACvC,CAAC;AAAE,CAAC,CACJ,CAAC;AAAA,gBAAkB,CAAC,CAVrBmC,EAWC,CAAC,+CAA+C,CAAC,GACjD,CAAC,0DAGT,CACF,CACF,CAEA,MAPgF,CAAC,EAOxED,EAAmBE,CAAY,EACtC,MAAgB,aAATA,EAAsBA,EAAO,CAAC,CAAC,EAAEA,EAAAA,CAAM,AAChD,CAEA,SAASf,EAAyBJ,CAAoB,EACpD,MAAO,CAAC,4BAA4B,EAAEpP,KAAKC,SAAS,CAACmP,GAAAA,CAAS,AAChE,CAEA,IAAKoB,MAAAA,GAAAA,CAAAA,GAAAA,WAAAA,GAAAA,oIAAAA,GAOL,IAAMC,EAA+D,CACnE,QACA,WACA,aACD,CAED,SAASL,EACPM,CAAkB,CAClBC,CAAmB,EAGnB,GAAa,SAATD,GAA6B,QAAQ,CAAlBC,IAKV,IAATD,IAA4B,IAAVC,EAJpB,CAIqC,MAJrC,EAQF,IAAa,IAATD,GAAkBC,CAAU,MAC9B,CADqC,MACrC,EAGF,IAAMC,EAAWH,EAAoBpU,OAAO,CAACqU,GACvCG,EAAYJ,EAAoBpU,OAAO,CAACsU,GAC9C,OAAOC,EAAWC,EAAAA,EAEdD,IAAaC,EAAAA,EAAAA,CAGnB,wECvQYE,EAsDAE,KA7BCH,IAzBDC,CAsDAE,qBA7B2B,CAAA,kBAA1BH,GAzBDC,WAAW,CAAA,kBAAXA,GA+DCC,yBAAyB,CAAA,kBAAzBA,GATDC,UAAU,CAAA,kBAAVA,GAdIC,YAAY,CAAA,kBAAZA,GAQAC,wBAAwB,CAAA,kBAAxBA,+EAnDe,CAAA,CAAA,IAAA,OACY,CAAA,CAAA,IAAA,EAEpC,IAAKJ,cAAAA,WAAAA,GAAAA,qCAIiE,CAAA,CAAA,EAAA,SAAA,iBAAA,CAAA,GAAA,CAAA,6KAOC,CAAA,CAAA,EAAA,SAAA,kBAAA,CAAA,GAAA,CAAA,8KAXlEA,GAyBL,IAAMD,EAAuD,+BAanE,CAEM,SAASI,EACdE,CAA2D,EAE3D,OAAON,CAA0B,CAC/BA,EAA2BzU,OAAO,CAAC+U,GAAS,EAC7C,AACH,CAEO,SAASD,EACdC,CAAkB,EAElB,OAAOL,EAAqBK,GAASA,GAAAA,EACvC,CAEO,IAAKH,GAC+B,MAAA,CAAA,EAAA,CAD/BA,OAC+B,CAAA,CAAA,EAD/BA,AAC+B,CAAA,EAD/BA,UAGkF,CAAA,CAAA,EAAA,QAAA,iBAAA,CAAA,EAAA,CAAA,4BAEX,CAAA,CAAA,EAAA,QAAA,QAAA,CAAA,EAAA,CAAA,mBALvEA,EASL,OAAMD,EAaXhZ,YAAY,aACVqZ,CAAW,CACXC,mBAAiB,QACjBC,CAAM,YACN/H,CAAU,CAMX,CAAE,MAjBHgI,YAAAA,CAAAA,OAEAC,mBAAAA,CAAoC,UAEpCC,QAAAA,CACEC,AA0OJ,SAASA,EAIP,IAAMD,EAAkE,CAAC,EACzE,IAAK,IAAMN,KAASN,EAClBY,CAAQ,CAACN,EAAM,CAAGuC,AA+CtB,SAASA,EACP,GAAM,MAjD0C,GAiDxCR,CAAO,SAAEtR,CAAO,CAAEgS,QAAM,CAAE,CAAGI,CAAAA,EAAAA,EAAAA,0BAA0B,AAA1BA,IACrC,MAAO,CACLrF,MAAO,UACP8D,YAAa,aACbS,EACAa,WAAY,EAAE,CACdE,gBAAiBrS,EACjBsS,eAAgBN,CAClB,CACF,IAvDE,OAAOnC,CACT,IAtOI,IAAI,CAACL,WAAW,CAAGA,EACnB,IAAI,CAACC,iBAAiB,CAAGA,EACzB,IAAI,CAACM,UAAU,CAAGL,EAClB,IAAI,CAAC/H,UAAU,CAAGA,EAEd6H,GACFA,EAAYQ,QADG,QACa,CAC1B,QACA,KAGE,GAAM,QAAE1J,CAAM,CAAE,CAAGkJ,EACnB,IAAK,IAAMS,KAAWpZ,OAAOyH,MAAM,CAAC,IAAI,CAACuR,QAAQ,EAAG,AAClDK,SAkSgBD,EAlSGA,EAkSoB3J,EAlSXA,CAkSS,CACzB,EAD0C,SAC/B,CAA7B2J,EAAQlD,KAAK,GAGjBkD,EAAQlD,KAAK,CAAG,YAIhBkD,EAAQkC,UAAU,CAACnY,MAAM,CAAG,EAG5BiW,EAAQqB,OAAO,CAACM,KAAK,CAACC,GACtB5B,EAAQqC,cAAc,CAAChM,GA9SeA,CAEhC,EACA,CAAE6J,MAAM,CAAK,GAIbV,GACFA,EAAkB1I,MAAM,CAACiJ,OADJ,SACoB,CACvC,QACA,KACE,IAAI,CAACI,aAAa,EACpB,EACA,CAAED,MAAM,CAAK,EAGnB,CAOAE,QAAQd,CAA6B,CAAEe,CAAoB,CAAE,OAsOR4B,EAAvBjC,EArOL,IAqOgD,AArO5C,CAqOsB,AArOrBJ,QAAQ,CAACN,EAAM,GAAEe,EAsOzB,WAAW,CAA7BL,EAAQlD,KAAK,CACfkD,EAAQkC,UAAU,CAACvV,IAAI,CAACsV,GAExBA,GAxOF,CAEA1B,0BAAoC,CAClC,GAAM,YAAET,CAAU,cAAEJ,CAAY,CAAE,CAAG,IAAI,CACzC,OAAQI,GACN,KAAA,EACE,OAAO,CAET,MAAA,EAGE,OACEJ,EAAAA,GACAA,GAAAA,EAGJ,MAAA,EAKE,OACEA,EAAAA,GACAA,EAAAA,EAGN,CACF,CAGAc,oCAAoCnK,CAAa,CAAE,CACjD,GAAM,cAAEqJ,CAAY,CAAE,CAAG,IAAI,CAC7B,GACEA,IAAAA,GACAA,KAAAA,GACAA,IACA,CADAA,GASF,GAAI,IAAI,CAACF,iBAAiB,CAAE,YAC1B,IAAI,CAACA,iBAAiB,CAAChJ,KAAK,GAI9B,GAAI,IAAI,CAAC+I,WAAW,CAAE,CAIpB,IAAI,CAACI,mBAAmB,CAAGtJ,EAC3B,IAAI,CAACqJ,YAAY,CAAA,GACjB,MACF,CAKA,IAAI,CAACC,mBAAmB,CAAGtJ,EAC3B,IAAI,CAACoK,YAAY,CAAA,IACnB,CAEAC,wBAAyB,CACvB,OAAO,IAAI,CAACf,mBAAmB,AACjC,CAEAgB,gBAAgBrB,CAA2D,CAAE,CAC3E,OAAO,IAAI,CAACM,QAAQ,CAACR,EAAaE,GAAO,CAACsB,WAAW,EAAIC,GAAAA,AAC3D,CAEQV,eAAgB,CAWtB,GAAM,cAAET,CAAY,CAAE,CAAG,IAAI,CAE7B,GAAIA,GAAqC,CAArCA,EACF,MAAM,IAAI/D,EAAAA,cAAc,CACtB,wDAGJ,GACE+D,QACAA,IACA,CADAA,EAGA,OAIF,IAAMoB,EAAc9B,EAA2BzU,OAAO,CAACmV,GAAgB,EACjEqB,EAAiB/B,EAA2BzU,OAAO,CAAA,IAGzD,IAAK,IAAIiR,EAAIsF,EAAatF,EAAIuF,EAAgBvF,IAAK,AACjD,IAAI,CAACwF,YAAY,CAAChC,CAA0B,CAACxD,EAAE,CAGjD,KAAI,CAACkE,YAAY,CAAA,EACnB,CAEAe,aAAaQ,CAAmC,CAAE,CAChD,GAAwB,OAApB,IAAI,CAACvJ,UAAU,EAAauJ,EAAc,IAAI,CAACvJ,UAAU,CAC3D,CAD6D,KACvD,IAAIiE,EAAAA,cAAc,CACtB,CAAC,8BAA8B,EAAEsD,CAAW,CAACgC,EAAY,CAAC,8BAA8B,EAAEhC,CAAW,CAAC,IAAI,CAACvH,UAAU,CAAC,CAAA,CAAE,EAG5H,GAAM,cAAEgI,CAAY,CAAE,CAAG,IAAI,CAE7B,GACEA,KAAAA,GACAA,IACA,CADAA,GAOEuB,GAAevB,EAJjB,OAQF,IAAI,CAJ6B,AAI5BA,YAAY,CAAGuB,EAGpB,IAAMH,EACJpB,IAAAA,EACI,EACAV,EAA2BzU,OAAO,CAACmV,GAAgB,EACnDwB,EAAgBlC,EAA2BzU,OAAO,CAAC0W,GACzD,IAAK,IAAIzF,EAAIsF,EAAatF,GAAK0F,EAAe1F,IAC5C,AADiD,IAC7C,CAACwF,YAAY,CAAChC,CAA0B,CAACxD,EAAE,CAEnD,CAEQwF,aAAa1B,CAA6B,CAAE,KAuG5BU,EAtGL,IAAI,CAACJ,AAsGqB,QAtGb,CAACN,EAAM,CAuGvC,GAAsB,WAAW,CAA7BU,EAAQlD,KAAK,EAGjBkD,EAAQlD,KAAK,CAAG,YAChBkD,EAAQY,WAAW,CAAG0B,YAAYnT,GAAG,GAAKmT,YAAYC,UAAU,CAChE,GAAI,CACF,GAAM,CAAEL,WAAYM,CAAS,CAAE,CAAGxC,EAClC,IAAK,IAAIxE,EAAI,EAAGA,EAAIgH,EAAUzY,MAAM,CAAEyR,IAAK,AACzCgH,CAAS,CAAChH,EAAE,GAEdgH,EAAUzY,MAAM,CAAG,CACrB,QAAU,CACRiW,EAAQoC,eAAe,EACzB,EAnHA,CAEQhB,gBAAgB9B,CAA6B,CAAiB,CACpE,OAAO,IAAI,CAACM,QAAQ,CAACN,EAAM,CAAC+B,OAAO,AACrC,CAEA1J,aAAa2H,CAA6B,CAAE,CAC1C,OAAO,IAAI,CAAC8B,eAAe,CAAC9B,EAC9B,CAEAgC,gBACEhC,CAA6B,CAC7BiC,CAA+B,CAC/BC,CAAgB,CACJ,CAGZ,IAAMH,EAOAI,AATe,IAAI,CAACL,GAGxBnR,CAEMwR,OAFEvR,GAAG,CAH4B,AAG3BqC,CAH4B+M,GASvBtP,IANG,AAMC,CAAC,IANG,AAMGwR,CAHtBD,EAWR,OAHI,GAVEG,CAGEF,AAOA,CAACjC,WAAW,EAAE,AACpB8B,EAAQM,KAAK,CAACC,GAETP,CACT,CACF,CAaA,SAASO,IAAgB,0ECvRZa,sBAAsB,CAAA,kBAAtBA,GA+rBAC,0BAA0B,CAAA,kBAA1BA,GA4BGC,eAAe,CAAA,kBAAfA,GA7eAC,2BAA2B,CAAA,kBAA3BA,GAQAC,2BAA2B,CAAA,kBAA3BA,GAvOAjJ,wBAAwB,CAAA,kBAAxBA,GA1CAkJ,8BAA8B,CAAA,kBAA9BA,GAqkBAC,4BAA4B,CAAA,kBAA5BA,GA0DAC,0BAA0B,CAAA,kBAA1BA,GA1jBAC,yBAAyB,CAAA,kBAAzBA,GA8IAC,gCAAgC,CAAA,kBAAhCA,GArBAC,0BAA0B,CAAA,kBAA1BA,GAwbAC,sBAAsB,CAAA,kBAAtBA,GAzgBAC,6BAA6B,CAAA,kBAA7BA,GAuCAC,yBAAyB,CAAA,kBAAzBA,GAuBAC,oCAAoC,CAAA,kBAApCA,GA3FAC,2BAA2B,CAAA,kBAA3BA,GAqPAC,2BAA2B,CAAA,kBAA3BA,GAiOAC,6BAA6B,CAAA,kBAA7BA,GAmHAC,gBAAgB,CAAA,kBAAhBA,GAnWAC,oBAAoB,CAAA,kBAApBA,+EAtUe,CAAA,CAAA,IAAA,OACY,CAAA,CAAA,IAAA,MACT,CAAA,CAAA,IAAA,OAK3B,CAAA,CAAA,IAAA,OAC0B,CAAA,CAAA,IAAA,GAQ1B,SAASd,EACdzc,CAAY,QAEZ,AAAmB,UAAf,OAAOA,GAA4B,OAARA,CAAgB,CAAE,CAAA,WAAYA,GAAE,AAIxDA,EAAID,CAJwD,KAIlD,GAAKyd,CACxB,GAXqC,CAAA,CAAA,IAAA,KACU,CAAA,CAAA,IAAA,GAY/C,IAAMA,EAA4B,2BAElC,OAAMC,UAAqC7d,MAGzCC,YACkBoM,CAAa,CACb8C,CAAkB,CAClC,CACA,KAAK,CACH,CAAC,qBAAqB,EAAEA,EAAW,qGAAqG,EAAEA,EAAW,8KAA8K,EAAE9C,EAAM,EAAE,CAAC,EAAA,IAAA,CAJhUA,KAAAA,CAAAA,EAAAA,IAAAA,CACA8C,UAAAA,CAAAA,EAAAA,IAAAA,CAJFhP,MAAAA,CAASyd,CASzB,CACF,CAEA,IAAME,EAAsB,qBAErB,OAAMtB,UAA+Bxc,MAG1CC,YAAYoM,CAAa,CAAE8C,CAAkB,CAAE,CAC7C,KAAK,CACH,CAAC,OAAO,EAAE9C,EAAM,kCAAkC,EAAE8C,EAEjD,SAF4D,uDAAuD;AAGnH;AAAA;AAAA;AAAA,OAAkH,CAAC,GACpH,CAAC;AAAA,uEAA8E,CAAC,GAChF,CAAC;AAAA,qCAA2E,CAAC;;2EAHzD,CAAC,AAFgG,EAKxC,CAF7E,AAFA,CAEC,AAFA,EAI4E,CATnEhP,MAAAA,CAAS2d,CAWzB,CACF,CAEO,SAASnK,EACdvT,CAAY,QAEZ,AAAmB,UAAf,OAAOA,GAA4B,OAARA,CAAgB,CAAE,CAAA,WAAYA,EAZsB,CAYpB,AAIxDA,AAhB6E,EAgBzED,CAJwD,AAX7D,KAeW,GAAK2d,CACxB,CAGA,IAAMC,EAAyB,IAAIC,QAgB5B,SAAShB,EACdnM,CAAmB,CACnBxE,CAAa,CACb8C,CAAkB,EAElB,OAAO8O,EACLpN,EACA,IAAIgN,EAA6BxR,EAAO8C,GAE5C,CAEO,SAASoO,EACd1M,CAAmB,CACnBxE,CAAa,CACb8C,CAAkB,EAElB,OAAO8O,EACLpN,EACA,IAAIgN,EAA6BxR,EAAO8C,GAE5C,CAoBO,SAASiO,EACdvM,CAAmB,CACnBxE,CAAa,CACb8C,CAAkB,CAClBE,CAA4B,EAM5B,OAAOqO,EAJSO,EACdpN,EACA,IAAIgN,EAA6BxR,EAAO8C,GAGxCiM,CACA8C,EAAyBnC,IAAI,CAAC,KAAM1M,EAAeF,GAEvD,CAyBO,SAASkO,EACdxM,CAAmB,CACnBxE,CAAa,CACb8C,CAAkB,CAClBE,CAAmC,EAEnC,IAAM+L,EAAU6C,EACdpN,EACA,IAAIgN,EAA6BxR,EAAO8C,WAE1C,AAAsB,MAAM,CAAxBE,EACK+L,EAEFsC,EACLtC,EACAuC,EAAqB5B,IAAI,CAAC,KAAM1M,EAAeF,GAEnD,CAMO,SAASmO,EACdzM,CAAmB,CACnBxE,CAAa,CACb8C,CAAkB,CAClBE,CAA4B,EAI5B,OAAO+N,EAA8BvM,EAAQxE,EAAO8C,EAAYE,EAClE,CAUO,SAAS6N,EACdrM,CAAmB,CACnBxE,CAAa,CACb8C,CAAkB,EAElB,OAAOoO,EAA4B1M,EAAQxE,EAAO8C,EACpD,CAeO,SAAS8N,EACdpM,CAAmB,CACnBxE,CAAa,CACb8C,CAAkB,CAClBE,CAAmC,EAEnC,IAAM+L,EAAU6C,EACdpN,EACA,IAAIgN,EAA6BxR,EAAO8C,WAE1C,AAAsB,MAAM,CAAxBE,EACK+L,EAEFsC,EACLtC,EACAoC,EAA4BzB,IAAI,CAAC,KAAM1M,EAAeF,GAE1D,CAqCO,SAASwN,IACd,MAAO,CACLwB,oBAAqBjC,CAAAA,EAAAA,EAAAA,0BAA0B,AAA1BA,IACrBkC,0BAA0B,EAC1BC,6BAA6B,CAC/B,CACF,CAEO,SAASzB,EACd0B,CAA4C,EAG5CA,EAAsBH,mBAAmB,CAACrU,OAAO,EAAC,EACpD,CAUA,SAASoU,EACP7O,CAA4B,CAC5BF,CAAkB,EAElBoP,EACElP,EAAAA,EAEAF,EAEJ,CAaO,SAASwO,EACdtO,CAA4B,CAC5BF,CAAkB,EAElBoP,EAAyBlP,EAAAA,EAA0CF,EACrE,CAUO,SAASqO,EACdnO,CAA4B,CAC5BF,CAAkB,EAElBoP,EACElP,EAAAA,EAEAF,EAEJ,CAQA,SAASoP,EACPlP,CAA4B,CAC5BmP,CAA2B,CAC3BrP,CAAkB,EAElB,GACO,cADCE,EAAcC,IAAI,CACN,CAChB,GAAM,uBAAEgP,CAAqB,CAAE/M,iBAAe,CAAE,CAAGlC,EACnD,GAAI,CAACiP,GAAyB,CAAC/M,EAC7B,OAEF,GAAM,CAAEkI,IAHwC,UAG5B,CAAE,CAAGlI,EACzB,GAAIkI,IAAiBT,EAAAA,WAAW,CAACyF,MAAM,CAAE,YACvClS,QAAQ9L,KAAK,CACX,IAAIiV,EAAAA,cAAc,CAChB,6DAKN,GAAI+D,GAAgBT,EAAAA,WAAW,CAAC0F,gBAAgB,CAO9C,CAPgD,MAUlD,IAAMC,EACJtP,EAAcsP,iBAAiB,EAAI7H,EAAAA,iBAAiB,CAAC8H,IAAI,CAW3D,OAAQJ,GACN,KAAA,EAAoC,CAKlC,IAAIK,EAGO,KAGTpF,GAAgBT,EAAAA,WAAW,CAAC8F,WAAW,EAEvCH,EADA,AACoB7H,EAAAA,iBAAiB,CAACiI,KAAK,EAC3C,CACAT,EAAsBF,wBAAwB,EAAG,EAHS,AAI1DS,IAAuB7F,EAAAA,WAAW,CAAC8F,WAAW,CAC9CE,OAAAA,EAAAA,EAAkB7P,CAAlB6P,CAA8B,UAI9BvF,GAAgBT,EAAAA,WAAW,CAACiG,cAAc,EAE1CN,EADA,AACoB7H,EAAAA,iBAAiB,CAACoI,QAAQ,EAC9C,CACAZ,EAAsBD,2BAA2B,CAHY,CAGT,EAEpDQ,IAAuB7F,EAAAA,WAAW,CAACiG,cAAc,CACjDD,MAAAA,CAAAA,EAAAA,EAAkB7P,CAAlB6P,CAA8B,aAGL,MAAM,CAA7BH,GACFM,EACEb,EACA/M,EACAsN,GAGJ,KACF,CACA,KAAA,EACE,GAAIxP,EAAc+P,qBAAqB,CAAE,CAYnCT,EAAoB7H,EAAAA,iBAAiB,CAACoI,QAAQ,EAAE,CAClDC,EACEb,EACA/M,EAEAyH,EAAAA,WAAW,CAACiG,cAAc,EAE5BI,OAAAA,EAAAA,GAAAA,CAH4D,CAK9D,KACF,CAIF,KAAA,EAGI5F,GAAgBT,EAAAA,WAAW,CAACiG,cAAc,EAC1CN,EAAoB7H,EAAAA,iBAAiB,CAACoI,QAAQ,EAC9C,CACAZ,EAAsBD,2BAA2B,EAAG,EACpDW,MAAAA,CAAAA,EAAAA,EAAkB7P,CAAlB6P,CAA8B,YAE9BG,EACEb,EACA/M,EACAyH,EAAAA,WAAW,CAACiG,cAAc,EAKlC,CAGF,CAgBJ,CAoBA,SAASE,EACPb,CAA4C,CAC5CgB,CAA0C,CAC1CtE,CAAmC,EAEnC,GAAM,qBAAEmD,CAAmB,CAAE,CAAGG,EAG5BgB,EAAgB7F,YAAY,EAAIuB,EAClCmD,EAAoBrU,OAAO,EADoB,AACnB,GAE5BwV,EAAgBnF,OAAO,CACrBa,EACAmD,EAAoBrU,OAAO,CAACiS,IAAI,CAAC,MAAM,GAG7C,CAEA,IAAMiD,EAAkBhV,QAAQC,GAAG,CAACsV,+BAA+B,CAC/D,CAACpQ,EAAoBkE,KACnB,GAAM,OAAEhH,CAAK,CAAE,CAAGmT,EAAAA,gBAAgB,CAACC,QAAQ,GAC3ClT,QAAQmT,GAAG,CACT,CAAC,OAAO,EAAErT,EAAM,yBAAyB,EAAEgH,EAAK,iBAAiB,EAAElE,EAAAA,CAAY,CAEnF,OACAsB,EAEE4O,EAAgCrV,QAAQC,GAAG,CAC9CsV,+BAA+B,CAC9B,KACE,GAAM,OAAElT,CAAK,CAAE,CAAGmT,EAAAA,gBAAgB,CAACC,QAAQ,GAC3ClT,QAAQmT,GAAG,CACT,CAAC,OAAO,EAAErT,EAAM,uDAAuD,CAAC,CAE5E,OACAoE,EAOG,SAASgN,EACdpO,CAA2B,CAC3Be,CAAc,EAEd,GAAM,iBAAEmB,CAAe,CAAE,CAAGlC,EAC5B,GAAI,CAACkC,EACH,OASF,GAAM,KAVgB,SAUdkI,CAAY,CAAE,CAAGlI,EACzB,GACEkI,IAAiBT,EAAAA,WAAW,CAAC2G,OAAO,EACpClG,IAAiBT,EAAAA,WAAW,CAAC4G,SAAS,EACtC,AAGF,GAAI5V,QAAQC,GAAG,CAAC4V,6BAA6B,CAAE,CAC7C,IAAM1M,EAAYqM,EAAAA,gBAAgB,CAACC,QAAQ,GAC3ClT,QAAQmT,GAAG,CACT,CAAC,MAAM,EAAEvM,EAAU9G,KAAK,CAAC,8BAA8B,EAAE+D,EAAAA,CAAQ,CAErE,CACAf,EAAcyQ,2BAA2B,EAAG,EAC9C,CAEO,SAAShD,EACdjM,CAAmB,CACnBpQ,CAA6B,EAE7B,OAAOwd,EAA4BpN,EAAQpQ,EAC7C,CAEA,SAASwd,EACPpN,CAAmB,CACnBpQ,CAAY,EAEZ,GAAIoQ,EAAOC,OAAO,CAChB,CADkB,MACXjH,QAAQiS,MAAM,CAACrb,EACjB,EACL,IAAMsf,EAAiB,IAAIlW,QAAW,CAACtC,EAAGuU,KACxC,IAAMkE,EAAiBlE,EAAOC,IAAI,CAAC,KAAMtb,GACrCwf,EAAmBlC,EAAuBvc,GAAG,CAACqP,GAClD,GAAIoP,EACFA,EAAiBvZ,IAAI,CAACsZ,OACjB,CACL,CAHoB,GAGdzD,EAAY,CAACyD,EAAe,CAClCjC,EAAuBxZ,GAAG,CAACsM,EAAQ0L,GACnC1L,EAAOiJ,gBAAgB,CACrB,QACA,KACE,IAAK,IAAIvE,EAAI,EAAGA,EAAIgH,EAAUzY,MAAM,CAAEyR,IAAK,AACzCgH,CAAS,CAAChH,EAAE,EAEhB,EACA,CAAE0E,MAAM,CAAK,EAEjB,CACF,GAKA,OADA8F,EAAerE,KAAK,CAACC,GACdoE,CACT,CACF,CAEA,SAASpE,IAAgB,CAQlB,SAASwB,EACdpD,CAAqB,CACrB5X,CAAQ,EAER,IAAMiZ,EAAUrB,EAAQhQ,IAAI,CAAC,IAAM5H,GAEnC,OADAiZ,EAAQM,KAAK,CAACC,GACPP,CACT,CAEO,SAAS2B,EACdmD,CAAa,CACblQ,CAA0B,CAC1BqJ,CAA6B,SAE7B,AAAIrJ,EAAauB,eAAe,CAEvBvB,CAFyB,CAEZuB,eAAe,CAAC8J,eAAe,CACjDhC,EACA5I,OACAyP,GAKG,IAAIrW,QAAW,AAACC,IAErBK,WAAW,KACTL,EAAQoW,EACV,EAAG,EACL,EACF,CAKO,SAASxC,EACdtC,CAAmB,CACnB+E,CAAiB,EAcjB,OAAOC,EAAexe,IAAI,CAAIwZ,EAAS+E,EACzC,CAEA,MAAMC,UAA0BvW,UAC9B,AAAM,AAA4B,AAIlC,CAJA,UAIW,CAAC5C,OAAOoZ,OAAO,CAAC,EAAG,CAC5B,OAAOxW,OACT,CAEA,OAAOjI,KAAQwZ,CAAmB,CAAE+E,CAAiB,CAAqB,CAExE,IAAMG,EAAU,IAAIF,EAAkBhF,EAAQrR,IAAI,CAACgS,IAAI,CAACX,IAUxD,OARAkF,EAAAA,CAAAA,AAAQ,CAAA,AAAM,CAAGH,EAMjBtW,QAAQ3I,SAAS,CAAC6I,IAAI,CAAC/H,IAAI,CAACse,OAAS7P,EAAWkL,GAEzC2E,CACT,CAEAvW,KACEwW,CAA4D,CAC5DC,CAAkE,CACpC,CAC9B,IAAML,EAAQ,IAAI,CAAA,CAAA,CAAC,AAAM,CAAN,AACnB,GAAIA,EACF,GAAI,CACFA,CAFO,EAGT,CAAE,MAAO/f,EAAK,CAEZmM,QAAQ9L,KAAK,CAACL,EAChB,CAGF,OAAOyJ,QAAQ3I,SAAS,CAAC6I,IAAI,CAAC/H,IAAI,CAChC,IAAI,CACJue,EACAC,EAEJ,mBA3CF,KAAA,IAAA,GAAA,IAAA,CAAA,CAAA,AACE,CAAA,AAAM,CAAwB,KA2ChC,CAEO,IAAM/D,EAA6B,CACxCgE,YAAazH,EAAAA,WAAW,CAAC0H,YAAY,CAOrCC,cAAe,CAObC,YAAa,CACXC,OAAQ7H,EAAAA,WAAW,CAAC8H,0BAA0B,CAC9CC,QAAS/H,EAAAA,WAAW,CAACgI,2BACvB,AADkD,EAElDH,OAAQ7H,EAAAA,WAAW,CAACiG,cAAc,CAClC8B,QAAS/H,EAAAA,WAAW,CAACiI,eAAe,AACtC,EAIAC,eAAgBlI,EAAAA,WAAW,CAACiI,eAAe,AAC7C,EAEO,SAASvE,EAAgBjc,CAAY,EAyD1C,OAAOA,CACT,2ECtwBsBihB,sBAAsB,CAAA,kBAAtBA,GA5BA/J,qBAAqB,CAAA,kBAArBA,+EA7Bc,CAAA,CAAA,IAAA,GA6B7B,eAAeA,EAAsBgK,CAAsB,EAChE,IAMIzf,EACAigB,EACA/L,EARE,AAMI3F,MACmCA,EAPrCmR,CAAM,AAQCnR,MARCoR,CAAI,CAAEC,aAAW,CAAE,CAAGH,CAAU,CAAC,EAAE,CAC7CI,EAAW,KAAkB,IAAXH,EAClBI,EAAS,KAAgB,IAATH,EAChBI,EACJ,KAAuB,IAAhBH,GAA+BH,CAAU,CAAC,EAAE,GAAKO,EAAAA,mBAAmB,CAoB7E,OAdIH,GACF7f,EAAM,KADM,CACA0f,CAAM,CAAC,EAAE,GACrBO,EAAU,SACV/L,EAAWwL,CAAM,CAAC,EAAE,EACXI,GACT9f,EAAM,GADW,GACL2f,CAAI,CAAC,EAAE,GACnBM,EAAU,OACV/L,EAAWyL,CAAI,CAAC,EAAE,EACTI,IACT/f,EAAM,MAAM4f,CAAW,CAAC,CADA,CACE,GAC1BK,EAAU,OACV/L,EAAW0L,CAAW,CAAC,EAAE,EAGpB,KAAE5f,UAAKigB,WAAS/L,CAAS,CAClC,CAEO,eAAesL,EACpBC,CAAsB,CACtBS,CAAiE,EAEjE,GAAM,CAAE,CAACA,EAAW,CAAE1f,CAAM,CAAE,CAAGif,CAAU,CAAC,EAAE,CAC9C,GAAI,KAAkB,IAAXjf,EACT,OADiC,AAC1B,MAAMA,CAAM,CAAC,EAAE,EAG1B,2ECvCgB2f,iCAAiC,CAAA,kBAAjCA,GAZAC,oCAAoC,CAAA,kBAApCA,GATAC,qDAAqD,CAAA,kBAArDA,+EAPsB,CAAA,CAAA,IAAA,OACH,CAAA,CAAA,IAAA,OACG,CAAA,CAAA,IAAA,OAEY,CAAA,CAAA,IAAA,GAG3C,SAASA,EACdlW,CAAa,CACb8C,CAAkB,EAElB,MAAM,IAAI9O,EAAAA,qBAAqB,CAC7B,CAAC,MAAM,EAAEgM,EAAM,4EAA4E,EAAE8C,EAAW,0HAA0H,CAAC,CAEvO,CAEO,SAASmT,EACdnP,CAAoB,CACpBqP,CAAwB,EAExB,IAAM/hB,EAAQgiB,CAAAA,EAAAA,EAAAA,iCAAAA,AAAiC,EAACtP,EAAU9G,KAAK,CAK/D,OAHArM,MAAM0iB,iBAAiB,CAACjiB,EAAO+hB,GAC/BrP,EAAUwP,wBAAwB,GAAKliB,EAEjCA,CACR,CAEO,SAAS4hB,EACdhT,CAA4B,EAE5B,OAAQA,EAAcY,KAAK,EACzB,IAAK,SACL,IAAK,SAGH,OAAO,CAET,KAAK,QAAS,CAKZ,IAAM2S,EAAcC,EAAAA,kBAAkB,CAACpD,QAAQ,GAC/C,GAAImD,IAAgBA,EAAYE,SAAZF,CAAsB,EAAIA,EAAYG,QAAO,AAAPA,EACxD,CADmE,MAC5D,EAGT,IAAMC,EAAiBC,EAAAA,qBAAqB,CAACxD,QAAQ,GACrD,GAAIuD,EAQF,MAAOA,AAAsC,QAR3B,KAQIE,kBAAkB,CAM1C,OAAO,CACT,CACF,CACF,mBCxCQxgB,EAAOC,OAAO,CAAGwgB,EAAQ,CAAA,CAAA,IAAA,oBC1BjCzgB,EAAOC,OAAO,CACZwgB,EAAQ,CAAA,CAAA,IAAA,GACRG,QAAQ,CAAC,YAAY,CAAEnO,KAAK,kBCE7B,OAAA,cAAA,CAAA,EAAA,aAAA,mBAmKeoO,mCAAmC,CAAA,kBAAnCA,GARAC,kCAAkC,CAAA,kBAAlCA,GAzFAC,sCAAsC,CAAA,kBAAtCA,GANAC,qCAAqC,CAAA,kBAArCA,GAYAC,oCAAoC,CAAA,kBAApCA,GApCAC,iCAAiC,CAAA,kBAAjCA,GANAC,4BAA4B,CAAA,kBAA5BA,GAkFAC,2CAA2C,CAAA,kBAA3CA,GATAC,sCAAsC,CAAA,kBAAtCA,GAvDAC,iCAAiC,CAAA,kBAAjCA,GANAC,4BAA4B,CAAA,kBAA5BA,GA2IAC,iCAAiC,CAAA,kBAAjCA,GAVAC,oCAAoC,CAAA,kBAApCA,GAlDAC,iCAAiC,CAAA,kBAAjCA,GAkBAC,yCAAyC,CAAA,kBAAzCA,GATAC,qCAAqC,CAAA,kBAArCA,GA3CAC,6CAA6C,CAAA,kBAA7CA,GATAC,wCAAwC,CAAA,kBAAxCA,GAxBA/B,iCAAiC,CAAA,kBAAjCA,GA2IAgC,8CAA8C,CAAA,kBAA9CA,GAQAC,6CAA6C,CAAA,kBAA7CA,GAQAC,+CAA+C,CAAA,kBAA/CA,uEA7MhB,IAAMC,EACJ,6DAEIC,EACJ,qEAWII,EACJ,iEAEIC,EACJ,2DAEIC,EACJ,0EAIK,SAAStB,EAA6BxX,CAAa,EACxD,OAAWrM,AAAJ,MACL,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAA+I,EAAEuY,EAAAA,CAA2B,CAEhM,CAEO,SAAShB,EAAkCvX,CAAa,EAC7D,OAAWrM,AAAJ,MACL,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAAoJ,EAAEwY,EAAAA,CAAyB,CAEnM,CAEO,SAASZ,EAA6B5X,CAAa,EACxD,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAA+I,EAAEuY,EAAAA,CAA2B,CAEhM,CAEO,SAASZ,EAAkC3X,CAAa,EAC7D,OAAWrM,AAAJ,MACL,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAAoJ,EAAEwY,EAAAA,CAAyB,CAEnM,CAEO,SAASpC,EAAkCpW,CAAa,EAC7D,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAAmJ,EAAEuY,EAAAA,CAA2B,CAEpM,CAEO,SAASlB,EAAsCrX,CAAa,EACjE,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAAgM,EAAEuY,EAAAA,CAA2B,CAEjP,CAEO,SAASnB,EAAuCpX,CAAa,EAClE,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,MAAM,iNAAiN,EAAEyY;gBlG3D3J,mEkG2DuL,CAEnQ,CAEO,SAASnB,EAAqCtX,CAAa,EAChE,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAAqM,EAAEwY,EAAAA,CAAyB,CAEpP,CAEO,SAASL,EACdnY,CAAa,CACb8C,CAAkB,EAElB,OAAO,AAAInP,MACT,CAAC,OAAO,EAAEqM,EAAM,KAAK,EAAE8C,EAAW;AAAA,YAAiI,EAAEyV,EAAAA,CAA2B,CAEpM,CAEO,SAASL,EACdlY,CAAa,CACb8C,CAAkB,EAElB,OAAO,AAAInP,MACT,CAAC,OAAO,EAAEqM,EAAM,KAAK,EAAE8C,EAAW;AAAA,YAAsI,EAAE0V,EAAAA,CAAyB,CAEvM,CASO,SAASd,EACd1X,CAAa,CACb8C,CAAkB,EAElB,OAAO,AAAInP,MACT,CAAC,OAAO,EAAEqM,EAAM,KAAK,EAAE8C,EAAW;AAAA,YAA2J,EAAEyV,EAAAA,CAA2B,CAE9N,CAEO,SAASd,EACdzX,CAAa,CACb8C,CAAkB,EAElB,OAAO,AAAInP,MACT,CAAC,OAAO,EAAEqM,EAAM,KAAK,EAAE8C,EAAW;AAAA,YAAgK,EAAE0V,EAAAA,CAAyB,CAEjO,CAEO,SAAST,EACd/X,CAAa,CACb8C,CAAkB,EAElB,OAAO,AAAInP,MACT,CAAC,OAAO,EAAEqM,EAAM,KAAK,EAAE8C,EAAW;AAAA,YAAsG,EAAE+V,EAAAA,CAAyB,CAEvK,CAEO,SAASZ,EACdjY,CAAa,CACb8C,CAAkB,EAElB,OAAO,AAAInP,MACT,CAAC,OAAO,EAAEqM,EAAM,KAAK,EAAE8C,EAAW;AAAA,YAAiH,EAAE+V,EAAAA,CAAyB,CAElL,CAEO,SAASb,EACdhY,CAAa,CACb8C,CAAkB,CAClBiW,CAAqC,EAErC,OAAO,AAAIplB,MACT,CAAC,OAAO,EAAEqM,EAAM,KAAK,EAAE8C,EAAW,4BAA4B,EAAEiW,EAAc;AAAA,YAAwE,EAAEF,EAAAA,CAAyB,CAErL,CAIA,SAASG,EAAYhZ,CAAyB,EAC5C,YAAiBoE,IAAVpE,EAAsB,GAAK,CAAC,OAAO,EAAEA,EAAM,GAAG,CAAC,AACxD,CAEO,SAASmX,EACdnX,CAAyB,EAEzB,OAAWrM,AAAJ,MACL,GAAGqlB,EAAYhZ,OAAO,8GAA8G,EAAE0Y;yEAA6B,CAEvK,CAEO,SAASxB,EACdlX,CAAyB,EAEzB,OAAO,AAAIrM,MACT,GAAGqlB,EAAYhZ,OAAO,+GAA+G,EAAE2Y;0EAA8B,CAEzK,CAEO,SAASb,EACd9X,CAAa,CACbqI,CAAwB,EAExB,OAAO,AAAI1U,MACT,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAAiR,EAAE8Y,EAAAA,CAAwC,CAC3U,CAAEzQ,OAAM,EAEZ,CAEO,SAASwP,EACd7X,CAAa,CACbqI,CAAwB,EAExB,OAAO,AAAI1U,MACT,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAA+R,EAAE8Y,EAAAA,CAAwC,CACzV,OAAEzQ,CAAM,EAEZ,CAIO,SAAS+P,EACdpY,CAAa,EAEb,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAA6M,EAAE4Y,EAAAA,CAA+B,CAElQ,CAEO,SAASP,EACdrY,CAAa,EAEb,OAAO,AAAIrM,MACT,CAAC,OAAO,EAAEqM,EAAM;AAAA,YAA4O,EAAE4Y,EAAAA,CAA+B,CAEjS,CAEO,SAASN,EACdtY,CAAa,CACbiZ,CAAoB,EAEpB,OAAO,AAAItlB,MACT,CAAC,OAAO,EAAEqM,EAAM,kFAAkF,EAAEiZ,EAAa;AAAA,YAA+F,EAAEL,EAAAA,CAA+B,CAErP,4FC5NaM,iBAAAA,qCAAAA,IAAN,OAAMA,EACX,OAAO/jB,IACLH,CAAS,CACTmkB,CAAqB,CACrBC,CAAiB,CACZ,CACL,IAAMtjB,EAAQujB,QAAQlkB,GAAG,CAACH,EAAQmkB,EAAMC,SACxC,AAAqB,YAAjB,AAA6B,OAAtBtjB,EACFA,EAAM4Z,IAAI,CAAC1a,GAGbc,CACT,CAEA,OAAOoC,IACLlD,CAAS,CACTmkB,CAAqB,CACrBrjB,CAAU,CACVsjB,CAAa,CACJ,CACT,OAAOC,QAAQnhB,GAAG,CAAClD,EAAQmkB,EAAMrjB,EAAOsjB,EAC1C,CAEA,OAAOhe,IAAsBpG,CAAS,CAAEmkB,CAAqB,CAAW,CACtE,OAAOE,QAAQje,GAAG,CAACpG,EAAQmkB,EAC7B,CAEA,OAAOG,eACLtkB,CAAS,CACTmkB,CAAqB,CACZ,CACT,OAAOE,QAAQC,cAAc,CAACtkB,EAAQmkB,EACxC,CACF,yEChCEnjB,cAAc,CAAA,kBAAdA,EAAAA,cAAc,EACdC,eAAe,CAAA,kBAAfA,EAAAA,eAAe,EACfG,eAAe,CAAA,kBAAfA,EAAAA,eAAe,8EACV,CAAA,CAAA,IAAA,4ECeSmjB,8BAA8B,CAAA,kBAA9BA,GAnBApP,4BAA4B,CAAA,kBAA5BA,uEAAT,SAASA,EACdnK,CAAa,CACb0J,CAA+B,EAE/B,IAAI/E,EAAU,CAAC,OAAO,EAAE3E,EAAM,uEAAuE,CAAC,CACtG,GAAI0J,EAAajS,MAAM,CAAG,EAAG,CAC3B,IAAM+hB,EACoB,IAAxB9P,EAAajS,MAAM,CAAS,kBAAoB,mBAClDkN,GACE,CAAC,6GAA6G;AAC7G;;AAEA;AAFI,AAEJ,EAFM6U,EAAM,eAE6B,CAAC,GAC3C,CAAC,mHAAmH,CAAC,GACrH,CAAC;AAJe,EAAE9P,EAAa9R,GAAG,CAAC,AAAC6hB,GAAM,CAAC,EAAE,EAAEA,EAAAA,CAAG,EAAE/hB,IAAI,CAAC,OAAO,GAChE,CAAC,qBAAqB,CAAC,GACvB,CAAC;AAEA;AAAA;AAAA;AAAA;AAOF;AAAA,uEAP6E,CALmC,AAKlC,AACjF,CACA,EANI,CAAC,IAME,AAAI/D,MAAMgR,EACnB,CAEO,SAAS4U,EAA+BG,CAAgB,EAC7D,OAAO,AAAI/lB,MACT,0DAA0D,EAAE+lB,EAEzD,OAFkE,MAAM;AAExE;AAAA;AACA;AAAA;AAAA,0IAAmM,CAAC,GACrM,CAAC;AAAA,kCAAsF,CAAC,GACxF,CAAC;AAAA,4DAA2G,CAAC,GAC7G,CAAC;AAAA;AAAA,gCAA0E,CAAC,yCAJxD,CAFsD,AAErD,CAM3B,EALM,AAFA,CAEC,AAFA,wDAAwD,CAAC,GAC1D,6BCvBOrQ,iBAAAA,qCAAAA,IAAN,OAAMA,UAAuB1V,MAClCC,YAAY+Q,CAAe,CAAEnI,CAAsB,CAAE,CACnD,KAAK,CACH,CAAC,WAAW,EAAEmI,EAAQgV,QAAQ,CAAC,KAAOhV,EAAUA,EAAU,IAAI,0BAA0B,CAAC,CACzFnI,GAEF,IAAI,CAACtH,IAAI,CAAG,gBACd,CACF,2ECEgB0kB,+BAA+B,CAAA,kBAA/BA,GASAlR,4BAA4B,CAAA,kBAA5BA,GAUAmR,yBAAyB,CAAA,kBAAzBA,uEA1BhB,IAAMC,EAA+Blf,OAAOe,GAAG,CAAC,+BAOzC,SAASie,EACd7V,CAAc,EAEd,MAAO,CACLgW,SAAUD,SACV/V,CACF,CACF,CAEO,SAAS2E,EACdtU,CAAc,EAEd,IAAMiU,EAASjU,GAAiBiU,MAEhC,OAAOA,GAAO0R,WAAaD,EACvBzR,EAAMtE,MAAM,MACZK,CACN,CAEO,SAASyV,EAA0BzlB,CAAc,EACtD,YAA+CgQ,IAAxCsE,EAA6BtU,EACtC,kBC/BO,SAASyb,IAId,IAFIpS,EACAgS,EACEV,EAAU,IAAIvR,QAAW,CAACwc,EAAKC,KACnCxc,EAAUuc,EACVvK,EAASwK,CACX,GACA,MAAO,CAAExc,QAASA,EAAUgS,OAAQA,UAASV,CAAQ,CACvD,0EATgBc,6BAAAA,qCAAAA,+FCGAjE,kBAAAA,qCAAAA,aAHoB,CAAA,CAAA,IAAA,GAG7B,SAASA,EAAgBd,CAAgB,EAC9C,GAAM,CAACoP,EAASvO,EAAgBwO,EAASC,EAAe,CAAGtP,EACrD,CAAEyK,QAAM,UAAE8E,CAAQ,CAAE,CAAGF,EACzB,MAAE3E,CAAI,CAAE,CAAG2E,EAGf3E,EAAO0E,IAAYrE,EAAAA,mBAAmB,CAAGsE,EAAQ1E,WAAW,CAAGD,EAE/D,IAAM8E,EAAiB/E,GAAQ,CAAC,EAAE,EAAI8E,GAAU,CAAC,EAAE,EAAI7E,GAAM,CAAC,EAAE,CAEhE,MAAO,MACLA,UACA0E,EACAC,yBAEAG,iBACA3O,iBACAyO,CACF,CACF,2ECiDavE,mBAAmB,CAAA,kBAAnBA,GACA0E,qBAAqB,CAAA,kBAArBA,GAFAC,gBAAgB,CAAA,kBAAhBA,GAvDGC,4BAA4B,CAAA,kBAA5BA,GAbAC,eAAe,CAAA,kBAAfA,GAiCAC,4BAA4B,CAAA,kBAA5BA,AAAT,SAASA,EACd7P,CAAuB,CACvBe,CAAwB,CACxBoP,GAAQ,CAAI,CACZC,EAAwB,EAAE,MAEtBC,EACJ,GAAIF,EAEFE,EAAOrQ,CAAI,CAAC,CAFH,CAEK,CAACe,EAAiB,KAC3B,CAEL,IAAMF,EAAiBb,CAAI,CAAC,EAAE,CAC9BqQ,EAAOxP,EAAeyP,QAAQ,EAAI9mB,OAAOyH,MAAM,CAAC4P,EAAe,CAAC,EAAE,AACpE,CAEA,GAAI,CAACwP,EAAM,OAAOD,EAGlB,IAAIG,EAAeX,EAFHS,CAAI,CAAC,EAAE,SAIvB,AAAI,AAACE,CAF8BnB,EAEdmB,IAAiBb,GAItCU,EAAY7gB,IAAI,CAACghB,GAEVV,EACLQ,EACAtP,CARsD,EAStD,EACAqP,IATOA,CAWX,GA9DgBN,cAAc,CAAA,kBAAdA,GAKAC,sBAAsB,CAAA,kBAAtBA,uEATT,SAASH,EAAgBR,CAAgB,EAC9C,OAAOjf,MAAMO,OAAO,CAAC0e,GAAWA,CAAO,CAAC,EAAE,CAAGA,CAC/C,CAEO,SAASU,EAAeV,CAAe,EAE5C,MAAOA,AAAe,OAAR,CAAC,EAAE,EAAYA,EAAQP,QAAQ,CAAC,IAChD,CAEO,SAASkB,EAAuBX,CAAe,EACpD,OAAOA,EAAQY,UAAU,CAAC,MAAoB,cAAZZ,CACpC,CAEO,SAASO,EACdM,CAAyB,CACzBlP,CAAwB,EAExB,GAAI,CAACkP,GAAgC,GAAG,CAAvBA,EAAStjB,MAAM,CAC9B,OAAO,KAIT,IAAMujB,EACiB,aAArBnP,EACIkP,CAAQ,CAAC,EAAE,CACXA,CAAQ,CAACA,EAAStjB,MAAM,CAAG,EAAE,CAInC,OAAOujB,IAAenF,EAAsB,KAAOmF,CACrD,CAsCO,IAAMR,EAAmB,WACnB3E,EAAsB,cACtB0E,EAAwB,+MCxErC,CAAC,KAAK,iBAAgt2B8N,EAAuHC,IAAwOE,EAA8HC,EAAhq3B,IAA+/wBvvB,IAAyYsiB,EAAwIC,EAA+HvS,EAAqI3S,IAAuXsmB,EAA6HC,MAA2YoL,EAAmIhtB,MAAklBc,EAAp21Bsf,EAAE,CAAC,IAAI,CAACA,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEqiB,UAAU,CAAC,KAAK,EAAE,IAAMpgB,EAAE8C,EAAE,KAAWud,EAAEvd,EAAE,KAAWwd,EAAExd,EAAE,IAAUiL,EAAE,UAAgB3S,EAAE,IAAI4E,EAAEugB,kBAAkB,AAAwgBxiB,GAAEqiB,UAAU,CAAnhB,EAAohBA,IAA9gBA,EAA0B,OAAOI,aAAa,CAAmD,OAA/C,AAAC,IAAI,CAACC,SAAS,EAAC,CAAC,IAAI,CAACA,SAAS,CAAC,IAAIL,CAAAA,EAAkB,IAAI,CAACK,SAAS,CAACC,wBAAwBP,CAAC,CAAC,CAAC,MAAM,CAAC,EAAEE,EAAEM,cAAAA,AAAc,EAAE5S,EAAEoS,EAAEG,EAAEM,OAAO,CAACC,QAAQ,GAAG,CAACC,QAAQ,CAAC,OAAO,IAAI,CAACC,kBAAkB,GAAGD,MAAM,EAAE,CAACE,KAAKb,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC,GAAG9C,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC+gB,kBAAkB,GAAGC,IAAI,CAACb,EAAEpiB,EAAE+E,KAAK9C,EAAE,CAACuU,KAAK4L,CAAC,CAACpiB,CAAC,CAAC,CAAC,OAAO,IAAI,CAACgjB,kBAAkB,GAAGxM,IAAI,CAAC4L,EAAEpiB,EAAE,CAACgjB,oBAAoB,CAAC,MAAM,CAAC,EAAEV,EAAEY,SAAAA,AAAS,EAAElT,IAAI3S,CAAC,CAAC8lB,SAAS,CAAC,IAAI,CAACH,kBAAkB,GAAGG,OAAO,GAAG,CAAC,EAAEb,EAAEc,gBAAgB,AAAhBA,EAAkBpT,EAAEuS,EAAEM,OAAO,CAACC,QAAQ,GAAG,CAAC,CAAwB,EAAE,GAAG,CAACV,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE6iB,OAAO,CAAC,KAAK,EAAE,IAAM5gB,EAAE8C,EAAE,KAAWud,EAAEvd,EAAE,KAAWwd,EAAExd,EAAE,KAAWiL,EAAEjL,EAAE,IAAmvC/E,GAAE6iB,OAAO,CAAxuC,EAAyuCA,IAAnuCA,EAAQA,aAAa,CAAC,SAASQ,EAAUjB,CAAC,EAAE,OAAO,SAAS,GAAGpiB,CAAC,EAAE,IAAM+E,EAAE,CAAC,EAAEiL,EAAEkT,SAAAA,AAAS,EAAE,QAAQ,GAAIne,CAAD,CAAU,CAAP,MAAcA,CAAC,CAACqd,EAAE,IAAIpiB,EAAE,CAAC,CAAC,IAAMoiB,EAAE,IAAsvBA,AAAlvB,GAAovBkB,SAAS,CAA5uB,CAACtjB,CAA4uBsjB,CAA1uBve,EAAE,CAACwe,SAAShB,EAAEiB,YAAY,CAACC,IAAI,CAAC,IAAI,IAAIxhB,EAAE5E,EAAEqmB,EAAE,GAAG1jB,IAAIoiB,EAAE,CAAC,IAAMpiB,EAAE,AAAIvF,MAAM,sIAA0L,OAApD2nB,EAAElnB,KAAK,CAAC,OAAC+G,EAAEjC,EAAEsK,KAAAA,AAAK,EAAqBrI,EAAEjC,EAAnB,AAAqByL,OAAO,CAAtBxJ,EAA+B,CAAK,CAAe,EAA/C,KAAK,GAA+B,AAAoB,OAAb8C,IAAcA,EAAE,CAACwe,SAASxe,EAAC,EAAE,IAAM4e,EAAE,CAAC,EAAE3T,EAAEkT,SAAAA,AAAS,EAAE,QAAcU,EAAE,CAAC,EAAEtB,EAAEuB,wBAAAA,AAAwB,EAAE,OAACxmB,EAAE0H,EAAEwe,QAAAA,AAAQ,EAAqBlmB,EAAEklB,EAAnB,AAAqBiB,QAAfnmB,IAA2B,CAAComB,CAAxB,GAA4B,CAACzjB,CAAxB,EAA2B,GAAG2jB,GAAG,CAAC5e,EAAE+e,uBAAuB,CAAC,CAAC,IAAM1B,EAAE,OAACsB,EAAE,AAAC,AAAIjpB,KAAK,GAAE6P,KAAAA,AAAK,EAAqBoZ,EAAE,EAAnB,QAAMA,MAAI,KAAK,aAAsCC,EAAE1R,IAAI,CAAC,CAAC,wCAAwC,EAAEmQ,EAAAA,CAAG,EAAEwB,EAAE3R,IAAI,CAAC,CAAC,0DAA0D,EAAEmQ,EAAAA,CAAG,CAAC,CAAC,MAAM,CAAC,EAAEpS,EAAE4S,cAAAA,AAAc,EAAE,OAAOgB,EAAExB,GAAE,EAAK,EAAwBA,EAAEe,OAAO,CAAC,KAAK,CAAC,EAAEnT,EAAEoT,gBAAAA,AAAgB,EAAv8B,AAAy8B/lB,OAAE+kB,EAAE,EAAEA,EAAE2B,qBAAqB,CAAC3B,GAAG,IAAIngB,EAAE+hB,mBAAmB,CAAC5B,GAAGA,EAAE6B,OAAO,CAACZ,EAAU,WAAWjB,EAAE8B,KAAK,CAACb,EAAU,SAASjB,EAAE+B,IAAI,CAACd,EAAU,QAAQjB,EAAEnQ,IAAI,CAACoR,EAAU,QAAQjB,EAAElnB,KAAK,CAACmoB,EAAU,QAAQ,CAAC,OAAOP,UAAU,CAAgD,OAA5C,AAAC,IAAI,CAACJ,SAAS,EAAC,CAAC,IAAI,CAACA,SAAS,CAAC,IAAIG,CAAAA,EAAe,IAAI,CAACH,SAAS,CAAC,CAAkB,EAAE,IAAI,CAACN,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,MAAM,EAAI,GAAGoD,EAAEokB,UAAU,CAAC,KAAK,EAAE,IAAMniB,EAAE8C,EAAE,KAAWud,EAAEvd,EAAE,KAAWwd,EAAExd,EAAE,IAAUiL,EAAE,UAAkZhQ,EAAEokB,UAAU,CAApZ,EAAqZA,IAA/YA,EAA0B,OAAO3B,aAAa,CAAmD,OAA9C,AAAD,IAAK,CAACC,SAAS,EAAC,CAAC,IAAI,CAACA,SAAS,CAAC,IAAI0B,CAAAA,EAAkB,IAAI,CAAC1B,SAAS,CAAC2B,uBAAuBjC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAEE,EAAEM,cAAAA,AAAc,EAAE5S,EAAEoS,EAAEG,EAAEM,OAAO,CAACC,QAAQ,GAAG,CAACwB,kBAAkB,CAAC,MAAM,CAAC,EAAEhC,EAAEY,SAAAA,AAAS,EAAElT,IAAI/N,EAAEsiB,mBAAmB,CAACC,SAASpC,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC,CAAC,OAAO,IAAI,CAACuf,gBAAgB,GAAGE,QAAQ,CAACpC,EAAEpiB,EAAE+E,EAAE,CAACoe,SAAS,CAAC,CAAC,EAAEb,EAAEc,gBAAAA,AAAgB,EAAEpT,EAAEuS,EAAEM,OAAO,CAACC,QAAQ,GAAG,CAAC,CAAwB,EAAE,GAAG,CAACV,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEykB,cAAc,CAAC,KAAK,EAAE,IAAMxiB,EAAE8C,EAAE,KAAWud,EAAEvd,EAAE,IAAUwd,EAAExd,EAAE,IAAUiL,EAAEjL,EAAE,KAAW1H,EAAE0H,EAAE,KAAW2e,EAAE3e,EAAE,IAAU4e,EAAE,cAAoBC,EAAE,IAAItB,EAAEoC,qBAAqB,CAA0sB1kB,EAAEykB,cAAc,CAAztB,EAA0tBA,IAAptBA,EAAeA,aAAa,CAAC,IAAI,CAACE,aAAa,CAACtnB,EAAEsnB,aAAa,CAAC,IAAI,CAACC,UAAU,CAAC5U,EAAE4U,UAAU,CAAC,IAAI,CAACC,gBAAgB,CAAC7U,EAAE6U,gBAAgB,CAAC,IAAI,CAACC,UAAU,CAAC9U,EAAE8U,UAAU,CAAC,IAAI,CAACC,aAAa,CAAC/U,EAAE+U,aAAa,CAAC,OAAOtC,aAAa,CAAuD,OAAnD,AAAC,IAAI,CAACC,SAAS,EAAC,CAAC,IAAI,CAACA,SAAS,CAAC,IAAI+B,CAAAA,EAAsB,IAAI,CAAC/B,SAAS,CAACsC,oBAAoB5C,CAAC,CAAC,CAAC,MAAM,CAAC,EAAEngB,EAAE2gB,cAAAA,AAAc,EAAEe,EAAEvB,EAAEsB,EAAEb,OAAO,CAACC,QAAQ,GAAG,CAACmC,OAAO7C,CAAC,CAACpiB,CAAC,CAAC+E,EAAEwd,EAAE2C,oBAAoB,CAAC,CAAC,OAAO,IAAI,CAACC,oBAAoB,GAAGF,MAAM,CAAC7C,EAAEpiB,EAAE+E,EAAE,CAACqgB,QAAQhD,CAAC,CAACpiB,CAAC,CAAC+E,EAAEwd,EAAE8C,oBAAoB,CAAC,CAAC,OAAO,IAAI,CAACF,oBAAoB,GAAGC,OAAO,CAAChD,EAAEpiB,EAAE+E,EAAE,CAACugB,QAAQ,CAAC,OAAO,IAAI,CAACH,oBAAoB,GAAGG,MAAM,EAAE,CAACnC,SAAS,CAAC,CAAC,EAAElhB,EAAEmhB,gBAAgB,AAAhBA,EAAkBO,EAAED,EAAEb,OAAO,CAACC,QAAQ,GAAG,CAACqC,sBAAsB,CAAC,MAAM,CAAC,EAAEljB,EAAEihB,SAAAA,AAAS,EAAES,IAAIC,CAAC,CAAC,CAAgC,EAAE,IAAI,CAACxB,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEulB,QAAQ,CAAC,KAAK,EAAE,IAAMtjB,EAAE8C,EAAE,KAAWud,EAAEvd,EAAE,KAAWwd,EAAExd,EAAE,KAAWiL,EAAEjL,EAAE,KAAW1H,EAAE0H,EAAE,IAAU2e,EAAE,QAAs1B1jB,EAAEulB,QAAQ,CAAx1B,EAAy1BA,IAAn1BA,EAASA,aAAa,CAAC,IAAI,CAACC,oBAAoB,CAAC,IAAIlD,EAAEmD,mBAAmB,CAAC,IAAI,CAACC,eAAe,CAACnD,EAAEmD,eAAe,CAAC,IAAI,CAACC,kBAAkB,CAACpD,EAAEoD,kBAAkB,CAAC,IAAI,CAACC,UAAU,CAAC5V,EAAE4V,UAAU,CAAC,IAAI,CAACC,OAAO,CAAC7V,EAAE6V,OAAO,CAAC,IAAI,CAACC,aAAa,CAAC9V,EAAE8V,aAAa,CAAC,IAAI,CAACC,cAAc,CAAC/V,EAAE+V,cAAc,CAAC,IAAI,CAACC,OAAO,CAAChW,EAAEgW,OAAO,CAAC,IAAI,CAACC,cAAc,CAACjW,EAAEiW,cAAc,CAAC,OAAOxD,aAAa,CAAiD,OAA7C,AAAC,IAAI,CAACC,SAAS,EAAC,CAAC,IAAI,CAACA,SAAS,CAAC,IAAI6C,CAAAA,EAAgB,IAAI,CAAC7C,SAAS,CAACwD,wBAAwB9D,CAAC,CAAC,CAAC,IAAMpiB,EAAE,AAAC,GAAEiC,EAAE2gB,cAAAA,AAAc,EAAEc,EAAE,IAAI,CAAC8B,oBAAoB,CAACnoB,EAAEwlB,OAAO,CAACC,QAAQ,IAAmD,OAA5C9iB,GAAE,AAAC,IAAI,CAACwlB,oBAAoB,CAACW,WAAW,CAAC/D,GAAUpiB,CAAC,CAAComB,mBAAmB,CAAC,MAAM,CAAC,EAAEnkB,EAAEihB,SAAS,AAATA,EAAWQ,IAAI,IAAI,CAAC8B,oBAAoB,CAACa,UAAUjE,CAAC,CAACpiB,CAAC,CAAC,CAAC,OAAO,IAAI,CAAComB,iBAAiB,GAAGC,SAAS,CAACjE,EAAEpiB,EAAE,CAACmjB,SAAS,CAAC,CAAC,EAAElhB,EAAEmhB,gBAAAA,AAAgB,EAAEM,EAAErmB,EAAEwlB,OAAO,CAACC,QAAQ,IAAI,IAAI,CAAC0C,oBAAoB,CAAC,IAAIlD,EAAEmD,mBAAmB,CAAC,CAAoB,EAAE,IAAI,CAACrD,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE+kB,aAAa,CAAC/kB,EAAE8kB,UAAU,CAAC9kB,EAAE6kB,gBAAgB,CAAC7kB,EAAE4kB,UAAU,CAAC,KAAK,EAAE,IAAM3iB,EAAE8C,EAAE,KAAyBwd,EAAE,CAAC,EAAfxd,AAAiBud,EAAf,IAAiBgE,gBAAAA,AAAgB,EAAE,6BAA6B,SAAS1B,EAAWxC,CAAC,EAAE,OAAOA,EAAEmE,QAAQ,CAAChE,SAAIrX,CAAS,CAAClL,EAAE4kB,UAAU,CAACA,EAA8F5kB,EAAE6kB,gBAAgB,CAArG,EAAsGA,OAA7FA,EAAmB,OAAOD,EAAW3iB,EAAEogB,UAAU,CAACI,WAAW,GAAGM,MAAM,GAAG,EAAqF/iB,EAAE8kB,UAAU,CAA5D,EAA6DA,OAAzC1C,AAAX0C,CAAY,CAAC9kB,CAAC,EAAE,OAAOoiB,EAAEoE,QAAQ,CAACjE,EAAEviB,EAAE,EAA2EA,EAAE+kB,aAAa,CAAjE,EAAkEA,OAA3C3C,AAAd2C,CAAe,EAAE,OAAO3C,EAAEqE,WAAW,CAAClE,EAAE,CAA8B,EAAE,IAAI,CAACH,EAAEpiB,KAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE0mB,WAAW,CAAC,KAAK,EAAoiB1mB,EAAE0mB,WAAW,CAA/iB,EAAgjBA,IAA1iBA,EAAYA,YAAYtE,CAAC,CAAC,CAAC,IAAI,CAACuE,QAAQ,CAACvE,EAAE,IAAIzjB,IAAIyjB,GAAG,IAAIzjB,GAAG,CAACioB,SAASxE,CAAC,CAAC,CAAC,IAAMpiB,EAAE,IAAI,CAAC2mB,QAAQ,CAAC1qB,GAAG,CAACmmB,GAAG,GAAIpiB,CAAD,CAAqB,CAAlB,MAAyB5E,OAAOyrB,MAAM,CAAC,CAAC,EAAE7mB,EAAE,CAAC8mB,eAAe,CAAC,OAAO/kB,MAAM1F,IAAI,CAAC,IAAI,CAACsqB,QAAQ,CAACI,OAAO,IAAIroB,GAAG,CAAE,CAAC,CAAC0jB,EAAEpiB,EAAE,GAAG,CAACoiB,EAAEpiB,EAAE,CAAE,CAACgnB,SAAS5E,CAAC,CAACpiB,CAAC,CAAC,CAAC,IAAM+E,EAAE,IAAI2hB,EAAY,IAAI,CAACC,QAAQ,EAAsB,OAApB5hB,EAAE4hB,QAAQ,CAAC3nB,GAAG,CAACojB,EAAEpiB,GAAU+E,CAAC,CAACkiB,YAAY7E,CAAC,CAAC,CAAC,IAAMpiB,EAAE,IAAI0mB,EAAY,IAAI,CAACC,QAAQ,EAAuB,OAArB3mB,EAAE2mB,QAAQ,CAACxkB,MAAM,CAACigB,GAAUpiB,CAAC,CAACknB,cAAc,GAAG9E,CAAC,CAAC,CAAC,IAAMpiB,EAAE,IAAI0mB,EAAY,IAAI,CAACC,QAAQ,EAAE,IAAI,IAAM5hB,KAAKqd,EAAE,AAACpiB,EAAE2mB,QAAQ,CAACxkB,MAAM,CAAC4C,GAAG,OAAO/E,CAAC,CAACuC,OAAO,CAAC,OAAO,IAAImkB,CAAW,CAAC,CAA0B,EAAE,IAAI,CAACtE,EAAEpiB,KAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEmnB,0BAA0B,CAAC,KAAK,EAAEnnB,EAAEmnB,0BAA0B,CAACzlB,OAAO,uBAAuB,EAAE,IAAI,CAAC0gB,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEonB,8BAA8B,CAACpnB,EAAE2kB,aAAa,CAAC,KAAK,EAAE,IAAM1iB,EAAE8C,EAAE,IAAUud,EAAEvd,EAAE,KAAWwd,EAAExd,EAAE,KAAWiL,EAAE/N,EAAE4gB,OAAO,CAACC,QAAQ,EAAqF9iB,GAAE2kB,aAAa,CAAjG,EAAkGA,OAAzFA,AAAcvC,EAAE,CAAC,CAAC,EAAE,OAAO,IAAIE,EAAEoE,WAAW,CAAC,IAAI/nB,IAAIvD,OAAO2rB,OAAO,CAAC3E,IAAI,EAAmPpiB,EAAEonB,8BAA8B,CAApP,EAAqPA,OAA5OA,AAA+BhF,CAAC,EAAwG,MAAxF,UAAX,AAAoB,OAAbA,IAAcpS,EAAE9U,KAAK,CAAC,CAAC,kDAAkD,EAAE,OAAOknB,EAAAA,CAAG,EAAEA,EAAE,IAAS,CAACiF,SAAS9E,EAAE4E,0BAA0B,UAACvkB,IAAkBwf,CAAE,CAAC,CAAgE,EAAE,IAAI,CAACA,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEsnB,OAAO,CAAC,KAAK,EAAiBtnB,EAAEsnB,OAAO,CAAhBviB,AAAiB9C,EAAf,KAAiBogB,UAAU,CAACI,WAAW,EAAE,EAAE,IAAI,CAACL,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEwiB,kBAAkB,CAAC,KAAK,EAAE,IAAMvgB,EAAE8C,EAAE,IAAkK/E,EAAEwiB,kBAAkB,CAAlL,EAAmLA,IAA1JO,AAAnBP,QAA2B,CAAC,OAAOvgB,EAAEslB,YAAY,CAACtE,KAAKb,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC,GAAG9C,CAAC,CAAC,CAAC,OAAOjC,EAAEvD,IAAI,CAACsI,KAAK9C,EAAE,CAACuU,KAAK4L,CAAC,CAACpiB,CAAC,CAAC,CAAC,OAAOA,CAAC,CAACwnB,QAAQ,CAAC,OAAO,IAAI,CAACrE,SAAS,CAAC,OAAO,IAAI,CAAC,CAAwC,EAAE,GAAG,CAACf,EAAEpiB,KAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEunB,YAAY,CAACvnB,EAAEsmB,gBAAgB,CAAC,KAAK,EAAoDtmB,EAAEsmB,gBAAgB,CAApE,EAAqEA,OAA5DA,AAAiBlE,CAAC,EAAE,OAAO1gB,OAAOe,GAAG,CAAC2f,EAAE,EAAwWpiB,EAAEunB,YAAY,CAAC,IAAIE,AAAtV,MAAMA,EAAYA,YAAYrF,CAAC,CAAC,CAAC,IAAMpiB,EAAE,IAAI,CAACA,EAAE0nB,eAAe,CAACtF,EAAE,IAAIzjB,IAAIyjB,GAAG,IAAIzjB,IAAIqB,EAAEumB,QAAQ,CAACnE,GAAGpiB,EAAE0nB,eAAe,CAACzrB,GAAG,CAACmmB,GAAGpiB,EAAEwmB,QAAQ,CAAC,CAACpE,EAAErd,KAAK,IAAM9C,EAAE,IAAIwlB,EAAYznB,EAAE0nB,eAAe,EAA6B,OAA3BzlB,EAAEylB,eAAe,CAAC1oB,GAAG,CAACojB,EAAErd,GAAU9C,CAAC,EAAEjC,EAAEymB,WAAW,CAACrE,IAAI,IAAMrd,EAAE,IAAI0iB,EAAYznB,EAAE0nB,eAAe,EAA8B,OAA5B3iB,EAAE2iB,eAAe,CAACvlB,MAAM,CAACigB,GAAUrd,CAAC,CAAC,CAAC,CAA+B,EAAE,IAAI,CAACqd,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE2nB,IAAI,CAAC,KAAK,EAAgB3nB,EAAE2nB,IAAI,CAAC1lB,AAAb8C,EAAE,IAAa8d,OAAO,CAACC,QAAQ,EAAE,EAAE,IAAI,CAACV,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEgkB,mBAAmB,CAAC,KAAK,EAAE,IAAM/hB,EAAE8C,EAAE,KAA+Z,SAAS+iB,EAAS1F,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,EAAE,IAAMud,EAAE,CAAC,EAAErgB,EAAEihB,SAAAA,AAAS,EAAE,QAAQ,GAAIZ,CAAD,CAAwB,CAArB,MAAQvd,EAAEgjB,OAAO,CAAC/nB,GAAUsiB,CAAC,CAACF,EAAE,IAAIrd,EAAE,CAA/I/E,EAAEgkB,mBAAmB,CAArY,EAAsYA,IAAhYA,AAAoBA,YAAY5B,CAAC,CAAC,CAAC,IAAI,CAACwF,UAAU,CAACxF,EAAEyF,SAAS,EAAE,qBAAqB,CAAC3D,MAAM,GAAG9B,CAAC,CAAC,CAAC,OAAO0F,EAAS,QAAQ,IAAI,CAACF,UAAU,CAACxF,EAAE,CAAClnB,MAAM,GAAGknB,CAAC,CAAC,CAAC,OAAO0F,EAAS,QAAQ,IAAI,CAACF,UAAU,CAACxF,EAAE,CAAC+B,KAAK,GAAG/B,CAAC,CAAC,CAAC,OAAO0F,EAAS,OAAO,IAAI,CAACF,UAAU,CAACxF,EAAE,CAACnQ,KAAK,GAAGmQ,CAAC,CAAC,CAAC,OAAO0F,EAAS,OAAO,IAAI,CAACF,UAAU,CAACxF,EAAE,CAAC6B,QAAQ,GAAG7B,CAAC,CAAC,CAAC,OAAO0F,EAAS,UAAU,IAAI,CAACF,UAAU,CAACxF,EAAE,CAAC,CAAiJ,EAAE,GAAG,CAACA,EAAEpiB,KAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEgoB,iBAAiB,CAAC,KAAK,EAAE,IAAMjjB,EAAE,CAAC,CAAC9C,EAAE,QAAQ5E,EAAE,OAAO,EAAE,CAAC4E,EAAE,OAAO5E,EAAE,MAAM,EAAE,CAAC4E,EAAE,OAAO5E,EAAE,MAAM,EAAE,CAAC4E,EAAE,QAAQ5E,EAAE,OAAO,EAAE,CAAC4E,EAAE,UAAU5E,EAAE,OAAO,EAAE,CAAkR2C,EAAEgoB,iBAAiB,CAApS,EAAqSA,IAA/RA,AAAkBA,aAAa,CAA4K,IAAI,IAAI5F,EAAE,EAAEA,EAAErd,EAAExG,MAAM,CAAC6jB,IAAI,AAAC,IAAI,CAACrd,CAAC,CAACqd,EAAE,CAACngB,CAAC,CAAC,CAACgmB,AAApN,SAASA,AAAa7F,CAAC,EAAE,OAAO,SAAS,GAAGpiB,CAAC,EAAE,GAAGgH,QAAQ,CAAC,IAAIjC,EAAEiC,OAAO,CAACob,EAAE,CAAyC,GAA1B,YAAW,AAAtB,OAAOrd,IAAgBA,EAAEiC,QAAQmT,GAAAA,AAAG,EAAe,YAAX,AAAsB,OAAfpV,EAAgB,OAAOA,EAAEmjB,KAAK,CAAClhB,QAAQhH,EAAG,CAAC,CAAC,EAAuD+E,CAAC,CAACqd,EAAE,CAAC/kB,CAAC,CAAE,CAAC,CAAsC,EAAE,IAAI,CAAC+kB,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE6jB,wBAAwB,CAAC,KAAK,EAAE,IAAM5hB,EAAE8C,EAAE,IAA2f/E,GAAE6jB,wBAAwB,CAAhhB,EAAihBA,OAA/ezB,AAAzByB,CAA0B,CAAC7jB,CAAC,EAA6G,SAASqoB,EAAYtjB,CAAC,CAAC9C,CAAC,EAAE,IAAMqgB,EAAEtiB,CAAC,CAAC+E,EAAE,OAAC,AAAc,YAAX,OAAOud,GAAgBF,GAAGngB,EAAUqgB,CAAR,CAAU9L,IAAI,CAACxW,GAAU,WAAW,CAAC,CAAC,OAApNoiB,EAAEngB,EAAEuhB,YAAY,CAAC2E,IAAI,CAAE/F,CAAD,CAAGngB,EAAEuhB,YAAY,CAAC2E,IAAI,CAAS/F,EAAEngB,EAAEuhB,YAAY,CAAC4E,GAAG,EAAC,CAAChG,EAAEngB,EAAEuhB,YAAY,CAAC4E,GAAAA,AAAG,EAACpoB,EAAEA,GAAG,CAAC,EAAoH,CAAC9E,MAAMmtB,EAAY,QAAQpmB,EAAEuhB,YAAY,CAAC8E,KAAK,EAAErW,KAAKoW,EAAY,OAAOpmB,EAAEuhB,YAAY,CAAC+E,IAAI,EAAEpE,KAAKkE,EAAY,OAAOpmB,EAAEuhB,YAAY,CAACC,IAAI,EAAES,MAAMmE,EAAY,QAAQpmB,EAAEuhB,YAAY,CAACgF,KAAK,EAAEvE,QAAQoE,EAAY,UAAUpmB,EAAEuhB,YAAY,CAACiF,OAAO,CAAC,CAAC,CAAoD,EAAE,IAAI,CAACrG,EAAEpiB,SAA8FoiB,CAAC,CAA1FhnB,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEwjB,YAAY,CAAC,KAAK,EAAqBpB,GAA8KpiB,EAAEwjB,YAAY,GAAGxjB,CAAD,CAAGwjB,YAAY,CAAC,EAAC,CAAC,CAA/M,CAACpB,CAAC,CAAC,IAAO,CAAC,EAAE,CAAC,OAAOA,CAAC,CAACA,CAAC,CAAC,KAAQ,CAAC,GAAG,CAAC,QAAQA,CAAC,CAACA,CAAC,CAAC,IAAO,CAAC,GAAG,CAAC,OAAOA,CAAC,CAACA,CAAC,CAAC,IAAO,CAAC,GAAG,CAAC,OAAOA,CAAC,CAACA,CAAC,CAAC,KAAQ,CAAC,GAAG,CAAC,QAAQA,CAAC,CAACA,CAAC,CAAC,OAAU,CAAC,GAAG,CAAC,UAAUA,CAAC,CAACA,CAAC,CAAC,GAAM,CAAC,KAAK,CAAC,KAA8C,EAAE,IAAI,CAACA,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEojB,gBAAgB,CAACpjB,EAAEkjB,SAAS,CAACljB,EAAE4iB,cAAc,CAAC,KAAK,EAAE,IAAM3gB,EAAE8C,EAAE,KAAWud,EAAEvd,EAAE,KAAWwd,EAAExd,EAAE,KAAWiL,EAAEsS,EAAEoG,OAAO,CAAC7pB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAOxB,EAAEqE,OAAOe,GAAG,CAAC,CAAC,qBAAqB,EAAEuN,EAAAA,CAAG,EAAQ0T,EAAEzhB,EAAE0mB,WAAqjB3oB,AAA1iB,GAA4iB4iB,cAAc,CAAzjB,EAA0jBA,OAAjjBA,AAAeR,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC9C,GAAE,CAAK,EAAE,IAAIsgB,EAAE,IAAMvS,EAAE0T,CAAC,CAACrmB,EAAE,CAAC,OAACklB,EAAEmB,CAAC,CAACrmB,EAAAA,AAAE,EAAqBklB,EAAE,CAACqG,CAApB,OAA4BtG,CAAtBC,CAAwBmG,KAApB,EAA2B,EAAE,CAAxB,EAA2B,CAACzmB,GAAG+N,CAAC,CAACoS,EAAE,CAAC,CAAC,IAAMpiB,EAAE,AAAIvF,MAAM,CAAC,6DAA6D,EAAE2nB,EAAAA,CAAG,EAA8B,OAA5Brd,EAAE7J,KAAK,CAAC8E,EAAEsK,KAAK,EAAEtK,EAAEyL,OAAO,GAAS,CAAK,CAAC,GAAGuE,EAAE4Y,OAAO,GAAGtG,EAAEoG,OAAO,CAAC,CAAC,IAAM1oB,EAAE,AAAIvF,MAAM,CAAC,6CAA6C,EAAEuV,EAAE4Y,OAAO,CAAC,KAAK,EAAExG,EAAE,2CAA2C,EAAEE,EAAEoG,OAAO,CAAA,CAAE,EAA8B,OAA5B3jB,EAAE7J,KAAK,CAAC8E,EAAEsK,KAAK,EAAEtK,EAAEyL,OAAO,EAAS,EAAK,CAAmF,OAAlFuE,CAAC,CAACoS,EAAE,CAACpiB,EAAE+E,EAAEmf,KAAK,CAAC,CAAC,4CAA4C,EAAE9B,EAAE,EAAE,EAAEE,EAAEoG,OAAO,CAAC,CAAC,CAAC,GAAS,CAAI,EAAwM1oB,EAAEkjB,SAAS,CAAlL,EAAmLA,OAA1KA,AAAUd,CAAC,EAAE,IAAIpiB,EAAE+E,EAAE,IAAM9C,EAAE,OAACjC,EAAE0jB,CAAC,CAACrmB,EAAAA,AAAE,EAAqB,IAAjB,CAAsB,EAAE2C,EAAE4oB,GAApB5oB,IAA2B,CAAC,CAAxB,EAA2B,AAACiC,GAAI,AAA3B,CAA4B,CAAF,CAAIsgB,EAAEsG,YAAY,AAAZA,EAAc5mB,GAAW,CAAR,MAAc,MAAC8C,GAAE2e,CAAC,CAACrmB,EAAAA,AAAE,EAAqB,IAAjB,CAAsB,EAAE0H,CAAC,CAACqd,EAAE,CAAtBrd,CAA0L/E,EAAEojB,GAAxL,KAAK,QAAmM,CAA/J,EAAgKA,OAAvJA,AAAiBhB,CAAC,CAACpiB,CAAC,EAAEA,EAAEkkB,KAAK,CAAC,CAAC,+CAA+C,EAAE9B,EAAE,EAAE,EAAEE,EAAEoG,OAAO,CAAC,CAAC,CAAC,EAAE,IAAM3jB,EAAE2e,CAAC,CAACrmB,EAAE,CAAI0H,GAAE,AAAC,OAAOA,CAAC,CAACqd,EAAG,AAAD,CAAqC,EAAE,IAAI,CAACA,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE6oB,YAAY,CAAC7oB,EAAE8oB,uBAAuB,CAAC,KAAK,EAAE,IAAM7mB,EAAE8C,EAAE,KAAWud,EAAE,gCAAgC,SAASwG,EAAwB1G,CAAC,EAAE,IAAMpiB,EAAE,IAAIqR,IAAI,CAAC+Q,EAAE,EAAQrd,EAAE,IAAIsM,IAAUpP,EAAEmgB,EAAE/U,KAAK,CAACiV,GAAG,GAAG,CAACrgB,EAAG,CAAD,KAAO,KAAI,EAAM,IAAMsgB,EAAE,CAACwG,MAAM,CAAC9mB,CAAC,CAAC,EAAE,CAAC+mB,MAAM,CAAC/mB,CAAC,CAAC,EAAE,CAACgnB,MAAM,CAAChnB,CAAC,CAAC,EAAE,CAACinB,WAAWjnB,CAAC,CAAC,EAAE,EAAE,GAAiB,MAAK,AAAnBsgB,EAAE2G,UAAU,CAAQ,OAAO,SAASC,AAAanpB,CAAC,EAAE,OAAOA,IAAIoiB,CAAC,EAAE,SAASgH,EAAQhH,CAAC,EAAW,OAATrd,EAAEskB,GAAG,CAACjH,IAAU,CAAK,CAA0C,OAAO,SAASyG,AAAazG,CAAC,EAAE,GAAGpiB,EAAEkC,GAAG,CAACkgB,GAAI,CAAD,MAAQ,EAAK,GAAGrd,EAAE7C,GAAG,CAACkgB,GAAI,CAAD,MAAQ,EAAM,IAAMngB,EAAEmgB,EAAE/U,KAAK,CAACiV,GAAG,GAAG,CAACrgB,EAAG,CAAD,MAAQmnB,EAAQhH,GAAG,IAAMpS,EAAE,CAAC+Y,MAAM,CAAC9mB,CAAC,CAAC,EAAE,CAAC+mB,MAAM,CAAC/mB,CAAC,CAAC,EAAE,CAACgnB,MAAM,CAAChnB,CAAC,CAAC,EAAE,CAACinB,WAAWjnB,CAAC,CAAC,EAAE,EAAE,GAAiB,MAAd+N,AAAmB,EAAjBkZ,UAAU,EAA6B3G,EAAEwG,KAAK,GAAG/Y,EAAE+Y,KAAK,CAAtC,CAAuC,MAAhCK,EAAQhH,GAA2C,GAAa,GAAE,CAAZG,EAAEwG,KAAK,QAAM,AAAGxG,EAAEyG,KAAK,GAAGhZ,EAAEgZ,KAAK,EAAEzG,EAAE0G,KAAK,EAAEjZ,EAAEiZ,KAAK,EAAC,KAArV,CAAqW7G,AAApWA,OAA8WgH,EAAQhH,UAAG,AAAGG,EAAEyG,KAAK,EAAEhZ,EAAEgZ,KAAK,EAAC,AAAnZhpB,EAAEqpB,IAAiajH,IAAnZ,GAA6ZgH,EAAQhH,EAAE,CAAC,CAACpiB,EAAE8oB,uBAAuB,CAACA,EAAwB9oB,EAAE6oB,YAAY,CAACC,EAAwB7mB,EAAEymB,OAAO,CAAC,EAAE,IAAI,CAACtG,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEupB,OAAO,CAAC,KAAK,EAAiBvpB,EAAEupB,OAAO,CAAhBxkB,AAAiB9C,EAAf,KAAiBmiB,UAAU,CAAC3B,WAAW,EAAE,EAAE,IAAI,CAACL,EAAEpiB,SAA2FoiB,CAAC,CAAvFhnB,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEwpB,SAAS,CAAC,KAAK,EAAqBpH,GAAkDpiB,EAAEwpB,SAAS,GAAGxpB,CAAD,CAAGwpB,SAAS,CAAC,EAAC,CAAC,CAA7E,CAACpH,CAAC,CAAC,GAAM,CAAC,EAAE,CAAC,MAAMA,CAAC,CAACA,CAAC,CAAC,MAAS,CAAC,EAAE,CAAC,QAA2C,EAAE,IAAI,CAACA,EAAEpiB,KAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEypB,eAAe,CAACzpB,EAAE0pB,sCAAsC,CAAC1pB,EAAE2pB,4BAA4B,CAAC3pB,EAAE4pB,8BAA8B,CAAC5pB,EAAE6pB,2BAA2B,CAAC7pB,EAAE8pB,qBAAqB,CAAC9pB,EAAE+pB,mBAAmB,CAAC/pB,EAAEgqB,UAAU,CAAChqB,EAAEiqB,iCAAiC,CAACjqB,EAAEkqB,yBAAyB,CAAClqB,EAAEmqB,2BAA2B,CAACnqB,EAAEoqB,oBAAoB,CAACpqB,EAAEqqB,mBAAmB,CAACrqB,EAAEsqB,uBAAuB,CAACtqB,EAAEuqB,iBAAiB,CAACvqB,EAAEwqB,UAAU,CAACxqB,EAAEyqB,SAAS,CAAC,KAAK,CAAE,OAAMA,EAAyBC,gBAAgBtI,CAAC,CAACrd,CAAC,CAAC,CAAC,OAAO/E,EAAE8pB,qBAAqB,CAACa,cAAcvI,CAAC,CAACrd,CAAC,CAAC,CAAC,OAAO/E,EAAE+pB,mBAAmB,CAACa,oBAAoBxI,CAAC,CAACrd,CAAC,CAAC,CAAC,OAAO/E,EAAE6pB,2BAA2B,CAACgB,sBAAsBzI,CAAC,CAACrd,CAAC,CAAC,CAAC,OAAO/E,EAAE2pB,4BAA4B,CAACmB,wBAAwB1I,CAAC,CAACrd,CAAC,CAAC,CAAC,OAAO/E,EAAE4pB,8BAA8B,CAACmB,8BAA8B3I,CAAC,CAACrd,CAAC,CAAC,CAAC,OAAO/E,EAAE0pB,sCAAsC,CAACsB,2BAA2B5I,CAAC,CAACpiB,CAAC,CAAC,CAAC,CAACirB,8BAA8B7I,CAAC,CAAC,CAAC,CAAC,CAACpiB,EAAEyqB,SAAS,CAACA,CAAU,OAAMD,EAAW,CAACxqB,EAAEwqB,UAAU,CAACA,CAAW,OAAMD,UAA0BC,EAAWnB,IAAIjH,CAAC,CAACpiB,CAAC,CAAC,CAAC,CAAC,CAACA,EAAEuqB,iBAAiB,CAACA,CAAkB,OAAMD,UAAgCE,EAAWnB,IAAIjH,CAAC,CAACpiB,CAAC,CAAC,CAAC,CAAC,CAACA,EAAEsqB,uBAAuB,CAACA,CAAwB,OAAMD,UAA4BG,EAAWU,OAAO9I,CAAC,CAACpiB,CAAC,CAAC,CAAC,CAAC,CAACA,EAAEqqB,mBAAmB,CAACA,CAAoB,OAAMD,EAAqBe,YAAY/I,CAAC,CAAC,CAAC,CAACgJ,eAAehJ,CAAC,CAAC,CAAC,CAAC,CAACpiB,EAAEoqB,oBAAoB,CAACA,CAAqB,OAAMD,UAAoCC,EAAqB,CAACpqB,EAAEmqB,2BAA2B,CAACA,CAA4B,OAAMD,UAAkCE,EAAqB,CAACpqB,EAAEkqB,yBAAyB,CAACA,CAA0B,OAAMD,UAA0CG,EAAqB,CAACpqB,EAAEiqB,iCAAiC,CAACA,EAAkCjqB,EAAEgqB,UAAU,CAAC,IAAIS,EAAUzqB,EAAE+pB,mBAAmB,CAAC,IAAIQ,EAAkBvqB,EAAE8pB,qBAAqB,CAAC,IAAIO,EAAoBrqB,EAAE6pB,2BAA2B,CAAC,IAAIS,EAAwBtqB,EAAE4pB,8BAA8B,CAAC,IAAIO,EAA4BnqB,EAAE2pB,4BAA4B,CAAC,IAAIO,EAA0BlqB,EAAE0pB,sCAAsC,CAAC,IAAIO,EAAiFjqB,EAAEypB,eAAe,CAAhE,EAAiEA,OAAxDA,EAAkB,OAAOzpB,EAAEgqB,UAAU,CAAkC,EAAE,IAAI,CAAC5H,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEukB,mBAAmB,CAACvkB,EAAEqrB,iBAAiB,CAAC,KAAK,EAAE,IAAMppB,EAAE8C,EAAE,IAAK,OAAMsmB,EAAkB7G,SAASpC,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC,CAAC,OAAO9C,EAAE+nB,UAAU,CAAC,CAAChqB,EAAEqrB,iBAAiB,CAACA,EAAkBrrB,EAAEukB,mBAAmB,CAAC,IAAI8G,CAAiB,EAAE,IAAI,SAASjJ,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,EAAE,IAAI9C,EAAE,IAAI,EAAE,IAAI,CAACqpB,eAAe,GAAGlwB,CAAD,MAAQmwB,MAAM,CAAC,SAASnJ,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC9C,CAAC,OAASiJ,IAAJjJ,IAAcA,GAAE8C,EAAE3J,OAAOC,cAAc,CAAC+mB,EAAEngB,EAAE,CAAC/F,YAAW,EAAKD,IAAI,WAAW,OAAO+D,CAAC,CAAC+E,EAAE,CAAC,EAAE,EAAE,SAASqd,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC9C,CAAC,OAASiJ,IAAJjJ,IAAcA,GAAE8C,EAAEqd,CAAC,CAACngB,EAAE,CAACjC,CAAC,CAAC+E,EAAE,CAAA,CAAC,CAAMud,EAAE,IAAI,EAAE,IAAI,CAACkJ,YAAY,EAAE,SAASpJ,CAAC,CAACpiB,CAAC,EAAE,IAAI,IAAI+E,KAAKqd,EAAE,AAAO,YAAJrd,CAAe,EAAC3J,OAAOO,SAAS,CAACC,cAAc,CAACa,IAAI,CAACuD,EAAE+E,IAAG9C,EAAEjC,EAAEoiB,EAAErd,EAAE,EAAE3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,MAAM,EAAI,GAAG0lB,EAAEvd,EAAE,IAAI/E,EAAE,EAAE,IAAI,CAACoiB,EAAEpiB,KAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE2oB,WAAW,CAAC,KAAK,EAAE3oB,EAAE2oB,WAAW,CAAqB,UAApB,OAAO8C,WAAsBA,WAAAA,EAAAA,CAAAA,AAAiB,EAAE,GAAG,SAASrJ,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,EAAE,IAAI9C,EAAE,IAAI,EAAE,IAAI,CAACqpB,eAAe,GAAGlwB,CAAD,MAAQmwB,MAAM,CAAC,SAASnJ,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC9C,CAAC,OAASiJ,IAAJjJ,IAAcA,GAAE8C,EAAE3J,OAAOC,cAAc,CAAC+mB,EAAEngB,EAAE,CAAC/F,YAAW,EAAKD,IAAI,WAAW,OAAO+D,CAAC,CAAC+E,EAAE,CAAC,EAAE,EAAE,SAASqd,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC9C,CAAC,OAASiJ,IAAJjJ,IAAcA,GAAE8C,EAAEqd,CAAC,CAACngB,EAAE,CAACjC,CAAC,CAAC+E,EAAE,CAAA,CAAC,CAAMud,EAAE,IAAI,EAAE,IAAI,CAACkJ,YAAY,EAAE,SAASpJ,CAAC,CAACpiB,CAAC,EAAE,IAAI,IAAI+E,KAAKqd,EAAE,AAAO,YAAJrd,CAAe,EAAC3J,OAAOO,SAAS,CAACC,cAAc,CAACa,IAAI,CAACuD,EAAE+E,IAAG9C,EAAEjC,EAAEoiB,EAAErd,EAAE,EAAE3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAG0lB,EAAEvd,EAAE,KAAK/E,EAAE,EAAE,GAAG,CAACoiB,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE0rB,WAAW,CAAC,KAAK,EAAgB1rB,EAAE0rB,WAAW,CAAnB3mB,AAAoB9C,EAAlB,IAAoBwiB,cAAc,CAAChC,WAAW,EAAE,EAAE,GAAG,CAACL,EAAEpiB,KAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE0kB,qBAAqB,CAAC,KAAK,EAAoF1kB,EAAE0kB,qBAAqB,CAAzG,EAA0GA,IAApGA,AAAsBO,OAAO7C,CAAC,CAACpiB,CAAC,CAAC,CAAC,CAAColB,QAAQhD,CAAC,CAACpiB,CAAC,CAAC,CAAC,OAAOoiB,CAAC,CAACkD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAA8C,EAAE,GAAG,CAAClD,EAAEpiB,KAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEklB,oBAAoB,CAACllB,EAAEqlB,oBAAoB,CAAC,KAAK,EAAErlB,EAAEqlB,oBAAoB,CAAC,CAACppB,IAAImmB,CAAC,CAACpiB,CAAC,EAAE,GAAM,MAAHoiB,AAAQ,EAAkB,OAAOA,CAAC,CAACpiB,EAAE,OAAEwC,AAAK4f,CAAC,EAAE,AAAM,MAAHA,AAAQ,EAAO,EAAE,CAAQhnB,OAAOoH,IAAI,CAAC4f,EAAG,EAAEpiB,EAAEklB,oBAAoB,CAAC,CAAClmB,IAAIojB,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,EAAQ,MAAK,AAARqd,GAAgBA,EAAC,CAACpiB,EAAE,EAAC+E,CAAC,CAAC,CAAC,EAAE,IAAI,CAACqd,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE2rB,KAAK,CAAC,KAAK,EAAiB3rB,EAAE2rB,KAAK,CAAC1pB,AAAf8C,EAAE,KAAewgB,QAAQ,CAAC9C,WAAW,EAAE,EAAE,IAAI,CAACL,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE4rB,gBAAgB,CAAC,KAAK,EAAE,IAAM3pB,EAAE8C,EAAE,KAA+T/E,EAAE4rB,gBAAgB,CAA5U,EAA6UA,IAAvUA,AAAiBA,YAAYxJ,EAAEngB,EAAE4pB,oBAAoB,CAAC,CAAC,IAAI,CAACC,YAAY,CAAC1J,CAAC,CAAC2J,aAAa,CAAC,OAAO,IAAI,CAACD,YAAY,CAACE,aAAa5J,CAAC,CAACpiB,CAAC,CAAC,CAAC,OAAO,IAAI,CAACisB,cAAc7J,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC8J,SAAS9J,CAAC,CAACpiB,CAAC,CAAC,CAAC,OAAO,IAAI,CAACmsB,UAAU/J,CAAC,CAAC,CAAC,OAAO,IAAI,CAACgK,WAAWhK,CAAC,CAAC,CAAC,OAAO,IAAI,CAACiK,IAAIjK,CAAC,CAAC,CAAC,CAACkK,aAAa,CAAC,OAAO,CAAK,CAACC,gBAAgBnK,CAAC,CAACpiB,CAAC,CAAC,CAAC,CAAC,CAAoC,EAAE,IAAI,CAACoiB,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEwsB,UAAU,CAAC,KAAK,EAAE,IAAMvqB,EAAE8C,EAAE,KAAWud,EAAEvd,EAAE,KAAWwd,EAAExd,EAAE,KAAWiL,EAAEjL,EAAE,KAAW1H,EAAE4E,EAAEogB,UAAU,CAACI,WAAW,EAAukBziB,GAAEwsB,UAAU,CAAhlB,EAAilBA,IAA3kBA,AAAWC,UAAUrK,CAAC,CAACpiB,CAAC,CAAC+E,EAAE1H,EAAE0lB,MAAM,EAAE,CAAC,KAAukBX,CAAC,CAAnhB,IAAGngB,GAAE,EAAzCjC,EAAqB,IAAjB,CAAsB,EAAEA,EAAE0sB,GAApB1sB,CAAwB,CAAQ,IAA5B,GAAmC,EAA9B,EAAkCuiB,EAAEqJ,gBAAgB,CAAC,IAAMlI,EAAE3e,GAAG,CAAC,EAAEud,EAAEyD,cAAAA,AAAc,EAAEhhB,SAAme,AAAhe,AAAG4nB,UAAkd,OAAOvK,EAA3csB,IAA8e,AAArB,iBAAOtB,CAAC,CAAC,MAAS,EAAa,AAAsB,iBAAfA,CAAC,CAAC,OAAU,EAAsC,UAAzB,OAAOA,CAAC,CAAC,UAAa,EAAziB,AAAD,GAAGpS,EAAE2V,kBAAAA,AAAkB,EAAEjC,GAAW,CAAR,GAAYnB,EAAEqJ,gBAAgB,CAAClI,GAAe,IAAInB,EAAEqJ,gBAAgB,AAAC,CAACgB,gBAAgBxK,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC9C,CAAC,CAAC,KAAKsgB,EAAMvS,EAAM0T,EAAE,GAAGmJ,UAAUtuB,MAAM,CAAC,EAAG,CAAD,MAAmC,GAAnBsuB,AAAqB,UAAXtuB,MAAM,CAAMmlB,EAAE1jB,EAA6B,GAAnB6sB,AAAqB,UAAXtuB,MAAM,EAAMgkB,EAAEviB,EAAE0jB,EAAE3e,IAAOwd,EAAEviB,EAAEgQ,EAAEjL,EAAE2e,EAAEzhB,GAAE,IAAM0hB,QAAE3T,EAAqBA,EAAE3S,EAAnB,AAAqB0lB,MAAM,EAArB/S,CAA8B4T,EAAE,GAA5B,CAAgC,CAAC6I,GAA5B,MAAqC,CAACrK,EAAEG,EAAEoB,GAASmJ,EAAE,CAAC,EAAExK,EAAE0D,OAAAA,AAAO,EAAErC,EAAEC,GAAG,OAAOvmB,EAAE4lB,IAAI,CAAC6J,EAAEpJ,OAAExY,EAAU0Y,EAAE,CAAC,CAAgL,EAAE,GAAG,CAACxB,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE+sB,kBAAkB,CAAC,KAAK,EAAE,IAAM9qB,EAAE8C,EAAE,KAAwE/E,EAAE+sB,kBAAkB,CAAvF,EAAwFA,IAAlFA,AAAmB1G,UAAUjE,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC,CAAC,OAAO,IAAI9C,EAAEuqB,UAAU,CAAC,CAAwC,EAAE,IAAI,CAACpK,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEgtB,WAAW,CAAC,KAAK,EAAiB,IAAM1K,EAAE,GAAIrgB,CAAnB8C,EAAE,IAAA,EAAmBynB,UAA2cxsB,AAAjc,GAAmcgtB,WAAW,CAA7c,EAA8cA,IAAxcA,AAAYA,YAAY5K,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC9C,CAAC,CAAC,CAAC,IAAI,CAACgrB,SAAS,CAAC7K,EAAE,IAAI,CAACpmB,IAAI,CAACgE,EAAE,IAAI,CAAC4oB,OAAO,CAAC7jB,EAAE,IAAI,CAACzB,OAAO,CAACrB,CAAC,CAACwqB,UAAUrK,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC,CAAC,OAAO,IAAI,CAACmoB,UAAU,GAAGT,SAAS,CAACrK,EAAEpiB,EAAE+E,EAAE,CAAC6nB,gBAAgBxK,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC9C,CAAC,CAAC,CAAC,IAAMqgB,EAAE,IAAI,CAAC4K,UAAU,GAAG,OAAO/M,QAAQ+H,KAAK,CAAC5F,EAAEsK,eAAe,CAACtK,EAAEuK,UAAU,CAACK,YAAY,CAAC,GAAG,IAAI,CAACC,SAAS,CAAE,CAAD,MAAQ,IAAI,CAACA,SAAS,CAAC,IAAM/K,EAAE,IAAI,CAAC6K,SAAS,CAACG,iBAAiB,CAAC,IAAI,CAACpxB,IAAI,CAAC,IAAI,CAAC4sB,OAAO,CAAC,IAAI,CAACtlB,OAAO,SAAM8e,AAAJ,GAAM,AAAU,CAAb,GAAiB,CAAC+K,SAAS,CAAC/K,EAAS,IAAI,CAAC+K,SAAS,EAAxC7K,CAAwC,CAAC,CAA0B,EAAE,IAAI,CAACF,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEylB,mBAAmB,CAAC,KAAK,EAAE,IAAMxjB,EAAE8C,EAAE,KAAyBwd,EAAE,GAAID,CAAlBvd,EAAE,GAAA,EAAkBgoB,kBAAkB,CAAuV/sB,EAAEylB,mBAAmB,CAA3W,EAA4WA,IAAlVY,AAApBZ,UAA8BrD,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC,CAAC,IAAIud,EAAE,OAAM,MAACA,GAAE,IAAI,CAAC8K,iBAAiB,CAAChL,EAAEpiB,EAAE+E,EAAAA,CAAE,CAAqBud,EAAE,GAAnB,CAAuBrgB,EAAE+qB,KAAnB1K,MAAI,AAA0B,CAAC,IAAtB,AAA0B,CAACF,EAAEpiB,EAAE+E,EAAE,CAACsoB,aAAa,CAAC,IAAIjL,EAAE,OAAM,OAACA,EAAE,IAAI,CAAC+K,SAAAA,AAAS,EAAqB/K,EAAEG,CAAC,CAApB,AAAqB4D,QAAf/D,IAA2BA,CAAC,CAAxB,AAAyB,CAAC,IAArB,AAAyB,CAAC+K,SAAS,CAAC/K,CAAC,CAACgL,kBAAkBhL,CAAC,CAACpiB,CAAC,CAAC+E,CAAC,CAAC,CAAC,IAAI9C,EAAE,OAAM,OAACA,EAAE,IAAI,CAACkrB,SAAAA,AAAS,EAAqB,IAAjB,CAAsB,EAAElrB,EAAEokB,GAApBpkB,MAAI,AAAyB,CAACmgB,EAAEpiB,EAAE+E,AAAzB,EAA2B,CAAC,CAA0C,EAAE,IAAI,CAACqd,EAAEpiB,SAAkGoiB,CAAC,CAA9FhnB,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEstB,gBAAgB,CAAC,KAAK,EAAqBlL,GAAkHpiB,EAAEstB,gBAAgB,GAAGttB,CAAD,CAAGstB,gBAAgB,CAAC,EAAC,CAAC,CAA3J,CAAClL,CAAC,CAAC,UAAa,CAAC,EAAE,CAAC,aAAaA,CAAC,CAACA,CAAC,CAAC,MAAS,CAAC,EAAE,CAAC,SAASA,CAAC,CAACA,CAAC,CAAC,kBAAqB,CAAC,EAAE,CAAC,oBAAqE,EAAE,IAAI,CAACA,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE+lB,cAAc,CAAC/lB,EAAEimB,cAAc,CAACjmB,EAAE4lB,UAAU,CAAC5lB,EAAEgmB,OAAO,CAAChmB,EAAE8lB,aAAa,CAAC9lB,EAAE6lB,OAAO,CAAC,KAAK,EAAE,IAAM5jB,EAAE8C,EAAE,IAAUud,EAAEvd,EAAE,KAAWwd,EAAExd,EAAE,KAAWiL,EAAG,AAAD,GAAG/N,EAAEqkB,gBAAAA,AAAgB,EAAE,kCAAkC,SAAST,EAAQzD,CAAC,EAAE,OAAOA,EAAEmE,QAAQ,CAACvW,SAAI9E,CAAS,CAA8H,SAAS8a,EAAQ5D,CAAC,CAACpiB,CAAC,EAAE,OAAOoiB,EAAEoE,QAAQ,CAACxW,EAAEhQ,EAAE,CAAzKA,EAAE6lB,OAAO,CAACA,EAAqF7lB,EAAE8lB,aAAa,CAA5F,EAA6FA,OAApFA,EAAgB,OAAOD,EAAQtD,EAAEF,UAAU,CAACI,WAAW,GAAGM,MAAM,GAAG,EAA4E/iB,EAAEgmB,OAAO,CAACA,EAAuDhmB,EAAE4lB,UAAU,CAA3D,EAA4DA,OAAnDA,AAAWxD,CAAC,EAAE,OAAOA,EAAEqE,WAAW,CAACzW,EAAE,EAAkGhQ,EAAEimB,cAAc,CAAzF,EAA0FA,OAAjFA,AAAe7D,CAAC,CAACpiB,CAAC,EAAE,OAAOgmB,EAAQ5D,EAAE,IAAIE,EAAEsJ,gBAAgB,CAAC5rB,GAAG,EAAiIA,EAAE+lB,cAAc,CAAhH,EAAiHA,OAAxGA,AAAe3D,CAAC,EAAE,IAAIpiB,EAAE,OAAM,OAACA,EAAE6lB,EAAQzD,EAAAA,CAAE,CAAqB,KAAK,AAAtB,EAAwBpiB,EAAE+rB,IAApB/rB,MAAI,CAA2B,EAAE,CAAgC,CAAxD,CAA0D,IAAI,CAACoiB,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEutB,cAAc,CAAC,KAAK,EAAE,IAAMtrB,EAAE8C,EAAE,IAAu/B/E,GAAEutB,cAAc,CAAn9B,EAAo9BA,IAA98BA,EAAeA,YAAYnL,CAAC,CAAC,CAAC,IAAI,CAACoL,cAAc,CAAC,IAAI7uB,IAAOyjB,GAAE,IAAI,CAACqL,MAAM,CAACrL,EAAE,CAACpjB,IAAIojB,CAAC,CAACpiB,CAAC,CAAC,CAAC,IAAM+E,EAAE,IAAI,CAAC2oB,MAAM,GAAoF,OAA9E3oB,EAAEyoB,cAAc,CAACtrB,GAAG,CAACkgB,IAAIrd,AAAD,EAAGyoB,cAAc,CAACrrB,MAAM,CAACigB,GAAGrd,EAAEyoB,cAAc,CAACxuB,GAAG,CAACojB,EAAEpiB,GAAU+E,CAAC,CAAC4oB,MAAMvL,CAAC,CAAC,CAAC,IAAMpiB,EAAE,IAAI,CAAC0tB,MAAM,GAA8B,OAA3B1tB,EAAEwtB,cAAc,CAACrrB,MAAM,CAACigB,GAAUpiB,CAAC,CAAC/D,IAAImmB,CAAC,CAAC,CAAC,OAAO,IAAI,CAACoL,cAAc,CAACvxB,GAAG,CAACmmB,EAAE,CAACwL,WAAW,CAAC,OAAO,IAAI,CAACC,KAAK,GAAGC,MAAM,CAAE,CAAC1L,EAAEpiB,KAAKoiB,EAAEjhB,IAAI,CAACnB,IAAE3C,EAAE,IAAI,CAACpB,GAAG,CAAC+D,IAAWoiB,GAAI,EAAE,EAAE5jB,IAAI,CAACwR,IAAE,CAACyd,OAAOrL,CAAC,CAAC,EAAIA,GAAE7jB,MAAM,CAAzc,GAA0cgkB,GAAE,CAAO,IAAI,CAACiL,cAAc,CAACpL,EAAEvjB,KAAK,CAACmR,AAAne,KAAse+d,OAAO,GAAGD,MAAM,CAAE,CAAC1L,EAAEpiB,KAAK,IAAM+E,EAAE/E,EAAEguB,IAAI,GAAS1L,EAAEvd,EAAEhG,OAAO,CAAC1B,AAAvhB,KAA0hB,GAAO,CAAC,IAALilB,EAAO,CAAC,IAAMC,EAAExd,EAAE9F,KAAK,CAAC,EAAEqjB,GAAStS,EAAEjL,EAAE9F,KAAK,CAACqjB,EAAE,EAAEtiB,EAAEzB,MAAM,EAAK,CAAC,EAAE0D,EAAEgsB,WAAW,AAAXA,EAAa1L,IAAI,AAAC,GAAEtgB,EAAEisB,aAAAA,AAAa,EAAEle,IAAG,AAACoS,EAAEpjB,GAAG,CAACujB,EAAEvS,EAAS,CAAC,OAAOoS,CAAC,EAAG,IAAIzjB,KAAQ,IAAI,CAAC6uB,cAAc,CAAC5rB,IAAI,GAAC0gB,GAAE,AAAC,IAAI,CAACkL,cAAc,CAAC,IAAI7uB,IAAIoD,MAAM1F,IAAI,CAAC,IAAI,CAACmxB,cAAc,CAACzG,OAAO,IAAIgH,OAAO,GAAG9uB,KAAK,CAAC,EAAv0B,CAAy0BqjB,GAAAA,EAAI,CAACuL,OAAO,CAAC,OAAO9rB,MAAM1F,IAAI,CAAC,IAAI,CAACmxB,cAAc,CAAChrB,IAAI,IAAIurB,OAAO,EAAE,CAACL,QAAQ,CAAC,IAAMtL,EAAE,IAAImL,EAA6D,OAA9CnL,EAAEoL,cAAc,CAAC,IAAI7uB,IAAI,IAAI,CAAC6uB,cAAc,EAASpL,CAAC,CAAC,CAAgC,EAAE,IAAI,CAACA,EAAEpiB,KAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEkuB,aAAa,CAACluB,EAAEiuB,WAAW,CAAC,KAAK,EAAE,IAAMlpB,EAAE,eAAqB9C,EAAE,CAAC,KAAK,EAAE8C,EAAE,OAAO,CAAC,CAAOud,EAAE,CAAC,QAAQ,EAAEvd,EAAE,aAAa,EAAEA,EAAE,MAAM,CAAC,CAAOwd,EAAE,AAAI/V,OAAO,CAAC,IAAI,EAAEvK,EAAE,CAAC,EAAEqgB,EAAE,EAAE,CAAC,EAAQtS,EAAE,sBAA4B3S,EAAE,KAA+C2C,GAAEiuB,WAAW,CAAtD,EAAuDA,OAAlC7L,AAAZ6L,CAAa,EAAE,OAAO1L,EAAEvhB,IAAI,CAACohB,EAAE,EAAkFpiB,EAAEkuB,aAAa,CAAtE,EAAuEA,OAA9DA,AAAc9L,CAAC,EAAE,OAAOpS,EAAEhP,IAAI,CAACohB,IAAI,CAAC/kB,EAAE2D,IAAI,CAACohB,EAAE,CAA8B,EAAE,GAAG,CAACA,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEmuB,gBAAgB,CAAC,KAAK,EAAE,IAAMlsB,EAAE8C,EAAE,KAAiE/E,EAAEmuB,gBAAgB,CAA9E,EAA+EA,OAAtEA,AAAiB/L,CAAC,EAAE,OAAO,IAAIngB,EAAEsrB,cAAc,CAACnL,EAAE,CAAoC,EAAE,IAAI,CAACA,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE6rB,oBAAoB,CAAC7rB,EAAEouB,eAAe,CAACpuB,EAAEquB,cAAc,CAAC,KAAK,EAAE,IAAMpsB,EAAE8C,EAAE,KAAK/E,EAAEquB,cAAc,CAAC,mBAAmBruB,EAAEouB,eAAe,CAAC,mCAAmCpuB,EAAE6rB,oBAAoB,CAAC,CAACyC,QAAQtuB,EAAEouB,eAAe,CAACG,OAAOvuB,EAAEquB,cAAc,CAACG,WAAWvsB,EAAEwsB,UAAU,CAACtG,IAAI,CAAC,EAAE,IAAI,CAAC/F,EAAEpiB,WAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE0uB,QAAQ,CAAC,KAAK,EAAqBtM,CAAHA,CAAC,CAAoJpiB,EAAE0uB,QAAQ,GAAG1uB,CAAD,CAAG0uB,QAAQ,CAAC,EAAC,CAAC,CAA3K,CAACtM,CAAC,CAAC,QAAW,CAAC,EAAE,CAAC,WAAWA,CAAC,CAACA,CAAC,CAAC,MAAS,CAAC,EAAE,CAAC,SAASA,CAAC,CAACA,CAAC,CAAC,MAAS,CAAC,EAAE,CAAC,SAASA,CAAC,CAACA,CAAC,CAAC,QAAW,CAAC,EAAE,CAAC,WAAWA,CAAC,CAACA,CAAC,CAAC,QAAW,CAAC,EAAE,CAAC,UAA2C,EAAE,IAAI,CAACA,EAAEpiB,EAAE+E,KAAK3J,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE0lB,eAAe,CAAC1lB,EAAE2lB,kBAAkB,CAAC3lB,EAAE2uB,aAAa,CAAC3uB,EAAE4uB,cAAc,CAAC,KAAK,EAAE,IAAM3sB,EAAE8C,EAAE,KAAWud,EAAEvd,EAAE,KAAWwd,EAAE,oBAA0BvS,EAAE,kBAAkB,SAAS4e,EAAexM,CAAC,EAAE,OAAOG,EAAEvhB,IAAI,CAACohB,IAAIA,IAAIngB,EAAEmsB,eAAe,CAAiC,SAASO,EAAcvM,CAAC,EAAE,OAAOpS,EAAEhP,IAAI,CAACohB,IAAIA,IAAIngB,EAAEosB,cAAc,CAAhGruB,EAAE4uB,cAAc,CAACA,EAAgF5uB,EAAE2uB,aAAa,CAACA,EAAuG3uB,EAAE2lB,kBAAkB,CAA7G,EAA8GA,OAArGA,AAAmBvD,CAAC,EAAE,OAAOwM,EAAexM,EAAEkM,OAAO,GAAGK,EAAcvM,EAAEmM,MAAM,CAAC,EAAsGvuB,EAAE0lB,eAAe,CAA9E,EAA+EA,OAAtEA,AAAgBtD,CAAC,EAAE,OAAO,IAAIE,EAAEsJ,gBAAgB,CAACxJ,EAAE,CAAkC,EAAE,IAAI,CAACA,EAAEpiB,SAAgGoiB,CAAC,CAA5FhnB,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE6uB,cAAc,CAAC,KAAK,EAAqBzM,GAAsEpiB,EAAE6uB,cAAc,GAAG7uB,CAAD,CAAG6uB,cAAc,CAAC,EAAC,CAAC,CAA3G,CAACzM,CAAC,CAAC,KAAQ,CAAC,EAAE,CAAC,QAAQA,CAAC,CAACA,CAAC,CAAC,EAAK,CAAC,EAAE,CAAC,KAAKA,CAAC,CAACA,CAAC,CAAC,KAAQ,CAAC,EAAE,CAAC,OAAoD,EAAE,IAAI,CAACA,EAAEpiB,WAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAEyuB,UAAU,CAAC,KAAK,EAAqBrM,CAAHA,CAAC,CAAwDpiB,EAAEyuB,UAAU,GAAGzuB,CAAD,CAAGyuB,UAAU,CAAC,EAAC,CAAC,CAAnF,CAACrM,CAAC,CAAC,IAAO,CAAC,EAAE,CAAC,OAAOA,CAAC,CAACA,CAAC,CAAC,OAAU,CAAC,EAAE,CAAC,SAA8C,EAAE,IAAI,CAACA,EAAEpiB,KAAK5E,OAAOC,cAAc,CAAC2E,EAAE,aAAa,CAACpD,OAAM,CAAI,GAAGoD,EAAE0oB,OAAO,CAAC,KAAK,EAAE1oB,EAAE0oB,OAAO,CAAC,OAAO,CAAC,EAAM1oB,EAAE,CAAC,EAAE,SAAS8uB,EAAoB/pB,CAAC,EAAE,IAAI9C,EAAEjC,CAAC,CAAC+E,EAAE,CAAC,GAAG9C,KAAIiJ,MAAW,KAAD,EAAQjJ,EAAE7E,OAAO,CAAC,IAAIklB,EAAEtiB,CAAC,CAAC+E,EAAE,CAAC,CAAC3H,QAAQ,CAAC,CAAC,EAAMmlB,GAAE,EAAK,GAAG,CAACH,CAAC,CAACrd,EAAE,CAACtI,IAAI,CAAC6lB,EAAEllB,OAAO,CAACklB,EAAEA,EAAEllB,OAAO,CAAC0xB,GAAqBvM,GAAE,CAAK,QAAQ,CAAIA,GAAE,OAAOviB,CAAC,CAAC+E,EAAE,CAAC,OAAOud,EAAEllB,OAAO,CAA6C0xB,EAAoBC,EAAE,CAAC,4DAAc,IAAIhqB,EAAE,CAAC,EAAgB3J,OAAOC,cAAc,CAAC+mB,EAAE,EAAnD,WAAgE,CAACxlB,MAAM,EAAI,GAAGwlB,EAAEuJ,KAAK,CAACvJ,EAAEsJ,WAAW,CAACtJ,EAAEmH,OAAO,CAACnH,EAAEuF,IAAI,CAACvF,EAAEkF,OAAO,CAAClF,EAAEyJ,oBAAoB,CAACzJ,EAAEgM,eAAe,CAAChM,EAAEiM,cAAc,CAACjM,EAAEuM,aAAa,CAACvM,EAAEwM,cAAc,CAACxM,EAAEuD,kBAAkB,CAACvD,EAAE+L,gBAAgB,CAAC/L,EAAEqM,UAAU,CAACrM,EAAEyM,cAAc,CAACzM,EAAEsM,QAAQ,CAACtM,EAAEkL,gBAAgB,CAAClL,EAAEqD,mBAAmB,CAACrD,EAAE4K,WAAW,CAAC5K,EAAE8C,oBAAoB,CAAC9C,EAAEiD,oBAAoB,CAACjD,EAAEoH,SAAS,CAAlYzkB,AAAmYqd,EAAEqH,eAAe,CAACrH,EAAEoB,YAAY,CAACpB,EAAE4F,iBAAiB,CAAC5F,EAAEmF,YAAY,CAACnF,EAAEkE,gBAAgB,CAAClE,EAAEgF,8BAA8B,CAAC,KAAK,IAAQ0H,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,iCAAiC,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAO+D,EAAEonB,8BAA8B,CAAC,GAAOnlB,EAAE6sB,EAAoB,IAAI1zB,OAAOC,cAAc,CAAC+mB,EAAE,mBAAmB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOgG,EAAEqkB,gBAAgB,CAAC,GAAGlrB,OAAOC,cAAc,CAAC+mB,EAAE,eAAe,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOgG,EAAEslB,YAAY,CAAC,KAASuH,EAAoB,IAAI1zB,OAAOC,cAAc,CAAC+mB,EAAE,oBAAoB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOqmB,EAAE0F,iBAAiB,CAAC,KAAS8G,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,eAAe,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOsmB,EAAEiB,YAAY,CAAC,KAASsL,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,kBAAkB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAO+T,EAAEyZ,eAAe,CAAC,KAASqF,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,YAAY,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOoB,EAAEmsB,SAAS,CAAC,GAAO9F,EAAEoL,EAAoB,IAAI1zB,OAAOC,cAAc,CAAC+mB,EAAE,uBAAuB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOynB,EAAE2B,oBAAoB,CAAC,GAAGjqB,OAAOC,cAAc,CAAC+mB,EAAE,uBAAuB,CAAClmB,WAAW,GAAKD,IAAI,WAAW,OAAOynB,EAAEwB,oBAAoB,CAAC,KAAS4J,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,cAAc,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAO0nB,EAAEqJ,WAAW,CAAC,KAAS8B,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,sBAAsB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAO2nB,EAAE6B,mBAAmB,CAAC,GAAOqH,EAAEgC,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,mBAAmB,CAAClmB,WAAW,GAAKD,IAAI,WAAW,OAAO6wB,EAAEQ,gBAAgB,CAAC,GAAO/M,EAAEuO,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,WAAW,CAAClmB,WAAW,GAAKD,IAAI,WAAW,OAAOskB,EAAEmO,QAAQ,CAAC,KAASI,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,iBAAiB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAO+yB,EAAEH,cAAc,CAAC,KAASC,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,aAAa,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAO+F,EAAEysB,UAAU,CAAC,GAAOQ,EAAEH,EAAoB,IAAI1zB,OAAOC,cAAc,CAAC+mB,EAAE,mBAAmB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOgzB,EAAEd,gBAAgB,CAAC,GAAOe,EAAEJ,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,qBAAqB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOizB,EAAEvJ,kBAAkB,CAAC,GAAGvqB,OAAOC,cAAc,CAAC+mB,EAAE,iBAAiB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOizB,EAAEN,cAAc,CAAC,GAAGxzB,OAAOC,cAAc,CAAC+mB,EAAE,gBAAgB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOizB,EAAEP,aAAa,CAAC,KAASG,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,iBAAiB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAO6G,EAAEurB,cAAc,CAAC,GAAGjzB,OAAOC,cAAc,CAAC+mB,EAAE,kBAAkB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAO6G,EAAEsrB,eAAe,CAAC,GAAGhzB,OAAOC,cAAc,CAAC+mB,EAAE,uBAAuB,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAO6G,EAAE+oB,oBAAoB,CAAC,KAAWiD,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,UAAU,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOkzB,EAAE7H,OAAO,CAAC,KAAWwH,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,OAAO,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOmzB,EAAEzH,IAAI,CAAC,GAAS0H,EAAEP,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,UAAU,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOozB,EAAE9F,OAAO,CAAC,KAAWuF,EAAoB,IAAI1zB,OAAOC,cAAc,CAAC+mB,EAAE,cAAc,CAAClmB,YAAW,EAAKD,IAAI,WAAW,OAAOqzB,EAAE5D,WAAW,CAAC,KAAWoD,EAAoB,KAAK1zB,OAAOC,cAAc,CAAC+mB,EAAE,QAAQ,CAAClmB,WAAW,GAAKD,IAAI,WAAW,OAAOszB,EAAE5D,KAAK,CAAC,GAAGvJ,CAAC,CAAC,OAAU,CAAC,CAACkF,QAAQ6H,EAAE7H,OAAO,CAACK,KAAKyH,EAAEzH,IAAI,CAAC4B,QAAQ8F,EAAE9F,OAAO,CAACmC,YAAY4D,EAAE5D,WAAW,CAACC,MAAM4D,EAAE5D,KAAK,EAAMxuB,EAAOC,OAAO,CAAC2H,EAAC,CAAC,oBCA553B,CAAC,KAAK,aAA6C,IAA7B,OAAO+pB,sBAAkCA,oBAAoBC,EAAE,CAAC,+CAAU,EAAI,IAMzD/e,EAAyBhQ,MANoCoiB,EAAE,CAAC,CAMxGrd,GAAEyqB,KAAK,CAAyI,EAAxIA,OAAuJpN,AAANoN,AAN5D,CAMmE,CAACzqB,CAAC,EAAE,GAAG,AAAW,UAAS,OAAbqd,EAAc,MAAM,AAAIqN,UAAU,iCAAyF,IAAI,IAAxDzvB,EAAE,CAAC,EAAkBuiB,EAAEH,EAAEvjB,KAAK,CAACyjB,GAAOoB,EAAEzhB,CAA7B8C,GAAG,EAAC,EAA2B2qB,MAAM,EAAE1f,EAAUuQ,EAAE,EAAEA,EAAEgC,EAAEhkB,MAAM,CAACgiB,IAAI,CAAC,IAAI0O,EAAE1M,CAAC,CAAChC,EAAE,CAAKoD,EAAEsL,EAAElwB,OAAO,CAAC,KAAK,KAAG4kB,GAAE,GAAE,AAAU,IAAI7gB,EAAEmsB,EAAEU,MAAM,CAAC,EAAEhM,GAAGqK,IAAI,GAAO3wB,EAAE4xB,EAAEU,MAAM,CAAC,EAAEhM,EAAEsL,EAAE1wB,MAAM,EAAEyvB,IAAI,GAAM,KAAK3wB,CAAC,CAAC,EAAE,EAAC,CAACA,EAAEA,EAAE4B,KAAK,CAAC,EAAE,CAAC,EAAA,OAAMiM,GAAWlL,CAAC,CAAC8C,EAAE,EAAC,AAAC9C,EAAC,CAAC8C,EAAE,CAAC8sB,AAA2pC,SAASA,AAAUxN,CAAC,CAACrd,CAAC,EAAE,GAAG,CAAC,OAAOA,EAAEqd,EAAE,CAAC,MAAMrd,EAAE,CAAC,OAAOqd,CAAC,CAAC,EAA3sC/kB,EAAEqmB,EAAAA,EAAG,CAAC,OAAO1jB,CAAC,EAAtf+E,AANwGqd,EAMtGwL,SAAS,CAA4e,EAA3eA,OAAofA,AAAUxL,CAAC,CAACrd,CAAC,CAACiL,CAAC,EAAE,IAAIsS,EAAEtS,GAAG,CAAC,EAAMuS,EAAED,EAAEuN,MAAM,EAAE7vB,EAAE,GAAc,YAAX,AAAsB,OAAfuiB,EAAgB,MAAM,AAAIkN,UAAU,4BAA4B,GAAG,CAACxtB,EAAEjB,IAAI,CAACohB,GAAI,CAAD,KAAO,AAAIqN,UAAU,4BAA4B,IAAI/L,EAAEnB,EAAExd,GAAG,GAAG2e,GAAG,CAACzhB,EAAEjB,IAAI,CAAC0iB,GAAI,CAAD,KAAO,AAAI+L,UAAU,2BAA2B,IAAIlP,EAAE6B,EAAE,IAAIsB,EAAE,GAAG,MAAMpB,EAAE1kB,MAAM,CAAC,CAAC,IAAIqxB,EAAE3M,EAAE1kB,MAAM,CAAC,EAAE,GAAGkyB,MAAMb,IAAI,CAACc,SAASd,GAAI,CAAD,KAAO,AAAIQ,UAAU,4BAA4BlP,GAAG,aAAayP,KAAKC,KAAK,CAAChB,EAAE,CAAC,GAAG3M,EAAEzkB,MAAM,CAAC,CAAC,GAAG,CAACoE,EAAEjB,IAAI,CAACshB,EAAEzkB,MAAM,EAAG,CAAD,KAAO,AAAI4xB,UAAU,4BAA4BlP,GAAG,YAAY+B,EAAEzkB,MAAM,CAAC,GAAGykB,EAAE9kB,IAAI,CAAC,CAAC,GAAG,CAACyE,EAAEjB,IAAI,CAACshB,EAAE9kB,IAAI,EAAG,CAAD,KAAO,AAAIiyB,UAAU,0BAA0BlP,GAAG,UAAU+B,EAAE9kB,IAAI,CAAC,GAAG8kB,EAAE7kB,OAAO,CAAC,CAAC,GAAkC,YAAW,AAA1C,OAAO6kB,EAAE7kB,OAAO,CAACE,WAAW,CAAe,MAAM,AAAI8xB,UAAU,6BAA6BlP,GAAG,aAAa+B,EAAE7kB,OAAO,CAACE,WAAW,EAAE,CAA2D,GAAvD2kB,EAAEvkB,QAAQ,EAAC,CAACwiB,GAAG,YAAA,EAAgB+B,EAAExkB,MAAM,EAAC,CAACyiB,GAAG,UAAA,EAAc+B,EAAEtkB,QAAQ,CAAyE,CAAxE,MAA+E2lB,AAApD,UAApB,OAAOrB,EAAEtkB,QAAQ,CAAYskB,EAAEtkB,QAAQ,CAAC0B,WAAW,GAAG4iB,EAAEtkB,QAAQ,EAAW,KAAK,EAAsE,IAAI,SAArEuiB,GAAG,oBAAoB,KAAM,KAAI,MAAMA,GAAG,iBAAiB,KAAgD,KAAI,OAAOA,GAAG,kBAAkB,KAAM,SAAQ,MAAM,AAAIkP,UAAU,6BAA6B,CAAE,OAAOlP,CAAC,IAA5lDrhB,qBAAyBZ,mBAAuBgkB,EAAE,MAAUrgB,EAAE,wCAA+lD9E,EAAOC,OAAO,CAACglB,EAAC,CAAC,oBCoBntDjlB,EAAOC,OAAO,CAAGwgB,EAAQ,CAAA,CAAA,IAAA","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146]}
|